From 50a8288e1da655dd7fbbf88af761ea349487df32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Sousa?= Date: Fri, 16 Jun 2023 11:07:26 -0300 Subject: [PATCH 01/23] - Inicio projeto. --- .DS_Store | Bin 0 -> 6148 bytes .../KssiusBank.xcodeproj/project.pbxproj | 899 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 5 + .../UserInterfaceState.xcuserstate | Bin 0 -> 42077 bytes .../WorkspaceSettings.xcsettings | 14 + .../xcschemes/KssiusBank.xcscheme | 123 +++ .../xcschemes/xcschememanagement.plist | 32 + .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 5 + .../UserInterfaceState.xcuserstate | Bin 0 -> 130857 bytes .../WorkspaceSettings.xcsettings | 14 + .../xcdebugger/Breakpoints_v2.xcbkptlist | 6 + KssiusBank/KssiusBank/AppDelegate.swift | 81 ++ .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 13 + .../KssiusBank/Assets.xcassets/Contents.json | 6 + .../Logo.imageset/Contents.json | 21 + .../Assets.xcassets/Logo.imageset/Logo.png | Bin 0 -> 4662 bytes .../logout.imageset/Contents.json | 21 + .../logout.imageset/logout 2.png | Bin 0 -> 519 bytes KssiusBank/KssiusBank/Common/Constants.swift | 8 + .../KssiusBank/Common/error/BankFailure.swift | 7 + .../AutenticationServiceDatasource.swift | 8 + ...henticationServiceDatasourceProtocol.swift | 8 + .../Core/Data/Models/LoginRequestModel.swift | 8 + .../Core/Data/Models/UserAccountModel.swift | 28 + .../AutenticationRepository.swift | 8 + .../AuthenticationRepositoryProtocol.swift | 12 + KssiusBank/KssiusBank/Info.plist | 25 + .../KssiusBank.xcdatamodeld/.xccurrentversion | 5 + .../KssiusBank.xcdatamodel/contents | 4 + KssiusBank/KssiusBank/LaunchScreen.storyboard | 25 + KssiusBank/KssiusBank/Main.storyboard | 24 + KssiusBank/KssiusBank/SceneDelegate.swift | 55 ++ .../Autentication/LoginInteractor.swift | 41 + .../Scenes/Autentication/LoginModels.swift | 31 + .../Scenes/Autentication/LoginPresenter.swift | 31 + .../Scenes/Autentication/LoginRouter.swift | 60 ++ .../Autentication/LoginViewController.swift | 89 ++ .../Scenes/Autentication/LoginWorker.swift | 20 + .../Autehntication/AutenticationApi.swift | 8 + .../KssiusBank/Services/NetworkService.swift | 87 ++ .../Services/URLSessionProtocol.swift | 8 + KssiusBank/KssiusBank/ViewController.swift | 19 + .../Workers/AuthenticationWorker.swift | 8 + .../AutenticationServiceDatasourceTest.swift | 82 ++ .../AutenticationRepositoryTest.swift | 71 ++ .../MockAutenticationServiceDatasource.swift | 35 + .../KssiusBankTests/KssiusBankTests.swift | 36 + KssiusBank/KssiusBankTests/MockSession.swift | 17 + KssiusBank/KssiusBankTests/Seeds.swift | 25 + .../Services/MockURLProtocol.swift | 58 ++ .../Services/NetworkServiceTest.swift | 74 ++ .../KssiusBankUITests/KssiusBankUITests.swift | 41 + .../KssiusBankUITestsLaunchTests.swift | 32 + KssiusBank/Podfile | 19 + 59 files changed, 2401 insertions(+) create mode 100644 .DS_Store create mode 100644 KssiusBank/KssiusBank.xcodeproj/project.pbxproj create mode 100644 KssiusBank/KssiusBank.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 KssiusBank/KssiusBank.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 KssiusBank/KssiusBank.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 KssiusBank/KssiusBank.xcodeproj/project.xcworkspace/xcuserdata/cassio.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 KssiusBank/KssiusBank.xcodeproj/project.xcworkspace/xcuserdata/cassio.xcuserdatad/WorkspaceSettings.xcsettings create mode 100644 KssiusBank/KssiusBank.xcodeproj/xcshareddata/xcschemes/KssiusBank.xcscheme create mode 100644 KssiusBank/KssiusBank.xcodeproj/xcuserdata/cassio.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 KssiusBank/KssiusBank.xcworkspace/contents.xcworkspacedata create mode 100644 KssiusBank/KssiusBank.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 KssiusBank/KssiusBank.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/WorkspaceSettings.xcsettings create mode 100644 KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 KssiusBank/KssiusBank/AppDelegate.swift create mode 100644 KssiusBank/KssiusBank/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 KssiusBank/KssiusBank/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 KssiusBank/KssiusBank/Assets.xcassets/Contents.json create mode 100644 KssiusBank/KssiusBank/Assets.xcassets/Logo.imageset/Contents.json create mode 100644 KssiusBank/KssiusBank/Assets.xcassets/Logo.imageset/Logo.png create mode 100644 KssiusBank/KssiusBank/Assets.xcassets/logout.imageset/Contents.json create mode 100644 KssiusBank/KssiusBank/Assets.xcassets/logout.imageset/logout 2.png create mode 100644 KssiusBank/KssiusBank/Common/Constants.swift create mode 100644 KssiusBank/KssiusBank/Common/error/BankFailure.swift create mode 100644 KssiusBank/KssiusBank/Core/Data/DataSources/AutenticationServiceDatasource.swift create mode 100644 KssiusBank/KssiusBank/Core/Data/DataSources/AuthenticationServiceDatasourceProtocol.swift create mode 100644 KssiusBank/KssiusBank/Core/Data/Models/LoginRequestModel.swift create mode 100644 KssiusBank/KssiusBank/Core/Data/Models/UserAccountModel.swift create mode 100644 KssiusBank/KssiusBank/Core/Data/Repositories/AutenticationRepository.swift create mode 100644 KssiusBank/KssiusBank/Core/Data/Repositories/AuthenticationRepositoryProtocol.swift create mode 100644 KssiusBank/KssiusBank/Info.plist create mode 100644 KssiusBank/KssiusBank/KssiusBank.xcdatamodeld/.xccurrentversion create mode 100644 KssiusBank/KssiusBank/KssiusBank.xcdatamodeld/KssiusBank.xcdatamodel/contents create mode 100644 KssiusBank/KssiusBank/LaunchScreen.storyboard create mode 100644 KssiusBank/KssiusBank/Main.storyboard create mode 100644 KssiusBank/KssiusBank/SceneDelegate.swift create mode 100644 KssiusBank/KssiusBank/Scenes/Autentication/LoginInteractor.swift create mode 100644 KssiusBank/KssiusBank/Scenes/Autentication/LoginModels.swift create mode 100644 KssiusBank/KssiusBank/Scenes/Autentication/LoginPresenter.swift create mode 100644 KssiusBank/KssiusBank/Scenes/Autentication/LoginRouter.swift create mode 100644 KssiusBank/KssiusBank/Scenes/Autentication/LoginViewController.swift create mode 100644 KssiusBank/KssiusBank/Scenes/Autentication/LoginWorker.swift create mode 100644 KssiusBank/KssiusBank/Services/Autehntication/AutenticationApi.swift create mode 100755 KssiusBank/KssiusBank/Services/NetworkService.swift create mode 100644 KssiusBank/KssiusBank/Services/URLSessionProtocol.swift create mode 100644 KssiusBank/KssiusBank/ViewController.swift create mode 100644 KssiusBank/KssiusBank/Workers/AuthenticationWorker.swift create mode 100644 KssiusBank/KssiusBankTests/Core/Data/datasources/AutenticationServiceDatasourceTest.swift create mode 100644 KssiusBank/KssiusBankTests/Core/Repositories/AutenticationRepositoryTest.swift create mode 100644 KssiusBank/KssiusBankTests/Core/Repositories/MockAutenticationServiceDatasource.swift create mode 100644 KssiusBank/KssiusBankTests/KssiusBankTests.swift create mode 100644 KssiusBank/KssiusBankTests/MockSession.swift create mode 100644 KssiusBank/KssiusBankTests/Seeds.swift create mode 100644 KssiusBank/KssiusBankTests/Services/MockURLProtocol.swift create mode 100644 KssiusBank/KssiusBankTests/Services/NetworkServiceTest.swift create mode 100644 KssiusBank/KssiusBankUITests/KssiusBankUITests.swift create mode 100644 KssiusBank/KssiusBankUITests/KssiusBankUITestsLaunchTests.swift create mode 100644 KssiusBank/Podfile diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5180964ced36a26eb61f06213d4c33d55b1044ae GIT binary patch literal 6148 zcmeHKyG{c^3>-s>NED=`++W}iR#Er@J|HBdBjS)C1>IGA7oW!XA*9mI( z2Sbbi#0Aq~T*oXyY@Q(Y!ZDE@Ber7ALjolNjoVZ1^$%+w%FWn)_kSvt+SW&Ufbvobg%iOyKx;9 nhG@scXvf@mJHCmctZTmJ^IkY62A%n!6ZL1nb&*MdzgFN2jByu} literal 0 HcmV?d00001 diff --git a/KssiusBank/KssiusBank.xcodeproj/project.pbxproj b/KssiusBank/KssiusBank.xcodeproj/project.pbxproj new file mode 100644 index 000000000..47d19155a --- /dev/null +++ b/KssiusBank/KssiusBank.xcodeproj/project.pbxproj @@ -0,0 +1,899 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + DF0BA7D02A3BE5CE00A812F4 /* KssiusBank.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA7CE2A3BE5CE00A812F4 /* KssiusBank.xcdatamodeld */; }; + DF0BA7F72A3BE65800A812F4 /* NetworkServiceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFEC186A2A3BDE29001277A2 /* NetworkServiceTest.swift */; }; + DF0BA7F82A3BE65B00A812F4 /* MockURLProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFEC186D2A3BDE99001277A2 /* MockURLProtocol.swift */; }; + DF0BA8042A3BE6CA00A812F4 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DF0BA7FA2A3BE6C900A812F4 /* Main.storyboard */; }; + DF0BA8072A3BE6CA00A812F4 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA7FD2A3BE6C900A812F4 /* SceneDelegate.swift */; }; + DF0BA8092A3BE6CA00A812F4 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA7FF2A3BE6C900A812F4 /* AppDelegate.swift */; }; + DF0BA80C2A3BE6CA00A812F4 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8022A3BE6CA00A812F4 /* ViewController.swift */; }; + DF0BA80D2A3BE6CA00A812F4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DF0BA8032A3BE6CA00A812F4 /* LaunchScreen.storyboard */; }; + DF0BA80E2A3BE6D400A812F4 /* KssiusBankTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA7FB2A3BE6C900A812F4 /* KssiusBankTests.swift */; }; + DF0BA80F2A3BE6ED00A812F4 /* KssiusBankUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA7FC2A3BE6C900A812F4 /* KssiusBankUITestsLaunchTests.swift */; }; + DF0BA8102A3BE6ED00A812F4 /* KssiusBankUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8002A3BE6CA00A812F4 /* KssiusBankUITests.swift */; }; + DF0BA8112A3BE9F200A812F4 /* UserAccountModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFEC18532A3BD28C001277A2 /* UserAccountModel.swift */; }; + DF0BA8122A3BE9F300A812F4 /* UserAccountModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFEC18532A3BD28C001277A2 /* UserAccountModel.swift */; }; + DF0BA8132A3BEC4700A812F4 /* AutenticationApi.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFEC18632A3BD4A2001277A2 /* AutenticationApi.swift */; }; + DF0BA8142A3BEC4700A812F4 /* URLSessionProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFEC18662A3BDDA0001277A2 /* URLSessionProtocol.swift */; }; + DF0BA8152A3BEC4700A812F4 /* NetworkService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFEC18592A3BD423001277A2 /* NetworkService.swift */; }; + DF0BA8162A3BEC4800A812F4 /* AutenticationApi.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFEC18632A3BD4A2001277A2 /* AutenticationApi.swift */; }; + DF0BA8172A3BEC4800A812F4 /* URLSessionProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFEC18662A3BDDA0001277A2 /* URLSessionProtocol.swift */; }; + DF0BA8182A3BEC4800A812F4 /* NetworkService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFEC18592A3BD423001277A2 /* NetworkService.swift */; }; + DF0BA8242A3BEE3D00A812F4 /* BankFailure.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFEC185E2A3BD43B001277A2 /* BankFailure.swift */; }; + DF0BA8252A3BEE3D00A812F4 /* BankFailure.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFEC185E2A3BD43B001277A2 /* BankFailure.swift */; }; + DF0BA8272A3BEEED00A812F4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DF0BA8012A3BE6CA00A812F4 /* Assets.xcassets */; }; + DF0BA82F2A3BF03900A812F4 /* LoginPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8292A3BF03900A812F4 /* LoginPresenter.swift */; }; + DF0BA8302A3BF03900A812F4 /* LoginWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA82A2A3BF03900A812F4 /* LoginWorker.swift */; }; + DF0BA8312A3BF03900A812F4 /* LoginRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA82B2A3BF03900A812F4 /* LoginRouter.swift */; }; + DF0BA8322A3BF03900A812F4 /* LoginModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA82C2A3BF03900A812F4 /* LoginModels.swift */; }; + DF0BA8332A3BF03900A812F4 /* LoginViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA82D2A3BF03900A812F4 /* LoginViewController.swift */; }; + DF0BA8342A3BF03900A812F4 /* LoginInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA82E2A3BF03900A812F4 /* LoginInteractor.swift */; }; + DF0BA8362A3BF05800A812F4 /* AuthenticationWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFEC18562A3BD314001277A2 /* AuthenticationWorker.swift */; }; + DF0BA8372A3BF05800A812F4 /* AuthenticationWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFEC18562A3BD314001277A2 /* AuthenticationWorker.swift */; }; + DF0BA8392A3BFB6100A812F4 /* Seeds.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8382A3BFB6100A812F4 /* Seeds.swift */; }; + DF0BA8432A3C7AAD00A812F4 /* AuthenticationRepositoryProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8422A3C7AAD00A812F4 /* AuthenticationRepositoryProtocol.swift */; }; + DF0BA8472A3C7C0200A812F4 /* AutenticationRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8462A3C7C0200A812F4 /* AutenticationRepository.swift */; }; + DF0BA8492A3C7C8E00A812F4 /* AutenticationServiceDatasource.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8482A3C7C8E00A812F4 /* AutenticationServiceDatasource.swift */; }; + DF0BA84A2A3C7C8E00A812F4 /* AutenticationServiceDatasource.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8482A3C7C8E00A812F4 /* AutenticationServiceDatasource.swift */; }; + DF0BA8552A3C836A00A812F4 /* AutenticationServiceDatasourceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8532A3C836A00A812F4 /* AutenticationServiceDatasourceTest.swift */; }; + DF0BA8582A3C87AE00A812F4 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8572A3C87AE00A812F4 /* Constants.swift */; }; + DF0BA8592A3C87AE00A812F4 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8572A3C87AE00A812F4 /* Constants.swift */; }; + DF0BA85B2A3C976900A812F4 /* LoginRequestModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA85A2A3C976900A812F4 /* LoginRequestModel.swift */; }; + DF0BA85C2A3C976900A812F4 /* LoginRequestModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA85A2A3C976900A812F4 /* LoginRequestModel.swift */; }; + DF0BA85E2A3C985500A812F4 /* AuthenticationServiceDatasourceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA85D2A3C985500A812F4 /* AuthenticationServiceDatasourceProtocol.swift */; }; + DF0BA85F2A3C985500A812F4 /* AuthenticationServiceDatasourceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA85D2A3C985500A812F4 /* AuthenticationServiceDatasourceProtocol.swift */; }; + DF0BA8622A3C998100A812F4 /* AutenticationRepositoryTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8602A3C998100A812F4 /* AutenticationRepositoryTest.swift */; }; + DF0BA8652A3C9A3E00A812F4 /* MockSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8632A3C9A3E00A812F4 /* MockSession.swift */; }; + DF0BA8662A3C9B4600A812F4 /* AuthenticationRepositoryProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8422A3C7AAD00A812F4 /* AuthenticationRepositoryProtocol.swift */; }; + DF0BA8692A3C9BA900A812F4 /* MockAutenticationServiceDatasource.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8672A3C9BA900A812F4 /* MockAutenticationServiceDatasource.swift */; }; + DF0BA86A2A3C9CB700A812F4 /* AutenticationRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8462A3C7C0200A812F4 /* AutenticationRepository.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + DF0BA7DC2A3BE5D000A812F4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DFEC18022A3BCFF9001277A2 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DF0BA7C22A3BE5CD00A812F4; + remoteInfo = KssiusBank; + }; + DF0BA7E62A3BE5D100A812F4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DFEC18022A3BCFF9001277A2 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DF0BA7C22A3BE5CD00A812F4; + remoteInfo = KssiusBank; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 07786122957DD35BED1B07AA /* Pods-KssiusBank-KssiusBankUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KssiusBank-KssiusBankUITests.debug.xcconfig"; path = "Target Support Files/Pods-KssiusBank-KssiusBankUITests/Pods-KssiusBank-KssiusBankUITests.debug.xcconfig"; sourceTree = ""; }; + 1F35001EECB5F430346C58D9 /* Pods-KssiusBank-KssiusBankUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KssiusBank-KssiusBankUITests.release.xcconfig"; path = "Target Support Files/Pods-KssiusBank-KssiusBankUITests/Pods-KssiusBank-KssiusBankUITests.release.xcconfig"; sourceTree = ""; }; + 496CC13B26568A1792A4FF06 /* Pods_KssiusBank.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_KssiusBank.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 67D965C4039A5F4C8DAF287A /* Pods-KssiusBankTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KssiusBankTests.debug.xcconfig"; path = "Target Support Files/Pods-KssiusBankTests/Pods-KssiusBankTests.debug.xcconfig"; sourceTree = ""; }; + 77B528124D5466903948FAD8 /* Pods_KssiusBankTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_KssiusBankTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E03F5BEAD121A2725CAC1CF /* Pods-KssiusBank.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KssiusBank.release.xcconfig"; path = "Target Support Files/Pods-KssiusBank/Pods-KssiusBank.release.xcconfig"; sourceTree = ""; }; + ACDDEAB26AE6197E2B15A29D /* Pods-KssiusBankTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KssiusBankTests.release.xcconfig"; path = "Target Support Files/Pods-KssiusBankTests/Pods-KssiusBankTests.release.xcconfig"; sourceTree = ""; }; + B0965131F0D770E77CA79752 /* Pods-KssiusBank.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KssiusBank.debug.xcconfig"; path = "Target Support Files/Pods-KssiusBank/Pods-KssiusBank.debug.xcconfig"; sourceTree = ""; }; + DF0BA7C32A3BE5CD00A812F4 /* KssiusBank.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = KssiusBank.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DF0BA7CF2A3BE5CE00A812F4 /* KssiusBank.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = KssiusBank.xcdatamodel; sourceTree = ""; }; + DF0BA7DB2A3BE5D000A812F4 /* KssiusBankTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = KssiusBankTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + DF0BA7E52A3BE5D100A812F4 /* KssiusBankUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = KssiusBankUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + DF0BA7FA2A3BE6C900A812F4 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; }; + DF0BA7FB2A3BE6C900A812F4 /* KssiusBankTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KssiusBankTests.swift; sourceTree = ""; }; + DF0BA7FC2A3BE6C900A812F4 /* KssiusBankUITestsLaunchTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KssiusBankUITestsLaunchTests.swift; sourceTree = ""; }; + DF0BA7FD2A3BE6C900A812F4 /* SceneDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + DF0BA7FE2A3BE6C900A812F4 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + DF0BA7FF2A3BE6C900A812F4 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + DF0BA8002A3BE6CA00A812F4 /* KssiusBankUITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KssiusBankUITests.swift; sourceTree = ""; }; + DF0BA8012A3BE6CA00A812F4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + DF0BA8022A3BE6CA00A812F4 /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + DF0BA8032A3BE6CA00A812F4 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; + DF0BA8292A3BF03900A812F4 /* LoginPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginPresenter.swift; sourceTree = ""; }; + DF0BA82A2A3BF03900A812F4 /* LoginWorker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginWorker.swift; sourceTree = ""; }; + DF0BA82B2A3BF03900A812F4 /* LoginRouter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginRouter.swift; sourceTree = ""; }; + DF0BA82C2A3BF03900A812F4 /* LoginModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginModels.swift; sourceTree = ""; }; + DF0BA82D2A3BF03900A812F4 /* LoginViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewController.swift; sourceTree = ""; }; + DF0BA82E2A3BF03900A812F4 /* LoginInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginInteractor.swift; sourceTree = ""; }; + DF0BA8382A3BFB6100A812F4 /* Seeds.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Seeds.swift; sourceTree = ""; }; + DF0BA8422A3C7AAD00A812F4 /* AuthenticationRepositoryProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationRepositoryProtocol.swift; sourceTree = ""; }; + DF0BA8462A3C7C0200A812F4 /* AutenticationRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutenticationRepository.swift; sourceTree = ""; }; + DF0BA8482A3C7C8E00A812F4 /* AutenticationServiceDatasource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutenticationServiceDatasource.swift; sourceTree = ""; }; + DF0BA8532A3C836A00A812F4 /* AutenticationServiceDatasourceTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutenticationServiceDatasourceTest.swift; sourceTree = ""; }; + DF0BA8572A3C87AE00A812F4 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; + DF0BA85A2A3C976900A812F4 /* LoginRequestModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginRequestModel.swift; sourceTree = ""; }; + DF0BA85D2A3C985500A812F4 /* AuthenticationServiceDatasourceProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationServiceDatasourceProtocol.swift; sourceTree = ""; }; + DF0BA8602A3C998100A812F4 /* AutenticationRepositoryTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutenticationRepositoryTest.swift; sourceTree = ""; }; + DF0BA8632A3C9A3E00A812F4 /* MockSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockSession.swift; sourceTree = ""; }; + DF0BA8672A3C9BA900A812F4 /* MockAutenticationServiceDatasource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAutenticationServiceDatasource.swift; sourceTree = ""; }; + DFEC18532A3BD28C001277A2 /* UserAccountModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserAccountModel.swift; sourceTree = ""; }; + DFEC18562A3BD314001277A2 /* AuthenticationWorker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationWorker.swift; sourceTree = ""; }; + DFEC18592A3BD423001277A2 /* NetworkService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkService.swift; sourceTree = ""; }; + DFEC185E2A3BD43B001277A2 /* BankFailure.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BankFailure.swift; sourceTree = ""; }; + DFEC18632A3BD4A2001277A2 /* AutenticationApi.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutenticationApi.swift; sourceTree = ""; }; + DFEC18662A3BDDA0001277A2 /* URLSessionProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLSessionProtocol.swift; sourceTree = ""; }; + DFEC186A2A3BDE29001277A2 /* NetworkServiceTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkServiceTest.swift; sourceTree = ""; }; + DFEC186D2A3BDE99001277A2 /* MockURLProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockURLProtocol.swift; sourceTree = ""; }; + FD57596A225C4608F6EBE669 /* Pods_KssiusBank_KssiusBankUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_KssiusBank_KssiusBankUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + DF0BA7C02A3BE5CD00A812F4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DF0BA7D82A3BE5D000A812F4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DF0BA7E22A3BE5D000A812F4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 8F1F1C114C91695D50430106 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 496CC13B26568A1792A4FF06 /* Pods_KssiusBank.framework */, + FD57596A225C4608F6EBE669 /* Pods_KssiusBank_KssiusBankUITests.framework */, + 77B528124D5466903948FAD8 /* Pods_KssiusBankTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + DF0BA7C42A3BE5CE00A812F4 /* KssiusBank */ = { + isa = PBXGroup; + children = ( + DF0BA8452A3C7B7A00A812F4 /* Core */, + DFEC185C2A3BD43B001277A2 /* Common */, + DFEC18422A3BD060001277A2 /* Services */, + DFEC18412A3BD051001277A2 /* Workers */, + DFEC18402A3BD044001277A2 /* Scenes */, + DF0BA7FF2A3BE6C900A812F4 /* AppDelegate.swift */, + DF0BA8012A3BE6CA00A812F4 /* Assets.xcassets */, + DF0BA7FE2A3BE6C900A812F4 /* Info.plist */, + DF0BA8032A3BE6CA00A812F4 /* LaunchScreen.storyboard */, + DF0BA7FA2A3BE6C900A812F4 /* Main.storyboard */, + DF0BA7FD2A3BE6C900A812F4 /* SceneDelegate.swift */, + DF0BA8022A3BE6CA00A812F4 /* ViewController.swift */, + DF0BA7CE2A3BE5CE00A812F4 /* KssiusBank.xcdatamodeld */, + ); + path = KssiusBank; + sourceTree = ""; + }; + DF0BA7DE2A3BE5D000A812F4 /* KssiusBankTests */ = { + isa = PBXGroup; + children = ( + DF0BA84F2A3C830700A812F4 /* Core */, + DF0BA7FB2A3BE6C900A812F4 /* KssiusBankTests.swift */, + DFEC18692A3BDE0D001277A2 /* Services */, + DF0BA8382A3BFB6100A812F4 /* Seeds.swift */, + DF0BA8632A3C9A3E00A812F4 /* MockSession.swift */, + ); + path = KssiusBankTests; + sourceTree = ""; + }; + DF0BA7E82A3BE5D100A812F4 /* KssiusBankUITests */ = { + isa = PBXGroup; + children = ( + DF0BA8002A3BE6CA00A812F4 /* KssiusBankUITests.swift */, + DF0BA7FC2A3BE6C900A812F4 /* KssiusBankUITestsLaunchTests.swift */, + ); + path = KssiusBankUITests; + sourceTree = ""; + }; + DF0BA8352A3BF04A00A812F4 /* Autentication */ = { + isa = PBXGroup; + children = ( + DF0BA8292A3BF03900A812F4 /* LoginPresenter.swift */, + DF0BA82A2A3BF03900A812F4 /* LoginWorker.swift */, + DF0BA82B2A3BF03900A812F4 /* LoginRouter.swift */, + DF0BA82C2A3BF03900A812F4 /* LoginModels.swift */, + DF0BA82D2A3BF03900A812F4 /* LoginViewController.swift */, + DF0BA82E2A3BF03900A812F4 /* LoginInteractor.swift */, + ); + path = Autentication; + sourceTree = ""; + }; + DF0BA83A2A3C796300A812F4 /* Data */ = { + isa = PBXGroup; + children = ( + DF0BA83C2A3C799300A812F4 /* Repositories */, + DF0BA83B2A3C798800A812F4 /* DataSources */, + DFEC18432A3BD068001277A2 /* Models */, + ); + path = Data; + sourceTree = ""; + }; + DF0BA83B2A3C798800A812F4 /* DataSources */ = { + isa = PBXGroup; + children = ( + DF0BA8482A3C7C8E00A812F4 /* AutenticationServiceDatasource.swift */, + DF0BA85D2A3C985500A812F4 /* AuthenticationServiceDatasourceProtocol.swift */, + ); + path = DataSources; + sourceTree = ""; + }; + DF0BA83C2A3C799300A812F4 /* Repositories */ = { + isa = PBXGroup; + children = ( + DF0BA8422A3C7AAD00A812F4 /* AuthenticationRepositoryProtocol.swift */, + DF0BA8462A3C7C0200A812F4 /* AutenticationRepository.swift */, + ); + path = Repositories; + sourceTree = ""; + }; + DF0BA8452A3C7B7A00A812F4 /* Core */ = { + isa = PBXGroup; + children = ( + DF0BA83A2A3C796300A812F4 /* Data */, + ); + path = Core; + sourceTree = ""; + }; + DF0BA84F2A3C830700A812F4 /* Core */ = { + isa = PBXGroup; + children = ( + DF0BA8522A3C833500A812F4 /* Repositories */, + DF0BA8502A3C831400A812F4 /* Data */, + ); + path = Core; + sourceTree = ""; + }; + DF0BA8502A3C831400A812F4 /* Data */ = { + isa = PBXGroup; + children = ( + DF0BA8512A3C832D00A812F4 /* datasources */, + ); + path = Data; + sourceTree = ""; + }; + DF0BA8512A3C832D00A812F4 /* datasources */ = { + isa = PBXGroup; + children = ( + DF0BA8532A3C836A00A812F4 /* AutenticationServiceDatasourceTest.swift */, + ); + path = datasources; + sourceTree = ""; + }; + DF0BA8522A3C833500A812F4 /* Repositories */ = { + isa = PBXGroup; + children = ( + DF0BA8602A3C998100A812F4 /* AutenticationRepositoryTest.swift */, + DF0BA8672A3C9BA900A812F4 /* MockAutenticationServiceDatasource.swift */, + ); + path = Repositories; + sourceTree = ""; + }; + DFEC18012A3BCFF9001277A2 = { + isa = PBXGroup; + children = ( + DF0BA7C42A3BE5CE00A812F4 /* KssiusBank */, + DF0BA7DE2A3BE5D000A812F4 /* KssiusBankTests */, + DF0BA7E82A3BE5D100A812F4 /* KssiusBankUITests */, + DFEC180B2A3BCFF9001277A2 /* Products */, + E1D6F871C3B699217B1D6BFE /* Pods */, + 8F1F1C114C91695D50430106 /* Frameworks */, + ); + sourceTree = ""; + }; + DFEC180B2A3BCFF9001277A2 /* Products */ = { + isa = PBXGroup; + children = ( + DF0BA7C32A3BE5CD00A812F4 /* KssiusBank.app */, + DF0BA7DB2A3BE5D000A812F4 /* KssiusBankTests.xctest */, + DF0BA7E52A3BE5D100A812F4 /* KssiusBankUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + DFEC18402A3BD044001277A2 /* Scenes */ = { + isa = PBXGroup; + children = ( + DF0BA8352A3BF04A00A812F4 /* Autentication */, + ); + path = Scenes; + sourceTree = ""; + }; + DFEC18412A3BD051001277A2 /* Workers */ = { + isa = PBXGroup; + children = ( + DFEC18562A3BD314001277A2 /* AuthenticationWorker.swift */, + ); + path = Workers; + sourceTree = ""; + }; + DFEC18422A3BD060001277A2 /* Services */ = { + isa = PBXGroup; + children = ( + DFEC18622A3BD481001277A2 /* Autehntication */, + DFEC18592A3BD423001277A2 /* NetworkService.swift */, + DFEC18662A3BDDA0001277A2 /* URLSessionProtocol.swift */, + ); + path = Services; + sourceTree = ""; + }; + DFEC18432A3BD068001277A2 /* Models */ = { + isa = PBXGroup; + children = ( + DFEC18532A3BD28C001277A2 /* UserAccountModel.swift */, + DF0BA85A2A3C976900A812F4 /* LoginRequestModel.swift */, + ); + path = Models; + sourceTree = ""; + }; + DFEC185C2A3BD43B001277A2 /* Common */ = { + isa = PBXGroup; + children = ( + DFEC185D2A3BD43B001277A2 /* error */, + DF0BA8572A3C87AE00A812F4 /* Constants.swift */, + ); + path = Common; + sourceTree = ""; + }; + DFEC185D2A3BD43B001277A2 /* error */ = { + isa = PBXGroup; + children = ( + DFEC185E2A3BD43B001277A2 /* BankFailure.swift */, + ); + path = error; + sourceTree = ""; + }; + DFEC18622A3BD481001277A2 /* Autehntication */ = { + isa = PBXGroup; + children = ( + DFEC18632A3BD4A2001277A2 /* AutenticationApi.swift */, + ); + path = Autehntication; + sourceTree = ""; + }; + DFEC18692A3BDE0D001277A2 /* Services */ = { + isa = PBXGroup; + children = ( + DFEC186A2A3BDE29001277A2 /* NetworkServiceTest.swift */, + DFEC186D2A3BDE99001277A2 /* MockURLProtocol.swift */, + ); + path = Services; + sourceTree = ""; + }; + E1D6F871C3B699217B1D6BFE /* Pods */ = { + isa = PBXGroup; + children = ( + B0965131F0D770E77CA79752 /* Pods-KssiusBank.debug.xcconfig */, + 9E03F5BEAD121A2725CAC1CF /* Pods-KssiusBank.release.xcconfig */, + 07786122957DD35BED1B07AA /* Pods-KssiusBank-KssiusBankUITests.debug.xcconfig */, + 1F35001EECB5F430346C58D9 /* Pods-KssiusBank-KssiusBankUITests.release.xcconfig */, + 67D965C4039A5F4C8DAF287A /* Pods-KssiusBankTests.debug.xcconfig */, + ACDDEAB26AE6197E2B15A29D /* Pods-KssiusBankTests.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + DF0BA7C22A3BE5CD00A812F4 /* KssiusBank */ = { + isa = PBXNativeTarget; + buildConfigurationList = DF0BA7ED2A3BE5D100A812F4 /* Build configuration list for PBXNativeTarget "KssiusBank" */; + buildPhases = ( + DF0BA7BF2A3BE5CD00A812F4 /* Sources */, + DF0BA7C02A3BE5CD00A812F4 /* Frameworks */, + DF0BA7C12A3BE5CD00A812F4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = KssiusBank; + productName = KssiusBank; + productReference = DF0BA7C32A3BE5CD00A812F4 /* KssiusBank.app */; + productType = "com.apple.product-type.application"; + }; + DF0BA7DA2A3BE5D000A812F4 /* KssiusBankTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = DF0BA7F02A3BE5D100A812F4 /* Build configuration list for PBXNativeTarget "KssiusBankTests" */; + buildPhases = ( + DF0BA7D72A3BE5D000A812F4 /* Sources */, + DF0BA7D82A3BE5D000A812F4 /* Frameworks */, + DF0BA7D92A3BE5D000A812F4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + DF0BA7DD2A3BE5D000A812F4 /* PBXTargetDependency */, + ); + name = KssiusBankTests; + productName = KssiusBankTests; + productReference = DF0BA7DB2A3BE5D000A812F4 /* KssiusBankTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + DF0BA7E42A3BE5D000A812F4 /* KssiusBankUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = DF0BA7F32A3BE5D100A812F4 /* Build configuration list for PBXNativeTarget "KssiusBankUITests" */; + buildPhases = ( + DF0BA7E12A3BE5D000A812F4 /* Sources */, + DF0BA7E22A3BE5D000A812F4 /* Frameworks */, + DF0BA7E32A3BE5D000A812F4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + DF0BA7E72A3BE5D100A812F4 /* PBXTargetDependency */, + ); + name = KssiusBankUITests; + productName = KssiusBankUITests; + productReference = DF0BA7E52A3BE5D100A812F4 /* KssiusBankUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + DFEC18022A3BCFF9001277A2 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1430; + LastUpgradeCheck = 1430; + TargetAttributes = { + DF0BA7C22A3BE5CD00A812F4 = { + CreatedOnToolsVersion = 14.3; + }; + DF0BA7DA2A3BE5D000A812F4 = { + CreatedOnToolsVersion = 14.3; + TestTargetID = DF0BA7C22A3BE5CD00A812F4; + }; + DF0BA7E42A3BE5D000A812F4 = { + CreatedOnToolsVersion = 14.3; + TestTargetID = DF0BA7C22A3BE5CD00A812F4; + }; + }; + }; + buildConfigurationList = DFEC18052A3BCFF9001277A2 /* Build configuration list for PBXProject "KssiusBank" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = DFEC18012A3BCFF9001277A2; + productRefGroup = DFEC180B2A3BCFF9001277A2 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + DF0BA7C22A3BE5CD00A812F4 /* KssiusBank */, + DF0BA7DA2A3BE5D000A812F4 /* KssiusBankTests */, + DF0BA7E42A3BE5D000A812F4 /* KssiusBankUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + DF0BA7C12A3BE5CD00A812F4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DF0BA8272A3BEEED00A812F4 /* Assets.xcassets in Resources */, + DF0BA80D2A3BE6CA00A812F4 /* LaunchScreen.storyboard in Resources */, + DF0BA8042A3BE6CA00A812F4 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DF0BA7D92A3BE5D000A812F4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DF0BA7E32A3BE5D000A812F4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + DF0BA7BF2A3BE5CD00A812F4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DF0BA8142A3BEC4700A812F4 /* URLSessionProtocol.swift in Sources */, + DF0BA80C2A3BE6CA00A812F4 /* ViewController.swift in Sources */, + DF0BA8242A3BEE3D00A812F4 /* BankFailure.swift in Sources */, + DF0BA8332A3BF03900A812F4 /* LoginViewController.swift in Sources */, + DF0BA8342A3BF03900A812F4 /* LoginInteractor.swift in Sources */, + DF0BA82F2A3BF03900A812F4 /* LoginPresenter.swift in Sources */, + DF0BA85B2A3C976900A812F4 /* LoginRequestModel.swift in Sources */, + DF0BA8152A3BEC4700A812F4 /* NetworkService.swift in Sources */, + DF0BA8132A3BEC4700A812F4 /* AutenticationApi.swift in Sources */, + DF0BA8092A3BE6CA00A812F4 /* AppDelegate.swift in Sources */, + DF0BA85E2A3C985500A812F4 /* AuthenticationServiceDatasourceProtocol.swift in Sources */, + DF0BA8072A3BE6CA00A812F4 /* SceneDelegate.swift in Sources */, + DF0BA8362A3BF05800A812F4 /* AuthenticationWorker.swift in Sources */, + DF0BA8582A3C87AE00A812F4 /* Constants.swift in Sources */, + DF0BA8322A3BF03900A812F4 /* LoginModels.swift in Sources */, + DF0BA8112A3BE9F200A812F4 /* UserAccountModel.swift in Sources */, + DF0BA7D02A3BE5CE00A812F4 /* KssiusBank.xcdatamodeld in Sources */, + DF0BA8492A3C7C8E00A812F4 /* AutenticationServiceDatasource.swift in Sources */, + DF0BA8312A3BF03900A812F4 /* LoginRouter.swift in Sources */, + DF0BA8472A3C7C0200A812F4 /* AutenticationRepository.swift in Sources */, + DF0BA8432A3C7AAD00A812F4 /* AuthenticationRepositoryProtocol.swift in Sources */, + DF0BA8302A3BF03900A812F4 /* LoginWorker.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DF0BA7D72A3BE5D000A812F4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DF0BA8252A3BEE3D00A812F4 /* BankFailure.swift in Sources */, + DF0BA8692A3C9BA900A812F4 /* MockAutenticationServiceDatasource.swift in Sources */, + DF0BA8172A3BEC4800A812F4 /* URLSessionProtocol.swift in Sources */, + DF0BA7F82A3BE65B00A812F4 /* MockURLProtocol.swift in Sources */, + DF0BA80E2A3BE6D400A812F4 /* KssiusBankTests.swift in Sources */, + DF0BA8662A3C9B4600A812F4 /* AuthenticationRepositoryProtocol.swift in Sources */, + DF0BA8592A3C87AE00A812F4 /* Constants.swift in Sources */, + DF0BA8392A3BFB6100A812F4 /* Seeds.swift in Sources */, + DF0BA8122A3BE9F300A812F4 /* UserAccountModel.swift in Sources */, + DF0BA8552A3C836A00A812F4 /* AutenticationServiceDatasourceTest.swift in Sources */, + DF0BA7F72A3BE65800A812F4 /* NetworkServiceTest.swift in Sources */, + DF0BA84A2A3C7C8E00A812F4 /* AutenticationServiceDatasource.swift in Sources */, + DF0BA8372A3BF05800A812F4 /* AuthenticationWorker.swift in Sources */, + DF0BA8162A3BEC4800A812F4 /* AutenticationApi.swift in Sources */, + DF0BA8622A3C998100A812F4 /* AutenticationRepositoryTest.swift in Sources */, + DF0BA8182A3BEC4800A812F4 /* NetworkService.swift in Sources */, + DF0BA86A2A3C9CB700A812F4 /* AutenticationRepository.swift in Sources */, + DF0BA85C2A3C976900A812F4 /* LoginRequestModel.swift in Sources */, + DF0BA85F2A3C985500A812F4 /* AuthenticationServiceDatasourceProtocol.swift in Sources */, + DF0BA8652A3C9A3E00A812F4 /* MockSession.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DF0BA7E12A3BE5D000A812F4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DF0BA80F2A3BE6ED00A812F4 /* KssiusBankUITestsLaunchTests.swift in Sources */, + DF0BA8102A3BE6ED00A812F4 /* KssiusBankUITests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + DF0BA7DD2A3BE5D000A812F4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DF0BA7C22A3BE5CD00A812F4 /* KssiusBank */; + targetProxy = DF0BA7DC2A3BE5D000A812F4 /* PBXContainerItemProxy */; + }; + DF0BA7E72A3BE5D100A812F4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DF0BA7C22A3BE5CD00A812F4 /* KssiusBank */; + targetProxy = DF0BA7E62A3BE5D100A812F4 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + DF0BA7EE2A3BE5D100A812F4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = S54ZB46KKW; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = KssiusBank/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = br.com.kssius.KssiusBank; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + DF0BA7EF2A3BE5D100A812F4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = S54ZB46KKW; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = KssiusBank/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = br.com.kssius.KssiusBank; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + DF0BA7F12A3BE5D100A812F4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = S54ZB46KKW; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.4; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = br.com.kssius.KssiusBankTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/KssiusBank.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/KssiusBank"; + }; + name = Debug; + }; + DF0BA7F22A3BE5D100A812F4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = S54ZB46KKW; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.4; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = br.com.kssius.KssiusBankTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/KssiusBank.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/KssiusBank"; + }; + name = Release; + }; + DF0BA7F42A3BE5D100A812F4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = S54ZB46KKW; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = br.com.kssius.KssiusBankUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = KssiusBank; + }; + name = Debug; + }; + DF0BA7F52A3BE5D100A812F4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = S54ZB46KKW; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = br.com.kssius.KssiusBankUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = KssiusBank; + }; + name = Release; + }; + DFEC18352A3BCFFC001277A2 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.4; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + DFEC18362A3BCFFC001277A2 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.4; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + DF0BA7ED2A3BE5D100A812F4 /* Build configuration list for PBXNativeTarget "KssiusBank" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DF0BA7EE2A3BE5D100A812F4 /* Debug */, + DF0BA7EF2A3BE5D100A812F4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DF0BA7F02A3BE5D100A812F4 /* Build configuration list for PBXNativeTarget "KssiusBankTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DF0BA7F12A3BE5D100A812F4 /* Debug */, + DF0BA7F22A3BE5D100A812F4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DF0BA7F32A3BE5D100A812F4 /* Build configuration list for PBXNativeTarget "KssiusBankUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DF0BA7F42A3BE5D100A812F4 /* Debug */, + DF0BA7F52A3BE5D100A812F4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DFEC18052A3BCFF9001277A2 /* Build configuration list for PBXProject "KssiusBank" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DFEC18352A3BCFFC001277A2 /* Debug */, + DFEC18362A3BCFFC001277A2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCVersionGroup section */ + DF0BA7CE2A3BE5CE00A812F4 /* KssiusBank.xcdatamodeld */ = { + isa = XCVersionGroup; + children = ( + DF0BA7CF2A3BE5CE00A812F4 /* KssiusBank.xcdatamodel */, + ); + currentVersion = DF0BA7CF2A3BE5CE00A812F4 /* KssiusBank.xcdatamodel */; + path = KssiusBank.xcdatamodeld; + sourceTree = ""; + versionGroupType = wrapper.xcdatamodel; + }; +/* End XCVersionGroup section */ + }; + rootObject = DFEC18022A3BCFF9001277A2 /* Project object */; +} diff --git a/KssiusBank/KssiusBank.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/KssiusBank/KssiusBank.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..919434a62 --- /dev/null +++ b/KssiusBank/KssiusBank.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/KssiusBank/KssiusBank.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/KssiusBank/KssiusBank.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/KssiusBank/KssiusBank.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/KssiusBank/KssiusBank.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/KssiusBank/KssiusBank.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..0c67376eb --- /dev/null +++ b/KssiusBank/KssiusBank.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,5 @@ + + + + + diff --git a/KssiusBank/KssiusBank.xcodeproj/project.xcworkspace/xcuserdata/cassio.xcuserdatad/UserInterfaceState.xcuserstate b/KssiusBank/KssiusBank.xcodeproj/project.xcworkspace/xcuserdata/cassio.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..02d3866839908c762f21e94c837463b7636b286d GIT binary patch literal 42077 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 z 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 SrjPXRbJVW?j~?Hrxb + + + + BuildLocationStyle + UseAppPreferences + CustomBuildLocationType + RelativeToDerivedData + DerivedDataLocationStyle + Default + ShowSharedSchemesAutomaticallyEnabled + + + diff --git a/KssiusBank/KssiusBank.xcodeproj/xcshareddata/xcschemes/KssiusBank.xcscheme b/KssiusBank/KssiusBank.xcodeproj/xcshareddata/xcschemes/KssiusBank.xcscheme new file mode 100644 index 000000000..7397c50a2 --- /dev/null +++ b/KssiusBank/KssiusBank.xcodeproj/xcshareddata/xcschemes/KssiusBank.xcscheme @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/KssiusBank/KssiusBank.xcodeproj/xcuserdata/cassio.xcuserdatad/xcschemes/xcschememanagement.plist b/KssiusBank/KssiusBank.xcodeproj/xcuserdata/cassio.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 000000000..0e20a617f --- /dev/null +++ b/KssiusBank/KssiusBank.xcodeproj/xcuserdata/cassio.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,32 @@ + + + + + SchemeUserState + + KssiusBank.xcscheme_^#shared#^_ + + orderHint + 0 + + + SuppressBuildableAutocreation + + DFEC18092A3BCFF9001277A2 + + primary + + + DFEC18222A3BCFFC001277A2 + + primary + + + DFEC182C2A3BCFFC001277A2 + + primary + + + + + diff --git a/KssiusBank/KssiusBank.xcworkspace/contents.xcworkspacedata b/KssiusBank/KssiusBank.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..1db071d24 --- /dev/null +++ b/KssiusBank/KssiusBank.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/KssiusBank/KssiusBank.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/KssiusBank/KssiusBank.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/KssiusBank/KssiusBank.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/KssiusBank/KssiusBank.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/KssiusBank/KssiusBank.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..0c67376eb --- /dev/null +++ b/KssiusBank/KssiusBank.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,5 @@ + + + + + diff --git a/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/UserInterfaceState.xcuserstate b/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..03b6bf2496909110c233eac4be1a40a11cd19831 GIT binary patch literal 130857 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ⅈvy{Mi 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 + + + + BuildLocationStyle + UseAppPreferences + CustomBuildLocationType + RelativeToDerivedData + DerivedDataLocationStyle + Default + ShowSharedSchemesAutomaticallyEnabled + + + diff --git a/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 000000000..6f90c41f1 --- /dev/null +++ b/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,6 @@ + + + diff --git a/KssiusBank/KssiusBank/AppDelegate.swift b/KssiusBank/KssiusBank/AppDelegate.swift new file mode 100644 index 000000000..cccd1a80a --- /dev/null +++ b/KssiusBank/KssiusBank/AppDelegate.swift @@ -0,0 +1,81 @@ +// +// AppDelegate.swift +// KssiusBank +// +// Created by Cassio Sousa on 15/06/23. +// + +import UIKit +import CoreData + +@main +class AppDelegate: UIResponder, UIApplicationDelegate { + + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + // MARK: UISceneSession Lifecycle + + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } + + func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + } + + // MARK: - Core Data stack + + lazy var persistentContainer: NSPersistentContainer = { + /* + The persistent container for the application. This implementation + creates and returns a container, having loaded the store for the + application to it. This property is optional since there are legitimate + error conditions that could cause the creation of the store to fail. + */ + let container = NSPersistentContainer(name: "KssiusBank") + container.loadPersistentStores(completionHandler: { (storeDescription, error) in + if let error = error as NSError? { + // Replace this implementation with code to handle the error appropriately. + // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. + + /* + Typical reasons for an error here include: + * The parent directory does not exist, cannot be created, or disallows writing. + * The persistent store is not accessible, due to permissions or data protection when the device is locked. + * The device is out of space. + * The store could not be migrated to the current model version. + Check the error message to determine what the actual problem was. + */ + fatalError("Unresolved error \(error), \(error.userInfo)") + } + }) + return container + }() + + // MARK: - Core Data Saving support + + func saveContext () { + let context = persistentContainer.viewContext + if context.hasChanges { + do { + try context.save() + } catch { + // Replace this implementation with code to handle the error appropriately. + // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. + let nserror = error as NSError + fatalError("Unresolved error \(nserror), \(nserror.userInfo)") + } + } + } + +} + diff --git a/KssiusBank/KssiusBank/Assets.xcassets/AccentColor.colorset/Contents.json b/KssiusBank/KssiusBank/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 000000000..eb8789700 --- /dev/null +++ b/KssiusBank/KssiusBank/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/KssiusBank/KssiusBank/Assets.xcassets/AppIcon.appiconset/Contents.json b/KssiusBank/KssiusBank/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..13613e3ee --- /dev/null +++ b/KssiusBank/KssiusBank/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/KssiusBank/KssiusBank/Assets.xcassets/Contents.json b/KssiusBank/KssiusBank/Assets.xcassets/Contents.json new file mode 100644 index 000000000..73c00596a --- /dev/null +++ b/KssiusBank/KssiusBank/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/KssiusBank/KssiusBank/Assets.xcassets/Logo.imageset/Contents.json b/KssiusBank/KssiusBank/Assets.xcassets/Logo.imageset/Contents.json new file mode 100644 index 000000000..e195e0614 --- /dev/null +++ b/KssiusBank/KssiusBank/Assets.xcassets/Logo.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Logo.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/KssiusBank/KssiusBank/Assets.xcassets/Logo.imageset/Logo.png b/KssiusBank/KssiusBank/Assets.xcassets/Logo.imageset/Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..66bdc8d5d4f72d641ee73093c3b1d8ff34506f41 GIT binary patch literal 4662 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 literal 0 HcmV?d00001 diff --git a/KssiusBank/KssiusBank/Assets.xcassets/logout.imageset/Contents.json b/KssiusBank/KssiusBank/Assets.xcassets/logout.imageset/Contents.json new file mode 100644 index 000000000..8c8c954e5 --- /dev/null +++ b/KssiusBank/KssiusBank/Assets.xcassets/logout.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "logout 2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/KssiusBank/KssiusBank/Assets.xcassets/logout.imageset/logout 2.png b/KssiusBank/KssiusBank/Assets.xcassets/logout.imageset/logout 2.png new file mode 100644 index 0000000000000000000000000000000000000000..de1e4ae3c001abc798483e59649cc97eb9661201 GIT binary patch literal 519 zcmV+i0{H!jP)Px$!AV3xR7efImcK6qK@`Vt&yOpJAaaRoh+Gu3D$TW8iAJdse}KjxK(rcBh=xul zAwh`5X@pLr5eZjF9Io*rVtwA46`P&C8*9c(J~z8>-n{S5%-gxmWR&^7pM?@^Kn3dA z4xMe`Sktyy0vVX4nSfQO!X+Go&RTGm;Z4`s(1+Lv+`yq+Hyn^QfaEz?fm`TLo5y6F zEME>r;R3F~nTeR}TLEgG=lRZ*NGxJv-dE%HHx#p?!k%|QF)5ilNtW}ZoK0DPBTS`Z-PCFK@Qk-CW24`lP_Y435&~E@Dm&wyf7;HNhSaQ002ov JPDHLkV1oP+;TQk_ literal 0 HcmV?d00001 diff --git a/KssiusBank/KssiusBank/Common/Constants.swift b/KssiusBank/KssiusBank/Common/Constants.swift new file mode 100644 index 000000000..4d903238a --- /dev/null +++ b/KssiusBank/KssiusBank/Common/Constants.swift @@ -0,0 +1,8 @@ +// +// Constants.swift +// KssiusBank +// +// Created by Cassio Sousa on 16/06/23. +// + +import Foundation diff --git a/KssiusBank/KssiusBank/Common/error/BankFailure.swift b/KssiusBank/KssiusBank/Common/error/BankFailure.swift new file mode 100644 index 000000000..d71913b53 --- /dev/null +++ b/KssiusBank/KssiusBank/Common/error/BankFailure.swift @@ -0,0 +1,7 @@ +import Foundation + +enum BankFailure : Error { + case number + case network(code: Int) + case network(Error?) +} diff --git a/KssiusBank/KssiusBank/Core/Data/DataSources/AutenticationServiceDatasource.swift b/KssiusBank/KssiusBank/Core/Data/DataSources/AutenticationServiceDatasource.swift new file mode 100644 index 000000000..2f8404fb0 --- /dev/null +++ b/KssiusBank/KssiusBank/Core/Data/DataSources/AutenticationServiceDatasource.swift @@ -0,0 +1,8 @@ +// +// AutenticationServiceDatasource.swift +// KssiusBank +// +// Created by Cassio Sousa on 16/06/23. +// + +import Foundation diff --git a/KssiusBank/KssiusBank/Core/Data/DataSources/AuthenticationServiceDatasourceProtocol.swift b/KssiusBank/KssiusBank/Core/Data/DataSources/AuthenticationServiceDatasourceProtocol.swift new file mode 100644 index 000000000..5ab6ed0e6 --- /dev/null +++ b/KssiusBank/KssiusBank/Core/Data/DataSources/AuthenticationServiceDatasourceProtocol.swift @@ -0,0 +1,8 @@ +// +// AuthenticationServiceDatasourceProtocol.swift +// KssiusBank +// +// Created by Cassio Sousa on 16/06/23. +// + +import Foundation diff --git a/KssiusBank/KssiusBank/Core/Data/Models/LoginRequestModel.swift b/KssiusBank/KssiusBank/Core/Data/Models/LoginRequestModel.swift new file mode 100644 index 000000000..bc48c691d --- /dev/null +++ b/KssiusBank/KssiusBank/Core/Data/Models/LoginRequestModel.swift @@ -0,0 +1,8 @@ +// +// LoginRequestModel.swift +// KssiusBank +// +// Created by Cassio Sousa on 16/06/23. +// + +import Foundation diff --git a/KssiusBank/KssiusBank/Core/Data/Models/UserAccountModel.swift b/KssiusBank/KssiusBank/Core/Data/Models/UserAccountModel.swift new file mode 100644 index 000000000..3d9f342c6 --- /dev/null +++ b/KssiusBank/KssiusBank/Core/Data/Models/UserAccountModel.swift @@ -0,0 +1,28 @@ +// +// UserAccount.swift +// KssiusBank +// +// Created by Cassio Sousa on 15/06/23. +// + +import Foundation + +struct UserAccountModel : Codable { + let userId: String + let email: String + let cpf: String + let name: String + let accountNumber: String + let agency: String + let balance: String + + enum CodingKeys: String, CodingKey { + case userId = "id" + case email + case cpf + case name + case accountNumber + case agency + case balance + } +} diff --git a/KssiusBank/KssiusBank/Core/Data/Repositories/AutenticationRepository.swift b/KssiusBank/KssiusBank/Core/Data/Repositories/AutenticationRepository.swift new file mode 100644 index 000000000..798ce1cd5 --- /dev/null +++ b/KssiusBank/KssiusBank/Core/Data/Repositories/AutenticationRepository.swift @@ -0,0 +1,8 @@ +// +// AutenticationRepository.swift +// KssiusBank +// +// Created by Cassio Sousa on 16/06/23. +// + +import Foundation diff --git a/KssiusBank/KssiusBank/Core/Data/Repositories/AuthenticationRepositoryProtocol.swift b/KssiusBank/KssiusBank/Core/Data/Repositories/AuthenticationRepositoryProtocol.swift new file mode 100644 index 000000000..59e28d77d --- /dev/null +++ b/KssiusBank/KssiusBank/Core/Data/Repositories/AuthenticationRepositoryProtocol.swift @@ -0,0 +1,12 @@ +// +// AutenticationRepository.swift +// KssiusBank +// +// Created by Cassio Sousa on 16/06/23. +// + +import Foundation + +protocol AuthenticationRepositoryProtocol: AnyObject { + func perform(login: AutenticationApi.Endpoints, with data: LoginRequestModel, completion: @escaping (Result) -> Void) +} diff --git a/KssiusBank/KssiusBank/Info.plist b/KssiusBank/KssiusBank/Info.plist new file mode 100644 index 000000000..dd3c9afda --- /dev/null +++ b/KssiusBank/KssiusBank/Info.plist @@ -0,0 +1,25 @@ + + + + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + + diff --git a/KssiusBank/KssiusBank/KssiusBank.xcdatamodeld/.xccurrentversion b/KssiusBank/KssiusBank/KssiusBank.xcdatamodeld/.xccurrentversion new file mode 100644 index 000000000..0c67376eb --- /dev/null +++ b/KssiusBank/KssiusBank/KssiusBank.xcdatamodeld/.xccurrentversion @@ -0,0 +1,5 @@ + + + + + diff --git a/KssiusBank/KssiusBank/KssiusBank.xcdatamodeld/KssiusBank.xcdatamodel/contents b/KssiusBank/KssiusBank/KssiusBank.xcdatamodeld/KssiusBank.xcdatamodel/contents new file mode 100644 index 000000000..50d2514e8 --- /dev/null +++ b/KssiusBank/KssiusBank/KssiusBank.xcdatamodeld/KssiusBank.xcdatamodel/contents @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/KssiusBank/KssiusBank/LaunchScreen.storyboard b/KssiusBank/KssiusBank/LaunchScreen.storyboard new file mode 100644 index 000000000..865e9329f --- /dev/null +++ b/KssiusBank/KssiusBank/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/KssiusBank/KssiusBank/Main.storyboard b/KssiusBank/KssiusBank/Main.storyboard new file mode 100644 index 000000000..25a763858 --- /dev/null +++ b/KssiusBank/KssiusBank/Main.storyboard @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/KssiusBank/KssiusBank/SceneDelegate.swift b/KssiusBank/KssiusBank/SceneDelegate.swift new file mode 100644 index 000000000..e7cdeaed5 --- /dev/null +++ b/KssiusBank/KssiusBank/SceneDelegate.swift @@ -0,0 +1,55 @@ +// +// SceneDelegate.swift +// KssiusBank +// +// Created by Cassio Sousa on 15/06/23. +// + +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + guard let _ = (scene as? UIWindowScene) else { return } + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + + // Save changes in the application's managed object context when the application transitions to the background. + (UIApplication.shared.delegate as? AppDelegate)?.saveContext() + } + + +} + diff --git a/KssiusBank/KssiusBank/Scenes/Autentication/LoginInteractor.swift b/KssiusBank/KssiusBank/Scenes/Autentication/LoginInteractor.swift new file mode 100644 index 000000000..ab11ad32c --- /dev/null +++ b/KssiusBank/KssiusBank/Scenes/Autentication/LoginInteractor.swift @@ -0,0 +1,41 @@ +// +// LoginInteractor.swift +// KssiusBank +// +// Created by Cassio Sousa on 15/06/23. +// Copyright (c) 2023 ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol LoginBusinessLogic +{ + func doSomething(request: Login.Something.Request) +} + +protocol LoginDataStore +{ + //var name: String { get set } +} + +class LoginInteractor: LoginBusinessLogic, LoginDataStore +{ + var presenter: LoginPresentationLogic? + var worker: LoginWorker? + //var name: String = "" + + // MARK: Do something + + func doSomething(request: Login.Something.Request) + { + worker = LoginWorker() + worker?.doSomeWork() + + let response = Login.Something.Response() + presenter?.presentSomething(response: response) + } +} diff --git a/KssiusBank/KssiusBank/Scenes/Autentication/LoginModels.swift b/KssiusBank/KssiusBank/Scenes/Autentication/LoginModels.swift new file mode 100644 index 000000000..ad46fc651 --- /dev/null +++ b/KssiusBank/KssiusBank/Scenes/Autentication/LoginModels.swift @@ -0,0 +1,31 @@ +// +// LoginModels.swift +// KssiusBank +// +// Created by Cassio Sousa on 15/06/23. +// Copyright (c) 2023 ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +enum Login +{ + // MARK: Use cases + + enum Something + { + struct Request + { + } + struct Response + { + } + struct ViewModel + { + } + } +} diff --git a/KssiusBank/KssiusBank/Scenes/Autentication/LoginPresenter.swift b/KssiusBank/KssiusBank/Scenes/Autentication/LoginPresenter.swift new file mode 100644 index 000000000..c30cff6d6 --- /dev/null +++ b/KssiusBank/KssiusBank/Scenes/Autentication/LoginPresenter.swift @@ -0,0 +1,31 @@ +// +// LoginPresenter.swift +// KssiusBank +// +// Created by Cassio Sousa on 15/06/23. +// Copyright (c) 2023 ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol LoginPresentationLogic +{ + func presentSomething(response: Login.Something.Response) +} + +class LoginPresenter: LoginPresentationLogic +{ + weak var viewController: LoginDisplayLogic? + + // MARK: Do something + + func presentSomething(response: Login.Something.Response) + { + let viewModel = Login.Something.ViewModel() + viewController?.displaySomething(viewModel: viewModel) + } +} diff --git a/KssiusBank/KssiusBank/Scenes/Autentication/LoginRouter.swift b/KssiusBank/KssiusBank/Scenes/Autentication/LoginRouter.swift new file mode 100644 index 000000000..a62e22f3e --- /dev/null +++ b/KssiusBank/KssiusBank/Scenes/Autentication/LoginRouter.swift @@ -0,0 +1,60 @@ +// +// LoginRouter.swift +// KssiusBank +// +// Created by Cassio Sousa on 15/06/23. +// Copyright (c) 2023 ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +@objc protocol LoginRoutingLogic +{ + //func routeToSomewhere(segue: UIStoryboardSegue?) +} + +protocol LoginDataPassing +{ + var dataStore: LoginDataStore? { get } +} + +class LoginRouter: NSObject, LoginRoutingLogic, LoginDataPassing +{ + weak var viewController: LoginViewController? + var dataStore: LoginDataStore? + + // MARK: Routing + + //func routeToSomewhere(segue: UIStoryboardSegue?) + //{ + // if let segue = segue { + // let destinationVC = segue.destination as! SomewhereViewController + // var destinationDS = destinationVC.router!.dataStore! + // passDataToSomewhere(source: dataStore!, destination: &destinationDS) + // } else { + // let storyboard = UIStoryboard(name: "Main", bundle: nil) + // let destinationVC = storyboard.instantiateViewController(withIdentifier: "SomewhereViewController") as! SomewhereViewController + // var destinationDS = destinationVC.router!.dataStore! + // passDataToSomewhere(source: dataStore!, destination: &destinationDS) + // navigateToSomewhere(source: viewController!, destination: destinationVC) + // } + //} + + // MARK: Navigation + + //func navigateToSomewhere(source: LoginViewController, destination: SomewhereViewController) + //{ + // source.show(destination, sender: nil) + //} + + // MARK: Passing data + + //func passDataToSomewhere(source: LoginDataStore, destination: inout SomewhereDataStore) + //{ + // destination.name = source.name + //} +} diff --git a/KssiusBank/KssiusBank/Scenes/Autentication/LoginViewController.swift b/KssiusBank/KssiusBank/Scenes/Autentication/LoginViewController.swift new file mode 100644 index 000000000..423ebe994 --- /dev/null +++ b/KssiusBank/KssiusBank/Scenes/Autentication/LoginViewController.swift @@ -0,0 +1,89 @@ +// +// LoginViewController.swift +// KssiusBank +// +// Created by Cassio Sousa on 15/06/23. +// Copyright (c) 2023 ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol LoginDisplayLogic: class +{ + func displaySomething(viewModel: Login.Something.ViewModel) +} + +class LoginViewController: UIViewController, LoginDisplayLogic +{ + var interactor: LoginBusinessLogic? + var router: (NSObjectProtocol & LoginRoutingLogic & LoginDataPassing)? + + // MARK: Object lifecycle + + override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) + { + super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) + setup() + } + + required init?(coder aDecoder: NSCoder) + { + super.init(coder: aDecoder) + setup() + } + + // MARK: Setup + + private func setup() + { + let viewController = self + let interactor = LoginInteractor() + let presenter = LoginPresenter() + let router = LoginRouter() + viewController.interactor = interactor + viewController.router = router + interactor.presenter = presenter + presenter.viewController = viewController + router.viewController = viewController + router.dataStore = interactor + } + + // MARK: Routing + + override func prepare(for segue: UIStoryboardSegue, sender: Any?) + { + if let scene = segue.identifier { + let selector = NSSelectorFromString("routeTo\(scene)WithSegue:") + if let router = router, router.responds(to: selector) { + router.perform(selector, with: segue) + } + } + } + + // MARK: View lifecycle + + override func viewDidLoad() + { + super.viewDidLoad() + doSomething() + } + + // MARK: Do something + + //@IBOutlet weak var nameTextField: UITextField! + + func doSomething() + { + let request = Login.Something.Request() + interactor?.doSomething(request: request) + } + + func displaySomething(viewModel: Login.Something.ViewModel) + { + //nameTextField.text = viewModel.name + } +} diff --git a/KssiusBank/KssiusBank/Scenes/Autentication/LoginWorker.swift b/KssiusBank/KssiusBank/Scenes/Autentication/LoginWorker.swift new file mode 100644 index 000000000..4839f9f35 --- /dev/null +++ b/KssiusBank/KssiusBank/Scenes/Autentication/LoginWorker.swift @@ -0,0 +1,20 @@ +// +// LoginWorker.swift +// KssiusBank +// +// Created by Cassio Sousa on 15/06/23. +// Copyright (c) 2023 ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +class LoginWorker +{ + func doSomeWork() + { + } +} diff --git a/KssiusBank/KssiusBank/Services/Autehntication/AutenticationApi.swift b/KssiusBank/KssiusBank/Services/Autehntication/AutenticationApi.swift new file mode 100644 index 000000000..feed69201 --- /dev/null +++ b/KssiusBank/KssiusBank/Services/Autehntication/AutenticationApi.swift @@ -0,0 +1,8 @@ +// +// AutenticationApi.swift +// KssiusBank +// +// Created by Cassio Sousa on 15/06/23. +// + +import Foundation diff --git a/KssiusBank/KssiusBank/Services/NetworkService.swift b/KssiusBank/KssiusBank/Services/NetworkService.swift new file mode 100755 index 000000000..fe497d5bc --- /dev/null +++ b/KssiusBank/KssiusBank/Services/NetworkService.swift @@ -0,0 +1,87 @@ +import Foundation + +func printIfDebug(_ string: String) { + #if DEBUG + print(string) + #endif +} + + +struct PathParameter { + let name: String + let value: String +} + +struct NetworkConfiguration { + let baseUrl: String +} + +struct Endpoint { + + enum Method: String { + case get, post + } + let path: String + let method: Method + let configuration: NetworkConfiguration + + var fullPath: String { + "\(configuration.baseUrl)/\(path)" + } + +} + +enum ServiceError: Error { + case invalidUrl + case decodeFail(Error?) + case network(Error?) +} + +class NetworkService { + + // MARK: - Properties + + typealias Response = R + private let endpoint: Endpoint + + // MARK: - Initializers + init(endpoint: Endpoint) { + self.endpoint = endpoint + } + + func request(pathParameter: PathParameter?, completion: @escaping (Result) -> Void) { + var path = "" + if let pathParameter = pathParameter { + path = endpoint.fullPath.replacingOccurrences(of: ":\(pathParameter.name)", with: pathParameter.value) + } else{ + path = endpoint.fullPath + } + + guard let url = URL(string: path) else { + completion(.failure(.invalidUrl)) + return; + } + printIfDebug(path) + + var request = URLRequest(url: url) + request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type") // the request is JSON + request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Accept") // the expected response is also JSON + request.httpMethod = endpoint.method.rawValue + + let task = URLSession.shared.dataTask(with: request) { data, response, error in + guard let data = data else { + completion(.failure(.network(error))) + return + } + do{ + let body = try JSONDecoder().decode(Response.self, from: data) + completion(.success(body)) + }catch { + printIfDebug("\(error)") + completion(.failure(.decodeFail(error))) + } + + } + task.resume() + } +} diff --git a/KssiusBank/KssiusBank/Services/URLSessionProtocol.swift b/KssiusBank/KssiusBank/Services/URLSessionProtocol.swift new file mode 100644 index 000000000..1da23c021 --- /dev/null +++ b/KssiusBank/KssiusBank/Services/URLSessionProtocol.swift @@ -0,0 +1,8 @@ +// +// URLSessionProtocol.swift +// KssiusBank +// +// Created by Cassio Sousa on 15/06/23. +// + +import Foundation diff --git a/KssiusBank/KssiusBank/ViewController.swift b/KssiusBank/KssiusBank/ViewController.swift new file mode 100644 index 000000000..2ea3a1f94 --- /dev/null +++ b/KssiusBank/KssiusBank/ViewController.swift @@ -0,0 +1,19 @@ +// +// ViewController.swift +// KssiusBank +// +// Created by Cassio Sousa on 15/06/23. +// + +import UIKit + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + + +} + diff --git a/KssiusBank/KssiusBank/Workers/AuthenticationWorker.swift b/KssiusBank/KssiusBank/Workers/AuthenticationWorker.swift new file mode 100644 index 000000000..e40b5f94b --- /dev/null +++ b/KssiusBank/KssiusBank/Workers/AuthenticationWorker.swift @@ -0,0 +1,8 @@ +// +// AuthenticationWorker.swift +// KssiusBank +// +// Created by Cassio Sousa on 15/06/23. +// + +import Foundation diff --git a/KssiusBank/KssiusBankTests/Core/Data/datasources/AutenticationServiceDatasourceTest.swift b/KssiusBank/KssiusBankTests/Core/Data/datasources/AutenticationServiceDatasourceTest.swift new file mode 100644 index 000000000..b6023adf2 --- /dev/null +++ b/KssiusBank/KssiusBankTests/Core/Data/datasources/AutenticationServiceDatasourceTest.swift @@ -0,0 +1,82 @@ +// +// AutenticationServiceDatasourceTest.swift +// KssiusBank +// +// Created by Cassio Sousa on 16/06/23. +// + +import XCTest +@testable import KssiusBank + +final class AutenticationServiceDatasourceTest: XCTestCase { + var sut: AuthenticationServiceDatasourceProtocol? + var expectation: XCTestExpectation! + let apiURL = URL(string: "https://example.com.br/login")! + let baseUrl = "https://example.com.br" + + override func setUp() { + + let configuration = URLSessionConfiguration.default + configuration.protocolClasses = [MockURLProtocol.self] + let urlSession = URLSession.init(configuration: configuration) + + sut = AuthenticationServiceDatasource(networkService: .init(urlSession: urlSession)) + expectation = expectation(description: "AutenticationServiceDatasource Expectation") + } + + override func tearDown() { + sut = nil + } + + // MARK: - Success Response + + func testSuccessResponse() { + let data = Seeds.Json.account.rawValue.data(using: .utf8) + let modelRequest = LoginRequestModel(username: "user", password: "pass") + + MockURLProtocol.requestHandler = { request in + let response = HTTPURLResponse(url: self.apiURL, statusCode: 200, httpVersion: nil, headerFields: nil)! + return (response, data) + } + + sut?.perform(login: .loginRequest, with: modelRequest ){ [weak self] result in + switch(result){ + case .success(let userModel): + XCTAssertEqual(userModel.email, "Marquis_Gibson@hotmail.com") + case .failure( _): + XCTFail("Should not return a failure") + } + self?.expectation.fulfill() + } + wait(for: [self.expectation], timeout: 1.0) + } + + // MARK: - Server Error Response + + func testErrorResponse() { + + let data = Seeds.Json.account.rawValue.data(using: .utf8) + let modelRequest = LoginRequestModel(username: "user", password: "pass") + + MockURLProtocol.requestHandler = { request in + throw ServiceError.invalidUrl + } + + sut?.perform(login: .loginRequest,with: modelRequest){ [weak self] result in + switch(result){ + case .success( _): + XCTFail("Should not return a failure") + case .failure( let error): + switch( error ){ + case .network( _): + XCTAssertEqual(error, BankFailure.network(.init())) + default: + XCTFail("Should not return a failure") + } + + } + self?.expectation.fulfill() + } + wait(for: [self.expectation], timeout: 1.0) + } +} diff --git a/KssiusBank/KssiusBankTests/Core/Repositories/AutenticationRepositoryTest.swift b/KssiusBank/KssiusBankTests/Core/Repositories/AutenticationRepositoryTest.swift new file mode 100644 index 000000000..2d090cc22 --- /dev/null +++ b/KssiusBank/KssiusBankTests/Core/Repositories/AutenticationRepositoryTest.swift @@ -0,0 +1,71 @@ +// +// AutenticationRepositoryTest.swift +// KssiusBank +// +// Created by Cassio Sousa on 16/06/23. +// + +import Foundation + + +import XCTest +@testable import KssiusBank + +final class AutenticationRepositoryTest: XCTestCase { + var sut: AuthenticationRepositoryProtocol? + var expectation: XCTestExpectation! + + override func setUp() { + sut = AuthenticationRepository(authenticationService: MockSuccessAutenticationServiceDatasource(networkService: .init())) + expectation = expectation(description: "AuthenticationServiceDatasource Expectation") + } + + override func tearDown() { + sut = nil + } + + // MARK: - Success Authentication Response + + func testSuccessResponse() { + let modelRequest = LoginRequestModel(username: "user", password: "pass") + + sut?.perform(login: .loginRequest, with: modelRequest ){ [weak self] result in + switch(result){ + case .success(let userModel): + XCTAssertEqual(userModel.email, "Marquis_Gibson@hotmail.com") + case .failure( _): + XCTFail("Should not return a failure") + } + self?.expectation.fulfill() + } + wait(for: [self.expectation], timeout: 1.0) + } + + // MARK: - Server Error Response + + func testErrorResponse() { + + let failureNetwork = MockFailureNetworkAutenticationServiceDatasource(networkService: .init()) + sut = AuthenticationRepository(authenticationService: failureNetwork) + + let modelRequest = LoginRequestModel(username: "error", password: "errorpass") + + sut?.perform(login: .loginRequest,with: modelRequest){ [weak self] result in + + //THEN + switch(result){ + case .success( _): + XCTFail("Should not return a failure") + case .failure( let error): + switch( error ){ + case .network( _): + XCTAssertEqual(error, BankFailure.network(.init())) + default: + XCTFail("Should not return a failure") + } + } + self?.expectation.fulfill() + } + wait(for: [self.expectation], timeout: 1.0) + } +} diff --git a/KssiusBank/KssiusBankTests/Core/Repositories/MockAutenticationServiceDatasource.swift b/KssiusBank/KssiusBankTests/Core/Repositories/MockAutenticationServiceDatasource.swift new file mode 100644 index 000000000..9de51855d --- /dev/null +++ b/KssiusBank/KssiusBankTests/Core/Repositories/MockAutenticationServiceDatasource.swift @@ -0,0 +1,35 @@ +// +// MockAutenticationServiceDatasource.swift +// KssiusBank +// +// Created by Cassio Sousa on 16/06/23. +// + +import Foundation + +// MARK: - Success mock AutenticationServiceDatasource + +final class MockSuccessAutenticationServiceDatasource: AuthenticationServiceDatasourceProtocol { + init(networkService: NetworkService) {} + + func perform(login: AutenticationApi.Endpoints, with data: LoginRequestModel, completion: @escaping (Result) -> Void) { + completion(.success(UserAccountModel(userId: "", + email: "Marquis_Gibson@hotmail.com", + cpf: "", + name: "", + accountNumber: "", + agency: "", + balance: "")) + ) + } +} + +// MARK: - Failure network AutenticationServiceDatasource + +final class MockFailureNetworkAutenticationServiceDatasource: AuthenticationServiceDatasourceProtocol { + init(networkService: NetworkService) {} + + func perform(login: AutenticationApi.Endpoints, with data: LoginRequestModel, completion: @escaping (Result) -> Void) { + completion(.failure(.network(.init()))) + } +} diff --git a/KssiusBank/KssiusBankTests/KssiusBankTests.swift b/KssiusBank/KssiusBankTests/KssiusBankTests.swift new file mode 100644 index 000000000..a17de1184 --- /dev/null +++ b/KssiusBank/KssiusBankTests/KssiusBankTests.swift @@ -0,0 +1,36 @@ +// +// KssiusBankTests.swift +// KssiusBankTests +// +// Created by Cassio Sousa on 15/06/23. +// + +import XCTest +@testable import KssiusBank + +final class KssiusBankTests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + // Any test you write for XCTest can be annotated as throws and async. + // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. + // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/KssiusBank/KssiusBankTests/MockSession.swift b/KssiusBank/KssiusBankTests/MockSession.swift new file mode 100644 index 000000000..231a9c548 --- /dev/null +++ b/KssiusBank/KssiusBankTests/MockSession.swift @@ -0,0 +1,17 @@ +// +// MockSession.swift +// KssiusBank +// +// Created by Cassio Sousa on 16/06/23. +// + +import Foundation + +final class MockSession { + + static func sessionInstance() -> URLSession { + let configuration = URLSessionConfiguration.default + configuration.protocolClasses = [MockURLProtocol.self] + return URLSession.init(configuration: configuration) + } +} diff --git a/KssiusBank/KssiusBankTests/Seeds.swift b/KssiusBank/KssiusBankTests/Seeds.swift new file mode 100644 index 000000000..21ae33d48 --- /dev/null +++ b/KssiusBank/KssiusBankTests/Seeds.swift @@ -0,0 +1,25 @@ +// +// Seeds.swift +// KssiusBankTests +// +// Created by Cassio Sousa on 15/06/23. +// + +import Foundation + +struct Seeds { + enum Json: String { + case account = """ + { + "createdAt": "2023-06-15T23:36:43.182Z", + "name": "Diana Leuschke", + "email": "Marquis_Gibson@hotmail.com", + "cpf": "(253) 643-9973 x2560", + "accountNumber": "74393734", + "agency": "827810101", + "balance": "472.29", + "id": "3" + } + """ + } +} diff --git a/KssiusBank/KssiusBankTests/Services/MockURLProtocol.swift b/KssiusBank/KssiusBankTests/Services/MockURLProtocol.swift new file mode 100644 index 000000000..a32bae983 --- /dev/null +++ b/KssiusBank/KssiusBankTests/Services/MockURLProtocol.swift @@ -0,0 +1,58 @@ +// +// MockURLProtocol.swift +// KssiusBank +// +// Created by Cassio Sousa on 15/06/23. +// + +import Foundation + + +final class MockURLProtocol: URLProtocol { + + // 1. Handler to test the request and return mock response. + static var requestHandler: ((URLRequest) throws -> (HTTPURLResponse, Data?))? + + override class func canInit(with request: URLRequest) -> Bool { + // To check if this protocol can handle the given request. + return true + } + + override class func canonicalRequest(for request: URLRequest) -> URLRequest { + // Here you return the canonical version of the request + //but most of the time you pass the orignal one. + return request + } + + override func startLoading() { + // This is where you create the mock response + //as per your test case and send it to the URLProtocolClient. + guard let handler = MockURLProtocol.requestHandler else { + fatalError("Handler is unavailable.") + } + + do { + // 2. Call handler with received request and capture the tuple of response and data. + let (response, data) = try handler(request) + + // 3. Send received response to the client. + client?.urlProtocol(self, didReceive: response, cacheStoragePolicy: .notAllowed) + + if let data = data { + // 4. Send received data to the client. + client?.urlProtocol(self, didLoad: data) + } + + // 5. Notify request has been finished. + client?.urlProtocolDidFinishLoading(self) + } catch { + // 6. Notify received error. + client?.urlProtocol(self, didFailWithError: error) + } + } + + override func stopLoading() { + // This is called if the request gets canceled or completed. + } + +} diff --git a/KssiusBank/KssiusBankTests/Services/NetworkServiceTest.swift b/KssiusBank/KssiusBankTests/Services/NetworkServiceTest.swift new file mode 100644 index 000000000..3f78dc025 --- /dev/null +++ b/KssiusBank/KssiusBankTests/Services/NetworkServiceTest.swift @@ -0,0 +1,74 @@ +// +// NetworkServiceTest.swift +// KssiusBank +// +// Created by Cassio Sousa on 15/06/23. +// + +import XCTest +@testable import KssiusBank + +final class NetworkServiceTest: XCTestCase { + var sut: NetworkService? + var expectation: XCTestExpectation! + let apiURL = URL(string: "https://example.com.br/post/42")! + let baseUrl = "https://example.com.br" + + override func setUp() { + let configuration = URLSessionConfiguration.default + configuration.protocolClasses = [MockURLProtocol.self] + let urlSession = URLSession.init(configuration: configuration) + + sut = NetworkService(urlSession: urlSession) + expectation = expectation(description: "NetworkServiceTest Expectation") + } + + override func tearDown() { + sut = nil + } + + // MARK: - Success Response and parse to model + + func testSuccessResponse() { + + let postEndpoint: Endpoint = .init(path:"post/42" , method: .get, configuration: .init(baseUrl: baseUrl)) + let data = Seeds.Json.account.rawValue.data(using: .utf8) + + MockURLProtocol.requestHandler = { request in + let response = HTTPURLResponse(url: self.apiURL, statusCode: 200, httpVersion: nil, headerFields: nil)! + return (response, data) + } + + sut?.request(endpoint:postEndpoint){ [weak self] result in + switch(result){ + case .success(let userModel): + XCTAssertEqual(userModel.email, "Marquis_Gibson@hotmail.com") + case .failure( _): + XCTFail("Should not return a failure") + } + self?.expectation.fulfill() + } + wait(for: [self.expectation], timeout: 1.0) + } + + // MARK: - Failure Network Response + + func testFailuteNetworkResponse() { + let postEndpoint: Endpoint = .init(path:"post/42" , method: .get, configuration: .init(baseUrl: baseUrl)) + MockURLProtocol.requestHandler = { request in + throw ServiceError.invalidUrl + } + sut?.request(endpoint: postEndpoint){ [weak self] result in + switch(result){ + case .success( _): + XCTFail("Should not return a failure") + + case .failure( let error): + XCTAssertEqual(error, ServiceError.noData) + } + self?.expectation.fulfill() + } + wait(for: [self.expectation], timeout: 1.0) + } +} + diff --git a/KssiusBank/KssiusBankUITests/KssiusBankUITests.swift b/KssiusBank/KssiusBankUITests/KssiusBankUITests.swift new file mode 100644 index 000000000..312274631 --- /dev/null +++ b/KssiusBank/KssiusBankUITests/KssiusBankUITests.swift @@ -0,0 +1,41 @@ +// +// KssiusBankUITests.swift +// KssiusBankUITests +// +// Created by Cassio Sousa on 15/06/23. +// + +import XCTest + +final class KssiusBankUITests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launch() + + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testLaunchPerformance() throws { + if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) { + // This measures how long it takes to launch your application. + measure(metrics: [XCTApplicationLaunchMetric()]) { + XCUIApplication().launch() + } + } + } +} diff --git a/KssiusBank/KssiusBankUITests/KssiusBankUITestsLaunchTests.swift b/KssiusBank/KssiusBankUITests/KssiusBankUITestsLaunchTests.swift new file mode 100644 index 000000000..0c8261168 --- /dev/null +++ b/KssiusBank/KssiusBankUITests/KssiusBankUITestsLaunchTests.swift @@ -0,0 +1,32 @@ +// +// KssiusBankUITestsLaunchTests.swift +// KssiusBankUITests +// +// Created by Cassio Sousa on 15/06/23. +// + +import XCTest + +final class KssiusBankUITestsLaunchTests: XCTestCase { + + override class var runsForEachTargetApplicationUIConfiguration: Bool { + true + } + + override func setUpWithError() throws { + continueAfterFailure = false + } + + func testLaunch() throws { + let app = XCUIApplication() + app.launch() + + // Insert steps here to perform after app launch but before taking a screenshot, + // such as logging into a test account or navigating somewhere in the app + + let attachment = XCTAttachment(screenshot: app.screenshot()) + attachment.name = "Launch Screen" + attachment.lifetime = .keepAlways + add(attachment) + } +} diff --git a/KssiusBank/Podfile b/KssiusBank/Podfile new file mode 100644 index 000000000..b17ed702e --- /dev/null +++ b/KssiusBank/Podfile @@ -0,0 +1,19 @@ +# Uncomment the next line to define a global platform for your project + platform :ios, '11.0' + +target 'KssiusBank' do + # Comment the next line if you don't want to use dynamic frameworks + use_frameworks! + + # Pods for KssiusBank + + target 'KssiusBankTests' do + inherit! :search_paths + # Pods for testing + end + + target 'KssiusBankUITests' do + # Pods for testing + end + +end From e5bf071c7538cde02c70b8eae75f7c85ad5421ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Sousa?= Date: Fri, 16 Jun 2023 11:08:12 -0300 Subject: [PATCH 02/23] - Arquivos de network --- .../Autehntication/AutenticationApi.swift | 18 ++++++ .../KssiusBank/Services/NetworkService.swift | 55 +++++++++++++------ .../Services/URLSessionProtocol.swift | 15 +++++ 3 files changed, 70 insertions(+), 18 deletions(-) diff --git a/KssiusBank/KssiusBank/Services/Autehntication/AutenticationApi.swift b/KssiusBank/KssiusBank/Services/Autehntication/AutenticationApi.swift index feed69201..624561cb2 100644 --- a/KssiusBank/KssiusBank/Services/Autehntication/AutenticationApi.swift +++ b/KssiusBank/KssiusBank/Services/Autehntication/AutenticationApi.swift @@ -6,3 +6,21 @@ // import Foundation + + +enum AutenticationApi{ + static let baseUrl = "http://" + enum Endpoints { + case loginRequest + } +} +extension AutenticationApi.Endpoints { + var endpoint: Endpoint { + switch self { + case .loginRequest: + return Endpoint(path: "/login", method: .post, configuration: .init(baseUrl: AutenticationApi.baseUrl)) + } + } +} + + diff --git a/KssiusBank/KssiusBank/Services/NetworkService.swift b/KssiusBank/KssiusBank/Services/NetworkService.swift index fe497d5bc..8116727b7 100755 --- a/KssiusBank/KssiusBank/Services/NetworkService.swift +++ b/KssiusBank/KssiusBank/Services/NetworkService.swift @@ -17,6 +17,7 @@ struct NetworkConfiguration { } struct Endpoint { + typealias RawValue = Int enum Method: String { case get, post @@ -31,10 +32,24 @@ struct Endpoint { } -enum ServiceError: Error { +enum ServiceError: Error, Equatable { + static func == (lhs: ServiceError, rhs: ServiceError) -> Bool { + switch (lhs, rhs) { + case (.invalidUrl, .invalidUrl): return true + case (.noData, .noData): return true + case (.decodeFail(let lnet), .decodeFail(let rnet)) : + return lnet == rnet + case (.network(let lnet), .network(let rnet)) : + return lnet == rnet + default: + return false + } + } + case invalidUrl - case decodeFail(Error?) - case network(Error?) + case noData + case decodeFail(ErrorResponse?) + case network(ErrorResponse?) } class NetworkService { @@ -42,20 +57,20 @@ class NetworkService { // MARK: - Properties typealias Response = R - private let endpoint: Endpoint + let urlSession: URLSession // MARK: - Initializers - init(endpoint: Endpoint) { - self.endpoint = endpoint + init(urlSession: URLSession = URLSession.shared) { + self.urlSession = urlSession } - func request(pathParameter: PathParameter?, completion: @escaping (Result) -> Void) { - var path = "" - if let pathParameter = pathParameter { - path = endpoint.fullPath.replacingOccurrences(of: ":\(pathParameter.name)", with: pathParameter.value) - } else{ - path = endpoint.fullPath - } + func request(endpoint: Endpoint, payload: Encodable? = nil, completion: @escaping (Result) -> Void) { + var path = endpoint.fullPath +// if let pathParameter = pathParameter { +// path = endpoint.fullPath.replacingOccurrences(of: ":\(pathParameter.name)", with: pathParameter.value) +// } else{ +// path = endpoint.fullPath +// } guard let url = URL(string: path) else { completion(.failure(.invalidUrl)) @@ -64,13 +79,17 @@ class NetworkService { printIfDebug(path) var request = URLRequest(url: url) - request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type") // the request is JSON - request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Accept") // the expected response is also JSON + request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type") + request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Accept") request.httpMethod = endpoint.method.rawValue - let task = URLSession.shared.dataTask(with: request) { data, response, error in + if let payload = payload, let encodablePayload = try? JSONEncoder().encode(payload) { + request.httpBody = encodablePayload + } + + let task = urlSession.dataTask(with: request) { data, response, error in guard let data = data else { - completion(.failure(.network(error))) + completion(.failure(.noData)) return } do{ @@ -78,7 +97,7 @@ class NetworkService { completion(.success(body)) }catch { printIfDebug("\(error)") - completion(.failure(.decodeFail(error))) + completion(.failure(.decodeFail(.init(message: error.localizedDescription)))) } } diff --git a/KssiusBank/KssiusBank/Services/URLSessionProtocol.swift b/KssiusBank/KssiusBank/Services/URLSessionProtocol.swift index 1da23c021..945d963ca 100644 --- a/KssiusBank/KssiusBank/Services/URLSessionProtocol.swift +++ b/KssiusBank/KssiusBank/Services/URLSessionProtocol.swift @@ -6,3 +6,18 @@ // import Foundation + +protocol URLSessionDataTaskProtocol { + func resume() + func cancel() +} + +protocol URLSessionProtocol { + func dataTask( + with request: URLRequest, + completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void + ) -> URLSessionDataTask +} + +extension URLSession : URLSessionProtocol{} +extension URLSessionDataTask : URLSessionDataTaskProtocol{} From bf574f665f6dcd5c1cfbc609d6988cd87371ef52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Sousa?= Date: Fri, 16 Jun 2023 11:09:06 -0300 Subject: [PATCH 03/23] =?UTF-8?q?-=20Arquivos=20de=20core=20autentica?= =?UTF-8?q?=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AutenticationServiceDatasource.swift | 26 +++++++++++++++++++ ...henticationServiceDatasourceProtocol.swift | 7 +++++ .../Core/Data/Models/LoginRequestModel.swift | 5 ++++ .../AutenticationRepository.swift | 20 ++++++++++++++ 4 files changed, 58 insertions(+) diff --git a/KssiusBank/KssiusBank/Core/Data/DataSources/AutenticationServiceDatasource.swift b/KssiusBank/KssiusBank/Core/Data/DataSources/AutenticationServiceDatasource.swift index 2f8404fb0..6191296e8 100644 --- a/KssiusBank/KssiusBank/Core/Data/DataSources/AutenticationServiceDatasource.swift +++ b/KssiusBank/KssiusBank/Core/Data/DataSources/AutenticationServiceDatasource.swift @@ -6,3 +6,29 @@ // import Foundation + +final class AuthenticationServiceDatasource: AuthenticationServiceDatasourceProtocol { + + // MARK: - Properties + private let networkService: NetworkService + + // MARK: - Inits + init(networkService: NetworkService) { + self.networkService = networkService + } +} + +// MARK: - Operations +extension AuthenticationServiceDatasource { + + func perform(login: AutenticationApi.Endpoints, with data: LoginRequestModel, completion: @escaping (Result) -> Void) { + networkService.request(endpoint: login.endpoint, payload: data ) { result in + switch(result) { + case .success(let model): + completion(.success(model)) + case .failure( _): + completion(.failure(.network(.init()))) + } + } + } +} diff --git a/KssiusBank/KssiusBank/Core/Data/DataSources/AuthenticationServiceDatasourceProtocol.swift b/KssiusBank/KssiusBank/Core/Data/DataSources/AuthenticationServiceDatasourceProtocol.swift index 5ab6ed0e6..6cef8f23e 100644 --- a/KssiusBank/KssiusBank/Core/Data/DataSources/AuthenticationServiceDatasourceProtocol.swift +++ b/KssiusBank/KssiusBank/Core/Data/DataSources/AuthenticationServiceDatasourceProtocol.swift @@ -6,3 +6,10 @@ // import Foundation + +protocol AuthenticationServiceDatasourceProtocol { + + init(networkService: NetworkService) + + func perform(login: AutenticationApi.Endpoints, with data: LoginRequestModel, completion: @escaping (Result) -> Void) +} diff --git a/KssiusBank/KssiusBank/Core/Data/Models/LoginRequestModel.swift b/KssiusBank/KssiusBank/Core/Data/Models/LoginRequestModel.swift index bc48c691d..f08298f6e 100644 --- a/KssiusBank/KssiusBank/Core/Data/Models/LoginRequestModel.swift +++ b/KssiusBank/KssiusBank/Core/Data/Models/LoginRequestModel.swift @@ -6,3 +6,8 @@ // import Foundation + +struct LoginRequestModel: Codable { + let username: String + let password: String +} diff --git a/KssiusBank/KssiusBank/Core/Data/Repositories/AutenticationRepository.swift b/KssiusBank/KssiusBank/Core/Data/Repositories/AutenticationRepository.swift index 798ce1cd5..00731c2a8 100644 --- a/KssiusBank/KssiusBank/Core/Data/Repositories/AutenticationRepository.swift +++ b/KssiusBank/KssiusBank/Core/Data/Repositories/AutenticationRepository.swift @@ -6,3 +6,23 @@ // import Foundation + +final class AuthenticationRepository :AuthenticationRepositoryProtocol { + + let authenticationService: AuthenticationServiceDatasourceProtocol + + // MARK: - Inits + + init(authenticationService: AuthenticationServiceDatasourceProtocol) { + self.authenticationService = authenticationService + } + +} + +// MARK: - POST Methods + +extension AuthenticationRepository { + func perform(login: AutenticationApi.Endpoints, with data: LoginRequestModel, completion: @escaping (Result) -> Void) { + authenticationService.perform(login: login, with: data, completion: completion) + } +} From 08a1308549a594a842dd44d8cd00c3e28dd27173 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Sousa?= Date: Fri, 16 Jun 2023 11:09:54 -0300 Subject: [PATCH 04/23] =?UTF-8?q?-=20Arquivos=20comuns=20da=20aplica=C3=A7?= =?UTF-8?q?=C3=A3o.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 130857 -> 130857 bytes KssiusBank/KssiusBank/Common/Constants.swift | 4 ++ .../KssiusBank/Common/error/BankFailure.swift | 39 ++++++++++++++++-- 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/UserInterfaceState.xcuserstate b/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/UserInterfaceState.xcuserstate index 03b6bf2496909110c233eac4be1a40a11cd19831..faa8af32b616783f46c3f9d7c5f4fcb6b34d5b11 100644 GIT binary patch delta 71 zcmZ4akA3Ao_6@emtU<2o&jlt2NXu@HS3b@H=2~sm)_9!7#hk;f-^j?`$gDhhLag-U ZfbZoSBHVh+IgQN9jg0JzSavbA hH8LhQ7)(E?#VFBiHF>+$WX5g6j0)R7E@QNa000Df9#Q}R diff --git a/KssiusBank/KssiusBank/Common/Constants.swift b/KssiusBank/KssiusBank/Common/Constants.swift index 4d903238a..0b89c968e 100644 --- a/KssiusBank/KssiusBank/Common/Constants.swift +++ b/KssiusBank/KssiusBank/Common/Constants.swift @@ -6,3 +6,7 @@ // import Foundation + +enum Constants { + +} diff --git a/KssiusBank/KssiusBank/Common/error/BankFailure.swift b/KssiusBank/KssiusBank/Common/error/BankFailure.swift index d71913b53..fd609c735 100644 --- a/KssiusBank/KssiusBank/Common/error/BankFailure.swift +++ b/KssiusBank/KssiusBank/Common/error/BankFailure.swift @@ -1,7 +1,40 @@ import Foundation -enum BankFailure : Error { +struct ErrorResponse: Codable, Equatable { + + // MARK: - Properties + + let code: Int? + let message: String? + + // MARK: - Inits + + init(code: Int? = nil, message: String? = nil) { + self.code = code + self.message = message + } + + // MARK: - Equatable + + static func == (lhs: ErrorResponse, rhs: ErrorResponse) -> Bool { + lhs.code == rhs.code && lhs.message == rhs.message + } +} + +enum BankFailure: Error, Equatable { + + // MARK: - Equatable + + static func == (lhs: BankFailure, rhs: BankFailure) -> Bool { + switch (lhs, rhs) { + case (.number, .number): return true + case (.network(let lnet), .network(let rnet)): + return lnet == rnet + default: + return false + } + } + case number - case network(code: Int) - case network(Error?) + case network(ErrorResponse?) } From 47c83dd0e88f65f30ee4c707b122db6312c8feb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Sousa?= Date: Fri, 16 Jun 2023 14:28:31 -0300 Subject: [PATCH 05/23] =?UTF-8?q?-=20Adicionado=20Swiftgen=20integra=C3=A7?= =?UTF-8?q?=C3=A3o=20da=20Scene.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../KssiusBank.xcodeproj/project.pbxproj | 190 +++++++++++++++++- .../UserInterfaceState.xcuserstate | Bin 130857 -> 149261 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 18 ++ KssiusBank/KssiusBank/.DS_Store | Bin 0 -> 6148 bytes KssiusBank/KssiusBank/AppDelegate.swift | 38 ++-- .../KssiusBank/Common/CommonValidate.swift | 57 ++++++ .../KssiusBank/Common/error/BankFailure.swift | 4 +- .../AutenticationRepository.swift | 21 +- .../AuthenticationRepositoryProtocol.swift | 2 +- .../KssiusBank/Core/Data/UserFailure.swift | 32 +++ .../Generated/Strings+Generated.swift | 57 ++++++ .../Generated/XCAssets+Generated.swift | 138 +++++++++++++ KssiusBank/KssiusBank/Info.plist | 22 +- .../KssiusBank.xcdatamodeld/.xccurrentversion | 5 +- KssiusBank/KssiusBank/Main.storyboard | 21 +- KssiusBank/KssiusBank/Resources/.DS_Store | Bin 0 -> 6148 bytes .../Resources/en.lproj/Localizable.strings | 7 + .../Resources/pt-BR.lproj/Localizable.strings | 16 ++ KssiusBank/KssiusBank/SceneDelegate.swift | 94 ++++----- .../Autentication/LoginInteractor.swift | 76 +++++-- .../Scenes/Autentication/LoginModels.swift | 22 +- .../Scenes/Autentication/LoginPresenter.swift | 27 ++- .../Autentication/LoginViewController.swift | 33 ++- .../Scenes/Autentication/LoginWorker.swift | 29 ++- .../Workers/AuthenticationWorker.swift | 26 +++ .../AutenticationRepositoryTest.swift | 2 +- KssiusBank/Podfile | 1 + KssiusBank/swiftgen.yml | 57 ++++++ 28 files changed, 846 insertions(+), 149 deletions(-) create mode 100644 KssiusBank/KssiusBank/.DS_Store create mode 100644 KssiusBank/KssiusBank/Common/CommonValidate.swift create mode 100644 KssiusBank/KssiusBank/Core/Data/UserFailure.swift create mode 100644 KssiusBank/KssiusBank/Generated/Strings+Generated.swift create mode 100644 KssiusBank/KssiusBank/Generated/XCAssets+Generated.swift create mode 100644 KssiusBank/KssiusBank/Resources/.DS_Store create mode 100644 KssiusBank/KssiusBank/Resources/en.lproj/Localizable.strings create mode 100644 KssiusBank/KssiusBank/Resources/pt-BR.lproj/Localizable.strings create mode 100644 KssiusBank/swiftgen.yml diff --git a/KssiusBank/KssiusBank.xcodeproj/project.pbxproj b/KssiusBank/KssiusBank.xcodeproj/project.pbxproj index 47d19155a..3498a6838 100644 --- a/KssiusBank/KssiusBank.xcodeproj/project.pbxproj +++ b/KssiusBank/KssiusBank.xcodeproj/project.pbxproj @@ -7,6 +7,9 @@ objects = { /* Begin PBXBuildFile section */ + 0C0A8A4ED390D04AF7F6CDB2 /* Pods_KssiusBank.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 496CC13B26568A1792A4FF06 /* Pods_KssiusBank.framework */; }; + 797591CA33A7351DB85A364A /* Pods_KssiusBankTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77B528124D5466903948FAD8 /* Pods_KssiusBankTests.framework */; }; + D781B2250A37C1AD29E84710 /* Pods_KssiusBank_KssiusBankUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD57596A225C4608F6EBE669 /* Pods_KssiusBank_KssiusBankUITests.framework */; }; DF0BA7D02A3BE5CE00A812F4 /* KssiusBank.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA7CE2A3BE5CE00A812F4 /* KssiusBank.xcdatamodeld */; }; DF0BA7F72A3BE65800A812F4 /* NetworkServiceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFEC186A2A3BDE29001277A2 /* NetworkServiceTest.swift */; }; DF0BA7F82A3BE65B00A812F4 /* MockURLProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFEC186D2A3BDE99001277A2 /* MockURLProtocol.swift */; }; @@ -54,6 +57,16 @@ DF0BA8662A3C9B4600A812F4 /* AuthenticationRepositoryProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8422A3C7AAD00A812F4 /* AuthenticationRepositoryProtocol.swift */; }; DF0BA8692A3C9BA900A812F4 /* MockAutenticationServiceDatasource.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8672A3C9BA900A812F4 /* MockAutenticationServiceDatasource.swift */; }; DF0BA86A2A3C9CB700A812F4 /* AutenticationRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8462A3C7C0200A812F4 /* AutenticationRepository.swift */; }; + DF0BA86C2A3CA9AB00A812F4 /* UserFailure.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA86B2A3CA9AB00A812F4 /* UserFailure.swift */; }; + DF0BA86D2A3CA9AB00A812F4 /* UserFailure.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA86B2A3CA9AB00A812F4 /* UserFailure.swift */; }; + DF0BA86F2A3CAC7D00A812F4 /* CommonValidate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA86E2A3CAC7D00A812F4 /* CommonValidate.swift */; }; + DF0BA8702A3CAC7D00A812F4 /* CommonValidate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA86E2A3CAC7D00A812F4 /* CommonValidate.swift */; }; + DF0BA8762A3CB91B00A812F4 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DF0BA8792A3CB91B00A812F4 /* Localizable.strings */; }; + DF0BA8772A3CB91B00A812F4 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DF0BA8792A3CB91B00A812F4 /* Localizable.strings */; }; + DF0BA87E2A3CC4ED00A812F4 /* XCAssets+Generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA87C2A3CC4ED00A812F4 /* XCAssets+Generated.swift */; }; + DF0BA87F2A3CC4ED00A812F4 /* Strings+Generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA87D2A3CC4ED00A812F4 /* Strings+Generated.swift */; }; + DF0BA8802A3CC4F300A812F4 /* Strings+Generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA87D2A3CC4ED00A812F4 /* Strings+Generated.swift */; }; + DF0BA8812A3CC4F500A812F4 /* XCAssets+Generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA87C2A3CC4ED00A812F4 /* XCAssets+Generated.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -113,6 +126,12 @@ DF0BA8602A3C998100A812F4 /* AutenticationRepositoryTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutenticationRepositoryTest.swift; sourceTree = ""; }; DF0BA8632A3C9A3E00A812F4 /* MockSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockSession.swift; sourceTree = ""; }; DF0BA8672A3C9BA900A812F4 /* MockAutenticationServiceDatasource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAutenticationServiceDatasource.swift; sourceTree = ""; }; + DF0BA86B2A3CA9AB00A812F4 /* UserFailure.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserFailure.swift; sourceTree = ""; }; + DF0BA86E2A3CAC7D00A812F4 /* CommonValidate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommonValidate.swift; sourceTree = ""; }; + DF0BA8782A3CB91B00A812F4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; + DF0BA87A2A3CC2B500A812F4 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Localizable.strings"; sourceTree = ""; }; + DF0BA87C2A3CC4ED00A812F4 /* XCAssets+Generated.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "XCAssets+Generated.swift"; sourceTree = ""; }; + DF0BA87D2A3CC4ED00A812F4 /* Strings+Generated.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Strings+Generated.swift"; sourceTree = ""; }; DFEC18532A3BD28C001277A2 /* UserAccountModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserAccountModel.swift; sourceTree = ""; }; DFEC18562A3BD314001277A2 /* AuthenticationWorker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationWorker.swift; sourceTree = ""; }; DFEC18592A3BD423001277A2 /* NetworkService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkService.swift; sourceTree = ""; }; @@ -129,6 +148,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 0C0A8A4ED390D04AF7F6CDB2 /* Pods_KssiusBank.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -136,6 +156,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 797591CA33A7351DB85A364A /* Pods_KssiusBankTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -143,6 +164,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D781B2250A37C1AD29E84710 /* Pods_KssiusBank_KssiusBankUITests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -162,6 +184,8 @@ DF0BA7C42A3BE5CE00A812F4 /* KssiusBank */ = { isa = PBXGroup; children = ( + DF0BA87B2A3CC4D300A812F4 /* Generated */, + DF0BA8722A3CB89F00A812F4 /* Resources */, DF0BA8452A3C7B7A00A812F4 /* Core */, DFEC185C2A3BD43B001277A2 /* Common */, DFEC18422A3BD060001277A2 /* Services */, @@ -219,6 +243,7 @@ DF0BA83C2A3C799300A812F4 /* Repositories */, DF0BA83B2A3C798800A812F4 /* DataSources */, DFEC18432A3BD068001277A2 /* Models */, + DF0BA86B2A3CA9AB00A812F4 /* UserFailure.swift */, ); path = Data; sourceTree = ""; @@ -283,6 +308,23 @@ path = Repositories; sourceTree = ""; }; + DF0BA8722A3CB89F00A812F4 /* Resources */ = { + isa = PBXGroup; + children = ( + DF0BA8792A3CB91B00A812F4 /* Localizable.strings */, + ); + path = Resources; + sourceTree = ""; + }; + DF0BA87B2A3CC4D300A812F4 /* Generated */ = { + isa = PBXGroup; + children = ( + DF0BA87D2A3CC4ED00A812F4 /* Strings+Generated.swift */, + DF0BA87C2A3CC4ED00A812F4 /* XCAssets+Generated.swift */, + ); + path = Generated; + sourceTree = ""; + }; DFEC18012A3BCFF9001277A2 = { isa = PBXGroup; children = ( @@ -345,6 +387,7 @@ children = ( DFEC185D2A3BD43B001277A2 /* error */, DF0BA8572A3C87AE00A812F4 /* Constants.swift */, + DF0BA86E2A3CAC7D00A812F4 /* CommonValidate.swift */, ); path = Common; sourceTree = ""; @@ -394,9 +437,11 @@ isa = PBXNativeTarget; buildConfigurationList = DF0BA7ED2A3BE5D100A812F4 /* Build configuration list for PBXNativeTarget "KssiusBank" */; buildPhases = ( + 198DABB992C70C4C79F5391A /* [CP] Check Pods Manifest.lock */, DF0BA7BF2A3BE5CD00A812F4 /* Sources */, DF0BA7C02A3BE5CD00A812F4 /* Frameworks */, DF0BA7C12A3BE5CD00A812F4 /* Resources */, + DF0BA8712A3CB2D100A812F4 /* ShellScript */, ); buildRules = ( ); @@ -411,6 +456,7 @@ isa = PBXNativeTarget; buildConfigurationList = DF0BA7F02A3BE5D100A812F4 /* Build configuration list for PBXNativeTarget "KssiusBankTests" */; buildPhases = ( + 1C669CFC8BFBE2EAEF727919 /* [CP] Check Pods Manifest.lock */, DF0BA7D72A3BE5D000A812F4 /* Sources */, DF0BA7D82A3BE5D000A812F4 /* Frameworks */, DF0BA7D92A3BE5D000A812F4 /* Resources */, @@ -429,6 +475,7 @@ isa = PBXNativeTarget; buildConfigurationList = DF0BA7F32A3BE5D100A812F4 /* Build configuration list for PBXNativeTarget "KssiusBankUITests" */; buildPhases = ( + B1D8C786446D7F712AFB90BD /* [CP] Check Pods Manifest.lock */, DF0BA7E12A3BE5D000A812F4 /* Sources */, DF0BA7E22A3BE5D000A812F4 /* Frameworks */, DF0BA7E32A3BE5D000A812F4 /* Resources */, @@ -468,10 +515,11 @@ }; buildConfigurationList = DFEC18052A3BCFF9001277A2 /* Build configuration list for PBXProject "KssiusBank" */; compatibilityVersion = "Xcode 14.0"; - developmentRegion = en; + developmentRegion = "pt-BR"; hasScannedForEncodings = 0; knownRegions = ( en, + "pt-BR", Base, ); mainGroup = DFEC18012A3BCFF9001277A2; @@ -492,6 +540,7 @@ buildActionMask = 2147483647; files = ( DF0BA8272A3BEEED00A812F4 /* Assets.xcassets in Resources */, + DF0BA8762A3CB91B00A812F4 /* Localizable.strings in Resources */, DF0BA80D2A3BE6CA00A812F4 /* LaunchScreen.storyboard in Resources */, DF0BA8042A3BE6CA00A812F4 /* Main.storyboard in Resources */, ); @@ -501,6 +550,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + DF0BA8772A3CB91B00A812F4 /* Localizable.strings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -513,6 +563,92 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 198DABB992C70C4C79F5391A /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-KssiusBank-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 1C669CFC8BFBE2EAEF727919 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-KssiusBankTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + B1D8C786446D7F712AFB90BD /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-KssiusBank-KssiusBankUITests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + DF0BA8712A3CB2D100A812F4 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Type a script or drag a script file from your workspace to insert its path.\nif [[ -f \"${PODS_ROOT}/SwiftGen/bin/swiftgen\" ]]; then\n \"${PODS_ROOT}/SwiftGen/bin/swiftgen\"\nelse\n echo \"warning: SwiftGen is not installed. Run 'pod install --repo-update' to install it.\"\nfi \n"; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ DF0BA7BF2A3BE5CD00A812F4 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -528,6 +664,7 @@ DF0BA8152A3BEC4700A812F4 /* NetworkService.swift in Sources */, DF0BA8132A3BEC4700A812F4 /* AutenticationApi.swift in Sources */, DF0BA8092A3BE6CA00A812F4 /* AppDelegate.swift in Sources */, + DF0BA87F2A3CC4ED00A812F4 /* Strings+Generated.swift in Sources */, DF0BA85E2A3C985500A812F4 /* AuthenticationServiceDatasourceProtocol.swift in Sources */, DF0BA8072A3BE6CA00A812F4 /* SceneDelegate.swift in Sources */, DF0BA8362A3BF05800A812F4 /* AuthenticationWorker.swift in Sources */, @@ -536,6 +673,9 @@ DF0BA8112A3BE9F200A812F4 /* UserAccountModel.swift in Sources */, DF0BA7D02A3BE5CE00A812F4 /* KssiusBank.xcdatamodeld in Sources */, DF0BA8492A3C7C8E00A812F4 /* AutenticationServiceDatasource.swift in Sources */, + DF0BA86F2A3CAC7D00A812F4 /* CommonValidate.swift in Sources */, + DF0BA86C2A3CA9AB00A812F4 /* UserFailure.swift in Sources */, + DF0BA87E2A3CC4ED00A812F4 /* XCAssets+Generated.swift in Sources */, DF0BA8312A3BF03900A812F4 /* LoginRouter.swift in Sources */, DF0BA8472A3C7C0200A812F4 /* AutenticationRepository.swift in Sources */, DF0BA8432A3C7AAD00A812F4 /* AuthenticationRepositoryProtocol.swift in Sources */, @@ -550,14 +690,18 @@ DF0BA8252A3BEE3D00A812F4 /* BankFailure.swift in Sources */, DF0BA8692A3C9BA900A812F4 /* MockAutenticationServiceDatasource.swift in Sources */, DF0BA8172A3BEC4800A812F4 /* URLSessionProtocol.swift in Sources */, + DF0BA8812A3CC4F500A812F4 /* XCAssets+Generated.swift in Sources */, + DF0BA8802A3CC4F300A812F4 /* Strings+Generated.swift in Sources */, DF0BA7F82A3BE65B00A812F4 /* MockURLProtocol.swift in Sources */, DF0BA80E2A3BE6D400A812F4 /* KssiusBankTests.swift in Sources */, DF0BA8662A3C9B4600A812F4 /* AuthenticationRepositoryProtocol.swift in Sources */, DF0BA8592A3C87AE00A812F4 /* Constants.swift in Sources */, DF0BA8392A3BFB6100A812F4 /* Seeds.swift in Sources */, + DF0BA86D2A3CA9AB00A812F4 /* UserFailure.swift in Sources */, DF0BA8122A3BE9F300A812F4 /* UserAccountModel.swift in Sources */, DF0BA8552A3C836A00A812F4 /* AutenticationServiceDatasourceTest.swift in Sources */, DF0BA7F72A3BE65800A812F4 /* NetworkServiceTest.swift in Sources */, + DF0BA8702A3CAC7D00A812F4 /* CommonValidate.swift in Sources */, DF0BA84A2A3C7C8E00A812F4 /* AutenticationServiceDatasource.swift in Sources */, DF0BA8372A3BF05800A812F4 /* AuthenticationWorker.swift in Sources */, DF0BA8162A3BEC4800A812F4 /* AutenticationApi.swift in Sources */, @@ -594,9 +738,22 @@ }; /* End PBXTargetDependency section */ +/* Begin PBXVariantGroup section */ + DF0BA8792A3CB91B00A812F4 /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + DF0BA8782A3CB91B00A812F4 /* en */, + DF0BA87A2A3CC2B500A812F4 /* pt-BR */, + ); + name = Localizable.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + /* Begin XCBuildConfiguration section */ DF0BA7EE2A3BE5D100A812F4 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B0965131F0D770E77CA79752 /* Pods-KssiusBank.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -608,8 +765,9 @@ INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; INFOPLIST_KEY_UIMainStoryboardFile = Main; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -617,14 +775,18 @@ MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = br.com.kssius.KssiusBank; PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 1; }; name = Debug; }; DF0BA7EF2A3BE5D100A812F4 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 9E03F5BEAD121A2725CAC1CF /* Pods-KssiusBank.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -636,8 +798,9 @@ INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; INFOPLIST_KEY_UIMainStoryboardFile = Main; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -645,14 +808,18 @@ MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = br.com.kssius.KssiusBank; PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 1; }; name = Release; }; DF0BA7F12A3BE5D100A812F4 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 67D965C4039A5F4C8DAF287A /* Pods-KssiusBankTests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; @@ -673,6 +840,7 @@ }; DF0BA7F22A3BE5D100A812F4 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = ACDDEAB26AE6197E2B15A29D /* Pods-KssiusBankTests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; @@ -693,6 +861,7 @@ }; DF0BA7F42A3BE5D100A812F4 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 07786122957DD35BED1B07AA /* Pods-KssiusBank-KssiusBankUITests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CODE_SIGN_STYLE = Automatic; @@ -711,6 +880,7 @@ }; DF0BA7F52A3BE5D100A812F4 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 1F35001EECB5F430346C58D9 /* Pods-KssiusBank-KssiusBankUITests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CODE_SIGN_STYLE = Automatic; @@ -731,6 +901,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; @@ -777,7 +948,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.4; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -791,6 +962,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; @@ -831,7 +1003,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.4; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = iphoneos; diff --git a/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/UserInterfaceState.xcuserstate b/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/UserInterfaceState.xcuserstate index faa8af32b616783f46c3f9d7c5f4fcb6b34d5b11..bfbeb560c83eb94b0f4842533a347c5665899870 100644 GIT binary patch literal 149261 zcmeFacYIXE*FSz|?)F}@CEE)1nh{40wN@I5U?xu z0xBw~0TByU>=hNT`#W>*Zgw{TKH+(IzQ2Dy`bx;|z4y$_IWzBb=9IZpt18NCYSYq= zGl;ht%)|S+UIJ94{IL#;-6=PwnjE(8YbYfDNRHieN#-uYDOeQms zxtbZo3}%KfLz!XBaApKEk||_nF%`^grjiLWRm>cwnyF!GnL6fr<_6|Q<|gK5<`(8w zW;Jsga|g45xrf=vY-Spm?aYJBL(Id>Bg~`B6UL0Y6kdSpOGg zL9|WM{y%Qfxp0C;;-=6_#6B!{to|&&*F2eg>B2GvYBiSo6B}%yR*I7 ze0Bgkh#kxhVTZCK*$M1ab`~3EtJqq$j$ObmVF`N;yMkTG-pJm>u4Zpz*RUJd26hj- zpM8jZjD3=QmVJ>u$iBk9&K_Y;u&3D5>{sm9?Dy;s?9c2u_B{J1`?+85)Bp&5sem25`{$NqM4#f zQCL(XnkSksS}a;3BBEO~ErEuyWWZKCa>9ipA0`$P|k9u_?!dQ$Y1 z=%DD3=q1t1qE|$3irx}6iryD}D*8(Fo#=bf8PQqMInf`YKSlqF8L?cf6I;a&u~Y04 z`^0{6TX8#advS_5U7R7#7Uzhs5_c2#6%Q7V6pt2<5swv56i*SCh(qFO;+f(a@j@{t zUM{{)yh40~_!jZ4;@ib{i0>BPFMdG$p!gy2!{SH8kBT1?KQ2BXenR|=_>lM|@$2Fv z;o#P5htir*D~BK}nTnfN>LFXBJN|4JB%NFtWVB?^f~Vvram7Kv5jkT@k>B-xT2 zNvq=%%Zq(E}DWRPTpWTa%gWP)U(WRfH#nI@Sosglf-ER|d%xmL1L zvPyE3WVPfr$(@q5lJ$};lHHOAC67uTlRPeYO7fiKpyUDpg8VQk}G&w7s;0w4=0>G)0;!?JP}`rb{!V+0yRP9@3uD zzS4fuq0(W};nES(ankY9Qt3=-jdY%LzI3salP;I8lHMe}S$dmvjdZPapLD!Bs(lSB0DN; zlpT}3Bl}VIlkAM_XW1{ZUu9=y=Va$)zsY`={Vf;C#d3*UC0EPM@+7%M?v{JxUU>(3 zx;#(bUEV{UFE5bymk*E+mJgSYkdKm&mXDWDkeA74$*bja<@4l=e)&W4$K;R8pOQZm@(<*v;t|E8ipLaBDxOk2r+8lRg5pKR%ZgVNZz)bHK31Goe5LqK z@sr|L#aYGgia!+pDE?K-lv<@lnXGguJ<5QxowAcMMVYS5P-ZKKDu*eDD@Q0tDhriG z%2CSE$}!5Z%8ANSWtnoOa+b12S*xs5&Q;D+E>m*K>y@jOcPsBvZdBGQw<&ii_bT@( zA5=c1d`$Vc@_FSe$~Tn9l*g4Pl^-ZSR(_)VT=|9a8|5#`KU7#HQAt%wl}e>knN(Jl zP32U%R6bQlRfZ~8)lJo1)mzn9)lYS`YLIG}YPf2gYKm&QYL==(Ri&y`%~vf@Em191 zU87pB+Mv2ewNZ7iYLjZSs$SKg+M?R3+Ns*Fx?lCE>M_-`s^?VCt6osOsCrHHy6TAP zgzA*)wCXF>*Q)PTXH;iZ=Tv{F{#5;|X4O))PHj#p)&M>(ndMH>ht^-=)4=y-vMe zy+OT0y;HqQy<5FU{eb#G_2cRT>Sxris1K`ORllZwU426Rj{1G|2kKANU#icje^&pZ z{#*Tz`d8a_Z>7(hd8KN1g z8L1hqnW&khnWCAinWverS)f^{S)^I4S)#dCvr@B4bFXHTX0xVV)1cX+*{a#5*{<24 z*{j*7d06v^=0(jx%^}T8nwK@NXkOPG(Y&Q;)SS?~qdBGdQ1g-IW6c+uFEw9jzSf-4 z{H*y!^Q-1J%|DudwX9aE)oTq}qt>J~Ym>Bgtw$Tsw$pafW@t0DJ+-~Gy|ww;0_`B} zVC@j?aBY!xsHrVVM!wKKJq+G=f$cD{CjcA<8emeUgL_1e3%cWc*a*K6<9HfXnN zcWC!&_i6WQ@7F%6eN6kf_JH;Y?F-sBwQp$~wa2vYXy4aRT~}QXT_0V4-PO9`x+2|p-6Y)< z-89`yU6rmzH&?e<$LUt+ZqlvR-KN{1yGOTCcdu@nZl~@(-Co^;x`%WJbWiA>)E&|t z*1f7bs(V9sOm|%Oo$h`&D;VcTV?*9_g{3)r<5By;5(~oAegF zRd3UK^*()9{Z;yI`tJH3`kwk;`ri6{eSyA@et>?Mez<;wevE#seu}o@4{(KqO~==bRF)9=;q)9=?mrhi=j zoc^Hxkp6xB2l`X`5A`4EKh}Su|5X2({(A=X>Cfx`)c>XbTmO#% z8(4$Q;4=gbZ4B)V9SkXkR71KU!_dW$ZOAipHC$!rX(%xCG4wU`GhA&LX&7x7W0+u= zXqaZ0ZkS;xH_SHF7-|iR4NDA54a*Fi;X1<#!wrVJ4eJc+4I2#i7&aQ}4ciSn4EqiD z8y+w`VmM&TGj=!jFyI_d z)*9=K3ycemOO4Bn*BX}_R~fH2-fXYnYx>Ln0lIenR=V@O$DYtroN_rrmIaOOe0N& zrg5h6rm3bt4!CMZZO?wy2*62=@!$irq!m~Om~{@F>N$$F>N*7 zXWDDpXL{81nCT7Eo2Iu+jizI!P+q}nopLwr&pLxIeA@dXF z=giNW51U^#zh*vWK5qWb{Jr@H^N;4A%xBC$n}0F?YCdZ|XZ|AzB}tQHNxCF`k|D{S zl$?~Al$F#aDLW}ADK{xEscX_zN!^mVC-qJmkTf)DSkjoJu}R~SN|L4~ElgUJv^Z%= z($b`5Nn8?1x+dw`q~%Ggl5S19Gihzoy-AyrHYe>&+LiQt(hEs1CLK&Vl=M>4%So>! z9Zq^R>9wRcl1?OjkaQ~P^Q145en|S!BDKgYa*M*Ew5TjIyGcDDY8cVHZv1N(nPRm-$ zU6#8o>n!Un8!Y!&Hd^krY_e>z?6%x*dBAeO@`U9{%ZrwSmJckaEFW4vvV3g$#PX@- zGs|hq=aw%l-&oFA&Rc%7GFD{8R)tk*^;-khptX&)t+k!Cy|sh2qqUPY#hPx-wdPrS zT6#T4SxX)>-FT=UEq7ud%MOUT?k4y2g6D zb%XUD>%-PZtdCkBvp#M;V12^+r1dH5)7EFKFIW#-->|-EJ!yT{`ib>Z>mSxXt$$hn zw*F)N*T&e84cl0o$R@LCZ91FYX0cgq9-G(Zvvsg_v=!L;*!tS~+4|cC*aq6Jwhgik zwhgh3u#L4%wiVl^+h*9xZ8L4vwi?@wwwr7>+itPlYFll)&9=sNyX_9!owjwh&9?2f z9k%_p`)v={4%nWsHQJ8Zj@#b0ov^)QJ865@_MYv1+XuFfZC~2Hvi)HD(RSYUo9%Zy zvSYj5o@{s6opzVqZTHx{cAwpE57^t;JKNLj+4dZJPkS%>0Q*3DiG8ZQ)Lv!}*{9j3 z+h^Fz?KADO>|y&{`(pbN`*rpe_LcTq?W^rO?Yr!|?R)I^+4tJ_+4tM;w?ANi(Eh0X zY5OzwgZ4xABle^A6ZUuPKiYq?pRxaJ|Hb~R{jB|*{k;7*`|tL@lSRpjWM#53*_3Qf zb|$-$vy*d@bCdIuyCz?i+%36#a*yPm$-R>MBo9g+kvuYaeDZ|kiOFTjq2wjWOOux+ zbIBz6n&fMfmnUDBydrsJ@{P%BlJ8Dlmt3FRki0v2Px6b&2a^vazm)uP@+--QlV44K zE&282BgtG;<1v*Q=X?~Xs5*vUGTPL(s@3_9C5+dA7h+dDfrJ32c#Q=F;J3}>FRtFxE0 zw{xKLYUdzlp|i+Y;hgQPbcUT(&NzwPI4>})m zKJ0wN`Ka?T=i|-;&L^BtI-hbr=X}|D#Cgnei{^k7J`H%Bo z7vn-M>|$Lam&~PgnO#XPm&@()xZ1heyL!9wT?MW_uD-5*uKun8u7R$rU4vZ1T%%nR zU6WiP*EH93SJ+kMTIIUlb%X0h*G;aQUAMSyb**;Y=33)g>)Pnr;@axE&$ZXJ&-JM5 zG1nWeH(hVJ8ePX+$6ar`PPpE2opinHI^{a;`o{IG>lfFruCuPcUH`a~+!nXhZFAe* z$!>?+>2|r@ZjU?Q?&$91&TwbCuX1;D_i^`iPjXLo7rUppOWaf4rS39!$UV(H-95`) z?Vj&m;3n>C+}FBqbl>FO>fYww?%v_v>E7ku?cU?Q&%M{Z&;6kLfcshZbM9B%huyEb z8{Nm;-@3nZfA9Xm{iFLQ_Zj!k?qA%$y3e|Q_b?ubN9xgfbRMh6=1KQtcrra%o-Uqj zPmU+oljrH`xysYi)6X;5GsH8>Guku8Q|y`IneSQPS?F2hS?pQjS?XEl;XK51jc0}D zX3s62TRnGr)_U&sZ1QaO)O#8{yFGh6FM1Ao4tZYkyzF_!bJ+8$=QYpko+F;OJSROL zdOq@e>G{g@ljn?A?p1h|UX@qv)p)gDomcNQc#U3**X0d(gWeQxsyEx4;~n80=`HjY zc}ICid&hXkddGRkdnb4&dZ&1&duMwqy>q?uyz{-+c(3&?_g?2+;l07T#(TT>4)2}b zdT)bwi+8Jcn|Hf+hj*uUm-hkhgWgxYuX$hh9`PRazTth-`d(!)n_jB(T z-XFX_de3`*^XYtgpTTGJnS5qnlF#C^`fNVC&*cmHI{G^KvV2{9-F-cLqkUt1V}0X% z<9!o+6Md6>lYPa$DZVn_EZ-bowQr$sk#DhYx$ipPM&G@@O}@>(dS8QYi*KuMn{T^s zhi{MXLEq!P1HR{dFZf>dz2^JOciQ*4?+f3TzOQ^=`@Zpg>-*04z3+_gH{b8RfBlSK z=9l{weuLlW@96L3Pw}VvJNwi8>HZ9Vra#Ny#h>TzS|X{7?9w^grc)+W(CIS^snX z=lw7EU-BREAM+pgf8amm|J?tD{~!Oq0VaR~IKT!(0dYVQkOpJ{Rlpdq1?&M|z#j+% zIt5Y!eFOah{R0C60|QqF1_cHOh6IKNh6M@(;{#IyC4ut5%)qQbO`tY#Q{d*nErDAD zs{^+M)&y=3+!44lur{zhP#@S4*crG#@Ic@|;E6zE;8@^z;O)SPz&nAHfp-J%1>O&Q z5coLoW#Ie34}o)m^MT)jOb`WaL3=Pc=mU33`LRpg-6)m>SFqb_sS5_6YV1 z_74sTjtGtnP76*C&IpzVX9i~lD}u9wmBBf|+F)I9Zg63c3zFdS;ELeN;EloCf_Dbj z2G<8S2kV0k!6$-G2A>K(9egJEZ1B0@^T8K_F9r_=4+UQez8ridcsTfK@U`GO!IQyv zgYO034}K6l75p%GI`~8I$KX%FGr^yOe+B<;!?e-0(YGt#>AL8 z5n<19dBwUwR^RmewA}pODOr8`^h?Rg$;wE{FUZPF>C!JZFDtEgR$gua+-4fsr|+0> z^{kqzlG0G0aB1D_P-ShjWjo_zI_zMQ83*HJT#TFXFkVi~NjNDdP&~A7WT>V#TwMaU^M3O_CAB5RIyco?3&INYc(9Mm|9XjFxqOd&KkSM_bBd?ZPB8PjGRuM?3^W?Jd4t^bGmf$q^D9C9G!elc!OfHkhbY-q$x-s234X5RFoSrjqM$W{Uxujjd;9g8`CZ8!_ z`Y?UrQ-9#Gm3xqThvYhc!WrRtLrdnCPcMPd3STvS>|Gs#G3(*3 zQMKh2<+bIZnla^NwKIg<23FQoLChgs9lNdRN&dEpqsv3{`h=#|O`i@z(;0_^W{0a6 z^sg?dni2ap+J~kVCP8z3%gQ5k<I;s$f0xM|$=-0j>>$_D4y z(r{TQ71|wCUYpu9hSb6Zv!{kDigg{Dt`~;us!KzWnK)`-+`R=eN-C#^YJgjXp$gzi zsH}-jv94nify4&#fxok=!sV5}2LK^O*(ALS_-O zm|4Os51{V0g6a1tC6r@o&fI-vA$xEPV zjC8Ixb$3{0#R6eLUf`|)<)P{l2!6pGbb|GrUsY0B7AhN98=4LL^j?^B0R_oWjX>BQ zchBt5@RHivP<3TtZ8g9KKxW*<$kL&G8&z3X6Dli!$t2LYP&<*?A@mvgauHH=j+K;G zLbQ*PYUJU44RiZuE~SyVlUd8$#oRq!K=n#M%dx_rp_<7<3y0LzQqbyMU0t$Z3*5Jk zSr00K|2TGN;V?cF;3fV>)bQb~3w|-OL^?i|fK=b2(d?z05vlKeLz1<+^fL!EcbRsb6^o zaFmDE`~^dRWe~80)ib!HrnX7m^y^|>(x}R57rfaj&EY3`i-N&=A5ENPE^nqo-^zvx{0mV^yzQMfBblAqc$-KohGRK(XTyHL)E8zNY zeYY_u0E2?eyUcrBKR}+&+(7PXIzzQ|jYs%hR2_ne*cQHtL3Yzz5N6@9N|>$XwAHd= zUGUO(_N}CRE2Ab)#3C69Dnl@_3P9c^RUm%~RkYpc5I$v2(<%8G*T0_moEt!=B<5Y#QJ5DkO6%lFqeew$ZXVbaXaD%wKXk))J zX9Wt;FMflm0>J(|^9S=M^B40s^AGbcVz?pPP;MAEoEyQ7ouHW~^Llv{=;uky zXwb?&UMJf?H+w-(LzmiKSj+HQFEz$rz{ZQHEa6V7b^yvRMJ%HEf|t4nAib`%wyqlF z>$~KA5o6$zHw~<*0b%@yjtknfOH*SPH7bO0QiTVTx*%Ky=2t`<$b@Www8)H-kOf(} z(cBnrEH`c|vZG|=Ku&HvH;J3fP5pm`v?zeuz(hhpZbCh3%T2r_UJlda%H}ZmKhJED z$&0GP;aU#uQmQP;-ay-qorF!%+iHzgr#Bc)=A_8}XJWVttO77BDUiU@s145wRrV_n zRg?)@kzY!ngQ`QN03gD$j#vz?kg#O)>uPJm@C?;mF_@|0WI6^mRw7Q)XjR+naa*s= z9NXw{y4)91)={} z>Top>Nl7i%xrzZ`h5G<6K_}4+A|5aK5pV6BmhSnFcNObwF)~Gzb1@1nukl>vsYB+G zp0UH$uRY`zY;ixjph-xw6U-Zo-ly`JNrJ&Aq z0;h7t^(c*-a>)q{3Lj-LFCo}tURvRo4AZ0Un@{!srN(!a4|@Cb!b@uWRVVp@*J~PK z0ho%aN@{0}gPnC~{s7o%G#HHI2f+-etI02^oK>tx%#gZ@+VZN3kf$^}dp4NKHJ+;K za9Lex$kVp-s2Z?9JC}l8TpsQ`xO^%Y)eAcJ3C#^v(6!W=$1wO@4I5%=u#|L;kxnTo zTQGZJ$+Xh)Ide{@|r)=tsvKb5Kbk46UuPEz0uoBkM>`+-b*g7?-m9P_n zUdGW#oyyL6W!yX&TQjeGTJ7{urH*L?SXEufRt?cjRui;LnJADa`vfs2hk$Lq1z#kbPr^ZK7^jZFW{H) zdyt9wGd_=hXGN@>b+8@TEXcp?#TG#BeL>|17SM?=t1G>mD7Mu7jMf}71P0sqM=!FNLUs-T`rXBC8JM-_g= zy0O3|e&QEZ)71*d$m?-1S}lF@`!{WBsQ&@32|I9}9QZe=D`I3_WhI!S`4!>PS@4jP zwiLO4K0KZ0?h@??e%COH=j#6ftH}9Xc<@{93to%bS?Z`hgP7KfXq?n{NS*l z^CrhERq$hh_txCxL>mdFGgyYyzeT;eeZsTB=@h#i47-6;B@dexr5U@%G2BAxbA4&CE;Y>qo51o)>W+v-2U5Yn4Oh$!@t4}og==&Y zS9EO;s*AeL&^iQ83J1tB=E4yCdOY#rCFRu(XajX*T=Jf17dN7N(VZN}5pL<&q8W5T zdeU{G=+!VC0L%dBZ}h7j{8!6`A-KAgQ6=O7w+9avaHgy|KK?Qw0oRxKp#erphwYT+zs4~ z+)dog;Oaw9peK1(-!0s&{|{V!tuXBmqL-*Gc8FVDk6z|(`;WHRYha5V`A@dknqhiN zX_GC+G}USFg#|nR=Qi1X-AqOT-d+RjnOqQ5Yr}K^yEGGaPFFEKA(}G)EYx98k1-nj zE0ZC_QO1-*RYo;vrv>0?=a_4ml~9jy3s|dbVQ00GsRxJWF4$o`$X8%I%{x)_!g33=jBK3pynbCWkJowReZ%o zKXf%HpOH{=F&^N2DqwdxR9jR*t;IaF5Ri!g7OjG1eJiZswP-!s*a+1tP=dm!n^~D# z7zHgwi9^S@KgW%Pl}rOJHFW9H@TQ(ox6<+~oG1Q9Xw=Bqw$XSelSB(%;>gGSSw#0P zqXk@=2&;(tTf^1hZ_%N~NKmu&4NF*|VK-yj%6RyOy>V?N&~J=HMQyDfmc$`YZ%c>O z4yda9=-WTv%1alIa02tE;rFC^}!8ksCUAbA1&l={^XrpHrnjFd~Yy2JA%{REQ38Ff7~BCey2;2kM~IA^O#Ej{z1 zKxzyX-B^C?@vDILm*tq%-O;hr^OSFYeOe)jMS{Pn)b30 zM+MsRC}-#MoVCP}Y>b3BTQPWk3sN{w0>&X-WlI_L7T8a~G)*8!z#q1_HIf&oET`SN z4)!Dy8H{G9os^?jNrIWLg=iW)gz3!{x2Ya{b5xbRy=P@wYzrSl_%BmXm${S0No zzqY=s%WilCU7%$Va@iKIw|l>ISEfg9^p)5+}=bQy~j%#KtL{cCRtw-E8&hTjqI7AUBAyHK4(0NL)W#%B~TdEyKY>+IsQ}mI&kv zL2sfWrV5RUYhYY|*aSfcIaJmtoHlS7gq?yuLKEn!oCrMLiYCR89u?vvw$wKYuF_Wb zcb@bXp}(b|HBlLGH(t*-LX>nmn$dc4%i5F*S6_ZyVd)2>3*Ss70isSXeD$r(HLli(G4k z5M9~UfVQBmO;HPqi~GJQTz`67!L0EnMJIE zb+Vn~i*Ib}d`a-p4)y$8bEy9%Daczh!@A{}m}jMmSib3mmA? zACA%(C7LXnBjQBYi`IxXz#$p;iw=lhhodk~!!a1YiCM8q>=viOAs0Qw1H~i6g>bk< zSiDrcQoLGxm$*T^SG*sNu6RxS9)Co|Sva0T4#!b+lw`pH6n!MaBx5DBBn#n~iJK&M zNp``(5{D$mC8s1`NPd+3A!VgW(jXiZkt6LU?Ju1mErY`#R!DD^-YwlE-3$l} zilSUmt*BEhR9vfA3r8F5gQEXtw;`mMUPx_aGi-P5|)b#LoF)O`&F=6~yTdbhrvK3$&+rQ?J3#rjJ9JUs_R;%lHJ ze4qYl{Y&~I`jb%Z{fj|jFdJNkwuUq);_hP@10~yG!+gWFhTEVtd#~Xs!y&^_!`p_B z4PP7nGAfNGqth5Lb~ff32N}m3ON}#(vyF41=z2MnTdy^)gA(igP*nZ05d6eg_!sRH z{*C@NetAqNZ9#9MleEC(7-~ev&~fxO^Co%+!k~9>cXDgFyC9wO?j7h|n#hShK&Q}$ z5E5O-Cv&dnwsPBqpeU`~D4bPZRTV1ZT?|4-6vO}{>6kRw1$UIr2+a<)yhh7kq5(uc z78uJ36{0KPFfQb?b%#xxRuiht4?!#^Mn?!O_A7x{+r?UMnW~wY)|9G=zCzzX6oXIy zMBj27no>2<59kcjp#lAfe&X)oHa4K2(J$P+Ts@7Twsfns)ND}(|AzizI&5Kd+EXs2@LK};)jHitySPG;XxGgPc8-|8z=Rs~x#Nk07 zZ`oJKkd39YrsqInYerUj6N|7OL-~`yB5dNeH?as?Fl0;C1A{i!V>`El%ZPT&iQRAk zOSp!5exOYk{I~7Le1tWc>&|Dn8~IcjT943_sSKfXI{V@urha!2T-XbF@4Bk#%K>VQOG*^m3?#ClXCaF~W52 z6Pi{64G8%jd^wsY^3`y95?&28eiP}{Ode7)zkGK2!lpzJy^!q@s^+Ov!5_oR@pUlu zR-n5uWK8IX7B+EcaHw)Rp9>N99iKX*L)@!;7#?4bZf1HK1u#P@PRX^$Gs!spePlvmm$U@bmZubj^gaNEzy=k%Pz8md^&IQ8K%V`-uCP1HLbq z2FkW;=gx^qtYx9Oou`-A(w`Z1Q#(^d6Dl88I5#6MpEUkY8cpp?{U4p1wgnJGq*Q7YdS=H7)UX;dXk_|3Hp(se+Ui`+@Ii?1TQ4`UV`@#{3OAr2nO!i3EP&i zg9tm0upz?M5Ox`1w{YnvSu1N}?QAlmg^WTc>tfxk2VKMZSU($JgKQhH9-?a@0V;;_ zrPN-!66hSJg%6S3=S0v1TMO1sZ75dL2P(6YFAI+3zBRvJpKz776Tcea>1cmq3ctzN z;eO@*gw(M!+&|pk-0$3932?}^W7{{u;d$=oC>-)qVmmXN8rU>8o%@A5+XQB;o5zY@ zDOQYu@CY4l1V-3A9_P+coZ}-W#{>Xjdr$!3eiNXg_x~I!qRp`dAe%lQlYVRuT7o|n zoV%bDAR7&`)ge6|#`_2N8^0vkf$Y_g)d!%}zz(EHV5q8_T2Wq_T3t7FK?;=ol~;l8 zOliufqt=hGPNGPXIy^MJq^7PWS~^q~iUUxgjbZF?p`a{b)zKx;z>c7e@*5hy&N^;+ zw47*#Y!M7wBAWd`mO=KrUHVkI1;I4^Eeva_4 zm_GcU^i@>p+|N&>cj+ThGD`(Aa{65ym!p@j6)r2AUye+(RdkvWq!#AcHUIN@7Tafa zzPL(i4R_)u>MA-Zp>u%Ekr~MQyHbQe&A9TKf~sllio3RNF)MIAKP%S4thk$9$F|`b zBa^~FCxw$BNApQ>54$loDUt~?CQgbibW&_(x3SyV9qdka7eOY1%mgJ7WFg2(kgaJ_ z#9J;=vBg;?(XZl+k?2=(c1ZNAI1?oD75khZQ2T`iDi|JuiE%8(O8h*(zCQv^@_DC; zDXA^^#~x*i*f-g?fPcr><8)Q|fPn;cB*;xU*oUAF%{llEdosqsb_976Irt$Y(y|}1 zAG4pZplQ4W`3VXV)TW7V>``ilK}*yQgXJ%zFo0=W4zW4V3beo@%7bqxXc82ls2Rz1 zh+c|c4$<#^5m?st!YpHd6V^a`VGT^VLTi8~V8BwK|1=v!Of2kg!VGU8u@yu}q=Hi< zL|DX%L?W?BB9e+^B00EHl>~JnD21R@f;tnFMo>CI83bh#ltoaN-6A#J4l+TJUStp% z;a@WYGRWrlhj4!$K|KlT1t*%I-ol2{9>Zn2?`dqdsk4b6}<%n_#>PAra24;omDh|l>;PNKW!SY5Ui~~7P&_J* z;t_~)20`T%k7oWCk9aFLwFV&eis8{NibuN%6f#BdXfMU1eWLyJhoBOIrV76Sk-F;I zMCJXc2u>ua7d=K$S-t20L7`S+($gY1kEB8Lj3|eoX#h(NqUV_v1Wkv-a`Kwvkn9eB zFHZ!AY|(}fi(VIS=rtaPW>Fk^o`Tx+76ibCsfCrySCB&neia-+6l&Mf1{58mHlXMP zpwUUuyA+M)M2x^n3P$q@n%5kRJ`kOXfl(bn;Y2X{jM=nBbXxSe=nI0X2&yKiCI&&r zXq^qTK?`lbzc2*K&myH)iI5Wy9})XR^s@jKd>Kx>2`|{_qVob+%oV_5!j%JymYs}) zg7X3t%!REty$^PS(QQl%b5V>atHmPLFP4a zElOauSP!@_Hi(U4lh`Zy#*iM-atu3WoH}keFU*=ar5B?H3 zuMJbkW4-*e3=oW%NfvkxMvb(s5@*SF3O$BM> z#|WknxDleZzfN@tF-#J~aQj8XFjWx4oq`y~UO6!&b}^pcQw4tC*^;rd*dp<4aV0F4 zD)Ai3*bTguw1uF%>1ug`poZqGtrgeBSi6~^b&0H9L|MC7yhOZ|p!Ec8BjlP+z9Nim(ZP7Ot`^u@AJH4)b>gjH zporItH;C^MZxr7v-Xz{Eu7`{fVCPnXwh^?QpdAG5BnUR`pb+;EbRR)`cZ;_P28wu> zc(-^D6BO^I2Fkvuf${)Bj}j;x1Ow&q{~9P)-arvQ2?mPzDT4M#3>5LRV4#Sf6Wi$z zLH7fs3%|iYNsUVTW$|G!PsFbf^kBXCRe~OBop~ZYDt-&B3-KG&Jb9R!Cs1p%f}lq( zWS;0V{k?n<^TZ!*_&xC{-aHY1z?&xrz&sH*QuE}I7Us!>xcS?1@t+odF8)INB`p5a z;&15U|AZhI2v|K&(Zvs+4mV%?--~~UE&i7YdOC6O|4LQmS@AjXdGT-J-wAq#pyvpB zfuMr~YD%M9B=KLuw&hu2+tQxKdMe5n(sRC|hmCmJ4G&k>)=h^fM#$4Hzq({$c}4s7 z5p0kk0SKO_K)`#ET09@UQzEqVB5f&FB6)F)k!S_dFI^a8Bqjl4UJ)>cp0)SCkD4`A zZg#G!P01gbT2WOUo(W2{<)C5~k;Eim&nw_9C=Jg}h0`~HdGo2CAj-m&+R*&ynX?j? zq&+~B#4Yhiyb_T1Rf-VB|`z1B;b^IuU-Q8yx%%pk`zitQ&`E7i~>+1=mUTi$yf?2r&_>@ z9+&!`{Yk*3XtR?gB|Iugrtqlr@g*KF*0p}gw?Hk)3~CEXW>H&EQb|$ki-;}wnP3b4 z&I11kCwfz?|t<1aq3Y-ua@Vi36K8 z0@!@tQWzU}Vcg65C7UJnR2aWRgz*#AAYhsQ)m$1|CEH@s_=BJ`iPG2u8borRWUpkO zWWNLy@6QCCCFmSM=Lz~PCXx-3hp8b6t^LXyk~AlWCJe&agprLF8)f(fgB$duiHkZ4X~4aPKffSxE&a?dJuIS2 zFTS$oe=S@oD|D(ws8aBANM*cmu~HE3vMaLaVzEd%T)~UqEIa06?1(K!sf?FBRz`qV zs+T%IwMz|BqtqldLw>nMYL(igc4;!f8iGO0I)e2C8wfTMY$Di9a1z0m-BPEZ+NEBp zkE(WQ5L7$1MpQd?5bOnsbtc&NU)6r)Rl773RJ$~bV2IZ8Q5tCuC?aXDG>`reY$q55 zNPmNJhc~K4#obGq59(don_y?Xw18k&>(o0`8(aVP0ks z9Hj6Avo5_E{6JwuCzi;1gA8? zk92~7A?*b9okHE(v2?T+3ohzdyf_a1@3H540eey}tXQPC2-uS*V9%=mTkN?EUc`aW zEdmIoMW@GI(gq4bcT3kv*Go4@?~!hl-U}ryo2B&xXA%t4ybHnE1jFRZB^ai6SAwr1 zxZ7^&mIwcU_+JrsnxM?t7pbbo>S{uhM)4?ySu1)(Ph?hyr{rzr?MgND%`f_uXL zg8l*sl0`**Ncu7bpqB{lT`zrwKpK0iLdDY8rEl>23n}b0yAe#IyVAEPg7j&DAbPYW z+S&=}y8`Z<c#BN@g5M*m20=O^hI>Ce(%q`ykf5_~nmg9#o=FtBSl!6Rb0^O1l%g9O~M@Sg5S zVkUpOK?1@^|K>AJ@DQ4D5;^_ge+@J;jQ}(wFAOv?qX0BT0?^F9!a&0hvPOsoTwvTW zG?5tvG%1P*9je~i0-DI2GMCIP^T@n1pUf`{$bvEu;TVF)5Wr$ZcTviCEAR9rAnQ7FRkrh#6=0YJ} z-Qj3s<7Jb0D3ML%p`;w3L{>xrsAX8U1(e82=|)#JjrGfB$jT{{R0Q3y@85Lra*lDhYZqFV6%*?=;QH+OElpN1uE_xic`_A{zI-wgl?ibLq1;gtc=7cWDCPCjxTZ0bC&=;^B@U3fvrtxD+}mzE$0Iyb;`EL zw!(baF55xp!%|+gtR#35oe&!dUeSC)?3V3`O^D?LFHW2g4}j-G_Mq$`*~79&WRDUI zns*t&9KnR(YhrVOuSJ381g+AJhQkv&-eTMdY9=Ae=rV=Y8PzfG%HET`FZ)1tO7@}bBiYBYPh_7Gyo%uK z3BG~g8wtLN;F}4)h2UEWUQO_AyJe>%I_9g0j`@!2m^D!yv$jdcZ1}H^`9IJxe^4Fs zC&9Nzb<97YW1s?_p+5xQK`=la{S7v2k}mp6G`UnR2TdcF5qwv@TtV>Nt+QI?8o3^n zhFnWE%{r=S-r z>~Ylc1Y zj`B`1?AcB5<^=4KX8`udGv!(GF7j+Sj1+clTL|7p@D74^Hert(+(cB7GzfYqDFJtS zSCuCqjl8FD^HzFuvtyJZz$5P?*u2}R&D(T*TjU~pf#hlV5P{~d3qz26qyRyC1PH3R z5)jlmf~SI?E_M=BqOyq%K885*kpklE83VzBQB@bn3X@Odq_hCkmUA2L<(^g*sfQ zWr7m11lh6iIqjE{2Peqm(Tm9AIzb+f3-Y)k$zqW#cK9c;<8geyPT>3FkSvyv@*b{k zp~mI6vPJUSU%Aes-E2zX-$C?B3>0MSY8#=u=d5CY5@-l z1qEn@n)Sn>IXVgtkQ2iz+7Br@d_(Zp&Co$%RG4Du@Fl??B>=R-4vJQhtZ*ot3YWr7 z@W%v$z4;lzrwRVN2_h5<0i{0?P+HHsjxK-<2}z_8KoBRSjYht_K(?qNQviuCE({Wi zTmdA$5dAx!8%SQ}7QZ3@!!~id+FGzM51PE)35O)y{wlmwT_TXO9XcohUB-axJP)No04nNE2L#!nR(|I0-fKV4w_S%L9I zSA_A+x)&EpR!kQ-d=^f-h$Ry7Y0J}MXNqK|7B-D7b?iWR`%+Fq#clKZo0s6mo{lcd zYQ8eS_!_T3!};MKKuS5EzO7f!%Lc{ zCcN7YUJOHt^`@`9tAuRfSc4M^_yp(S^aaLn7cHuS!;QjKgX#OhB6Rvd?UxQ-7zT$J z!$|;OgjGdTMT3ZkMdA%(Tp$yxg2j=s*J^g|;+JZC!X=nQ5tc=@AOq>1jEc7ai9n z+ImQ6OBZV^4anx?3BtGDrHk1 zrss4?O-t{R3$JbmmZxO_5B)tqpYlnY*@dU0sPMSrfbc3+SRw=S<6dVQdu5HV9w1Cr zuXu*QITGpP^T&-($;?fuO{@0zd{anDgAB7pDd|~RsaaWBkr|qunVU^JoSvGUl@{#; z2tzokNpUbnFj~9ep}^sZwcNry5KDOT;C0YCM-^{?c|fa6sCmF9Q>D{}u)*f$L8IbW zlg?rNgmon9oOh{t@Sfs*#RrO0iVq3vB&>_DZo+y9>uu6LVhOK7&<#|BMAd$LJxTPt z)|vumczUewA{yx&uaVe*ppmXj((AiLo-$PsY4k8TWsWi*c7n=WWuCID@+xIFWp`x{Wlv=< zWpBcEA#65ba|oMD*gV2^CG1s%?MB${gzd3gSs?5LmHm|ilmnTdauDnU*`9PC2s=SG zpRoN2JAnQ<@V{HZE58*~jspNyjwfud$W~A}3ATdD$!Hk;A#88RB%r@wBRDF8_R5fQ zI&1`$(+FEoube?xNCaq2(Ydlh8Rj>FN{GRM`1`_^PB{lQf^5H*8$o%Vzn3XeK@ojp zw{pI65x*x?E~I-x_UcOzXaV|QZo!^Vxt#SYS14Cf41pYL9`pxO&>u_KG0h?52IY-0 z2pL7#A&C$Iw%s=68s+WEJCt`S*AjLpVTTiT1Yt)KwlD@Eg!cl`)`XN-9z%o}`<26v z-2!$LT?9M!3)nIG|IMZ_VQ_Jnv0uQ9(O{kPOc)90=UudRP17`u*McNi9_WVa17c29Gg%W3Y8@WA1*ZY zRrvyE7hZ(3{RPf07C1ZVN^mwh^<&+O<7Iz=my0LScYzKssRk1i5U3?*N3cbzLRArP zcC=~?d;e#yY!VXEJnt|0ecsRe53rZy?wvbxXTJB$nVB=^XwCvn zf>dogXwKZfYUgFn@2J`{Km%Q?wibm?=Hkq{%=*k2XifsnDWEwOG^cgc?@{91q2^?1 z?$FZpo&8tA)6=qBW}8&|ryrp9kCkeFgH-#A`=jSf$V<;GIKjBkeSzj<`P+f%tW^# z+cHzUihMwGDOuPTkElXUR$BYk%-d0g%*4)Pb29S|(4epHzNnCy_hjCW8erzVxU8?a zf-LK2?o^!ynk#!+)*n(99_Nr%$U~KkAIn55SoBqt`GlxKCQ*gV+?hZf^vZ5JXpJG- zEcxRc9&4;$NoD|Xyt=NTsrFxntC{He3<`7=Kdy{()vEXl}!einzsg zf4_fPqt?_R`tJwL?OhsA>%ci+tyAmLy0spySL*`}0)HoH?g98hiR)&EMv5XaoSRCnYLV8p{>-8*B+sr z0GbCt^B`z;f#xC5JPevgK=UYQ9s|wepm`#tJyH_O+9}$p^hv6yb~+KuPby;h8PMz| z-Xu^gzc?tC`(G?;k4CYqtp&|fvRKyEqYPn7v`ff`>`~I-0zEmRShma3QQM$xM6s+z zJ^b0Ewh1)P^-U~e5RlaT5%fW0MW5kaUTSpJSGT-fyMcIq?fFYwTT7V8?~D<+O^n=y$+gp&=y+rULt=E@pMim$>xgA z&dE>nBwu@E^eg3`cEz6d?5^Z?1;)e0+^*DKrM+6a1vGDf=1tJN1)8_FsnFLSMmr@g z{g21$lN|fcLO1rr%|Z*wM|8$Ny>^YbRD(-TuCCvT9vIOtd|lH@EJvWrmtt~UQmcqb z9(YB!g|;r2h<7JGl$EmHpuGtL4QR2~dN+yw@{Si>UlTK)rUp6m2YF)U>f5zNGEL37kmt?PLUze6T($2ZHZ)@M}c;@#&^K~L$ zdcF_I^L?bn(tiV*|8zXxXWFlN%KB@}`diR^OS1khQ8G8pcX-^H(gKN6_8+ys_H={a z@CJW?=6iC3AIPh#7o!U-Zdo_iDNN0Qrj%XHE5m@X>D3LC(^X|7+j=mF{#w2ZNY4&RHHZZSbeE{ z(Ypo{#|uL;wK~1QXfj)@HoL>=a(lc!zb_aHN1{WA4IeS`poLSaXQLzZrZwZqKnzPV zBi`D8%o=NyFVMvXu3yKRaVeCzSto0&cv)2o<~9qROIKA@%pt#$WpZrtDb?fS%`F%z zf%tP1SA6YwQR9l*M%-Rq-zlqnbXr~BfJ+aeOYbSwV%&$xwJpoh|FV+xWHA+S!`=~u zp@TNeEnP_IwZ|9HnLdR@z}O7(W_{5cs#&=&v6yICiA(fV71C23(Y#W84C1N1e(fUV zx+!gBjXIH$pb{*{Cp3J5Y#^qM34KDH7-G;Qn1mIB#qap;W`iv&I|r9tM->zvI<|b` zQPZnuEnHNyI5soVh%V)E&84EKXnbx#aY+`gpcP~l6c-g{jV>sv$SNwzt*EFd%df~Q zu0(TIT;K~76$kQ)iVJbouV_>t7ystx7L3Mq)WX8ROnkaAqnivPRTEV$_&2Uy|Z=;Mpaak)3YD61g1d{kD!`0+(qrMaWWXBFfZRF+hfj?c}{FOr0<;x@cv z-EVJE@#vBWWl4Vdg7u^o#pUqa(?W1 z2P1IeA~!NemYRt%K#jrH5dcXkcp))UIPCDFYt!$Cly&>jWq7)-e!-OL4!8d8b!Cfk z*B0gCpZucO=+VWw7~RgOa;YL1B`;r9tg1p3Pry!gvueBQM%5jv2UIVrzEJ(F&QKqu zK1@ANy%HlVo}%8Qz6fIjUZ&oxzFd7Jt^;mSx2w0QuT@{K-l4uxeY5&jjD>fXdbj#z z^`99&45PFjgPh!*u{-0HjJGpB!N>~#Xw(=}LBRM4E?l^*&>W$erkSm&(Hx^`&@^gR zYMM2zn)Mj>ZinVZ&CQxyHLqzt)_kG)P4g!@Z5~EVpz5h5)H3QA>NM(VY8!Psbr*F% z^%V6i5#K6RhFba`U!E?1C{!hW5|t#3zDA>jo!r(+GzYTjW-FdzRGU$9lHcUMM91kY z7`8{p>jd2pU8YW})9Lg&gU+Zk>CiUk7ts6)n%_W!b2Zqt{0W-BK!a0Y{{W=|O1(p8 z)!B4*okKNT=hC@#9`#h6Pv-|J11KX1w}Nm7c1FSzAiN90d$^V)d;r3SqE0Zqt&zN| z=JED}elwl{g zTpX&mh*zL3PkoIcml*fpj4LtCkJWd)zS7;wFp5FFcy+vW9oetajN(YI$Phg7?bOk^$KnXzUNH_08+1af+rH3P3WsRY*rwd4> zptq9xu4OJ;CnXfq4ecpi*Xv0JN`c4d4n;*scL-2yQa2VTE|K5K73m&bDe4?$x^f~A zNhF(a>Epfymv6Z5S)h0c*-G7biOyKNt`bdFi-zuPnBy|&k%Itbyyz5lm zG~H2i@xCps&1h-}6#Dx=B)7P%Ft22EMHYrp!_K2}RAE+Gc}ZnfWqw&@Nl8I&{^*jt zn)u3PP3VC;zM>6dSTr@)tQ}ocQ&b=or&>2dRBq&VNRr1}b=A6=s?8|nrQel8&eqK( zg`5MFKB=1rlz~wGKPrP*UyF3*ay>n{4eLqCtyYJ@wyxJL*463ibupnzw^TD!7uOvF zlnE#^P!^!9XgLX#E%7H%cAy;B>l$<`bd4B-aiwmRu36WjYX!;))VV<22Gk=!n}99@ zx*mj!LAa3=epnYWyIh02G<(ZdbRdPX*=ie_(4qUm zy{s(r_o}5(JYIfpR5v0F(zK^>xf>=}r@;#VL1GqdL4%L(p`*^JulT=rrV4^Ujfuml=#$PK$QVC6{u-I9Ysz|CvfGG!ie}xZ)#E+ zJ$(*)h9&W(Z5W0c<+?&dB>lB?Mv+8$fT3d0%S}x55%D(M8 z8H6g0q(rYmai5jGOHbt+A8V~!Cf-LWTw$-*OKeU;yh&j@bX1Ig)@wR3A9)kLl2b>? zx>m!4c&wQW)7I@*A9=mzP>F$+Ti1y_F>WW4?xhhLeUXOW&@i zM(X)X9NRQtT!+TiW_%-J&C306*4;|(e+y6}k~$PZBNO?H#7oH&h~2+(79}VZ*QNUB8krYie$pn?Aol`e}B&zIB-tyg~OgPCo0N z0V*$%HG>Qp#2EnH3*_u>phhLKs^?Z#OD9PjGTlC)3Q07`V9nb4I@CZg^dpHGNt7HM z`o)^#bwpvQZH|qR61}F{v{m=I?hW0WfU|5Ew}C22WX-Ld5s(^iKK@j?7<<3ky4E@P zvpBq!Qoc`8exUnM_YqLoH6IGp*hJR6Jhb&B8gg##+(NV+7XQpcb6)vJrQ*NPeT`Fd zx-WHK0d+V~gtFnpX| zrB~}Sq%mWs%gLfHP?LcgFXp7Da0*mU19b$>uS=SQp3`TdN~Py@&*+B$H36FosH&}c ztzM_s19c=&s9j7-lvFQ|t(z+j8_5g-4lwKEEh`&p$!pRfmRe@Z>MC}HlSN4;Y7Kh3 z-m%|vwCkO!&HJ5`u664@=n0fOwIU7o7e(9jUcFE6Cv%#;UMG)&C-0vgUCrTC*#2jg z`UvVn(rlJ;BB~$S^~4B0Mv2|BB^^&zpQX>imsXFjU3F5A@7fIViWQ{a`<~=UP5Rri zW{gl8YwjXu^ac77oDJ0%>WlQndIWnWP_uxV4b+@%`Z4-L^oQzEmz)dK3ZPB^>O_)X zNzZre$f&dx6~V=5U(~Xn?5Qyv`fq8ci{Z>r6fBFc?4JCfo|8)hk`5UscShrSzPh8J zqJ+mmiS)|gF8Te+t29i7{s`5`c73IOJW!}z&TrRG(4#`U0H{TzLOMEyjyrV}CjCaG zyS|R6=;`{dLU@mU3chfc=%?Z+dpa5XlsC0CqVl*gZP!<;Hh216 zDgR9Ue3an&S^C-fIg$jg0qSU=YGnzoU!Y&8UxZ=5@!Vpd>Vb*@g^K(!{VBmExv&H! zkRESc*I88Smv@M2>9Qtr*-D_6{1;+c--=Vd`ZoP)pimUW6IlyNQ7$Vi&c^>>o~)Nbv6y4e1W9q;Cu`twO8pQS%re~whiO+euz ztWqlZ0{uq)CjEu_i-2kdss$))Ml9>G{a?wKcT}?UxL5CAzgx)_+kk5OZ|e6t?9BAn z>r?t2K&=64El}%7a{crffzGe(BK*D6%)mVS6~jj1w4Yq}x02i3roUZ(2T<#QIu5Ag z#RgFN#CbRum2Qi?V);k&iE>Y-G|K(@2fH=OLt>*OIvV9s{nMmT9@9Ure?n>$0O};5 zPF5P_8U3^R=PP(W-G=5s3t7KcZ08il_f%gFyZEd4*y2#w}BM z`T3QdZ^TPCy0F`gMvo#B+y&#aN{dF7Wfc@+*+!QX7iX0fl@t}`7U!3jl;n245e_ZU zri!|_+l}%@jj9|qx->7VsJIL#&kHLGvPw&fOSAHE`xwrWksa2l>f3?n)> zj*C5OCFSqxgo*>|e4wtx@YjYBDm`=`zaI zYBW`n=1mQ`hCG~uMxCtF#Dy|2+-k@-j3T<&0lx25+cFdyiaTlq6`iEKP-r-WJT)rj z?L9oTfijc>B|X?ipti~nrk-o4%)ky{oAMYFbQxtCXk7A>QvVYTlRI*o0@O81Zby;a zrUP|tPr301)U>4BE(Gejj@;&x+^$!0TSRgrb*AK2YpCnU4SVk$N^VO@ZrB;#&{J+Y z19nhSZWjY}V@GbQNNzVNxwT?$YP9T0=eEYMt|PZ&fx1P>?Rb(KYKgb@l$*IDw@XQG z(xAX_x?uyk8H(K7lZG>ay0eSGFq|j7Rd>`FruK)8Qx2Ii&c=xKEsB?a!$!l!s*zg_ zn+z8kP?FsR7(0u)XRGQo!=;AH&He0j(`Z_TtxRn;?UDl4jHOr2g+T{)?; zd`8vODK!%-=k|0#<(z4yh`w?`pxYg0RaIA&O{$!Zw;}fs1+(F5^{Q=#Erz6_-LMs? z`+&M1s0V=Bl~^r(e~oI>7BsRVK?)7mV~=4#F}stw?3|)b7e#MC!akCgMq{f%v zB)xR?O(^mWDZ?#zJx~vlB-WW#;&oleR?^jXU^h*!HeiL2>w$WRBni)~l4jAxgmQ>1 zoNSAA${TOov5b_Ln_qBnptt~6k(5T?X?Td#`2&Ur4ZDDP6sX66dUC7bVZ$Q^{N-t& zJ^<>st{^-mf$&(3kt$NU4xCPF6Jtq?N1YgTeH^uBi(!xDQXSra3UeE-KaZV5x|-~c zNy zO??|$C*Tdy^dW1%8UAQ~?m*SA@?afxH-MS-+L#?x+r3P38!ZzX@c&;8)Yj6R(-2=Q z*8oyKc0V}C+aQ12THCxd);d;N56Z&VuOXHdZ)zb|WTlsjhPE~}HPkIb`;(Tj9c~!v zTeH*WvqiS$nWD}**7K4yc><-0zMC|eQ%+1_|F04r-9f?_6r_~d>9;*C6r?Z8aa!}B z(w23Nb<3KY8k^c$$kn(yHz+3d7qNq4;{Pf+{(qC0*dvLFr)rFvle>utQFX|kjD2kO zc-)sjUarHJHaE4cBr6bO$@v`R{LnrtB19b-?7?L{r)BWf9DFs2=C1VM@|f{u!+W?d z!tjdWRl{qB*9~tN-ZZ>rc-!!f;a#Af0qR+xo&)N6pm0uaH&8DE^%78ffZCffyf5vG zFnl~@g5gtD)bKg(i=g(&`ywbbF+T#RcX3|?_1@sVi2mOfVfcki5c~?%%ksVm1MWuN zX86T$>J^|~6_2ka@{F2hgVx}YM~p_=$f|5fBidcPku>5gQy&Ag88eM~vb&+! zs3UFT{sJ0P0JizDgN$ zBuI^;hD*dAvNMc-#0R(#wvu=cqC;u9%;n& z?QcOnjvT4)kP@cFFh^BboZ(Q2T+Pa1IHGL_~k;hNwxUx$t2lvqDK*Z$xh(xTDgzL*Rv6b3FdL0c z#+AlZ#%5!SvDMgSTy0zf6i#6O0o0#B{RPzDK>Y)>3TQRZ89-}N#&t57#~V*Do`_%q zf=N>{m^2Tx4ro1sNgD>i8~`xSBVe8nG_8QSiGX>b@gn?O0yG0OD;_b5oYDT9A!rz( zH2Iars|lJ{0WBnrTYw(Yx2j|2)wg)s>Uuk$;wqy})boiCb zZ!zL_W5OspYDODJV{bQ6(%frAlcRRyeZmBw&FF`+-S~jyYJ+iQYqIH#uw2x&-kSADdW?|XN=DppEEvhe8IRIFvdM?2igI& z6KEIEZlFCtdx7>{Z+ywP$GF$HPj#B{72~VM*HlrU{Xh=|dKl2daf+E90rW_q55gA- z=b8WCalmN&7+qQzKQVr4{0!&-&>^5BXbmL!05pCn`pTn&qOUySTM_pRbn%rpnz%OX z;w!IYbV-4@V*$P6W#=od6^jZ>&`DhvS9yiGxaB780?_!alvOzGmTxppBo*e5Djp?y z;X^lkm=(H4EX3tO(KTaH0eT(mA+OP+bMewHdC6}1l*jr($}1}7Wfy0`vv38F6g!{z zfE<;J^WgjY@H75u{7o|SIj|4EPJa4^uSXApd4;*7^01tRMWc(+OCsL61YIC1J`mB9 zU{Sv0rqB2f$_*3B@q^LtUvA!!Sq&?*nr12908Erg_g^Dz(wht>qj8_fY_gcFCL2LI z8|XuTMk#@P!dRdW2YMXPrG#m5Il+Wpe6KONO&*iix)A7Mpi9zh zn8H#e;wDtwLq4N7znjIl3M;wZ%q{NGJtT3v*~JqjI-33hDkZ)rzz~w6XpNN z!>5wfK~h!)>8$p1MA?77JWV-LRz+e~1MADvG)l^AbULpdYp`E@d76r)yvC&S+OG;_ zAEo~zU!MEFo2EleW2JXf;+RC2HkAU6(cgOZqB-&aUNrMZ=Vlib7KyKH2|E2ODU{w% z(-9qal=~UeMAH=P|4frilYuS=y0YCg)ie$0BY>XOrT;U{l=?s1SU36qy#JflRNs?9%Qy^*8iXnP8n+CMY6Q}>XUXE5UtK&Ewj_XupUxIXx za^rS@IK2xJ)Pity2tu)OvHP3AkcY_mCT6zl5 z*pd}MR})j(Uy38CTa>15God=(Zdz?x1N2m&r?s2bnT`eeD4@|)f3{rASyHAmNF!kv zalkU6FJTjyPO33@yIit=-E1|TY&wNlQuKaV&ju9-&R=_2 zNbtqk?4l2qYP-&~gOISsltK)EKDym>L&lvz*CyUff21WcdhihOm}xZ zai0m5jGGOI(O+=!A^*voZQ5meNHf>;i0M(&W9-MKCrnS8o-#enGzz=fT1|Aw>89PL z7nwIqdrW&x`)JnmO6EQc_i>r&jUf#6y6J7xJEnItN0{Ch4Acy|-1ISbEt4Fwi(aMK zXZq6gmFa8KH>Pj-;rwFL_og3AKbn3r{cQTh^ed>*^9A}gYep|#K*xYy3ThlR#(~DS z2!pxJ1iA_6RY11@-3Dshx*sKhZgCGJ;(~7ohJ4EedOgs`1AQW>HvkRj(FY@rplcYQ zPexy~pvKEi1^RTLH=q|bpfMg5hNiCuHNu5asZIkmZltUSHOBuzt@}KnF93QI&=&!H z2?hbe_%T3V2K41XUkNleV-o1CKySx-GyQJ*!}O==FVo+qf6OYg+MHq5m?<-DX3VUa zGxKJ_Jj9%7)|z!@z1d(knoVZ2**hLRbajWHUn5Ium=G<4lo2U8wd7yU@ri6JFxcx`#iAk z0sA9xEO0L1vVkiDZZ>eo0CysAn}E9(xchPwc?7;5{YFUb*&P~>=-qC=O4c{mr`W^>C6@BGloJ>Aw>FH=^=% zsQ{<+Q$wKP7Mz;Qs!s=ZwjFU_0*S3WjVXQ-i6L`IZZr~&3%3swn!y9x5jXEzq|{b zwZ&dKsO?g=xJzYjzhv8W+j(~gQc`{!`%6hfpFpBPb4yOFF}s1xv|zxny4r^Lv1BW_ z?53lobN?fGho^BD%;J7|;*JvhOU8FdkB+-$pkFfX&<^`T+<|)|DcB;7n{fK4LSzB_ z?^?-&Qib5$O#j4~6g#9o=Poa&T~T9b=;!9>a}gv%fBLE#!@_Shp96gz(ANWv^LIOdz5(bP zfxZdon}NOs=v!0fFD3g4^S4Y6`WcOye<1b~w<-1$cYyjG^zfMj^gV;-6a8;KVNv6} ztOX5OZkNp`EHp7b`%68Qe9-cYc*ns*+Fykw)1pJG35yo!JChbY(0BFCYQkc+*hH%d zi&eCmxEl=~m^s91Lj86(s|k7b*5a}FMI#A|Pc)Law=Zd;mRtnUGSo86GTbu4GSYI8 z{SeR(1N{ilj{^Nz%91C6XeqQ5S&CIrO9=t-aRtPu zfqnt#-GszJ_t4S;LUzltrZq$|peGvi1=6vRO#Ye}sg7@Is7D)c+=tig>ov`_D<{R# z)0wzJU?B^B7F_0fLLqS?l4zO4++mqQY)5b|`$wRk0`&>#9=gylO<`n)WftKPr^ug4 zT5vl2**@|(-?B*J5rg>P`uuaqmIWO>ybbj8-FP$#8^Ys;N;W)(kxI@>EyqZ7V)U6Z zpkM0k4oaGpmi2_rRhDK;i>1}lW?5}nV_9oiXTim-y+H2+`emSB0s2*-UjzDepx*%c zO`zXOS&ozGOh{tVatfjIZH3PF(qi)CK`}W1Vsaya6W2rDQQ*8-6qA-q4S!j1<1RKA zT3M4L!s$~Q`zp&8f+jAPyq~n-ipd9kM0304It0sd4SH3gKSVm)E!P_jK%;SNcTs87 zq_ex(a+}2Cts;+~5FRDFw2!(GtrYPd%cF$HdoA}_?zil;JYadyvdi+2mj4hWza>bL zpy?Rp1d-HS*%OjVUcXqxDC-p#On~z759Bcuw@kl{$qvM$Rb?H5JX+P(46DXUS!pX{ zWv!f*w+cZ21@zxQ{{xH)7&R~%z-WM>fT4k5Qr1j~N2`Gi5jE0kK^_@a=8@qcBPgno zjBXIe{>RZ8LL9AOV9?4|?9Hu15l0N|A^ydRm;NeF&#YP29K_I?4UCYq<^t14(_3qS zwHPt979xgBCc)4;8Zl(FJz;3ntd~i&9%d~SC8Kp5A(7D|iPq7CM5epNu9D^m>vTfm z1Z$P`Nb5xFBFIK3?5J>o@>2~ka(W;eCq|)jn+-p3#}JfFScG{ zy%d-zFhhYE1`HxL0+^A&90bh4z+?fFow9D0NxVwZ8LjPvL@|sl4r7=+MQ3D+21y(M z5^o_S-U>{vLgF1rB0WPrm3%;bJ`SzPAw9IV-fw+?u(%VL{G|0kU`F+k#Ye1<6R3)< zk0FS_6cDJM6rn2Y29;4=rLg#%b+^Rg3nGify(Lr9ylf?#46UzNU$wqweck$o^-b$r z*0-(iSl+D3+z|H96MIXhr198>A&EAx&1du50=A$nWDDCOwx|u|;bdT@ z05cVsX~1B2Jsp^8U}gX_6PQ^k+i;0Q+re~-j;f-zTteb(g~Yj_z6;bR69Kts5XJsS z(RLW3XhX>`M@G?B)+>rtwuuDABY~Nhw4qtw{63;M%~ma;I9)_>0bvUFAEM5;use#( z*9uniYzsx9Xj>qnSkqfFB~6{Jk)T*_i`kagmfDut;mB%W{E zNJzW@n8u`S6EIDEB=Hj4W{JehL=smLq^=N2T-A+4!$t+Fq-~o7;#LvFmflh+X;QX3 z35YvvH`s2p-DJDjc8l#++ikYnZFc~J8t!UfP{Umd%sOC>1!g@k#{qLZFejvJcgY~$ zCxiGP0r5lyL`Z{p>L7>%0OE55#OHxYC?LK_G{uwnFUSYfS3t(g(lMP1MM--An2Y;{ zp*>|^YQ*blXjwI60b+&<2Z~AuOVnb$!x~ zT2`u$EH1ZWh*=!8*iqj?k+_3EwNhm9hVCq8>{hsHv#*s{TqCl0Q*X(XG$+{6uWQPF zqCH^;`$_hb?WfpJwV!4`-Hsyh7GQ9);5J}x2L}7=JAt_in7e_w2bgtyihI!+s+n@djWXNZM}#=D|Lac$@uBiA1z| zK@xWnq|nbSj#(b+PNGI}WMSWF-zAawph)5)y(LpfeB6#c8&dWs>`&UCvOjHq#{R7R zIs5bW7wo%%c?_7xfq4R$CxLkin5Thx2AF4oc@CK8Q}&l+5?_`{e4UW^f2)jH|}hNwLPIt;>`&vmCewKjoP1nB$o1nCF=9Sm0RbSmda291YC3zpl9G;N2%EntZ2qB0Nmez8<^Z6%mY|8V9KS1Q z9*1Ze{>f-3AD~`K>=h4b-O+Kf<5Ys>DZu=hbl{ZGUwy>#OvgC{s$$34Vvqedf$BUF zs(-pcWz2X^;p#%iB@&Al6Bb!@Z^@K2S30gEEMDcf+OfrvbhJCRI<`5sJFanD3#jKsdtOr;xus&e@DaW@mh(E|6{z5l8qUH1vwAkU@&@!s8lIe1WokK+;ol%iU^mljQWJ;QYofyR?<;-$sJ9C`5&OB$n zbCk2dS?DYR_F!PMfXxOr2iRO-^MK6U;rR3X{J29X>9B&QH0rvh87AUPe8v|MT_CLgq>MT2|kn3j&txz70n$9ce(B%KR@ z9n(h~k9O8cI4%}(JcMu+6LCDWJC4+>@VJqZ0;w>z+$qiyRXA~$2)pdVdrPmRX?31R zxNLK-cCK-*b*^(B>s;?V&Uw7^1Yk>n#oLqvTLEk(u;YO}0@w+_Rsnlt%9)V4JVla} z&NB#?6BRBerzPd|K`aLVOEm6IIxhhh9axD|kIv1A6;7NbLWHV&OQxi`-}wX~ai{YE=Y!5& z&WD^2J0EdA>U_-kIIuH;odxV{VCMik7g&6=<^zjw)XY;YwqF?);MQ_yw?aN#|F< z*7uRe@0>qKJbo|o7$ac)B=WeVJCB+Rln)j_#-(wgf6bJOa?viv z#kx2b?-E=?T$wH{u*U$q9M}e6R{+}xY!k36fn5b`Gq5cwmtNx0WtMn!*$I!W3Xf~j zJgy()vHy8=MUh9>P+;3+9$h1lN9_{VLF5CPr-5B99g)Y)N@M4_Mj?+b)VtOuU8r}h z>l=@*(XK;89$jNZ9*;$^*olP4j6gRYmApz_WS)qsaFvTN9@m#NN4jPb7$>?WxhA`& zxTdfxS9S;?_YD2Y|%e35jbA3oqeBJei>rK~NuD4z9 zxZZWW=X&4u0kGEqi<6Gm0ed~LDPVU1djqgH0(%p%H>X@5$tZp%ja^({5fpDxP`oWY zcDZ{H#Q{L^cY@*{z+$*raqQyy8&T|K*MXaMlOQr~2H4w^ZVuQx`Uavq(@lcNxU~et zI|+zx1A@q6tk~`#8vc^8a@*Wa5ko^+0r~78i~Y}{yA)Y;mjU~@%%ZyzS)_)uqsa%_i>2#u40 zeKP4r(fL##X{>gm8-RBA3_|16B8{^NjTrczeuY%)3_t6rLH6o703xIpJh~qN{ z#Bqsx6~S?-dzm}#KE}P=-QZr~Zge-fahUP~u)BeM5pWWn-2?1iVD|z0GO(`z`)bPF zEaSLZl8o+S368HRIKGjVjPDH6H~=)BL1^3n?CT1RXZNNqx;MEmA|#^1^=8tI3fEhG zByqF*NWM@J!>#UXBn-EU7`}@b9?(QwNppi6Jz1yRH@a_f z-|W7{eXIL6_wDXG+;_U~0``4iv77!7*pGny7}!sM{S?^Gfc+fUFH-J%WDIx87(PTW zL_-Pk7uc`U7=Ay9;Q(Ox0>Kc4#8(Q2dqiE)QtY}1=e*gg$eg!$>=25tyWb=zz5(nv zN%vd8e%nVB-*bORP<)@D_?;*eKO#c$KRuynWZeo`U%0=PX#7f~@dqLliSr3ec|f7~ zgZpnnwzcW2_cQ1AaEH; zPZ&5&-)Qs<^Nb`|6?;Y?ioj8b6^}vHa60FW17YRK_2ASIPUm>?35p!kmoz1w3PjN} z#&d}0P|sM;VV=W1<2N%VZJo=iT#9fI3n$N{GoXDDs`qvvNr<4?eiO?rL-?yx@6 z_=o3jp&L0I-}9XRZxD}bv6Zai>D05<`+D&UR;ZX$4#QeLOTqSq@4 zMQ@O>I9XwFT3RU197M7IQS{~@ie8iyQ)CpqqYy>IU*1CUA@1)u;xQDD2;*T&V;|xj zi!gdox*e7D9tPa>zQO1%^Hz$Y(OV&kMq=gQ#W>_B8fSC^%cx$bWH-q>RpN1q$m6Wu zk|}9sdXFYN&hpOo&hgIm&hyUqF7Ph&F7nm@HwU=6z|8}0K5(d-ECg;5aCrV`;A&Ie zTA9a~GE461Y{sH3QcITx-gEt&HIg?+qF4s;Kv7f?=D2;TqtM zOY9{*^znlj4giJ^5DXs#Znc8p!@Xkol=m5e;nTpaO?saNu8-Cb-rZht5wF;bi+Cta zi8X|m?8gFbeRqM#tPGEn>=#uEl5cn=Q*Wdl?dTY4qUhhAdp?fuC6vG)`2r{2%J zpL@UXe(C+n`!#S0-~hOjfWsH+6yWfMIt{qffja}Z4Jof|>h1kOmW;&In>$lM^6a!^ zykHQ?{zuYBOuc;!aA(O#`iQCb0Sy>^2A>I$^cjIWC+RZ-hjtBpk&HgO&xKOX=O7B> zc|>9Kxlv){&hJTKG_s1zW?#@35rv~KEDFbsNTSazl6-zQl4TNoBYlNPqVFKz!M-eC zwlBw*>&x@y`$qY2v~nSE7Xf!MaF+mgDR7qow;8z0fx7~@D^tEANjUn(NIIkMFhb&0 z3W;0NI^*_15(j|9NrXfkr(CU&I1NeU{t@Pq4`iS_kME>odQQhT+c%fch?-Y2=|jz{ zy^l05^3@U=YY2_#GzV#1OlaKJBaInqg{)=1w!xFw*$BvfV&a6n}E9+xLbg`HRU^ArV;%x5;wKJ zQwfbqv;!_3?SQ*?kj4R^aTB2t#f1{>z;_AK*o$$5?YxLx6AjC?_u8~!0iO?0pL(K*#+D~zco_rLz$AEi0<&#}_`<{~eXy0>$#U~WW z_*A-&etwX}0br4M@b?rA6g_xfs-9}W5AJ$Fn=x|ekc%JtJ|!%E0^HL{-)F#~ zg+iZt>92g>61n&_k&DlYa`8JN7oY1g-yEZ@(*-y{|>JaHLtFAx^L6A^x{8^Q{U z|M&%D(XaBW{TY6ZpYqdw#?SgWKM&lCz`X?A9^m!@w-30NfqMnGSAlyCxYtwuA(CA5 z>#0kr%T!UnnXveV!XmDtF9UU)jA7m%gt7l&^al|}e+alYWf=Wv=)KK9)OZQ`0QVNq zoOHygogBHf{aOAT1k#@k+&f8sE^zPm4M=~1pLp@6iv2~RaC{HRq8=t>sSoIb%sJ|78CZ|5X1p;64KGW8m;z`V=^Pmp%vX z3*f#4?knKFPWh+HG|rNGY5zPz<2MS8xRfr%B;tM=gmD01Tt;Aw1NW^0BN}?+rWf^O z@=Y02ns@wX8WTY>ve(!UzG@B0YivHs&F5RVfc0J6qFze z{!{#?ODtm4bY$`8-jXTr$~pc^35)0Y&-0(}zrerIzsY~0|04gzetf%r1@1TCeh2Ok z;Qj>eFW~+L?jPV)z^hY!l!oN5|4ONs_9u}=K0{`ar<7ir=LcCF02Xg1EZzdVMqv?6 zy$?K+_TT5|RTnDM?s)wBK=Bodz| zB=SOU$&@tv{O=MHU-rM^f7Sn*|8@Tx{x|(^`QP@x1AHd%THtlS>wz}_Zv@^1ycu{4 z@Ya<7J()%-GzGMj5MsF@SCYaK<}e7E$!} zC5fG6M$_yYbwAP@|M0^vXect7v~;Df-2fDZ$YXQIFl1%4Rt!&8Bw5{iM5 z5{iLrg5n4T#e>o)<_@CR|0o6yMHB;LfgdTO7#N2rQkSW(qAnwL-SGrE433jNS_$|P zI3iF*NSpxt!O6gpz-RT5#3_NJBoc9L7v*9$QWdBcS0^{O9U7$V?3oHpN4J-@91IGlG13wD*0^kdQF9N<8_|d?Z06zx!Lx4Xt z6<8s|xGK;bXi-H2Z3M=#3XG+|j|ct;9J}xn25B4s8c!xPo&x+~3XP{Dje#@h8G$nm ze*upJhVy|Rhbz-Kb}2QKEA4%LU?V~D0^rM%fla`d_YuiU0+KuLfauPfuOMuR?!5WR z?nv@&;c>&Ig&0FX$$4u)vi1&$*4}(oZ+B4A+z=qv-hmqfHwA7E+!DAoa9iN^z#V}* z19t&G5%@{KPX>Mp@Kb@G2K-ULPY1pl_!+5yZ0#M`iQx`*Ae|2pI%g_$&KAQR+)e15 zKS<{Q&`Hd_1G|BrrO-*ty)DH!&4V8jP!y+m@X#SDUk?yt@4y?t&q)T}0)B2ExqL4` zjJ>Jizz3qJoQG7=d&E)oo!z)psQNtcl_V#>6y+odlJKu-z7PCGNcqq7D&3L_@TmxA+Bfg83qdK@3V&27FUr(u@wGo%fDlNpMW?kl>-g zvBATFhX=<6OM_*>a^P11-wb>U@U6hN0lymfHNdY0ejV_~0>6GoP&W1sR>hAEJGd-}k$IEBIPfPXgQ&hG`bch5 zuvsE^l}Iiig~3))+dQcoxkj~JmZHIR!Q)jUw+4?5t`8muJZd7R0)N_8?bP6j!35be zz@HBM8HxNwRb}$ySJ%}xpsQeC`oyH#mewgvjd{7b(_+na=!SG&Q`3qXgCTvv^jKYd zWvnH9_=}P7<)#-0FIU;N1uqF+8oVsH z8TfO7KM#1k?FHL{R|KyNUKP9=_>I7$7Ih);7hy*6`gqfdS@qcNb+LK1D_6#9n`;~E zV)L7tYt}zUsL)tyNs;ojxR^7I^b=}HXHn}W5ZCO)etf(e0Ki*ik zti~{+>!qdX3_9H~ds2MqGIZJ;>U!1aA9 zz_+J@yX5ZhQMo&Ol5~e#74d_*q1+u_KiC}(KzH~ud3Rm`ew!jvUhh?;ychg{h?Mt% zza|;{5cq5RC{jKRim_9QgBUyIP~fjaq=qaaB1Kc$O{6GDeHRq{FjWN64-3Fe1Rmp#9@-vSgT@H_ zZWM{#sp$g-~(X3;aIdUj`m~fLDQk4fxlA$07Hdz`vCWZIoHOSXy!mZ6++ft+4oRddcm> zK^6yq#p?)**8~5K!r~3cB2%edLO!5=jcfxIk7=zpbbAP0VkSe_p}m(3;f&b(eWdZe z&;ycK+$oAhVpZ^O@hU=(hMtg6d|X8FqrRkhF7zrv@%hjTq1~YuLobE)g!YE^g+f?W^8O66`6yGB#ey5=LLmI_j2T>dV6u%)T zehd766coQl6xq?CAIXP!ui?L!jySbEQIR{phcI?ZGV}-VKPE#s0sT|oU<|9n6oM7b zAfoYSA{xUq5skm}EE?aFvkMOi>qH*IT9L=!kjF4B4qAUXkZ25B!hYm2Yz^DO_OK)D z47oVptHKOrR2mbc4!pyn^EN@JtEC83aW^+gmCn&HV5Zg5rYk!tkPSP59_= zZFq6GE?ggufuIM$0D=(&69{GyEFf4xuz_F)!I26tl~G(SiNAzG1jG#>c#`3>K=Aev#Phx7!!SHYe z!_sueJbnLza`|FYs0fccfh7m1d=(>mdhkS@TFWl)Q9@AZO#1gR~iV^J5%90W6 z(fVkA5OGI*B8m~Oh$68+hy=v0xd;0LwG#d;5{=-@5emh~Fpfv~t# zVG-@rg5n~tuwszK0bmh#*d-&Eg0M_s@$%j}=tz5H8zFHk2*)HN+d){~M-s1(+#pHC z9imih=tE~4xh;aTMnoivfmDRXzNEQ7@&v(fXXJs%gOOd4hawM09*H~}c`Wic2rEHY z1wu0jEg-al&<4V45Y~XO7KC-Fh#W{IA_r25>?RlM2`ZIyGap-Y)C=gE~0`Uh?Afo9)&jK-;5!E7zQB9PJ(orVLM!6^-6{16;nIN13!l@vf2Eyqe zoB_fH5Y7YvM_p%wa84?!lLTVaBz4YF8zJ#rg~apIo%4l*B=$dv(Fl?lje>BVOk#9+ zZzM)@qIpPSG#7*mlF@t+HujCgXi-#Ly(^C5>KzUeHX%~~=2AF%c(hE!Fp9$k9I;%~ zmoyWixZ;g z%`G`~Xo(VU%0Uy6oTc$r@>$llIA=zzr8R~YAFK0oCgS&PEoHTh%RB#A+Jcd|Te8=Z zq|6$n>@umyzVbWT^{vYm zw$wGm>*9?|vuc}TwU}1AQ&t0BAfM8sp-$^~j7i)Qt1rci7Ls`9#E44#UYu}=HmO%_ zNvxKBZWe#8F?g%Ws>;i2TWcGdmQIzEbd)JPuHhlken_ddHPN-Ikz2N4lc}^Sok|~F zA4OB9Wb`-?u1iKw0O5L41Nzw7m9>raat&0pNLii~JsImVwMTW4>SFbp=&9}MHLA@u z26x4*8KPm=jHczW#wqcJS+xyqvB|Z~%VW(-E@wnHbj|kc=(!}@b3nK$89fh#Te?DY zp#;&*HHN)wv(^$Tp)7JB6+PyEgcHH7C8xZpIhHd$wz8=u-bxIVT5>R4J89=S(NHP< z%{p>>%vIP9O(_hd_83ghxPl6okh>csx-uFWyqw5MLT! zOibAMy+arE((#K5d2zM>7w-h?l2_cMppuWm(Yg$8X|`&~UIx45h@uVi#ZR$g)LsH}p@ zQH5D$Qlgmc_oowrwT+fRDnG@ z6^hrtbs1BQ)R4t1iKx%b-KWmbP&C5|b0R3KNlVO))DoWYw;7Svrj>IdO^c5~wp&ap z^=Vs>$|=NU&UjN!StNY&7d^h*hsc zjbO#hDw0Q8Q$zh;-9ZOuW#?eOEalsA-!!qV{lDq-fHqS?jrZrsljRka?TgNiEulH9AN7F(%f09ECwsBfh8Y)29D_gxz(Nm*xI0{^v7v zBM8C}14BuJw1jjG<R^wKB52jc9*w_{y+R#UmY9wKfAF!Hrjt}@25H${+Dg*^xr*P-ody3 zAO3uhJa{1p5Ap^DgI9ubLA{_s@OscR=o1VIMg(sMQ-k@zf?!dwBv>1K7;Fpn2K$49 z!QtR&a6I@SI2T+F?gURmDMIN(Swq=FIYSYl+@U<7N}(E|*wCAy5ut?8*wEzA^w7-E zyP?^kd7<}13qy-TOGBT9ehu9XJqSGtJqbMvOB$9UELB*Vu=HUW!d?u^99BB4QCO3( z=&+Vy9m0Bs4GkL}HZE*Z*u1cXVJpKv3)>NPBJA6+Kf*63a!d_DSx8;iSu2~pEQ56|9lkwl92LOpN0u3 ze@jSta#j8mVaxNU%AY!Hx&OmA&8v+Wwr~>-Nj= zc|zh8an1U4iXWCMeqgSWrC)ue%zu8+$RFD=WBNopk|{v;tZHz71BAyK~3C8d3yI4hA9;rX9?mDhNk7PKWU z2r~N(qcfMFGPP(zOZ@fB&;NRRI@6UN^kNq4*vbJ8afD->;2XZ<2QF}tKe@tnZgQKy zxElm7C88$1naAh+#GN3>l7?`KQXF^5Qi?K^qXHF?Ka2ZiiKZFun57jlxJwpy$>J_q zI?#zO3}Y%w`GkYWoaHJ{RG5m?=rU_D^py1#N>i5d=rwC4s!)~c=r3z)+7L@S;_)73 z)n!&)X6;T-+&Sws+&Qc6vOW$1zsqb8?u_uJ3}!YTvkTq&eer^DIm2}n{tLfxir+bl z-opRp9`|{`Bit$cSrBCNUT4#Jwt_^Vn`~oPf_Y|h|LiXiPBwDj$GYsg&+fk2>(K=L zW_PdbI?e8G*?ZwW+50e*k&I^{EBKHvaYlAKliki_KZbi}|CwJo$!X4Tj(>w7hZ*F^ zhkkQ3q!EpIofz8jCKH&_}K z_Qt=`82Go}g50{zJ&5;l7yt4=5a|w)1t@{tk1S1D+##|WHE@?m_lR^4|3q{UsXza~ zY!GP%k?W8r@^kbY>A8`6*o%G5XOHsr#9j00)!)en`9?E_aV%jC`#H$rASmEj1^jUV z_bcFj1-|B6zULt{X~>B0FBU;=@=%G!#G(6QllXwu$XjeZ8`+FqDJE|*T@}++vFFcz z#1ozcLGci2$%-?IJEOQWisz#Rt%%2*ioeZDJhS*G*uUcDU3@oR;V#A9#V@}V6#tR) z{J|wI2SJGxWFQ;fhZ0f9Ut%l^F#8goUBa_VcyxHQrMAtHSz3vb*WDS z8eyO7MbixTsP``Vujl^t?gl~q)abRo`PH|B^>tfcxAk>f-}_a+92KZYRjT8x`p&9v z2kZA@7`m@NhH;E%8Z&r@StHU@AXe%m+GJ8JXg5J4Q_EK2%?hW?osX`OyC-*7Thna)hsaD<<^$!-3^ISrlD@cB6p zdCb!wXcQ1eVzQBg2<$^6`_RZfG_r$@3Q`0a8`+OWWw0ZS^xsIgjpnnGgP3LGBzRuq zD!4;qvuXSWW0=Ex_@2gkYP<=ZH{ONpjgN5-IUCE_SWfF4G?BB3oK5UU6FoJlh6^-9fy$LK`(-e}(&oq;;IQ?&fidW)7l zdNAI%=;4gS+@p0Et;6UAEMf`ESiy&U%%^N+JMI|mj?pqiyIb^C>_bzXHqA?ZN}=1P zuTlveH?4u4Y${h%nVRac=}l;=CnjV z&AVggnwwj5T{Zs%oi{&(-ka;9`7iv&1+E}d3-@eM3Omz6*Dd1c$eWmPi^Z64ixsS5 z4eQy2dAB&sF}~(ozUN1NMjtJ1;NC6%<{uvLm}f!IGDKQ*&@v-BXemd_C>qg(Xxh<> zH|UG*TaF@uvAoT@%;7!evyzYa6!U4hjlFz>j4fqsDPt?$wbETH-L=wPE6;B=o|*Xm zR-fSeTlxN0cCOWz=(Uw+wc5|`oWsmpnRzQSZ)N7K%)HgTAZQ&%5|Wb&_igRItzRTF zc`)zR=H0p=Wijv8=H1%7Th~J$tsBx9d0WTPo(`CG>wXMi5M$6s>j_L^Hs;rQ1s|{) zowRnR*6!5$b9B=B4tKfFL%avA%_v6x82Mw8kqdca^7Ar4WHe)OZX4&enaT|8O&guGS;q!8@ge5kMn`S7WA1HsvYW3s!&Cn= zLL}bDw%wS{$9&7}Ac#$a`Nn1?J2@#p2})50bB=u#bB=Y7Soet4SM2LFqb02wjO?)! z(O0aqVrMajdAyI#V)YfPuh>28#av^5p5b zW1Ng}6{$=M^kuy%VxLer8 zxWBm<1nt7Gf9;Zyf^68mc7>6(U2$~St`7CFbM184&a>N{NjcKgJ5R{NBs zAw3x}tM+Eq-mKb35Q&{`@7e9mr@i^KuZsO{Uz>WES9@o*Z-TvR--qeggZB2c{l7sF zpOfmuGa7e~H>>!y*thsiY-KlQ7Jq=l9K#*r%`pBu+#%i_;>|ApGS|2f1RdO?!%N8B zLGBK6cPM~ab|^wIDkFObnLEhbp%t;Trz7^aLl4ZbgFAFEzYeq6!ZvpBB{FvSiv1ko z2p71-6=dr0Jd>U~m|=&9LC`UT&O7S7qpTfMqvwwDcGOMBT$H97HPLOyx->`5jxn^Q zD+3wAFoyFh&hDs>j#qJZ$7ey%$um3UAwMrun4;M0PWHM}85-d|>(mT;-N{*lopjV`ALiD{+&Z1d+&cZqO>Xl9Sv%{e zb0X4X4?AbVJUd5HoLA6K=d!H9Ogh__&fEEd@43r;^xgR}p4-K9yLfJwq$DRdd9fQ^ z3Zj!PI_ct!F6DWR>eQkx^=XMty4aO2?HI%m#xb6WOy)h_XCaGO%V)^g#qM;`OV=#q z!}(pE-_>q*ZAcTE(t_5sA&z)DqW7+&7=v@WI=8EHyE?b)ES%eQ5ldOY2YCOw>Z$8C zKIa7AaGEom;{xW;^>6N>ziwfqBLgpznLfzS%{$R;G-H{GbGofzJ?7u-BR*v-&g|yS z-RwfQz5K#SoZrp)-JIX;59~uXd)w_gxA4w%lc#%n%%!_ty6e3Ae0Cvo4;g!yWsfS< z!JK;Nu}5QCp|>8L=t>WI;|@Lg;SN0#&|{AY=&;9B%&Uia^)Ra*JK4hl4s(>_oI>^< zmyx-LzIr_7SrGJ;sb?}$keamQz?^%^*HgZpO>m!{=G;@xp61*$j`j>g$2~_OUr!zP zd>a{i>bmCw7PE|%tY#e>uwy;HK<=LU?y1Y350I_r(;(;-V2-`=ke`<+gm> z+uL({dv0&{@9qA*$6!9a$1{m3Ov8P9ALd37ypfJl$oa-d7P5n1IL9CS$rb+M5xTGj zL7zkbYW#}tI-=rib6=`s%zTUgOFH)2exMSZkl%oO_sYyfZQ(xKo%GOu5zIyH3jh^(z zW&2L%J>Ex0eHXKaEo@~wdh2_Lqa5dJenWqKuVSD2-VB0%X4lW1`*o!|7OUSh>}S7O zxOYGI?&qw2?%r=H?%vPy`|V^8d)d!H%(CBioaQVSxP+PYb7sHiXFkH*`iIb2|Ch*0 zeqP2N_b-BO`d6efuhD?UypE3gx2GfW_m{tae@0=~`j5k|^>=RnfB2V&JPCpU87Yna z2fT{s52#9YYEhT^c=muU=w*QZ2k3u*{s;KX8So|(FpB~D8lbNM`Wi5o`7FRp2CQcz zoB0WS4A94b%b3Fe*#_!hU=os%g3M$g9Q!-4Ao>_s4Er-s-huKCly{)L8K{$iZD~h5 zau2-7U)<&S84rSBP*SpylicK`0Qw$O6we-1in8c_koRPet_SIQP;*)mLoCi3uT^l%y6*X8Ekik z*qtGI84uav?C{H!aYj_>%5ltK7XirBv)0OTF#yy6QKv%=ZFpgzx!W@U2 z<8WsUmwUKQhVNxRKkzg14wrTKb#8H&e|W&7AQ&P0h{BlBh?11192KaBmk$2F^$oo9R zS*{Yim58LIAT_zkOMYIa5Jf4$D>(Npy}hNkw<^+#AuQla&IQ4!WaxTSeY!KA8R%!! z9NuFoYuUgiKEj+w+0jv7;U1$7ag-D2Z`2KBAEl$wVI(0XX-J2@M(09Tql+W!XjwRL8x?)S)x(H^%pjnTolLF_$sEe~h_|d7p)t!x;NC#vR9)>zG~a z!FxC6816X69mkyJEEl-MW$y7W4|yB}V+&vwW6ff$y&3DiW8HVG`;K+rvF^w#IL{sDx#M&=t`lA9L2vq^ z!*LUtj6TLWW1KU_>0{hn=COc9Ea3}I@+=76&P^?PqQ|#4ah$9CjnALAAMhv$#wR8X z>B&fDvXYG)L{J3#F#Z+FP@Y$5iR|OM(+k~<*UR`J*x&KPk$?O&%x}D$)60% zK4LfLgJ6R9enL`Gkcza(HbJ%tvQ5ZBNz846xlJ&)2^G=rgx4^?2~BB1YueHdvzs96 zgnr04VK76{>4e2BV+FEJ_>?{D;{b>Fmftytotkiwzpzsi?(-lBCMM2NiS9qq{U^Hn#G{b!PyE73oHOw(&!1^eCq4^;Ng;GIDGABY$)v25o zU?=*Se3@(9qqnjzZnUa%S6sA1-m||C^yvABSV;jzx@+C(&!+9>^ ztSQc#;;bomxQlsDdB~F>n3@57Ox4F!XHLzAGpFVz5BYeRLg;F0J-RWKO?-#^(`20{ z+q4*lFq*OGY1%~I;e8gdlogoEv^A_lPt)9CnmbI}&0hB79@B0i_cXbu$vy2^5KIqY zU#FYtbor-eLDuPVPA^Ic%21A1sYDdL@Saca&p>3IK8z8JA^|z4%Q;=n>E=1z4o#PJ zx~$Vb;tO{16*5jg#8Hm(8>caY>F2l?1T(@&g1w)S0`JxgUC+?j3|-GCjLb8NQ<5rF zqXxCGn=@i*PX{`o_ZiNZ;fxso>SCrYW}4$n&z_l^JmjY!W;oL`XVyg@GwuG& z#=MUGpV^j1+`5Yb1+{s~lHq88$lj!E1 z(zxF{HIU^US>74MW_;f}U*mr7{Kzl(zIT4dUEleGKe@`2Ab2+*5lPYQyQxV>26XZ6 zOX&Jt9lu)^J-*wIX{_cG%-)#4peFw9feLo21nDrbP=a}^zbC{!#Is4Ja zobUMoea^X!oO9%yBj?-@&YJ7ab9FnnK4v@D^X5j=1Lw`1&O6LvF7sHxVwSQUXU^Tl z9`@q=xd-_MvzTiZbI&3BT(g*K7IUv7&s=%tJ`IBR%;mi_q{l4Ydy(Aar2qvfOL@GX z?^U864QPbi@3o;DJ?Tv!%;~)w+(K{f>1|#%eE+=Hs7@{H)I1%`)4@E?nx}(#o-@xb z&+Eqk1~G(TjA0rx(ak*F%$v_bbTe-~<~r{~KIR0vn5T<*GR-@WO!NNY9%eZ|G4^u4 z-ICG9OXD)ql?A5Sgec17r4#e+~a-_ED1x-B^h{;%s6MsJIq4=OXjhiFWAK% z_F+es*pVf6WXTD1u;eN?xP{)AIBSWsmOKrDr71{_^OibqX(qB@7EA5z(n1u$ESBnj zX=9>khW?kfr8~WNgT9Q!4lT9oOXXfF_tM$SMee05_>fQ7!qy;ImIG%kbJj9vEi?CJ z&RN!+R+#a!SlZD6^Ip~!=Pa|U%k1hhySmIAmQ7_k?_mzhma&r6tmQLww@i1-c5;ND z`3BqS#jX0oyLeR>TKm4KIIo42Ehk8agPtWF@aU=)b+TAGpH@{{+D*cUYAaeXUAOI?QX8y;@a~s??x1Q8c0n(ZnPBs@}-FY6J<4L#9~QR z^}4za&1gw$+Ax68jOA_QT0I;4zIr|jSi^cYvKjlg`XI8d*5~RIL9oVoYjm*2?AFw$ zAuVvunzqEzl`%MH%|zDXxobA@5ufrI+t`5}U-J{ca*E$M%X$9b24=nHNf3Bcur?89 zwbrcGn$_C0WFrT9TC1nE#n8{%S13(2YM`IB`dO==wQ{d*g`Hn3^V;t8#2nYY$w)?F zmTS#$t)ABEY3(AGuz@}7Lr-hpLOoD&VAM; zClzV1f9r}6g`HYwch>n_Sa*_VL9pK5udj^k>pRi~`Pa+8eju{1H}Cah8P6o9Fpc+d zhxJQY!79vt{eHYJ>wT`R|Bcg_!TO8*$rbG9df7K5<^?j7mF(z!Lmu+;GUcd>jyJ?I zhzZQb`5Tx$`FH zY${AKN>ZMRRL1=`RmW$=rdawijPaPorkVIm*ff_#=w#D!K43K;@+CXb#U}f@*w)mPYzGjQAxA?r-@+JvP$9=Y}VLhAB{}%mk(f<~+-r|m1 zcH?ea4se>YT;LLRZ_71qatHU?@(&Mq%+nzF%uGHjP9>VsgGFrS7{1qW!B+R)YGzw~ z?bcUt=dEV8^)=jmYc1+hpPsD1_ixqn)>GJzt>?LjzPJ9xqafIph}5J*zuO|Pi`(qP zw$ha2RVw4GZJxhP&TX-@XEA2JZ9BTyb{O;B=G<-0-R9hF&fWG$5Nwa6FrK^JbGO%| zB{6v3cF)`1kuG${J+{9=KgMBZ+b3fOx7)$(v#^8P=d+L{EaNENxzF9@^S1b!&-ZYf zCqb}7pF7-pM^aLd3U}WTPIi3XjyWu63)}EbJ9gqZJN9vqBOJ$G@3?@O@3_o0%x#C6 z?=bTn_j$l$%=`=8e$k3C=t~N$+hbmPUdG(_G{KDb=zEW6?wQIoW?=4n zJaf-tma>seY(@urcH)71+#Y*GAAtQ0mz2>l2hP^WEJa9wOg?BqS#lG9ECm12P?`MosEap9aLy8}mD$ zrvuJC;M@bwJ@5{*us;XZ@+n_pPY!&|cl?M<2TpSqeI2-kEC-$hexU`-?_g5Q@8FBP zL^wIfh4~%Khl~fC(+7DDdS?!r-@(yL!fqd&fm{dQXAw(T&H-dP_ya%l8>hI#(;zsM z47+nE9p-gNjzjkPP$9}uom$i-iblLnTiVfq&UB+EIy>|xBarcs?hbv%UiRbShxByl zSr8m{?%}l9mBSfv#$oq7+>+Kfg zeK?j09UjX^0o>=9yBu?uV>NJ>WA1XS0gbU6$K2(ZZjb5qSO{9b3;vHuG^198Zk79@pvdY~&<2FH;CTAD8R6o{u+WAn&1{<7?S~XB~h3tS#v1 z_-^)KFOMJNYrf+L?(h)vJz>5l%=d)(o`}GiCyL{&6J;pRtGMflp}fshX7Da^aIX_f zSk4ES)d{mY@fq9L5d`1e3xe;R^}V}(pA@tBIXeX@j6449j=#zN+dh8f6lXZkMJ{uV zo4CVoX8POxAUK(tbm;J8Mlzwxle#>q%aggtLq5#-WKB9U0sWmk&fh_B>LtwmRCD?> zoVQ58JWsjzDfc}!j|G_Jsb#ES6>C_BJDmC)@6;)CIJKAkxW}nm$bCxgQx7qN(|S3b z1T#3D8FM%-^XW)rK5Zta%kV0dsY)&C5=BGW(j9qE%X@kp?ss}J)3A%D?c!;>c-k(W zUdTt7(`j=$ZBD0UJ}vWUnNQ1nTISP-ID#EIeI*EfPfigUp`+h*@%tB?#C^`_@Qmzd z@{k|d&y+;=GqRtN{Y(wKS7+ouBmWus&%_W*dpgpEZoG{>JM$jzvxwz6=VU)8`#IUq zo#G7VkpGW{BeZB*-o;SnuLwJ*s z$bSB9CNi1%tYSTzurufF%X!()%YI((=Z|unulX(rF1YK3D(LEh^DeZ+d@sb(9z9*? zf_=Tvi%~fDf^#o8_resWVP`Ms>cU*?*#+~zuz{`o&R;?BM_OK{G3 zf4JKpBbdZgW?(LV+~qzGgW#f>UX<;kY!_v_I2vDn(b*T@!}%ATfALek#2hZ(!80y; z#>EFga49h_ke31!!aOedT)R|?vQ(fFuMv%%xYUX^#3BEsPISdRF6rme8@R`%aZJEm zF6rlzelF?fl8l$+yYvBTFsnbqNJj=T(HlMdX~uuL+n>L15%>7>S`b{WiFsXaMoaAH zW%svVwSNI&%NroS3URYr+D^N_q*oq z*J{v!#>jWA8J+1ve+Ds>;pq69+}GwJ^RF``L2x}F83m|} z4zG8@IoIve^=>%ly6&%!Wjyxl`c!6Mx2`W@DJ#&`b!T07uj{`B!Hp31=|)XF`$l^@ z;@LMm`^GRv;9a`mUApl$)6vrn&%EK8H$3x(=iSiL4fDP6G5Wu8j9+++coZ&p?d-F1K-jwm?9qw|Uhdc>_TLFnkN(xew zjtpcX3)#p?Zt`M=w+c~|64mTi)C9-j?^aytn1OU6u+|!aI7qI<=@v6peTt@4{{SbUTJv+S8FPbf*_@ zFdVbLZNF~YuiKaSn|sKATmCye8Ood3#XG+C&hNPIof{a&oxg(MFK7JKn?CeoAfES^ z=l$h*e|g?tp7*z0e|JKbzq{f2e_udJe|yf~y8GML-tCXG?j|sn@jM8Edr3)7O48t+ zxc4rz@qXW%9|ZrTLZ|rU+!GjQKNsnheFxv-jF@jsr+Rso7~MRR z^O?Io)A=*cdFBq!+~L_~J`O@bK3<_TWvRe+4seJg91lXFGE}D}F~riIj&z|rz34-K z1~Hjw%-|hnF_-x)U=d4M&Pw)hHVB0!CO`G*%WOX3J8tnWk9Zn{5(T6n1DSY&Tku zFYY08BAFA(oH!$y$%3qjWlbDGB<7L00EH-m?1`i3!E`?42Ob8YB<`1_GHsDL$r#>d zBC;pZcM{o?$eu*@BpJ(B#5+)3n4B6re6Bt_pzQz3iO z9GF$om$4&BUqz;*RjEZ?%iP zuTdTOlh>ghEohB9ByUFtI^iD4%_X_q$>mNick;z7VUBCieb#-3w{qm zDZ? zu_I~hNE$nmrVjc})0#HOpT>@)iN|M5n!XHRFvD<>i}sD?SE8^;P{PIs7N$e!+7be`@47m+`muG8r{ z-3@e_?nw~x!*VEnBHSar8Klq0E6AQ+_Vlu+*LQk-r>{$W^qsyf-H|oDtmy}$8Aprj7iXM##E$1?u-Sgf>~y)NgZU(*pMd3oKfbC zGH29xMm=ZLbH>38T-V`Q&}sO~6s8#N5pD+Ib|pL(*~4WI zmpxqH;rb3Az##M;?hfIzFspDqhszqif>r1^d_A9Y5ZS}+bohBLav6EUZ*m8@!{rW_ zJDaYv$(l{pY_evPHCr}vqVsI-pH22`1t^FvvdNiEpV^$5?Q8A@q3qs;?B!|6Kt?i} zvAoT6be;Wu7NKXqesL)K2Yk#Hwy}eq?B+CAxy4^RKS$>5Pl8a6fG}P_)*N}rkBm9= zn?t`jN>i3vMAH@foI}4k^qWJ!IR-O~5qK|ij6vQUa^{dT#}e#w4q0>PI)|=vxOa|? ze2DBhKIL0(2cevL%<0UWF}QzD??KMJm_^QKK`0_QsYpwD^cJDxh`h)jVMihgQG^Oq z;x(${9ualuL_cJYkUc{7hy?6O#01PH!k$FflZZ9Q8X;@MC+Ijr#}PV?&~b$MMc9{! zJKV)yMCdp|$GLQzD-lUaL2B$vE?INghg`bORhXibpcG{&$E(Pms|sy+lf^hQ*B?PB zxA#1^Ir;UGL%F?Mxn<7%E_0CGua_Lkt@GR)*vv=hIrnF{L+yp6H%d7IM;_sAQI8RVUS?0IF+D|=q=WL{n8UBnVLq3gUm zku|TZc@LxGygJVN13z(*zk*P{WSC_>9p}?=J{{-FOjfcJf&I>x4_Wh7M%VeOQG?pl zBMQ5auL-i}Yeqk2V($5zneSl`%AX5!%HNSO$ee!->ybVGhv+>2SL{Rn{JPGs>-@*i zY5r53;XLk<-wX;Q<^^OgAbSDX3+TImz6%tfAo?y)k-ErQK-L0H(QyGC7l@-heHg(z z%tprrbX-8k1(vdcRjg$Ln~}A^L3CZfP8T@NH++w~7x;yfoJRHnkAu+5+0f<7@w|-= zUjCY!L8zd46tq(XOHq~z$X>7}vKN%SpzH-(&>Hy*#?ph{^ko2p8Hyb*xSZ9jV)hfl_c6zU@)t@)7K%~=SqsTpNY+A?aJNF$sfEr9MWNq9 zW?!f?UFl9QbY9556q31+%!Onw^d`D5^clb5%)<7ku$?RHo`ol2cM9*vei#0hANUC! z7rx9jZg3m>Uf3Oqgh)&>Qj&&r6hZbP-o+yJyNIrf)T057c^&zS$X`UiMFt^fk>QMH zEaRDo+(lNhoiEshoh~A4kwY9s<{~l|k-3Pzi|DzCo{QY!Z|?Cgk9fkfAXGFA*^4G6 z5Be?I1!orBz<2x;go9!EO|jy;ui&GLRt*V+3#E4#lQ1lUdAVJ`31}?8T07 zoNurv#eU%=_PUt-#UAi92o=|HaXE{pAT|0e{sOruirmF(Q5Snryb-b%Z$?XGE-rI% znTzYWxSosKhvKppm$i5TEFZD~g*?08ALTCx|zk-em>C3Rd< z$0c=KQokkTD!GgmcrQ!t;s@+SNm)zkx8zx5E-7-sq&t?h*RR;+SM2gDx_%`s z>B&fDvXYIQ=>HYjUwMr<#;}q@+zdjcGEkBx^ky)_(0eJ_OHDxbQnHtlz0`abB7dp% zY~mw6Wh>kH3AsyMM$e_5pYu2W@PJ1_sI=^*bzC|#dC+U=!W5$vWvM_#>SISr>$G$q z`eR2*+mX`4k+Zb@C~ZGV%UgOfOIVJ(mR`jgptB&IT*MJ#0_vX+&#taq}kT`s$uy?8&%+L^NF_y^sVeay2UR4$ApBqtSV@otoR z5n0O>LD%I<@Cs!p&#P3zzLb-_Tn*YYiWNAs+?60y-n&uWoXSVj51Grq$NR`$ehE4+ zZ#T-@jq-Xf|2guP-^CtI@Gb68{%7oc`BS(@1@B@7xhu$BLGB8fF`Ek6(Rl?uSCG9z zWvWw)x-_H-O=(Ui}-wHE$mpRO10gG9NeW|dWFW8B$D}04}SFi^aj&O{x zk-ftA+zvvo>f=>?yz0zXhvELOn$fH0gHXi~GFP-G6$>GI#p39@qK+%tkBauAqW!2S zf5pbUP8{*LL&dK2pcn2@aV~OKl)Iwb743M%wQOJ$dafvIML8>e$B*c@;%UzEJl7qb z2BAtB(QhUFR?=^!2qMYH%h>Bm#VAQ_>Jf#km1M1C2P(ODrIxg&EwWd#H{Vp1B6}5GS1EznR4Ie5tLVB)Gi0qIYn68BxQdRe=(viGt9Uo7Ok@#DvHMkYTt&xK zbX;XKAG3vR>_FBk-=pg)_PNThoZ<}UxWFZ3uW~gAy_Ssp)W?~x&Ezx8>9q$zsA?8u zu380qQdRbMj1_9`}P#wWMT3ztsw3H>%ljuq_YFvs|sZ_!=#3tU3a)$K_28@NOD z$2sJcGMX{GgPv>Xw}yUe zZ08Gh@fG_y#8K>b4Vi1mTH^|`){wP^tTpsqL*F(2rrP-pSf6i9z1lcBQtQwdJg>=h}9; z_FE)i2WpRJB2$pP_6#bizK@wHtNcM%KEr*41%c9oN-y zT^-jozq+4tm}7j6j_c~Uu8!-TPyS?kGKPu6;})=N$*(xCHt8IZkRW=avw zV4PXcPS!gggz6_HA2o@`e%J3!U;1M|>g&4x1nfwCJ=d4N{<|z;IUlfw^=!nR)c=`N zoZ~X`J+~F?wdB~F>)JWb&ayF8)kv(pd9a$Ucx{8!ukmZdA#>w#*pJ3~Z!CM`Imq5v_QtX|Ud=k>Z@eA5*LW9Sv7dwdf!vM%;Q`KR z5+X6l&~+2po8+Sq`fVa(lQNV?w@oV3fY!W0KL#>{H_>gA(Trt0laRNGoK56xvI=|L zMAjx7`4IPR@+n)9y~z%KLAS4G!p|@xqM;Au^ z=;D;bjzm|b2DPb&dqg*)Cqt1vTJ~t!qbD+j>6lHl_b}QWqBmh*qd!B|=$-6g9|!mm z`w}gCw7rOa5`>xtBtqV%DM*dnP33MXcT-(Am9?p?O=WE=Yg7B&v;vi=LN#P>T8j=O z@B!x9^jZ+|`{jh1nNzc73_#{)^I3@O&17$;^JcO)lfBtC^xW)A>`60sXm)~c`GKGL zjZ-`bLd|9Od+CIlr^Q*#Gn19<~+&1di~ zbC|~h>~?dRo6FjKJF+&HwYjX#?R4|~xO?-%97Fcz-*6)cwa{;i5;(KPV06%8H)nVn zgj(9EmU$_F?pqc?cYZ&dP|Ir6qz>}8Y(OL05QjUo>_k_(;~p(%A$Lo;Tgu&X1*=%g zdOk`co$$k!?(`fa7(R{CufK_vNjnZgvKB(tfRM_T{H zFI>cDW9w_@R79fV@ilLOgfWRH$dW@wI^+3X-6+~+O|J~aF4cc@*XRZ zy{+tRWpAtRw)$?X@3#7GdlY@Qb$;7FxWaXAahLl%-W3~#p*V;EETB4 zYgDHeb&0|*#CD`JdX9DHSb1aRjqS$(1|xH<%&{`Ze#UP&GcFf)FRllZSi^o~j{6p! z$NhwNF3xVmT}A#l`w@4Wzjzje+J%vXG!&v7vbU4Ho$T$*rCog*(ir>P&YrY; z16kY2+HM$ck-#{{Gl%7DMYrv~WH);`z+sN@HFl-lkI35Y2D)x%m)rf#KRnI zI!)JU_1Hn$e43Fxt(8^0!1qBo)tOUI#{H*O)6FBuJoOVkL-wg(vndGE12)4x((NOC z8{8p%1beVI`*9!#GalJ}Vo|Qe`b|&Kh1}^6 zV9V*R@dmb^E^GSxe2C2HGN;R&uI~&zXXrU&Yiv1Vdv?MGGInJ+BauC0FGi!^3~!#{ z%#5|z-n1P!l8caenvG1ek!i9|n?nta#AzXcjZAZgY5gqcR#tKwckmLjPy2w6`IN8t zmLK>j2s7o+lt0ruW$HLn&P*L=9)Nx`590{r&ODDvOvWxUry*-*F8RouDRZXGnflJu zbEcj%7txMAXLhoT9{L#IW@OKNij6@yU60dsG2OdPpN%(~en0E*o1Fev5M~X*MzUnj z(s!2ZS+Zxzo@F0d_K_uj)}frpDV)Yw&SX4xl9fkbC@gtk~jX#1gJHW29w_s~*A$wo;N7igvvvr;A-q}ZUEXN~z z_Q_mH5#Br7nc43KVa`wv;at2$j*aBlNRExNs}{5Aq1I=dNW#5YEu=j014yjBIRg#+|&%_d%E^ zbKc+C9oh5t;ZTl4&w29a={fII>?H4eF5;hDhI`~)jW@`fi|l!_=gFSeg0A!0NwOSW z=iQ5}d9vm`hK}=eoc97R@g83WVSb3W%-3 zIfJt}8(YY~0NL{|CWjc_J>Qx6KL%mJNW4?QB+8Jvpoe~BFSrGr7d(KC6zI9YMhfIF zc!oDv&pW)&hkP7_g+tJD;V_2doI;rk_v1hgM$d(^7M{n2$XIweS22NW$!0dXEsSFq zg?8clFJWN^DZ1%n0C@}LER?g*9txj8)blUq3t!=NWG`ID&p|kISM)g3nKLVK z|CvwoX%I%dMZ}&WM{*3KI03yybR4+=9Y^dVVjqz!m_j<4xP$Msguc@fM%*K!uPY@$fNMfxq$Z_yzf z&QbXHN0F@*orIi4au!{Ru8XeZ8r-|+dL}cK3}i2=rI#o9EC^@WqwleVv#ut}B5r3j z5Ai6n&w38oXURTG_F3<;0r_Wr%tq{QmOIS)jX#1g8elh3_lO>W+)=rsaz{^NEN3zv z*`sz6y#ZZE^N1i*w1f)gB7fBHGb(4ahkLl62hnp>)~Jm{y>(RP=!@7#RQBlSe8o3> z#}C*_^jCi8&mi>8m(Vv~!r7an``P2r-Ryd9f!s21*t@siqa2>K2%U*0B#j+R6 zUR+Em?O_Uq2w994#GLk zoa0UBOvD?_S;_;f;{$ACj&0BR9DVy1OE~ARAS~5$=}@-79ZGlQ@9fTA?92X~f$XJz zhox6?4U?G6RJ={8{H1fTi_&?>S=vH^c9JaTE_7R}+fth-eVsS4=hAoCz(?3}sl27O zQYK^BmTZll%eKdz%XUHLvf+$i4|HE9ci9+ZER(6MmnZRem2bmQxKFullrJJhH+|g1 zD(=Om%k^0P5Rb41xy$7)m%Ci72n?oWuFZRCy`#RC?b^IVvl-8Rt~GYn8iJxoefXR{8s@+_lPG ztK7B9Syj%c8jZbI*?X0}S54qLZXgZ2shUm>dDLJ(RSm>wBu*=KRMmzZRdukG`&q{y zK{(f$bKPNX7ES1D?z8A%?sxpiCVmaV>LF~49aYO;y)(8{y({~1AiAnP9QUX`279TV zi0sv}SIb_V%?t{diLF&Pvk+OUWvxzOTh+EzZClmeuzC$|u%37DUezD+37_#L-|#&@ z1!0ZN*2r2TYmKZmvexXz2zE#3HTxiY%>j&KGPO9f#!hO!4Z_-CjN&r#DW()}TU*6E zbX}`!-!=(-+a#=ALMPt7R;RVAxE=SXy@%J>fb6xh*UDb2?^=D=>bq9obz7m^x{=6Q zCu^OK>vUYFjsd$ z?pB^+V-Vix?QeAEjh8YTd%E#{*6}lc1!4UVHpkBEcS6_od$1S#vOn%ne;g-pGNT#8 z8B9X#T+8;-#i8f0%ci7U`=Lp#oFcqa(wZN|ZzLk2R> zn~#mplYQPoI_YOQI-a)@`RCoiBRs|vJk4{wz!&_&A3+!ka869-n0JZofWBjX&oNnJ z$8tO}#!h1_XEL74nT&2@#n^JpmSc0NrJfi~EI{6voH03LgV=IR)|jqix{kSbY&8!d zdu$Ew@n;au*W-L=&YzC^&-WXc|1#d9aeH=S1UAyR7kX>dapNdXgG+FS z#;cgXwYW!P9db9y-6(hCA{NuZQf#DA_QnTzl(jsGej8up6<*^*$urInjhyWp1~cO*YP&GZ~lOf*%*ZJp~xQBbzIkRUB~z3 z0Q4QV@3{Q&Q;|1*5&uNa_|;5g5;u@XDf*4uMZAq9oh+k=e(WV~FL9aUvc_#WE^A!Y zxU6w~$Mqd|_xQh&J^mK&@LLcrkaK}97dUf44LVrxJYNQ3i}z?bgkw3LlQ;$4wdlFU zMq1==xfDBTxso(8m`)Dv(Nch|v@AjP7TH^5Z@Gm*{)P8xv6Yq=cokV&WNmqu4Sd8W z{1k+(L$Hn3k?e_WwAx1NLFl;k2#)4BPT&G$ZI!iE)>c_tuVMn%qVv|t$ljXHT)J3` zGkuRFTzCvu5TTV-+{y6_vm$2}Hq3c|!NY$PFj zLiU9034JH@ozQne--+|kZDJy_CS*0|25-}5CvCE~eaNTC*!DF) z@H4;ipCD}ae(l52ZM$8x+eN!wwEHc#k7f+x7>~T|_R=nAyPWOmOhec0x^B1U_5x-y z3)$OCXyY!{;mpN*?0fM>KF2;5+sESXaED~TW^BRMY{w29 zj_k?PIfJt}5ATw^7=0(@Ps*RnN5@GylR8dTqTgg4^~jy<e zlsPGLQr}5EC-t2C7F$mK$R=zc`8$6Gq3@)GOJrZNIs2jCCEk3AGnd?o?JfB!2s?%` z3Yj}>q{Bu!Wbc?lHWBpPA%BOSJ4&&Wju=fWU?J|&u^4aAu?E>YWbcr@;}vw>@h0oB z=Z>H8P93s#%G#;pP91mZxKqcSdvX|KITLT$spC!^cj~zFQm)`?CNc?|=#;fn)=pVF zW$mnBE;Z=f_fo=6**hD#nWymXOP#s&IIf|L4({g-{2rHn$R~V?eJs`WQe7{V-+xvl zObuZuJEPOoa7N-Dsl7Rk^N~FzdrJ0{zEk>6>D#wV!c+nJPE{dmO4ihTbez(0O2;W3 zrv|u_r+JPS(Q!)0DIKTY;$1fI5gU;;^;Zxs)AcgDShhJ^u`S!PBY#8oWxFwo%ZTF4 zWe@N{5O#T|t^*m5%w5^cK=!Vg=)9|z8*Au*o>|L^V z$=;>!E`4`>#uw#zG! zUO{i&&hB=0x3jx9@DY0J{+$2tXAt&;3`LHfZO~iKPVB<29F6mPym3z!cG%PX?t_)5H>bxrv)u!7A=$H4pJ9Yk30qxk=suT@Rdx zw;Z^NYnZ}xa>zr+zV#6f=y*V912LRA;P*PvjkQAR$LCfSR0c(Kze!!m2#l6-FiytBbYZ$ONlZ5;nMq-~ zGpS4uCY!m88NrNXMlqwA9A*qNmKn$7GV_=crj#jTLQFX`pQ&KNOeIsrT*F+;T*s_o zu4iswZe(s^Zf0&_ZfEXbHZxn9T4o3H5c4qe2=gfO7_*nz$2`eA%RI*%WDYT}GVe0) zG4C@UFds4>F`qMEFkds@Fh4S9k$|*FhxEvRjL3w{$b$SRfD%y~)E0F@olzIm6{Vsc zs2A#u2B3i`6J?=1G#*Vr6VW6z8BIZRP%)Z|=AjZ)io&Q8RiOoFFjF=nv>b6APhSc7#~kFD5-o!Eu_IDk9iPPjA9!b9*-JPZ%V+4wR%0*}O_@MxTa z^YA1*8Bf7e@oYQ?SKvjs8ZXAn@N#?=UWHfVHTZgbGhU0=<8gQcz8&9z@4@%thwx+g zar^{6fS<)j@iF`ceiOfikK+^gBYYBnjDKY{tckU=Zq~#4*#O&)ZO?XMli5_Z2b;!@ zWJj^1*&KEZJC+^C=CXP0cy<{c|_80b?0x7V9RR{{L!lp=2v{!UebXIgzq$<)CeH8-~0~MKyEX8m|wql%OvZ6o{ zR1_;p74sEUiUo?rie-xRiVcd5irW;M6t^qxP;6G*so0{}s@SgBt++>Vui|0FBZ_^B zCl&h@2NX{!4k`{Q>J=vxA1FRne4_YN@ulJ$#kY#niXRnc6~AzZ<2fT|BJNs1~c1sIF9PP;FG*rrM;sU3G_Qv+7RO7S&c&jjB#{kLq64!>UJA`&3V=_N!h{ zy{I~u!s;z39+NJiY6V>h2m#90dyQq`Z!_>po+3L&GBh(|+qtv6-IqEU$ zvFh>aY3iBkLiId#iMmu>rCy+3s20_$)HkTts@JJEsBc$qQEydmSJ$cURzIZPqkdZb zy!r+8Vf9PuBkH5-x75eg@2cNZf22O8{y}|K{hRuC4Wm(LIE`AP(dab>jZ@>-T%zf$ z>7q&2^w9Lu^w#v#^w$j5Ox8@%Ow~-&OxMiNb&9$2AG;1`sYVOc%)9lpTrMXA*faVd+qnbUMy_)@+XEZNpj%eQ0ystT_`Al<4 z^R4Ez=10w0!5|m~lVBDsf>p2ycEKSy1()Cz+6nE2E<#r!P3S4~7X}C!LZ*--j1k5P zQ1n3j|Rh!gAp%;cDRq;YMMdaEq`>*dp95>=Jehj|z_o zj|)!-2ZR&C+rm4-yTW_I`@#pphr&m~N#SGR6X9FoJK=lb2jQ&ni}1VfmzL8iwHmEn zYt`DcPHi`BvNlEAU7M=yp-t2F)TV3uX$NTsYbR@fv4XXklPqZ^|es~e}Apqrwbq083= zb+dG{b#ruOx{$71H(ytwTdZ5HyGD1d?mFF#x^=n@x{bQcx;u4SblY`xx*fVlbpO%q z(LJf#uX{%KtnNkKLEX!`S9C{p$8^VaAL>5QeXjdjcUt$e?swf^daUR5TD@6s(>wJ( zeH(p8eHVQP4)-=N>9zfHeczg=I4cj|ZO@6q3@e^mdNevf{y{t5j){d4-~_3!E5 z*MFe@Q2&wsr2b?5C;CtIpXoo>f2BXI|51NN|C9bV{qF{afiox#DucmbG;}m{GITa{ zF?2N~8M+yg4Jn51hEzkkp}%2(VW44Hyks(VK{C$VR+Z@p5a5oM~0Jz&kUa%zA&6N{Af61_{s3I;jG~|BWqL`Iiu2O zHd>5Uqs?eHI*d-E%jh=xjDBMWV;5srV~Vl6@ls{YSS9i^`@ImYfbA-8%(#G z?l5gN)tKr`J50MwyG{3-9xy#(depSXwAZxXbinki={eIu(;?F9 zO+T8>n0_+-Y&vWD#dOZ}tLZn>?`FoVGV9EGv)$}4JI!s(ZOt9b$>tPuKXaCOhf#PX@-8_Ty=rB!9+t!k^rDp<8vomFo&SdCVz)niSx zwy}1$cCmJ~rdfMhM_ET(bF5>mW3A(?xz;@Ec&Mnlte;vxvwm*+|Y_Hjl+fLZtww<(n zZ2QgjyX_C#pSHj3j2+prowY0MoLy}<+U<6S-ER-r6YZVso$VR+Ona7nh<&Jin0>fC z+kTmSgnguajD4bgx_yRymVLH;j=kJI-+qn#TKjeOHTLW6H`s5q-(x#k0Zh1b@&{9N5GNjXz%FiNOJUWq&fOI`a1?VhB}5h3LG;Xg^nUe z&@sy~+cC#c?3nAA=Lk6#IIeIkb*yl#bgXjR>{#nq@3_;k#j)G*u;UTO%Z^tZuR4x6 zUUR(esCOK79CN(kc+>H=<0HrCjxQYFJAQDScKqu2&1rF3oi?Z4>2NxoE~ne+aV9vu z&O~QNXE$fEvzN2CvyXGIGs8K>In_DMIo&zKneV*ZS>T-MEOZt*=Qu;oD(3>{GUt^} z(Ye}rjkCsC>)htt?yPg}aPD;8<-FUu%emWmzwv%jUAXy19~FDX#9WR96pInyaTP-POz0 z+ttsN>B@2qagA_|bmh6myC%41xbj^KU5i}RuEnk;t}9$iUCUfoxwcSuJ|Bu4i4(xt@2u;Cj*ZlB?cz+;zhBk?W-ElsGiq zx6-Y0^KP|U;}+anx6W;HJKa9F-`&C8(VgP%?#^~!<{sf5=^o`C?apzJagTM6bLYAz zx@Wla-9h&(cbPlnE_W|-SG#X^uXV3;-{QX2z23dSz0rM}dz1Ti_ZIgK_dV`=-H*B- zbMJQ_aKGg~?mppu+x?FFUH5zL_uU`3KXiZO{?z@o`y2OEVl zC*%ox7JEbw@m%A%*0a{L&a>NdkLO;`eV+S04|pE*Jmh)U^N8nB&mPZHo)Eh{z_0Ls1kGu`UHD|Bf*&vNJvcRlh8Ne z(u95q{SyWx3``i5FgPJ2Av0lE!svvYgfR&d5+)|(CtRK|C!sijBrH$3D&gvc6$vX7 zRwb-XxF+G+gzFM+Ojw_AN5bZWx`Z7G_a)q)@M6NjghL636JAPqIpLLrR}+pTyq55K z!W#+iCY((8IN_^=uM^HB{N&Yn^W5_bTu0-aEXTy?1)I zc(;0MytUqK-tFEx@7>-9ypMSw_a5**|zwmzPJ>~t% z`0;v4E4 z?aT3v@s0J3^G)$h^@V+vzAE1W-$LIaU$t+sZ;9^;-%=m(t@hpEyV1A7x6!xNSL55` z+v|J6x6k*aZ@=$=?O1Cp!}p%=ecxxk&wYRS89(x4KkHZcIlt1c z^7DSRU+1^_-F}b1t-qbWy+6s{%|FyX%s{!0HE|MmVG{5Se<^55)V>tE-;#eb`Ry?>Lx#=p~lm;V9(gZ_v7d;L%NkNS`K z-|)Zbf6IT|f5QK^{~iCk{`dSJ`M>ag>;KMw*8fX@37~*0;0|~K2?1}w7w`uHfy6+Y zK-)lvK(|10pl2XGFd#56Ff1@UFgh?UkQfqj7|1N#F90#5~=4m=ZhHt<~F`M?W- z7Xt?ahXRKKF9lu>91olbyd8Ka@NVF}!25v@0-pxH3w$5=A#ghIW8h5S&%j@aIMJMF zNwg-~677kOM0cVm(Vy5pu~TB#@$Jg0N=lA0I!4bJ7$ak0>=Q@lcAFQh4o`vKkzKP1 z?Fvf@!r@xR#F#}avbBtrv55-8UMBX*H?~U~(mf-kcgEnPw5+V5Nol>(Qj;<=(|RQJ z9NN22TFT(GKD{%cm^C|V$iz^^yl{CzVK6IHSXCMOup&QwaQDo#tRY!Rz0)&$C8cGirY8-~>Y19cH{8z+RaF!Q zBb+!sJEm;roPx61!7%hzZmJA7OAiEje+yrZeZkmqvt$D@?a{Q|L(}p z>~M6H7BE*bo$q26GK-jMW-+sbxq?~BEEC&_?Zr#P4q`{Klh|48au={asJx)8 zC|HzT87zhVOl+BSCI!i0SSIX_DN`C8Q&3qMtSHN^tN_>m$c(uenL4y>-HRL|VXtYh&qUIu76N&Yh! zo-sOiR8=Jft-%!)1=ZW2+-=Mz5DC)PNuzUfBsDj^`2P4W@G) z^BVIyQ_mb_j){ZC3^7y85{J|=ZvqCjXHGD0i$ei#gZomUYAM(hAr z8X>!Z7i2EXDFbdTrnMI38{1#F+g(_Na^c7Ar zpHPR)+`oHtfOMN))#1y%$eS6)y#XELm;gNug4N~6|nnKA-6pemeEP&O~$gqTrP zC6&eHCBZ;psI(N+~DYs!JCa%qlFNzo1}2S<%d*(%GT;MKk9V%~?D@Iisq$q$oMN z4CYa3u&5Yxop84@SP4NZV`y}nDHW4&JgK;RPN*yxE-tMqp_90IF?kk;lgdIBr3EF) zi+ZQ$r>7+kuBx0v^?^c34Wnoptmqb&6!~xwG`WM3k$BVtK0^H^zo79T#iqi-aW;4Y zRl^!aWLALh&st_Ps%gS$wkDjmEy_-P(4~}}`ig}$sGnH$x9l_s*eT=h*eRG}Vy}*8 zr$Azd|6YOIq12gdu7r9Ouhur@5{(ecCB{eoKQhS}i5n}!z-O?Pa3MA*C@%+=nic9M zDcLZv^&kSYE$P)kx*%+TK~SW9IoYMQBhVFQZLP%``|khFkPh{Bhw~qF;|I`@Mritd>a3R|6~z(npv96 z@{aMdoV7-0`4BXc>AV9CMZ?f=l+7GPBgEO_9I;rO3oDCxJJ2XJ8s#t@(OB5wC=pA= z#jwM%MBd$?t4R=`h4V5)rBRU_(LWq;OJeoB3d*B^U6P~)wbGH5F|1+PL3aq?p1eku z$iWT--7FYaRaOQHV@64+a2`D5r8PxvNq7sJIg&mpJ#NI&mzjzRV2OmLL08Q{`RH=7 zObm(T;(W294$Y(+Hqd{w#4x;qLtG?QON)zWOF^xO-Cv>0AL$JSm%t8JQ8lf;Y-p%r zba3IA0=h*ay->cfJCqwXvf~vB@Ik~dJGcGtQ2p0?KMuW8bfyz+DHWWhTXuen}R*4J5 zg|Gx`6kt?O4+q+}5A+6Iv4zXsQ(y(wu(ke>u7eU5!?VOT}g4m7)myD`+*kM%rH? z;`0B4{gqbeQ)|&JQ~<6Muc|?}idX-w0K5$Z;O&1W09WLgY~BU|*yubg`M_TB-wVR~ zjWfXiSjU(dCs-#EVK<;FI1Be=`Y`=qBRz{54r)OTlLu1?SKuidzlBpF?bI+1wSo01-}AH?wicp;1>K5^C>8~ z-++pHhWQ27(|;n2lt>NAt_hZOF60Gew>`K5cSGGl%nyz{GXX-LY&bs@nYQ6$gbnFCH^*Ic_+}wm|7_(9Xryuf@GEIv@oXa z)Rx598AlA-H=h@InW2i{G}sZNJ6WL$SjpCdYqlEbe^Rd0%V@XBHl_pXOxku>DA6i=#MCl@!hA{C$ks>9KmUO8WSMeb`ZAXSWqT9a^`Q0+ zUER!6}q-_H$Q%5Eb@wqa&F-&e9tU2XT92Y|}jvtMvK4M(@2Q@5_YnaTK>R`W1u3>6S4U=H~lvw~a zg?ehJ0t?nZpnaW8yMW2v&QST=i7AYs9M|^xh>a_^wNrTO=sRTU#gr-L0(E;64zG_y zL;QmV*U2Qy8B;9{ponQ~%%AmARK`1GL>=@KZ zCUPTX+M6N+6U(&qun=7bK`8%VtlyGJuBX##10@;r&h^yf0}(B)ZeiX1Mw#4Z%Jg?e zS{Tdp^$;3U1Hmz^Cb@O=7c$B1w1staT;f`|Q?e-igBSi@Cbyf(-3At^rsSwC>Vej` zuI|lqGP#Fn>u9u3Z2vVEb@dPnL=8`^e*GQJN979kQnq{o!iWH&V>+OvD)uu6z(UpP zDz@gBc!vVMFmaY$>+7pLU=(tz&Kh31oLgZS<7~1t<9{QO%`wu`UXSz)69G#QD zLStjKn|jHjbhb5Zld1d#QxP#>k_yB$s)c!iSfoH)Yv@W_K#r|Bv!n`;ipi}-JVG(# z>yd`W?zNuS4#Pt-F+IF94fp%o*3w`=YwIi6no}lMU}v=3k%KZ9a>lfHDpgHo>r%L0 zHVyrg5xY_*?gREhejpw|vAs>%D>$cds!8#S|3JyE`y6}_VBG?{`kiV~2NcU*%}3Ix zsFwmGlm1EXtdc8828co_@B&ovjh%e;Qk-SlKk1X3WRmH$PkKoti7k(9LEy%k*%s$qd?uk-(`{` zC=-tal5ui_Zg8P7t#9Gh99acJ5OKR5<;pFLdu1Bv+A4x_vnIh}5KRU;vAkK2rqX?^ z);Fu}lXWt=eA=wbVJGZwMKCHvMJU+%Dt5GaM6O~s<()aSBjXhMdO4)G^#r%(d@K_z zqx>C`yRr$%`KSVgTTim?X=&p%CwtzZ&uSs4xVjcLt`;?HzP24yb-A<^S_|REOJet7 zACNBBprvw)mQnVDSY+r$2a46@non%-z8nSnlyPD^vT C94bF!V8OMRl**J3l{R} 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 Dydwpf!yxA(xmFKY`Aw7R> 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 + + + + + + diff --git a/KssiusBank/KssiusBank/.DS_Store b/KssiusBank/KssiusBank/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..82d9eb51915da601caddf3e5297986f004ac6d37 GIT binary patch literal 6148 zcmeHK!AiqG5Pe%Kq6@K)C@#F6`F&UpmqxVF7%&D_8Q6)BeYyY7zV825gY3x|Fb4h= z1FoBmvLQ>-yLGKNxobW3iYg-O+K3+^G{RNPwQ?07P=nC##UQ4NZA5w~_D3MlV1qI6 Hs|>sY@_ Bool + { + // Override point for customization after application launch. + return true + } + + func applicationWillResignActive(_ application: UIApplication) + { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. + } - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - // Override point for customization after application launch. - return true + func applicationDidEnterBackground(_ application: UIApplication) + { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. } - // MARK: UISceneSession Lifecycle + func applicationWillEnterForeground(_ application: UIApplication) + { + // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. + } - func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { - // Called when a new scene session is being created. - // Use this method to select a configuration to create the new scene with. - return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + func applicationDidBecomeActive(_ application: UIApplication) + { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. } - func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { - // Called when the user discards a scene session. - // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. - // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + func applicationWillTerminate(_ application: UIApplication) + { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. } // MARK: - Core Data stack diff --git a/KssiusBank/KssiusBank/Common/CommonValidate.swift b/KssiusBank/KssiusBank/Common/CommonValidate.swift new file mode 100644 index 000000000..0b510c522 --- /dev/null +++ b/KssiusBank/KssiusBank/Common/CommonValidate.swift @@ -0,0 +1,57 @@ +// +// CommonValidate.swift +// KssiusBank +// +// Created by Cassio Sousa on 16/06/23. +// + +import Foundation + +enum CommonValidator { + enum User { + static func validatePassword(_ password: String) -> Bool { + let regex = #"^(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]).{3,}"# + let predicate = NSPredicate(format:"SELF MATCHES %@", regex) + return predicate.evaluate(with: password) + } + static func isEmail(_ email: String) -> Bool { + let regex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}" + let predicate = NSPredicate(format:"SELF MATCHES %@", regex) + return predicate.evaluate(with: email) + } + + static func isCpf(_ cpf: String) -> Bool { + let numbers = cpf.components(separatedBy: CharacterSet.decimalDigits.inverted).joined() + guard numbers.count == 11 else { return false } + + let set = NSCountedSet(array: Array(numbers)) + guard set.count != 1 else { return false } + + let i1 = numbers.index(numbers.startIndex, offsetBy: 9) + let i2 = numbers.index(numbers.startIndex, offsetBy: 10) + let i3 = numbers.index(numbers.startIndex, offsetBy: 11) + let d1 = Int(numbers[i1.. Bool { switch (lhs, rhs) { - case (.number, .number): return true case (.network(let lnet), .network(let rnet)): return lnet == rnet default: @@ -35,6 +34,7 @@ enum BankFailure: Error, Equatable { } } - case number + // MARK: - Cases + case network(ErrorResponse?) } diff --git a/KssiusBank/KssiusBank/Core/Data/Repositories/AutenticationRepository.swift b/KssiusBank/KssiusBank/Core/Data/Repositories/AutenticationRepository.swift index 00731c2a8..04287cf76 100644 --- a/KssiusBank/KssiusBank/Core/Data/Repositories/AutenticationRepository.swift +++ b/KssiusBank/KssiusBank/Core/Data/Repositories/AutenticationRepository.swift @@ -22,7 +22,24 @@ final class AuthenticationRepository :AuthenticationRepositoryProtocol { // MARK: - POST Methods extension AuthenticationRepository { - func perform(login: AutenticationApi.Endpoints, with data: LoginRequestModel, completion: @escaping (Result) -> Void) { - authenticationService.perform(login: login, with: data, completion: completion) + func perform(login: AutenticationApi.Endpoints, with data: LoginRequestModel, completion: @escaping (Result) -> Void) { + + if (!CommonValidator.User.isCpf(data.username) || !CommonValidator.User.isEmail(data.username)) { + completion(.failure(.user)) + return + } + + if (!CommonValidator.User.validatePassword(data.password)) { + completion(.failure(.password)) + return + } + + authenticationService.perform(login: login, with: data){ result in + switch(result) { + case .success(let model): completion(.success(model)) + case .failure( _): + completion(.failure(.network(.init()))) + } + } } } diff --git a/KssiusBank/KssiusBank/Core/Data/Repositories/AuthenticationRepositoryProtocol.swift b/KssiusBank/KssiusBank/Core/Data/Repositories/AuthenticationRepositoryProtocol.swift index 59e28d77d..a76dbaf19 100644 --- a/KssiusBank/KssiusBank/Core/Data/Repositories/AuthenticationRepositoryProtocol.swift +++ b/KssiusBank/KssiusBank/Core/Data/Repositories/AuthenticationRepositoryProtocol.swift @@ -8,5 +8,5 @@ import Foundation protocol AuthenticationRepositoryProtocol: AnyObject { - func perform(login: AutenticationApi.Endpoints, with data: LoginRequestModel, completion: @escaping (Result) -> Void) + func perform(login: AutenticationApi.Endpoints, with data: LoginRequestModel, completion: @escaping (Result) -> Void) } diff --git a/KssiusBank/KssiusBank/Core/Data/UserFailure.swift b/KssiusBank/KssiusBank/Core/Data/UserFailure.swift new file mode 100644 index 000000000..80ea9f873 --- /dev/null +++ b/KssiusBank/KssiusBank/Core/Data/UserFailure.swift @@ -0,0 +1,32 @@ +// +// UserFailure.swift +// KssiusBank +// +// Created by Cassio Sousa on 16/06/23. +// + +import Foundation + +enum UserFailure: Error, Equatable { + + // MARK: - Equatable + + static func == (lhs: UserFailure, rhs: UserFailure) -> Bool { + switch (lhs, rhs) { + case (.password, .password): return true + case (.user, .user): return true + case (.network(let lnet), .network(let rnet)): + return lnet == rnet + default: + return false + } + } + + + // MARK: - Cases + + case network(ErrorResponse?) + case password + case user + +} diff --git a/KssiusBank/KssiusBank/Generated/Strings+Generated.swift b/KssiusBank/KssiusBank/Generated/Strings+Generated.swift new file mode 100644 index 000000000..4b7eef9a5 --- /dev/null +++ b/KssiusBank/KssiusBank/Generated/Strings+Generated.swift @@ -0,0 +1,57 @@ +// swiftlint:disable all +// Generated using SwiftGen — https://github.com/SwiftGen/SwiftGen + +import Foundation + +// swiftlint:disable superfluous_disable_command file_length implicit_return prefer_self_in_static_references + +// MARK: - Strings + +// swiftlint:disable explicit_type_interface function_parameter_count identifier_name line_length +// swiftlint:disable nesting type_body_length type_name vertical_whitespace_opening_braces +internal enum L10n { + internal enum Network { + internal enum Error { + /// Ops! aconteceu algum erro de rede. + internal static let general = L10n.tr("Localizable", "network.error.general", fallback: "Ops! aconteceu algum erro de rede.") + } + } + internal enum User { + internal enum Authentication { + internal enum Error { + /// Localizable.strings + /// KssiusBank + /// + /// Created by Cassio Sousa on 16/06/23. + internal static let general = L10n.tr("Localizable", "user.authentication.error.general", fallback: "Não foi possível efetuar o seu login. Por favor verifique se seu usuário e senha estão corretos e tente novamente.") + /// Por favor informe um email ou CPF válido no campo de usuário. + internal static let invalidCpf = L10n.tr("Localizable", "user.authentication.error.invalidCpf", fallback: "Por favor informe um email ou CPF válido no campo de usuário.") + /// Por favor informe uma senha que contenha pelo menos uma letra maiúscula, um caracter especial e um caracter alfanumérico. + internal static let invalidPassword = L10n.tr("Localizable", "user.authentication.error.invalidPassword", fallback: "Por favor informe uma senha que contenha pelo menos uma letra maiúscula, um caracter especial e um caracter alfanumérico.") + } + } + } +} +// swiftlint:enable explicit_type_interface function_parameter_count identifier_name line_length +// swiftlint:enable nesting type_body_length type_name vertical_whitespace_opening_braces + +// MARK: - Implementation Details + +extension L10n { + private static func tr(_ table: String, _ key: String, _ args: CVarArg..., fallback value: String) -> String { + let format = BundleToken.bundle.localizedString(forKey: key, value: value, table: table) + return String(format: format, locale: Locale.current, arguments: args) + } +} + +// swiftlint:disable convenience_type +private final class BundleToken { + static let bundle: Bundle = { + #if SWIFT_PACKAGE + return Bundle.module + #else + return Bundle(for: BundleToken.self) + #endif + }() +} +// swiftlint:enable convenience_type diff --git a/KssiusBank/KssiusBank/Generated/XCAssets+Generated.swift b/KssiusBank/KssiusBank/Generated/XCAssets+Generated.swift new file mode 100644 index 000000000..74da172b7 --- /dev/null +++ b/KssiusBank/KssiusBank/Generated/XCAssets+Generated.swift @@ -0,0 +1,138 @@ +// swiftlint:disable all +// Generated using SwiftGen — https://github.com/SwiftGen/SwiftGen + +#if os(macOS) + import AppKit +#elseif os(iOS) + import UIKit +#elseif os(tvOS) || os(watchOS) + import UIKit +#endif + +// Deprecated typealiases +@available(*, deprecated, renamed: "ColorAsset.Color", message: "This typealias will be removed in SwiftGen 7.0") +internal typealias AssetColorTypeAlias = ColorAsset.Color +@available(*, deprecated, renamed: "ImageAsset.Image", message: "This typealias will be removed in SwiftGen 7.0") +internal typealias AssetImageTypeAlias = ImageAsset.Image + +// swiftlint:disable superfluous_disable_command file_length implicit_return + +// MARK: - Asset Catalogs + +// swiftlint:disable identifier_name line_length nesting type_body_length type_name +internal enum Asset { + internal static let accentColor = ColorAsset(name: "AccentColor") + internal static let logo = ImageAsset(name: "Logo") + internal static let logout = ImageAsset(name: "logout") +} +// swiftlint:enable identifier_name line_length nesting type_body_length type_name + +// MARK: - Implementation Details + +internal final class ColorAsset { + internal fileprivate(set) var name: String + + #if os(macOS) + internal typealias Color = NSColor + #elseif os(iOS) || os(tvOS) || os(watchOS) + internal typealias Color = UIColor + #endif + + @available(iOS 11.0, tvOS 11.0, watchOS 4.0, macOS 10.13, *) + internal private(set) lazy var color: Color = Color(asset: self) + + #if os(iOS) || os(tvOS) + @available(iOS 11.0, tvOS 11.0, *) + internal func color(compatibleWith traitCollection: UITraitCollection) -> Color { + let bundle = BundleToken.bundle + guard let color = Color(named: name, in: bundle, compatibleWith: traitCollection) else { + fatalError("Unable to load color asset named \(name).") + } + return color + } + #endif + + fileprivate init(name: String) { + self.name = name + } +} + +internal extension ColorAsset.Color { + @available(iOS 11.0, tvOS 11.0, watchOS 4.0, macOS 10.13, *) + convenience init!(asset: ColorAsset) { + let bundle = BundleToken.bundle + #if os(iOS) || os(tvOS) + self.init(named: asset.name, in: bundle, compatibleWith: nil) + #elseif os(macOS) + self.init(named: NSColor.Name(asset.name), bundle: bundle) + #elseif os(watchOS) + self.init(named: asset.name) + #endif + } +} + +internal struct ImageAsset { + internal fileprivate(set) var name: String + + #if os(macOS) + internal typealias Image = NSImage + #elseif os(iOS) || os(tvOS) || os(watchOS) + internal typealias Image = UIImage + #endif + + @available(iOS 8.0, tvOS 9.0, watchOS 2.0, macOS 10.7, *) + internal var image: Image { + let bundle = BundleToken.bundle + #if os(iOS) || os(tvOS) + let image = Image(named: name, in: bundle, compatibleWith: nil) + #elseif os(macOS) + let name = NSImage.Name(self.name) + let image = (bundle == .main) ? NSImage(named: name) : bundle.image(forResource: name) + #elseif os(watchOS) + let image = Image(named: name) + #endif + guard let result = image else { + fatalError("Unable to load image asset named \(name).") + } + return result + } + + #if os(iOS) || os(tvOS) + @available(iOS 8.0, tvOS 9.0, *) + internal func image(compatibleWith traitCollection: UITraitCollection) -> Image { + let bundle = BundleToken.bundle + guard let result = Image(named: name, in: bundle, compatibleWith: traitCollection) else { + fatalError("Unable to load image asset named \(name).") + } + return result + } + #endif +} + +internal extension ImageAsset.Image { + @available(iOS 8.0, tvOS 9.0, watchOS 2.0, *) + @available(macOS, deprecated, + message: "This initializer is unsafe on macOS, please use the ImageAsset.image property") + convenience init!(asset: ImageAsset) { + #if os(iOS) || os(tvOS) + let bundle = BundleToken.bundle + self.init(named: asset.name, in: bundle, compatibleWith: nil) + #elseif os(macOS) + self.init(named: NSImage.Name(asset.name)) + #elseif os(watchOS) + self.init(named: asset.name) + #endif + } +} + +// swiftlint:disable convenience_type +private final class BundleToken { + static let bundle: Bundle = { + #if SWIFT_PACKAGE + return Bundle.module + #else + return Bundle(for: BundleToken.self) + #endif + }() +} +// swiftlint:enable convenience_type diff --git a/KssiusBank/KssiusBank/Info.plist b/KssiusBank/KssiusBank/Info.plist index dd3c9afda..0c67376eb 100644 --- a/KssiusBank/KssiusBank/Info.plist +++ b/KssiusBank/KssiusBank/Info.plist @@ -1,25 +1,5 @@ - - UIApplicationSceneManifest - - UIApplicationSupportsMultipleScenes - - UISceneConfigurations - - UIWindowSceneSessionRoleApplication - - - UISceneConfigurationName - Default Configuration - UISceneDelegateClassName - $(PRODUCT_MODULE_NAME).SceneDelegate - UISceneStoryboardFile - Main - - - - - + diff --git a/KssiusBank/KssiusBank/KssiusBank.xcdatamodeld/.xccurrentversion b/KssiusBank/KssiusBank/KssiusBank.xcdatamodeld/.xccurrentversion index 0c67376eb..b8689019c 100644 --- a/KssiusBank/KssiusBank/KssiusBank.xcdatamodeld/.xccurrentversion +++ b/KssiusBank/KssiusBank/KssiusBank.xcdatamodeld/.xccurrentversion @@ -1,5 +1,8 @@ - + + _XCCurrentVersionName + KssiusBank.xcdatamodel + diff --git a/KssiusBank/KssiusBank/Main.storyboard b/KssiusBank/KssiusBank/Main.storyboard index 25a763858..fa7c687f8 100644 --- a/KssiusBank/KssiusBank/Main.storyboard +++ b/KssiusBank/KssiusBank/Main.storyboard @@ -1,24 +1,33 @@ - + + - + + + - + - + - + - + + + + + + + diff --git a/KssiusBank/KssiusBank/Resources/.DS_Store b/KssiusBank/KssiusBank/Resources/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..7fa56988eda1d4c333d428ef58df4d8265da1aad GIT binary patch literal 6148 zcmeHK%Sr=55Ukc50=eXv)IewUwS^#ftqc<|sws-e4P zdb(!WI&5zPu;K0T4p;+N(jD>PVQzlzKC`RJ7?I99cDTg>FF4~gtG=9Y?uv|8++djS zpWpZA*bB$R_;fJD z2tZsg9maLc62#^SVlNyMnW0%yiAl8@F)ZoKx2o%fV`9=_HGEh-*=j6{CgHF`Xfa@ZY0)MT*7ep`>DgXcg literal 0 HcmV?d00001 diff --git a/KssiusBank/KssiusBank/Resources/en.lproj/Localizable.strings b/KssiusBank/KssiusBank/Resources/en.lproj/Localizable.strings new file mode 100644 index 000000000..f65c1cd77 --- /dev/null +++ b/KssiusBank/KssiusBank/Resources/en.lproj/Localizable.strings @@ -0,0 +1,7 @@ +/* + Localizable.strings + KssiusBank + + Created by Cassio Sousa on 16/06/23. + +*/ diff --git a/KssiusBank/KssiusBank/Resources/pt-BR.lproj/Localizable.strings b/KssiusBank/KssiusBank/Resources/pt-BR.lproj/Localizable.strings new file mode 100644 index 000000000..7474441db --- /dev/null +++ b/KssiusBank/KssiusBank/Resources/pt-BR.lproj/Localizable.strings @@ -0,0 +1,16 @@ +/* + Localizable.strings + KssiusBank + + Created by Cassio Sousa on 16/06/23. + +*/ + +// mark - User Messagens + +"user.authentication.error.general" = "Não foi possível efetuar o seu login. Por favor verifique se seu usuário e senha estão corretos e tente novamente."; +"user.authentication.error.invalidCpf" = "Por favor informe um email ou CPF válido no campo de usuário."; +"user.authentication.error.invalidPassword" = "Por favor informe uma senha que contenha pelo menos uma letra maiúscula, um caracter especial e um caracter alfanumérico."; + + +"network.error.general" = "Ops! aconteceu algum erro de rede."; diff --git a/KssiusBank/KssiusBank/SceneDelegate.swift b/KssiusBank/KssiusBank/SceneDelegate.swift index e7cdeaed5..e41e7c35f 100644 --- a/KssiusBank/KssiusBank/SceneDelegate.swift +++ b/KssiusBank/KssiusBank/SceneDelegate.swift @@ -5,51 +5,51 @@ // Created by Cassio Sousa on 15/06/23. // -import UIKit - -class SceneDelegate: UIResponder, UIWindowSceneDelegate { - - var window: UIWindow? - - - func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { - // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. - // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. - // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). - guard let _ = (scene as? UIWindowScene) else { return } - } - - func sceneDidDisconnect(_ scene: UIScene) { - // Called as the scene is being released by the system. - // This occurs shortly after the scene enters the background, or when its session is discarded. - // Release any resources associated with this scene that can be re-created the next time the scene connects. - // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). - } - - func sceneDidBecomeActive(_ scene: UIScene) { - // Called when the scene has moved from an inactive state to an active state. - // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. - } - - func sceneWillResignActive(_ scene: UIScene) { - // Called when the scene will move from an active state to an inactive state. - // This may occur due to temporary interruptions (ex. an incoming phone call). - } - - func sceneWillEnterForeground(_ scene: UIScene) { - // Called as the scene transitions from the background to the foreground. - // Use this method to undo the changes made on entering the background. - } - - func sceneDidEnterBackground(_ scene: UIScene) { - // Called as the scene transitions from the foreground to the background. - // Use this method to save data, release shared resources, and store enough scene-specific state information - // to restore the scene back to its current state. - - // Save changes in the application's managed object context when the application transitions to the background. - (UIApplication.shared.delegate as? AppDelegate)?.saveContext() - } - - -} +//import UIKit +// +//class SceneDelegate: UIResponder, UIWindowSceneDelegate { +// +// var window: UIWindow? +// +// +// func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { +// // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. +// // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. +// // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). +// guard let _ = (scene as? UIWindowScene) else { return } +// } +// +// func sceneDidDisconnect(_ scene: UIScene) { +// // Called as the scene is being released by the system. +// // This occurs shortly after the scene enters the background, or when its session is discarded. +// // Release any resources associated with this scene that can be re-created the next time the scene connects. +// // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). +// } +// +// func sceneDidBecomeActive(_ scene: UIScene) { +// // Called when the scene has moved from an inactive state to an active state. +// // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. +// } +// +// func sceneWillResignActive(_ scene: UIScene) { +// // Called when the scene will move from an active state to an inactive state. +// // This may occur due to temporary interruptions (ex. an incoming phone call). +// } +// +// func sceneWillEnterForeground(_ scene: UIScene) { +// // Called as the scene transitions from the background to the foreground. +// // Use this method to undo the changes made on entering the background. +// } +// +// func sceneDidEnterBackground(_ scene: UIScene) { +// // Called as the scene transitions from the foreground to the background. +// // Use this method to save data, release shared resources, and store enough scene-specific state information +// // to restore the scene back to its current state. +// +// // Save changes in the application's managed object context when the application transitions to the background. +// (UIApplication.shared.delegate as? AppDelegate)?.saveContext() +// } +// +// +//} diff --git a/KssiusBank/KssiusBank/Scenes/Autentication/LoginInteractor.swift b/KssiusBank/KssiusBank/Scenes/Autentication/LoginInteractor.swift index ab11ad32c..bab3957e6 100644 --- a/KssiusBank/KssiusBank/Scenes/Autentication/LoginInteractor.swift +++ b/KssiusBank/KssiusBank/Scenes/Autentication/LoginInteractor.swift @@ -14,28 +14,68 @@ import UIKit protocol LoginBusinessLogic { - func doSomething(request: Login.Something.Request) + func login(request: Login.Login.Request) } protocol LoginDataStore { - //var name: String { get set } + var account: UserAccountModel? { get set } } -class LoginInteractor: LoginBusinessLogic, LoginDataStore -{ - var presenter: LoginPresentationLogic? - var worker: LoginWorker? - //var name: String = "" - - // MARK: Do something - - func doSomething(request: Login.Something.Request) - { - worker = LoginWorker() - worker?.doSomeWork() - - let response = Login.Something.Response() - presenter?.presentSomething(response: response) - } +final class LoginInteractor: LoginBusinessLogic, LoginDataStore { + + // MARK: - Properties + + var presenter: LoginPresentationLogic? + var worker: LoginWorker? + + // MARK: - DataSource + var account: UserAccountModel? + + // MARK: - Inits + + init(presenter: LoginPresentationLogic? = nil, worker: LoginWorker? = nil) { + self.presenter = presenter + self.worker = worker + } + +} + +// MARK: - Login + +extension LoginInteractor { + + func login(request: Login.Login.Request) + { + guard let user = request.user, let password = request.password else { + let errorMessage = L10n.User.Authentication.Error.general + let response = Login.Login.Response(success: false, errorMessage: errorMessage) + self.presenter?.resolveLogin(response: response) + return + } + + worker?.login(username: user, password: password) {[weak self] result in + switch( result ) { + case .success(let accountModel): + self?.account = accountModel + self?.presenter?.resolveLogin(response: .init(success: true)) + case .failure(let failure): + if let response = self?.process(errors: failure) { + self?.presenter?.resolveLogin(response: response) + } + } + } + } + + private func process(errors: UserFailure) -> Login.Login.Response { + switch(errors) { + case .user: + return .init(errorMessage: L10n.User.Authentication.Error.invalidCpf) + case .password: + return .init(errorMessage: L10n.User.Authentication.Error.invalidPassword) + case .network( _): + return .init(errorMessage: L10n.Network.Error.general) + } + + } } diff --git a/KssiusBank/KssiusBank/Scenes/Autentication/LoginModels.swift b/KssiusBank/KssiusBank/Scenes/Autentication/LoginModels.swift index ad46fc651..0501abf51 100644 --- a/KssiusBank/KssiusBank/Scenes/Autentication/LoginModels.swift +++ b/KssiusBank/KssiusBank/Scenes/Autentication/LoginModels.swift @@ -16,16 +16,36 @@ enum Login { // MARK: Use cases - enum Something + enum Login { struct Request { + var user: String? + var password: String? } struct Response { + let success: Bool + let errorMessage: String? + + init(success: Bool = false, errorMessage: String? = nil) { + self.success = success + self.errorMessage = errorMessage + } + + func toViewModel() -> ViewModel { + return .init( success: success, errorMessage: errorMessage) + } } struct ViewModel { + var success: Bool + var errorMessage: String? + + init(success: Bool = false, errorMessage: String? = nil) { + self.success = success + self.errorMessage = errorMessage + } } } } diff --git a/KssiusBank/KssiusBank/Scenes/Autentication/LoginPresenter.swift b/KssiusBank/KssiusBank/Scenes/Autentication/LoginPresenter.swift index c30cff6d6..b5fc4316b 100644 --- a/KssiusBank/KssiusBank/Scenes/Autentication/LoginPresenter.swift +++ b/KssiusBank/KssiusBank/Scenes/Autentication/LoginPresenter.swift @@ -12,20 +12,19 @@ import UIKit -protocol LoginPresentationLogic -{ - func presentSomething(response: Login.Something.Response) +protocol LoginPresentationLogic { + func resolveLogin(response: Login.Login.Response) } -class LoginPresenter: LoginPresentationLogic -{ - weak var viewController: LoginDisplayLogic? - - // MARK: Do something - - func presentSomething(response: Login.Something.Response) - { - let viewModel = Login.Something.ViewModel() - viewController?.displaySomething(viewModel: viewModel) - } +final class LoginPresenter { + weak var viewController: LoginDisplayLogic? } + +// MARK: - Logics + +extension LoginPresenter: LoginPresentationLogic { + func resolveLogin(response: Login.Login.Response){ + viewController?.resolveLogin(viewModel:response.toViewModel()) + } +} + diff --git a/KssiusBank/KssiusBank/Scenes/Autentication/LoginViewController.swift b/KssiusBank/KssiusBank/Scenes/Autentication/LoginViewController.swift index 423ebe994..385491b6e 100644 --- a/KssiusBank/KssiusBank/Scenes/Autentication/LoginViewController.swift +++ b/KssiusBank/KssiusBank/Scenes/Autentication/LoginViewController.swift @@ -12,12 +12,13 @@ import UIKit -protocol LoginDisplayLogic: class +protocol LoginDisplayLogic: AnyObject { - func displaySomething(viewModel: Login.Something.ViewModel) + func presentLogin(viewModel: Login.Login.ViewModel) + func resolveLogin(viewModel: Login.Login.ViewModel) } -class LoginViewController: UIViewController, LoginDisplayLogic +class LoginViewController: UIViewController { var interactor: LoginBusinessLogic? var router: (NSObjectProtocol & LoginRoutingLogic & LoginDataPassing)? @@ -78,12 +79,26 @@ class LoginViewController: UIViewController, LoginDisplayLogic func doSomething() { - let request = Login.Something.Request() - interactor?.doSomething(request: request) + let request = Login.Login.Request() + interactor?.login(request: request) } - func displaySomething(viewModel: Login.Something.ViewModel) - { - //nameTextField.text = viewModel.name - } + +} + +extension LoginViewController: LoginDisplayLogic { + func resolveLogin(viewModel: Login.Login.ViewModel) + { + //nameTextField.text = viewModel.name + if viewModel.success { + + }else { + + } + + } + func presentLogin(viewModel: Login.Login.ViewModel) + { + //nameTextField.text = viewModel.name + } } diff --git a/KssiusBank/KssiusBank/Scenes/Autentication/LoginWorker.swift b/KssiusBank/KssiusBank/Scenes/Autentication/LoginWorker.swift index 4839f9f35..9fb1e5fd8 100644 --- a/KssiusBank/KssiusBank/Scenes/Autentication/LoginWorker.swift +++ b/KssiusBank/KssiusBank/Scenes/Autentication/LoginWorker.swift @@ -12,9 +12,28 @@ import UIKit -class LoginWorker -{ - func doSomeWork() - { - } +protocol LoginWorkerProtocol { + func login(username: String, password: String, completion: @escaping (Result) -> Void) } + +final class LoginWorker{ + + // MARK: - Properties + + private let authenticaionRepository: AuthenticationRepositoryProtocol + + // MARK: - Inits + + init(authenticaionRepository: AuthenticationRepositoryProtocol) { + self.authenticaionRepository = authenticaionRepository + } +} + +extension LoginWorker: LoginWorkerProtocol { + func login(username: String, password: String, completion: @escaping (Result) -> Void) { + authenticaionRepository.perform(login: .loginRequest, + with: .init(username: username, password: password), + completion: completion) + } +} + diff --git a/KssiusBank/KssiusBank/Workers/AuthenticationWorker.swift b/KssiusBank/KssiusBank/Workers/AuthenticationWorker.swift index e40b5f94b..48e9ad788 100644 --- a/KssiusBank/KssiusBank/Workers/AuthenticationWorker.swift +++ b/KssiusBank/KssiusBank/Workers/AuthenticationWorker.swift @@ -6,3 +6,29 @@ // import Foundation + +//protocol AutehticationProtocol { +// func make(login: AutenticationApi.Endpoints, completion: @escaping (Result) -> Void ) +//} + +//protocol AutenticationWorkerProtocol { +// func makeLogin(completion: @escaping (Result) -> Void ) +//} + + +//final class AutenticationWorker :AutenticationWorkerProtocol { +// +// let autenticationService: AutehticationProtocol +// +// init(autenticationService: AutehticationProtocol) { +// self.autenticationService = autenticationService +// } +// +//} +// +//// MARK: - POST Methods +//extension AutenticationWorker { +// func makeLogin(completion: @escaping (Result) -> Void ){ +// autenticationService.make(login: .loginRequest, completion: completion) +// } +//} diff --git a/KssiusBank/KssiusBankTests/Core/Repositories/AutenticationRepositoryTest.swift b/KssiusBank/KssiusBankTests/Core/Repositories/AutenticationRepositoryTest.swift index 2d090cc22..ddd9d09c8 100644 --- a/KssiusBank/KssiusBankTests/Core/Repositories/AutenticationRepositoryTest.swift +++ b/KssiusBank/KssiusBankTests/Core/Repositories/AutenticationRepositoryTest.swift @@ -50,7 +50,7 @@ final class AutenticationRepositoryTest: XCTestCase { let modelRequest = LoginRequestModel(username: "error", password: "errorpass") - sut?.perform(login: .loginRequest,with: modelRequest){ [weak self] result in + sut?.perform(login: .loginRequest, with: modelRequest){ [weak self] result in //THEN switch(result){ diff --git a/KssiusBank/Podfile b/KssiusBank/Podfile index b17ed702e..46a09ef29 100644 --- a/KssiusBank/Podfile +++ b/KssiusBank/Podfile @@ -6,6 +6,7 @@ target 'KssiusBank' do use_frameworks! # Pods for KssiusBank + pod 'SwiftGen', '~> 6.6.2' target 'KssiusBankTests' do inherit! :search_paths diff --git a/KssiusBank/swiftgen.yml b/KssiusBank/swiftgen.yml new file mode 100644 index 000000000..95c0f5f2a --- /dev/null +++ b/KssiusBank/swiftgen.yml @@ -0,0 +1,57 @@ +## Note: all of the config entries below are just examples with placeholders. Be sure to edit and adjust to your needs when uncommenting. + +## In case your config entries all use a common input/output parent directory, you can specify those here. +## Every input/output paths in the rest of the config will then be expressed relative to these. +## Those two top-level keys are optional and default to "." (the directory of the config file). + input_dir: KssiusBank/ + output_dir: KssiusBank/Generated/ + + +## Generate constants for your localized strings. +## Be sure that SwiftGen only parses ONE locale (typically Base.lproj, or en.lproj, or whichever your development region is); otherwise it will generate the same keys multiple times. +## SwiftGen will parse all `.strings` files found in that folder. + strings: + inputs: + - Resources/pt-BR.lproj + outputs: + - templateName: structured-swift5 + output: Strings+Generated.swift + + +## Generate constants for your Assets Catalogs, including constants for images, colors, ARKit resources, etc. +## This example also shows how to provide additional parameters to your template to customize the output. +## - Especially the `forceProvidesNamespaces: true` param forces to create sub-namespace for each folder/group used in your Asset Catalogs, even the ones without "Provides Namespace". Without this param, SwiftGen only generates sub-namespaces for folders/groups which have the "Provides Namespace" box checked in the Inspector pane. +## - To know which params are supported for a template, use `swiftgen template doc xcassets swift5` to open the template documentation on GitHub. + xcassets: + inputs: + - Assets.xcassets + outputs: + - templateName: swift4 + params: + forceProvidesNamespaces: true + output: XCAssets+Generated.swift + + +## Generate constants for your storyboards and XIBs. +## This one generates 2 output files, one containing the storyboard scenes, and another for the segues. +## (You can remove the segues entry if you don't use segues in your IB files). +## For `inputs` we can use "." here (aka "current directory", at least relative to `input_dir` = "MyLib/Sources"), +## and SwiftGen will recursively find all `*.storyboard` and `*.xib` files in there. +# ib: +# inputs: +# - . +# outputs: +# - templateName: scenes-swift5 +# output: IB-Scenes+Generated.swift +# - templateName: segues-swift5 +# output: IB-Segues+Generated.swift + + +## There are other parsers available for you to use depending on your needs, for example: +## - `fonts` (if you have custom ttf/ttc font files) +## - `coredata` (for CoreData models) +## - `json`, `yaml` and `plist` (to parse custom JSON/YAML/Plist files and generate code from their content) +## … +## +## For more info, use `swiftgen config doc` to open the full documentation on GitHub. +## https://github.com/SwiftGen/SwiftGen/tree/6.6.2/Documentation/ From 4bcb1941c356c8e65524f326ca14e03e15816a60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Sousa?= Date: Fri, 16 Jun 2023 15:38:39 -0300 Subject: [PATCH 06/23] =?UTF-8?q?-=20Adicionado=20casos=20de=20testes=20pa?= =?UTF-8?q?ra=20usu=C3=A1rio/senha=20e=20email.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../KssiusBank.xcodeproj/project.pbxproj | 24 +- .../UserInterfaceState.xcuserstate | Bin 149261 -> 157518 bytes ...onValidate.swift => CommonValidator.swift} | 0 .../AutenticationRepository.swift | 5 +- .../Common/CommonValidatorTest.swift | 94 ++++++++ .../AutenticationRepositoryTest.swift | 218 +++++++++++++++++- .../MockAutenticationServiceDatasource.swift | 22 ++ 7 files changed, 344 insertions(+), 19 deletions(-) rename KssiusBank/KssiusBank/Common/{CommonValidate.swift => CommonValidator.swift} (100%) create mode 100644 KssiusBank/KssiusBankTests/Common/CommonValidatorTest.swift diff --git a/KssiusBank/KssiusBank.xcodeproj/project.pbxproj b/KssiusBank/KssiusBank.xcodeproj/project.pbxproj index 3498a6838..4c64ad115 100644 --- a/KssiusBank/KssiusBank.xcodeproj/project.pbxproj +++ b/KssiusBank/KssiusBank.xcodeproj/project.pbxproj @@ -59,14 +59,15 @@ DF0BA86A2A3C9CB700A812F4 /* AutenticationRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8462A3C7C0200A812F4 /* AutenticationRepository.swift */; }; DF0BA86C2A3CA9AB00A812F4 /* UserFailure.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA86B2A3CA9AB00A812F4 /* UserFailure.swift */; }; DF0BA86D2A3CA9AB00A812F4 /* UserFailure.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA86B2A3CA9AB00A812F4 /* UserFailure.swift */; }; - DF0BA86F2A3CAC7D00A812F4 /* CommonValidate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA86E2A3CAC7D00A812F4 /* CommonValidate.swift */; }; - DF0BA8702A3CAC7D00A812F4 /* CommonValidate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA86E2A3CAC7D00A812F4 /* CommonValidate.swift */; }; + DF0BA86F2A3CAC7D00A812F4 /* CommonValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA86E2A3CAC7D00A812F4 /* CommonValidator.swift */; }; + DF0BA8702A3CAC7D00A812F4 /* CommonValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA86E2A3CAC7D00A812F4 /* CommonValidator.swift */; }; DF0BA8762A3CB91B00A812F4 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DF0BA8792A3CB91B00A812F4 /* Localizable.strings */; }; DF0BA8772A3CB91B00A812F4 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DF0BA8792A3CB91B00A812F4 /* Localizable.strings */; }; DF0BA87E2A3CC4ED00A812F4 /* XCAssets+Generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA87C2A3CC4ED00A812F4 /* XCAssets+Generated.swift */; }; DF0BA87F2A3CC4ED00A812F4 /* Strings+Generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA87D2A3CC4ED00A812F4 /* Strings+Generated.swift */; }; DF0BA8802A3CC4F300A812F4 /* Strings+Generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA87D2A3CC4ED00A812F4 /* Strings+Generated.swift */; }; DF0BA8812A3CC4F500A812F4 /* XCAssets+Generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA87C2A3CC4ED00A812F4 /* XCAssets+Generated.swift */; }; + DF7D3F8D2A3CE0A90009770F /* CommonValidatorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF7D3F8C2A3CE0A90009770F /* CommonValidatorTest.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -127,11 +128,12 @@ DF0BA8632A3C9A3E00A812F4 /* MockSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockSession.swift; sourceTree = ""; }; DF0BA8672A3C9BA900A812F4 /* MockAutenticationServiceDatasource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAutenticationServiceDatasource.swift; sourceTree = ""; }; DF0BA86B2A3CA9AB00A812F4 /* UserFailure.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserFailure.swift; sourceTree = ""; }; - DF0BA86E2A3CAC7D00A812F4 /* CommonValidate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommonValidate.swift; sourceTree = ""; }; + DF0BA86E2A3CAC7D00A812F4 /* CommonValidator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommonValidator.swift; sourceTree = ""; }; DF0BA8782A3CB91B00A812F4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; DF0BA87A2A3CC2B500A812F4 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Localizable.strings"; sourceTree = ""; }; DF0BA87C2A3CC4ED00A812F4 /* XCAssets+Generated.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "XCAssets+Generated.swift"; sourceTree = ""; }; DF0BA87D2A3CC4ED00A812F4 /* Strings+Generated.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Strings+Generated.swift"; sourceTree = ""; }; + DF7D3F8C2A3CE0A90009770F /* CommonValidatorTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommonValidatorTest.swift; sourceTree = ""; }; DFEC18532A3BD28C001277A2 /* UserAccountModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserAccountModel.swift; sourceTree = ""; }; DFEC18562A3BD314001277A2 /* AuthenticationWorker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationWorker.swift; sourceTree = ""; }; DFEC18592A3BD423001277A2 /* NetworkService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkService.swift; sourceTree = ""; }; @@ -206,6 +208,7 @@ DF0BA7DE2A3BE5D000A812F4 /* KssiusBankTests */ = { isa = PBXGroup; children = ( + DF7D3F8B2A3CE0880009770F /* Common */, DF0BA84F2A3C830700A812F4 /* Core */, DF0BA7FB2A3BE6C900A812F4 /* KssiusBankTests.swift */, DFEC18692A3BDE0D001277A2 /* Services */, @@ -325,6 +328,14 @@ path = Generated; sourceTree = ""; }; + DF7D3F8B2A3CE0880009770F /* Common */ = { + isa = PBXGroup; + children = ( + DF7D3F8C2A3CE0A90009770F /* CommonValidatorTest.swift */, + ); + path = Common; + sourceTree = ""; + }; DFEC18012A3BCFF9001277A2 = { isa = PBXGroup; children = ( @@ -387,7 +398,7 @@ children = ( DFEC185D2A3BD43B001277A2 /* error */, DF0BA8572A3C87AE00A812F4 /* Constants.swift */, - DF0BA86E2A3CAC7D00A812F4 /* CommonValidate.swift */, + DF0BA86E2A3CAC7D00A812F4 /* CommonValidator.swift */, ); path = Common; sourceTree = ""; @@ -673,7 +684,7 @@ DF0BA8112A3BE9F200A812F4 /* UserAccountModel.swift in Sources */, DF0BA7D02A3BE5CE00A812F4 /* KssiusBank.xcdatamodeld in Sources */, DF0BA8492A3C7C8E00A812F4 /* AutenticationServiceDatasource.swift in Sources */, - DF0BA86F2A3CAC7D00A812F4 /* CommonValidate.swift in Sources */, + DF0BA86F2A3CAC7D00A812F4 /* CommonValidator.swift in Sources */, DF0BA86C2A3CA9AB00A812F4 /* UserFailure.swift in Sources */, DF0BA87E2A3CC4ED00A812F4 /* XCAssets+Generated.swift in Sources */, DF0BA8312A3BF03900A812F4 /* LoginRouter.swift in Sources */, @@ -701,9 +712,10 @@ DF0BA8122A3BE9F300A812F4 /* UserAccountModel.swift in Sources */, DF0BA8552A3C836A00A812F4 /* AutenticationServiceDatasourceTest.swift in Sources */, DF0BA7F72A3BE65800A812F4 /* NetworkServiceTest.swift in Sources */, - DF0BA8702A3CAC7D00A812F4 /* CommonValidate.swift in Sources */, + DF0BA8702A3CAC7D00A812F4 /* CommonValidator.swift in Sources */, DF0BA84A2A3C7C8E00A812F4 /* AutenticationServiceDatasource.swift in Sources */, DF0BA8372A3BF05800A812F4 /* AuthenticationWorker.swift in Sources */, + DF7D3F8D2A3CE0A90009770F /* CommonValidatorTest.swift in Sources */, DF0BA8162A3BEC4800A812F4 /* AutenticationApi.swift in Sources */, DF0BA8622A3C998100A812F4 /* AutenticationRepositoryTest.swift in Sources */, DF0BA8182A3BEC4800A812F4 /* NetworkService.swift in Sources */, diff --git a/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/UserInterfaceState.xcuserstate b/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/UserInterfaceState.xcuserstate index bfbeb560c83eb94b0f4842533a347c5665899870..189df510069efcb966ff954507aa7d4e81eaa087 100644 GIT binary patch literal 157518 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 OKfl}L|Nj>Z_52@n^>;}C literal 149261 zcmeFacYIXE*FSz|?)F}@CEE)1nh{40wN@I5U?xu z0xBw~0TByU>=hNT`#W>*Zgw{TKH+(IzQ2Dy`bx;|z4y$_IWzBb=9IZpt18NCYSYq= zGl;ht%)|S+UIJ94{IL#;-6=PwnjE(8YbYfDNRHieN#-uYDOeQms zxtbZo3}%KfLz!XBaApKEk||_nF%`^grjiLWRm>cwnyF!GnL6fr<_6|Q<|gK5<`(8w zW;Jsga|g45xrf=vY-Spm?aYJBL(Id>Bg~`B6UL0Y6kdSpOGg zL9|WM{y%Qfxp0C;;-=6_#6B!{to|&&*F2eg>B2GvYBiSo6B}%yR*I7 ze0Bgkh#kxhVTZCK*$M1ab`~3EtJqq$j$ObmVF`N;yMkTG-pJm>u4Zpz*RUJd26hj- zpM8jZjD3=QmVJ>u$iBk9&K_Y;u&3D5>{sm9?Dy;s?9c2u_B{J1`?+85)Bp&5sem25`{$NqM4#f zQCL(XnkSksS}a;3BBEO~ErEuyWWZKCa>9ipA0`$P|k9u_?!dQ$Y1 z=%DD3=q1t1qE|$3irx}6iryD}D*8(Fo#=bf8PQqMInf`YKSlqF8L?cf6I;a&u~Y04 z`^0{6TX8#advS_5U7R7#7Uzhs5_c2#6%Q7V6pt2<5swv56i*SCh(qFO;+f(a@j@{t zUM{{)yh40~_!jZ4;@ib{i0>BPFMdG$p!gy2!{SH8kBT1?KQ2BXenR|=_>lM|@$2Fv z;o#P5htir*D~BK}nTnfN>LFXBJN|4JB%NFtWVB?^f~Vvram7Kv5jkT@k>B-xT2 zNvq=%%Zq(E}DWRPTpWTa%gWP)U(WRfH#nI@Sosglf-ER|d%xmL1L zvPyE3WVPfr$(@q5lJ$};lHHOAC67uTlRPeYO7fiKpyUDpg8VQk}G&w7s;0w4=0>G)0;!?JP}`rb{!V+0yRP9@3uD zzS4fuq0(W};nES(ankY9Qt3=-jdY%LzI3salP;I8lHMe}S$dmvjdZPapLD!Bs(lSB0DN; zlpT}3Bl}VIlkAM_XW1{ZUu9=y=Va$)zsY`={Vf;C#d3*UC0EPM@+7%M?v{JxUU>(3 zx;#(bUEV{UFE5bymk*E+mJgSYkdKm&mXDWDkeA74$*bja<@4l=e)&W4$K;R8pOQZm@(<*v;t|E8ipLaBDxOk2r+8lRg5pKR%ZgVNZz)bHK31Goe5LqK z@sr|L#aYGgia!+pDE?K-lv<@lnXGguJ<5QxowAcMMVYS5P-ZKKDu*eDD@Q0tDhriG z%2CSE$}!5Z%8ANSWtnoOa+b12S*xs5&Q;D+E>m*K>y@jOcPsBvZdBGQw<&ii_bT@( zA5=c1d`$Vc@_FSe$~Tn9l*g4Pl^-ZSR(_)VT=|9a8|5#`KU7#HQAt%wl}e>knN(Jl zP32U%R6bQlRfZ~8)lJo1)mzn9)lYS`YLIG}YPf2gYKm&QYL==(Ri&y`%~vf@Em191 zU87pB+Mv2ewNZ7iYLjZSs$SKg+M?R3+Ns*Fx?lCE>M_-`s^?VCt6osOsCrHHy6TAP zgzA*)wCXF>*Q)PTXH;iZ=Tv{F{#5;|X4O))PHj#p)&M>(ndMH>ht^-=)4=y-vMe zy+OT0y;HqQy<5FU{eb#G_2cRT>Sxris1K`ORllZwU426Rj{1G|2kKANU#icje^&pZ z{#*Tz`d8a_Z>7(hd8KN1g z8L1hqnW&khnWCAinWverS)f^{S)^I4S)#dCvr@B4bFXHTX0xVV)1cX+*{a#5*{<24 z*{j*7d06v^=0(jx%^}T8nwK@NXkOPG(Y&Q;)SS?~qdBGdQ1g-IW6c+uFEw9jzSf-4 z{H*y!^Q-1J%|DudwX9aE)oTq}qt>J~Ym>Bgtw$Tsw$pafW@t0DJ+-~Gy|ww;0_`B} zVC@j?aBY!xsHrVVM!wKKJq+G=f$cD{CjcA<8emeUgL_1e3%cWc*a*K6<9HfXnN zcWC!&_i6WQ@7F%6eN6kf_JH;Y?F-sBwQp$~wa2vYXy4aRT~}QXT_0V4-PO9`x+2|p-6Y)< z-89`yU6rmzH&?e<$LUt+ZqlvR-KN{1yGOTCcdu@nZl~@(-Co^;x`%WJbWiA>)E&|t z*1f7bs(V9sOm|%Oo$h`&D;VcTV?*9_g{3)r<5By;5(~oAegF zRd3UK^*()9{Z;yI`tJH3`kwk;`ri6{eSyA@et>?Mez<;wevE#seu}o@4{(KqO~==bRF)9=;q)9=?mrhi=j zoc^Hxkp6xB2l`X`5A`4EKh}Su|5X2({(A=X>Cfx`)c>XbTmO#% z8(4$Q;4=gbZ4B)V9SkXkR71KU!_dW$ZOAipHC$!rX(%xCG4wU`GhA&LX&7x7W0+u= zXqaZ0ZkS;xH_SHF7-|iR4NDA54a*Fi;X1<#!wrVJ4eJc+4I2#i7&aQ}4ciSn4EqiD z8y+w`VmM&TGj=!jFyI_d z)*9=K3ycemOO4Bn*BX}_R~fH2-fXYnYx>Ln0lIenR=V@O$DYtroN_rrmIaOOe0N& zrg5h6rm3bt4!CMZZO?wy2*62=@!$irq!m~Om~{@F>N$$F>N*7 zXWDDpXL{81nCT7Eo2Iu+jizI!P+q}nopLwr&pLxIeA@dXF z=giNW51U^#zh*vWK5qWb{Jr@H^N;4A%xBC$n}0F?YCdZ|XZ|AzB}tQHNxCF`k|D{S zl$?~Al$F#aDLW}ADK{xEscX_zN!^mVC-qJmkTf)DSkjoJu}R~SN|L4~ElgUJv^Z%= z($b`5Nn8?1x+dw`q~%Ggl5S19Gihzoy-AyrHYe>&+LiQt(hEs1CLK&Vl=M>4%So>! z9Zq^R>9wRcl1?OjkaQ~P^Q145en|S!BDKgYa*M*Ew5TjIyGcDDY8cVHZv1N(nPRm-$ zU6#8o>n!Un8!Y!&Hd^krY_e>z?6%x*dBAeO@`U9{%ZrwSmJckaEFW4vvV3g$#PX@- zGs|hq=aw%l-&oFA&Rc%7GFD{8R)tk*^;-khptX&)t+k!Cy|sh2qqUPY#hPx-wdPrS zT6#T4SxX)>-FT=UEq7ud%MOUT?k4y2g6D zb%XUD>%-PZtdCkBvp#M;V12^+r1dH5)7EFKFIW#-->|-EJ!yT{`ib>Z>mSxXt$$hn zw*F)N*T&e84cl0o$R@LCZ91FYX0cgq9-G(Zvvsg_v=!L;*!tS~+4|cC*aq6Jwhgik zwhgh3u#L4%wiVl^+h*9xZ8L4vwi?@wwwr7>+itPlYFll)&9=sNyX_9!owjwh&9?2f z9k%_p`)v={4%nWsHQJ8Zj@#b0ov^)QJ865@_MYv1+XuFfZC~2Hvi)HD(RSYUo9%Zy zvSYj5o@{s6opzVqZTHx{cAwpE57^t;JKNLj+4dZJPkS%>0Q*3DiG8ZQ)Lv!}*{9j3 z+h^Fz?KADO>|y&{`(pbN`*rpe_LcTq?W^rO?Yr!|?R)I^+4tJ_+4tM;w?ANi(Eh0X zY5OzwgZ4xABle^A6ZUuPKiYq?pRxaJ|Hb~R{jB|*{k;7*`|tL@lSRpjWM#53*_3Qf zb|$-$vy*d@bCdIuyCz?i+%36#a*yPm$-R>MBo9g+kvuYaeDZ|kiOFTjq2wjWOOux+ zbIBz6n&fMfmnUDBydrsJ@{P%BlJ8Dlmt3FRki0v2Px6b&2a^vazm)uP@+--QlV44K zE&282BgtG;<1v*Q=X?~Xs5*vUGTPL(s@3_9C5+dA7h+dDfrJ32c#Q=F;J3}>FRtFxE0 zw{xKLYUdzlp|i+Y;hgQPbcUT(&NzwPI4>})m zKJ0wN`Ka?T=i|-;&L^BtI-hbr=X}|D#Cgnei{^k7J`H%Bo z7vn-M>|$Lam&~PgnO#XPm&@()xZ1heyL!9wT?MW_uD-5*uKun8u7R$rU4vZ1T%%nR zU6WiP*EH93SJ+kMTIIUlb%X0h*G;aQUAMSyb**;Y=33)g>)Pnr;@axE&$ZXJ&-JM5 zG1nWeH(hVJ8ePX+$6ar`PPpE2opinHI^{a;`o{IG>lfFruCuPcUH`a~+!nXhZFAe* z$!>?+>2|r@ZjU?Q?&$91&TwbCuX1;D_i^`iPjXLo7rUppOWaf4rS39!$UV(H-95`) z?Vj&m;3n>C+}FBqbl>FO>fYww?%v_v>E7ku?cU?Q&%M{Z&;6kLfcshZbM9B%huyEb z8{Nm;-@3nZfA9Xm{iFLQ_Zj!k?qA%$y3e|Q_b?ubN9xgfbRMh6=1KQtcrra%o-Uqj zPmU+oljrH`xysYi)6X;5GsH8>Guku8Q|y`IneSQPS?F2hS?pQjS?XEl;XK51jc0}D zX3s62TRnGr)_U&sZ1QaO)O#8{yFGh6FM1Ao4tZYkyzF_!bJ+8$=QYpko+F;OJSROL zdOq@e>G{g@ljn?A?p1h|UX@qv)p)gDomcNQc#U3**X0d(gWeQxsyEx4;~n80=`HjY zc}ICid&hXkddGRkdnb4&dZ&1&duMwqy>q?uyz{-+c(3&?_g?2+;l07T#(TT>4)2}b zdT)bwi+8Jcn|Hf+hj*uUm-hkhgWgxYuX$hh9`PRazTth-`d(!)n_jB(T z-XFX_de3`*^XYtgpTTGJnS5qnlF#C^`fNVC&*cmHI{G^KvV2{9-F-cLqkUt1V}0X% z<9!o+6Md6>lYPa$DZVn_EZ-bowQr$sk#DhYx$ipPM&G@@O}@>(dS8QYi*KuMn{T^s zhi{MXLEq!P1HR{dFZf>dz2^JOciQ*4?+f3TzOQ^=`@Zpg>-*04z3+_gH{b8RfBlSK z=9l{weuLlW@96L3Pw}VvJNwi8>HZ9Vra#Ny#h>TzS|X{7?9w^grc)+W(CIS^snX z=lw7EU-BREAM+pgf8amm|J?tD{~!Oq0VaR~IKT!(0dYVQkOpJ{Rlpdq1?&M|z#j+% zIt5Y!eFOah{R0C60|QqF1_cHOh6IKNh6M@(;{#IyC4ut5%)qQbO`tY#Q{d*nErDAD zs{^+M)&y=3+!44lur{zhP#@S4*crG#@Ic@|;E6zE;8@^z;O)SPz&nAHfp-J%1>O&Q z5coLoW#Ie34}o)m^MT)jOb`WaL3=Pc=mU33`LRpg-6)m>SFqb_sS5_6YV1 z_74sTjtGtnP76*C&IpzVX9i~lD}u9wmBBf|+F)I9Zg63c3zFdS;ELeN;EloCf_Dbj z2G<8S2kV0k!6$-G2A>K(9egJEZ1B0@^T8K_F9r_=4+UQez8ridcsTfK@U`GO!IQyv zgYO034}K6l75p%GI`~8I$KX%FGr^yOe+B<;!?e-0(YGt#>AL8 z5n<19dBwUwR^RmewA}pODOr8`^h?Rg$;wE{FUZPF>C!JZFDtEgR$gua+-4fsr|+0> z^{kqzlG0G0aB1D_P-ShjWjo_zI_zMQ83*HJT#TFXFkVi~NjNDdP&~A7WT>V#TwMaU^M3O_CAB5RIyco?3&INYc(9Mm|9XjFxqOd&KkSM_bBd?ZPB8PjGRuM?3^W?Jd4t^bGmf$q^D9C9G!elc!OfHkhbY-q$x-s234X5RFoSrjqM$W{Uxujjd;9g8`CZ8!_ z`Y?UrQ-9#Gm3xqThvYhc!WrRtLrdnCPcMPd3STvS>|Gs#G3(*3 zQMKh2<+bIZnla^NwKIg<23FQoLChgs9lNdRN&dEpqsv3{`h=#|O`i@z(;0_^W{0a6 z^sg?dni2ap+J~kVCP8z3%gQ5k<I;s$f0xM|$=-0j>>$_D4y z(r{TQ71|wCUYpu9hSb6Zv!{kDigg{Dt`~;us!KzWnK)`-+`R=eN-C#^YJgjXp$gzi zsH}-jv94nify4&#fxok=!sV5}2LK^O*(ALS_-O zm|4Os51{V0g6a1tC6r@o&fI-vA$xEPV zjC8Ixb$3{0#R6eLUf`|)<)P{l2!6pGbb|GrUsY0B7AhN98=4LL^j?^B0R_oWjX>BQ zchBt5@RHivP<3TtZ8g9KKxW*<$kL&G8&z3X6Dli!$t2LYP&<*?A@mvgauHH=j+K;G zLbQ*PYUJU44RiZuE~SyVlUd8$#oRq!K=n#M%dx_rp_<7<3y0LzQqbyMU0t$Z3*5Jk zSr00K|2TGN;V?cF;3fV>)bQb~3w|-OL^?i|fK=b2(d?z05vlKeLz1<+^fL!EcbRsb6^o zaFmDE`~^dRWe~80)ib!HrnX7m^y^|>(x}R57rfaj&EY3`i-N&=A5ENPE^nqo-^zvx{0mV^yzQMfBblAqc$-KohGRK(XTyHL)E8zNY zeYY_u0E2?eyUcrBKR}+&+(7PXIzzQ|jYs%hR2_ne*cQHtL3Yzz5N6@9N|>$XwAHd= zUGUO(_N}CRE2Ab)#3C69Dnl@_3P9c^RUm%~RkYpc5I$v2(<%8G*T0_moEt!=B<5Y#QJ5DkO6%lFqeew$ZXVbaXaD%wKXk))J zX9Wt;FMflm0>J(|^9S=M^B40s^AGbcVz?pPP;MAEoEyQ7ouHW~^Llv{=;uky zXwb?&UMJf?H+w-(LzmiKSj+HQFEz$rz{ZQHEa6V7b^yvRMJ%HEf|t4nAib`%wyqlF z>$~KA5o6$zHw~<*0b%@yjtknfOH*SPH7bO0QiTVTx*%Ky=2t`<$b@Www8)H-kOf(} z(cBnrEH`c|vZG|=Ku&HvH;J3fP5pm`v?zeuz(hhpZbCh3%T2r_UJlda%H}ZmKhJED z$&0GP;aU#uQmQP;-ay-qorF!%+iHzgr#Bc)=A_8}XJWVttO77BDUiU@s145wRrV_n zRg?)@kzY!ngQ`QN03gD$j#vz?kg#O)>uPJm@C?;mF_@|0WI6^mRw7Q)XjR+naa*s= z9NXw{y4)91)={} z>Top>Nl7i%xrzZ`h5G<6K_}4+A|5aK5pV6BmhSnFcNObwF)~Gzb1@1nukl>vsYB+G zp0UH$uRY`zY;ixjph-xw6U-Zo-ly`JNrJ&Aq z0;h7t^(c*-a>)q{3Lj-LFCo}tURvRo4AZ0Un@{!srN(!a4|@Cb!b@uWRVVp@*J~PK z0ho%aN@{0}gPnC~{s7o%G#HHI2f+-etI02^oK>tx%#gZ@+VZN3kf$^}dp4NKHJ+;K za9Lex$kVp-s2Z?9JC}l8TpsQ`xO^%Y)eAcJ3C#^v(6!W=$1wO@4I5%=u#|L;kxnTo zTQGZJ$+Xh)Ide{@|r)=tsvKb5Kbk46UuPEz0uoBkM>`+-b*g7?-m9P_n zUdGW#oyyL6W!yX&TQjeGTJ7{urH*L?SXEufRt?cjRui;LnJADa`vfs2hk$Lq1z#kbPr^ZK7^jZFW{H) zdyt9wGd_=hXGN@>b+8@TEXcp?#TG#BeL>|17SM?=t1G>mD7Mu7jMf}71P0sqM=!FNLUs-T`rXBC8JM-_g= zy0O3|e&QEZ)71*d$m?-1S}lF@`!{WBsQ&@32|I9}9QZe=D`I3_WhI!S`4!>PS@4jP zwiLO4K0KZ0?h@??e%COH=j#6ftH}9Xc<@{93to%bS?Z`hgP7KfXq?n{NS*l z^CrhERq$hh_txCxL>mdFGgyYyzeT;eeZsTB=@h#i47-6;B@dexr5U@%G2BAxbA4&CE;Y>qo51o)>W+v-2U5Yn4Oh$!@t4}og==&Y zS9EO;s*AeL&^iQ83J1tB=E4yCdOY#rCFRu(XajX*T=Jf17dN7N(VZN}5pL<&q8W5T zdeU{G=+!VC0L%dBZ}h7j{8!6`A-KAgQ6=O7w+9avaHgy|KK?Qw0oRxKp#erphwYT+zs4~ z+)dog;Oaw9peK1(-!0s&{|{V!tuXBmqL-*Gc8FVDk6z|(`;WHRYha5V`A@dknqhiN zX_GC+G}USFg#|nR=Qi1X-AqOT-d+RjnOqQ5Yr}K^yEGGaPFFEKA(}G)EYx98k1-nj zE0ZC_QO1-*RYo;vrv>0?=a_4ml~9jy3s|dbVQ00GsRxJWF4$o`$X8%I%{x)_!g33=jBK3pynbCWkJowReZ%o zKXf%HpOH{=F&^N2DqwdxR9jR*t;IaF5Ri!g7OjG1eJiZswP-!s*a+1tP=dm!n^~D# z7zHgwi9^S@KgW%Pl}rOJHFW9H@TQ(ox6<+~oG1Q9Xw=Bqw$XSelSB(%;>gGSSw#0P zqXk@=2&;(tTf^1hZ_%N~NKmu&4NF*|VK-yj%6RyOy>V?N&~J=HMQyDfmc$`YZ%c>O z4yda9=-WTv%1alIa02tE;rFC^}!8ksCUAbA1&l={^XrpHrnjFd~Yy2JA%{REQ38Ff7~BCey2;2kM~IA^O#Ej{z1 zKxzyX-B^C?@vDILm*tq%-O;hr^OSFYeOe)jMS{Pn)b30 zM+MsRC}-#MoVCP}Y>b3BTQPWk3sN{w0>&X-WlI_L7T8a~G)*8!z#q1_HIf&oET`SN z4)!Dy8H{G9os^?jNrIWLg=iW)gz3!{x2Ya{b5xbRy=P@wYzrSl_%BmXm${S0No zzqY=s%WilCU7%$Va@iKIw|l>ISEfg9^p)5+}=bQy~j%#KtL{cCRtw-E8&hTjqI7AUBAyHK4(0NL)W#%B~TdEyKY>+IsQ}mI&kv zL2sfWrV5RUYhYY|*aSfcIaJmtoHlS7gq?yuLKEn!oCrMLiYCR89u?vvw$wKYuF_Wb zcb@bXp}(b|HBlLGH(t*-LX>nmn$dc4%i5F*S6_ZyVd)2>3*Ss70isSXeD$r(HLli(G4k z5M9~UfVQBmO;HPqi~GJQTz`67!L0EnMJIE zb+Vn~i*Ib}d`a-p4)y$8bEy9%Daczh!@A{}m}jMmSib3mmA? zACA%(C7LXnBjQBYi`IxXz#$p;iw=lhhodk~!!a1YiCM8q>=viOAs0Qw1H~i6g>bk< zSiDrcQoLGxm$*T^SG*sNu6RxS9)Co|Sva0T4#!b+lw`pH6n!MaBx5DBBn#n~iJK&M zNp``(5{D$mC8s1`NPd+3A!VgW(jXiZkt6LU?Ju1mErY`#R!DD^-YwlE-3$l} zilSUmt*BEhR9vfA3r8F5gQEXtw;`mMUPx_aGi-P5|)b#LoF)O`&F=6~yTdbhrvK3$&+rQ?J3#rjJ9JUs_R;%lHJ ze4qYl{Y&~I`jb%Z{fj|jFdJNkwuUq);_hP@10~yG!+gWFhTEVtd#~Xs!y&^_!`p_B z4PP7nGAfNGqth5Lb~ff32N}m3ON}#(vyF41=z2MnTdy^)gA(igP*nZ05d6eg_!sRH z{*C@NetAqNZ9#9MleEC(7-~ev&~fxO^Co%+!k~9>cXDgFyC9wO?j7h|n#hShK&Q}$ z5E5O-Cv&dnwsPBqpeU`~D4bPZRTV1ZT?|4-6vO}{>6kRw1$UIr2+a<)yhh7kq5(uc z78uJ36{0KPFfQb?b%#xxRuiht4?!#^Mn?!O_A7x{+r?UMnW~wY)|9G=zCzzX6oXIy zMBj27no>2<59kcjp#lAfe&X)oHa4K2(J$P+Ts@7Twsfns)ND}(|AzizI&5Kd+EXs2@LK};)jHitySPG;XxGgPc8-|8z=Rs~x#Nk07 zZ`oJKkd39YrsqInYerUj6N|7OL-~`yB5dNeH?as?Fl0;C1A{i!V>`El%ZPT&iQRAk zOSp!5exOYk{I~7Le1tWc>&|Dn8~IcjT943_sSKfXI{V@urha!2T-XbF@4Bk#%K>VQOG*^m3?#ClXCaF~W52 z6Pi{64G8%jd^wsY^3`y95?&28eiP}{Ode7)zkGK2!lpzJy^!q@s^+Ov!5_oR@pUlu zR-n5uWK8IX7B+EcaHw)Rp9>N99iKX*L)@!;7#?4bZf1HK1u#P@PRX^$Gs!spePlvmm$U@bmZubj^gaNEzy=k%Pz8md^&IQ8K%V`-uCP1HLbq z2FkW;=gx^qtYx9Oou`-A(w`Z1Q#(^d6Dl88I5#6MpEUkY8cpp?{U4p1wgnJGq*Q7YdS=H7)UX;dXk_|3Hp(se+Ui`+@Ii?1TQ4`UV`@#{3OAr2nO!i3EP&i zg9tm0upz?M5Ox`1w{YnvSu1N}?QAlmg^WTc>tfxk2VKMZSU($JgKQhH9-?a@0V;;_ zrPN-!66hSJg%6S3=S0v1TMO1sZ75dL2P(6YFAI+3zBRvJpKz776Tcea>1cmq3ctzN z;eO@*gw(M!+&|pk-0$3932?}^W7{{u;d$=oC>-)qVmmXN8rU>8o%@A5+XQB;o5zY@ zDOQYu@CY4l1V-3A9_P+coZ}-W#{>Xjdr$!3eiNXg_x~I!qRp`dAe%lQlYVRuT7o|n zoV%bDAR7&`)ge6|#`_2N8^0vkf$Y_g)d!%}zz(EHV5q8_T2Wq_T3t7FK?;=ol~;l8 zOliufqt=hGPNGPXIy^MJq^7PWS~^q~iUUxgjbZF?p`a{b)zKx;z>c7e@*5hy&N^;+ zw47*#Y!M7wBAWd`mO=KrUHVkI1;I4^Eeva_4 zm_GcU^i@>p+|N&>cj+ThGD`(Aa{65ym!p@j6)r2AUye+(RdkvWq!#AcHUIN@7Tafa zzPL(i4R_)u>MA-Zp>u%Ekr~MQyHbQe&A9TKf~sllio3RNF)MIAKP%S4thk$9$F|`b zBa^~FCxw$BNApQ>54$loDUt~?CQgbibW&_(x3SyV9qdka7eOY1%mgJ7WFg2(kgaJ_ z#9J;=vBg;?(XZl+k?2=(c1ZNAI1?oD75khZQ2T`iDi|JuiE%8(O8h*(zCQv^@_DC; zDXA^^#~x*i*f-g?fPcr><8)Q|fPn;cB*;xU*oUAF%{llEdosqsb_976Irt$Y(y|}1 zAG4pZplQ4W`3VXV)TW7V>``ilK}*yQgXJ%zFo0=W4zW4V3beo@%7bqxXc82ls2Rz1 zh+c|c4$<#^5m?st!YpHd6V^a`VGT^VLTi8~V8BwK|1=v!Of2kg!VGU8u@yu}q=Hi< zL|DX%L?W?BB9e+^B00EHl>~JnD21R@f;tnFMo>CI83bh#ltoaN-6A#J4l+TJUStp% z;a@WYGRWrlhj4!$K|KlT1t*%I-ol2{9>Zn2?`dqdsk4b6}<%n_#>PAra24;omDh|l>;PNKW!SY5Ui~~7P&_J* z;t_~)20`T%k7oWCk9aFLwFV&eis8{NibuN%6f#BdXfMU1eWLyJhoBOIrV76Sk-F;I zMCJXc2u>ua7d=K$S-t20L7`S+($gY1kEB8Lj3|eoX#h(NqUV_v1Wkv-a`Kwvkn9eB zFHZ!AY|(}fi(VIS=rtaPW>Fk^o`Tx+76ibCsfCrySCB&neia-+6l&Mf1{58mHlXMP zpwUUuyA+M)M2x^n3P$q@n%5kRJ`kOXfl(bn;Y2X{jM=nBbXxSe=nI0X2&yKiCI&&r zXq^qTK?`lbzc2*K&myH)iI5Wy9})XR^s@jKd>Kx>2`|{_qVob+%oV_5!j%JymYs}) zg7X3t%!REty$^PS(QQl%b5V>atHmPLFP4a zElOauSP!@_Hi(U4lh`Zy#*iM-atu3WoH}keFU*=ar5B?H3 zuMJbkW4-*e3=oW%NfvkxMvb(s5@*SF3O$BM> z#|WknxDleZzfN@tF-#J~aQj8XFjWx4oq`y~UO6!&b}^pcQw4tC*^;rd*dp<4aV0F4 zD)Ai3*bTguw1uF%>1ug`poZqGtrgeBSi6~^b&0H9L|MC7yhOZ|p!Ec8BjlP+z9Nim(ZP7Ot`^u@AJH4)b>gjH zporItH;C^MZxr7v-Xz{Eu7`{fVCPnXwh^?QpdAG5BnUR`pb+;EbRR)`cZ;_P28wu> zc(-^D6BO^I2Fkvuf${)Bj}j;x1Ow&q{~9P)-arvQ2?mPzDT4M#3>5LRV4#Sf6Wi$z zLH7fs3%|iYNsUVTW$|G!PsFbf^kBXCRe~OBop~ZYDt-&B3-KG&Jb9R!Cs1p%f}lq( zWS;0V{k?n<^TZ!*_&xC{-aHY1z?&xrz&sH*QuE}I7Us!>xcS?1@t+odF8)INB`p5a z;&15U|AZhI2v|K&(Zvs+4mV%?--~~UE&i7YdOC6O|4LQmS@AjXdGT-J-wAq#pyvpB zfuMr~YD%M9B=KLuw&hu2+tQxKdMe5n(sRC|hmCmJ4G&k>)=h^fM#$4Hzq({$c}4s7 z5p0kk0SKO_K)`#ET09@UQzEqVB5f&FB6)F)k!S_dFI^a8Bqjl4UJ)>cp0)SCkD4`A zZg#G!P01gbT2WOUo(W2{<)C5~k;Eim&nw_9C=Jg}h0`~HdGo2CAj-m&+R*&ynX?j? zq&+~B#4Yhiyb_T1Rf-VB|`z1B;b^IuU-Q8yx%%pk`zitQ&`E7i~>+1=mUTi$yf?2r&_>@ z9+&!`{Yk*3XtR?gB|Iugrtqlr@g*KF*0p}gw?Hk)3~CEXW>H&EQb|$ki-;}wnP3b4 z&I11kCwfz?|t<1aq3Y-ua@Vi36K8 z0@!@tQWzU}Vcg65C7UJnR2aWRgz*#AAYhsQ)m$1|CEH@s_=BJ`iPG2u8borRWUpkO zWWNLy@6QCCCFmSM=Lz~PCXx-3hp8b6t^LXyk~AlWCJe&agprLF8)f(fgB$duiHkZ4X~4aPKffSxE&a?dJuIS2 zFTS$oe=S@oD|D(ws8aBANM*cmu~HE3vMaLaVzEd%T)~UqEIa06?1(K!sf?FBRz`qV zs+T%IwMz|BqtqldLw>nMYL(igc4;!f8iGO0I)e2C8wfTMY$Di9a1z0m-BPEZ+NEBp zkE(WQ5L7$1MpQd?5bOnsbtc&NU)6r)Rl773RJ$~bV2IZ8Q5tCuC?aXDG>`reY$q55 zNPmNJhc~K4#obGq59(don_y?Xw18k&>(o0`8(aVP0ks z9Hj6Avo5_E{6JwuCzi;1gA8? zk92~7A?*b9okHE(v2?T+3ohzdyf_a1@3H540eey}tXQPC2-uS*V9%=mTkN?EUc`aW zEdmIoMW@GI(gq4bcT3kv*Go4@?~!hl-U}ryo2B&xXA%t4ybHnE1jFRZB^ai6SAwr1 zxZ7^&mIwcU_+JrsnxM?t7pbbo>S{uhM)4?ySu1)(Ph?hyr{rzr?MgND%`f_uXL zg8l*sl0`**Ncu7bpqB{lT`zrwKpK0iLdDY8rEl>23n}b0yAe#IyVAEPg7j&DAbPYW z+S&=}y8`Z<c#BN@g5M*m20=O^hI>Ce(%q`ykf5_~nmg9#o=FtBSl!6Rb0^O1l%g9O~M@Sg5S zVkUpOK?1@^|K>AJ@DQ4D5;^_ge+@J;jQ}(wFAOv?qX0BT0?^F9!a&0hvPOsoTwvTW zG?5tvG%1P*9je~i0-DI2GMCIP^T@n1pUf`{$bvEu;TVF)5Wr$ZcTviCEAR9rAnQ7FRkrh#6=0YJ} z-Qj3s<7Jb0D3ML%p`;w3L{>xrsAX8U1(e82=|)#JjrGfB$jT{{R0Q3y@85Lra*lDhYZqFV6%*?=;QH+OElpN1uE_xic`_A{zI-wgl?ibLq1;gtc=7cWDCPCjxTZ0bC&=;^B@U3fvrtxD+}mzE$0Iyb;`EL zw!(baF55xp!%|+gtR#35oe&!dUeSC)?3V3`O^D?LFHW2g4}j-G_Mq$`*~79&WRDUI zns*t&9KnR(YhrVOuSJ381g+AJhQkv&-eTMdY9=Ae=rV=Y8PzfG%HET`FZ)1tO7@}bBiYBYPh_7Gyo%uK z3BG~g8wtLN;F}4)h2UEWUQO_AyJe>%I_9g0j`@!2m^D!yv$jdcZ1}H^`9IJxe^4Fs zC&9Nzb<97YW1s?_p+5xQK`=la{S7v2k}mp6G`UnR2TdcF5qwv@TtV>Nt+QI?8o3^n zhFnWE%{r=S-r z>~Ylc1Y zj`B`1?AcB5<^=4KX8`udGv!(GF7j+Sj1+clTL|7p@D74^Hert(+(cB7GzfYqDFJtS zSCuCqjl8FD^HzFuvtyJZz$5P?*u2}R&D(T*TjU~pf#hlV5P{~d3qz26qyRyC1PH3R z5)jlmf~SI?E_M=BqOyq%K885*kpklE83VzBQB@bn3X@Odq_hCkmUA2L<(^g*sfQ zWr7m11lh6iIqjE{2Peqm(Tm9AIzb+f3-Y)k$zqW#cK9c;<8geyPT>3FkSvyv@*b{k zp~mI6vPJUSU%Aes-E2zX-$C?B3>0MSY8#=u=d5CY5@-l z1qEn@n)Sn>IXVgtkQ2iz+7Br@d_(Zp&Co$%RG4Du@Fl??B>=R-4vJQhtZ*ot3YWr7 z@W%v$z4;lzrwRVN2_h5<0i{0?P+HHsjxK-<2}z_8KoBRSjYht_K(?qNQviuCE({Wi zTmdA$5dAx!8%SQ}7QZ3@!!~id+FGzM51PE)35O)y{wlmwT_TXO9XcohUB-axJP)No04nNE2L#!nR(|I0-fKV4w_S%L9I zSA_A+x)&EpR!kQ-d=^f-h$Ry7Y0J}MXNqK|7B-D7b?iWR`%+Fq#clKZo0s6mo{lcd zYQ8eS_!_T3!};MKKuS5EzO7f!%Lc{ zCcN7YUJOHt^`@`9tAuRfSc4M^_yp(S^aaLn7cHuS!;QjKgX#OhB6Rvd?UxQ-7zT$J z!$|;OgjGdTMT3ZkMdA%(Tp$yxg2j=s*J^g|;+JZC!X=nQ5tc=@AOq>1jEc7ai9n z+ImQ6OBZV^4anx?3BtGDrHk1 zrss4?O-t{R3$JbmmZxO_5B)tqpYlnY*@dU0sPMSrfbc3+SRw=S<6dVQdu5HV9w1Cr zuXu*QITGpP^T&-($;?fuO{@0zd{anDgAB7pDd|~RsaaWBkr|qunVU^JoSvGUl@{#; z2tzokNpUbnFj~9ep}^sZwcNry5KDOT;C0YCM-^{?c|fa6sCmF9Q>D{}u)*f$L8IbW zlg?rNgmon9oOh{t@Sfs*#RrO0iVq3vB&>_DZo+y9>uu6LVhOK7&<#|BMAd$LJxTPt z)|vumczUewA{yx&uaVe*ppmXj((AiLo-$PsY4k8TWsWi*c7n=WWuCID@+xIFWp`x{Wlv=< zWpBcEA#65ba|oMD*gV2^CG1s%?MB${gzd3gSs?5LmHm|ilmnTdauDnU*`9PC2s=SG zpRoN2JAnQ<@V{HZE58*~jspNyjwfud$W~A}3ATdD$!Hk;A#88RB%r@wBRDF8_R5fQ zI&1`$(+FEoube?xNCaq2(Ydlh8Rj>FN{GRM`1`_^PB{lQf^5H*8$o%Vzn3XeK@ojp zw{pI65x*x?E~I-x_UcOzXaV|QZo!^Vxt#SYS14Cf41pYL9`pxO&>u_KG0h?52IY-0 z2pL7#A&C$Iw%s=68s+WEJCt`S*AjLpVTTiT1Yt)KwlD@Eg!cl`)`XN-9z%o}`<26v z-2!$LT?9M!3)nIG|IMZ_VQ_Jnv0uQ9(O{kPOc)90=UudRP17`u*McNi9_WVa17c29Gg%W3Y8@WA1*ZY zRrvyE7hZ(3{RPf07C1ZVN^mwh^<&+O<7Iz=my0LScYzKssRk1i5U3?*N3cbzLRArP zcC=~?d;e#yY!VXEJnt|0ecsRe53rZy?wvbxXTJB$nVB=^XwCvn zf>dogXwKZfYUgFn@2J`{Km%Q?wibm?=Hkq{%=*k2XifsnDWEwOG^cgc?@{91q2^?1 z?$FZpo&8tA)6=qBW}8&|ryrp9kCkeFgH-#A`=jSf$V<;GIKjBkeSzj<`P+f%tW^# z+cHzUihMwGDOuPTkElXUR$BYk%-d0g%*4)Pb29S|(4epHzNnCy_hjCW8erzVxU8?a zf-LK2?o^!ynk#!+)*n(99_Nr%$U~KkAIn55SoBqt`GlxKCQ*gV+?hZf^vZ5JXpJG- zEcxRc9&4;$NoD|Xyt=NTsrFxntC{He3<`7=Kdy{()vEXl}!einzsg zf4_fPqt?_R`tJwL?OhsA>%ci+tyAmLy0spySL*`}0)HoH?g98hiR)&EMv5XaoSRCnYLV8p{>-8*B+sr z0GbCt^B`z;f#xC5JPevgK=UYQ9s|wepm`#tJyH_O+9}$p^hv6yb~+KuPby;h8PMz| z-Xu^gzc?tC`(G?;k4CYqtp&|fvRKyEqYPn7v`ff`>`~I-0zEmRShma3QQM$xM6s+z zJ^b0Ewh1)P^-U~e5RlaT5%fW0MW5kaUTSpJSGT-fyMcIq?fFYwTT7V8?~D<+O^n=y$+gp&=y+rULt=E@pMim$>xgA z&dE>nBwu@E^eg3`cEz6d?5^Z?1;)e0+^*DKrM+6a1vGDf=1tJN1)8_FsnFLSMmr@g z{g21$lN|fcLO1rr%|Z*wM|8$Ny>^YbRD(-TuCCvT9vIOtd|lH@EJvWrmtt~UQmcqb z9(YB!g|;r2h<7JGl$EmHpuGtL4QR2~dN+yw@{Si>UlTK)rUp6m2YF)U>f5zNGEL37kmt?PLUze6T($2ZHZ)@M}c;@#&^K~L$ zdcF_I^L?bn(tiV*|8zXxXWFlN%KB@}`diR^OS1khQ8G8pcX-^H(gKN6_8+ys_H={a z@CJW?=6iC3AIPh#7o!U-Zdo_iDNN0Qrj%XHE5m@X>D3LC(^X|7+j=mF{#w2ZNY4&RHHZZSbeE{ z(Ypo{#|uL;wK~1QXfj)@HoL>=a(lc!zb_aHN1{WA4IeS`poLSaXQLzZrZwZqKnzPV zBi`D8%o=NyFVMvXu3yKRaVeCzSto0&cv)2o<~9qROIKA@%pt#$WpZrtDb?fS%`F%z zf%tP1SA6YwQR9l*M%-Rq-zlqnbXr~BfJ+aeOYbSwV%&$xwJpoh|FV+xWHA+S!`=~u zp@TNeEnP_IwZ|9HnLdR@z}O7(W_{5cs#&=&v6yICiA(fV71C23(Y#W84C1N1e(fUV zx+!gBjXIH$pb{*{Cp3J5Y#^qM34KDH7-G;Qn1mIB#qap;W`iv&I|r9tM->zvI<|b` zQPZnuEnHNyI5soVh%V)E&84EKXnbx#aY+`gpcP~l6c-g{jV>sv$SNwzt*EFd%df~Q zu0(TIT;K~76$kQ)iVJbouV_>t7ystx7L3Mq)WX8ROnkaAqnivPRTEV$_&2Uy|Z=;Mpaak)3YD61g1d{kD!`0+(qrMaWWXBFfZRF+hfj?c}{FOr0<;x@cv z-EVJE@#vBWWl4Vdg7u^o#pUqa(?W1 z2P1IeA~!NemYRt%K#jrH5dcXkcp))UIPCDFYt!$Cly&>jWq7)-e!-OL4!8d8b!Cfk z*B0gCpZucO=+VWw7~RgOa;YL1B`;r9tg1p3Pry!gvueBQM%5jv2UIVrzEJ(F&QKqu zK1@ANy%HlVo}%8Qz6fIjUZ&oxzFd7Jt^;mSx2w0QuT@{K-l4uxeY5&jjD>fXdbj#z z^`99&45PFjgPh!*u{-0HjJGpB!N>~#Xw(=}LBRM4E?l^*&>W$erkSm&(Hx^`&@^gR zYMM2zn)Mj>ZinVZ&CQxyHLqzt)_kG)P4g!@Z5~EVpz5h5)H3QA>NM(VY8!Psbr*F% z^%V6i5#K6RhFba`U!E?1C{!hW5|t#3zDA>jo!r(+GzYTjW-FdzRGU$9lHcUMM91kY z7`8{p>jd2pU8YW})9Lg&gU+Zk>CiUk7ts6)n%_W!b2Zqt{0W-BK!a0Y{{W=|O1(p8 z)!B4*okKNT=hC@#9`#h6Pv-|J11KX1w}Nm7c1FSzAiN90d$^V)d;r3SqE0Zqt&zN| z=JED}elwl{g zTpX&mh*zL3PkoIcml*fpj4LtCkJWd)zS7;wFp5FFcy+vW9oetajN(YI$Phg7?bOk^$KnXzUNH_08+1af+rH3P3WsRY*rwd4> zptq9xu4OJ;CnXfq4ecpi*Xv0JN`c4d4n;*scL-2yQa2VTE|K5K73m&bDe4?$x^f~A zNhF(a>Epfymv6Z5S)h0c*-G7biOyKNt`bdFi-zuPnBy|&k%Itbyyz5lm zG~H2i@xCps&1h-}6#Dx=B)7P%Ft22EMHYrp!_K2}RAE+Gc}ZnfWqw&@Nl8I&{^*jt zn)u3PP3VC;zM>6dSTr@)tQ}ocQ&b=or&>2dRBq&VNRr1}b=A6=s?8|nrQel8&eqK( zg`5MFKB=1rlz~wGKPrP*UyF3*ay>n{4eLqCtyYJ@wyxJL*463ibupnzw^TD!7uOvF zlnE#^P!^!9XgLX#E%7H%cAy;B>l$<`bd4B-aiwmRu36WjYX!;))VV<22Gk=!n}99@ zx*mj!LAa3=epnYWyIh02G<(ZdbRdPX*=ie_(4qUm zy{s(r_o}5(JYIfpR5v0F(zK^>xf>=}r@;#VL1GqdL4%L(p`*^JulT=rrV4^Ujfuml=#$PK$QVC6{u-I9Ysz|CvfGG!ie}xZ)#E+ zJ$(*)h9&W(Z5W0c<+?&dB>lB?Mv+8$fT3d0%S}x55%D(M8 z8H6g0q(rYmai5jGOHbt+A8V~!Cf-LWTw$-*OKeU;yh&j@bX1Ig)@wR3A9)kLl2b>? zx>m!4c&wQW)7I@*A9=mzP>F$+Ti1y_F>WW4?xhhLeUXOW&@i zM(X)X9NRQtT!+TiW_%-J&C306*4;|(e+y6}k~$PZBNO?H#7oH&h~2+(79}VZ*QNUB8krYie$pn?Aol`e}B&zIB-tyg~OgPCo0N z0V*$%HG>Qp#2EnH3*_u>phhLKs^?Z#OD9PjGTlC)3Q07`V9nb4I@CZg^dpHGNt7HM z`o)^#bwpvQZH|qR61}F{v{m=I?hW0WfU|5Ew}C22WX-Ld5s(^iKK@j?7<<3ky4E@P zvpBq!Qoc`8exUnM_YqLoH6IGp*hJR6Jhb&B8gg##+(NV+7XQpcb6)vJrQ*NPeT`Fd zx-WHK0d+V~gtFnpX| zrB~}Sq%mWs%gLfHP?LcgFXp7Da0*mU19b$>uS=SQp3`TdN~Py@&*+B$H36FosH&}c ztzM_s19c=&s9j7-lvFQ|t(z+j8_5g-4lwKEEh`&p$!pRfmRe@Z>MC}HlSN4;Y7Kh3 z-m%|vwCkO!&HJ5`u664@=n0fOwIU7o7e(9jUcFE6Cv%#;UMG)&C-0vgUCrTC*#2jg z`UvVn(rlJ;BB~$S^~4B0Mv2|BB^^&zpQX>imsXFjU3F5A@7fIViWQ{a`<~=UP5Rri zW{gl8YwjXu^ac77oDJ0%>WlQndIWnWP_uxV4b+@%`Z4-L^oQzEmz)dK3ZPB^>O_)X zNzZre$f&dx6~V=5U(~Xn?5Qyv`fq8ci{Z>r6fBFc?4JCfo|8)hk`5UscShrSzPh8J zqJ+mmiS)|gF8Te+t29i7{s`5`c73IOJW!}z&TrRG(4#`U0H{TzLOMEyjyrV}CjCaG zyS|R6=;`{dLU@mU3chfc=%?Z+dpa5XlsC0CqVl*gZP!<;Hh216 zDgR9Ue3an&S^C-fIg$jg0qSU=YGnzoU!Y&8UxZ=5@!Vpd>Vb*@g^K(!{VBmExv&H! zkRESc*I88Smv@M2>9Qtr*-D_6{1;+c--=Vd`ZoP)pimUW6IlyNQ7$Vi&c^>>o~)Nbv6y4e1W9q;Cu`twO8pQS%re~whiO+euz ztWqlZ0{uq)CjEu_i-2kdss$))Ml9>G{a?wKcT}?UxL5CAzgx)_+kk5OZ|e6t?9BAn z>r?t2K&=64El}%7a{crffzGe(BK*D6%)mVS6~jj1w4Yq}x02i3roUZ(2T<#QIu5Ag z#RgFN#CbRum2Qi?V);k&iE>Y-G|K(@2fH=OLt>*OIvV9s{nMmT9@9Ure?n>$0O};5 zPF5P_8U3^R=PP(W-G=5s3t7KcZ08il_f%gFyZEd4*y2#w}BM z`T3QdZ^TPCy0F`gMvo#B+y&#aN{dF7Wfc@+*+!QX7iX0fl@t}`7U!3jl;n245e_ZU zri!|_+l}%@jj9|qx->7VsJIL#&kHLGvPw&fOSAHE`xwrWksa2l>f3?n)> zj*C5OCFSqxgo*>|e4wtx@YjYBDm`=`zaI zYBW`n=1mQ`hCG~uMxCtF#Dy|2+-k@-j3T<&0lx25+cFdyiaTlq6`iEKP-r-WJT)rj z?L9oTfijc>B|X?ipti~nrk-o4%)ky{oAMYFbQxtCXk7A>QvVYTlRI*o0@O81Zby;a zrUP|tPr301)U>4BE(Gejj@;&x+^$!0TSRgrb*AK2YpCnU4SVk$N^VO@ZrB;#&{J+Y z19nhSZWjY}V@GbQNNzVNxwT?$YP9T0=eEYMt|PZ&fx1P>?Rb(KYKgb@l$*IDw@XQG z(xAX_x?uyk8H(K7lZG>ay0eSGFq|j7Rd>`FruK)8Qx2Ii&c=xKEsB?a!$!l!s*zg_ zn+z8kP?FsR7(0u)XRGQo!=;AH&He0j(`Z_TtxRn;?UDl4jHOr2g+T{)?; zd`8vODK!%-=k|0#<(z4yh`w?`pxYg0RaIA&O{$!Zw;}fs1+(F5^{Q=#Erz6_-LMs? z`+&M1s0V=Bl~^r(e~oI>7BsRVK?)7mV~=4#F}stw?3|)b7e#MC!akCgMq{f%v zB)xR?O(^mWDZ?#zJx~vlB-WW#;&oleR?^jXU^h*!HeiL2>w$WRBni)~l4jAxgmQ>1 zoNSAA${TOov5b_Ln_qBnptt~6k(5T?X?Td#`2&Ur4ZDDP6sX66dUC7bVZ$Q^{N-t& zJ^<>st{^-mf$&(3kt$NU4xCPF6Jtq?N1YgTeH^uBi(!xDQXSra3UeE-KaZV5x|-~c zNy zO??|$C*Tdy^dW1%8UAQ~?m*SA@?afxH-MS-+L#?x+r3P38!ZzX@c&;8)Yj6R(-2=Q z*8oyKc0V}C+aQ12THCxd);d;N56Z&VuOXHdZ)zb|WTlsjhPE~}HPkIb`;(Tj9c~!v zTeH*WvqiS$nWD}**7K4yc><-0zMC|eQ%+1_|F04r-9f?_6r_~d>9;*C6r?Z8aa!}B z(w23Nb<3KY8k^c$$kn(yHz+3d7qNq4;{Pf+{(qC0*dvLFr)rFvle>utQFX|kjD2kO zc-)sjUarHJHaE4cBr6bO$@v`R{LnrtB19b-?7?L{r)BWf9DFs2=C1VM@|f{u!+W?d z!tjdWRl{qB*9~tN-ZZ>rc-!!f;a#Af0qR+xo&)N6pm0uaH&8DE^%78ffZCffyf5vG zFnl~@g5gtD)bKg(i=g(&`ywbbF+T#RcX3|?_1@sVi2mOfVfcki5c~?%%ksVm1MWuN zX86T$>J^|~6_2ka@{F2hgVx}YM~p_=$f|5fBidcPku>5gQy&Ag88eM~vb&+! zs3UFT{sJ0P0JizDgN$ zBuI^;hD*dAvNMc-#0R(#wvu=cqC;u9%;n& z?QcOnjvT4)kP@cFFh^BboZ(Q2T+Pa1IHGL_~k;hNwxUx$t2lvqDK*Z$xh(xTDgzL*Rv6b3FdL0c z#+AlZ#%5!SvDMgSTy0zf6i#6O0o0#B{RPzDK>Y)>3TQRZ89-}N#&t57#~V*Do`_%q zf=N>{m^2Tx4ro1sNgD>i8~`xSBVe8nG_8QSiGX>b@gn?O0yG0OD;_b5oYDT9A!rz( zH2Iars|lJ{0WBnrTYw(Yx2j|2)wg)s>Uuk$;wqy})boiCb zZ!zL_W5OspYDODJV{bQ6(%frAlcRRyeZmBw&FF`+-S~jyYJ+iQYqIH#uw2x&-kSADdW?|XN=DppEEvhe8IRIFvdM?2igI& z6KEIEZlFCtdx7>{Z+ywP$GF$HPj#B{72~VM*HlrU{Xh=|dKl2daf+E90rW_q55gA- z=b8WCalmN&7+qQzKQVr4{0!&-&>^5BXbmL!05pCn`pTn&qOUySTM_pRbn%rpnz%OX z;w!IYbV-4@V*$P6W#=od6^jZ>&`DhvS9yiGxaB780?_!alvOzGmTxppBo*e5Djp?y z;X^lkm=(H4EX3tO(KTaH0eT(mA+OP+bMewHdC6}1l*jr($}1}7Wfy0`vv38F6g!{z zfE<;J^WgjY@H75u{7o|SIj|4EPJa4^uSXApd4;*7^01tRMWc(+OCsL61YIC1J`mB9 zU{Sv0rqB2f$_*3B@q^LtUvA!!Sq&?*nr12908Erg_g^Dz(wht>qj8_fY_gcFCL2LI z8|XuTMk#@P!dRdW2YMXPrG#m5Il+Wpe6KONO&*iix)A7Mpi9zh zn8H#e;wDtwLq4N7znjIl3M;wZ%q{NGJtT3v*~JqjI-33hDkZ)rzz~w6XpNN z!>5wfK~h!)>8$p1MA?77JWV-LRz+e~1MADvG)l^AbULpdYp`E@d76r)yvC&S+OG;_ zAEo~zU!MEFo2EleW2JXf;+RC2HkAU6(cgOZqB-&aUNrMZ=Vlib7KyKH2|E2ODU{w% z(-9qal=~UeMAH=P|4frilYuS=y0YCg)ie$0BY>XOrT;U{l=?s1SU36qy#JflRNs?9%Qy^*8iXnP8n+CMY6Q}>XUXE5UtK&Ewj_XupUxIXx za^rS@IK2xJ)Pity2tu)OvHP3AkcY_mCT6zl5 z*pd}MR})j(Uy38CTa>15God=(Zdz?x1N2m&r?s2bnT`eeD4@|)f3{rASyHAmNF!kv zalkU6FJTjyPO33@yIit=-E1|TY&wNlQuKaV&ju9-&R=_2 zNbtqk?4l2qYP-&~gOISsltK)EKDym>L&lvz*CyUff21WcdhihOm}xZ zai0m5jGGOI(O+=!A^*voZQ5meNHf>;i0M(&W9-MKCrnS8o-#enGzz=fT1|Aw>89PL z7nwIqdrW&x`)JnmO6EQc_i>r&jUf#6y6J7xJEnItN0{Ch4Acy|-1ISbEt4Fwi(aMK zXZq6gmFa8KH>Pj-;rwFL_og3AKbn3r{cQTh^ed>*^9A}gYep|#K*xYy3ThlR#(~DS z2!pxJ1iA_6RY11@-3Dshx*sKhZgCGJ;(~7ohJ4EedOgs`1AQW>HvkRj(FY@rplcYQ zPexy~pvKEi1^RTLH=q|bpfMg5hNiCuHNu5asZIkmZltUSHOBuzt@}KnF93QI&=&!H z2?hbe_%T3V2K41XUkNleV-o1CKySx-GyQJ*!}O==FVo+qf6OYg+MHq5m?<-DX3VUa zGxKJ_Jj9%7)|z!@z1d(knoVZ2**hLRbajWHUn5Ium=G<4lo2U8wd7yU@ri6JFxcx`#iAk z0sA9xEO0L1vVkiDZZ>eo0CysAn}E9(xchPwc?7;5{YFUb*&P~>=-qC=O4c{mr`W^>C6@BGloJ>Aw>FH=^=% zsQ{<+Q$wKP7Mz;Qs!s=ZwjFU_0*S3WjVXQ-i6L`IZZr~&3%3swn!y9x5jXEzq|{b zwZ&dKsO?g=xJzYjzhv8W+j(~gQc`{!`%6hfpFpBPb4yOFF}s1xv|zxny4r^Lv1BW_ z?53lobN?fGho^BD%;J7|;*JvhOU8FdkB+-$pkFfX&<^`T+<|)|DcB;7n{fK4LSzB_ z?^?-&Qib5$O#j4~6g#9o=Poa&T~T9b=;!9>a}gv%fBLE#!@_Shp96gz(ANWv^LIOdz5(bP zfxZdon}NOs=v!0fFD3g4^S4Y6`WcOye<1b~w<-1$cYyjG^zfMj^gV;-6a8;KVNv6} ztOX5OZkNp`EHp7b`%68Qe9-cYc*ns*+Fykw)1pJG35yo!JChbY(0BFCYQkc+*hH%d zi&eCmxEl=~m^s91Lj86(s|k7b*5a}FMI#A|Pc)Law=Zd;mRtnUGSo86GTbu4GSYI8 z{SeR(1N{ilj{^Nz%91C6XeqQ5S&CIrO9=t-aRtPu zfqnt#-GszJ_t4S;LUzltrZq$|peGvi1=6vRO#Ye}sg7@Is7D)c+=tig>ov`_D<{R# z)0wzJU?B^B7F_0fLLqS?l4zO4++mqQY)5b|`$wRk0`&>#9=gylO<`n)WftKPr^ug4 zT5vl2**@|(-?B*J5rg>P`uuaqmIWO>ybbj8-FP$#8^Ys;N;W)(kxI@>EyqZ7V)U6Z zpkM0k4oaGpmi2_rRhDK;i>1}lW?5}nV_9oiXTim-y+H2+`emSB0s2*-UjzDepx*%c zO`zXOS&ozGOh{tVatfjIZH3PF(qi)CK`}W1Vsaya6W2rDQQ*8-6qA-q4S!j1<1RKA zT3M4L!s$~Q`zp&8f+jAPyq~n-ipd9kM0304It0sd4SH3gKSVm)E!P_jK%;SNcTs87 zq_ex(a+}2Cts;+~5FRDFw2!(GtrYPd%cF$HdoA}_?zil;JYadyvdi+2mj4hWza>bL zpy?Rp1d-HS*%OjVUcXqxDC-p#On~z759Bcuw@kl{$qvM$Rb?H5JX+P(46DXUS!pX{ zWv!f*w+cZ21@zxQ{{xH)7&R~%z-WM>fT4k5Qr1j~N2`Gi5jE0kK^_@a=8@qcBPgno zjBXIe{>RZ8LL9AOV9?4|?9Hu15l0N|A^ydRm;NeF&#YP29K_I?4UCYq<^t14(_3qS zwHPt979xgBCc)4;8Zl(FJz;3ntd~i&9%d~SC8Kp5A(7D|iPq7CM5epNu9D^m>vTfm z1Z$P`Nb5xFBFIK3?5J>o@>2~ka(W;eCq|)jn+-p3#}JfFScG{ zy%d-zFhhYE1`HxL0+^A&90bh4z+?fFow9D0NxVwZ8LjPvL@|sl4r7=+MQ3D+21y(M z5^o_S-U>{vLgF1rB0WPrm3%;bJ`SzPAw9IV-fw+?u(%VL{G|0kU`F+k#Ye1<6R3)< zk0FS_6cDJM6rn2Y29;4=rLg#%b+^Rg3nGify(Lr9ylf?#46UzNU$wqweck$o^-b$r z*0-(iSl+D3+z|H96MIXhr198>A&EAx&1du50=A$nWDDCOwx|u|;bdT@ z05cVsX~1B2Jsp^8U}gX_6PQ^k+i;0Q+re~-j;f-zTteb(g~Yj_z6;bR69Kts5XJsS z(RLW3XhX>`M@G?B)+>rtwuuDABY~Nhw4qtw{63;M%~ma;I9)_>0bvUFAEM5;use#( z*9uniYzsx9Xj>qnSkqfFB~6{Jk)T*_i`kagmfDut;mB%W{E zNJzW@n8u`S6EIDEB=Hj4W{JehL=smLq^=N2T-A+4!$t+Fq-~o7;#LvFmflh+X;QX3 z35YvvH`s2p-DJDjc8l#++ikYnZFc~J8t!UfP{Umd%sOC>1!g@k#{qLZFejvJcgY~$ zCxiGP0r5lyL`Z{p>L7>%0OE55#OHxYC?LK_G{uwnFUSYfS3t(g(lMP1MM--An2Y;{ zp*>|^YQ*blXjwI60b+&<2Z~AuOVnb$!x~ zT2`u$EH1ZWh*=!8*iqj?k+_3EwNhm9hVCq8>{hsHv#*s{TqCl0Q*X(XG$+{6uWQPF zqCH^;`$_hb?WfpJwV!4`-Hsyh7GQ9);5J}x2L}7=JAt_in7e_w2bgtyihI!+s+n@djWXNZM}#=D|Lac$@uBiA1z| zK@xWnq|nbSj#(b+PNGI}WMSWF-zAawph)5)y(LpfeB6#c8&dWs>`&UCvOjHq#{R7R zIs5bW7wo%%c?_7xfq4R$CxLkin5Thx2AF4oc@CK8Q}&l+5?_`{e4UW^f2)jH|}hNwLPIt;>`&vmCewKjoP1nB$o1nCF=9Sm0RbSmda291YC3zpl9G;N2%EntZ2qB0Nmez8<^Z6%mY|8V9KS1Q z9*1Ze{>f-3AD~`K>=h4b-O+Kf<5Ys>DZu=hbl{ZGUwy>#OvgC{s$$34Vvqedf$BUF zs(-pcWz2X^;p#%iB@&Al6Bb!@Z^@K2S30gEEMDcf+OfrvbhJCRI<`5sJFanD3#jKsdtOr;xus&e@DaW@mh(E|6{z5l8qUH1vwAkU@&@!s8lIe1WokK+;ol%iU^mljQWJ;QYofyR?<;-$sJ9C`5&OB$n zbCk2dS?DYR_F!PMfXxOr2iRO-^MK6U;rR3X{J29X>9B&QH0rvh87AUPe8v|MT_CLgq>MT2|kn3j&txz70n$9ce(B%KR@ z9n(h~k9O8cI4%}(JcMu+6LCDWJC4+>@VJqZ0;w>z+$qiyRXA~$2)pdVdrPmRX?31R zxNLK-cCK-*b*^(B>s;?V&Uw7^1Yk>n#oLqvTLEk(u;YO}0@w+_Rsnlt%9)V4JVla} z&NB#?6BRBerzPd|K`aLVOEm6IIxhhh9axD|kIv1A6;7NbLWHV&OQxi`-}wX~ai{YE=Y!5& z&WD^2J0EdA>U_-kIIuH;odxV{VCMik7g&6=<^zjw)XY;YwqF?);MQ_yw?aN#|F< z*7uRe@0>qKJbo|o7$ac)B=WeVJCB+Rln)j_#-(wgf6bJOa?viv z#kx2b?-E=?T$wH{u*U$q9M}e6R{+}xY!k36fn5b`Gq5cwmtNx0WtMn!*$I!W3Xf~j zJgy()vHy8=MUh9>P+;3+9$h1lN9_{VLF5CPr-5B99g)Y)N@M4_Mj?+b)VtOuU8r}h z>l=@*(XK;89$jNZ9*;$^*olP4j6gRYmApz_WS)qsaFvTN9@m#NN4jPb7$>?WxhA`& zxTdfxS9S;?_YD2Y|%e35jbA3oqeBJei>rK~NuD4z9 zxZZWW=X&4u0kGEqi<6Gm0ed~LDPVU1djqgH0(%p%H>X@5$tZp%ja^({5fpDxP`oWY zcDZ{H#Q{L^cY@*{z+$*raqQyy8&T|K*MXaMlOQr~2H4w^ZVuQx`Uavq(@lcNxU~et zI|+zx1A@q6tk~`#8vc^8a@*Wa5ko^+0r~78i~Y}{yA)Y;mjU~@%%ZyzS)_)uqsa%_i>2#u40 zeKP4r(fL##X{>gm8-RBA3_|16B8{^NjTrczeuY%)3_t6rLH6o703xIpJh~qN{ z#Bqsx6~S?-dzm}#KE}P=-QZr~Zge-fahUP~u)BeM5pWWn-2?1iVD|z0GO(`z`)bPF zEaSLZl8o+S368HRIKGjVjPDH6H~=)BL1^3n?CT1RXZNNqx;MEmA|#^1^=8tI3fEhG zByqF*NWM@J!>#UXBn-EU7`}@b9?(QwNppi6Jz1yRH@a_f z-|W7{eXIL6_wDXG+;_U~0``4iv77!7*pGny7}!sM{S?^Gfc+fUFH-J%WDIx87(PTW zL_-Pk7uc`U7=Ay9;Q(Ox0>Kc4#8(Q2dqiE)QtY}1=e*gg$eg!$>=25tyWb=zz5(nv zN%vd8e%nVB-*bORP<)@D_?;*eKO#c$KRuynWZeo`U%0=PX#7f~@dqLliSr3ec|f7~ zgZpnnwzcW2_cQ1AaEH; zPZ&5&-)Qs<^Nb`|6?;Y?ioj8b6^}vHa60FW17YRK_2ASIPUm>?35p!kmoz1w3PjN} z#&d}0P|sM;VV=W1<2N%VZJo=iT#9fI3n$N{GoXDDs`qvvNr<4?eiO?rL-?yx@6 z_=o3jp&L0I-}9XRZxD}bv6Zai>D05<`+D&UR;ZX$4#QeLOTqSq@4 zMQ@O>I9XwFT3RU197M7IQS{~@ie8iyQ)CpqqYy>IU*1CUA@1)u;xQDD2;*T&V;|xj zi!gdox*e7D9tPa>zQO1%^Hz$Y(OV&kMq=gQ#W>_B8fSC^%cx$bWH-q>RpN1q$m6Wu zk|}9sdXFYN&hpOo&hgIm&hyUqF7Ph&F7nm@HwU=6z|8}0K5(d-ECg;5aCrV`;A&Ie zTA9a~GE461Y{sH3QcITx-gEt&HIg?+qF4s;Kv7f?=D2;TqtM zOY9{*^znlj4giJ^5DXs#Znc8p!@Xkol=m5e;nTpaO?saNu8-Cb-rZht5wF;bi+Cta zi8X|m?8gFbeRqM#tPGEn>=#uEl5cn=Q*Wdl?dTY4qUhhAdp?fuC6vG)`2r{2%J zpL@UXe(C+n`!#S0-~hOjfWsH+6yWfMIt{qffja}Z4Jof|>h1kOmW;&In>$lM^6a!^ zykHQ?{zuYBOuc;!aA(O#`iQCb0Sy>^2A>I$^cjIWC+RZ-hjtBpk&HgO&xKOX=O7B> zc|>9Kxlv){&hJTKG_s1zW?#@35rv~KEDFbsNTSazl6-zQl4TNoBYlNPqVFKz!M-eC zwlBw*>&x@y`$qY2v~nSE7Xf!MaF+mgDR7qow;8z0fx7~@D^tEANjUn(NIIkMFhb&0 z3W;0NI^*_15(j|9NrXfkr(CU&I1NeU{t@Pq4`iS_kME>odQQhT+c%fch?-Y2=|jz{ zy^l05^3@U=YY2_#GzV#1OlaKJBaInqg{)=1w!xFw*$BvfV&a6n}E9+xLbg`HRU^ArV;%x5;wKJ zQwfbqv;!_3?SQ*?kj4R^aTB2t#f1{>z;_AK*o$$5?YxLx6AjC?_u8~!0iO?0pL(K*#+D~zco_rLz$AEi0<&#}_`<{~eXy0>$#U~WW z_*A-&etwX}0br4M@b?rA6g_xfs-9}W5AJ$Fn=x|ekc%JtJ|!%E0^HL{-)F#~ zg+iZt>92g>61n&_k&DlYa`8JN7oY1g-yEZ@(*-y{|>JaHLtFAx^L6A^x{8^Q{U z|M&%D(XaBW{TY6ZpYqdw#?SgWKM&lCz`X?A9^m!@w-30NfqMnGSAlyCxYtwuA(CA5 z>#0kr%T!UnnXveV!XmDtF9UU)jA7m%gt7l&^al|}e+alYWf=Wv=)KK9)OZQ`0QVNq zoOHygogBHf{aOAT1k#@k+&f8sE^zPm4M=~1pLp@6iv2~RaC{HRq8=t>sSoIb%sJ|78CZ|5X1p;64KGW8m;z`V=^Pmp%vX z3*f#4?knKFPWh+HG|rNGY5zPz<2MS8xRfr%B;tM=gmD01Tt;Aw1NW^0BN}?+rWf^O z@=Y02ns@wX8WTY>ve(!UzG@B0YivHs&F5RVfc0J6qFze z{!{#?ODtm4bY$`8-jXTr$~pc^35)0Y&-0(}zrerIzsY~0|04gzetf%r1@1TCeh2Ok z;Qj>eFW~+L?jPV)z^hY!l!oN5|4ONs_9u}=K0{`ar<7ir=LcCF02Xg1EZzdVMqv?6 zy$?K+_TT5|RTnDM?s)wBK=Bodz| zB=SOU$&@tv{O=MHU-rM^f7Sn*|8@Tx{x|(^`QP@x1AHd%THtlS>wz}_Zv@^1ycu{4 z@Ya<7J()%-GzGMj5MsF@SCYaK<}e7E$!} zC5fG6M$_yYbwAP@|M0^vXect7v~;Df-2fDZ$YXQIFl1%4Rt!&8Bw5{iM5 z5{iLrg5n4T#e>o)<_@CR|0o6yMHB;LfgdTO7#N2rQkSW(qAnwL-SGrE433jNS_$|P zI3iF*NSpxt!O6gpz-RT5#3_NJBoc9L7v*9$QWdBcS0^{O9U7$V?3oHpN4J-@91IGlG13wD*0^kdQF9N<8_|d?Z06zx!Lx4Xt z6<8s|xGK;bXi-H2Z3M=#3XG+|j|ct;9J}xn25B4s8c!xPo&x+~3XP{Dje#@h8G$nm ze*upJhVy|Rhbz-Kb}2QKEA4%LU?V~D0^rM%fla`d_YuiU0+KuLfauPfuOMuR?!5WR z?nv@&;c>&Ig&0FX$$4u)vi1&$*4}(oZ+B4A+z=qv-hmqfHwA7E+!DAoa9iN^z#V}* z19t&G5%@{KPX>Mp@Kb@G2K-ULPY1pl_!+5yZ0#M`iQx`*Ae|2pI%g_$&KAQR+)e15 zKS<{Q&`Hd_1G|BrrO-*ty)DH!&4V8jP!y+m@X#SDUk?yt@4y?t&q)T}0)B2ExqL4` zjJ>Jizz3qJoQG7=d&E)oo!z)psQNtcl_V#>6y+odlJKu-z7PCGNcqq7D&3L_@TmxA+Bfg83qdK@3V&27FUr(u@wGo%fDlNpMW?kl>-g zvBATFhX=<6OM_*>a^P11-wb>U@U6hN0lymfHNdY0ejV_~0>6GoP&W1sR>hAEJGd-}k$IEBIPfPXgQ&hG`bch5 zuvsE^l}Iiig~3))+dQcoxkj~JmZHIR!Q)jUw+4?5t`8muJZd7R0)N_8?bP6j!35be zz@HBM8HxNwRb}$ySJ%}xpsQeC`oyH#mewgvjd{7b(_+na=!SG&Q`3qXgCTvv^jKYd zWvnH9_=}P7<)#-0FIU;N1uqF+8oVsH z8TfO7KM#1k?FHL{R|KyNUKP9=_>I7$7Ih);7hy*6`gqfdS@qcNb+LK1D_6#9n`;~E zV)L7tYt}zUsL)tyNs;ojxR^7I^b=}HXHn}W5ZCO)etf(e0Ki*ik zti~{+>!qdX3_9H~ds2MqGIZJ;>U!1aA9 zz_+J@yX5ZhQMo&Ol5~e#74d_*q1+u_KiC}(KzH~ud3Rm`ew!jvUhh?;ychg{h?Mt% zza|;{5cq5RC{jKRim_9QgBUyIP~fjaq=qaaB1Kc$O{6GDeHRq{FjWN64-3Fe1Rmp#9@-vSgT@H_ zZWM{#sp$g-~(X3;aIdUj`m~fLDQk4fxlA$07Hdz`vCWZIoHOSXy!mZ6++ft+4oRddcm> zK^6yq#p?)**8~5K!r~3cB2%edLO!5=jcfxIk7=zpbbAP0VkSe_p}m(3;f&b(eWdZe z&;ycK+$oAhVpZ^O@hU=(hMtg6d|X8FqrRkhF7zrv@%hjTq1~YuLobE)g!YE^g+f?W^8O66`6yGB#ey5=LLmI_j2T>dV6u%)T zehd766coQl6xq?CAIXP!ui?L!jySbEQIR{phcI?ZGV}-VKPE#s0sT|oU<|9n6oM7b zAfoYSA{xUq5skm}EE?aFvkMOi>qH*IT9L=!kjF4B4qAUXkZ25B!hYm2Yz^DO_OK)D z47oVptHKOrR2mbc4!pyn^EN@JtEC83aW^+gmCn&HV5Zg5rYk!tkPSP59_= zZFq6GE?ggufuIM$0D=(&69{GyEFf4xuz_F)!I26tl~G(SiNAzG1jG#>c#`3>K=Aev#Phx7!!SHYe z!_sueJbnLza`|FYs0fccfh7m1d=(>mdhkS@TFWl)Q9@AZO#1gR~iV^J5%90W6 z(fVkA5OGI*B8m~Oh$68+hy=v0xd;0LwG#d;5{=-@5emh~Fpfv~t# zVG-@rg5n~tuwszK0bmh#*d-&Eg0M_s@$%j}=tz5H8zFHk2*)HN+d){~M-s1(+#pHC z9imih=tE~4xh;aTMnoivfmDRXzNEQ7@&v(fXXJs%gOOd4hawM09*H~}c`Wic2rEHY z1wu0jEg-al&<4V45Y~XO7KC-Fh#W{IA_r25>?RlM2`ZIyGap-Y)C=gE~0`Uh?Afo9)&jK-;5!E7zQB9PJ(orVLM!6^-6{16;nIN13!l@vf2Eyqe zoB_fH5Y7YvM_p%wa84?!lLTVaBz4YF8zJ#rg~apIo%4l*B=$dv(Fl?lje>BVOk#9+ zZzM)@qIpPSG#7*mlF@t+HujCgXi-#Ly(^C5>KzUeHX%~~=2AF%c(hE!Fp9$k9I;%~ zmoyWixZ;g z%`G`~Xo(VU%0Uy6oTc$r@>$llIA=zzr8R~YAFK0oCgS&PEoHTh%RB#A+Jcd|Te8=Z zq|6$n>@umyzVbWT^{vYm zw$wGm>*9?|vuc}TwU}1AQ&t0BAfM8sp-$^~j7i)Qt1rci7Ls`9#E44#UYu}=HmO%_ zNvxKBZWe#8F?g%Ws>;i2TWcGdmQIzEbd)JPuHhlken_ddHPN-Ikz2N4lc}^Sok|~F zA4OB9Wb`-?u1iKw0O5L41Nzw7m9>raat&0pNLii~JsImVwMTW4>SFbp=&9}MHLA@u z26x4*8KPm=jHczW#wqcJS+xyqvB|Z~%VW(-E@wnHbj|kc=(!}@b3nK$89fh#Te?DY zp#;&*HHN)wv(^$Tp)7JB6+PyEgcHH7C8xZpIhHd$wz8=u-bxIVT5>R4J89=S(NHP< z%{p>>%vIP9O(_hd_83ghxPl6okh>csx-uFWyqw5MLT! zOibAMy+arE((#K5d2zM>7w-h?l2_cMppuWm(Yg$8X|`&~UIx45h@uVi#ZR$g)LsH}p@ zQH5D$Qlgmc_oowrwT+fRDnG@ z6^hrtbs1BQ)R4t1iKx%b-KWmbP&C5|b0R3KNlVO))DoWYw;7Svrj>IdO^c5~wp&ap z^=Vs>$|=NU&UjN!StNY&7d^h*hsc zjbO#hDw0Q8Q$zh;-9ZOuW#?eOEalsA-!!qV{lDq-fHqS?jrZrsljRka?TgNiEulH9AN7F(%f09ECwsBfh8Y)29D_gxz(Nm*xI0{^v7v zBM8C}14BuJw1jjG<R^wKB52jc9*w_{y+R#UmY9wKfAF!Hrjt}@25H${+Dg*^xr*P-ody3 zAO3uhJa{1p5Ap^DgI9ubLA{_s@OscR=o1VIMg(sMQ-k@zf?!dwBv>1K7;Fpn2K$49 z!QtR&a6I@SI2T+F?gURmDMIN(Swq=FIYSYl+@U<7N}(E|*wCAy5ut?8*wEzA^w7-E zyP?^kd7<}13qy-TOGBT9ehu9XJqSGtJqbMvOB$9UELB*Vu=HUW!d?u^99BB4QCO3( z=&+Vy9m0Bs4GkL}HZE*Z*u1cXVJpKv3)>NPBJA6+Kf*63a!d_DSx8;iSu2~pEQ56|9lkwl92LOpN0u3 ze@jSta#j8mVaxNU%AY!Hx&OmA&8v+Wwr~>-Nj= zc|zh8an1U4iXWCMeqgSWrC)ue%zu8+$RFD=WBNopk|{v;tZHz71BAyK~3C8d3yI4hA9;rX9?mDhNk7PKWU z2r~N(qcfMFGPP(zOZ@fB&;NRRI@6UN^kNq4*vbJ8afD->;2XZ<2QF}tKe@tnZgQKy zxElm7C88$1naAh+#GN3>l7?`KQXF^5Qi?K^qXHF?Ka2ZiiKZFun57jlxJwpy$>J_q zI?#zO3}Y%w`GkYWoaHJ{RG5m?=rU_D^py1#N>i5d=rwC4s!)~c=r3z)+7L@S;_)73 z)n!&)X6;T-+&Sws+&Qc6vOW$1zsqb8?u_uJ3}!YTvkTq&eer^DIm2}n{tLfxir+bl z-opRp9`|{`Bit$cSrBCNUT4#Jwt_^Vn`~oPf_Y|h|LiXiPBwDj$GYsg&+fk2>(K=L zW_PdbI?e8G*?ZwW+50e*k&I^{EBKHvaYlAKliki_KZbi}|CwJo$!X4Tj(>w7hZ*F^ zhkkQ3q!EpIofz8jCKH&_}K z_Qt=`82Go}g50{zJ&5;l7yt4=5a|w)1t@{tk1S1D+##|WHE@?m_lR^4|3q{UsXza~ zY!GP%k?W8r@^kbY>A8`6*o%G5XOHsr#9j00)!)en`9?E_aV%jC`#H$rASmEj1^jUV z_bcFj1-|B6zULt{X~>B0FBU;=@=%G!#G(6QllXwu$XjeZ8`+FqDJE|*T@}++vFFcz z#1ozcLGci2$%-?IJEOQWisz#Rt%%2*ioeZDJhS*G*uUcDU3@oR;V#A9#V@}V6#tR) z{J|wI2SJGxWFQ;fhZ0f9Ut%l^F#8goUBa_VcyxHQrMAtHSz3vb*WDS z8eyO7MbixTsP``Vujl^t?gl~q)abRo`PH|B^>tfcxAk>f-}_a+92KZYRjT8x`p&9v z2kZA@7`m@NhH;E%8Z&r@StHU@AXe%m+GJ8JXg5J4Q_EK2%?hW?osX`OyC-*7Thna)hsaD<<^$!-3^ISrlD@cB6p zdCb!wXcQ1eVzQBg2<$^6`_RZfG_r$@3Q`0a8`+OWWw0ZS^xsIgjpnnGgP3LGBzRuq zD!4;qvuXSWW0=Ex_@2gkYP<=ZH{ONpjgN5-IUCE_SWfF4G?BB3oK5UU6FoJlh6^-9fy$LK`(-e}(&oq;;IQ?&fidW)7l zdNAI%=;4gS+@p0Et;6UAEMf`ESiy&U%%^N+JMI|mj?pqiyIb^C>_bzXHqA?ZN}=1P zuTlveH?4u4Y${h%nVRac=}l;=CnjV z&AVggnwwj5T{Zs%oi{&(-ka;9`7iv&1+E}d3-@eM3Omz6*Dd1c$eWmPi^Z64ixsS5 z4eQy2dAB&sF}~(ozUN1NMjtJ1;NC6%<{uvLm}f!IGDKQ*&@v-BXemd_C>qg(Xxh<> zH|UG*TaF@uvAoT@%;7!evyzYa6!U4hjlFz>j4fqsDPt?$wbETH-L=wPE6;B=o|*Xm zR-fSeTlxN0cCOWz=(Uw+wc5|`oWsmpnRzQSZ)N7K%)HgTAZQ&%5|Wb&_igRItzRTF zc`)zR=H0p=Wijv8=H1%7Th~J$tsBx9d0WTPo(`CG>wXMi5M$6s>j_L^Hs;rQ1s|{) zowRnR*6!5$b9B=B4tKfFL%avA%_v6x82Mw8kqdca^7Ar4WHe)OZX4&enaT|8O&guGS;q!8@ge5kMn`S7WA1HsvYW3s!&Cn= zLL}bDw%wS{$9&7}Ac#$a`Nn1?J2@#p2})50bB=u#bB=Y7Soet4SM2LFqb02wjO?)! z(O0aqVrMajdAyI#V)YfPuh>28#av^5p5b zW1Ng}6{$=M^kuy%VxLer8 zxWBm<1nt7Gf9;Zyf^68mc7>6(U2$~St`7CFbM184&a>N{NjcKgJ5R{NBs zAw3x}tM+Eq-mKb35Q&{`@7e9mr@i^KuZsO{Uz>WES9@o*Z-TvR--qeggZB2c{l7sF zpOfmuGa7e~H>>!y*thsiY-KlQ7Jq=l9K#*r%`pBu+#%i_;>|ApGS|2f1RdO?!%N8B zLGBK6cPM~ab|^wIDkFObnLEhbp%t;Trz7^aLl4ZbgFAFEzYeq6!ZvpBB{FvSiv1ko z2p71-6=dr0Jd>U~m|=&9LC`UT&O7S7qpTfMqvwwDcGOMBT$H97HPLOyx->`5jxn^Q zD+3wAFoyFh&hDs>j#qJZ$7ey%$um3UAwMrun4;M0PWHM}85-d|>(mT;-N{*lopjV`ALiD{+&Z1d+&cZqO>Xl9Sv%{e zb0X4X4?AbVJUd5HoLA6K=d!H9Ogh__&fEEd@43r;^xgR}p4-K9yLfJwq$DRdd9fQ^ z3Zj!PI_ct!F6DWR>eQkx^=XMty4aO2?HI%m#xb6WOy)h_XCaGO%V)^g#qM;`OV=#q z!}(pE-_>q*ZAcTE(t_5sA&z)DqW7+&7=v@WI=8EHyE?b)ES%eQ5ldOY2YCOw>Z$8C zKIa7AaGEom;{xW;^>6N>ziwfqBLgpznLfzS%{$R;G-H{GbGofzJ?7u-BR*v-&g|yS z-RwfQz5K#SoZrp)-JIX;59~uXd)w_gxA4w%lc#%n%%!_ty6e3Ae0Cvo4;g!yWsfS< z!JK;Nu}5QCp|>8L=t>WI;|@Lg;SN0#&|{AY=&;9B%&Uia^)Ra*JK4hl4s(>_oI>^< zmyx-LzIr_7SrGJ;sb?}$keamQz?^%^*HgZpO>m!{=G;@xp61*$j`j>g$2~_OUr!zP zd>a{i>bmCw7PE|%tY#e>uwy;HK<=LU?y1Y350I_r(;(;-V2-`=ke`<+gm> z+uL({dv0&{@9qA*$6!9a$1{m3Ov8P9ALd37ypfJl$oa-d7P5n1IL9CS$rb+M5xTGj zL7zkbYW#}tI-=rib6=`s%zTUgOFH)2exMSZkl%oO_sYyfZQ(xKo%GOu5zIyH3jh^(z zW&2L%J>Ex0eHXKaEo@~wdh2_Lqa5dJenWqKuVSD2-VB0%X4lW1`*o!|7OUSh>}S7O zxOYGI?&qw2?%r=H?%vPy`|V^8d)d!H%(CBioaQVSxP+PYb7sHiXFkH*`iIb2|Ch*0 zeqP2N_b-BO`d6efuhD?UypE3gx2GfW_m{tae@0=~`j5k|^>=RnfB2V&JPCpU87Yna z2fT{s52#9YYEhT^c=muU=w*QZ2k3u*{s;KX8So|(FpB~D8lbNM`Wi5o`7FRp2CQcz zoB0WS4A94b%b3Fe*#_!hU=os%g3M$g9Q!-4Ao>_s4Er-s-huKCly{)L8K{$iZD~h5 zau2-7U)<&S84rSBP*SpylicK`0Qw$O6we-1in8c_koRPet_SIQP;*)mLoCi3uT^l%y6*X8Ekik z*qtGI84uav?C{H!aYj_>%5ltK7XirBv)0OTF#yy6QKv%=ZFpgzx!W@U2 z<8WsUmwUKQhVNxRKkzg14wrTKb#8H&e|W&7AQ&P0h{BlBh?11192KaBmk$2F^$oo9R zS*{Yim58LIAT_zkOMYIa5Jf4$D>(Npy}hNkw<^+#AuQla&IQ4!WaxTSeY!KA8R%!! z9NuFoYuUgiKEj+w+0jv7;U1$7ag-D2Z`2KBAEl$wVI(0XX-J2@M(09Tql+W!XjwRL8x?)S)x(H^%pjnTolLF_$sEe~h_|d7p)t!x;NC#vR9)>zG~a z!FxC6816X69mkyJEEl-MW$y7W4|yB}V+&vwW6ff$y&3DiW8HVG`;K+rvF^w#IL{sDx#M&=t`lA9L2vq^ z!*LUtj6TLWW1KU_>0{hn=COc9Ea3}I@+=76&P^?PqQ|#4ah$9CjnALAAMhv$#wR8X z>B&fDvXYG)L{J3#F#Z+FP@Y$5iR|OM(+k~<*UR`J*x&KPk$?O&%x}D$)60% zK4LfLgJ6R9enL`Gkcza(HbJ%tvQ5ZBNz846xlJ&)2^G=rgx4^?2~BB1YueHdvzs96 zgnr04VK76{>4e2BV+FEJ_>?{D;{b>Fmftytotkiwzpzsi?(-lBCMM2NiS9qq{U^Hn#G{b!PyE73oHOw(&!1^eCq4^;Ng;GIDGABY$)v25o zU?=*Se3@(9qqnjzZnUa%S6sA1-m||C^yvABSV;jzx@+C(&!+9>^ ztSQc#;;bomxQlsDdB~F>n3@57Ox4F!XHLzAGpFVz5BYeRLg;F0J-RWKO?-#^(`20{ z+q4*lFq*OGY1%~I;e8gdlogoEv^A_lPt)9CnmbI}&0hB79@B0i_cXbu$vy2^5KIqY zU#FYtbor-eLDuPVPA^Ic%21A1sYDdL@Saca&p>3IK8z8JA^|z4%Q;=n>E=1z4o#PJ zx~$Vb;tO{16*5jg#8Hm(8>caY>F2l?1T(@&g1w)S0`JxgUC+?j3|-GCjLb8NQ<5rF zqXxCGn=@i*PX{`o_ZiNZ;fxso>SCrYW}4$n&z_l^JmjY!W;oL`XVyg@GwuG& z#=MUGpV^j1+`5Yb1+{s~lHq88$lj!E1 z(zxF{HIU^US>74MW_;f}U*mr7{Kzl(zIT4dUEleGKe@`2Ab2+*5lPYQyQxV>26XZ6 zOX&Jt9lu)^J-*wIX{_cG%-)#4peFw9feLo21nDrbP=a}^zbC{!#Is4Ja zobUMoea^X!oO9%yBj?-@&YJ7ab9FnnK4v@D^X5j=1Lw`1&O6LvF7sHxVwSQUXU^Tl z9`@q=xd-_MvzTiZbI&3BT(g*K7IUv7&s=%tJ`IBR%;mi_q{l4Ydy(Aar2qvfOL@GX z?^U864QPbi@3o;DJ?Tv!%;~)w+(K{f>1|#%eE+=Hs7@{H)I1%`)4@E?nx}(#o-@xb z&+Eqk1~G(TjA0rx(ak*F%$v_bbTe-~<~r{~KIR0vn5T<*GR-@WO!NNY9%eZ|G4^u4 z-ICG9OXD)ql?A5Sgec17r4#e+~a-_ED1x-B^h{;%s6MsJIq4=OXjhiFWAK% z_F+es*pVf6WXTD1u;eN?xP{)AIBSWsmOKrDr71{_^OibqX(qB@7EA5z(n1u$ESBnj zX=9>khW?kfr8~WNgT9Q!4lT9oOXXfF_tM$SMee05_>fQ7!qy;ImIG%kbJj9vEi?CJ z&RN!+R+#a!SlZD6^Ip~!=Pa|U%k1hhySmIAmQ7_k?_mzhma&r6tmQLww@i1-c5;ND z`3BqS#jX0oyLeR>TKm4KIIo42Ehk8agPtWF@aU=)b+TAGpH@{{+D*cUYAaeXUAOI?QX8y;@a~s??x1Q8c0n(ZnPBs@}-FY6J<4L#9~QR z^}4za&1gw$+Ax68jOA_QT0I;4zIr|jSi^cYvKjlg`XI8d*5~RIL9oVoYjm*2?AFw$ zAuVvunzqEzl`%MH%|zDXxobA@5ufrI+t`5}U-J{ca*E$M%X$9b24=nHNf3Bcur?89 zwbrcGn$_C0WFrT9TC1nE#n8{%S13(2YM`IB`dO==wQ{d*g`Hn3^V;t8#2nYY$w)?F zmTS#$t)ABEY3(AGuz@}7Lr-hpLOoD&VAM; zClzV1f9r}6g`HYwch>n_Sa*_VL9pK5udj^k>pRi~`Pa+8eju{1H}Cah8P6o9Fpc+d zhxJQY!79vt{eHYJ>wT`R|Bcg_!TO8*$rbG9df7K5<^?j7mF(z!Lmu+;GUcd>jyJ?I zhzZQb`5Tx$`FH zY${AKN>ZMRRL1=`RmW$=rdawijPaPorkVIm*ff_#=w#D!K43K;@+CXb#U}f@*w)mPYzGjQAxA?r-@+JvP$9=Y}VLhAB{}%mk(f<~+-r|m1 zcH?ea4se>YT;LLRZ_71qatHU?@(&Mq%+nzF%uGHjP9>VsgGFrS7{1qW!B+R)YGzw~ z?bcUt=dEV8^)=jmYc1+hpPsD1_ixqn)>GJzt>?LjzPJ9xqafIph}5J*zuO|Pi`(qP zw$ha2RVw4GZJxhP&TX-@XEA2JZ9BTyb{O;B=G<-0-R9hF&fWG$5Nwa6FrK^JbGO%| zB{6v3cF)`1kuG${J+{9=KgMBZ+b3fOx7)$(v#^8P=d+L{EaNENxzF9@^S1b!&-ZYf zCqb}7pF7-pM^aLd3U}WTPIi3XjyWu63)}EbJ9gqZJN9vqBOJ$G@3?@O@3_o0%x#C6 z?=bTn_j$l$%=`=8e$k3C=t~N$+hbmPUdG(_G{KDb=zEW6?wQIoW?=4n zJaf-tma>seY(@urcH)71+#Y*GAAtQ0mz2>l2hP^WEJa9wOg?BqS#lG9ECm12P?`MosEap9aLy8}mD$ zrvuJC;M@bwJ@5{*us;XZ@+n_pPY!&|cl?M<2TpSqeI2-kEC-$hexU`-?_g5Q@8FBP zL^wIfh4~%Khl~fC(+7DDdS?!r-@(yL!fqd&fm{dQXAw(T&H-dP_ya%l8>hI#(;zsM z47+nE9p-gNjzjkPP$9}uom$i-iblLnTiVfq&UB+EIy>|xBarcs?hbv%UiRbShxByl zSr8m{?%}l9mBSfv#$oq7+>+Kfg zeK?j09UjX^0o>=9yBu?uV>NJ>WA1XS0gbU6$K2(ZZjb5qSO{9b3;vHuG^198Zk79@pvdY~&<2FH;CTAD8R6o{u+WAn&1{<7?S~XB~h3tS#v1 z_-^)KFOMJNYrf+L?(h)vJz>5l%=d)(o`}GiCyL{&6J;pRtGMflp}fshX7Da^aIX_f zSk4ES)d{mY@fq9L5d`1e3xe;R^}V}(pA@tBIXeX@j6449j=#zN+dh8f6lXZkMJ{uV zo4CVoX8POxAUK(tbm;J8Mlzwxle#>q%aggtLq5#-WKB9U0sWmk&fh_B>LtwmRCD?> zoVQ58JWsjzDfc}!j|G_Jsb#ES6>C_BJDmC)@6;)CIJKAkxW}nm$bCxgQx7qN(|S3b z1T#3D8FM%-^XW)rK5Zta%kV0dsY)&C5=BGW(j9qE%X@kp?ss}J)3A%D?c!;>c-k(W zUdTt7(`j=$ZBD0UJ}vWUnNQ1nTISP-ID#EIeI*EfPfigUp`+h*@%tB?#C^`_@Qmzd z@{k|d&y+;=GqRtN{Y(wKS7+ouBmWus&%_W*dpgpEZoG{>JM$jzvxwz6=VU)8`#IUq zo#G7VkpGW{BeZB*-o;SnuLwJ*s z$bSB9CNi1%tYSTzurufF%X!()%YI((=Z|unulX(rF1YK3D(LEh^DeZ+d@sb(9z9*? zf_=Tvi%~fDf^#o8_resWVP`Ms>cU*?*#+~zuz{`o&R;?BM_OK{G3 zf4JKpBbdZgW?(LV+~qzGgW#f>UX<;kY!_v_I2vDn(b*T@!}%ATfALek#2hZ(!80y; z#>EFga49h_ke31!!aOedT)R|?vQ(fFuMv%%xYUX^#3BEsPISdRF6rme8@R`%aZJEm zF6rlzelF?fl8l$+yYvBTFsnbqNJj=T(HlMdX~uuL+n>L15%>7>S`b{WiFsXaMoaAH zW%svVwSNI&%NroS3URYr+D^N_q*oq z*J{v!#>jWA8J+1ve+Ds>;pq69+}GwJ^RF``L2x}F83m|} z4zG8@IoIve^=>%ly6&%!Wjyxl`c!6Mx2`W@DJ#&`b!T07uj{`B!Hp31=|)XF`$l^@ z;@LMm`^GRv;9a`mUApl$)6vrn&%EK8H$3x(=iSiL4fDP6G5Wu8j9+++coZ&p?d-F1K-jwm?9qw|Uhdc>_TLFnkN(xew zjtpcX3)#p?Zt`M=w+c~|64mTi)C9-j?^aytn1OU6u+|!aI7qI<=@v6peTt@4{{SbUTJv+S8FPbf*_@ zFdVbLZNF~YuiKaSn|sKATmCye8Ood3#XG+C&hNPIof{a&oxg(MFK7JKn?CeoAfES^ z=l$h*e|g?tp7*z0e|JKbzq{f2e_udJe|yf~y8GML-tCXG?j|sn@jM8Edr3)7O48t+ zxc4rz@qXW%9|ZrTLZ|rU+!GjQKNsnheFxv-jF@jsr+Rso7~MRR z^O?Io)A=*cdFBq!+~L_~J`O@bK3<_TWvRe+4seJg91lXFGE}D}F~riIj&z|rz34-K z1~Hjw%-|hnF_-x)U=d4M&Pw)hHVB0!CO`G*%WOX3J8tnWk9Zn{5(T6n1DSY&Tku zFYY08BAFA(oH!$y$%3qjWlbDGB<7L00EH-m?1`i3!E`?42Ob8YB<`1_GHsDL$r#>d zBC;pZcM{o?$eu*@BpJ(B#5+)3n4B6re6Bt_pzQz3iO z9GF$om$4&BUqz;*RjEZ?%iP zuTdTOlh>ghEohB9ByUFtI^iD4%_X_q$>mNick;z7VUBCieb#-3w{qm zDZ? zu_I~hNE$nmrVjc})0#HOpT>@)iN|M5n!XHRFvD<>i}sD?SE8^;P{PIs7N$e!+7be`@47m+`muG8r{ z-3@e_?nw~x!*VEnBHSar8Klq0E6AQ+_Vlu+*LQk-r>{$W^qsyf-H|oDtmy}$8Aprj7iXM##E$1?u-Sgf>~y)NgZU(*pMd3oKfbC zGH29xMm=ZLbH>38T-V`Q&}sO~6s8#N5pD+Ib|pL(*~4WI zmpxqH;rb3Az##M;?hfIzFspDqhszqif>r1^d_A9Y5ZS}+bohBLav6EUZ*m8@!{rW_ zJDaYv$(l{pY_evPHCr}vqVsI-pH22`1t^FvvdNiEpV^$5?Q8A@q3qs;?B!|6Kt?i} zvAoT6be;Wu7NKXqesL)K2Yk#Hwy}eq?B+CAxy4^RKS$>5Pl8a6fG}P_)*N}rkBm9= zn?t`jN>i3vMAH@foI}4k^qWJ!IR-O~5qK|ij6vQUa^{dT#}e#w4q0>PI)|=vxOa|? ze2DBhKIL0(2cevL%<0UWF}QzD??KMJm_^QKK`0_QsYpwD^cJDxh`h)jVMihgQG^Oq z;x(${9ualuL_cJYkUc{7hy?6O#01PH!k$FflZZ9Q8X;@MC+Ijr#}PV?&~b$MMc9{! zJKV)yMCdp|$GLQzD-lUaL2B$vE?INghg`bORhXibpcG{&$E(Pms|sy+lf^hQ*B?PB zxA#1^Ir;UGL%F?Mxn<7%E_0CGua_Lkt@GR)*vv=hIrnF{L+yp6H%d7IM;_sAQI8RVUS?0IF+D|=q=WL{n8UBnVLq3gUm zku|TZc@LxGygJVN13z(*zk*P{WSC_>9p}?=J{{-FOjfcJf&I>x4_Wh7M%VeOQG?pl zBMQ5auL-i}Yeqk2V($5zneSl`%AX5!%HNSO$ee!->ybVGhv+>2SL{Rn{JPGs>-@*i zY5r53;XLk<-wX;Q<^^OgAbSDX3+TImz6%tfAo?y)k-ErQK-L0H(QyGC7l@-heHg(z z%tprrbX-8k1(vdcRjg$Ln~}A^L3CZfP8T@NH++w~7x;yfoJRHnkAu+5+0f<7@w|-= zUjCY!L8zd46tq(XOHq~z$X>7}vKN%SpzH-(&>Hy*#?ph{^ko2p8Hyb*xSZ9jV)hfl_c6zU@)t@)7K%~=SqsTpNY+A?aJNF$sfEr9MWNq9 zW?!f?UFl9QbY9556q31+%!Onw^d`D5^clb5%)<7ku$?RHo`ol2cM9*vei#0hANUC! z7rx9jZg3m>Uf3Oqgh)&>Qj&&r6hZbP-o+yJyNIrf)T057c^&zS$X`UiMFt^fk>QMH zEaRDo+(lNhoiEshoh~A4kwY9s<{~l|k-3Pzi|DzCo{QY!Z|?Cgk9fkfAXGFA*^4G6 z5Be?I1!orBz<2x;go9!EO|jy;ui&GLRt*V+3#E4#lQ1lUdAVJ`31}?8T07 zoNurv#eU%=_PUt-#UAi92o=|HaXE{pAT|0e{sOruirmF(Q5Snryb-b%Z$?XGE-rI% znTzYWxSosKhvKppm$i5TEFZD~g*?08ALTCx|zk-em>C3Rd< z$0c=KQokkTD!GgmcrQ!t;s@+SNm)zkx8zx5E-7-sq&t?h*RR;+SM2gDx_%`s z>B&fDvXYIQ=>HYjUwMr<#;}q@+zdjcGEkBx^ky)_(0eJ_OHDxbQnHtlz0`abB7dp% zY~mw6Wh>kH3AsyMM$e_5pYu2W@PJ1_sI=^*bzC|#dC+U=!W5$vWvM_#>SISr>$G$q z`eR2*+mX`4k+Zb@C~ZGV%UgOfOIVJ(mR`jgptB&IT*MJ#0_vX+&#taq}kT`s$uy?8&%+L^NF_y^sVeay2UR4$ApBqtSV@otoR z5n0O>LD%I<@Cs!p&#P3zzLb-_Tn*YYiWNAs+?60y-n&uWoXSVj51Grq$NR`$ehE4+ zZ#T-@jq-Xf|2guP-^CtI@Gb68{%7oc`BS(@1@B@7xhu$BLGB8fF`Ek6(Rl?uSCG9z zWvWw)x-_H-O=(Ui}-wHE$mpRO10gG9NeW|dWFW8B$D}04}SFi^aj&O{x zk-ftA+zvvo>f=>?yz0zXhvELOn$fH0gHXi~GFP-G6$>GI#p39@qK+%tkBauAqW!2S zf5pbUP8{*LL&dK2pcn2@aV~OKl)Iwb743M%wQOJ$dafvIML8>e$B*c@;%UzEJl7qb z2BAtB(QhUFR?=^!2qMYH%h>Bm#VAQ_>Jf#km1M1C2P(ODrIxg&EwWd#H{Vp1B6}5GS1EznR4Ie5tLVB)Gi0qIYn68BxQdRe=(viGt9Uo7Ok@#DvHMkYTt&xK zbX;XKAG3vR>_FBk-=pg)_PNThoZ<}UxWFZ3uW~gAy_Ssp)W?~x&Ezx8>9q$zsA?8u zu380qQdRbMj1_9`}P#wWMT3ztsw3H>%ljuq_YFvs|sZ_!=#3tU3a)$K_28@NOD z$2sJcGMX{GgPv>Xw}yUe zZ08Gh@fG_y#8K>b4Vi1mTH^|`){wP^tTpsqL*F(2rrP-pSf6i9z1lcBQtQwdJg>=h}9; z_FE)i2WpRJB2$pP_6#bizK@wHtNcM%KEr*41%c9oN-y zT^-jozq+4tm}7j6j_c~Uu8!-TPyS?kGKPu6;})=N$*(xCHt8IZkRW=avw zV4PXcPS!gggz6_HA2o@`e%J3!U;1M|>g&4x1nfwCJ=d4N{<|z;IUlfw^=!nR)c=`N zoZ~X`J+~F?wdB~F>)JWb&ayF8)kv(pd9a$Ucx{8!ukmZdA#>w#*pJ3~Z!CM`Imq5v_QtX|Ud=k>Z@eA5*LW9Sv7dwdf!vM%;Q`KR z5+X6l&~+2po8+Sq`fVa(lQNV?w@oV3fY!W0KL#>{H_>gA(Trt0laRNGoK56xvI=|L zMAjx7`4IPR@+n)9y~z%KLAS4G!p|@xqM;Au^ z=;D;bjzm|b2DPb&dqg*)Cqt1vTJ~t!qbD+j>6lHl_b}QWqBmh*qd!B|=$-6g9|!mm z`w}gCw7rOa5`>xtBtqV%DM*dnP33MXcT-(Am9?p?O=WE=Yg7B&v;vi=LN#P>T8j=O z@B!x9^jZ+|`{jh1nNzc73_#{)^I3@O&17$;^JcO)lfBtC^xW)A>`60sXm)~c`GKGL zjZ-`bLd|9Od+CIlr^Q*#Gn19<~+&1di~ zbC|~h>~?dRo6FjKJF+&HwYjX#?R4|~xO?-%97Fcz-*6)cwa{;i5;(KPV06%8H)nVn zgj(9EmU$_F?pqc?cYZ&dP|Ir6qz>}8Y(OL05QjUo>_k_(;~p(%A$Lo;Tgu&X1*=%g zdOk`co$$k!?(`fa7(R{CufK_vNjnZgvKB(tfRM_T{H zFI>cDW9w_@R79fV@ilLOgfWRH$dW@wI^+3X-6+~+O|J~aF4cc@*XRZ zy{+tRWpAtRw)$?X@3#7GdlY@Qb$;7FxWaXAahLl%-W3~#p*V;EETB4 zYgDHeb&0|*#CD`JdX9DHSb1aRjqS$(1|xH<%&{`Ze#UP&GcFf)FRllZSi^o~j{6p! z$NhwNF3xVmT}A#l`w@4Wzjzje+J%vXG!&v7vbU4Ho$T$*rCog*(ir>P&YrY; z16kY2+HM$ck-#{{Gl%7DMYrv~WH);`z+sN@HFl-lkI35Y2D)x%m)rf#KRnI zI!)JU_1Hn$e43Fxt(8^0!1qBo)tOUI#{H*O)6FBuJoOVkL-wg(vndGE12)4x((NOC z8{8p%1beVI`*9!#GalJ}Vo|Qe`b|&Kh1}^6 zV9V*R@dmb^E^GSxe2C2HGN;R&uI~&zXXrU&Yiv1Vdv?MGGInJ+BauC0FGi!^3~!#{ z%#5|z-n1P!l8caenvG1ek!i9|n?nta#AzXcjZAZgY5gqcR#tKwckmLjPy2w6`IN8t zmLK>j2s7o+lt0ruW$HLn&P*L=9)Nx`590{r&ODDvOvWxUry*-*F8RouDRZXGnflJu zbEcj%7txMAXLhoT9{L#IW@OKNij6@yU60dsG2OdPpN%(~en0E*o1Fev5M~X*MzUnj z(s!2ZS+Zxzo@F0d_K_uj)}frpDV)Yw&SX4xl9fkbC@gtk~jX#1gJHW29w_s~*A$wo;N7igvvvr;A-q}ZUEXN~z z_Q_mH5#Br7nc43KVa`wv;at2$j*aBlNRExNs}{5Aq1I=dNW#5YEu=j014yjBIRg#+|&%_d%E^ zbKc+C9oh5t;ZTl4&w29a={fII>?H4eF5;hDhI`~)jW@`fi|l!_=gFSeg0A!0NwOSW z=iQ5}d9vm`hK}=eoc97R@g83WVSb3W%-3 zIfJt}8(YY~0NL{|CWjc_J>Qx6KL%mJNW4?QB+8Jvpoe~BFSrGr7d(KC6zI9YMhfIF zc!oDv&pW)&hkP7_g+tJD;V_2doI;rk_v1hgM$d(^7M{n2$XIweS22NW$!0dXEsSFq zg?8clFJWN^DZ1%n0C@}LER?g*9txj8)blUq3t!=NWG`ID&p|kISM)g3nKLVK z|CvwoX%I%dMZ}&WM{*3KI03yybR4+=9Y^dVVjqz!m_j<4xP$Msguc@fM%*K!uPY@$fNMfxq$Z_yzf z&QbXHN0F@*orIi4au!{Ru8XeZ8r-|+dL}cK3}i2=rI#o9EC^@WqwleVv#ut}B5r3j z5Ai6n&w38oXURTG_F3<;0r_Wr%tq{QmOIS)jX#1g8elh3_lO>W+)=rsaz{^NEN3zv z*`sz6y#ZZE^N1i*w1f)gB7fBHGb(4ahkLl62hnp>)~Jm{y>(RP=!@7#RQBlSe8o3> z#}C*_^jCi8&mi>8m(Vv~!r7an``P2r-Ryd9f!s21*t@siqa2>K2%U*0B#j+R6 zUR+Em?O_Uq2w994#GLk zoa0UBOvD?_S;_;f;{$ACj&0BR9DVy1OE~ARAS~5$=}@-79ZGlQ@9fTA?92X~f$XJz zhox6?4U?G6RJ={8{H1fTi_&?>S=vH^c9JaTE_7R}+fth-eVsS4=hAoCz(?3}sl27O zQYK^BmTZll%eKdz%XUHLvf+$i4|HE9ci9+ZER(6MmnZRem2bmQxKFullrJJhH+|g1 zD(=Om%k^0P5Rb41xy$7)m%Ci72n?oWuFZRCy`#RC?b^IVvl-8Rt~GYn8iJxoefXR{8s@+_lPG ztK7B9Syj%c8jZbI*?X0}S54qLZXgZ2shUm>dDLJ(RSm>wBu*=KRMmzZRdukG`&q{y zK{(f$bKPNX7ES1D?z8A%?sxpiCVmaV>LF~49aYO;y)(8{y({~1AiAnP9QUX`279TV zi0sv}SIb_V%?t{diLF&Pvk+OUWvxzOTh+EzZClmeuzC$|u%37DUezD+37_#L-|#&@ z1!0ZN*2r2TYmKZmvexXz2zE#3HTxiY%>j&KGPO9f#!hO!4Z_-CjN&r#DW()}TU*6E zbX}`!-!=(-+a#=ALMPt7R;RVAxE=SXy@%J>fb6xh*UDb2?^=D=>bq9obz7m^x{=6Q zCu^OK>vUYFjsd$ z?pB^+V-Vix?QeAEjh8YTd%E#{*6}lc1!4UVHpkBEcS6_od$1S#vOn%ne;g-pGNT#8 z8B9X#T+8;-#i8f0%ci7U`=Lp#oFcqa(wZN|ZzLk2R> zn~#mplYQPoI_YOQI-a)@`RCoiBRs|vJk4{wz!&_&A3+!ka869-n0JZofWBjX&oNnJ z$8tO}#!h1_XEL74nT&2@#n^JpmSc0NrJfi~EI{6voH03LgV=IR)|jqix{kSbY&8!d zdu$Ew@n;au*W-L=&YzC^&-WXc|1#d9aeH=S1UAyR7kX>dapNdXgG+FS z#;cgXwYW!P9db9y-6(hCA{NuZQf#DA_QnTzl(jsGej8up6<*^*$urInjhyWp1~cO*YP&GZ~lOf*%*ZJp~xQBbzIkRUB~z3 z0Q4QV@3{Q&Q;|1*5&uNa_|;5g5;u@XDf*4uMZAq9oh+k=e(WV~FL9aUvc_#WE^A!Y zxU6w~$Mqd|_xQh&J^mK&@LLcrkaK}97dUf44LVrxJYNQ3i}z?bgkw3LlQ;$4wdlFU zMq1==xfDBTxso(8m`)Dv(Nch|v@AjP7TH^5Z@Gm*{)P8xv6Yq=cokV&WNmqu4Sd8W z{1k+(L$Hn3k?e_WwAx1NLFl;k2#)4BPT&G$ZI!iE)>c_tuVMn%qVv|t$ljXHT)J3` zGkuRFTzCvu5TTV-+{y6_vm$2}Hq3c|!NY$PFj zLiU9034JH@ozQne--+|kZDJy_CS*0|25-}5CvCE~eaNTC*!DF) z@H4;ipCD}ae(l52ZM$8x+eN!wwEHc#k7f+x7>~T|_R=nAyPWOmOhec0x^B1U_5x-y z3)$OCXyY!{;mpN*?0fM>KF2;5+sESXaED~TW^BRMY{w29 zj_k?PIfJt}5ATw^7=0(@Ps*RnN5@GylR8dTqTgg4^~jy<e zlsPGLQr}5EC-t2C7F$mK$R=zc`8$6Gq3@)GOJrZNIs2jCCEk3AGnd?o?JfB!2s?%` z3Yj}>q{Bu!Wbc?lHWBpPA%BOSJ4&&Wju=fWU?J|&u^4aAu?E>YWbcr@;}vw>@h0oB z=Z>H8P93s#%G#;pP91mZxKqcSdvX|KITLT$spC!^cj~zFQm)`?CNc?|=#;fn)=pVF zW$mnBE;Z=f_fo=6**hD#nWymXOP#s&IIf|L4({g-{2rHn$R~V?eJs`WQe7{V-+xvl zObuZuJEPOoa7N-Dsl7Rk^N~FzdrJ0{zEk>6>D#wV!c+nJPE{dmO4ihTbez(0O2;W3 zrv|u_r+JPS(Q!)0DIKTY;$1fI5gU;;^;Zxs)AcgDShhJ^u`S!PBY#8oWxFwo%ZTF4 zWe@N{5O#T|t^*m5%w5^cK=!Vg=)9|z8*Au*o>|L^V z$=;>!E`4`>#uw#zG! zUO{i&&hB=0x3jx9@DY0J{+$2tXAt&;3`LHfZO~iKPVB<29F6mPym3z!cG%PX?t_)5H>bxrv)u!7A=$H4pJ9Yk30qxk=suT@Rdx zw;Z^NYnZ}xa>zr+zV#6f=y*V912LRA;P*Pvj) -> Void) { - if (!CommonValidator.User.isCpf(data.username) || !CommonValidator.User.isEmail(data.username)) { + print(CommonValidator.User.isCpf(data.username)) + print(CommonValidator.User.isEmail(data.username)) + + if (!CommonValidator.User.isCpf(data.username) && !CommonValidator.User.isEmail(data.username)) { completion(.failure(.user)) return } diff --git a/KssiusBank/KssiusBankTests/Common/CommonValidatorTest.swift b/KssiusBank/KssiusBankTests/Common/CommonValidatorTest.swift new file mode 100644 index 000000000..80470ed0a --- /dev/null +++ b/KssiusBank/KssiusBankTests/Common/CommonValidatorTest.swift @@ -0,0 +1,94 @@ +// +// CommonValidateTest.swift +// KssiusBankTests +// +// Created by Cassio Sousa on 16/06/23. +// + +import XCTest +@testable import KssiusBank + +final class CommonValidatorTest: XCTestCase { + +} + +// MARK: - CPF Tests +extension CommonValidatorTest { + + // MARK: - Success CPF Authentication Response + + func testSuccessCpf() { + XCTAssertTrue(CommonValidator.User.isCpf("468.655.400-42")) + } + + + // MARK: - Failure CPF Authentication + + func testFailureCpf() { + XCTAssertFalse(CommonValidator.User.isCpf("331.876.789.90")) + } +} + +// MARK: - Email Tests +extension CommonValidatorTest { + + // MARK: - Success Email Authentication Response + + func testSuccessEmail() { + XCTAssertTrue(CommonValidator.User.isEmail("teste@teste.com")) + } + + + // MARK: - Failure Email Authentication + + func testFailureEmailDomain() { + XCTAssertFalse(CommonValidator.User.isEmail("teste@testecom")) + } + + // MARK: - Failure Email Authentication + + func testFailureEmailDomainDot() { + XCTAssertFalse(CommonValidator.User.isEmail("teste@testecom.")) + } + + // MARK: - Failure Email Authentication + + func testFailureEmailUser() { + XCTAssertFalse(CommonValidator.User.isEmail("teste @teste.com")) + } +} + +// MARK: - Password Tests + +extension CommonValidatorTest { + + // MARK: - Success Password Authentication + + func testSuccessPassword() { + XCTAssertTrue(CommonValidator.User.validatePassword("T@to123")) + } + + // MARK: - Failure Password Special char Authentication + + func testFailurePasswordSpecialCharResponse() { + XCTAssertFalse(CommonValidator.User.validatePassword("Tato123")) + } + + // MARK: - Failure Password Upper char Authentication + + func testFailurePasswordUpperCharResponse() { + XCTAssertFalse(CommonValidator.User.validatePassword("t@to123")) + } + + // MARK: - Failure Password Number Authentication + + func testFailurePasswordNumberResponse() { + XCTAssertFalse(CommonValidator.User.validatePassword("T@toBAC")) + } + + // MARK: - Failure Password Alpha char Authentication + + func testFailurePasswordAlphaResponse() { + XCTAssertFalse(CommonValidator.User.validatePassword("%@45123")) + } +} diff --git a/KssiusBank/KssiusBankTests/Core/Repositories/AutenticationRepositoryTest.swift b/KssiusBank/KssiusBankTests/Core/Repositories/AutenticationRepositoryTest.swift index ddd9d09c8..1da1aba04 100644 --- a/KssiusBank/KssiusBankTests/Core/Repositories/AutenticationRepositoryTest.swift +++ b/KssiusBank/KssiusBankTests/Core/Repositories/AutenticationRepositoryTest.swift @@ -14,9 +14,11 @@ import XCTest final class AutenticationRepositoryTest: XCTestCase { var sut: AuthenticationRepositoryProtocol? var expectation: XCTestExpectation! + let successCpfModelRequest = LoginRequestModel(username: "468.655.400-42", password: "T@to123") + let successEmailModelRequest = LoginRequestModel(username: "Marquis_Gibson@hotmail.com", password: "T@to123") override func setUp() { - sut = AuthenticationRepository(authenticationService: MockSuccessAutenticationServiceDatasource(networkService: .init())) + sut = AuthenticationRepository(authenticationService: MockSuccessAutenticationServiceDatasource()) expectation = expectation(description: "AuthenticationServiceDatasource Expectation") } @@ -27,9 +29,8 @@ final class AutenticationRepositoryTest: XCTestCase { // MARK: - Success Authentication Response func testSuccessResponse() { - let modelRequest = LoginRequestModel(username: "user", password: "pass") - sut?.perform(login: .loginRequest, with: modelRequest ){ [weak self] result in + sut?.perform(login: .loginRequest, with: successCpfModelRequest ){ [weak self] result in switch(result){ case .success(let userModel): XCTAssertEqual(userModel.email, "Marquis_Gibson@hotmail.com") @@ -45,24 +46,217 @@ final class AutenticationRepositoryTest: XCTestCase { func testErrorResponse() { - let failureNetwork = MockFailureNetworkAutenticationServiceDatasource(networkService: .init()) + let failureNetwork = MockFailureNetworkAutenticationServiceDatasource() sut = AuthenticationRepository(authenticationService: failureNetwork) - let modelRequest = LoginRequestModel(username: "error", password: "errorpass") + let modelRequest = LoginRequestModel(username: "468.655.400-42", password: "T@to123") sut?.perform(login: .loginRequest, with: modelRequest){ [weak self] result in + switch(result){ + case .success( _): + XCTFail("Should not return a failure") + case .failure( let error): + XCTAssertEqual(error , .network(.init())) + } + self?.expectation.fulfill() + } + wait(for: [self.expectation], timeout: 1.0) + } +} + + +// MARK: - CPF Tests +extension AutenticationRepositoryTest { + + // MARK: - Success CPF Authentication Response + + func testSuccessCpfResponse() { + sut = AuthenticationRepository(authenticationService: MockSuccessAutenticationServiceDatasource()) + + sut?.perform(login: .loginRequest, with: successCpfModelRequest ){ [weak self] result in + switch(result){ + case .success( let userModel): + XCTAssertEqual(userModel.email, "Marquis_Gibson@hotmail.com") + case .failure( _): + XCTFail("Should not return a failure") + + } + self?.expectation.fulfill() + } + wait(for: [self.expectation], timeout: 1.0) + } + + + // MARK: - Failure CPF Authentication Response + + func testFailureCpfResponse() { + let modelRequest = LoginRequestModel(username: "331.876.789.90", password: "pass") + sut = AuthenticationRepository(authenticationService: MockSuccessAutenticationServiceDatasource()) + + sut?.perform(login: .loginRequest, with: modelRequest ){ [weak self] result in + switch(result){ + case .success( _): + XCTFail("Should not return a failure") + case .failure( let error): + XCTAssertEqual(error , .user) + } + self?.expectation.fulfill() + } + wait(for: [self.expectation], timeout: 1.0) + } +} + + +// MARK: - Email Tests +extension AutenticationRepositoryTest { + + // MARK: - Success Email Authentication + + func testSuccessEmailResponse() { + sut = AuthenticationRepository(authenticationService: MockSuccessAutenticationServiceDatasource()) + + sut?.perform(login: .loginRequest, with: successEmailModelRequest ){ [weak self] result in + switch(result){ + case .success( let userModel): + XCTAssertEqual(userModel.email, "Marquis_Gibson@hotmail.com") + case .failure( _): + XCTFail("Should not return a failure") + + } + self?.expectation.fulfill() + } + wait(for: [self.expectation], timeout: 1.0) + } + + // MARK: - Success Email Authentication With Dot + + func testSuccessEmailWithDotResponse() { + let successEmailModelRequest = LoginRequestModel(username: "Marquis.Gibson@hotmail.com", password: "T@to123") + sut = AuthenticationRepository(authenticationService: MockSuccessAutenticationServiceDatasource()) + + sut?.perform(login: .loginRequest, with: successEmailModelRequest ){ [weak self] result in + switch(result){ + case .success( let userModel): + XCTAssertEqual(userModel.email, "Marquis_Gibson@hotmail.com") + case .failure( _): + XCTFail("Should not return a failure") + + } + self?.expectation.fulfill() + } + wait(for: [self.expectation], timeout: 1.0) + } + + + // MARK: - Failure Email domain + + func testFailureEmailDomainResponse() { + let modelRequest = LoginRequestModel(username: "test@teste", password: "pass") + sut = AuthenticationRepository(authenticationService: MockSuccessAutenticationServiceDatasource()) - //THEN + sut?.perform(login: .loginRequest, with: modelRequest ){ [weak self] result in + switch(result){ + case .success( _): + XCTFail("Should not return a failure") + case .failure( let error): + XCTAssertEqual(error , .user) + } + self?.expectation.fulfill() + } + wait(for: [self.expectation], timeout: 1.0) + } + + // MARK: - Failure Email Authentication Response + + func testFailureEmailTextResponse() { + let modelRequest = LoginRequestModel(username: "test tt@teste", password: "pass") + sut = AuthenticationRepository(authenticationService: MockSuccessAutenticationServiceDatasource()) + + sut?.perform(login: .loginRequest, with: modelRequest ){ [weak self] result in + switch(result){ + case .success( _): + XCTFail("Should not return a failure") + case .failure( let error): + XCTAssertEqual(error , .user) + } + self?.expectation.fulfill() + } + wait(for: [self.expectation], timeout: 1.0) + } +} + + + +// MARK: - Password Tests +extension AutenticationRepositoryTest { + + + // MARK: - Failure Password Special char Authentication + + func testFailurePasswordSpecialCharResponse() { + let modelRequest = LoginRequestModel(username: "test@test.com", password: "Tato123") + sut = AuthenticationRepository(authenticationService: MockSuccessAutenticationServiceDatasource()) + + sut?.perform(login: .loginRequest, with: modelRequest ){ [weak self] result in + switch(result){ + case .success( _): + XCTFail("Should not return a failure") + case .failure( let error): + XCTAssertEqual(error , .password) + } + self?.expectation.fulfill() + } + wait(for: [self.expectation], timeout: 1.0) + } + + // MARK: - Failure Password Upper char Authentication + + func testFailurePasswordUpperCharResponse() { + let modelRequest = LoginRequestModel(username: "test@test.com", password: "t@to123") + sut = AuthenticationRepository(authenticationService: MockSuccessAutenticationServiceDatasource()) + + sut?.perform(login: .loginRequest, with: modelRequest ){ [weak self] result in + switch(result){ + case .success( _): + XCTFail("Should not return a failure") + case .failure( let error): + XCTAssertEqual(error , .password) + } + self?.expectation.fulfill() + } + wait(for: [self.expectation], timeout: 1.0) + } + + // MARK: - Failure Password Number Authentication + + func testFailurePasswordNumberResponse() { + let modelRequest = LoginRequestModel(username: "test@test.com", password: "T@toBAC") + sut = AuthenticationRepository(authenticationService: MockSuccessAutenticationServiceDatasource()) + + sut?.perform(login: .loginRequest, with: modelRequest ){ [weak self] result in + switch(result){ + case .success( _): + XCTFail("Should not return a failure") + case .failure( let error): + XCTAssertEqual(error , .password) + } + self?.expectation.fulfill() + } + wait(for: [self.expectation], timeout: 1.0) + } + + // MARK: - Failure Password Alpha char Authentication + + func testFailurePasswordAlphaResponse() { + let modelRequest = LoginRequestModel(username: "test@test.com", password: "%@45123") + sut = AuthenticationRepository(authenticationService: MockSuccessAutenticationServiceDatasource()) + + sut?.perform(login: .loginRequest, with: modelRequest ){ [weak self] result in switch(result){ case .success( _): XCTFail("Should not return a failure") case .failure( let error): - switch( error ){ - case .network( _): - XCTAssertEqual(error, BankFailure.network(.init())) - default: - XCTFail("Should not return a failure") - } + XCTAssertEqual(error , .password) } self?.expectation.fulfill() } diff --git a/KssiusBank/KssiusBankTests/Core/Repositories/MockAutenticationServiceDatasource.swift b/KssiusBank/KssiusBankTests/Core/Repositories/MockAutenticationServiceDatasource.swift index 9de51855d..f213d11c5 100644 --- a/KssiusBank/KssiusBankTests/Core/Repositories/MockAutenticationServiceDatasource.swift +++ b/KssiusBank/KssiusBankTests/Core/Repositories/MockAutenticationServiceDatasource.swift @@ -10,6 +10,10 @@ import Foundation // MARK: - Success mock AutenticationServiceDatasource final class MockSuccessAutenticationServiceDatasource: AuthenticationServiceDatasourceProtocol { + convenience init() { + self.init(networkService: .init()) + } + init(networkService: NetworkService) {} func perform(login: AutenticationApi.Endpoints, with data: LoginRequestModel, completion: @escaping (Result) -> Void) { @@ -27,9 +31,27 @@ final class MockSuccessAutenticationServiceDatasource: AuthenticationServiceData // MARK: - Failure network AutenticationServiceDatasource final class MockFailureNetworkAutenticationServiceDatasource: AuthenticationServiceDatasourceProtocol { + + convenience init() { + self.init(networkService: .init()) + } + init(networkService: NetworkService) {} func perform(login: AutenticationApi.Endpoints, with data: LoginRequestModel, completion: @escaping (Result) -> Void) { completion(.failure(.network(.init()))) } } + +//final class MockFailureCpfAutenticationServiceDatasource: AuthenticationServiceDatasourceProtocol { +// convenience init() { +// self.init(networkService: .init()) +// } +// +// init(networkService: NetworkService) {} +// +// func perform(login: AutenticationApi.Endpoints, with data: LoginRequestModel, completion: @escaping (Result) -> Void) { +// completion(.failure()) +// } +//} + From 17a3663b3e942c19db93ac595ccc84378ebf0396 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Sousa?= Date: Fri, 16 Jun 2023 16:29:00 -0300 Subject: [PATCH 07/23] =?UTF-8?q?-=20Pequeno=20refactor=20na=20constru?= =?UTF-8?q?=C3=A7=C3=A3o=20dos=20elementos=20da=20login=20controller.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../KssiusBank.xcodeproj/project.pbxproj | 1 + .../UserInterfaceState.xcuserstate | Bin 157518 -> 152902 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 224 ++++++++++++++++++ .../AutenticationRepository.swift | 3 - .../Autentication/LoginInteractor.swift | 4 +- .../Autentication/LoginViewController.swift | 135 +++++------ .../Autehntication/AutenticationApi.swift | 4 +- 7 files changed, 298 insertions(+), 73 deletions(-) diff --git a/KssiusBank/KssiusBank.xcodeproj/project.pbxproj b/KssiusBank/KssiusBank.xcodeproj/project.pbxproj index 4c64ad115..7016a7a66 100644 --- a/KssiusBank/KssiusBank.xcodeproj/project.pbxproj +++ b/KssiusBank/KssiusBank.xcodeproj/project.pbxproj @@ -510,6 +510,7 @@ BuildIndependentTargetsInParallel = 1; LastSwiftUpdateCheck = 1430; LastUpgradeCheck = 1430; + ORGANIZATIONNAME = "Cassio Sousa"; TargetAttributes = { DF0BA7C22A3BE5CD00A812F4 = { CreatedOnToolsVersion = 14.3; diff --git a/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/UserInterfaceState.xcuserstate b/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/UserInterfaceState.xcuserstate index 189df510069efcb966ff954507aa7d4e81eaa087..abb8546cd6a1c92cb69f64e54ba7fdeca0d60261 100644 GIT binary patch literal 152902 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 z z-s1yC=dn&)nTt9n0DDc;ISJTndx_(5PSIz(#)&@LC>Xb*h|@1X!ANzx+s`@Axj;g3 zzKCL5FN#z->j{a~&WN+dx!AeHS?fH}xzt(bM1{N^*d4%L2kiC0?gaJ*U}M1E2<%P3 z-W+o_$RsvNQqg%5A#s;N;w^Ehc*g*U{Q%;b1jO~g?p8oNr>D`PbE6X-wWCgyEqkI) zlr6XR62i-zR}!LXoEWnlAtW2|omUg>e0wL^W=MEN5pPkaw0+;XP2}*-9!e=iVotJs z-+80+Cg;u0UC!OkTbz5Gw>ocg-VW^Dz}^Gwy};fF?ES#v5aU5$aftCSu#d!?^7ehF zynWwEw(ql;Kacza_R%rS$N-}wfxk42qm2ztDiAin1$`}dvi6XpB_QO?#s$;!)3-J2DipE|#gq~Yfxg-;=c z-MREA6n^LYoly9_^9SdT&V$aMoQIr0JAZNh>iiAZXMlYcSiIEdfqenk7lC~V*q4Fb z2ka{`=O2+!ksI|CH)3Pa|J|P%EoDS6OoMH z4UpImB+exyqDAcsg~SC&qW&oRd*lTaYOp-%y`9DClFO=ot#RSJc z6&(LoqshdBJNdEX$CIB(elq!~7+`xH&^8)7s&JSDwxM0jBdvUvDFK!p{;^smMiz&)< zg&Q`&V&AjqB3|6CG~mKAi!S2D-Sy@cg^mIj@#A(C0yjA7IvThky<^ce+9mmMyF@>3 z?kLo=E_C!N18!(1tPJWMN_FKf$&uS7I&yQvdn%@sndTy%+^*@a8LpYGS+3cxIj*^` zd9LGK^MS*QO$ROmxJ=-(fXfCh2e@3|@_@^axnxgn*CJ|k;vrSoMLfB=0)@sAkT4CW zZ^gik8lbTsXe6H8t`^`56&i^rx7m@fg}iX#8K*7eEiM;br@4qPx2qMnqoc0Vfjg#` zEUtG+zT7U+mzx`jP*F<=iwVbdVo`x=gNy9#r&hQwBI87EbZ^RB?%GB`yux**>nhjP zt}U)>T-Um`x}vT&;EI4lkV=3D@Z--dVwHS<9Z%-GjLN;(Yi=RZ>}?i`WB_oYc9!|+a)@4bJKe$ zq!fAIMVz@^AGkhredPMs^@(f0>wxQ1*JrNJftv~3EZ}AXHwU=6z|8~hc;HY@E&y&} z%q2T>yS^22g*=pp#F?9`P%vCXmRAxF5rJ4Uz+vBW=qAqG?nK~DkU4Y{XKpt`XOS0h zmAJMgz2n;RNV&J&8aHv~cH>aLD(cn)SKT`r-DWpgxN{R{ZZ1Lwi^2k&KPMjSYW}R$ z<#zi-q3HICLUAz)MPUIEq=^T+6Qu4GcP7&49_$|CKFU4RJa!d%1gsyV2d`Zg#i0SGrGf zuLAB=;7$V$M;8Fx>A;-<+&bXS1a3WWXT{tn%QT)UE%>=lCp6+(vqa;$@tMnj8$>?@ z1a)sDG+qSUISP%Nds5NvtK3@%hgSo4UetXJaOd}u!#4L0i9=k?MiqSl64hPo9EGSG z-Mb_RZx$ik(2F9syB{JD-r>H}eV6-g_dV`=-S@fgcR%2M5IDTXi-Fq&+-Be|0q#=Z zE(7jz;I07f%9#6M8Nx^1kEu7IXnc}DsQ5o{TYzhW1Ot(d+XiG}Kgh(_2!*c$r}#g( zF@JdXPKxdi-5(PQKLYNWsQVM(dg=S%{>&}L-L7$C+-;#H?!UunL$tFv6xiSx zX`hu!LGnlUAqh$JhQYbZ_MXZsW&ZH6gvmeMf4Tqms5}XtM334-d1wy<+;zZR58O`R zZU8O@+>OAYjr3;Vb^*6L=HVnJJxP*a^ymqbwN@NG{f87dM0=#dL{vfV-B39 z-4EOYz@eyo2)KuVdjz;!yvIsHX|ICwocaNuHAliK_^SPl+V1AtXNC z6^V%n3Rd7*Cy{uDNaC}E#5IJ(r@JNbT+bzh#PdAodoJ)?=-J@e=()&qv1gNKGjPuX z_X2P)0{0SdF9Wv^IBdeJz`X|C>oL!zGKp8pBwj;Ed_y4-7tW(_Wo>x4tdS3Iq?s>!Wrspls+rZ)A;$z@&aIqh_ z1Hj=z(`Ue;q2~+WzKnU^l}Y?i*3J6~iC-xseiPTt16d6EVbbFHk&t*0xUUrwe?}6i znF(9S3lfecemVHoE))OqstAdH1NUvzn*bc9ALxyC_R?NXB+<)?Boe0vuOJQ>f9Q-N zrR??d>byn~MXy0b@nBEIWEQ=4ZxC7ZI=oJAve)Hxdp%yS*XQ+n1Hc^u?q}eB0q$4e zegp1z;Qj#aPvHIn?(dj4B(dlnLO)86RE536kwsofTfpPu{D4^Od$H&p zfiQZH23|>9;2ni9G8Nu2_$r2kPk=|?1$OB_tUZySZ zPWB#$YB_O=ip zt+H_B?TVV_-2*)K1CM7A9@hbHlZB)AEacH~d%{)ZMV$23i*Iq^=)KUpk&w6nct_NG z5%A7l3dc*lmrKHtL|6nqnMk=SiE!jyouD!ZO1=*7wca)f#i)p)r>9~HzB|3Q5f*Ro z#=JLrZ}Q&k-R0fwy~Vr7dn@oh;Qhb{fDZy60zM3U3h;x0N9K--dC^yq{PW%|DQfTi zgvFr>i^CN~&1Vj<*bgi|O;~&e_+bi*&m)W7Za($C>V2J%_!{u3QSTeTr}dJ=cf9XQ zB)%t-m`-p?fvKNCUB>Y$e8zcnZv*7NA*pruun}m9HnrGz8wDo z3X`${KajqlA4ZHm1A^#79W`18(Pu#reO9{8XC3qa@MF-Ao4l(lP)Ymb-uAhD#GBja z0lqluLorj*I~;u>AMxh)5pQn3l&EMQ@#f~sx>C{XlS*xAKFOWiC%SX<;}Az5ap%Tz z-Kc0^zK^(b`wD!8z7f8oeaHAl`bPOi`^NZ+fG-CgM->x*p9uUU;3oq=1$Y$G#{oYr z=9AsIed8n*?IZ5oypphhpA}cp#}A0bz88x=;?3=w2fUK7z(>5feG6%oZ=vIM;AcX@ z$>be%b(!9w@DcGXCNv^bv!lKxz|ZL=jdi{TQ8@ZA<_GrwT-3L|6{4D+*9j~`;!LHw zmA=)Ybo8wfrQ`gbiYaAI^PNk0Z1sWfbl(}ib-puw>wRbW&i0)H{6gR>fIk8FO5hg( zUj=+M@DbqgdKSlg=Skwxx52m3XGQV2iSW2Y5s!7iufWHXh{whOAo~HxC;_q!_*z9g z?jS&3hvIRk9*0sG$P2~eQe2isAdB=RN`LS2-9nJu4g9jGZx8VGy+ra3-`x_DcZo#EI<;;G23Vt`vF7_X;8NY2P!xXMNB4p7*`r zd(roj?`7XU;9G!S3H(XGuL6EG@c8Jh0sa)=*8+cP%=fBH=9@UXehkTcmymgyLMDi_ z>%D}`GY81*2Qt4TWPSyFt3u|tNTzuL`ZD4RUA&1eBfiCFGrmKV zKhPUfkMB=EnuyTo=)=t;C??k-RPbLpreh2Vp1CMg@T;R_G{(Rss0RBSYaaOhw_={rxWQjw+SDMK9gM`D2 z6%NtCNJ=No4`eUshw-By{kfz5EZ}hizUZ{$$GmK~3gfsPUl>mv1I%Cw6nsag9)*r$ z{G$*=|4863iTXza-^<(u{u2LK5kx<_(ISYKAyxkIL^yU%LSSGoQ)-*!pDM99MP%{H z9!e=iX89`#i?jW6{B!;D{Kxy}`xp2Z`YZgXq^|~k3-H$fe=YD^fsX=@+F={;+kxK^ z^DmNFtdT~K{u2p{O6mfBXMFTHkh-8hSVV8`s2>%TlDfc;x!Jm(RQu2HpGi1e2mB3D z|9aqinYzG#uKxlg%6}f2#oUM}w)rnaKSus096ENAh=v54Le*yfWfF*&iXiU7aijl2 zak$wz<$+RWi+?8}@f!cN{;mF~zs2K?i|KLPxcz&{22)4=1EJPZ7DG5>cm zh6iQk{0qTQ$y~t4GZ*l$42%)`evBAk5W@fqypp*fApDbZ4j2L^L@|ICp_ifoGw{94 zUJ$ScFl8H}7;uUx?jzD|yeQo|YiAj&fIkotNeo~xVw|qL+M6;%1G$J|U|3*yAT^K{ zNDpKLG6PwG>_86iuLF;^(KmsA3;4Hze+T$?fqxJ9_ksT)7QpQVQfBoPCn2#Oyn z3s-#U#el_GZqNL=o~-GO@o_Xh3@+#h%#@L=Gfz{7z@fd32lzd=xe zkN`p=2x<^05NHq>5ZG8ij>{c*Lek8EXOKjJlSvc?Dbr>_H$Y-PkVxWk2i^jKS4bpr zxtWT<`{YHuA_PHtN4ugjg9z*od`f6M076nU@EHi2UefqgK#I#9_=X5YL5p1dLwc6L zPXRO*;bzpp&qOE+`d$?IE65WR{|>5x3BkmmI!FcSAQNPR90*1bOdyy+uz+9%!3KgI z1P2IC5Rzj-K@y5Vt%PFGNKkYsD0<^41_w~=dlZ8{L^0?G!7Za03?Yiht2D5`wRPJD|h++VTd>rPS!u@;~b|>S4#{@@< zECxr3EQWehrYtxWVGNE9jthYHAAqqRU|dXKTmnL-0^?GIG4YUk6M3OWH|{kO z-xOnFurb(7Kx_gbI~r^OA*Yuht`43;psES35kbsFsDh^w5QV%>AnMo3>Na>raJ_`$ znIeh>J(W_*oFBZ5pm;&>!r+GB#^6Q4i-Vhjn}e4GF9l%)2uFi(3%Gg81mpkMLIYY@ISI8amguEeN$R7%TZ~_RG zAS?o*3WRD9A|TX&uowi?2DPz}?8_Y*BB|vN@#PjyR4}ZItK}5~81_AeA>zs%LQS<) z#xO)&xh-J%i@ZoMFZmPJG3LFlCmL}+4Yil~@FlSLGX3q


s<+#`sx}&I93m5H0`#FJ=P>crh1& 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 literal 157518 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 OKfl}L|Nj>Z_52@n^>;}C diff --git a/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index 6763090d8..e684dad89 100644 --- a/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -20,5 +20,229 @@ landmarkType = "7"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/KssiusBank/KssiusBank/Core/Data/Repositories/AutenticationRepository.swift b/KssiusBank/KssiusBank/Core/Data/Repositories/AutenticationRepository.swift index ed5ed3c3e..bd8866496 100644 --- a/KssiusBank/KssiusBank/Core/Data/Repositories/AutenticationRepository.swift +++ b/KssiusBank/KssiusBank/Core/Data/Repositories/AutenticationRepository.swift @@ -24,9 +24,6 @@ final class AuthenticationRepository :AuthenticationRepositoryProtocol { extension AuthenticationRepository { func perform(login: AutenticationApi.Endpoints, with data: LoginRequestModel, completion: @escaping (Result) -> Void) { - print(CommonValidator.User.isCpf(data.username)) - print(CommonValidator.User.isEmail(data.username)) - if (!CommonValidator.User.isCpf(data.username) && !CommonValidator.User.isEmail(data.username)) { completion(.failure(.user)) return diff --git a/KssiusBank/KssiusBank/Scenes/Autentication/LoginInteractor.swift b/KssiusBank/KssiusBank/Scenes/Autentication/LoginInteractor.swift index bab3957e6..9a0b9032d 100644 --- a/KssiusBank/KssiusBank/Scenes/Autentication/LoginInteractor.swift +++ b/KssiusBank/KssiusBank/Scenes/Autentication/LoginInteractor.swift @@ -26,8 +26,8 @@ final class LoginInteractor: LoginBusinessLogic, LoginDataStore { // MARK: - Properties - var presenter: LoginPresentationLogic? - var worker: LoginWorker? + private let presenter: LoginPresentationLogic? + private let worker: LoginWorker? // MARK: - DataSource var account: UserAccountModel? diff --git a/KssiusBank/KssiusBank/Scenes/Autentication/LoginViewController.swift b/KssiusBank/KssiusBank/Scenes/Autentication/LoginViewController.swift index 385491b6e..ba35ddaef 100644 --- a/KssiusBank/KssiusBank/Scenes/Autentication/LoginViewController.swift +++ b/KssiusBank/KssiusBank/Scenes/Autentication/LoginViewController.swift @@ -14,82 +14,85 @@ import UIKit protocol LoginDisplayLogic: AnyObject { - func presentLogin(viewModel: Login.Login.ViewModel) - func resolveLogin(viewModel: Login.Login.ViewModel) + func presentLogin(viewModel: Login.Login.ViewModel) + func resolveLogin(viewModel: Login.Login.ViewModel) } class LoginViewController: UIViewController { - var interactor: LoginBusinessLogic? - var router: (NSObjectProtocol & LoginRoutingLogic & LoginDataPassing)? - - // MARK: Object lifecycle - - override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) - { - super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) - setup() - } - - required init?(coder aDecoder: NSCoder) - { - super.init(coder: aDecoder) - setup() - } - - // MARK: Setup - - private func setup() - { - let viewController = self - let interactor = LoginInteractor() - let presenter = LoginPresenter() - let router = LoginRouter() - viewController.interactor = interactor - viewController.router = router - interactor.presenter = presenter - presenter.viewController = viewController - router.viewController = viewController - router.dataStore = interactor - } - - // MARK: Routing - - override func prepare(for segue: UIStoryboardSegue, sender: Any?) - { - if let scene = segue.identifier { - let selector = NSSelectorFromString("routeTo\(scene)WithSegue:") - if let router = router, router.responds(to: selector) { - router.perform(selector, with: segue) - } + var interactor: LoginBusinessLogic? + var router: (NSObjectProtocol & LoginRoutingLogic & LoginDataPassing)? + + // MARK: Object lifecycle + + override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) + { + super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) + setup() + } + + required init?(coder aDecoder: NSCoder) + { + super.init(coder: aDecoder) + setup() + } + + // MARK: Setup + + private func setup() + { + let authenticationService = AuthenticationServiceDatasource(networkService: .init()) + let autenticationRepository = AuthenticationRepository(authenticationService: authenticationService) + let worker = LoginWorker(authenticaionRepository: autenticationRepository) + let viewController = self + + let presenter = LoginPresenter() + let interactor = LoginInteractor(presenter: presenter, worker: worker) + let router = LoginRouter() + viewController.interactor = interactor + viewController.router = router + presenter.viewController = viewController + router.viewController = viewController + router.dataStore = interactor + } + + // MARK: Routing + + override func prepare(for segue: UIStoryboardSegue, sender: Any?) + { + if let scene = segue.identifier { + let selector = NSSelectorFromString("routeTo\(scene)WithSegue:") + if let router = router, router.responds(to: selector) { + router.perform(selector, with: segue) + } + } + } + + // MARK: View lifecycle + + override func viewDidLoad() + { + super.viewDidLoad() + doSomething() } - } - - // MARK: View lifecycle - - override func viewDidLoad() - { - super.viewDidLoad() - doSomething() - } - - // MARK: Do something - - //@IBOutlet weak var nameTextField: UITextField! - - func doSomething() - { - let request = Login.Login.Request() - interactor?.login(request: request) - } - + + // MARK: Do something + + //@IBOutlet weak var nameTextField: UITextField! + + func doSomething() + { + let request = Login.Login.Request(user: "teste@teste.com", password: "T@to123") + interactor?.login(request: request) + } + } extension LoginViewController: LoginDisplayLogic { func resolveLogin(viewModel: Login.Login.ViewModel) { - //nameTextField.text = viewModel.name + //nameTextField.text = viewModel.name if viewModel.success { }else { @@ -99,6 +102,6 @@ extension LoginViewController: LoginDisplayLogic { } func presentLogin(viewModel: Login.Login.ViewModel) { - //nameTextField.text = viewModel.name + //nameTextField.text = viewModel.name } } diff --git a/KssiusBank/KssiusBank/Services/Autehntication/AutenticationApi.swift b/KssiusBank/KssiusBank/Services/Autehntication/AutenticationApi.swift index 624561cb2..b0f617f75 100644 --- a/KssiusBank/KssiusBank/Services/Autehntication/AutenticationApi.swift +++ b/KssiusBank/KssiusBank/Services/Autehntication/AutenticationApi.swift @@ -9,7 +9,7 @@ import Foundation enum AutenticationApi{ - static let baseUrl = "http://" + static let baseUrl = "https://648bb0bf17f1536d65eb2264.mockapi.io/api" enum Endpoints { case loginRequest } @@ -18,7 +18,7 @@ extension AutenticationApi.Endpoints { var endpoint: Endpoint { switch self { case .loginRequest: - return Endpoint(path: "/login", method: .post, configuration: .init(baseUrl: AutenticationApi.baseUrl)) + return Endpoint(path: "login", method: .post, configuration: .init(baseUrl: AutenticationApi.baseUrl)) } } } From 9102aaf388df68e941008169f815be5e2c1bd17f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Sousa?= Date: Fri, 16 Jun 2023 18:45:30 -0300 Subject: [PATCH 08/23] =?UTF-8?q?-=20Salvando=20usu=C3=A1rio=20localmente?= =?UTF-8?q?=20com=20keychain=20para=20seguran=C3=A7a,=20e=20casos=20de=20t?= =?UTF-8?q?estes=20de=20salvar=20usu=C3=A1rios,?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../KssiusBank.xcodeproj/project.pbxproj | 136 ++++++++++- .../UserInterfaceState.xcuserstate | Bin 152902 -> 182539 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 224 ------------------ .../AutenticationLocalDatasource.swift | 49 ++++ ...AutenticationLocalDatasourceProtocol.swift | 15 ++ .../AutenticationServiceDatasource.swift | 0 ...henticationServiceDatasourceProtocol.swift | 0 .../Data/Models/LoginRequestModel.swift | 0 .../Data/Models/UserAccountModel.swift | 0 .../AutenticationLocalRepository.swift | 38 +++ .../AutenticationRepository.swift | 6 +- ...uthenticationLocalRepositoryProtocol.swift | 15 ++ .../AuthenticationRepositoryProtocol.swift | 0 .../Core/{ => User}/Data/UserFailure.swift | 0 .../Autentication/LoginInteractor.swift | 20 +- .../Autentication/LoginViewController.swift | 14 +- .../Scenes/Autentication/LoginWorker.swift | 11 +- .../KssiusBank/Services/NetworkService.swift | 6 - .../Workers/AuthenticationWorker.swift | 34 --- .../KssiusBank/Workers/UserWorker.swift | 41 ++++ .../AutenticationLocalDatasourceTest.swift | 62 +++++ .../AuthenticationLocalRepositoryTest.swift | 64 +++++ ...ift => AuthenticationRepositoryTest.swift} | 12 +- ...AutenticationLocalDatasourceProtocol.swift | 27 +++ .../MockAutenticationServiceDatasource.swift | 12 - KssiusBank/KssiusBankTests/Seeds.swift | 2 +- .../MockAuthenticationLocalRepository.swift | 37 +++ .../Workers/UserWorkersTest.swift | 93 ++++++++ KssiusBank/Podfile | 1 + 29 files changed, 608 insertions(+), 311 deletions(-) create mode 100644 KssiusBank/KssiusBank/Core/User/Data/DataSources/AutenticationLocalDatasource.swift create mode 100644 KssiusBank/KssiusBank/Core/User/Data/DataSources/AutenticationLocalDatasourceProtocol.swift rename KssiusBank/KssiusBank/Core/{ => User}/Data/DataSources/AutenticationServiceDatasource.swift (100%) rename KssiusBank/KssiusBank/Core/{ => User}/Data/DataSources/AuthenticationServiceDatasourceProtocol.swift (100%) rename KssiusBank/KssiusBank/Core/{ => User}/Data/Models/LoginRequestModel.swift (100%) rename KssiusBank/KssiusBank/Core/{ => User}/Data/Models/UserAccountModel.swift (100%) create mode 100644 KssiusBank/KssiusBank/Core/User/Data/Repositories/AutenticationLocalRepository.swift rename KssiusBank/KssiusBank/Core/{ => User}/Data/Repositories/AutenticationRepository.swift (86%) create mode 100644 KssiusBank/KssiusBank/Core/User/Data/Repositories/AuthenticationLocalRepositoryProtocol.swift rename KssiusBank/KssiusBank/Core/{ => User}/Data/Repositories/AuthenticationRepositoryProtocol.swift (100%) rename KssiusBank/KssiusBank/Core/{ => User}/Data/UserFailure.swift (100%) delete mode 100644 KssiusBank/KssiusBank/Workers/AuthenticationWorker.swift create mode 100644 KssiusBank/KssiusBank/Workers/UserWorker.swift create mode 100644 KssiusBank/KssiusBankTests/Core/Data/datasources/AutenticationLocalDatasourceTest.swift create mode 100644 KssiusBank/KssiusBankTests/Core/Repositories/AuthenticationLocalRepositoryTest.swift rename KssiusBank/KssiusBankTests/Core/Repositories/{AutenticationRepositoryTest.swift => AuthenticationRepositoryTest.swift} (97%) create mode 100644 KssiusBank/KssiusBankTests/Core/Repositories/Mock/MockAutenticationLocalDatasourceProtocol.swift rename KssiusBank/KssiusBankTests/Core/Repositories/{ => Mock}/MockAutenticationServiceDatasource.swift (77%) create mode 100644 KssiusBank/KssiusBankTests/Workers/Mock/MockAuthenticationLocalRepository.swift create mode 100644 KssiusBank/KssiusBankTests/Workers/UserWorkersTest.swift diff --git a/KssiusBank/KssiusBank.xcodeproj/project.pbxproj b/KssiusBank/KssiusBank.xcodeproj/project.pbxproj index 7016a7a66..a10956bad 100644 --- a/KssiusBank/KssiusBank.xcodeproj/project.pbxproj +++ b/KssiusBank/KssiusBank.xcodeproj/project.pbxproj @@ -38,8 +38,8 @@ DF0BA8322A3BF03900A812F4 /* LoginModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA82C2A3BF03900A812F4 /* LoginModels.swift */; }; DF0BA8332A3BF03900A812F4 /* LoginViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA82D2A3BF03900A812F4 /* LoginViewController.swift */; }; DF0BA8342A3BF03900A812F4 /* LoginInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA82E2A3BF03900A812F4 /* LoginInteractor.swift */; }; - DF0BA8362A3BF05800A812F4 /* AuthenticationWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFEC18562A3BD314001277A2 /* AuthenticationWorker.swift */; }; - DF0BA8372A3BF05800A812F4 /* AuthenticationWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFEC18562A3BD314001277A2 /* AuthenticationWorker.swift */; }; + DF0BA8362A3BF05800A812F4 /* UserWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFEC18562A3BD314001277A2 /* UserWorker.swift */; }; + DF0BA8372A3BF05800A812F4 /* UserWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFEC18562A3BD314001277A2 /* UserWorker.swift */; }; DF0BA8392A3BFB6100A812F4 /* Seeds.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8382A3BFB6100A812F4 /* Seeds.swift */; }; DF0BA8432A3C7AAD00A812F4 /* AuthenticationRepositoryProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8422A3C7AAD00A812F4 /* AuthenticationRepositoryProtocol.swift */; }; DF0BA8472A3C7C0200A812F4 /* AutenticationRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8462A3C7C0200A812F4 /* AutenticationRepository.swift */; }; @@ -52,7 +52,7 @@ DF0BA85C2A3C976900A812F4 /* LoginRequestModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA85A2A3C976900A812F4 /* LoginRequestModel.swift */; }; DF0BA85E2A3C985500A812F4 /* AuthenticationServiceDatasourceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA85D2A3C985500A812F4 /* AuthenticationServiceDatasourceProtocol.swift */; }; DF0BA85F2A3C985500A812F4 /* AuthenticationServiceDatasourceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA85D2A3C985500A812F4 /* AuthenticationServiceDatasourceProtocol.swift */; }; - DF0BA8622A3C998100A812F4 /* AutenticationRepositoryTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8602A3C998100A812F4 /* AutenticationRepositoryTest.swift */; }; + DF0BA8622A3C998100A812F4 /* AuthenticationRepositoryTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8602A3C998100A812F4 /* AuthenticationRepositoryTest.swift */; }; DF0BA8652A3C9A3E00A812F4 /* MockSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8632A3C9A3E00A812F4 /* MockSession.swift */; }; DF0BA8662A3C9B4600A812F4 /* AuthenticationRepositoryProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8422A3C7AAD00A812F4 /* AuthenticationRepositoryProtocol.swift */; }; DF0BA8692A3C9BA900A812F4 /* MockAutenticationServiceDatasource.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8672A3C9BA900A812F4 /* MockAutenticationServiceDatasource.swift */; }; @@ -67,6 +67,19 @@ DF0BA87F2A3CC4ED00A812F4 /* Strings+Generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA87D2A3CC4ED00A812F4 /* Strings+Generated.swift */; }; DF0BA8802A3CC4F300A812F4 /* Strings+Generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA87D2A3CC4ED00A812F4 /* Strings+Generated.swift */; }; DF0BA8812A3CC4F500A812F4 /* XCAssets+Generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA87C2A3CC4ED00A812F4 /* XCAssets+Generated.swift */; }; + DF4624C62A3CF0AC00CBC35D /* AutenticationLocalDatasourceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF4624C52A3CF0AC00CBC35D /* AutenticationLocalDatasourceProtocol.swift */; }; + DF4624C72A3CF0AC00CBC35D /* AutenticationLocalDatasourceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF4624C52A3CF0AC00CBC35D /* AutenticationLocalDatasourceProtocol.swift */; }; + DF4624C92A3CF0D700CBC35D /* AutenticationLocalDatasource.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF4624C82A3CF0D700CBC35D /* AutenticationLocalDatasource.swift */; }; + DF4624CA2A3CF0D700CBC35D /* AutenticationLocalDatasource.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF4624C82A3CF0D700CBC35D /* AutenticationLocalDatasource.swift */; }; + DF4624CC2A3CF6DB00CBC35D /* AutenticationLocalRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF4624CB2A3CF6DB00CBC35D /* AutenticationLocalRepository.swift */; }; + DF4624CD2A3CF6DB00CBC35D /* AutenticationLocalRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF4624CB2A3CF6DB00CBC35D /* AutenticationLocalRepository.swift */; }; + DF4624CF2A3CF6EE00CBC35D /* AuthenticationLocalRepositoryProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF4624CE2A3CF6EE00CBC35D /* AuthenticationLocalRepositoryProtocol.swift */; }; + DF4624D02A3CF6EE00CBC35D /* AuthenticationLocalRepositoryProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF4624CE2A3CF6EE00CBC35D /* AuthenticationLocalRepositoryProtocol.swift */; }; + DF4624D32A3D030700CBC35D /* AutenticationLocalDatasourceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF4624D12A3D030700CBC35D /* AutenticationLocalDatasourceTest.swift */; }; + DF4624D52A3D080600CBC35D /* AuthenticationLocalRepositoryTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF4624D42A3D080600CBC35D /* AuthenticationLocalRepositoryTest.swift */; }; + DF4624D82A3D091400CBC35D /* MockAutenticationLocalDatasourceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF4624D72A3D091400CBC35D /* MockAutenticationLocalDatasourceProtocol.swift */; }; + DF4624DB2A3D0A8400CBC35D /* UserWorkersTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF4624DA2A3D0A8400CBC35D /* UserWorkersTest.swift */; }; + DF4624DE2A3D0DF000CBC35D /* MockAuthenticationLocalRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF4624DD2A3D0DF000CBC35D /* MockAuthenticationLocalRepository.swift */; }; DF7D3F8D2A3CE0A90009770F /* CommonValidatorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF7D3F8C2A3CE0A90009770F /* CommonValidatorTest.swift */; }; /* End PBXBuildFile section */ @@ -124,7 +137,7 @@ DF0BA8572A3C87AE00A812F4 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; DF0BA85A2A3C976900A812F4 /* LoginRequestModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginRequestModel.swift; sourceTree = ""; }; DF0BA85D2A3C985500A812F4 /* AuthenticationServiceDatasourceProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationServiceDatasourceProtocol.swift; sourceTree = ""; }; - DF0BA8602A3C998100A812F4 /* AutenticationRepositoryTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutenticationRepositoryTest.swift; sourceTree = ""; }; + DF0BA8602A3C998100A812F4 /* AuthenticationRepositoryTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationRepositoryTest.swift; sourceTree = ""; }; DF0BA8632A3C9A3E00A812F4 /* MockSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockSession.swift; sourceTree = ""; }; DF0BA8672A3C9BA900A812F4 /* MockAutenticationServiceDatasource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAutenticationServiceDatasource.swift; sourceTree = ""; }; DF0BA86B2A3CA9AB00A812F4 /* UserFailure.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserFailure.swift; sourceTree = ""; }; @@ -133,9 +146,18 @@ DF0BA87A2A3CC2B500A812F4 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Localizable.strings"; sourceTree = ""; }; DF0BA87C2A3CC4ED00A812F4 /* XCAssets+Generated.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "XCAssets+Generated.swift"; sourceTree = ""; }; DF0BA87D2A3CC4ED00A812F4 /* Strings+Generated.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Strings+Generated.swift"; sourceTree = ""; }; + DF4624C52A3CF0AC00CBC35D /* AutenticationLocalDatasourceProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutenticationLocalDatasourceProtocol.swift; sourceTree = ""; }; + DF4624C82A3CF0D700CBC35D /* AutenticationLocalDatasource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutenticationLocalDatasource.swift; sourceTree = ""; }; + DF4624CB2A3CF6DB00CBC35D /* AutenticationLocalRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutenticationLocalRepository.swift; sourceTree = ""; }; + DF4624CE2A3CF6EE00CBC35D /* AuthenticationLocalRepositoryProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationLocalRepositoryProtocol.swift; sourceTree = ""; }; + DF4624D12A3D030700CBC35D /* AutenticationLocalDatasourceTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutenticationLocalDatasourceTest.swift; sourceTree = ""; }; + DF4624D42A3D080600CBC35D /* AuthenticationLocalRepositoryTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationLocalRepositoryTest.swift; sourceTree = ""; }; + DF4624D72A3D091400CBC35D /* MockAutenticationLocalDatasourceProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAutenticationLocalDatasourceProtocol.swift; sourceTree = ""; }; + DF4624DA2A3D0A8400CBC35D /* UserWorkersTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserWorkersTest.swift; sourceTree = ""; }; + DF4624DD2A3D0DF000CBC35D /* MockAuthenticationLocalRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAuthenticationLocalRepository.swift; sourceTree = ""; }; DF7D3F8C2A3CE0A90009770F /* CommonValidatorTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommonValidatorTest.swift; sourceTree = ""; }; DFEC18532A3BD28C001277A2 /* UserAccountModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserAccountModel.swift; sourceTree = ""; }; - DFEC18562A3BD314001277A2 /* AuthenticationWorker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationWorker.swift; sourceTree = ""; }; + DFEC18562A3BD314001277A2 /* UserWorker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserWorker.swift; sourceTree = ""; }; DFEC18592A3BD423001277A2 /* NetworkService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkService.swift; sourceTree = ""; }; DFEC185E2A3BD43B001277A2 /* BankFailure.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BankFailure.swift; sourceTree = ""; }; DFEC18632A3BD4A2001277A2 /* AutenticationApi.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutenticationApi.swift; sourceTree = ""; }; @@ -208,6 +230,7 @@ DF0BA7DE2A3BE5D000A812F4 /* KssiusBankTests */ = { isa = PBXGroup; children = ( + DF4624D92A3D0A6A00CBC35D /* Workers */, DF7D3F8B2A3CE0880009770F /* Common */, DF0BA84F2A3C830700A812F4 /* Core */, DF0BA7FB2A3BE6C900A812F4 /* KssiusBankTests.swift */, @@ -256,6 +279,8 @@ children = ( DF0BA8482A3C7C8E00A812F4 /* AutenticationServiceDatasource.swift */, DF0BA85D2A3C985500A812F4 /* AuthenticationServiceDatasourceProtocol.swift */, + DF4624C52A3CF0AC00CBC35D /* AutenticationLocalDatasourceProtocol.swift */, + DF4624C82A3CF0D700CBC35D /* AutenticationLocalDatasource.swift */, ); path = DataSources; sourceTree = ""; @@ -265,6 +290,8 @@ children = ( DF0BA8422A3C7AAD00A812F4 /* AuthenticationRepositoryProtocol.swift */, DF0BA8462A3C7C0200A812F4 /* AutenticationRepository.swift */, + DF4624CB2A3CF6DB00CBC35D /* AutenticationLocalRepository.swift */, + DF4624CE2A3CF6EE00CBC35D /* AuthenticationLocalRepositoryProtocol.swift */, ); path = Repositories; sourceTree = ""; @@ -272,7 +299,7 @@ DF0BA8452A3C7B7A00A812F4 /* Core */ = { isa = PBXGroup; children = ( - DF0BA83A2A3C796300A812F4 /* Data */, + DF4624C42A3CF06200CBC35D /* User */, ); path = Core; sourceTree = ""; @@ -298,6 +325,7 @@ isa = PBXGroup; children = ( DF0BA8532A3C836A00A812F4 /* AutenticationServiceDatasourceTest.swift */, + DF4624D12A3D030700CBC35D /* AutenticationLocalDatasourceTest.swift */, ); path = datasources; sourceTree = ""; @@ -305,8 +333,9 @@ DF0BA8522A3C833500A812F4 /* Repositories */ = { isa = PBXGroup; children = ( - DF0BA8602A3C998100A812F4 /* AutenticationRepositoryTest.swift */, - DF0BA8672A3C9BA900A812F4 /* MockAutenticationServiceDatasource.swift */, + DF4624D62A3D080E00CBC35D /* Mock */, + DF0BA8602A3C998100A812F4 /* AuthenticationRepositoryTest.swift */, + DF4624D42A3D080600CBC35D /* AuthenticationLocalRepositoryTest.swift */, ); path = Repositories; sourceTree = ""; @@ -328,6 +357,40 @@ path = Generated; sourceTree = ""; }; + DF4624C42A3CF06200CBC35D /* User */ = { + isa = PBXGroup; + children = ( + DF0BA83A2A3C796300A812F4 /* Data */, + ); + path = User; + sourceTree = ""; + }; + DF4624D62A3D080E00CBC35D /* Mock */ = { + isa = PBXGroup; + children = ( + DF0BA8672A3C9BA900A812F4 /* MockAutenticationServiceDatasource.swift */, + DF4624D72A3D091400CBC35D /* MockAutenticationLocalDatasourceProtocol.swift */, + ); + path = Mock; + sourceTree = ""; + }; + DF4624D92A3D0A6A00CBC35D /* Workers */ = { + isa = PBXGroup; + children = ( + DF4624DC2A3D0DD500CBC35D /* Mock */, + DF4624DA2A3D0A8400CBC35D /* UserWorkersTest.swift */, + ); + path = Workers; + sourceTree = ""; + }; + DF4624DC2A3D0DD500CBC35D /* Mock */ = { + isa = PBXGroup; + children = ( + DF4624DD2A3D0DF000CBC35D /* MockAuthenticationLocalRepository.swift */, + ); + path = Mock; + sourceTree = ""; + }; DF7D3F8B2A3CE0880009770F /* Common */ = { isa = PBXGroup; children = ( @@ -369,7 +432,7 @@ DFEC18412A3BD051001277A2 /* Workers */ = { isa = PBXGroup; children = ( - DFEC18562A3BD314001277A2 /* AuthenticationWorker.swift */, + DFEC18562A3BD314001277A2 /* UserWorker.swift */, ); path = Workers; sourceTree = ""; @@ -453,6 +516,7 @@ DF0BA7C02A3BE5CD00A812F4 /* Frameworks */, DF0BA7C12A3BE5CD00A812F4 /* Resources */, DF0BA8712A3CB2D100A812F4 /* ShellScript */, + C432C7ABAE3DF7B8D4C63BC4 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -490,6 +554,7 @@ DF0BA7E12A3BE5D000A812F4 /* Sources */, DF0BA7E22A3BE5D000A812F4 /* Frameworks */, DF0BA7E32A3BE5D000A812F4 /* Resources */, + EF40B5E372DFA420D037EEAE /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -642,6 +707,23 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; + C432C7ABAE3DF7B8D4C63BC4 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-KssiusBank/Pods-KssiusBank-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-KssiusBank/Pods-KssiusBank-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-KssiusBank/Pods-KssiusBank-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; DF0BA8712A3CB2D100A812F4 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -659,6 +741,23 @@ shellPath = /bin/sh; shellScript = "# Type a script or drag a script file from your workspace to insert its path.\nif [[ -f \"${PODS_ROOT}/SwiftGen/bin/swiftgen\" ]]; then\n \"${PODS_ROOT}/SwiftGen/bin/swiftgen\"\nelse\n echo \"warning: SwiftGen is not installed. Run 'pod install --repo-update' to install it.\"\nfi \n"; }; + EF40B5E372DFA420D037EEAE /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-KssiusBank-KssiusBankUITests/Pods-KssiusBank-KssiusBankUITests-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-KssiusBank-KssiusBankUITests/Pods-KssiusBank-KssiusBankUITests-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-KssiusBank-KssiusBankUITests/Pods-KssiusBank-KssiusBankUITests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -668,7 +767,10 @@ files = ( DF0BA8142A3BEC4700A812F4 /* URLSessionProtocol.swift in Sources */, DF0BA80C2A3BE6CA00A812F4 /* ViewController.swift in Sources */, + DF4624CF2A3CF6EE00CBC35D /* AuthenticationLocalRepositoryProtocol.swift in Sources */, DF0BA8242A3BEE3D00A812F4 /* BankFailure.swift in Sources */, + DF4624C92A3CF0D700CBC35D /* AutenticationLocalDatasource.swift in Sources */, + DF4624C62A3CF0AC00CBC35D /* AutenticationLocalDatasourceProtocol.swift in Sources */, DF0BA8332A3BF03900A812F4 /* LoginViewController.swift in Sources */, DF0BA8342A3BF03900A812F4 /* LoginInteractor.swift in Sources */, DF0BA82F2A3BF03900A812F4 /* LoginPresenter.swift in Sources */, @@ -679,10 +781,11 @@ DF0BA87F2A3CC4ED00A812F4 /* Strings+Generated.swift in Sources */, DF0BA85E2A3C985500A812F4 /* AuthenticationServiceDatasourceProtocol.swift in Sources */, DF0BA8072A3BE6CA00A812F4 /* SceneDelegate.swift in Sources */, - DF0BA8362A3BF05800A812F4 /* AuthenticationWorker.swift in Sources */, + DF0BA8362A3BF05800A812F4 /* UserWorker.swift in Sources */, DF0BA8582A3C87AE00A812F4 /* Constants.swift in Sources */, DF0BA8322A3BF03900A812F4 /* LoginModels.swift in Sources */, DF0BA8112A3BE9F200A812F4 /* UserAccountModel.swift in Sources */, + DF4624CC2A3CF6DB00CBC35D /* AutenticationLocalRepository.swift in Sources */, DF0BA7D02A3BE5CE00A812F4 /* KssiusBank.xcdatamodeld in Sources */, DF0BA8492A3C7C8E00A812F4 /* AutenticationServiceDatasource.swift in Sources */, DF0BA86F2A3CAC7D00A812F4 /* CommonValidator.swift in Sources */, @@ -700,27 +803,36 @@ buildActionMask = 2147483647; files = ( DF0BA8252A3BEE3D00A812F4 /* BankFailure.swift in Sources */, + DF4624CA2A3CF0D700CBC35D /* AutenticationLocalDatasource.swift in Sources */, DF0BA8692A3C9BA900A812F4 /* MockAutenticationServiceDatasource.swift in Sources */, + DF4624D02A3CF6EE00CBC35D /* AuthenticationLocalRepositoryProtocol.swift in Sources */, DF0BA8172A3BEC4800A812F4 /* URLSessionProtocol.swift in Sources */, + DF4624C72A3CF0AC00CBC35D /* AutenticationLocalDatasourceProtocol.swift in Sources */, DF0BA8812A3CC4F500A812F4 /* XCAssets+Generated.swift in Sources */, DF0BA8802A3CC4F300A812F4 /* Strings+Generated.swift in Sources */, + DF4624D52A3D080600CBC35D /* AuthenticationLocalRepositoryTest.swift in Sources */, DF0BA7F82A3BE65B00A812F4 /* MockURLProtocol.swift in Sources */, DF0BA80E2A3BE6D400A812F4 /* KssiusBankTests.swift in Sources */, DF0BA8662A3C9B4600A812F4 /* AuthenticationRepositoryProtocol.swift in Sources */, DF0BA8592A3C87AE00A812F4 /* Constants.swift in Sources */, DF0BA8392A3BFB6100A812F4 /* Seeds.swift in Sources */, DF0BA86D2A3CA9AB00A812F4 /* UserFailure.swift in Sources */, + DF4624DE2A3D0DF000CBC35D /* MockAuthenticationLocalRepository.swift in Sources */, DF0BA8122A3BE9F300A812F4 /* UserAccountModel.swift in Sources */, DF0BA8552A3C836A00A812F4 /* AutenticationServiceDatasourceTest.swift in Sources */, DF0BA7F72A3BE65800A812F4 /* NetworkServiceTest.swift in Sources */, + DF4624D32A3D030700CBC35D /* AutenticationLocalDatasourceTest.swift in Sources */, + DF4624D82A3D091400CBC35D /* MockAutenticationLocalDatasourceProtocol.swift in Sources */, DF0BA8702A3CAC7D00A812F4 /* CommonValidator.swift in Sources */, DF0BA84A2A3C7C8E00A812F4 /* AutenticationServiceDatasource.swift in Sources */, - DF0BA8372A3BF05800A812F4 /* AuthenticationWorker.swift in Sources */, + DF0BA8372A3BF05800A812F4 /* UserWorker.swift in Sources */, DF7D3F8D2A3CE0A90009770F /* CommonValidatorTest.swift in Sources */, + DF4624CD2A3CF6DB00CBC35D /* AutenticationLocalRepository.swift in Sources */, DF0BA8162A3BEC4800A812F4 /* AutenticationApi.swift in Sources */, - DF0BA8622A3C998100A812F4 /* AutenticationRepositoryTest.swift in Sources */, + DF0BA8622A3C998100A812F4 /* AuthenticationRepositoryTest.swift in Sources */, DF0BA8182A3BEC4800A812F4 /* NetworkService.swift in Sources */, DF0BA86A2A3C9CB700A812F4 /* AutenticationRepository.swift in Sources */, + DF4624DB2A3D0A8400CBC35D /* UserWorkersTest.swift in Sources */, DF0BA85C2A3C976900A812F4 /* LoginRequestModel.swift in Sources */, DF0BA85F2A3C985500A812F4 /* AuthenticationServiceDatasourceProtocol.swift in Sources */, DF0BA8652A3C9A3E00A812F4 /* MockSession.swift in Sources */, diff --git a/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/UserInterfaceState.xcuserstate b/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/UserInterfaceState.xcuserstate index abb8546cd6a1c92cb69f64e54ba7fdeca0d60261..1ad916b775bb80a437cab51df5ca8b41ba697e63 100644 GIT binary patch literal 182539 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

nF1W7dZvf-X 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 IND=>k0F01NegFUf literal 152902 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 z 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


s<+#`sx}&I93m5H0`#FJ=P>crh1& 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 diff --git a/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index e684dad89..6183c0fd2 100644 --- a/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -4,22 +4,6 @@ type = "0" version = "2.0"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/KssiusBank/KssiusBank/Core/User/Data/DataSources/AutenticationLocalDatasource.swift b/KssiusBank/KssiusBank/Core/User/Data/DataSources/AutenticationLocalDatasource.swift new file mode 100644 index 000000000..c53a37096 --- /dev/null +++ b/KssiusBank/KssiusBank/Core/User/Data/DataSources/AutenticationLocalDatasource.swift @@ -0,0 +1,49 @@ +// +// AutenticationLocalDatasource.swift +// KssiusBank +// +// Created by Cassio Sousa on 16/06/23. +// Copyright © 2023 Cassio Sousa. All rights reserved. +// + +import KeychainSwift + +final class AuthenticationLocalDatasource { + + // MARK: - Properties + + private let keychain: KeychainSwift + private let userAccountKey = "userAccountKey" + + // MARK: - Inits + + init(keychain: KeychainSwift) { + self.keychain = keychain + } + +} + +// MARK: - Resources + +extension AuthenticationLocalDatasource : AuthenticationLocalDatasourceProtocol { + + func save(user: UserAccountModel) -> UserAccountModel? { + guard let encoded = try? JSONEncoder().encode(user), + let stringEncoded = String(data: encoded,encoding:.utf8) + else { + return nil + } + keychain.set(stringEncoded , forKey: userAccountKey) + return retrieveUser() + } + + func retrieveUser() -> UserAccountModel? { + guard let dataUser = keychain.get(userAccountKey)?.data(using: .utf8), + let decodedUser = try? JSONDecoder().decode(UserAccountModel.self, from: dataUser) + else { + return nil + } + return decodedUser + } +} + diff --git a/KssiusBank/KssiusBank/Core/User/Data/DataSources/AutenticationLocalDatasourceProtocol.swift b/KssiusBank/KssiusBank/Core/User/Data/DataSources/AutenticationLocalDatasourceProtocol.swift new file mode 100644 index 000000000..9231873c2 --- /dev/null +++ b/KssiusBank/KssiusBank/Core/User/Data/DataSources/AutenticationLocalDatasourceProtocol.swift @@ -0,0 +1,15 @@ +// +// AutenticationLocalDatasourceProtocol.swift +// KssiusBank +// +// Created by Cassio Sousa on 16/06/23. +// Copyright © 2023 Cassio Sousa. All rights reserved. +// + +import Foundation + +protocol AuthenticationLocalDatasourceProtocol { + @discardableResult + func save(user: UserAccountModel) -> UserAccountModel? + func retrieveUser() -> UserAccountModel? +} diff --git a/KssiusBank/KssiusBank/Core/Data/DataSources/AutenticationServiceDatasource.swift b/KssiusBank/KssiusBank/Core/User/Data/DataSources/AutenticationServiceDatasource.swift similarity index 100% rename from KssiusBank/KssiusBank/Core/Data/DataSources/AutenticationServiceDatasource.swift rename to KssiusBank/KssiusBank/Core/User/Data/DataSources/AutenticationServiceDatasource.swift diff --git a/KssiusBank/KssiusBank/Core/Data/DataSources/AuthenticationServiceDatasourceProtocol.swift b/KssiusBank/KssiusBank/Core/User/Data/DataSources/AuthenticationServiceDatasourceProtocol.swift similarity index 100% rename from KssiusBank/KssiusBank/Core/Data/DataSources/AuthenticationServiceDatasourceProtocol.swift rename to KssiusBank/KssiusBank/Core/User/Data/DataSources/AuthenticationServiceDatasourceProtocol.swift diff --git a/KssiusBank/KssiusBank/Core/Data/Models/LoginRequestModel.swift b/KssiusBank/KssiusBank/Core/User/Data/Models/LoginRequestModel.swift similarity index 100% rename from KssiusBank/KssiusBank/Core/Data/Models/LoginRequestModel.swift rename to KssiusBank/KssiusBank/Core/User/Data/Models/LoginRequestModel.swift diff --git a/KssiusBank/KssiusBank/Core/Data/Models/UserAccountModel.swift b/KssiusBank/KssiusBank/Core/User/Data/Models/UserAccountModel.swift similarity index 100% rename from KssiusBank/KssiusBank/Core/Data/Models/UserAccountModel.swift rename to KssiusBank/KssiusBank/Core/User/Data/Models/UserAccountModel.swift diff --git a/KssiusBank/KssiusBank/Core/User/Data/Repositories/AutenticationLocalRepository.swift b/KssiusBank/KssiusBank/Core/User/Data/Repositories/AutenticationLocalRepository.swift new file mode 100644 index 000000000..5c9f5e06f --- /dev/null +++ b/KssiusBank/KssiusBank/Core/User/Data/Repositories/AutenticationLocalRepository.swift @@ -0,0 +1,38 @@ +// +// AutenticationLocalRepository.swift +// KssiusBank +// +// Created by Cassio Sousa on 16/06/23. +// Copyright © 2023 Cassio Sousa. All rights reserved. +// + +import Foundation + + +final class AuthenticationLocalRepository { + + // MARK: - Properties + + private let authenticationLocalDataSource: AuthenticationLocalDatasourceProtocol + + + // MARK: - Inits + + init(authenticationLocalDataSource: AuthenticationLocalDatasourceProtocol) { + self.authenticationLocalDataSource = authenticationLocalDataSource + } + +} + +// MARK: - Resources + +extension AuthenticationLocalRepository: AuthenticationLocalRepositoryProtocol { + + func save(user: UserAccountModel) -> UserAccountModel? { + return authenticationLocalDataSource.save(user: user) + } + + func retrieveUser() -> UserAccountModel? { + return authenticationLocalDataSource.retrieveUser() + } +} diff --git a/KssiusBank/KssiusBank/Core/Data/Repositories/AutenticationRepository.swift b/KssiusBank/KssiusBank/Core/User/Data/Repositories/AutenticationRepository.swift similarity index 86% rename from KssiusBank/KssiusBank/Core/Data/Repositories/AutenticationRepository.swift rename to KssiusBank/KssiusBank/Core/User/Data/Repositories/AutenticationRepository.swift index bd8866496..1fd6da6fa 100644 --- a/KssiusBank/KssiusBank/Core/Data/Repositories/AutenticationRepository.swift +++ b/KssiusBank/KssiusBank/Core/User/Data/Repositories/AutenticationRepository.swift @@ -7,9 +7,11 @@ import Foundation -final class AuthenticationRepository :AuthenticationRepositoryProtocol { +final class AuthenticationRepository: AuthenticationRepositoryProtocol { - let authenticationService: AuthenticationServiceDatasourceProtocol + // MARK: - Properties + + private let authenticationService: AuthenticationServiceDatasourceProtocol // MARK: - Inits diff --git a/KssiusBank/KssiusBank/Core/User/Data/Repositories/AuthenticationLocalRepositoryProtocol.swift b/KssiusBank/KssiusBank/Core/User/Data/Repositories/AuthenticationLocalRepositoryProtocol.swift new file mode 100644 index 000000000..dec2fcc4a --- /dev/null +++ b/KssiusBank/KssiusBank/Core/User/Data/Repositories/AuthenticationLocalRepositoryProtocol.swift @@ -0,0 +1,15 @@ +// +// AutenticationLocalRepositoryProtocol.swift +// KssiusBank +// +// Created by Cassio Sousa on 16/06/23. +// Copyright © 2023 Cassio Sousa. All rights reserved. +// + +import Foundation + +protocol AuthenticationLocalRepositoryProtocol { + @discardableResult + func save(user: UserAccountModel) -> UserAccountModel? + func retrieveUser() -> UserAccountModel? +} diff --git a/KssiusBank/KssiusBank/Core/Data/Repositories/AuthenticationRepositoryProtocol.swift b/KssiusBank/KssiusBank/Core/User/Data/Repositories/AuthenticationRepositoryProtocol.swift similarity index 100% rename from KssiusBank/KssiusBank/Core/Data/Repositories/AuthenticationRepositoryProtocol.swift rename to KssiusBank/KssiusBank/Core/User/Data/Repositories/AuthenticationRepositoryProtocol.swift diff --git a/KssiusBank/KssiusBank/Core/Data/UserFailure.swift b/KssiusBank/KssiusBank/Core/User/Data/UserFailure.swift similarity index 100% rename from KssiusBank/KssiusBank/Core/Data/UserFailure.swift rename to KssiusBank/KssiusBank/Core/User/Data/UserFailure.swift diff --git a/KssiusBank/KssiusBank/Scenes/Autentication/LoginInteractor.swift b/KssiusBank/KssiusBank/Scenes/Autentication/LoginInteractor.swift index 9a0b9032d..b794ede63 100644 --- a/KssiusBank/KssiusBank/Scenes/Autentication/LoginInteractor.swift +++ b/KssiusBank/KssiusBank/Scenes/Autentication/LoginInteractor.swift @@ -28,15 +28,19 @@ final class LoginInteractor: LoginBusinessLogic, LoginDataStore { private let presenter: LoginPresentationLogic? private let worker: LoginWorker? + private let userWork: UserWorkerLogic? // MARK: - DataSource var account: UserAccountModel? // MARK: - Inits - init(presenter: LoginPresentationLogic? = nil, worker: LoginWorker? = nil) { + init(presenter: LoginPresentationLogic? = nil, + worker: LoginWorker? = nil, + userWork: UserWorkerLogic? = nil) { self.presenter = presenter self.worker = worker + self.userWork = userWork } } @@ -57,17 +61,22 @@ extension LoginInteractor { worker?.login(username: user, password: password) {[weak self] result in switch( result ) { case .success(let accountModel): - self?.account = accountModel - self?.presenter?.resolveLogin(response: .init(success: true)) + self?.handle(success: accountModel) case .failure(let failure): - if let response = self?.process(errors: failure) { + if let response = self?.handle(errors: failure) { self?.presenter?.resolveLogin(response: response) } } } } - private func process(errors: UserFailure) -> Login.Login.Response { + private func handle(success accountModel: UserAccountModel ) { + account = accountModel + userWork?.save(user: accountModel) + presenter?.resolveLogin(response: .init(success: true)) + } + + private func handle(errors: UserFailure) -> Login.Login.Response { switch(errors) { case .user: return .init(errorMessage: L10n.User.Authentication.Error.invalidCpf) @@ -78,4 +87,5 @@ extension LoginInteractor { } } + } diff --git a/KssiusBank/KssiusBank/Scenes/Autentication/LoginViewController.swift b/KssiusBank/KssiusBank/Scenes/Autentication/LoginViewController.swift index ba35ddaef..8602c8df0 100644 --- a/KssiusBank/KssiusBank/Scenes/Autentication/LoginViewController.swift +++ b/KssiusBank/KssiusBank/Scenes/Autentication/LoginViewController.swift @@ -11,6 +11,7 @@ // import UIKit +import KeychainSwift protocol LoginDisplayLogic: AnyObject { @@ -41,9 +42,16 @@ class LoginViewController: UIViewController private func setup() { - let authenticationService = AuthenticationServiceDatasource(networkService: .init()) - let autenticationRepository = AuthenticationRepository(authenticationService: authenticationService) - let worker = LoginWorker(authenticaionRepository: autenticationRepository) + //remote datasource + let authenticationServiceDataSource = AuthenticationServiceDatasource(networkService: .init()) + let autenticationRepository = AuthenticationRepository(authenticationService: authenticationServiceDataSource) + + //local datasource + let localDataSource = AuthenticationLocalDatasource(keychain: KeychainSwift()) + let localRepository = AuthenticationLocalRepository(authenticationLocalDataSource: localDataSource) + + let worker = LoginWorker(authenticaionRepository: autenticationRepository, + authenticaionLocalRepository: localRepository) let viewController = self let presenter = LoginPresenter() diff --git a/KssiusBank/KssiusBank/Scenes/Autentication/LoginWorker.swift b/KssiusBank/KssiusBank/Scenes/Autentication/LoginWorker.swift index 9fb1e5fd8..b439fead5 100644 --- a/KssiusBank/KssiusBank/Scenes/Autentication/LoginWorker.swift +++ b/KssiusBank/KssiusBank/Scenes/Autentication/LoginWorker.swift @@ -3,7 +3,7 @@ // KssiusBank // // Created by Cassio Sousa on 15/06/23. -// Copyright (c) 2023 ___ORGANIZATIONNAME___. All rights reserved. +// Copyright (c) 2023 Cássio Sousa. All rights reserved. // // This file was generated by the Clean Swift Xcode Templates so // you can apply clean architecture to your iOS and Mac projects, @@ -21,19 +21,22 @@ final class LoginWorker{ // MARK: - Properties private let authenticaionRepository: AuthenticationRepositoryProtocol + private let authenticaionLocalRepository: AuthenticationLocalRepositoryProtocol // MARK: - Inits - init(authenticaionRepository: AuthenticationRepositoryProtocol) { + init(authenticaionRepository: AuthenticationRepositoryProtocol, + authenticaionLocalRepository: AuthenticationLocalRepositoryProtocol) { self.authenticaionRepository = authenticaionRepository + self.authenticaionLocalRepository = authenticaionLocalRepository } } extension LoginWorker: LoginWorkerProtocol { func login(username: String, password: String, completion: @escaping (Result) -> Void) { + let requestModel: LoginRequestModel = .init(username: username, password: password) authenticaionRepository.perform(login: .loginRequest, - with: .init(username: username, password: password), - completion: completion) + with: requestModel, completion: completion ) } } diff --git a/KssiusBank/KssiusBank/Services/NetworkService.swift b/KssiusBank/KssiusBank/Services/NetworkService.swift index 8116727b7..41800695a 100755 --- a/KssiusBank/KssiusBank/Services/NetworkService.swift +++ b/KssiusBank/KssiusBank/Services/NetworkService.swift @@ -66,12 +66,6 @@ class NetworkService { func request(endpoint: Endpoint, payload: Encodable? = nil, completion: @escaping (Result) -> Void) { var path = endpoint.fullPath -// if let pathParameter = pathParameter { -// path = endpoint.fullPath.replacingOccurrences(of: ":\(pathParameter.name)", with: pathParameter.value) -// } else{ -// path = endpoint.fullPath -// } - guard let url = URL(string: path) else { completion(.failure(.invalidUrl)) return; diff --git a/KssiusBank/KssiusBank/Workers/AuthenticationWorker.swift b/KssiusBank/KssiusBank/Workers/AuthenticationWorker.swift deleted file mode 100644 index 48e9ad788..000000000 --- a/KssiusBank/KssiusBank/Workers/AuthenticationWorker.swift +++ /dev/null @@ -1,34 +0,0 @@ -// -// AuthenticationWorker.swift -// KssiusBank -// -// Created by Cassio Sousa on 15/06/23. -// - -import Foundation - -//protocol AutehticationProtocol { -// func make(login: AutenticationApi.Endpoints, completion: @escaping (Result) -> Void ) -//} - -//protocol AutenticationWorkerProtocol { -// func makeLogin(completion: @escaping (Result) -> Void ) -//} - - -//final class AutenticationWorker :AutenticationWorkerProtocol { -// -// let autenticationService: AutehticationProtocol -// -// init(autenticationService: AutehticationProtocol) { -// self.autenticationService = autenticationService -// } -// -//} -// -//// MARK: - POST Methods -//extension AutenticationWorker { -// func makeLogin(completion: @escaping (Result) -> Void ){ -// autenticationService.make(login: .loginRequest, completion: completion) -// } -//} diff --git a/KssiusBank/KssiusBank/Workers/UserWorker.swift b/KssiusBank/KssiusBank/Workers/UserWorker.swift new file mode 100644 index 000000000..06a0165ae --- /dev/null +++ b/KssiusBank/KssiusBank/Workers/UserWorker.swift @@ -0,0 +1,41 @@ +// +// UserWorker.swift +// KssiusBank +// +// Created by Cassio Sousa on 15/06/23. +// + +import Foundation + +protocol UserWorkerLogic { + @discardableResult + func save(user: UserAccountModel) -> UserAccountModel? + func retrieveUser() -> UserAccountModel? +} + +final class UserWorker { + + // MARK: - Properties + + private let authenticationLocalRepository: AuthenticationLocalRepositoryProtocol + + // MARK: - Inits + + init(authenticationLocalRepository: AuthenticationLocalRepositoryProtocol) { + self.authenticationLocalRepository = authenticationLocalRepository + } + +} + +// MARK: - Resources + +extension UserWorker: UserWorkerLogic { + + func save(user: UserAccountModel) -> UserAccountModel? { + return authenticationLocalRepository.save(user: user) + } + + func retrieveUser() -> UserAccountModel? { + return authenticationLocalRepository.retrieveUser() + } +} diff --git a/KssiusBank/KssiusBankTests/Core/Data/datasources/AutenticationLocalDatasourceTest.swift b/KssiusBank/KssiusBankTests/Core/Data/datasources/AutenticationLocalDatasourceTest.swift new file mode 100644 index 000000000..da1747641 --- /dev/null +++ b/KssiusBank/KssiusBankTests/Core/Data/datasources/AutenticationLocalDatasourceTest.swift @@ -0,0 +1,62 @@ +// +// AutenticationLocalDatasourceTest.swift +// KssiusBank +// +// Created by Cassio Sousa on 16/06/23. +// Copyright © 2023 Cassio Sousa. All rights reserved. +// + +import KeychainSwift + +import XCTest +@testable import KssiusBank + +final class AutenticationLocalDatasourceTest: XCTestCase { + var sut: AuthenticationLocalDatasourceProtocol? + + override func setUp() { + sut = AuthenticationLocalDatasource(keychain: KeychainSwift()) + } + + override func tearDown() { + sut = nil + } + + // MARK: - Success save user + + func testSuccessSaveUser() { + let data = Seeds.Json.account.rawValue.data(using: .utf8) + guard let data = data, + let user = try? JSONDecoder().decode(UserAccountModel.self, from: data) else { + XCTFail("Should not return a failure") + return + } + let result = sut?.save(user: user) + validate(userAccount: result) + } + + // MARK: - Failure save user + + func testSuccessGetUser() { + let data = Seeds.Json.account.rawValue.data(using: .utf8) + guard let data = data, + let user = try? JSONDecoder().decode(UserAccountModel.self, from: data) else { + XCTFail("Should not return a failure") + return + } + sut?.save(user: user) + let result = sut?.retrieveUser() + validate(userAccount: result) + } + + private func validate(userAccount result: UserAccountModel?) { + XCTAssertNotNil(result) + XCTAssertEqual(result?.userId, "3") + XCTAssertEqual(result?.cpf, "468.655.400-42") + XCTAssertEqual(result?.name, "Diana Leuschke") + XCTAssertEqual(result?.email, "Marquis_Gibson@hotmail.com") + XCTAssertEqual(result?.accountNumber, "74393734") + XCTAssertEqual(result?.agency, "827810101") + XCTAssertEqual(result?.balance, "472.29") + } +} diff --git a/KssiusBank/KssiusBankTests/Core/Repositories/AuthenticationLocalRepositoryTest.swift b/KssiusBank/KssiusBankTests/Core/Repositories/AuthenticationLocalRepositoryTest.swift new file mode 100644 index 000000000..eb6b92e75 --- /dev/null +++ b/KssiusBank/KssiusBankTests/Core/Repositories/AuthenticationLocalRepositoryTest.swift @@ -0,0 +1,64 @@ +// +// AutenticationLocalRepositoryTest.swift +// KssiusBankTests +// +// Created by Cassio Sousa on 16/06/23. +// Copyright © 2023 Cassio Sousa. All rights reserved. +// + +import Foundation + + +import XCTest +@testable import KssiusBank + +final class AuthenticationLocalRepositoryTest: XCTestCase { + var sut: AuthenticationLocalRepositoryProtocol? + + override func setUp() { + let mock = MockSuccessAuthenticationLocalDatasource() + sut = AuthenticationLocalRepository(authenticationLocalDataSource: mock) + } + + override func tearDown() { + sut = nil + } + + // MARK: - Success save user + + func testSuccessSaveUser() { + let data = Seeds.Json.account.rawValue.data(using: .utf8) + guard let data = data, + let user = try? JSONDecoder().decode(UserAccountModel.self, from: data) else { + XCTFail("Should not return a failure") + return + } + let result = sut?.save(user: user) + validate(userAccount: result) + } + + // MARK: - Failure save user + + func testSuccessGetUser() { + let data = Seeds.Json.account.rawValue.data(using: .utf8) + guard let data = data, + let user = try? JSONDecoder().decode(UserAccountModel.self, from: data) else { + XCTFail("Should not return a failure") + return + } + sut?.save(user: user) + let result = sut?.retrieveUser() + validate(userAccount: result) + } + + private func validate(userAccount result: UserAccountModel?) { + XCTAssertNotNil(result) + XCTAssertEqual(result?.userId, "3") + XCTAssertEqual(result?.cpf, "468.655.400-42") + XCTAssertEqual(result?.name, "Diana Leuschke") + XCTAssertEqual(result?.email, "Marquis_Gibson@hotmail.com") + XCTAssertEqual(result?.accountNumber, "74393734") + XCTAssertEqual(result?.agency, "827810101") + XCTAssertEqual(result?.balance, "472.29") + } +} diff --git a/KssiusBank/KssiusBankTests/Core/Repositories/AutenticationRepositoryTest.swift b/KssiusBank/KssiusBankTests/Core/Repositories/AuthenticationRepositoryTest.swift similarity index 97% rename from KssiusBank/KssiusBankTests/Core/Repositories/AutenticationRepositoryTest.swift rename to KssiusBank/KssiusBankTests/Core/Repositories/AuthenticationRepositoryTest.swift index 1da1aba04..27b0fec58 100644 --- a/KssiusBank/KssiusBankTests/Core/Repositories/AutenticationRepositoryTest.swift +++ b/KssiusBank/KssiusBankTests/Core/Repositories/AuthenticationRepositoryTest.swift @@ -5,13 +5,10 @@ // Created by Cassio Sousa on 16/06/23. // -import Foundation - - import XCTest @testable import KssiusBank -final class AutenticationRepositoryTest: XCTestCase { +final class AuthenticationRepositoryTest: XCTestCase { var sut: AuthenticationRepositoryProtocol? var expectation: XCTestExpectation! let successCpfModelRequest = LoginRequestModel(username: "468.655.400-42", password: "T@to123") @@ -66,7 +63,7 @@ final class AutenticationRepositoryTest: XCTestCase { // MARK: - CPF Tests -extension AutenticationRepositoryTest { +extension AuthenticationRepositoryTest { // MARK: - Success CPF Authentication Response @@ -108,7 +105,7 @@ extension AutenticationRepositoryTest { // MARK: - Email Tests -extension AutenticationRepositoryTest { +extension AuthenticationRepositoryTest { // MARK: - Success Email Authentication @@ -188,8 +185,7 @@ extension AutenticationRepositoryTest { // MARK: - Password Tests -extension AutenticationRepositoryTest { - +extension AuthenticationRepositoryTest { // MARK: - Failure Password Special char Authentication diff --git a/KssiusBank/KssiusBankTests/Core/Repositories/Mock/MockAutenticationLocalDatasourceProtocol.swift b/KssiusBank/KssiusBankTests/Core/Repositories/Mock/MockAutenticationLocalDatasourceProtocol.swift new file mode 100644 index 000000000..994830a93 --- /dev/null +++ b/KssiusBank/KssiusBankTests/Core/Repositories/Mock/MockAutenticationLocalDatasourceProtocol.swift @@ -0,0 +1,27 @@ +// +// MockAutenticationLocalDatasourceProtocol.swift +// KssiusBankTests +// +// Created by Cassio Sousa on 16/06/23. +// Copyright © 2023 Cassio Sousa. All rights reserved. +// + +import Foundation + +final class MockSuccessAuthenticationLocalDatasource: AuthenticationLocalDatasourceProtocol { + + func save(user: UserAccountModel) -> UserAccountModel? { + return user + } + + func retrieveUser() -> UserAccountModel? { + let data = Seeds.Json.account.rawValue.data(using: .utf8) + guard let data = data, + let user = try? JSONDecoder().decode(UserAccountModel.self, from: data) else { + return nil + } + return user + } + + +} diff --git a/KssiusBank/KssiusBankTests/Core/Repositories/MockAutenticationServiceDatasource.swift b/KssiusBank/KssiusBankTests/Core/Repositories/Mock/MockAutenticationServiceDatasource.swift similarity index 77% rename from KssiusBank/KssiusBankTests/Core/Repositories/MockAutenticationServiceDatasource.swift rename to KssiusBank/KssiusBankTests/Core/Repositories/Mock/MockAutenticationServiceDatasource.swift index f213d11c5..fd24674a3 100644 --- a/KssiusBank/KssiusBankTests/Core/Repositories/MockAutenticationServiceDatasource.swift +++ b/KssiusBank/KssiusBankTests/Core/Repositories/Mock/MockAutenticationServiceDatasource.swift @@ -43,15 +43,3 @@ final class MockFailureNetworkAutenticationServiceDatasource: AuthenticationServ } } -//final class MockFailureCpfAutenticationServiceDatasource: AuthenticationServiceDatasourceProtocol { -// convenience init() { -// self.init(networkService: .init()) -// } -// -// init(networkService: NetworkService) {} -// -// func perform(login: AutenticationApi.Endpoints, with data: LoginRequestModel, completion: @escaping (Result) -> Void) { -// completion(.failure()) -// } -//} - diff --git a/KssiusBank/KssiusBankTests/Seeds.swift b/KssiusBank/KssiusBankTests/Seeds.swift index 21ae33d48..84d0f9d7a 100644 --- a/KssiusBank/KssiusBankTests/Seeds.swift +++ b/KssiusBank/KssiusBankTests/Seeds.swift @@ -14,7 +14,7 @@ struct Seeds { "createdAt": "2023-06-15T23:36:43.182Z", "name": "Diana Leuschke", "email": "Marquis_Gibson@hotmail.com", - "cpf": "(253) 643-9973 x2560", + "cpf": "468.655.400-42", "accountNumber": "74393734", "agency": "827810101", "balance": "472.29", diff --git a/KssiusBank/KssiusBankTests/Workers/Mock/MockAuthenticationLocalRepository.swift b/KssiusBank/KssiusBankTests/Workers/Mock/MockAuthenticationLocalRepository.swift new file mode 100644 index 000000000..cd10ed30b --- /dev/null +++ b/KssiusBank/KssiusBankTests/Workers/Mock/MockAuthenticationLocalRepository.swift @@ -0,0 +1,37 @@ +// +// MockAuthenticationLocalRepository.swift +// KssiusBankTests +// +// Created by Cassio Sousa on 16/06/23. +// Copyright © 2023 Cassio Sousa. All rights reserved. +// + +// MARK: - Mock +import Foundation + +final class MockSuccessAuthenticationLocalRepository: AuthenticationLocalRepositoryProtocol { + + func save(user: UserAccountModel) -> UserAccountModel? { + return user + } + + func retrieveUser() -> UserAccountModel? { + let data = Seeds.Json.account.rawValue.data(using: .utf8) + guard let data = data, + let user = try? JSONDecoder().decode(UserAccountModel.self, from: data) else { + return nil + } + return user + } +} + +final class MockEmptyAuthenticationLocalRepository: AuthenticationLocalRepositoryProtocol { + + func save(user: UserAccountModel) -> UserAccountModel? { + return nil + } + + func retrieveUser() -> UserAccountModel? { + return nil + } +} diff --git a/KssiusBank/KssiusBankTests/Workers/UserWorkersTest.swift b/KssiusBank/KssiusBankTests/Workers/UserWorkersTest.swift new file mode 100644 index 000000000..2f17a634d --- /dev/null +++ b/KssiusBank/KssiusBankTests/Workers/UserWorkersTest.swift @@ -0,0 +1,93 @@ +// +// UserWorkersTest.swift +// KssiusBankTests +// +// Created by Cassio Sousa on 16/06/23. +// Copyright © 2023 Cassio Sousa. All rights reserved. +// + +import Foundation + +import XCTest +@testable import KssiusBank + +final class UserWorkersTest: XCTestCase { + + var sut: UserWorkerLogic? + + override func setUp() { + sut = UserWorker(authenticationLocalRepository: MockSuccessAuthenticationLocalRepository() ) + } + + override func tearDown() { + sut = nil + } + + // MARK: - Success save user + + func testSuccessSaveUser() { + let data = Seeds.Json.account.rawValue.data(using: .utf8) + guard let data = data, + let user = try? JSONDecoder().decode(UserAccountModel.self, from: data) else { + XCTFail("Should not return a failure") + return + } + let result = sut?.save(user: user) + validate(userAccount: result) + } + + // MARK: - Failure save user + + func testSuccessGetUser() { + let data = Seeds.Json.account.rawValue.data(using: .utf8) + guard let data = data, + let user = try? JSONDecoder().decode(UserAccountModel.self, from: data) else { + XCTFail("Should not return a failure") + return + } + sut?.save(user: user) + let result = sut?.retrieveUser() + validate(userAccount: result) + } + + // MARK: - Failure save user + + func testFailureSaveUser() { + sut = UserWorker(authenticationLocalRepository: MockEmptyAuthenticationLocalRepository()) + let data = Seeds.Json.account.rawValue.data(using: .utf8) + guard let data = data, + let user = try? JSONDecoder().decode(UserAccountModel.self, from: data) else { + XCTFail("Should not return a failure") + return + } + let result = sut?.save(user: user) + XCTAssertNil(result) + } + + // MARK: - Failure save user + + func testEmptyGetUser() { + sut = UserWorker(authenticationLocalRepository: MockEmptyAuthenticationLocalRepository()) + let data = Seeds.Json.account.rawValue.data(using: .utf8) + guard let data = data, + let user = try? JSONDecoder().decode(UserAccountModel.self, from: data) else { + XCTFail("Should not return a failure") + return + } + sut?.save(user: user) + let result = sut?.retrieveUser() + XCTAssertNil(result) + } + + private func validate(userAccount result: UserAccountModel?) { + XCTAssertNotNil(result) + XCTAssertEqual(result?.userId, "3") + XCTAssertEqual(result?.cpf, "468.655.400-42") + XCTAssertEqual(result?.name, "Diana Leuschke") + XCTAssertEqual(result?.email, "Marquis_Gibson@hotmail.com") + XCTAssertEqual(result?.accountNumber, "74393734") + XCTAssertEqual(result?.agency, "827810101") + XCTAssertEqual(result?.balance, "472.29") + } + +} diff --git a/KssiusBank/Podfile b/KssiusBank/Podfile index 46a09ef29..46ac32e07 100644 --- a/KssiusBank/Podfile +++ b/KssiusBank/Podfile @@ -7,6 +7,7 @@ target 'KssiusBank' do # Pods for KssiusBank pod 'SwiftGen', '~> 6.6.2' + pod 'KeychainSwift', '~> 20.0' target 'KssiusBankTests' do inherit! :search_paths From fb55ca1936227ed2981f348c87e15dae5a927f8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Sousa?= Date: Fri, 16 Jun 2023 23:14:14 -0300 Subject: [PATCH 09/23] =?UTF-8?q?-=20Salvando=20buscar=20de=20usu=C3=A1rio?= =?UTF-8?q?,=20refactor=20novos=20casos=20de=20testes.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../KssiusBank.xcodeproj/project.pbxproj | 76 ++++- .../UserInterfaceState.xcuserstate | Bin 182539 -> 184049 bytes .../User/Data/Models/UserAccountModel.swift | 2 +- .../AuthenticationRepositoryProtocol.swift | 4 +- .../Autentication/LoginInteractor.swift | 21 +- .../Scenes/Autentication/LoginModels.swift | 72 +++-- .../Scenes/Autentication/LoginPresenter.swift | 6 + .../Autentication/LoginViewController.swift | 34 +- .../Scenes/Autentication/LoginWorker.swift | 11 +- .../Common/CommonValidatorTest.swift | 6 +- .../AutenticationServiceDatasourceTest.swift | 8 +- ...AutenticationLocalDatasourceProtocol.swift | 11 +- .../MockAutenticationServiceDatasource.swift | 8 +- .../Autentication/LoginInteractorTest.swift | 301 ++++++++++++++++++ .../Autentication/LoginPresenterTest.swift | 92 ++++++ .../LoginViewControllerTest.swift | 73 +++++ .../Autentication/LoginWorkerTest.swift | 86 +++++ ...MockAuthenticationRepositoryProtocol.swift | 37 +++ KssiusBank/KssiusBankTests/Seeds.swift | 32 +- .../UIKitSpy/TextFieldSpy.swift | 11 + .../MockAuthenticationLocalRepository.swift | 7 +- 21 files changed, 797 insertions(+), 101 deletions(-) create mode 100644 KssiusBank/KssiusBankTests/Scenes/Autentication/LoginInteractorTest.swift create mode 100644 KssiusBank/KssiusBankTests/Scenes/Autentication/LoginPresenterTest.swift create mode 100644 KssiusBank/KssiusBankTests/Scenes/Autentication/LoginViewControllerTest.swift create mode 100644 KssiusBank/KssiusBankTests/Scenes/Autentication/LoginWorkerTest.swift create mode 100644 KssiusBank/KssiusBankTests/Scenes/Autentication/Mock/MockAuthenticationRepositoryProtocol.swift create mode 100644 KssiusBank/KssiusBankTests/UIKitSpy/TextFieldSpy.swift diff --git a/KssiusBank/KssiusBank.xcodeproj/project.pbxproj b/KssiusBank/KssiusBank.xcodeproj/project.pbxproj index a10956bad..56ac3a6cc 100644 --- a/KssiusBank/KssiusBank.xcodeproj/project.pbxproj +++ b/KssiusBank/KssiusBank.xcodeproj/project.pbxproj @@ -33,7 +33,6 @@ DF0BA8252A3BEE3D00A812F4 /* BankFailure.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFEC185E2A3BD43B001277A2 /* BankFailure.swift */; }; DF0BA8272A3BEEED00A812F4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DF0BA8012A3BE6CA00A812F4 /* Assets.xcassets */; }; DF0BA82F2A3BF03900A812F4 /* LoginPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8292A3BF03900A812F4 /* LoginPresenter.swift */; }; - DF0BA8302A3BF03900A812F4 /* LoginWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA82A2A3BF03900A812F4 /* LoginWorker.swift */; }; DF0BA8312A3BF03900A812F4 /* LoginRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA82B2A3BF03900A812F4 /* LoginRouter.swift */; }; DF0BA8322A3BF03900A812F4 /* LoginModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA82C2A3BF03900A812F4 /* LoginModels.swift */; }; DF0BA8332A3BF03900A812F4 /* LoginViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA82D2A3BF03900A812F4 /* LoginViewController.swift */; }; @@ -54,7 +53,6 @@ DF0BA85F2A3C985500A812F4 /* AuthenticationServiceDatasourceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA85D2A3C985500A812F4 /* AuthenticationServiceDatasourceProtocol.swift */; }; DF0BA8622A3C998100A812F4 /* AuthenticationRepositoryTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8602A3C998100A812F4 /* AuthenticationRepositoryTest.swift */; }; DF0BA8652A3C9A3E00A812F4 /* MockSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8632A3C9A3E00A812F4 /* MockSession.swift */; }; - DF0BA8662A3C9B4600A812F4 /* AuthenticationRepositoryProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8422A3C7AAD00A812F4 /* AuthenticationRepositoryProtocol.swift */; }; DF0BA8692A3C9BA900A812F4 /* MockAutenticationServiceDatasource.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8672A3C9BA900A812F4 /* MockAutenticationServiceDatasource.swift */; }; DF0BA86A2A3C9CB700A812F4 /* AutenticationRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8462A3C7C0200A812F4 /* AutenticationRepository.swift */; }; DF0BA86C2A3CA9AB00A812F4 /* UserFailure.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA86B2A3CA9AB00A812F4 /* UserFailure.swift */; }; @@ -80,7 +78,21 @@ DF4624D82A3D091400CBC35D /* MockAutenticationLocalDatasourceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF4624D72A3D091400CBC35D /* MockAutenticationLocalDatasourceProtocol.swift */; }; DF4624DB2A3D0A8400CBC35D /* UserWorkersTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF4624DA2A3D0A8400CBC35D /* UserWorkersTest.swift */; }; DF4624DE2A3D0DF000CBC35D /* MockAuthenticationLocalRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF4624DD2A3D0DF000CBC35D /* MockAuthenticationLocalRepository.swift */; }; + DF4624E22A3D1E3300CBC35D /* LoginWorkerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF4624E12A3D1E3300CBC35D /* LoginWorkerTest.swift */; }; + DF4624E52A3D1F2E00CBC35D /* MockAuthenticationRepositoryProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF4624E42A3D1F2E00CBC35D /* MockAuthenticationRepositoryProtocol.swift */; }; + DF4624E62A3D226400CBC35D /* AuthenticationRepositoryProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8422A3C7AAD00A812F4 /* AuthenticationRepositoryProtocol.swift */; }; DF7D3F8D2A3CE0A90009770F /* CommonValidatorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF7D3F8C2A3CE0A90009770F /* CommonValidatorTest.swift */; }; + DFC4E8312A3D3C13004B6718 /* LoginViewControllerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC4E8302A3D3C13004B6718 /* LoginViewControllerTest.swift */; }; + DFC4E8342A3D41A0004B6718 /* TextFieldSpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC4E8332A3D41A0004B6718 /* TextFieldSpy.swift */; }; + DFF0843A2A3D24F500672477 /* LoginInteractorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFF084392A3D24F500672477 /* LoginInteractorTest.swift */; }; + DFF084412A3D2B2700672477 /* LoginRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA82B2A3BF03900A812F4 /* LoginRouter.swift */; }; + DFF084422A3D2B2700672477 /* LoginPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8292A3BF03900A812F4 /* LoginPresenter.swift */; }; + DFF084432A3D2B2700672477 /* LoginModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA82C2A3BF03900A812F4 /* LoginModels.swift */; }; + DFF084442A3D2B2700672477 /* LoginInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA82E2A3BF03900A812F4 /* LoginInteractor.swift */; }; + DFF084462A3D2B2700672477 /* LoginViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA82D2A3BF03900A812F4 /* LoginViewController.swift */; }; + DFF084472A3D2C5600672477 /* LoginWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA82A2A3BF03900A812F4 /* LoginWorker.swift */; }; + DFF084482A3D2C5700672477 /* LoginWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA82A2A3BF03900A812F4 /* LoginWorker.swift */; }; + DFF0844A2A3D38AF00672477 /* LoginPresenterTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFF084492A3D38AF00672477 /* LoginPresenterTest.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -155,7 +167,11 @@ DF4624D72A3D091400CBC35D /* MockAutenticationLocalDatasourceProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAutenticationLocalDatasourceProtocol.swift; sourceTree = ""; }; DF4624DA2A3D0A8400CBC35D /* UserWorkersTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserWorkersTest.swift; sourceTree = ""; }; DF4624DD2A3D0DF000CBC35D /* MockAuthenticationLocalRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAuthenticationLocalRepository.swift; sourceTree = ""; }; + DF4624E12A3D1E3300CBC35D /* LoginWorkerTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginWorkerTest.swift; sourceTree = ""; }; + DF4624E42A3D1F2E00CBC35D /* MockAuthenticationRepositoryProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAuthenticationRepositoryProtocol.swift; sourceTree = ""; }; DF7D3F8C2A3CE0A90009770F /* CommonValidatorTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommonValidatorTest.swift; sourceTree = ""; }; + DFC4E8302A3D3C13004B6718 /* LoginViewControllerTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewControllerTest.swift; sourceTree = ""; }; + DFC4E8332A3D41A0004B6718 /* TextFieldSpy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextFieldSpy.swift; sourceTree = ""; }; DFEC18532A3BD28C001277A2 /* UserAccountModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserAccountModel.swift; sourceTree = ""; }; DFEC18562A3BD314001277A2 /* UserWorker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserWorker.swift; sourceTree = ""; }; DFEC18592A3BD423001277A2 /* NetworkService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkService.swift; sourceTree = ""; }; @@ -164,6 +180,8 @@ DFEC18662A3BDDA0001277A2 /* URLSessionProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLSessionProtocol.swift; sourceTree = ""; }; DFEC186A2A3BDE29001277A2 /* NetworkServiceTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkServiceTest.swift; sourceTree = ""; }; DFEC186D2A3BDE99001277A2 /* MockURLProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockURLProtocol.swift; sourceTree = ""; }; + DFF084392A3D24F500672477 /* LoginInteractorTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginInteractorTest.swift; sourceTree = ""; }; + DFF084492A3D38AF00672477 /* LoginPresenterTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginPresenterTest.swift; sourceTree = ""; }; FD57596A225C4608F6EBE669 /* Pods_KssiusBank_KssiusBankUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_KssiusBank_KssiusBankUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -230,6 +248,8 @@ DF0BA7DE2A3BE5D000A812F4 /* KssiusBankTests */ = { isa = PBXGroup; children = ( + DFC4E8322A3D4186004B6718 /* UIKitSpy */, + DF4624DF2A3D1E0900CBC35D /* Scenes */, DF4624D92A3D0A6A00CBC35D /* Workers */, DF7D3F8B2A3CE0880009770F /* Common */, DF0BA84F2A3C830700A812F4 /* Core */, @@ -391,6 +411,34 @@ path = Mock; sourceTree = ""; }; + DF4624DF2A3D1E0900CBC35D /* Scenes */ = { + isa = PBXGroup; + children = ( + DF4624E02A3D1E1300CBC35D /* Autentication */, + ); + path = Scenes; + sourceTree = ""; + }; + DF4624E02A3D1E1300CBC35D /* Autentication */ = { + isa = PBXGroup; + children = ( + DF4624E32A3D1EEA00CBC35D /* Mock */, + DF4624E12A3D1E3300CBC35D /* LoginWorkerTest.swift */, + DFF084392A3D24F500672477 /* LoginInteractorTest.swift */, + DFF084492A3D38AF00672477 /* LoginPresenterTest.swift */, + DFC4E8302A3D3C13004B6718 /* LoginViewControllerTest.swift */, + ); + path = Autentication; + sourceTree = ""; + }; + DF4624E32A3D1EEA00CBC35D /* Mock */ = { + isa = PBXGroup; + children = ( + DF4624E42A3D1F2E00CBC35D /* MockAuthenticationRepositoryProtocol.swift */, + ); + path = Mock; + sourceTree = ""; + }; DF7D3F8B2A3CE0880009770F /* Common */ = { isa = PBXGroup; children = ( @@ -399,6 +447,14 @@ path = Common; sourceTree = ""; }; + DFC4E8322A3D4186004B6718 /* UIKitSpy */ = { + isa = PBXGroup; + children = ( + DFC4E8332A3D41A0004B6718 /* TextFieldSpy.swift */, + ); + path = UIKitSpy; + sourceTree = ""; + }; DFEC18012A3BCFF9001277A2 = { isa = PBXGroup; children = ( @@ -770,6 +826,7 @@ DF4624CF2A3CF6EE00CBC35D /* AuthenticationLocalRepositoryProtocol.swift in Sources */, DF0BA8242A3BEE3D00A812F4 /* BankFailure.swift in Sources */, DF4624C92A3CF0D700CBC35D /* AutenticationLocalDatasource.swift in Sources */, + DFF084472A3D2C5600672477 /* LoginWorker.swift in Sources */, DF4624C62A3CF0AC00CBC35D /* AutenticationLocalDatasourceProtocol.swift in Sources */, DF0BA8332A3BF03900A812F4 /* LoginViewController.swift in Sources */, DF0BA8342A3BF03900A812F4 /* LoginInteractor.swift in Sources */, @@ -794,7 +851,6 @@ DF0BA8312A3BF03900A812F4 /* LoginRouter.swift in Sources */, DF0BA8472A3C7C0200A812F4 /* AutenticationRepository.swift in Sources */, DF0BA8432A3C7AAD00A812F4 /* AuthenticationRepositoryProtocol.swift in Sources */, - DF0BA8302A3BF03900A812F4 /* LoginWorker.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -803,6 +859,7 @@ buildActionMask = 2147483647; files = ( DF0BA8252A3BEE3D00A812F4 /* BankFailure.swift in Sources */, + DFF084432A3D2B2700672477 /* LoginModels.swift in Sources */, DF4624CA2A3CF0D700CBC35D /* AutenticationLocalDatasource.swift in Sources */, DF0BA8692A3C9BA900A812F4 /* MockAutenticationServiceDatasource.swift in Sources */, DF4624D02A3CF6EE00CBC35D /* AuthenticationLocalRepositoryProtocol.swift in Sources */, @@ -813,15 +870,22 @@ DF4624D52A3D080600CBC35D /* AuthenticationLocalRepositoryTest.swift in Sources */, DF0BA7F82A3BE65B00A812F4 /* MockURLProtocol.swift in Sources */, DF0BA80E2A3BE6D400A812F4 /* KssiusBankTests.swift in Sources */, - DF0BA8662A3C9B4600A812F4 /* AuthenticationRepositoryProtocol.swift in Sources */, + DFC4E8312A3D3C13004B6718 /* LoginViewControllerTest.swift in Sources */, + DFF084442A3D2B2700672477 /* LoginInteractor.swift in Sources */, + DF4624E22A3D1E3300CBC35D /* LoginWorkerTest.swift in Sources */, DF0BA8592A3C87AE00A812F4 /* Constants.swift in Sources */, DF0BA8392A3BFB6100A812F4 /* Seeds.swift in Sources */, + DFF0844A2A3D38AF00672477 /* LoginPresenterTest.swift in Sources */, + DFF084412A3D2B2700672477 /* LoginRouter.swift in Sources */, DF0BA86D2A3CA9AB00A812F4 /* UserFailure.swift in Sources */, DF4624DE2A3D0DF000CBC35D /* MockAuthenticationLocalRepository.swift in Sources */, DF0BA8122A3BE9F300A812F4 /* UserAccountModel.swift in Sources */, DF0BA8552A3C836A00A812F4 /* AutenticationServiceDatasourceTest.swift in Sources */, DF0BA7F72A3BE65800A812F4 /* NetworkServiceTest.swift in Sources */, + DF4624E62A3D226400CBC35D /* AuthenticationRepositoryProtocol.swift in Sources */, + DFF084422A3D2B2700672477 /* LoginPresenter.swift in Sources */, DF4624D32A3D030700CBC35D /* AutenticationLocalDatasourceTest.swift in Sources */, + DF4624E52A3D1F2E00CBC35D /* MockAuthenticationRepositoryProtocol.swift in Sources */, DF4624D82A3D091400CBC35D /* MockAutenticationLocalDatasourceProtocol.swift in Sources */, DF0BA8702A3CAC7D00A812F4 /* CommonValidator.swift in Sources */, DF0BA84A2A3C7C8E00A812F4 /* AutenticationServiceDatasource.swift in Sources */, @@ -829,6 +893,10 @@ DF7D3F8D2A3CE0A90009770F /* CommonValidatorTest.swift in Sources */, DF4624CD2A3CF6DB00CBC35D /* AutenticationLocalRepository.swift in Sources */, DF0BA8162A3BEC4800A812F4 /* AutenticationApi.swift in Sources */, + DFF084482A3D2C5700672477 /* LoginWorker.swift in Sources */, + DFC4E8342A3D41A0004B6718 /* TextFieldSpy.swift in Sources */, + DFF084462A3D2B2700672477 /* LoginViewController.swift in Sources */, + DFF0843A2A3D24F500672477 /* LoginInteractorTest.swift in Sources */, DF0BA8622A3C998100A812F4 /* AuthenticationRepositoryTest.swift in Sources */, DF0BA8182A3BEC4800A812F4 /* NetworkService.swift in Sources */, DF0BA86A2A3C9CB700A812F4 /* AutenticationRepository.swift in Sources */, diff --git a/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/UserInterfaceState.xcuserstate b/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/UserInterfaceState.xcuserstate index 1ad916b775bb80a437cab51df5ca8b41ba697e63..ac535eded8e23d8aa8d37d4bb7804b33d51347d4 100644 GIT binary patch literal 184049 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

nF1W7dZvf-X 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 IND=>k0F01NegFUf diff --git a/KssiusBank/KssiusBank/Core/User/Data/Models/UserAccountModel.swift b/KssiusBank/KssiusBank/Core/User/Data/Models/UserAccountModel.swift index 3d9f342c6..d18ac37e6 100644 --- a/KssiusBank/KssiusBank/Core/User/Data/Models/UserAccountModel.swift +++ b/KssiusBank/KssiusBank/Core/User/Data/Models/UserAccountModel.swift @@ -7,7 +7,7 @@ import Foundation -struct UserAccountModel : Codable { +struct UserAccountModel : Codable, Equatable { let userId: String let email: String let cpf: String diff --git a/KssiusBank/KssiusBank/Core/User/Data/Repositories/AuthenticationRepositoryProtocol.swift b/KssiusBank/KssiusBank/Core/User/Data/Repositories/AuthenticationRepositoryProtocol.swift index a76dbaf19..a1f785e01 100644 --- a/KssiusBank/KssiusBank/Core/User/Data/Repositories/AuthenticationRepositoryProtocol.swift +++ b/KssiusBank/KssiusBank/Core/User/Data/Repositories/AuthenticationRepositoryProtocol.swift @@ -8,5 +8,7 @@ import Foundation protocol AuthenticationRepositoryProtocol: AnyObject { - func perform(login: AutenticationApi.Endpoints, with data: LoginRequestModel, completion: @escaping (Result) -> Void) + func perform(login: AutenticationApi.Endpoints, + with data: LoginRequestModel, + completion: @escaping (Result) -> Void) } diff --git a/KssiusBank/KssiusBank/Scenes/Autentication/LoginInteractor.swift b/KssiusBank/KssiusBank/Scenes/Autentication/LoginInteractor.swift index b794ede63..c4fe918f6 100644 --- a/KssiusBank/KssiusBank/Scenes/Autentication/LoginInteractor.swift +++ b/KssiusBank/KssiusBank/Scenes/Autentication/LoginInteractor.swift @@ -15,11 +15,12 @@ import UIKit protocol LoginBusinessLogic { func login(request: Login.Login.Request) + func fetchUser(request: Login.FetchUser.Request) } protocol LoginDataStore { - var account: UserAccountModel? { get set } + var userAccount: UserAccountModel? { get set } } final class LoginInteractor: LoginBusinessLogic, LoginDataStore { @@ -27,16 +28,16 @@ final class LoginInteractor: LoginBusinessLogic, LoginDataStore { // MARK: - Properties private let presenter: LoginPresentationLogic? - private let worker: LoginWorker? + private let worker: LoginWorkerLogic? private let userWork: UserWorkerLogic? // MARK: - DataSource - var account: UserAccountModel? + var userAccount: UserAccountModel? // MARK: - Inits init(presenter: LoginPresentationLogic? = nil, - worker: LoginWorker? = nil, + worker: LoginWorkerLogic? = nil, userWork: UserWorkerLogic? = nil) { self.presenter = presenter self.worker = worker @@ -71,7 +72,7 @@ extension LoginInteractor { } private func handle(success accountModel: UserAccountModel ) { - account = accountModel + userAccount = accountModel userWork?.save(user: accountModel) presenter?.resolveLogin(response: .init(success: true)) } @@ -89,3 +90,13 @@ extension LoginInteractor { } } + +// MARK: - Fetch User + +extension LoginInteractor { + + func fetchUser(request: Login.FetchUser.Request) { + userAccount = userWork?.retrieveUser() + presenter?.displayUser(response: .init(user: userAccount?.email)) + } +} diff --git a/KssiusBank/KssiusBank/Scenes/Autentication/LoginModels.swift b/KssiusBank/KssiusBank/Scenes/Autentication/LoginModels.swift index 0501abf51..2d4a05fb3 100644 --- a/KssiusBank/KssiusBank/Scenes/Autentication/LoginModels.swift +++ b/KssiusBank/KssiusBank/Scenes/Autentication/LoginModels.swift @@ -3,7 +3,7 @@ // KssiusBank // // Created by Cassio Sousa on 15/06/23. -// Copyright (c) 2023 ___ORGANIZATIONNAME___. All rights reserved. +// Copyright (c) 2023 Cassio Sousa. All rights reserved. // // This file was generated by the Clean Swift Xcode Templates so // you can apply clean architecture to your iOS and Mac projects, @@ -12,40 +12,50 @@ import UIKit -enum Login -{ - // MARK: Use cases - - enum Login - { - struct Request - { - var user: String? - var password: String? - } - struct Response - { - let success: Bool - let errorMessage: String? - - init(success: Bool = false, errorMessage: String? = nil) { - self.success = success - self.errorMessage = errorMessage +enum Login { + + // MARK: Use cases + + enum FetchUser { + struct Request {} + + struct Response { + var user: String? } - func toViewModel() -> ViewModel { - return .init( success: success, errorMessage: errorMessage) + struct ViewModel { + var user: String? } } - struct ViewModel - { - var success: Bool - var errorMessage: String? - - init(success: Bool = false, errorMessage: String? = nil) { - self.success = success - self.errorMessage = errorMessage + + enum Login { + struct Request { + var user: String? + var password: String? + } + + struct Response { + let success: Bool + let errorMessage: String? + + init(success: Bool = false, errorMessage: String? = nil) { + self.success = success + self.errorMessage = errorMessage + } + + func toViewModel() -> ViewModel { + return .init( success: success, errorMessage: errorMessage) + } + } + + struct ViewModel { + var success: Bool + var errorMessage: String? + + init(success: Bool = false, errorMessage: String? = nil) { + self.success = success + self.errorMessage = errorMessage + } } } - } } diff --git a/KssiusBank/KssiusBank/Scenes/Autentication/LoginPresenter.swift b/KssiusBank/KssiusBank/Scenes/Autentication/LoginPresenter.swift index b5fc4316b..7573f44b8 100644 --- a/KssiusBank/KssiusBank/Scenes/Autentication/LoginPresenter.swift +++ b/KssiusBank/KssiusBank/Scenes/Autentication/LoginPresenter.swift @@ -13,6 +13,7 @@ import UIKit protocol LoginPresentationLogic { + func displayUser(response: Login.FetchUser.Response) func resolveLogin(response: Login.Login.Response) } @@ -23,8 +24,13 @@ final class LoginPresenter { // MARK: - Logics extension LoginPresenter: LoginPresentationLogic { + func resolveLogin(response: Login.Login.Response){ viewController?.resolveLogin(viewModel:response.toViewModel()) } + + func displayUser(response: Login.FetchUser.Response) { + viewController?.displayUser(viewModel: .init(user: response.user)) + } } diff --git a/KssiusBank/KssiusBank/Scenes/Autentication/LoginViewController.swift b/KssiusBank/KssiusBank/Scenes/Autentication/LoginViewController.swift index 8602c8df0..5a74ee087 100644 --- a/KssiusBank/KssiusBank/Scenes/Autentication/LoginViewController.swift +++ b/KssiusBank/KssiusBank/Scenes/Autentication/LoginViewController.swift @@ -15,7 +15,7 @@ import KeychainSwift protocol LoginDisplayLogic: AnyObject { - func presentLogin(viewModel: Login.Login.ViewModel) + func displayUser(viewModel: Login.FetchUser.ViewModel) func resolveLogin(viewModel: Login.Login.ViewModel) } @@ -50,12 +50,12 @@ class LoginViewController: UIViewController let localDataSource = AuthenticationLocalDatasource(keychain: KeychainSwift()) let localRepository = AuthenticationLocalRepository(authenticationLocalDataSource: localDataSource) - let worker = LoginWorker(authenticaionRepository: autenticationRepository, - authenticaionLocalRepository: localRepository) + let worker = LoginWorker(authenticaionRepository: autenticationRepository) + let userWork = UserWorker(authenticationLocalRepository: localRepository) let viewController = self let presenter = LoginPresenter() - let interactor = LoginInteractor(presenter: presenter, worker: worker) + let interactor = LoginInteractor(presenter: presenter, worker: worker, userWork: userWork) let router = LoginRouter() viewController.interactor = interactor viewController.router = router @@ -81,12 +81,13 @@ class LoginViewController: UIViewController override func viewDidLoad() { super.viewDidLoad() - doSomething() + fetchUser() } - // MARK: Do something + // MARK: Login + + @IBOutlet weak var userTextField: UITextField? - //@IBOutlet weak var nameTextField: UITextField! func doSomething() { @@ -98,8 +99,11 @@ class LoginViewController: UIViewController } extension LoginViewController: LoginDisplayLogic { - func resolveLogin(viewModel: Login.Login.ViewModel) - { + func displayUser(viewModel: Login.FetchUser.ViewModel) { + userTextField?.text = viewModel.user + } + + func resolveLogin(viewModel: Login.Login.ViewModel) { //nameTextField.text = viewModel.name if viewModel.success { @@ -108,8 +112,14 @@ extension LoginViewController: LoginDisplayLogic { } } - func presentLogin(viewModel: Login.Login.ViewModel) - { - //nameTextField.text = viewModel.name + +} + +// MARK: - Fetch User +extension LoginViewController { + + private func fetchUser() { + interactor?.fetchUser(request: .init()) } + } diff --git a/KssiusBank/KssiusBank/Scenes/Autentication/LoginWorker.swift b/KssiusBank/KssiusBank/Scenes/Autentication/LoginWorker.swift index b439fead5..b3cc2e3c0 100644 --- a/KssiusBank/KssiusBank/Scenes/Autentication/LoginWorker.swift +++ b/KssiusBank/KssiusBank/Scenes/Autentication/LoginWorker.swift @@ -12,27 +12,24 @@ import UIKit -protocol LoginWorkerProtocol { +protocol LoginWorkerLogic { func login(username: String, password: String, completion: @escaping (Result) -> Void) } -final class LoginWorker{ +final class LoginWorker { // MARK: - Properties private let authenticaionRepository: AuthenticationRepositoryProtocol - private let authenticaionLocalRepository: AuthenticationLocalRepositoryProtocol // MARK: - Inits - init(authenticaionRepository: AuthenticationRepositoryProtocol, - authenticaionLocalRepository: AuthenticationLocalRepositoryProtocol) { + init(authenticaionRepository: AuthenticationRepositoryProtocol) { self.authenticaionRepository = authenticaionRepository - self.authenticaionLocalRepository = authenticaionLocalRepository } } -extension LoginWorker: LoginWorkerProtocol { +extension LoginWorker: LoginWorkerLogic { func login(username: String, password: String, completion: @escaping (Result) -> Void) { let requestModel: LoginRequestModel = .init(username: username, password: password) authenticaionRepository.perform(login: .loginRequest, diff --git a/KssiusBank/KssiusBankTests/Common/CommonValidatorTest.swift b/KssiusBank/KssiusBankTests/Common/CommonValidatorTest.swift index 80470ed0a..1099e5d77 100644 --- a/KssiusBank/KssiusBankTests/Common/CommonValidatorTest.swift +++ b/KssiusBank/KssiusBankTests/Common/CommonValidatorTest.swift @@ -18,7 +18,7 @@ extension CommonValidatorTest { // MARK: - Success CPF Authentication Response func testSuccessCpf() { - XCTAssertTrue(CommonValidator.User.isCpf("468.655.400-42")) + XCTAssertTrue(CommonValidator.User.isCpf(Seeds.cpf)) } @@ -35,7 +35,7 @@ extension CommonValidatorTest { // MARK: - Success Email Authentication Response func testSuccessEmail() { - XCTAssertTrue(CommonValidator.User.isEmail("teste@teste.com")) + XCTAssertTrue(CommonValidator.User.isEmail(Seeds.email)) } @@ -65,7 +65,7 @@ extension CommonValidatorTest { // MARK: - Success Password Authentication func testSuccessPassword() { - XCTAssertTrue(CommonValidator.User.validatePassword("T@to123")) + XCTAssertTrue(CommonValidator.User.validatePassword(Seeds.password)) } // MARK: - Failure Password Special char Authentication diff --git a/KssiusBank/KssiusBankTests/Core/Data/datasources/AutenticationServiceDatasourceTest.swift b/KssiusBank/KssiusBankTests/Core/Data/datasources/AutenticationServiceDatasourceTest.swift index b6023adf2..7c5730ccf 100644 --- a/KssiusBank/KssiusBankTests/Core/Data/datasources/AutenticationServiceDatasourceTest.swift +++ b/KssiusBank/KssiusBankTests/Core/Data/datasources/AutenticationServiceDatasourceTest.swift @@ -32,7 +32,7 @@ final class AutenticationServiceDatasourceTest: XCTestCase { func testSuccessResponse() { let data = Seeds.Json.account.rawValue.data(using: .utf8) - let modelRequest = LoginRequestModel(username: "user", password: "pass") + let modelRequest = LoginRequestModel(username: Seeds.cpf, password: Seeds.password) MockURLProtocol.requestHandler = { request in let response = HTTPURLResponse(url: self.apiURL, statusCode: 200, httpVersion: nil, headerFields: nil)! @@ -55,8 +55,7 @@ final class AutenticationServiceDatasourceTest: XCTestCase { func testErrorResponse() { - let data = Seeds.Json.account.rawValue.data(using: .utf8) - let modelRequest = LoginRequestModel(username: "user", password: "pass") + let modelRequest = LoginRequestModel(username: Seeds.cpf, password: Seeds.password) MockURLProtocol.requestHandler = { request in throw ServiceError.invalidUrl @@ -70,10 +69,7 @@ final class AutenticationServiceDatasourceTest: XCTestCase { switch( error ){ case .network( _): XCTAssertEqual(error, BankFailure.network(.init())) - default: - XCTFail("Should not return a failure") } - } self?.expectation.fulfill() } diff --git a/KssiusBank/KssiusBankTests/Core/Repositories/Mock/MockAutenticationLocalDatasourceProtocol.swift b/KssiusBank/KssiusBankTests/Core/Repositories/Mock/MockAutenticationLocalDatasourceProtocol.swift index 994830a93..fcf188a93 100644 --- a/KssiusBank/KssiusBankTests/Core/Repositories/Mock/MockAutenticationLocalDatasourceProtocol.swift +++ b/KssiusBank/KssiusBankTests/Core/Repositories/Mock/MockAutenticationLocalDatasourceProtocol.swift @@ -11,17 +11,10 @@ import Foundation final class MockSuccessAuthenticationLocalDatasource: AuthenticationLocalDatasourceProtocol { func save(user: UserAccountModel) -> UserAccountModel? { - return user + return Seeds.user } func retrieveUser() -> UserAccountModel? { - let data = Seeds.Json.account.rawValue.data(using: .utf8) - guard let data = data, - let user = try? JSONDecoder().decode(UserAccountModel.self, from: data) else { - return nil - } - return user + return Seeds.user } - - } diff --git a/KssiusBank/KssiusBankTests/Core/Repositories/Mock/MockAutenticationServiceDatasource.swift b/KssiusBank/KssiusBankTests/Core/Repositories/Mock/MockAutenticationServiceDatasource.swift index fd24674a3..fbc8f78f2 100644 --- a/KssiusBank/KssiusBankTests/Core/Repositories/Mock/MockAutenticationServiceDatasource.swift +++ b/KssiusBank/KssiusBankTests/Core/Repositories/Mock/MockAutenticationServiceDatasource.swift @@ -17,13 +17,7 @@ final class MockSuccessAutenticationServiceDatasource: AuthenticationServiceData init(networkService: NetworkService) {} func perform(login: AutenticationApi.Endpoints, with data: LoginRequestModel, completion: @escaping (Result) -> Void) { - completion(.success(UserAccountModel(userId: "", - email: "Marquis_Gibson@hotmail.com", - cpf: "", - name: "", - accountNumber: "", - agency: "", - balance: "")) + completion(.success(Seeds.user) ) } } diff --git a/KssiusBank/KssiusBankTests/Scenes/Autentication/LoginInteractorTest.swift b/KssiusBank/KssiusBankTests/Scenes/Autentication/LoginInteractorTest.swift new file mode 100644 index 000000000..6f013ad08 --- /dev/null +++ b/KssiusBank/KssiusBankTests/Scenes/Autentication/LoginInteractorTest.swift @@ -0,0 +1,301 @@ +// +// LoginInteractor.swift +// KssiusBankTests +// +// Created by Cassio Sousa on 16/06/23. +// Copyright © 2023 Cassio Sousa. All rights reserved. +// + +import XCTest +@testable import KssiusBank + + + +final class LoginInteractorTest: XCTestCase { + + // MARK: - Tests Error worker network + + func testFailureLoginWithNetwork() { + let presenterSpy = LoginPresenterSpy() + let workerSpy = LoginWorkerFailSpy(failure: .network(.init())) + let userWorkerSpy = UserWorkerSuccessSpy() + + let sut = LoginInteractor( + presenter: presenterSpy, + worker: workerSpy, + userWork: userWorkerSpy + ) + + let request = Login.Login.Request(user: Seeds.email, password: Seeds.password) + + + sut.login(request: request) + + XCTAssertTrue(workerSpy.loginCalled) + XCTAssertFalse(userWorkerSpy.saveUserCalled) + XCTAssertTrue(presenterSpy.presentLoginCalled) + XCTAssertFalse(presenterSpy.presentedLoginSuccess) + XCTAssertEqual( + presenterSpy.presentedLoginErrorMessage, + L10n.Network.Error.general + ) + } + + // MARK: - Tests Success fetch user + func testSuccessFetchUser() { + + + let presenterSpy = LoginPresenterSpy() + let workerSpy = LoginWorkerSuccessSpy() + let userWorkerSpy = UserWorkerSuccessSpy() + + let sut = LoginInteractor( + presenter: presenterSpy, + worker: workerSpy, + userWork: userWorkerSpy + ) + + let request = Login.Login.Request(user: Seeds.email, password: Seeds.password) + + sut.login(request: request) + sut.fetchUser(request: .init()) + + let expectedUser = Seeds.email + XCTAssertTrue(userWorkerSpy.retrieveUserCalled) + XCTAssertTrue(presenterSpy.presentUserCalled) + XCTAssertEqual(presenterSpy.displayedUser, expectedUser) + } + + +} + +// MARK: - Tests Invalid login + +extension LoginInteractorTest { + + // MARK: - LoginSeuccess with email + + func testSuccessLoginWithEmail() { + + let presenterSpy = LoginPresenterSpy() + let workerSpy = LoginWorkerSuccessSpy() + let userWorkerSpy = UserWorkerSuccessSpy() + + let sut = LoginInteractor( + presenter: presenterSpy, + worker: workerSpy, + userWork: userWorkerSpy + ) + + let request = Login.Login.Request(user: Seeds.email, password: Seeds.password) + + sut.login(request: request) + + + XCTAssertTrue(workerSpy.loginCalled) + XCTAssertTrue(userWorkerSpy.saveUserCalled) + XCTAssertTrue(presenterSpy.presentLoginCalled) + XCTAssertTrue(presenterSpy.presentedLoginSuccess) + XCTAssertNil(presenterSpy.presentedLoginErrorMessage) + } + + // MARK: - Login Success with cpf + + func testSuccessLoginWithCPF() { + // GIVEN + let presenterSpy = LoginPresenterSpy() + let workerSpy = LoginWorkerSuccessSpy() + let userWorkerSpy = UserWorkerSuccessSpy() + + let sut = LoginInteractor( + presenter: presenterSpy, + worker: workerSpy, + userWork: userWorkerSpy + ) + + let request = Login.Login.Request(user: Seeds.cpf, password: Seeds.password) + + sut.login(request: request) + + + XCTAssertTrue(workerSpy.loginCalled) + XCTAssertTrue(userWorkerSpy.saveUserCalled) + XCTAssertTrue(presenterSpy.presentLoginCalled) + XCTAssertTrue(presenterSpy.presentedLoginSuccess) + XCTAssertNil(presenterSpy.presentedLoginErrorMessage) + } + + // MARK: - Login Failure with cpf + + func testFailureLoginWithoutUserAndPassword() { + let presenterSpy = LoginPresenterSpy() + let workerSpy = LoginWorkerSuccessSpy() + let userWorkerSpy = UserWorkerSuccessSpy() + + let sut = LoginInteractor( + presenter: presenterSpy, + worker: workerSpy, + userWork: userWorkerSpy + ) + + let request = Login.Login.Request(user: nil, password: nil) + + // WHEN + sut.login(request: request) + + // THEN + XCTAssertFalse(workerSpy.loginCalled) + XCTAssertFalse(userWorkerSpy.saveUserCalled) + XCTAssertTrue(presenterSpy.presentLoginCalled) + XCTAssertFalse(presenterSpy.presentedLoginSuccess) + XCTAssertEqual( + presenterSpy.presentedLoginErrorMessage, + L10n.User.Authentication.Error.general + ) + } + + + // MARK: - Login Failure login with invalid email + + func testFailureLoginWithInvalidEmail() { + let presenterSpy = LoginPresenterSpy() + let workerSpy = LoginWorkerFailSpy(failure: .user) + let userWorkerSpy = UserWorkerSuccessSpy() + + let sut = LoginInteractor( + presenter: presenterSpy, + worker: workerSpy, + userWork: userWorkerSpy + ) + + let request = Login.Login.Request(user: "test@com", password: Seeds.password) + + + sut.login(request: request) + + XCTAssertTrue(workerSpy.loginCalled) + XCTAssertFalse(userWorkerSpy.saveUserCalled) + XCTAssertTrue(presenterSpy.presentLoginCalled) + XCTAssertFalse(presenterSpy.presentedLoginSuccess) + XCTAssertEqual( + presenterSpy.presentedLoginErrorMessage, + L10n.User.Authentication.Error.invalidCpf + ) + } + + // MARK: - Login Failure login with invalid cpf + + func testFailureLoginWithInvalidCPF() { + let presenterSpy = LoginPresenterSpy() + let workerSpy = LoginWorkerFailSpy(failure: .user) + let userWorkerSpy = UserWorkerSuccessSpy() + + let sut = LoginInteractor( + presenter: presenterSpy, + worker: workerSpy, + userWork: userWorkerSpy + ) + + let request = Login.Login.Request(user: "1231", password: Seeds.password) + + + sut.login(request: request) + + XCTAssertTrue(workerSpy.loginCalled) + XCTAssertFalse(userWorkerSpy.saveUserCalled) + XCTAssertTrue(presenterSpy.presentLoginCalled) + XCTAssertFalse(presenterSpy.presentedLoginSuccess) + XCTAssertEqual( + presenterSpy.presentedLoginErrorMessage, + L10n.User.Authentication.Error.invalidCpf + ) + } + + + // MARK: - Login Failure login with invalid password + + func testFailureLoginWithInvalidPassword() { + let presenterSpy = LoginPresenterSpy() + let workerSpy = LoginWorkerFailSpy(failure: .password) + let userWorkerSpy = UserWorkerSuccessSpy() + + let sut = LoginInteractor( + presenter: presenterSpy, + worker: workerSpy, + userWork: userWorkerSpy + ) + + let request = Login.Login.Request(user:Seeds.cpf, password: "abc" ) + + sut.login(request: request) + + XCTAssertTrue(workerSpy.loginCalled) + XCTAssertFalse(userWorkerSpy.saveUserCalled) + XCTAssertTrue(presenterSpy.presentLoginCalled) + XCTAssertFalse(presenterSpy.presentedLoginSuccess) + XCTAssertEqual( + presenterSpy.presentedLoginErrorMessage, + L10n.User.Authentication.Error.invalidPassword + ) + } +} + + +final class LoginPresenterSpy: LoginPresentationLogic { + + var presentUserCalled = false + var presentLoginCalled = false + + var displayedUser: String? + + var presentedLoginSuccess = false + var presentedLoginErrorMessage: String? + + func displayUser(response: Login.FetchUser.Response) { + presentUserCalled = true + displayedUser = response.user + } + + func resolveLogin(response: Login.Login.Response) { + presentLoginCalled = true + presentedLoginSuccess = response.success + presentedLoginErrorMessage = response.errorMessage + } +} + +final class LoginWorkerSuccessSpy: LoginWorkerLogic { + var loginCalled = false + + func login(username: String, password: String, completion: @escaping (Result) -> Void) { + loginCalled = true + completion(.success(Seeds.user)) + } +} + +final class LoginWorkerFailSpy: LoginWorkerLogic { + var loginCalled = false + let failure: UserFailure + + init(failure: UserFailure) { + self.failure = failure + } + + func login(username: String, password: String, completion: @escaping (Result) -> Void) { + loginCalled = true + completion(.failure(failure)) + } +} + +final class UserWorkerSuccessSpy: UserWorkerLogic { + var saveUserCalled = false + var retrieveUserCalled = false + func save(user: UserAccountModel) -> UserAccountModel? { + saveUserCalled = true + return Seeds.user + } + + func retrieveUser() -> UserAccountModel? { + retrieveUserCalled = true + return Seeds.user + } +} diff --git a/KssiusBank/KssiusBankTests/Scenes/Autentication/LoginPresenterTest.swift b/KssiusBank/KssiusBankTests/Scenes/Autentication/LoginPresenterTest.swift new file mode 100644 index 000000000..fdb88ec1b --- /dev/null +++ b/KssiusBank/KssiusBankTests/Scenes/Autentication/LoginPresenterTest.swift @@ -0,0 +1,92 @@ +// +// LoginPresenterTest.swift +// KssiusBankTests +// +// Created by Cassio Sousa on 16/06/23. +// Copyright © 2023 Cassio Sousa. All rights reserved. +// + +import XCTest +@testable import KssiusBank + +final class LoginPresenterTest: XCTestCase { + + + // MARK: - Presenter resolve login success + + func testSuccessDisplayUser() { + + let viewControllerSpy = LoginViewControllerSpy() + + let sut = LoginPresenter() + sut.viewController = viewControllerSpy + + let response = Login.FetchUser.Response(user: "test@hotmail.com") + + + sut.displayUser(response: response) + + XCTAssertTrue(viewControllerSpy.displayUserCalled) + XCTAssertEqual(viewControllerSpy.displayUserViewModel.user, "test@hotmail.com") + } + + // MARK: - Presenter resolve login success + + func testSuccessResolveLogin() { + + let viewControllerSpy = LoginViewControllerSpy() + + let sut = LoginPresenter() + sut.viewController = viewControllerSpy + + let response = Login.Login.Response(success: true, errorMessage: nil) + + + sut.resolveLogin(response: response) + + XCTAssertTrue(viewControllerSpy.resolveLoginCalled) + XCTAssertTrue(viewControllerSpy.resolveLoginViewModel.success) + XCTAssertNil(viewControllerSpy.resolveLoginViewModel.errorMessage) + } + + // MARK: - Presenter resolve login failure + + func testFailureResolveLogin() { + + let viewControllerSpy = LoginViewControllerSpy() + + let sut = LoginPresenter() + sut.viewController = viewControllerSpy + + let response = Login.Login.Response(success: false, errorMessage: L10n.User.Authentication.Error.invalidCpf) + + + sut.resolveLogin(response: response) + + + XCTAssertTrue(viewControllerSpy.resolveLoginCalled) + XCTAssertFalse(viewControllerSpy.resolveLoginViewModel.success) + XCTAssertEqual(viewControllerSpy.resolveLoginViewModel.errorMessage, L10n.User.Authentication.Error.invalidCpf) + } +} + +final class LoginViewControllerSpy : LoginDisplayLogic { + var resolveLoginCalled = false + var resolveLoginViewModel: Login.Login.ViewModel = .init() + + var displayUserCalled = false + var displayUserViewModel: Login.FetchUser.ViewModel = .init() + + func displayUser(viewModel: Login.FetchUser.ViewModel) { + displayUserCalled = true + displayUserViewModel = viewModel + } + + func resolveLogin(viewModel: Login.Login.ViewModel) { + resolveLoginCalled = true + resolveLoginViewModel = viewModel + } + + + +} diff --git a/KssiusBank/KssiusBankTests/Scenes/Autentication/LoginViewControllerTest.swift b/KssiusBank/KssiusBankTests/Scenes/Autentication/LoginViewControllerTest.swift new file mode 100644 index 000000000..d48b4ba3c --- /dev/null +++ b/KssiusBank/KssiusBankTests/Scenes/Autentication/LoginViewControllerTest.swift @@ -0,0 +1,73 @@ +// +// LoginViewControllerTest.swift +// KssiusBankTests +// +// Created by Cassio Sousa on 16/06/23. +// Copyright © 2023 Cassio Sousa. All rights reserved. +// + +import Foundation + +import XCTest + +import UIKit + +// MARK: - Test Doubles + +final class LoginInteractorSpy: LoginBusinessLogic, LoginDataStore { + var fetchUserCalled = false + var loginCalled = false + + var userAccount: UserAccountModel? + + func fetchUser(request: Login.FetchUser.Request) { + fetchUserCalled = true + } + + func login(request: Login.Login.Request) { + loginCalled = true + } +} + +// MARK: - Tests + +final class LoginViewControllerTests: XCTestCase { + + // MARK: - Verify fetch user on viewDidLoad + + func testFetchUserCalledWhenViewDidLoad() { + + let interactorSpy = LoginInteractorSpy() + + let viewController = LoginViewController() + viewController.interactor = interactorSpy + + viewController.beginAppearanceTransition(true, animated: false) + viewController.endAppearanceTransition() + + + viewController.viewDidLoad() + + + XCTAssertTrue(interactorSpy.fetchUserCalled) + } + + func testDisplayUser() { + + let viewController = LoginViewController() + + let textFieldSpy = TextFieldSpy() + viewController.userTextField = textFieldSpy + + viewController.beginAppearanceTransition(true, animated: false) + viewController.endAppearanceTransition() + + let viewModel = Login.FetchUser.ViewModel(user: "test@hotmail.com") + + + viewController.displayUser(viewModel: viewModel) + + + XCTAssertEqual(viewController.userTextField?.text, "test@hotmail.com") + } +} diff --git a/KssiusBank/KssiusBankTests/Scenes/Autentication/LoginWorkerTest.swift b/KssiusBank/KssiusBankTests/Scenes/Autentication/LoginWorkerTest.swift new file mode 100644 index 000000000..d39d20e8c --- /dev/null +++ b/KssiusBank/KssiusBankTests/Scenes/Autentication/LoginWorkerTest.swift @@ -0,0 +1,86 @@ +// +// LoginWorkerTest.swift +// KssiusBankTests +// +// Created by Cassio Sousa on 16/06/23. +// Copyright © 2023 Cassio Sousa. All rights reserved. +// + +import XCTest +@testable import KssiusBank + +final class LoginWorkTest: XCTestCase { + + var sut: LoginWorkerLogic? + + override func setUp() { + // remove datasource + let authenticationRepository = MockSuccessAuthenticationRepository() + + sut = LoginWorker(authenticaionRepository: authenticationRepository) + + } + + override func tearDown() { + sut = nil + } + + // MARK: - Success login + + func testSuccessLogin() { + // remove datasource + let authenticationRepository = MockSuccessAuthenticationRepository() + + let expectation = self.expectation(description: "testSuccessSaveUser") + + sut = LoginWorker(authenticaionRepository: authenticationRepository) + + sut?.login(username: Seeds.email, password: Seeds.password) { result in + XCTAssertEqual(result, .success(Seeds.user)) + expectation.fulfill() + } + + wait(for: [expectation], timeout: 1) + XCTAssertTrue(authenticationRepository.performLoginCalled) + + } + + // MARK: - Failure login password + + func testFailurePasswordLogin() { + + let authenticationRepository = MockFailureAuthenticationRepository(userFailure: .password) + let expectation = self.expectation(description: "testFailureLogin") + + sut = LoginWorker(authenticaionRepository: authenticationRepository) + + sut?.login(username: Seeds.email, password: Seeds.password) { result in + XCTAssertEqual(result, .failure(.password)) + expectation.fulfill() + } + + wait(for: [expectation], timeout: 1) + XCTAssertTrue(authenticationRepository.performLoginCalled) + + } + + // MARK: - Failure login user + + func testFailureUserLogin() { + + let authenticationRepository = MockFailureAuthenticationRepository(userFailure: .user) + let expectation = self.expectation(description: "testFailureLogin") + + sut = LoginWorker(authenticaionRepository: authenticationRepository) + + sut?.login(username: Seeds.email, password: Seeds.password) { result in + XCTAssertEqual(result, .failure(.user)) + expectation.fulfill() + } + + wait(for: [expectation], timeout: 1) + XCTAssertTrue(authenticationRepository.performLoginCalled) + + } + +} diff --git a/KssiusBank/KssiusBankTests/Scenes/Autentication/Mock/MockAuthenticationRepositoryProtocol.swift b/KssiusBank/KssiusBankTests/Scenes/Autentication/Mock/MockAuthenticationRepositoryProtocol.swift new file mode 100644 index 000000000..b97255105 --- /dev/null +++ b/KssiusBank/KssiusBankTests/Scenes/Autentication/Mock/MockAuthenticationRepositoryProtocol.swift @@ -0,0 +1,37 @@ +// +// MockAuthenticationRepositoryProtocol.swift +// KssiusBankTests +// +// Created by Cassio Sousa on 16/06/23. +// Copyright © 2023 Cassio Sousa. All rights reserved. +// + +import Foundation + +final class MockSuccessAuthenticationRepository: AuthenticationRepositoryProtocol { + + var performLoginCalled = false + + func perform(login: AutenticationApi.Endpoints, with data: LoginRequestModel, + completion: @escaping (Result) -> Void) { + performLoginCalled = true + completion(.success(Seeds.user)) + } +} + +final class MockFailureAuthenticationRepository: AuthenticationRepositoryProtocol { + + var performLoginCalled = false + private let userFailure: UserFailure + + init(userFailure: UserFailure) { + self.userFailure = userFailure + } + + func perform(login: AutenticationApi.Endpoints, with data: LoginRequestModel, + completion: @escaping (Result) -> Void) { + performLoginCalled = true + completion(.failure(userFailure)) + } +} + diff --git a/KssiusBank/KssiusBankTests/Seeds.swift b/KssiusBank/KssiusBankTests/Seeds.swift index 84d0f9d7a..7ab44cef0 100644 --- a/KssiusBank/KssiusBankTests/Seeds.swift +++ b/KssiusBank/KssiusBankTests/Seeds.swift @@ -11,15 +11,29 @@ struct Seeds { enum Json: String { case account = """ { - "createdAt": "2023-06-15T23:36:43.182Z", - "name": "Diana Leuschke", - "email": "Marquis_Gibson@hotmail.com", - "cpf": "468.655.400-42", - "accountNumber": "74393734", - "agency": "827810101", - "balance": "472.29", - "id": "3" - } + "createdAt": "2023-06-15T23:36:43.182Z", + "name": "Diana Leuschke", + "email": "Marquis_Gibson@hotmail.com", + "cpf": "468.655.400-42", + "accountNumber": "74393734", + "agency": "827810101", + "balance": "472.29", + "id": "3" + } """ } + + static let email = "Marquis_Gibson@hotmail.com" + static let password = "T@to123" + static let cpf = "468.655.400-42" + + static let user = UserAccountModel(userId: "3", + email: "Marquis_Gibson@hotmail.com", + cpf: "468.655.400-42", + name: "Diana Leuschke", + accountNumber: "74393734", + agency: "827810101", + balance: "472.29") + + } diff --git a/KssiusBank/KssiusBankTests/UIKitSpy/TextFieldSpy.swift b/KssiusBank/KssiusBankTests/UIKitSpy/TextFieldSpy.swift new file mode 100644 index 000000000..82ea3335b --- /dev/null +++ b/KssiusBank/KssiusBankTests/UIKitSpy/TextFieldSpy.swift @@ -0,0 +1,11 @@ +// +// TextFieldSpy.swift +// KssiusBankTests +// +// Created by Cassio Sousa on 16/06/23. +// Copyright © 2023 Cassio Sousa. All rights reserved. +// + +import UIKit + +final class TextFieldSpy: UITextField {} diff --git a/KssiusBank/KssiusBankTests/Workers/Mock/MockAuthenticationLocalRepository.swift b/KssiusBank/KssiusBankTests/Workers/Mock/MockAuthenticationLocalRepository.swift index cd10ed30b..0a2913bde 100644 --- a/KssiusBank/KssiusBankTests/Workers/Mock/MockAuthenticationLocalRepository.swift +++ b/KssiusBank/KssiusBankTests/Workers/Mock/MockAuthenticationLocalRepository.swift @@ -16,12 +16,7 @@ final class MockSuccessAuthenticationLocalRepository: AuthenticationLocalReposit } func retrieveUser() -> UserAccountModel? { - let data = Seeds.Json.account.rawValue.data(using: .utf8) - guard let data = data, - let user = try? JSONDecoder().decode(UserAccountModel.self, from: data) else { - return nil - } - return user + return Seeds.user } } From 5c0b4ccdf31924bcbdaf0aa37e09cd4e2bca0b9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Sousa?= Date: Sat, 17 Jun 2023 13:10:04 -0300 Subject: [PATCH 10/23] - Componentes de UI, tela de login, pequenos ajustes. --- KssiusBank/.gitignore | 1 + .../KssiusBank.xcodeproj/project.pbxproj | 58 ++++++++- .../UserInterfaceState.xcuserstate | Bin 184049 -> 220286 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 48 +++++++ .../eye.imageset/Contents.json | 21 ++++ .../Assets.xcassets/eye.imageset/eye.png | Bin 0 -> 1680 bytes .../open-eye.imageset/Contents.json | 21 ++++ .../open-eye.imageset/open-eye.png | Bin 0 -> 1723 bytes .../{ => Core}/Common/CommonValidator.swift | 0 .../{ => Core}/Common/Constants.swift | 0 .../{ => Core}/Common/error/BankFailure.swift | 0 .../DesignSystem/DefaultButton.swift | 53 ++++++++ .../DesignSystem/DefaultTextField.swift | 79 ++++++++++++ .../UI/Extensions/UIColor+extension.swift | 15 +++ .../UI/Extensions/UIFont+extension.swift | 13 ++ .../UI/Extensions/UIResponder+extension.swift | 28 +++++ .../Generated/Strings+Generated.swift | 4 +- .../Generated/XCAssets+Generated.swift | 2 + KssiusBank/KssiusBank/Main.storyboard | 74 +++++++++++ .../Resources/pt-BR.lproj/Localizable.strings | 2 +- .../Autentication/LoginInteractor.swift | 19 ++- .../Autentication/LoginViewController.swift | 118 ++++++++++++++++-- .../Common/CommonValidatorTest.swift | 0 23 files changed, 536 insertions(+), 20 deletions(-) create mode 100644 KssiusBank/.gitignore create mode 100644 KssiusBank/KssiusBank/Assets.xcassets/eye.imageset/Contents.json create mode 100644 KssiusBank/KssiusBank/Assets.xcassets/eye.imageset/eye.png create mode 100644 KssiusBank/KssiusBank/Assets.xcassets/open-eye.imageset/Contents.json create mode 100644 KssiusBank/KssiusBank/Assets.xcassets/open-eye.imageset/open-eye.png rename KssiusBank/KssiusBank/{ => Core}/Common/CommonValidator.swift (100%) rename KssiusBank/KssiusBank/{ => Core}/Common/Constants.swift (100%) rename KssiusBank/KssiusBank/{ => Core}/Common/error/BankFailure.swift (100%) create mode 100644 KssiusBank/KssiusBank/DesignSystem/DefaultButton.swift create mode 100644 KssiusBank/KssiusBank/DesignSystem/DefaultTextField.swift create mode 100644 KssiusBank/KssiusBank/DesignSystem/UI/Extensions/UIColor+extension.swift create mode 100644 KssiusBank/KssiusBank/DesignSystem/UI/Extensions/UIFont+extension.swift create mode 100644 KssiusBank/KssiusBank/DesignSystem/UI/Extensions/UIResponder+extension.swift rename KssiusBank/KssiusBankTests/{ => Core}/Common/CommonValidatorTest.swift (100%) diff --git a/KssiusBank/.gitignore b/KssiusBank/.gitignore new file mode 100644 index 000000000..e43b0f988 --- /dev/null +++ b/KssiusBank/.gitignore @@ -0,0 +1 @@ +.DS_Store diff --git a/KssiusBank/KssiusBank.xcodeproj/project.pbxproj b/KssiusBank/KssiusBank.xcodeproj/project.pbxproj index 56ac3a6cc..018f027c2 100644 --- a/KssiusBank/KssiusBank.xcodeproj/project.pbxproj +++ b/KssiusBank/KssiusBank.xcodeproj/project.pbxproj @@ -84,6 +84,16 @@ DF7D3F8D2A3CE0A90009770F /* CommonValidatorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF7D3F8C2A3CE0A90009770F /* CommonValidatorTest.swift */; }; DFC4E8312A3D3C13004B6718 /* LoginViewControllerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC4E8302A3D3C13004B6718 /* LoginViewControllerTest.swift */; }; DFC4E8342A3D41A0004B6718 /* TextFieldSpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC4E8332A3D41A0004B6718 /* TextFieldSpy.swift */; }; + DFC4E8372A3DD709004B6718 /* DefaultTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC4E8362A3DD709004B6718 /* DefaultTextField.swift */; }; + DFC4E8382A3DD709004B6718 /* DefaultTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC4E8362A3DD709004B6718 /* DefaultTextField.swift */; }; + DFC4E83C2A3DDA2F004B6718 /* UIColor+extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC4E83B2A3DDA2F004B6718 /* UIColor+extension.swift */; }; + DFC4E83D2A3DDA30004B6718 /* UIColor+extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC4E83B2A3DDA2F004B6718 /* UIColor+extension.swift */; }; + DFC4E83F2A3DDC03004B6718 /* DefaultButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC4E83E2A3DDC03004B6718 /* DefaultButton.swift */; }; + DFC4E8402A3DDC03004B6718 /* DefaultButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC4E83E2A3DDC03004B6718 /* DefaultButton.swift */; }; + DFC4E8422A3DDD19004B6718 /* UIFont+extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC4E8412A3DDD19004B6718 /* UIFont+extension.swift */; }; + DFC4E8432A3DDD19004B6718 /* UIFont+extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC4E8412A3DDD19004B6718 /* UIFont+extension.swift */; }; + DFC4E8452A3DE51D004B6718 /* UIResponder+extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC4E8442A3DE51D004B6718 /* UIResponder+extension.swift */; }; + DFC4E8462A3DE51D004B6718 /* UIResponder+extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC4E8442A3DE51D004B6718 /* UIResponder+extension.swift */; }; DFF0843A2A3D24F500672477 /* LoginInteractorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFF084392A3D24F500672477 /* LoginInteractorTest.swift */; }; DFF084412A3D2B2700672477 /* LoginRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA82B2A3BF03900A812F4 /* LoginRouter.swift */; }; DFF084422A3D2B2700672477 /* LoginPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF0BA8292A3BF03900A812F4 /* LoginPresenter.swift */; }; @@ -172,6 +182,11 @@ DF7D3F8C2A3CE0A90009770F /* CommonValidatorTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommonValidatorTest.swift; sourceTree = ""; }; DFC4E8302A3D3C13004B6718 /* LoginViewControllerTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewControllerTest.swift; sourceTree = ""; }; DFC4E8332A3D41A0004B6718 /* TextFieldSpy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextFieldSpy.swift; sourceTree = ""; }; + DFC4E8362A3DD709004B6718 /* DefaultTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultTextField.swift; sourceTree = ""; }; + DFC4E83B2A3DDA2F004B6718 /* UIColor+extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+extension.swift"; sourceTree = ""; }; + DFC4E83E2A3DDC03004B6718 /* DefaultButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultButton.swift; sourceTree = ""; }; + DFC4E8412A3DDD19004B6718 /* UIFont+extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIFont+extension.swift"; sourceTree = ""; }; + DFC4E8442A3DE51D004B6718 /* UIResponder+extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIResponder+extension.swift"; sourceTree = ""; }; DFEC18532A3BD28C001277A2 /* UserAccountModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserAccountModel.swift; sourceTree = ""; }; DFEC18562A3BD314001277A2 /* UserWorker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserWorker.swift; sourceTree = ""; }; DFEC18592A3BD423001277A2 /* NetworkService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkService.swift; sourceTree = ""; }; @@ -226,10 +241,10 @@ DF0BA7C42A3BE5CE00A812F4 /* KssiusBank */ = { isa = PBXGroup; children = ( + DFC4E8352A3DD57E004B6718 /* DesignSystem */, DF0BA87B2A3CC4D300A812F4 /* Generated */, DF0BA8722A3CB89F00A812F4 /* Resources */, DF0BA8452A3C7B7A00A812F4 /* Core */, - DFEC185C2A3BD43B001277A2 /* Common */, DFEC18422A3BD060001277A2 /* Services */, DFEC18412A3BD051001277A2 /* Workers */, DFEC18402A3BD044001277A2 /* Scenes */, @@ -251,7 +266,6 @@ DFC4E8322A3D4186004B6718 /* UIKitSpy */, DF4624DF2A3D1E0900CBC35D /* Scenes */, DF4624D92A3D0A6A00CBC35D /* Workers */, - DF7D3F8B2A3CE0880009770F /* Common */, DF0BA84F2A3C830700A812F4 /* Core */, DF0BA7FB2A3BE6C900A812F4 /* KssiusBankTests.swift */, DFEC18692A3BDE0D001277A2 /* Services */, @@ -319,6 +333,7 @@ DF0BA8452A3C7B7A00A812F4 /* Core */ = { isa = PBXGroup; children = ( + DFEC185C2A3BD43B001277A2 /* Common */, DF4624C42A3CF06200CBC35D /* User */, ); path = Core; @@ -327,6 +342,7 @@ DF0BA84F2A3C830700A812F4 /* Core */ = { isa = PBXGroup; children = ( + DF7D3F8B2A3CE0880009770F /* Common */, DF0BA8522A3C833500A812F4 /* Repositories */, DF0BA8502A3C831400A812F4 /* Data */, ); @@ -455,6 +471,34 @@ path = UIKitSpy; sourceTree = ""; }; + DFC4E8352A3DD57E004B6718 /* DesignSystem */ = { + isa = PBXGroup; + children = ( + DFC4E8392A3DDA0D004B6718 /* UI */, + DFC4E8362A3DD709004B6718 /* DefaultTextField.swift */, + DFC4E83E2A3DDC03004B6718 /* DefaultButton.swift */, + ); + path = DesignSystem; + sourceTree = ""; + }; + DFC4E8392A3DDA0D004B6718 /* UI */ = { + isa = PBXGroup; + children = ( + DFC4E83A2A3DDA15004B6718 /* Extensions */, + ); + path = UI; + sourceTree = ""; + }; + DFC4E83A2A3DDA15004B6718 /* Extensions */ = { + isa = PBXGroup; + children = ( + DFC4E83B2A3DDA2F004B6718 /* UIColor+extension.swift */, + DFC4E8412A3DDD19004B6718 /* UIFont+extension.swift */, + DFC4E8442A3DE51D004B6718 /* UIResponder+extension.swift */, + ); + path = Extensions; + sourceTree = ""; + }; DFEC18012A3BCFF9001277A2 = { isa = PBXGroup; children = ( @@ -825,9 +869,11 @@ DF0BA80C2A3BE6CA00A812F4 /* ViewController.swift in Sources */, DF4624CF2A3CF6EE00CBC35D /* AuthenticationLocalRepositoryProtocol.swift in Sources */, DF0BA8242A3BEE3D00A812F4 /* BankFailure.swift in Sources */, + DFC4E83F2A3DDC03004B6718 /* DefaultButton.swift in Sources */, DF4624C92A3CF0D700CBC35D /* AutenticationLocalDatasource.swift in Sources */, DFF084472A3D2C5600672477 /* LoginWorker.swift in Sources */, DF4624C62A3CF0AC00CBC35D /* AutenticationLocalDatasourceProtocol.swift in Sources */, + DFC4E8372A3DD709004B6718 /* DefaultTextField.swift in Sources */, DF0BA8332A3BF03900A812F4 /* LoginViewController.swift in Sources */, DF0BA8342A3BF03900A812F4 /* LoginInteractor.swift in Sources */, DF0BA82F2A3BF03900A812F4 /* LoginPresenter.swift in Sources */, @@ -837,18 +883,21 @@ DF0BA8092A3BE6CA00A812F4 /* AppDelegate.swift in Sources */, DF0BA87F2A3CC4ED00A812F4 /* Strings+Generated.swift in Sources */, DF0BA85E2A3C985500A812F4 /* AuthenticationServiceDatasourceProtocol.swift in Sources */, + DFC4E8422A3DDD19004B6718 /* UIFont+extension.swift in Sources */, DF0BA8072A3BE6CA00A812F4 /* SceneDelegate.swift in Sources */, DF0BA8362A3BF05800A812F4 /* UserWorker.swift in Sources */, DF0BA8582A3C87AE00A812F4 /* Constants.swift in Sources */, DF0BA8322A3BF03900A812F4 /* LoginModels.swift in Sources */, DF0BA8112A3BE9F200A812F4 /* UserAccountModel.swift in Sources */, DF4624CC2A3CF6DB00CBC35D /* AutenticationLocalRepository.swift in Sources */, + DFC4E83C2A3DDA2F004B6718 /* UIColor+extension.swift in Sources */, DF0BA7D02A3BE5CE00A812F4 /* KssiusBank.xcdatamodeld in Sources */, DF0BA8492A3C7C8E00A812F4 /* AutenticationServiceDatasource.swift in Sources */, DF0BA86F2A3CAC7D00A812F4 /* CommonValidator.swift in Sources */, DF0BA86C2A3CA9AB00A812F4 /* UserFailure.swift in Sources */, DF0BA87E2A3CC4ED00A812F4 /* XCAssets+Generated.swift in Sources */, DF0BA8312A3BF03900A812F4 /* LoginRouter.swift in Sources */, + DFC4E8452A3DE51D004B6718 /* UIResponder+extension.swift in Sources */, DF0BA8472A3C7C0200A812F4 /* AutenticationRepository.swift in Sources */, DF0BA8432A3C7AAD00A812F4 /* AuthenticationRepositoryProtocol.swift in Sources */, ); @@ -868,13 +917,16 @@ DF0BA8812A3CC4F500A812F4 /* XCAssets+Generated.swift in Sources */, DF0BA8802A3CC4F300A812F4 /* Strings+Generated.swift in Sources */, DF4624D52A3D080600CBC35D /* AuthenticationLocalRepositoryTest.swift in Sources */, + DFC4E8402A3DDC03004B6718 /* DefaultButton.swift in Sources */, DF0BA7F82A3BE65B00A812F4 /* MockURLProtocol.swift in Sources */, DF0BA80E2A3BE6D400A812F4 /* KssiusBankTests.swift in Sources */, DFC4E8312A3D3C13004B6718 /* LoginViewControllerTest.swift in Sources */, DFF084442A3D2B2700672477 /* LoginInteractor.swift in Sources */, + DFC4E8462A3DE51D004B6718 /* UIResponder+extension.swift in Sources */, DF4624E22A3D1E3300CBC35D /* LoginWorkerTest.swift in Sources */, DF0BA8592A3C87AE00A812F4 /* Constants.swift in Sources */, DF0BA8392A3BFB6100A812F4 /* Seeds.swift in Sources */, + DFC4E8432A3DDD19004B6718 /* UIFont+extension.swift in Sources */, DFF0844A2A3D38AF00672477 /* LoginPresenterTest.swift in Sources */, DFF084412A3D2B2700672477 /* LoginRouter.swift in Sources */, DF0BA86D2A3CA9AB00A812F4 /* UserFailure.swift in Sources */, @@ -886,6 +938,7 @@ DFF084422A3D2B2700672477 /* LoginPresenter.swift in Sources */, DF4624D32A3D030700CBC35D /* AutenticationLocalDatasourceTest.swift in Sources */, DF4624E52A3D1F2E00CBC35D /* MockAuthenticationRepositoryProtocol.swift in Sources */, + DFC4E8382A3DD709004B6718 /* DefaultTextField.swift in Sources */, DF4624D82A3D091400CBC35D /* MockAutenticationLocalDatasourceProtocol.swift in Sources */, DF0BA8702A3CAC7D00A812F4 /* CommonValidator.swift in Sources */, DF0BA84A2A3C7C8E00A812F4 /* AutenticationServiceDatasource.swift in Sources */, @@ -896,6 +949,7 @@ DFF084482A3D2C5700672477 /* LoginWorker.swift in Sources */, DFC4E8342A3D41A0004B6718 /* TextFieldSpy.swift in Sources */, DFF084462A3D2B2700672477 /* LoginViewController.swift in Sources */, + DFC4E83D2A3DDA30004B6718 /* UIColor+extension.swift in Sources */, DFF0843A2A3D24F500672477 /* LoginInteractorTest.swift in Sources */, DF0BA8622A3C998100A812F4 /* AuthenticationRepositoryTest.swift in Sources */, DF0BA8182A3BEC4800A812F4 /* NetworkService.swift in Sources */, diff --git a/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/UserInterfaceState.xcuserstate b/KssiusBank/KssiusBank.xcworkspace/xcuserdata/cassio.xcuserdatad/UserInterfaceState.xcuserstate index ac535eded8e23d8aa8d37d4bb7804b33d51347d4..83366d067d57dc058538def9a7fb9ee2fce2e2ef 100644 GIT binary patch literal 220286 zcmeFab$k}b69;^I_qcl=cTXO-07ZinG{Gf= zFb2lNSQs1Qjk3>5R@anOR*be6SC>pJgKvfQ+RCa?_R2}qk|nh@G7K%-R3s4(Dj1Ng zPnLFXDs&X%VBFyawZ*kb677+SzrpyJ0L#MEm<{usg9e z*jnr!>|U$^+k$Pyc4K?6$FRNF)7Wd+>)0FEo7h{}JJ`F}G3*TX0rnyGGjVmqWZm2uzgZiR;G!PY_ zk!S|0K$WNp%|z9x2GycEGz-l}b5K2+i{_zQ&~mf_twgt?JJA}n7Og|~qK)W5v8%*{wTg1 ze*%9Je;z-Gzkr{?&*JCs_wn=i1^fg2L;NHBBK|S{3H~MiE&d&T3I87d1;0uV1e@Rx z0zynk2sxo3vIsSyBlLusun<ClX#0bOdKap5vPeW z#9873@j3Aw@iTFi_=ABl5QE9!GI$I=!@{sKYz#ZY!EiEM3^&8W@G>Hd4vdbB&Wvu1 z?u?#{UW~qsevEv^K*kWpP{uIE2*yapSjITUc*X?ABt{9Nlre)*%b3Sl#2^_<88

QOF-!Hzd-!p2aXG@;C_;x9-PKw|Im`? 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Μ#k!!pu5s%;u_%FO$+nv!w?7|5pPoY^cwi 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 F_&-sRGGG7z literal 182539 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