From 9cd67e9dddaf1fdddbf145527e550d0ad8b944fe Mon Sep 17 00:00:00 2001 From: illescasDaniel Date: Tue, 26 Dec 2017 02:34:18 +0100 Subject: [PATCH] Initial commit --- Animoji.xcodeproj/project.pbxproj | 409 +++++++++++++++++ .../contents.xcworkspacedata | 2 +- Animoji/Animoji-Bridging-Header.h | 7 + Animoji/AppDelegate.swift | 47 ++ .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/icon-1024.png | Bin .../AppIcon.appiconset/icon-120.png | Bin .../AppIcon.appiconset/icon-121.png | Bin .../AppIcon.appiconset/icon-152.png | Bin .../AppIcon.appiconset/icon-167.png | Bin .../AppIcon.appiconset/icon-180.png | Bin .../AppIcon.appiconset/icon-20.png | Bin .../AppIcon.appiconset/icon-29.png | Bin .../AppIcon.appiconset/icon-40.png | Bin .../AppIcon.appiconset/icon-41.png | Bin .../AppIcon.appiconset/icon-42.png | Bin .../AppIcon.appiconset/icon-58.png | Bin .../AppIcon.appiconset/icon-59.png | Bin .../AppIcon.appiconset/icon-60.png | Bin .../AppIcon.appiconset/icon-76.png | Bin .../AppIcon.appiconset/icon-80.png | Bin .../AppIcon.appiconset/icon-81.png | Bin .../AppIcon.appiconset/icon-87.png | Bin .../Assets.xcassets/Contents.json | 0 .../delete.imageset/Contents.json | 0 .../delete.imageset/delete.png | Bin .../delete.imageset/delete@2x.png | Bin .../delete.imageset/delete@3x.png | Bin .../selection.imageset/Contents.json | 0 .../selection.imageset/selection.png | Bin .../selection.imageset/selection@2x.png | Bin .../selection.imageset/selection@3x.png | Bin .../share.imageset/Contents.json | 0 .../Assets.xcassets/share.imageset/share.png | Bin .../share.imageset/share@2x.png | Bin .../share.imageset/share@3x.png | Bin .../start-previewing.imageset/Contents.json | 0 .../start-previewing.imageset/play.png | Bin .../start-previewing.imageset/play@2x.png | Bin .../start-previewing.imageset/play@3x.png | Bin .../start-recording.imageset/Contents.json | 0 .../start-recording.imageset/record.png | Bin .../start-recording.imageset/record@2x.png | Bin .../start-recording.imageset/record@3x.png | Bin .../stop-previewing.imageset/Contents.json | 0 .../stop-previewing.imageset/stop.png | Bin .../stop-previewing.imageset/stop@2x.png | Bin .../stop-previewing.imageset/stop@3x.png | Bin .../stop-recording.imageset/Contents.json | 0 .../stop-recording.imageset/stop.png | Bin .../stop-recording.imageset/stop@2x.png | Bin .../stop-recording.imageset/stop@3x.png | Bin .../AvatarKit/AVTAvatarView.h | 0 {SBSAnimoji => Animoji}/AvatarKit/AVTPuppet.h | 0 .../AvatarKit/AVTPuppetView.h | 0 Animoji/Base.lproj/LaunchScreen.storyboard | 25 ++ Animoji/Base.lproj/Main.storyboard | 24 + .../Supporting files => Animoji}/Info.plist | 14 +- Animoji/Model/MainView.swift | 135 ++++++ .../PuppetThumbnailCollectionViewCell.swift | 51 +++ Animoji/Model/SBSPuppetView.swift | 67 +++ Animoji/ViewController.swift | 212 +++++++++ Frameworks/AvatarKit.framework/AvatarKit.tbd | 0 README.md | 22 +- SBSAnimoji.xcodeproj/project.pbxproj | 415 ------------------ SBSAnimoji/Application/AppDelegate.h | 16 - SBSAnimoji/Application/AppDelegate.m | 24 - SBSAnimoji/Pages/Main/MainView.h | 23 - SBSAnimoji/Pages/Main/MainView.m | 139 ------ SBSAnimoji/Pages/Main/MainViewController.h | 14 - SBSAnimoji/Pages/Main/MainViewController.m | 240 ---------- .../Main/PuppetThumbnailCollectionViewCell.h | 13 - .../Main/PuppetThumbnailCollectionViewCell.m | 52 --- SBSAnimoji/Pages/Main/SBSPuppetView.h | 21 - SBSAnimoji/Pages/Main/SBSPuppetView.m | 64 --- .../Supporting files/Localizable.strings | 10 - SBSAnimoji/Supporting files/main.m | 16 - .../Base.lproj/LaunchScreen.storyboard | 48 -- newScreenshot.jpg | Bin 0 -> 65194 bytes screenshot.png | Bin 160505 -> 0 bytes 80 files changed, 991 insertions(+), 1119 deletions(-) create mode 100644 Animoji.xcodeproj/project.pbxproj rename {SBSAnimoji.xcodeproj => Animoji.xcodeproj}/project.xcworkspace/contents.xcworkspacedata (70%) create mode 100644 Animoji/Animoji-Bridging-Header.h create mode 100644 Animoji/AppDelegate.swift rename {SBSAnimoji => Animoji}/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/AppIcon.appiconset/icon-1024.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/AppIcon.appiconset/icon-120.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/AppIcon.appiconset/icon-121.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/AppIcon.appiconset/icon-152.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/AppIcon.appiconset/icon-167.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/AppIcon.appiconset/icon-180.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/AppIcon.appiconset/icon-20.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/AppIcon.appiconset/icon-29.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/AppIcon.appiconset/icon-40.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/AppIcon.appiconset/icon-41.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/AppIcon.appiconset/icon-42.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/AppIcon.appiconset/icon-58.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/AppIcon.appiconset/icon-59.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/AppIcon.appiconset/icon-60.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/AppIcon.appiconset/icon-76.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/AppIcon.appiconset/icon-80.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/AppIcon.appiconset/icon-81.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/AppIcon.appiconset/icon-87.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/Contents.json (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/delete.imageset/Contents.json (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/delete.imageset/delete.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/delete.imageset/delete@2x.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/delete.imageset/delete@3x.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/selection.imageset/Contents.json (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/selection.imageset/selection.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/selection.imageset/selection@2x.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/selection.imageset/selection@3x.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/share.imageset/Contents.json (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/share.imageset/share.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/share.imageset/share@2x.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/share.imageset/share@3x.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/start-previewing.imageset/Contents.json (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/start-previewing.imageset/play.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/start-previewing.imageset/play@2x.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/start-previewing.imageset/play@3x.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/start-recording.imageset/Contents.json (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/start-recording.imageset/record.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/start-recording.imageset/record@2x.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/start-recording.imageset/record@3x.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/stop-previewing.imageset/Contents.json (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/stop-previewing.imageset/stop.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/stop-previewing.imageset/stop@2x.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/stop-previewing.imageset/stop@3x.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/stop-recording.imageset/Contents.json (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/stop-recording.imageset/stop.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/stop-recording.imageset/stop@2x.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/Assets.xcassets/stop-recording.imageset/stop@3x.png (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/AvatarKit/AVTAvatarView.h (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/AvatarKit/AVTPuppet.h (100%) mode change 100644 => 100755 rename {SBSAnimoji => Animoji}/AvatarKit/AVTPuppetView.h (100%) mode change 100644 => 100755 create mode 100644 Animoji/Base.lproj/LaunchScreen.storyboard create mode 100644 Animoji/Base.lproj/Main.storyboard rename {SBSAnimoji/Supporting files => Animoji}/Info.plist (96%) create mode 100644 Animoji/Model/MainView.swift create mode 100644 Animoji/Model/PuppetThumbnailCollectionViewCell.swift create mode 100644 Animoji/Model/SBSPuppetView.swift create mode 100644 Animoji/ViewController.swift mode change 100644 => 100755 Frameworks/AvatarKit.framework/AvatarKit.tbd delete mode 100644 SBSAnimoji.xcodeproj/project.pbxproj delete mode 100644 SBSAnimoji/Application/AppDelegate.h delete mode 100644 SBSAnimoji/Application/AppDelegate.m delete mode 100644 SBSAnimoji/Pages/Main/MainView.h delete mode 100644 SBSAnimoji/Pages/Main/MainView.m delete mode 100644 SBSAnimoji/Pages/Main/MainViewController.h delete mode 100644 SBSAnimoji/Pages/Main/MainViewController.m delete mode 100644 SBSAnimoji/Pages/Main/PuppetThumbnailCollectionViewCell.h delete mode 100644 SBSAnimoji/Pages/Main/PuppetThumbnailCollectionViewCell.m delete mode 100644 SBSAnimoji/Pages/Main/SBSPuppetView.h delete mode 100644 SBSAnimoji/Pages/Main/SBSPuppetView.m delete mode 100644 SBSAnimoji/Supporting files/Localizable.strings delete mode 100644 SBSAnimoji/Supporting files/main.m delete mode 100644 SBSAnimoji/User interface/Base.lproj/LaunchScreen.storyboard create mode 100644 newScreenshot.jpg delete mode 100644 screenshot.png diff --git a/Animoji.xcodeproj/project.pbxproj b/Animoji.xcodeproj/project.pbxproj new file mode 100644 index 0000000..78168b0 --- /dev/null +++ b/Animoji.xcodeproj/project.pbxproj @@ -0,0 +1,409 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 48; + objects = { + +/* Begin PBXBuildFile section */ + 65AB4D281FF17D18005D684C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AB4D271FF17D18005D684C /* AppDelegate.swift */; }; + 65AB4D2A1FF17D18005D684C /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AB4D291FF17D18005D684C /* ViewController.swift */; }; + 65AB4D2D1FF17D18005D684C /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 65AB4D2B1FF17D18005D684C /* Main.storyboard */; }; + 65AB4D2F1FF17D18005D684C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 65AB4D2E1FF17D18005D684C /* Assets.xcassets */; }; + 65AB4D321FF17D18005D684C /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 65AB4D301FF17D18005D684C /* LaunchScreen.storyboard */; }; + 65AB4D3C1FF17DB6005D684C /* AvatarKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65AB4D3B1FF17DB6005D684C /* AvatarKit.framework */; }; + 65AB4D441FF17EB1005D684C /* SBSPuppetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AB4D431FF17EB1005D684C /* SBSPuppetView.swift */; }; + 65AB4D4A1FF18686005D684C /* PuppetThumbnailCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AB4D491FF18686005D684C /* PuppetThumbnailCollectionViewCell.swift */; }; + 65AB4D4C1FF18C0F005D684C /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AB4D4B1FF18C0F005D684C /* MainView.swift */; }; + 65D4C7431FF1D802009F75C8 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 65D4C7421FF1D802009F75C8 /* README.md */; }; + 65D4C7471FF1D920009F75C8 /* newScreenshot.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 65D4C7461FF1D920009F75C8 /* newScreenshot.jpg */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 65AB4D241FF17D18005D684C /* Animoji.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Animoji.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 65AB4D271FF17D18005D684C /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 65AB4D291FF17D18005D684C /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 65AB4D2C1FF17D18005D684C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 65AB4D2E1FF17D18005D684C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 65AB4D311FF17D18005D684C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 65AB4D331FF17D18005D684C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 65AB4D3B1FF17DB6005D684C /* AvatarKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AvatarKit.framework; path = Frameworks/AvatarKit.framework; sourceTree = ""; }; + 65AB4D3F1FF17E6D005D684C /* AVTPuppetView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AVTPuppetView.h; sourceTree = ""; }; + 65AB4D401FF17E6D005D684C /* AVTPuppet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AVTPuppet.h; sourceTree = ""; }; + 65AB4D411FF17E6D005D684C /* AVTAvatarView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AVTAvatarView.h; sourceTree = ""; }; + 65AB4D431FF17EB1005D684C /* SBSPuppetView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SBSPuppetView.swift; sourceTree = ""; }; + 65AB4D451FF17F49005D684C /* Animoji-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Animoji-Bridging-Header.h"; sourceTree = ""; }; + 65AB4D491FF18686005D684C /* PuppetThumbnailCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuppetThumbnailCollectionViewCell.swift; sourceTree = ""; }; + 65AB4D4B1FF18C0F005D684C /* MainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainView.swift; sourceTree = ""; }; + 65D4C7421FF1D802009F75C8 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + 65D4C7461FF1D920009F75C8 /* newScreenshot.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = newScreenshot.jpg; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 65AB4D211FF17D18005D684C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 65AB4D3C1FF17DB6005D684C /* AvatarKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 65AB4D1B1FF17D18005D684C = { + isa = PBXGroup; + children = ( + 65D4C7451FF1D913009F75C8 /* Github */, + 65AB4D261FF17D18005D684C /* Animoji */, + 65AB4D251FF17D18005D684C /* Products */, + 65AB4D3A1FF17DB5005D684C /* Frameworks */, + ); + sourceTree = ""; + }; + 65AB4D251FF17D18005D684C /* Products */ = { + isa = PBXGroup; + children = ( + 65AB4D241FF17D18005D684C /* Animoji.app */, + ); + name = Products; + sourceTree = ""; + }; + 65AB4D261FF17D18005D684C /* Animoji */ = { + isa = PBXGroup; + children = ( + 65AB4D421FF17EA1005D684C /* Model */, + 65AB4D391FF17D75005D684C /* AvatarKit */, + 65AB4D451FF17F49005D684C /* Animoji-Bridging-Header.h */, + 65AB4D271FF17D18005D684C /* AppDelegate.swift */, + 65AB4D291FF17D18005D684C /* ViewController.swift */, + 65AB4D2B1FF17D18005D684C /* Main.storyboard */, + 65AB4D2E1FF17D18005D684C /* Assets.xcassets */, + 65AB4D301FF17D18005D684C /* LaunchScreen.storyboard */, + 65AB4D331FF17D18005D684C /* Info.plist */, + ); + path = Animoji; + sourceTree = ""; + }; + 65AB4D391FF17D75005D684C /* AvatarKit */ = { + isa = PBXGroup; + children = ( + 65AB4D411FF17E6D005D684C /* AVTAvatarView.h */, + 65AB4D401FF17E6D005D684C /* AVTPuppet.h */, + 65AB4D3F1FF17E6D005D684C /* AVTPuppetView.h */, + ); + path = AvatarKit; + sourceTree = ""; + }; + 65AB4D3A1FF17DB5005D684C /* Frameworks */ = { + isa = PBXGroup; + children = ( + 65AB4D3B1FF17DB6005D684C /* AvatarKit.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 65AB4D421FF17EA1005D684C /* Model */ = { + isa = PBXGroup; + children = ( + 65AB4D431FF17EB1005D684C /* SBSPuppetView.swift */, + 65AB4D491FF18686005D684C /* PuppetThumbnailCollectionViewCell.swift */, + 65AB4D4B1FF18C0F005D684C /* MainView.swift */, + ); + path = Model; + sourceTree = ""; + }; + 65D4C7451FF1D913009F75C8 /* Github */ = { + isa = PBXGroup; + children = ( + 65D4C7421FF1D802009F75C8 /* README.md */, + 65D4C7461FF1D920009F75C8 /* newScreenshot.jpg */, + ); + name = Github; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 65AB4D231FF17D18005D684C /* Animoji */ = { + isa = PBXNativeTarget; + buildConfigurationList = 65AB4D361FF17D18005D684C /* Build configuration list for PBXNativeTarget "Animoji" */; + buildPhases = ( + 65AB4D201FF17D18005D684C /* Sources */, + 65AB4D211FF17D18005D684C /* Frameworks */, + 65AB4D221FF17D18005D684C /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Animoji; + productName = Animoji; + productReference = 65AB4D241FF17D18005D684C /* Animoji.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 65AB4D1C1FF17D18005D684C /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 0920; + ORGANIZATIONNAME = "Daniel Illescas Romero"; + TargetAttributes = { + 65AB4D231FF17D18005D684C = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 0920; + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = 65AB4D1F1FF17D18005D684C /* Build configuration list for PBXProject "Animoji" */; + compatibilityVersion = "Xcode 8.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 65AB4D1B1FF17D18005D684C; + productRefGroup = 65AB4D251FF17D18005D684C /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 65AB4D231FF17D18005D684C /* Animoji */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 65AB4D221FF17D18005D684C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 65AB4D321FF17D18005D684C /* LaunchScreen.storyboard in Resources */, + 65D4C7471FF1D920009F75C8 /* newScreenshot.jpg in Resources */, + 65AB4D2F1FF17D18005D684C /* Assets.xcassets in Resources */, + 65D4C7431FF1D802009F75C8 /* README.md in Resources */, + 65AB4D2D1FF17D18005D684C /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 65AB4D201FF17D18005D684C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 65AB4D2A1FF17D18005D684C /* ViewController.swift in Sources */, + 65AB4D441FF17EB1005D684C /* SBSPuppetView.swift in Sources */, + 65AB4D281FF17D18005D684C /* AppDelegate.swift in Sources */, + 65AB4D4C1FF18C0F005D684C /* MainView.swift in Sources */, + 65AB4D4A1FF18686005D684C /* PuppetThumbnailCollectionViewCell.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 65AB4D2B1FF17D18005D684C /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 65AB4D2C1FF17D18005D684C /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 65AB4D301FF17D18005D684C /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 65AB4D311FF17D18005D684C /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 65AB4D341FF17D18005D684C /* 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++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = 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_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + 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; + CODE_SIGN_IDENTITY = "iPhone Developer"; + 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 = 11.2; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 65AB4D351FF17D18005D684C /* 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++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = 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_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + 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; + CODE_SIGN_IDENTITY = "iPhone Developer"; + 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 = 11.2; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 65AB4D371FF17D18005D684C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = PRK6268SLD; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Frameworks", + ); + INFOPLIST_FILE = Animoji/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.illescasDaniel.Animoji; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Animoji/Animoji-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Debug; + }; + 65AB4D381FF17D18005D684C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = PRK6268SLD; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Frameworks", + ); + INFOPLIST_FILE = Animoji/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.illescasDaniel.Animoji; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Animoji/Animoji-Bridging-Header.h"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 65AB4D1F1FF17D18005D684C /* Build configuration list for PBXProject "Animoji" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 65AB4D341FF17D18005D684C /* Debug */, + 65AB4D351FF17D18005D684C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 65AB4D361FF17D18005D684C /* Build configuration list for PBXNativeTarget "Animoji" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 65AB4D371FF17D18005D684C /* Debug */, + 65AB4D381FF17D18005D684C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 65AB4D1C1FF17D18005D684C /* Project object */; +} diff --git a/SBSAnimoji.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Animoji.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 70% rename from SBSAnimoji.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to Animoji.xcodeproj/project.xcworkspace/contents.xcworkspacedata index e4cc86d..fc1fae2 100644 --- a/SBSAnimoji.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/Animoji.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:Animoji.xcodeproj"> diff --git a/Animoji/Animoji-Bridging-Header.h b/Animoji/Animoji-Bridging-Header.h new file mode 100644 index 0000000..da7fc46 --- /dev/null +++ b/Animoji/Animoji-Bridging-Header.h @@ -0,0 +1,7 @@ +// +// Use this file to import your target's public headers that you would like to expose to Swift. +// + +#import "AVTAvatarView.h" +#import "AVTPuppet.h" +#import "AVTPuppetView.h" diff --git a/Animoji/AppDelegate.swift b/Animoji/AppDelegate.swift new file mode 100644 index 0000000..ee67b4c --- /dev/null +++ b/Animoji/AppDelegate.swift @@ -0,0 +1,47 @@ +// +// AppDelegate.swift +// Animoji +// +// Created by Daniel Illescas Romero on 25/12/2017. +// Copyright © 2017 Daniel Illescas Romero. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + self.window = UIWindow(frame: UIScreen.main.bounds) + self.window?.rootViewController = UINavigationController(rootViewController: ViewController()) + self.window?.makeKeyAndVisible() + 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 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. + } + + 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 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 applicationWillTerminate(_ application: UIApplication) { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + } + + +} + diff --git a/SBSAnimoji/Assets.xcassets/AppIcon.appiconset/Contents.json b/Animoji/Assets.xcassets/AppIcon.appiconset/Contents.json old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Animoji/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-1024.png b/Animoji/Assets.xcassets/AppIcon.appiconset/icon-1024.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-1024.png rename to Animoji/Assets.xcassets/AppIcon.appiconset/icon-1024.png diff --git a/SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-120.png b/Animoji/Assets.xcassets/AppIcon.appiconset/icon-120.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-120.png rename to Animoji/Assets.xcassets/AppIcon.appiconset/icon-120.png diff --git a/SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-121.png b/Animoji/Assets.xcassets/AppIcon.appiconset/icon-121.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-121.png rename to Animoji/Assets.xcassets/AppIcon.appiconset/icon-121.png diff --git a/SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-152.png b/Animoji/Assets.xcassets/AppIcon.appiconset/icon-152.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-152.png rename to Animoji/Assets.xcassets/AppIcon.appiconset/icon-152.png diff --git a/SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-167.png b/Animoji/Assets.xcassets/AppIcon.appiconset/icon-167.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-167.png rename to Animoji/Assets.xcassets/AppIcon.appiconset/icon-167.png diff --git a/SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-180.png b/Animoji/Assets.xcassets/AppIcon.appiconset/icon-180.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-180.png rename to Animoji/Assets.xcassets/AppIcon.appiconset/icon-180.png diff --git a/SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-20.png b/Animoji/Assets.xcassets/AppIcon.appiconset/icon-20.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-20.png rename to Animoji/Assets.xcassets/AppIcon.appiconset/icon-20.png diff --git a/SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-29.png b/Animoji/Assets.xcassets/AppIcon.appiconset/icon-29.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-29.png rename to Animoji/Assets.xcassets/AppIcon.appiconset/icon-29.png diff --git a/SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-40.png b/Animoji/Assets.xcassets/AppIcon.appiconset/icon-40.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-40.png rename to Animoji/Assets.xcassets/AppIcon.appiconset/icon-40.png diff --git a/SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-41.png b/Animoji/Assets.xcassets/AppIcon.appiconset/icon-41.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-41.png rename to Animoji/Assets.xcassets/AppIcon.appiconset/icon-41.png diff --git a/SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-42.png b/Animoji/Assets.xcassets/AppIcon.appiconset/icon-42.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-42.png rename to Animoji/Assets.xcassets/AppIcon.appiconset/icon-42.png diff --git a/SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-58.png b/Animoji/Assets.xcassets/AppIcon.appiconset/icon-58.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-58.png rename to Animoji/Assets.xcassets/AppIcon.appiconset/icon-58.png diff --git a/SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-59.png b/Animoji/Assets.xcassets/AppIcon.appiconset/icon-59.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-59.png rename to Animoji/Assets.xcassets/AppIcon.appiconset/icon-59.png diff --git a/SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-60.png b/Animoji/Assets.xcassets/AppIcon.appiconset/icon-60.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-60.png rename to Animoji/Assets.xcassets/AppIcon.appiconset/icon-60.png diff --git a/SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-76.png b/Animoji/Assets.xcassets/AppIcon.appiconset/icon-76.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-76.png rename to Animoji/Assets.xcassets/AppIcon.appiconset/icon-76.png diff --git a/SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-80.png b/Animoji/Assets.xcassets/AppIcon.appiconset/icon-80.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-80.png rename to Animoji/Assets.xcassets/AppIcon.appiconset/icon-80.png diff --git a/SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-81.png b/Animoji/Assets.xcassets/AppIcon.appiconset/icon-81.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-81.png rename to Animoji/Assets.xcassets/AppIcon.appiconset/icon-81.png diff --git a/SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-87.png b/Animoji/Assets.xcassets/AppIcon.appiconset/icon-87.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/AppIcon.appiconset/icon-87.png rename to Animoji/Assets.xcassets/AppIcon.appiconset/icon-87.png diff --git a/SBSAnimoji/Assets.xcassets/Contents.json b/Animoji/Assets.xcassets/Contents.json old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/Contents.json rename to Animoji/Assets.xcassets/Contents.json diff --git a/SBSAnimoji/Assets.xcassets/delete.imageset/Contents.json b/Animoji/Assets.xcassets/delete.imageset/Contents.json old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/delete.imageset/Contents.json rename to Animoji/Assets.xcassets/delete.imageset/Contents.json diff --git a/SBSAnimoji/Assets.xcassets/delete.imageset/delete.png b/Animoji/Assets.xcassets/delete.imageset/delete.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/delete.imageset/delete.png rename to Animoji/Assets.xcassets/delete.imageset/delete.png diff --git a/SBSAnimoji/Assets.xcassets/delete.imageset/delete@2x.png b/Animoji/Assets.xcassets/delete.imageset/delete@2x.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/delete.imageset/delete@2x.png rename to Animoji/Assets.xcassets/delete.imageset/delete@2x.png diff --git a/SBSAnimoji/Assets.xcassets/delete.imageset/delete@3x.png b/Animoji/Assets.xcassets/delete.imageset/delete@3x.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/delete.imageset/delete@3x.png rename to Animoji/Assets.xcassets/delete.imageset/delete@3x.png diff --git a/SBSAnimoji/Assets.xcassets/selection.imageset/Contents.json b/Animoji/Assets.xcassets/selection.imageset/Contents.json old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/selection.imageset/Contents.json rename to Animoji/Assets.xcassets/selection.imageset/Contents.json diff --git a/SBSAnimoji/Assets.xcassets/selection.imageset/selection.png b/Animoji/Assets.xcassets/selection.imageset/selection.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/selection.imageset/selection.png rename to Animoji/Assets.xcassets/selection.imageset/selection.png diff --git a/SBSAnimoji/Assets.xcassets/selection.imageset/selection@2x.png b/Animoji/Assets.xcassets/selection.imageset/selection@2x.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/selection.imageset/selection@2x.png rename to Animoji/Assets.xcassets/selection.imageset/selection@2x.png diff --git a/SBSAnimoji/Assets.xcassets/selection.imageset/selection@3x.png b/Animoji/Assets.xcassets/selection.imageset/selection@3x.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/selection.imageset/selection@3x.png rename to Animoji/Assets.xcassets/selection.imageset/selection@3x.png diff --git a/SBSAnimoji/Assets.xcassets/share.imageset/Contents.json b/Animoji/Assets.xcassets/share.imageset/Contents.json old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/share.imageset/Contents.json rename to Animoji/Assets.xcassets/share.imageset/Contents.json diff --git a/SBSAnimoji/Assets.xcassets/share.imageset/share.png b/Animoji/Assets.xcassets/share.imageset/share.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/share.imageset/share.png rename to Animoji/Assets.xcassets/share.imageset/share.png diff --git a/SBSAnimoji/Assets.xcassets/share.imageset/share@2x.png b/Animoji/Assets.xcassets/share.imageset/share@2x.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/share.imageset/share@2x.png rename to Animoji/Assets.xcassets/share.imageset/share@2x.png diff --git a/SBSAnimoji/Assets.xcassets/share.imageset/share@3x.png b/Animoji/Assets.xcassets/share.imageset/share@3x.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/share.imageset/share@3x.png rename to Animoji/Assets.xcassets/share.imageset/share@3x.png diff --git a/SBSAnimoji/Assets.xcassets/start-previewing.imageset/Contents.json b/Animoji/Assets.xcassets/start-previewing.imageset/Contents.json old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/start-previewing.imageset/Contents.json rename to Animoji/Assets.xcassets/start-previewing.imageset/Contents.json diff --git a/SBSAnimoji/Assets.xcassets/start-previewing.imageset/play.png b/Animoji/Assets.xcassets/start-previewing.imageset/play.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/start-previewing.imageset/play.png rename to Animoji/Assets.xcassets/start-previewing.imageset/play.png diff --git a/SBSAnimoji/Assets.xcassets/start-previewing.imageset/play@2x.png b/Animoji/Assets.xcassets/start-previewing.imageset/play@2x.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/start-previewing.imageset/play@2x.png rename to Animoji/Assets.xcassets/start-previewing.imageset/play@2x.png diff --git a/SBSAnimoji/Assets.xcassets/start-previewing.imageset/play@3x.png b/Animoji/Assets.xcassets/start-previewing.imageset/play@3x.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/start-previewing.imageset/play@3x.png rename to Animoji/Assets.xcassets/start-previewing.imageset/play@3x.png diff --git a/SBSAnimoji/Assets.xcassets/start-recording.imageset/Contents.json b/Animoji/Assets.xcassets/start-recording.imageset/Contents.json old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/start-recording.imageset/Contents.json rename to Animoji/Assets.xcassets/start-recording.imageset/Contents.json diff --git a/SBSAnimoji/Assets.xcassets/start-recording.imageset/record.png b/Animoji/Assets.xcassets/start-recording.imageset/record.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/start-recording.imageset/record.png rename to Animoji/Assets.xcassets/start-recording.imageset/record.png diff --git a/SBSAnimoji/Assets.xcassets/start-recording.imageset/record@2x.png b/Animoji/Assets.xcassets/start-recording.imageset/record@2x.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/start-recording.imageset/record@2x.png rename to Animoji/Assets.xcassets/start-recording.imageset/record@2x.png diff --git a/SBSAnimoji/Assets.xcassets/start-recording.imageset/record@3x.png b/Animoji/Assets.xcassets/start-recording.imageset/record@3x.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/start-recording.imageset/record@3x.png rename to Animoji/Assets.xcassets/start-recording.imageset/record@3x.png diff --git a/SBSAnimoji/Assets.xcassets/stop-previewing.imageset/Contents.json b/Animoji/Assets.xcassets/stop-previewing.imageset/Contents.json old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/stop-previewing.imageset/Contents.json rename to Animoji/Assets.xcassets/stop-previewing.imageset/Contents.json diff --git a/SBSAnimoji/Assets.xcassets/stop-previewing.imageset/stop.png b/Animoji/Assets.xcassets/stop-previewing.imageset/stop.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/stop-previewing.imageset/stop.png rename to Animoji/Assets.xcassets/stop-previewing.imageset/stop.png diff --git a/SBSAnimoji/Assets.xcassets/stop-previewing.imageset/stop@2x.png b/Animoji/Assets.xcassets/stop-previewing.imageset/stop@2x.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/stop-previewing.imageset/stop@2x.png rename to Animoji/Assets.xcassets/stop-previewing.imageset/stop@2x.png diff --git a/SBSAnimoji/Assets.xcassets/stop-previewing.imageset/stop@3x.png b/Animoji/Assets.xcassets/stop-previewing.imageset/stop@3x.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/stop-previewing.imageset/stop@3x.png rename to Animoji/Assets.xcassets/stop-previewing.imageset/stop@3x.png diff --git a/SBSAnimoji/Assets.xcassets/stop-recording.imageset/Contents.json b/Animoji/Assets.xcassets/stop-recording.imageset/Contents.json old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/stop-recording.imageset/Contents.json rename to Animoji/Assets.xcassets/stop-recording.imageset/Contents.json diff --git a/SBSAnimoji/Assets.xcassets/stop-recording.imageset/stop.png b/Animoji/Assets.xcassets/stop-recording.imageset/stop.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/stop-recording.imageset/stop.png rename to Animoji/Assets.xcassets/stop-recording.imageset/stop.png diff --git a/SBSAnimoji/Assets.xcassets/stop-recording.imageset/stop@2x.png b/Animoji/Assets.xcassets/stop-recording.imageset/stop@2x.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/stop-recording.imageset/stop@2x.png rename to Animoji/Assets.xcassets/stop-recording.imageset/stop@2x.png diff --git a/SBSAnimoji/Assets.xcassets/stop-recording.imageset/stop@3x.png b/Animoji/Assets.xcassets/stop-recording.imageset/stop@3x.png old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/Assets.xcassets/stop-recording.imageset/stop@3x.png rename to Animoji/Assets.xcassets/stop-recording.imageset/stop@3x.png diff --git a/SBSAnimoji/AvatarKit/AVTAvatarView.h b/Animoji/AvatarKit/AVTAvatarView.h old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/AvatarKit/AVTAvatarView.h rename to Animoji/AvatarKit/AVTAvatarView.h diff --git a/SBSAnimoji/AvatarKit/AVTPuppet.h b/Animoji/AvatarKit/AVTPuppet.h old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/AvatarKit/AVTPuppet.h rename to Animoji/AvatarKit/AVTPuppet.h diff --git a/SBSAnimoji/AvatarKit/AVTPuppetView.h b/Animoji/AvatarKit/AVTPuppetView.h old mode 100644 new mode 100755 similarity index 100% rename from SBSAnimoji/AvatarKit/AVTPuppetView.h rename to Animoji/AvatarKit/AVTPuppetView.h diff --git a/Animoji/Base.lproj/LaunchScreen.storyboard b/Animoji/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f83f6fd --- /dev/null +++ b/Animoji/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Animoji/Base.lproj/Main.storyboard b/Animoji/Base.lproj/Main.storyboard new file mode 100644 index 0000000..03c13c2 --- /dev/null +++ b/Animoji/Base.lproj/Main.storyboard @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SBSAnimoji/Supporting files/Info.plist b/Animoji/Info.plist similarity index 96% rename from SBSAnimoji/Supporting files/Info.plist rename to Animoji/Info.plist index 3207892..d597b65 100644 --- a/SBSAnimoji/Supporting files/Info.plist +++ b/Animoji/Info.plist @@ -20,14 +20,10 @@ 1 LSRequiresIPhoneOS - NSCameraUsageDescription - Tracking your face - NSMicrophoneUsageDescription - Recording your voice - NSPhotoLibraryAddUsageDescription - Saving your video UILaunchStoryboardName LaunchScreen + UIMainStoryboardFile + Main UIRequiredDeviceCapabilities armv7 @@ -43,5 +39,11 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + NSCameraUsageDescription + Tracking your face + NSMicrophoneUsageDescription + Recording your voice + NSPhotoLibraryAddUsageDescription + Saving your video diff --git a/Animoji/Model/MainView.swift b/Animoji/Model/MainView.swift new file mode 100644 index 0000000..460cf25 --- /dev/null +++ b/Animoji/Model/MainView.swift @@ -0,0 +1,135 @@ +// +// MainView.swift +// Animoji +// +// Created by Daniel Illescas Romero on 25/12/2017. +// Copyright © 2017 Daniel Illescas Romero. All rights reserved. +// + +import UIKit + +@objc class MainView: UIView { + + var puppetView = SBSPuppetView() + var thumbnailsCollectionView = UICollectionView(frame: .zero, collectionViewLayout: UICollectionViewLayout()) + var recordButton = UIButton(type: .system) + var shareButton = UIButton(type: .system) + var deleteButton = UIButton(type: .system) + var previewButton = UIButton(type: .system) + var activityIndicatorView = UIActivityIndicatorView() + var durationLabel = UILabel() + var puppetViewSeparatorView = UIView() + + override init(frame: CGRect) { + super.init(frame: frame) + self.setupView() + self.setupLayout() + } + + func setupView() { + + self.backgroundColor = .white + + self.puppetView.translatesAutoresizingMaskIntoConstraints = false + self.addSubview(self.puppetView) + + self.puppetViewSeparatorView.translatesAutoresizingMaskIntoConstraints = false + self.puppetViewSeparatorView.backgroundColor = UIColor(red: 224.0/255.0, green: 224.0/255.0, blue: 224.0/255.0, alpha: 1.0) + self.addSubview(self.puppetViewSeparatorView) + + let collectionViewLayout = UICollectionViewFlowLayout() + collectionViewLayout.scrollDirection = .vertical + collectionViewLayout.minimumInteritemSpacing = 14 + collectionViewLayout.minimumLineSpacing = 10 + + self.thumbnailsCollectionView.setCollectionViewLayout(collectionViewLayout, animated: true) + self.thumbnailsCollectionView.translatesAutoresizingMaskIntoConstraints = false + self.thumbnailsCollectionView.backgroundColor = .white + self.thumbnailsCollectionView.contentInset = UIEdgeInsets(top: 15, left: 7, bottom: 15, right: 7) + self.thumbnailsCollectionView.showsHorizontalScrollIndicator = false + self.addSubview(self.thumbnailsCollectionView) + + self.durationLabel.translatesAutoresizingMaskIntoConstraints = false + self.durationLabel.textAlignment = .right + self.durationLabel.font = .systemFont(ofSize: 14, weight: .medium) + self.durationLabel.isHidden = true + self.addSubview(self.durationLabel) + + self.deleteButton.translatesAutoresizingMaskIntoConstraints = false + self.deleteButton.isHidden = true + self.deleteButton.setImage(#imageLiteral(resourceName: "delete"), for: .normal) + self.addSubview(self.deleteButton) + + self.previewButton.translatesAutoresizingMaskIntoConstraints = false + self.previewButton.isHidden = true + self.previewButton.setImage(#imageLiteral(resourceName: "start-previewing"), for: .normal) + self.addSubview(self.previewButton) + + self.recordButton.translatesAutoresizingMaskIntoConstraints = false + self.recordButton.setImage(#imageLiteral(resourceName: "start-recording"), for: .normal) + self.addSubview(self.recordButton) + + self.shareButton.translatesAutoresizingMaskIntoConstraints = false + self.shareButton.isHidden = true + self.shareButton.setImage(#imageLiteral(resourceName: "share"), for: .normal) + self.addSubview(self.shareButton) + + self.activityIndicatorView.translatesAutoresizingMaskIntoConstraints = false + self.activityIndicatorView.hidesWhenStopped = true + self.addSubview(self.activityIndicatorView) + } + + func setupLayout() { + + self.puppetView.leadingAnchor.constraint(equalTo: self.leadingAnchor).isActive = true + self.puppetView.trailingAnchor.constraint(equalTo: self.trailingAnchor).isActive = true + self.puppetView.topAnchor.constraint(equalTo: self.safeAreaLayoutGuide.topAnchor).isActive = true + self.puppetView.heightAnchor.constraint(equalToConstant: 355).isActive = true + + self.puppetViewSeparatorView.leadingAnchor.constraint(equalTo: self.leadingAnchor).isActive = true + self.puppetViewSeparatorView.trailingAnchor.constraint(equalTo: self.trailingAnchor).isActive = true + self.puppetViewSeparatorView.topAnchor.constraint(equalTo: self.puppetView.bottomAnchor).isActive = true + self.puppetViewSeparatorView.heightAnchor.constraint(equalToConstant: 2).isActive = true + + self.thumbnailsCollectionView.leadingAnchor.constraint(equalTo: self.leadingAnchor).isActive = true + self.thumbnailsCollectionView.trailingAnchor.constraint(equalTo: self.trailingAnchor).isActive = true + self.thumbnailsCollectionView.topAnchor.constraint(equalTo: self.puppetViewSeparatorView.bottomAnchor).isActive = true + self.thumbnailsCollectionView.bottomAnchor.constraint(equalTo: self.bottomAnchor).isActive = true + + self.durationLabel.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -20).isActive = true + self.durationLabel.topAnchor.constraint(equalTo: self.puppetView.topAnchor, constant: 15).isActive = true + + self.recordButton.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -20).isActive = true + self.recordButton.bottomAnchor.constraint(equalTo: self.puppetView.bottomAnchor, constant: -20).isActive = true + + self.shareButton.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -20).isActive = true + self.shareButton.bottomAnchor.constraint(equalTo: self.puppetView.bottomAnchor, constant: -20).isActive = true + + self.deleteButton.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -20).isActive = true + self.deleteButton.topAnchor.constraint(equalTo: self.puppetView.topAnchor, constant: 15).isActive = true + + self.previewButton.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -20).isActive = true + self.previewButton.topAnchor.constraint(equalTo: self.deleteButton.bottomAnchor, constant: 15).isActive = true + + self.activityIndicatorView.centerXAnchor.constraint(equalTo: self.shareButton.centerXAnchor).isActive = true + self.activityIndicatorView.centerYAnchor.constraint(equalTo: self.shareButton.centerYAnchor).isActive = true + } + + override func layoutSubviews() { + super.layoutSubviews() + + let itemsPerRow: CGFloat = 4 + let collectionView = self.thumbnailsCollectionView + let contentInset = collectionView.contentInset + + if let flowLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout { + let availableWidth = self.bounds.size.width - contentInset.left - contentInset.right - (itemsPerRow - 1) * flowLayout.minimumInteritemSpacing + let itemLength = floor(availableWidth / itemsPerRow) + flowLayout.itemSize = CGSize(width: itemLength, height: itemLength) + } + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} diff --git a/Animoji/Model/PuppetThumbnailCollectionViewCell.swift b/Animoji/Model/PuppetThumbnailCollectionViewCell.swift new file mode 100644 index 0000000..71c4f6d --- /dev/null +++ b/Animoji/Model/PuppetThumbnailCollectionViewCell.swift @@ -0,0 +1,51 @@ +// +// PuppetThumbnailCollectionViewCell.swift +// Animoji +// +// Created by Daniel Illescas Romero on 25/12/2017. +// Copyright © 2017 Daniel Illescas Romero. All rights reserved. +// + +import UIKit + +@objc class PuppetThumbnailCollectionViewCell: UICollectionViewCell, UICollectionViewDelegate { + + var thumbnailImageView = UIImageView() + var selectionImageView = UIImageView() + + override init(frame: CGRect) { + super.init(frame: CGRect.zero) + self.setupView() + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func setupView() { + + self.backgroundColor = .white + + self.thumbnailImageView.translatesAutoresizingMaskIntoConstraints = false + self.thumbnailImageView.contentMode = .scaleAspectFit + self.contentView.addSubview(self.thumbnailImageView) + + self.selectionImageView.image = #imageLiteral(resourceName: "selection") + self.selectionImageView.translatesAutoresizingMaskIntoConstraints = false + self.selectionImageView.isHidden = true + self.contentView.addSubview(self.selectionImageView) + } + + override func layoutSubviews() { + super.layoutSubviews() + let thumbnailMargins = UIEdgeInsetsMake(7, 7, 7, 7) + self.thumbnailImageView.frame = UIEdgeInsetsInsetRect(self.contentView.bounds, thumbnailMargins) + self.selectionImageView.frame = self.contentView.bounds + } + + override var isSelected: Bool { + didSet { + self.selectionImageView.isHidden = !isSelected + } + } +} diff --git a/Animoji/Model/SBSPuppetView.swift b/Animoji/Model/SBSPuppetView.swift new file mode 100644 index 0000000..33a2cca --- /dev/null +++ b/Animoji/Model/SBSPuppetView.swift @@ -0,0 +1,67 @@ +// +// SBSPuppetView.swift +// Animoji +// +// Created by Daniel Illescas Romero on 25/12/2017. +// Copyright © 2017 Daniel Illescas Romero. All rights reserved. +// + +import UIKit + +@objc protocol SBSPuppetViewDelegate: NSObjectProtocol { + func puppetViewDidFinishPlaying(puppetView: SBSPuppetView) + func puppetViewDidStartRecording(puppetView: SBSPuppetView) + func puppetViewDidStopRecording(puppetView: SBSPuppetView) +} + +@objc class SBSPuppetView: AVTPuppetView { + + var sbsDelegate: SBSPuppetViewDelegate? + + override public func audioPlayerItemDidReachEnd(_ arg1: Any!) { + super.audioPlayerItemDidReachEnd(arg1) + if self.sbsDelegate?.responds(to: #selector(self.sbsDelegate?.puppetViewDidFinishPlaying(puppetView:))) == true { + self.sbsDelegate?.puppetViewDidFinishPlaying(puppetView: self) + } + } + + override func startRecording() { + super.startRecording() + + let recordingDuration = 60 // seconds + + let duration = recordingDuration * 60 + + let timesBuffer = NSMutableData(capacity: duration * 8) + let blendShapeBuffer = NSMutableData(capacity: duration * 204) + let transformData = NSMutableData(capacity: duration * 64) + + self.setValue(duration, forKey: "_recordingCapacity") + self.setValue(timesBuffer, forKey: "_rawTimesData") + self.setValue(blendShapeBuffer, forKey: "_rawBlendShapesData") + self.setValue(transformData, forKey: "_rawTransformsData") + + if let ivarRawTimes = class_getInstanceVariable(AVTPuppetView.self, "_rawTimes") { + object_setIvar(self, ivarRawTimes, timesBuffer?.mutableBytes) + } + + if let ivarBlendShapes = class_getInstanceVariable(AVTPuppetView.self, "_rawBlendShapes") { + object_setIvar(self, ivarBlendShapes, blendShapeBuffer?.mutableBytes) + } + + if let ivarRawTransforms = class_getInstanceVariable(AVTPuppetView.self, "_rawTransforms") { + object_setIvar(self, ivarRawTransforms, transformData?.mutableBytes) + } + + if self.sbsDelegate?.responds(to: #selector(self.sbsDelegate?.puppetViewDidStartRecording(puppetView:))) == true { + self.sbsDelegate?.puppetViewDidStartRecording(puppetView: self) + } + } + + override func stopRecording() { + super.stopRecording() + if self.sbsDelegate?.responds(to: #selector(self.sbsDelegate?.puppetViewDidStopRecording(puppetView:))) == true { + self.sbsDelegate?.puppetViewDidStopRecording(puppetView: self) + } + } +} diff --git a/Animoji/ViewController.swift b/Animoji/ViewController.swift new file mode 100644 index 0000000..4e50764 --- /dev/null +++ b/Animoji/ViewController.swift @@ -0,0 +1,212 @@ +// +// ViewController.swift +// Animoji +// +// Created by Daniel Illescas Romero on 25/12/2017. +// Copyright © 2017 Daniel Illescas Romero. All rights reserved. +// + +import UIKit + +@objc class ViewController: UIViewController, SBSPuppetViewDelegate, UICollectionViewDataSource, UICollectionViewDelegate { + + var puppetNames = AVTPuppet.puppetNames() as? [String] + + var contentView: MainView? { + return self.view as? MainView + } + + var movieURL: URL? { + let documentURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last + return documentURL?.appendingPathComponent("animoji.mov") + } + + var hasExportedMovie = Bool() + var isExporting = Bool() + var durationTimer = Timer() + + override func viewDidLoad() { + super.viewDidLoad() + + self.title = "Animoji" + self.view = MainView() + + self.contentView?.puppetView.sbsDelegate = self + + self.contentView?.thumbnailsCollectionView.dataSource = self + self.contentView?.thumbnailsCollectionView.delegate = self + self.contentView?.thumbnailsCollectionView.register(PuppetThumbnailCollectionViewCell.self, forCellWithReuseIdentifier: "thumbnail") + + self.contentView?.recordButton.addTarget(self, action: #selector(self.toggleRecording), for: .touchUpInside) + self.contentView?.deleteButton.addTarget(self, action: #selector(self.removeRecording), for: .touchUpInside) + self.contentView?.previewButton.addTarget(self, action: #selector(self.startPreview), for: .touchUpInside) + self.contentView?.shareButton.addTarget(self, action: #selector(self.share), for: .touchUpInside) + + if let name = self.puppetNames?[0] { + self.showPuppetName(puppetName: name) + } + self.contentView?.thumbnailsCollectionView.selectItem(at: IndexPath(row: 0, section: 0), animated: false, scrollPosition: []) + } + + deinit { + self.contentView?.puppetView.removeObserver(self, forKeyPath: "recording") + } + + @objc func durationTimerTriggered() { + let recordingDuration = ceil(self.contentView?.puppetView.recordingDuration() ?? 0.0) + let minutes = floor(recordingDuration / 60); + let seconds = recordingDuration.truncatingRemainder(dividingBy: 60); + self.contentView?.durationLabel.text = "\(minutes):\(seconds)" + } + + func removeExistingMovieFile() { + let fileManager = FileManager.default + if let movieURL = self.movieURL, fileManager.fileExists(atPath: movieURL.path) { + try? fileManager.removeItem(at: movieURL) + } + } + + // MARK: SBSPuppetViewDelegate + + public func puppetViewDidFinishPlaying(puppetView: SBSPuppetView) { + if !puppetView.recording { + self.stopPreview() + } + } + + public func puppetViewDidStartRecording(puppetView: SBSPuppetView) { + self.hasExportedMovie = false + self.removeExistingMovieFile() + self.contentView?.recordButton.setImage(#imageLiteral(resourceName: "stop-recording"), for: .normal) + self.contentView?.durationLabel.text = "00:00" + self.contentView?.durationLabel.isHidden = false + + self.durationTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.durationTimerTriggered), userInfo: nil, repeats: true) + + self.contentView?.thumbnailsCollectionView.isUserInteractionEnabled = false + + UIView.animate(withDuration: 0.3, animations: { + self.contentView?.thumbnailsCollectionView.alpha = 0.5 + }) + } + + public func puppetViewDidStopRecording(puppetView: SBSPuppetView) { + if self.isExporting { return } + self.durationTimer.invalidate() + self.contentView?.recordButton.isHidden = true + self.contentView?.shareButton.isHidden = false + self.contentView?.deleteButton.isHidden = false + self.contentView?.previewButton.isHidden = false + self.contentView?.durationLabel.isHidden = true + self.contentView?.recordButton.setImage(#imageLiteral(resourceName: "start-recording"), for: .normal) + self.contentView?.thumbnailsCollectionView.isUserInteractionEnabled = true + + UIView.animate(withDuration: 0.3, animations: { + self.contentView?.thumbnailsCollectionView.alpha = 1 + }) + self.startPreview() + } + + // MARK: UICollectionViewDataSource + + public func numberOfSections(in collectionView: UICollectionView) -> Int { + return 1 + } + + public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return self.puppetNames?.count ?? 0 + } + + public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + + if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "thumbnail", for: indexPath) as? PuppetThumbnailCollectionViewCell { + if let name = self.puppetNames?[indexPath.item] { + cell.thumbnailImageView.image = AVTPuppet.thumbnail(forPuppetNamed: name, options: nil) + return cell + } + } + return UICollectionViewCell() + } + + // MARK: UICollectionViewDelegate + + public func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + if let name = self.puppetNames?[indexPath.item] { + self.showPuppetName(puppetName: name) + } + } + + // MARK: Convenience + + @objc private func share() { + self.exportMovieIfNecessary { [unowned self] movieURL in + let activityViewController = UIActivityViewController(activityItems: [movieURL], applicationActivities: nil) + self.present(activityViewController, animated: true) + } + } + + private func exportMovieIfNecessary(completion: @escaping (URL) -> ()) { + + guard let movieURL = self.movieURL else { return } + + if self.hasExportedMovie { + completion(movieURL) + } else { + self.isExporting = true + self.contentView?.activityIndicatorView.startAnimating() + self.contentView?.deleteButton.isEnabled = false + self.contentView?.shareButton.isHidden = true + + self.contentView?.puppetView.exportMovie(toURL: movieURL, options: nil, completionHandler: { [unowned self] in + self.hasExportedMovie = true + self.contentView?.activityIndicatorView.stopAnimating() + self.contentView?.deleteButton.isEnabled = true + self.contentView?.shareButton.isHidden = false + self.isExporting = false + completion(movieURL) + }) + } + } + + @objc private func removeRecording() { + self.hasExportedMovie = false + self.removeExistingMovieFile() + self.contentView?.puppetView.stopRecording() + self.contentView?.puppetView.stopPreviewing() + self.contentView?.recordButton.isHidden = false + self.contentView?.deleteButton.isHidden = true + self.contentView?.previewButton.isHidden = true + self.contentView?.shareButton.isHidden = true + } + + @objc private func toggleRecording() { + if self.contentView?.puppetView.recording == true { + self.contentView?.puppetView.stopRecording() + } else { + self.contentView?.puppetView.startRecording() + } + } + + @objc private func startPreview() { + self.contentView?.previewButton.removeTarget(self, action: #selector(self.startPreview), for: .touchUpInside) + self.contentView?.previewButton.addTarget(self, action: #selector(self.stopPreview), for: .touchUpInside) + self.contentView?.previewButton.setImage(#imageLiteral(resourceName: "stop-previewing"), for: .normal) + self.contentView?.puppetView.stopPreviewing() + self.contentView?.puppetView.startPreviewing() + } + + @objc private func stopPreview() { + self.contentView?.previewButton.removeTarget(self, action: #selector(self.stopPreview), for: .touchUpInside) + self.contentView?.previewButton.addTarget(self, action: #selector(self.startPreview), for: .touchUpInside) + self.contentView?.previewButton.setImage(#imageLiteral(resourceName: "start-previewing"), for: .normal) + self.contentView?.puppetView.stopPreviewing() + } + + private func showPuppetName(puppetName: String) { + if let puppet = AVTPuppet.puppetNamed(puppetName, options: nil) as? AVTPuppet { + self.contentView?.puppetView.setValue(puppet, forKey: "avatarInstance") + } + } +} + + diff --git a/Frameworks/AvatarKit.framework/AvatarKit.tbd b/Frameworks/AvatarKit.framework/AvatarKit.tbd old mode 100644 new mode 100755 diff --git a/README.md b/README.md index 5a6ed27..bde4c17 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,9 @@ -# SBSAnimoji +## Animoji -Fooling around with Apples private framework AvatarKit, the framework used in Messages.app for recording Animoji videos. +[simonbs](https://github.com/simonbs)'s [SBSAnimoji](https://github.com/simonbs/SBSAnimoji) project fully converted to **Swift 4**. -![Screenshot](https://github.com/simonbs/SBSAnimoji/raw/master/screenshot.png) + -### What you get +### FIMXE: +- Recording is not working, when pressing the button the app crashes -- Record Animoji videos of up to 60 seconds. Previously 20 seconds. Thanks, [Khaos Tian](https://github.com/KhaosT)! -- Share your Animoji videos with the native share sheet. -- Export videos to your photo library from the native share sheet. -- An example of how to use Apples AvatarKit. - -### What you don't get - -- Error handling. Should you encounter an error, try restarting the app. -- Support for the simulator. Run the app on your phone instead. - -# Notice - -This project relies heavily on Apples private API and you should therefore not try to submit this code to App Store. diff --git a/SBSAnimoji.xcodeproj/project.pbxproj b/SBSAnimoji.xcodeproj/project.pbxproj deleted file mode 100644 index 9dc566e..0000000 --- a/SBSAnimoji.xcodeproj/project.pbxproj +++ /dev/null @@ -1,415 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 48; - objects = { - -/* Begin PBXBuildFile section */ - 7203856D1FB0FA1B00FDEDE6 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 7203853C1FB0FA1A00FDEDE6 /* Localizable.strings */; }; - 7203856E1FB0FA1B00FDEDE6 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 7203853D1FB0FA1A00FDEDE6 /* main.m */; }; - 7203856F1FB0FA1B00FDEDE6 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7203853F1FB0FA1A00FDEDE6 /* LaunchScreen.storyboard */; }; - 720385701FB0FA1B00FDEDE6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 720385611FB0FA1A00FDEDE6 /* Assets.xcassets */; }; - 720385711FB0FA1B00FDEDE6 /* MainView.m in Sources */ = {isa = PBXBuildFile; fileRef = 720385641FB0FA1A00FDEDE6 /* MainView.m */; }; - 720385721FB0FA1B00FDEDE6 /* MainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 720385661FB0FA1A00FDEDE6 /* MainViewController.m */; }; - 720385731FB0FA1B00FDEDE6 /* PuppetThumbnailCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 720385681FB0FA1A00FDEDE6 /* PuppetThumbnailCollectionViewCell.m */; }; - 720385741FB0FA1B00FDEDE6 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7203856B1FB0FA1A00FDEDE6 /* AppDelegate.m */; }; - 720385771FB0FA2800FDEDE6 /* AvatarKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 720385761FB0FA2800FDEDE6 /* AvatarKit.framework */; }; - 72E21EE51FB101BC00F7C115 /* SBSPuppetView.m in Sources */ = {isa = PBXBuildFile; fileRef = 72E21EE41FB101BC00F7C115 /* SBSPuppetView.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 720385211FB0F9D900FDEDE6 /* SBSAnimoji.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SBSAnimoji.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 7203853B1FB0FA1A00FDEDE6 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 7203853C1FB0FA1A00FDEDE6 /* Localizable.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = ""; }; - 7203853D1FB0FA1A00FDEDE6 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 720385401FB0FA1A00FDEDE6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 7203854B1FB0FA1A00FDEDE6 /* AVTAvatarView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AVTAvatarView.h; sourceTree = ""; }; - 720385581FB0FA1A00FDEDE6 /* AVTPuppet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AVTPuppet.h; sourceTree = ""; }; - 7203855B1FB0FA1A00FDEDE6 /* AVTPuppetView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AVTPuppetView.h; sourceTree = ""; }; - 720385611FB0FA1A00FDEDE6 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 720385631FB0FA1A00FDEDE6 /* MainView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainView.h; sourceTree = ""; }; - 720385641FB0FA1A00FDEDE6 /* MainView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainView.m; sourceTree = ""; }; - 720385651FB0FA1A00FDEDE6 /* MainViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainViewController.h; sourceTree = ""; }; - 720385661FB0FA1A00FDEDE6 /* MainViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainViewController.m; sourceTree = ""; }; - 720385671FB0FA1A00FDEDE6 /* PuppetThumbnailCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PuppetThumbnailCollectionViewCell.h; sourceTree = ""; }; - 720385681FB0FA1A00FDEDE6 /* PuppetThumbnailCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PuppetThumbnailCollectionViewCell.m; sourceTree = ""; }; - 7203856A1FB0FA1A00FDEDE6 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 7203856B1FB0FA1A00FDEDE6 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 720385761FB0FA2800FDEDE6 /* AvatarKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AvatarKit.framework; sourceTree = ""; }; - 72E21EE31FB101BC00F7C115 /* SBSPuppetView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SBSPuppetView.h; sourceTree = ""; }; - 72E21EE41FB101BC00F7C115 /* SBSPuppetView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SBSPuppetView.m; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 7203851E1FB0F9D900FDEDE6 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 720385771FB0FA2800FDEDE6 /* AvatarKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 720385181FB0F9D900FDEDE6 = { - isa = PBXGroup; - children = ( - 720385231FB0F9D900FDEDE6 /* SBSAnimoji */, - 720385751FB0FA2800FDEDE6 /* Frameworks */, - 720385221FB0F9D900FDEDE6 /* Products */, - ); - sourceTree = ""; - }; - 720385221FB0F9D900FDEDE6 /* Products */ = { - isa = PBXGroup; - children = ( - 720385211FB0F9D900FDEDE6 /* SBSAnimoji.app */, - ); - name = Products; - sourceTree = ""; - }; - 720385231FB0F9D900FDEDE6 /* SBSAnimoji */ = { - isa = PBXGroup; - children = ( - 720385611FB0FA1A00FDEDE6 /* Assets.xcassets */, - 720385691FB0FA1A00FDEDE6 /* Application */, - 720385411FB0FA1A00FDEDE6 /* AvatarKit */, - 720385621FB0FA1A00FDEDE6 /* Pages */, - 7203853E1FB0FA1A00FDEDE6 /* User interface */, - 7203853A1FB0FA1A00FDEDE6 /* Supporting files */, - ); - path = SBSAnimoji; - sourceTree = ""; - }; - 7203853A1FB0FA1A00FDEDE6 /* Supporting files */ = { - isa = PBXGroup; - children = ( - 7203853B1FB0FA1A00FDEDE6 /* Info.plist */, - 7203853C1FB0FA1A00FDEDE6 /* Localizable.strings */, - 7203853D1FB0FA1A00FDEDE6 /* main.m */, - ); - path = "Supporting files"; - sourceTree = ""; - }; - 7203853E1FB0FA1A00FDEDE6 /* User interface */ = { - isa = PBXGroup; - children = ( - 7203853F1FB0FA1A00FDEDE6 /* LaunchScreen.storyboard */, - ); - path = "User interface"; - sourceTree = ""; - }; - 720385411FB0FA1A00FDEDE6 /* AvatarKit */ = { - isa = PBXGroup; - children = ( - 7203854B1FB0FA1A00FDEDE6 /* AVTAvatarView.h */, - 720385581FB0FA1A00FDEDE6 /* AVTPuppet.h */, - 7203855B1FB0FA1A00FDEDE6 /* AVTPuppetView.h */, - ); - path = AvatarKit; - sourceTree = ""; - }; - 720385621FB0FA1A00FDEDE6 /* Pages */ = { - isa = PBXGroup; - children = ( - 72E21EE61FB1028C00F7C115 /* Main */, - ); - path = Pages; - sourceTree = ""; - }; - 720385691FB0FA1A00FDEDE6 /* Application */ = { - isa = PBXGroup; - children = ( - 7203856A1FB0FA1A00FDEDE6 /* AppDelegate.h */, - 7203856B1FB0FA1A00FDEDE6 /* AppDelegate.m */, - ); - path = Application; - sourceTree = ""; - }; - 720385751FB0FA2800FDEDE6 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 720385761FB0FA2800FDEDE6 /* AvatarKit.framework */, - ); - path = Frameworks; - sourceTree = ""; - }; - 72E21EE61FB1028C00F7C115 /* Main */ = { - isa = PBXGroup; - children = ( - 72E21EE31FB101BC00F7C115 /* SBSPuppetView.h */, - 72E21EE41FB101BC00F7C115 /* SBSPuppetView.m */, - 720385671FB0FA1A00FDEDE6 /* PuppetThumbnailCollectionViewCell.h */, - 720385681FB0FA1A00FDEDE6 /* PuppetThumbnailCollectionViewCell.m */, - 720385631FB0FA1A00FDEDE6 /* MainView.h */, - 720385641FB0FA1A00FDEDE6 /* MainView.m */, - 720385651FB0FA1A00FDEDE6 /* MainViewController.h */, - 720385661FB0FA1A00FDEDE6 /* MainViewController.m */, - ); - path = Main; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 720385201FB0F9D900FDEDE6 /* SBSAnimoji */ = { - isa = PBXNativeTarget; - buildConfigurationList = 720385371FB0F9DA00FDEDE6 /* Build configuration list for PBXNativeTarget "SBSAnimoji" */; - buildPhases = ( - 7203851D1FB0F9D900FDEDE6 /* Sources */, - 7203851E1FB0F9D900FDEDE6 /* Frameworks */, - 7203851F1FB0F9D900FDEDE6 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = SBSAnimoji; - productName = SBSAnimoji; - productReference = 720385211FB0F9D900FDEDE6 /* SBSAnimoji.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 720385191FB0F9D900FDEDE6 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0910; - ORGANIZATIONNAME = SimonBS; - TargetAttributes = { - 720385201FB0F9D900FDEDE6 = { - CreatedOnToolsVersion = 9.1; - ProvisioningStyle = Automatic; - }; - }; - }; - buildConfigurationList = 7203851C1FB0F9D900FDEDE6 /* Build configuration list for PBXProject "SBSAnimoji" */; - compatibilityVersion = "Xcode 8.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 720385181FB0F9D900FDEDE6; - productRefGroup = 720385221FB0F9D900FDEDE6 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 720385201FB0F9D900FDEDE6 /* SBSAnimoji */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 7203851F1FB0F9D900FDEDE6 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 7203856F1FB0FA1B00FDEDE6 /* LaunchScreen.storyboard in Resources */, - 7203856D1FB0FA1B00FDEDE6 /* Localizable.strings in Resources */, - 720385701FB0FA1B00FDEDE6 /* Assets.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 7203851D1FB0F9D900FDEDE6 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 7203856E1FB0FA1B00FDEDE6 /* main.m in Sources */, - 720385721FB0FA1B00FDEDE6 /* MainViewController.m in Sources */, - 720385711FB0FA1B00FDEDE6 /* MainView.m in Sources */, - 72E21EE51FB101BC00F7C115 /* SBSPuppetView.m in Sources */, - 720385731FB0FA1B00FDEDE6 /* PuppetThumbnailCollectionViewCell.m in Sources */, - 720385741FB0FA1B00FDEDE6 /* AppDelegate.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 7203853F1FB0FA1A00FDEDE6 /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 720385401FB0FA1A00FDEDE6 /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 720385351FB0F9DA00FDEDE6 /* 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++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = 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_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - 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; - CODE_SIGN_IDENTITY = "iPhone Developer"; - 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 = 11.1; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - 720385361FB0F9DA00FDEDE6 /* 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++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = 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_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - 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; - CODE_SIGN_IDENTITY = "iPhone Developer"; - 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 = 11.1; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 720385381FB0F9DA00FDEDE6 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 8NQFWJHC63; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Frameworks", - ); - INFOPLIST_FILE = "$(SRCROOT)/SBSAnimoji/Supporting files/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = dk.simonbs.SBSAnimoji; - PRODUCT_NAME = "$(TARGET_NAME)"; - TARGETED_DEVICE_FAMILY = 1; - }; - name = Debug; - }; - 720385391FB0F9DA00FDEDE6 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 8NQFWJHC63; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Frameworks", - ); - INFOPLIST_FILE = "$(SRCROOT)/SBSAnimoji/Supporting files/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = dk.simonbs.SBSAnimoji; - PRODUCT_NAME = "$(TARGET_NAME)"; - TARGETED_DEVICE_FAMILY = 1; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 7203851C1FB0F9D900FDEDE6 /* Build configuration list for PBXProject "SBSAnimoji" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 720385351FB0F9DA00FDEDE6 /* Debug */, - 720385361FB0F9DA00FDEDE6 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 720385371FB0F9DA00FDEDE6 /* Build configuration list for PBXNativeTarget "SBSAnimoji" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 720385381FB0F9DA00FDEDE6 /* Debug */, - 720385391FB0F9DA00FDEDE6 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 720385191FB0F9D900FDEDE6 /* Project object */; -} diff --git a/SBSAnimoji/Application/AppDelegate.h b/SBSAnimoji/Application/AppDelegate.h deleted file mode 100644 index d15bd89..0000000 --- a/SBSAnimoji/Application/AppDelegate.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// AppDelegate.h -// SBSAnimoji -// -// Created by Simon Støvring on 05/11/2017. -// Copyright © 2017 SimonBS. All rights reserved. -// - -#import - -@interface AppDelegate : UIResponder - -@property (strong, nonatomic) UIWindow *window; - -@end - diff --git a/SBSAnimoji/Application/AppDelegate.m b/SBSAnimoji/Application/AppDelegate.m deleted file mode 100644 index e8093fe..0000000 --- a/SBSAnimoji/Application/AppDelegate.m +++ /dev/null @@ -1,24 +0,0 @@ -// -// AppDelegate.m -// SBSAnimoji -// -// Created by Simon Støvring on 05/11/2017. -// Copyright © 2017 SimonBS. All rights reserved. -// - -#import "AppDelegate.h" -#import "MainViewController.h" - -@interface AppDelegate () -@end - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; - self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[[MainViewController alloc] init]]; - [self.window makeKeyAndVisible]; - return YES; -} - -@end diff --git a/SBSAnimoji/Pages/Main/MainView.h b/SBSAnimoji/Pages/Main/MainView.h deleted file mode 100644 index 911bac1..0000000 --- a/SBSAnimoji/Pages/Main/MainView.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// MainView.h -// SBSAnimoji -// -// Created by Simon Støvring on 05/11/2017. -// Copyright © 2017 SimonBS. All rights reserved. -// - -#import -#import "SBSPuppetView.h" - -@class AVTPuppetView; - -@interface MainView : UIView -@property (nonatomic, readonly) SBSPuppetView *puppetView; -@property (nonatomic, readonly) UICollectionView *thumbnailsCollectionView; -@property (nonatomic, readonly) UIButton *recordButton; -@property (nonatomic, readonly) UIButton *shareButton; -@property (nonatomic, readonly) UIButton *deleteButton; -@property (nonatomic, readonly) UIButton *previewButton; -@property (nonatomic, readonly) UIActivityIndicatorView *activityIndicatorView; -@property (nonatomic, readonly) UILabel *durationLabel; -@end diff --git a/SBSAnimoji/Pages/Main/MainView.m b/SBSAnimoji/Pages/Main/MainView.m deleted file mode 100644 index 0797aa3..0000000 --- a/SBSAnimoji/Pages/Main/MainView.m +++ /dev/null @@ -1,139 +0,0 @@ -// -// MainView.m -// SBSAnimoji -// -// Created by Simon Støvring on 05/11/2017. -// Copyright © 2017 SimonBS. All rights reserved. -// - -#import "MainView.h" -#import "AVTPuppetView.h" - -@interface MainView () -@property (nonatomic, strong) SBSPuppetView *puppetView; -@property (nonatomic, strong) UICollectionView *thumbnailsCollectionView; -@property (nonatomic, strong) UIButton *recordButton; -@property (nonatomic, strong) UIButton *shareButton; -@property (nonatomic, strong) UIButton *deleteButton; -@property (nonatomic, strong) UIButton *previewButton; -@property (nonatomic, strong) UIActivityIndicatorView *activityIndicatorView; -@property (nonatomic, strong) UILabel *durationLabel; -@property (nonatomic, strong) UIView *puppetViewSeparatorView; -@end - -@implementation MainView - -- (instancetype)init { - if (self = [super init]) { - [self setupView]; - [self setupLayout]; - } - return self; -} - -- (void)setupView { - self.backgroundColor = [UIColor whiteColor]; - - self.puppetView = [[SBSPuppetView alloc] init]; - self.puppetView.translatesAutoresizingMaskIntoConstraints = NO; - [self addSubview:self.puppetView]; - - self.puppetViewSeparatorView = [[UIView alloc] init]; - self.puppetViewSeparatorView.translatesAutoresizingMaskIntoConstraints = NO; - self.puppetViewSeparatorView.backgroundColor = [UIColor colorWithRed:224.0/255.0 green:224.0/255.0 blue:224.0/255.0 alpha:1.0]; - [self addSubview:self.puppetViewSeparatorView]; - - UICollectionViewFlowLayout *collectionViewLayout = [[UICollectionViewFlowLayout alloc] init]; - collectionViewLayout.scrollDirection = UICollectionViewScrollDirectionVertical; - collectionViewLayout.minimumInteritemSpacing = 14; - collectionViewLayout.minimumLineSpacing = 10; - self.thumbnailsCollectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:collectionViewLayout]; - self.thumbnailsCollectionView.translatesAutoresizingMaskIntoConstraints = NO; - self.thumbnailsCollectionView.backgroundColor = [UIColor whiteColor]; - self.thumbnailsCollectionView.contentInset = UIEdgeInsetsMake(15, 7, 15, 7); - self.thumbnailsCollectionView.showsHorizontalScrollIndicator = NO; - [self addSubview:self.thumbnailsCollectionView]; - - self.durationLabel = [[UILabel alloc] init]; - self.durationLabel.translatesAutoresizingMaskIntoConstraints = NO; - self.durationLabel.textAlignment = NSTextAlignmentRight; - self.durationLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - self.durationLabel.hidden = YES; - [self addSubview:self.durationLabel]; - - self.deleteButton = [UIButton buttonWithType:UIButtonTypeSystem]; - self.deleteButton.translatesAutoresizingMaskIntoConstraints = NO; - self.deleteButton.hidden = YES; - [self.deleteButton setImage:[UIImage imageNamed:@"delete"] forState:UIControlStateNormal]; - [self addSubview:self.deleteButton]; - - self.previewButton = [UIButton buttonWithType:UIButtonTypeSystem]; - self.previewButton.translatesAutoresizingMaskIntoConstraints = NO; - self.previewButton.hidden = YES; - [self.previewButton setImage:[UIImage imageNamed:@"start-previewing"] forState:UIControlStateNormal]; - [self addSubview:self.previewButton]; - - self.recordButton = [UIButton buttonWithType:UIButtonTypeSystem]; - self.recordButton.translatesAutoresizingMaskIntoConstraints = NO; - [self.recordButton setImage:[UIImage imageNamed:@"start-recording"] forState:UIControlStateNormal]; - [self addSubview:self.recordButton]; - - self.shareButton = [UIButton buttonWithType:UIButtonTypeSystem]; - self.shareButton.translatesAutoresizingMaskIntoConstraints = NO; - self.shareButton.hidden = YES; - [self.shareButton setImage:[UIImage imageNamed:@"share"] forState:UIControlStateNormal]; - [self addSubview:self.shareButton]; - - self.activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; - self.activityIndicatorView.translatesAutoresizingMaskIntoConstraints = NO; - self.activityIndicatorView.hidesWhenStopped = YES; - [self addSubview:self.activityIndicatorView]; -} - -- (void)setupLayout { - [self.puppetView.leadingAnchor constraintEqualToAnchor:self.leadingAnchor].active = YES; - [self.puppetView.trailingAnchor constraintEqualToAnchor:self.trailingAnchor].active = YES; - [self.puppetView.topAnchor constraintEqualToAnchor:self.safeAreaLayoutGuide.topAnchor].active = YES; - [self.puppetView.heightAnchor constraintEqualToConstant:335].active = YES; - - [self.puppetViewSeparatorView.leadingAnchor constraintEqualToAnchor:self.leadingAnchor].active = YES; - [self.puppetViewSeparatorView.trailingAnchor constraintEqualToAnchor:self.trailingAnchor].active = YES; - [self.puppetViewSeparatorView.topAnchor constraintEqualToAnchor:self.puppetView.bottomAnchor].active = YES; - [self.puppetViewSeparatorView.heightAnchor constraintEqualToConstant:2].active = YES; - - [self.thumbnailsCollectionView.leadingAnchor constraintEqualToAnchor:self.leadingAnchor].active = YES; - [self.thumbnailsCollectionView.trailingAnchor constraintEqualToAnchor:self.trailingAnchor].active = YES; - [self.thumbnailsCollectionView.topAnchor constraintEqualToAnchor:self.puppetViewSeparatorView.bottomAnchor].active = YES; - [self.thumbnailsCollectionView.bottomAnchor constraintEqualToAnchor:self.bottomAnchor].active = YES; - - [self.durationLabel.trailingAnchor constraintEqualToAnchor:self.trailingAnchor constant: -20].active = YES; - [self.durationLabel.topAnchor constraintEqualToAnchor:self.puppetView.topAnchor constant: 15].active = YES; - - [self.recordButton.trailingAnchor constraintEqualToAnchor:self.trailingAnchor constant: -20].active = YES; - [self.recordButton.bottomAnchor constraintEqualToAnchor:self.puppetView.bottomAnchor constant: -20].active = YES; - - [self.shareButton.trailingAnchor constraintEqualToAnchor:self.trailingAnchor constant: -20].active = YES; - [self.shareButton.bottomAnchor constraintEqualToAnchor:self.puppetView.bottomAnchor constant: -20].active = YES; - - [self.deleteButton.trailingAnchor constraintEqualToAnchor:self.trailingAnchor constant: -20].active = YES; - [self.deleteButton.topAnchor constraintEqualToAnchor:self.puppetView.topAnchor constant: 15].active = YES; - - [self.previewButton.trailingAnchor constraintEqualToAnchor:self.trailingAnchor constant: -20].active = YES; - [self.previewButton.topAnchor constraintEqualToAnchor:self.deleteButton.bottomAnchor constant: 15].active = YES; - - [self.activityIndicatorView.centerXAnchor constraintEqualToAnchor:self.shareButton.centerXAnchor].active = YES; - [self.activityIndicatorView.centerYAnchor constraintEqualToAnchor:self.shareButton.centerYAnchor].active = YES; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - CGFloat itemsPerRow = 4; - UICollectionView *collectionView = self.thumbnailsCollectionView; - UIEdgeInsets contentInset = self.thumbnailsCollectionView.contentInset; - UICollectionViewFlowLayout *flowLayout = (UICollectionViewFlowLayout *)collectionView.collectionViewLayout; - CGFloat availableWidth = self.bounds.size.width - contentInset.left - contentInset.right - (itemsPerRow - 1) * flowLayout.minimumInteritemSpacing; - CGFloat itemLength = floor(availableWidth / itemsPerRow); - flowLayout.itemSize = CGSizeMake(itemLength, itemLength); -} - -@end diff --git a/SBSAnimoji/Pages/Main/MainViewController.h b/SBSAnimoji/Pages/Main/MainViewController.h deleted file mode 100644 index b019996..0000000 --- a/SBSAnimoji/Pages/Main/MainViewController.h +++ /dev/null @@ -1,14 +0,0 @@ -// -// MainViewController.h -// SBSAnimoji -// -// Created by Simon Støvring on 05/11/2017. -// Copyright © 2017 SimonBS. All rights reserved. -// - -#import - -@interface MainViewController : UIViewController - -@end - diff --git a/SBSAnimoji/Pages/Main/MainViewController.m b/SBSAnimoji/Pages/Main/MainViewController.m deleted file mode 100644 index f29d919..0000000 --- a/SBSAnimoji/Pages/Main/MainViewController.m +++ /dev/null @@ -1,240 +0,0 @@ -// -// MainViewController.m -// SBSAnimoji -// -// Created by Simon Støvring on 05/11/2017. -// Copyright © 2017 SimonBS. All rights reserved. -// - -#import "MainViewController.h" -#import "MainView.h" -#import "AVTPuppet.h" -#import "AVTPuppetView.h" -#import "PuppetThumbnailCollectionViewCell.h" - -@interface MainViewController () -@property (nonatomic, readonly) MainView *contentView; -@property (nonatomic, strong) NSTimer *durationTimer; -@property (nonatomic, strong) NSArray *puppetNames; -@property (nonatomic, assign) BOOL hasExportedMovie; -@property (nonatomic, assign, getter=isExporting) BOOL exporting; -@end - -@implementation MainViewController - -// Pragma mark: - Lifecycle - -- (instancetype)init { - if (self = [super init]) { - self.title = NSLocalizedString(@"MAIN_TITLE", @""); - self.puppetNames = [AVTPuppet puppetNames]; - } - return self; -} - -- (void)dealloc { - [self.contentView.puppetView removeObserver:self forKeyPath:@"recording"]; -} - -- (MainView *)contentView { - return (MainView *)self.view; -} - -- (void)loadView { - self.view = [[MainView alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - self.contentView.puppetView.sbsDelegate = self; - self.contentView.thumbnailsCollectionView.dataSource = self; - self.contentView.thumbnailsCollectionView.delegate = self; - [self.contentView.thumbnailsCollectionView registerClass:[PuppetThumbnailCollectionViewCell class] forCellWithReuseIdentifier:@"thumbnail"]; - [self.contentView.recordButton addTarget:self action:@selector(toggleRecording) forControlEvents:UIControlEventTouchUpInside]; - [self.contentView.deleteButton addTarget:self action:@selector(removeRecording) forControlEvents:UIControlEventTouchUpInside]; - [self.contentView.previewButton addTarget:self action:@selector(startPreview) forControlEvents:UIControlEventTouchUpInside]; - [self.contentView.shareButton addTarget:self action:@selector(share) forControlEvents:UIControlEventTouchUpInside]; - [self showPuppetNamed:self.puppetNames[0]]; - [self.contentView.thumbnailsCollectionView selectItemAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0] animated:NO scrollPosition:UICollectionViewScrollPositionNone]; -} - -// Pragma mark: - Private - -- (void)share { - __weak typeof(self) weakSelf = self; - [self exportMovieIfNecessary:^(NSURL *movieURL) { - if (movieURL == nil) { - return; - } - NSArray *activityItems = @[ movieURL ]; - UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; - [weakSelf presentViewController:activityViewController animated:true completion:nil]; - }]; -} - -- (void)exportMovieIfNecessary:(void(^)(NSURL *))completion { - NSURL *movieURL = [self movieURL]; - if (self.hasExportedMovie) { - completion(movieURL); - } else { - self.exporting = YES; - [self.contentView.activityIndicatorView startAnimating]; - self.contentView.deleteButton.enabled = NO; - self.contentView.shareButton.hidden = YES; - __weak typeof(self) weakSelf = self; - [self.contentView.puppetView exportMovieToURL:movieURL options:nil completionHandler:^{ - weakSelf.hasExportedMovie = YES; - [weakSelf.contentView.activityIndicatorView stopAnimating]; - weakSelf.contentView.deleteButton.enabled = YES; - weakSelf.contentView.shareButton.hidden = NO; - weakSelf.exporting = NO; - completion(movieURL); - }]; - } -} - -- (void)removeRecording { - self.hasExportedMovie = NO; - [self removeExistingMovieFile]; - [self.contentView.puppetView stopRecording]; - [self.contentView.puppetView stopPreviewing]; - self.contentView.recordButton.hidden = NO; - self.contentView.deleteButton.hidden = YES; - self.contentView.previewButton.hidden = YES; - self.contentView.shareButton.hidden = YES; -} - -- (void)toggleRecording { - if (self.contentView.puppetView.isRecording) { - [self.contentView.puppetView stopRecording]; - } else { - [self.contentView.puppetView startRecording]; - } -} - -- (void)durationTimerTriggered { - int recordingDuration = ceil(self.contentView.puppetView.recordingDuration); - int minutes = floor(recordingDuration / 60); - int seconds = recordingDuration % 60; - NSString *strMinutes; - NSString *strSeconds; - if (minutes < 10) { - strMinutes = [NSString stringWithFormat:@"0%d", minutes]; - } else { - strMinutes = [NSString stringWithFormat:@"%d", minutes]; - } - if (seconds < 10) { - strSeconds = [NSString stringWithFormat:@"0%d", seconds]; - } else { - strSeconds = [NSString stringWithFormat:@"%d", seconds]; - } - self.contentView.durationLabel.text = [NSString stringWithFormat:@"%@:%@", strMinutes, strSeconds]; -} - -- (void)removeExistingMovieFile { - NSFileManager *fileManager = [NSFileManager defaultManager]; - NSURL *movieURL = [self movieURL]; - if ([fileManager fileExistsAtPath:movieURL.path]) { - NSError *error = nil; - [fileManager removeItemAtURL:movieURL error:&error]; - if (error) { - NSLog(@"%@", error); - } - } -} - -- (void)startPreview { - [self.contentView.previewButton removeTarget:self action:@selector(startPreview) forControlEvents:UIControlEventTouchUpInside]; - [self.contentView.previewButton addTarget:self action:@selector(stopPreview) forControlEvents:UIControlEventTouchUpInside]; - [self.contentView.previewButton setImage:[UIImage imageNamed:@"stop-previewing"] forState:UIControlStateNormal]; - [self.contentView.puppetView stopPreviewing]; - [self.contentView.puppetView startPreviewing]; -} - -- (void)stopPreview { - [self.contentView.previewButton removeTarget:self action:@selector(stopPreview) forControlEvents:UIControlEventTouchUpInside]; - [self.contentView.previewButton addTarget:self action:@selector(startPreview) forControlEvents:UIControlEventTouchUpInside]; - [self.contentView.previewButton setImage:[UIImage imageNamed:@"start-previewing"] forState:UIControlStateNormal]; - [self.contentView.puppetView stopPreviewing]; -} - -- (NSURL *)movieURL { - NSURL *documentURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; - return [documentURL URLByAppendingPathComponent:@"animoji.mov"]; -} - -- (void)showPuppetNamed:(NSString *)puppetName { - AVTPuppet *puppet = [AVTPuppet puppetNamed:puppetName options:nil]; - [self.contentView.puppetView setAvatarInstance:(AVTAvatarInstance *)puppet]; -} - -// Pragma mark: - SBSPuppetViewDelegate - -- (void)puppetViewDidFinishPlaying:(SBSPuppetView *)puppetView { - if (!puppetView.isRecording) { - [self stopPreview]; - } -} - -- (void)puppetViewDidStartRecording:(SBSPuppetView *)puppetView { - self.hasExportedMovie = NO; - [self removeExistingMovieFile]; - [self.contentView.recordButton setImage:[UIImage imageNamed:@"stop-recording"] forState:UIControlStateNormal]; - self.contentView.durationLabel.text = @"00:00"; - self.contentView.durationLabel.hidden = NO; - self.durationTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(durationTimerTriggered) userInfo:nil repeats:YES]; - self.contentView.thumbnailsCollectionView.userInteractionEnabled = NO; - [UIView animateWithDuration:0.3 animations:^{ - self.contentView.thumbnailsCollectionView.alpha = 0.5; - }]; -} - -- (void)puppetViewDidStopRecording:(SBSPuppetView *)puppetView { - if (self.isExporting) { - // The callback is called when we start exporting. - // It's not intuitive but internally, AVTPuppetView is - // calling stopRecording which then triggers this callback. - return; - } - [self.durationTimer invalidate]; - self.durationTimer = nil; - self.contentView.recordButton.hidden = YES; - self.contentView.shareButton.hidden = NO; - self.contentView.deleteButton.hidden = NO; - self.contentView.previewButton.hidden = NO; - self.contentView.durationLabel.hidden = YES; - [self.contentView.recordButton setImage:[UIImage imageNamed:@"start-recording"] forState:UIControlStateNormal]; - self.contentView.thumbnailsCollectionView.userInteractionEnabled = YES; - [UIView animateWithDuration:0.3 animations:^{ - self.contentView.thumbnailsCollectionView.alpha = 1; - }]; - [self startPreview]; -} - -// Pragma mark: - UICollectionViewDataSource - -- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { - return 1; -} - -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return [self.puppetNames count]; -} - -- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(nonnull NSIndexPath *)indexPath { - PuppetThumbnailCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"thumbnail" forIndexPath:indexPath]; - NSString *puppetName = self.puppetNames[indexPath.item]; - cell.thumbnailImageView.image = [AVTPuppet thumbnailForPuppetNamed:puppetName options:nil]; - return cell; -} - -// Pragma mark: - UICollectionViewDelegate - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - NSString *puppetName = self.puppetNames[indexPath.item]; - if (puppetName != nil) { - [self showPuppetNamed:puppetName]; - } -} - -@end diff --git a/SBSAnimoji/Pages/Main/PuppetThumbnailCollectionViewCell.h b/SBSAnimoji/Pages/Main/PuppetThumbnailCollectionViewCell.h deleted file mode 100644 index 779829b..0000000 --- a/SBSAnimoji/Pages/Main/PuppetThumbnailCollectionViewCell.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// PuppetThumbnailCollectionViewCell.h -// SBSAnimoji -// -// Created by Simon Støvring on 05/11/2017. -// Copyright © 2017 SimonBS. All rights reserved. -// - -#import - -@interface PuppetThumbnailCollectionViewCell : UICollectionViewCell -@property (nonatomic, readonly) UIImageView *thumbnailImageView; -@end diff --git a/SBSAnimoji/Pages/Main/PuppetThumbnailCollectionViewCell.m b/SBSAnimoji/Pages/Main/PuppetThumbnailCollectionViewCell.m deleted file mode 100644 index 1da36c9..0000000 --- a/SBSAnimoji/Pages/Main/PuppetThumbnailCollectionViewCell.m +++ /dev/null @@ -1,52 +0,0 @@ -// -// PuppetThumbnailCollectionViewCell.m -// SBSAnimoji -// -// Created by Simon Støvring on 05/11/2017. -// Copyright © 2017 SimonBS. All rights reserved. -// - -#import "PuppetThumbnailCollectionViewCell.h" - -@interface PuppetThumbnailCollectionViewCell () -@property (nonatomic, strong) UIImageView *thumbnailImageView; -@property (nonatomic, strong) UIImageView *selectionImageView; -@end - -@implementation PuppetThumbnailCollectionViewCell - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:CGRectZero]) { - [self setupView]; - } - return self; -} - -- (void)setupView { - self.backgroundColor = [UIColor whiteColor]; - - self.thumbnailImageView = [[UIImageView alloc] init]; - self.thumbnailImageView.translatesAutoresizingMaskIntoConstraints = NO; - self.thumbnailImageView.contentMode = UIViewContentModeScaleAspectFit; - [self.contentView addSubview:self.thumbnailImageView]; - - self.selectionImageView = [[UIImageView alloc] init]; - self.selectionImageView.image = [UIImage imageNamed:@"selection"]; - self.selectionImageView.translatesAutoresizingMaskIntoConstraints = NO; - self.selectionImageView.hidden = YES; - [self.contentView addSubview:self.selectionImageView]; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - UIEdgeInsets thumbnailMargins = UIEdgeInsetsMake(7, 7, 7, 7); - self.thumbnailImageView.frame = UIEdgeInsetsInsetRect(self.contentView.bounds, thumbnailMargins); - self.selectionImageView.frame = self.contentView.bounds; -} - -- (void)setSelected:(BOOL)selected { - [super setSelected:selected]; - self.selectionImageView.hidden = !selected; -} - -@end diff --git a/SBSAnimoji/Pages/Main/SBSPuppetView.h b/SBSAnimoji/Pages/Main/SBSPuppetView.h deleted file mode 100644 index 828963c..0000000 --- a/SBSAnimoji/Pages/Main/SBSPuppetView.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// SBSPuppetView.h -// SBSAnimoji -// -// Created by Simon Støvring on 06/11/2017. -// Copyright © 2017 SimonBS. All rights reserved. -// - -#import "AVTPuppetView.h" - -@class SBSPuppetView; - -@protocol SBSPuppetViewDelegate -- (void)puppetViewDidFinishPlaying:(SBSPuppetView *)puppetView; -- (void)puppetViewDidStartRecording:(SBSPuppetView *)puppetView; -- (void)puppetViewDidStopRecording:(SBSPuppetView *)puppetView; -@end - -@interface SBSPuppetView : AVTPuppetView -@property (nonatomic, weak) id sbsDelegate; -@end diff --git a/SBSAnimoji/Pages/Main/SBSPuppetView.m b/SBSAnimoji/Pages/Main/SBSPuppetView.m deleted file mode 100644 index 2ff4533..0000000 --- a/SBSAnimoji/Pages/Main/SBSPuppetView.m +++ /dev/null @@ -1,64 +0,0 @@ -// -// SBSPuppetView.m -// SBSAnimoji -// -// Created by Simon Støvring on 06/11/2017. -// Copyright © 2017 SimonBS. All rights reserved. -// - -#import "SBSPuppetView.h" -#import - -#define MAX_RECORDING_DURATION 60 // Seconds - -@implementation SBSPuppetView - -- (void)audioPlayerItemDidReachEnd:(id)arg1 { - [super audioPlayerItemDidReachEnd:arg1]; - if ([self.sbsDelegate respondsToSelector:@selector(puppetViewDidFinishPlaying:)]) { - [self.sbsDelegate puppetViewDidFinishPlaying:self]; - } -} - -- (void)startRecording { - [super startRecording]; - - int duration = MAX_RECORDING_DURATION * 60; - - NSMutableData *timesBuffer = [NSMutableData dataWithCapacity: duration * 8]; - NSMutableData *blendShapeBuffer = [NSMutableData dataWithCapacity: duration * 204]; - NSMutableData *transformData = [NSMutableData dataWithCapacity: duration * 64]; - - [self setValue:[NSNumber numberWithInt:duration] forKey:@"_recordingCapacity"]; - [self setValue:timesBuffer forKey:@"_rawTimesData"]; - [self setValue:blendShapeBuffer forKey:@"_rawBlendShapesData"]; - [self setValue:transformData forKey:@"_rawTransformsData"]; - - { - Ivar ivar = class_getInstanceVariable([AVTPuppetView class], "_rawTimes"); - object_setIvar(self, ivar, [timesBuffer mutableBytes]); - } - - { - Ivar ivar = class_getInstanceVariable([AVTPuppetView class], "_rawBlendShapes"); - object_setIvar(self, ivar, [blendShapeBuffer mutableBytes]); - } - - { - Ivar ivar = class_getInstanceVariable([AVTPuppetView class], "_rawTransforms"); - object_setIvar(self, ivar, [transformData mutableBytes]); - } - - if ([self.sbsDelegate respondsToSelector:@selector(puppetViewDidStartRecording:)]) { - [self.sbsDelegate puppetViewDidStartRecording:self]; - } -} - -- (void)stopRecording { - [super stopRecording]; - if ([self.sbsDelegate respondsToSelector:@selector(puppetViewDidStopRecording:)]) { - [self.sbsDelegate puppetViewDidStopRecording:self]; - } -} - -@end diff --git a/SBSAnimoji/Supporting files/Localizable.strings b/SBSAnimoji/Supporting files/Localizable.strings deleted file mode 100644 index 751fe87..0000000 --- a/SBSAnimoji/Supporting files/Localizable.strings +++ /dev/null @@ -1,10 +0,0 @@ -/* - Localizable.strings - SBSAnimoji - - Created by Simon Støvring on 05/11/2017. - Copyright © 2017 SimonBS. All rights reserved. -*/ - -"MAIN_TITLE" = "SBSAnimoji"; - diff --git a/SBSAnimoji/Supporting files/main.m b/SBSAnimoji/Supporting files/main.m deleted file mode 100644 index 9dbd51c..0000000 --- a/SBSAnimoji/Supporting files/main.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// main.m -// SBSAnimoji -// -// Created by Simon Støvring on 05/11/2017. -// Copyright © 2017 SimonBS. All rights reserved. -// - -#import -#import "AppDelegate.h" - -int main(int argc, char * argv[]) { - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/SBSAnimoji/User interface/Base.lproj/LaunchScreen.storyboard b/SBSAnimoji/User interface/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index 95b057b..0000000 --- a/SBSAnimoji/User interface/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/newScreenshot.jpg b/newScreenshot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5c0697159d596e9ac2eee228b8c61ebe6817c4fd GIT binary patch literal 65194 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 H|IGXcGk>1) literal 0 HcmV?d00001 diff --git a/screenshot.png b/screenshot.png deleted file mode 100644 index 245d91e5ecb642d1d43c8c6a93258404005a6835..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160505 zcmeFZMO<9Z7d_ax1xO%3a0nhOcyJ5u?v`MUyIVtm5D3<|H16*1?gV#tcb93tzxgj_ zKZ{w+sz25Ad#~!gs$1urdx{W6c?on>0#pD1fG#EZT^Rs?aRmV27?2U6-<08QY(hU^ z9F-+R0Hvcu`v8CtK;PzYFK}EC3v(! zvn~bIqdz{Ywg|BY!I`vj+0tbhh$5(rG4CZ$`R7+|eIbsgsje%ot8y+}O@x)6CnwEy zsh%gPY>sK%jyuDtVL`n?oE3&xUr`d^WnrJCVH2M%Y^}^>VX0xjeo{hIhHEx7{!;Cf zhFE*SSYPcwk?t*yYg7J1YYLE{t4BV}c zo1%66|859sN`?FH#_6Qe?d>h3B&v&4(8oY;zh<-h-{=1uj}dY)2q9x*Q>m=1tZs^n z!v$JfThBV1nJW{T7#kyV1%U$d$7Zw?Ab&c~2HcoeTv23u6Fmj1?iAdN1 z1L+2CT}j~1jwzK<8cfxO^&BZnan*D0Vy?_BO8xH6*5J-avdO>%RijFlL`2*~v@+1j zBCPj&l3X$u^jjG!3N}#};+CSAm>9}`-@65(Qd3L(=c<9=uX>7#@1qpmxaYYm8yu=g z@;f^_<%#`%3p4zi#-^T`iiXBVh*Ubgpg@X+nl^gB5o1p1y+N&0B7=6dkf(Ki;i zGedlSi|Vj>>#+CWB%P$mFMmPIk6LX$EjG<$l1Ycsgs343Kl{R`D;TvZzZVu3QnFFl z3zO}9$Z}b6H_MUB%MTLZB{aLbiBE8FaM-F{v;oum_yl^Lbs+JSw%o4h_?(9t^ydj& z(*Z4PCQ=)=<8-$0G@e9u#?s2zv2PP;+n#!ux5L;*CDG14J`JkTZ%YV1Me#izRk6Ac z8sF~C}3)F#^|$9{?R!o%)&8Nu7RZOfFC29VNrqS-hZ85xt;=i7KR z0as9p=V$}*m&7B-(PYOh=q!(_++ZDmI}Q6}sPe9wj=h$Buso{EnV~BfBc6kP#<2J> zy&KWab~02_&AMi5dv}1Pk0k4lg_rE|2Vj{$FUM{k#7A0QVBdJ&c~);*XZ0aYRb6fH z)c4l2Lre_fzJs60=U&P8GPmh4NSC)4dpse-jAOCU_WFE^^BZLeiNr0PB(gl9SzF+G zOXXs^%tsBEK{LH4n8YKW?{TRLbxQ`9IZCF@xq$DkJwRI`62jpbchq#++DZR71FHZC zYB(KUP%E;EPt{U(M4*mQ zf_f_~c3;IHu2R^ZeqI6%+3zYw!Jvh zF*C>O*tV!KHJ^3%Z;3q4Piq)3s-!`_a4kE5m)ti0vU=WFS>v%tfq$nlu$hiV5|*|J zlenG1;PW`;>)Q9=cnrnmCgLPQr<6AX46LPzNscyLenFb!3Ae*a!|p!OE}to~{U-vP zk^RZMAsT^ml<6rg`JRi;P^K7)h;Pb4=%l%|x6X&N1I39|A2ojSvzd*?s0i8@J{_O> zf)#upCZqf%UWi12_61Y%TtfqT@o8y7mYaMML_`~I@+?KsW_a=2{tNC&ijDE;PiQ=bm(1pP( zJ1Y3}cGbmoTy&U5& zOX9N+ti8#K;MNwnOdRVM#T2Amed^^hA(o}(MW07`aIO?iZI>}|_-UD=S~Df-Bd$M1 z57dEKi~rlG38`NGD1~tJ&7xx z?)@5YyN#*wEF6SM%4C+}9yIaGJA?QSrabfgAeDAE93ke`Z9$blj>h-gI^((xYi(=2 z626Nw3WqLqu06GfqpGpE$I~_g((zz49oESmA9R)y~ND&;5nLm?fA7FN5)cc(sh{n$4?jjT#-P#2j4Qx1<<$J%czN zkJV25$_<<0yv7mBw~C-Z9Zdh@%I%@8CC9PpqH}19r2FYgxG0~$C8Izn0FuY+6rC*L zXUXG#Z9FUk1DWMjcnQl66!@=W-r=);hwgARyWS6c1)o%-YG0k6wG*MasQeg} z>tV60`jr21B1|*_e_`48<}!`WZ;~U5#7*PnMLOfheIT=s@MFlP>X)`DKKm^8BF#}o zUIe@-hK83~K^ZCas1&D8sY>(p&-ah3ws8`U2GQ=ZXjIHy+&0-4h7i1(bIqQ1K4L^M%u98VF5H=pt~0i6z0ZBx>l2Lrz#Fkw6Dp(J7smp{Y^ty+0bI}5 z)b|~jKI!g1I((mJeZ|K1f5R;!+>rf%eaZ+X{xa5f*8CpMbTpyBX7bwk`k>}EdG$rS zRp^7o&@({mvQ&G=wyq{Q;qA zs((|hMb^4B2wduIiAY<}8mwjZ)a-UaWaYj$RcUIE|DcIh<^E|`keQIvMiG->1rY}a zhpzk*262S4+R^*OG0jq1P zvr9_eHcvW~GZ<6kZqy(^b_O4bZ2^-!p28%R$5ww-rG1xpPxhG)`f6R`^MTd8*@l3Q z+R@#K48Lxp>i`K85}xmOTrP&bNio{uJxS7h*z#LCBIYr^i|Q2n2YiQvctN^0O`pF< zF)HL*>F+>SUilv1_l1?K8r5U<9u}}e8>?(VwoqhI*4g&7%{-kNMLgjcxPyz4KdLD8x-7#7*X| zYNeOj=4*hJBx+xryfxpJ*}i<3Szv$}Y>@Wx7xebuBN=r*ZU}^m$L>ptOD$;#t@`a;w19_T=CV@R-puqmvU8 z3*@mIuU67mFTE?T`G*Y_xT%O3u&!IBF48E83uS6FFCyS|$I`hYyP4YzkHu#*{cbxG z{GvIwtwK%wO^WH^NlaNykBV6?88N5&XaC6HsB$rZpv@ERh;T+kNl(i|&=+1zTTd7E z_xj|#qFuy!)}csDFL892)rV}^O$&%C>jjve7H_M>9!8zM4L1CA^0HH}(`529p)IsOhJE1nnR1}zbxTFxewy@^ zxI*vbf8-4sb6Hr#6K`sZ!~XxixJrHFaPl)VVCbZR@**}Uzq?J$FQNF4o{hV{aX(%y z9fkj~w=pPTTQSS54gZhU39U*&$=s>2HUAs%q6P_o{Xm{+AqzbJql4ZwP!iY*uDLe; zk7fS<5B@))p2YYJN=YFa7#%&C{AX%ng7P@h-#_ky4`r9qrnz$e1o+=S=U2Tk^je>4 z!CHDKr1dv66=wz1)YeElIy$mrAu!sfluoefnxzIX`_4OX{|I+m>hzo;vaVqied3BODh63f|H-ZJRE!i7;LYQr?DV`-`4q zAo59=iukGC)A~(}hNH?M)x)sUD_fsS!u##lCuJrmK(sKu8+(3@qA#ugERU7b7eUHA ztLym}_6sw{mgl9QP25nMYeTVC6?Nv%jk>nylBb8+wzpg(nUs{A*?3fJ^+tQ?1fSM1 zYmN?A?;3R-uQ?{>7C!xRq82`5V4{nIVlORJR8%LhfMP;bWtDMv|A)pl=)SgBDHnuJ zNG;mTjFzDDB(@Cq0&*kAN?Ohw+vq_>;J0*e}tbvSUD3SA&607A5 zLk=;UY1nWIhsp>(%ttASkrdFgBk2an75`mxR(@I8Y!i&Wxwf|U)Xhj^+)P~mRTrP| zH{D3qAEq?=ZX4R1HJ4K_8@UwWe|4;_OQ532cRnuLmEy^n0+GmokRHo*}~N z_2KMLN!`*HD3tXG7D9h{(@t_^;s?zHF7e$rN4T~+kVs-OH$IOz5;0JWp97Sedjxi~<4Yf6y+6RcdBUY)vr>UE)PA}dwlMEGq~i`Sg0O;Hzp!sfi?)OmO=A+F$@mOh+}* z?s$eYohsRx=}eUAw8^(VE}steM^S9Q(f7xbCg$?k!?HGgcOu6t7LSgHo4Pi}z`#I< zlZIVsC8a1`@9SySpS|zgACK#%KjQes`N=wBpNezZEagAFI6!I4^sIiY;Pbh{o~H3Y zG?l}O`|iFN{lR;bi)N^*bQK=paMwlpl0HUt1F5eQ&~Q5#$lEd#d`yHAUV})mJfGAl z*~T%WHP&1beDpF=t+@3yHH@U+PRIb5rYNYv^qPSCyc>HPn#a`JJxqG(QRl=0#g3Oy z@R;=(T$i2Wm(I(0uZ-5s1TVGT6oTAfOu|wxOu-|&d6RfO)zIfT3BlZUw`1qo!o
  • 8@nFl4clpT{SziK z)1iBh@xBJ2=d&)%S(mc5mquN?4g}PPcwL8(@IZZGFTWun1$@M$U!NQt9XV=Aq3<55 z!>*`>;I~*rb-9w1YBRvZ-kd`dvJO+rl`{8Lr0DiuRs<9^w$!Djx<6d)JB)Jg_TQ%o z7_{Dx*cJkV@j^m872pduGGWe0I6PvW4h>$F&$1H(cEGk?&xC`w^*p51vJR)*2Pe6(;GYrv>NTroX`bqbJ`a;=gK(I9>14dm+xvz4VCIhd{Q`xe93_bB0msb%9&8C`$GFbFocdh@awx3 zV0o|C??I%hj^46BIzjl8_x_w?yqJg=Xs$>{!TUX-xQCZW9<4{*MhZC@+yy@r0~eO( zPg>khS>A?V|Aw9FC6N%j3_1J9hGv6*SF5P#J&m>`!Aa$-L zdac-;*7rW|!9yecv0~SSZqbYE1)R)tMdz^eSbINLK#cwC^x;+y6;gdG_^_9?fWXWI zU6y4wQ^WY?9vP%QPbRb+HQDyI@2Edn&vhs)!BJ<64pYnaU9uanj88=m3MLr%KkK6$ z_fd`qyrDQ@BaDygPIyn3X|D{s5ZBTrpU30I#VOr}bE+(C`ESBQoYpHbl+ge$C%7$A zQ6r^{UiPf7#X|F65T^A}@Hk2!Y?-TF+OSSjcbm6xEihLp6mw(MGIQE-x- zw_eNBcIa<;Sf(BzaqcM*fwj+vM1t zNKuS`^@WYn$4Ahv!YRg0Qp>qY2!xrWi;vme^1E6>Rcaq4pR)i`bDk%~%e;9gnK=C* zP`?!2Kvlgzkgz6TI?Lj)r6hsMZ{YI)PAlC1gU6=d4oy+S*Gt?RXB5Bic+sdqkT@us zRgiH4oMmy!;kB4S+{H<}&V;#-t0#@8n6jq0yw*Ddzkni$Us>*-@C3?$N#>tO-0wcT zN%XBxSqLw?F)H#=W!}%02aKX*J}(Ws+aWZN$cVHjdwhP6YX8SfvCx>LYCNwSSgmTe zsIw7`AZ!I5r4jP=61CRiZdU)tsl2?wl)9aKB=lL!^}x?d!sXWG16AQ5XW7XxtUYto zAHS0oMUwCe+>pIA6(-SEXZRgg5*^0)Z}U+?^jW+F{qUHQqVEvDY$p=<5AWgGc2JHJ zL#L>#gauqPI!sjAzT-WN#Uy+w-~isB6h<`7u@O7^rab^-Dio%J6+kWQ(*65`1GG3W zghB&JFZG4*zPNDke*aL$`!R%WSUj<*;c83OW=%;(Y+g{+Cg1ofoWSd4Q(~*>%mwVl^Als{ns^355%)q-t zdRqz+Bp1+9)?OjJ)jgc>nC#{Q;jGDMBCu0d_Sk?Z44xswzo|vcpN; z57p)#d65!pGD7c)gmPO4KNq$ffQStSM~x|#vyfRPP+YJAWX@C-qCBrO4bww z54Vgz>>$oCu!+&OY;B%w=eN0VJcQO~j|~)>L4O3aDbe36A~C>7trWp~D7$qMhw`k{ zsOW!IO0e+VZpaJn&BeU?-&P?T^Qrb%s>$VoMh0&GJTC@lwu==~b6U?;FcLFuXQA<9 z3ge%yJI8m!`dT&I&b!0k+6PnYkz{Xse!Oq*5@&Gm@^x$*eNT_wJ}tx|h>np?j+MnZ zuI^tVyfT$xl4s#}23xE>QIzfxA^R!?QjCtqgFLLSBQ0qpnu{gGqOemdBe|_ViHeA= zV{Wh}!(FmM zP<5X4AN7-$gfc;F5mv1KXk&R6lo)zT@c!V`{~wJ+d7E}3lHx!9V}dU1(B`SR#Bi_W ze{CLe(9zU26VJb1$^VrLrPf55Kvq6E%m1rDLPcw46k{Prh0BJuml|*_*MA*0OqXi6 zI)OX>z4-Fh2e`Km!fkwAl>e{w*1!L+{%s!a2eUN|RAGiz{4k}`OB%G2G|J*~O@^|8 zBLu*b;+UBr#DV_7=;2P00TMpVN+^SHaGe)pm67(ypDnFou{&)XE)In9^{)Ubq4#Cp z*J=gHY!V$UB^4~>fno3BcTf+O09RUonj{3Lo#hQ^ZIx3aX-Se0#r;n6*zAHE{ z<0SPn-0ezKkv+$ocmsmho+*o$yIrQaK5fY(D@i}Om4RtydqkFl;Qb!X{7lDxZ%miM z*T7a%o7mg#oh)Yl?oB0lp#|mU$e3&ryGpVNh$TgVtB#u_~|x zzYp)MU@NneyoIPOTIg~xwsL(&C&y$m7XsrVjg*`6F2UhTnvZt=bv(rFN7>-8F1e># zbMF##uFn0V9M@K%Abfqc1+LU9$+7VB`1pBJTb)gh@ln)NnO@T#s+uC66kt^}zlAWJ zO7Z$`a{`&GZ&+33o%Qb5A}6Zqe~#2O=%n4s0lr%wfI;*owg}L1M;D*JjoalL3j1hU z8G$p8A)fitm63)Yjkzsjy9#wxx)AHo-~tRE>2R&8hRn2z0{84d$@zhJ3&@k}m#N&_ z;Gu;S$RhhI+Z ztx@gaCTMe4!FRXEF4p!q+cF9*<4K5PRzYfnF`tuuisST z%4)I3JW?F#?~iKU8OoODA}ZMBxd#!p{J5ZzjZFDgE=qyfPEr#wKo+CqX}goe!B6yV z$x}1Ecl2!{ol}knQF-sODYZQKUk+=pl?HISI$Oir*>a4F_D)W>UCK{%DLxFSpkWetYU=~}tQK1K zVrq?MQAc)GINb4T-o}kdCG>SCR7~eWFT#bey%bZybwTRO+DSrSe2jLvDop%s4x)mu zo3pnp(uQ&L4s3K(GGWDO!7nIIk(#)B%gnsR@T}!T%-(a8_a%8Js%L-5%O@jJPr?sN z+w|kH*Wl(S6udxm(h?8{Z;ke;$N#18x zyeYdbRw&~PU|t8~CJw_+{eM`bFud$8J`^0VE~hx6B-3vFNvLP+|JJ(jL24iA6=KZV zC#i$IZ|$HvkP(Q0_df+QMu_?v|t1eKc5$$M=@rFzzxXnk+Bw58MqvjKE9X6HHUmq%Coi`f^?Bx56=BUW503$&-AJOVv|2zjxwo`mj)q zYirOP+SCg})4R=Xk^EP6UnhX~ljyw8g37`^Fgl|lm$<$Q*T83#TiI<~Sm(#TV;;64 zCmpAmap?7XwpeSdusNi!_5SutyQ#R27MHrj${=FDWe^U(6eYZKEiizS6tfwwf7R81 zE`^;=e<=$HeFHdoEN{!%#R86=Yp>s&Z1{6i3JN zQyj=M@>dTuW>61~O#0p2&z!rxEZ*18$~06GhGQhG-w{)NTa9DmTq@OW`=KeBzd?&0 z`rGt289;9Qff*#KFfUC#QlrV8>o$>^1lDuKrl}y6pU@_@g&4YybUJ%i-vW_AHU8DL z)XL{d={Y?Jw%Op)TZT7>(*x`Ml+nui0*jbRuH?XZpNzQAOI*^8W-7=tB4pyzo22}# z278scZgyh(lnqOPln{OfPj0Q|k{lTRO3SW0c)jcKw<3N`ILSFTYn-v|0AoNA1 zCTLpK>$XXK0}s57@a8talG2&$rRggXMv@&oCL!_o!DHx{>TW-jzx;3KW|nM+ZaV+> z%l?XDWeWv0wx<+^&&kkRP=oX%q4a?nd0O*-0O^!x#Jh4-uigp)G_A0-67s zw<@$oDaYB~x`@wB5HAodM6cLjvB@)E?onW+TcbF` z^eDtxoWlIqd0N?^N-K%5JQCY{LHoRAsMd5~xZQ*FsXOs;R>?zGf*n+mg*N(6)Mk!X|EO}sC5bYNQ+5mn3Df)&NiG7oJy;jEwstu934ngJ zuGFAc-=G?wnj@pf8;KP=ZT?Iz;HJV^?52=(SOi%5 zJg=$D!P^(W?Z=0`cH)=vX_UQUIin$>og<3IkH&xK7whyLv;?`Q)KRGp5D;!dAn;*p z&7BOJ1|%ozP_ZGAs*vz02OTxWAJvW-v3fkgD68_&cC08SpfL9KU7v1@Q{y{H93N z+q;E9vs~z{{4W#75aoR5hBV|B9=FkyPjPmBxa_*BceCWEfbV~rV^j7vT`6s!3*kA7 zwU`{u1Q<`pd_*`)v>5OKSIy13n0r&hsV)$JQ(mHkDIU~g<@kd1H#KDwIAZB~(r0-p zAd*;k_;fuGso>}BneIx^vT&r6LYLQ2fRE`y2ru0N`^{4SU6IW`` zDNHY=BNzp5KBIYc!jSklxLLVZf|reeDO`}TyR&Vi+-?IALnlrrnH^VCQIO64md-mu z1V(_ec(UCTL z3uLB5f^s&n+(=0~UiKAyzZ}k%1s7S$H(Ml6@X_S=qd3>Df(m(e~NA%s#iHG_eQ?UMc@^RXo+DBnn z1toJ8#{w}|C{IVcWLb3%jZ~QZ@PjbZ^9xjDZj+z|mK}s%(UPm*9VP2Sb>K|T+ zye^>8gYw(Hh@DhC=Ds5F-Y2lgrKCBDiQ*_W(6*F3zp2isU}REulcc$JoElTE6k{hT zRs5Jj!s`MH|29gr>npyz>Rq)}#p^jxny&{ZFFIRhB}alxlvQK-ZY zyX>HEVNEKx=p+Hl$7Bh(S1`Gbw-8sTFUPhQm9=~keEAnqsIN%^Jc)FE9Ns_cGuAcQZ}=FI{u5%(N-5XCGb-NyWs(zh>HD44NCF4uhw*o@G} zU2roJ=7B@0?V&(0KOz$BAaU-Uj> zEF5C4DBoJ9@1QK*E_p{ZGP_&>Vs~QnT;|0vxVPRfhkx5ZZn)n`-oBnSnBDx2H!zBL z!{Ytmv>vbsU2%C;BRq2P*N(sBRR}Yr$i!f6TUgadUJfHnuAj8(N4gLG+`GY`m?l`+ zJgiN*cYk|zHj56?B>^4bJGoCK05P3NjJ1RRu{XKsz%N|eWfmDsrSPH>=HSV>&Ne_F4uNbCdkf&kbt>&h*Hi5v855?HZNpQbrQ5g=d?*x4r596BY zdU~ivYft!%{M#Dg^4E6u0P$-nb42Mt5(l(x)G%UDQ;{kiSm2i%L5gHg{t$>d&aG<8 z%fUuwcpzZv9r*~K9H%w=tlQ-~VS_TWMg|tSZ=ZN&;e>Ig?$~7h(c}cUD6ia1I%1_unU1D#FB-!xy6>iLH?2OGzSWN}pgud%SqOQ%3fn2|c$lc` z5ay0A85kpB>VsC@An!?y&QY%n2AeGl*W%+T6S0%JpYRS}(dJjU;2 zqaOsGTVp32D(M6xAB;j^kj&wm?hx8@P@+)RfCsF|VXXqyYTdGQXwJZ&<3R!wGkuT8 zezr^1Sm$J#!L|LQ$TS=ky>0}CjWKd1cQ_Qwz41A?_TF#Yy z1xFsdUZJLWwca@d(*Ao_O>!^gdR4vBWy$(6E zVuExZZvW7iMnbJ(+QJaLC?`{b749piuT`=NGSzA4I<0GZ_p`C9k+G*O#h6}B-p+ug zB=il_Ph=5r_W*GLOhboUWLVq$&^)DFvYjEmbn;#5BwOqY6q44JNp6x~vNjNnskAIP z>*S=_AW&MZnmoff7*Y}5-2>@8NAV8Q)B!e4`P9bby}J%9dtVerZaZgMRpAA<4T+$N zk~s%>a+B1qT)ei@qOE$5pfCG0F~Te?UGoRpIPTSxcRWG8z_ZuJ_0q-`YxhFTDG&_A z6Mn{jKHau2i&a~tf_h(Ki&le2;xXlo;CjVNQtRR^XsD6bx8xFjECe*eX2Kc~5$Pq- z;+ndnnPa$r2Y8nl?Cv7iH z7lU9|$4J~pI+%x)NynTz0EFOChPfsClG^$A5xDjqf?*oB4-C1%_Njt2C_tJXE$UCF zo9g6%LFWMQnF>-qk{xV6#lA3oT)5B&e$Jc803KA-XfI7@dM0k5ml>x= zDd_a2J+n_&VA`=1x5C0?kN6gVQaDZ{$Nug}|9IOfbKB{saR%1P;KWb-d z!zo!$BZs3J{|NmivOZI!*I3Jg-f!a(Wl5YO5W)WQr3nmlKfB*v_&QFYrjy5s&+d%WynlQMAVwe^7xIHAf1&-9(LF7OQ>s72uP0em z^8yBK7KCJ17hPtzF2svvb z;6ab$HaPwXlf><|c#K_QJWUj8kZk?^-S-lLiiXFe8ZY@UcImZ`Jg3FwakU3I;M~Z{ zlZ&b9_KRM0f%(B->!586r9z>?$CH3H-5lVmM5ThYm_j_r*%@2=Y;z}IY--8PlVf5FJ98S zrAg8>7!7I0^K)N43T8pKmXC0AmltP77G)LK-_12JnQ423C13{NqGV_SV&E79YmuwH z!smj7JjCHSSshH6_UU5UC+k03<3%-zTjd`U(_o2rYsbFOC9~5&g$UdM(AL{CR8amE+^5jfYLlB*%0GO8=)Zs{6{M7969k^q+@9y}r;hFhM z3|J*j?w)6j|1Hf9OpDM^3B6u9K^Ri4N{yk1OH>tK7gt|$ZJS)G#pTxKrB>ir zLb34v1%7)`(_KUk(&_EHl!Vd=D!HJ~s+J9w+kY0GE2HBgF#K--lflt@m@<(P(!QknxxjXbl+&hlnv0uDSD25e_MQrV`C*Q1 z#3TSyxF9_iDI-~ONsxYq^3caU&0ayQ?#T?GRN+Zt+suX6DJ1vK&k$wnNmsL zc`YxM&KTB`h#DC5*SoT0g~(yNJ0l>>1abEuMHsI)(ZfH@`KA~+;Mv~?r(>;B!W!4? zWu4Nmu}Y!0gb~Ce>!WGd;fY;{=wUP7VHU?g}|_j;C}|Cw^W8YbN%qX}+H?4SWfPuHx=Z z;P1|2422(gYMdImdB{TA1M9PN-Z_07CWBWsC*EGirj=S#l`LxR|Bezng#!d_g1>L> zNuD+UOKx_Rl?06W^CFi;ie<5-TV{J}U!f zL}`jVDQy`;%H{gm02NKeD2oE8=6Z|Yd7~RyyZgVngq`=j8{+#52d5A$a(j-cZQ@1H zry}?Q^135)y+f816{R?8LwD$>X=Uj1IT+d(%gU-HmG(0nInBH1$#mj$gY;2|hedK& z&g?}a=u{QufxoQ&-mdI;1ALP=QKfPkLstB^rP9S|%at-hVavonz@n1i>!(mdX`;;c;Q60IFNSgC6230cVEC*5~#$DMA zqr9GV3;b%-9Jc?Nb{zpXQ?Vx*6G4b-snz45f%gL!7}6`9U7ewCNgQQ+xVL#du-{Jm zFM`vUjZ`;2oJsLepci>*StFOh?a-v4pfpzRHsx1*=20&HZ(5F>gK&5&0iv9vE6u$3 z)(h1rcysF4zoZHlEaHZU#@T{bf!hS^EjUNWw{gaT-Ck)eucxesA<5IdrD>g^^K)wS zx2B(N{jprW3p4qVRmobil=q8D({B1$Qhk2imBc!(p%%}2^5)%^Sh4!JfpMUDMEBv| zo-!8L``UfDxlN9a!ySUetrG0ADb%?u6%iKX#4X!|Z|#l6wna;UdGxb!?+Xc%$5fOwbR)FwE*L8DaZ|k7UcljGX@- zgK3%wA%C;$`bAT053A8L__Yg6jAcjfSa12*f_B8ENWAV;X#38f#dn#hx#?^d9>`{hjS~T}n|Ft1MO_d~t z@oy@qhl)k7Pe$Iw41=Bmtr$@g+#Z~_$6oH;gzibEd(6ZUz*->4w1B1U-yk}vxwVx| zR8k=U9bqd{vw1l9;(`_7{NZ3^La{|&xTPRNJ?W5BxK>vOvbizsk4N8|G<9xlyy5Jv zD>NrzDi7MiRg)Z$Z<5-N{Kx9H1z|Owa-*aDVsGs-z6zD0B#sZ@w?_qN@+{Nkpn+hJJ6{{2XFCn%? zPNm`3?dW}A;0TSMK8$|H^87|J;AF|7Fe8?WV{q?7K=u#Cs3c(iUsE#^OCD_7W>Z7Q zF%5q$`gPsB%}z)y%$-h0TTKl|Qiwgo*^S=4;H;#t_^h@LbWq~4#0a*<9m3d~ET-c9rMiEq1_nr~I!fA1<`O;4Tl4<9BxZT8~F-d*+7Tl`mfv9L=AEZ8WKiNd2Tgn`XD7kUez_7 zya@iA1U{%;vC{4QhxZ)8Fb7|os9hfjZvvOU)#NUHWQz{GJJUw>6`kNp2b{b&~>*qUaE9oSuY!HS+a>h|<)lU?Pmc7Z2%7fJq z!|3=woGT>|@b8tBOa+kO`LsUDfdJWynXkd>P13@dEW7zOos z;}4{I?JRf{fch5%QBFfN1wt7lp>Yob`5DwHB^^$hbk>_BZZ>52)AlYu5gxy4u4wSOY{HBSn0E^i;un2PA`-w-hStvuKX;E3SYt|Odqyp&s##r~_STKpgvdUnY| zbiKjjI04vW{cNO`PnB`ufKq}grQSV(L8%of$pY^G5Ti#0Vi%TDGy&27AiBuD1eQeP zXvs^*^#Q#gd?M}ux13wDa9RsOH>jD9c=4MGI%pY=AFHr~LR~}3&l7BMHlmEqHIRyk zGo z3%gy&9u^Ly?{{rmzYxZ?1YFOB!W^B9sN6y3DZ3wDx7o$uiRbAP#=c?fyghi$tgdX(@S)*js!cTX}oyw&GpwHYcY#l>#_;#PQWb9eF3oS*Ck;Xo&ZxhNh~G&A`a#>L}Vfc1OBEuk(|w! zO|C7wb&8RjUt^r5-mFYa-~!L!?}CD;3kobFl_=x>Ai(edUcld< z;O0PNcWQgbzG+M0mF6GEPJu|EefowxM789s6L<#0xMgcoiqKF_%(A8ST*tAs3 zd|gVp()%(6^uQx3BR{sK4cqk*fIqpdqhp_>3m~2Vca)>fm2;R5^b_FDIE2mo^Zs0iX*5AM{= z=_09Mk8_Y9-`dgun|z&AS8kH}mOR<(*o$PJLqDN>?WboX(D}!{J=33Y>4XI8;b&a6 zex+1ySS8i#m#UvJUDfKU)<|FrnHQjFT%Zr1jB{Svk zI&kGWfQW{oVmW#8FA-}?&1;IRSkGVOt4a5xZDV;)rzNh5OF991HVU(@5fF?lwOY{( z#Tug|9{aisg0oTwKXA@IW8sSy_1Ylb0o>` ze)MlYalN$Q0qnjzvgU)?QnPubG}o@j z^n#ZGW;t(ZvtUvQwoM0k>^)3&KanxR`H*bhg4I%2*8~l$$gLLx&zP{VROIrAi5R!B zr=~e+6%;_nev-^H$g@s21#Klxl=(WMiJD?OjT<+3DRU3>o);S9AArL+UWT-*V=0H? z>KSuf8YvBPO5hWo-q&eW^y4U_Y*He?777V|0mcZ%q|=xc%=ia!vogFW~r)az*;AH zQd&|Vl}K}IXlRytm~I+j!lAi_W*zJRcR|n1oNOo#I6w37>AyVxDMkW2^SLPJcX#>S zSFXL1mzR$;V}2_D=QQl`eBjzpUj_Shl?>kFXgU0hOYz{p=RZ5g!#9wEY3|$cXs=zq zP!`X5R#ts5Q|dP@!$fIT4X22=uob0h!_0&$n)5jhTCW2@;))B-?Wz@a(PnriEL*Sw z_R|*lvKKfL41C!2;TA3s)UceEO^kHlM{rD(F%7P)V>y2SjtcCEwT;%fawSsmOsR8? z*~0OP+WN739&QXC(0v<@k$j`Jo|fYX<8d*`I1Uam&})Xhl05t{fxxl&Vpq`NFF{L# zF6iYzO!=__Wr}L#g*^WVbTltd6S%DMXZa4u^xd% z$_goxXbI@GnO16{)@fIy@QqaQ_dJ7)bm$;tF^{L~7RMHUSi^Oe%{ma!rhH>%z58O-H!R7)g77b|7+mh$H#!0(vrC| zWZ63}%G&wUC9|~#T1uhpG`JLC3_oLd8)RnX=;mG`fp!xBPeFpylbf6J^hC(O?QFBu z$-32RW%;U2cv8=g{rY8lF_9y!oEkKNP&aT1d2$Tp;7y2%@|?ZwPh%u~VAgG+&eMU` z{ke;gCjxN-#2s(#h4=Iz0WJSLQ)k=v`FJ_f3R1zhe zNWt1cwi7W5$ukD*ZdFGffdJS6EXjZyL6BUrk3d?QY8cu8>I8HK9VY6vC)T6DeRfZ) zl}ofwnjo-~hX!fwlO|BI7iF|p*GRh zgS^&xP*;AwJdB0F<7ix8QUAWLz#CcZ0|SZrb7?JLwF{bva@wU<=z1+oLDunV2;Ef? zoLNiw$8iV@&xo#beJrd7zX@l)<3F z95WjE6f#Pn#o>p17?f+YZ)g_Ev0o}n?GrsB!#f7Oy94O*fqNc4*;kO8C8LH6mZ4=s z)QpmuiSrZuGI6nLZpx54JZ!D3t%O~^7I%txMue>n<`ue1Qi0)HnU%N$*jSmTZkB^e zn*s99ZXcPAcz*kV(Keq6fX~6m%Li4+vNs-*nMH%-;1kYwJ7m9ImVkkKmqpg~2J{Gc zW9n_P@|~w8Kc`uS3>gGa&x0M@0Xipj6SSokyt>Va!3U)+a6xmL4Zy^sy90Mj_Xw~F z6qq1wO|odoDz%Fi7vW>cct95Uuw(MjR_{QQbBTbf7~v*4GMryp7Shaw5T%uZkPz{T z8Yyj}-hmqnQKrm89mng^j>gr;HT94txCfxudkH0VeUq=sLidII*p-X5+!e%%J&l$) z+Ni`Q6ehz}6fz~0yDAUn;IH;?EhnfmkOou$MVIGqXcs`4bgrB!cY#0~WuBmST{|v; zhvpRF-AFs`^<>VUz#Sm(Fb%;13q5Blo6XY>gXd*!;dvU2?zse}!kKu>_L z!<(>GHH9*4rxHEC!*c+RSrrW@47JZ^WWiLE+X`Rt7J2W*e@Jop5ZP<;@nQEY?t%mi z+`AyG?vO5@|F*pHpDU%Uc7>FemBT}zOto|e=$I?eaGGE*=SvXWoaRIAhqg&~`$}*R zkip5IzUi2d1n_L!QuD33HR~#+0QOE!OqTIhTW#g4rDGCd5(luPwiegkHBSOgG9L$8 z?bkJq>Xc4LI}5epOpfXzU4~_w?kU{C&*!UtVxfqUIIE+(*@_qmD5KHjCJYoQvbXj))}; zp+%raQB>s;(M5r@+MgR)AX6@$O(>({?zDf$k31McJ=ug!HF%y|Xw-&thMH4+X%EUf&)g)%`62~_hrs*-qhdz3YUxeQZh<8(v_x=khL;N$TyowB z@F0K&PYp+JVVzp1CqE~lb8Ccs6y64WF=^%MjjGMl`+&FA1a)@-@Sx}?4kCqF&QQWo z1g<`7mmh-wm4WWax|a%tDj7rF|iCqU|0QZ4|A3xcZ+3<>zko2>#L z#Ox{zT+0>vT)C35-ce~P-49(86+1zvcS~d%Atb;^tCg{K6+wSEK5VCq-LLCInIIWr zmd4YLD)EcDs5*s@A~h;eOcDk+2A59kr;<2e_k`r+#_wgtJnB@OIXI~^aB{*8tLM1ffIO=x?@Tmd9LiPe$j0qY zBKEBH8sK_&CFJev(nSDh@+Fp2W9L|i+3Y6VIVq5`faprJREA8%8EXYAW5KtH=vfuY zQq!?!alQ_jwKCq)9fw#O-@T3qKbpmlw!sfCKVgJq$#QqS1W+SS`#bOIcpg!CXaFcL zTC-Tn3x@)5u}UQF2w@z@`NVSy0FOi~gx1;$#i9+$2DJOU+;?h!CziN)meBz&S_^Drx z?WiTUCIJKYtx2eh^#p|30QQB`Z^uGRgP?7|UpFHcfZe8m-T*M?+R%JCgaBX97^~*d zKfNBBJ8xaQHtS@q{Vg)e{imOUTD%U_S2+V1v z;}hzXX+$4ml#*1*vOPf^bxzXm*OB_tb~LPYb%}O~vQQT{IZ>u2(QrLkLMSj zHLwlRbcdurWiwAWC?i==X7ccsY9351*}LSxH8)SD&v_jeiWMHwFHM->&`aXN6< zC5Lf-t4R(#2=Jw)C9-h#!?MTzAC+OFY?%Tc>&^rN_s&SE3pB4z{g-O&6@x4AUAEGd zQ^_#+qm!6Q2KWNd>Fck4K{)@I=F$Va72pHfHfZr#nT7a}2c84vv`N9FJbC{0+48~a zB~p!-qgJf0gzX;d&rmsmjXwtf&m{^}dq+&|oy!pO#i!ib4N#i?E+<~}3msQ?L^jac z7`XS)5$D8tQwlOY>^@9N%&lRXc%$ZWoG3azTFBttd$$TNl$EKEAa;ZIEz zZUS>+GN78j`o~oIK%)4TLX|*^lnUQTN@?0`5-CBFV+tXWa^qmRFH5Ro2Al4)Z|in2 z!7WbjNutQvVxp`|a2#<^W@%ueJMOwfX$&e|Q>ApYTBnDSd3Q_$QJh<9U7+bq9C1!& z==U8X@a0P9hv3>^ACZWLhqSKZh(c8q(2(aD-4xeVu9g}seNl)Pi?V4pp{zZit0343 z?l7Ux1CYTHN(pW2d^lT_T>x4h*(^EcfJ3F_^)^|!atU6Ns)2V6mnMKI2j_Gi*Py|c z1J~dd06kycql<7>cC!@WV;5@{%#g)%XUo`$2X{s+1D?jfy@yVLMQ_iLIZyqcRFoG% z6QL=FYjw~RL-UH$)@$qF76yP4+$aFZ&6EQNkA}tobzS;`z{q z!vxIxi>*>Ae}EOp<1G@hNx3Y9Zar~IHmTqCb#D0aei9>#rF3Aid@LES;?ULj1cu>d zEY`DJ>+loOjA>)%Tcp)B@W|SNWm7Z7OfZM45bp>ZD&$(5q~EP3sz zn`QK#2dEi`eOu^Q0tW6K%cj#co7bWVl5AzFr zf^j>#8D0ZxHq_{eO}jeZ*y9T#6?kc5^w6DU)bL?46tC))7M9_mR3W?&@K6@oJ2fIa zw^FQ{@xgpdq88ku^7fU$&WDb)gZg3XB;`bP8yj)5#;OyU_@0u;2Leiz(@c~LBwL9C zeM%g%9kh1Uo=C?N8pLCyqqz2udbE3nghzvgoN!vwRjs!mp7y^gi;`=tqn^Q^qE zT*mFPn~WPVN`?W{i|`^+0WK2yFbXq7ClZFmTVB2}L$8As>zCle004ZTIRRX?cFs&p zPY39lWB~#vu8TS2SkJOVxmL!09CfU~CoxzJ9o4ha^_A$s_k;p=t7A*z5hz_-KP;tn zKgu%vXv@z1kZ%a_bSMik2SspVo@r(S0J|br7t-86Ur$+vG#et#yaq-pXX>pCfH<5N z(LQ;4MOa7Rd4;j~LPW~Zv-P<|Wm1Y`V2FramcPDAN9n8G=v|e%f$9N59`)`V!g)o- z0UPb%n`_qVxmT87qU`8Vqr1eD4}G?BwM)bqEsz50ls{zI0z}WC+a%};3kx8L78yTc zjI0^AL0)=$wrsAd)#VPjU|B&v7Zr0$4Yy*AB|fO-o7*(cWM? zC3xE!ur9650C`Z+`vyiDH9_t_cA_j^y+W3(T_)=`R?Fb>LMbl9s+3Te=uS+B0zRPS zU8%0Q1d!)yksFu2C2LnMl_5Ltc%SK`r1~lZwW6>3>sS3$Zd@zxzHqygz*Q>?fK2~i z)!N~sPK{nYWB~9q$IuIA1>Pbhus6ZJo&y)L$$Rc6$Ke6fZo_twp`{fv7$4IuzzTUe z&{A^oP$`F|7(P_O##u)Xgt`X2HMn63>iNJ4lMm$z@R&kja_UqK8O~Y+X5%3_o1BZ& zCDLiY1kDtn6GTXPId-SssFGmdJ|d~Ng%95zL`&Z-ho#Xv$|b?Y{4%&63W}>wJ@q_*U}Y){{8-Ws`wBR z6mBnA$McMLh}7O!Z(f0QWbiFifHucMVCQ?Q*#P+*od4N4S82j=5Bd3Ul^!#U;TYgI zF85oMUx0OM2FXF=_rY_d94t>zFPpFmWj)uB$DDB=*`~=7gH-LEKJf0#PSR8<@6LFv zgMGB(AOQpSAc-!9f}GaQr33V(Bz1LkTKhUYI9&^1=Y!LH zfcGJL?a%jRWQlap-=T|C%Ain z*9poW(z?jS+%L{p{3uPxvrNlb5DOk3wgwZ47NCR*8`uS)vvRpY8;kIK_b@bzWOp@R+HVRh!r7 zb0WS$oe6+v9iSKIXV?Jb1bKow>!9^3$Sdg6J+8eP(b{286K44{8lYy(b~nTMNyk_bUFte&|qHz9K|lg#DNSkxu*tK=KE!3EXj=4`!XsK?oP2yecl`K zrnRmSLuUY-`M5^;-6kEtn7~d@S49P&jPsf=D20tn8x-JU(u3d?w$HBPRavQo?Y*iN z^M+;_Z2U%nTZaZ?(+dahR`CH4ygyRCezB}wv52F#(18Sa7Fp<`1gK5C`P`jY;Sn!w zKntNchG#ZStgX6q0PO8JIqPU^hc7!#F?^WH>Av6Y6J)<}drNsynUoY4!mpPT0Lyh? zbCUllFzM>+m4@8eBJ~QFD(|%(e9!UCjD3Xafn!b*;uM2XFTJ8yGWZNlgGa8kR6 zTby)m-gBPoB*ehAEM*5cPdf@p6W?cClvLAEbCd_}j9oftq?%VP)zxv5MqK^iok;>< z<$;nr;J^fJNTXa`d!O~axO$}s6-u4{C+atSwJ&x3F++K3;CPr;ZQ2z%#hdlPgn}4_ z+&>;?1$5Y?Tk!C^6)PsTV7>jY$|uhc+N;~J=@*GKPXKe90wvBPcLAWhoY2TS2+!>c z$D~7WgYv(wE@Top9$*r`AnZ#$_9p!7%{l6W)#ZvFfd>Cl7aDWW1@^2JX{K) zsZd*??UA=lnfQREP6Xx%=$t`1nOvH4GZSx$)YR9=`f8YD@V1~c$+!UrtZP4fKO@^$ zV6K2EfWhG-XE|uu5ei(+m-)8LF(f!TE!CA0>jI>cB2WXQSPs7Air#$8{UI4zA?Ah( zZRW;ie>IuBjXnk=6W9)N_yx2Aolohg0ljfMQDVSmJ2)FQ9vW%bHLy7J;c{9xn=@@J8^sz)L1N00|f~-b4ea0OXE3{6DLYeNH z=i@4rE}6zxXlH>a5xd?Kd8V8g-8n;WU5&R@Ya45E_lb{d&?Ogd*YS;19&esUO3wr8 zAGWiYo@DAi$~T`h--?%&xU@!&>@sA83@IyB?0LmoBas z!_^+g3>hi=?zSg1cD{v&4-u%wPak%i?8Gm|xaH)Gpfb)m!N5tzAFj*6SG60P>hR)H zA@ZC&Y(qk(T$`vYFbFaEqz&u=t&<~9=?9@X*AJ5xtz)Au2gr$ z9Va%i+hy#s4aR^8rV$1K7Lw2%bfA=td0Xy3h=&d^`ZrrwNkQ&p`WCm?cxB8+i0uC#FN@LSE)L!IQdZJn-TxS{pjEs6} z38T=e<%&vkS>Pfr5>cvT(yvfVN;q6-%Yrl>QBV7LhmoDb>Ii-D-X*$)w>2j^Te>KL z^H`+Y0{e*TVcVwU=+)Aym)VTDctN20>^DYzK`VWz*lzTLt^`9)3raAXor6KW7K}{l zktL6Q(y{P^CUgOCA$FdA0muP$`L*eou+{;(MtYk7-_K!07BC0YdD)F~89V}(dS;_M zp_Q6oo?dk{cf$n&*e(}*iU5w`0?;*Kr=$j;!*`KkDOr4F$yKpTC%mTAEDPu4jPS^a z=RxZmnsQv2N+T(LG9l}*otp;gil+C3mYdBHE00{lX zk_tvNkt~H3Y$=CVS~6)_>Hs*rVyU+Y&^6Pnw_a!zpjW=y@Vu;^x@|LO&#>g%I(tjwOs--?)rGpDE3u`^D0?j{rm1uma86Gu4_&C zvc65aytJVBs>fG{`pV(%=$DUcL@fG7Iz1uAQCx{5-sb#TsS>Oec2Z7|2deYfKC90QZ$}ncjkz(&|ynJr3dDHdNHj}?=f_C zv)nb`>8Zbfu}LB$&M~Y-57mF&)pY~j`WQ<(q;{j7%{6U0w=|jN^a1LHxoLs^qGrG} z%_Z4!@#Gy*2~2)D7j!g)(&%*~L~h;rJSu?_^-}dPiR=>n6 z;FXNGbspU*S5OU=E7LR7XKZ-H^TU{t1KhhbcfWsVMAJO|X+hJE?5JvBm%MS5q)qm$ zvDL0HYv_8@yO(Bps7m2Au$gaXr3|0FThhxI zOv9Wza@r43yLIcyi%I~PKdj+Fuef})1}}!Xe8o{XTVw)+>4oXEx)Jm3dop&rM6{{y zN&_Xm#NDzYS=j(=e*~Jl2bamVA@u-BKnZKsU?PEFf$Pun=9*&R!5K6@I&v(M1C$Zu zPG^4IpmJ0OX8?~NX`a$imM^EuBO7a-skZIycwr~LYb(A0c)g^y$sv&4)CH*vK-afJ zherONK92#sE@$7mr*4geN)#fVKr58XQP-6N>`(#s$@V;XG^5 z#B^Qg4P#+-Vd4kr<^QkBw!r;mo^A&01!%i%Q|@ zVMR-_^ArIb0CmR&st^$bf$pS{v!yT!=4}!LI9=U?vQo9hvHB59IN4u^2ZaJZ-N9@N z`~V}Ss=O>v7e3~anJaB?Tel^)C17vgVycQm?RuFUmbxy29a?UxG{ByHMYuTVnXP>B zCUC%#qaSQFYkrB##czNrbZj9jwVm6hnzL2zIKZob0TM7r_5m&iZ%@ex;ME_dUHHE3 znk>t9?GH4tPj4A(o%Vn%^)^|bd?$BPd3-uCR?~>K&t+~yax51TH|>TqQ|brK-O~?} z!cyJP(I(#MZ%5ZaI(YP+G^&+XbJLS)YK-N88XvlV@Txy9&LbOkg^P2VBP7-m9Mn%O zY0pUH=Tf4D9|m#UV@fYI={pD` z`Y6Y>$#H=@1``*0p6~mb}$>-{sLt%M}TF5O&3VetGDzl%kM2L1OjHo zHHYfzlS^1#mj5JZm2UhEr9>T4!=!;W}i)m4F$xJV7=uJeygn)A00B&pFvQ@ui zzhQp)x$N@eZ4@8wN z(eSbn5BK18T@O3~^#g~Gq>+6`QkSL?kdv+Y)c~WIpNEzx3g~^YP$R_Mjsgw9G7DzQ z;8*%0pK->;(&J@={&l2H#hKcHhkb`nrjh-J)9mD}Gx&$H z^hKLC>2JexkZkjq{ahpx;n_9(BNlvDGb^27YRY}g^$Y1n={P@}GgXtLbJ2#!n^M|6 zHPf4hBu{t?89JyRYUq#p99-<6A;&4VOdV_e)FsdY_qsIh5T2d5mX`FP;DLQ%sT$lh zz)&s(gEaF3~QK%tl}unqAn~b zdQm(NXKPxt9mPZW&|Ol!vc&cu<-^(`h2O0ipKZG(5Ub0CFr1 zjvP!Kdf3HQ3n((n{s68mUCe@(Jn?IQQm}H6K}J~Sx_jyG(FI~;I~`=IL+hlMmb5j4 zfPPVczq+=Z+BTN7aT@cfo#LT4EHY2g$ZD2V9B=W)>KdN9a%=CY9oh)24jzy*;AlAo zH}U#EN%R+9kpmzF@B+s8%%O8p1@V!ofLre^a3|KL2c!EA9+cIr@778d!hBuKbTGTIF`~(clTbBYOv{)p?%QUBmj8rl<6j zAmpWz(8NVYqd$?7!wp_2>N^sh3Z`fJy7bLeF;9syLS0p92KGW+6_E{l&~W(Mt+|bs z7ZPZJ`^y{&lQ*tNc{P>L9-j*{FysM;CIJEff|Xsj?E_lReq{8Zr*Zg-3{x=-&H#5n zRE`144~oBo4^sGB*J^|rSx37-Q{{Ko*+C+73oDv7Do0o~#S8Pg&JsvSwFK|XAIl2U zgT4NdBf9-Rm4-&No?oB+;{n&YfP$$Bzg&YgYX$%{C5#LQ-Qm=27uLP062rX!Ce52EZ|G9FCGu41A1Sft9RHJHQqYj z)OY~EZJkRVUdE^~z;&S+)VXMgem=6O#27M@P_iTB^GqKU=HVo(gtjzY#`xKy-=bk~ zmle;-A|B>rsdwm{9XoY@8XY~7Ze4#SP0O11OH za^>K4PTT*kGF{~hqdJbGP_0}f=AMcTrqIN-k{KJ3OaD6bz5_2sF+QR`lII*#C?6#( zpFjFo&TDC><%a}X;Qlg4!tCT#4NB&U1xy-A>-0nvNP( zzdLpD=DC4huu;E}7l5uSpG2aIgya(9k(|`JA2Ny-e8Pl6;nQa2A{-nA|BNl-fS?~d zs?*eEw3!MQGGrh+fPE(F++KYX;MBllsc+;;8oTmB+Ry{fPV*2n-5SK*f?_0;#z~f= zEtexqU8fNyH#^l~JhPeIvZmKIH}^?AD&X?)n;ikSR}vyl5++U=^^66!TbqOB%6qRUup(}kbA;+ESjffl&$mdTzeo*UKxwBl)?F&F{tZ7G@uv=keFXI~K| zXk#!v`R^O@?V@j`t*|Jo1}b#q7~r7{CR<^&l?Xgg0IP_HOEzZEouW1lLx41sft2Z! zKpJfo=eQ&A7s|jZ;{XWzo3IRT-+`0q(5ZX9+Jkl48=77Mm^?j1{{TLLnyoZ}y{%I< z3ZHH*4H+2RWqD(%VF9x|vO}vTy1Itb;bZzh_@TpTMwa}n-a=ei zU6Cx=g_AWI(FcR3tXrA&rdxnLE`&Qe4^tLMNP@btffq~%{|0wmz*)}9^M}L7PRUx= zhF0Q}C3n8V@ zmd~m#Xp$k;yrWU53R8-`&kr9vs|(Xmx_a?@X-V%$ur{7QE)c9{B20^B%`_Sz+HZE` zl_PQ}!}w?S#`)FxxUg|vI5m_Fiy^{}Gv@Pnposb#JgBt7j0KGZm*4^peZjr^;#Fx% z%BltKSuV|93*4LKaogC6EEEH}N_dD`83A|?a}72rjg*?DbBxU4{sDhg zsRK(yWn`l|JxVKB4b*5dZktQ<40{wL`5UZk&;%VTjgljm0HIJ47cSN9D<1+lc{$_= zSm6g*0JyZVM_;r*a^k);a_E@xZ-d)x?Q8{j^Blp}EC2=|Djpz~eR$A;i{Bh54O&iW zUosHvNMi*sTo{l^IX0Cp%N^YB5>T`HWs8TWoqcKFk+W%^9$e07nqgw%hAsIX?XRt=Z|SD<+Z6F)Pxtv zx$WSx)|P^MIoOe-nRSha+2vVH*~LYlKF0^MqfGf#(ddE`9LqhTW%%G%97#r;Q^tmw z6Xa`+klI3ra4Hr59-n|abM-B^TLLX`-z}3pQ&=q#O39!LWne%CXvbhJgOhQ|XT-Yo z={@g&mq7=@l-vpIRf7;<D01A65qcs3=MScKA^JP*#53qH3CG z)Pau5GKW1hdMuqh_fYEU9~8)mhQMu$12E?R+)>r5RMmaHni#`rWXLT z2Dq0r0~zfBZlzuG8O%c3=*?ox2!YpO};a ze6O1q(06Me{F7$~(}X^%JU({C>*%|>^pJZ?A12qT5&A^8JKZ)9i~$+oN*59RwgJ?n z==?C(%Y6AZ%lLHRW{$mEZ#4_TdryCGAgzWSTCNR{zL*J}8)@YCr>2c?!mzlKUX?0`8mNf18{Nu|7UlBGf zw*>`q0^qqAf!{dpcf^Txh-I%#M~42uA7@WxqN>l!i1xN=xxFRO0{6Y;vMbf|%OzC< z6srYI@XIr#=K)8M2Rv-e3)sYT0g9?apydIs!3&UyfWa+7LBez(A_o|(uCHn^E99dw zuo>W0lg`W9K}7{C9U`7xl$S#38?MJr->-Su^9H)|=4Dv|7+@AaRzMw%G7q8!ohC

    D{J$zl&E}PJ#Xn+DsBym`N?OZ6J0ROCeF=J8Iz`m(FBi)q@=*`mOr_N}(=YWB} zSnEX=;UfbY;wS;PRGm-9+~?@2%Mz4}-aD`(&UncA3OLLUMI&Olk>S+rdraA?bxHk* zKlPdZvdRVv*l!I3o*ljEo_k+wzNcQX70x z4B8kMF*bR)J-F{+G|>9pC4m;W?-I%030-WCB&*GiQ7MPT&LCy5dyr}XGB5%DF0FHC zO|}&brJ;fqM`?ulWw6Gmb&7DP=4gXCU>@!f;s?c*ZKH^0GD@NX^@@c)705v`)xOGO z6=~ifojCJQ0w4`~Qb=3pB3ghf6i6*uncQ+Tp`gJgQ+9vMG-crd?!whMD*Q!S27VQb zI5iZK=Mahu7-JzTryOnzJW@XMtoyWsV4pseeC^uhw5koPy3{u=rrX?wa88i9`s6+* zO&J)%Xi*fg) z36-K?c#YqDj+{lH+v@{$Y~Z^cnQ zC}bb{3U2!1tz3x7L*}f^LT@_twI&Rs*y@AQoH^th=ZAK<+Zq_!=e*X>ZV9x&eYZ^Z zOkpR#uu7UoE!KD}kJM1tAdOp9jaMm|6@_uDf$ITo#otYyyc*SrD1pJuoI4;(0bg2N zkU{RDF28^!8CltB0%h@SEEg7667cn;dor+ZiN6ZGq$ns&-I*u-(1&1%zGXV_19$Yt ze1sp3)~Q5!QcOlFZCOOb#X~TqPNr$vO5=hPy=H;Dl%7}WdBIA+ApW}tM$?INed*?< z=hDK|O#y=LmLMfQw*(B52JBHoZDF741uOw~I}b)R&(6a@-ncz}H)6u+002M$Nkl|n%Rnnv${smYnu7dSN3^6CWx?~@fx5_&hsF1tdpNCWfxy!2lnoQg(gqg@uiBw4 z{v=0_Z=GlF?im<@E|Kh=fUUtYHyp6a zuLmhsJ3t~Us6)!o$w1VfAG(!t8kpgVdJ`|(UH$3>O zW)z@0i_4gzK&jcY<>c9i{bJH4$_i+C87GY?%zs5tY5u2g03-_7C{u-_Qm&r!b2&9H z2N!b6B4`iZU^LUWpZQgWi@S;oXPV-Ri;<9*vtWKGv$ie^kCiRjFMmuRFgt!zW%S|` zYv9%2xGNIxqRV9>ZLiTu1N(+7_FkbEno54>s za+lmg!X*&t)H0{eaQ=>vtGK(!Bk0qH4})1PEre8+qi(pUOXH?NVxdWzc!+p##Tq4R+Fe|Uwt;G#oqU(0xk%H!xkp6<{DxArfJ`6yQ zUmmcsiiW<)j`IVdBQU8^`mHN$JP3 z!55&#Im~Go4^VI!yh3g7aFt)m*{6=Fm_Ot{nae7XSG$KY9a3++bN>X}&JoHEn2Q_rK@(I{# zk|!F&`;KZ(`2i&{Eg?mgl>}(<0L&;!90J8*I>BDdHr%)S((r0 zM7wxu8U|qCt=bJ8Bl?`%iBtD!RSXYLkq4Ius0z@ci~4O`QcwtLmM7b zI(qU2X`eg-XC&wCp}OB^V&6)nvZ#YMN|$ZC>AHUH86BJqGtKfqSX0SPgoCdWUxDYu8(zd>w|ZeOI)~ zgkY3z8$I@ZVTRvJkzthV$DydM6cpp-9lLSY;Ai5DdnQiU?%%XMk$;pF*; z1$uo_O1@)C+gP&7G+k}e3zxQ_s6lc-u_L)rQ&YHHT*8Mhhqg-lplR4b8z0A3CLH#slfrwHMOjtoEqU zMb^_S>QhIDK7n!gP&#zt9#6%v4^X>g!n74rRqhiFXWoo}lA|tlK9BB`=tN&Bh>Lzw zH{>RtBoP7B9rRC-bz07MDUpljvJ3!G-DyAz>p7-Oq7Z464o^M=vWvVDQz`21EUSv8 zEzT2nqujkbr_H~%*A~o($7^mIFlR}sK_B@j%(n;tdf}|gvs4ko2B5z=eKRc|UDoDs z1F4%ak)64wZMQEvW&$B7O%WR!x=1gstoV)W{yw%L-~ilXUnb3Ss!cX^WBUhf&bP9f zPCWQv1^lJ0mfw&-3)~yBxMOH=WK>`)mGIOI0LkEGUQys;aMw#Wwl=WfwTZ3Pr?af9 zD188hhq=bIz=+ne(q}IQx)dPLfw^JraUvQhPgJNpN1@Sl3r|&X6o#i8S!}@XQh?r*l&=wDcRaZaU9Bt{&gl!CZ_3?;%^n77nFFQ?6 zj%mlqS-pxsm=5d1DZ^SB!`rXy4a2fQ6<2>GF`Z9(8Gp3Elny`*7y)@^)4e3OICoE} z@K4=c1#&{k!*`F|&q77*tG*w|1MC9Ncu0>Nnh$D(tl+0cBnL}cQyJwsUh0}pZ6BM_<+_xYezs?4FEjWst0aXN`PHhDoX=!*9KDp_cg7d zW(e~U1(Z507M7hc==1Paq$pkR|Tdh&dlow=D7W^M$KV|*yj7aLsw zV>*oTVYwrjNK@Zbj_>_4N4_L$dTe$q9UVQ9dbM3MW24jK+|9w24B79laK zI)fjDj(EWvmO=97A8)$GEqau*m8Y_$P5}q%J56-E1ZKyiv~8NRjx<2SOq4{`+v%!)5RfY%7X5WYO(a~1 zKEfls2#}Z%bFbU`w7grOu0m^K(ibtsGMBsPg#741VJ!1oW1FC5Vn6>xq9gRvvcy-U z98pqnlje-j7yWYRZqHLN26n9GNH^G9Ag~%~t`bedWlj4vMiVF(pDL# zwR+~+rxygY+CxbhSn6ea;R@WvI8%DMjAA?ZF3H{2(B|%vae967M!N6VyryRQ(q<<* z!sUZ`^}<11P~2~G&fSxY814Q!KC6$7bhf3wo^EfI&7S#K?nskunb`^g%Y9Yz``v?w z(*A?T3(=OphXlBvZn>8sfnI$Nb@a$N53G1CJ>~#WTojQ#+q*PB$it=XE~aJH^yc28 zrV9O%ePDZ5I+PJbRz)jzG@nPmwE&AU`QsJX!(Q`?vgL!S)_47o#)qd%9>7gwqk2hc zVDx~(QZABEcgm@9fMobF6;SE}Dlg-ZA{WqUln?rD-tD;y4PbM>)G2op-vJm4m!k!E zN;14cGkDHn`r<^D%57EU6#!5;FHE`U+8P%h8|eY*Tm;HP;!+RaZA73c>@sdT+IJDk z=RfD?AKJ~GjHv|i!jwYrL^!~n;;B$#kZk9*!PACqf23m%0;XL%R*VmAbgJ zoc3wuSFbMGEq8kfgp_Ze-^!^;;IOvCU0!9|SFBaphO*ujuu}0bn-TZ7WpgtBo{0jf%*0bk$dVY|pPyj}05>VVqH+7qevS1bALeWF9P%0l%tO~3}5Uc3G5q&{P zA8im7D!HBb$@B{klpvg4BUDmE55-hvd??}jfVTh14;OhV1y7VU{V3nGy-PoU7)ri_w;jc)3W`{6LWEIxplA6j4a{2maj(=?&W^xTS~+QYP1> zYmIPXU5T z=VRwQSe=}oOgHCl=$i(EscTbrvwmAuP$PNB_OLv;Xn5@De64A1`!#(Ghdqw^djWRo zkXCoGQic=Ao${uvb`GXw+V!c%vk$(}?YDkzFM$@g-(EJmat<9kt;xj!-x|gq=P{>< zqVNzEOM|EUy*gO)KCRnK=FO$;sm&`6HBznMA}xh6_|*JpFqDoLI&SGB3)}^O?Ud!g zY6a>5fzm2~M+vo7u&aA09nyyySUEydYDIP9LIQnLS6MqLrbv{C{3>EVBEw)OzkoXQ z3}UQHWJzT-LeZ)WfJRHgxhgFeFg@C2NhTemI`m?ig!ZZ1;KTKtqBQ@zM^QwC_`{hm zN4R> z1O{?jkPKPZfgK+65d|nt$?UsQ?z7U!k_$h_ap^AyAD^W%zlMmI1$T%CW7F8AADVq7rSz9Ea9Wvxuf>_71a?JaaT_oC(9 zP691(znx_ENN2OE;e)5r%F=~2u&Gzp^>BxEw5_5&j88ZJqqwh;DtWIm* z{fGuMU#=HXm9^Dw#pZTbmLADj;SCZ>U>nuBCH5`n_E?G|C1U-&=hqc4AYZ@rMp^gk zJD+{JwFcOjim>t)?N&X&v~o%>?baZGM1x8c)o+Q5p23d{DKhjOhoFl^+yEvZWl@o{ zTs~R?D&ZMm_wqy0K@{Xdt6WT?X8whL9aUd)xWrwDGIkLVj!;F83sA|VhM1v!FW*!d zwTXj9z5NoddzEs~~qK?XsBJl3`veSK2gP;+0So zlgz3It1fPWnF6iE`Q*VW*8BCT8#Yb`wC26Mc*Hmc*SQPef}qi?XH%;xdsT+ef~RA! z+$Ddm}P<78Y01`TO3G&x6Rc+-)V$0{7dBW_Jbvd+LEF)AL_` zCXJ5h={>iKUdyh1r?n1}wX}FpBS(VW@P`CRu{CSup#1q0Yy!kVBzD9agFYxX1JYc`lnl&b)HvF>PP%#HV=0y58wv ztUE%EMFYm1!C1foYd7UP+(($~V*ZE?iCXi@fmDozCBLJiX_K-BI89dULpoaj!pH?E?079lW@-s=fOkc;u}#+Hx-;ffl&Ggn)Kt zpT7Um^z`Tdm0w%uR*}Jnbv`Ib?HL~yY!(U zMZ=2nlHz1uT-r!iCa!pS89=QfVYLJ5KBRE6;!7U$wP^E!!>3ZOKIDw@af=K90L%dZ z6$~g}1eJa#SD#;Yn8MJK0voKwZ1GJ8rB{A{yR6pSugFt+nR|u|D3=|5i%qH^phP^; zHh2+-)uz9kM#acy)3bK65$!n$kb`wnx&>e&WOF{s-=DYMb^g z4^^;F7x{}$1R19hbfUc+inK;@l;_v-4Iwl3Fc{ot-9;Qeel9IckNM(6o6Zvr`htW! zR&!hBITFSP=O06aPa(cIenl&1#?pYS@XifBTEhiFeCtBaIpIaJ@!1<`Ol4qru)ka2 zF5^hwA7)<}bcPi&>+37lp}G0Rbo{<2^?{kQaNlw-A%PaSzl4BxW}m+I!PGr;L{`M2 z2BOyT3gB5e!)WKBYD~=l?%ipoO)qummUBsO-VNztQM;B%q7UUErc}XySxY^bNtw|b zl{aRtdubU8+_2cO+_8>0P&5uKt8Go+^yr=?t>I8sM71psjSOIR+@Ai^2scJ_}r zJh%{gk5lEi7NFRXS3sWCFP_>EZG!;(sLY0*HLz^Wx8h=U)eoU#o`$-RF=?4{JQFAv z3h2XkagC5t93eMS=}rN?oLLw(c$n4PXR0)61}#`XHU>0E(iazmpD0h1e6szM`L_5R z4&L1##jAd(4puwO&(AHSfB4UTJ$?CG&qHNTx1qAX{l#ylZ$EoE{jdM?-$+lq=?&(G z!t^n^fnN_h*L;~j^B&|Q9^qWML{uI|bJQLY&MgMPX6h6#BL`)14;@I$Gq-dO1GJeh zkM-}wIhUMijcea6$(kpHJ52SxQ{cX$_dK4x`fNHja?~H*;C+x-t|^%bc~;h!v@ZTq znq63sLDZ23`g>BJ=GuE?xqC{+z%Hv@cLD4rGrzc&9)IG!mVw!B{oGLkEpWf1cy?#< z8vBX+pGdd<{Ih9zi0_Vu<<9;kJXGzG)zK@^@73HP19p6FJWXiT%K<4%Pd7@z@=4wP zigbmqAW2Qzu1{W<^}dq&b!*BX_mqs324Jra-PQu`US%N*XK4T7G&r)~^WaXC0((B5 zl@ZeP1_uS^7X4;o?iMaEJ`^Npi`05#>kephtiFr*j!w2kQ(g%<7JRAYlKK zI{>>HtK6lV)9GhF{ZG;_|H6Nro_JCKU%8Nz8#Ta}Ua9@~SIH{iTEST+5LbtYs2}By z&O?uy06so%0Q?0D0fxsy2$( z)*d?|auGno>JM2Bbd;$pcXM|dF=-S^RTMrVWIHvN%VBw97p?b{(Iw3x|I)Agdive3 zJe`*HJ=TVMG5tSZemcGO?6LImAAd)B!)xzL>v{g2GVs;zsVby_B?v?`J6c3el=VS8 z_s6~q@RQRi7m;S)Y5Zj8i-aXaHzC+5=M{(HZY{;z-hKWLAf(@_i_VI=$Rp`-ed3mzli36QTv-7RPE6LsoQ z&LuQ#i)*Y=W_16NbnEi7>X()ulE(RlcgjU!q+>GNjZ%a$i**mUvvn_X@6X+ME*%~^ zeGk7ebqpL%OIntNRl$?|Eltnhc#)}ByApb!%6dn~u1sA{ z3(Hg5T{plSyV7=yW;W&9g?k`VHO{LgF`pm;`PdwmZ?JZC84e*+K z$1>r85cBb@+2z5|O#$|G0X){d!9>(FdJJ z5mp>6#C#W}(IY4IVuu#e7X?(BvrD|@Q$7^=W%^lp>vf_X9`d%Qix*x@fBWzMN_zh4 zc$19wimYl%=AVD&3+Xez_Z9IkLs0$ZeSugqC}70$1y$rKfCpK`bNq^DVzvGdCXt*7 z@7=H9S$TW(XD7Wv$8>kLRk+FRnz8c31v(!*Z2z~P{jy)oAsd+&g;nqbNI2c2*1@p}En4U*nOUq2j^mV6x zEeGu%81^a|4Fu~GbL|*UGjsFl^h0k;=N@<+Ot#$1lt61*=4A?MXR*iM@fXswfBKt# z&AJ!sUF&t3Bkbtt_8MKRkp4bxHQTc!D@B9*#tZ4b6R%C9QfO{#Z5rufAbhJ7etu~| zt7I;FuCf8@fWprCcBM&~0IF^+GaJ<0DEG`#OKWK;xgo$xh&Ge3u;nOmqKb>& z%FA4s6dApjUtqPo#zBB%>e)~)5#F72!EpL3d>U-?J65v=!RV^w&Z~V`L zhD?(#xm)`2Urw;+!mj0dnL-Zd7D@xP?!k9Zi&+RRHWZ@>Kkf_dAp^TiL{XBc&vp^t z_|Eg`tKYql%Y?^;j6I5;eDcZk{`bE>ojrRtO-)UuuYBbz>2sg^T)KHPMbg zeS8(NA9;mbhMThVJE?84m5i@Gh&jd74?gOsDFAArTutRVV2QqVCq8} z`!u#@ZqN@+nu#W_2f#x-PYvn#j6g*5@jP4YfWFQXFFk9fL!|(hl40hGQPY zdMg8g!euQTTUedb!zDdP6`(g($~TD?|%84BvuaV6bF#i9o8IHD~{L9|K)FdK0R>u zL>k>U;`B0K4f$w?lI{fof>q3Yao0#}^pAAca9UJSFe>v~3zJ$LfET?gDbY(8R}%b0 z)sO-0#8S&rqEXKwS)PCRm2Wj!?STIN{rl6;{oK!`kAM8*>BPwsx(H}%Xj!s9{gIze zU-+Xhq)&hP)9E|k`Hn9Th2q!0`$GEa*Pl-Bd(Yd%quTR-?sFBVbmZkwsow0vZU*!! zgN`e`^q&A7WD@2eh&3`*9#17uk41A6j5pa(^) znwit!zC8Y%w*dy1Q8HE_0D>HRmhZW1&&f)U>5ek}Vhdi%RO03K8lXZ~2Xx!)uhl4q zC2s_CW(EKhkv=%9mPYz*4!5B`R7%`bPPgW|@Qja7rGNUXpXGUK<;oO80e0%+0JZ|` zrSP?h+4O6gwm=ljx5tKJfGh+BW4UhhGS|x8Bdz*t;;p$)MOOI8FIEvXWLfoJc}ype zAAU0(^J0E-y4Wc)jX+5V>vmjy`^q<;%S=cAq4Cj=el&gLBOmc}%(bi6(#4Ax)0Hb% zw3qs9dhD^s(x*Q4sWdt|TGb=Kg^=~}n;IXqDGuB?J}gDN5iYz|eN&+-&2^|mt)LTL zl!-ddR&qSt?$#LYLf{$y9YBMji=0B8 z7q6a?U#xc?tS;uaQ4giwG_ENbw)Y*@Td4zsvf8!D7>>JNTkU#~I;V%N1BdQSuYc3K zo!9#L!6eWE_a97NO{E89aXk3s2hz8G|DUBH&58Et>3+A4P60b_tnz>e>wU0)Q4f=_ zLbTWQ)WvjMUr542^pZI#HhX5gFm_Q7QrC1FtGZT-8mKE?0KQm8=pYx7zCNaT6hZO4 zeofCKCMPD-Z~fM9rCy%p2?`J(FO$e2;`#CwoiiYj7T|~9sNshEKM1-iQIqx{aW+BYHOW-auiU<=itug%$YMX47$Di&qVZdeS9YU=~Lg; z1>&r>kaqX0{+BZ5wXmVYig(VO`Ew_;cvX~iRn+pkh6=`sp4AuA) zA1}`7#}6jr!`g0Cz^?j|QJI=y+_EPUmV3Ka{#+h^A#Hc>)B6rv+HRmH4PmwGt!j({ zTkTB8*lJ%*ld{_1{jrZ(9-`iIKcEC!;Qj*&Y-jPufB47JpZ(FVdAGV=S>3G5?b7s2 zhrY^$H8P+tI1TjArarxLz9@hno6ub2@tL%*=df3YFonS?0`}Kn!=;#K2h8hp?o1bC zfR`Ttr*BkhnOb+RHdwL(OZmcf5{p*B%8&A-lAeFafkiq54+CxPbyV9N?A~PigxNDxC^rgk6xF~9E zH+?EJzV>I&q>uci4+>*>rU5sl7ny^?Bh5J+?KU`Ul=C?Sfaxs79gdRGPo+zyEZyZh ztNp{HGFEzYm$~Y0GZwwQ1a*-avKRCCbvPnC6a#k9o{4&S|c_!z;-~hWcd? zjOxXuVOY*{?TcFaxLjH7kG$zeV6o+1fdpFM{tARvud-iTkDhz%cKk*BqQL#A4S@~;eN@D%?*T3~W zSyc-z2|obP$&)A3hd%TneUMsvdFNFh1(*OY%02q%qv_3WezRAGlx8Mo7t?p2yPV$r zR(&-}bf{ytM*62bflM+2`c)gHEw@YCfR%iMx{6TO z7d5>}>pas73eL-P-GbVmUsy^vZcbKBlmOE)mo8munvyAP8r&r#;xjWd_Dj9ufAg6O zx;QSR5q%TZJt;r-GoQI|@KtK=_BpN1t7Y;4NnUzyyRYQ63Ke>wdhU;nIMYULS`5IDhUzZ=O4rwL8 zf*z>O>-GE@DgX6}3+c${QGGpK5q08!rX$L^+!i5VZ zDS#Tl%m*uJ&Ye4#KL7d8Hv!oH`4>-Yp zl!p-Ex@!Vr`qu3bw9 z4jeE|%n`|BX4e5?Qu3<*>4NnUzyyRY8^XyIz8~j zkEY9C|8*~a?9qeOZXI3PPlK&X2Q+6nsI7koWxdbLFUxYjk!Frhq(hx2;+vDRS3MlP<0A9t~6!wLJeQ@|Q zJu)H=Dd=-yp3y@4g_w&;#=xw^#CMyAJSxd+-|aE9DmSHuR+{W9i|C zAJDvex$MFSC5j)V;VRN2&qbWY#fgCGD^SjTW6i#@ly8fhE1Du+5~&Yubm)BwjYg*x z`j$N@0J~*T3oETYb{W$=OJe2NlBOpYHT`t(aF^?`b@sY}eNitpt)`okbLqW*<-cpq zwQ~wyg=>NPs}Nqj>brmZucrU~+h5SinI)|P=t*4~tW3@HXzsmVAdK}stljSz*wb1y za%1Mj)H^bmu1;P{Ya2^xSaavL+NC5`3Mm2#VWk0|P#)*0RVg6L#`r86kQ{UFO2k}p zIeP?sIE_mB=O=qaO3dM%KQ32G1mLEoXVaCjiCSs|r>Cbq?NF9M7QiI8fEWCajg3{{ zR;*(l7~Y(iNy8($SPASZ2Ln3jhkq;&f<-RKs7ztifnI3F#Qx9H> zX>eCQU@s58tF}s;<|i`-slp#YwZ{&S&~la;4}OU=HN#6xbyws>TgYxjTLaT3>A2E9 zfPV4Cn9FygC~oo6rl~T zhS|${7tg`3s?!Gpyuy-89HOJUQ{45NQ|a(weT+sIjde}ctgI~9YM-2%Nr%qADLwW> z?{T@-&nuTe3*2A1?3!xsKX@p;>HU8-{poN0FPeMr7qBnNdhav9W4$xCIJ7XA7Bn?8 zr;jv@PmQI6J;&4KiAx&b`VPJ4+KUoMg`^xsQFevZGH>$nQEq?8STCE{S+}XD7(e+y zA>+U1M-8XvAA?#+#xF`=tULg7Ldv(S3)D^rXtNRqkSeYK7k)`+U3cBlH!R(&x?sHK z{(GX$dI5){PYpQ~*t5|34mUq$@T^k!0ue@SJ<4S0d zsM4xD*PsZ6d?sDKTK0(y1imf$Qwh9ft~Pg!-98w6llBE;*W>crG%) zF9wSrtZMFkYGz4q=T68v@AX~W%JQPDc|Dh!T~8nR>wlwVwfjW8x}O%fzdHFf)qd=4 zA535S!+)baXQnkc`N*%VcRh$=?!8YhHL)^aaY^%vyquvIS1z?ZuPuSc^nym0Z&^|L zhLzJ$2o$5PC|F;ed;mcg4cV6l8PpEt3l}O))JJHWBcYU(io)?5wK5?`&~@i!5C8|b zv$!S@Ue-#Ex`S_~9e62+=^2A&E>M6ApQ)Hzw{Ce_1`s2Se&Ju0B^O*bDARs92$>(t zLb07PvFxzce{gU&po<4VJ982ZU{|=Q9r&SLvzR$kJY1wht2p|FD?Z^SdR5)#y9CN3 zpK=#OJ=}}eC%lbvyDseE)VBYdee%prVJ&m)bf?i*1=J2vKSzMooafpMCh}#qv%C?x z0_;i%>drtqiYc5l?TQJ0tX zqK4M_Ubt~laI)dG?FHD&RDvxXDM|y_Q5F;n$0zl)Kenc3v=x<b4)6<_r$&Z7qD2pC z%{oqkQ>zTRlp}Q1VLDAg`6|t?g+MV!N`U@T1v%-0r@KQx)1g>oIG;Y|fO4X4$cnpn_&{|hcRqnExGHu}_od(L3JGd%+k_iFAP>wQ=Nznb5^W8ZG}yskD0t0{r?$A(f-vYIa-Vy?0SP)8$C z94l7n8SJ2D{NnppfhOPi&Ws-^X{nR7+)4}vl-qZ7p9g!z72qgV=F6RSr~{V4K?KLO zf?`t_05;v)+rhniU@)N1mJ$8R;aY-&&}sCEat+F0QstoGekz4B&=a8fk383l_MDe1 zHt3NT`AuY%R)D$yd-2PK2U5s@IC8`lxe_j*Pk7N=Ot0%sus`|*Z^3ZIW65anMoqaY zfl73?)U9(IMfoLFu+k{;&Lc8P9hTG0EsN@^1H!7+S{lw7*{lx<3AYA%gmjh|! z%)&c)4%`NUp4-TTg^AO65!s#s|SUcCfb zmiw!h;VudfzW$Brz9)V>UH#_2_ntFM&vY`4BI}(UBZu@kyp_xPvb;t+gFHYm20eIf zozYLTvgCBNhLW{)aGQ*RU_}Ma!$_rQE=Njs&_&IlOH%%^mx~n0!>|J&p&JFmsy8s! zCY1p&+AAPdKr8wq9_dJSSfIr+1;mOgRyM@vyi|}l+|`=R@==Nt89Sxc4&VIKZ_4KWx-8*Ri9TX~YdNU=HEn0T zp*ODu^;-4r#}Zz@4i_#59U4S_N(pm6lE^2|fA|<9`M|K5)zaX#t-kcpzxj83k=wy- zEBY!V&=@(df=H|CZV9~a!=Fg&U5C=FJ~XhLt@pLnMeiDk3QbKhC6ldo4fdkw9{ebQ z6#}}1(GU6l(QTl=jaIHpebcDQxbYwt@GRR5 zzVgLBr&m8L8S=US_>8Va9v4@(D-30A}P-Kpwxy0l#js6E5-k1%Pmo5p?VF zC$5&NBlzJwH`1%RK5zBD#09(22}T#x^y~WM>+VCxx<9f}wjRKch%!+l>Xf>XWdcEs zqI(=nMRw_hrsZXQD|r8zbnk_-tm*4OgD7fxx^AU1N^)! zAT0r#xTPr@y~QeUZ-Dt;N)U>Qf?8eB63&=>EGpSh`Xx+S99Cw^Q3fDbOR912hJ;kB=TyMP?|a1@ZQ%cOvL z-6#Kc08cYa-SL_C?hDE(y&61Xw z_M@a+rc==)p3|JIjFRW}l}WtFgmKSY_s4gWYKxX7@aA{^ zXnOXWUrJ*azNk0zvFfnTeN++<8=B?|kKA_zi zBaK8U1MnL~e9p9^ehUd7V2gWWGv;IzR(V0Cn-nD}5>;Od6{} zN*tdw9KgG#C89Xz<2%;;LmCJDQuT_K2zY)Ne@no@mx8=j-Tlq7RIR8_MgF-!G-%kW zmla>#dS7XiE5$uQI4tQ+nQ)O-X{%ZTS zXrf6}-07lnBh_)DL3htO%0=ZV0q{}9t7WXj0-n6a8lDSy6`(3WRN@7=3s~-q7XXX? zt0mE-tX=UVR{K>xpyXnJVw8t=0Z8}GNx{TnjE}y!LXct+SSJi_~J-_sU55!<3z&FoZ^i$)coKq!b?soN= ztm0s>xLh!{ArMVK8>jSjE!|z36S!;8Rp$o!8NhAfE9&!6*r@@&a*Y3lmnagvGXA+B z%ues#Xe}6M{k|FrgxU0JD75O{Q38jL9#8N1i~nW1erwKe;4ue3uT>A8Z`X)NaSZ~s za7nX5_(x5kPxhn^Qi?Ub>BycOC}3H^(8LIZvva*dUsMX+pa+S}hg*m^t(9_wag-a> zC(()nusBFBz=hSxQJ-!o;gW|>`2t}00LMmN2~vSb9e_%s###Y}Eo@oq0J6dWq7P58 z)Z$97re;c+m+*r&bfK?v5a{!%ibv}ZPI8P4ioHeE8^C}u~j>(J?^vM;Y6HyC!1KKvbb$%3Gn43x)dRA2L zYiXmWet;3+#TkrqyZ{;Xu;84J zrM%PRh%A>VAPYG0(Foe7drI$<9VQ;Z04U%}#5}gQ}L+y1Ni5FX5o2172bj z@{2r3D?aBhrMc-_FF~x8{YoUTQ;l8;jaHqPkN~%zKmPGgrG>4LG^j?L}f_ z<}|)uUmRr$2-Sfa@G90iejW4)m$K9)%&YC*G>x^-2GAOKWI%PB3K!tDb&d6o6|RSU zTs*=;j|)kxipgo&nlE+Yo2}Gow(u+KADTW2t?awK8gE%XoF*KW`=I9Bj~~^i4{0;= zUgTP2<&U2O@{&c7M?GB1#W{%c0`G?pjQE=Yv=vR}h8>HsQF0g!xe&!GXI|^oN)Fx1 zU1OOf7s+K!$INTKT@&w$X|CT>fO}OABINkcPvM3TWJ@iF^0+3A^FBMHt%O_du1lZ= z?sr|JdlNiz>_qy|$Nt+iIit_;3D~P`1+p4=@S_wQCK2kvZx#1v^aNQrivX{{vkt&@UTb6~s%OdYAEBao-$fL-Da=1dP_>rn9pFvIe=xbjgmq>N_ zMzAT=;IAn;<9<2&+zsk55?~%+RV#06Jx$%bqSamT@)8ud0V;QSrdV$vUl^LD;!>g) zei0Z^S|_7j{hu6r(dQ(WYI%1_0xfXAOM-kkWFCL}`_h?*o{)mX!!s*yjC2ol5BN-| zQV8N!4rvdTJDw5%#HEF4f7Z{d7*r;<32@;WJ7GDYNDcZ5xn2E4KptsPH@qlQ(n%Ap zr33r*Sv0M1fD6E@k>3pRJHfpkFMw9+(!p*$EbP%#72u0=oS62abXk94}rT?`LwH#Ak*a(7n(EpWfP^1LH8Y}3Rl7f;EAVlu!( zS>>xX0FiY(5(-5p#_6IAlQZkf+Cq5hR+Lu~3Tj=X4thwj%4Nk=S|kUR(sn7<01irJ zUetD3ow09Jdsbv_IRF4a07*naRMYE=^*BJQIO-J(9)Bm8@3h$K)+(SpDw@0i1b9O$ zT=;?{0~hTTz~#=NgsD>iwD<@h*sJ?dj*Q?ve99?Qqrrs&z>kZGr+a)iP|_RyhR^7` zWTf-Dq51L$?>n6aH22Q;RDDs%?bXB73m(F6@J&u5k1+LU-Xx#w6(q@BLc}}M?W-0Q%fm1clIj+jj>lM&=>lK ztXuBxN}vVqcUPWwq{fGTmltLYf~8=Sq6VHSt0-^rqjWvSE%NrZ9(avkPuqGu+z$;Y zR-wDXHKl3_7eX0CQ7#Vs#9@Ua80l5ANbcV^lFpw#MoSfN5qACT1Kh-S0(vRepqmw2 z;59rn;H?^98JSe{6gT)5a8=ozpzbM}44?(j3gCOGr1J_L`~dR$)J-WLK(2g&USm!^ zhpAV)kVJprm;T4|0~JZf4)0H|f8ZXk{wcif^m%AX8b16G-szV*>?gy=q#t`7pE5*3 zI&vQh&{CK5(zg<~99cGLE~D?Ie()_|)w$Z%d^&6MJGQl_`t|Rp1wBY*wFO%^0RBN; zHDYc?IXhgr2$+w^qmCU7-Ntc2^lqWr?Xulo1wC*V|u*2#3Ov#fe|_TB@#(hUe3*_ zyFF;~B_@uRySozLOtsv9BniyTjHi{w87UIC)&ZF`T@Sw;R;-pNoUEmFeT;iT3Yj*s ze8{P38ATviOCp+~GlMrN&Ca0eia`LNHsA`tm~MIJTOLte*>f4R0(`@wCXCw&sLd@z zem(8pGsjI6fMoSdFsC*$fEnxnK()z7x&sIS&2p5y;G?Ri`h;VeMb@&Oci7T*JzgFP z;N8^z`kR{f1xUk^-0)IBz?u2r0=)16$d`W72Tw6+?wI-GE^YIyYe#y^W3Ne%zxG~# zG#wh$4_eJ((#k&frHxX)#A)LrKlvVQ_1kNiyDzm1RP;??OByG;eh$p5z@D_6u7D_J zaMpRWyw&gV>zC4%OW)HS2h%aS42YgD6B=u#EZId>;tUXI!kvEzIMj%dqO!Gw2sRQJ zN6Smv5KS*jwcOp6Kx>`*-IeDZsqx|wI-&6#*rn2httSm{7Y$T_V&PCT&)zG_gV~g3 zCa$GJM^2>v14le76RN0RWxB0WwMHT6HK^_=;`V5X5*Y?u1Vw%Pk=J;dfDbGb05bRr zNQf8EM{zmo;9trW@CRH+_2SR#?mul{;4RED9}n-i2B6k>5g%==9?~BxRJ?*n%(dyl zskw!yh}S_0{pBQ60PDmnAiNE@>rG#SJRq*^ZRtbshurn2i;b>p=8OIS;!I&E%Lmqb zyEZxJ!oR|1@ueWSnC~cdR=<| zyWgT+GuK5H<~g_OYwnY2h$cSk{Q+h*0K=9;DMxWvVJly=t~X)Rx;}b7o5rqRO*1!N z)FUCj;o6bbRB4MZFiAF+1(e#fb%gpFU=1IJd=t&AP%1YP!Rohad`Gr;-PRTd94&Wu zCD5|m@2))WNC476Ex!$L55>sEGI%+LLK-caNrckWREMCH%w@gqIBCVqO1ggaf*yb^ z3*`7VlK@ic+kt|kgQ&6dx4!XV#{neL3dryD z$t(GL`77Gy_lMv3U^=2T+yJ1zE(Lgkrg8@1Y+W1t1aRy@!?#FR^+hZDqQPD}Jiy!# zNC4JY_Z-`@$de8|o={we{D!r@F6(?<>44_CKv7>o5~y_=Bn57o>t59dtC#f!B)*=t zx}r7&(7fD3UqU3}Q~z9$xG;5T8ECgw6LqRD_n$qU{-;m=r@k<-rEvl8HSxRifNnV` z$HAAEP8{Bs{!*Dt~6saRkZ5Kmt(zxInaPivix1 zn9+)uYZtzoX2-rS!K}pffKyH9Je}i6(Djr|r27Kn6U0w;)TvyA;YILG@g|q4`uz3{ zj;7v$k*54sggob%C^+0+hjDOUe+8l47}8Pel(aQu}jE zT}wBw>`%wfJZOt;3u_XR%8SCK(T0!3X=eZcTAN#5Iq~H0Y zukAV2;AaZCda+Cap8{I=!~tVg$$aSTZ!oCy{Z%Ym);^1IH%mFdIO>LV3*gfR>+QR` zx&^9C7v&eB6y`b!s0h9^kF1LempXwND?{QUB^jy^b=q}csnT_p1VWqk%pc&c3(3mL zx(@9-u0mZ}u8C!id^+_dJfv(%iypieM?1?)+vy!oKCBmydeblcpTCo?jnC*yTzaEe zj(otGeh}s;@}W((skrC(!Sqjm@l)x+2hM6Acg9YkE?@lm{Q#ZAa%Vvz{VwCf{imR4 zbC1L482O4)r&hcy&(EYWtuLR^w{Q8NOgnG;YAo@P9$uit!&Ji1!SQmFc_r+W@JUmK z(;QSNC%FLBN`50F2vE!QGrg8~_ax8)_q!*{m!!0)l`?<^t|&)UsnP~1!d{MiDG5^% znrjH95pc7T0Yyxk?P>hl3tFZ)koFz9Cj%OQrQ$|;h@wiNXv8q<0XdQk2x@~rJ9#DS zriqzH-6;t4m?rq4#~w^y`NlK0Ld%<|Sfq78uZOWr3xE+`)z^Lg+E2eH-J^%8J-xmD zIu(|0xj4`s0Eor9B1?TuAPZOh{XGKAZm)~yA#9iKR^pLXPan zLK=DS#HR<}^vM0`{!gDszxn(BA${@d&*>{&i)tgDU$CYeN88ARyMhCw1L?2)#doB? z`SHJyjvP6lX%ouFd5Lbt)DXKia$)!RFBg1~^9QXdC`T>$L8kPX{fMS#CeqlIOL_@T z%V_oBv|IgUmAOX}71S2(`G{z4pFvT}gC`EkH2*lQ{HR7L5#?MKI#E57D8*a;U6Mcx z-0zYgUk;fiDHES8tGiGQrJ$7Zs(2|xLe9eq2Na~L0ob{QW^Xl}AQfMoP1i0ylR9M4 zj_yCM+)f>tqCCO|f=rtn6xaYom_KV=gwa0!{GaPPN7y$!JeYpr?|dTt)L;9%X=Y(r z02td003y)iBE~@&nqdjY)B~33vVi@=?|V~v_nTiQYq&??-s6XnwtlI@!#qtt@Gz6I zO9HqK&7Y47_yz{}=r|xMZUBF^gSFk>p$REXRSA#HPmk^dglOt>`~~PqcH)Qf>-wx8 zZ(y!#YKDiYF%KUyuv{z?kr0i3T};|!_Rh{MYTE}r{8QWQ;-|i~FKKP00i-%Qe9>w5 zG}3;>f94|}NFV))cc!%vnVC#8Q`73hq%I_qCl@islZrC8 z&bj5XhVOAei1FZfgoA1+Lk{Wjddc&;s|nEYLfV z8#-`YfRIIwLg0!YvF2YiLdu!F&=B2*6X(akX%ey$rIp;CFE34}i_d*KojA3Yh7X^T zb*qi01OULgR9(u81)Cd%yz8T6LDR~n{Ic?*N~ezh!(SGtzV%IyrhoGHKb1cDKmMaM zJF6w0OsR;6I-nEAVS%s7GUZ#TBLh9@Xa19SrFTC5pn$m3%PX0Z!3y_Oks5_h=9X6k z?DMk=x_E7-eWN3?m<6(#9{jj-1lshla#O&*CCguT78@O!d+*xt>-t=Hu%x*#G7rDb zy#4xG%wY@Exrq3VY7;QxFPwe1ft=b>FBgm9?KG{=-K{K%C#HgQK07+220$A8#03Gc zWt(SK(6Hkrmigd7M|$FQ=hIu>aKFzN@+lVse^*qb*jR3SeA1Rb4_$d+T$Wo}zLGN+ z5eYog;GP7z>%!#&KCskv0n_L4rY9!T)cBaDVzga_EcXuC>0O$C*X7K8jS+!-WO(Fh z8SY*Jj8!HEfyZ2cF=>(!KRV(s%Zwyvl>m1H4d*;k2;hnzvDWWhlt2sI@1ihYid4Hy zO6$Xpf>}qZ)KGw|BpUsI85S0+Ur22e&}rsWv=o<~uu@|~pvsPsg4eVr%ksq+zMY1( z^zy{1Gih-2kfshgtz@yCtE!`Ms$S`q0u``}p{C_^C@{*dDs&+HlmPgj`muNF#irr( z4}R%ir>{NzeOsIT{r$F_3(y0c0N*~Xih19gA5I^7#~ad-{X<@@(x(T7-Q7I~L4b}P zdKn{@wLo}DUjf=$Ur7fJ>!Dk(fL&$CXC491cQbTF(^XjB@X54{=gk$~5O8*}e zw1c?k!o`Ev4LwNR5}>=UnrfkAnsN4@nqjs@%!nsNlm&chp1(`m`t}Oo7xX}PMZD`S zLKh`FD(O5h3x;D=jaYEs*l(w2tH&1+ubH<@X(ZufsvgN&^S&+M zuRxrh^AEqS#4lwd9%6R%7E_Fw#bdg|$C z(^sE*CSAHRmL}$wP5Qv_fOko}_nxDEQHckrYXWUnlXPn;hUpcoU%*M^OjD!{$}0lT z)y0K0GTfK?^g2IW1D1A_)t^C;9D#jYxR8^;N&RA~p-r6)SXW)mw*%yU5lR;ifSqRm zTtrs&4Oc+czzVo(o?W=^ixP5$9v27hj(YTw^S)j^Y}G0yrggS74TdZ@8(c)ZZ2-;2Rpm{p*y8}J-4{pBfr?W@f!#;WSDA9YqVLW9G7aiO zhd(C}&T-SHNv6}7($ig0%iUE8w7~tYiu0w26$OaF-cX#PC^7g$1EdCMI7%e45yaGz zf`d9(U`k{qh%Lp?CMgjrEM-?Js~y%BCe!tmIW2jcNXJjzn??>DPMxxpLfHZ=u}e8j zLZllF(lQPv$QNyZUKTq_`Tw!^9&nx=)t&F@oV%x|!{j`pQ5ua#Ss)M+$&xV00t^Nj z5bLxC8`$?)$7kc+wT+*%clmtYTfA%5>3QGUfO&if24P7Ap@edroTq1|r*ls4_dRv% z|NnPurYCjxbdRdK@2$FZE1Wv_e}8rEsZ&)^I_}p%BW}y3Yi+9*w_;Eb)qqQqn zU{%t`H#IGm4nKggk8o&vIPW}^2l`q6g*J>1k6L?shduWAv-aXkyR{%%xm~R({+Fr^ zwY9Ylnrw{X9fdyt>O~b(B5>E*F`Dc%A`7T-4F=QUK@y!T>M6BK7qktcd2XS7fytpE zN*aJQrgLAB@Wid4R2Ka;=!*&_lhomtOYPL7-@#yCmsD3B8X!Hc#pJ>!><;SwK>;N^ zGo4jt?u*QyXLzP`YAQx`#?Dgw(X;0FkpGSP#pG)mg$uVbpQjW5;?2-@%F7D%a_E@( z4WW8MdQWaKmG@s=7f~r5Tm}DNaU#FP>Z|3ObNl zbuH=9zYaW%+%LR=zD#WaSPt|@`)_CphnFQV;Y5>AAmF_UG|}aN9@}VJYp|y-zziCO1t*z%k3?<-Du4% zO-juGq(CHV7l1;CFgmQgZ1=a>U;o2b?MF|)pz=b;_0+R3+r96*!*00lY6l(arLk&) zD)tj4x*oku5<8OrnA9My4pNdJb<-|@JszNJMu0*%FE500*AtS=se(OnX{uNh(n(Th zD4Wz2XzS-L6VcrU95J3~5Jtc1!cwC^m9O>RaxkidOL**Se- zb#;rBKrftr==}Qm!}%3Ic)ya*ecp0^L1Qr7^>damgn20hyq-2lk8Z0BD7)4;fG0B% zCk7?q4fa}3`!Or4sP-M0GV@h1ssT?VR`l#xofM&S&LJWl4OC%? z(r@2?_(%5eqt9r-v((i%U-{a1?BJm``_Kp8Wi3maRj$SxKoq`qR58JB4bpz`|GVE_ zeDM|Aw5-9Zm6xvYh;-=>eg6sDxM7VgTfQvUsUX!tF6=-S_L->CzYk~y#SzguF`<<* zLyzcx6Z;OOGx|eOS*D zp245o+yIJIT#o4;!0E>aDv2%^joBviK7Eu)-kC4T-y(6c3{2LFKX1W zSkio*ghYKJV=u0JCFrdY@+95+#3%p~x&RBxmFXeC;7Sl0pg0I~V944LDThMU?*D`w z?i^eK$j}aA$EE)r(_kk9mFVX4RybK_AkXWN#C-VZQQNg=zc$ENWQ~&Y0kHu|u{&Pb zY2SJ1F?;ttZ*#bd#TBbo zscwDQsLgbh@Q`+40$HLCtvs`W3DaL`jnatUv?GFg@QDjRPyHSj0{OIljnp1`5V6}k zGZrC}?nkSC92YgjgX59M3B|trv3+r&AFYrG2xoeN76AobRY2dwI2mTXRm|n4= ztXO8|JM;CNLmBd?rh|-lOv%g7!+#=*=XZmOtbP$fPjWNOfduX|&CzMfLp4$O!wxS8 z?^AeD;w#~w)4XQ_3fPX0_Mz9v~nWTIgAQ3Cw zsMISbI=Yl$%$gU~T9pPC{WD*k0wq2B+{Glq?qO3wH9eqVOt*T0Yt}e;GCNOn`7R)Jmj$(D-0g*TddtC&? zcfcn6st$ls{9n%mEsXw3RoIyH`Um&!)ZqAG7$Z9Mg(X@c2WtErF1&tj_#eI>0nEu8 zgbLyVs7Gl%{{D!6b)0I6WrdQ%wbxDklou%>Z9Y90p2FiM-=j?E;n&!*Y^}E=oo1E; z3EXFvpVO9BQ@>bJ@*;s!e*m!Dix7YK(a&BOfK)F$F9;|1b2Wsk0EgVqfDzbK*e9|g zsVn~&07INgU{H;mNa9G4pbY8`pK7j&E(5aP9_%>cdTusju0c27*y3w{lxn^`fa8`H zvM1M6Asy)Usb92Gu7g>iABvsI>?9IYKlk)SpaX#CmfLWP9+n6I;3fo=NYYrYxYX_{ znLw{kp%)6HieRQF9Rqsy8Xe_I2e=nWqOTD>ZC!(Q?0AQ*Sh-B~s9+t=1(lB~rJ|fK zgA$j(%jiS|nq}%#s?bA!sH#T+hzp)ToJGotlrPwvhql0P@I5$h zod-khF&;`L|K$LmcopLMb@Aiy;RDvC!SHhG()ft;nT|w!&NG*G1^VzKkE6;Zr;>5n zUk&VqfKKB={?I8*E-&80SM@pqTMFX6{%|i(N5Oq%a!^-Bo)reC%}ZD28IwXY#(@Ox zGseo(7gST%AZv~~8}9DSUJm`x{Uw?F<41DmT_usfL<)k#g!2w?AXyekIlSMamea5E0m_%%NtW0omWm8mNw7~ZIp$nB8^fCkqU2}UgrXB zjIDIi{p2zEQ~pMF*ZEOgE)~pSN$f|}kp+t=SmR%Hl&K5<3z5#Z2j#jFpQ4f>ezMv|X+6DHN3jJ*C`U0_dHC^ujN>|n`K^b8xG@e5oEPaiHY{S`JGq(W zKmzxf=IAu#RcXPkn%V{%=s4g%^!yJ$z7)JFIK2>lMvBu_c$Yzn%*9mk+7ml)p<8gR zh!E8Ezj`?V$XpIyXjC|Qxk7;;lHvqTNQ~6s)o`61P&2G8{f2aOw;!;hmDSeRyuwQPonBOcP4%cqx5Za_$|7HA$rL)Nz^e^Zg`Nhzc7Q_c-qE!K=5#yggs}+R|s9wINN^DU)5e6gc`SD6t{+1GTlqvI?qEWugKh(K|m?EpT74V!5xw zgCy@OQL0=3XIOxUV3F789DT{6yUn>pvTNWoK(4cS)2no@m%Z3u3c)+ z0e)e=(}bOpEDgntqt0=UapeLlxPmQL06&DOBE6$T_X!yMohOKuK1uw>OG zK8eRC(_}A|UbXO-dm#&6j!7@-$zGlqhflt6UHGXzSsDw{o7bkD)eFr!XwuE^U=HP;*m`Hu^5?)|olG zX3Z+weCYbo!KX1U> z50(2WU=I@XAxPc@Sf%?yNk2-YWJk~5uVrJ89^7rK*I%xi zOhOsfAxGL!tzQg1G>L2hyLUqJhqQv|x=Xh?e`tDgGs}Sl z?la5J)0Wntt{mQ^b!xh#`=xf^hS=d0oz$hiSw@<`}GF0{-+RgHB1vU*ZG{fkDw73Z6G z283S?<^j0*?G%Fc)Ud8qR!ozV;3ok+RVfYW_{*v;1nv;d(kVd%ZkhofW7-%`J@5}* z`>2jF^|tFS-Kvzy%?1Y&xX%VxrzvyU%5|F7F7rCQv`nsvFF^DiOn9mMWkSm2Rnd#$ zq8yQ21tbV}xDJjN3K=h?K|;!|LxjIrf-7ACrGR(T?`B~EW}Irzy_h?85DrF8n@RwL zWP&&*l}3;B-Obub2T*jHNaJ+qoTc}6a2d(-``jkR3v&;UL=t9}Did4)HNF^vWJ|j< zDOe%eM~SShQs2;^quyGyyuzS1wqPYjDvO;O)i}*mC18d^c#WE;PLsG;l@dn{43d)1 z+Y&j99wmMM9;G+{qj}O1N_9js|h2`>*ms$b#j6X!VBOxwJOd0x&tE!c{LhT=u zox86ls(A7`Pd%IsUQ=EU%%=dkGfDSzz#Z=g-#aVMPZ^UBvO-a)a`L?p$GxfX0p#7B zRRvJKAB6RjLf4Lk6U$4Klvmk`H5y6Je{`0B`emrdEv-lyME;5LE4Eg zfqW(%0iu{22I)P#_&E@a007AOtqc$fJrC;?{zXrAQ*Rd&k%S8Z9=&M_I{+!12X()x z1auRM_fCLhfPs9S=pamkmbh{3-2uq z=-GZ`w>H!eeb~5ra+Rg~&;_B+2N8WrfG3R~Jj23t1!2!0)8(I6NS}`n*H9ng!gF;p zASEk5pFa0>s`BY9{ZPlvTJ=p!*4t9O56R6A2NJl?4qs1MYMlm;T9&W3{VyJo2_HZ9 z@FMXNU`ki`f+&i&$YGZF;QaOW8zCyY4sX2!Q_v6VuD}RAGph>box@pnNf_`!a-ZsA z9{B{J4TAWz7O?nT!YZP)tjfPc_!^-BfmZnxnGs$H5+OPQ09ToFA_VZ#k(X&&X|YTY z=`;XT%A$;7(NMS!Nmh#*N?Wq(C`Z@?!i{KeSD;S-s&pr+N`-Jc=Bs zt8BvlJI{PnGOW{oe7nFTVw1^c^VRBfvjn|r1J==X>u53Re6--qA+=~@}j47Sx~GXGawtv@UY*E z5u!iKPjoCwHD%!`U@5=@ObZfv9jK$|Op)Ge7caFF2X|;9lNJZlL?&wTPEVmccxS+_ z-w^fZ<3pJ8L;Tcxldn$=?14ltL)-ws1KEY;=EIcZ2krAVN{~U-rUR9XlrnbJ4Yx-o zCVv(0Nv>?K16F19c^*;`ATRMsO$V4c=Y@xf59Q{!XYS!V z@JBTg>K;szn3dY3#oc<^+q6`KHnQe7p>qAKuv<0h+4{gIzSl9;r@j~$>YkjgFz#ew z)fZ{^cG9qXx=BFp?b1E9D+lh1!+?NeRBF6Isbm^82*2s_tDQsXG&>wf;66Kiown5V zo3GSh*&>-l4(kWcEKk%M0ZhlGLgA(0r3GBw2{Zi5-!B7@#0pLY@LA57jCWBkgMGpj zlO5rblK6`NMXYCX9|-jq+Vue%43-UeX+^CjGcA$5a<+E6+5rgYq_n{~APW?|stC@y zAcj=LN9W@K0wJ8=$F5xo@}Zm0FONmO3^U6bC&d!Ntxb;5T=~ zK>(F|`U}kzka5F120F`-JH&BMA^sK5!L#-834i81_W<&qh*Cwge=%iYUt_1T#uhJK zVaN7vmuiL*LxTWp>YEJQsA=>ZywjlK4Ah~-(@sra7=Nm8A^rJqt~~|qi}mJ!U33Is z4;C_5|Mbgjb=#Y6(V9O@FiUQ>IFP`7wm3UYxvfi<+uF_BY}d07YJ&(YXY>MKJMJ&K zUUmS4!(SSIfAwM_PfN$^+}O_CwX@b#r5@EFLO-G76S0VK34E5T4WPLk*%jq-JobloGkt0rgG_iB*qU9%vE> zQIFR~TCT(lVqNbnpY*x2f+3YhWp}bTDk!{P5DpYXEH^d~NJJJHZe?i{7eTcU*cn*#9ieg^qN-6(2Cw)+@H{Hn^Qa6u(JrkDIi|^0@GexU zr$V(NHvl}quKFCaf?}>7>C{;e3OLMX~>L`q-uF2P-g9_Wa0X#);0MCF&NCBiC8heDxFuS>zqQ6nzg4XGU1vbaE7 zmS2egUXddgX!Sc}riOyDL&u^tv06{gg%1BGj3Z45186wEQqZpyH_6vkNS68B_cZby zaP>@GVwcbJ7T<=vV`l9M$bNLmv=7wW|hci(|SAAM)}dM9jSdl1F4NItL*Zv zH#k4jY4$jfz1`^a3wxTB1eJ>RoClZ;;r+ z%M5S<3OJW%_=3nf!axP}6xpJdm0C#bcqkisc&O@WRkD}w^*Y!_fRBEtKd-(C zbVF0_pwz-^4;QA(hx5Qr`SIC{3cx)(TxySc_DpK0^Y7DEh`0U3-AN_GgPmoUzlLUW_RHAR$c(XV>wC<3)^8REW#Jn4UL#;U?dsOmwrEem0jTfA2S6>8JXXm=zSBr8;p9Ml*?LSO<;` zKUkZl@QAZs!z!3cB)Umgr{!^}2~*WjZG7hOxp7VB!FB#Q$KTQ<9z*NYgXiMS;dhch z^64V5XZMsiJXe-&2r8NI6`EJa@cSMXxcBt**_P{XwPh<-dArkTb~%v1eRlafZRt0> z;jP*Pqsd=%^pWUbgQSy5KmLO1W#fg5NA@!L3zfZ?;U&z!bm2t=Z}j379+XEpS-w~M z5nzK~*m3Xy;gY)i`o&s|tD?$r5($&(`hZbf@XMFb)iuBm-L#1g#jQlLx*b7)Da!S@ zK(At)K9A!T9P~t4m}@zY55XxHF%rKJvJ2y19rk(^9q1vD9l4tFHRfqjsE{_=LD7Xi zVYQuS%PNyYS{mWR@e{Ux_de@5(IFDUG6sdf&L$-s@H7lWqn?vfe_JETy-4wTl2qi? z=bq!FXB(d-Y4V5vR&+h-cQN&P((i=kg#3jaL@vLl4bPXdgJn$c89?QCJtAO7{WxA! zW z(_XWv)nU`EJ2KmDfZSCHs+ceiS^%^$E$uq4-Hgf=AKD_YAdQNrj-Z2=PpKKLs$N%I zKwl`&&mP6i5a;)G%3l!^T~=ni%rPQFa5v`)g7GdsbU2|NhE_#{|Lk6tNbxak4h%Ek z8`J8QBbo=$traV`zqrF5efVkX(l&ngyzdTMf602^PSE)$-nzt|@sM)p6rG=HAlGd6 zQZCcTp}s+{FGr8p51v9ENL8&bhz8|{(*s>E=L4t6-ot2xvzhh1M!Om4phR6&dVD<|1;oH zT&X1XYAq5*2@L!}Rs?o{#Rmdaf|B}aXlTgVv|lM!G%ZV8v{^}=7WHCN4Q2HnD74c7 zUU5DSpw0xkD1sAo1t&WEB6I?P40m%K1c?ee3(8R%^7v#QFC;6_3-<_}LP=g+jEZTw z>uHrn0S+RFiq|<`OegGWFQisizYJNAfPB}EJ@)t`&)CyX@3h{20khIxv*(cAeCy55 z2lDw>ka*&|JBhc%MMq0;tf|l5wgcT7SXGqUw2SYNhVZqOzs~8~q1j2#x5M+O%$PU$ z;X0Hv`5wP1(nJZ~+o|73P$dHBdCA?Sc7Zy;J~X7xT}wj0^8-KcZAhoN;XnfSx#9CE zYuS3;&9-^lEwXw4uGSPsa?^li4%`Jw08?f)lPe@(Y5-)tur6#X4p;^RvSGqp@(|Cx zf&<(Lc%c9nDu9q8@Jl3wJY6P0+2^fA3!bCg^oE-mx7@& zhWpUrK<<8cR)Id<_crPby|l;uGq}#$O#5P9Z>#c$HU~XB;ZXJbO3a2Mkzl|?D05(8osYT1N`OMp?If*6OMF#=9If8{Cl%~1w zbgJyhAf8>Tq{;Dx*ZHurPfEu%^m_U73G*8Wz#c%o(4O7(>;m>dZ8nb7e)k7|AvQ1h zbHsrJ?sLTG>8ja!{p;+Kt8THK&psrnE=cde&N%}p2PYs@FEXkSd0YW(sAn?mh+Z^* z{{t{&&=unx=o}v?GpKPWR&W6f0v!RQbxj^tlJr4bu00&;t`xA43zq{b6;47*|4AO?O zGEmIw@p=^wH2B%WkQG{@%NUM+K{7Rof6z;QxR?xhfEc$k^@amkuuC7+3{mvwj3cma z{NTW#b#?VwXHUN!6`&vM?6t#3JM8$;Y6Hb=7B$>+SD5w zVj6FU9x{8<@{FQ$K9*I8zgnhPRw#i+tdXEOI|{=wF6Yzsg0$YwaII|lGP1C%XLKW~ zY3S4nExH201MbW~&Cfy|8IgqyQoB@AZ+Xuz*yhXArX2AZ&Xu3QeXck?O+CD*KmLKA zvp@LsLv9+0Is|F8P6A_I9~gzIS?1!V~VXJ4yb=KvId zha&Ytj~BCXMv0{CN=1auL5Qxr0oXmL-iD$$a~(FiF15OP>Df_5=!N$s+Eor?46nR$ z(6(lBg_}&=qSFl3_{X!;(DlT@uA~QC}m&0h_AkQp#|YSad;6_v`38I6M?U7%r_xUW^#~)} zd3q#R6@$ofH(5S{Q{nFL&>dD?OdhKEbcl5 zcoWZ|ha3(v>ws6>2=~>=BkgPBjyS^=t0^RS)G;Sj$#~f(19ysz0G6!0}0&cn&YRa50HBIhdyq<`|p0B z7h_mvkp7J81{7RnBY&#i9pH96*1bYpCYu*W8K`0$ z)G0@xku5&}XbS2BJvx)e3&GD^#3s-P&|TczXvzdw&Tmh^IduO8)pfV~+ z`ItI^wu$5R67?%3YK>xv!o||xFI&CRuD$6-+jz+as}zk`mJCTn(l7PMftUAL=Yf4T z!NwNKRA4hfFDIQ&^8*m1ji6j+#sAU9z&p)~;Wzwv}qR z7yaJ02<)MqL4^W;euM5JeU}~DEesR8J`3t4? zX!7U)uXebeUA)Un?6T$8*irk5PTTsrJM5O*?}!aa{v2~4f%_aYe7fqcmhSz{@A|O) z%Rl~Kl6V(q5-2Zn_JZ@0^Zq*o6GXfY_b2EKGGKR5*EJnN1na^gD29W3Q=PC*^(s~% zLhnEsEcV4(H-J5k7oYOH5P-~M3r{LUz<{I-sG*kGeEE9&(PPhhBGP*^2Ujd>`>cN_R=W(Xw)eT`t$W{IE7F#K zfgXTOCF&Fb5T8Y@92Av`FAl7e%B3bM$tDdkR^ULax=uX#m>qxeagA-Ljp_^-C|)dy zn**BGH8t9cZR&)M9QQg40h|c0SNV{%`I^WY=zO{K@(tFiaRzAM3j$uj4QLj{o|JRU zMSN_FOXyM``6`^cL0;%_sa-zLhd%%~f;R<*upTRE{D^T}hkEmQlur3WxuGlvbm~G4 zBOhQN(c!B-BDG6mM;+6n@rSymmG*Bw`CHz(Q+IN6&w&K)bIYkc2*zhsX*^mSQX zv&#$8*+Mhx1JGj6sljt%rnC+!^%$tW}{ zGi#M+&cfV~&JfW1J+J|tl8*O%A8$b^03lb^BG zYd6q{d1;scMY%fZsXVPZ&lv3R+{p_g8g zRFty(b6PJTFSbivgyTV+!Z~TIAdScCrH%Oj!w?5f1~BtaatDFDb%p~^Kp!i}liPELL;-_idhl48ye?>njt<1{$p<{wOImKJt+tw~N~=|; zQCnVSHIKq`%mvC9SUNa9QgD-&AAgX>a#5tI?19p%||Iq4K;hA;!62-&aHQ_*-xD4vbVqIXY97OztfwLP8W^?IXUpck&tSh z%7M4sd5=B%-EZ5Y-}xsik-i!=NqFDmTOV^^HIseL3yvHMltj2AL=NByFd}6GSg{-= zP~trunG}vr@2=nDYe3pzx1SfRDlA}3owUdGmd`W?_~6nltDWrc)*q~0RIZ` z#?T3bZvonawC`3$Sw|71TCqiA2X38`<3Rvw=?|16bR^LyYnZW{u?RjXj<1*@F>3p< z4hQ#2fj#_XcdD}LD!WFz3|)HF6;NPDWD;4V4k$1c8}$mi>s_~7b91w|8FNZ(<*8Fe z=Um_jtRbX7d;pkEQ+yp&rvRv{oAs}f0PLYdhHg*qd1DyTLmAW)?q|N2t9!JKJUYC? zknd)XnHt9HQ@b75T^%DeOlBD~C_Vde0sH1{x7vLl`;}ZfQsBaIAc6aZT!0Rskne!5OF$i0xL%Fpf9wFbrx!Ws zj1>kXy+;seX@X32qta)yl3_(fwaP@wS3LlU{@ls)>UBX3Qr@s6_d%HmR@GG7w(GWN zFm#K3?|~;|@gl$@bLJ)lkV`kOv&D-WeKOGY$Dg$xEwF{jpQrLuksZ<`p{3H{S5(U? z1#qWA*O#an_`DuYb#%Z2hM7vV|WKupfP13>yFdKmbWZK~!_#W)c_ez#8Z6 zcim#w-?Yst^wlvi(62a6@)2#`(H8KLpo6TB5d=^VUr+*9sXxYii$;MtP04|C2Ht9$ zxZ!QoEftl;7se?~A;3GRdpQB%9o+T&3T@f}b)U2)uy<)4V3$cNz}_ia|C+|-_DjG1 zSy=*ME}Pti=0F1X3;hI6QGZiQt9|TO|Ij}3iTBH-YzVZ<0B3Rrc z$s-gGvsgoZ$2IOLelnnY@?0G0e1J~rd_YlIMr747EJ<^`P6MT&2OtQ*dtnrcqtZ|o z;DJ85zrW9I))#3fp}XJvc6<4S-5Lb#6rhE#4S)Ck!Dp07(*j<2Q^!u1#q7LUOXx}7C@UqbJF>ObD-oiau=M6M8HWoux#aODSRvJ```JRPv&uT0_ekAFXt)^T@=Wc z;humb@B9_dU2^4j!8aTiG3*iHl#41T3J|GnT&lI)8$FLtByxK4g?NV`018qjAc6G9 zJQZ4lg)Q^aUT^bAN(5j5r-gJY#_ucQZpZmG{?5?|i zT(fM~I>`3+_DUijaL^uAIYXkkTi{nbGHAc}Z{KTIsv|&6)vHw!2UI5f!NJQwH?-54 zfy;q^K7IjD0d~dp^>o?s{jW%RWIZ=@Y!K$3M;aByfun%7q>(iB9<(QRP7%x_ZE@LQ4zONJVk`+umS@ z4;;0B{>N_z`*6}JudlJ93_Y6JSW#JREi!Yw`zP!0tp9WQUU1AF%Rl=gjx z4%><0Lw5DDR$IGzm95!wr8bdnwvIywt^MVfY*-VF(7SuPB3-J*!HxDRj!v;ycII5L zyOcz9s{qt5yTUf!@X0^UnWOsk~uyq_iW+MXrT76M0mgHTfw!r&7N#Arl1A_xT zla;b)M_iws!YedNd*4UiW!tX3N*!FCk3;nL_d6d$XA3paL8A`PR{!uARfziv1IR-% z(_{$*z<4aTco@9S@_JUnQ{w#oc{k9IpxEX+l$z53b(xQ+MfezR&Le#=~xX;vskLder>mrVCMg}>rNz3oOR|*| zJuJ|L5m@Y$iI;#C%Neks8NFSZz9#6XYMT~o6Y6TK*1&JQ4kY{`ZRX5mr^Ql{EpBC& zC19r+t)i`4w4rhu(^@ltFH$$4K3+2Bw%vTGKr7wt9k0K_UU%abFPHLqdb+*S06gJU z#zLhJE?Ca+3^Q;AU{S>Y@@fmZdImBT>(@#ad;(&mU|pR9)D{9fY~VV?Zc4!_CIEZCfW1uvoV{gORNogcIztTz3<3husDw1q46Vq}-QA6J2m=hD zA|RcDba!_R0#ef5E#2LB`2FAadG7sspYw6f?6cP1Yp;&J!{JPi!|P?}o9*5-=u>Pz zg6dC!R6$(z?XKUE;r`Ua{%!S-J>TuD-FrFtdW7)dA zwfIru%@E+D+vS4ShBCjT-G_3E_9rsGC*@bBM=i!ndAk2%Ar&} zi2v0F=R&La#gc4%^=u2ZPu-a3<5b(`6>+7s`D;qP5&2+v(7&u*(_fYG( zvSO--0mVni@W~Ij1xP37O$ln#I7e0{dd&~RQ<$2AmM`2f zHlhLP0nHqH#x_quL>G3}nVlb#RnDX>H(5*riM`6Y7c zVeHYk?IH9qMrXC2b@aE+S9UfBPIe~QgV!|)TRCa8U9!%WBL!BJ1pdM@)63Fmz6tc| zGz8qE)bI111&8s@+;knLu>&NL>q!DPT zbh5hp9iq2XxV7fcQJKly}0YOfJ5%w`?>v;4FGNahu$slefgHi z7s%n+eBj8{znt{9=AwhKP|tte_3OR0L6|3|xj z>K`$vI$u=a>R{_U;?#5ib*7sfp zbm3eO*x1-OA7CNTxYP5f#hw!3k^j7SHSk4=vpN-l7r?!Qv}{+zt<)am-l!9#@TCkl zDn}?1{V)r!jjQ0-E&32ZDPk(NeZ?re43gi?XFtW1+UiD{1L|Rns@zzci)I!IVyPLZf`U}h|p56CM{P@9O57-e@H#rpn(=|#cP4VU+( z_aW|j-f8ncvFQ2D^ECkhrxMwOnT@$ml|cuOxvtA9QBnc8Y;ZL=W|x`&JWsI6FBk%j z+59}^D<$1;$~F*3Bz-7USZQv0weTCu8}tqR_|#{2iXx*Ws5nL?9HVdHU(pQJ^-C&c z>_=8HbW7Y8pxI-GJHrXm0%FC!xA*$t?FRhNl(KGY$e5G+beE9C7n7#m49j#czjQs9;e0S|cSDSH! zCVD{E5|M$`zlSl(1oAoAbHM>ho;(~n?tOtX0FAt1czDM7OlGMWaP zg{UCW9p#kP0*vboia-1-Ccj1-vYAqx(&CZ1o=xBIODMF|_n=0z?^_y}x#c^}Qs!Qwz+p|Db#ysq;v&x(tu9 z{7O2`pBt&P-vwIy!(r}C2?0L1qC7M?rYT5Fp&L=txfh#gq1lPq^JnDH@H#Y%`0ihd zFz7yTi!+MkeO>OC3g}Lof4_maNH8d0y4&#H-)g6veC^WO7ouWc&8jMDPo>=Fzkvk> z&j)@9jU}gDq!Guk=7Uq#uc$cu>mXl+X{lV77hBtC8}G6;4Km5puo{q(J4i7MB60!v z_k5(WAD0OL=tQVNhqv45gb-W|5$5V3Ce&iwBn}BuIkKIYv&9mm($ri%<}P$ynZoZm z&tyYhY@os5hH_(*Q!*lE9tXQ{D^YoHmiNZnk2P3Sm#8RV0n+OLe6Op+%1xSGM!(h$ zU^5ZMql)>7&`v1(-8$_il-^wp?oVcHd;vieuFlIx<88&f&nM;GdvSH`dY$F>RPK59 z*o%(gi;Glwl&Uhbd*>Do+TnFxRD-6NZ&cWhWU4Xsv@!T$3uuvfE?Z;#{o$KbM1GAD z4Qk?l6T%WKKx$2`MpP38Si<#wW%s>)ch$nVIRVMpv-y*DL(cvzw-q-`-%zdr zN1R-L{hJZ`D@MYB&nXZha4*0e#dGBvw%IXLF8S=au3P%9OJzV53X%A&%*v z{EQB)XuMWCHpAD;h0to-1u1Cv;0hxltv=-HN)TcmVrwv zpMdlBEll=Qx=3mkJ0bP`W(Y9xpvmuzu!XuYAAA3YH`@a zp7r!@J3(DuWlkSVFYN1)-a&CdEQqIYY%l>EFP@Xox&wr@{-90ZdCy+ReC>q1<7?ek zxVX zTY-P0R#Aru!3Zkx#diD^PSie}1UNmEkrhy^crH2TI8&ohl7rF{(Mkyi?~vlcA;X+U z+YOYRnY82ps-q5_WX=!zQpf9-7HsrUa?2>|jK+z*A5lI}+LA`LwthhMvA>Pbnp^B} z*JI{(r{0aNF2Q;qT`SI?)|}ng;to}NE({QagSc0LrFulc2JU8sg_@hA^G5wsB`*@$ z>*9%Ii+!Um94BPLi#@gcZ=k5nEb<6V^mK*I4nT#6PT^et8Km-A74HsHwffXM`Q@)- zbz+nsrrVs=h;`0i`E>1hUQ1sm)i9f&Z=W!}agA1`JEN#)b}~?5(98c8^-QwS%_7;| zx@MqDrN-xqW6rCFzKyns^}X@t|zFN)fh1R#Q=3WDW34 z$j=JF5Y3lxMlC@>U|s;{qd0;0faY+;FFA)3ER@oRbhWT^3*A~+2|!O41o(?`iFtCh z)%qc5h3u9h{i6};o(o%1cZo4tHCwN(Q@Krn;jp!)^=H76nl1o+_|3ZrD>n&^7>UNi zXh=q0Rd+ZgB)98NcGZ-Tk%ML3_&XFCgvxbK2MM|%kDXulxA~eKv|VyHmQoS~>xE+p z?}j9VJ%I^B@Z7mTKON*8l-;*Yn15LiZtU|eL&OR0jwOh zLCXTld0&!O)8?XKxwpuXgWYx|k^etegQF)dxlFy%OOBv_?)SL#P<6lHcW-LHH|&60 z?4KI58ptNHvl12W0*J^i>QJW`@z@pyz{Pc*Gn&E|oHc|G|uo_fkm$e23!}Q>@ z{bevh_A+Ix9o3P4!)<#;oGsH(1H@h5U^;o7k7EeYBoMNQfeRCGZ>#}6EJ;c1w(<`@ zvjcK!$fI#6i%Y0uS#OsQAD^0wZ=zapN%w6Nl{DC{x>7Hrb%L^Gp=pCRXL~{t+5k&6 zKHxuJ%DET*LP1+In(y701kt7{LPe;>i0mxQy=Dxk3|T(ZdSALsPWik?kCoC#tIvv8 z7Ex5iJOK9SE8-1j`Myfoo#-M2-bO;|sY-TLbqvhQVxIkLjqsU8rrpSFnnU!3kelOs zEYu%UyMCRQR^E2CS2pLOD6|*PU9+`{Zf9;D!)kp3NYk8nfg%+BdE6YNj;mv%SHWu7 zpj^99q<2UO!Sc_AC(r?3BS7Tm!%kazVnwuCrJOW4=G|a=tyr;SYIsE-`gi5I@;>_g*{+iT;*>8S z&w-8b%I7^U06&#pN-SYG1PG~4BtdM1{uX5L7u=Av&9u^u_|&5Bz7GO77lT8>B~pGS zWN=3P)_q75;uiD?MSjO4*u1+nuC$v0fQI9Rw^1ToWebJnV z%xu0l@k+|G!d^ZeD7(wLzZ|-6-CsJ7p6F}L(ou2zETCe89HEXnF3uLSN_honLt$K` zv&psrBMbnH%SJ}xF0a)%Q_#CqHDh%*u**+B2R-7yB$CIr70Q_a7Yoy## zr5SJdkF6C_pC0hP`4UIf5sj`>3ugzVUA=%{Fz`>toYR6E!CwGbES5^AQW1lV$5&FD zrBIM-92me#!S$WM`#Xa?;FH)?{~(-#BO)jvYZG{MqPL1aA!+b!iY}eFB{0+aFqI@{ zYKndi#Y?j-Ur4h{34`Xqz6Zvx2?ytoiJPYn!o7DZCocXqE!x&CIo0Xc?B7uEsVuLq zBfapUrwysq>Xb=<(+$6?0H5tcQ3ojAeq2aa-xS>tUOmd*ilY*VXXP2I(GQ7K)hT$t z3Jj#LRmwIRbpM4V@)agH0^lMJxiIws6XhzJV7lcn(VU zfaHEb4SU79JLoA$yU{e52AL4|)GuU1Va41-d}pFn-9S^92AoQZr2<_uVyS-1gm$tl zM_ig*ABVo$nbZ%926{zKEAP|TgUazz-UB}MMPhvH-?2elAya-!_{*_-cz%xWI`d&^O$Rf@85N+`L(3y*!d@s&KLRdr=CRKYfXnJ_J6LX@Ss`jSz+x=^DIvrA4xSW{ z#9An2zVt8V&vDXdCzyY;d!$#T`q<*20MPIUepd`+0>(*zD|OBt=8cF|AsDSDGy+>9 z@)D+cI=XGu%{a4lC|cf65=yk2`k%tZD$FWqu9pwTFN%S+$^B8*%z*TxJ zmP#{%>ij#49jpif`m8UQh~Wdvp~oxHYUw58RwX=_0~ed>AT(`Av$rvifYrgEV&EoD zWJ5S$|FV)Dp2!yJ0?50IfeX@rk^(oW!i#$VBBy9;z(a$Q4H&tZC%WbN}^5*oY z=2hH}KC;PZv|{1FFN^bye@h#V!)C|V6`CIY@!6D3c2#us`r$rh4A~xKDB5#E{y|&4 z+wOPy9%g*cdIH_89zTJM&Zb$I;k~p*dqHA6484|OyM^R%L))S8N$%;wxZPsOz?6JD z=V%v-MgMcAIB0wHNl@Th%^B1WNl&u8$Rp!=F zi`wA%?iS6)-tN}kcUkgm+{5v1DyrehcqaO<(=moA*MawM1;(&2X~?VnFG6ydYy903 zVJ~P;XyQPQcucXFd!-~$Q3a$dfu{j)Y10}zTC5C6$3ChL&`#h`%7}wd|28qBUC|U< z!VkV51jYfEQOlwFH$}83?>QLu2q1yKq;|-Dn2W`~LH&$judi6@3M1;|S?=Y_Ky{OE zvm1)AvRm&7Uek$EwjIl7S(UAxvTeEW(66uv)c2imQ>mG^N-$^`&?wf~9ojG(;_Pav zeY%M?_jh^r_rVvY7iVh`m|JZY>_VqsC?kD+m6+eJzNF})#V>b@3t6SmLeHOWnwpxN zE6nMqTt>aZw$OjZu9Wct#f|rhl$a_87ox!nzCdUCMR5d;9D=bY45lj$DfmE?`ppVS z(SNyLntcw4k)yh!Dctm@v?j$80WFK$q&=U8^jKO1IdP1a7@++I_5^Oo11@Q-U6yiO z?r_TW9oUvZ)5;aDeHV9;YUY%qH3`m7x1$LcO zpO`+$CD!dEV?p@`c*yrSNyk}kdZ47yG=PM00GSf`8#h8x{o)lbvpT7BE@%c+E%x}| z>l+Kvzy;A5UmObup6#u?EL~v*js!9no61Fd zXEbEV9-^G!k7k;@3fmz8mBg~A;wIZ8-8wTwnudoepXKfCZ_w$%zX*}_uW5vHD)g=$ z_Ca8)mY7YurGu2()11w{qxKf}ErbCp(D6Mnl@C}?y;9i0TFa~ivNMfTAXzq=W$&E) z)Igg!^T3CC-mo&xg0etQAI|g$nLd07lfgUFF}9U4leMH6)m73; zSFPC`5ceGNc&Zd<8)BXrg6+R$^~V}bd$Y+kh5yJj?Kd!`{X6|hpM)@}nFZ6%IK|f3 z>=rbFqB09~u{CW8y=XS+rrl2CuQp^BxUkX)$G}COmD)9yEJTp;;3k{ek{YG?Fo}Lj z(np!jD(!^?^%C<*ZO5o{0h&=;q<*xjVtXr-XAj|P_U=aA zp|!i$d3HnCiniB_DZImD+g{$2p^TCt39XAIZdwL#A~JIetRAQ|mGqL^z0_&+q`ryA zgd)ZXTQdlYDuXf|4@`6E2ReiAvQQ$H3lPHKT$6zBWPftp;DRyZ=*z{TflL@m)Nxck zT2=2EBsxZUlJ|CWmp*AOIXA`Q8XQt%Yv=UJQX~>SWswu|=E)3xK?UsK&rBb}4y3)W zp`tIQMa}h-e9LkWdd?on-qJf#CvvqW4FB*W5%cx~v0eHjEVBypDE5=SVC6d0P z)b~b~dan}sWa`2VQh-W80VD8tsI^Zg&_MT4eQNqo3EwR1AuP>))>(cuO>xDg@t5w? z$8~-4W(NaM?J({uEe1u-hwJPvPem&aF0v{cqheEmkS5-WmXzCPO>9&X;bMyu+*|Wp zj!+^(FlHjoVW|tr@1_VWGy00AxKOc$2@Vu@%^I_4$jZtqdz{R(fuhNo_+*Ewd5T2gr_Ty6=0;maqVC%V?f;~{D?$#9z1>G#kYwi_y88$wTcx)Kqn5FC zaUB&ZAmr&5&{PRv;Q2S@r^3%CyPT{k9X*st>azkyR^mBuqAide>L73tmKwQ+ze1V@ z&R_Lil5=mCE=)C2i?ox z=7aAHfcnnk{uzE!>F-*?C<%9=zr$8G{5C>Ma=rv}Lk668W29YENI-ytPpqvIzSRSe zaEeI3PD|uOh59^1r_*>L&xW7!?z1A@YAJFvzPS^(aGHm5LRGq>zTM)_2fvYP)X`Sp;pX=I+-dkW0dfD{Nn|3K zKa!t=fdcSF5CZu@#{pQz+__@W9k^fXj+krpxwX4ISa3hvQdSgAk5f{f0!$Mnk%p-) zj*pu$YnE2K?M}{|Z1n5vFo;53$J@!I!gTzotsmYupdFBeoE9wphtnn^{cL-Ge;+)m zD&A68Hr)f6-4pfCr(*<%W~)S@SBP^DGqbB1B*A4b+fZIwk|sqeXsS^-Qsxoc!nC1=>2bh ziVVcEJuTVpnBJ5(2T^cc-}*=ZwS4%E%|4ybdPaxbjHV)8!1<{gfPaVFb-!-Ox9NU5 z!upT1TTQZ>3hyOz&4!t*Z2vD57|P|TPbH(@s@N)`c@?ljtoCjsgA1B+66OHwXuX*z zyD{3fOJqe^#p(RC*gSL4a%rGjWf2xA;wk}mu(v-~pc~~)_C>jzS^vZ&_ym%I0D|T% zYUaqRpIP6o=i2Udkxsz);Ks{Di(H><&th|tn~{jw2~ER&xFRJ$i1(OvfVD~i^_^xc~b(PK6!`#9vjgQOBSPit`_7q+=>}36qi`IY8%-Ngx*7SCKxpswQ3N! zH>2FXoH>i?0%bAFr1fKykZ2Jw@9dS`Q~{?9xC{wf;t8KAl~!f^O--fRUynKBmfbB{_%hS`ozFcnsCU!xuu6%MTPe^BAP*F1AAjbJ_jxr!HTfo10+MB z<&2G8!^cM56QiVHQ^Up9#a0)(4t);2H*4ee zrznhQcpze@$WhFDEhuw1B>D(b@XDjuO2tK1PxIC%^~pVf;syrnDdUAJcn_rtyKfC=xS)7o zC~6jK8MmG5wrwCDN*sLpA5PdGN9W3Ir`T>=mTrYVAg2=fZGE8bDJyvsWwtWOK!Vib9zeFGOGM=9?$3vj_zoTfqV09x3w<=U8dxmx@E<&uNn34>p> zYC^g~yTL{;p9nZaeqKRNs zQjp}g!0R^&`BstTLqwiH{p^PbpFLCX5eq<4&y|JlXxcQQLFXG7fDk1C`Q&@%htgqQ zoh&1qbBoXB`-F%nrJY5IELC9t-SQ2@mBjQvg<1CmUuAnE#z0zFX?QcvFiI`MF73Yfqd`5X@1n=EoJtt)5;oBi#vqE9;PXm_}@@k2Sxk z^8GF>{VYW9$3#<-G1U_-8ab|KXl{od?}qm8kqlLPBS>;w>T7toNv{4=<2)-S_Wym? zu{N6BsL`yKK(|O(v8-{Ykn7-uNyqE@syTw%50h^OyK7oV{@%2{at^G%it(#2+qBGI!%{B|JCSKBhsv#N#%<1i3w7;fNG;H zfYRmT-iV>+%Gau!*ZhPQ)zxx~(3)zye|Z!Guwcv4%Gf6s|F<4GlWu3Phg*> zqQ()$36KH%WZ4?leZTxc7PDi<5H%#x9jHNP=&B$95eHv1R%7HfX! z<~SSYzd!qe-~QC9?}Tl&@!3r~Y9zxr zjCVqqOOL#?FKCiJdUY}?xKhZ=%e!yHY5t4H!5A+pDpHJEyURr0SL#QVgC}W^-2(&& z2XMo08>dj1C^XwKs5IPO6o-o8Zc z&^!Y2)n@W{=2-e=bLvZPo+6!;9WOx0mc#uYveBqgEdU;H?@LAsIA|-+1Q_Bq-!oRhGNkc6%B2$E#iLyCroBD&!*q1K(u6)shrkM!r&Z zep)aX6*~sCIAU>RWQ8WUdU0XF-tP$HX9SI)5-#z=Xc1WM18llRKlJiQlkM+N8__w_Muj(%(4dZRS?arGkWVI2`k+4gOl)Tn2&JmxYCe6bRJ9%XyaweUAk)7I*_QW#mI z0H_!t0em7f5oQszk5_9EO|(N_Xc39Gi68%*aeVa*$DCb<5`e}X>Q^u{yCOvff6%dl zUAh~}e;oJa{vxPXG?r?7620~H{D5W7K%!tu5^-_>)C6=j<7R!h*iws>vuQKWj;e%! z5LY$6=^WEfy=Vn-%$kry)5Y%_*l=p`loOzPUsr325J?}MW1G@1#qW}#CE7UCZwTo zhfj<0AI&GB!nv{ij8P*ZVnvAR-ylBBjeBb0f(e5>RT=IlY-z#2=s=^tjV*i2V}+2*A{Tz;i1Y`(_mm0#^Tf|O{i~kbJym8} zGO5U=ko55UsmIPMp&SWQr07Q~blOi&Y;8^!y8o%lT9{Aq%;%{pneYBvZ<*!EWy(St zAN_RpNM#%i=?^f(RAd}MhP056WBgNyFCIs>_ety#fQV6$o;>z1d9hYc$BR_GWs&cT z%6`jP|36&I|0!Jm|A8N=UD9=^ocs^muLz|38GD71j_iNy4Mrp1ABr|+{QN&~-!CK4 z`Fa#f5ca?IEPIjf|9{X=k8MGTdD1YS9wdD!c_B5r(4vn8JpcPgFlzib=Qi{ScqI7v z&goJ%KZ8Td^$Vo`_j{Q&_=S8=ORhj9+0zC3?;V-~bGF|>Nl8!20P;Zy-(x%>O8{bf zk3_ExliJ2c4=cG`}Kc;u%nDz`X>Vi`8X=J z{dZbOi})#@f&Kr-$CSKE?a8RAMW>2MY_*-aYwc4MbU{N8kT(VouX;Z0RxuBxSi$A7eiiM&dN&uiI# z$uRgHHCZU$x5mw1R9TQ8@G=`(@Gd%ZLH&#f@g54o{H}#H?o!L1UD*;VWD(>bopC_0 zT#<_(ZnY?n69oKg`V*nzV+PSzfuEs=pXW_k;4PA~o2|SF%GLEne zHWHG=JWwe3x3Seqqtgr7eU1CGeL&W12-}R=TG<^tbK}KYh_Ah(O=w%dN^RMU=OLHI z;uIguHS1d?X&NjG-mHiH5#{Ou@zKb8@cmyl(o0y`Lt1bU3$fcyhAYre+cVy_|lkv+Ed#F|*Z~Cp5R~Od8ndY*@D> zoLZX z3S?!hGl5L6+rhRH<#DKqzfH-2NuT!|)~zbAE{t4$ATQE#_*lb-xs|gzdOzb%_=W-P zU&OS;A>mFop3bpW#N@Y~I6H18?fgMWko)Wxcw2rwtX5ij!w>-e%j|e)H)lQMvw7<7 zdV7iX_IFGn8FPuw-VVt<$_DCQ&+f6Hu zSfEX5_-$VHQZAI>gU`K^lKsV%UKKp-y7suTH^pYI5n*nkG?8t+A;b%r3P%4JKng!7 z>Viu_6B$C*U26<>X6YS}@VyE`dyt*k(UgRM2JqBKoud8ei-CHHiuhYZj`i zXB(_BNk*ReW2x6S)HAJ{t@d*VcdH+mQR|8PJLIBArUQVJRjLFA2XXert%h=QM>}HbWYwhmM zH6WAp3zr=l+$Z^-DJoVykkBQ23`kF%c741r$gx) zvcjEugGfv&chi6q6e&x#B zzeAG`N0xURu&LIB6{jV-r_gu0d3YzxK?a}ak!4caMRnm;ubP}$U#aAId@v*?BPXSJ zi5%5IS!;D{LcZ-g*r&VnK;~zYaZRYx>TTyLAzNzI7P9hc8x%7C3GgQ_UQ>!$X#;~C zGYPw0U&&Flau<5h;dl2VJ7^6BWAc4M^??za*wAmfMt3ETw3LWWEo<{t=MI42Uu3GH z%56P{ZfM9$M>y#DHI^?y+%eq0889-Oj=<;% zT;o1k0-p>YSMM)+JW}gyUa7d%AmeaLwkd0byt$@&ARpTbkMbS49ArIvT57f5ecvTd zqW&k*^C}PBj!X+ z`?YI7yU)93ElXr&eBO{^$k3ZDp!u{0CQ(T!ChSne8Q33*9bD_}`L8TKrZryzhIjJ^ z+lDR{i!^4{be(&MRJ|LXi z0vga);lkJlrsw0A#lD+bB((e6PC2mfI3k^E92H8pCY;q=nAX&B14*{uCl~FY*)OR3 ztPqkUobmh(W;5^2D&@WKWRT?R!j_jtrU>R`KhHHU!TN&Pe?$5<0yFpVJx12BzuXv< zA2*e&$5uv+F}64aaW3a7OnHcBmQ1nBwCuj#e+5e1$*)9^NuITt=Vt2|c*Sp+`pVwD z(K$1R#cIjn=v-Wa36=~IZ1O+Z6<_}2TYe_?9Rt=%H1aT~(`3K)X4n29dWP2pe~nle zZ)SQK7|QNj)s-_KoPpu@I8>2p&%5ZG&=tWwBb7Z-=q_sO2DM=&k7r{J+$1FQ^efL8 zL2DkA{DvhSirntJk#m>q%`{qh{ry!?&k*K^doHqA(Y(>i3dGFQ zU$>t4H3OFB$E?pOS>ce<5SZT&JBlj@o-@Lj#$RRLm%IBxDNA+wy1cqwXASU=si?3$ zAh5<{6La}ZN8sf6Uom~1wuL)ns;%Uw+H;(+MOUy^P4$jAGj(HtKm3Ie-xm=`%_YOAGtqs_d+yrMszUeMPo|B)*r_LupC!ZIwQk4>9MH4qyF9IWwsUMnhOG_mWv{AI#%p zQ?W2|GJ`i8psCF#CWumgWkLymv7HJVJ0*ZE3*op>!UZ5R6kffUWh0iB3gnU{m#lC$|c}CTgLnvQpl+dIqmD5BUNkCJ3RJb%EC; z)$K9E-s%FfCEow-1yJYH8+}xHZ7MTbTBJi>Qb5ipgh|&%-x@2-wWnoNQUpNgdJVu&T^J%}Qgp*fx5i)#xzGu`0AlEyUDJ z@KZIpeam8Wm8CA4yz6FeSh20pA1~}zegO>-csCdON~hQG?YV+RUuS2oH;-ga-|#<= z9U@f`Tvy(iQ_;tIO7DYi_|40fQ?)!}m3EbW-CN~;CS5b@0-)czNeX6u8Zv*XLUuOg z?Qv(_xV^~@-5_WIV(nkV_N zqH6KRyq~Gi^P{!*EJ8Ryzo<;VR8yE^mZO-^a)EN7cB9p=E|%6JUeaGbor>YMk=t#_ z_Bqi&N@-MSFPK`6tNwi>rSMB#dQasr$;V|q-0$^(msvbcfm*tch`ZtX>F$odCRW$x zmYGqt6uz^(cV}a@%X_w2?zL!491|*4A;a(Uynh;ukO`o($5?MDxwO=rxr*cQ%sN>j z*S&4E<|KC2-M*)h69+~_FLmgG~yngC=SRC?On zsQWT*eCjcB8jdOSUQtKiz64$4(|xOU6PW^Pq_e|`rr#5LzVm18z-ZcKwNCH4<|=gv z5-skoND?FzeEDJNU8h^NJs)AzH&zDr1dou^j?((K--{Mm=_C&$qQ;kco7BJ|z0~05 ze6J2_s7=wL1+vi6Vz+GR&mA#i1eO(245(H9Ibpw{T_ZP-AB6oJuXg2Y$DAfK|Mp7F ztoRD)UHagkYaOBH-zUn5v-e7H6_p%!LeIOMNW`s4l!o>lP-E~;fl zMHa9Tm(OYw#l>FS8#HddW*$1T*uf+AG5sCz=p7k)Iq_IOE+>vbdo_ojmAb!E*WU_x z0JS2stXNg=-@dv=;Rqd|~TL7NMToU%=?C6B0mWyfD1eJ)%!oL2M zectR30WM_a7}@n}j&Y8}mDsn&dkCtN9~;FaGO~t|XXjjv7augbp1F6V%y}9TH>X+zQmS8EwJo3_ z{KhO&KJR05iO56qaOR=kKz5IWqLnu-irNlKn2RX*wIcH&-(L1e$SNGvaR2zxJ6&($ z?mE?z!ok74O!IuoED?)PUM&W%J5u%gt{mwFFmE_^*%RbZK>wQmSCM4;X{iKoz3}-x zcoRTQTOo&b>^jHEt)ZcnxTvoVEg#4O4czeTh(LZ%8i55BhV`V>{a z;V1M})nCER@`UsY*7PrJ40k^k^HWl3uGuJZa?Cl)`4^JNY+IlcU%KDFa*GPPwq&CJ zDfee>7}MC)rxl@}#$5TQ+G2mZp5q|KsA_XvN7=f<))S-W50=%0>N)Q#@wd4-RGHO; z6U~h#_Hfgm&(v38zu zrGv@BE}PHhV!oFw4eKP_Cs^fW+X54QqxEqR^8{=zRZqdD!AsZ5vJ^YzFSJocwK^Go z18)50?XnK9atDMD&zelr2plz^mr>#^*qqDWR$3nRwoqGl!SzT?aOvCz_qw(BR^ z0GyBs#l@PUcA_Tk@}Ut#!LTLpqLrpH$tlR1f~W~`w$|h0c7c#|FbbXAPw80Wki0)WioiVwEW}`Rx=QOt?c4;H3A*j# zr)#3n#OALI*fivL@ARa9_*TWldUso4mR9e68ATHXDUp0ote0?(n6lk7SWpyZbZB`a zK=<2j{TZ{st^VXmCrJs-yVaK2E3=(o@oCGp%TIjwgF>ee;m@<9jKE9bU57ddyd_82 zM9`h8e0G*MSygB%o<+}!4jp~+X0 z;W-)wG$v5>g-NrH(2;aKRUzX#iFdbzh*16_%GRJk5j~xbfkKGB+oFst8EZwLTaevU zR7-7v58fi)siz$TWe-_Sjm=tT_G#}t#zypq%=A}A796kes$Av_ajz!woSLlb1qxT6jWT-ijhr>g9AUvgfU8F|ydQn#X3O{#3zOj2^`z*!+ z`g%LjZbz*r(vOSfC?*>5#nelQnez#z_Bah3uNUYZGs7?^%t3bP(p;M{a~fWAIq;se zb%DCflTxvn?Bq%hzqRMQYwP^xqLX}Ff%BB`%#nAFs2>uDE!6hPO1BK6q%K^NWJjy( zt)>RoOm32#@Qp{((u3em%%Z$gIJF<$ZBKmj%@&Wpe@a@41GJQxzJUlXrK_!E>E+-K zUUGP5X-rQFqDZ7o3L&=Ka1i}11e##wC~3p};UUDK_xRmCl4sPm{JPMdx{!d^q{+mD z0V`Z^p>0{`%~renNnGs` z?BJoJcC5bBu0Hchd)>P0?2N@LEIx$+RU`VGnAbH7ahMoYuhtg8H%LMbp_CJz6C#%r z&KX$fpp9qPLZcubQB3DOA3fkuGodl5qC+0aE4)khdOrSaD2vPr8Zqx1Icnw8OKsg* z7us7cd4o;QnrS2<{c1oR7tZ!D@cTC1eo7Kzp=(-!O6N*~I8^BEKaR=!q)7tiVv{~WA6#U!Y(PSIG`DZrTQwy&H-eOAH_z-go`iGOOV8xA=Nbfb~ zoFTjk-dX}^jn8Q>zyAQ(@^Tt=uoh-;j=GE8ujAMxJ_mN;6Zek#eNl|z_qf^yb(#R) zCEz$xxbj9D7|VqA5)0}uExWsjq*a*lTNbt9eVD+0q^zRD|C% zQBpOFL2Ep;<@n1d(XT-?_c%0OHDn1Y0X&rT626dPs(}D6qQLK5 z(<3LGjQxD6yKSQEvDQI3T{&2$7DO4a&i+Q1VgXF`xnUE2gelQM zI%-0Nh&n>04Kom;O$&5u!oUcw1tPvr0hYv+gyeZOoQZP~TF=S{RnN&p5uWE*6(^w) zd)8mBuRgAKdim5NfFiBkM=X=UUwuOf0DsAu7h8L4uXT6#VpB~e2-)L2t4tQP|VwW#JEK%a?s2m{yXT^JCy(*d2mGTZ6i7AT56~}-JqdX(94(Ee17=S+Dj_@PkPf#3V_dDQ6uN?<}?vc4h@E|au z934gk#^YYY_X)M)R_djY|?)dy^AwOS#@~O3UHw004Z^Syyoll+FHz>z z^FDLT!JL_6Oo!K$c+Dh}f4z6RD5MXDIK}y1^3!Woc5;h?3KhX`x%74S<86YQSUQs* zl9H2c;k<>mad$DjlXhZ*lvr1DHE}5V>Gn>piBDoGF`{NIipD3V7{H2@$(Y_*|XCuP2m`2R|jYX?9#5|iJ|TqxAp>b zY3+bKKiI_N(ar7cB9efDbI?bC4b!tJh?{86UuZ6xilxQL;&&p5@rz?XE&*qT>>S#~ zNH-?NaiUdbSVG2Zu0?wie&^Kq({yOF?YQf+w9h2Wy?np;o$r@>=>TCBhT_4X!gB=NvAptS&N@C2E6NH05@8^YA zQS6HGILFC(6*ih&Z2iO?lJiDVw9FE+GLP+h=wGdD={l=edHE@=fR_dC-K|WxAYMx+ zAx)EE%(=5Gu`QWa}lcXlv=Dp1ENi#ASj6fGCm zyZZ1^#qOJhWKEJUEWlS;UTJkb`)OE-@AtoiT3)VcMnXh$>Dcr;VPE)sW7A z>Ra0FuB}Jx(fVF%8O4KubMv#}?V7pycFD4tZh{$(=C7L3vr67Ds4I1Sr)rAF20orL z7v9}zCB<=or~n%ijCj@uP^C=CJ-Sckn+Z_oSoP|IfD*;< zYOGdhL`YT4a+;W=nu3OL@qjx3uRIel0VSZ}XJ!%qhBlW#8;j3eJmttdLKux_fBaDv zAL+(|g;@(4D52B1U3*}Vm{K`RhD&9@8k&e)L2D1d3(@?4_;9d5lam1RcnJb-9@lZS z?Zhxf+%EgNDZKMfcKIdTr==l&dX&Y24E=n!cpR1^b%l4A1neZ zX)l|YCJ;%h<`s_rutd-p`U$;|TtZYf^#sLRv6L|96OS5sY;^af+Vu3fv7D#GzPG)>cHaAC zzz|Jany<_;!W4LNI1294>yjCpa6lI8vgzA(EbI}vAQIDF0%iRWx{8Fl-GN?tbN>s# z-JcH_C9Ke3^%#qzjG_p}2DHccJz@Uke#bMtUwJYAfF?);RVJ39Eb@wgE$sCzsp(0! z_mNv|{)KNLboPQ%QXel1+*8tXEYjTsuq$2(1*VV!PwyE*s!{xK6Qpe*00KiQ#!044 zuUt;xt|DBPh5==O8T+^fO@ny`0+Ww~L?Rvm1$^ijUCW-fW7gNv?BL~|6Oo7@>|ySyhzErm6B0LpaL!z*srRy&ZE=o+>F z9S~L$+Q7>Kpg?4P`?V->V}#c^uY+hs08kT^0*^{ij7!sJFJ2Y^DQ~yW>pk2r;88o& zI8r?H9mTvT>Q9xl2&*J8Bskp5M$dCTrj^Gb93vgatZ6H2Jny-mb>TZ$3bfD)mRw_n z%Wt5UPp=HCh29zJK}F$t>Yd>&0Dc^nXB^S(?%bm~LIF!;+-tC>-M0Mti+1T>-F`}{ zxJ(`B8;-U2 z+HJ?6!)wbd5n%snSC8HNnzfik)DX;Ov7I%u+-7Zf+CBx7jh{Ws{^PM7cI_FxL?}di zSO50KNvEhMRaP?9``u0T*12RpW|%&^bp5mTgV&tLVg@Xb5`Atlf@DqgQG5MU&)AU* zF0hS9rrBfrn(UI5({VoyrnNx^Uq^X=*OO1$$k&)k&TPYa)@LogVbJca}B~_RzL?9mCuSy@YvN2OBjFD3RVrGGh#{c51JxvLj#oXG?qLX-nF_({gs~z*~UDGoY2W zA=H>SG~!K%Tdff-+L9u6WlgQUb?sS(G0K5ga3BwsJ_PW4&O6J_*>}(^XVj{)3v7FB zhu4X`q13yIFbgKOd9RCe5~Q8Iz4lZuz*L!SS$p=_XO}Lrbbwt^-Ic$#Ubcly;Q6Qq z7;9@7VJ)^h5BG+#66FoBM=0}v%G}aoDSNkD!t>AA@U6F6)84&2JvEYMkai!vo8DnC zfygW~ku<348aVto0q9YUS~m%Q)Z!h4{J`%I+PBV=blo>VPUxYeuCfmZGLGfl=Hqz? zI3!GTZ>$HcM`!}pe)u=~IVIAbN55x7SP7(j>6?Vr0$q*K$RwjlLfWgTOKDX5*7%sV zU{TPXcF(g;6aQ-EBakOA@^O<2xDo5^3(z&D7l1vE62M?7*)-LN6K|MER6b>+fVQ>jPOu%NjsFW}Qhh#~uHjKER$b>hp^lE8q_jLH?3Us_?Mvlp|U=_VNWLnU|dvfdHvM(KAF z8oOdTr=oeM@(yY2Iwv5P;L$TP7c%LA81H(2IzH~Ly+;`kCbA;`WY=%&ZnVO}LWE4O z70q1EebH{UUiT`c-lI$qleTu|GPCn9v_XX4KtG;51B1Rfz$5TB8_UbI!-SL20JZWNkia0X0UFMr3lN>BhrsV+%mHY?AKP&F zSk%^T^DCxLXzVAxMqs~gKIX8tHnaQ$JBsgbcP~-<$U|lBW59QSt(W)MnzQ+)wYcx4 z*>FR{iP=o*-+isSnK8K=-X`2EjX%ne&Myw^&Y&ffK!{W^|b6Nu@Me-i*NlMP^`_Nd{g!Imd%2)EzKo+9w$p{ITd zf6C+(sG_d~dndGEX~fdnwJC*3e8;0c2A~COCloui`zX*y$sB-Q6bqWVW01&78o?3c z(A}S6iM|%90R<(Ncve*^p^-@Y=>yKir*B5l0Qb5lOa zEMQc#`A*Ex^|3dc^!~(t;2)ex8u8H6^QL14=(fV*LOXnHkDak_6%DrCj=<#UtU@57 z=HwMw+3ba0F*1#eX^@Xi_G{U|Q=$xcsH)bQn_8_HUwNoSdBm9f1aM`C7ts|9Tqc=< zvNNxfH}?jn^V^pRHtiSpqt>xN@Oks- zjb&rY47Pjz+VGa=EpGmNOUp)BaI9Y1AY&dSgj>yQ-(kfGn9S%gX>dt3_<}@b=1_OD zp4(&Tn`^M(^jTkI9l692i+q4VNY?elFquYujV)V=cObxis2W?O`WaIrb=BNw3FCy^ zO~lj6!B|uPM9|>f-tJU^ML=6&pB2OtJ;~tA&0Ed4#O4oQV3#HUQVTJQv7rk+E?v4`ivA6jk zZk%`nK>|@i^a$V>14{rH(9{j3^H%x{P>n6PDV8=O9Fp6idhV)^n8xl|k)w`-Mo%94 zFWTuvvc03YwC%W;9@(>uTcfe-p=i=Ax>3)1&M2#GJAP?d<*O|hJNzi7Q)%d>l`C01 z8YPdj=T0(hB|gi%5Gs#LN76CS;*k)=TIw&hp8$8$f~KY?3L@@W;SV(CRFdQ9#q zn_=~BRe))`9j@E$Q}`8?Py?!Ev*)ATGYA6Hx?d+CBCS1z)tFKVQIL+-{`0#YwGaN| zx9$IZ{g?LD@7zJy-~k5?J)^KLu6J(VZEJq?Ba6TP zLF?jJ+I%nXNKT@TS&K6hlTT+$7a&cy6yf@U{CSV`m#W5Q>tpaWqxy)I#mnV%#LKC& zs@#LTs~7XnNO=XOn+4X78BeC4sgTr#@2>rC6b0ck8Zvd`CP&6-g4P~uZmt_TAG_v0 zs)&yCYetv>J;GFU09)F-?C3xkzXc(BR?Q!}3e0gW(0?Z_`30~J*Cy_vUYobw;rB$Z_w(jFxtE3$uRIMfM?@>)MYc2L3v1Dt9tfM z>M)c>zqtJ zs=y@PrE7j4&&Y4|Ky{t{$1i?sAN<%S?dNy=%1Y-hw@-ZGKV4ety5CRUu`tlw$Xjr*(|Pn_Pa7Mr>3Vk+-tb$Cvi)-Qf=lwM1hPV)UoN$ZB= z-E=~14FRvV?%sZU^z(?PFS?}KgL|qOVC`_)pO{}N^gGzlWKUKdbDHF5rSn{l3t0_x zb^^R*_up%|t5(_KZO>ab;5-O04`7;+m%+?wh1k!Bt%2~!_ifu{>CiaV5cD4TdTZwD z&o^yn&@|OGniUIYIk5MutTOpT%iPOY%7|!;DXo*|6jos>q`{6um}GWhe^tEjD34Hn z0lRx>ocJATxB}r3EvhZ;9e^IDhXT0kShG(9>gdb)emA|ufE#d^)-FJoP~f@oVFZJo z^F_MJ&)+4`kr_r{PJK`&|IM+44`yTQZ)WhCp7&%;T8z5sz%$TPJs2r=a22!@&naX{ zFmY(SjSlSP@3xg!-3*_n_^jY$+Jt)fQV?Cp#=u>i3Hcp7RS!`}SN{5^ zp4u%4NU0|icL#u{JQ4|dDr~X}u-MIDt5x6q_YAD|(c@soEbU?OMK{{Y>pw)9@tn~Z zflNs#RPL}K7WeJ~3MAOpUboZwI-B*nlTI%i+%-{X))`j>;F~$uc2+-aor8^hOjzP7 zjrBM+)men|$sB6re7tV}u}J%U%m9VOCANS6K6~u3M{Vw$S@!tm-F6f$Gc_%Md9t*8 zZ1Y+~Bb`-NGJLP8-E3(76WTZ+m6DujcRlh9gSR;>8r*63+;cax1qtFAG)E+*>6l}Dtazdb%Pa}>y!bhMk`@L-Yo*zP@y}8*s z8=I_-Z<5!~R7jn*57S%egLh<;Rnt;;J=Vm;=`??VF7+m}N^BdKX-1$dfS2Yjz~-E5 z=iD1i2-?Spu4E zq$O|1u|v2(*LnH9kPhs89-t_*h5#}$IBv7gy~$QwNf=!zd$jKqdfvV+s@gbs69$t7 zztjxhE;FysU`HX6pl~2k{Xi=RdF?qCp!e4Auo29((yC+0`(6TOo(*?K_j;V0w0Orr z%Py!1qm)BZUbOe>;coYgnA+rGnf*mg(lJKt&a zkB9(F8vWM!)hieBthDNw){aj-U=(XKsvz0jha=LEl($(A6La<-X|QI(^xk&cZQeNK zJtKF^r?>32t1dn#NNv>ux%7@+L!>#{jBmb&n&Jok-!AA)L< zB#H=FkJ$4^sx1?{bSvf%d9%cEE(vX0o-@+mP~>g(l39!)wAm5t+Pfgq+kbGkomo+0 zMcEnF(Ai^~k2c#NHrbKRE?ZcXWh)oXWL2sG=hOjg=nL<^&oYaOY`lX(X7*>AKYZW+8w4>cb>!U6cSW@qb z%U8R*rW&alo)6NZu}fo;chru?221Yfup@j|QH<*+3Eh8RF$BQfwGRL+;%nN#1h7WI z6m1!l@kawl2UDXv({S%FjeT6#+2R2AaoOnIZ(U3pZKe)FfVO~N_sEO`z`J<{?LH|< z8a{1-wj_-(c-aWZu&*ojJ4%aY$HpfN(iVdjpU8~Xj+zH7fA(d+@3UU@bM19|=~?iN zvUTzO>H)dd&Zo+6d~jftF@v?X;+prkyKHQwH}RFsHUb{uj<7+>Tt6#xU5ONeC`cmb4!9|1>#0Fd(6jlwGZTz9B8^h?#Ny@bn#L(DOuEEg|Mu}tD`#QfwX zWO}OBTkRuXwFR&HJiS$6;(#r=^zGKyR%2~@A8?bV%wrmJk#!^FN)^*)v{dQKNv8zd zC6yLmaFcDl@9QWG11>$?1qq@`a~FXqE*}<%%n#KQ#E!Q{W-#_L*+`Wld#ea5*CP#v zXfRX*u9{5dCK)%uAerg5C{H!0(UEu?MheR-RSinpFkmzQxJimji}jaLf)u)G)wPYz z94@`d*Sl2YGp3iYm&>NiJR10r5RspLFPcNaj3qX2_2g;*1i!NmfORJ(l4P{^Rwh;r z0q!zBCIgfaHlG&Fck!QvNS4?`8+YRc({4T3vL8i@Rs)bd6KQIr-QBjRG}o@Wa0Mn8 z*?l>WkRCp;&lc_7WqlW4Y9l-=CM@Bhyhk3kwj1AQN!&ZeyH+fjNjAgw`1UFr%gD5y zja|0AkuJX)7SD_^fSQA2n()=K=>cX8mRluxjrW0gomUaHp!S&2GPAuPv#}u{T~l-+38T(Y1I* ziVX2)P$qE4SocZ%y)jehn3I30wJtbj|Y2Er?Hf{Np zmcMYFiw6mw#aF!7o^9C8!c29(b}-EV`cu7RAAJL6nWm7*N&Y=0;I4PiUUt46c>W=) zsoG_kg*fp$L4%)ZOx&p04X){4_h#Wa2g2n<-ZzS{7-JKW)UYx#l8Nu3rTx%I8I%+734BDr;P0wp@G$u(fRJlD zdglZ)&~*ji+i=}m_x88DMt_oYJ}r+8Qdaqq3^z4eLPv@XmCvNtge{hDOlBWJ1NM0X zFroJP+KbOwXme{@?LbYFHKK(}6VfD_GF%@Qt(kALD~cUxHQ=i1ilBGtPvx2lm)q^1}irAIQ22vQ+v&0Ha5`01QrwzK-?oS z;$`6rXSi|`_>7ux{%vgOwwph7z^2W;)_(ni&CC_pZSQ&0A`}x$Edq806C0PX6S(VH zHus)EBbTYhJ!1fOKs_;W$UgaRJ8i?>MOHwsYV&6wv7dfv8Rr2yJtM(FpGn~meNfd0 zS0#Al*uWf)_FdN9xXp6PR!urG3rxjASYX^~NIVG}(w^bX$e2}J@FoW%F~-+N0~Av@d<>76<*m{pd$++qSKC_POT=A;7IMV0X)d>J9ph z4z^RD{04WTCV%JK+V&CK(volg{4XE0Y12yWQ=e+L=Z-vKYb%q%l2B#B8P#L+^FOoV zB`AlKLs4vVie^~F*>ASP58YzJDO&0i+@hQ+yS`7~tKTmtoicD2D9>Acg&o}V-vFy5 zARGH({G|1LP{s)z)7~Y0bst#Zbw*X(S=k@hE zMzc|+%Ufm)`?7}^z|K3)Ad>P_MJYB-7c(<6G|N;K1=va0xPVYrqbf530#{2(dp9AG zGaYOuNiDExvnGd!%!!pf0O-+S#gu}ngl`%zo`wdFR>wBTrdg_Crmh-@v>0aILbrmV zY&*X=$L-wuRt;QdGIk+NuLB#n09W+~foup{{DQ534+E*{1&u*7Y3>n(aY=uVr9b(k zb**ENnRlr=#s(0)%xXPrRi!N>Qj!2$N#hq1_yf>af~km(#P!hHnAxxD#yd&fM^_w;}4wy<()nk6`9PDcO6d)9zfKXrKMU z`>miL&p!UKBX;kGI=k_TxtI&6M^%iZdu~ETiIpwC%-g#(b~#;0s0!ERYAuLxn(qBA>f|O4A!!x7hBzy-{9(d$lC*t3eM=2c<0s9a%j&l zBb_pER~axpwn2% zT>`=h4R4B2f@5t;PB`ClKiAx45^&ER4w=Ugx~@g@d>nN;j+Quk{iF8S>NS?G z3LuG=%0ISA7%25dL0 z9YyCGS40G!)Q>AO(g68RS0tdN;^sWLrN{O)?y=8*{_}2*I@&m9hnZ}47JNG@;C6tQ zX$%!rHg~mp-=GNRg593*9Py*J<8YrfwhY*Jzxy3;2X*yL_QaNcd*fByDgnwr2}mhH zaq@Ksw?AnEC5nKDljT`-(ejh$`*y$>-JolXAA@|VZSP^gI zF@Gf@C<3^PJfR*F$+M*w<%hQR+;h*lLa1^j(Q_NX4v)^6x2aHIaU1Lej8961X!^*4N{J znOhi@LVT=i#eB8wy=6oTT(NYnJ+tKy%i0CPYTz>yx5`yZE6FNKC;=1_ZyZhDgZeMl>F1cRvQJ5oa@g<6otF8g^Bn_LxR(Kgk+4S*|(^1b?GwG{23 zng5I)hih@xhX+gPrl)NW!ej6-jR0nM^dK*_Fb#}G4l~K9s>#JLn;5QNlO|u z4Yqgog#Bn~iQtehWY2He;_n*7T(Q3fvjyj5>z5KGJ`aPu9H?wj&0RGw+1b^;(}tOm zos`A|!by}AUS#H~>uvX=xBGI1Dw;x#L`G=m6)S1S(y+r8gq1#4N(0OzbQfCRv>$+%bFr#<4}v<6N1&_zynMVv?+shLW$27g#nWARHI;E)reKB zx{^>UXS}SMIHlmOK>A97h4l+v0rN*w?ICk;cgA;m2LkDX5pnN+`}OwZvtP6Zx;3dR z_EAgM>82~sws~{PAPn)<`EY5@@|aQU7ht2H)Ar>~BwIQzbO3`U2c%$*k?Y?ZuU%^o zKDE>8k2Mk#Cd-!ry!17z?3~q$To_17i`i8H-sm{)X>YNv)&{TS@E!UDzJYhhW-V-+ zOiBK{BB|I}NoEddz={y*;I5ga?n)P~JGh6R`YZ@2#%C{MpOVu;`@qOr8EfZd*Vyj% zHrIx98;@{1KSUR99b0{YC1z#21`~Qzp)|@@zjQ1AC-T%!zk?gJ_xlj80|+9OU1yU4 zcljjgIlqUxnaruJW+PqhFh-;gQX}RMKUHph1@v?x=zGQh0mhUf3BDX<25!9Kt)Y=l zYv}~xrIo9{;`J6aL3$pdw$4+(?i){=5MX0-Z|xZNkQoI9EUeA@ySn?W6JP!XYcG)}s+3Ql}JlS+g!Ci%RR^|ir4FVG}Piw=x|7pz%q|MI!_+E>5%OY31q=uKCjYk%{OYaGlq;M&E&A1BBPy+x$3dw5FyJ z+nq+yk2gg>D?!N}Qc)y_i0P5dY|PxkKUvEJU1THvmxh+v-$y_2W>|h z4{+l)dB31*Y{_UxlR5RZ?+06rOpP9mgr7IQYl$DO$E zrs6^4w2wLqgs=kA)Dhw$xj-6l2hlxm-$Q$bGaO_DT6!;JwB$raV|1T~IS}L_;I0_w@;DK(gBgGiAYWHToBY~;=bE8EL&0OFx zhW+*pSFEvhXD`A=-)FhF$%V#Y){PB(cz~ezNK;L8Y451D85LzrP-0RMjiTvTlSdQG z&(A`VVg|y?CJiviz&qoT3zpk?YZf6*$E>tO{`Oj?EZBPWc9l`WXP9V~2X{Pe-EGaB z4Gqlsh3guG)Zmx~cqdz$4r3Ohz4tKCsfrXs590hQZ<9oXoow!+e_+wTo8chFw&9CH zO;Afhkl4-9j~(|Fv&fr&FH9%o@w<;rWaHWCk3X(lpszBbT(MmoU0$E<3MwgFMGAbP zt6-D~*2{1+o6M=d<47nTg?7^iJQntT!heed;x}pL8OdXe3B_CYa0);}uLpH4l^K}R ziijQva6kk=NGM-kX2}y~rl}g*}>KU|>JVJ2DlpvE1UNSPz zgjhD>394BFNOcjd2Z2$4M|Jp)N%*&r&>(OB%#W?7qXjK|zy9#WlCIq{NO9yGlJ?Jtxh5)v7bxlSbZJ0`%CJkbcKf;gTyYYx)_u zj50Bgc>-g~7lAmZm=Gt8v^8)=8vH1gkq^V>Xs!<>@+>%~9(Dfwi`@-XYuJkBG9`~9 zcq5oRulma`SW%J24w5aW@YM18sRefyj21w|rqt>KVv<$y(+}-@mXGOUv5v()sK7-B z6Lt3$8zPG}5i_Il!zCbOj!{KwMI}Wn-26NXPW<9tyZV}ScI9=KvCwae-S(e9cYpNv zzW=T6*FMA~g+U0GiAIzNNXV9!M@@*(BC0CQ89=Xw!Mod=t!mdM_ANRAqeN}^lwI~} ztx1}kOuTvqpe9?IK5MpJ^??uAGxyvBtp;smF6%VHu<|xZpvNPi4>S%y9KQX8uTXms zHPpbNkq46^pHYN`8oT?*Qx9DABzBjLGd4i0V}XlumzhgRt3V~7B}t3XvW61Ueucg6 zSMvOLr}lbvoHTa?kv2NT%tA(^oim$tc@yk{bI-A|MT`8o$@oWK(cj(dJs7dG_+9h~ zW)(DN{`q(N$1(;&4>2=!#1>S<*;D(++zhE+Pkz>z%`8Ft!|oN2TBxUDF=WQ$=&Mhd zYSgnNU+AeiqgmO4azaZmD5`lGn%kkN?aL}L8{pTjiEhsPA|Aipl%w*gWbDJ{mk3ye z`^O|tSgn6(LQyWx(uRH94chx`RA>|E4h<#5VCE$3Ij?=~_4e3?r|_EV!o?Qt zA4iTGZn(kg%R!y{)JDX!C#D2~3RYh8S=;{I*N1z#413#}S#fsnLEIdPS(TebB-xH` zyKE`F1ZK2jd5g9oJY%v;t!UZxI6UBxKphC|Wv&sK)bhC#|V#uzX^*7qG&TcZbPKG^@d7Qm(6|`1=ksi#K=W8q1zDA4L_H zQ|{q$QYeFjtg2h@_Zk7D1}JYYAjeDW!gJ5IFWvSHOQE-vOjmj`CyhU7T>&|@$c0Tj zuHKH8iHw&?L>tN7IrZHf!(nzMju7{6>LN^bCN6p1_WJWi4978V`0+tXK%bzw`$Qx) zh3G&knesbqaz0oxiy6rCBDVc#CuSa&e;e+!OV14POU7AxFHUA1-su6wR5mv$c^(lASKC3d<^(U6za1LB&WTiPBb`MoHl$ z0Nq{6_`PQBna+jTx!LYMSI*)OYuBA;bLUqQjyKP>{5ak#pI3(w@`Ao$V1=%(+Qh(M zk9D;)v$S573mNZS@Y2|#9xj*!@V=?*HauyfK)w_MXfbPTaZHftL}S;i^-&l;0@F$} zbDkAN!jBhb!^sh7(s<7=ZAE!00oIn;&Ru(LKePDGKXawcn>*W?QFYPAY~tNJ_uBkf z<#sODBuJH|V!|BUe+a+aEIVfeu*v!-e|N>i6d=QdgOO3Y{H#QK$K{>& zt0xBS%-JLM{y#~gu`|Yz#%;8NnAUD+?ZO#a1C&y4NXNX4yxg8H8c~Ozc+04L>|1rj z);Ig`8wPE~JOa7l<1Y7LcblXk$h}g7eGcxl(NX;5#~933*@f%zNrc3nB1yBzwF;Yu zDq*jQkB%WwO76Ni9|H0L;Ppvr2T~5dzyzlEyyv|>zowv|V1kEvjC-gZNjdSLG!l~9 zjH(SPS;b`^#V5VRYB&75`>v0n$SyAGwl7>w8yHKm!W06yjnRWveeuu;z2K5nZ?V#I z-vO}WafjfSB|zhY?gT;)Su4`%TTVwhrQn{)qSU#ibF9633#JTai|Io|=m~H?{t3e{ zSJTmhfNVAKTJY&4-n)du#NY^omRTi})sKeoe-`*Ea^Xc+YQlj=l}9X>Zq;SiU+$86 z7!!_wTpGS2O-fUDLBYu}z+;qdSk3-zZibPxckPiIq-h0Uhwzf9RIVTMKKH~ysFu&0 zd^7isQ}Xz)2m+~BEfqSX0G301o5l>30;~EZ{~gY%K_^+`j;(eH3x2Fwd!Ey!gK>-T zN1tSYl{vQf%rj^>jQ(SmY9KgS+^_E@G;$f|SGmnn`6^CF(%lcTj3NWs+^;l`)tJ6_ z&*PS)F&4@ZOR;k3I93LYyF?Ha{eZg~md|R9Jun6K$(iNWdCWT<4wTZ0M*-4!OfXVv zq&X_Nf&=y4J&{q8kKB}Ke}2`VW#b#I@Ykq5PJi9&o-O3zRFa2`qmQ(2esf;egTh2l znMJW@mnGTlpTuRAsGJ44Y4jo#(puw0v;*}XkPy<;{aK!u;28njhq2p;WoSNlZp_rH zr$kBxs0ETT!D`ZDDj*pHca1xY1H9uJa}ebqzXnw`-$ojG#jKfhsA%W3cO?P8z{Bt5 zSmvz+db44Sgkxlclt5|tmDhjX64MK;=C@yFz5=e_n2b~6J1q?+mWfQbBIgWCWPONB zKWQ`8eTZ`?ThLyDLqbSBjtFIrFqWu$72oD`q*Ds+;=j4eUSoB8Hexr`j4uXqM%a9j z+bQ_9G$*mr@{}v=-Nh000G*lKvxt3kZhM z8dZ79UGLMtl9)c&JymBs%~ri{n+p=%L$)w{Fu%C%i}$%iRfT({Ymd#E3eaLC)8{Vb ziOHW7>jHI|kE0tZCIalmluG($CEcRrXE_jUdkF`E(Gyz^89gb%L zA3!Z)#NpeHG6V4d9%AlLH`2J{MmeY60r>=1Mzl)mCTQUTCu!&Ok^w5bh|x%C7=%4Y zAoPHo1-$1*UhbvAtk)6O*om}BOd7>k0cYTIdbE^1vtVJYxRZXLlUL~Da0ASv5l9ZA zAZpT)7EKkzVd+`7CyDQ-`Ea+Vd&xxh-!eYa&+oaHMxjUq^; zWJ!69pv_Al4NztUF;o5J=HnuH8q#s@J4Klv|Mk~>FjNF~%>}B7s7fN112@`+ z2I2fXd&L6p=_1ZJ!R>vJ1W&Vnx#GHL0S)41 zh#;H~N{PT&TD6|j>`3`r%Os}CgR7xG8aQ+ky&dEMdgYnG3PGk28v5r#1?K=XcDY?j zP-`Gpy@^r63XibHr~JML2$c)YFlmOolURgi_RE_Q`AXKAf&dnklv({zBBEyJVsZgk z>0PRACqo-)-$8kdg12~{YdUu#7OBj^C3GAxZ?(VNo%44lPxPSQ*iI(4CUz#q#I|jl z6WcZ?w(aDNZ5tEY#^$r%-E;PD*k8M=>r~f0r%&CkThH?{BWB&7DA)H!9(91h!TZZ@ z(~|#vR}OE-uIpht+(YMEY(i}|wMuZt8vvDaO2fn(8z&GvfJyBPAAau^`kK#E{_DZ7 z2pM5dnHd-~y>*F5Lrp&j{>OtNCi_;kaFG76Qrj$)ee+`NFP3&DPJKckT(w4hLkwqL zTlFd=W0PU#_reoMBtO^19L;gZo$gY@N|^3Zm^{Otui1?l;G9$?bECLGmv|w4mHHd& zRuy|;Q}JKi^~~WF`i%vvM-GrT-ygBDjD^9cfFK=Jg30BX2x^20=%~J3Vi(QaJRiy6 zPo0ISE}(fS;opn6n|wbd_nxTZ$60hJ-c-cQ_L?{Rx4vM~Mi%YCJ!Wx93%1%*%k8Sg z&ihDghR)gPzy~J}cS96?y2ks1yV?88U_FpMt!qy@h-_1#D~)VYT(cc80@d}?|5UV# z27&&DWP5HiYbRDZoL_`RO~Z1Qx|5Nev$X;T6-^=dh26g?(4Isfa_EwV^^a%RT96CN zK8gUGu{L+8uEPWmKEMTO>0VPT^%Mmd;1~P{hTVVCV>ZLY_j-~8g`*OMYg{fb~qhLTrb z;=c*n{Ik6Ixa|9}e9d=%(6*n&EHy@_CL&~nkYq>=+G=!XtBs`uX%KaO9yqt+*#Y9J zN^7)nlLbdlo;shnQ>m0g-};!{{Im*XK$I>GUQH6{%RfIR;`JLAFw_2njH-v2sqj&9 z=7Qwe%=YCkerb8bTt3fv*s3)9%$$ZYvH%)57E)m0&gAb@K209%gl6au^V(!xo(sg;9OJPv|jLon&w zH3xdDr0)|!&T~S{6vmKn3+rQlh?}Q z@8OF#jh`GIx=pE{hi!X^t3M%0n`Gxx1Rltq3l`YR;#M#|$j&aGJ0s$<(p4K+r^MxTue6Icd5hip;aJ%gnO9twF02G7-Ub{; z;QTzShnS;5>WDUrB=4|I>6@%WLh}M-%7`8CXEG zylI?C*g6>j`v40q+mDEwOHF6oM~eo~U2A2{WO_-QeP+4Am4T{c=joZ|*To^c5WVBZ zvtSi2$wBQK!&H5Q4nL<2H5)feZbOd$7cv~TLCOYNGilUhPb>eGlkgLfl8bI0<^or$%$&B4Omi4D1xgQz%@uF` zj9@X5S{QBKM^90rlXc@?f93h2`S;GwE-aehb4*#vkDMpd^{!o4ze5MWoBIg{97Vba zYeGVpOwceye1!hDdsbj-!4=`13cd!6@2F7Fvb%S;fVc9OmbsJ~T~l8IHUS~k@2m1M z`sK$phwcw*w~3z5d#FiefqqFkvazgw{ z_4Lt0v_ubtFPG9DX8GCSK2^ExwqD3rvKoxpbD{b+h`FRe6Rp-51~Xt_eVtMGi}9xu zp?+n!^P7ZJBcKas(6j53s*bm7{$`a) zhx=4w{n~|{VHtftNm43GKg{{;-ru3h)HTERm5j8Gfth0!{Sb|K2x@n*Jg#q}rG(!F zshwO{)#0rZh$m>ICjBG$m$`*i(_(7(Wc8o%QHu*4=Y==)p5K~%H0h3IC7~^Kxo(Rn zVkyFq>C9rWCY%3iw0PRQBAgy=kvawrh59G^(ik!W69}S6TjK+te=M7 zHZmdb{fXR%PW5`|4I<2Nq6BGd^^~oQ+;Gc;<@L8=a zzTx3AYl=u}R=vUFq0WWg=a|v5w`Eb z9wS&y3%v^Skm6%KG}gSXliW3U;s3fevjqwwxE}t&{HF0Sa9=d?+U!&(9PMN7_Hgi&T{m1BSQmvhFG6s*^xsXm+e88`H8E(?bkuV~T#-R_Oy;otE~+36=K0hO z)jkHR*nJntmBKq2G?pw@wi{}Z@z$C!dIw>RK;1z&jPTd?an5_{s$y#g0Xn-f=%|Cg ze5BGLlC2F)+GLC-2a=N;&eyCMdNFy$O8;fFBV|z|1qE*C8U+|2%P;$#5FKJ7l#h`X z=MY#R-PElC3DSM0dd@ZdK5kRrW0d}Y5JO?;l8myIhL%PS4h~j#^$gg2ot=De=QOO_ zz2qV|FKH2&g1+Qag09_~D_}|lmPf2L-&aa)&>w2TZ>p~Dnoy39j5Q{lkhA)stiNs8 zPVhp7b!=U_j$k{Pt?aQ$*$m-PBs98e;+BshZ~nA6M8!MJ7^8JMAK|OuY|Vy^K+F{` zYW0BrfY)_#eOUXm{NC1e!uuug@>#1Z83m}{X2Y|xx8S!~YvgZjK^s3hIQJBYiQIZ> zd3=x2aa;v9vGz-k{m$UasqGx{pQa+D`A6RVj0P(E%3CI^2TO zx9a8%>~R2JuTX1>+Qcid(LF>|yCBpB<{|PirUW2_fH+rMAxE2VVvLu%Yhkk5{90)^ zp<_F6}(H1=zAf53R$r2bhFIk`_M3!TZNOz@9G55mzCV|H39pQlyFrm zK}ONpEi3GZ=rz#XxymO8(;>7|0b=I*y~_;zsJ-dnt{Q)(b$(VKkI zxtC`yY-Z+G}+ zH#g_>Zw>Iu#jcUD4CCB#3pPpR+BM7Gzl9TRH%*VxJ#V;n_GlV1b%dKi1&h+hc9Eh%fXEU8?SVbPfO7LLSi9@x)v{Ti?`h)I z%E<>&MqyVW0B|;&&q}gl=L_Vomi#38;d6m_4(jG7-b3zSB!O{oDTaduvGGkkU+JJB z@}3cFd@-dqCXA+scq)p@0@bQ@j;7P_?yll^BME}}*i%ZP_%5?e^s)aUeVnb?hkLLM2aw~7S(I%l(n2sE{q)$5j5T`tsPWV#&2Z=Y)cqTGMU5b)hCU-q(bD6+ zF7sIC){P1iFkGGwGz+eshRKoU%bZnZ zt`~Ns`b5xhOAh6_k>j!y-5=eVSXxS1ieL$JUw$Fam?0a52coHjQ69&p)aBWL@54JV8%R z`RBnp?05_7#l9XnZciOUiQ9UX>8iH4Lf7&&aOrg}frPdr0QUh}DhBewQJn+J{BBFY zWPr*-K`O3XvRuhK%=d0)SKshs@@vzqcm`XB<%(R{vA1!RuX%oJL%#vUMTGl9C}HVz z^KBygaUwgXA%3bW%@CSK>c`w6`4bu8iSwRWbb12>?&p1z>*X1rNiq$?-PSqbZS`Xc zWCd>{+@xdt!K|$2DH17GalwPp*~^!KWqC#2Y0cNnSVFoUX%Q-KXO3W(YRD2gYAM=zfvcQg02V?1wWNbJ zzlp|FNKFhXIo|kgW-PVx4+2PaagTu2i}w|0@(~4T>u|RnKRs$JPs6IKDq)=s6rvV) z!*%0p{17dx2d2jZWqxOAMWNFxe#Z}P!j9sP@FV9+VakUuqbnZ3Id%1&@7Cj1WOL~g zJ#v0#3`k($x7+F8R`!5}Yu3Qmio;&YR#xi(gxUrW99O9J7#f)fCU2{0&a$cNX|v_v z>usvbjhwsrUoOVEq+MahQ@7Ut7EENa9A$9^UMjUiPFl%}`v<)9aEGR`(i~1UpV4cY zMVhKYwaDJ}_|Ni<;#i@GBQuxFG0kZE%5kFsz7i!A^qS(g`f1ZKj~BbjujA#u4MP<* zFWy>CgIZoyftXT!GS*zK_E0tzLCpcqr&Cb#Zuj?wC&;`lA9i1xj+*VYFrb%F^d@8~ znJKJ%pf;}{Pu-ogTCcO)V%eN*g?FXrJ=Xjty}ZA*L1Y{~dJ6*X)>Pp(Xg%IrTDcye@jYk5|JC;Kky-n{s(USAYem8%gIx~V3IDc_(_ zuI482u{p1cQHd&q&{^E0f}G)2j~^x8+t1z6c3aW2xLzO|2eXv6Dg%=!r>Ygd5T>gd z4}9;pQkBiU>QtBydU;?k)iD@l z(C>UQCmct4HGw*X6V5l>7GFF`G$s8Fk3GO%efcz9oEr*YVbgn0Imn%xjB|@FbUG#$ zL!dKS4ZJ&^aN9OLII4V~WcEtG%3$B|Vb1nC#Qcj1%Nr-tI+2JVO1b@{NJt6%C@OZ} z^M-+yriai}&{*QXE{(=3YhaZT7ch)Po1wNa4W4X$bfnR1b9U5o$8pMhjVRE&y}1ou zP7#NJCHond3p7^D4T5nVwDztf=E>JEJ>E!Em^U`s{A;@urU!S~%dF!lgt#{@O@T5! z(COu1vmln?{-8LV%!ziA{#*!DFnTSlHp(0^Xa|GQt%GWbIgDaWfm7y5V~HVE+3{CKW@Jc>gy#Q@O% z26pYJxU(G4;a6UpJ7X3E+uAt#!5HuJ7xeT!Lo369CdzXni?*1A^8an^F)j>oM&7D~ ztF%&-F>3s%ib#A!wkU_e@VzI<@SuB{t~eOR$2CP}{TuscUJfz#S}~RCrW+gr6Y)-XD-ss3vc2O1DQ`kb9Q(Xf0y|09a7Uldze}) zvIy*<;!+!_F$Pxug6}hPnK2oulBNqw{?`N?q8Jw9Q*P%oGMI1u;mWK-^Az)i`1@SW ze|Hcee5!KZzEmf`Tfa|8T~+;Vl&3u@U%hF0!a0P&m27~&oxD#2?>TNeTIu=qoc0PkE(&R+CKBq%j!Z#fs@%Sz!Z87OH6I|_$poR z7&`UZk&}B=<@v7{jMFgJ%MII1c3z|P<}UrWr>lncHPXl4?XNiRXSvV!uPnVi|Art? zeIN&Dv|>~?nQ@!3iLwt1o3H6S&Dd{#6t8Mz9 z;|!P4vHluKo?f}rL$98bAy9OOeN@?rTt8i;C8&OY_0zIV8gfFUWa(M^tx+wmCV{$1 z?BjcXECsMGudZ8x0p3PN!hX3v%z-+8%zs@Yc|!mDGNR9h-A_n}-&0bgL-YGNHrkx9 zp-uChtQVfFbbN&@W`2iAqU@xZx?|Xu_NoORU!u8$a`F^+{bIIQbp3ii@v&*W2XsWw zw#Iw%%w{sf$+tg?@~ZjoUt6u7&z=j)r!6CH*UQ?iOI@jOBz1?m+^R`}S``S=CH@R! zz3S1Xjg8JxPY03`3mO0TEqdIow}2v&(m_R#UNX^R#4x}wo6Sr%EJi*^)q9sTm!=iy zz8#K>UPm}ummyjy$ZNgRLdRHE0+zFrMyvoS<~~zL$@)RXIlKntzYZ`teqS5`G=Sk> zGbpUf>&V+_-Og3yW~N=ohH^0Wgpfd7u8zvQuKxD7H)}G!Jt2CK*A))lOun^W_+0go zw7X(LcnJ$Eh_~m9T1a46AKqO{TeAjY@#c3Q?Ogmzyhcn-ZfiBW5H`Y-x~t{obugq2yHq`U|E@dyt8YGpw)>ijhIbdQ>lLrt z8j_E52|kDOil{vCLG=Af`GT&N3cKMrieh>1Ev>tc5!hlFx{~t1XalVaJ3$kv7D4k| zTScYy7PHi(`whaIG>MMcq@dMm=d5Fd6pFPHiaClg*#z)zwDE#WfQ5~>KVg3Ug9CCi zp*NgK^pn&kddc^_lw4(^zVc-pG>c<$0NYG>*3G^|>#sUS*TbkE`J`~PS})^8fk#yyeLM-zxA6ktbn)ud&nR%J;n zaU>ryBOxJL8r%wb5tJ7A!IzL_EFUk>eV1E8fbe(^;@%;QW2CmHscSRl@Nnh4Ua^9j zn(H6g%k3?;>-9_8Ah9ZifJT6RV&pY*&CI!?-=_eSz;?VL0$rEt-Gbaj?^@2<@uJ#F zpBA6#NwO5Fr0kmRY4Ue*lm6584TRR$?<%&ZD9sc37P{%vrUQ|Gh{wU{Af@xFWk?N6 z#G=KlVc6d$b=8=YgjuZ3a~A&3VvK!-KNf@RR+A>p@3-6a@3*HXw=g9|Sr$bs*2`O6 z>?;qnb9NaPNz?|SmLtx}wX3U~DLFZIZP4It!GkH2e8IErfj%g6%)fQN;=RAIo0bqq zx_kKj7F0jeW9IUlZMXC-0=rUF*!vB!(*vAw@sC>!M6131Ton7)`&KnG_ zExz3%o+Lm%9Kz;KY!&vJ&eNobmwJCsE4i8repNFYubt8gU961K7KjyyzcI_jBPL^z$ipAi4k#4(C-F`QjVoY)B|%RiGOI18pPuqKax6!9Y7{tHkazf4pKlb49C-AHVpsLys4mz3D-uh?%8R(soDrheW{7C;hg4+Xy#1@ zlxlA>wDPPPNo#tEP)pY+VzN-%Nh!oe0y`U#bbms*0lwLpy-Y;KiFCnWS$<+JzAqwD ziXsnvo+dIMo2ANl%M#aW-KZ`eaouY=)#gpeZS|JMwz=t7*JS z!&gPqFE$PSQ%z2_($NYXxO1n5hRXcPiNnbpJC%kb_1-AhalcT-LeJ?jNOPLXj?2;} zTaOJ%hR(5^Olw6+L%YrA+9IS!4b??yDA&{>>^8*4CUx#9#Nk+iy8ckB%DSe(3u#j5 z#y-xnbVY?#<2*@vk!zkK7rVNNccqG}RJ;xHXu?XnS}>Pk8)%_2KE8w{FnP>T(zvBM zKMig&2X>v^s88^4v{PtjB#nj}DJUQI_6uPG4|bTQX$Oz-m}*-s9;@O>2=s#UKJAi& z>dwlI*I}h9?-}?dNA5)PKs@)ox91rX!1+X{1NRnwOXxKRPfyQg%A?naXe^HnXNz~Z z!9IgpcoeA)qbV6n=}+%sc#R%1gv)2Uv#;K_O1PFGOnFWMTf#aKfCtq_DUb)D8m-o> zHZ?@r<*1x>rpx6gOs0B>iAi=gb@*JlhU#+dCah!xZBOe+JGZCJKOMd1E;)Yl)b5kO z=KF**Uzow^ccq4<%BJL_ss=;>M|1O)*SgV%f-T(NRZP$^_YR$JK#&Td3wOR@xZO$P z`z6WIQVYXtW%i4L5A$f3bC0bE)yj`WVYCoGsW}3U(y;AOxpp73CA}Ntv!!U$i^&u= zE5uhHZ7_410&}tu?)9pQw%Nz4Rg=t|ZP7nawNS-cD3%NGk0+&x%)3w4;FHdOY5u*O zCLg^=w7egd=qcKNrzdqE_R)*8Z<00pTn{;k3sml5_3@2W+r19@9O)dsx4*b@&w^eZ z$w4|@qrl&Ra<7E`Z>8`o1x#l}%NvkF&b>cr4yQyhzY-Gu3FlFql!8l`*z*kHycsn| z@FXVA$PHng4w7Lr9-HNW@g1qFa|P8=3uha2KWFYm+c#n00@SmWtoXCpTXBY%xpH z&{cHy-QixG)y2#5I9!{~-f&Q(V{-;m_Q45;2XgKF-Ph$V^eW|HGhLOZQ3$Y-e6HXqf z=(cl&I$URmUS7@!n!2m3ka&@kFKbDvXEwA&8oS?0g2_zlw6w;c(Fs`pjYX-?QaQVny^19FMdX43?8ccSYB0%l+`s4H?_jjc~pN2K(R&~+bB1K%Pu(p5I z;dNgBQb>@VriMWopz@5O7p&<8o$OhfD|CuZZsj=268FMf5Q06b2@C{UH_CkudlQ6` zj7iP&iVR$TB;Nkq{eVKC^LmKfglOwtDe>(;0?(R0Uo)D-LeoY7 z%OgdOssG-!?)R181D~swjbHFgC(IJud-Aibm3c~AaAaQ0N<==F8yo7)v(x_O=sSw z@GC0oud|tRc+zaC3le+GTDTph6ODlhs$2J5>n)=wFk`-&UTb|?QLw68(PFnO8H@Fg zZAfHDYgXRj-pz+PWFqX0Xcm$J?m@palW(oksvG}}uIEMQS8sW0C8w2m(l6h-A{(Ev zOgmFVRF+mE-zVsuhP~C4$uPOUl((%;a_BGpaK`b^2SsdAAc^UjDH0tms+}7043d-# z7zJ+wa5JRxv5&F_X*%!p#i6^2y{KtF7!P@)n^GWRk-+w{htFscp3Ydg2t#o;NexoW z4yV%p#eklOpHtyT%ph)@h02QbsUwlbp7)`S|K;^nJXOYX(oFR8{x_wwBs|SljD%4O zXB-SIi9F-2Du|f61knuY#HapwI%+M!6eHpV!u@20#tJ3zCs+&mvY=D!Dah{nj7h*K zE013pQJHP_jFX>YG{r2IsZc3cyVi?J-+4^}EyefNm4%T+B_(A=z_aRs6ynJ2Hx%Db z$ls)?`m`8}&yzGpfZzmiMR20lndy3l?0>Z4Ki zoKDqR7gE-yMBl7;ypysG$5Dfe%86R0a1DasuQ~2y z2S0XmijYQykHEErsG}9=Mj@)bjL?XoT`TTIwa$DY?fLM|tQws9k$|v8%8Hez!8@N> zoV1GV%~7dMVOE$Vr{JEXPDIQVB?nY_Q{H_ky z08f@dxiU5q5+?Fy1qPL(IQ<)Lwx51gr92(?qxpl6p_jryJfK>pK^HhO`;k^j>H>sB zDcT$(*^srqJ~XdQ`-7X?O1AGCvFDqaZA<+sT=FFLU%;iw(Tcuz6+%I#tVk#UnovAe zm`8`KB&cz3G>|A(2O%!mIH#Aa7@mT;Sie(Rl#-x;6gd!Thk&^Vz-R1i;1%agB>MFA ziOA$NaYl)(Z1jqtR1&gM6n{b#vOs@-ZgD&hah*PqCZ|9tv#M=~S<2n2gvd--%%Vsc z-(&3Zyrs0At!lshr*+5@_w;5x=~KQO%Lb&j)D3>UHLx`7AL<)82L+G^tUJ5pLPs~bkX~1$r^AuZ`Dp?HhlQSV>%0;9I#vS6sRt04|JP=fG0*$Ip zRU5FGJ&)LdFdN+lF=bq`_8j7FaX2ImD;Zqxg=U9QkuEHl?xML+=vhbmy3Olp{OVk~~X8^3ef?C6H#m`)p*k}^lZ zFEDvw5Yl$yAI0{w5T5uUD1eIo$Q=hFp9kv7CUjOqy@?-H6JyHn4$Sf0cHX%4KJTA@ zk&uW0tGdRRPW>)p-|YS@ier{o{pk}EOPPpgg!^Sd_{m1%dBu-0Q^2w3FY8}opg`& z(^2fW#5Rcp>Hy?&PP}r+x1jbNe46TL#{j@P)?eZ(p)pBE5SPKyTvXW|@6HJpV+Wg# z&OJ?Rzc}*@g_LoeXT#VKghUJsVh)TA&_mh&VQCc2DWeibnjJvYf4xLMZh*P1lK<)% ztjQkr1s^N2VrV)H^__s97VMOsv7ss3tRL;te6>>B?2FTgGKDy$5}!c>#vqdo#ncXm zHW)e|*|{sW?x#omN&c0270hC2*(F7~r#~O2o)$tiZbxD7S0tV$L)c)g%!I@HGm%3b zi?Uj}eZy-}urx2OrrQXfv@bziqPJBL7?MJoYj$StHZte?&{ z5o$XZWWMBY%u*}yf@iqyW#o`=BF|Hn0tCkm7>R(X*|P&O1=bYB?rEtf!2OE2|EWAc znF>etPm#PtBNiLZ0g5sf(I9`3Pl(F;BVjGg(%-Xw9)3=Q&xy1qpy+P)7Kp^97ZQFp zDI*~lJC}7GUz9|gY;~NYpBsLMpEeQFFCzHAaXW$R0^B=9*um{*wj30LLnBsE0PzCY zy#bgJDz1r5h{7HnR z`E{s^`D|5CiW^^cODqkk5QYA*;)FGbYX`DtzvaL#?T^2$Z``imICD@#`2MMDvXf@B zU0B>|Ui~sG`l7A4$V=#udE2N2S$?u7_)azB)&*(R$x+EGm31kQuX=2Qk$HF-L%Cwxvzx>lZYC>Q;sf^6<=0uteCtz@G7c3oa@XC@cG zwLdr^wrT-!IoU8^1C06SnfNAJnXzH(eDn$5!PS>@>{f(Ed|;hJb(xt;B*;XUJ9V;$ z(#ct1W_t0qVQ9>9CIy#FYLXKB@|;1nAbT5k%x(6w(aD*0rQ5<>&;zKerS2Mz+F%y= zd9@pope|}>NNq~gx7P^$?i67}T_XP#3-#dV78L0-L;)x&C;q~!6b4ShEVuj>%O5;C zlVimB>c1BhfNYvlf&X8F2>R(qI;DmS$(#;X;6e|?81FLxl_nFd2e+c;t zlyk<;#Wc0>SV+Uwucf0lX3s2#%al|6Is<=uee*(e5tJ(nYlmMvZlEq7TeZ{rw(GBX zTVkdMBRurRftv^D$^)W87`Wiji@kyjYXZH_+#kRx$GxWsaDlP$d)3oj`X7J=S269K`1T9>mC6n!Xia^>u$qGdO#(jZ4$M;iK;Ien#%knTg2=_4EjwfZ$ z#IA&;4SmT(HK7Dp zGY;t<{jF>3_$MHCL5I2dTgH&xJG2d4(DKp4YsCAM`aW32FxjHFD%vO&$CPp%#KXN4m z58@$XksmL(OZL12CPDojYiJ};qw?lT)?O!Ta%;?Nvz ztgM(r^#Y8APc%i@U<0i6rHC3t!M|gj#Ks(F`{kfqdJoDcx*Wh{ZX-!ZFD`tqVVl}ri|+%i4@genVo#Fr9dFPUn~fy#0Q}E zmC{n1=<>81+I|%-jC_zAC?y~ltT1afqhF6Q{`O0w%P)dD z)YqAXy<7QU08?(TpQpWj8WvflnV+R;Sl$XWH8!@=0Y#ZnnYlAwNvL%hzt17sWg&y| zd2+dxp3(Z%bN!$e?yMcAx~^__g)kn=@AELfO>$e1wje%#j+LFGfq_{&wPk4Vm4U`J z3Bz5W16;2>*CXJkvkocc8tfY27oWv6ug6yKEX;dfIEY*}p0zvOK-vi~k-}<;$MA3i z?|I-1BQa}Xf|3qlh6ca9N~9Dn>rtnNZY+#LmLVh!P@1qnhen+i2N0CQ1>xiU`%5*7ISsj z^5mX#QCwSBsC+EQvypJZE7UEQ-8Z8A#fq?d+U3qeS%V20Yna~=oYV@BnRLLNKTe@d znt`K0>7p5-`Jmd@Ow$8yPP;o&jIM8ygs!B_XjBBKnGA+PVPbgtGTPft+E(^lVPi?pfV`W z>Iphi6oHb~&PVWD1mj??JB$DXA<4xhQi+2s@$@$?f0G<&VbS4=baJ5e%XEqu1I-UkdYKa#D3O~{|C&45OJT!5-LFriX? zNPtV3VWavaAeS#lQj~}Qq(kcLcpd!F;ZaB$70bBYlQ_|9YN(Los-pT&auXlKbRY(^ z@~duwD0F@IvO{Z|W^ruu|78Je(i_XB?i5&|R0~JZe5#@57!lrz3VB{5g7Q7ZcejAq z7J|t`RdrRv?RcB=dSW|vN$=~8N#9~GZ+U6@>xleSw&xGHQE0ExgS-TNTv}4~yd9;q z+1BN;0Jxv*FIG?w{WdWv((yUKa9w0uR$qnRBN7S%j1a>I{iw?l;F`V}wZKDOy4NMd zu-B=`BolnlFJ-l*8;J6C{|I~>K$BBfGAfX>lqdh0LksX(jKFXmrJ*;ei`0IKcge=Z zC~Wz;ZBThVjFVZ6(27~zxu)rRyF7tD$X1DgY6OQ-BkR|WrP@=#JB-#T?U{BAzTbG+ zo-F_F8gyv-jH!d+XuN5`pyC7)7d(P*9A(#4!vG6ceaz0MjU8xa{3Ep`JL< zezbd~`Bg`!%4HQlso@>2LjSiDhDoVS6urObA~?Dl1{%N$i~@Gh10wc%xRxvu-n6f9z_tru9xB8AQ2v6nGf@Ww0^Dm9o9&`0HX2gEP zt69aY7CZD*1sa0A=GXCL_$RGJwyP~}HQ#VX{(6vuIDV{hNq2y)k6|jiElZwzpFTH8wu~@NdMzQ z&8Dr3%kZ_pNFDazAZ>_WZ!k*G(gpf8|Kp0$V_&n4>w2bbgGPgCTb+=GyALam#z9(=wucg&X%H?$>{?`n;?&oAzHWac3xZ>fkyTKXdY3Ivz3sRkn0q4=cP%!yyfRjOA z&^{_291Tz1d^{t0D^38PSR z55&_lDHNS=uOh?P$#denTH)wOE5zbp^~YQM&zTR2SOmdFHA`X5?td{?B-!xmcnb{U zskHSN?;AM1{nlwyW*qf;egCSxuJKg*rnU(_y1Yb*VK`A50hrDw z=6v-rw&1;c**+SEQuIN-beRFpKkU*EWZAmDVl_>CH$?qDg@y}zb46n1PWVz^)sxdX z&OCXksUE?ybO{0hj{@H9_n@UL#A8E%dk4H_ofc+f=$8!=e_c{_6@HanPkgaVz1T~m zSfgYFv!wNU{%1V23i}QoFeUy-ZvMwf-)jkWP{)&zA|Divj!4p;(C{9jaBUU^@+$7* ze}<>1?NTS=XWGl&w^{KrmZ~oClNqC9LgIn7KOcmS#EUFh?Y*{LD^}}Pe>8B2;D8KI z4HVW=Jj8yqkW)3o*>K*rquGLYU)1A|mhfED@PoYWK&GL-AFAu0`{5D5jTCH8z0>D& z&Hr+y%iJ~l>@MMObt)xVL1`uI6Lx-nl#N$KMH z)QWg*9G9#X;d~g&|Hz>znKP*$96uJ}n91+kO{d+8Y)|J3w6(HoQ8bLV8mql-gi*_@ z@wuq@E`{wn`nVF&n`ku9Xw@lS)AR~DlGBY2@m4^zHhJEhq`Qj!G?nvJphNUAP zY)*QjgIYP7&Jokk`;9Xd#%4r{%yLhK2+p**C@2xpbC9CdT5a*x8PApC;)Ug+^y>-Z zAcqfZWPd?8PHOl4u2MBuM(c?$;tF~Iy<4m$tYtOdi3@}Lrj&8RQ2grOKnvuEQLAHH z2SR?c*l{lx?0H;z)>3GzEN_rs73NQ?B6I#5Qrgh9m~y52B1;XNsx@ZVvG-<{8#${B z!81#%09IIhWcOBRpbj)@uY~*zP3X9v0QhCzD>=AZnE~qt1H)v~Evl&=sP^q2qy}gS z%*N>bM)->VFe6{L+v`4o&bAKO`J$7!}A9@6p zlzLXhs%qu(P_Y6w$3S!SL3wm;dSxN>z3tjCT264Q!F7Vf#8sX6(jazvn0Ex9c68{89ILf8Yz zh=@1hFZhO$ksmjz68Ncy>aeAdLIy{a?f^tG`Mv}H(y>8n#nc{npCkiyGy!kHW0gzj z=9@@^yqJT`B1NdbaufopA6ZeyU;I&R;iUa4SpmhjT=-(~Q&jsg@KbA?6Um4t2}@)a z5&9un^+ki+Qw3aU*~wZuq)n@u)`u=tCbwN|5hZWw;Vl~wB<{q>mfS#aK@cj>vX}h; zEI)2`_#Z*xCoOOhD4hBuajqbxK}Um~jlQ4Ylv$w#M!aZSM;C&Nkl%vPm8N6pXdFR= zvkmc;Sz(iZOjqu}${4VYV!qa=F##M<8%8Ht0&1$`_Ose&BxH`zvPJDwaGo$9A85cb zvT~Oug`jtY{WXJG{Y=y?bL`vJFt6cr&Gx5@R=smLoo+;gs9`B|K}2G2l5f5pa01?9 z)N>e)VdXo6K#UFn6vw>_ZLkHkyNSQ~Ipl`P1)54GSjiz8({+0OE|$yWg(L^2SlN zpE85>y)WM{pf^rip;tkt(C3k~z2b|fCmFZ@o499#%f-5(38oI=hEvGLV*be9lX}E6 zt?A1uHoZ&77Z;?eEXYbL6xe;>j3$s?O{~n0EPMLrctZk7an(FFc!(-Wj#*qD{{owbjV9m_w@$?e%P;E4}aM2qIY>LDXhF!ZlRf* zN5UT8j?YU?8ZE} zp1U{xM*h!{P%w$mbPhqbpo9*hziyH_HQ!Y%VlCUz5hBzCRbr*_0q`vzVp-n@yid9< zjj4s;EYsPQ1-dqBAPWjd)nwd<#GmLbc#ms?+$HEw-ei>CWAFb2KD=Qg^a>zL5uF-# z#&Dw7$`&TZ=OKg+w74=3~F#O;#myKS~FTM{nN;TzA-4}Xka|YS>C5yQDY|T*||LjYo>oq`@h&btFAhNHVflUaCZ-G z!9BRUySvN5IY@9PxVyVM1cJK-cXvNH!#8W@2h9E4^{VRC7qwPbzg_R%&u&(ehrqQm z_1j`nLvnG9+$k9^=?|J@>>bZ%Vdq&LI`p1 zw})xrq-2eKT?K~}0H(fYMYeT0$=*F&;fb2bNVvh2#`$77{Iz5PzW){br`hBPCy=ws@Y7h)+=n}GtfifpJBP3FcjX$CNd z>2+VT*Iw}}9759oknQ);6J|f1pz}Ho>JA2HqEpz!+OPcbHAMD5Y7ki2H=N@w?z~bv za?x(r?1nSFJc1!L4|6C35oV4Hrs$bMEowO%LMw#zPGbdu>hg0k` z8B>HuRYf6tu5U>Mo@Q?7X|hMPu|Kn; zeAnIeGy&@w8S%L0%t}18g&)YfI#e*q*)Jft12yJYhmR%N_tI7mp>6+>a6T+Bmp)mV zCl0#qfZTwRK)yiUUp`bZo%I}DOw?$T&nM62IndjGC|(SY$8%sPf&X|mj<=_F#OBzI z=jaES>Efm6ROVB4K|PbRjF#(y0<|;Gy|^d7pI_F7=`?%I_e;hWvjYS}QthAOIGni` zae_vSYa}htjbDrySYnf?fLCz$=SEpLwD=rqxU!@bdB$6w+h}WbuC?!zmV$dt zYIQXMZ?Cnh!j~#q9BMQ-|Gr9516~k(t`@wi@4?sTGDalB!wds?jKzgfAfk}Bw3{` zjzcsm3bgm9Fc_X<J?dZEY;Ae*TH=wu)s^pXXLTfpAV=#@8~i{I zW#|0KGXJ;>ZW^* z3vOHAOV?aid>P=mrH{+21E1pwIe{dp*fcaou&yU+*<_M&Uz3RnRqEU#oZE!KcksIL z*S}nK!>QMzq;D&YnM7MX@70b8G56>FP$MK&0fS81jX|6XM2GmlRaedg8EXVgH;P|) z%B6p<6cyREqlAj5E?kBHaaR~D&O%{o#-8Sxjl_S>hM|a{O5a|3kGN0jT^zRF-^>+; z?Yq})w42i0;I4vS%9-RiF;*$NQzx$K;vt`JHjh8N&BC5^dxyOpQ}u(~cAoo%lJk>h zG9jKgA8%(hAtMvu5i49d zL;&eeBAg*RW#}KsR8AX;eDIWBm&w8dpYS=7Wo||QCrKC0IOpk>wCXKB2gLfA9uRt? z-a~{j5BKe@C-qpAym@@)p%UUaB-`nTuA7B?Pr{gU-NAQdV%2j`ndGk+&JQFY4!tf86m#XG0zqh55BrNl7Lgvng6 z{iK{fA{oOVBhs$LGh*Aek?TG3TEEF-eD#kJd+jL3c?Tc1j z?|h|v?-cy=f-1w&18+J5>T{jv03X|CYTF7TLEq&YN^}RVs})C4?_Q|wT-%6zo6svI zIS^*Z`lwtI%q0~rJw;y(!gmO49JE4i%B~{2atlh@D36TWtzgPpR4DS0UF&-%`R=oD z?;#cn>AB&vvx}!2UV3V^z+;SV*<@Uy*QEhnZfl?uM&y}ljwZg(+U)%Z)KUHNSJWaG*j zItMpj`VV>O3a;)d;&A76oAe&3Gd8={wv8R>BN@lPXKy_VthG5)i2dli`gpzQ1o#eX zRO?trP4jHwd+?iXz2B3p9;(}(ub(+IbNuTej?dL2y}{`X34n=!;*sG~5cNdj=3kDO zZdP#Qqadi>%91?ChEMy0xRbC@yWu(3?uY7oonH#3gA@)N-eU^qE|hIOChgPS35F7O zuQBn6xgR)!e!RUT0PEfN(iC=L*$KBLT}HfuIfk24{**K7d@>|RoJU=aBI}_sPt+%0 zRHLCfATx&JPbM$dM1PWVQ)F|HkWLDOA^XWyfgQIJ6j=h^-MXZ0FP@k}$vnEcNJ+L` zVN&E^EuQ*)G4iVmSnTJvE7chSGOOQcPiAQX>qU(C+VSzZ>!M75JC5)`05*m%miTZRne8K2IQ|)! zpW%jXK6YrXy*Iae)Cq(W?NI=)-=~&$>UqiZMZubvkcDoIFV#x#J~euJ9;tOd9Z4D_ zdvD=w1-lSew;7eS^`|fxBaXubRiJDliKH;T<=|C^8}F2Jo#e3TAA}IG)Fp~$Ik=~}uYX*oc2!FX zs8hey{fT_#z)nXWY2{JRLjLlRE+16p%u$6T>UJEqVndA3{n8rByoEna&~j=O6;%y| z&5|2Zbj{)S+Z{}RS~B1!axN+jFHL+(NHs!aViz*+bytL_8=7U1@EGi$ah3|79}DWY zU1dPk(dN;&7RZl;!jOjbSbfZUCQd|Arb={@@l{D*80(f)xgNHFzFI+o41=( z2CR3oeYbKx2<6Z4Yh9?K$OE=$*qM2ES`Ra;Ucbl2+y_NlhpJYZ*Q9fbnFw9NHg&YA zIC3cC0MlE{85zx&Nsd51eAu;riDnOeqmNG%D64mwInJZS#WW6zM6&g+7Tf)zp-@A2 zcszKM@58y;7@I=0+}}oIOJFts?qWqT zko?nw=R*;=53eMnI*HJP9&`Dz-0=Y2c`~G_4U?B>$hx+Q(!DK)jUuZ~t2vBjr{J1W z>t-xtf3lhTvGBZ!;}(|pr5Lhbwd3I6a9E(PNwe0jx}9Ge+r`FpLvdI$+j?8}Ik(UK zpvxW!I*~Ftv*#z?4rY&E{XS7x7pIq@OwOe)f!Oz}iu zX+C%c4|BBl^{J(idZf@DV>DHKG|_t4(0vJmOk6V0WwHn4pZDLz`)Y?sPxO-tyjd5Z zuZ$8guLw(&qgCo{w3N|rriDJ=@~X%Rp@^gtld-WnC{Z`~ut3>sIZZW|0X8a?2n_n< zOF5G#a3b%7uWC~d!?W_=O1;9gWy=mthhy8-<|e%kCp`7=PYk}utO?O&(-m@ic9C62 zbXaitv-G~xQsJfyg>2FEwccvh2)KYEdM)tHamiahUEV zn4DPF?`LE8Z;Cw@U&2CG{xPuV9id;iee+aNPkVSFwWx|jylyPlrv)yQVpbTR_8T2o zGYSt|Ctl(`IQ~*wmqGB`HOZ+BcP>PEW~DY3VszJ$x3kVDOub>>h+IUd__($j5M{d? zV=xT8vVbo!&64NCpEuT1toIqAv{NHnYhDY!e`R+7QX}+GGnJK?XA*}bXTRh-<%CwY^*KYlwzbvu7TAK;>#fuHT00dxeS#8(u-pNIUoz#) zb)3DBZ}A8VRDNT535y488KIs9piv@Ky6t4y)F+={cuP#S!4&w0yUyBT>)j(WA}Etf z$^*{Qj@3sZ{{4Zh@3POyxvo<@k0TT)uM>)_d5NcDeRN;R<)P8atr}-tpnkGC*q(EP z090YQ%1DedSg@M2NE!^eP?es*)EGM6GW*o+^wAx!W50@->x~W}nK8`-+SFPt2fyFi zv|x{EvQq4`1BwTf)_cpXg2;^NT*B3n0p#2Frv8Y_?h2&i`N$1FC%&^Q-2E_1cH}5W z)Tc^8JLVrmckK5QG2l-~MDc{YyiFd=7octD8c8~GLwUOZCWpDv4J7(_MFR+S_NCiW zUE)#$1wMn>P6@A!QFjhx3URyFh+9*JFY6m@9TtP<=^mOmmvdWc2W*AQlMZl-qg+EB^R^oX`PaQgQ)0JR~K#nEf=nNyg2fN!NqMp zhyL4z6%tOa5QXHB{KW{om1C=0Xjr!qBK$sX%a$>PL*`9(E6d@q6 z#}fR761-Kjwwe5IiojFPY9(Y;nU?YfHoXWbrh3E?>D`ULAtO%UP=bUOD*{)f z`SUF3t<3dDcx<(h5lV65FZu!`@Cv-xPvdnoGs?uQ*piy1dES5xfuk3v@7ztMXHAfR zS*0jrKJY9YaUsr|=GgeLu%{L-1Fr~(fk71Agpmxr|vh5HZYKAg4&F5q;d-I0*qM*)ovLg)p`s81X z)aX=KCTTqm8@y|cwyoVjGU;xs-&w#9(Y{zWg|ieAN2sY93`v~?0u$B{P(E_V^%I)Z zs}0=hx|3|rskQmK6g6`gDcUy)>=&^LV&}jbap^Nf1K%5Qre?sHd=es^CT6C|W|d8< zSmA5ws((25PIGI(MB+ZV%qy}W>GGK_6vKzWELAq;K~bZVutVfx93`LBv7W7E?&Kta zI}z`h(1^#W*U;Quy=OzQ)E`)e5enMsfntEUB$l@JRN8@R^H(&RT;hJ2f{O^Nx6Co~ z_R`_>ZM@Iq_W*NL`wrNPY2gdO%J(HpyAP5#cAQd0n@XWb9px?j(D2YYKd-cv_g zCxWCNi-WObk1an?=M4Er@;zfldA8K#_Z%XtYEaj1BocfeRkQ5md>leUP8wy@w7%s^ znb#EG6~9j)ye~SiAT}RD#P)9_7V$5YS=iwhKD=2k`$Pa~w`@S|ujW$SLZkHyCnTV~0apJmPxrJ^;f;#iQO_YWSrlA^Ffb9(gY$_E(P zzPCi~JKg}x2_UaAM~9`M#9zB}s^X=UNZA9UB&?Lwulzv+p}z?1bLT=IPmoJNsRm3i zS9XU(NTv+QvL(TtmNfS}xnq|HntpPEZIvxF9E`eceN5n9l8yC`?KqiOON#87*$x53dWlE~$j{igiIdsZ%E18~CW zlMS*=+s=ne_a3(qdevBwvJ)$-g$=;Y&06uf_kq#TgI52?Kc62a z-Vc?A_KWK3m)`4$j?v#(yb!KuU+?8mHMA0s?;}#(*f5R>7QiLA^E~JownK80l+}s) zSlU#(5^rr#01!JwLe#=s5QbYxj-L9s6mccHb3B}L zx%Nb!+sLfeO6E%KKhSC^DHi97F8lN7x_e#+T^Ye#vDm){7=1@^I^Vy_jNbdI=}h!$ zQ<&1OsyQH#nl%DLf%osdci_4b>nS4tM9OKyVhBr;2AN0}e=w{=SlB~Yv}5Q4-rZ~X z?q!gRugij{CN1+|+G0JwWzbg6K;wDmd?SA$ih(I$^ManwTgvgN=|1wiy4y*yn4l{+ zy^R4d=WyXL=arv9ti&36j=wmfYeJpixuD-G@MHVJ20Z@;^{T4ZZdIakQ?Ias*ktY&SVei41?nKI}g< zX7ljnr+q+EP5-8kNGKy+P`Q^Dutr{+mX?pGB3fA`kNy*eX=n)M;yU1iwlBory@S$i zC6FuSe&3}LaeF+qT%zgECpD(u+S|HiH9ZR z$*a#dm#uIMOV|+X?>3mIrAH%Xfl((ZKX_9E+IrLbd^UuIX3nIXER&o&gI&T%l4L_{5Zf6|sdKz@e;wGeW1*2(C zc;nqjg2VZl70u#2J2xWcits@18siN#RCJ*$1e1aGmj;U}%nJ&#J6(Pe@wzO$FLmGi znR+qu>J--X*@E44JR^BZ7r4J35NwqFXwT=JA^57TIXvY@Qw&ch2Q_nho$@~wEO=YO zD}47m_OW0B)!HkUs_HWh@9=%D17Y)M9TE^q5kwWic&A6Wi_NDNjJsYQYFjI7+9Q>r zli-d$p*T9YR%M*`^v0yjDoW5o*EkG6R72O0D9WW@6vu%qXl;l*;*$0>H17+Xg2b&2 z_e`C8$SaT4jK|a3Mo%$OX=*T5qTXpl+lLa*8gYNqPX)vdaWe=|2QT2ZW{s| z7y4Y}rPq5rM8h_8*-dOMESDLhtkocI?YMW|2kk%n-<4_DS?9L9c;TC%dur&2&6YZk z@G3t?HSG=wK9%C+pMM8yMy~q|Yk}*z0rDZpBTE|^<}S7i0bf05rly5<#Poz0US0Wc z;Lss8AM9pwtS^!Y;o3|1h5xyMtfWzSSt1F)3Qe~?ipZaR_d=(BX}5;BjT;h9pA)*b zqo@o0EAOyMY~8f-4(|s#O_KW?xxKGg+W=o2B4l%*w@ny?ul<B()VKEV*9l|>fdz5eA79*uwro732pM4r0{g(&@q zMjO$Z-G%YRl6%FYrxm0a+sspYG!XrmosLSNJ145DVC(da%o7J%%KBF2x9{h^U5%RQ z>W^Sg9CNqO%?~xwa!D=d^P}c6l1FqA?Jxjt>3N+)pv%UlFtas57Csx?PZRK6Y0UWX0@IBUU@8( zE*#um%$P=m0-ta0k1egelNvMdw7h17b#b>Tv09>rE6_~(0Ai+i)qnBc=QRP%Es~dY z+`Ok53c?A~BO)Ay>80^oTvtE9l>*B+%k|N`yV&JZYG0Ot<}rX}@dE)5e{CVb+qnxE zuV>-Vt~u1p#CaB@n43hhXy1YAV_I+z%3fpM-((7L4VoV|sL3nNofaOsjLctZwKxZS ztRW$wSm56>httRoL`mFLpS_(diSEkh;}RSgkrX4uSvX)jkSm zdNLz&1rem;Sbn1eB`D-h29qRUtH8@U&8AF{Tn;p*Oh)gHrh~VFBK*U0eU@|HKYH_4 z<*44=!GB8OXFsxdd+3EwAwx{zj}6a+J=9Byk0he?|GL()!CGCUmbmf3Eh(9`Hbfb*I^Li_bQ za5UmWFqk$5mIvUR6IXrkB^csZ_5|RhKHY{>&vTHYfzGr7C^{WG&y>Dsli8B}=>}@8 zpHCOeD<~wLC_Bwqtz$-1#RmNLb9c&7zdVH8i@O%pc|IHh+j%MQlO-VM(BT04OVtlW zcgN@BDGCmfK01^DG`E$4Umo{Q&TGwaZQoGwZat@YLZN6NEd-*hZD(V-x}W7)F2Tmn z7GK3E)WfJfMi`Z0;Qf4s23*whZc%Te^AX{8$0;;8ECA zT~x)TPh^cF4uM+=r!el@`n9l^1c>$(&M<>%NgurUZ?Hqa!FzuBCu&s<>G~z> zy^CCh{{}=HW*r6ntE>rrza*p8<;jl0$Am-}+igAsUV_3)pd?kEto$3nH9S)+prbszA$#E&|hGJadU56JIT}NI2KzTkB=0opnO=I zEx^8kn5=>I zA|j5web7hbTydeojrM61Ah3h-HX%VxcIgUJdQk2YBte=^@Fr4l?ZtZB@3Z#0En9Av zWIvxHprLALEAAO}!RI{!39q4{`JyZCxICAxUnooTFHlu7<7^$nV*GNpPr3_q^NkM$Yy0zg z*-pNIHN&S6wKJMa)U=mod+U&(#w1OWYIGWeD|nA-%^;Vb5R{X24Qcqw?i~O;7NMny z90&i(Pb;v)i{*(*Wvu`G?=8Lg-+2QCA4%O<@S2vAr~CB`<}1Cw?RxLxH)F{1KS7#J zMRUk$_|P!CCVm9`RVe#>VF^QV_TGJ`E&RvXKnX1!qr#?wv~gDI-VtDhyh;vGxNsh9 z*?r?gL7dWf{W2_!uy&jx)Cg@FXT3wHB3apKCqpdx!lz`8Hs{v(K6J1d2j2f zN}VAzPD2ls?p=8L@`fa8t zCm{@!9FeS{7b=V4Bg&BR-eLn3pOf{Sf&ansGaz0Kn!XY#yFfGIAJJBx zRo|%Vbk532+t(`{C-Vn46x;W}`=%jBP?`b85% zO}_`YF{~mQHOC+rHN^WO9IoQln+-L}+95@qTgjvZkFd<*Nq!SFJ?ZXL9v->)eUxl3 z#dMJW#a}Ins5IsI#mOJ6?r>Psu%AWFi%9JkT`(-kh;dfcT-5T;xg`F(M`ZmL%nQ70 zObp8_onLmWJXVb8_h!OU({Mv>$A*UgQ)PjBi-KJPH6N!!9k zAV&?7L0h>Frcyws=OW8K6R5~yrOuF+nzK{@yl%8Kkn z8;wvEl|KYWyKJCH8@EKXYJ?fO(Ir3AwQ!z;8$H)$(C^o>_-*5Dl`9kDixQi8nz8nYWXrRHMuEPq(urNUR?lnn z?_*zKoVL)*Mw(mvE|sBC;F>z?;^iWHb>aMl%e|m{m>`j`a!-4HMy|7;_U+)VX_MEv_}-`*o0KXN;fUQY4ubHybc!* z_W3*PLWLZHkudC9$dt!nz>Of8ceY27c$^+05mvGW z-Xj{d?Pq`_%B*2D+}#WDd;a};M!efig}VpgNq1%KutVE6g5j+yDFZ^Ke7hN@ik?uj z+7Ur*+bpsFj&-KG&aW4bh$Hq82~sN22?D`k1NTx!B|P}`V#hdP1G@CSHr+O}Kyy@b zlLl2_R#NsE^L}gegH-d!aiOBXFOe`fTVR_N5pF1Mi?H~lcQnIG}htpKD#jYbTI5A?8}38V=zMG<$h0|%R5;uG%VnD%p@>eQ?G8y zLLK^rbJ{cVgC|<>p}qFA+5E9tcc_CN3}BLg^hibp$x>#~r(t+a&Jl;#{mUGi0^it0 zq@Btfej<38+C-1hi4he|Dm?u_nsQWmn=II6>@AAHK*gS7xYu~4P*;By{+H4vv~O6W zUEMjhY)uE+I~5b~=|!fvFxg&jt13185aRnS;W$&vY!x{{wT`W+s2``y^YB{Snw4bm z-_BLWspBb{>zT!9^uO^3Zr2&olD}B3kljo=bu-T^0Dgo9d4(Ae)>o!N4VFD1W-!VQ zgE2fH_ghs1yzG+)4W=9F2*SdFA(M1RW3Zz2MX9*UGpye1`P+*k7G-h7&SQj zDM>K09(9j*|3F z>EErSLhiVyz9&$)oAAe6LQbW{7Kh7~g4Z~zz(2hma5kR@;~IM|ow>@Wn;th{I1ps0 z$Y9&VMo?SDrZ;@qHEPt>E3`|q3)b3DII6gTt=%uk3YK2G(!rz!$GIQ$)}=?!XP?vB zJ!2Y72AA34_lMot8)fl)O69ER6amTouBcnK3skh(z8mos0=?!+$r*O>TkIM+l@l}q z-IUukD!E}kDR7{{AHV(8mrYZ5A>@1QrFq*OY4GNM63VFTrd zri^w?a!`cyBDj=Lz;Pcq%EZ=B(e?{Q#~tEmI&@gF=F=fO9cJVti+Vbeaw8_=lr59n z+;8PB{dD7<+s!Seccz0O#!`}P=7IHgNGs_fe&%Jkrpvj5IoM46aA2^ZGNHuyXx2=^ zkw|`oqA;ll8=&;i8mjdl8PX#6isGxaSKcwrm*+#m@-vh_G2qNxMmo$6sWf;#>FCGC z^5==&bP877s1^38|8cq2`iOu#=-A8JK)91vMAc7_6V%c*)Q@3(J5{lkvcc~wpwDi! zXrsGUIr1zmW=noul{Jh)bG8vXJU4zkF6sQl=zyTZXS5!n^ml^^3M1=?&f7K5#;|{1 z0|!hZVae=U79f-{G_NP(4RZERCOE2-vM`b|>sV9L0aFK=ylKS?<)lk9>WYqoU4&;6 zeQDk5+E}zjV%=P6R1h?r#ib`E#nmad(Jod97r+~graL`zdCN;LpIaC^@4df}4i^z} zCEK%AcT5f4DDRkp2`Hb^+u!V|`-onm@aF;$A)zjL#8)(0OP6>vmCC{DthH70!OzL` z@5>W7g_rX?ZWGd6gqVgOoXd* zx-r47FtG6PxS}p{OtRl>ioj+2t1-1;!`hTsVlqx4!CJM*U8Kqfo0r25$RSWHl*p$; z$Or=p9t#hmepSXzk9xZGo(V@>L?2Qvev9_KrU!$s{%^fkO(_|sKW^P1fCpN}#4)&B zD(+f|IUKYT$oxO9grFdZOY z^i|{C0$3ZhelaD!`1ScY^(HK$ird~SS??7OgEHWq(Xq85GF`RA``iwq~ z^!pS&SkrV4(Z}bmf=|^&GcASDo18|Z8=yDp%YHifqb!B+Eq-Bv;3)&?3y~|$VRrCS zUXMDQzCr}Zx}2_~SXz|J6>%yJ_sd@%`!^3Wkk>FHe)FvN2~ITL&+XfL-NC>oR z0Rt$T>0{;Vz|Z+h+c`5pjc=!!*D1UL6tk(A>*D+4%pD^_A19NURuh7rH!yv~_z~sR;z}QTx}WCs z*ptot*z~|AsW;X$31lvQG1K4`b;ob#T>}F=cYG{1h(-`baedt+rY5lCWHz(6w-qZb zz7M>7R}GmAQP-`iw6sOcS}{_WGHGCNPee{Xd|+WOf|V2egEN^}qgWqwfxaPlm4Gh? zu*X5CpiQ#uzm6i4>N3M#hOynXBQw7xW z2ixAXqXNf93la0PDu>*^04Rhvh|n0@uoV3*egM@*nzs#3bHqSPhp39o&BEa{4BFCu;?BtR% zf6_x@OE+l}$#zpGM-qxhTADY87?=P1^^fnzqCufj>KqMFzi`%AQ{Hy58j0TwTi+w* z$cOi%t7!XjFn?#fj}GXyn{MgrSpY+7V}mn7qXtGpHEIpBoVoeJ+4&kKfu2;p1aqhjojytvqh7|}sn7n2Y+qOPxD z#{*?YVDYpp(RBijt75w>LyqQ3Cm2?ga9hFlHh*wJhLR4}RvdM18i)|+qxT@1gOS*I zxs!F794Rp*SWW_UjbB5jV=fI{KjCaoAQG1w1R7P7aUNUHFhmTWo1tw@Q(C9b_@bi| z=3tba1#$WIYW6;es~n)VA$Q+w@Q_KXgq;%Z z3J|sUyaVj^Hd@)?OVeFLHh}&sE5~~j)*FGkbKbZ>Ij~w~s8@_WCTq2$;OfleF<#w_ zQvNo}#^|F4%?*>x%deLl74%pm_3qai_TCN z_D%UhjDpNloA#x$16f6>wjeX)_su?9rJj}*qQ=B+UnpBVb)1a_+eV{Afl;DGkF7x* zlzKTXg}NzoFSE~UW*W%pWg)uMJk&-i!mxdQcsfV>;?gLxzDlBIpHl6w(+2#w0kQ#I zsJmx9TzrNxx4evtkTM)Y=*gmuWRkg%iXz(d#+{t*O;hqcLxZ@a*FR2X_mIN{=wDVyB1@4vx5uL z&b-Z&Aiv?z2=L4Kj=tlOBy$J`a5b%YDw7x$H^Ehic$6Z(`c5ePm@FHBW5d9-!2T&d zJZr{!QLKEZvipK`**w(g-c#b^590b@#rFl`?)S!)gMO0EwIY7AhJ+Ixdu59I88Mc*oF{X8 zrpKerLn6^rDZ-wS`I>?>)7aJN_J}DHUo7gi>o*U2W~KsUG)hHpkJV%_zcl#@f@&zP zk+LR|x~tuH#M-V+jV-4;v!valTS(B`c);bp?6WC>G4P6JNRAl_3=ljR*qH<$Et;Kv zKO|1|cQf3^)VBTUX=OVde<`0Aq)n`?iO8cqyT`5@eANN#42LyTFl41w! zm5rV+1nBiThK8XJuzYS1nw0i5Ps0zSjIvFtBjXKdMtc2mtf!$PCQO%x(Q6o3&O7%b zv?8+iv(@mWr#fI)J9@>--=HZOT)mO#a~HH_p_$eCCs5bHz{D=FlQ(T|m>_*~(hr!~ zCri|f@_zE0A`To`*Il6{aQBujv(xHVb?3cKX0KaJsx#eELeI_G=av1ElT&JCDqw0ayDoQe*@{B%{}Kq zR5zBS-ho#UJPH66`7_*K|4$UUUj%?!r5_5crn`@CUDl+5{@*n=5Oxh;&510!KoV6@prippOw6^1k*q4e2>c;ib9r}`kp-- zZnIuZ?M$Fc^tSPF*&tOR3Pb4&7tG^)d5s$W>6+JpIPXmUY&XA^etiqRsm{G97Fn)3UX>cW_ajstJple(WT1k9zLB7&>knP{ zk#kAux7}Dm(L|m$K<6Uix_vbiuZ^vP6Hp12d4-?=I=Og1gS|14RQ;f)GPO14IBU!R z`Dc=;;6v?JoqZ?D%Yvu$1H>b!`@o{}phH%lEdj9*s6#;q3&0=khm@=$!crz&j3P*K z%eGw9W4o!Nt*mOf9n)^HTEWj02q;&d&QVM+NkKT&ycrF6pU+)+lngk}qxZ+)R0MVi z8+`t`i(UKB?ZVqHJCi}{gH2S!zz-7;BpkMN1e;(Zx*=MJ&jg=J zac2~J8BJw?op392OBSFSLr2(e|G*9*+!HXVu_^f2T@@IGhrNNA*>SOuQ>EYB{^$mN z3wp&2eOlGjJ0zy+UuitMBBcun?I>IlV~EZW^*LWofCN&!*f9Ms3&5|?ofLZPTGimU z<2W{R9if_DB2+Pglc77M&4mwMNx&VfP@`q*S7}ExzIm;yxtfeq>nx1JB9)OWBj+W( zI4?I6LG+qd3YKQMyP+DSW}p#h)?-wzK51aY4)&m8fmcyeYP$M3qIf>l`^th5pSA-x zkPUVVW(1js+@D6^%RegE0or%Ou7qWZoh6PBW3YkTeW;@iA*GN68ZA)qMYh6UDqFIG zFM;vBm-{fow_)|kkuopJZO1;}aJ3s}Eytr6WWf{#B5EPy|FItJ?ERp8K0;YqexJ58W>aOy=$EJ}V41FnLUg8` zqz(xUs|koR*{n6$bu68!pL zx8v#7_97DSQ6u^4OB>E(-ltE(7h(pw4n=NpzQe|iQG&#Mg{H0c5yEIiJ^8gZ zT2iV5zmpE2ne8(r0Lt>4`XW3!)^;zg+B%w= z%txyi_|J|=H3n1k>f=crkhj_o8`zdr*2jLMmH>aNC>-IYJB-bj)KqF2D=}Z1Yu{W= zb<CuBODm)WIGKC|@kjNavT0pX*M$^GNl|JPEGBi;?d zwbhLhR2D`WUoM5Pj6k_|ugk;yPtH~Hp6SCx_1c+!goVb;N)zrJ=m)rEaIY(p2U3`S z;v@Ohad}^y!YFl6u>a3mu^db1ljWBAk>1^5?)S4?x40I2eB&4 z%m+D-@Vh9u)*L-u5kL5us-Av1aeaicIhF0ay3D!>Sxmxr@vPQR$;hAW^kT5(COtC% zi+9AGmG4Y-8=<)f8$ORo4$!{QFK}%SwSAtQ3w=$<*GIpsleTllR0#|hHU$035%HQ2 zRASzBKAGrtjS&{;1pJezNkU*uT#u_X3i1}oD`NasrWlK!!qYog^O>D_E)eio`puVy z{?3<|%X2?o;3cMZIVUWjkIg5k=V#UuD0x;j$K((8tk7zcPNtfkislQYOl{_jc9e$- z&sa^-U#+Z<3P{dRWM0H|^YEoz`otw!Ckp+$ipukX)}9R;9i4#PB0h?KeKlP1mrg`l z|Ff10rdil{6d*ANsQHVbhiGyK9e< z7@{&;Gk1HCvGgih3*D7_ul>PGjNrbXwPIGUrjYj$*STzf zJG<%(?9IoYN?4$hByOL;aRc=2Pcv~_%o(3IB5>Gq0`RD7-6Qk8??aOM&KABOpA+_G(rdC-dZw$h$pLDS`I%&95oJ%m!X96IpAVuc*vJ62Dbr6WvryDXfKWy%Z3ZP4m>=6RtSEYCT(6<%LB^7c!lw zp<$S!h0Y#SiK(i)9!kz;xfWzm4n!!gW2Q$6j`rk%weoazG_}-%bz%M+N;P$zsS_e= zRc+zs)oWjt79h=2`7QF7)7g==9APGto>&z;v!r``T#o7Ya~b{{?lcZ~q6SZ;kvN-t zXFxH{ib4s?pV(bJmXOB&ANav|Q-5a{qYhQL#@dD57(}iNAktFjdH(I4s813CT|5oP z$#NpB4S=r^A@fl9^75(uKLsimm~>{Pc^mY`lu0E6387su;V{zx+c}kO|G6Id&mf6B zxZQpG??T~N2p)v}?{zcZ;~_!6Gz!~q_rJ&gXHB(chmj+F`U@L!ZuCr_@*)y6tHJM2t+eHHE|%~Srf>@=mqJEMw6 zQ%q_I=bIl{M5~>{k&#i=ri*lETJ5(@IPTsyV;=nPO))XiS_b|-*?^nB8tSU9tGSt9 zxt|cVW(fO~AWfwU6l5eVP(Eaf+X=ev!jgsL<5er9&tsMb!l0$a`3g-=o$vVaZS1$o z@~S5NwH9saY{BYjeXDd!YU&BL^j{iPdR__?&@PFu)|8j&DG!1AomCwbt7GG133+!_ z&BZI7#!S_MH0nHCv9$AcahWoF-TsQD;Ni9Tq8Txj$9+T574Z*Ty#A&S`;Bz`Xf8lJ z@W*3Bx#DMGaYv`UjoHFbuGbKZ;8Pg3&r|-&T4ET=+H&q&eay$DY zDx`rm5v0grnDQ?@Ed9@d-)img^F7&}49VfTM8dBl@4Dv+jJj3Gi*oAr)$*+Sn%xt{ zl#Cq?0dLN>c6LP=v@MpozH^uDXH2$+9Sb&|huii3m9};biF0$ma`{!BO|L|V65$}>l>$e$CzfM*3LCw9PRJO*y5A7_6-utK;}BaC%PJDyz$zFAMd*&R%UQvkHe?;P7$sUT7H^ z>jkC-EQ2L|s!eCnzY;v-^qroIH`BkFLYBcC8`i@cDXx1|QuToJGlQ^iBAmzHhEuDp zHh9M+-BSdE=)O{lO+yuPod4Gr<0c2Jz_o2^xJ`}*V~E?I@jl= z;q8a5tfcKHTuR&~$2;>`PcS|#^*B4J{KKbh3zFhKhUvXMM{Nk8 z85th5!NCDLiY{^c_8qq6p@(ee?%h^dS>eXMxgwQD2aiATr2X^1e9pf5^{?9#Pd;IX zk#q+7`)~&wv|+YmNRfvRAF?OV4?pl=81k+G=<<-17DAHy;gNm&tiGY%x(^?*{B*|F ztzB!$WYUHxfAgX?cTr4pzNxkKl#3jX$L-n29<$oo8cW6#rcuM1RjaKDDZU?CH?_4| znie|Fd$li{A5zdM6Xhfsq_Bac@A!^M86dS-67Wu@(iX>6b%u74g#Y4`QPubUQxyAO-ag2@(qBDyj@#I@o zRk@X;63Eb?CaEw1U@SIm6R0R2XP7*Kj{3q2E`V9)zga@M?qld}>yXfoK-<*s-tsTY6tZqx})4UN{racN<(wYM#D_se1ET0-L}EiH3Z zP^I+L(_IhRuJ3-{ z(u-DL(`kE2MV&b^X2W;w0UIW5Xl&5RHg;M~Rhi?2GK!DK?C`A*T5>Apbu>CPX|)?x zSwmgLOM1>v`r^}~mXS{TZ$I%#`_{K^m+H^~ycLOX5#AByG;Ha(1t5})b*&`Gk&$6k z13h?AblY8b-(^p3eahZ+?N8ZTue;8@IpXo8O-;vaa(c!AIfaCyVQ2x&TtHqGsCd*_ zloS`)DEfQ>`uFa-+XQUtJj%<e8m**rPeOOSk2;oDVw#zlv~gDtPCKpS9x8r} zpgNOG!K9pn*R^HRDR?$eO4q3UXj2;~#89nvz*ozlmrr3NFQA>pj~%n*Uwqi=Kk`v4 zTwq={?blvsyC?hX&|@F8`5DW)rv==<``z!_ zSCAT%#B3WjY_KN4LycIQq+!_7nOFcTpeaR)ZbW}}@W25(aOjX#R8&}Z|ByYoZMPpg z({ruz6T$sc2b^<$*9SkU(-^};nj0B;JX{uY5lH+0WRfO`FieUlLtDFZUA|-bAcHow<0e}PQ8QMv*qRdj&m6oc*Xjooi1$3C|1`8mb##Wh`xMhaNEP=WpIW=vC z({cYjBRxETFILYNz#|lmq06uTvkjp^a(c4vO>HTfa!F>!p-zPrt zw>CoqE`k})J?9(;_Cf$$9w`Cbh02c1Ff-r`VFe1}#*OEkZfKx7f}p>b59_PP4%*Vx95n{4;4=WJ?xgdx{d=v8*;>m%9wAqHQt-jY(j-e^<9C)l}a= zoYB<`^;3XO{;;jvxY4hBIUnQHzg#Zskj&+7Sq5-vq^6_}My`<3Aq&L#;Gfp=3Qbj4 zUS)R29X9#+qgIILhv<<)(1^1$LwlPrC91 z0?3e+38N5BiqVH5s@TZ0doA&nOYF$^r!DV()Vnx+fx4t-?IpFJsK?e&UBmOTsv29g zq{CX;+N~0)PuCO_(32v8_&qSRCf?{T`|m}QbP`GLWQByteO!{Cm$BwX>6S0E2_#4v za(j**!oUZJ@h%SV*?XnKoP9=K0)2lw`uP#tivjr2#~!r@9(aJx;%a~1{QN*_hH)L_ z1G&5-6yO)(X#uG$Cdm)*7^mFQ^S)eFiTvqxzZ#t+_j16UYRf*42W2~RS2Khjd47^~ z4&J%|_1}s={*Z0^%Rje~M<2DaO=sE6xofRxQ411d8EOIm-PJ7!B(#S-cssO#@Nfww zR!A3JP=aJ%ZJDN4%bdH>GPnw+ckQ#}!_QdeP%k4iDuB`3^n+Wh^18RsIR1OUW)4Vp z(k!F`yy*IWv5!5`W4HGHl3mj@X3HyXusb%q)BdpSU+vnhe{4VV54OTqNh^Y_N)>Isq?J+AX8@9Rz)S77|^ArG|&a=s*#~3k_W7s5M#K9qJfEJ>Obi7Ga03)ce@(Q6B#*LWhhr1ceM=98yg#EXq$AMyS!zVbaq+^Aoog5g_OM+!6CN1 z#nNYWS~))MM1Hk7@_S*IC23AKX~dcNb*HK%9KPe;MZRsz+>E#*WPM* z=d3Yntv5rxnKw3N$>+9P{JwiEPi<@Ess%-I*>pN9uChC}ebw&Czu&s6e%jtuu*%+2 zeu*V&n(Z?Oo9s)E9k!|dE<1Noqql{K05cCU5$tHY71|~%6{eIkf+|SZ!1RFa8>5pf z8nUHj69|S$i(|KnrxFN^Q&!f|YPILK*}!Ai^-_~o+E9dju*53s%dN7d)G8WF)c4xh zgVT2G!Gu+A#3qQ^<|mcrRC1SV<8#mLaNumiJ3@MN0i!^@5b)4(w5hS@0rG9_%TU`i z!^m6%lS(z9Ya)P-z}K(WJ#2iqWGEs*yCAs($O7eb23;dPr-u9Kd@70FR)(fRK&*(F zk>zXGTOZ(a3`w5;mFt2*H_9tg(MabnBk(A|w`1oHH~Oj^^D)UIC~}umc~j6rYB0$W z+KMSx0+&VUbY-WQ#AE2?`nxNBjp|7Gr+H3^Xr{X0IWmGvH57h7K9ZP^G@Yw=R^5#B z?ze*KQY&Kwn=ffy?FB%WdQec{z?~IBLXAaF4?M3t+$JSDr%-z_a!NzzOn#}QHf^xv z%4KHvJ!%D8o;HS~mi*Y?@Vpu;zVxyvqXn^F(%50Yyy7eNv)evpdn=x>iiQ$TaWK?Xgs$B<2qf4hYicrlI(uTCn^ba$iAkUVrT4ZBCKv!Re{iFoGpF()aNS#(< zRf|ilsI0(-cTC!jn}%)O$Lp-R^C#m#FsEqMk4{fsFEZlPGO0j~*wr18RE@+ffGolb zr3C4sb%Z>6CWlhE%{LsAfVt$TGgy*DSaT+Zg z&>h-llGJrcg~eZgg{2p_Sm`%^U}=o76aV=QtH0z@Z%Ye_{%e;tw0C}# zJuX+d5{y6)QlPK0x}**Llr$IMXlLCbsmY0DcLc4ketwpjADS6co>=UD+v?$SIw3Aa1hRHx!` zO-u`WBuCnr_&Eu{tFh=W3CJhbt+7;PxmA4m4vS$pPcur(r=2de^yak}*k28G+3)Rm z*gi2+Wxray-d>ICJNRxNTv}qQi`uN@g2nde9S7{GCx)$aHFU+EouPw0+S_CI9lY04 zc`4gmf2p;XH(5MCW{JEqE5RODlm}k9^v-~kk(TZ$T$X3mt4pkOj1lm}QrkB9l#Q2+ zTVv_C)t3@5&+v3ggKMexd$TFm;(TxNErdUm_1F8n#q?GA4%>3?Cx?a)5 zjh_Mt>dnEQW1V}sNxt;zZZ!c%Bvr>LgSozl)-wQD5zo~uR`J4oRdu~w`b77oQgIvV z+3$Y-89KPU9eb?s|K4dOT|KT_PtbPc?UHu@@c+ygf~(`}u5zhfLXz_+DQB=V!Rcsyzo%uyo z7O!Zw>SKf}DJ+A3C+KLw6V(xaQwb(UE&?;Eifl<=iyiH6wgV%(ELJ;XLufMUiW;o4 zpqjeFUP2$<|J6}zxT3^bER50rs#Dz$=u97&~I3fbI0Y0(MC-B0LwRk=D~yfB zoCc#C0Woy~^%xhWhUn^|5pgcOt-xKX1AvKPTKnR~?m-hhZ@%pn(pP0uSwvsy)f3nh zTxEjPCkfkUK|1Zkt|4i@z$8Xb0kJkskqdNHgA)C=#~f_#@}J83%y32Ju< zAsQMm>L&pZb%N=;e&C)k1)P`0R`sZ)`=w4)Cz=QC1?s-R>)xaKRr(10o{nSpSVDN` z)f-VmoL+F5ee{3F0d)JTD}T}Y?)bKS_sPBX?bLGYKGpWdol|zjwP*|oA9KlHl-kZu zRM^PBPg-78#$ppO8!R5Ts%03ryGLw_8LKHKH`U-2Ftp(;E8jU}g$Ho)&S&;&X3UBz z%N$E4akK8)-)}3=S%Ng5v2*jzwxRultUT6Z4UKgOG%;(yKwDK<%cvEa4<&5>Ka5%J z`i9f0o|#i{R}iqy&Q9C9b*mfY1dw7n0fMB#=B5^pFX9qAsu%&gykcZTjfR^Jy?#%f<)Mo=1>PjKTJpgMgHbf$3}Vkr+kr1m+1lSYeIX3y)D==v`&PmR zXcHKAbaXgFsR8Tz%9X1;#BXtl^zL%?l8YA-yHqmL6G}>nfIZr~7O0aw zKx`c~av3ovi49&+TP`_nR>S;*2_`r#U$fR4PBGMhYIZ)Q zv1gvL{_Z`NdE!|s{?a!rucsf+#bVn&F=ZbnRKp*A`S!Y=q zm&gLCZfGaP=g7k&s65p<&+`8Zh>!*O?0NCC_}uqM`kL>dI8W6L_&<7^+I>WGy!7@w>%=88(SyUsD#kxGDVus=$fkBNqZC?Nb=qRDFR_lx7cm+_@L`NJ z-9gxlhvC^+v5l7%S^2N8!AQ!i_SJ3HdhLa@Cxlmom4WXQRO~>^nwK?DpNvKsthQCQ zT5EN?HI=qld*x!QwK_}Y6LMn)0Tcg)$!^-)qGGFFuCdtMr#Y3}^?E;b?X~u0raE_b z_juGl0fMCAB}lzrA&G#qL0>%~7 zYLj$Ab{vOcE3!>c({TOqbGjKnZ{5T7l1{7WRTsA}v7O9l&Cf3+Y{8%n5NAeUcFi@f zJMn4r?pWRyHAu64sAR_2SD}8`{UAzah1cL-X%^^P6s)=*9DFkZlHjmoGd_Z26NIKmq;y3MPh$ zaHIT1lp?<7c-ERMU z^Je?vosU{yti@7yNK&u0>Q&tqe{-n~yc#>u?Qtt_Ewg1y3K=aGS^Im|+R#pBwl@{p zA$$@FR_q&hS^5sjcx~$p~G3ts) z8)c~yn;weU(U~4AuPP;y1P%^UjFKl3cKDyik@jn?VZ+=5{G5aP=8HBHPIevs?%Qqu zzJ0cd@B(&%?ag{Yimc94XKjL$itLkAr*` z;Nfxkyo2+euV1fwT#}KVSRkJvwtTDg6Bk8+$M&*_v?4@ahQz*!Fb4BIHL#>!4`Gcf z0C!Cynn8+=Gg899Z)NBOYcRS>XC7t}tHTu_U{sbdTOi`}a*~N^PL7DqQt4<@$10<# zMrCD4^OJy*X8O*cTdvA00`RBZpIhn~P0*<$p3N&Mee2Vowk3qNu0mi?{1+tw@fb9I z3>DxoDy-XYzuoya2|v~%6^?OEsu|H2{iW;G)i%7RWsgZ*ih(TqOGPI28RyA22u!j? zWkq`A$F7m}p=3-5S`OJ+NF?nFYIu@#*w01icL48Se`aW#wpBn#Zm zhz{(55%pbCe8iZphKT^?Bn1zhLiXM)Glx8>5&@K|hWkUl;W{z8-bL>gf`^sbs#U9) z)G!RV@AGHB>s|lD_a}MeygJpqsNF$BofyQo5rGK-H7c7MtPZ2HX5>mYubHXENZLA< zx<$s)NcB>NDn`cHNKK>YnNrv2od3qL|E6mgv1t*MMrK?l37p9F=WAcFN@yzkkGe-~;>mtG#S!YI8tJbZn$=*tP!vDiJxqSUr7=iMpC2^{@+^JxOfNzLF#8|>@ z73n^Wk#^7D5q7)}>2nU#oJ;O{w;Qg%!T$XVU+|foV$@oO-vK-WxC>N8mw6j7q>-Clob$G=N9H0g!n(+`O^3u44jU1jafjU zMxY?50JBPeug*g8fzmS6xdbm&4SGfHm)a-FV*u(+j15}@4M!8l7A;*iuj%7R(8g4MxCKYTly?T?#ktt@giVYLSZ(vtms+HGb$tR=;N8#l z*}1=VnXPIhj^9Y_Z^mT2*v6Ad%B3U70TYNWs;g)>zd(E@pUKO!Q>d|uHm!G6nSfa%u!zfN zePh(&p0KGS(03*Gc2Y;o=C&p};S}={iWpH>H{u?-fYTF4MhM}Xu(h@2OfCZ0p|Mme zAuLLmFj-VmV3n)Oup6cAYpfu5%h$hV_Y#XI0myf*SmFE}sUijJF5Ey{)xu0o#`ZpY z%$AMUSyf{dy7@Az$<*SUz>H(sREkmZbQ;Hn)F`%Az`uxa2e?=kl_Tt+-6+biA4wze z=UMZ)7|)gIDW=l`?s_Nb*y}OkNpjcF{bay?V&m6w1nSW~0{53%M&+d>mW~+PPrS%S z^d7T6bNhx38|`8MNMN^6QXvw?wx_ou?B$_~shtIOpF~DE6?{oEhy~!jDIO5gjod<2 zCqb1Kj=jE~2jCH%ei&SkZm0-v2pkMC^Rk&)mm65+DypaGzJ<6?PVORt;4M}%D!Y6<`qbmLB-+yzU2b2U%jItcy$y@ELws{HJk>>(T-J>yk zwuc~fmBq{*VC{wy1t!!4I;mB}*X-FeDotac{)@l(u-*Fguh`GraJ{cP{J{_Y0XSA? z=bn3x(@rBP@pD8|kxZRMZ_BjxKRjX`rHxkIUWMTlfM@bjV_}1}l(t%1`663VLAZm8 z#nw{Uj6(roAyNruz!P1P=d0779HhO}7g+7`Q&*~-dJZRH1~Jcp0|#8iQT}5Bdjzo2 zUQ8=upGu1I64;!0tUUEyNuZ^qYXsyGFv+7sA%8cXLTq!-_ze1}MgN^A5SOGL0XXFs zkk6`6vfm?s7kwhyMKlxTX6XblXl8H}PS~+Tv3(Fdg6C6^;Pt#ROzD*8~SRRWv5bhgw6|;3q@%+bdMpZ*71 zytv)I&YH_gQ`F1HKlV|3^PAtyXfs4G75_W9^Sh3<=IYt2o9y8mkJ_W3J7Ak)i>i0{KinpB2+WQIvjatj`vnXse7J(fSsNExYpbY{dF31U_>nr~g-nnHRs%z=YuM<315?ZULNgm*N)kv*r66~&5PCrR zvf%y~fr=_5I@Ue{`3T_EB1X}Xb`vmc5tFkPLUPwSJXPeL>dXunggp%%@YV6j<{G&A z1$spE5-nUNq~V0wVqqeaKqpfGT>*OmjcCY6AYJx;8ESi2&sF!6WB6?WeWoU!uw>s~ zvTWNkR+OA1Cdq`80LK?6M}C6FoB-GXgFJW?CbbkZf8W{CWbb3*(l&JMjR;47v|_n0 z5HZ8|QtB(&P-i6_=*1;z(=I$oBG&{1(J@PF(bVfHOL}UU??{89zrf$?Apm?-*J+a}u3fv`xYxP7(=NU2QoG=S3w4=KRPqBpRJnSuDCu1zfS1R@ zp@RoeFV(rtAi8G0?su_>ie}sfZ!)8=w%aP8q#+V=Lcn^Ldu9 zsq4^wHVI@-OysXR(xwNhKE18z*w4V{;&sk@M~>t!^-da|m>wH4V?NVDO4Ec6*aNsP zLa$we)LxAAUWC0#{48LP>_t(TQy4s#FJI1lm&HCpYQcS2n4>7FEiJ^ustzuxl4(v% zj`cdn*1*z;=dWwCzQq&PzjM-dey7jMA3~>I#Z3J20;{gC#Q!~Rg;S{ID!HK;L6){w znW!XwJmC#+kt{B(v15w$C*_?vA8u9*p`+dl-#j1TW3`C4n0Fmd57){qI z$shVD!1$A&{DeLF=wlAXx{eF%_HW*9|L_n0U~hl>+wHwK-Q;0O>L_}I>RacjTX_%kGP+wx;GP)#iscP|!V1x+rY84TZ0w+o4NurN zzW|Rj!~9j(P<$F{;b1NF2c+rbTylr5$Rn1b(_DkT{VbLzl&fT1qgSMK#otL?aITfE zUCof55iGo^wj+1EFlx#YSo94|D$qH5I;sx{5BcTgAz(+9=HCTy#DC`JkZ>k?jcj3St7!dy~(Wn7J;5e)!#+e$W2$FF))q(Goi48vOe= z|B<`*CYZG3geDIsxjvM%%N~~FU9+SXsr{mId#XHTy$^L;!%T&>llL+Lx6R}w?FciI zhtf#z=;bRA2J+LmT~1Wk(Bz=iP&cUq1r{4kTlpz0?lGq|Ilw{o5q|DU0_Y-WtQnVnAHPeU zjJyYQjWA!o=|kszlgOinMI+m@YnN?cg4;q!$>_s0LE@B***H;q z59~9-EI1|$Uy;}y5$)#lt@JgQLqsHa=TE@h zi3-J)q5Eo_Ak8~`i>lO}>W_L5pofk&+S3-PL;qcT55PKF7eJao71K2` zZObZ9$KbOr&ls21#edPL)SG*tk$0F*ueAOAFTB%MtXu_N+(#c=Y_ECk>umk{b!fy0 zP2x-)?$MXv7_5_CE1W__>8%0N3Upn*tj@+dP){Gmcut)8q7-hGG3puH%Sd8~S>1p; z5hx2QimWnOX%kZ0jQ3h?SCLJ0)t?f$i#z5di8xZH2(VpZ2OJ}H%<}rPhplD)^ zEYlzOzz6KvXNm2>=t2x0bv|LJhBPz#?%9yUNLeb|d`?e3_L#4XBzmgMs;|gn!Y4MV zaGZ-&E^ee2$8#s9yKrx2ENOk|KJNk) zB72$;!|4(X<;YI8Wwri&xS!Ay{j$Wq{B*pvzWhA=PR;6^MBlDis1B|$t20itj~I!) ze%G}0kNovVJW`=nW{N=g#r75GAZ5LlK3zKTCbA!`b^(Q;v zx4-cX)@>e*vYdDOOlr)MN8gVw7g|oUKIiB`Ml+)Tf%j{GwAt&gH|to9#LjUk>X~%g zAUgIW`d6l|vlTL0jkaRGmtw1uXH4R!UT5Xkz0vtH0v3p;f2X0^iGLByc-;tY!f~i7 z0Z{fYdyjsH)3f(;?D>%oD5Oq(T0@NmkVcsGIWRV3i*S7`VT2@LmsgD2j=aoK*wXJNfP|=^NMEp%rno}ZMWU#hSCV!Pki6#Sl}+HO7Ehj_U2O(<88sPeD}A%;|6Zc zHxRfxqwMGWhzx|GV{|f1i&j-u*YMtGNdi%)}1? zyUGH)F#(JN0V}PHr8of?My#9qY_NQ%P4^5rPX%CS0SF{@slCQgz$f4SR;zm5mFQuS z7D0$e*a+<;NZX#N9>Rav!m;XBC$hWno4#ky>Aa5p0=`7TkVaUs2|8L;(mYSk9A*V1 z_*3eb2-qXKoLDp!HQIFEY2!5UZ#v_futmTfzGVR&es-RA5Z5S}tJu^gQh3H_9fJfu zkfTrFhB;noD=u7O^-a~b{kc7MEYWLcuUu#C6>a1!`-euoY{>F@MokHU#LAe-j6wKR z(wu<1q`na(clV#pf_Vgv5kLp&Szud0-1Gta=I!4M!0MnI)F%R)9%69xFrgz-1)L~# zODF%-lTQL3L}=qV%1fQfqo^E8y^}aWO6PY;oyxCU`9XAlr>rEe4(3+CT~fRnj{`gv zJNw=O^lVx59F=X5_ttyOhotws=Z-t=@rNFE-)VuV$M%sbK;urhS~L+biw3=YeRc#| zcH^da44@wx9&$TKoVpc&zo6XEO2%z<0IL5=o>Eb+{vR4*G>WxYsR&*}4;yAjx!myBzmZKpGF|K+Hco_c>x^SsW^z2AFm&C4N<|JWNZ@THd_B+4xzkD53JtMlN z7(7Rw@)bc- zDi+1GyF4?gx`;T z2%dpiX-fl3Az)0D}aMX!8+hmN$bsCJW}XDE)kb1wfhwrtHrS6?!-SuFvR;It4s*2<{fg zusUDUG?Rnwe{k5UpCg>^G<+tSd13jGg*H!2Nl}Ckez7-?GoPykY?z_+Ky6;}Q`+*1S{w-T< ze2fTn6O(R3nZk||L;BXR{rO2cc}>2UBHE*_(;Np)`uh5R{--^)V~2eK)!R|(NB4#X zl+D2b9&Zqr;7ff{m6l|@@6J2j7W4e)oLS!y8V>%6CB`4d8>WwiPsY%z(oxb5A*a(; zg0KKSUq02&J4o-ak0f`32)c>}muoB9*lQE@$B6YkW;5q)w5qe#T48pCDG(QrMm!kQ zCnrjlqDr<-R5#iHF70(zUw=4d!Oc%{9DUVwIwtw5S?-h{zR$PM2c8_T6boyV?Wd#a zQg;sq=mC-h1s0 zZ+VN;-!DGHK4ylu+Te~)KupS?n08RtE2?N{U>v-~viSup0M4pADxZKv0vVokG=3S` z*x0l5CNW9!Y?|rkr59ho=$uTYn1>#ry@Y)rfmdL*9iab_3MflY|6MvEHr10G^ORS1 z)6QSmFFg5&E|H)6%=F~RFF3=`?m04M&)qR#OS^EVhSrnMB(44&RA5!$0`ymM_gpbw zAV?sI7&-jRX_wpmT3r*!7lD5OepkH!=n5g=(t1{6*Lev$0(gPD>Htxb&Kesen_Mv$ ztzvT0c}#G-kB$J3nKYnY%cQ1)gM~K5Oy+blk6FpQuXu)V1*uVRPg=5)@JcWB6E-}x zqz10xxz<7zh`^4s4Ko0+cvTb(=jBnOCDs(6O4lo?VT-^zr`}6c)l5doAnG*4$Pq9J z6r>^%;gzk99VjGub0X*|gC~c)G6XnEQc36@f2LlCgyWe5n$#`QNvFIv!~2GJ5AW>x z@~+aM3V`%3p-ds4GwE|H_6OmE>(}u@a)}+fh;dUeoJ$4Ng}edi1(DPr^fGMQU^s0Vez{+-O#7&NQ78#P-O+mdC=Uhv2>;Y3l@S}X7TC+pq%FE-lsFz=l;mO7w2 zNnJu0Yb)fmC-{zL;^2;B5?)%wQAhhR*;`^~4K>*Gx@N1WuT$h+=#fo+9KMO)+@Pm0 z0unrE7g`K{R@K1o?!uY{cb_TDi}{Et%8$Kw=-TU?K9q(2#P`r&^(lY%`Ibf}<95d_ z2d!ow*nm1lJU+cQZd1FN?RlPDc2y6dEr+r>1^m#DL_fZX4kAVP<|hITv$Sy)jN@GZ z_hdpgDIfW_5Ky&(mZWxn!SL2E_4Aa$UH;GlP)Uhuy#hV4WCVWUTX-#Lus}l~F7FUc zs8W*tSnsLlC@)o@-c7V~@Y0JYWp^hY>N>r)>Lv+DXvDG?$z67gXa%5gIxo%iRT+b!2s(2db;KtYRU~tNcZ;^qB$gVa7T+pFfd~Tm}d=# zmRdz+t@SXQv6KrUaPdlldg4(($8nzO1A2S?sV@00Rt?GrU8iSojpq}9-B0p^OQgEM zb7U8C4(HY3YvXs_o6y1%^C&4i@7HhHW$|ZXRu*GPPwB6bdS}p{4nH()6)OS!3MeJw zX;jW1rF9ypv3mzd`9l&NveXgXL>FDjepbIO!)aD>Pbvr)>XVc}o`pArFVj;j0*~Zg z#^N5K4I&f@=lClHla^o7WIL}y!2RxojUJw~whJ4qzPiqi9_zBH%oKtd;fPtaOtXn4 z^PWmNWpIy};`mGOM%kCr&Nopgds@=809wNsFEkBXfUEN|Y(`)#DNsSjbWVgx<=UTau;nlb3*=FZv5CB-IaLr_gbMjOr+#)x3h5OPzbjKbknE=ky@y zYYu{3R?pN_fNx{d>eu-;+Vh+pe(a0Z^X%7btZ$D4JnN6Up55Occ8Mf+yhRx)VN^Xr z*wzt|bk&nv4WL`^9{^4zDD|;m0 z8ZR$%KGSH511}vEa9RWa7hMAVgy!P?#!doP0x^@DzZedlj;a_aF!RLBx=-{YTwPIsztFijwMmrQoFw0}E1Dh~U z?d4Qb(2JZ(4kD76#Z&Y$5dov`&{WieXvL^r)bIriE?H)QT_7xi%AhKVTVSB5k}|YO z%Gb3z_qx|zHNUHM0C~||Wu2+8Aly@Bgzy$n0R3bm+>)+`R zRJ*?Jq`zjiJW;Xy&AmN%V+mzF^FF%|9|;mR4D6sO@~is?(8bhlD9$psfI&3TNJo>u zM1L)itr>K#%5nAzZ9yG{;%huV6;qE+H}dqnbRF~+y_KIf#ST)Zq2HaHdMCYuTAJR8 zcT@gBf)ArEg;*UNIQIO0{k90ed}8^ghB zl(<}&rfg&=&x#JR6x(PUe%Q1D0Xm~fb%KFH0azSR0Eyt0A#e%$bO&JvVsy3$Dbo8& zPzp1NbxpWVZBqQNElBPH@$7f5nY|~vS9{J=P4gx_y7j2t`~&hEPf0?Bg@~&K3i>r?t->qb5=4 zfH<4)`L30eVpFWMifU+bEN0`xj#p1Co0Y4orIHbUJCCCtX0*C&C99(S&pI0_8@0Zt z2XTANv!zY#EF@2`xb&2_1qr?drSbrL`PFd>w;q3}m{P-*s1bWB7L&j!!u`N68cG_T z5#@kvJ>VX^B?QPS$Rc8VYqHB2j4qXoz@UXi9h4l{84j&lz1rUNrfV72PR=s5bog(5 z%Uf+JI$ANbdP)sd6#z(5s3z5Dll0O?=w3a`I{`WwNw&=`ErdP@;1AklnOn%GCrifE z#vgfyh9&*onU^GW4dI8c@(28s3PeM~pbAmB{kwk8GMj){BO`UT?pdRWG}MPn{#++% zT1mDBtp+p-JaZkwF+>XRtpo@&w575Ve^}j@fixfIb80$C-T^ zQyAZg85)yWkZxRh+YNYZ_-_zK_iNd{_q_YvNZP1$s8|^XwU^GViXdV7tum{x z7a=8qDpauYQwOl&tg}2nfuCG2-6#t*UG1G^S5)oW#$lvWK_rw0LAtwEi+l?roq$wW6?G|Lkk)I41G| zj3TRG)pH7bJwLH5i)7~=C)6#nK$O@i{6s)M_K-6YESpQl_=RCxVal2SQCGeW+`N+A z2_D~#+jv-)*fomJ?yfDxpX-L0tM_(@nH>Sce!H1-kb$Op_ztz`pFxnJ9eR`j@_UT7 zVpFz@NIU+VF6omh?GO3@0xfTpzYLwJ1Z#W`OJ>Vi%h^Yi%M(Gc7tK;n3^e17BMJ`% zR<{zFaSRWM=U*;FW^C41M**|<3f1p*E$LzOZl`;+q!cVsKV~#v%H$0XCI!XFH~(b5 zZhmi9uf8LPqo9>5&ExKbIf*{Y3%K|ofZ~(!5_N`HM7QC$6UX4~VzOV7!YkhPQq8{T zq0giq%VC&9)iqX&VR5RpuHaC90V40NXtm5Xh(sy$N&)wDu-r{UuHAZB!)!HMi0d_F zefHyTefi>_4GuQCKYPq2=f92304h0oVYLID{n4{6jla@2WW@vM_Rh%86}kzW+GJGv zF`{cc9}kb=C;rG^!;AtrP}+Q%S6DYGCFy6(l|NAoI}Ze(reo$~HPxbjlxQmQG7HT+ z@dd_xwz4XHJm*}uHogH=uJ1{Vv#Ry|&!sz&K-~m~1YLkfnqQ@iSJre)Lk6BE%gnUa zmfX|&Phz4Uk{w@UM~lSqvU_fo_@FMouK6B|UNB9`*8Sg%c6@zw zk3bxLX(R(@@qt4+@Q)cwb7pKOH|D>4I-bt8Sna1|Bs8L=g}63E?i!BB-W_H+PEPrg z62!-uQIOFXY8oWrtJ_;9dlCdc_LZ5v_xW}-Fsko+D>fu|Fnu_QOg;uw(CRP@YFYn& zEm&z;J@;ND_|=<9_}k;U$T|vERhxbTa}rw%J>T1uZzCH}h2{;I^G3HcsImo4h%!-2 zV~62R6mV+VxoFpnur z^M;t$16^ZuSwZ%*PMNv}iWA?|LA0u=%)aW+lNugoxeY3qdr|5SY3KHUao78CBP34* z(^oUmwx)G(0hBV!PNMpO$m21JtsEzUpY0G#x%T+3NMjY?-iV=#vtO2DhEEmNr z5&NnyifTzJV;NbGzV>V8MqQ@BX8ax_aiNk$c0Z%*?e{~6-Kv2AAN`z6 zJ3serHL3~q6i`xH`K7#QMuXrW!>=AQSplh1aR~t%<{t4N9+2#4*5)GQ#AKzC3U5vFdYv9@Tm+_Sellw3jm%N;C{Te zB~Od$YC@YxE0K9F|EjjdBDc3ylcdc?=w{s5Bb?LbihN@KHy85?F!{s3#>fcya?OkuA)VHt)>b4(wR6QPtCWVt-P5m_vPmCZJdYe6a% zf>sz2JIMfuWB`9~9EklkpD{PDIMhhSuS!l&m3CAfGoYNd**vacgeHcnA>+5mz2|!G zBMhN6JIY+Ykw594<91~;I+y@bmQ$g@b5drq3>!+-R>ITe%iPmMq_anTRInLN z$vqkZoKt3gFeZ#3*1p9xLiKxwOBScw5&D{`X~oymfOjO5Y|oP>Z^5u$QvEPxad`8A z)YUdhk2sUtv`CKX%hxPkls437JR$fUY))wv7|R$C6%%x!){n&7CoNOvU}# z*_h=rCa#~SxpSzS>4`CgIqGAM%bfE)gJM;t-pqt1|4^err`#S$Nk_>-F!jVMRqBJj z;#U7M}>t_wTNPf$~|K%#G(MfsC33&6fQ(6cwH+QI@ zQi}J=P4Gl5;Zz4QU&AAD|J2l6V1W6TRT3JRRLT@_q7oWjXmS@GzckfBN|b>8xmQvH zN5(-$licx5rhAz}$Rtx8uSR*Kc&FRr=Mu(;_uo@$?k&oyd!A?uk-k&LznJI5?}USG zPu2l9!|_nB@9+B~u1PuCWMtx$Jq!S$_cnf63-o zwtFWhY(_=Dl0C+yEL46@Z~p!}vKgDsb%dmbXo#P9r#}wMkEKe0W9BTwn3d#JMgTa{WoZ*5jHa&|$VbL@zh~J$AO) z8SEewjG?jX8^2h}-5V<@YH}48u8$u?c-XFnc;)i_l@Y2*BxX1!wz$(*mU>}S_s^ke z>;_-k6FzP8vK#Mwj>EbPjh$r4k_ti#@fK3Kt?Rl6`OmEduzWe3QMV$UgZ2iaI|5pz zdoKYQHAMdqv~T{#+h*fc09>*`&c1a0AR#b%RU-Fw*r8)ysp?|uZkBEKs3^9@pOeaA z+^h+Ut6Vp!QO1vk1!w}&T2?h?O_OGrwVG8IAAI8Zd9Sim-&(y*m3+XvdnulA_A>Ex z_0)G1{(UWP-J#>eT2Uq`r)dGu@GC;k!q4?>!wkyv&%) zaax&OlSBG82A~e=`@blf>ZW!(W1|CnMf{ibIR2P^ zK%vUL%r^>V(-n{Ys21L>U&6Z3ymTk0ycZJDI02yktM2<6(4-?))7BJpOT&2Gv;Gu~ zkN7#bf9@7C;)P}~YdblgCauzaCgUMwJS{ROOZ8C65x)p@uABYYu0bl9P`?~T!P?CP z{_E&Nw?jkCy7MTcw)NGM#ReI~!CC9P^T~AZ$Q>ll9$h_Hjluqp-X~1(ydeM(0P@uN zy0=N>jI@+CRTcJm&pqB>3kU0Ns1-S(B`WTWFl(eS(0?kAn^b8a2AVIX#5DxP+7Kl( z_yo4No@KM@#w#Qcs;-u%eg`kbsvpIz)p8`W$joynB2H{8Htp1J z0ts|NtxvDNAI6ryXv>qpDaUI4*v2sY=bky#OG7+Dz}d_WInj)zuCTRI0 z^2qelO?5g!feVT3Ow)iX*J^(#wNr4?+d9TTF9qTo>DCrnF=bmwUInX?4v#iJH&Ioe zlQ=byVv`PEL)j}iTblUzJkP$Wa+D@|M#sKaCplV!C)og+t7AA5dDhqt8z_Ea5li61 z!8umEl1IPkl4w~!4E9Y`bgIt?Yo;WB?r<2Gu!ANB&f9nnTPJN3I39NNYFCNf(;3u% zo#~)Q@Gs<87*LDtiJbThn4%H~xU!mvYsF}MXl0C0P8r^SrbjG&r209FipV=Qh`7f&vw^ z!e?OMq6ziP8%o@V6rqn&8KT}m0x=V&qDie7U*A9yW~I_5iEf%t-(*d8F> zA{vGw6;fXuOg2;s-stqauynNJynf)_e3;%DJyWw`ID+S?k`m#Kq3RrPcZAS6rEn*m zN5OH(X^kPC^uII=2fuP(qU1A==leLV-*m@c9WM{@I0Id0vw+!CpS7C=3`R$G)*@OO z0P)GZBKlw?jClj6UZB5S(TJWa!kP+FqSe=rDiEhmzyIbc^Zmc7kCg89oRGyMi^T+V@=Cr71 zi++@ChnWWD9)}ynWw_&Ci$KwCj?QsFyPZl;qm~GwN|aH=W)&EL3K=U=w%gBek+sY@ ze7MzXXc=F7aM@j6ka+w)qhO&{oezjrGAh8fcKJx+fo-C3=iY&0+v1s9(CDE^IBpsrlv@t!@&dJxGkaBmm&=JVhV<0A0 zqm99&4EQpp4SP5rH9B~czW*cfhQBJMt9@3)tBKecKfqqsYgf3(gXKypezEv3c^+F- z8rxu{<^C@!Z~1K2{AS~>Z-wGc6XH-owvc&;_|a*@hU#vJ<`*zfF3X+aN(O}?4~@Mi ziQb<~-+BFI+lKe^KJI+vL2-Hc(k>cSk=)4(Nss>PYJJO^yU^y=fPz>QG$u)TY}ax8 zF}p>XvX_|fvomgaH?vOjP3F-lxhaN5&=A``EEQdBUNh`A;}bb!s1cWG_+z;J?qAEdFGBw!rMiH4!_QP4BLLJ`&b|+R zyx3fF`q;?++MCZjoA5)>MDf@)S zyAOJ!zp4^NdGkJS;JUDYfn~eANH}TbiU=?@mdRP)4u6u!6H2z|qyg=@2bMF)b64;( zFSKU_obXiqqL*8jd&Q5^6?V@jcaQLYMjZdkbZp8Nb#GJCyZ!J%UFn|G&?#{BvRzR4 zr-J8wn$wRL5#98FN0g&P=XxzM5*nwpHPG4UP9b}Q@d0fs?s!_mW`~RYGj!Fh;Vr3{ z`1m%;OhUBj?@_JbOFRzu$%I|yYDS#^JCp-GbLH}y>Y*=u9~*{i zCnFz1#gBL({v3V?9kTvi+ls}OUldSJSj?&$E;Me>B!3^h>q@fvXcH5aVv4x|GeaT> zf5->nwkf&unb!f5QmxGHs8bq4c+K02tpo7#EZ1_)MiFU<*|PtbQd}kbS8>6jtNcYg zCJ^1Vroz6Vq=|99-h7|~^Qx@j>)}Gzh0LGZShp-0uBh-AI zqMHnjt-D+=4v$nN{eR%*YEp4R)+e>iC|M1v-JiKLzn0aLZAbvYcG#AbOdh!ac{9)R z`Khuo7;0;pcMR-qQr@NdS0@=1%LW1@8wapkLeOGrW?k2jX2*J3 z?!VV7R}>_CcdW*~p{w5OzGMq``;9@ah8TSjzh2`pF-8R2Qiec&-zdrIDNSh=Dz3Bd zb8(gXnaN;%Gm&_(qHdDBE0i>+?A?85e%T(dNhgv__;?mh2CnPHz7;aN$QN6|4Zbff z_}*=FLQWA$q3j{Kfciq_{I@0+8Y+m~1RL7%*I97mAm=td@*6Ach##~>+3eRhXz~^H zprFYOQ#&T;8Zg+0CYk_k#4m3ns9pGWnwU^RwmkW()s`hNVOiHz-_JJN_aG|wXRd!A z1kPO~vf5-->U)yF?sl>M)Tj}bxyM{=woUHr##R8n_(kgf3UAsH_BixzlE1*V+_6DR zs;04g?j(UJ(KWg9%wgH->0w_{eULDNtm%R9X)s~+FUqI3MGMtt`;QfREDXy zVjHQMWJuAt=;kShay3FxzFJ|}BC_N?vFkF1wszNufDLw@g$`9aK7YS@w=dTfbAWBA zw6kfbG1UJ{FxPBh-6Mrvf7xS1E`|N@A!=dS-)?o3O=tcsl&$fDWs#aDLaqWQCtD`{ zTPe}OM{zR*5wmBX{02qKLeJUrwA%`E*%3O=&LAQET-4 z!>O3m=L75%le@ZwQFGB#!*c{97o6lF{o!o)NOm_b&>(@wVg>k{IBp`Kp(biuS5S=4 z&i}mB-!xAAy6oao2V`X7?{qnHBxx7q7f>w-x|eiv_U*GI$SQe~fo%79Kr zaut+Nw`>coD+7*j$T=jpDeed+dv&Q(Q{4Gcbg0~c?bxX?zs+}Lj;G**7vZs2*~(OB zhuC>BW}{1s9@X;|=jfV37qBybzp72MLi@E270o4qPO8NH*~WFt@(hq}b?%>p`FiFR z|Cn99d#Rh4;~}r7um4Fh-2b$)SoV)nQ@E;{udQRN^Gz+>sYU{kF>vx6dWGHLPt19! zQvPUb%=z~E$bMu)3bB+>Dk#uo(zSTJ0|^i#ThkLM*cVi~>km!%b^fp(<|^;mdFiNM zy`Md*>|Vn$KHV@tc){)QFn7L3FUevHg3g`*-S_vwI=cI*sYc6we^LxOiCQ_l%GRl= zFWK~}b}-KjiQ>1Y=k=tE|r58aWonPw+h;9$q(W`@f zS^hSL1-Ie&L^WIBF1S)>8zSUJ?Kb24<24IzBi)*?Ah`!n~4p_0@Vzrip($`QpTv1lvb`dMYrO7^v zm6aPyxO~>Q^Y%LYvUgjDd&TVBm`buYOE4j7l&jO)Ug9=(gQqMyJ6J{GK6mr}o#btg z*$&khhfrbm>4Ew>u(Q;GXQJC0O=W8t#hCo4sjBkiLr6y-)x5Vn#QS6OGtLg*;rbSjg`FSap)4z^QiR>tb-D=yti=F=7U)NzSR`+eHptpF5pG#%#(-pMoPjdtB zn#TsH*!K~mD_}^BWp;4srOB4hstZVBHzWD!T$ zjHN>lGh;4HbZ+VK5rg5bEuB>X{>QWXcTsTFcB)2i`rM}(kLtLB$05-m3yMpF>HI(p zNSu(zfh!km67{GX!5MC)uVMs+7Wz}(wH#V#<-@%Lz}o3Iy)1;|^PLa-)YDjnh^P4l z-;&9iz?pUd`wE4&8BY8Cu9aQihslKVk-D_6E$UxY`XHS~`EW)b&O@*x!8hv0`_!=G z4B@S}>E1XMF^A(I`yKcT{HHWx{osECq))|7$k61A(0k?5yTMXX=L1Bw=!l3ze*E;S z+ak_^g~fqPmiyh6l9*L@FN!IV7Ue&w)(7bvIa8G1F`E3ff(_mp_*r>X#|)6NW?TZxCVP z#fdpo0rXLW1CT41t1W)g__#&m{eXf$a1#n=r!HpgfA^2HVJ-N6q_Jx-}nrhujNMJ0tcn|-LAQ(3X8Vy%s1mjSLATT&dnyhg{iiSEyPs} z%0aA-Fs!)q9@>XJr<$VP)x{ zfXhNKecsQIwycWfF)L(NBqhAXL6WZ=<#2N1B7-LFvN7kW)A=NJqC84*fycUCub4lw z1NiH%rQllVzJFqLJNK!qQGE^Cbt=K-37W^{m)*ODtkpr8 z7YsRAUmuO8XjXdbraY-%rga`4DjV#^i0j7<3-YaO5q7TCw=2hf$O22cG`V7rukuqh zKuDw9F{!lA1G0AAyu*~&mm4j4lUv_i{U%(M;z6Vsz0x(Tgq0T->^OIO z%)1menClHy5ksh)X`$O^@?%wPE`M>OAxo;-Yhq}qR#B+^X`lkyYt~Hp{^Gy z;bc(UKKuQ?cXC9z{qEy*`VrPu+BeX%6HbbH5uLt+6WxB&S?O__IyC#&u7*_zbYQ)> z`gym(2EWP~emXE*a;=f1?(-co+n znYr&+!|nnG5>l2){3M?W)f3kjS(@3F*xN*bW}D)ex%b^Xl1{{>ZZ1qD&pdlJt~B~q za>yS*rH|=dU@A2Wnk{Yiv62@)*=N)4Lxa=BehP$1AX=JP7tl6+28Ftyxq#frbMudi5Pm4)E% zl32$YB0Xq90YP9yZ6dnp`}!ojRDV7y){=afiqvWNo;SAAaUFQWqZXbOBYqpKTJZhB6}s^|frX(E%te0r4Tm3tWZi~cOeYE( zmZUT*Ne-x;Or@o90*8@59OrUoLscN`wqx%$1OL}Rnw4FLVRtDMRJ4ED-A5v(yGHys zQdl$rC;-g>r#On_S5hc}41f^t#IPa? zuroL?iAg=Rr>BR9n_CkKhGjGt%vP0m7sy3@GB!3|YJ=E*t_|2~E74HOK}sFpc4I}I z|MOG5<9a8Ln3zv>+S!UKO|8e--+Gtb@$>B@^;9Snnwd8!=tv@2Qi$|!6E#0iPHHSQ z*&B$PsvD|S2*@Hq83f7V-q*iRjXF9~(1ZkSi{~>2tRRBFx3{<1)_xiA;AV-sbGTfU zWujprwljPFjb)A^0RV{$i3ejJ^O~ER#U4)kcs+4z?4?oLEc9!qEbkJA1_wug>f$;C zRAPFDB}@(_LBimZr)$xZj-N+suy#B=yzR2rjn*tuErP|H*hqcNgP`xF+N>f+N9d7a ztcq0F5Wpk~~euzl{sjL||FX5^-$b?0-m)1t8y)ek1SoK)sLwqDOE1A=$ rXh?CMY(vWTVH0I85_kR5n&s5Ex9Z@+-Frp}1$imSseMFpwu1f-J~)jS