From 68d4699c97cba14e1afda3055fa9ed70e9466685 Mon Sep 17 00:00:00 2001 From: J0onYEong Date: Wed, 30 Oct 2024 16:35:49 +0900 Subject: [PATCH 01/11] =?UTF-8?q?[IDLE-000]=20AmplitudeLogger=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit API키 미삽입 --- project/Projects/Module/Logger/Project.swift | 36 +++++++++++++++ .../Module/Logger/Resources/empty.txt | 1 + .../Logger/Sources/AmplitudeLogger.swift | 45 +++++++++++++++++++ .../Module/Logger/Sources/Logger.swift | 20 +++++++++ 4 files changed, 102 insertions(+) create mode 100644 project/Projects/Module/Logger/Project.swift create mode 100644 project/Projects/Module/Logger/Resources/empty.txt create mode 100644 project/Projects/Module/Logger/Sources/AmplitudeLogger.swift create mode 100644 project/Projects/Module/Logger/Sources/Logger.swift diff --git a/project/Projects/Module/Logger/Project.swift b/project/Projects/Module/Logger/Project.swift new file mode 100644 index 00000000..b22d5a2c --- /dev/null +++ b/project/Projects/Module/Logger/Project.swift @@ -0,0 +1,36 @@ +// +// Project.swift +// ProjectDescriptionHelpers +// +// Created by choijunyeong on 2024/10/30. +// + +import ProjectDescription +import ConfigurationPlugin +import DependencyPlugin +import Foundation + +let project = Project( + name: "Logger", + settings: .settings( + configurations: IdleConfiguration.emptyConfigurations + ), + targets: [ + .target( + name: "Logger", + destinations: DeploymentSettings.platforms, + product: .framework, + bundleId: "$(PRODUCT_BUNDLE_IDENTIFIER)", + deploymentTargets: DeploymentSettings.deployment_iOS_version, + sources: ["Sources/**"], + resources: ["Resources/**",], + dependencies: [ + // External + D.ThirdParty.Amplitude, + ], + settings: .settings( + configurations: IdleConfiguration.presentationConfigurations + ) + ), + ] +) diff --git a/project/Projects/Module/Logger/Resources/empty.txt b/project/Projects/Module/Logger/Resources/empty.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/project/Projects/Module/Logger/Resources/empty.txt @@ -0,0 +1 @@ + diff --git a/project/Projects/Module/Logger/Sources/AmplitudeLogger.swift b/project/Projects/Module/Logger/Sources/AmplitudeLogger.swift new file mode 100644 index 00000000..eac55df8 --- /dev/null +++ b/project/Projects/Module/Logger/Sources/AmplitudeLogger.swift @@ -0,0 +1,45 @@ +// +// AmplitudeLogger.swift +// Logger +// +// Created by choijunios on 10/30/24. +// + +import Foundation +import Combine + + +import AmplitudeSwift + +public class AmplitudeLogger: Logger { + + private let objectPublisher: PassthroughSubject = .init() + + private var bag: Set = .init() + + private let amplitude: Amplitude + + public init() { + + self.amplitude = Amplitude( + configuration: Configuration( + apiKey: "AmplitudeConfig.apiKey" + ) + ) + + objectPublisher + .throttle(for: 0.3, scheduler: DispatchQueue.main, latest: true) + .sink { object in + + } + .store(in: &bag) + } + + public func setUserId(id: String) { + amplitude.setUserId(userId: id) + } + + public func send(_ object: any LoggingObject) { + objectPublisher.send(object) + } +} diff --git a/project/Projects/Module/Logger/Sources/Logger.swift b/project/Projects/Module/Logger/Sources/Logger.swift new file mode 100644 index 00000000..457608b3 --- /dev/null +++ b/project/Projects/Module/Logger/Sources/Logger.swift @@ -0,0 +1,20 @@ +// +// Logger.swift +// Logger +// +// Created by choijunios on 10/30/24. +// + +import Foundation + + +public protocol LoggingObject { + + +} + +public protocol Logger { + + func send(_ object: LoggingObject) +} + From 32a90af5a83cd64019a0109c9b0c70a6869e55d5 Mon Sep 17 00:00:00 2001 From: J0onYEong Date: Wed, 30 Oct 2024 17:01:28 +0900 Subject: [PATCH 02/11] =?UTF-8?q?[IDLE-000]=20Logger=20DI=EA=B5=AC?= =?UTF-8?q?=EC=A1=B0=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dependency.swift | 4 ++ .../Sources/DIAssembly/LoggerAssembly.swift | 33 ++----------- project/Projects/Module/Logger/Project.swift | 5 +- .../Logger/Sources/AmplitudeLogger.swift | 2 +- ...CenterAccountRegisterationLogBuilder.swift | 41 ++++++++++++++++ .../Module/Logger/Sources/Logger.swift | 2 +- ...asd.swift => PasswordValidationCase.swift} | 2 +- .../Presentation/Feature/Base/Project.swift | 5 +- .../Presentation/Feature/Root/Project.swift | 2 - .../Logger/Publisher/AmplitudeLogger.swift | 47 ------------------- 10 files changed, 59 insertions(+), 84 deletions(-) create mode 100644 project/Projects/Module/Logger/Sources/CenterAccountRegisteration/CenterAccountRegisterationLogBuilder.swift rename project/Projects/Presentation/Feature/Auth/Sources/Center/AccountRegister/Model/{asd.swift => PasswordValidationCase.swift} (96%) delete mode 100644 project/Projects/Presentation/Feature/Root/Sources/Logger/Publisher/AmplitudeLogger.swift diff --git a/project/Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency.swift b/project/Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency.swift index 560c3619..e21f5356 100644 --- a/project/Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency.swift +++ b/project/Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency.swift @@ -24,6 +24,10 @@ public enum ModuleDependency { public static let PresentationCore: TargetDependency = .project(target: "PresentationCore", path: .relativeToRoot("Projects/Presentation/PresentationCore")) } + public enum Module { + public static let Logger: TargetDependency = .project(target: "Logger", path: .relativeToRoot("Projects/Module/Logger")) + } + public static let Core: TargetDependency = .project(target: "Core", path: .relativeToRoot("Projects/Core")) public static let Testing: TargetDependency = .project(target: "Testing", path: .relativeToRoot("Projects/Testing")) diff --git a/project/Projects/App/Sources/DIAssembly/LoggerAssembly.swift b/project/Projects/App/Sources/DIAssembly/LoggerAssembly.swift index 8d5fa0c9..430c45cc 100644 --- a/project/Projects/App/Sources/DIAssembly/LoggerAssembly.swift +++ b/project/Projects/App/Sources/DIAssembly/LoggerAssembly.swift @@ -6,44 +6,21 @@ // import Foundation + import RootFeature import AuthFeature import PresentationCore import CenterMainPageFeature +import Logger + import Swinject public struct LoggerAssembly: Assembly { public func assemble(container: Container) { - // MARK: Message pusher - container.register(LoggerMessagePublisher.self) { _ in - #if DEBUG || QA - return DebugLogger() - #endif - return AmplitudeLogger() - } - .inObjectScope(.container) - - // MARK: Overall logger - container.register(OverallLogger.self) { _ in - DefaultOverallLogger() - } - .inObjectScope(.container) - - container.register(CenterRegisterLogger.self) { resolver in - let overallLogger = resolver.resolve(OverallLogger.self)! - return overallLogger - } - - container.register(WorkerRegisterLogger.self) { resolver in - let overallLogger = resolver.resolve(OverallLogger.self)! - return overallLogger - } - - container.register(PostRegisterLogger.self) { resolver in - let overallLogger = resolver.resolve(OverallLogger.self)! - return overallLogger + container.register(Logger.self) { _ in + AmplitudeLogger() } } } diff --git a/project/Projects/Module/Logger/Project.swift b/project/Projects/Module/Logger/Project.swift index b22d5a2c..6cc62df0 100644 --- a/project/Projects/Module/Logger/Project.swift +++ b/project/Projects/Module/Logger/Project.swift @@ -22,7 +22,10 @@ let project = Project( product: .framework, bundleId: "$(PRODUCT_BUNDLE_IDENTIFIER)", deploymentTargets: DeploymentSettings.deployment_iOS_version, - sources: ["Sources/**"], + sources: [ + "Sources/**", + SecretSource.amplitudeConfig, + ], resources: ["Resources/**",], dependencies: [ // External diff --git a/project/Projects/Module/Logger/Sources/AmplitudeLogger.swift b/project/Projects/Module/Logger/Sources/AmplitudeLogger.swift index eac55df8..4d440ed9 100644 --- a/project/Projects/Module/Logger/Sources/AmplitudeLogger.swift +++ b/project/Projects/Module/Logger/Sources/AmplitudeLogger.swift @@ -23,7 +23,7 @@ public class AmplitudeLogger: Logger { self.amplitude = Amplitude( configuration: Configuration( - apiKey: "AmplitudeConfig.apiKey" + apiKey: AmplitudeConfig.apiKey ) ) diff --git a/project/Projects/Module/Logger/Sources/CenterAccountRegisteration/CenterAccountRegisterationLogBuilder.swift b/project/Projects/Module/Logger/Sources/CenterAccountRegisteration/CenterAccountRegisterationLogBuilder.swift new file mode 100644 index 00000000..495ba0a0 --- /dev/null +++ b/project/Projects/Module/Logger/Sources/CenterAccountRegisteration/CenterAccountRegisterationLogBuilder.swift @@ -0,0 +1,41 @@ +// +// CenterAccountRegisterationLogBuilder.swift +// Logger +// +// Created by choijunios on 10/30/24. +// + +import Foundation + +public struct CenterAccountRegisterationLogObject: LoggingObject { + + public var properties: [String : Any] { + [ + "step": step, + "stepName": stepName + ] + } + + let step: Int + let stepName: String + + init(step: Int, stepName: String) { + self.step = step + self.stepName = stepName + } +} + +public class CenterAccountRegisterationLogBuilder { + + let step: Int + let stepName: String + + public init(step: Int, stepName: String) { + self.step = step + self.stepName = stepName + } + + public func build() -> CenterAccountRegisterationLogObject { + .init(step: step, stepName: stepName) + } +} diff --git a/project/Projects/Module/Logger/Sources/Logger.swift b/project/Projects/Module/Logger/Sources/Logger.swift index 457608b3..92aebc68 100644 --- a/project/Projects/Module/Logger/Sources/Logger.swift +++ b/project/Projects/Module/Logger/Sources/Logger.swift @@ -10,7 +10,7 @@ import Foundation public protocol LoggingObject { - + var properties: [String: Any] { get } } public protocol Logger { diff --git a/project/Projects/Presentation/Feature/Auth/Sources/Center/AccountRegister/Model/asd.swift b/project/Projects/Presentation/Feature/Auth/Sources/Center/AccountRegister/Model/PasswordValidationCase.swift similarity index 96% rename from project/Projects/Presentation/Feature/Auth/Sources/Center/AccountRegister/Model/asd.swift rename to project/Projects/Presentation/Feature/Auth/Sources/Center/AccountRegister/Model/PasswordValidationCase.swift index 47f934a3..d70cdf62 100644 --- a/project/Projects/Presentation/Feature/Auth/Sources/Center/AccountRegister/Model/asd.swift +++ b/project/Projects/Presentation/Feature/Auth/Sources/Center/AccountRegister/Model/PasswordValidationCase.swift @@ -1,5 +1,5 @@ // -// asd.swift +// PasswordValidationCase.swift // AuthFeature // // Created by choijunios on 10/22/24. diff --git a/project/Projects/Presentation/Feature/Base/Project.swift b/project/Projects/Presentation/Feature/Base/Project.swift index 7c45d0da..7171d48c 100644 --- a/project/Projects/Presentation/Feature/Base/Project.swift +++ b/project/Projects/Presentation/Feature/Base/Project.swift @@ -28,11 +28,10 @@ let project = Project( resources: ["Resources/**"], dependencies: [ - // Data + // Internal D.Data.Repository, - - // Presentation D.Presentation.DSKit, + D.Module.Logger, // ThirdParty D.ThirdParty.NaverMapSDKForSPM, diff --git a/project/Projects/Presentation/Feature/Root/Project.swift b/project/Projects/Presentation/Feature/Root/Project.swift index e06efebc..a2225750 100644 --- a/project/Projects/Presentation/Feature/Root/Project.swift +++ b/project/Projects/Presentation/Feature/Root/Project.swift @@ -26,7 +26,6 @@ let project = Project( deploymentTargets: DeploymentSettings.deployment_iOS_version, sources: [ "Sources/**", - SecretSource.amplitudeConfig, ], resources: ["Resources/**"], dependencies: [ @@ -43,7 +42,6 @@ let project = Project( D.Presentation.NotificationPageFeature, // ThirParty - D.ThirdParty.Amplitude, D.ThirdParty.FirebaseMessaging, D.ThirdParty.FirebaseRemoteConfig, D.ThirdParty.FirebaseCrashlytics diff --git a/project/Projects/Presentation/Feature/Root/Sources/Logger/Publisher/AmplitudeLogger.swift b/project/Projects/Presentation/Feature/Root/Sources/Logger/Publisher/AmplitudeLogger.swift deleted file mode 100644 index 65c05fa9..00000000 --- a/project/Projects/Presentation/Feature/Root/Sources/Logger/Publisher/AmplitudeLogger.swift +++ /dev/null @@ -1,47 +0,0 @@ -// -// AmplitudeLogger.swift -// ConcreteLogger -// -// Created by choijunios on 9/16/24. -// - -import Foundation -import PresentationCore -import Domain - -import AmplitudeSwift - -public class AmplitudeLogger: LoggerMessagePublisher { - - public var timerDict: [String : Date] = [:] - public var timerQueue: DispatchQueue = .global(qos: .utility) - - let amplitude: Amplitude - - public init() { - - self.amplitude = Amplitude( - configuration: Configuration( - apiKey: AmplitudeConfig.apiKey - ) - ) - - // 유저 아이디 설정 - setUserId(id: getAnonymousUserId()) - } - - public func send(event: LoggingEvent) { - var eventProperties: [String: Any] = [:] - - event.properties.forEach { (key, value) in - eventProperties[key.rawValue] = value - } - - amplitude - .track(eventType: event.type.rawValue, eventProperties: eventProperties) - } - - public func setUserId(id: String) { - amplitude.setUserId(userId: id) - } -} From 1cb500a6a28322c4107c4153a9924a242114354e Mon Sep 17 00:00:00 2001 From: J0onYEong Date: Wed, 30 Oct 2024 17:14:41 +0900 Subject: [PATCH 03/11] =?UTF-8?q?[IDLE-000]=20=EC=84=BC=ED=84=B0=20?= =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EB=A1=9C=EA=B9=85=20=EB=A6=AC=ED=8C=A9=ED=86=A0?= =?UTF-8?q?=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/DIAssembly/LoggerAssembly.swift | 6 +- .../Module/Logger/Sources/MockLogger.swift | 17 +++++ .../CenterAccountRegisterCoordinator.swift | 74 +++++++++++++------ .../Sources/Center/CenterRegisterLogger.swift | 22 +++--- .../Logger/OverallLogger/OverallLogger.swift | 1 - 5 files changed, 86 insertions(+), 34 deletions(-) create mode 100644 project/Projects/Module/Logger/Sources/MockLogger.swift diff --git a/project/Projects/App/Sources/DIAssembly/LoggerAssembly.swift b/project/Projects/App/Sources/DIAssembly/LoggerAssembly.swift index 430c45cc..87b73b73 100644 --- a/project/Projects/App/Sources/DIAssembly/LoggerAssembly.swift +++ b/project/Projects/App/Sources/DIAssembly/LoggerAssembly.swift @@ -20,7 +20,11 @@ public struct LoggerAssembly: Assembly { public func assemble(container: Container) { container.register(Logger.self) { _ in - AmplitudeLogger() + #if DEBUG + return MockLogger() + #endif + + return AmplitudeLogger() } } } diff --git a/project/Projects/Module/Logger/Sources/MockLogger.swift b/project/Projects/Module/Logger/Sources/MockLogger.swift new file mode 100644 index 00000000..59ac69e3 --- /dev/null +++ b/project/Projects/Module/Logger/Sources/MockLogger.swift @@ -0,0 +1,17 @@ +// +// MockLogger.swift +// Logger +// +// Created by choijunios on 10/30/24. +// + +import Foundation + +public class MockLogger: Logger { + + public init() { } + + public func send(_ object: any LoggingObject) { + print(object.properties) + } +} diff --git a/project/Projects/Presentation/Feature/Auth/Sources/Center/AccountRegister/CenterAccountRegisterCoordinator.swift b/project/Projects/Presentation/Feature/Auth/Sources/Center/AccountRegister/CenterAccountRegisterCoordinator.swift index 899a5dbf..42e55a1b 100644 --- a/project/Projects/Presentation/Feature/Auth/Sources/Center/AccountRegister/CenterAccountRegisterCoordinator.swift +++ b/project/Projects/Presentation/Feature/Auth/Sources/Center/AccountRegister/CenterAccountRegisterCoordinator.swift @@ -6,7 +6,9 @@ // import UIKit + import BaseFeature +import Logger import PresentationCore import Core @@ -19,20 +21,37 @@ enum CenterAccountRegisterStage: Int { case idPassword case finish - var screenName: String { + var screenKorName: String { + switch self { + case .registerFinished: + "회원가입 페이지 이탈" + case .name: + "이름 입력" + case .phoneNumber: + "전화번호 입력" + case .businessOwner: + "사업자 인증번호 입력" + case .idPassword: + "아이디 패스워드 입력" + case .finish: + "가입완료" + } + } + + var step: Int { switch self { case .registerFinished: - "" + 0 case .name: - "name" + 1 case .phoneNumber: - "phoneNumber" + 2 case .businessOwner: - "businessOwner" + 3 case .idPassword: - "idPassword" + 4 case .finish: - "" + 5 } } } @@ -45,7 +64,7 @@ public class CenterAccountRegisterCoordinator: Coordinator { // Injected @Injected var router: RouterProtocol - @Injected var logger: CenterRegisterLogger + @Injected var logger: Logger public var onFinish: (() -> ())? @@ -74,9 +93,20 @@ public class CenterAccountRegisterCoordinator: Coordinator { vm.presentCompleteScreen = { [weak self] in + guard let self else { return } + // MARK: 센터 계정 회원가입 완료 로깅 - self?.logger.logCenterRegisterDuration() + let stage: CenterAccountRegisterStage = .finish + let logObject = CenterAccountRegisterationLogBuilder( + step: currentStage.step, + stepName: currentStage.screenKorName + ) + .build() + + logger.send(logObject) + + // MARK: 완료화면으로 이동 let object: AnonymousCompleteVCRenderObject = .init( titleText: "센터관리자 로그인을\n완료했어요!", descriptionText: "로그인 정보는 마지막 접속일부터\n180일간 유지될 예정이에요.", @@ -87,7 +117,7 @@ public class CenterAccountRegisterCoordinator: Coordinator { } // 완료화면으로 이동 - self?.router.presentAnonymousCompletePage(object) + router.presentAnonymousCompletePage(object) } vm.presentAlert = { [weak self] object in @@ -125,9 +155,6 @@ public class CenterAccountRegisterCoordinator: Coordinator { } excuteStage(.name, moveTo: .next) - - // MARK: 센터 계정등록 시작 로깅 - logger.startCenterRegister() } } @@ -166,14 +193,9 @@ extension CenterAccountRegisterCoordinator { return default: - // MARK: 등록 스테이지 이동 로깅 - if moveTo == .next { - logger.logCenterRegisterStep( - stepName: stage.screenName, - stepIndex: stage.rawValue-1 - ) - } - + // 로깅 + logCurrentStage() + let vc = stageViewControllers[stage.rawValue-1] showPageViewControllerStage(viewController: vc, moveTo: moveTo) } @@ -186,6 +208,16 @@ extension CenterAccountRegisterCoordinator { animated: true ) } + + func logCurrentStage() { + let logObject = CenterAccountRegisterationLogBuilder( + step: currentStage.step, + stepName: currentStage.screenKorName + ) + .build() + + logger.send(logObject) + } } extension Notification.Name { diff --git a/project/Projects/Presentation/Feature/Auth/Sources/Center/CenterRegisterLogger.swift b/project/Projects/Presentation/Feature/Auth/Sources/Center/CenterRegisterLogger.swift index f873792a..f2a44606 100644 --- a/project/Projects/Presentation/Feature/Auth/Sources/Center/CenterRegisterLogger.swift +++ b/project/Projects/Presentation/Feature/Auth/Sources/Center/CenterRegisterLogger.swift @@ -7,15 +7,15 @@ import Foundation -public protocol CenterRegisterLogger { - - /// 센터 회원가입의 각단계 집입시 로깅합니다. - func logCenterRegisterStep(stepName: String, stepIndex: Int) - - /// 센터 회원가입의 시작시간을 기록합니다. - func startCenterRegister() - - /// 센터 회원가입의 완료시간을 기록하고 걸린시간을 산출합니다. - func logCenterRegisterDuration() -} +//public protocol CenterRegisterLogger { +// +// /// 센터 회원가입의 각단계 집입시 로깅합니다. +// func logCenterRegisterStep(stepName: String, stepIndex: Int) +// +// /// 센터 회원가입의 시작시간을 기록합니다. +// func startCenterRegister() +// +// /// 센터 회원가입의 완료시간을 기록하고 걸린시간을 산출합니다. +// func logCenterRegisterDuration() +//} diff --git a/project/Projects/Presentation/Feature/Root/Sources/Logger/OverallLogger/OverallLogger.swift b/project/Projects/Presentation/Feature/Root/Sources/Logger/OverallLogger/OverallLogger.swift index d6197492..baec21bf 100644 --- a/project/Projects/Presentation/Feature/Root/Sources/Logger/OverallLogger/OverallLogger.swift +++ b/project/Projects/Presentation/Feature/Root/Sources/Logger/OverallLogger/OverallLogger.swift @@ -14,7 +14,6 @@ import Domain import Core public protocol OverallLogger: - CenterRegisterLogger, WorkerRegisterLogger, PostRegisterLogger { From 2072024a734e80dc242fd92f96fe281bd4d4a869 Mon Sep 17 00:00:00 2001 From: J0onYEong Date: Wed, 30 Oct 2024 17:27:15 +0900 Subject: [PATCH 04/11] =?UTF-8?q?[IDLE-000]=20=EC=9A=94=EC=96=91=EB=B3=B4?= =?UTF-8?q?=ED=98=B8=EC=82=AC=20=ED=9A=8C=EC=9B=90=EA=B0=80=EC=9E=85=20?= =?UTF-8?q?=EB=A1=9C=EA=B9=85=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...CenterAccountRegisterationLogBuilder.swift | 8 +-- .../CenterAccountRegisterCoordinator.swift | 68 +++---------------- .../Model/CenterAccountRegisterStage.swift | 37 ++++++++++ .../Model/WorkerAccountRegisterStage.swift | 34 ++++++++++ .../WorkerAccountRegisterCoordinator.swift | 61 +++++++---------- .../Sources/Worker/WorkerRegisterLogger.swift | 21 ------ .../Logger/OverallLogger/OverallLogger.swift | 6 +- 7 files changed, 111 insertions(+), 124 deletions(-) rename project/Projects/Module/Logger/Sources/{CenterAccountRegisteration => AccountRegisteration}/CenterAccountRegisterationLogBuilder.swift (72%) create mode 100644 project/Projects/Presentation/Feature/Auth/Sources/Center/AccountRegister/Model/CenterAccountRegisterStage.swift create mode 100644 project/Projects/Presentation/Feature/Auth/Sources/Worker/Model/WorkerAccountRegisterStage.swift delete mode 100644 project/Projects/Presentation/Feature/Auth/Sources/Worker/WorkerRegisterLogger.swift diff --git a/project/Projects/Module/Logger/Sources/CenterAccountRegisteration/CenterAccountRegisterationLogBuilder.swift b/project/Projects/Module/Logger/Sources/AccountRegisteration/CenterAccountRegisterationLogBuilder.swift similarity index 72% rename from project/Projects/Module/Logger/Sources/CenterAccountRegisteration/CenterAccountRegisterationLogBuilder.swift rename to project/Projects/Module/Logger/Sources/AccountRegisteration/CenterAccountRegisterationLogBuilder.swift index 495ba0a0..fce614e8 100644 --- a/project/Projects/Module/Logger/Sources/CenterAccountRegisteration/CenterAccountRegisterationLogBuilder.swift +++ b/project/Projects/Module/Logger/Sources/AccountRegisteration/CenterAccountRegisterationLogBuilder.swift @@ -1,5 +1,5 @@ // -// CenterAccountRegisterationLogBuilder.swift +// AccountRegisterationLogBuilder.swift // Logger // // Created by choijunios on 10/30/24. @@ -7,7 +7,7 @@ import Foundation -public struct CenterAccountRegisterationLogObject: LoggingObject { +public struct AccountRegisterationLogObject: LoggingObject { public var properties: [String : Any] { [ @@ -25,7 +25,7 @@ public struct CenterAccountRegisterationLogObject: LoggingObject { } } -public class CenterAccountRegisterationLogBuilder { +public class AccountRegisterationLogBuilder { let step: Int let stepName: String @@ -35,7 +35,7 @@ public class CenterAccountRegisterationLogBuilder { self.stepName = stepName } - public func build() -> CenterAccountRegisterationLogObject { + public func build() -> AccountRegisterationLogObject { .init(step: step, stepName: stepName) } } diff --git a/project/Projects/Presentation/Feature/Auth/Sources/Center/AccountRegister/CenterAccountRegisterCoordinator.swift b/project/Projects/Presentation/Feature/Auth/Sources/Center/AccountRegister/CenterAccountRegisterCoordinator.swift index 42e55a1b..9b9164f3 100644 --- a/project/Projects/Presentation/Feature/Auth/Sources/Center/AccountRegister/CenterAccountRegisterCoordinator.swift +++ b/project/Projects/Presentation/Feature/Auth/Sources/Center/AccountRegister/CenterAccountRegisterCoordinator.swift @@ -12,50 +12,6 @@ import Logger import PresentationCore import Core -enum CenterAccountRegisterStage: Int { - - case registerFinished - case name - case phoneNumber - case businessOwner - case idPassword - case finish - - var screenKorName: String { - switch self { - case .registerFinished: - "회원가입 페이지 이탈" - case .name: - "이름 입력" - case .phoneNumber: - "전화번호 입력" - case .businessOwner: - "사업자 인증번호 입력" - case .idPassword: - "아이디 패스워드 입력" - case .finish: - "가입완료" - } - } - - var step: Int { - switch self { - case .registerFinished: - 0 - case .name: - 1 - case .phoneNumber: - 2 - case .businessOwner: - 3 - case .idPassword: - 4 - case .finish: - 5 - } - } -} - public enum CenterAccountRegisterCoordinatorDestination { case centerMainPage } @@ -96,15 +52,7 @@ public class CenterAccountRegisterCoordinator: Coordinator { guard let self else { return } // MARK: 센터 계정 회원가입 완료 로깅 - let stage: CenterAccountRegisterStage = .finish - let logObject = CenterAccountRegisterationLogBuilder( - step: currentStage.step, - stepName: currentStage.screenKorName - ) - .build() - - logger.send(logObject) - + logCurrentStage(stage: .finish) // MARK: 완료화면으로 이동 let object: AnonymousCompleteVCRenderObject = .init( @@ -154,6 +102,10 @@ public class CenterAccountRegisterCoordinator: Coordinator { self?.onFinish?() } + // MARK: 센터 계정 회원가입 시작 로깅 + logCurrentStage(stage: .start) + + // 첫시작 페이지로 이동 excuteStage(.name, moveTo: .next) } } @@ -187,7 +139,7 @@ extension CenterAccountRegisterCoordinator { private func excuteStage(_ stage: CenterAccountRegisterStage, moveTo: MovingDirection) { currentStage = stage switch stage { - case .registerFinished: + case .start: router.popModule(animated: true) case .finish: return @@ -209,10 +161,10 @@ extension CenterAccountRegisterCoordinator { ) } - func logCurrentStage() { - let logObject = CenterAccountRegisterationLogBuilder( - step: currentStage.step, - stepName: currentStage.screenKorName + func logCurrentStage(stage: CenterAccountRegisterStage? = nil) { + let logObject = AccountRegisterationLogBuilder( + step: (stage ?? currentStage).step, + stepName: (stage ?? currentStage).screenKorName ) .build() diff --git a/project/Projects/Presentation/Feature/Auth/Sources/Center/AccountRegister/Model/CenterAccountRegisterStage.swift b/project/Projects/Presentation/Feature/Auth/Sources/Center/AccountRegister/Model/CenterAccountRegisterStage.swift new file mode 100644 index 00000000..d3be203e --- /dev/null +++ b/project/Projects/Presentation/Feature/Auth/Sources/Center/AccountRegister/Model/CenterAccountRegisterStage.swift @@ -0,0 +1,37 @@ +// +// CenterAccountRegisterStage.swift +// AuthFeature +// +// Created by choijunios on 10/30/24. +// + +import Foundation + +enum CenterAccountRegisterStage: Int { + + case start + case name + case phoneNumber + case businessOwner + case idPassword + case finish + + var screenKorName: String { + switch self { + case .start: + "센터관리자 회원가입 시작" + case .name: + "이름 입력" + case .phoneNumber: + "전화번호 입력" + case .businessOwner: + "사업자 인증번호 입력" + case .idPassword: + "아이디 패스워드 입력" + case .finish: + "가입완료" + } + } + + var step: Int { self.rawValue } +} diff --git a/project/Projects/Presentation/Feature/Auth/Sources/Worker/Model/WorkerAccountRegisterStage.swift b/project/Projects/Presentation/Feature/Auth/Sources/Worker/Model/WorkerAccountRegisterStage.swift new file mode 100644 index 00000000..1e00156c --- /dev/null +++ b/project/Projects/Presentation/Feature/Auth/Sources/Worker/Model/WorkerAccountRegisterStage.swift @@ -0,0 +1,34 @@ +// +// WorkerAccountRegisterStage.swift +// AuthFeature +// +// Created by choijunios on 10/30/24. +// + +import Foundation + +enum WorkerAccountRegisterStage: Int { + + case start + case phoneNumber + case info + case address + case finish + + var screenKorName: String { + switch self { + case .start: + "요양보호사 회원가입 시작" + case .phoneNumber: + "전화번호 입력" + case .info: + "개인정보 입력" + case .address: + "거주지 입력" + case .finish: + "가입완료" + } + } + + var step: Int { self.rawValue } +} diff --git a/project/Projects/Presentation/Feature/Auth/Sources/Worker/WorkerAccountRegisterCoordinator.swift b/project/Projects/Presentation/Feature/Auth/Sources/Worker/WorkerAccountRegisterCoordinator.swift index 244aa368..613ee3a2 100644 --- a/project/Projects/Presentation/Feature/Auth/Sources/Worker/WorkerAccountRegisterCoordinator.swift +++ b/project/Projects/Presentation/Feature/Auth/Sources/Worker/WorkerAccountRegisterCoordinator.swift @@ -6,34 +6,12 @@ // import UIKit + import BaseFeature +import Logger import PresentationCore import Core -enum WorkerAccountRegisterStage: Int { - - case registerFinished - case phoneNumber - case info - case address - case finish - - var screenName: String { - switch self { - case .registerFinished: - "" - case .phoneNumber: - "phoneNumber" - case .info: - "personalInfo" - case .address: - "address" - case .finish: - "" - } - } -} - public enum WorkerAccountRegisterCoordinatorDestination { case workerMainPage } @@ -44,7 +22,7 @@ public class WorkerAccountRegisterCoordinator: Coordinator { // Injected @Injected var router: RouterProtocol - @Injected var logger: WorkerRegisterLogger + @Injected var logger: Logger // startFlow public var startFlow: ((WorkerAccountRegisterCoordinatorDestination) -> ())! @@ -61,6 +39,12 @@ public class WorkerAccountRegisterCoordinator: Coordinator { let viewModel = WorkerRegisterViewModel() viewModel.presentCompletePage = { [weak self] in + + guard let self else { return } + + // 회원가입 완료 + logCurrentStage(stage: .finish) + let object: AnonymousCompleteVCRenderObject = .init( titleText: "요양보호사 로그인을\n완료했어요!", descriptionText: "로그인 정보는 마지막 접속일부터\n180일간 유지될 예정이에요.", @@ -71,7 +55,7 @@ public class WorkerAccountRegisterCoordinator: Coordinator { } // 완료화면 표시 - self?.router.presentAnonymousCompletePage(object) + router.presentAnonymousCompletePage(object) } viewModel.presentNextPage = { [weak self] in @@ -110,10 +94,10 @@ public class WorkerAccountRegisterCoordinator: Coordinator { self?.onFinish?() } - excuteStage(.phoneNumber, moveTo: .next) + // 회원가입 시작 + logCurrentStage(stage: .start) - // MARK: 요양보호사 회원가입 시작 ㄹ깅 - logger.startWorkerRegister() + excuteStage(.phoneNumber, moveTo: .next) } } @@ -146,19 +130,14 @@ extension WorkerAccountRegisterCoordinator { private func excuteStage(_ stage: WorkerAccountRegisterStage, moveTo: MovingDirection) { currentStage = stage switch stage { - case .registerFinished: + case .start: router.popModule(animated: true) case .finish: return default: // MARK: 화면 전환 로깅 - if moveTo == .next { - logger.logWorkerRegisterStep( - stepName: stage.screenName, - stepIndex: stage.rawValue-1 - ) - } + logCurrentStage() let vc = stageViewControllers[stage.rawValue-1] showStage(viewController: vc, moveTo: moveTo) @@ -173,6 +152,16 @@ extension WorkerAccountRegisterCoordinator { animated: true ) } + + func logCurrentStage(stage: WorkerAccountRegisterStage? = nil) { + let logObject = AccountRegisterationLogBuilder( + step: (stage ?? currentStage).step, + stepName: (stage ?? currentStage).screenKorName + ) + .build() + + logger.send(logObject) + } } // MARK: Notification for status UI diff --git a/project/Projects/Presentation/Feature/Auth/Sources/Worker/WorkerRegisterLogger.swift b/project/Projects/Presentation/Feature/Auth/Sources/Worker/WorkerRegisterLogger.swift deleted file mode 100644 index 1b7d8d8b..00000000 --- a/project/Projects/Presentation/Feature/Auth/Sources/Worker/WorkerRegisterLogger.swift +++ /dev/null @@ -1,21 +0,0 @@ -// -// WorkerRegisterLogger.swift -// AuthFeature -// -// Created by choijunios on 9/18/24. -// - -import Foundation - -public protocol WorkerRegisterLogger { - - /// 요양보호사 회원가입 각 화면 진입시 로깅 - func logWorkerRegisterStep(stepName: String, stepIndex: Int) - - /// 요양보호사 회원가입의 시작시간을 기록합니다. - func startWorkerRegister() - - /// 요양보호사 회원가입의 완료시간을 기록하고 걸린시간을 산출합니다. - func logWorkerRegisterDuration() -} - diff --git a/project/Projects/Presentation/Feature/Root/Sources/Logger/OverallLogger/OverallLogger.swift b/project/Projects/Presentation/Feature/Root/Sources/Logger/OverallLogger/OverallLogger.swift index baec21bf..80d403c4 100644 --- a/project/Projects/Presentation/Feature/Root/Sources/Logger/OverallLogger/OverallLogger.swift +++ b/project/Projects/Presentation/Feature/Root/Sources/Logger/OverallLogger/OverallLogger.swift @@ -13,11 +13,7 @@ import CenterMainPageFeature import Domain import Core -public protocol OverallLogger: - WorkerRegisterLogger, - PostRegisterLogger { - -} +public protocol OverallLogger: PostRegisterLogger { } public class DefaultOverallLogger { From 3a043760ba68d5e8536c767a8149d23a92667efb Mon Sep 17 00:00:00 2001 From: J0onYEong Date: Wed, 30 Oct 2024 18:04:13 +0900 Subject: [PATCH 05/11] =?UTF-8?q?[IDLE-000]=20=EC=84=BC=ED=84=B0=EA=B5=AC?= =?UTF-8?q?=EC=9D=B8=EA=B3=B5=EA=B3=A0=20=EB=93=B1=EB=A1=9D=20=EB=A1=9C?= =?UTF-8?q?=EA=B9=85=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/DIAssembly/LoggerAssembly.swift | 1 + .../CreatePost/CreatePostLogBuilder.swift | 41 +++++++ .../Sources/Logger/PostRegisterLogger.swift | 20 ---- .../Model/RegisterRecruitmentPage.swift | 72 +++++++++++++ .../View/CreatePostViewController.swift | 97 ++++++++--------- .../CreatePostCoordinator.swift | 18 +++- .../Logger/OverallLogger/OverallLogger.swift | 101 ------------------ .../Logger/Publisher/DebugLogger.swift | 43 -------- .../source/LoggerMessagePublisher.swift | 100 ----------------- 9 files changed, 174 insertions(+), 319 deletions(-) create mode 100644 project/Projects/Module/Logger/Sources/CreatePost/CreatePostLogBuilder.swift delete mode 100644 project/Projects/Presentation/Feature/CenterMainPage/Sources/Logger/PostRegisterLogger.swift create mode 100644 project/Projects/Presentation/Feature/CenterMainPage/Sources/PostRegisterPage/CreatePost/Model/RegisterRecruitmentPage.swift delete mode 100644 project/Projects/Presentation/Feature/Root/Sources/Logger/OverallLogger/OverallLogger.swift delete mode 100644 project/Projects/Presentation/Feature/Root/Sources/Logger/Publisher/DebugLogger.swift delete mode 100644 project/Projects/Presentation/PresentationCore/Sources/LoggerInterface/source/LoggerMessagePublisher.swift diff --git a/project/Projects/App/Sources/DIAssembly/LoggerAssembly.swift b/project/Projects/App/Sources/DIAssembly/LoggerAssembly.swift index 87b73b73..3c383d04 100644 --- a/project/Projects/App/Sources/DIAssembly/LoggerAssembly.swift +++ b/project/Projects/App/Sources/DIAssembly/LoggerAssembly.swift @@ -26,5 +26,6 @@ public struct LoggerAssembly: Assembly { return AmplitudeLogger() } + .inObjectScope(.container) } } diff --git a/project/Projects/Module/Logger/Sources/CreatePost/CreatePostLogBuilder.swift b/project/Projects/Module/Logger/Sources/CreatePost/CreatePostLogBuilder.swift new file mode 100644 index 00000000..43fcf6aa --- /dev/null +++ b/project/Projects/Module/Logger/Sources/CreatePost/CreatePostLogBuilder.swift @@ -0,0 +1,41 @@ +// +// CreatePostLogBuilder.swift +// Logger +// +// Created by choijunios on 10/30/24. +// + +import Foundation + +public struct CreatePostLogObject: LoggingObject { + + public var properties: [String : Any] { + [ + "step": step, + "stepName": stepName + ] + } + + let step: Int + let stepName: String + + init(step: Int, stepName: String) { + self.step = step + self.stepName = stepName + } +} + +public class CreatePostLogBuilder { + + let step: Int + let stepName: String + + public init(step: Int, stepName: String) { + self.step = step + self.stepName = stepName + } + + public func build() -> AccountRegisterationLogObject { + .init(step: step, stepName: stepName) + } +} diff --git a/project/Projects/Presentation/Feature/CenterMainPage/Sources/Logger/PostRegisterLogger.swift b/project/Projects/Presentation/Feature/CenterMainPage/Sources/Logger/PostRegisterLogger.swift deleted file mode 100644 index c3735072..00000000 --- a/project/Projects/Presentation/Feature/CenterMainPage/Sources/Logger/PostRegisterLogger.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// PostRegisterLogger.swift -// CenterFeature -// -// Created by choijunios on 9/18/24. -// - -import Foundation - -public protocol PostRegisterLogger { - - /// 공고 등록의 각화면 진입시 로깅합니다. - func logPostRegisterStep(stepName: String, stepIndex: Int) - - /// 센터 회원가입의 시작시간을 기록합니다. - func startPostRegister() - - /// 센터 회원가입의 완료시간을 기록하고 걸린시간을 산출합니다. - func logPostRegisterDuration() -} diff --git a/project/Projects/Presentation/Feature/CenterMainPage/Sources/PostRegisterPage/CreatePost/Model/RegisterRecruitmentPage.swift b/project/Projects/Presentation/Feature/CenterMainPage/Sources/PostRegisterPage/CreatePost/Model/RegisterRecruitmentPage.swift new file mode 100644 index 00000000..5496b62c --- /dev/null +++ b/project/Projects/Presentation/Feature/CenterMainPage/Sources/PostRegisterPage/CreatePost/Model/RegisterRecruitmentPage.swift @@ -0,0 +1,72 @@ +// +// RegisterRecruitmentPage.swift +// CenterMainPageFeature +// +// Created by choijunios on 10/30/24. +// + +import Foundation + +enum RegisterRecruitmentPage: Int, CaseIterable { + case start = 0 + case workTimeAndPayment = 1 + case workPlaceAddress = 2 + case customerInformation = 3 + case customerRequirement = 4 + case additionalInfo = 5 + case overview = 6 + case editPage = 7 + case finish = 8 + + var screenKorName: String { + switch self { + case .start: + "센터 구인공고 등록 시작" + case .workTimeAndPayment: + "근무 시간 및 급여" + case .workPlaceAddress: + "근무지 주소입력" + case .customerInformation: + "수급자 정보 입력" + case .customerRequirement: + "수급자 요구사항 입력" + case .additionalInfo: + "추가 지원정보 입력" + case .overview: + "오버뷰 화면" + case .editPage: + "전체 수정화면" + case .finish: + "구인공고 등록완료" + } + } + + var step: Int { self.rawValue } + + static var stages: [RegisterRecruitmentPage] { + [ + .workTimeAndPayment, + .workPlaceAddress, + .customerInformation, + .customerRequirement, + .additionalInfo, + ] + } + + var stageIndex: Int { + switch self { + case .workTimeAndPayment: + 0 + case .workPlaceAddress: + 1 + case .customerInformation: + 2 + case .customerRequirement: + 3 + case .additionalInfo: + 4 + default: + -1 + } + } +} diff --git a/project/Projects/Presentation/Feature/CenterMainPage/Sources/PostRegisterPage/CreatePost/View/CreatePostViewController.swift b/project/Projects/Presentation/Feature/CenterMainPage/Sources/PostRegisterPage/CreatePost/View/CreatePostViewController.swift index a3cf7600..972f9ce2 100644 --- a/project/Projects/Presentation/Feature/CenterMainPage/Sources/PostRegisterPage/CreatePost/View/CreatePostViewController.swift +++ b/project/Projects/Presentation/Feature/CenterMainPage/Sources/PostRegisterPage/CreatePost/View/CreatePostViewController.swift @@ -7,6 +7,7 @@ import UIKit import BaseFeature +import Logger import PresentationCore import Domain import DSKit @@ -16,29 +17,6 @@ import Core import RxCocoa import RxSwift -enum RegisterRecruitmentPage: Int, CaseIterable { - case workTimeAndPayment = 0 - case workPlaceAddress = 1 - case customerInformation = 2 - case customerRequirement = 3 - case additionalInfo = 4 - - var screenName: String { - switch self { - case .workTimeAndPayment: - "workTimeAndPayment" - case .workPlaceAddress: - "workPlaceAddress" - case .customerInformation: - "customerInformation" - case .customerRequirement: - "customerRequirement" - case .additionalInfo: - "applyInformation" - } - } -} - public protocol RegisterRecruitmentPostVMBindable { func bind(viewModel: RegisterRecruitmentPostViewModelable) } @@ -57,7 +35,7 @@ public protocol RegisterRecruitmentPostViewModelable: public class CreatePostViewController: BaseViewController { - @Injected var logger: PostRegisterLogger + @Injected var logger: Logger /// 현재 스크린의 넓이를 의미합니다. private var screenWidth: CGFloat { @@ -70,7 +48,7 @@ public class CreatePostViewController: BaseViewController { private var pageViews: [RegisterRecruitmentPostViews] = [] private var pagesAreSetted = false - var currentIndex: Int = 0 + var currentStage: RegisterRecruitmentPage = .workTimeAndPayment let exitEvent: PublishSubject = .init() @@ -150,7 +128,7 @@ public class CreatePostViewController: BaseViewController { } private func createPages() { - self.pageViews = RegisterRecruitmentPage.allCases.map { page in + self.pageViews = RegisterRecruitmentPage.stages.map { page in switch page { case .workTimeAndPayment: WorkTimeAndPayView() @@ -162,6 +140,8 @@ public class CreatePostViewController: BaseViewController { CustomerRequirementView() case .additionalInfo: ApplicationDetailView(viewController: self) + default: + fatalError("센터공고등록 지정되지 않은 화면") } } } @@ -185,12 +165,6 @@ public class CreatePostViewController: BaseViewController { // 첫번째 뷰를 최상단으로 view.bringSubviewToFront(pageViews.first!) - // MARK: 로깅 - logger.logPostRegisterStep( - stepName: RegisterRecruitmentPage(rawValue: currentIndex)!.screenName, - stepIndex: currentIndex - ) - // 옵저버블 설정 let nextButtonClickedObservables = pageViews .map { $0.nextButtonClicked } @@ -220,52 +194,59 @@ public class CreatePostViewController: BaseViewController { } // 첫번째 뷰를 표시 pageViews.first?.transform = .identity + + // 로깅 + logCurrentStage() } private func next(animated: Bool = true) { - if let nextStage = RegisterRecruitmentPage(rawValue: currentIndex+1) { - - let nextIndex = nextStage.rawValue + if let nextStage = RegisterRecruitmentPage(rawValue: currentStage.rawValue+1) { - // MARK: 로깅 - logger.logPostRegisterStep( - stepName: nextStage.screenName, - stepIndex: nextIndex - ) + if nextStage == .overview { + + guard let vm = viewModel as? RegisterRecruitmentPostViewModelable else { return } + + // 오버뷰화면으로 이동 + vm.showOverView() + + return + } // Status바 이동 statusBar.moveToSignal.onNext(.next) - let prevView: UIView? = currentIndex != -1 ? pageViews[currentIndex] : nil - let willShowView = pageViews[nextIndex] + let currentStageIndex: Int = currentStage.stageIndex + let prevView: UIView? = currentStageIndex != -1 ? pageViews[currentStageIndex] : nil + let willShowView = pageViews[nextStage.stageIndex] - currentIndex = nextIndex + currentStage = nextStage + + // MARK: Logging stage + logCurrentStage() UIView.animate(withDuration: animated ? 0.35 : 0.0) { [screenWidth, prevView, willShowView] in prevView?.transform = .init(translationX: -screenWidth, y: 0) willShowView.transform = .identity } - } else { - - guard let vm = viewModel as? RegisterRecruitmentPostViewModelable else { return } - - // 오버뷰화면으로 이동 - vm.showOverView() } } private func prev(animated: Bool = true) { - if let nextIndex = RegisterRecruitmentPage(rawValue: currentIndex-1)?.rawValue { + + if let nextStage = RegisterRecruitmentPage(rawValue: currentStage.rawValue-1) { // Status바 이동 statusBar.moveToSignal.onNext(.prev) - let prevView = pageViews[currentIndex] - let willShowView = pageViews[nextIndex] + let prevView = pageViews[currentStage.stageIndex] + let willShowView = pageViews[nextStage.stageIndex] - currentIndex = nextIndex + currentStage = nextStage + + // MARK: Logging stage + logCurrentStage() UIView.animate(withDuration: animated ? 0.35 : 0.0) { [screenWidth, prevView, willShowView] in @@ -295,6 +276,16 @@ public class CreatePostViewController: BaseViewController { view.bind(viewModel: viewModel) } } + + func logCurrentStage(stage: RegisterRecruitmentPage? = nil) { + let logObject = CreatePostLogBuilder( + step: (stage ?? currentStage).step, + stepName: (stage ?? currentStage).screenKorName + ) + .build() + + logger.send(logObject) + } } protocol RegisterRecruitmentPostViews: UIView, RegisterRecruitmentPostVMBindable { diff --git a/project/Projects/Presentation/Feature/CenterMainPage/Sources/PostRegisterPage/CreatePostCoordinator.swift b/project/Projects/Presentation/Feature/CenterMainPage/Sources/PostRegisterPage/CreatePostCoordinator.swift index b5e12733..f50c89f5 100644 --- a/project/Projects/Presentation/Feature/CenterMainPage/Sources/PostRegisterPage/CreatePostCoordinator.swift +++ b/project/Projects/Presentation/Feature/CenterMainPage/Sources/PostRegisterPage/CreatePostCoordinator.swift @@ -9,6 +9,7 @@ import UIKit import PresentationCore import Domain import BaseFeature +import Logger import Core public class CreatePostCoordinator: Coordinator { @@ -19,7 +20,7 @@ public class CreatePostCoordinator: Coordinator { // Injected @Injected var router: RouterProtocol - @Injected var logger: PostRegisterLogger + @Injected var logger: Logger weak var presentingModule: Module? @@ -38,12 +39,15 @@ public class CreatePostCoordinator: Coordinator { self?.router.popModule(animated: true) } viewModel.presentPostOverviewPage = { [weak self] viewModel in + self?.logStage(stage: .overview) self?.presentOverviewPage(viewModel: viewModel) } viewModel.presentEditPostPage = { [weak self] viewModel in + self?.logStage(stage: .editPage) self?.presentEditPostPage(viewModel: viewModel) } viewModel.presentCompletePage = { [weak self] in + self?.logStage(stage: .finish) self?.presentCompletePage() } @@ -55,7 +59,17 @@ public class CreatePostCoordinator: Coordinator { } // MARK: 공고등록 시작 로깅 - logger.startPostRegister() + logStage(stage: .start) + } + + func logStage(stage: RegisterRecruitmentPage) { + let logObject = CreatePostLogBuilder( + step: stage.step, + stepName: stage.screenKorName + ) + .build() + + logger.send(logObject) } } diff --git a/project/Projects/Presentation/Feature/Root/Sources/Logger/OverallLogger/OverallLogger.swift b/project/Projects/Presentation/Feature/Root/Sources/Logger/OverallLogger/OverallLogger.swift deleted file mode 100644 index 80d403c4..00000000 --- a/project/Projects/Presentation/Feature/Root/Sources/Logger/OverallLogger/OverallLogger.swift +++ /dev/null @@ -1,101 +0,0 @@ -// -// OverallLogger.swift -// ConcreteLogger -// -// Created by choijunios on 9/18/24. -// - -import Foundation - -import PresentationCore -import AuthFeature -import CenterMainPageFeature -import Domain -import Core - -public protocol OverallLogger: PostRegisterLogger { } - -public class DefaultOverallLogger { - - @Injected var publisher: LoggerMessagePublisher - - public init() { } -} - -extension DefaultOverallLogger: OverallLogger { - - // MARK: Auth - public func logCenterRegisterStep(stepName: String, stepIndex: Int) { - - let event = LoggingEvent(type: .screenView) - .addValue(.screenName, value: "center_signup") - .addValue(.actionName, value: "center_signup" + stepName) - .addValue(.step, value: stepIndex+1) - - publisher.send(event: event) - } - - public func startCenterRegister() { - publisher.startTimer( - screenName: "center_signup", - actionName: "completion_duration" - ) - } - - public func logCenterRegisterDuration() { - publisher.endTimer( - screenName: "center_signup", - actionName: "completion_duration", - isSuccess: true - ) - } - - public func logWorkerRegisterStep(stepName: String, stepIndex: Int) { - let event = LoggingEvent(type: .screenView) - .addValue(.screenName, value: "worker_signup") - .addValue(.actionName, value: "worker_signup" + stepName) - .addValue(.step, value: stepIndex+1) - - publisher.send(event: event) - } - - public func startWorkerRegister() { - publisher.startTimer( - screenName: "worker_signup", - actionName: "completion_duration" - ) - } - - public func logWorkerRegisterDuration() { - publisher.endTimer( - screenName: "worker_signup", - actionName: "completion_duration", - isSuccess: true - ) - } - - // MARK: Recruitment post - public func logPostRegisterStep(stepName: String, stepIndex: Int) { - let event = LoggingEvent(type: .screenView) - .addValue(.screenName, value: "post_job_posting") - .addValue(.actionName, value: "post_job_posting" + stepName) - .addValue(.step, value: stepIndex+1) - - publisher.send(event: event) - } - - public func startPostRegister() { - publisher.startTimer( - screenName: "post_job_posting", - actionName: "completion_duration" - ) - } - - public func logPostRegisterDuration() { - publisher.endTimer( - screenName: "post_job_posting", - actionName: "completion_duration", - isSuccess: true - ) - } -} diff --git a/project/Projects/Presentation/Feature/Root/Sources/Logger/Publisher/DebugLogger.swift b/project/Projects/Presentation/Feature/Root/Sources/Logger/Publisher/DebugLogger.swift deleted file mode 100644 index 983931b8..00000000 --- a/project/Projects/Presentation/Feature/Root/Sources/Logger/Publisher/DebugLogger.swift +++ /dev/null @@ -1,43 +0,0 @@ -// -// DebugLogger.swift -// ConcreteLogger -// -// Created by choijunios on 9/16/24. -// - -import Foundation -import PresentationCore -import Domain - -public class DebugLogger: LoggerMessagePublisher { - - public private(set) var currentUser: String? - - /// key = screenName+actionName - public var timerDict: [String: Date] = [:] - public let timerQueue = DispatchQueue.global(qos: .utility) - - public init() { } - - public func send(event: LoggingEvent) { - print(""" - [Mock Logger] - - 현재 유저id: \(currentUser ?? "정보 없음") - - 이벤트 타입: \(event.type.rawValue) - - 프로퍼티 키: - \( - { - let propList = event.properties.map({ key, value in - "\(key) : \(value)" - }).joined(separator: "\n") - - return propList - }() ?? "없음" - ) - """) - } - - public func setUserId(id: String) { - self.currentUser = id - } -} diff --git a/project/Projects/Presentation/PresentationCore/Sources/LoggerInterface/source/LoggerMessagePublisher.swift b/project/Projects/Presentation/PresentationCore/Sources/LoggerInterface/source/LoggerMessagePublisher.swift deleted file mode 100644 index 863290f4..00000000 --- a/project/Projects/Presentation/PresentationCore/Sources/LoggerInterface/source/LoggerMessagePublisher.swift +++ /dev/null @@ -1,100 +0,0 @@ -// -// LoggerMessagePublisher.swift -// LoggerInterface -// -// Created by choijunios on 9/16/24. -// - -import Foundation -import Domain - - -public protocol LoggerMessagePublisher: AnyObject { - - var timerDict: [String: Date] { get set } - var timerQueue: DispatchQueue { get } - - /// 이벤트를 로깅합니다. - func send(event: LoggingEvent) - - /// 이벤트의 주체를 설정합니다. - func setUserId(id: String) -} - -public extension LoggerMessagePublisher { - - /// 특정 스크린 진입 이벤트를 로깅합니다. - func sendScreen(screenName: String) { - let event = LoggingEvent(type: .screenView) - .addValue(.screenName, value: screenName) - - send(event: event) - } - - /// 특정버튼 클릭이벤트를 로깅합니다. - func sendButtonClick(screenName: String, buttonId: String) { - let event = LoggingEvent(type: .buttonClick) - .addValue(.screenName, value: screenName) - .addValue(.buttonId, value: buttonId) - - send(event: event) - } - - /// 이벤트의 시작시간을 알립니다. - func startTimer(screenName: String, actionName: String) { - timerQueue.sync { - let key = screenName + actionName - timerDict[key] = Date() - } - } - - /// 이벤트의 종료를 알리며, 지속시간을 기록합니다. - func endTimer(screenName: String, actionName: String, isSuccess: Bool) { - timerQueue.sync { - let key = screenName + actionName - var duration: Int = -1 - - if let startTime = timerDict.removeValue(forKey: key) { - - let endTime = Date() - - duration = Calendar.current.dateComponents([.second], from: startTime, to: endTime).second ?? -1 - } - - self.logActionDuration( - screenName: screenName, - actionName: actionName, - isSuccess: isSuccess, - duration: Double(duration) - ) - } - } - - /// 특정 동작의 지속시간을 로깅합니다. - private func logActionDuration(screenName: String, actionName: String, isSuccess: Bool, duration: Double) { - let event = LoggingEvent(type: .action) - .addValue(.screenName, value: screenName) - .addValue(.actionName, value: actionName) - .addValue(.actionResult, value: isSuccess) - .addValue(.duration, value: duration) - - send(event: event) - } - - /// 피로깅의 주체를 인식하는 식별자를 반환합니다. - func getAnonymousUserId() -> String { - - let key = "AnonymousUserIdForDevice" - - if let cachedId = UserDefaults.standard.string(forKey: key) { - - return cachedId - } - - let id = UUID().uuidString - - UserDefaults.standard.setValue(id, forKey: key) - - return id - } -} From de9340be26d93c9f108b93c2f9ce22b0f20b8ecb Mon Sep 17 00:00:00 2001 From: J0onYEong Date: Wed, 30 Oct 2024 18:08:26 +0900 Subject: [PATCH 06/11] =?UTF-8?q?[IDLE-000]=20=EC=A7=88=EB=B3=91=20?= =?UTF-8?q?=EC=9E=85=EB=A0=A5=EC=B0=BD=20UI=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DSKit/Sources/Component/TextField/MultiLineTextField.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Projects/Presentation/DSKit/Sources/Component/TextField/MultiLineTextField.swift b/project/Projects/Presentation/DSKit/Sources/Component/TextField/MultiLineTextField.swift index e5eab911..c226d1ec 100644 --- a/project/Projects/Presentation/DSKit/Sources/Component/TextField/MultiLineTextField.swift +++ b/project/Projects/Presentation/DSKit/Sources/Component/TextField/MultiLineTextField.swift @@ -96,7 +96,7 @@ public class MultiLineTextField: UITextView { placeHolderLabel.topAnchor.constraint(equalTo: frameGuide.topAnchor, constant: textContainerInset.top), placeHolderLabel.leftAnchor.constraint(equalTo: frameGuide.leftAnchor, constant: textContainerInset.left), placeHolderLabel.rightAnchor.constraint(equalTo: frameGuide.rightAnchor, constant: -textContainerInset.right), - + placeHolderLabel.bottomAnchor.constraint(equalTo: frameGuide.bottomAnchor, constant: -textContainerInset.bottom), ]) } From 8465317c9618737ea90b833579a173db9f5f59be Mon Sep 17 00:00:00 2001 From: J0onYEong Date: Wed, 30 Oct 2024 18:11:33 +0900 Subject: [PATCH 07/11] =?UTF-8?q?[IDLE-000]=20=EC=9D=98=EC=A1=B4=EC=84=B1?= =?UTF-8?q?=20=EA=B7=B8=EB=9E=98=ED=94=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project/graph.png | Bin 178647 -> 183531 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/project/graph.png b/project/graph.png index 0a11ca7fc1b8ba3142e850212ad663b827e4eaea..a9aab56bb8c78d389c55c143483d22cdd89414e7 100644 GIT binary patch delta 99973 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 z z)cqnsr^a|H+b)d5rM!&e$NSHXz(m==u0QJEbtjV=K=54?IyZ==+!icn$&;`K>*sQf z+0)fwpx~1D{(Y``aS@l^w0kpEhHVbrOwPvok@!{XEuUp`TX5aQi<5st;`(QQF7%hk z>OJ|O?{)3R(`S|C%g@|SNjBd6Hm(%}6KWErMNo<;5p>BE_?9G4MbtF52Bz$mb^(d-IIQz2;#T_M(px8URU_Q6sSGl4;ItiLS#7jUe;zb}FEO%CuPEyi_=hpGo-ZSfy^T|IPpe zG!$h$0N$I737l&6UiAb*bB!fvg3^*T-GNhBAm5+}8-PYmEG@!!JnOFZI~+Y@vtRUs z^<-e+nWSYINA9>Kuy-etxns%b&kAJAJ_fhr{}c}HrRe_`+kA;9<8d5c%Rs}!`$xWV zxOM@%4wz1JCIO8Pk%QmSGHM|@Snvm8xr+||De-faaF-T$v%S~lv&JX9D%C_}HaTvh z6imTW_tOL#0v60T6zE^Ko@L{_oWlW{TEhh4f#!}~DXTyNDzPtI4C^6AFSLxIh(_rUd7 z_Wk(S*GGGtk{Jd*l^JMdoO9KA!J)b|n0#}N#S+tMzW&#l;ZKs%F5X|bTEerul8u2Q zT{#vg>w@vhN(}^JS97vKj-x>G%Z-(d$LrJ{o4T~dq^c_=!|u)RpI)0}sASwf=ze;6 zCMA8AFU{ms5QjuW^epgH0oK{jJ^=>tD(+n&yNzsWy`T1OCY)X2A8lF}>{bvDRVt=# zCbgZHez+bOLJtjTb;)|({zXYzt<{Hfmc)ieHs*F^UvhPFg$qxAWAIoEron&6CUgo8 z3-5yV%)&-1>Zxd~g}D2Q?_WeqW*_}a=TjuIJe$4BktaIzq8!n{Z$@FB!UWQ?!VXLP z-gZzcU91!2Td-RioDbtynflx5T9Bj8(!70CRIPV-NP?e-x_1UVFI7)89Vg}UjhNw6LTPAQHg>|rC0HGwSa454K zq*TF10zMVM5|mlPyqxu(uZ$&-q{X*`T--2dH{vmIlCfr%iNJ0I9$1)HvNJB!ZEH;` zXGr2Q+o!@}jt~FVjprAym-10~6b5R=T;LHAK@#=@$lwOHYTWNTm z2lYCr(Ri8ne9W5F{ktQG&%whMmn-X>$?t`f58x`Yif9k@+{l9f+>vb=Y1$e129gAE zL8RN;75~cXFv;&Qp`FQbOdx)>=p*0~S!h=9j#E=-y?4;p`;+Z+OMFr!=4m6_-&Qrw zU_k}apia#*V$LC7!8F9|H(782gT^Dc*YCW$m~+MF;Mi;1uHnk^x^=d|RrsVPB?kic9K#$3AEP%4@DK6ToyIvr$U!2nOqOd>nvQ|eRrK|*P@gc%9kDT$a1oNnr(V&~GOXdFc&}X|bUI%~$OHHVDFP8rwHHYqxZu>S(jNf zMc3`siTJ%DpOF1tFYVW(^iOoDt-9;;SJq<{HqqR*t2-bAL)#6|gEq8GaLsm=7})Jt zmWu{&z}=VobLi<$k~9MN;$>=}x3!IjO@>SJi5IlG>sqD3*W^URVh}n-=l=^dqE>nQ zaS0G~)|TlH^AY~Cct`ndzT>e-8o5^kbu%L>0l8qq9?;5@qgwPY6T51D=m6qqx^d*Q z%?cqVqFMrq#ig%|jhGI0ndqg8m#$_Coz8wzRBtDHe5yZN4Q?(e@7E|%>dz~KGp7&W zM8vG8_ENaC;(C+>*N`_)q?RhcmCQ|~DmS>2a@8AwhZ@6{g2qo%+trd)7c7aiJ>>3elw>w;qyAp@m z(7B#tt(Zs!+1PVcB+yh_Rr@^)alfAhZn9{nS(*FOx<@0@sHL^CXSG42>D*;!aL`_~ zJ2G-l=c{T?id~^3(hM)>*`RWu=S|~x*o&WdILVe^+SnpBUoe3GH3qX7n4WP?C9EhB zn~GjRWi@P0Rm|Y&7(YpTHDp{{`sL+*khoydhha_Xj%)VCkitacQF>ba3yjMv+P-7i zEtP-|m@0R>l8hwy;!>S;*}+QqW9(`cs|I&*1hI`v^5KesJJf0xEy7oT!cWG}2QRy} zW0Dr=tFBme0kb^fiUW1rmD&Na-7x&6i6$+{5>k{4wHv9$k*_5lo5DTu^{)V z!%>rTF)Qx^Dk=@+2^HE@Fazuzf#rmy5a5ITllK|MhfdQi$O{0$ujmh^EtU7;O^L5o zB23o!)}z#;C+f1rdJO@_1=Mab?b`@WmZOjZ#vKvEG74BrMot0BCRr)Lnv zQM(L?;cG~K%)-wc?vi3br26@#l&n*2;5=fsLID#s8HAFd|cV>6D zsLT@3kPC(vf1U$*KAy0I&3C~jV$Q#(CBV9EqzE$$nW?Uio=a9$0KNely5n0cN}n<) zcAT@vqvYRo`R7k(;;pZmxit4G47QrDSdCD1+mGI&z*Gfq?rQYH1;D z&om}TFq&GaQE=$uf~*`E%y|4!0CWas{--DPZi)HVuU|5XXAi%ohU66GmMeOn%=wKD zztw5eW9+FY?t|9dCyF}UTX2153c0fQ6Hy-UGUE8yrLw9@$Nx%afMR-xaN{GG0NcTS z<$>zgAosMMWq*M0RYBEGl*ILongPLA+wyS?N@eADg+P5e=1apquoHq3m^=_$v$jRJ z#K9wVmNs|HTl0d~^0Vez6Pt$iw6?!xA59}3MnI@5%nnFz6S_oNYtw#qMeWqs zS|ymd3$r)&auISCKxqAys=UXl%i8_QN%XZ<-M#7w7)|TiR9xJIu&J7xa!JqA*~aVZ zX`?=WP~w_l59r&TCNDQxP&d?B1A-h3vrfskMUDujQ>OCA^zDux$l&R%)aUM9M@n%qqWA z`stlh_|MpX>v|^p_MjABKnMWm|vW-9xJ;^Fzs&#&@p#6vNgI zlYDg_toFTzOo?hZphu|?l80?Cwq9=5BYD#@f>I55CqZ_CW}HS}*gd>1YH@oxN!H+g zWziSljSRMHF|=E`*}Nu?rnNofUQ!8ScxGWDc=uUm(r9TiL0Glm^@yjOH3O8CEDt(T zUs(PBtNZz;$qDFB(6hV_8-?>B)77N&{iYNuR{NN^ll$ir;p~IIN&0bNos}c-TCy15 zpV-XNz&TS)R$h9HMS}XjJvX77E_6wF%r?+R7rzm-kbzx&t8|~u{jiS!J7)fw*RWdn zLcxy?iO;!|>xTo4%dU!4U#n^*3GJ`>C2Q-BCY zLA=BD!HyopYky*z*V26n&sxG~&<3M~p;(fP)?12OMBg)HKa@XiiN-n5kKlK|?7fiidMMy1Q%f|rMGD!(DoKIM(i2Q}S5@V=*LkN2esWd#RXP`G9llZZ}a7-9IS zk@IbPO9QOKjQ`gWMI%vfV`F1wWwp6wmXQ0E=+y{|%ztP8I@1&3pOTpP!eSt`qwW5T zT~1!!S3vf$JBsa;38iwFb~_>bFDg9tbTgGK!FdO7 z`+`5*f%ZRrNTHjq`}He$0S`Bb1h80}v7={Zj`;Eg-Oy|4iN#Q+tf3(l@4Opfw*NUP z@wfcK1eX7_M@i5~r2N+oEq2PUqoXtDd(cv1(3Bh>PjG(*12`P!_y#Pvz@DqHu8xgt zVCcz9{SOuv^eF}&q}VUt{wOOeD@^!rqm?L)#P9!Yt?TODT|0-yEqY>hLj_GuB5J=w zWY_h9BR|I)U7Z>mBHlSC)UBFAK^)!Hp}U{IS4q;go*=-Tm+XYe|%?>8M-{Eekq-Pmy5fO;Me z@*<2Yv>S!|&n&Q`AbKf|(&4R(Ae~re*R$^A(eEK)rb8M17SX-rLx@+nicjOC1|GQr zu2Xd#08%s$k9)sI=;q$9^a1TX13kE|okw4!+Ir|F8{Rl+ler*qQ;S|Ltxt0Px1DEo z=-+C<521SgysP}*29-1u8v5&KC5$|OWLy)hb<^*1@-Rw-am%*QUpGN_7JH3Q-hoR_ zr4;#WY2@4u=^&5g zqz6WbQ+AWnX9lNXUJ!WBP5q}5X0fe ztXQqTry`&ZF{FhLV~yw}DFPOFQ@k$q3#->-e>>0#CC>(T%Sz}4m?H|`Hva6d1^So@ z-YDw)$F2<_bB%V z9T+;AhFyusUo(Nk^uP6|65R##@hK#;=Cec$(O`>_2L;U3)|^uC*Y>oACcG@d#-V=y z-`m;s5}m5cJcxWZb~fi*uB7Lf9H3+S9oP+!E8Ca-(RpN4gn$7DgyLKQLU27JY@%LF zkn*cInpj4~b^g-DI(Ff|T1^0FEk)l46Tj`4`C-8Wh{Z&W{~N;aS)0KTLfGJXZbtKSK5n$qFHatV(udCM2snWF?#I08zr|hS#A{cY6 zUw<0yjyD~CX)Bgmcj%j{{)Qq7XzhvXENY|}@BIY{_yWlkw)4%IPT~tCT&S>^V>?zF z*v|a)WuMd`ql1H!Z|cRCpRdHVx<)agcw>l_Nv8URiQE@055n zL~xe*kCpY#y6sN%!F7w*rJOoVR_wH(qVo>Z@i|-dn&)qBgTl>%*d7aZXz@)un&-ke z4=B9yKKSu{`#{~kth6*5hN<{L3qH~A&n$;&DYArklgB-o)aSCfE^#J38|D6->5O!y zSxTNVAt4C~Wdq^}e4HDeOoW~(E7JzfR)l)g_lufLvZhdG1?5-1*kqS>sKt$>nQ{u> zrM-T)hxV;nkM`Mn7RI-f)n2C?bK|k!6tWuPUhGX#RaYky6&0nSp>gjt;?OVDney7Y zbzJ$KTBpcB;nsc05>3ybYz{4i!akk#V*CT;4H(Mkv*-RA__jB@&2%+4m4wYda)PBl zjy3zk&7F}ej_DuB!h3qt3)Fg(M3cLa9pSL>aF6*YMaUEQP%Bw9`Qec;h;Xw#0_DkO zx<2I$uTHVsnjsmB#HWl?3XDAbO+ynxPh3pi`^M6rx`;1%(en~=(KBMx-anP*22BS( z6a0+u-HKDKq3Sao)dKY!Cb8;v^P%3r+O(LJJ$ZM+nVjNT7Po9cENVeK-1AQQ7VX7?5@Z_3rjTb^sb^+k%%==NvRM-qfAWpEB7V zDiiH7ba~gN9?|x3gOgaar)Mb1;A>G3>`&r)PFmIvA}vhy(H0pn^R?l zp?HkR>>-Kq*Jp{{*OwUI)gM@q;3GF$KRc|BUKX?c+WIl#+!!=yS5A5I`ky9WY$2C6 z>xz^ve%hr&78gJ3EPna>d$YFoD5i(3UFq!CzsP_#Fjn$znY;^RMVE_CVFxL#5S45axvt~$_kBh@?fW+CS#v7{mTQ;+Z^^E^pU zVV*|AH*1l0HpGy4g69>E=uBr0`5*nC_WZw}x2QSwx6)o_xUTatBJzrUu9Z;bZ~de~ z#>&yy`tZEOxd_faaV;b!nm#G5ub+~gUdrq0!&DE>!JONQIV)dR_EIIE=pCGlJsBLW zcqe>v(zW1ZR30-_?;aE5t~~qNb@rCZph(Ka=r@TKiM{Fm76u{;mmAga3Bo)s57H|6 z>^Hom-Acx9bGFY>^<#UK+*TSh>QwQuf>AN-QkOw>$m`apb+sHPh(PXRFJ;Y5yRToi zu=#&oP%up4oqXK4bFJ^116Ed6*2`B{!#hGBzub0rPgcm+$(qVltTPPvO!4uQ4ZK-L zyX{H3?6R~gc0aGqWFYo{MYL7$*mBfPE)Z&*$0-b5Y z#~5kLv>v5(8lO+R>HP>1l}^#||Mi^AdAIO}+img++wq{LCfTbgz1GndMI+(JK@QSv zj~w3nmUhgtu4`1o*$~Wn^<;Vk1P_9vo`%?+4ti$f$nj{FuAz$4^d+t%X(HG8m#hSS ztahw&85GB`#mX$~rO;6l%z1Yd2Q4Ar!8zPE>n_<+G^IB5 zg68>Gl$0Hdds5M7D0^df!p~Crz7LV%Jbjyu6k+Sgmcc64@BY5>Lt!n5^!v(6%LkX0 zV$*iA-#a^-eb1ghpLJ_EWFljh2-%%_LLSZWU~92wv;je+ch;sOCu`hVY{ZPVSBUZb zUnVB{j{p4F+>8VBhn9|xk|>aZESQoApV9y$!%cIOn@U!wZc`{oT$Z$swej6ZbGl9w zYwiO|ZNa=)!CcioqX;d+tn?s*JRki#(IJJZefMkLy?^LbqOWnI?zcyT3SpfA-ej~) zhLP#+i~+*=iV{1P%~`%Q+jrGcM?OQ(z(AjeHmX~hVk_|TmLU&oav%GJg(zMc=$DIj z=P2Ejl~e0vPZ40dxIozvqO`#A`a+(X;9L1@?aW?_8!3}P9}YZ+hOaal8byBi@S(J4 z#vwf`>y)jnt**J>@NnzW*39Zy*~^raw%J)WT3T8}W&0gWIc#ZKKUqG$pkfNLEQ8%d ztqh;LMgDhleD&EI`EreEwTpA_7C*wX)K+;Jpe5N2SF6#rtgnJ+V-QiG{>Dd{U8XX& z61%_EFBvzUt85=fON%-0RqN@t$ALJRW0*Yk_>PU*_GP;Qb=oeK5LJ&>Cy&<09<8m6 zY>5cp>{-fculnV+@_T%iHkL9sOiwW+B@OhChQL-MhUC_^whH$40tWZ)Wz@=YQY>zH z?0HG4-M-y2x4}w7v~h`%jQxF8NWUD#j0Qo5L*A<%v$ivR5BmxFiE#?VNuQ~Dbi?`U z@IKJUH>T0fk1rET!NS7|zv-ir#~oLsazOyOQ_gdN?gUE2TR3_*;FLB4XFogUP4MyF z+ww5W#?gvy?fQ%p7Q!Fb6;%*o;`l?N?epOeFUmYGY|0Xm0nSScl*$jIXxd6Woi1?t zW4nl*TXj9RynIe$WR#$0(opA%n21Q@f>Q>JK~GPQ?zVkNRaMB1V6q36mIMNIzp0SL zrKN%4;XsIaBqSu??xY>isBsRKu4QXo^jdE^O@HoO%g_+b8&0mvqL+O;@-7Bs4wUwN zCG`|Z{%tw*sQ)#!M#IolsTCgomrs$G7_eOnW%ivyacbIMOPFK^z5Vy#P#={>jORnzj0KOiWC=7wQHqW4jt` zq_1Bm#`^yAXIqNfRA>?MXQk@o_^_*KVN$dMw>z;M%o)YUG6YEuy>v%Yy z!WPVfU;<612j4FWywBVC?&2+}5=+(3@rH%7)at)gcL(?9qAl}`l0xKm$B|*Kvfq4W zF1boN@=1~`!q>bR;~Ub>L{VG_c$^(dnei;d!9f0MT+n+C-pjb<3_TEQY^@c_T0$#! zTwx2Htn%_RDJdyce|E-;JYTOkTzv-dS4~~r#Mzm~)YSClt5>a~qx4~IY*eAR+HV(j zqo&u|s~;~33Jd!O2I5VL=_447eB)A!oS;ve1_5!#dg^Ux@3zOcMGk(I7esh8Sn_4plmc;P zGjU5atRjmKNLH>ZEviU|3vAQD)N%^cx<(zdsic(cs*Z`}A2qzZyp7~mjt`8E`g~lp z7`h^s0pWCedmAVmna7WX#l^+@2M13j_qg^Pt-&b2R;Q zHFa{LVval=9v<#>PfxGWZ#uFqkd^kvdA^_)-U{6zl?&bCmtY}4R(NJ5+U-XqCX1J4 zfLCZhSfAD3=?UXJSxJnF(9QOYJ7KTJ6n5E^+8^rZ&h`u#ba)oaMeF}RGWBT z9_q?SaGh^IqzhB}v?;Kn%N>_RrBy9K1&6Bbb9r?+t=Jb7y3EtqDnBDUYnZmTT_lRW zjEp2e;IaMw>sS4oSpi;Q{r&x!U=}tCg7kOq$TBoS0*q&ogT?^kLb6X5O8A_17D@!1 zkhnw6ozgCJE)>d4Y{@)z?SSc_vtn~bcwOV;TJsgb|I?Z-kjTU^(7JM>U z{LKZrGFkY~#POUNWQy)Krr%8$(hJgQEVXP+WPH&ZuY2~j1jTK-^NT)aZ$jSd$=~E- z3a6q_e@lTV^H3;bMaeTqxsz$tA2GVP5*s9)8<=&-$gd%CIa=qaSy;bG=`MtfX zQ%`sA*B&3NxUUpee%o-bA}}d8C~;ZQ@mds4YnndlnZ}gebhwbHh99MbyW!4QqDM00 zK)>N$YZETd7Sd*t-6x-=bb(r_b?#FrTjl`w<~|M^GQj=Xi+RIrGupdBr!eTjqxFeg zN_QF-&U|icy@bqst5_m>-pnJxl87ep%K2j7gVJfp`3`3zE^&@yh_cl`tL8Izo%TMf zRu$bMZZTins}rQn$5#JaJXwG>PJpQlwgd^Wkf#Z2`iz#!|RSrlwo&6}my3Wh$!gk_T`#fd$|;|0ZIHo4Z8GIzpH-MV$lK|ICM&Mv5B=G!=uP4?je6(OUP z7d^OHTKoGc)KkRq;#2~euDcqa9RC@uaT9?3tbQfMp3CHBqYdA9XwMTTCzL2J!k_?e z;NSo_kSNa+2exQ!p-^ohUp4UvXC6FFnkY5S^U5Br)Pyu)c=B_hT`Do@T21do^wPDt zjpGzFV~K-qmQx`~*-vigXv-LFOzpFeJm$Wbttdk_ujDJ>uE?np7Sk!X>($z-` zZXN;oB+H+;jQI}lpE=bZ$QB<*u0TWCk#d63j%_sTNZTH}kVhf&2+KII*6sXz22v7n zCR|z4m;r(~6}<2^oIp9kdnrsR*+e=uOq?-<`2N`Ns)OX8fp>6-C6nIFqQv+2l|CWG zKgCB&%tza0p8dn(wFWmUBw2q{I>P zX@Nr?E|uq3!m#n|Qz(}v@TCEMzQi)+wEY+N)l-X-gWdJbh|dz2D~ z`&bgZB@6brb}qc_g%ZaLmF&Hx&w0Rqbj*h>*ig3JU2)0J(BgS8kWv(G;F7duzVi7s z6IMUZncDgsEv)!3uMBNt{U-!iX$AU()GnQUj)o5Pwbq)API$a#0m9Y9h$Y_J@+_{5RYa9? z?Gi1qHqRL~3u4>|tg<#D{{e!mfvSR6=IsS_*&{0+9yVghMTcfdav469MXE`O_e-3yLm_p@o42$TXnt)?#Yb%@Znkx0{8^p2! z0A?d@QiiuvMsVrSeDnEirHU}b5sB5&S_R_J7B+6NSchY)+7@Q>nGIUG=c^h@ztic9 z%hJ5~pg>F7A~sV}paJQ6XQX2vJ96?e01qn5OIo>oLuG^3=1^46{Fk=3fC0{7}x6XfzM2@k6FNR}m> zb%?N#sR8Oa0;fLvuIAV5lbT6yg$4meva~d_()UFZa^c}23hW^QaThzxs0Q>Hf2h5& zDSsLFA^}@0g_a168*$xh)x?d&(#5m5XV4#d(NXlNi`NPm?d74UFgIh%sQxUdgk;jyU zIW}zD3hwA~;;&5Glj~cHaC%_`_*4QzOs}Gp}ype6$F`*40rg%L4 zXmx2}d_`6)xvjgK#KOWtP*k)n&?x>kb*R>Kl1{#Yt}dOYr)U58czDCfVMBZTrF-x8 zcFUw1&4fbr_<}4&!r;oyggV--N3G+fsgV+Tr)!i04!D7G%uz}-Z6??=mNeWrGkUAh zgXhD`O7I)c8|4?_XSTg@A4Suu5#rHr8fKZe2Pko$48XJ4q5Q2WHH-jAh8Cfrz2skzi~@CVDVVx{#3x3wwAvr*Ouwmk5D)fF0| z&_dD17afZG`3H?q;uaI)6rCs18rHP&xzVNC3~Gf3my@nne|@3Ou#bHqsmDU< z+^|KNY=(wI6EW7ao9rSCq$~jy<3G)%8_rg};4aY0>mL~K1(%!Y+{XyL25-qPMMmf- zV75c_;%LGZj-Q$LjX6VV7LR~+r^eaRMiZZ-SC4c8B-zjkw&O{ZcYRcRnKt}I<@BAcfjpSt8J39{gO zgG+E)kT{*inby9KtZW}$v#%U4I{b5n02dX@7$w{(P>2EL9Ik95aK9ywm(=T#^7rpC zBhL4EM<2&aCXWeUO;nS^eBc^=iXSVjy3l9gdLlGhcRE&j?reuVqe+sq~=8eh<3XPm4HKi zJ>Dz26TNzKkLptOn-f(q_hHNo`AawNrn0~`Y?$ZddWJS*JodVmTWwtbCgT1MZW^NX zgFpS&F1fGPxEGz2IP;4*9$#*yBCJ1JS!m>BH00L_$LkCW*UB3z){8H~$+$wFp1)bc zCw5pW!70F-*pCxCg80WlD%PGJi(A2c|Hw9nPnnr$zl_vtFG z&+x+=M-wv+xCLrvY`rQRS{Lh|?WyRgapvk!9>26f?uttpJ&YOQDi@a|QQdtzW)lR6 ze9Y#E*1Yfu6?oeQEfzjPBg?u{aw1t%KOf5dxX5AN#4xK7cZ~bNDDqSW{ zQxh3+(^Nk>kG6Hrk^fRjNT$u2Yt8;iSz%#BctZhVHTl8C(%!!4(Sg9}FR28XTtk9dHfvad)cK24 zk-GP{7vu=6MAZ^5?_-V&q)(S0&>k=YLXrH2BsQvYkk7ibqV^Ep4;J zD=sWmX)1G2VRnEPSlAR8_mW~cDQGj1y?vWJ!F$Z{_U%5>a;MI=#!bqu$l=Xwq!uyG zo{Re`GJJsD5>DLpnKH7Cb)j<$Q@&z$_b--dljxLvu@d5q?hy*DM2pfk!$z9{aouA*=*4iPQB!m*cFG*x_H~(}^xKwjh zTs#bR*xh)pk=zrMn#%0#=C<{zd3DcI;SK9MX@H0A&zV{VvJl0~5)#jLrxBKF3>l=b z8rPrAy(!mAtVj4k3fg|Ne8d%Eu=QD0U?wjowRvKK5xg0&KX1gJ!(G$q`lnStVQ=CO zvUVo6n*c}8HXIBWt=FwRB|q5|IFZ}E04OTcPE3qI& zu(Pw%GawAjT>=fy+@?HE69wXc*P;nzpJ#ngQIA&Go|6;^eXA55ApEd*J+uZr;ls6t zNJxlem<;;Rr)8${kK0=vlC8ZBy z03NK+T0;RZsp-<%@7tc2rKOGHS(wO>)34OI`oe8Y^P@FAZcvQS(*8(@==)R&qgIvO_mbEc!QwTFzb>F+pE=$@)5SOl|3Sb~xFSvX05 z4rmhIhTw#u{RJ5n01!%lKWwlYEuQ%xa7u-ul3~WdJ&{`i9v^WX$$-K9IzFE7D(B+n zHX^>?dY3aw$=J*+fVjD(r6ok34NCIS64TRk0dBu0lryi&VsK+(V(1wdnxR%DV-gPl zqyR*`NnffYJw1J6V_I_6KzRRutfcR0=Jbc`CC>oA!A|$ZYR8hW ziT&pvBDk`E5sVU#YRtQ6MMOj}d#$*ROrMsvU{}AE-@irPym=#d?V3LAk1OwKE@CKf zon2ky6=;60tlWUb2ou=u?U`Q)!R$?W{%PH?2B5agc_##YUl7(iZB$lPCM@&dI;H@F zV4hi2dqjfokJZ?I4-|&|kDdL$e%bLz6Z)}Q5&t&`BYxUEftAzV$z8%wOayD?$pe7~ zb5$#k1|k55vY$cWO*gkIV)j$dBFV6H-o|DqpgI>9JfDmRF@{;SHLxcSM>sx08Y!WdPGD-uq! zd*vgBH~47hD63E7SdQ0&MSMf6%s7;rfsF0K`!?4ec_U}=!BTIEmr&o%&vEM%wOM?> z!Vhc-$n7+#2)PU_Sl@7}Li=tYXbe467<#q8@40^J+>F5?;jq%%lW7D zsiNZPAuE@Nq5xJqb-yN731;#M#O}(3-4%GZxVZSuwdV5m>)~T#`etSNSUxJ*eq9T4 z@H^tyuMZ3iXjYV0R^E~3lf`gBLVc^b31AOPCVx0HKR;Y`f3vWxjM|TNXio(t@XoOQ zBf$~OdQyiwZ-_Az{aTZmHvT9 z_CSQe+Die~aqDqLZnGb2dSRh$B6lsQXRyik5Uh|hv)i84tX{vrYreYb2)qXN+ixKU7;N2TrJ+*1LE@Iw{NVWVz~CF z%YF{!-Jw5wR+fXxS1v;aW^;wjSaT&hDL6eTMcHFI_`h_UB3*rNY>k zu`$AIE&aLt^C8KAp|BdJjX3u`5ea5@3FhwJ-sY8U2;5tjNwDBl9jY;)ocY7;fAZu> z;@aG zXJKgv1J(LQJIh>mqVUznizFZ0+dUNB?%bgkvzrKkzn@i96uHy{>(EjpiNOfl@fuud zEeLBE3Muf#Kx`<`;r;btg`b~r?Q40sJdvMXAQXTQ=7UEbtG~L69Vq7ug|LGx@^X_> zQx#@=Wy2p^326M;TfEW`dUDiv^4j;&Y!C!O+(@YdZh6htHSgW)6Oa2O(QxI@Zj|^v zJHfEIodqGu8VCUkAszY*4m6Wy0!;~v&I%a1HsJoH4!&oV){U&-Vd?SF+I)RaSUKr> zjt;R0bHmG?MFu42m7eM+^9w~I#A$t%tD>f&5Ay2jQkEa%IuaJwa`m}wntBA-rpKPV zbP%9hL-7OoEga5}6*bYBgoQb%0ofDPaIl~l0oo!zJ`IS_tPd64r<(3 zov4lxNL1AfAT%+b&*uP18ZA~m>rw^u>!I#IZ={INZHyb@y%BEojpby6#c|}m+su`Q zebS`lWa|_T6Vk0NqhqSuQu`dgYPZynb}AdP52JEbO7vRcGD1cSpOB*K`8l&Bk#ck~ zN`gZ@+v-m)g$_nS=aA@4Uc4aCY zUo435a2$C{LxP8o5YXTw1T;Zu={|OUo;Vd$DJm=^RnMXR`ST|%E+By6AM+Xf5rA|p zWD?dvqUl)L0?rz=-zHRV%gKR2-?9rQL!m&4h4LZ$9hpvUaQh+Jg&(3TF3CT@*bns? zgq(}${N#yd9rc{K*>1?dD9RCYpeDgjP;N#^AW)p#+hx$jV>7D3NwNzg2XRS!8&(_A zVNnL(>$P6)1*?BT|I%C&Bm^AfQgh^a%P&o2Kg>d%E>#v*lA>>?jS*9^5q4)W$ z=AF=Wmy^)V%?+L578}!z^G?^iAb-#^Gk+{GZFkq^#{xx+Kb#HqT_HEJ28OP-;X2M; zzILsHOZK10jeF_RrK+|1LqS17pVKT}6fkSc)j1uB%RoF9c=|&Xh?^@LFoG;bf0lL8 z#TxN#+jC>oG;#*ebL+|R+Q}?rxqO%CkaIrrY)$MdERYZYsq|Zwk5)hC!asd_zx6ED zlHL791Xc+^ba3yPKxzP(^AQ5Sd#e#V@B&8B1cle|e4}YM7ngyjvY5-DIj-$)5!BmN zo`dm(Q7tP&C18h|Nl*cfu3MBPD$=?9Oo@D9Z`b%d=8^lPhYU^POG` z?pvDsTr{!*^2zM9DMI-)IVq`Xb;YT=e`10pxWyOciLYFNr+GA6ihNloA~g9K-M2Ke zwcp7$FFcdLB*4$V*_Yh2SSnPeb(CF#4NGuV=znm-;s$?j?ZI+B)ZlQB7d5wG#u`_S z3%I93_6ZFod<7aRKq=nqsW1zr(oSO`sEGxTh@_+>=-dnK@PA7io7yi4suYzXYP9d3 z@p(b#4o8eK7BBH3#9f-e9emV80fFwD-}*q7B8UorS4sc@^Ak*i%N|Iyw=PbEvq5Zs z!+yZXp-!F_&nJ@u%1I>2s$YSEd^=yHsgwjVd z7k&a9>(q5apK^kx>7L{(SvfhUdE(xF)RmdAfs1gjGvq&a;8ia~8TF?d2J#y=LKNs1 z9;o))Ni?^N(7pHcOiCY1yeEcVbPlv0FUPk+d zPo7){L`hl{&H6z^XR59FDDR+11K#yB4#krm&`MR_b7GHUsmy*;sIB zkBA_h!vpyF4{8)rj_^m#dmGORuhS1~(Jp?HB74XD=AL5b<jryD9-xS54ZX)rlN@wZ60c ze(LMNuhB{zfIqdV73lG35~a(1<|)`YsCA zZwElj{PCeOhV@+tM8H{i)>0GPY41NPMyAHb>0gxD>?nm2N$R05Wo}9O#inHg;KY`L?UfQcWKtaFu2utq=0_{ao4i>Oy?uQN%F1--9=r#@0tMAN58>=V zluGtr3tAurQJ{{bAqF#lsK=+{$}CG!HPMA@#JMZfluFnT5fK4ORMEg0YFtfa&KOy4 z8o$1!mic)OKn4PL#=HSth06OOiaCRqcyIIWLIohmfJBJa3ZXDYkCMs{Dr&$pcINX@ z!KhD8gFE2O8_w0Kx@6*J-6tIf&f-1Sb$QSc_*>RQIp}c_h5NNs^!BPVuyTc{a>S`P z%IYzXJuxxCVU7$Yr~QC=XPzl|y~3bSv_7o71N5T54hkp}++i#nj`keQ5TUd1#3-Bb z3Q~YMTy%j@?^vf`{Ho5Qi9d>6QBXuAK-cK$8HgnudX&0>ARZNYE%2gM^v2|xH{EUN zKO&Qgt!FM@zU+(gOpucPl2DDO$Wde?$`RACPOy8LjIj}@(sXSe6y-i}aG-#a5Jgag zh{qLdAWsd8Dy>d{J>md6*8aof-(m*-LmR-FM#gZQ&mE)Say1}Sb&$OZ=YhO%Mw8^e=s088?C**1yTtf)fffdDOF2|MU>$@mD8n z=-_-tM3`VL4-O83g`*jQ$JhpdB&TYG5lg0MBnygn@O=SiyVS+!0<&L`^_uIvOFTbu+AIM4JzTTHJnHR*bE|<+Cz~BfK;*M zh^{6znqR+uy>p2s%v{7+vJIUgm+cJ<(*otro0W~dU9!+D(fvBF zSvsa;WJC@RK}|U!0@{@iit2y#cB!9 zlY}ljIC2I<7Z(wW<#E*W^abZX-nZZ`RKp!HT>I$@z&D)_GZ{-?0OA2G4KAv8z67T9)mDsW11e{#H zIKeTL^z3me*xaNQKnMdsMba`oM|?nbgkfd8?)uCg+3zx94Pyfx%dY097(bEybUhR3 znwjc$COvEkWdLS2zTC4v&m6hs*$YJRWkEq1O`{NEr@i$DUNCaO@F2Euf%*{Gf?ycd z-z_<)7opY+24_3I5ty_$T3C)>WCl#J6$>pw^mIq&BCa^hf1>1|B7{*h0ZMta(w=4K z*JSw4&W-_BoXkb1R}vX*1N)m4bZl`d8%njCa{xWnIPYx3ZvX7G;g_yI zZ?|ps*!tH?fN0NwGt9h?`WkdR{&ldBf)j@}+Hqi$`Otrf z7~*CS7!V)1j7FfS!OLYm@-E4>0DvhtY@rx;(0tj^jK+(UluPH_t!!-g!UelqXTE&V zfq}||FlTnnuZjRz^_z-{m&L?%IEf=8Be$@b3w4O001~sTe>BMXdv_N~BY$#FD%}JX z<-P9%Stx4;lX%#wZLud=nTiu3z)Z;Jo@RFU!H*Ap3z=PFXVjFQiKz{UXj2K`ZvN6e z)ZuOGZpf}1+HJVLTGlsvZ~8!|Fh(A8emJxL%0KKkTG+S(gtHy5(3D&ek5S2XpKgR0 zx5i>zG--E*?k)&@fRfhO0pia6!L<>MJ@-iKGD2$4zKSUteM|W_@YtA>@ zg1;+6Lk5Bdyh6F^CqV6}kJ}s9>sbCmu|If`BOx~NMYj|LF`#=+ zp1RgNO&n6gFwNsgQE%xp8$If4Js|$sG9!pwqC<53|D=JV>$j&QP;#J9!yA~x0L4J3 zmKH-2)y#$Lvwwp@h+uXRsH(@+m0I6Z($b7*XLJquak4jaVW<^bAGX8n0?>a{1s^-< zQJ_#I@sDi*qSssCI#8B(^OGl9Wv*!l2ne9#&iTgpKEXeH3yc_J+>$Ult}-}IRU#3mFnITKr7~&^RVd00*pD2N_R2* zBcf{!P)Y%{;T3)}3zqzmiv+VG2NiPhup6BCk*_=0tU0L&r|cci1DOaB23OWcD=&bR zfSWcPs&)`nFlKl2has)1WJlXW$pT@@6bthf4-1%7lM>L0;Pn%vHU&*SYD0Tm_;sE9 zK)DRPiu-&{Q596x^O(>v8^aRvP{L{w+77)u?PimbSi(L8Yp+jF9OnIrKIBOL1c-Lu zK3|W?#CAxGom6Zyi6YjAmI%paD6 z1Ey)APK%k)#tLq4_!#hwCk-&qPNZVmVfmfB8?X#e$^KyCn5Mkr^j4whT`W=q-(=XU zLRq@dzWIH8b6P;!@S@*Npz$u_xbTBRIdFiHrKq2-GbD#M@CrwAkB)2Y*FWkMtv$E- zXm4=SG{X&)%jn0e1aO9n<6GJx>Bp*l#*=qp3R(!DzK>UE;DSj?Fq`xrNsjC22tf`d zMG;h&sNE!j62z_(Tk~)E)QI<>ny>r$Lko*ew$5Vn8_EovA*$^3B=O44AW~t5b`Sp? zJ?0a*JI+X^NLuvm3natG%6ljX1A50{XH_541W*`{ukH0-Uu%WnY8h&6(gUqP>ySB7 z<39>Vfn|heph_Vdp|{sPdx3?w-_LFiCEhAa`$J-M_;m#BTsZ&x_UWr`B zw`lJ0M&2-!#AltE%cUW;fpQOqSMqAbU=$;6wq$j@)kb*eN$`)EsU^mq=;X&Cy*6Tx zJ7P$6OZzTg+|YWV`chZU+|1}2ADgwPP8e3L!3P~`*?huWy2tAH;W%|ve9fx{!J+MZ zkvud+5MRs2Fgw>|DU5{@JEvk4E%194KgBB=$Fp>0@d(RSZoVX}$8tAYRM~J7-G9Xz zQr_P7sTPU5ca_nwLJk(2{QdirVfUUsl>`F3dIAdUfP;erhWny_Wfk84n>rra_k_wJ z-PX9ReFU->$TW~j@2;2`(vHY6*jZa=HJSRoi0ZMJ*>La7^eFrJ`^TV{jCTHT^Mcde zxWJJjqXrwn=T+{r8&`qxKs=h1nxQia6|qq^H;hES;H;kHLtucwEEE7V8H7oILtP0$ zfQ_CM#wZVkpe|4-RUwbIuOTN-P@@h?51Ia_qJVnkzS+UG;m>m9vwVEzstp@KIF1)I zS%Q2WMuXr1andkN9@&1UV%HOa2Sugx;UCUj^}KX+KV7dU zoY!yd?+mGIEew^wu@i+k#uoMILfVK`xlW1=w4k7tl2Ca_w-n)Rtjbi7xWOO+$`c9# z^B}1M2qX$@E?om?8Iq~D!?aTtex}`4?3@V0t+6_=GG+`|8jB&x9>*o%u(1>YZB{}W zd}jPjWx0c3jb?}lO4H@1rp7H11NiK92D`$_$E$DZ;ec1ZZCqz0D?x5PI7ID??yeWc zKGje0{VN3|GyGRYhwyU!LjZ;g+t+Q=!e|5d_%|g={O-SDX=_{PqE&=2{8KqV+3;3S z;@Y*)v9YmIUxk{<`b@!9hpYW#W6GznaZ6xLzT+Xj4UH{UR$*?=!e<-4f}W^6AR!P1 zj!LMEo;`bpw$%Z=Y631E>NWM87C=~NcY@7WDIRL9_*prvt|eB&`QmnfC-n3}McTD| z4M{r~%ISyEUNNH@iGl#?HA8IF2!;1L%pRsTe)S#!x;up~0nM=jM{Q+mOKpZdIh zz-`X6Ix2O;^<5m8o%@{IRJe{miV3=*J);_fkOAie(-QbTV2EHWpmhThUY>TC;&V6` zjFN@sOZF%Nh>8HusJ5*JUN01T)keGbvEd5uk6M+>LAJ9h-|Q2fdHFO_k{uuxpzx6$?<8~AWA^5%K{R@N1S%SF3P+Hr+5I98L_pg_Fd^nU*qGWZI4=@NE zP!#TMz$c(FsznMkxY67Ex7rNc*>Uxr7#L_eef!aiB)yda+WUJjhKooSaS`o(cW@_h zd^6&R=9oeCUg*vI`0=A46#GDE(?LHf78VfmpxJE|HZ-t++AgXtDvPf;+jDrt!EuG z7-0j)%%YEu~XFB@eGrD@SzI>HXxWbT`L<|eYje-D(T;ZIHa7IpcJ_51lxbq zsVwHnyno4!8#k^x&f?M#Dd>y5xnJWdn=?2po+s+7Ab0=b=XErNYqO=OSK5GbIQ{i& zXTlCgNV$B5h7S-mmp=%GW8P?R$9FUXBkuM1D&za3pLme_VPy3ZxuKzl1q$J2yGqkR zb{Ad6m#pCZ6?za9cxSQhNi^F_ICaqo{e98l5W;$QW*031%n2dk2gc= zqB-tso2gv`wk@yQQe-p44Tv64(un)p&OD^abR z!yF64hu>&!j%D8G;>w(@)p01jfFl$W&D*DY_HIgOU+b{HauwEI-Gv7GQAw8zX?1!{ zyK==(VkQMvk8^1g$4yGsJ7nSP)fUSQ3gL7i-5jM}AVAPcDwpy<@`qw14Ji9scrHDv z7J|Iw2x%MaYCw=iC|ZB5dve7k^%B?u_I!Q;Q7yrIdn~o1#k--wrg0e3;+Y_Q8k33~ z%Tuie(5h6(P2AVrEd$I@wxtP>y{Izv!QRHEU?XngB}7y(`@U5}XpX;UMZV~ zh&C4ol(NIW$S7!yW~&Ey;xIxGmaH zi|$u|zW=_u`kJ7p^%4pZ*VhG6nY@#?$QV?82!!ZXy^#jhw&P+Smh7&*){@wdX`5Rs7m-&8t^Xefm1XTRPEv~$_By+tUYjX`4KmwsRSD7zzhH` zx8SFTI}g^T>VT`schM3^v=JkYY(Ev*?hi&05HTUDKuFmD3QU9ZfFa^zsd6gcha#{` ztLOLwke6T%hCW}YupkYB(G!HQPgy^d0UP)U#5{p+tA8N~Pzv=(z0_~8V}Jq-8hh9L z#lOTx>Zfe&>iJH2bK~l7fCxc->Fi}ck+{L%fb)$qWVH?=4XaRC5w4mEdjm$kd`Y1T`zn|B^M-^*$hG|BLzd zU;#TU4_$=yfX#gg?<;hljN3Obp+2YS@B4BSL?B*5G6D7hBJM}n3nLO(8Pu&Kuc)X9 zGe{Z33D6t{>Ld_3UP3-DN$p-kG2Vy8fyR)P7T%&-Kdw}F9JoL3Gl6vA9KFB7F}bO2 zO$S=VgWX?~wfC!Fv<$c&-v#6i3`q6*^($9S!*Bsp0tXD53~Qsb009mZtbjCw0Bl0d z2?xYAh<`pNB?QXR&`!G-P!5VE9P(_M6(-$QK=#(Jy4=6dgyE+H-)9NhYdTd6i{GF4 z;q8ZnHIlG#q#P<2n0vB@JkT18n(Z_gC9g-IJ1seayfe0Si^h2uy}| z1Cq#xsg|&1MJTwbgMrxv`<6#6PlY{fWC1e}QWD6sL@^!OE&1#r`H|dV;BYXH7VNqX z^A`k^SxWO&*Fz!AmxQh7uGnG9R5{z{98o9&ZRe;>8TFkVt>5799R2Bvdd|ix?P0Y_ zOTP&bYVA>hx((d>bW^A?0O>G;JKB?VdTqRt91>6mX9nLJhi`PeSdt! zz`C$xib2_gs-K>kDq2Q~;8b@bmT+TnA4&J-@#S8^7TQ*hQyp7>yn4ZDW$XPA=W6rg z)H|A*z9=esB)B4kpzmLDh_}<30ml4Jqpe*WqH+NMyEe~o)ti};u2CYD z1pnh>?|&KVS*o`@y*=)LMQCZ5iI6cNWS%np_fb9X`>t=T&$6C)%I)0eT-R^d zzrFXhQtz<=-JOG+5hHG|OpxyGrKMRL_2#^MxfV*W&T|!XO5P~Q6^QJVb{^Rage1NHsi7eaJIRgWKEvuf3<*9~`e*~c{sKB~345f}G? zQT%G)pN}U-Oth<4u3TB$^5gu=BgV#ZPfpl7Dc;U$ja!cyH0fv1+R6e&VS0TK=%!9i zPQ`?IR`F5;M7orqSf!f9t^g;BUqWIfpam4}%apvg5;092zm}|`!0HoMa3@bw8A~a9msQJ-(0W1dY5UO*fu-YP-S@`XViHSF2W7o5> zi*4PivTxtM%qv<_=V%BT8X4E&gz4R>cyx$g0RaK#hCiZr+JJuIE2k5UDavb7VM~(b zNs7)0&OcyZbycvjEYTVOKpAS9Kvc(bV8xZfSNYM_3<5fR}(KJH{;X}M8coHZ>i z4L7A-HB9C2ht&GN52yRIt>QFT8KCieB>J4pvs-sI82Nqv{Mn2(^1~_H{>$7%DY(YnRv-$e-$=_v zGvdcEv|iZXEH!aS?v|MGJC}hIy`PEvml+}c{g zV_!fOqPBWqL-l^l_B(4H!P2J-n8b~@7RO(n7b4Yw&i!9b)<4wcn%{?sAt&4PghHGg z;m(P~M)B}z!A#uZ^l5Zi8>FQ!$`&D*z1aNG+E4==B=#P>=z`-BDld?Z%U)0B|Uz{!n=n|q(GZlr7f zAgP}L#^yTF8-_9TS&2T=L5sczC8U<5$Oa zmz0#e5fc;a>+9>CzZ>L9CO^3~MT1f?j|QZLSwPSlG&;aj(ksd1OQJTC$cNP@ru zkEGZC7jt$3-^R_lapOku@b+p=%<#`-yOm~UmY9Lj8{YV0khSVCC+COv?+a|XHLBrU zYhzP>!{N{&X0RcI7ntyBn>TM(^ztg420ZcRvSTy`KddmB5Hg{iSePY-{!fz11qST8 zQs)LZ7@d>N_UfvtbfiASW6;Kwaq>p*4!v{^h+OuHZrL)TusEiW3tLuSgq)M(0n1_A zi_TZ$;KA2q^lIoApZ<2DV&P)5+4gp9K(y`@3M#5(M0=z$yiG)GZyix00DG2!_uo`iktbDT+|CzgLy#vwYVVdPZYRGm z{tBigNkAE4Z3J``)bEp0R54g9N%x&rJTuWPOab5($o~x+S=;v8L8Qw98xA4 zNr<+;GnC@!KbKc?wPQ$2qBL7~G z>FuORFzy3Mk*-Ko4JL5=PE;Xc16}V7ScaO0ft9tgUf*=vg6)Ysr#`Mc2e|PtfEcTW z1&hZPke9dTbA3IDlbK&YxhQ)6!iAe*VZLwPXfXJCqq0UlMY8KKAizzeP$1(+!I{$> z($R5p#91w84zA?dAR5hEoY&k_k@3(mSpD_VD9f;#szS^q6jO~$LdgC73=LY3p zPNtKK{F}6Jq~=OKKJgcfn}md}j$sL4nG+fs8j2nsvRLG0m)WI||H1z2DlJ7OLU|w@ zzMrWNef7wTuSqmz3lv8KgQmMoU!Yh)`_f6;xFNTayiIT!aZ|utQf8yIfM&zrpK-;C z8&OeLu*%F>qO89Km>vV5aTY+t;f9)c4!P9OE)U# z3Cv^eRdTU#Y(0Wg!DN$70h_}$vS$H_nk;vIeaj~k37+C3gXfxaU&(}8-Aj$`n%=L3 z?c=23v15LCO1MhQa+6b1HV6sPVQZf}c@kATX$*(*28*4a-h*QWL1!Vkw#6=I+Rfq- z(zKwE(1tBr7#TUYV#mtk!90EX^hR{_iZq?y0j*p926TZ${!{$7$%@BH6dMx#IlFz4 zoV4sQ9UcF=I&BqfTK5N1R~iQ=m&aT=C*7Re18x-+Rp*TxY_BUSuG?_OJqVBy5(?;W z&PyidN_dIz7bRv4uC0xYo25rYA~j(%J>t^L9U|QBM&9qUHS(rOnV6)|lbl^v(?Y;Tw%?qQBtT3VWUY2vKJ_Z*A2t26||aC@J+fVkY^+7$w@$rX4%=?$_x z=R*EBJYWr{Gz^Lk8z~f=nOL}kY*K)~Aa6TZ zjsQ?-n#vW1=)#a=$(#-{<#mkNyAWX>q@^ig*-^-1a`*1t2t@4SUSm1)aDf7ulHxt& zyAgZgPfy67+08|PQ0L|?;?`v(K6Xw{fxUZq;06x=0z~cnBlcuaS^B88ef=lI)b>Dy zwp7+9CQ?U6Mv|O;JiHZ*jO7Y9xVX5K({$+FA2{71v-Z!Q(c8DmPQJueIDGhU@d9$F zLB~mu+L7hobdU1KiWo14fWW|zFxkz!x!;aTL1*DHk#1UUy7*h4)L}FhdJ?m_=SYp_K+|)^c(30gh6hvo z;3mFQbK;Z@$H6M>MAAi_lvj`f)5Yn~#Wl%CKd@j;O@n7Vyf8a-s^N(-@I>5l6&RMo zN|hF~T^Qbu@m97an;IL30P6{)GV?2;pczM?LTui!b0k1msbtd0CXlaF#CWC z3T-o{AozC}DpADlKb=&Edwqb zbul^XhiQ{h%>}$1Y#ILbRr&`;wado%gKg+-5-g z+<;g=(D8`_4lRL$C8TLQtV_r;8fNr}Jw_L*cWNM$Pi`0ILD3hgumAwP(Z|s4B^_FC zSqOBgDCBU@u5jiIrFivWS%^kl`EM)7t|nh5HZ}wtJhFs(@ZbTPLg)|xPZE@Y`8-Jk zIMl@NvHJp%|BW2Cxcq9lO3qr4Ize$&f+_HmqJ>L zZGC;cc}xZ*tuV&NRbbLgHV1ws{3Zp$aOwzuyIodxYb*09r{rQS^}xpwdpN#VrodnG65Wf)f{H43PdWMcxDN3Cpr zBNwe2zQ)rcQRRVw*Nuw-I%zsx`$`ws9F2@xa!+I9D(yLzXM~w2M0U#!F9XHBrglp4 zl3G@h20+OsC6iaq>A15NsoZb-FG2qBDPZPXiTeie(w}SozPA}!{_UF!RBX2bD zG~kTb!UDT@uSIHxAPN6o75Fp8xRk(iQwuNJYVo?ro5&KJVn%^bfOBJbOYRaP?q7Yh z($nit)3wt0Ao}%W;DHo<7p6q$oynvP5gio;0f2Z@U9Dyw9R~Xey+kmVIA>Wv0p;uuVCrNgg`~d$At0gFR4nS$VAFF< z3iNNN?{*&qL=8US`im<+Jw06oBp`$&X9EUft?Lzw&1y>}(GY+MdPIf^GlCVQDjO9P z6wKlgbx1Zb{<;M0S4XUOvR_0~3{2(i+qXy3bkLU}y!%4ihL#^RC+NPL2YIIoX$l!n zph-P)zPTL{AxIxEzo7%ej$Wrdo7saB zLShLqRd#SE#lU#QR>hdk|i|OQv`B_$+KknReUY5%*G zDSwOqquWDR81!{?5&-J(EB-Bmr1#cwbdNn_%K=)Lle5c=AiQsHdp)iSPH35x6vSQN zkkV}peYVO1p7ce`&CXw!9=_9qk+tivq24UiTt-A6ZF z?eWY@`r(dv|?yYDxS&V7*LBFw{HhNeJV+!y?})M!40kIE=B1;Q(B~}tBVd4 zKt$m6>zCm?^oKM=b&z+CnUP>rMi23$CO#A?hYZv}Zm`ZvTp7vwa_OUY9sQpmeI~q* z*1zG=2|qM*fNHG1!0^EvLl3x{pztCsT)%!@oB6(|1(@2IY`OtJ?wy^T6^BMfMo?2J z@7q`E-+x;2#ElQP&oIVROP|cnRPZKjB=5YwY(g>jo3J=nh7K!gfSL`fMa$XkG+6zJq&{v|zo#*Rt*>C>l4 zKyGroWe8xHq(_fzOSfmn8;Mmu&S?#ToMU3ubz7Icm~P)9ww{nYxu)^3SQOdQpofJs zUzCFr*N2g=%8^$0p^jHmtz{S-0bV|0WONO*@{`aFk?S8N%WAd-ITV42$QW9a*?3xB z!A+J|;gebkT*D?N zD!R|nQG%4v!GM&!(;uLUGS_J2TL&o%f)DqunVi1&srQ z0El7k?!G`z_M2d$k@8=dpCl9(@@l0XTW1M`3GJqYeQSaDRj$V$bpY0rCrm+LOVJLAS>hg6 z`}a$6hcvdTN2R`vzC0fa9V85+Gjd-6%q==o@q&4lZ^xgA&?_Uy%Zd=QhHY}$W!R+z zIDoFQXhHvTJtK$oioSY%h5H4gf&lwQH}*MNjG>}wnj6If*>+)@a&<=h!{Y-tPp@HE0?neU{vxX)G^N;}qLHGF z%0hVpUkNm+Wu@T(SM&4osGH1v-YUO77H}0b*PemLAFa(76o0GuoLqbg_K*Yv7$vV? zbX=t_+Y`$Ih!c;V%fbWi5e+4v#jg9X8zS=-1yD3rqVQdS8f(2ak+#8;9$SSO*n=MJ`8%-CQ zYR7&^j!@O%zvLDrJ*!EcnnUfrOsIFsqZG*@Ii(n{d77N0^?a-8KHq^$Ac<3( zt*q?215skCnuO+x-?OtvfvjMeQBYfiUycV;`EManpRRuji1Bd%K^%PCoBoB3JnFyT zjMHv#2g&4p(a2OaYe&ff`da(g4cg)1h4(WM$_PuXkap(3p8rSuy>Bxw!y3v`sCo=2`7vg6$=h zf8+(AnE|xwtCwC5Q4=>0!Ly0UXBOi}a8r@~Iv=J#DaC;SnO3!ljH5eZ{^h{HAA*15 zw3y{7no_b&;%A_u>L8sV5V zb{;Hi(dt6cpX_rIjd1u|b~dYHX*xtW{bjV4XyDmauilX~0?-I9GwpCS===b+>XmUV*6#j^iOnR zjQtved^x*Vl(<#h)a|ow7vXsm5f#-1m$wqq`sB{R%V_7Bn3+TJb1M%c@~Wx=Z9h5j zv!3J=qv$&`cOmM(dnji3uNT=5J`5C|YuMNbdT;D1djG3W6cP5NV-7K0X|jDWriDgt z&1^a?6fKdOJG;NLhX0O-v+0i4yMw>lzVJ>MZXC`;%|;MKWT3q(wS6GI!Agpaw&Oww z_>9Z^1Lmts;TZw4B7M7!`k|%5;goV2DiN;nSNFc2c2aC?d-|}}>NQcb6ILSIw6(Rx z8vET|wbsl#dq|-3B8e{S-pn+%vcA*`XIUn4ow8iF`*-gsqys!(RO*;IdjS`u!$yEBAD>l_?VTEnxK)x1LznzLY4e>H>mM z_V=AJS6M(5OO1p5;-o#AtYdaV=U={7Ec#~06=OX+JBtAj940^k*wMFuAloIzv~~*` z2ZZp|PmaOJVagZ|H;rcp_;QTI;`OqJAOU1R6&Yh+I1{#P5$s=}E&kz~4u7yBAV&K! zhHjVSa@c$!9+3`8IN_mi>eUdPk&}{BR>-w$U<#UjeR`TCl&u@+_}5I=zW*C`ReDfu zE~E8_HyaC(^_j7rQ`ONsH;afUSzGtfoom{dxCP8?b@+WD)?%4(Y#$=zUEJ{fU9Fzn zQ{@#E0+?uIWo32!Aaq6R{X_AkdG9r`SY%l2ep=egkd|Z9f&c>l+iO5^9Nm@JP~kH` z=LL(oky<{sDe(gb58iz$@u~ZKiItSr8ct}!Fn^(VoV$xEnrcJGqeojU&YTh0xRC}E zY_55^#9&J#M?TN-n`@Rll3)VbSsqN3dpn@kjL__Uc6|!KA*W%EohnAYahHCIfb=&Q zwlk+`&;=OGz0_3of{*3{a|oMADH2kRtXIme^BV3NnA{+SQ*Y!KEPvVx z-DC*79;A5u!74l;Jk7%Gj>l!pbw*IBVY;CX-=X4wjY;v9uU{Jx!+T9-=Z4Fs-yZfl z-+JU(JU;_|fW(RHay#fr`WIH>YP)98=1_ZgK!5V`hO%(<3v?@>p(!+${f7YFIr#?@ z4;0=7*Ag7ygn>H=)0%&3?KO1d;^5ezpb(!UDV!K=?%=SUpI>&5qO7zEF%XZ9!s1K~>U(t3(wXweYkY@=+~F5mpVqM?N~qV`rce7 z!PFRQ;`p`QvU!Th^(5b9sl-6c#XP|^4h+3(+0A%{OTP?Ver#{i(*L$w@j1&`jW824PCHD<$T-}x36GWBt(bcARnohwtEoZa^Rclp5Wx&oovUM{ z^3}#>b&S#}bMx2I9auk(@|bdBsEzer^nGacAycrrfNC8<`G=mJ6>4v!#o~v$MEYxb z5)0VJMvJV2Mh6(bVGGbKWwEF((()3@tW;;m2nbe5+bh)mY?bMu?U?>$9`_8XKYxc- z37eV{V?d5gZfo4W`qJuVKi-8zoZASy~g$zXSrw(xn%C||K z$lewk|IIG`>FGwZ?QrovY4P1C`~i}_q!h{j0YXETAgruODJiP9?7W^vAiSWUl-LeS zX6mM3^&G~YA3w+oIc~o?1XF%;bcgb48G3!dp#&ewZ*qPLt7d+TfLP_mKl;zE@bxAQ zw9C0nRWvo<`8SjQzL}VoTbH(nB~7LH={mYw)nojdPWaws7kL^k^hP5>v0`82frsfe z!N2ubKRnBGykG8jOjum>EG78dnuoVFTE^<#vpi090nx&OD0Rjz zSn^&($dY6_81=zSe7H=U>Uq59w{NqXhkIlH7ERa!)#v_xT^rElk`Ld8O_%+^^a)0S z$U0Zk#&4vpEor^kH_++{_quidV9s5~2`|gA+*l{$9XiU+ zay|Tzx8Wv3?!=3|BOpq9Jn7Qa*YAS;=MJ(D`~CaUTo19Z=@)=4$7VSKJuZ2EuJ~tb zwnOoIn1^$HELo~n4BbBQ1B!a6`8hxslQR8_C=G~KQe*D zN)$3A6Glr*4Rt8GoDB@r2p=GTn`M6m9mMGvquz>S1K--bv{ zzlj${()bBXdN(n(A6CI{KqM#4??ECGruQ|Siz1F3cQ0r(94z$-w_|GbEV`vz$?!(& z7WQ_~xXN+_R(yt;3w^9uaikLd^TzLY6wFPqTsrw{G%=~t?~9iBRyp3=k4&VVxjEb~ zXI73`Ru&)W)04VC(=LmtpQ~#4yP?TeOFpsp>^GdQ&+wwN5T|>V7d*I97_A%$$pVv8dO3@tZRj#ni?`RW)GEss(V^ zm!oR~lrOQa0L>pV$1=C?Dk|B>P`vF^RxYQn>*HR#_Ku4yq$nNWp>>Ycmgp(mIVk;@ zv$Hm&e8KvODQzP7H#hIxxeB)hksKa`47616Tm2uNG#HYks;@EIk`>(oO{=LA8%X*X zhXw{Pa+xDXpjN|f2dx1BGf7oLe}Sp-5je`=Kru%GC%<4~Ce0oiiz&FJ)wC=OgQW(y zZ*QM%#l@BEDjXr0$$k>;4L!xeS}@l#iAkYx6?GJkmF-kQVZGmu$9A7{e*aLA@AiFJ z6-RI`tj1;)J!r3y?mpk@=T4tU-hmf#_467=sm{1c_J;o%G_J? zDt^VtJ;$;(4A z_d#(afad1S#!Ujz%|Msn%nU2|Ym@PIJ4PC}XO)|SyvBR6AT9bTYM)f2488OX;nfSK z7Xq$aAqkhD^BlA5fwb}4w{0(2LOrF{Frg^%gXF!cd)3rfkvixNC~f^A>tC8#k#l!$ zf`?}WL@#IvONme0!4&$#QTWSRA#q_ao-iQ*vCwjE=lPc;tCZ3J3>=mu9 z+t7)jh$6=(*yXrt5|986>R1`Ee*^uIjM#SlXD+E+=e`xDef#0_vWn~c`t_I2^^McY z4&@N>i)s!FnKo8|;#-+0M^92GuTm74E-j<52`np(D7Cn9N7AfiM|-)&#t~PKbFV1v z>!>cvGyY_0e6?m~pwjnoTh4p=fq*VqH=~zKt1l;AI3{TBu;-`{zl56acURNqr+dzf zj{U1b1O%e1&Mca0{+Vh7C6Y&C5@Tn`MvwxF?9jvVGqiXxWGhNm;UG*|!C6l!7v&_d zWF=ml6B2p)e)Vfu%K;U|lj@Y3d`Upef&Hdj{Pb$H0i6%m5REQrMF0#8Ky3iicZIuz)+PW9 zM-2>u(9xlGH^bbNywfWW;Yh0>s&{vy?e=2jmtc}r-UIFf zE4M4@iGcYra$j7%6O)s=__fB1b6~?kLyHIAZ;tS9_&v&GNz%#xeAIsbi)AP777`Gk z#*7L4HyR4^ypFzpFmov>vVc7=+RjY#@)cQ1t|)86rKdnrY?1urVqVloAA|?bM6XxSr|>7y^$*jy5RK6whULIpC2@E*d1ebaBuBO<4=5$QlU#8iByNQdm<9&6Y$jke zW8wSBc?bxs@D*RR8Hb^OLive>Bb0?5?xS$f)N*aPLmLG0HVD($2t~by0xOuARY4j7 zG+&ed7(8zx)7o|XDLglUno?0fi2|7nspcL|X$2wIK?cgq*QemFASfsZb4i59^>|w5 zW{r!tZ{4E5Gf=l+F!t%NLOH2G0CxbA23j1mzEv;7#B+b8;{Uu)DUQDlNbggD@VDeC z>g2ovCM?7h6$Ph{{h9x~CJEhqi_?`DEo=r$A2lElHW1e?y)G}Oa~ntX*gRAA8YP~Z zPbUb0XlxJKNXAr?tdHt5tE1ci@Kv&dfZV!2MVn4G^!jx*CnqUz{m+b>Oe?=d5IJVo z(A>O5nmGr8h@>QCTOI-vJc?DK5r{lWd9|LMH^GAo9s@G1ipxd`v}DH$p3f_@4CViIBaZ!RAx_s2!Q=VF zuRKNyRu>v*k<0$^o|7klK>xw)NH94$*}`Bj5I-KTuA)MVKzbuAOfqSH(^=uTM_K$u=?9H`vT+K;!m|(di4`4xO;tg&0(S?*9mLO6tyu81 z2zL~96pZ|XD#J8WFd9%cGFk_Q68R4Ql0h(1fQSaQAXfCAp2So* zSb#uygmMBA9Jn4n_>sslKmq85nP!~RI*d+1xSM938?aO;BM*8`jk~l0yqQn4%ShtO z-;X@Sf1zoM2^a(*T;P*p2D}e|zj-j4GX+vZjTr~#(EFH{XJ8tQGo;@nZ6c5q3vu8& z*m@rKP96NLCVS#o7UB=)G{w?Laa4y2y%y*@)0zS|*=z+f5lJ3yZG0DvK%@jMWr@Xp z4bwRsVZaF##Qb(+n_5d_qfFP-X~+vmYKVzz2c41o;PdHfdoP+0wH;ku{{kxh^dxxy zwYMQ8@2j)ZoSlp76eLEdDZyV+{sZrfkUGw#@Wab{o#Y?q=B~jMQB_ry0Vx0EFrK^E zL-8hUrh~kqaa)h$2(gNDJ8sr)=t%P|2WJEvr~2G;2tp)ekBdd82V|`aUA-%TnNzAK zIgWeCZig8Dh$j&2!0zP945{kozGwt+ zniB=cW=JD9N=lxu=&}A|!Rz(JQ&cPO;IyKv6dMO)FDLbeldFgJcG9*IYh?_X1qEps zgMA7(iir+Z@A?>@)f|fM$J*uB&L~c57dx!8lJT;8$xq=a>~tTb}NLATpIh_{GQW}>&T3Ld&Xjy`;gslg&hiCp6L59=gcmw|8FZ6@-N)_ z^Nkffq8C0%pBaib7TM|3Da4vpr1LkhgFobfoi<+6|J_Ut^KTNM7 zH{Inc?w2l6$L-p+t7dv9NqVz+@{%6*N$;LbiHP1fS=>?joRwKXUb9&Ih3HDYZAykY z%NFOOR^GLqXzwvSW?scTbFFfxaXFpjwOpgdOi#AHv&8bagEtaR)7FBRj7mj!-hA)4%);sU8k210B)+3sQnf?6R zhFZL6uCvC+nOs|nFE;!xeOcql^xklw*))g2 zb&;dJI@O1`M7-hh=Adoclg1PnM6+)rb>*H;+V2|*X9_q9D~BQ|_d1GM39ek@W7~!& zFI?EfW_ylmPqkvbomqL*8LxE!IwtcAr;@){Fz%B7FBX{pYd)N){{JH1pTI}_jeHCX zigehI#*&CFs6!R(4~!tq2SI?Z)qfi+8r1+0P?F7sa}oD!HF(y0A>;s?xA?XwC5{dJ z(%Qw}csM%qGH!_s7iX-??XKN0r^YT0DKC} zGIF|9m+=y95B>f5LWG4GigjbW893O&DIOCF)D8NB^t`WDH|Ej0{#G_y&}$hhO$NX5R`H9fe@*1N&o&LjJTHhsb(v0}Jtwy4q3Ws$0Ph<;&o-Cuke zdB90Y!&i>7bXyav5EjU=x-j3ixSr(cg6%|Nxuop?>A{TJG86C~==&Yy*c2s62#o6w zyUw1+&##C>&f4Dq7ax*7A-D>6j{&8}lp_jZ!U;+n@+1k^bg^-8>`ZFVJ*eG197_z- z`I|QFluYXS;D0`>B}-VZILH3T!Gh5Xdun?tG8Uvgl&(8}4L>{@C;p8xH%w>RJ6XAF zrs*P8`*>>Mi`J}@%^9|QMOy_wH?R#fG<5I%vgqdGvBp*M^6KKfMchS3dsMwWtEMO! zgyp5mc;;lT1e?=6_8uDslH9$295bDB{Z}zKm7h{x64GZasaIv|elU&-X1#d7Ezp$wZ z(44(oFx^$S@~-5igijg{HEO#B_NCgLm2+we>E5kvVg12b>+XAKuYs9e54Gno)7Sha(t@a+sCfuF5GdmB2^QGsn zZ*-(_7&`1D)Gyq6rm@34wo%2@Y}!I-I6Q-LUCFGbzmRRXY1^^TmuGYA-!HhubhqT` z5)IV%cPRFsXd6p^=lwvY&EtUF@LTs{#n22N*Y2G?lQ#C$3sb7?TUe=Iu(S_}Q$18M zD;q34V{yUHzU4gKa7qUC&4(9eqj|hTU8r{vTrx*HY}B=?sopL08Fh_V9I8%<( z^0n&Lwz5#K@r@n;8cBIC8Cja)!xI+ZL%7oyOy{)i#?Y#54M*>*#l@zPiA{sK7yPKx z$5L{Csr$JOFsJ5v%`&pAd2BL}D@QBQL0!1Wb0zl);Gw;I*&B_wm3-sro}OsCoHcDo z1F%PH4@(r!^xL8J4*3#;T?conWi$kb(P>i@opKR^s2ZN!=y(~c% z2-WiFU)%On|J{|NbHxt8m16NNIp|S39uh?ZqsfOPW`W`3ShOPLuXy!Wm6#9p6SXH@odv{DA|nhK}#=E54ua6I(R7-X_6v?uGq4u`0LE%am=8 zr+j8VhuH%KhnT)=-ND!XBW;N7{a2q=Q~UDsD=6^6T%7b|pvIU5Fat?&0u4t7$~N$W zS&(q>*>b*W+cbQb>`AQvZ_T>AS0LWiu1l)58lG)iUHztexP%ubvt2ySg|9nZWwH75{*mCvngD2l#eVS4 z!WTz=i~DV!k5aO-8!996<8!IM#1F|F3(0czVcIQHs5tyw|Lu_%V745gI`A}^D&yW& zj!em+mZ$mSLEabAE{Rb)i>q}0oT;;pZ#XR?R5@j}bA~s(hwAVzDyLxYTRVy;ZM>Id zOwb+QRA*1~Ys={Kxijns7xq}Y6<>^JGIE$XYz{a)(p?ew7D&25>&*TxLM_pk8VS(%@0o$3=a<#zG&~}@!a-?!+!S5<09r< zuXKBpCzOQ=4zo&|;ve>uWv$drF+P0r3T;m_WP2HTStn**ERK2>Hmn^O3y3k5VVNr| z;d}aiMH2(qN ztt)8RQUd%lE!x6Qco9aDY$s>~S_EbJdfwl8|7zD%p`H94noR|+sWXnmvPq5ZE7wM| z1&!x-Brz3?*8ixC)x0$n&P7@J7`#5;%t}Rmd3yuSGQ`BG9=_>9`!O17$~@@@*+4{W z>|?MKb%4hN1qErVsa*!R(0%^p_wz5=SFJKXe~ChAx&klqhj5aTel>dFp)Z2JhoLX?2*AlkHda# zKlSKoi$i8@X?J@p)*k-u8f%lDGSmOj>{OXQ-x|~4&tt@+RA%MiodGX6L z<)xiF zug;ctIW=}_fFk)>VHT^ATHrSRkM(3)^(ArT^0ut` z5VvH5vO3%7i^T0cDu&Opi#J!v-{5%UZ&l^EYMto~3kSFx3(y~%Xl!q zRX;z=lE@!vd470oP&!}gmtB&~@2J`2Dbt(xL!%b53|EBOc?~4DY3jv{*KJf2nZ6Tx z-E_qZkDC2oH+0lBid5Pi{we%zVOifx>$-`l_4$jX2m3w=RlII1Q3zX=&z;h0|KsVp z=L^@{Pt}}KkUiPdJRP#WZMv{euF+LKvuAqhsDo?MD8bCCQMeBjwxhoD0y@x(K` zeD$#L;KCQdsErMn};QcTYA%jR`mp9ro>R?W<47fB0;Wkf-|^(luH* z&U+#DT~m0Jv-(7KmCJN$RqFXT`zlvq&-mH1W3tS3mQ^96_MddVHN@F^9n>ip|LDiIlWVe5g2f`^@@E^(`|mDG z<{+YeEvAo`#e|wp%7qUoRqWgoOLWeMJ=-zV=(#geU4CJBr}e<$khkwYaq+pyzJL;J z(zKAcbxe-_&m9|N2{0qSvQkHDkKt;HWxS^z5CPF`+v-6K--+{ARNyOk7&cO&Vg>59U<8`jmdh{&RniKHV0<-Zv75o;Up5 zQ?!tmsN{H)Q*Osj6~4vY`*fYXUQIgsY3Cn5ovm5q{#=VWZezTAW=lrEqV>W>zwmmi zqCwfVTO(E`Z8wR~q|&Vq?QOjx+S=xB4~3-~&sH8xYd_GJ=bpmIa+slYE=@<uvxfNbv7-_z~xmQP;F2o*vXQ%CQ zdSA)lObRyJ3d6&ZP z7X2qW7)^qIJOQ*>R7y$*!hz3$D>nkq*%Vck0?lcI!3*0vAcj<5XQ34DPA@qXppfj-rY0WdeTx#MS|KqPe>L1LeKkH3Wt9CC^+BKi1wpz?ZBh14qNykXf zx$|jvPHa!Jq?hscV^^%Y)=X(-$j_H1t>7(lsdrNkjY)9}eX>9MC~9Gp(R#rNv9`HOeR9ULj&IZc=epGjJ$?b& zQ(kH-btPBiIM-KvZcq9)?Cn&Rk^E|JN<2%Lw3mm4>8IT`>7lm4zszKZ9C%KDzyI_s z;p{fnb^XIs!5yLHBV+*0N}un_So|jdg=? z+SAW(a)|= z);Y29)u@u+7u)osI=5BF2#$xn4#9fo;&$kvh~TH}S5eZL>xJ87Yx$CALD8^@@pL#s_$#l`#>Vl0b8^t2*3SQr{Y_t1#npHRb*dx^) zcC1IwswW@2H9e}1*R+?nIrwQ?i_oE$ z8kz&5CmyM7$SrfLW3)*&;o7-a@J1#n!o5Z#t%o8aw*TFUv+TsN_~W8q{gSKWHSCMb z*6ABic@5-*VJ)(OZEY6<$s?@i@r@7Hf;Ixt0xtg6XG7Pq+uJI3)Vbex3Ui!>J+*cAKeR5tEDh21fjzqxZ+ZZ>xK-wM+i-i;V%DMf34T z_2R}2`<`B{8!h5aX*ax295`hczOZ0uJ!543@pPSf22cFhyHna<#FKrEE9CbZOsgk- zH}cXj`0blD7?PS2*mi&`d2NQ@zGTbP{c9D%3R?u{FQ$+8@`RNOa18AbUUQ&MeNn3L z{vG`T$1F8=M%K+{tSN8L+}w9>Ms2z4Qe7i-BDowL9|E(yF6;{B>f^YjN$IoB{d0_X|7FpWjti>uPCT$Krbq%EL}+X;BQQkFdGC zG|KBu47RvuL7^1yC&M{7n7_ZLIfUd64^&&q9RH<%Fjw_@S=8poqg$j)1&T}`p4)!E z@7LC0krX0Zcjdjxg&EHWEg6gJ$3-3o>)tDAo3EJ)kL^)e8zXf|FtnjCt0+Nr4Qi-!&;NeoKMj1L$m4I~ikD>r^+J?!~p>rUYbFVh`%JA?-o zx@@ec^pZX{OTC)biQtpGKM@x{IX|?h^YpG=Yig=y)eot~!m8OLzq_rBFZHGTM!YRF zJ@eJe#!Ul|toHw{mPTji&r~kM zi(K!vj<{9Gf6hRtUPqHy3~_R>@2{?l9{rmUbtb`t1A9|Vp)1yS(A?~Ds6de8uQMdiBl;>}!uY)cVLv0F2*m!rIjo9NdU_~}R z|30h?|Gm(j{BKXdK}$(ZwRuNGh=e7>y+ct+2KPJrOm$dI54c*|W|uOny6YgPfo|YX z;nD^Cc_FJ;e_!Sx9B>|iWRAXTe;5d1&#gb*SKL2ctInr;;=~<{#3F$9ZDznJ1}FwT zFFmNgm-6uv9z6N=vlTaqn>WwDG{Wa4441nnE=9)2^KE7*8hy7V8Ykopxa8wnsJq*b zCaLxLGKy{AEC2U3@W<`Te{On$?$fWfnuibTU%Hfc|KJ^g{i5KbutPkZW8yV)`hQ0W zZai$*(!9O+KQBU1w)y>inQ9Qt{(E+qo8cJ4Qwf5yxUZ47Ziz}tYAau6I*R3YS1VQR z`nog>`<5Qt-`6Vss`RJr`FKWEMFl6E0`Bem->uIafMKiO<9+1C!qeg4O5WY)lk*6d z!Lu$Nc#UF@)61&0{=As?4)4F$^bM5$|NYjQa_r+#V$le7V3H5(Go}6e_hbM1gbhPq z#<6al?dWd8+s0I| zjP!PT=^3}wJh8i~mz~tXbGCop;8lHk=q~s1C(Vg1gU-HRbS_)kNm(* zD0mf+T7&G>e}Y20``;^*Nd*Mm8+JgfRw&A7RpTTqkwo_HHMGkygiS#fFFMi*ZV-#L4B3kO&Ck&Lkc&HbYf z^etm9IluVntEDGYNf<_~vC-X5wA|%b_HM4p^yjBmWv{`eo=?|bnG9}y)?4MtIoR63 zAKH)_5obK%cYsJfF=k(TV}tVh>r8jo&lZOLkl(DUZw2>xgG@7@0hfih3`@5-VOuub zr@e;OE`6t-_UO@P$jTy6GhwRT{r&rcXU}vnZ}~~I6%klu9@7p>O)wYb<7JE{Z9uJS zDsaojNHHyT@96Uj>V+O_dPZmenKPWk#>(>g~z=NOMa<}6oH7nK$^z!85z!H17jYQ6p0n3aS~FY7$ecoe0E z=D~wHaH-~4zuvPmVH^JuhF{J%Kfk<^cEW+>Ysak>MPY*9JjSY{VOeP_9rO0ypDpM> zzZ3+K|Jq4+qXwMDNVD2sKf~lPERQhQ7TLHl>BN2+Y3VNmxv0kP7Z#eNq@*Cu9<#Pi zYjy2nhQc8YVx5Oip6H?P0t-zCoA=>EQ6OV!iHZA=@=ZiD8a5WSWjw80wO?CV`PIX8 z8$kePJI`9#%Kmbe!fM|a@`zx3qLi@odI%;)1S5QPi z(tt(%25j)yd3m2;Hchu|*|LQTAIJl;RMpkD$jTal^$`>jq6=$pb93{9;?r?Y6gRBd zUIJIgBn<11(f?`2trY%d4hLayOpv|gwktIfgDy6Zz5ES|5q>bzuTMS9cj7~2TOSKW zCLQlf>Rgl5D>%Xb#_30o;02YTn!(4%mjO@UeNg<$r8k@?aLp1vcsl{ZhZ7fiK17yv z$fP&eEC(O5>A6kRR|$iFckeX6A^-j^Vf7;a)z<-;!MJaB4e-GvRM#$nRg?tJdw)V= z@ziqad3@V^RCnH*m2nWL2Qh3c6B@cJpYfH|DJzB3VA!4 zo{1b`S%8#x9HT*f;A1Flea>fo>eE45`|3zVdEEF=H(knW&K2^ppLl6)1A}Oh-3CwD zw(gJFW&h>2#3^*zsie=u9>@+2zURrfL%0jF&@;0V>O;4;mkh}K`OS)ks(&&SWd{c* z!TD~`W!ZfOoC;$CDg`8)XQh=~KPD*Q@k{I#qZC_s6`9t^P2Kf^aa3QEO-6m&!sIS6 zPGfGRrZAR-jZZX~+PuFl0ZqrJAdW4caVQOEzVwH!@inPriMDyOM!MePuyS*Wy{rDd zZ@r^`l7GU^G#K?0$SBl89k4b!4j;3KvW_D~Uh~we{nbObQy9f^i^;{$Nv>=VnRFqP ztcBO&6L_Y49MHJW?kkj*oc#X?dk=Uj`|y9<(|j8A6e>cCtWYvSMoIR_-ZR^=j~Ta? zp2$c>R<>gud(S2z>)4xYLYX1_t~*CP-|z4Ld;PsU&#QEtbKjr)^SQ?Ry58^WHt0DN z6k2u11B=Gu!@tMb+&rSFV47-2zIp4YQ(1eKo^amC&S#TgsCM8W63sG*dEV?BjzXen zFkRU&%0?bM>4QV>K;{6H2GMvJZhq)8V9ifKR1yaP=p;PWR;bikIMGXv!=p}x6Z!Iz zEP;?D&5dl`_d6?G`SIFN87njMUC4zm$-mBkN!AgxX!HnQW-~rtO&E9n%oz43azZ#S z-L~#4zN&Cy3+8EOK@%jbt>qi9ztD^u@|quCeB0wh52BGqWfr8{=AdRe-JOSnzLKWL zKi)rl^r*nBv7`7)+s6 zDi}fWE0}X2&6z9%y3+?Q{mlU<^_t0NGaj+xRQf)!MRj~6`teZro`l^WQZv#5#}GnW z1E)kDkm{3$#%F3?>!|AIR0$wj#l+9w^Hu$aH=wO>uIgu<7FVHGj(!atHQb5mNG4LC z*BcM#4VH=zfdIa?_AU(L*@>9r;O_aN<@{*)f^Jcg2n0mGCSsn1ecMVe5V8{DbcKOD-hcFdd&m+koZB18O{{8MeLOMr@-^n{EjK! zWVC5SOVm8=0l+XdgsjlU2!&6ZRQVVo6LEevJoc9DOJLT>zP_OWf^4B^;?WP%hwyKV z5T?TBk$L;}t!9Bm$mNs1-7j{Zi1(qlzw%#_p*A$e9{u!!n$P~8elNsc%W$^LfmFN> zjB@CSx(xXq1iRd2L2-XKhI55`FPA0=S}q6bU{aEe5QdeLp+HuT_NkCkL@f&AY> zJX$~@&43PP>1EGZ5VO(a%D5Lj3OG&;HKE4U3q@!aGt7izS zr|eQyS7$2f#e+JdF_@_DUp}Vc@hWg)*H>oGF#UZDmK5@JbQ$t2A^1YiAe@6G5T3GF znrwlEH|+zXI88|MMb+_UyYs}4oMKltGfU~t>8U`$=-l2}x6v1f_-Fr}B%UPSa(8R6 zHI95YgJAT*L!h;E{0?KC!7SBHIl?!~#fzdhZ{9Q!Kj1ZwfeLoSb-Vad=lM)naU~d) z!!1Bq?FhZJk9Q4(iXA~6G!@to0De<#A0N96AXYo%4@9qw{Bg_fs>H$>t-!1F2cUpyMI_C&!lz&l?(#t4P=MgVsAb|3$2iOzR7`hY4kFt zz)N=k4u-9vbq3oT1Zi&q?BdB9;jJ7rg#sJK`RGq4f`*>5+(iBlpCNFOpXmCnu+ICO6U-Udd4JGpbVJRJM9w&wg&B>G}PaZf7 zlZv!poVyxyyPqH@=Qe9T2PPV|(xqo zSp^2~50vy6mtXb>QH<8rZ6k z@Ni~aD}1K{0UK^I{Qf}*^k71}GI+NN@UQtG%>k%aB<-O=bQ)bIu+fl7fMrlHbP2pW z^X1E*zp7)ZVX99^SQrk3N$TG0tbxc8Bck*4N`%5SnxCWVVEztrvct!Yb$b1^chr#| zx(>MPM)Tl3>ZNU4jBjHd9fgU zc)JP~9+JBT|MvJE%k%0%pv9HMnpu1cf%pzOpEKQ-r;VKwRcArWq22cl>WSnD=Y-oD=v*U;ZS!($cLI~xk_0R~Q`fyi9FNggvd zx5|!%2I4=EhhMf^a0_sHDFFz=4Tn$=WG+glk|ViH8)=?+dq>dLD^J`);8}oi^<2q| z0YwyDLWV|O&*tW9e~^f_?8!HWYN-+wJ{tUYkQS1t^gltAnLJ3&?KHaV>D_|HDhr4g zH1kaSK+ZEAonoJsm8GVw9p!zLDjp7m@x6Oy5YqSr1n^!J^dg7#Z%&kaiJ%^H8k~Ix z)G&;k==0A(6v*c=o&q^;>0+Zm0Z3VGf(*(HT=KAWcdi&%+lIoB;NVG^hu{YsV%^;n z;#IqAvzy<+v;tst;?OM)2L;8zVY@L%Lf&E;OB40tMI0bOEI?cy{qP1U!GN9~>b*hs zu)yWJAt^0?8{~GccrXz#K_n>wNh}8?b?jvGP3S*n1+C&U1;GYm1qZbZ=Efc`y!NC+@?@P4V(aeO6O;$C%{p%-@vTVyv_T|Zz zk;faS*tJubm6FY18=}@fkF<=s5k7`3NaVI1+1-8St`fcBnnurq} zb|aPuypd?8zk7G9q<>CCvTN2UJu_1d-gFumX@D(Sv@rot)$+AiB+>zVCs?d0xJTjS z=E?6aO9-TglTgBK3uad00?gOJ@Wj_z;NhhJ?6Kf-gYm{CNZ~=;h-3Mw@XxsYFT;&s zt^s;l;0{wzuwfdEW!`3e7)NK8=Q1m1puD63nMa59p~d1omN4gZ%=S9K0ydbw;+9dz z9dk;udzNF7Sx~m^fyuIY4~cjoY%Y3SYqu5PEfB1|c%X`blvlIZHV(~ofr_OAQ=o#L zb9#b9=dl^cKm&Z#yw^%<1za_%HUq_LMz;N+ETjRD5!%#39>5`{sjFsL&IA;*FF>_ zPV`B!Z0T@_V9F`L@sQ9?LA3;eN-0T6bJc(3c8`BE3kZB}w}5`_*y;x4QKTsNv4J|+$V+ljOfgN)eVc;rD{YVnXk8B}0aON!BF!OB*DQ5R zg;o}Bmv8#uqUvXs(ZU3PE~;?QyYE)z!J{M3On*Nd_p>`A!CYis?`Q4WD8(KNb*><}Xkx1X^-3Xl}z8AIUqZSHZ@CDrvKE zm`*b4(qPM8V#IhrToMu(7zk%Z7u{%dI8qi8MAS^dR?fH0EgXSNB`mXYecGfK{sAga;PGq} zSsdVDY>qMtw?NwOuf^qjou+g;Ej=I1Cpp1G7>)Gk+$Q6U4i5#{>5)AZ1tGK2%<=^( za>9;7C%OKd=+H?Jl&iD@*MlaXijq>ozyJRItB82wSA7aCPiYV3L;4B!57S?|T%05; znX8FMgC2MW4o@W4z1RmV$7yQ_Gb7=)A1!~p67+7*y{pv9AkiTd53 z$B93h`l{h$K%LQYOdF`;EW?->4@>h_ivrY41G20HQ%{a0S!$u($q+CLU*U#nO=;QL z3g`~!(?IIoVbIxf1-HHnU zhbQlXJa4xkrQk;4PJj!iAt|y*{TEXQDSM(cd&%t}Z~|Olz&+qFUBYqJpfL? z61A(%&9?81*iQO_&>u1hhR){g<3Sxs$!E}$@3$iWX@>Os#8m^g3@0EuT? zmw&$lu%|B60536M&O}^#a`w8d2=pa_vgja}>%zS}qwqA4Mh5()8I}YO0ylLQ1$5W^ zdJJH)`ws^U8A1Te??P9I+WvJ1fI#?BAupxzG(e7pD)3C-Cj z`aAd&$txpB1{;1Qx==rYkru6Dr*smbh`|a-2Rt{`06M|X{=PiZ$&uCs&@ODtGnJQ( zx_%deXf<%CkU9E+d?1Pfp^?pJe?l5)&di{QIgIMf0(EuiAe8kdxczhS5~Dx~_%&8= zBmk8mC&^=pSw@H7u2IrF_$$S^5An>Ki@dyQpj?l(O+X+#wv%KTe)t<={s`KV{>8QX zfN6!%x3{&WR904Y7lQU6Hy0PpqAMgeV2&6Cop0ZMOhZ<4wHLz^2~lALtx-`gB^4F3 zBuF&e7()&b&{cf*)3z=*W}=%niy3Xn738HzB%&Tp+r2i~#R8^W>B+3Q6W$_m{T5E_Gijh3am4 za`Jfb{6}Cv(as|^+mIE4L4D9EJD&y0r;r&O7;uKMaqDP30I(L?)r!MAryy2^SfV2F z>PUy{0za&<(+&l|3}kE^P;>!SI5?6wFe*?96eUc=t+~N9L-c$e!m53cu4Sa!1$rK`>VDKQv7;JNenEkY^vsx zIdye)%9^T~xeI9{q2f)+*+{eguktF-ovT-Ke4fcFSViUNLMaAPeN{ulc(iLbI5_dg zj~^!+oC~23!vbJAs5Q24ZEh4e&+DRZ4l1a3fx%rTC9SM!uYi6O8=I1bYf_r!v?iC4 zgl(XqQ9MZ8;=8(v-%vx9{a{BD7#}Fwwn1?l>6{x>+gV-_);q*7g9IZDB~^$nXAAIlH(4##0wSC~BM_NXj zxf3Wp-PH~jwY$snQC#Xp9Mr2_DUTc8RsWX){;&M%yPbMAB9?Rfq@<$EW3iLI6kh^w zJ@UiIZrpmrcK8s#XJyJ2U#pIh`Im`=w2^J~+_<}Gnb%fA)HcQzrJ+tOTakm$sN<*_ z>{3(WXy^H%qB*4|Tk*X#zB;Q;Gm^!UjU_W!ilv+-)hxKC_otgd+*|%EhoBQLgB-W^ z3-0+?4LQy79MZ1^fMv)>L%y{O`Fr5(1MC!ngW5t?Ym{Lqgdv^i>DiZ9wN4&O~lPR{#Ut4r46gN^#n{-hR zi9+viaH5B^ro+{sY6K9X85sSio#yFIR)cXK8^`wh+jZfmPtP>F(q>5gyTr`%?v#3D zmxQn3JGR5eu6BGj;qEy1iT%k_b^i_B=SK@ZSzA^%IRB_{$iEYytTLm9d5;Viq%Ehn zSeAEMoOzCA7A%*mt~p7mhH?wC;)4#f^U|ydN&g$5n)SLOm>{52;kK*@1xhZft}8J7 zBIVVxTq;^|K0e4{ z)U|7t*e5O6cQPRx{%`gT{+K)$-T5|o@r#F)|6;nsLzUbGrXy@@q-mWtqY>HPiG`$19bm_^Z{& zvLmC{%b4*CmU_?hp!?OMpa~bfU&y0GzDL8X-CuCoV(CX)s!^2pG3P1oL%dTk|5Fvr zVRsILq*kF-3)Hfm@%QIxG2MltLNR(e{QFsx^292F?nCpoI&M)w6KQAeNRzvIXRQ*? zr)*swutKwB*(ns`^mW<7G)_$52-|vEwwz~Ga8G*VolX6G>yk0mUkJe`;+b{d%_K=? zl?)8xcKASSP&WYZuDzoJ&5j^pJtA`)LPcn#;uV;)L*dTWx%KdYwbiOIWO1FV*g4xf zaXqBtV;VFePdik~9%{j4-|X^%lNM4{gJauXWt-+Y=Erzg z`1uu^n%wS^Uy`}PhI9h<$TjSJ+2h-A&9tj-b|w`I>AX>EwvZD;^=qy9P6A7nQ15hm z#QlI!e1X|W7`D_*UvG2Kj{zlibblvqzm>PuC6K*F@N91wtRR@C5E>L=v>j9OHFaYOW_; zc;eVz_%k|r^cBo&Ke;_J@3t9tPKWc&z$IMmYgw@*&rL(8=+MlZNd-F?K=Mwe)*z!* zdVS*k+x44B$CR0?o*QJ7iWVV!_l>^}x3ME2VckISDFFMa3!%FNdx?PMaz0O}1Zl{Qak!8ZIC_?$hY!iXYRG*g%1nvzNQ(lwWa%r$74*zEr!cu>!T|4x$Qh0;+?`@hRk;AIw~+I9eOi< z;dE$FY+c04z>w5Uj|zwG-ydBbz5$9IGobznT|1AU2NGI2Q_!ftbUebclDl4_Q(^h} zr`A|qr;5m#7KF!5S!W`w{Q_`$(tsxA=A4r%ebASmQ9XplMkS2wBty04SawWmmc+*B zqO=%;(5&ESXXS~QE$25`4@D87*~{O|XSU0G;9%bgp!gc7eX0k$cCM^0Eip{!XlLc- zQ<>Tu*lA^t*Mjol9*JtgW(s#x_3j#+B$X>L2MQ7MghmLVJ6Sgx%y8>g4{q6ykm-TG zsYQ)$jL>#ZdO@#W0RH3@Jeo&JR&G{zD^i~fK~s%|!^#cP84Qxq`qsY6@Zx3a2$Pq2 zVX_rvr!CuAyVG9%yHX(6j`f`FnrUskh1vsV=cj6Lh@eGJ?Ouu)ul833$s|4Fo9~z3 zK0O;rOQZ{$$?w`>lEGvc+<4_zTPrcM0l1V~|BaUk!?2LY`X~D~reyM5FpL#1^|lascR+CUnh~d6f_RU{WNYEJD{2(*+hCv`fXQ9U zuWI8M9FAGiU{eGJ!Iy*#AK!c?b^@4c>7kLwOuq5&*?f-XFo7U*E zlz$OwnhB-qAx@QS3dPnD)j#`sN!Ldr4U$hjtkM?NJNxshx^B$UN9!!1-tqRH`&kQ4 zZUuSGxE{BW$aDOC@$9r2(^2|&ai`ORP?vJe=N)4AqS~#7&hx`<^?OC(_R?t?%jp?) zSzvXfSp6p8N)D5)VPiitS@8;Xy7bk|Z@dsyvejvj1KN{Tb{IKhLPESGssezJa9>Xe(N#~bO5>*dNX(rMJK zb~m4PC|J*R`V9~aeP%I~BeofQV?$#`Xt03+oKnQPk@%Ruj$F{m-CBMPfDOeJ{?%1>oA)$6KyYpRBABdy+PP|l#NQvBEIIU<&uP$c*p{* ziL$n9;@@Sff%1`6oORhBDLq5fV(!a{fE^->q&PwU~ zb*b+{y`58-${IF4U9IiM*s>HU9g;A~O0{1vX7JTNT1pdPou)L-oG;>@9%;UN^5a?d z+pBYiq`?W~M)-zHtOo_;+)7nzOhVS3i&7Ei$mFfAuJKiA_ha&W0~$k0H*@6oKYgA% zKAz<_k>EQb?t8R=>5~D)Gg=;_P0@#m&F6gIi9YubKVnC-R%ur1)NNOZt4sGomRZsl z>PNT_zmc6$*O;+Ut+PHsXV~I;=p@#M`*1E*s*}#OzW6yw)nyqTsa}J(n1p=mBFRUJ zR@6%)2l;Rq&;+1{^vH$=rlZ;RB8&MEOrn3*E{Om0S~^3)td8%UOe9Sx#7t-HzB%JJBOx~ z&C&Z+6EXFX^3}zT^+y>sUgsqS6wYzVFNgBXW-kq&l+LO!HFtPKUb;yi#!R`NbpNLJ zeLB;|KK6+c$C7+4{jTP@CR4T58xh$dwR4*wv(*P z@2=MOU}Uj`!CK(0wzLl}iUenzDtMblx<|^iphn-ChtZ?>HR)wHsgf3dIv z=j?r}mCDqg++3^HvGY8E7GFppjh?8ye(%%I+o}~v={u`q_)?ul?e!aq&8AEzY)c12 zAM=+Eg+BKC>nuGsobV|w`3@O3cKoW&*_U~31Afk(jpb~1TF-*<_wHEu_129>Wn(X~ ziUD8dVswa5SKk_y)e-XfwA>GeKAf7p-zfEtHtw6P{;J%^gYRjG>w54)Wg!veL)N_j z+yl}89=do+J$j*HSSB^TOF`^v)1{q<=QYs1X>){#%}kO5KQXwse{s9k=EzYF&3p+c ziY8WW<FfFC<3GZtVOH3CR_a=G`Rl(@SVxWsR1b|9-laYwWuVu-ri082Vrw0m`-j znP919TlU@G^SXU*2cjnV0s%7vxTf>rx<+xj^NRT@s^lUKQhuPEJ&X&Ea?ea^N0B!6J*94^gXiP7KLTnewn zQI3SPOa!b>wvTCeb~Lt4n%fhPCJ<&17}tYV+~NmJX$>sljy| zRxRDm)%o_K6V0|tZ5^YL(8rM$l_}JpZe*zwv0a_v(yye+oB z>Ld4-0^`xklH|u6rq0gTmyW+J?y#<#`pRrgC2&^!wfxRaAVY87^1j*m^Ba<@o2QGU z-g_UQJX31y-P+)=vL>YCX`?N?SPNpSw-`PG``soct82`=pZ(vs&y+Y)EN8G!%nueM1@26pANgH0uKh} zfATYH5z4!f2P^01r(X869AX4&HQ{#AEl*L=`lGbmg!W1g=>+^lsL2v;{;6YiOZ0ZF z*95US=(_FiQ*v6QTqmETctwVh=I3brlxL>NVEKlD-1hgc5AM!vHO@@A$?9*n_ur4^ zuf>a3omA#z^Z4%meTBV3T5W7}@ia1PFvK%h{HX}E!sQp-1$gGna+W`q8M*yPf6)K# zP5?R|LOIKk3#@_r77{O(!JM&pZT!tyBmU631G`9YFMcssJ z(wq?-yzc1Icfb4?nLv z)#)Ier}^DZ?xJ@@-M#2d@AEqLxeoYMp~k7`W0xffRN`eSy0_C?2R<9!FrMk;Fv-W) zc61FV%SDf>-fcz#%~J&L_e2`GX*$P5)o5{it9@V8&F}7`g_E+#KZ;?NqAUg z;<)%;a`VTkxz3{gty3Pt1D<~OH2D|(Ux6L4u4-n~A|yt}uWwq0uNYN+H&dJ`>Wy$n zm1j6FTC{nCSyHp)Eg@<30~Vaorjd?Z(7oQmWIt!gARke0AJIEm)vjMZ=F62M+-dV1 z5>wy92JL=xx33nhJPE%1Fu4hQS((< zbuQ^pXOTrKnY8>MRof|{){>VK8BfXA7aRl7&2mw^czl|JE$ZKNpD z{1Swbp8qMXKI2K*(w4)%IoJMt>t`}KfB6a`Zb!@Wq3t81tMUn+rS`@02+!wQ=#!~- zlMc^Vnp`xez1EWy+tkd!=nF8|bH#XFr-D7ibcA5MQ zy`DOfZZkLo{C%!?j_Bd`N1X@hCC^$F_N-3WD>{7c@SAY!E$g8B>{eP8wDgEku?HEj zn#olvUnow}GP%CGk=x{&KdC2LA!H&CeWk8eN8a9=ZL0B}Z7hFIZ8FWV`h@HIl`t^) zjvZ028Y{0Qb7NJ*CV1~)qHQf@auV?u$!51I=NcA?-PW<+{@&p(l923uUc&&979qEQ z53g=B)f={f9nNnw7(yCI3w2#s(?7D>uXk_+q5rw9%u~@`t4=CzeWP~1DlR_Oacv^X z;b|yU=|sJp$hRj&xjr~6^ngkx@IO6l!{3>HyRL&{oA+XX76b;-D-Ew+YfV4?cS3vG zQkaKklFzR<(vF^a$RQIu#Vi+_U)U3DAaN>Yv?awLneHc&rMyvc0E3$#+PvEl)4_&s7N0wnkz*`)|BEF5MH9c=IDIukkwr_KLOEY`RkB zSVDFj*h%cDY|F~fRwfwmOyS;iY$RK>y}NScnXlG0)4!KQfBOwGNQ@~Dyz-Jq_=o=v z^S@3X%iB5X*zm}%;u>%K`6SxmN^Y#2$YPA?y7JvVkIAMVw@)l~_4v;v`l^iv*GkRF zb5YUij3rvB&C`qwXB}`H^RSEdFqKiNDP2m>I@tUExe3RDcLgo3Ou9s7>ddJ%$NnmY zCGc9wZKdd*YN!(IS{ynELX^lLIIZQcGa40@EVxu79Vz2PSplnPckP;IzwTLlAGS#q zW6QtoFOazSxI~8_?D00eUU;IVbNteBm#?|b&-cYbZkOY~C`^>C&(?d`hZCZ!q^5&= z6V_+;8j!N}ZZ@ut@7nNeBzBv~M7San@|bjUJQBIdo!?Ws{-F4)4)p`KemTNCzM!PP z(NflN@M_x(&*-8An7J{h*QG9E6YPnUVvPkg%6tz#IwThttf(Dt5E{gx3-?(q!40Ws zpBYRj8u?nQf^%09Ma69&X53G321hidsVh@V*vu=K$r-FN3W4s<+Hot*MYrQ%q<~=@0*PMiNX`?7u z?r|?0w5*+K+kDTlRsf&z(k8&7)qg+9o-+UqNno||h88FW9h z{D<`KksE98_7Wf%KjtuIkBLsnB=xYu@Y`)d!CTdKqExoHaFSdvF z?euH^so7G|PC6IRT0@9THVjM_AvUvFyu~=7-!vMgQXvE8=1?N z%Xg$12kBbZG499P7=?*$`m5TX(|?PVW|Z8zoAQyZh?cCasE)DKYV1_)>lKGcBPU$o(4x&f?B~;Al`iq(Aq?Ku;lr&@ zwJvWi&-yz~ARLVrx;N!Me6)x63#X@Gk;+g$+VW)3Ke5M z^+3!ZEEv=r_ozX)A%VVsyEjbCqu%srzMWaPj%BRt6tZ}2*c=r zjS1iTr5?%hmeZGM7u!>GJ#j{)OXF)YD^asVlhJ&P%-^PBC;In#^oBwBIcwz0>1nq9 zrI(K@?oIZa-CdrnRKTm22ik*4(y_9^P&$=Txiaf~U6FP0>Z0 zV=33$T9EJU^W2X07bRtdd+knfy~p8C@~($>h}~*bzQmOqcc4YsTozkJ|-I38^D}{EMe2xQpAGH5?4xhWM+J z{pMYx1}h?3$PsMNv+a4<)DM*7o}$su`(V1;F0Q?|!Fk`4C`uIoz6yizb4mwhQ<`o3`81@9npWGYWD zU@GM}J1HCQlCW?sXe zGpn9MLbgDZvX~{TxqYY88>sGT-Q3I)qcV0NOd&7(ds+-xL-X5diVA*Sl&;bWZqYmY z_ww{Bo_>6p{0Ky#s7Hlf6%}3G0mjZgt<9_QWohX}$|?qRg-K&)$MO@}I{+iFI50MU zY@gHW{grAzVM#NLVVds!sj*59qA|Gcf{7C)w)fixrZe%Ne(jWM7ScOKR>t^OOq^tb zlW_Hw#G%IKAx447xo0(SxXPZAmYu=zp3M4`Y7$r?Z!q*o%z4#$_L6iSom`6b%@=*_ zspTmnbpB_oXO=^{b!qd`Uw6>D;nLn6Ld{!TOewST>U|;tz(li$7z&e=Qpoes>K?n7 zl~p%|SUQmNfB7d&HKS;$rtHxZ_9?G?gR&%yY++`(aAsuVa-p-2Zb1tH5en-#Ryo?a zjuAY&n_ho9_WLdQYwsnwHYF|B31}2lV>au5CR$&wNuQ36mN>=*r+I(5_txy4Dj!it z?*3CanyHTMtt*MbTY?E^5G1G>ESX=Xz4>~J_2zvi5jdL{pGF80b$Ccf{`)E4i<2US z=i3`%R!^1&%VVVQ(poVrERIxr-$9mvt!`;lt1D!q(iwGkcOb4iN$foBD>jh!*!kMu z8X3!BpilhUr0_n3=%uiwG(@1K$B@4CI;Kl=Z9 zyDlVPEaR4%7f&eWR4FmjBOxjM4W@L-N863_t*^!8@^8;2jtfP0h-*n6TrI-;6?$$e z-hn{5ElSTAJFa1RDkF5nUqCLaJi24~7z20{?YGliXCb(7`*F;?!Hqusea&-am>uxe z!aNcexh0s&t9nfyql#E(FEwq4w~Zh6!v(}l8HM|S?Ak3jN*suT#W zeb@u^2w$J-6V%${?U2QhW#w`?6-yViCtI+{s;Hf2IZXY8ea(wPzPl&8Usb0fsT~_S zpcm7+aYhE;$AsyM2p*hh&o^hBe8{1jXqi=ksL}=C^b5AWoT_TB5?;EvITF3fmH!Sm zVwp5@jMwq=X;U_3m7_oD{`nq^hjTx$)=U^wGg)3$VXvrQXQ&#)`Er!V46ZdgtLW(H zG*iQP$Gd_{BL|n~+*wt0rdr$HqZyDZe|dG%&5wIGG%(Nk9hR!6qe3%2o7b`^S@IzC z*sk;KrNhZt(}lg(FMDU%9m98S`i)5L6Or8$OCo`5U5D|I$;LoIg%(@QwXHJE9K$Dt zoxBBS$;nDpl%`s;Iki-bLs@)CL&W%XAzrGx=w0U%_087qQy?FS!!v+8TOQ-RJN!HS zPfoNqTclTh>u(8r#9<1%_?3R_FZ0`Y{W%Ng#bw*ruC{)Owk;+-rsJ|4NuHjVk0#W{?zn5$i9!&vx zdxi56;(ntb**$ebA{|{_DWI*4@{%KYFa#hqK{FLj7JH^3!84tj+R02@G=Z90tG!+A zfoGQV%_?bz<4TYyd8x4+?(zA-R-#k*P)JlL;2yQ2-KRrL-aoy|>1vJBdNV&*hfz#j zYCequ%w=01@rSg+qmbYRNxU6ypyM&#O0Mo+k{Kb?ShC?zn4zTT_u#xL1{3DjpWz$p z+7HjBu3kz-RW;e?<|A&GPgh8R@&h^`Dp+g*^cZnNO9cGmievq%G}=)G+%lAIgEB;b zfT7y&9Z+C5atG5p5bKz{NXqfdMfrqNDwh?KLQfy!?Xci#CAO#W{y`7#hn^D?5^n-~ z+g;0T-vmyO_W~YZuiDug5#Q+U@Yy=1#*CnB)TXQ?V_{X$M$y0&GI#$$F5vsF1fnTE`!{?rMIMwW82Enlr2xKiS8iylx*D;-zxJI$vFl0Vefs>9P^LPapiF27Cq zcVvtl^o2n#D{9ixz7dg;lmRvH4ZUoM>X(z@+l(s>hQw=xCYf30afavTc0bqD(xjKf zlM zF1p=m1)LlsA`8_lEz=EKPA0W7bMtbuz^Ijy60s>q%^a8b*5y*S17&V2dpu))dRAR{ zk=Z&MO%s~Y-MaQ@MPr>Md<*9;QsQ$XbZ-*IpDo0)Bt$wzA78UaBc0RB=pf$oB zhz3qEx@U;*@3oh5*CLR(9uKJ5xB)yu*i3F;b85JNG6_AESxs5Th_8P0z%hi6!vCX=e{`TAVkT24fVwG1PKWZ)9>B)$rpiLroa?jGy@Iy{ix)UNn;f7n@Y?5 zcB7m(TmHY_S||((AW}&S9l%EJB{|HJ>g~nx;5UDZDW#Yw(b z&cemNkoZOFf|hkIXxS_G|Ahpg^@lfGK7T&plf<|6pOG` zVyg=YN!Q>%yY-9ai4)Hr(=-3`_foyf|GMGXu&cW(-=+7TU&!swps$^ETJ3#>@(+>` z`It<&eyGM|4ptMf36j|6-zzlf0QN9QCU3j)A(yNYbTTV|{0h28$}H_RM!RdIAn~6Y zzP0Zm1M`VzW-z83b&)1buluw9yprj^uiXC-VSr)Us*4j%olyDW2HJ|}*|WPlVC#3( zB@)AW@0@xNDupI6S1gLkAfQ8-0;zXbe3Ik8Z+j4gNPyAOu{70+GOeMjk1~VkXGlmE z{QfLp#`?gN}9hwOJvuHOq zv|6@YNFoH|7lAqeghkCCjFs zEdmAzl|@iYRgRP1vs?d)mH*EU0agk9taDti1bsYAIkbQ&Ug*h;tKZ#D|Kr7Adgz(M zWlk0c^+UVae>SYzBna*9eEn$q&vx3dBpy!SL;&Fmxy+`SpVB{%20EEBtW`;dF)LdqPa(rVHCEA&SbZWrN zF$xeYj7ft{i+(kq{j=h}z=GP#2__b`fjj%^GOhd995@$BmtNk5)rr|!VuYS@%F^4h z(!jb+vg)04s)E9M7*e^!K;_*MphCRlPrSbm&q920@eeQ3#-2jF{*@FcYAdrO!L0Pk zrrgVH+Qr#k?SJ(PKtDh9o|pB<)ZRl?H&%_rcCLUxxLd_$R;wgNBO|g4K(Et)3a6_K+$RhshzHNO>VOrQ*9I}k=u*uh;K7%!Pp2PIIKK0KUibgA zpAZO=+F`KbBw{O6ehbF96ylNF>eN`osnfh)Q>&Rf-Tt?33D&3u}5ns<7R=|#l@piMx> z>+pluI!@ijQn=RH7%=FdY^CzXhq!*Dilqad=XjfUu`j)zQZ zAKU4#zzGGW+Q}4t{U$kB15n(^M+z}or?hQv{>4h%dx7%5jl-xI3~{1InTh)|?+xyM zbQ9ItLWy162JiNTo7AYKh0ELl_r{@*6QGJlUx6}z((=5?)^|_Z( z?a<#wLxk=>!4~j0fZ=w~@#&CGcycPt_|t`EkTxpQsFuo2^8r^!NpC@nR$r5f=&b42HkZWPQR;~#l`ZK;3WQw`PHf%0$~ zME^3EF4pI^_4Qqrl%hW&b?K#!Zo=#jL1q?~p!zXr4T4yN9@XMFebkA6V9Xvk-DY}- z;HU<4&RAMnZcIRM=g7|{nTyea_B%~Oh*G8C@FioD5+k4Frj zTs*#i&v`K)DT-&eDIf=dfD+VG<>oQMVL))56>_PR^Z#gQfx)P7QLDhw-)PEF&!}%g zlK^#@a2d^(j`8Su{A}DHZ0pdD6mkliXO!!mGpAnIDp(gu4=X4@KXjae0wh6i6(pbs z{eg(YmWaXw5fPwEy^ug|$0?wB2~b)3J=s}U;(M>|+;j7jM-ykDO!Mn&GZVCefCb`K z6%Z+NslcM01+QD731AEAkx@w^OwW%OC>vQevZ(N>tFwyc=v|Euc*4KRCvsINvMH9j z(vF^H;cp8ZWPP&N+vlP89$lsLhyr_)jd!awR`xC`%v$V~A28Ao`tu-0+i`=qa;ayI_F=u@EEN&&lxS`cx| zx3IK?k@RziwQrb~!&P~Pd|A;0tQ$9UP6(r@9`IKOrJ)$}6 zU$W|+=#@3%0Eke@VnWSqM%ioRYw4C-5MU6`GCMmmPo(-6Fi85f_&X?4F~6Sv(RZRK zq_@N|!l>}FKzgW4o_%N=bx}xzWJ@AmM%Aa<%2+dTJvh~|L&4#*!sV%q?obywww4Tl z3zl7PScimAq?VV%T#zvq)+}WW*C#-&L*WZBtUw`9eoABiZyMyEJp$&$U~_M{L9bKO z;18lJd?SQT99(`G^Yb={zclrp1`mKL(D`yyrZ6DxvgxXs&Fg-V#u|lv>`E$+%G1)W za3#`1caynoYHFIj=p$)a6^b(~q-R)sug~9U3a@{3>xOZ9PCMGkP@RGYh#6WKk%E%9 z_5){RF&0Ek2wz2qS{n-fb1C5-B200Dd02` zrd8%GH*3zC8TF6L>9{`f3_B3!s;ql2<%VJUX z6OQkyZk|1oD9q3*CsNF3l8$g2u!cI`s)6lr1;Q9hc;!=wl@EhfSBc4_?h-* zkstlx`01O4ib|(h+vIz0U=PSfa7hAvA+TwJb;yR;c)JwN_Qz5-fCEi}ct$%_S&BU@ zT|SG}_oL&+tX}6xm8T58rI_r@cxS#{Xf+watD=QTE38hs`(DO%O~Bl>prECrj+77I zV`dIjMVriPOGT7aNd!JxLGyUJpDm*NYojk0dA3km;la5oaoQi9tSU-x;O5yRW}*WsdUCO4dmf0y1T3N=8P8%nUI}HxSjePdvp@+A^h=IY^bhf2xqAd#Ky?Ez& zAU!z9%%;6>0U%Ul32CLR`aB(8Ws2>gFOs8~Cln8}tAsZ1FRV)9Bt(=(g~Hntax-+b zLsfJt7?=}WZoCc?LFE>LYmw3X9~Dsp+R-gPM0Fx=)FnwKXjAj{DL0%07*%%dhKCRr z*}3kh{F1j*C(7+bn zo`Dvntnf+3Gxl!NAXb~D4iPX5X-EF~@@ z$ew^^lo}k+^-%vNsQ&U;4Xm#1{2Z69m3T1(f? zj>kyvJR4j6ku$p;p|0G3J>qrBcsM$ppf^(f`y@dr>ST7Lle%U>%c0av*xzH`Q3Htf z%e(z#WlAD#vq1;KB3OE<4zrO8Waa)FN6;zU@1fXilR|%wY3Su1T~p+Z<)`_E`mA7H zfYPD;_O_;lPmj;OcudM}GXc(uK@qxqRJqK-%p6kXxg#(Dff**hJz}yLp)2Al{?PVK zN;Dx|JA!8b-$SirlqQ4tr8*Tjk9wGE6zX{viL%I|-Ippjz8H*F55WvhjWl*yj>*xe zVsTMeC|h|j3TnRObPXEOSz}mfSoL>*iHhBvpj<%R0QBOXCR>Zf-lgWDSU9s#ngjrD z4cn8=M)%&8z`?-I*6(ZjsHs2H>lz@iT58<6sy%@;K`(JmBDs)_Kc8jhtbtrKH_AJzY*%JN6fQ-j!9N;r@hs^mRs@cs@2U zAkN@=WFMla#WW!B(*IrDkn}%yoEV>y|H(oo@ z&2V4mgvAkKY0>)6D^0^*%DSVE*PLe;v`=+?oJ|}^jY=Blw%L($n8QbA74AVCY@m zijO_7#_QVQb0M!n+D@`7@I21JM(cDwUJ0W$R7`KhG&DQuLbD_g<12d5*(dk=ysbWB=YI9+$q;1qFEXCIjuT zbce2D0igh84Z`>GefPb8mOT!Ven)%0uh9CFqWG(BE@$sy=L4R-x0bwHjz@8jp6#0< zf~1qIf9_R9>#2Tkp)rj<(W)Ry)CcnjorU_Dp*6cF z?E8tY@cOGpXL9E<0e?MuA7$|~QT$S}HF)>#BMdQ_w4X##>p#a5DRRGFd9u z7~j8@S8bm6@DF#SRNB3eSNlJ`y$4iN>AF7dIiArwGb(4sf{4f{AR;IVBGPAM5UCl8 zB3*|jT?r5&gstO@%%FgDsZnXtI~X7d>Ik6)={=zI8hQ&P|92z*Vwux$qS4L1HVwgP939v{&L`Xa73_ofs=lhe1 zuLIgXZ;hFtE`w%u&RAEJ+*H_e`l5Ho&btGPS1-FxdFiIRpRr76BV*D`18+S>af#8w zIb@2*>9(cwm0%>}1F+dPw$UhP-N!9g4@)$VR!uQSHnctRky>pgYRI7#Xu;od{3N)# z)=vkOlGc)*J+f_i3I6zu_aEe|u_O3U_I^n0>;?oI+680d2s zUVJxgl!3QCbl!VG=U7kK@<;>gLm*NvI@=K67mHO7kp$#dE+@QwEpHX~)z0z-d>TSL z_>-pe=b8UJ{~w_9@2Ss#^-C`93Ceqd5^Vi;)=AL`b9Wk=LoSiY&fv(VNE@zPjp%GQ z-)x%}Qh1*Vu>T~VoTbt!SLUd95BcuraZ^2ORaN zn^=oMa%(;SLrXsmCwh>pCBrOr)6+5p9hMo|N(Lh1twNClUm@$t5k=qvG31CA*7TW> z!!A?tZE9cb-sR{*IyJFnBRqXZ2T$=-8;CWFbz12cHit7r4o6y7obY{Xvy=U$35n;K zl-_)w1extsj$D?^dGDr48^3;5*;s{2hWp&^*u%=h6QMrk846tqM5z`wr>~@-n)Z#&h~_PPXDdRZOv8vkT95+1O%S^Ar{G2JBHJ zoky&xWicK%WNnb?v*OZ^k>}TTs^9#=&&DG=?g!pF{K)Xq$G>q40cqYSru(P2C?48Tq-p3uy|_`14?EE8RH6vTyAOVTL(mF!}$?gwdQPemA@x^>7G-5;LF4D7m5(GLqFA)n-luaNy`R68PxSGIP-jN1?@%)m7qb?s|q zQbgKCse-Li+7&D9(k#kYh4T3PktI$sj(N*B<~P!7Vrl2mh&XZi$ftk%_IHE-_*;&V z*wxbePhBnsduaXb!kM2ZukX|-by19uA-nF6_BGkpS!R(LEb%`0#t%9_WuLkt?W}O> z)cBp4r{9N0HX`=)Y1a1nRM<0&#kc8x61`)wYzl1-79Lm5;yfU+hA*yE3n5OU15HR=!fM z+--JHWKiz);?xS!g&uCQ3(MY`dvHLfBKd_A@>+7dG0~!~i6|W1EIZfq3o=W`AuU8v zPKDUuW_J2kSjtpUS_Vxqus2qZq2U#@L?`HJvbQq`8}-QYs4VBz`AYv^M_WUg+86ij zYfMtR@hb7|9i=sOizb1<9wIZK!msbHr+WI??EE8AfJX^$D?=QVKR`ksm7m-Q30_b`@5?54^`@AWXF%0;Lu%?`<-M@Yjz_OvOj=?hIK z2O13}%}f%A4g4*rkp3T7FS*p$|tS%>3=q_etTo?&sKUYV5&2fhYJ|y7SD>16C zZ+i#cZT^096L;3^*hRmBWxwY74B6k+&7B49aO$e}*snxXp2dAoM(!;K=XP<{CqtB; zJD8arX2&1V^Q*nPQaM1)#*ihOM@2O*$uTK+^bFb5B){44=&c4n1EE3V-V`j+V$5)t z-rMb+vWYHJ+oSgLRjPC0r14(LRCU%=ETXYjCTs!lIJ7Z>w zZJ*RxZ`Va|=Jc#3{8)t#wOYcEOqE!UwkKshJUww^bMr!{26l2j zj!v4N5{dN?QB04LR=+5Rb?S1m(+(#Ns6Ty>OBhU;n;87qy|ZSI&GdX-vzJh3#=V!R z8=?&?Skvj`tC|BtY+FVpcHthjt4+{g%>loNSTO?ht>?C5TQ+EY!q}zY2S>Nxg!XUT zS{Rj~p~(atziva`ammAS(Yg}A_G}e% z*4kqFlnQA=SdFyS;-bE|T2tk%tE8BJn5H#2QMa4X`|O*&ePMmqn(o|mW!^c+ z&0_y|bTcI%5bbEE*>^7M9+{3L4p8h`?i#R${A!zz%IJhTpH9p0taUy3epR({sa0w; zO0Vt{X9`}Ib^TiLR`P?!OR0&vN*me8tRXYfKi;+Xalnc;0fQ{udVXq`ZF8r*S}c9; zgzc7xXHDqYQTg#Fv@qFY(MTwK#=6V=nypW4O2khoRTgDnJuot=+2?f@7i8zw&58a4 z`2o~5zX6;rF#~<&dACzMAE`M7j9`tR|6rmTdu43tLl>27zizKasMDr?NczppcU+dy z@eIRR_+4D5t@D~U)yKqkb9aPrUt`#I^vpwb=18T42*&))a<;})Lqo>(#dxu4xfi8T0_5ED0y%kOHJ0UyB5+g05V0m0 zJ~NLM_pAHW%YQRMbgM{1D?EVUZ0k{B_uXugR+|Fi`zHy>yq-Kr{e0UEoCqPbVV)Y z*8bcS9Q!&moWZt#H+CYSOm%y!uLFxuA2&V|LA7X4nq#~fw#C~^1R0!l3efWlOP<_p zdbl<_AsrNt|P(rr_t1D*D_T{OlxZUYVEj)QRljZ_GCn*i}q< z>%O^#UxP&R$2bJCBr}lk?%3cODS+!i3p6rifN=YVTupR9cCfEcYTGr2l?J!9kkg~aXUXY`975Okfq~86t8Z=0nby}`<77w;*X)T=9GuUp z@b;EKJG#^TwAX0ZCW1cc5Ftlu#ZqJO81nSuu?{O%F-4~0g)C0hs>x|Aq;X{Dt~KI%aD{47 zI&DRR*{s0ni52z~q1h7EPUNe4H=6|$Zu%%Z_Lx8#fRlaUf`Y>Af*(F$d-pLKlguEK4MpImI^5P9{S(b#W4z zZc^l63ldr6(QTnN)B3l#u&ZfX%j1D~b6fUYJi~29rYKD^4&2iqm88L$pJf2n{#0vQ zY}L;e60&hW1$JWRGMAR07p7Uwd#ag3|8}t_ny1IBq<~Rz`52MA zE5pZy8lP`(xPwj|WCyGCQ)E0WGh-hda&7NwgQcqp`Gg zYfg}dwVKx4rn`c+VW$0$@8~SzYx;}GdS@3Ihxhd^`_!M8AezY;OA{3?@TPu~QT1h2 zn6ffL!LNQJ$4AvDWBUWwv)QP_EryEn6JfV19l~m3W ziMiyLK8zSL>%R~Tya*@k=*5*>Hme!6>&%{3o^YA$Q{&7ikbzSIirwv{(|;3)UcgA5 zQzzNSiLdzR5C%f+FgW^t>G>Gly2i}rs^Cdljj^M_;Pzb%nSLu0XD!1>(iyIgTfSgD zu+u^pTx_$M<$x_TI7+vt%y=O?85vW-Q<|51=%j(9VwL6#gSHa@=Ih{9o@aB@8Ble84zL8Q{aycRakxBjLP%T+xZ1_~h{U6N4h&sdhVEAtXTdt7;(j^7(3 z25wGH&dt$3y?^Zb`OXTwJ3l`OsT(5Di;QPw=Vg6vR42bt@o_3R56V&!(;g70rF^l8 zcQHJ^rk@ab=Dk`K3oq^1nqoZInxeP_`q+l2Q8Uv`h2m^EW1;%Vs-#XX z@NbA@k;_Y!wf6%bC-L1r6`3v@ygOsFvwUvBPh+DFvlyLkl`Kr*kX08a?1Xx5)O`%P zU|%!x;HWw&N@%y4-0X8N2xRIXxQ|}wr2a1Yvqn)mnTAZQbf{LP)6~NDj3jGkk?;;m zYdJDSUIv&W!c$AVUB@CL2e--+@pB|01(){6F%H01P6DpoMS#?ZQ?1y8B>ekrp~J5n zf7Fx+(s!ec+^su4yosG(_c|FSJ^pkdP5<^8r79UC!0u zX6{r)dE;Eo_?Q}Ls0-+SbXt#lvq5elnzNbDsRshpB>Wsj8aL>JpCdEhEHAIRt2hQ& zYMv~+<~9G?WuKe0oCo49<({%z?*$k&58^Uz>GxK3+Y^j#qtxO`+Gdm1MejY7PS3MN zx0Y55YcHP6zGzzHPrk?k+jpk zChy@L-eOSq>YKEZ&?AYvo5Uho#DJ@e!4A|nk+O@|%`}aO88faAe&5_%6MCZK=R18Z z)~UrRlQYK>ktEAOoVTDe^JoCoS+6J%D>Z#FwwNMj-lhK3XOgzmJ3sPJ zZd9U8ZUY&TQd%E+h@~A58UgCyCKSI@Qc}`Bu^)96)sHXptV6eo6}Cx130PyXK>pzf z87Enq!tPzWia<9(b&)34R|XcFFAwP@m@NN+#W`Tj z!r2e3nbT8Jt>n__s=}13M&jh{hYt0U#J)B&dJMz(qHj!VN2K@4p`O>I_`Ku?-YYYk zpHkwr({p|F0e~s*JM$MIjfLkB5-9<~tp11HB2fT#9)JFDU;Xi*ql+)|5H{=QiK(f2 zP|7O?s>K{zsyeX1*MSsQIoY<{!@4uyG64Wp>2^zFZXi>Zlw{f3LXr?kvTnY&9b>d2 z6&rcpAlmeFA9c`3EMl|bM9Puu%zWXk&@1hdV#4LkA(FAd!c&oB-}J4i4XFAR8Hwp- zB9Df%-VX&=G>>G~`XDO@Cg%nyh~4;5m7Z@RerJchiJ3%)ODiR<#7E`cOikz;rSe;C zt1sDe7ed_hu}ick#}ok6Z71i_KJnzpK*ZhM`ZUnrlLIh{NExOIEU|6zWiH!!J74dr z05`#8Hn(S*U~7b&MnF+CQ|Hm@>MB4UjtgHz+-UHw#ZXfB_VIBTt_kU5dw62=kjHVaJ*X89?_`?Y;RZs2J9qBvE7NK1DU>3U)pW|}zwMna2bH!;X>03&K1R7` zZchhT5q1;_=B|kYl~e?YMw{IiVfstTI?($ z#nX(Xa&sRd<)x*w1@7+d22k49)6=UTT`VK@_4dYtL~k02q?B?cq?e~-Q=rZFfaF?G zwur|BeA@2^fC_B&Uv{@E)1L|}dRU!(jST&Q23w_}Z;zc0J^`$we(JCv9>2eH9}N^* zk}E2l&h~QcUDf^Tv93v|gW56l<Y&{rI1Fu5|SX^!f%Uggpa0iqN1RT}5{LW+Ii9DuC*yLD~VG|1y?kGO^aa<{*4z zJ$)N}SaqN--vnd_OlXSg!q~Gnh#XR<(M?Ifl{Nul*$dRd902WYP6_Y}RT_I{!DED8 z#quq*jROe1#3_2(oTaRP^7i&_SKcSC15g4YX!s%ypxGCvPVk?rTB0|Cuf$+(_#BOGKYMnLv}o|%Cp$AfyGbVib|MJ|u9aE8yQ z*)2@~j^iePyDrsX0*gA0x|_XmI44j?h*QEk!YPedSTv(W4QCsGVc%7RD|2@<_H(0K zfvTwJ=9^yv79QI+0+`ka9xVyEfp|ENFbXW^^}x7X4CON9D7Nu@Deo-6e97mlJI$Sv zqGKU&Q35GT7m?ox{jf;o0Uh6%tfm5zN6nxh6t}T7o?)EXuFM6&SIhH5rd10_M4-5t zMKY5h3$*Tvt|CE%pNtNem)tgja4H;B`bL1I6b}iN3wgpPQZ|#mfoc$$GNn3j+fK z=IHh`r9j}`&u0OoEDuns24Ic$>T!s50DZF3P;OmoJ`v&P67XbzypBRp;jPZBap3l5V}hbAh+)#mcg0*)?xeteY_!fW=s%Ooqh8O7G&$HdQIg2m{5 zppM^2pl&2s)ZTh_D)_|XLucxr2+0@O*F{(Xi9N`!-i3meF>jshkmb|y-Ry>gS65K@ zO2A?yv9U>U&MC@dy9bC{Wejfl5<%qEDwegxq;PM^`WNdlU^Y zKx)IGr^tacQ`8{mzdXSozk5dfo_wbZuL6oo$q=b5Ek?6kTZ~;0VORsp(GTefS5!H>S zm{v@hai-4&^!odPNxXReoD4WiS!Teviac(vKgWh#(Rue(_{&p8aHs)7c`?9`)peNJ zCIPdUQ+2qyr`Uk8d7NdT)-0HC~? zp~`Ft-^?8L`rPymu)=7(#oZEsdO&LD-NPsTmyUz_?<*b?>yDc@@SyRUgh4jjlmOR_ z1s%5z<$bb6|9%d(NAcf$2G*pXUt0nr3Xr{LK=n1t=cvu!P~;pO|B!;4u^xo22a7gI0Ctvd6}Cz$XFFUIi^;@x6`Y-`~grOZ8yO* zq1IX;U}z`oNCJ(gFRAMNTQ7m^=+5Sw4pt(DFlFKgF=TQ%$aRrGKgUHRNUh+1Tg3%k zCVUsC1U-nl(0v+P^NDcE)V$KyJy)zySj))1<)u~}EK86+iGY(s$^e_AgW`{i2*R`5 z-KP#}8MP~O>+aQ$Z>>yqY>)?8Szj3$!Z36jAyRV; z*;;@VWk*{gKdY#$ECyfG_|JA0!XR{Qs%n28p4m}Z#E-HN;yD8Q^m;hQQXV3RXobV> zL=kn6sNvn`mj_A}YH|0ZHRAy|!rP2|Q9qR|BR6izuFaeOYmq1V^&xm`h>^`B>MVjZH zSnyb{Inp?sfY@j{yXFZot}S~pHt2#00K(A}0LY^UW)Q&dL9%7;>6qU|Wfher4bC{H z5w!Ktr=lyeZ`J321TY91!SEHz?}gvshkE1JvOBiwh+8`B61yS_pJ9(xBIqOR1RyO!;lv#5l5c3RsszU?4RFgj{xM9 z4s)Cr2Jd)upZ^35{^hI9_^zsxI>u&Z<$Z|VHX&?zVKn+vk-5MdO*aqj@x35OPh5dJHMKMBZj6r{7qro;A&WgxUL9QDM zZqGxS`vy?mxLVwpq@t+f1(L%VrKLVsncMnjL0HWSKU+GztJwIXpgH>8eepUtYwHCEkw*a7+*n=xJqY&HB;Nb(t1Jw0!KJFP1tBQ9)5~^68nvx<0cj>9}!)~%z#ju%%IhIN$6M}wr zkMQ>OO)oE3M0ASoEqqG!Zq?y-Eu>yjtr!a${;nP#hG2iMgdB<9+}s3js|+?78m)gi zx*ogrXQeNsVaBfI`(J}o7l|m(neqnGaQ13hO zW$$m|JgD2N&=fQwi-pBv7Mtb zlU3)3-c3%-^!i$*S=IkqxEJcr^j|wqxHs)|c0QYymU-c|`&kEllUCK2Q7r~(?bje- zMl2doX4{9X=$P0!XIOQdaAx*zjQ2HJ1}_VUCsZaE4H&0p$o7<^AvCCH%qC&{-KCr~ zwUxr$Wr|#^5#`Fwa_f8`;9vYW6*!R;4+O|3(Cyc)AdwglO{d-w;2u}M zFZhseT@dtLLALX0c0SubW_v~wO^;??e|+>q@6*Z1({ajozcUe#ahUqk%SNs+@nKC2 zQWkSxPinTmPb8*n`2euc(WdrlK|KY^q7U;~qSB)eYIXgFS{Ta$rfr?d%IKIH1}<5m zsT|acl!kI)7u9sW;n}Y3f`t^Yj?s8p+m+McYNLDtnO{7C7U=-v;6+>a${n6nfG3ew z*e)J6=bs|PLF=XnqFHe!_B&6FQTL73SZYK}OpFCjV)3R5zj(kYfa$BBcuw7On|wl$ zg8MPh>E&PNlcy&2@+>=J*9c{bPSmxB8;wrtCev5Z)wjc~ydtlYM}+w3GMZ1q`!6v$ zaXAB~Bi53g;{rD3v6=$L$R0*gleJdNp!`!;cCqZ>y0fivMKE{cz>6#HeZ_A9)$5ID z812m3-jR2l_N2Vz6S*n6ejUrYjv^Ly%XOprDg}woyQ7yPz8r05N>ZQaxyyQSrd*EQ zux{GU&LYjed9by}c+kIeRiWcVoKk6o0I~I%C&vtt3*1__sO2I97@%}-BFBSk^NPl4^N!}-3IVQz2d6doe-Fn{&T!@g_Nk5ws!@e0VS)-h`{ z`=%O~W9F9jZ82|}t;}@N^-qoeu34|N?X#jZRiJAF)dI~LfxMSn0||K74PJJnd++Cd zxlmLX)pgXo&NVb=<{ZVNZODbRmY+5Du{PVhltPPNMep1sJ0~R5lIJWd_tU^ee6*Kb zdS=w4%~Zc15vjdCm>v%iBug^XuV|GH`Q+Nd2M^Ge;F$#j%8Wjux39)%YVMT~nNg@r z>faWTQJ?~#VZV({UFzM3(kC#`@lyNiGqYzFy}1Lw`ZF)!+<}qv(1*IO>EhHoB1Nc@ zlub*gpP04W)li8ER5NOvofYn1MV2Kj{e!*NPFj;y1bs!V%?wtgz8IGL>QBsd=m!x~ zL(+xUC+?=n-S|H6|yL^cqSvW&@{!nviwB~tx$B9wk3aLDOqW6DZ*2> zt^PYdP1pU~AmS_`Vy(qkMpW8bt?G%C+~Z&}#@W|8wmv042=Mf?b)>#L8%r0C6WiB= zXUmsW=t4h3-f@oL;J|IF%~5`DRQ_~YLQ=#!w#+CEou41g#eBOt?`&7b8^12M@8py# zX;6^crh&}gbweWNZZFe}1O0Wdxpv%}ocnb(*?|XwUA?@w(){|zmEx(zQ4LpJoabUF z#$5+9_+gA2_1u@_8*o)^Nl}y7uI8+U`qGYoVaYz>Hvk4%^PFquY{bq5%vCV@%d;xp z`3b0BZ?ZizWoU*8-;Ic7JHDa%juT^+9RbKA4kc^_4s%+Kw49*UQ{XdG2lfB4;;vQu zkI`xybF!Pb?yiA^t!V+);&wuL*dXh+0%y&(!sN`ZX7Z4$+QugwzO9SXF3sKfoIA?j zS*i-;s})6vlNLJP__{;$YnD`sVH|1=UG=*ESyl=mw>6(@b#O;(y~R`z<+MNcOQ2P9Qp;Rbi8wLh~qOEqpwzwh)e#7*lCm&FrT|uX>y_>(eIWS zy22|BbDCL(9#^U|gi+Mk;)h`^%BtW)JA_TI2^b&W?kRC#oqhxG zhXzDPyUU^fnekXv)>-Xi#`JQJBQnCGcdsfDSwp{zERvlJH5u|w^MQb;S=w)4zL+`I z7^r1Up_IsSTe=7N+)_=awVUR+06i&K&H=+21SoM9y*ocnNjnY@0Lr51!!P=cELAG= z6U@tJpPA_ktB$`O90;64z6sjHCVS1UUY#C0}E=xrBd)ET$EwVy{RjuTA zBC4D%XX$T@D=$=6aqjLFoD=T0=~r9DNh9W))9fmiXE|E^M3Hp|FjFfrxVfE7uN=Q0 zrM7qS-;ecIo@KZ{{;FKVd~uMFnJwGZDKAo7 z?^G4zS*5J9V~mc@;Ko+On?gNmPb4N;;e@uK)c62wzXhpn37!M(vA+QzhO<)hDBx4@+}0A#e+k7) zMw;!r_zMS6q=?_F-gIl5*+?&OFM}zYKT#Kiai%phkI_(kk5>5B=)nOcW=Rc{vG;bQ z@WO;IuAdHm%Q?xl_cKdSSBM6w%2CPK3*+mtGF=FN@)?_?3JA3@UsH)Hef(#K}>SlEvpYJT&DF1ccRzXr6YPs8S79zva@85V@rU`_}DIwZ)sK!Ontqqc~tdjRJI{I zlubTLSZ+a-fC*2|Z*k-Z!b9BnYVrb-?{v@-6S@mp8$>u|U77-n*pBS$j!p4C=EWYG zSsfyXp-6{mY|NOhMSO#^vtiAJgOI-cPHZYNJS6SO?Wk>>%k8AMchSq3*ZWi0qH8V{GXYfjX!>j7az!~^Czv^`E%!2h%d!Z)^yzntKe_q*o6P^* ziLPqP;(Hnv(Ym=xNWK+G4go5Z{?$O(N<(>|=BF!Mvvc#AR2LUQ0okyLcE`7u8j(6d_ z48!*!7Zer8b3F;JKuL`2?E=F^!j5--$J2y)$CnWPe(!dR=(Z7Lj(iVGN9!t0y-Jbu znQA|h#tqnSUNYhpOkTZEM97l{kXCBkX9s0trzD^2Av|rJbNze^-i{Lc&@T-?fz+s{ zFyua!fTqRe*;hO6bEsszKv8iHa|c^3cA&V&En-0Y*O`;|t%}Yw?td$B&-qT)cekbO zTt!ZuI^|nXHvHj`iiM>^aLR2EFU>Zr6*g`$c4r|$ny#hcFRtXogqB*x-Zr>eG*Xr@ zs3&bXM{jfsPGqW{t}aZiv8g>fy8GK7WrEq}r!f#N`Jb z0C&t5n&LZ?#~Y!Z%RJ`Z=kI~RFac`cGb}W}TvEWTn(uH#gdf~QJNW(~;N&4~EjFxK z+j`YWoXO)xX#aS|(5X8>v~yC2i(tUv%3t#@=Q9i4PpJm&YBb-SZ^GlaRJHE7&Ql(` zBNLyTOsCPVo;-O{PF+12^w*%Rdjtfayh#`a{GI<5ZS6>LsCIdrl$69y=a$1HafE6s ztEmS{3KqFBXrbRCHyw}~kZGHono@r0%AKY|6UL{HRW5Onq1F3)DFpnk-Mg0{w>FCA z*}+&Bfi~|`VB8-(|JkukYHSIF3ptMP=ts0sA2~ zesSm#(Y~3+AlNCZoHnPVs_9imYAqd^oYbwT)ScYeIG-Oyw`f(!hzc#UH_VM9AtGrd zW|3cD^`v4&x5>ti6xO}{CUxuW?7nil{aWc$b#sL$LLB8(ucxXfJqZ=;DK4jdm=LSI z8ve2Hgl0a=gAQAsrKq_4iaFf8Agncv)&` z?C9YkwO#|oh@hbOo~mM6jeFA`x4@BZi#kHWk)HFa(H3~iz{wf;rCwXIxS6%jwN1D0 zzVY3$vfzD<7JQ}2%vqrBuNyrjxB(ho3 zlQ~V456t3)p%_OB&QolfnN08Ml&oCUAJ2kB_F%wNn=|-7A3yFLk0$bt(%soo9!;er zR@~86=j;|y@^L10j2=};Pmi?h?7*(nN-kz%kdq+R=97)`{sD?;XjgV_9?$+izg9Ne z9cPd*?Z=V~w(|J_Z{y>uAh~+fHtB(AwtCXm+M_F!#Uy_Z_Nr-oll?e7DfjHx=soUd z@QIO*mMf2Yk4$|X*`yL|wIYZ&AsQMo&p0(@>C#nmBiN&GV9BP=nLJt|YFC-r_vmqd zd1m;7rl$T%q%e+CMGY6-cR^0weB=qmE03UgMsz#K5o*pKri{7f{@z!$-G{i{S1rG^ zWpa9BgjwRWb|YMc={`bd9ob-z+critFb-|2juENGhK9;75*;4vOqFuAi07Fx6#mxejXwfC+*xRV<(KL+4QAnbEf$9agU^ z;!|V9dsNIv9t6b;b@w-7b|v%_702aP25)tJFJ_4|aB84Co=o4Dn4O{)hqT$$|3XSL zm6perUyIBOjVrjL&0-I`y6cSFUH-G_1naMrVG0+F?JL5cJQ0k`X>M1%cpj^!>OZt@ zEM?wmUH`|xsEo#oD9Uf6RrU^24TqxJs8xvv8|uv|ueWj-JTlc>NuGPT^Y^4uW4baq zqS!G1sCVPK{oU`K5XQ&CI96q?<6o;PYlHO-B<=Rg|Amn`xjo*kU~GS4ZJ z*{sC0(UNNs8%b$#f4{3Og;jCP!&m4|&Yf=ZmJUp{yNl@xXPWYCQ8@pB^D>Q@P2StH zmhDrz+}^rmvmtwl`yKbcXYc=sfBoj6{XD~ZsOY}qoVBSs42xmotZt6)?Xt0GridGmkhL%}e&>34o7 zOh`wXFXa{LcSa6UUaK)HQe!r~y;@kSV+W}k@w<U%D@o<46I36c2dgvJ)2&|`k)t|UJy#vJ5)m!mESVnBRfUt$Owr0? zg;)fOJ5lW}*m6A7biCTi(-#+AwXyGFC9zB88H*W;1|wnWD&eB4A86HMj%TTNRWoFy z#?Rz?G&oVtM;9~B$A2^$2;#2nP(_5le1fVuYW?~Vi7jS^thO!BvT}l(r=hh4J)yHK ztui}maJzIBU0DsDN1HWO;{BGgdzZ?(N|?e(mo09T(oApg%RcQlZW}V5D_A!A3pPt> zsYF+Ob2ZehySK5HqV9JohPz#_HsVjJp})UU_cIyViOeL)c)?zUP;)i`#)U-S6M#Sms!G3ZE<_csTg;f`

zAtC#q8uOQ*FC<{b44P5I6pyDMY+(f0NuiLMz5m z3uE4YoxH`PNw~B+$zQGiA!BJpU&3Ujw&=6hoSGy>EDz||ooq{3S<`2(xh-tP-S^}a zJuE-!kxzd@ntoIBm*y)qkDZKpex{bsr+!~^WK*##LY&F&`$OMAW8v9s<>LT$f{7CA ziLQ%#9S&i79GzFyu~~TgaQ81}$)<*Bi7=B{9Qx{j7JF`Ry4iyle>N(A9w=Hqwd#zb zRZn;yqMB5W1gP5WXW^y?UgyRMAU<+tTe|od@7P6re*S32!=@ZoOG+jKvCv3TWP4e5 zQVQb5Gc_Uv8Km(Rl7EFRX$^mq#l<{iwNrH@0{bV4*_E{9Ji^RvLGSd^nNz@>FofF>V&-&Ww4?-$=%8t;zqx|@id+m;` zPyfy!{%cE$?D+Sl^j}~3|L?*}9=YaN50BSr;bB|b_Pc_Dug79dZy&0oZrxGN=T!fQ zJkp*9NUXu!@7nF50)|bgh0=i0dMZyAB=olkXFtIZ{R=qr2A^SACzOTzj zXB1y|@resEFcMEFQ^XFYJ5mr^F&x8ogpN-TIub|kwGA|9EHO0dz7VwfFeS$eC%hi= z=5qC2PcOtv4vhonUJt{eU$TlqLZ)e|1gjRLMeM$4;1Ez0F0M41%BWf% zbp--oKQ4mx=l8*f%(!ek)otRuRgTQxGchsgDY&IMN9C~5qWsO9-w7Y9(y%OdqsQbv z>>)e3Q5TX#qL&-9)17RT2C$LIq$ckY#kRIV8sHTe1VMmUCk}v`qHh(so1yA&_-&ropB<=FL{GOsimDjY4Pay8 zbo=%xz$>uwBw?4MS|ZlgwldR0R@uLQSV)veo9MnVwKBOq)+a9)b0vi|NX{c+TRY1T z-FpbTDi81^fUM2{tUk7KEUma$x-?X2a&l4!gTVl@ZOwXZc^M$L66O`&&M1D*IMcg( zkUK+mX!B!V-Wq89`QhkwGv4>y|Ns4>$cY~T!cIZ%oZv5_%a1ssJA7V@l1_*>p&#jJ M8UC1e`Q|VGA1FA)RR910 delta 95082 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

(y9I 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

  • {fp^ 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 Date: Wed, 30 Oct 2024 18:25:29 +0900 Subject: [PATCH 08/11] =?UTF-8?q?[IDLE-000]=20=EC=8B=A4=EC=A0=9C=EB=A1=9C?= =?UTF-8?q?=20=EB=A1=9C=EA=B9=85=EC=9D=84=20=EB=B3=B4=EB=82=B4=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CenterAccountRegisterationLogBuilder.swift | 2 ++ .../Projects/Module/Logger/Sources/AmplitudeLogger.swift | 6 +++++- .../Logger/Sources/CreatePost/CreatePostLogBuilder.swift | 2 ++ project/Projects/Module/Logger/Sources/Logger.swift | 2 +- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/project/Projects/Module/Logger/Sources/AccountRegisteration/CenterAccountRegisterationLogBuilder.swift b/project/Projects/Module/Logger/Sources/AccountRegisteration/CenterAccountRegisterationLogBuilder.swift index fce614e8..b27a8fc8 100644 --- a/project/Projects/Module/Logger/Sources/AccountRegisteration/CenterAccountRegisterationLogBuilder.swift +++ b/project/Projects/Module/Logger/Sources/AccountRegisteration/CenterAccountRegisterationLogBuilder.swift @@ -9,6 +9,8 @@ import Foundation public struct AccountRegisterationLogObject: LoggingObject { + public var eventType: String = "AccountRegister" + public var properties: [String : Any] { [ "step": step, diff --git a/project/Projects/Module/Logger/Sources/AmplitudeLogger.swift b/project/Projects/Module/Logger/Sources/AmplitudeLogger.swift index 4d440ed9..10b59132 100644 --- a/project/Projects/Module/Logger/Sources/AmplitudeLogger.swift +++ b/project/Projects/Module/Logger/Sources/AmplitudeLogger.swift @@ -29,8 +29,12 @@ public class AmplitudeLogger: Logger { objectPublisher .throttle(for: 0.3, scheduler: DispatchQueue.main, latest: true) - .sink { object in + .sink { [weak self] object in + let eventType = object.eventType + let eventProperties = object.properties + + self?.amplitude.track(eventType: eventType, eventProperties: eventProperties) } .store(in: &bag) } diff --git a/project/Projects/Module/Logger/Sources/CreatePost/CreatePostLogBuilder.swift b/project/Projects/Module/Logger/Sources/CreatePost/CreatePostLogBuilder.swift index 43fcf6aa..3d10dc70 100644 --- a/project/Projects/Module/Logger/Sources/CreatePost/CreatePostLogBuilder.swift +++ b/project/Projects/Module/Logger/Sources/CreatePost/CreatePostLogBuilder.swift @@ -9,6 +9,8 @@ import Foundation public struct CreatePostLogObject: LoggingObject { + public var eventType: String = "CreatePost" + public var properties: [String : Any] { [ "step": step, diff --git a/project/Projects/Module/Logger/Sources/Logger.swift b/project/Projects/Module/Logger/Sources/Logger.swift index 92aebc68..b6e71678 100644 --- a/project/Projects/Module/Logger/Sources/Logger.swift +++ b/project/Projects/Module/Logger/Sources/Logger.swift @@ -9,7 +9,7 @@ import Foundation public protocol LoggingObject { - + var eventType: String { get } var properties: [String: Any] { get } } From cbeae49b491aa41bea5f908ad2b64032719c735b Mon Sep 17 00:00:00 2001 From: J0onYEong Date: Thu, 31 Oct 2024 00:13:58 +0900 Subject: [PATCH 09/11] =?UTF-8?q?[IDLE-000]=20=EC=98=A4=ED=83=88=EC=9E=90?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Module/Logger/Sources/CreatePost/CreatePostLogBuilder.swift | 2 +- project/Projects/Module/Logger/Sources/MockLogger.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/project/Projects/Module/Logger/Sources/CreatePost/CreatePostLogBuilder.swift b/project/Projects/Module/Logger/Sources/CreatePost/CreatePostLogBuilder.swift index 3d10dc70..bddd0c5f 100644 --- a/project/Projects/Module/Logger/Sources/CreatePost/CreatePostLogBuilder.swift +++ b/project/Projects/Module/Logger/Sources/CreatePost/CreatePostLogBuilder.swift @@ -37,7 +37,7 @@ public class CreatePostLogBuilder { self.stepName = stepName } - public func build() -> AccountRegisterationLogObject { + public func build() -> CreatePostLogObject { .init(step: step, stepName: stepName) } } diff --git a/project/Projects/Module/Logger/Sources/MockLogger.swift b/project/Projects/Module/Logger/Sources/MockLogger.swift index 59ac69e3..01a10083 100644 --- a/project/Projects/Module/Logger/Sources/MockLogger.swift +++ b/project/Projects/Module/Logger/Sources/MockLogger.swift @@ -12,6 +12,6 @@ public class MockLogger: Logger { public init() { } public func send(_ object: any LoggingObject) { - print(object.properties) + print("[\(object.eventType)] \(object.properties)") } } From 427efe2268efb82d5aa7ab24f715522d385bfbda Mon Sep 17 00:00:00 2001 From: J0onYEong Date: Thu, 31 Oct 2024 00:21:25 +0900 Subject: [PATCH 10/11] =?UTF-8?q?[IDLE-000]=20=EB=B9=8C=EB=8D=94=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=ED=86=A0=EC=BD=9C=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CenterAccountRegisterationLogBuilder.swift | 6 +++--- .../Sources/CreatePost/CreatePostLogBuilder.swift | 6 +++--- .../Module/Logger/Sources/LogObjectBuilder.swift | 14 ++++++++++++++ 3 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 project/Projects/Module/Logger/Sources/LogObjectBuilder.swift diff --git a/project/Projects/Module/Logger/Sources/AccountRegisteration/CenterAccountRegisterationLogBuilder.swift b/project/Projects/Module/Logger/Sources/AccountRegisteration/CenterAccountRegisterationLogBuilder.swift index b27a8fc8..ede8dae8 100644 --- a/project/Projects/Module/Logger/Sources/AccountRegisteration/CenterAccountRegisterationLogBuilder.swift +++ b/project/Projects/Module/Logger/Sources/AccountRegisteration/CenterAccountRegisterationLogBuilder.swift @@ -27,7 +27,7 @@ public struct AccountRegisterationLogObject: LoggingObject { } } -public class AccountRegisterationLogBuilder { +public class AccountRegisterationLogBuilder: LogObjectBuilder { let step: Int let stepName: String @@ -37,7 +37,7 @@ public class AccountRegisterationLogBuilder { self.stepName = stepName } - public func build() -> AccountRegisterationLogObject { - .init(step: step, stepName: stepName) + public func build() -> LoggingObject { + AccountRegisterationLogObject(step: step, stepName: stepName) } } diff --git a/project/Projects/Module/Logger/Sources/CreatePost/CreatePostLogBuilder.swift b/project/Projects/Module/Logger/Sources/CreatePost/CreatePostLogBuilder.swift index bddd0c5f..70579c51 100644 --- a/project/Projects/Module/Logger/Sources/CreatePost/CreatePostLogBuilder.swift +++ b/project/Projects/Module/Logger/Sources/CreatePost/CreatePostLogBuilder.swift @@ -27,7 +27,7 @@ public struct CreatePostLogObject: LoggingObject { } } -public class CreatePostLogBuilder { +public class CreatePostLogBuilder: LogObjectBuilder { let step: Int let stepName: String @@ -37,7 +37,7 @@ public class CreatePostLogBuilder { self.stepName = stepName } - public func build() -> CreatePostLogObject { - .init(step: step, stepName: stepName) + public func build() -> LoggingObject { + CreatePostLogObject(step: step, stepName: stepName) } } diff --git a/project/Projects/Module/Logger/Sources/LogObjectBuilder.swift b/project/Projects/Module/Logger/Sources/LogObjectBuilder.swift new file mode 100644 index 00000000..1ff1d9b6 --- /dev/null +++ b/project/Projects/Module/Logger/Sources/LogObjectBuilder.swift @@ -0,0 +1,14 @@ +// +// LogObjectBuilder.swift +// Logger +// +// Created by choijunios on 10/31/24. +// + +import Foundation + +public protocol LogObjectBuilder { + + /// 로깅 오브젝트를 생성한다. + func build() -> LoggingObject +} From 862a9cde34ec9bd85395e7c873e7e386b3e05ce3 Mon Sep 17 00:00:00 2001 From: J0onYEong Date: Thu, 31 Oct 2024 00:29:57 +0900 Subject: [PATCH 11/11] =?UTF-8?q?[IDLE-000]=20=EB=A6=AC=ED=8C=A9=ED=86=A0?= =?UTF-8?q?=EB=A7=81=EC=9C=BC=EB=A1=9C=20=EC=9D=B8=ED=95=9C=20=EC=98=88?= =?UTF-8?q?=EC=8B=9C=EC=95=B1=20=EC=82=AC=EC=9D=B4=EB=93=9C=20=EC=9D=B4?= =?UTF-8?q?=ED=8E=99=ED=8A=B8=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Auth/ExampleApp/Sources/SceneDelegate.swift | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/project/Projects/Presentation/Feature/Auth/ExampleApp/Sources/SceneDelegate.swift b/project/Projects/Presentation/Feature/Auth/ExampleApp/Sources/SceneDelegate.swift index c109150c..965f8386 100644 --- a/project/Projects/Presentation/Feature/Auth/ExampleApp/Sources/SceneDelegate.swift +++ b/project/Projects/Presentation/Feature/Auth/ExampleApp/Sources/SceneDelegate.swift @@ -25,7 +25,6 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { guard let windowScene = scene as? UIWindowScene else { return } DependencyInjector.shared.assemble(MockAssemblies) - DependencyInjector.shared.register(CenterRegisterLogger.self, CenterAuthLogger()) authCoordinator = .init() @@ -63,12 +62,3 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { authCoordinator?.start() } } - -class CenterAuthLogger: CenterRegisterLogger { - - func logCenterRegisterStep(stepName: String, stepIndex: Int) { } - - func startCenterRegister() { } - - func logCenterRegisterDuration() { } -}