From 38b5f4ff72908f2073a32c1fe39ee27910559bdc Mon Sep 17 00:00:00 2001 From: Timur Shafigullin Date: Tue, 20 Jun 2023 19:12:41 +0300 Subject: [PATCH 001/216] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=BD=D0=BE?= =?UTF-8?q?=D1=81=20Fugen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 86 + .gitignore | 7 +- .swift-version | 1 + .swiftlint.yml | 139 +- .travis.yml | 29 - Brewfile | 5 + Dangerfile | 1 + Demo/.figmagen.yml | 18 - Demo/.fugen.yml | 32 + Demo/FigmaGenDemo.xcodeproj/project.pbxproj | 389 -- Demo/FigmaGenDemo/AppDelegate.swift | 17 - Demo/FigmaGenDemo/Generated/Colors.swift | 83 - Demo/FigmaGenDemo/Generated/Spacings.swift | 56 - Demo/FigmaGenDemo/Generated/TextStyle.swift | 264 - .../Base.lproj/LaunchScreen.storyboard | 25 - .../Resources/Base.lproj/Main.storyboard | 51 - Demo/FigmaGenDemo/ViewController.swift | 20 - Demo/FugenDemo.xcodeproj/project.pbxproj | 659 +++ .../contents.xcworkspacedata | 2 +- .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/xcschemes/Fugen.xcscheme | 37 +- .../xcschemes/FugenDemo.xcscheme} | 34 +- .../contents.xcworkspacedata | 2 +- .../xcshareddata/IDEWorkspaceChecks.plist | 0 Demo/FugenDemo/AppDelegate.swift | 22 + Demo/FugenDemo/Generated/ColorStyle.swift | 160 + Demo/FugenDemo/Generated/Images.swift | 145 + Demo/FugenDemo/Generated/ShadowStyle.swift | 351 ++ Demo/FugenDemo/Generated/TextStyle.swift | 498 ++ Demo/{FigmaGenDemo => FugenDemo}/Info.plist | 18 +- .../Resources/Colors.xcassets/Contents.json | 6 + .../DaisyBush.colorset/Contents.json | 20 + .../Eclipse.colorset/Contents.json | 20 + .../JellyBean.colorset/Contents.json | 20 + .../Lochinvar.colorset/Contents.json | 20 + .../Razzmatazz.colorset/Contents.json | 20 + .../SnowDrift.colorset/Contents.json | 20 + .../Submarine.colorset/Contents.json | 20 + .../Whisper.colorset/Contents.json | 20 + .../Resources/Fonts/SF-Pro-Display-Bold.otf | Bin .../Resources/Fonts/SF-Pro-Display-Light.otf | Bin .../Resources/Fonts/SF-Pro-Display-Medium.otf | Bin .../Fonts/SF-Pro-Display-Regular.otf | Bin .../Fonts/SF-Pro-Display-Semibold.otf | Bin .../AppIcon.appiconset/Contents.json | 0 .../Resources/Images.xcassets}/Contents.json | 0 .../Generated/Cloud.imageset/Cloud.pdf | Bin 0 -> 1760 bytes .../Generated/Cloud.imageset/Contents.json | 12 + .../Images.xcassets/Generated/Contents.json | 6 + .../Generated/Geo.imageset/Contents.json | 12 + .../Generated/Geo.imageset/Geo.pdf | Bin 0 -> 1835 bytes .../Generated/Phone.imageset/Contents.json | 12 + .../Generated/Phone.imageset/Phone.pdf | Bin 0 -> 3151 bytes .../Generated/Share.imageset/Contents.json | 12 + .../Generated/Share.imageset/Share.pdf | Bin 0 -> 2213 bytes .../Generated/Snapchat.imageset/Contents.json | 12 + .../Generated/Snapchat.imageset/Snapchat.pdf | Bin 0 -> 5114 bytes .../Generated/Star.imageset/Contents.json | 12 + .../Generated/Star.imageset/Star.pdf | Bin 0 -> 1360 bytes .../Generated/Telegram.imageset/Contents.json | 12 + .../Generated/Telegram.imageset/Telegram.pdf | Bin 0 -> 4296 bytes .../Generated/Viber.imageset/Contents.json | 12 + .../Generated/Viber.imageset/Viber.pdf | Bin 0 -> 5261 bytes .../Generated/WeChat.imageset/Contents.json | 12 + .../Generated/WeChat.imageset/WeChat.pdf | Bin 0 -> 3396 bytes .../Generated/WhatsApp.imageset/Contents.json | 12 + .../Generated/WhatsApp.imageset/WhatsApp.pdf | Bin 0 -> 3446 bytes .../Base.lproj/LaunchScreen.storyboard | 56 + .../Storyboards/Base.lproj/Main.storyboard | 63 + Demo/FugenDemo/ViewController.swift | 37 + Demo/FugenDemoTests/FugenDemoTests.swift | 29 + {Tests => Demo/FugenDemoTests}/Info.plist | 2 +- Demo/Podfile | 7 + Demo/Podfile.lock | 16 + Demo/Templates/Colors.stencil | 35 - Demo/Templates/Spacings.stencil | 27 - Demo/Templates/TextStyles.stencil | 193 - Demo/figmagen | Bin 7022456 -> 0 bytes Docs/AccessToken.png | Bin 0 -> 535804 bytes Docs/FileURL.png | Bin 0 -> 627764 bytes Docs/PlayVideo.png | Bin 0 -> 344945 bytes FigmaGen.podspec | 17 - FigmaGen.xcodeproj/project.pbxproj | 1152 ---- .../xcshareddata/IDETemplateMacros.plist | 12 - Fugen.podspec | 16 + Fugen.xcodeproj/CYaml_Info.plist | 25 + Fugen.xcodeproj/DictionaryCoder_Info.plist | 25 + Fugen.xcodeproj/FugenTests_Info.plist | 25 + Fugen.xcodeproj/FugenToolsTests_Info.plist | 25 + Fugen.xcodeproj/FugenTools_Info.plist | 25 + Fugen.xcodeproj/PathKit_Info.plist | 25 + Fugen.xcodeproj/PromiseKit_Info.plist | 25 + Fugen.xcodeproj/Rainbow_Info.plist | 25 + Fugen.xcodeproj/StencilSwiftKit_Info.plist | 25 + Fugen.xcodeproj/Stencil_Info.plist | 25 + Fugen.xcodeproj/SwiftCLI_Info.plist | 25 + Fugen.xcodeproj/Yams_Info.plist | 25 + Fugen.xcodeproj/project.pbxproj | 4772 +++++++++++++++++ .../contents.xcworkspacedata | 4 +- .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/WorkspaceSettings.xcsettings | 10 +- .../xcschemes/Fugen ColorStyles.xcscheme | 140 + .../xcschemes/Fugen Generate.xcscheme | 119 + .../xcschemes/Fugen Help.xcscheme | 63 +- .../xcschemes/Fugen Images.xcscheme | 140 + .../xcschemes/Fugen Package.xcscheme | 92 + .../xcschemes/Fugen ShadowStyles.xcscheme | 152 + .../xcschemes/Fugen TextStyles.xcscheme | 136 + .../xcschemes/Fugen Version.xcscheme | 112 + .../xcschemes/Fugen-Package.xcscheme | 92 + .../xcshareddata/xcschemes/Fugen.xcscheme | 88 + Gemfile | 7 +- Gemfile.lock | 101 +- LICENSE | 2 +- Makefile | 60 +- Package.resolved | 63 +- Package.resources | 1 - Package.swift | 50 +- Podfile | 30 - Podfile.lock | 56 - README-ru.md | 177 - README.md | 518 +- Scripts/bootstrap.sh | 91 +- Scripts/swiftlint.sh | 10 + Sources/Commands/Colors/ColorsCommand.swift | 101 - Sources/Commands/Colors/ColorsGenerator.swift | 70 - Sources/Commands/Colors/ColorsServices.swift | 15 - .../Commands/Generate/GenerateCommand.swift | 88 - .../Commands/Generate/GenerateServices.swift | 9 - .../Commands/Spacings/SpacingsCommand.swift | 101 - .../Commands/Spacings/SpacingsGenerator.swift | 68 - .../Commands/Spacings/SpacingsServices.swift | 15 - .../TextStyles/TextStylesCommand.swift | 101 - .../TextStyles/TextStylesGenerator.swift | 70 - .../TextStyles/TextStylesServices.swift | 15 - .../Commands/AsyncExecutableCommand.swift | 36 + .../Fugen/Commands/ColorStylesCommand.swift | 118 + Sources/Fugen/Commands/GenerateCommand.swift | 49 + .../GenerationConfigurableCommand.swift | 79 + Sources/Fugen/Commands/ImagesCommand.swift | 209 + .../Fugen/Commands/ShadowStylesCommand.swift | 101 + .../Fugen/Commands/TextStylesCommand.swift | 101 + Sources/Fugen/Dependencies.swift | 113 + .../ColorStyles/ColorStylesContext.swift | 8 + .../ColorStyles/ColorStylesGenerator.swift | 9 + .../DefaultColorStylesGenerator.swift | 51 + .../GenerationParametersError.swift | 21 + .../GenerationParametersResolving.swift | 82 + .../Images/DefaultImagesGenerator.swift | 68 + .../Generators/Images/ImagesContext.swift | 8 + .../Generators/Images/ImagesGenerator.swift | 9 + .../Library/DefaultLibraryGenerator.swift | 63 + .../Generators/Library/LibraryGenerator.swift | 9 + .../DefaultShadowStylesGenerator.swift | 47 + .../ShadowStyles/ShadowStylesContext.swift | 8 + .../ShadowStyles/ShadowStylesGenerator.swift | 9 + .../DefaultTextStylesGenerator.swift | 47 + .../TextStyles/TextStylesContext.swift | 8 + .../TextStyles/TextStylesGenerator.swift | 9 + Sources/{ => Fugen}/Models/Color.swift | 9 +- .../Fugen/Models/ColorStyle/ColorStyle.swift | 23 + .../Models/ColorStyle/ColorStyleAsset.swift | 8 + .../Models/ColorStyle/ColorStyleNode.swift | 10 + .../AccessTokenConfiguration.swift | 25 + .../Configuration/BaseConfiguration.swift | 10 + .../ColorStylesConfiguration.swift | 42 + .../Models/Configuration/Configuration.swift | 31 + .../Configuration/FileConfiguration.swift | 106 + .../GenerationConfiguration.swift | 72 + .../Configuration/ImagesConfiguration.swift | 79 + .../ShadowStylesConfiguration.swift | 3 + .../TextStylesConfiguration.swift | 3 + Sources/Fugen/Models/Font.swift | 28 + Sources/Fugen/Models/Images/Image.swift | 28 + Sources/Fugen/Models/Images/ImageAsset.swift | 10 + Sources/Fugen/Models/Images/ImageFormat.swift | 27 + Sources/Fugen/Models/Images/ImageNode.swift | 10 + .../Models/Images/ImageRenderedNode.swift | 22 + .../Fugen/Models/Images/ImageResource.swift | 10 + Sources/Fugen/Models/Images/ImageScale.swift | 26 + .../Models/Parameters/FileParameters.swift | 10 + .../Parameters/GenerationParameters.swift | 10 + .../Models/Parameters/ImagesParameters.swift | 14 + .../Models/Parameters/NodesParameters.swift | 9 + .../Models/Parameters/RenderParameters.swift | 9 + Sources/Fugen/Models/ShadowStyle/Shadow.swift | 12 + .../Models/ShadowStyle/ShadowStyle.swift | 15 + .../Models/ShadowStyle/ShadowStyleNode.swift | 10 + .../Fugen/Models/ShadowStyle/ShadowType.swift | 6 + .../Fugen/Models/TextStyle/TextStyle.swift | 23 + .../Models/TextStyle/TextStyleColor.swift | 9 + .../Models/TextStyle/TextStyleNode.swift | 16 + Sources/Fugen/Models/Vector.swift | 9 + .../Providers/Assets/AssetsProvider.swift | 10 + .../Assets/DefaultAssetsProvider.swift | 44 + .../Assets/ColorStyleAssetsProvider.swift | 9 + .../DefaultColorStyleAssetsProvider.swift | 76 + .../ColorStyles/ColorStylesProvider.swift | 9 + .../ColorStylesProviderError.swift | 35 + .../DefaultColorStylesProvider.swift | 111 + .../Configuration/ConfigurationProvider.swift | 9 + .../DefaultConfigurationProvider.swift | 22 + .../Providers/DataProvider/DataProvider.swift | 10 + .../DataProvider/DefaultDataProvider.swift | 40 + .../Providers/FigmaAPI/DTOs/FigmaError.swift | 22 + .../Providers/FigmaAPI/DTOs/FigmaImages.swift | 16 + .../FigmaAPI/DTOs/File}/FigmaBlendMode.swift | 10 +- .../DTOs/File/FigmaBooleanOperationType.swift | 11 + .../FigmaAPI/DTOs/File/FigmaColor.swift | 20 + .../FigmaAPI/DTOs/File/FigmaColorStop.swift | 9 + .../FigmaAPI/DTOs/File/FigmaComponent.swift | 10 + .../FigmaAPI/DTOs/File}/FigmaConstraint.swift | 12 - .../DTOs/File/FigmaConstraintType.swift | 10 + .../FigmaAPI/DTOs/File/FigmaEasingType.swift | 10 + .../FigmaAPI/DTOs/File/FigmaEffect.swift | 32 + .../FigmaAPI/DTOs/File/FigmaEffectType.swift | 11 + .../DTOs/File/FigmaExportSetting.swift | 22 + .../DTOs/File}/FigmaFrameOffset.swift | 11 - .../FigmaAPI/DTOs/File/FigmaImageFormat.swift | 11 + .../DTOs/File/FigmaLayoutConstraint.swift | 24 + .../FigmaAPI/DTOs/File/FigmaLayoutGrid.swift | 36 + .../DTOs/File/FigmaLayoutGridAlignment.swift | 10 + .../DTOs/File/FigmaLayoutGridPattern.swift | 10 + .../FigmaLayoutHorizontalConstraint.swift | 12 + .../File/FigmaLayoutVerticalConstraint.swift | 12 + .../DTOs/File/FigmaLineHeightUnit.swift | 10 + .../FigmaAPI/DTOs/File/FigmaPaint.swift | 46 + .../FigmaAPI/DTOs/File}/FigmaPaintType.swift | 10 +- .../FigmaAPI/DTOs/File/FigmaRectangle.swift | 11 + .../FigmaAPI/DTOs/File/FigmaScaleMode.swift | 11 + .../DTOs/File/FigmaStrokeAlignment.swift | 10 + .../FigmaAPI/DTOs/File/FigmaStrokeCap.swift | 12 + .../FigmaAPI/DTOs/File/FigmaStrokeJoin.swift | 10 + .../FigmaAPI/DTOs/File/FigmaStyle.swift | 24 + .../FigmaAPI/DTOs/File/FigmaStyleType.swift | 11 + .../FigmaAPI/DTOs/File/FigmaTextCase.swift | 11 + .../DTOs/File/FigmaTextDecoration.swift | 10 + .../File/FigmaTextHorizontalAlignment.swift | 11 + .../File/FigmaTextVerticalAlignment.swift | 10 + .../FigmaAPI/DTOs/File}/FigmaTypeStyle.swift | 52 +- .../FigmaAPI/DTOs/File/FigmaVector.swift | 9 + .../FigmaBooleanOperationNodePayload.swift | 20 + .../DTOs/File/Nodes/FigmaCanvasNodeInfo.swift | 11 + .../File/Nodes/FigmaDocumentNodeInfo.swift | 8 + .../FigmaAPI/DTOs/File}/Nodes/FigmaFile.swift | 30 +- .../DTOs/File/Nodes/FigmaFrameNodeInfo.swift | 54 + .../File/Nodes/FigmaInstanceNodePayload.swift | 14 + .../FigmaAPI/DTOs/File}/Nodes/FigmaNode.swift | 89 +- .../DTOs/File}/Nodes/FigmaNodeType.swift | 10 - .../Nodes/FigmaRectangleNodePayload.swift | 9 + .../DTOs/File/Nodes/FigmaSliceNodeInfo.swift | 9 + .../File/Nodes/FigmaTextNodePayload.swift | 20 + .../DTOs/File/Nodes/FigmaVectorNodeInfo.swift | 88 + .../FigmaAPI/DefaultFigmaAPIProvider.swift | 153 + .../FigmaAPI/FigmaAPIEmptyParameters.swift | 8 + .../FigmaAPI/FigmaAPIEmptyResponse.swift | 3 + .../FigmaAPI}/FigmaAPIProvider.swift | 7 +- .../Providers/FigmaAPI/FigmaAPIRoute.swift | 55 + .../Providers/FigmaAPI}/FigmaAPIVersion.swift | 6 - .../Providers/FigmaAPI/FigmaHTTPService.swift | 11 + .../FigmaAPI/Routes/FigmaAPIFileRoute.swift | 46 + .../FigmaAPIFileRouteQueryParameters.swift | 18 + .../FigmaAPI/Routes/FigmaAPIImagesRoute.swift | 54 + .../FigmaAPIImagesRouteQueryParameters.swift | 26 + .../DefaultFigmaFilesProvider.swift | 47 + .../FigmaFiles/FigmaFilesProvider.swift | 9 + .../DefaultFigmaNodesProvider.swift | 75 + .../FigmaNodes/FigmaNodesProvider.swift | 9 + .../FigmaNodes/FigmaNodesProviderError.swift} | 10 +- .../Assets/DefaultImageAssetsProvider.swift | 153 + .../Images/Assets/ImageAssetsProvider.swift | 14 + .../Images/DefaultImagesProvider.swift | 163 + .../Providers/Images/ImagesProvider.swift | 13 + .../Images/ImagesProviderError.swift | 31 + .../Render/DefaultImageRenderProvider.swift | 144 + .../Images/Render/ImageRenderProvider.swift | 15 + .../Render/ImageRenderProviderError.swift | 31 + .../DefaultImageResourcesProvider.swift | 80 + .../Resources/ImageResourcesProvider.swift | 13 + .../DefaultShadowStylesProvider.swift | 135 + .../ShadowStyles/ShadowStylesProvider.swift | 9 + .../ShadowStylesProviderError.swift | 48 + .../DefaultTextStylesProvider.swift | 159 + .../TextStyles/TextStylesProvider.swift | 9 + .../TextStyles/TextStylesProviderError.swift | 65 + .../Render/DefaultTemplateContextCoder.swift | 20 + .../Render/DefaultTemplateRenderer.swift | 116 + Sources/Fugen/Render/RenderDestination.swift | 9 + Sources/Fugen/Render/RenderTemplate.swift | 9 + Sources/Fugen/Render/RenderTemplateType.swift | 9 + .../Color/StencilColorFilter.swift | 48 + .../Color/StencilColorInfoFilter.swift | 28 + .../Color/StencilColorRGBAHexInfoFilter.swift | 29 + .../Color/StencilColorRGBAInfoFilter.swift | 25 + .../Color/StencilColorRGBHexInfoFilter.swift | 34 + .../Color/StencilColorRGBInfoFilter.swift | 34 + .../Font/StencilFontFilter.swift | 29 + .../Font/StencilFontInfoFilter.swift | 22 + .../StencilFontInitializerModificator.swift | 67 + .../Font/StencilFontModificator.swift | 29 + .../Font/StencilFontSystemFilter.swift | 22 + .../Number/StencilByteToFloatFilter.swift | 14 + .../Number/StencilByteToHexFilter.swift | 14 + .../Number/StencilFloatToByteFilter.swift | 18 + .../Number/StencilHexToByteFilter.swift | 18 + .../StencilExtensions/StencilExtension.swift | 15 + .../StencilExtensions/StencilFilter.swift | 29 + .../StencilFilterError.swift | 32 + .../StencilModificator.swift | 29 + .../StencilModificatorError.swift | 32 + .../Render/StencilExtensions/StencilTag.swift | 18 + .../StencilExtensions/StencilTagError.swift | 27 + .../StencilExtensions/StencilTagNode.swift | 16 + .../Vector/StencilVectorFilter.swift | 29 + .../Vector/StencilVectorInfoFilter.swift | 26 + .../Fugen/Render/TemplateContextCoder.swift | 9 + Sources/Fugen/Render/TemplateRenderer.swift | 12 + Sources/Fugen/main.swift | 25 + Sources/FugenTools/.swiftlint.yml | 6 + .../FugenTools/Assets/AssetAppearance.swift | 51 + .../Assets/AssetAppearanceContrast.swift | 8 + .../Assets/AssetAppearanceLuminosity.swift | 9 + .../Assets/AssetCompressionType.swift | 12 + .../FugenTools/Assets/AssetDisplayGamut.swift | 9 + Sources/FugenTools/Assets/AssetIdiom.swift | 92 + .../Assets/AssetIdiomIPadSubtype.swift | 8 + Sources/FugenTools/Assets/AssetInfo.swift | 20 + Sources/FugenTools/Assets/AssetNode.swift | 62 + .../Assets/ColorSet/AssetColor.swift | 93 + .../ColorSet/AssetColorComponents.swift | 43 + .../Assets/ColorSet/AssetColorContent.swift | 31 + .../Assets/ColorSet/AssetColorGrayscale.swift | 24 + .../Assets/ColorSet/AssetColorSet.swift | 18 + .../ColorSet/AssetColorSetContents.swift | 19 + .../Assets/ColorSet/AssetCustomColor.swift | 87 + .../Assets/ColorSet/AssetSystemColor.swift | 16 + .../ColorSet/AssetSystemColorPlatform.swift | 10 + .../Assets/Folder/AssetFolder.swift | 116 + .../Assets/Folder/AssetFolderContents.swift | 16 + .../Assets/Folder/AssetFolderProperties.swift | 30 + .../Assets/ImageSet/AssetImage.swift | 109 + .../ImageSet/AssetImageAlignmentInsets.swift | 20 + .../ImageSet/AssetImageAutoScaling.swift | 8 + .../AssetImageGraphicsFeatureSet.swift | 14 + .../AssetImageLanguageDirection.swift | 9 + .../Assets/ImageSet/AssetImageMemory.swift | 12 + .../ImageSet/AssetImageProperties.swift | 42 + .../Assets/ImageSet/AssetImageScale.swift | 10 + .../Assets/ImageSet/AssetImageSet.swift | 18 + .../ImageSet/AssetImageSetContents.swift | 22 + .../Assets/ImageSet/AssetImageSizeClass.swift | 9 + .../AssetImageTemplateRenderingIntent.swift | 9 + .../Extensions/Bundle+Extensions.swift | 40 + .../Extensions/CLI+Extensions.swift | 8 +- .../Extensions/Collection+Extensions.swift | 14 + .../Extensions/Decodable+Extensions.swift | 10 + .../Extensions/DispatchQueue+Extensions.swift | 14 + .../Extensions/Encodable+Extensions.swift | 10 + .../Extensions/FloatingPoint+Extensions.swift | 8 +- .../Extensions/JSONDecoder+Extensions.swift | 28 + .../Extensions/JSONEncoder+Extensions.swift | 24 + ...DecodingContainerProtocol+Extensions.swift | 10 +- .../OperatingSystemVersion+Extensions.swift | 14 + .../Extensions/Optional+Extensions.swift | 19 + .../Extensions/Path+Extensions.swift | 19 + .../Extensions/ProcessInfo+Extensions.swift | 10 + .../Extensions/Promise+Extensions.swift | 51 + ...angeReplaceableCollection+Extensions.swift | 30 + .../Extensions/Sequence+Extensions.swift | 10 + ...gleValueDecodingContainer+Extensions.swift | 8 +- .../Extensions/String+Extensions.swift | 28 + .../UnkeyedDecodingContainer+Extensions.swift | 14 + .../BodyEncoders/HTTPBodyEncoder.swift | 12 + .../BodyEncoders/HTTPBodyJSONEncoder.swift | 46 + .../BodyEncoders/HTTPBodyURLEncoder.swift | 44 + .../HTTPService/HTTPActivityIndicator.swift | 13 + .../HTTPService/HTTPAnyEncodable.swift | 20 + .../FugenTools/HTTPService/HTTPError.swift | 184 + .../HTTPErrorStringConvertible.swift | 23 + .../FugenTools/HTTPService/HTTPHeader.swift | 129 + .../HTTPService/HTTPMethod.swift} | 8 +- .../FugenTools/HTTPService/HTTPResponse.swift | 70 + .../FugenTools/HTTPService/HTTPRoute.swift | 80 + .../FugenTools/HTTPService/HTTPService.swift | 68 + .../HTTPService/HTTPServiceTask.swift | 226 + .../HTTPService/HTTPStatusCode.swift | 56 + Sources/FugenTools/HTTPService/HTTPTask.swift | 110 + .../HTTPService/HTTPUIActivityIndicator.swift | 40 + .../QueryEncoders/HTTPQueryEncoder.swift | 8 + .../QueryEncoders/HTTPQueryURLEncoder.swift | 48 + .../HTTPDataResponseSerializer.swift | 34 + .../HTTPDecodableResponseSerializer.swift | 32 + .../HTTPEmptyResponse.swift | 8 + .../HTTPJSONResponseSerializer.swift | 31 + .../HTTPResponseDecoder.swift | 12 + .../HTTPResponseSerializer.swift | 49 + .../HTTPStringResponseSerializer.swift | 44 + Sources/FugenTools/Shared/AnyCodable.swift | 207 + Sources/FugenTools/Shared/AnyCodingKey.swift | 29 + Sources/FugenTools/Shared/Cache.swift | 66 + Sources/FugenTools/Shared/MessageError.swift | 22 + .../URLEncoder/URLArrayEncodingStrategy.swift | 9 + .../URLEncoder/URLBoolEncodingStrategy.swift | 9 + .../URLEncoder/URLDateEncodingStrategy.swift | 17 + .../URLEncoder/URLEncodedForm.swift | 3 + .../URLEncoder/URLEncodedFormComponent.swift | 32 + .../URLEncoder/URLEncodedFormContext.swift | 14 + .../URLEncoder/URLEncodedFormEncoder.swift | 63 + ...URLEncodedFormKeyedEncodingContainer.swift | 91 + .../URLEncoder/URLEncodedFormSerializer.swift | 108 + ...odedFormSingleValueEncodingContainer.swift | 257 + ...LEncodedFormUnkeyedEncodingContainer.swift | 98 + .../FugenTools/URLEncoder/URLEncoder.swift | 65 + .../URLEncoder/URLSpaceEncodingStrategy.swift | 9 + .../Configuration/BaseConfiguration.swift | 15 - .../Models/Configuration/Configuration.swift | 32 - .../Configuration/ConfigurationError.swift | 27 - .../Configuration/StepConfiguration.swift | 36 - .../Figma/FigmaBooleanOperationType.swift | 19 - Sources/Models/Figma/FigmaColor.swift | 26 - Sources/Models/Figma/FigmaColorStop.swift | 20 - Sources/Models/Figma/FigmaComponent.swift | 24 - .../Models/Figma/FigmaConstraintType.swift | 23 - Sources/Models/Figma/FigmaEasingType.swift | 23 - Sources/Models/Figma/FigmaEffect.swift | 58 - Sources/Models/Figma/FigmaEffectType.swift | 19 - Sources/Models/Figma/FigmaExportSetting.swift | 36 - Sources/Models/Figma/FigmaImageFormat.swift | 19 - .../Models/Figma/FigmaLayoutConstraint.swift | 37 - Sources/Models/Figma/FigmaLayoutGrid.swift | 67 - .../Figma/FigmaLayoutGridAlignment.swift | 23 - .../Models/Figma/FigmaLayoutGridPattern.swift | 23 - .../FigmaLayoutHorizontalConstraint.swift | 29 - .../Figma/FigmaLayoutVerticalConstraint.swift | 29 - .../Models/Figma/FigmaLineHeightUnit.swift | 18 - Sources/Models/Figma/FigmaPaint.swift | 105 - Sources/Models/Figma/FigmaRectangle.swift | 26 - Sources/Models/Figma/FigmaScaleMode.swift | 19 - .../Models/Figma/FigmaStrokeAlignment.swift | 23 - Sources/Models/Figma/FigmaStrokeCap.swift | 20 - Sources/Models/Figma/FigmaStrokeJoin.swift | 18 - Sources/Models/Figma/FigmaStyle.swift | 41 - Sources/Models/Figma/FigmaStyleType.swift | 19 - Sources/Models/Figma/FigmaTextCase.swift | 19 - .../Models/Figma/FigmaTextDecoration.swift | 18 - .../Figma/FigmaTextHorizontalAlignment.swift | 19 - .../Figma/FigmaTextVerticalAlignment.swift | 18 - Sources/Models/Figma/FigmaVector.swift | 20 - .../FigmaBooleanOperationNodePayload.swift | 32 - .../Figma/Nodes/FigmaCanvasNodeInfo.swift | 26 - .../Figma/Nodes/FigmaDocumentNodeInfo.swift | 17 - .../Figma/Nodes/FigmaFrameNodeInfo.swift | 105 - .../Nodes/FigmaInstanceNodePayload.swift | 23 - .../Nodes/FigmaRectangleNodePayload.swift | 21 - .../Figma/Nodes/FigmaSliceNodeInfo.swift | 20 - .../Figma/Nodes/FigmaTextNodePayload.swift | 38 - .../Figma/Nodes/FigmaVectorNodeInfo.swift | 156 - Sources/Models/Spacing.swift | 15 - Sources/Models/TemplateType.swift | 59 - Sources/Models/TextStyle.swift | 26 - Sources/Services.swift | 68 - .../API/DefaultFigmaAPIProvider.swift | 109 - Sources/Services/API/FigmaAPIRoute.swift | 35 - .../API/Routes/FigmaAPIFileRoute.swift | 57 - Sources/Services/Colors/ColorsError.swift | 31 - Sources/Services/Colors/ColorsProvider.swift | 19 - Sources/Services/Colors/ColorsRenderer.swift | 14 - .../Colors/DefaultColorsProvider.swift | 104 - .../Colors/DefaultColorsRenderer.swift | 52 - .../Nodes/DefaultNodesExtractor.swift | 82 - Sources/Services/Nodes/NodesExtractor.swift | 18 - .../Spacings/DefaultSpacingsProvider.swift | 74 - .../Spacings/DefaultSpacingsRenderer.swift | 44 - Sources/Services/Spacings/SpacingsError.swift | 27 - .../Services/Spacings/SpacingsProvider.swift | 19 - .../Services/Spacings/SpacingsRenderer.swift | 14 - .../DefaultTextStylesProvider.swift | 144 - .../DefaultTextStylesRenderer.swift | 86 - .../Services/TextStyles/TextStylesError.swift | 53 - .../TextStyles/TextStylesProvider.swift | 19 - .../TextStyles/TextStylesRenderer.swift | 14 - .../Tools/Extensions/Path+Extensions.swift | 21 - .../Extensions/ProcessInfo+Extensions.swift | 16 - .../Extensions/Routable+Extensions.swift | 37 - .../Extensions/Sequence+Extensions.swift | 16 - .../UnkeyedDecodingContainer+Extensions.swift | 20 - Sources/main.swift | 25 - Templates/ColorStyles.stencil | 82 + Templates/Colors.stencil | 35 - Templates/FileHeader.stencil | 2 + Templates/Images.stencil | 75 + Templates/ShadowStyles.stencil | 312 ++ Templates/Spacings.stencil | 17 - Templates/TextStyles.stencil | 329 +- Tests/.swiftlint.yml | 1 + .../FugenTests.swift} | 8 +- {Resources => Tests/FugenTests}/Info.plist | 14 +- Tests/FugenTests/XCTestManifests.swift | 18 + Tests/FugenToolsTests/FugenToolsTests.swift | 10 + Tests/FugenToolsTests/Info.plist | 22 + Tests/FugenToolsTests/XCTestManifests.swift | 18 + Tests/LinuxMain.swift | 10 + 502 files changed, 19772 insertions(+), 6798 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 .swift-version delete mode 100644 .travis.yml create mode 100644 Brewfile delete mode 100644 Demo/.figmagen.yml create mode 100644 Demo/.fugen.yml delete mode 100644 Demo/FigmaGenDemo.xcodeproj/project.pbxproj delete mode 100644 Demo/FigmaGenDemo/AppDelegate.swift delete mode 100644 Demo/FigmaGenDemo/Generated/Colors.swift delete mode 100644 Demo/FigmaGenDemo/Generated/Spacings.swift delete mode 100644 Demo/FigmaGenDemo/Generated/TextStyle.swift delete mode 100644 Demo/FigmaGenDemo/Resources/Base.lproj/LaunchScreen.storyboard delete mode 100644 Demo/FigmaGenDemo/Resources/Base.lproj/Main.storyboard delete mode 100644 Demo/FigmaGenDemo/ViewController.swift create mode 100644 Demo/FugenDemo.xcodeproj/project.pbxproj rename {FigmaGen.xcodeproj => Demo/FugenDemo.xcodeproj}/project.xcworkspace/contents.xcworkspacedata (70%) rename Demo/{FigmaGenDemo.xcodeproj => FugenDemo.xcodeproj}/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename FigmaGen.xcodeproj/xcshareddata/xcschemes/FigmaGen Tests.xcscheme => Demo/FugenDemo.xcodeproj/xcshareddata/xcschemes/Fugen.xcscheme (62%) rename Demo/{FigmaGenDemo.xcodeproj/xcshareddata/xcschemes/FigmaGenDemo.xcscheme => FugenDemo.xcodeproj/xcshareddata/xcschemes/FugenDemo.xcscheme} (67%) rename {FigmaGen.xcworkspace => Demo/FugenDemo.xcworkspace}/contents.xcworkspacedata (79%) rename {FigmaGen.xcodeproj/project.xcworkspace => Demo/FugenDemo.xcworkspace}/xcshareddata/IDEWorkspaceChecks.plist (100%) create mode 100644 Demo/FugenDemo/AppDelegate.swift create mode 100644 Demo/FugenDemo/Generated/ColorStyle.swift create mode 100644 Demo/FugenDemo/Generated/Images.swift create mode 100644 Demo/FugenDemo/Generated/ShadowStyle.swift create mode 100644 Demo/FugenDemo/Generated/TextStyle.swift rename Demo/{FigmaGenDemo => FugenDemo}/Info.plist (93%) create mode 100644 Demo/FugenDemo/Resources/Colors.xcassets/Contents.json create mode 100644 Demo/FugenDemo/Resources/Colors.xcassets/DaisyBush.colorset/Contents.json create mode 100644 Demo/FugenDemo/Resources/Colors.xcassets/Eclipse.colorset/Contents.json create mode 100644 Demo/FugenDemo/Resources/Colors.xcassets/JellyBean.colorset/Contents.json create mode 100644 Demo/FugenDemo/Resources/Colors.xcassets/Lochinvar.colorset/Contents.json create mode 100644 Demo/FugenDemo/Resources/Colors.xcassets/Razzmatazz.colorset/Contents.json create mode 100644 Demo/FugenDemo/Resources/Colors.xcassets/SnowDrift.colorset/Contents.json create mode 100644 Demo/FugenDemo/Resources/Colors.xcassets/Submarine.colorset/Contents.json create mode 100644 Demo/FugenDemo/Resources/Colors.xcassets/Whisper.colorset/Contents.json rename Demo/{FigmaGenDemo => FugenDemo}/Resources/Fonts/SF-Pro-Display-Bold.otf (100%) rename Demo/{FigmaGenDemo => FugenDemo}/Resources/Fonts/SF-Pro-Display-Light.otf (100%) rename Demo/{FigmaGenDemo => FugenDemo}/Resources/Fonts/SF-Pro-Display-Medium.otf (100%) rename Demo/{FigmaGenDemo => FugenDemo}/Resources/Fonts/SF-Pro-Display-Regular.otf (100%) rename Demo/{FigmaGenDemo => FugenDemo}/Resources/Fonts/SF-Pro-Display-Semibold.otf (100%) rename Demo/{FigmaGenDemo/Resources/Assets.xcassets => FugenDemo/Resources/Images.xcassets}/AppIcon.appiconset/Contents.json (100%) rename Demo/{FigmaGenDemo/Resources/Assets.xcassets => FugenDemo/Resources/Images.xcassets}/Contents.json (100%) create mode 100644 Demo/FugenDemo/Resources/Images.xcassets/Generated/Cloud.imageset/Cloud.pdf create mode 100644 Demo/FugenDemo/Resources/Images.xcassets/Generated/Cloud.imageset/Contents.json create mode 100644 Demo/FugenDemo/Resources/Images.xcassets/Generated/Contents.json create mode 100644 Demo/FugenDemo/Resources/Images.xcassets/Generated/Geo.imageset/Contents.json create mode 100644 Demo/FugenDemo/Resources/Images.xcassets/Generated/Geo.imageset/Geo.pdf create mode 100644 Demo/FugenDemo/Resources/Images.xcassets/Generated/Phone.imageset/Contents.json create mode 100644 Demo/FugenDemo/Resources/Images.xcassets/Generated/Phone.imageset/Phone.pdf create mode 100644 Demo/FugenDemo/Resources/Images.xcassets/Generated/Share.imageset/Contents.json create mode 100644 Demo/FugenDemo/Resources/Images.xcassets/Generated/Share.imageset/Share.pdf create mode 100644 Demo/FugenDemo/Resources/Images.xcassets/Generated/Snapchat.imageset/Contents.json create mode 100644 Demo/FugenDemo/Resources/Images.xcassets/Generated/Snapchat.imageset/Snapchat.pdf create mode 100644 Demo/FugenDemo/Resources/Images.xcassets/Generated/Star.imageset/Contents.json create mode 100644 Demo/FugenDemo/Resources/Images.xcassets/Generated/Star.imageset/Star.pdf create mode 100644 Demo/FugenDemo/Resources/Images.xcassets/Generated/Telegram.imageset/Contents.json create mode 100644 Demo/FugenDemo/Resources/Images.xcassets/Generated/Telegram.imageset/Telegram.pdf create mode 100644 Demo/FugenDemo/Resources/Images.xcassets/Generated/Viber.imageset/Contents.json create mode 100644 Demo/FugenDemo/Resources/Images.xcassets/Generated/Viber.imageset/Viber.pdf create mode 100644 Demo/FugenDemo/Resources/Images.xcassets/Generated/WeChat.imageset/Contents.json create mode 100644 Demo/FugenDemo/Resources/Images.xcassets/Generated/WeChat.imageset/WeChat.pdf create mode 100644 Demo/FugenDemo/Resources/Images.xcassets/Generated/WhatsApp.imageset/Contents.json create mode 100644 Demo/FugenDemo/Resources/Images.xcassets/Generated/WhatsApp.imageset/WhatsApp.pdf create mode 100644 Demo/FugenDemo/Storyboards/Base.lproj/LaunchScreen.storyboard create mode 100644 Demo/FugenDemo/Storyboards/Base.lproj/Main.storyboard create mode 100644 Demo/FugenDemo/ViewController.swift create mode 100644 Demo/FugenDemoTests/FugenDemoTests.swift rename {Tests => Demo/FugenDemoTests}/Info.plist (93%) mode change 100755 => 100644 create mode 100644 Demo/Podfile create mode 100644 Demo/Podfile.lock delete mode 100644 Demo/Templates/Colors.stencil delete mode 100644 Demo/Templates/Spacings.stencil delete mode 100644 Demo/Templates/TextStyles.stencil delete mode 100755 Demo/figmagen create mode 100644 Docs/AccessToken.png create mode 100644 Docs/FileURL.png create mode 100644 Docs/PlayVideo.png delete mode 100644 FigmaGen.podspec delete mode 100644 FigmaGen.xcodeproj/project.pbxproj delete mode 100644 FigmaGen.xcodeproj/xcshareddata/IDETemplateMacros.plist create mode 100644 Fugen.podspec create mode 100644 Fugen.xcodeproj/CYaml_Info.plist create mode 100644 Fugen.xcodeproj/DictionaryCoder_Info.plist create mode 100644 Fugen.xcodeproj/FugenTests_Info.plist create mode 100644 Fugen.xcodeproj/FugenToolsTests_Info.plist create mode 100644 Fugen.xcodeproj/FugenTools_Info.plist create mode 100644 Fugen.xcodeproj/PathKit_Info.plist create mode 100644 Fugen.xcodeproj/PromiseKit_Info.plist create mode 100644 Fugen.xcodeproj/Rainbow_Info.plist create mode 100644 Fugen.xcodeproj/StencilSwiftKit_Info.plist create mode 100644 Fugen.xcodeproj/Stencil_Info.plist create mode 100644 Fugen.xcodeproj/SwiftCLI_Info.plist create mode 100644 Fugen.xcodeproj/Yams_Info.plist create mode 100644 Fugen.xcodeproj/project.pbxproj rename {Demo/FigmaGenDemo.xcodeproj => Fugen.xcodeproj}/project.xcworkspace/contents.xcworkspacedata (61%) rename {FigmaGen.xcworkspace => Fugen.xcodeproj/project.xcworkspace}/xcshareddata/IDEWorkspaceChecks.plist (100%) rename Demo/FigmaGenDemo.xcodeproj/xcshareddata/IDETemplateMacros.plist => Fugen.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings (56%) create mode 100644 Fugen.xcodeproj/xcshareddata/xcschemes/Fugen ColorStyles.xcscheme create mode 100644 Fugen.xcodeproj/xcshareddata/xcschemes/Fugen Generate.xcscheme rename FigmaGen.xcodeproj/xcshareddata/xcschemes/FigmaGen Help.xcscheme => Fugen.xcodeproj/xcshareddata/xcschemes/Fugen Help.xcscheme (64%) create mode 100644 Fugen.xcodeproj/xcshareddata/xcschemes/Fugen Images.xcscheme create mode 100644 Fugen.xcodeproj/xcshareddata/xcschemes/Fugen Package.xcscheme create mode 100644 Fugen.xcodeproj/xcshareddata/xcschemes/Fugen ShadowStyles.xcscheme create mode 100644 Fugen.xcodeproj/xcshareddata/xcschemes/Fugen TextStyles.xcscheme create mode 100644 Fugen.xcodeproj/xcshareddata/xcschemes/Fugen Version.xcscheme create mode 100644 Fugen.xcodeproj/xcshareddata/xcschemes/Fugen-Package.xcscheme create mode 100644 Fugen.xcodeproj/xcshareddata/xcschemes/Fugen.xcscheme delete mode 100644 Podfile delete mode 100644 Podfile.lock delete mode 100755 README-ru.md create mode 100755 Scripts/swiftlint.sh delete mode 100644 Sources/Commands/Colors/ColorsCommand.swift delete mode 100644 Sources/Commands/Colors/ColorsGenerator.swift delete mode 100644 Sources/Commands/Colors/ColorsServices.swift delete mode 100644 Sources/Commands/Generate/GenerateCommand.swift delete mode 100644 Sources/Commands/Generate/GenerateServices.swift delete mode 100644 Sources/Commands/Spacings/SpacingsCommand.swift delete mode 100644 Sources/Commands/Spacings/SpacingsGenerator.swift delete mode 100644 Sources/Commands/Spacings/SpacingsServices.swift delete mode 100644 Sources/Commands/TextStyles/TextStylesCommand.swift delete mode 100644 Sources/Commands/TextStyles/TextStylesGenerator.swift delete mode 100644 Sources/Commands/TextStyles/TextStylesServices.swift create mode 100644 Sources/Fugen/Commands/AsyncExecutableCommand.swift create mode 100644 Sources/Fugen/Commands/ColorStylesCommand.swift create mode 100644 Sources/Fugen/Commands/GenerateCommand.swift create mode 100644 Sources/Fugen/Commands/GenerationConfigurableCommand.swift create mode 100644 Sources/Fugen/Commands/ImagesCommand.swift create mode 100644 Sources/Fugen/Commands/ShadowStylesCommand.swift create mode 100644 Sources/Fugen/Commands/TextStylesCommand.swift create mode 100644 Sources/Fugen/Dependencies.swift create mode 100644 Sources/Fugen/Generators/ColorStyles/ColorStylesContext.swift create mode 100644 Sources/Fugen/Generators/ColorStyles/ColorStylesGenerator.swift create mode 100644 Sources/Fugen/Generators/ColorStyles/DefaultColorStylesGenerator.swift create mode 100644 Sources/Fugen/Generators/GenerationParametersError.swift create mode 100644 Sources/Fugen/Generators/GenerationParametersResolving.swift create mode 100644 Sources/Fugen/Generators/Images/DefaultImagesGenerator.swift create mode 100644 Sources/Fugen/Generators/Images/ImagesContext.swift create mode 100644 Sources/Fugen/Generators/Images/ImagesGenerator.swift create mode 100644 Sources/Fugen/Generators/Library/DefaultLibraryGenerator.swift create mode 100644 Sources/Fugen/Generators/Library/LibraryGenerator.swift create mode 100644 Sources/Fugen/Generators/ShadowStyles/DefaultShadowStylesGenerator.swift create mode 100644 Sources/Fugen/Generators/ShadowStyles/ShadowStylesContext.swift create mode 100644 Sources/Fugen/Generators/ShadowStyles/ShadowStylesGenerator.swift create mode 100644 Sources/Fugen/Generators/TextStyles/DefaultTextStylesGenerator.swift create mode 100644 Sources/Fugen/Generators/TextStyles/TextStylesContext.swift create mode 100644 Sources/Fugen/Generators/TextStyles/TextStylesGenerator.swift rename Sources/{ => Fugen}/Models/Color.swift (55%) create mode 100644 Sources/Fugen/Models/ColorStyle/ColorStyle.swift create mode 100644 Sources/Fugen/Models/ColorStyle/ColorStyleAsset.swift create mode 100644 Sources/Fugen/Models/ColorStyle/ColorStyleNode.swift create mode 100644 Sources/Fugen/Models/Configuration/AccessTokenConfiguration.swift create mode 100644 Sources/Fugen/Models/Configuration/BaseConfiguration.swift create mode 100644 Sources/Fugen/Models/Configuration/ColorStylesConfiguration.swift create mode 100644 Sources/Fugen/Models/Configuration/Configuration.swift create mode 100644 Sources/Fugen/Models/Configuration/FileConfiguration.swift create mode 100644 Sources/Fugen/Models/Configuration/GenerationConfiguration.swift create mode 100644 Sources/Fugen/Models/Configuration/ImagesConfiguration.swift create mode 100644 Sources/Fugen/Models/Configuration/ShadowStylesConfiguration.swift create mode 100644 Sources/Fugen/Models/Configuration/TextStylesConfiguration.swift create mode 100644 Sources/Fugen/Models/Font.swift create mode 100644 Sources/Fugen/Models/Images/Image.swift create mode 100644 Sources/Fugen/Models/Images/ImageAsset.swift create mode 100644 Sources/Fugen/Models/Images/ImageFormat.swift create mode 100644 Sources/Fugen/Models/Images/ImageNode.swift create mode 100644 Sources/Fugen/Models/Images/ImageRenderedNode.swift create mode 100644 Sources/Fugen/Models/Images/ImageResource.swift create mode 100644 Sources/Fugen/Models/Images/ImageScale.swift create mode 100644 Sources/Fugen/Models/Parameters/FileParameters.swift create mode 100644 Sources/Fugen/Models/Parameters/GenerationParameters.swift create mode 100644 Sources/Fugen/Models/Parameters/ImagesParameters.swift create mode 100644 Sources/Fugen/Models/Parameters/NodesParameters.swift create mode 100644 Sources/Fugen/Models/Parameters/RenderParameters.swift create mode 100644 Sources/Fugen/Models/ShadowStyle/Shadow.swift create mode 100644 Sources/Fugen/Models/ShadowStyle/ShadowStyle.swift create mode 100644 Sources/Fugen/Models/ShadowStyle/ShadowStyleNode.swift create mode 100644 Sources/Fugen/Models/ShadowStyle/ShadowType.swift create mode 100644 Sources/Fugen/Models/TextStyle/TextStyle.swift create mode 100644 Sources/Fugen/Models/TextStyle/TextStyleColor.swift create mode 100644 Sources/Fugen/Models/TextStyle/TextStyleNode.swift create mode 100644 Sources/Fugen/Models/Vector.swift create mode 100644 Sources/Fugen/Providers/Assets/AssetsProvider.swift create mode 100644 Sources/Fugen/Providers/Assets/DefaultAssetsProvider.swift create mode 100644 Sources/Fugen/Providers/ColorStyles/Assets/ColorStyleAssetsProvider.swift create mode 100644 Sources/Fugen/Providers/ColorStyles/Assets/DefaultColorStyleAssetsProvider.swift create mode 100644 Sources/Fugen/Providers/ColorStyles/ColorStylesProvider.swift create mode 100644 Sources/Fugen/Providers/ColorStyles/ColorStylesProviderError.swift create mode 100644 Sources/Fugen/Providers/ColorStyles/DefaultColorStylesProvider.swift create mode 100644 Sources/Fugen/Providers/Configuration/ConfigurationProvider.swift create mode 100644 Sources/Fugen/Providers/Configuration/DefaultConfigurationProvider.swift create mode 100644 Sources/Fugen/Providers/DataProvider/DataProvider.swift create mode 100644 Sources/Fugen/Providers/DataProvider/DefaultDataProvider.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/FigmaError.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/FigmaImages.swift rename Sources/{Models/Figma => Fugen/Providers/FigmaAPI/DTOs/File}/FigmaBlendMode.swift (73%) create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaBooleanOperationType.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaColor.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaColorStop.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaComponent.swift rename Sources/{Models/Figma => Fugen/Providers/FigmaAPI/DTOs/File}/FigmaConstraint.swift (56%) create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaConstraintType.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaEasingType.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaEffect.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaEffectType.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaExportSetting.swift rename Sources/{Models/Figma => Fugen/Providers/FigmaAPI/DTOs/File}/FigmaFrameOffset.swift (54%) create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaImageFormat.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaLayoutConstraint.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaLayoutGrid.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaLayoutGridAlignment.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaLayoutGridPattern.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaLayoutHorizontalConstraint.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaLayoutVerticalConstraint.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaLineHeightUnit.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaPaint.swift rename Sources/{Models/Figma => Fugen/Providers/FigmaAPI/DTOs/File}/FigmaPaintType.swift (59%) create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaRectangle.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaScaleMode.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaStrokeAlignment.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaStrokeCap.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaStrokeJoin.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaStyle.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaStyleType.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaTextCase.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaTextDecoration.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaTextHorizontalAlignment.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaTextVerticalAlignment.swift rename Sources/{Models/Figma => Fugen/Providers/FigmaAPI/DTOs/File}/FigmaTypeStyle.swift (62%) create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/FigmaVector.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/Nodes/FigmaBooleanOperationNodePayload.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/Nodes/FigmaCanvasNodeInfo.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/Nodes/FigmaDocumentNodeInfo.swift rename Sources/{Models/Figma => Fugen/Providers/FigmaAPI/DTOs/File}/Nodes/FigmaFile.swift (54%) create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/Nodes/FigmaFrameNodeInfo.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/Nodes/FigmaInstanceNodePayload.swift rename Sources/{Models/Figma => Fugen/Providers/FigmaAPI/DTOs/File}/Nodes/FigmaNode.swift (79%) rename Sources/{Models/Figma => Fugen/Providers/FigmaAPI/DTOs/File}/Nodes/FigmaNodeType.swift (71%) create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/Nodes/FigmaRectangleNodePayload.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/Nodes/FigmaSliceNodeInfo.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/Nodes/FigmaTextNodePayload.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DTOs/File/Nodes/FigmaVectorNodeInfo.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/DefaultFigmaAPIProvider.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/FigmaAPIEmptyParameters.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/FigmaAPIEmptyResponse.swift rename Sources/{Services/API => Fugen/Providers/FigmaAPI}/FigmaAPIProvider.swift (60%) create mode 100644 Sources/Fugen/Providers/FigmaAPI/FigmaAPIRoute.swift rename Sources/{Services/API => Fugen/Providers/FigmaAPI}/FigmaAPIVersion.swift (78%) create mode 100644 Sources/Fugen/Providers/FigmaAPI/FigmaHTTPService.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/Routes/FigmaAPIFileRoute.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/Routes/FigmaAPIFileRouteQueryParameters.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/Routes/FigmaAPIImagesRoute.swift create mode 100644 Sources/Fugen/Providers/FigmaAPI/Routes/FigmaAPIImagesRouteQueryParameters.swift create mode 100644 Sources/Fugen/Providers/FigmaFiles/DefaultFigmaFilesProvider.swift create mode 100644 Sources/Fugen/Providers/FigmaFiles/FigmaFilesProvider.swift create mode 100644 Sources/Fugen/Providers/FigmaNodes/DefaultFigmaNodesProvider.swift create mode 100644 Sources/Fugen/Providers/FigmaNodes/FigmaNodesProvider.swift rename Sources/{Services/Nodes/NodesError.swift => Fugen/Providers/FigmaNodes/FigmaNodesProviderError.swift} (58%) create mode 100644 Sources/Fugen/Providers/Images/Assets/DefaultImageAssetsProvider.swift create mode 100644 Sources/Fugen/Providers/Images/Assets/ImageAssetsProvider.swift create mode 100644 Sources/Fugen/Providers/Images/DefaultImagesProvider.swift create mode 100644 Sources/Fugen/Providers/Images/ImagesProvider.swift create mode 100644 Sources/Fugen/Providers/Images/ImagesProviderError.swift create mode 100644 Sources/Fugen/Providers/Images/Render/DefaultImageRenderProvider.swift create mode 100644 Sources/Fugen/Providers/Images/Render/ImageRenderProvider.swift create mode 100644 Sources/Fugen/Providers/Images/Render/ImageRenderProviderError.swift create mode 100644 Sources/Fugen/Providers/Images/Resources/DefaultImageResourcesProvider.swift create mode 100644 Sources/Fugen/Providers/Images/Resources/ImageResourcesProvider.swift create mode 100644 Sources/Fugen/Providers/ShadowStyles/DefaultShadowStylesProvider.swift create mode 100644 Sources/Fugen/Providers/ShadowStyles/ShadowStylesProvider.swift create mode 100644 Sources/Fugen/Providers/ShadowStyles/ShadowStylesProviderError.swift create mode 100644 Sources/Fugen/Providers/TextStyles/DefaultTextStylesProvider.swift create mode 100644 Sources/Fugen/Providers/TextStyles/TextStylesProvider.swift create mode 100644 Sources/Fugen/Providers/TextStyles/TextStylesProviderError.swift create mode 100644 Sources/Fugen/Render/DefaultTemplateContextCoder.swift create mode 100644 Sources/Fugen/Render/DefaultTemplateRenderer.swift create mode 100644 Sources/Fugen/Render/RenderDestination.swift create mode 100644 Sources/Fugen/Render/RenderTemplate.swift create mode 100644 Sources/Fugen/Render/RenderTemplateType.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/Color/StencilColorFilter.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/Color/StencilColorInfoFilter.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/Color/StencilColorRGBAHexInfoFilter.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/Color/StencilColorRGBAInfoFilter.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/Color/StencilColorRGBHexInfoFilter.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/Color/StencilColorRGBInfoFilter.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/Font/StencilFontFilter.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/Font/StencilFontInfoFilter.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/Font/StencilFontInitializerModificator.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/Font/StencilFontModificator.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/Font/StencilFontSystemFilter.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/Number/StencilByteToFloatFilter.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/Number/StencilByteToHexFilter.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/Number/StencilFloatToByteFilter.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/Number/StencilHexToByteFilter.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/StencilExtension.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/StencilFilter.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/StencilFilterError.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/StencilModificator.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/StencilModificatorError.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/StencilTag.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/StencilTagError.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/StencilTagNode.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/Vector/StencilVectorFilter.swift create mode 100644 Sources/Fugen/Render/StencilExtensions/Vector/StencilVectorInfoFilter.swift create mode 100644 Sources/Fugen/Render/TemplateContextCoder.swift create mode 100644 Sources/Fugen/Render/TemplateRenderer.swift create mode 100644 Sources/Fugen/main.swift create mode 100644 Sources/FugenTools/.swiftlint.yml create mode 100644 Sources/FugenTools/Assets/AssetAppearance.swift create mode 100644 Sources/FugenTools/Assets/AssetAppearanceContrast.swift create mode 100644 Sources/FugenTools/Assets/AssetAppearanceLuminosity.swift create mode 100644 Sources/FugenTools/Assets/AssetCompressionType.swift create mode 100644 Sources/FugenTools/Assets/AssetDisplayGamut.swift create mode 100644 Sources/FugenTools/Assets/AssetIdiom.swift create mode 100644 Sources/FugenTools/Assets/AssetIdiomIPadSubtype.swift create mode 100644 Sources/FugenTools/Assets/AssetInfo.swift create mode 100644 Sources/FugenTools/Assets/AssetNode.swift create mode 100644 Sources/FugenTools/Assets/ColorSet/AssetColor.swift create mode 100644 Sources/FugenTools/Assets/ColorSet/AssetColorComponents.swift create mode 100644 Sources/FugenTools/Assets/ColorSet/AssetColorContent.swift create mode 100644 Sources/FugenTools/Assets/ColorSet/AssetColorGrayscale.swift create mode 100644 Sources/FugenTools/Assets/ColorSet/AssetColorSet.swift create mode 100644 Sources/FugenTools/Assets/ColorSet/AssetColorSetContents.swift create mode 100644 Sources/FugenTools/Assets/ColorSet/AssetCustomColor.swift create mode 100644 Sources/FugenTools/Assets/ColorSet/AssetSystemColor.swift create mode 100644 Sources/FugenTools/Assets/ColorSet/AssetSystemColorPlatform.swift create mode 100644 Sources/FugenTools/Assets/Folder/AssetFolder.swift create mode 100644 Sources/FugenTools/Assets/Folder/AssetFolderContents.swift create mode 100644 Sources/FugenTools/Assets/Folder/AssetFolderProperties.swift create mode 100644 Sources/FugenTools/Assets/ImageSet/AssetImage.swift create mode 100644 Sources/FugenTools/Assets/ImageSet/AssetImageAlignmentInsets.swift create mode 100644 Sources/FugenTools/Assets/ImageSet/AssetImageAutoScaling.swift create mode 100644 Sources/FugenTools/Assets/ImageSet/AssetImageGraphicsFeatureSet.swift create mode 100644 Sources/FugenTools/Assets/ImageSet/AssetImageLanguageDirection.swift create mode 100644 Sources/FugenTools/Assets/ImageSet/AssetImageMemory.swift create mode 100644 Sources/FugenTools/Assets/ImageSet/AssetImageProperties.swift create mode 100644 Sources/FugenTools/Assets/ImageSet/AssetImageScale.swift create mode 100644 Sources/FugenTools/Assets/ImageSet/AssetImageSet.swift create mode 100644 Sources/FugenTools/Assets/ImageSet/AssetImageSetContents.swift create mode 100644 Sources/FugenTools/Assets/ImageSet/AssetImageSizeClass.swift create mode 100644 Sources/FugenTools/Assets/ImageSet/AssetImageTemplateRenderingIntent.swift create mode 100644 Sources/FugenTools/Extensions/Bundle+Extensions.swift rename Sources/{Tools => FugenTools}/Extensions/CLI+Extensions.swift (66%) create mode 100644 Sources/FugenTools/Extensions/Collection+Extensions.swift create mode 100644 Sources/FugenTools/Extensions/Decodable+Extensions.swift create mode 100644 Sources/FugenTools/Extensions/DispatchQueue+Extensions.swift create mode 100644 Sources/FugenTools/Extensions/Encodable+Extensions.swift rename Sources/{Tools => FugenTools}/Extensions/FloatingPoint+Extensions.swift (51%) create mode 100644 Sources/FugenTools/Extensions/JSONDecoder+Extensions.swift create mode 100644 Sources/FugenTools/Extensions/JSONEncoder+Extensions.swift rename Sources/{Tools => FugenTools}/Extensions/KeyedDecodingContainerProtocol+Extensions.swift (51%) create mode 100644 Sources/FugenTools/Extensions/OperatingSystemVersion+Extensions.swift create mode 100644 Sources/FugenTools/Extensions/Optional+Extensions.swift create mode 100644 Sources/FugenTools/Extensions/Path+Extensions.swift create mode 100644 Sources/FugenTools/Extensions/ProcessInfo+Extensions.swift create mode 100644 Sources/FugenTools/Extensions/Promise+Extensions.swift create mode 100644 Sources/FugenTools/Extensions/RangeReplaceableCollection+Extensions.swift create mode 100644 Sources/FugenTools/Extensions/Sequence+Extensions.swift rename Sources/{Tools => FugenTools}/Extensions/SingleValueDecodingContainer+Extensions.swift (54%) create mode 100644 Sources/FugenTools/Extensions/String+Extensions.swift create mode 100644 Sources/FugenTools/Extensions/UnkeyedDecodingContainer+Extensions.swift create mode 100644 Sources/FugenTools/HTTPService/BodyEncoders/HTTPBodyEncoder.swift create mode 100644 Sources/FugenTools/HTTPService/BodyEncoders/HTTPBodyJSONEncoder.swift create mode 100644 Sources/FugenTools/HTTPService/BodyEncoders/HTTPBodyURLEncoder.swift create mode 100644 Sources/FugenTools/HTTPService/HTTPActivityIndicator.swift create mode 100644 Sources/FugenTools/HTTPService/HTTPAnyEncodable.swift create mode 100644 Sources/FugenTools/HTTPService/HTTPError.swift create mode 100644 Sources/FugenTools/HTTPService/HTTPErrorStringConvertible.swift create mode 100644 Sources/FugenTools/HTTPService/HTTPHeader.swift rename Sources/{Services/API/FigmaAPIHTTPMethod.swift => FugenTools/HTTPService/HTTPMethod.swift} (66%) create mode 100644 Sources/FugenTools/HTTPService/HTTPResponse.swift create mode 100644 Sources/FugenTools/HTTPService/HTTPRoute.swift create mode 100644 Sources/FugenTools/HTTPService/HTTPService.swift create mode 100644 Sources/FugenTools/HTTPService/HTTPServiceTask.swift create mode 100644 Sources/FugenTools/HTTPService/HTTPStatusCode.swift create mode 100644 Sources/FugenTools/HTTPService/HTTPTask.swift create mode 100644 Sources/FugenTools/HTTPService/HTTPUIActivityIndicator.swift create mode 100644 Sources/FugenTools/HTTPService/QueryEncoders/HTTPQueryEncoder.swift create mode 100644 Sources/FugenTools/HTTPService/QueryEncoders/HTTPQueryURLEncoder.swift create mode 100644 Sources/FugenTools/HTTPService/ResponseSerializers/HTTPDataResponseSerializer.swift create mode 100644 Sources/FugenTools/HTTPService/ResponseSerializers/HTTPDecodableResponseSerializer.swift create mode 100644 Sources/FugenTools/HTTPService/ResponseSerializers/HTTPEmptyResponse.swift create mode 100644 Sources/FugenTools/HTTPService/ResponseSerializers/HTTPJSONResponseSerializer.swift create mode 100644 Sources/FugenTools/HTTPService/ResponseSerializers/HTTPResponseDecoder.swift create mode 100644 Sources/FugenTools/HTTPService/ResponseSerializers/HTTPResponseSerializer.swift create mode 100644 Sources/FugenTools/HTTPService/ResponseSerializers/HTTPStringResponseSerializer.swift create mode 100644 Sources/FugenTools/Shared/AnyCodable.swift create mode 100644 Sources/FugenTools/Shared/AnyCodingKey.swift create mode 100644 Sources/FugenTools/Shared/Cache.swift create mode 100644 Sources/FugenTools/Shared/MessageError.swift create mode 100644 Sources/FugenTools/URLEncoder/URLArrayEncodingStrategy.swift create mode 100644 Sources/FugenTools/URLEncoder/URLBoolEncodingStrategy.swift create mode 100644 Sources/FugenTools/URLEncoder/URLDateEncodingStrategy.swift create mode 100644 Sources/FugenTools/URLEncoder/URLEncodedForm.swift create mode 100644 Sources/FugenTools/URLEncoder/URLEncodedFormComponent.swift create mode 100644 Sources/FugenTools/URLEncoder/URLEncodedFormContext.swift create mode 100644 Sources/FugenTools/URLEncoder/URLEncodedFormEncoder.swift create mode 100644 Sources/FugenTools/URLEncoder/URLEncodedFormKeyedEncodingContainer.swift create mode 100644 Sources/FugenTools/URLEncoder/URLEncodedFormSerializer.swift create mode 100644 Sources/FugenTools/URLEncoder/URLEncodedFormSingleValueEncodingContainer.swift create mode 100644 Sources/FugenTools/URLEncoder/URLEncodedFormUnkeyedEncodingContainer.swift create mode 100644 Sources/FugenTools/URLEncoder/URLEncoder.swift create mode 100644 Sources/FugenTools/URLEncoder/URLSpaceEncodingStrategy.swift delete mode 100644 Sources/Models/Configuration/BaseConfiguration.swift delete mode 100644 Sources/Models/Configuration/Configuration.swift delete mode 100644 Sources/Models/Configuration/ConfigurationError.swift delete mode 100644 Sources/Models/Configuration/StepConfiguration.swift delete mode 100644 Sources/Models/Figma/FigmaBooleanOperationType.swift delete mode 100644 Sources/Models/Figma/FigmaColor.swift delete mode 100644 Sources/Models/Figma/FigmaColorStop.swift delete mode 100644 Sources/Models/Figma/FigmaComponent.swift delete mode 100644 Sources/Models/Figma/FigmaConstraintType.swift delete mode 100644 Sources/Models/Figma/FigmaEasingType.swift delete mode 100644 Sources/Models/Figma/FigmaEffect.swift delete mode 100644 Sources/Models/Figma/FigmaEffectType.swift delete mode 100644 Sources/Models/Figma/FigmaExportSetting.swift delete mode 100644 Sources/Models/Figma/FigmaImageFormat.swift delete mode 100644 Sources/Models/Figma/FigmaLayoutConstraint.swift delete mode 100644 Sources/Models/Figma/FigmaLayoutGrid.swift delete mode 100644 Sources/Models/Figma/FigmaLayoutGridAlignment.swift delete mode 100644 Sources/Models/Figma/FigmaLayoutGridPattern.swift delete mode 100644 Sources/Models/Figma/FigmaLayoutHorizontalConstraint.swift delete mode 100644 Sources/Models/Figma/FigmaLayoutVerticalConstraint.swift delete mode 100644 Sources/Models/Figma/FigmaLineHeightUnit.swift delete mode 100644 Sources/Models/Figma/FigmaPaint.swift delete mode 100644 Sources/Models/Figma/FigmaRectangle.swift delete mode 100644 Sources/Models/Figma/FigmaScaleMode.swift delete mode 100644 Sources/Models/Figma/FigmaStrokeAlignment.swift delete mode 100644 Sources/Models/Figma/FigmaStrokeCap.swift delete mode 100644 Sources/Models/Figma/FigmaStrokeJoin.swift delete mode 100644 Sources/Models/Figma/FigmaStyle.swift delete mode 100644 Sources/Models/Figma/FigmaStyleType.swift delete mode 100644 Sources/Models/Figma/FigmaTextCase.swift delete mode 100644 Sources/Models/Figma/FigmaTextDecoration.swift delete mode 100644 Sources/Models/Figma/FigmaTextHorizontalAlignment.swift delete mode 100644 Sources/Models/Figma/FigmaTextVerticalAlignment.swift delete mode 100644 Sources/Models/Figma/FigmaVector.swift delete mode 100644 Sources/Models/Figma/Nodes/FigmaBooleanOperationNodePayload.swift delete mode 100644 Sources/Models/Figma/Nodes/FigmaCanvasNodeInfo.swift delete mode 100644 Sources/Models/Figma/Nodes/FigmaDocumentNodeInfo.swift delete mode 100644 Sources/Models/Figma/Nodes/FigmaFrameNodeInfo.swift delete mode 100644 Sources/Models/Figma/Nodes/FigmaInstanceNodePayload.swift delete mode 100644 Sources/Models/Figma/Nodes/FigmaRectangleNodePayload.swift delete mode 100644 Sources/Models/Figma/Nodes/FigmaSliceNodeInfo.swift delete mode 100644 Sources/Models/Figma/Nodes/FigmaTextNodePayload.swift delete mode 100644 Sources/Models/Figma/Nodes/FigmaVectorNodeInfo.swift delete mode 100644 Sources/Models/Spacing.swift delete mode 100644 Sources/Models/TemplateType.swift delete mode 100644 Sources/Models/TextStyle.swift delete mode 100644 Sources/Services.swift delete mode 100644 Sources/Services/API/DefaultFigmaAPIProvider.swift delete mode 100644 Sources/Services/API/FigmaAPIRoute.swift delete mode 100644 Sources/Services/API/Routes/FigmaAPIFileRoute.swift delete mode 100644 Sources/Services/Colors/ColorsError.swift delete mode 100644 Sources/Services/Colors/ColorsProvider.swift delete mode 100644 Sources/Services/Colors/ColorsRenderer.swift delete mode 100644 Sources/Services/Colors/DefaultColorsProvider.swift delete mode 100644 Sources/Services/Colors/DefaultColorsRenderer.swift delete mode 100644 Sources/Services/Nodes/DefaultNodesExtractor.swift delete mode 100644 Sources/Services/Nodes/NodesExtractor.swift delete mode 100644 Sources/Services/Spacings/DefaultSpacingsProvider.swift delete mode 100644 Sources/Services/Spacings/DefaultSpacingsRenderer.swift delete mode 100644 Sources/Services/Spacings/SpacingsError.swift delete mode 100644 Sources/Services/Spacings/SpacingsProvider.swift delete mode 100644 Sources/Services/Spacings/SpacingsRenderer.swift delete mode 100644 Sources/Services/TextStyles/DefaultTextStylesProvider.swift delete mode 100644 Sources/Services/TextStyles/DefaultTextStylesRenderer.swift delete mode 100644 Sources/Services/TextStyles/TextStylesError.swift delete mode 100644 Sources/Services/TextStyles/TextStylesProvider.swift delete mode 100644 Sources/Services/TextStyles/TextStylesRenderer.swift delete mode 100644 Sources/Tools/Extensions/Path+Extensions.swift delete mode 100644 Sources/Tools/Extensions/ProcessInfo+Extensions.swift delete mode 100644 Sources/Tools/Extensions/Routable+Extensions.swift delete mode 100644 Sources/Tools/Extensions/Sequence+Extensions.swift delete mode 100644 Sources/Tools/Extensions/UnkeyedDecodingContainer+Extensions.swift delete mode 100755 Sources/main.swift create mode 100644 Templates/ColorStyles.stencil delete mode 100644 Templates/Colors.stencil create mode 100644 Templates/FileHeader.stencil create mode 100644 Templates/Images.stencil create mode 100644 Templates/ShadowStyles.stencil delete mode 100644 Templates/Spacings.stencil rename Tests/{FigmaGenTests.swift => FugenTests/FugenTests.swift} (52%) mode change 100755 => 100644 rename {Resources => Tests/FugenTests}/Info.plist (62%) create mode 100644 Tests/FugenTests/XCTestManifests.swift create mode 100644 Tests/FugenToolsTests/FugenToolsTests.swift create mode 100644 Tests/FugenToolsTests/Info.plist create mode 100644 Tests/FugenToolsTests/XCTestManifests.swift create mode 100644 Tests/LinuxMain.swift diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..b654b7f --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,86 @@ +name: "CI" + +on: + push: + branches: + - master + pull_request: + branches: + - master + +env: + LC_CTYPE: en_US.UTF-8 + LANG: en_US.UTF-8 + RUBY_VERSION: 2.6.x + +jobs: + macOS: + name: macOS + runs-on: macOS-latest + env: + SWIFTLINT_VERSION: 0.39.2 + DANGER_GITHUB_API_TOKEN: ${{ secrets.DANGER_GITHUB_API_TOKEN }} + steps: + - uses: actions/checkout@v2 + - name: Ruby + uses: actions/setup-ruby@v1 + with: + ruby-version: ${{ env.RUBY_VERSION }} + - name: Bundler + run: | + gem install bundler + bundle install --without=documentation + - name: Swift + uses: fwal/setup-swift@v1 + - name: Preparation + run: set -o pipefail + - name: Build + run: make build + - name: Test + run: make test + - name: Test Demo + run: make test_demo + - name: Danger + continue-on-error: true + run: bundle exec danger --remove-previous-comments + + linux: + name: Linux + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Ruby + uses: actions/setup-ruby@v1 + with: + ruby-version: ${{ env.RUBY_VERSION }} + - name: Bundler + run: | + gem install bundler + bundle install --without=documentation + - name: Swift + uses: fwal/setup-swift@v1 + - name: Preparation + run: set -o pipefail + - name: Build + run: make build + - name: Test + run: make test + + CocoaPods: + name: CocoaPods + runs-on: macOS-latest + steps: + - uses: actions/checkout@v2 + - name: Ruby + uses: actions/setup-ruby@v1 + with: + ruby-version: ${{ env.RUBY_VERSION }} + - name: Bundler + run: | + gem install bundler + bundle install --without=documentation + - name: Spec Lint + continue-on-error: true + run: bundle exec pod spec lint + - name: Lib Lint + run: bundle exec pod lib lint --skip-tests --allow-warnings diff --git a/.gitignore b/.gitignore index 1be3f4a..3752a91 100755 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ xcuserdata/ *.moved-aside *.xcuserstate *.xcscmblueprint +*.profraw ## Obj-C/Swift specific *.hmap @@ -53,5 +54,7 @@ fastlane/Preview.html fastlane/screenshots/**/*.png fastlane/test_output -# Releases -figmagen-*.zip +# Fugen +Demo/fugen +Demo/Templates +fugen-*.zip diff --git a/.swift-version b/.swift-version new file mode 100644 index 0000000..a75b92f --- /dev/null +++ b/.swift-version @@ -0,0 +1 @@ +5.1 diff --git a/.swiftlint.yml b/.swiftlint.yml index 435b8cd..9ac6206 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -2,7 +2,12 @@ included: - Sources - Tests -whitelist_rules: +excluded: + - Tests/FugenTests/XCTestManifests.swift + - Tests/FugenToolsTests/XCTestManifests.swift + - Tests/LinuxMain.swift + +only_rules: - anyobject_protocol - array_init - attributes @@ -18,6 +23,8 @@ whitelist_rules: - comma - compiler_protocol_init - conditional_returns_on_newline + - contains_over_filter_count + - contains_over_filter_is_empty - contains_over_first_not_nil - contains_over_range_nil_comparison - control_statement @@ -36,6 +43,7 @@ whitelist_rules: - empty_parentheses_with_trailing_closure - empty_string - empty_xctest_method + - enum_case_associated_values_count - explicit_init - extension_access_modifier - file_header @@ -50,6 +58,7 @@ whitelist_rules: - identical_operands - identifier_name - implicit_getter + - implicit_return - inert_defer - is_disjoint - joined_default_parameter @@ -63,6 +72,7 @@ whitelist_rules: - legacy_multiple - legacy_nsgeometry_functions - legacy_random + - let_var_whitespace - line_length - literal_expression_end_indentation - lower_acl_than_parent @@ -75,14 +85,19 @@ whitelist_rules: - multiline_parameters_brackets - multiple_closures_with_trailing_closure - nesting + - no_space_in_method_call - nsobject_prefer_isequal - number_separator - opening_brace - operator_usage_whitespace - operator_whitespace + - optional_enum_case_matching + - orphaned_doc_comment - overridden_super_call - override_in_extension - pattern_matching_keywords + - prefer_self_type_over_type_of_self + - prefer_zero_over_explicit_init - private_action - private_outlet - private_over_fileprivate @@ -92,6 +107,7 @@ whitelist_rules: - quick_discouraged_call - quick_discouraged_focused_test - quick_discouraged_pending_test + - raw_value_for_camel_cased_codable_enum - reduce_boolean - redundant_discardable_let - redundant_nil_coalescing @@ -111,6 +127,7 @@ whitelist_rules: - switch_case_alignment - switch_case_on_newline - syntactic_sugar + - test_case_accessibility - todo - toggle_bool - trailing_closure @@ -127,6 +144,7 @@ whitelist_rules: - unused_capture_list - unused_closure_parameter - unused_control_flow_label + - unused_declaration - unused_enumerated - unused_import - unused_optional_binding @@ -153,30 +171,34 @@ attributes: - '@NSCopying' - '@NSManaged' - '@dynamic' - - '@inlinable' - '@nonobjc' - '@objc' - '@objcMembers' + - '@testable' always_on_line_above: - - '@dynamicMemberLookup' - '@UIApplicationMain' - '@NSApplicationMain' - - '@available' + - '@dynamicMemberLookup' + - '@dynamicCallable' + - '@propertyWrapper' - '@convention' + - '@frozen' + - '@available' - '@discardableResult' + - '@inlinable' - '@usableFromInline' - '@warn_unqualified_access' - - '@testable' + - '@requires_stored_property_inits' closure_body_length: warning: 20 - error: 100 + error: 200 collection_alignment: align_colons: false colon: - flexible_right_spacing: false + flexible_right_spacing: true apply_to_dictionaries: true conditional_returns_on_newline: @@ -184,14 +206,14 @@ conditional_returns_on_newline: cyclomatic_complexity: warning: 16 - error: 100 + error: 160 ignores_case_statements: true discouraged_direct_init: types: - - 'Bundle' - - 'UIDevice' - - 'AVAudioSession' + - Bundle + - UIDevice + - AVAudioSession discouraged_object_literal: image_literal: true @@ -206,22 +228,21 @@ dynamic_inline: empty_count: severity: warning +enum_case_associated_values_count: + warning: 4 + error: 40 + file_header: - required_pattern: | - \/\/ - \/\/ FigmaGen - \/\/ Copyright © \d{4} HeadHunter\ - \/\/ MIT Licence - \/\/ + forbidden_pattern: ".?" file_length: - warning: 500 - error: 2000 + warning: 400 + error: 4000 ignore_comment_only_lines: true file_name: excluded: - - 'main.swift' + - main.swift prefix_pattern: '' suffix_pattern: '[+][A-z][A-z]+' nested_type_separator: '' @@ -231,7 +252,7 @@ force_try: function_body_length: warning: 40 - error: 100 + error: 400 generic_type_name: min_length: @@ -239,12 +260,12 @@ generic_type_name: error: 0 max_length: warning: 20 - error: 100 + error: 200 validates_start_with_lowercase: true excluded: - - 'T' - - 'U' - - 'V' + - T + - U + - V identifier_name: min_length: @@ -252,18 +273,24 @@ identifier_name: error: 1 max_length: warning: 40 - error: 100 + error: 400 validates_start_with_lowercase: true excluded: - - 'a' - - 'r' - - 'g' - - 'b' - - 'i' - - 'j' - - 'x' - - 'y' - - 'z' + - a + - r + - g + - b + - i + - j + - x + - y + - z + - w + +implicit_return: + included: + - closure + - getter large_tuple: warning: 3 @@ -271,7 +298,7 @@ large_tuple: line_length: warning: 120 - error: 1000 + error: 1200 ignores_urls: false ignores_function_declarations: false ignores_comments: false @@ -279,20 +306,20 @@ line_length: modifier_order: preferred_modifier_order: - - 'acl' - - 'setterACL' - - 'override' - - 'owned' - - 'mutators' - - 'final' - - 'typeMethods' - - 'required' - - 'convenience' - - 'lazy' - - 'dynamic' + - acl + - setterACL + - override + - owned + - mutators + - final + - typeMethods + - required + - convenience + - lazy + - dynamic multiline_arguments: - first_argument_location: 'next_line' + first_argument_location: next_line only_enforce_after_first_closure_on_first_line: false nesting: @@ -301,7 +328,7 @@ nesting: error: 10 statement_level: warning: 4 - error: 10 + error: 40 number_separator: minimum_length: 5 @@ -328,7 +355,7 @@ shorthand_operator: severity: warning statement_position: - statement_mode: 'default' + statement_mode: default switch_case_alignment: indented_cases: false @@ -348,9 +375,9 @@ type_contents_order: - associated_type - type_alias - subtype + - case - type_property - type_method - - case - ib_outlet - ib_inspectable - instance_property @@ -362,7 +389,7 @@ type_contents_order: type_body_length: warning: 400 - error: 2000 + error: 4000 type_name: min_length: @@ -370,13 +397,17 @@ type_name: error: 0 max_length: warning: 50 - error: 100 + error: 500 validates_start_with_lowercase: true unused_optional_binding: ignore_optional_try: false +unused_declaration: + severity: warning + include_public_and_open: false + vertical_whitespace: max_empty_lines: 1 -warning_threshold: 500 +warning_threshold: 100 diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 482fe65..0000000 --- a/.travis.yml +++ /dev/null @@ -1,29 +0,0 @@ -language: swift -osx_image: xcode11.6 -rvm: 2.6.3 -gemfile: Gemfile - -cache: - - bundler - - cocoapods - -env: - global: - - LC_CTYPE=en_US.UTF-8 - - LANG=en_US.UTF-8 - - SKIP_SWIFT_LINT=TRUE - -install: - - gem update bundler - - bundle install --without=documentation - -script: - - set -o pipefail - - swift --version - - swift test - - bundle exec pod spec lint --skip-tests --allow-warnings - - bundle exec danger --remove-previous-comments - -branches: - only: - - master diff --git a/Brewfile b/Brewfile new file mode 100644 index 0000000..a66a988 --- /dev/null +++ b/Brewfile @@ -0,0 +1,5 @@ +tap "homebrew/bundle" + +brew "rbenv" +brew "kylef/formulae/swiftenv" +brew "swiftlint" diff --git a/Dangerfile b/Dangerfile index 786c5cb..3969e01 100644 --- a/Dangerfile +++ b/Dangerfile @@ -2,3 +2,4 @@ warn('This pull request is marked as Work in Progress. DO NOT MERGE!') if github swiftlint.lint_all_files = true swiftlint.lint_files(fail_on_error: true, inline_mode: true) + diff --git a/Demo/.figmagen.yml b/Demo/.figmagen.yml deleted file mode 100644 index e39af3f..0000000 --- a/Demo/.figmagen.yml +++ /dev/null @@ -1,18 +0,0 @@ -base: - accessToken: 27482-71b3313c-0e88-481b-8c93-0e465ab8a868 - fileKey: ZvsRf99Ik11qS4PjS6MAFc - -colors: - includingNodes: - - 7:24 - destinationPath: FigmaGenDemo/Generated/Colors.swift - -spacings: - includingNodes: - - 413:88 - destinationPath: FigmaGenDemo/Generated/Spacings.swift - -textStyles: - includingNodes: - - 3:19 - destinationPath: FigmaGenDemo/Generated/TextStyle.swift diff --git a/Demo/.fugen.yml b/Demo/.fugen.yml new file mode 100644 index 0000000..d4a9017 --- /dev/null +++ b/Demo/.fugen.yml @@ -0,0 +1,32 @@ +base: + accessToken: 25961-4ac9fbc9-3bd8-4c43-bbe2-95e477f8a067 + +colorStyles: + file: https://www.figma.com/file/61xw2FQn61Xr7VVFYwiHHy/Fugen-Demo?node-id=91%3A3 + assets: FugenDemo/Resources/Colors.xcassets + destination: FugenDemo/Generated/ColorStyle.swift + templateOptions: + publicAccess: true + +textStyles: + file: + key: 61xw2FQn61Xr7VVFYwiHHy + includedNodes: + - 91%3A38 + destination: FugenDemo/Generated/TextStyle.swift + templateOptions: + publicAccess: true + usingSystemFonts: false + +images: + file: https://www.figma.com/file/61xw2FQn61Xr7VVFYwiHHy/Fugen-Demo?node-id=91%3A63 + assets: FugenDemo/Resources/Images.xcassets/Generated + destination: FugenDemo/Generated/Images.swift + templateOptions: + publicAccess: true + +shadowStyles: + file: https://www.figma.com/file/61xw2FQn61Xr7VVFYwiHHy/Fugen-Demo?node-id=236%3A4 + destination: FugenDemo/Generated/ShadowStyle.swift + templateOptions: + publicAccess: true diff --git a/Demo/FigmaGenDemo.xcodeproj/project.pbxproj b/Demo/FigmaGenDemo.xcodeproj/project.pbxproj deleted file mode 100644 index 5de8709..0000000 --- a/Demo/FigmaGenDemo.xcodeproj/project.pbxproj +++ /dev/null @@ -1,389 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 51; - objects = { - -/* Begin PBXBuildFile section */ - C09AD30D238FFE0F005C787A /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C09AD30C238FFE0F005C787A /* AppDelegate.swift */; }; - C09AD311238FFE0F005C787A /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C09AD310238FFE0F005C787A /* ViewController.swift */; }; - C09AD314238FFE0F005C787A /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C09AD312238FFE0F005C787A /* Main.storyboard */; }; - C09AD316238FFE10005C787A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C09AD315238FFE10005C787A /* Assets.xcassets */; }; - C09AD319238FFE10005C787A /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C09AD317238FFE10005C787A /* LaunchScreen.storyboard */; }; - C0FE20572394540F003A6701 /* TextStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0FE20552394540F003A6701 /* TextStyle.swift */; }; - C0FE20582394540F003A6701 /* Colors.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0FE20562394540F003A6701 /* Colors.swift */; }; - C0FE2066239573BF003A6701 /* SF-Pro-Display-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = C0FE205C239573BF003A6701 /* SF-Pro-Display-Light.otf */; }; - C0FE2067239573BF003A6701 /* SF-Pro-Display-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = C0FE205D239573BF003A6701 /* SF-Pro-Display-Regular.otf */; }; - C0FE2068239573BF003A6701 /* SF-Pro-Display-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = C0FE205E239573BF003A6701 /* SF-Pro-Display-Bold.otf */; }; - C0FE2069239573BF003A6701 /* SF-Pro-Display-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = C0FE205F239573BF003A6701 /* SF-Pro-Display-Medium.otf */; }; - C0FE206B239573BF003A6701 /* SF-Pro-Display-Semibold.otf in Resources */ = {isa = PBXBuildFile; fileRef = C0FE2061239573BF003A6701 /* SF-Pro-Display-Semibold.otf */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - C09AD309238FFE0F005C787A /* FigmaGenDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FigmaGenDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; - C09AD30C238FFE0F005C787A /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - C09AD310238FFE0F005C787A /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; - C09AD313238FFE0F005C787A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - C09AD315238FFE10005C787A /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - C09AD318238FFE10005C787A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - C09AD31A238FFE10005C787A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - C0FE20552394540F003A6701 /* TextStyle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextStyle.swift; sourceTree = ""; }; - C0FE20562394540F003A6701 /* Colors.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Colors.swift; sourceTree = ""; }; - C0FE205C239573BF003A6701 /* SF-Pro-Display-Light.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-Pro-Display-Light.otf"; sourceTree = ""; }; - C0FE205D239573BF003A6701 /* SF-Pro-Display-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-Pro-Display-Regular.otf"; sourceTree = ""; }; - C0FE205E239573BF003A6701 /* SF-Pro-Display-Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-Pro-Display-Bold.otf"; sourceTree = ""; }; - C0FE205F239573BF003A6701 /* SF-Pro-Display-Medium.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-Pro-Display-Medium.otf"; sourceTree = ""; }; - C0FE2061239573BF003A6701 /* SF-Pro-Display-Semibold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-Pro-Display-Semibold.otf"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - C09AD306238FFE0F005C787A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - C05B3B762393CF020042A8AA /* Resources */ = { - isa = PBXGroup; - children = ( - C0FE205B239573BF003A6701 /* Fonts */, - C09AD315238FFE10005C787A /* Assets.xcassets */, - C09AD317238FFE10005C787A /* LaunchScreen.storyboard */, - C09AD312238FFE0F005C787A /* Main.storyboard */, - ); - path = Resources; - sourceTree = ""; - }; - C09AD300238FFE0F005C787A = { - isa = PBXGroup; - children = ( - C09AD30B238FFE0F005C787A /* FigmaGenDemo */, - C09AD30A238FFE0F005C787A /* Products */, - ); - sourceTree = ""; - }; - C09AD30A238FFE0F005C787A /* Products */ = { - isa = PBXGroup; - children = ( - C09AD309238FFE0F005C787A /* FigmaGenDemo.app */, - ); - name = Products; - sourceTree = ""; - }; - C09AD30B238FFE0F005C787A /* FigmaGenDemo */ = { - isa = PBXGroup; - children = ( - C0FE205423945089003A6701 /* Generated */, - C05B3B762393CF020042A8AA /* Resources */, - C09AD30C238FFE0F005C787A /* AppDelegate.swift */, - C09AD310238FFE0F005C787A /* ViewController.swift */, - C09AD31A238FFE10005C787A /* Info.plist */, - ); - path = FigmaGenDemo; - sourceTree = ""; - }; - C0FE205423945089003A6701 /* Generated */ = { - isa = PBXGroup; - children = ( - C0FE20562394540F003A6701 /* Colors.swift */, - C0FE20552394540F003A6701 /* TextStyle.swift */, - ); - path = Generated; - sourceTree = ""; - }; - C0FE205B239573BF003A6701 /* Fonts */ = { - isa = PBXGroup; - children = ( - C0FE205E239573BF003A6701 /* SF-Pro-Display-Bold.otf */, - C0FE205C239573BF003A6701 /* SF-Pro-Display-Light.otf */, - C0FE205F239573BF003A6701 /* SF-Pro-Display-Medium.otf */, - C0FE205D239573BF003A6701 /* SF-Pro-Display-Regular.otf */, - C0FE2061239573BF003A6701 /* SF-Pro-Display-Semibold.otf */, - ); - path = Fonts; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - C09AD308238FFE0F005C787A /* FigmaGenDemo */ = { - isa = PBXNativeTarget; - buildConfigurationList = C09AD31D238FFE10005C787A /* Build configuration list for PBXNativeTarget "FigmaGenDemo" */; - buildPhases = ( - C09AD305238FFE0F005C787A /* Sources */, - C09AD306238FFE0F005C787A /* Frameworks */, - C09AD307238FFE0F005C787A /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = FigmaGenDemo; - productName = FigmaGenDemo; - productReference = C09AD309238FFE0F005C787A /* FigmaGenDemo.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - C09AD301238FFE0F005C787A /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 1120; - LastUpgradeCheck = 1120; - ORGANIZATIONNAME = HeadHunter; - TargetAttributes = { - C09AD308238FFE0F005C787A = { - CreatedOnToolsVersion = 11.2.1; - }; - }; - }; - buildConfigurationList = C09AD304238FFE0F005C787A /* Build configuration list for PBXProject "FigmaGenDemo" */; - compatibilityVersion = "Xcode 10.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = C09AD300238FFE0F005C787A; - productRefGroup = C09AD30A238FFE0F005C787A /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - C09AD308238FFE0F005C787A /* FigmaGenDemo */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - C09AD307238FFE0F005C787A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - C09AD319238FFE10005C787A /* LaunchScreen.storyboard in Resources */, - C09AD316238FFE10005C787A /* Assets.xcassets in Resources */, - C0FE2068239573BF003A6701 /* SF-Pro-Display-Bold.otf in Resources */, - C0FE2066239573BF003A6701 /* SF-Pro-Display-Light.otf in Resources */, - C0FE2067239573BF003A6701 /* SF-Pro-Display-Regular.otf in Resources */, - C0FE206B239573BF003A6701 /* SF-Pro-Display-Semibold.otf in Resources */, - C09AD314238FFE0F005C787A /* Main.storyboard in Resources */, - C0FE2069239573BF003A6701 /* SF-Pro-Display-Medium.otf in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - C09AD305238FFE0F005C787A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - C0FE20572394540F003A6701 /* TextStyle.swift in Sources */, - C0FE20582394540F003A6701 /* Colors.swift in Sources */, - C09AD311238FFE0F005C787A /* ViewController.swift in Sources */, - C09AD30D238FFE0F005C787A /* AppDelegate.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - C09AD312238FFE0F005C787A /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - C09AD313238FFE0F005C787A /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - C09AD317238FFE10005C787A /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - C09AD318238FFE10005C787A /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - C09AD31B238FFE10005C787A /* 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_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - C09AD31C238FFE10005C787A /* 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_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - C09AD31E238FFE10005C787A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_STYLE = Automatic; - INFOPLIST_FILE = FigmaGenDemo/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.self.FigmaGenDemo; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - C09AD31F238FFE10005C787A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_STYLE = Automatic; - INFOPLIST_FILE = FigmaGenDemo/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.self.FigmaGenDemo; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - C09AD304238FFE0F005C787A /* Build configuration list for PBXProject "FigmaGenDemo" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C09AD31B238FFE10005C787A /* Debug */, - C09AD31C238FFE10005C787A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C09AD31D238FFE10005C787A /* Build configuration list for PBXNativeTarget "FigmaGenDemo" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C09AD31E238FFE10005C787A /* Debug */, - C09AD31F238FFE10005C787A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = C09AD301238FFE0F005C787A /* Project object */; -} diff --git a/Demo/FigmaGenDemo/AppDelegate.swift b/Demo/FigmaGenDemo/AppDelegate.swift deleted file mode 100644 index 07af35a..0000000 --- a/Demo/FigmaGenDemo/AppDelegate.swift +++ /dev/null @@ -1,17 +0,0 @@ -// -// FigmaGen -// Copyright © 2019 HeadHunter -// MIT Licence -// - -import UIKit - -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - - var window: UIWindow? - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - return true - } -} diff --git a/Demo/FigmaGenDemo/Generated/Colors.swift b/Demo/FigmaGenDemo/Generated/Colors.swift deleted file mode 100644 index 218f83f..0000000 --- a/Demo/FigmaGenDemo/Generated/Colors.swift +++ /dev/null @@ -1,83 +0,0 @@ -// swiftlint:disable all -import UIKit.UIColor - -public enum Colors { - - /// Gray - /// - /// Hex: #A9A9A9FF; rgba: 169 169 169, 100%. - public static let gray = UIColor(rgbaHex: 0xA9A9A9FF) - - /// Black - /// - /// Hex: #313033FF; rgba: 49 48 51, 100%. - public static let black = UIColor(rgbaHex: 0x313033FF) - - /// Slate Gray - /// - /// Hex: #708090FF; rgba: 112 128 144, 100%. - public static let slateGray = UIColor(rgbaHex: 0x708090FF) - - /// Dark Gray - /// - /// Hex: #696969FF; rgba: 105 105 105, 100%. - public static let darkGray = UIColor(rgbaHex: 0x696969FF) - - /// Light Gray - /// - /// Hex: #D3D3D3FF; rgba: 211 211 211, 100%. - public static let lightGray = UIColor(rgbaHex: 0xD3D3D3FF) - - /// White Smoke - /// - /// Hex: #F5F6F6FF; rgba: 245 246 246, 100%. - public static let whiteSmoke = UIColor(rgbaHex: 0xF5F6F6FF) - - /// White - /// - /// Hex: #FDFDFFFF; rgba: 253 253 255, 100%. - public static let white = UIColor(rgbaHex: 0xFDFDFFFF) - - /// Jungle - /// - /// Hex: #29AB87FF; rgba: 41 171 135, 100%. - public static let jungle = UIColor(rgbaHex: 0x29AB87FF) - - /// Fuchsia - /// - /// Hex: #E958A7FF; rgba: 233 88 167, 100%. - public static let fuchsia = UIColor(rgbaHex: 0xE958A7FF) - - /// Bumblebee - /// - /// Hex: #FCE205FF; rgba: 252 226 5, 100%. - public static let bumblebee = UIColor(rgbaHex: 0xFCE205FF) - - /// Electric - /// - /// Hex: #8F00FFFF; rgba: 143 0 255, 100%. - public static let electric = UIColor(rgbaHex: 0x8F00FFFF) - - /// Carolina - /// - /// Hex: #57A0D2FF; rgba: 87 160 210, 100%. - public static let carolina = UIColor(rgbaHex: 0x57A0D2FF) - - /// Imperial - /// - /// Hex: #ED2939FF; rgba: 237 41 57, 100%. - public static let imperial = UIColor(rgbaHex: 0xED2939FF) -} - -private extension UIColor { - - convenience init(rgbaHex: UInt32) { - self.init( - red: CGFloat((rgbaHex >> 24) & 0xFF) / 255.0, - green: CGFloat((rgbaHex >> 16) & 0xFF) / 255.0, - blue: CGFloat((rgbaHex >> 8) & 0xFF) / 255.0, - alpha: CGFloat(rgbaHex & 0xFF) / 255.0 - ) - } -} -// swiftlint:enable all diff --git a/Demo/FigmaGenDemo/Generated/Spacings.swift b/Demo/FigmaGenDemo/Generated/Spacings.swift deleted file mode 100644 index adf72c4..0000000 --- a/Demo/FigmaGenDemo/Generated/Spacings.swift +++ /dev/null @@ -1,56 +0,0 @@ -// swiftlint:disable all -import UIKit - -public protocol Spacing { - init(_ value: Double) -} - -extension Int: Spacing { } -extension UInt: Spacing { } -extension Float: Spacing { } -extension Double: Spacing { } -extension CGFloat: Spacing { } - -extension Spacing { - - /// L - /// - /// Value: 24.0. - public static var l: Self { Self(24.0) } - - /// M - /// - /// Value: 16.0. - public static var m: Self { Self(16.0) } - - /// MPlus - /// - /// Value: 20.0. - public static var mplus: Self { Self(20.0) } - - /// S - /// - /// Value: 12.0. - public static var s: Self { Self(12.0) } - - /// XL - /// - /// Value: 32.0. - public static var xl: Self { Self(32.0) } - - /// XS - /// - /// Value: 8.0. - public static var xs: Self { Self(8.0) } - - /// XXS - /// - /// Value: 4.0. - public static var xxs: Self { Self(4.0) } - - /// XXXS - /// - /// Value: 1.0. - public static var xxxs: Self { Self(1.0) } -} -// swiftlint:enable all diff --git a/Demo/FigmaGenDemo/Generated/TextStyle.swift b/Demo/FigmaGenDemo/Generated/TextStyle.swift deleted file mode 100644 index 1702e66..0000000 --- a/Demo/FigmaGenDemo/Generated/TextStyle.swift +++ /dev/null @@ -1,264 +0,0 @@ -// swiftlint:disable all -import Foundation -import UIKit - -public struct TextStyle: Equatable { - - public let font: UIFont - public let textColor: UIColor - public let paragraphSpacing: CGFloat? - public let paragraphIndent: CGFloat? - public let lineHeight: CGFloat? - public let letterSpacing: CGFloat? - - public var actualLineHeight: CGFloat { - return lineHeight ?? font.lineHeight - } - - public init( - font: UIFont, - textColor: UIColor, - paragraphSpacing: CGFloat? = nil, - paragraphIndent: CGFloat? = nil, - lineHeight: CGFloat? = nil, - letterSpacing: CGFloat? = nil - ) { - self.font = font - self.textColor = textColor - self.paragraphSpacing = paragraphSpacing - self.paragraphIndent = paragraphIndent - self.lineHeight = lineHeight - self.letterSpacing = letterSpacing - } - - public init( - fontName: String, - fontSize: CGFloat, - textColor: UIColor, - paragraphSpacing: CGFloat? = nil, - paragraphIndent: CGFloat? = nil, - lineHeight: CGFloat? = nil, - letterSpacing: CGFloat? = nil - ) { - self.init( - font: UIFont(name: fontName, size: fontSize) ?? UIFont.systemFont(ofSize: fontSize), - textColor: textColor, - paragraphSpacing: paragraphSpacing, - paragraphIndent: paragraphIndent, - lineHeight: lineHeight, - letterSpacing: letterSpacing - ) - } - - public func withTextColor(_ textColor: UIColor) -> TextStyle { - return TextStyle( - font: font, - textColor: textColor, - paragraphSpacing: paragraphSpacing, - paragraphIndent: paragraphIndent, - lineHeight: lineHeight, - letterSpacing: letterSpacing - ) - } - - public func attributes( - textColor: UIColor? = nil, - backgroundColor: UIColor? = nil, - alignment: NSTextAlignment? = nil, - lineBreakMode: NSLineBreakMode? = nil, - ignoringParagraphStyle: Bool = false - ) -> [NSAttributedString.Key: Any] { - var attributes: [NSAttributedString.Key: Any] = [ - .font: font, - .foregroundColor: textColor ?? self.textColor, - ] - - if let backgroundColor = backgroundColor { - attributes[.backgroundColor] = backgroundColor - } - - if let letterSpacing = letterSpacing { - attributes[.kern] = NSNumber(value: Float(letterSpacing)) - } - - if ignoringParagraphStyle { - return attributes - } - - let paragraphStyle = NSMutableParagraphStyle() - - if let lineHeight = lineHeight { - let paragraphLineSpacing = (lineHeight - font.lineHeight) / 2.0 - let paragraphLineHeight = lineHeight - paragraphLineSpacing - - paragraphStyle.lineSpacing = paragraphLineSpacing - paragraphStyle.minimumLineHeight = paragraphLineHeight - paragraphStyle.maximumLineHeight = paragraphLineHeight - } - - if let paragraphSpacing = paragraphSpacing { - paragraphStyle.paragraphSpacing = paragraphSpacing - } - - if let paragraphIndent = paragraphIndent { - paragraphStyle.firstLineHeadIndent = paragraphIndent - } - - if let alignment = alignment { - paragraphStyle.alignment = alignment - } - - if let lineBreakMode = lineBreakMode { - paragraphStyle.lineBreakMode = lineBreakMode - } - - attributes[.paragraphStyle] = paragraphStyle - - return attributes - } -} - -public extension TextStyle { - - /// Body - /// - /// Font: SF Pro Display (SFProDisplay-Regular); weight 400.0; size 13.0 - /// Text color: Black; hex: #313033FF; rgba: 49 48 51, 100% - /// Paragraph spacing: default - /// Paragraph indent: default - /// Line height: 17.0 - /// Letter spacing: -0.0 - static let body = TextStyle( - fontName: "SFProDisplay-Regular", - fontSize: 13.0, - textColor: UIColor(rgbaHex: 0x313033FF), - paragraphSpacing: nil, - paragraphIndent: nil, - lineHeight: 17.0, - letterSpacing: -0.0 - ) - - /// Subtitle 2 - /// - /// Font: SF Pro Display (SFProDisplay-Regular); weight 400.0; size 11.0 - /// Text color: Black; hex: #313033FF; rgba: 49 48 51, 100% - /// Paragraph spacing: default - /// Paragraph indent: default - /// Line height: 14.0 - /// Letter spacing: 0.25 - static let subtitle2 = TextStyle( - fontName: "SFProDisplay-Regular", - fontSize: 11.0, - textColor: UIColor(rgbaHex: 0x313033FF), - paragraphSpacing: nil, - paragraphIndent: nil, - lineHeight: 14.0, - letterSpacing: 0.25 - ) - - /// Subtitle 1 - /// - /// Font: SF Pro Display (SFProDisplay-Bold); weight 700.0; size 13.0 - /// Text color: Black; hex: #313033FF; rgba: 49 48 51, 100% - /// Paragraph spacing: default - /// Paragraph indent: default - /// Line height: 15.25 - /// Letter spacing: 0.35 - static let subtitle1 = TextStyle( - fontName: "SFProDisplay-Bold", - fontSize: 13.0, - textColor: UIColor(rgbaHex: 0x313033FF), - paragraphSpacing: nil, - paragraphIndent: nil, - lineHeight: 15.25, - letterSpacing: 0.35 - ) - - /// Title 2 - /// - /// Font: SF Pro Display (SFProDisplay-Semibold); weight 600.0; size 14.0 - /// Text color: Black; hex: #313033FF; rgba: 49 48 51, 100% - /// Paragraph spacing: default - /// Paragraph indent: default - /// Line height: 16.4 - /// Letter spacing: 0.0 - static let title2 = TextStyle( - fontName: "SFProDisplay-Semibold", - fontSize: 14.0, - textColor: UIColor(rgbaHex: 0x313033FF), - paragraphSpacing: nil, - paragraphIndent: nil, - lineHeight: 16.4, - letterSpacing: 0.0 - ) - - /// Title 1 - /// - /// Font: SF Pro Display (SFProDisplay-Bold); weight 700.0; size 17.0 - /// Text color: Black; hex: #313033FF; rgba: 49 48 51, 100% - /// Paragraph spacing: default - /// Paragraph indent: default - /// Line height: 19.9 - /// Letter spacing: 0.35 - static let title1 = TextStyle( - fontName: "SFProDisplay-Bold", - fontSize: 17.0, - textColor: UIColor(rgbaHex: 0x313033FF), - paragraphSpacing: nil, - paragraphIndent: nil, - lineHeight: 19.9, - letterSpacing: 0.35 - ) - - /// Large Title - /// - /// Font: SF Pro Display (SFProDisplay-Bold); weight 700.0; size 36.0 - /// Text color: Black; hex: #313033FF; rgba: 49 48 51, 100% - /// Paragraph spacing: default - /// Paragraph indent: default - /// Line height: 40.0 - /// Letter spacing: 0.25 - static let largeTitle = TextStyle( - fontName: "SFProDisplay-Bold", - fontSize: 36.0, - textColor: UIColor(rgbaHex: 0x313033FF), - paragraphSpacing: nil, - paragraphIndent: nil, - lineHeight: 40.0, - letterSpacing: 0.25 - ) -} - -public extension String { - - func styled( - _ textStyle: TextStyle, - textColor: UIColor? = nil, - backgroundColor: UIColor? = nil, - alignment: NSTextAlignment? = nil, - lineBreakMode: NSLineBreakMode? = nil - ) -> NSAttributedString { - return NSAttributedString( - string: self, - attributes: textStyle.attributes( - textColor: textColor, - backgroundColor: backgroundColor, - alignment: alignment, - lineBreakMode: lineBreakMode - ) - ) - } -} - -private extension UIColor { - - convenience init(rgbaHex: UInt32) { - self.init( - red: CGFloat((rgbaHex >> 24) & 0xFF) / 255.0, - green: CGFloat((rgbaHex >> 16) & 0xFF) / 255.0, - blue: CGFloat((rgbaHex >> 8) & 0xFF) / 255.0, - alpha: CGFloat(rgbaHex & 0xFF) / 255.0 - ) - } -} -// swiftlint:enable all diff --git a/Demo/FigmaGenDemo/Resources/Base.lproj/LaunchScreen.storyboard b/Demo/FigmaGenDemo/Resources/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index 865e932..0000000 --- a/Demo/FigmaGenDemo/Resources/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Demo/FigmaGenDemo/Resources/Base.lproj/Main.storyboard b/Demo/FigmaGenDemo/Resources/Base.lproj/Main.storyboard deleted file mode 100644 index a78d66a..0000000 --- a/Demo/FigmaGenDemo/Resources/Base.lproj/Main.storyboard +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Demo/FigmaGenDemo/ViewController.swift b/Demo/FigmaGenDemo/ViewController.swift deleted file mode 100644 index 49946ea..0000000 --- a/Demo/FigmaGenDemo/ViewController.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// FigmaGen -// Copyright © 2019 HeadHunter -// MIT Licence -// - -import UIKit - -class ViewController: UIViewController { - - @IBOutlet private weak var titleLabel: UILabel! - @IBOutlet private weak var subtitleLabel: UILabel! - - override func viewDidLoad() { - super.viewDidLoad() - - titleLabel.attributedText = "Title".styled(.title2, textColor: Colors.black) - subtitleLabel.attributedText = "Subtitle".styled(.subtitle2, textColor: Colors.gray) - } -} diff --git a/Demo/FugenDemo.xcodeproj/project.pbxproj b/Demo/FugenDemo.xcodeproj/project.pbxproj new file mode 100644 index 0000000..6e3645d --- /dev/null +++ b/Demo/FugenDemo.xcodeproj/project.pbxproj @@ -0,0 +1,659 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 51; + objects = { + +/* Begin PBXAggregateTarget section */ + C01B801E25060F6B0080227E /* Fugen */ = { + isa = PBXAggregateTarget; + buildConfigurationList = C01B801F25060F6B0080227E /* Build configuration list for PBXAggregateTarget "Fugen" */; + buildPhases = ( + C01B802225060F710080227E /* Fugen */, + ); + dependencies = ( + ); + name = Fugen; + productName = Fugen; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 2AACCA0388F9FF9E4AF322F1 /* Pods_FugenDemo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A5892121F1D00E978F9A770E /* Pods_FugenDemo.framework */; }; + C01B7D5B24FFBA1D0080227E /* ShadowStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = C01B7D5A24FFBA1D0080227E /* ShadowStyle.swift */; }; + C08A96482399C8420052F04C /* Colors.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C08A96452399C8410052F04C /* Colors.xcassets */; }; + C08A96492399C8420052F04C /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C08A96462399C8410052F04C /* Images.xcassets */; }; + C08A964D2399C9840052F04C /* Images.swift in Sources */ = {isa = PBXBuildFile; fileRef = C08A964C2399C9840052F04C /* Images.swift */; }; + C08A96552399CAAD0052F04C /* SF-Pro-Display-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = C08A96502399CAAD0052F04C /* SF-Pro-Display-Light.otf */; }; + C08A96562399CAAD0052F04C /* SF-Pro-Display-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = C08A96512399CAAD0052F04C /* SF-Pro-Display-Regular.otf */; }; + C08A96572399CAAD0052F04C /* SF-Pro-Display-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = C08A96522399CAAD0052F04C /* SF-Pro-Display-Bold.otf */; }; + C08A96582399CAAD0052F04C /* SF-Pro-Display-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = C08A96532399CAAD0052F04C /* SF-Pro-Display-Medium.otf */; }; + C08A96592399CAAD0052F04C /* SF-Pro-Display-Semibold.otf in Resources */ = {isa = PBXBuildFile; fileRef = C08A96542399CAAD0052F04C /* SF-Pro-Display-Semibold.otf */; }; + C08DB57B2380983E00391F14 /* TextStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = C08DB5792380983E00391F14 /* TextStyle.swift */; }; + C08DB57C2380983E00391F14 /* ColorStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = C08DB57A2380983E00391F14 /* ColorStyle.swift */; }; + C0D5EB5E23EEBE92000AB1B0 /* FugenDemoTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D5EB5D23EEBE92000AB1B0 /* FugenDemoTests.swift */; }; + C0E6B5FB238096C500083ADB /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0E6B5FA238096C500083ADB /* AppDelegate.swift */; }; + C0E6B5FF238096C500083ADB /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0E6B5FE238096C500083ADB /* ViewController.swift */; }; + C0E6B602238096C500083ADB /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C0E6B600238096C500083ADB /* Main.storyboard */; }; + C0E6B607238096C500083ADB /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C0E6B605238096C500083ADB /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + C0D5EB6023EEBE92000AB1B0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = C0E6B5EF238096C500083ADB /* Project object */; + proxyType = 1; + remoteGlobalIDString = C0E6B5F6238096C500083ADB; + remoteInfo = FugenDemo; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 29B6BD966DD89C853A1AFFD2 /* Pods-FugenDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FugenDemo.debug.xcconfig"; path = "Target Support Files/Pods-FugenDemo/Pods-FugenDemo.debug.xcconfig"; sourceTree = ""; }; + 8FC235E00E36DC62C4755546 /* Pods-Fugen Demo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Fugen Demo.debug.xcconfig"; path = "Target Support Files/Pods-Fugen Demo/Pods-Fugen Demo.debug.xcconfig"; sourceTree = ""; }; + A5892121F1D00E978F9A770E /* Pods_FugenDemo.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_FugenDemo.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + BEAAC6E1082665BBB49FA803 /* Pods-FugenDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FugenDemo.release.xcconfig"; path = "Target Support Files/Pods-FugenDemo/Pods-FugenDemo.release.xcconfig"; sourceTree = ""; }; + C01B7D5A24FFBA1D0080227E /* ShadowStyle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ShadowStyle.swift; sourceTree = ""; }; + C08A96452399C8410052F04C /* Colors.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Colors.xcassets; sourceTree = ""; }; + C08A96462399C8410052F04C /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + C08A964C2399C9840052F04C /* Images.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Images.swift; sourceTree = ""; }; + C08A96502399CAAD0052F04C /* SF-Pro-Display-Light.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-Pro-Display-Light.otf"; sourceTree = ""; }; + C08A96512399CAAD0052F04C /* SF-Pro-Display-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-Pro-Display-Regular.otf"; sourceTree = ""; }; + C08A96522399CAAD0052F04C /* SF-Pro-Display-Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-Pro-Display-Bold.otf"; sourceTree = ""; }; + C08A96532399CAAD0052F04C /* SF-Pro-Display-Medium.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-Pro-Display-Medium.otf"; sourceTree = ""; }; + C08A96542399CAAD0052F04C /* SF-Pro-Display-Semibold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-Pro-Display-Semibold.otf"; sourceTree = ""; }; + C08DB5792380983E00391F14 /* TextStyle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextStyle.swift; sourceTree = ""; }; + C08DB57A2380983E00391F14 /* ColorStyle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ColorStyle.swift; sourceTree = ""; }; + C0D5EB5B23EEBE92000AB1B0 /* FugenDemoTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FugenDemoTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + C0D5EB5D23EEBE92000AB1B0 /* FugenDemoTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FugenDemoTests.swift; sourceTree = ""; }; + C0D5EB5F23EEBE92000AB1B0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + C0E6B5F7238096C500083ADB /* FugenDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FugenDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + C0E6B5FA238096C500083ADB /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + C0E6B5FE238096C500083ADB /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + C0E6B601238096C500083ADB /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + C0E6B606238096C500083ADB /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + C0E6B608238096C500083ADB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + C670EBD294B45540406F27CE /* Pods-Fugen Demo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Fugen Demo.release.xcconfig"; path = "Target Support Files/Pods-Fugen Demo/Pods-Fugen Demo.release.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + C0D5EB5823EEBE92000AB1B0 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C0E6B5F4238096C500083ADB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 2AACCA0388F9FF9E4AF322F1 /* Pods_FugenDemo.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 45BFC2FE748FBFC15ABD446E /* Pods */ = { + isa = PBXGroup; + children = ( + 8FC235E00E36DC62C4755546 /* Pods-Fugen Demo.debug.xcconfig */, + C670EBD294B45540406F27CE /* Pods-Fugen Demo.release.xcconfig */, + 29B6BD966DD89C853A1AFFD2 /* Pods-FugenDemo.debug.xcconfig */, + BEAAC6E1082665BBB49FA803 /* Pods-FugenDemo.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + C08A96442399C8410052F04C /* Resources */ = { + isa = PBXGroup; + children = ( + C08A964F2399CAAD0052F04C /* Fonts */, + C08A96452399C8410052F04C /* Colors.xcassets */, + C08A96462399C8410052F04C /* Images.xcassets */, + ); + path = Resources; + sourceTree = ""; + }; + C08A964F2399CAAD0052F04C /* Fonts */ = { + isa = PBXGroup; + children = ( + C08A96502399CAAD0052F04C /* SF-Pro-Display-Light.otf */, + C08A96512399CAAD0052F04C /* SF-Pro-Display-Regular.otf */, + C08A96522399CAAD0052F04C /* SF-Pro-Display-Bold.otf */, + C08A96532399CAAD0052F04C /* SF-Pro-Display-Medium.otf */, + C08A96542399CAAD0052F04C /* SF-Pro-Display-Semibold.otf */, + ); + path = Fonts; + sourceTree = ""; + }; + C08DB5772380978C00391F14 /* Generated */ = { + isa = PBXGroup; + children = ( + C08DB57A2380983E00391F14 /* ColorStyle.swift */, + C08A964C2399C9840052F04C /* Images.swift */, + C01B7D5A24FFBA1D0080227E /* ShadowStyle.swift */, + C08DB5792380983E00391F14 /* TextStyle.swift */, + ); + path = Generated; + sourceTree = ""; + }; + C08DB57D2380991800391F14 /* Storyboards */ = { + isa = PBXGroup; + children = ( + C0E6B605238096C500083ADB /* LaunchScreen.storyboard */, + C0E6B600238096C500083ADB /* Main.storyboard */, + ); + path = Storyboards; + sourceTree = ""; + }; + C0D5EB5C23EEBE92000AB1B0 /* FugenDemoTests */ = { + isa = PBXGroup; + children = ( + C0D5EB5D23EEBE92000AB1B0 /* FugenDemoTests.swift */, + C0D5EB5F23EEBE92000AB1B0 /* Info.plist */, + ); + path = FugenDemoTests; + sourceTree = ""; + }; + C0E6B5EE238096C500083ADB = { + isa = PBXGroup; + children = ( + C0E6B5F9238096C500083ADB /* FugenDemo */, + C0D5EB5C23EEBE92000AB1B0 /* FugenDemoTests */, + C0E6B5F8238096C500083ADB /* Products */, + 45BFC2FE748FBFC15ABD446E /* Pods */, + CB1DDE6FE90E7C3F902816CB /* Frameworks */, + ); + sourceTree = ""; + }; + C0E6B5F8238096C500083ADB /* Products */ = { + isa = PBXGroup; + children = ( + C0E6B5F7238096C500083ADB /* FugenDemo.app */, + C0D5EB5B23EEBE92000AB1B0 /* FugenDemoTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + C0E6B5F9238096C500083ADB /* FugenDemo */ = { + isa = PBXGroup; + children = ( + C08DB5772380978C00391F14 /* Generated */, + C08A96442399C8410052F04C /* Resources */, + C08DB57D2380991800391F14 /* Storyboards */, + C0E6B5FA238096C500083ADB /* AppDelegate.swift */, + C0E6B608238096C500083ADB /* Info.plist */, + C0E6B5FE238096C500083ADB /* ViewController.swift */, + ); + path = FugenDemo; + sourceTree = ""; + }; + CB1DDE6FE90E7C3F902816CB /* Frameworks */ = { + isa = PBXGroup; + children = ( + A5892121F1D00E978F9A770E /* Pods_FugenDemo.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + C0D5EB5A23EEBE92000AB1B0 /* FugenDemoTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = C0D5EB6423EEBE92000AB1B0 /* Build configuration list for PBXNativeTarget "FugenDemoTests" */; + buildPhases = ( + C0D5EB5723EEBE92000AB1B0 /* Sources */, + C0D5EB5823EEBE92000AB1B0 /* Frameworks */, + C0D5EB5923EEBE92000AB1B0 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + C0D5EB6123EEBE92000AB1B0 /* PBXTargetDependency */, + ); + name = FugenDemoTests; + productName = FugenDemoTests; + productReference = C0D5EB5B23EEBE92000AB1B0 /* FugenDemoTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + C0E6B5F6238096C500083ADB /* FugenDemo */ = { + isa = PBXNativeTarget; + buildConfigurationList = C0E6B60B238096C500083ADB /* Build configuration list for PBXNativeTarget "FugenDemo" */; + buildPhases = ( + 2F36647D95B78805F756F3F1 /* [CP] Check Pods Manifest.lock */, + C0E6B5F3238096C500083ADB /* Sources */, + C0E6B5F4238096C500083ADB /* Frameworks */, + C0E6B5F5238096C500083ADB /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = FugenDemo; + productName = "Fugen Demo"; + productReference = C0E6B5F7238096C500083ADB /* FugenDemo.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + C0E6B5EF238096C500083ADB /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1130; + LastUpgradeCheck = 1100; + ORGANIZATIONNAME = "Almaz Ibragimov"; + TargetAttributes = { + C01B801E25060F6B0080227E = { + CreatedOnToolsVersion = 11.5; + }; + C0D5EB5A23EEBE92000AB1B0 = { + CreatedOnToolsVersion = 11.3.1; + TestTargetID = C0E6B5F6238096C500083ADB; + }; + C0E6B5F6238096C500083ADB = { + CreatedOnToolsVersion = 11.0; + }; + }; + }; + buildConfigurationList = C0E6B5F2238096C500083ADB /* Build configuration list for PBXProject "FugenDemo" */; + compatibilityVersion = "Xcode 10.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = C0E6B5EE238096C500083ADB; + productRefGroup = C0E6B5F8238096C500083ADB /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + C0E6B5F6238096C500083ADB /* FugenDemo */, + C0D5EB5A23EEBE92000AB1B0 /* FugenDemoTests */, + C01B801E25060F6B0080227E /* Fugen */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + C0D5EB5923EEBE92000AB1B0 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C0E6B5F5238096C500083ADB /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C08A96582399CAAD0052F04C /* SF-Pro-Display-Medium.otf in Resources */, + C08A96482399C8420052F04C /* Colors.xcassets in Resources */, + C08A96552399CAAD0052F04C /* SF-Pro-Display-Light.otf in Resources */, + C0E6B607238096C500083ADB /* LaunchScreen.storyboard in Resources */, + C08A96492399C8420052F04C /* Images.xcassets in Resources */, + C08A96572399CAAD0052F04C /* SF-Pro-Display-Bold.otf in Resources */, + C08A96592399CAAD0052F04C /* SF-Pro-Display-Semibold.otf in Resources */, + C08A96562399CAAD0052F04C /* SF-Pro-Display-Regular.otf in Resources */, + C0E6B602238096C500083ADB /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 2F36647D95B78805F756F3F1 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-FugenDemo-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + C01B802225060F710080227E /* Fugen */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = Fugen; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "Pods/Fugen/fugen generate\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + C0D5EB5723EEBE92000AB1B0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C0D5EB5E23EEBE92000AB1B0 /* FugenDemoTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C0E6B5F3238096C500083ADB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C08DB57B2380983E00391F14 /* TextStyle.swift in Sources */, + C0E6B5FF238096C500083ADB /* ViewController.swift in Sources */, + C08A964D2399C9840052F04C /* Images.swift in Sources */, + C01B7D5B24FFBA1D0080227E /* ShadowStyle.swift in Sources */, + C0E6B5FB238096C500083ADB /* AppDelegate.swift in Sources */, + C08DB57C2380983E00391F14 /* ColorStyle.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + C0D5EB6123EEBE92000AB1B0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = C0E6B5F6238096C500083ADB /* FugenDemo */; + targetProxy = C0D5EB6023EEBE92000AB1B0 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + C0E6B600238096C500083ADB /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + C0E6B601238096C500083ADB /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + C0E6B605238096C500083ADB /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + C0E6B606238096C500083ADB /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + C01B802025060F6B0080227E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + C01B802125060F6B0080227E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + C0D5EB6223EEBE92000AB1B0 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = FugenDemoTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.almazrafi.Fugen-Demo.Tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FugenDemo.app/FugenDemo"; + }; + name = Debug; + }; + C0D5EB6323EEBE92000AB1B0 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = FugenDemoTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.almazrafi.Fugen-Demo.Tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FugenDemo.app/FugenDemo"; + }; + name = Release; + }; + C0E6B609238096C500083ADB /* 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_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_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 = ""; + 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.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + C0E6B60A238096C500083ADB /* 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_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_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 = ""; + 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.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + C0E6B60C238096C500083ADB /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 29B6BD966DD89C853A1AFFD2 /* Pods-FugenDemo.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = ""; + INFOPLIST_FILE = FugenDemo/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.almazrafi.Fugen-Demo"; + PRODUCT_NAME = FugenDemo; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Debug; + }; + C0E6B60D238096C500083ADB /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BEAAC6E1082665BBB49FA803 /* Pods-FugenDemo.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = ""; + INFOPLIST_FILE = FugenDemo/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.almazrafi.Fugen-Demo"; + PRODUCT_NAME = FugenDemo; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C01B801F25060F6B0080227E /* Build configuration list for PBXAggregateTarget "Fugen" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01B802025060F6B0080227E /* Debug */, + C01B802125060F6B0080227E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C0D5EB6423EEBE92000AB1B0 /* Build configuration list for PBXNativeTarget "FugenDemoTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C0D5EB6223EEBE92000AB1B0 /* Debug */, + C0D5EB6323EEBE92000AB1B0 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C0E6B5F2238096C500083ADB /* Build configuration list for PBXProject "FugenDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C0E6B609238096C500083ADB /* Debug */, + C0E6B60A238096C500083ADB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C0E6B60B238096C500083ADB /* Build configuration list for PBXNativeTarget "FugenDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C0E6B60C238096C500083ADB /* Debug */, + C0E6B60D238096C500083ADB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = C0E6B5EF238096C500083ADB /* Project object */; +} diff --git a/FigmaGen.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Demo/FugenDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 70% rename from FigmaGen.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to Demo/FugenDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 65c9109..7024d65 100644 --- a/FigmaGen.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/Demo/FugenDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:Fugen Demo.xcodeproj"> diff --git a/Demo/FigmaGenDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Demo/FugenDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from Demo/FigmaGenDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to Demo/FugenDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/FigmaGen.xcodeproj/xcshareddata/xcschemes/FigmaGen Tests.xcscheme b/Demo/FugenDemo.xcodeproj/xcshareddata/xcschemes/Fugen.xcscheme similarity index 62% rename from FigmaGen.xcodeproj/xcshareddata/xcschemes/FigmaGen Tests.xcscheme rename to Demo/FugenDemo.xcodeproj/xcshareddata/xcschemes/Fugen.xcscheme index 4b55e1f..d057159 100644 --- a/FigmaGen.xcodeproj/xcshareddata/xcschemes/FigmaGen Tests.xcscheme +++ b/Demo/FugenDemo.xcodeproj/xcshareddata/xcschemes/Fugen.xcscheme @@ -1,10 +1,26 @@ + + + + + + - - - - + + + + diff --git a/Demo/FigmaGenDemo.xcodeproj/xcshareddata/xcschemes/FigmaGenDemo.xcscheme b/Demo/FugenDemo.xcodeproj/xcshareddata/xcschemes/FugenDemo.xcscheme similarity index 67% rename from Demo/FigmaGenDemo.xcodeproj/xcshareddata/xcschemes/FigmaGenDemo.xcscheme rename to Demo/FugenDemo.xcodeproj/xcshareddata/xcschemes/FugenDemo.xcscheme index 6378cde..a72b3e5 100644 --- a/Demo/FigmaGenDemo.xcodeproj/xcshareddata/xcschemes/FigmaGenDemo.xcscheme +++ b/Demo/FugenDemo.xcodeproj/xcshareddata/xcschemes/FugenDemo.xcscheme @@ -14,10 +14,10 @@ buildForAnalyzing = "YES"> + BlueprintIdentifier = "C0E6B5F6238096C500083ADB" + BuildableName = "FugenDemo.app" + BlueprintName = "FugenDemo" + ReferencedContainer = "container:FugenDemo.xcodeproj"> @@ -28,6 +28,16 @@ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES"> + + + + + BlueprintIdentifier = "C0E6B5F6238096C500083ADB" + BuildableName = "FugenDemo.app" + BlueprintName = "FugenDemo" + ReferencedContainer = "container:FugenDemo.xcodeproj"> @@ -61,10 +71,10 @@ runnableDebuggingMode = "0"> + BlueprintIdentifier = "C0E6B5F6238096C500083ADB" + BuildableName = "FugenDemo.app" + BlueprintName = "FugenDemo" + ReferencedContainer = "container:FugenDemo.xcodeproj"> diff --git a/FigmaGen.xcworkspace/contents.xcworkspacedata b/Demo/FugenDemo.xcworkspace/contents.xcworkspacedata similarity index 79% rename from FigmaGen.xcworkspace/contents.xcworkspacedata rename to Demo/FugenDemo.xcworkspace/contents.xcworkspacedata index 72c1d85..7fcc683 100644 --- a/FigmaGen.xcworkspace/contents.xcworkspacedata +++ b/Demo/FugenDemo.xcworkspace/contents.xcworkspacedata @@ -2,7 +2,7 @@ + location = "group:FugenDemo.xcodeproj"> diff --git a/FigmaGen.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Demo/FugenDemo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from FigmaGen.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to Demo/FugenDemo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/Demo/FugenDemo/AppDelegate.swift b/Demo/FugenDemo/AppDelegate.swift new file mode 100644 index 0000000..2dbe0ee --- /dev/null +++ b/Demo/FugenDemo/AppDelegate.swift @@ -0,0 +1,22 @@ +// +// AppDelegate.swift +// FugenDemo +// +// Created by Almaz Ibragimov on 16.11.2019. +// Copyright © 2019 Almaz Ibragimov. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + return true + } +} diff --git a/Demo/FugenDemo/Generated/ColorStyle.swift b/Demo/FugenDemo/Generated/ColorStyle.swift new file mode 100644 index 0000000..00f7caf --- /dev/null +++ b/Demo/FugenDemo/Generated/ColorStyle.swift @@ -0,0 +1,160 @@ +// swiftlint:disable all +// Generated using Fugen - https://github.com/almazrafi/Fugen + +#if canImport(UIKit) +import UIKit +#else +import AppKit +#endif + +public struct ColorStyle: Equatable { + + // MARK: - Type Properties + + /// Whisper + /// + /// Hex #E9E9E9FF; rgba 233 233 233, 100% + public static let whisper = ColorStyle( + red: 0.9137254953384399, + green: 0.9137254953384399, + blue: 0.9137254953384399, + alpha: 1.0 + ) + + /// Snow Drift + /// + /// Hex #DADAD9FF; rgba 218 218 217, 100% + public static let snowDrift = ColorStyle( + red: 0.8549019694328308, + green: 0.8549019694328308, + blue: 0.8509804010391235, + alpha: 1.0 + ) + + /// Submarine + /// + /// Hex #949798FF; rgba 148 151 152, 100% + public static let submarine = ColorStyle( + red: 0.5803921818733215, + green: 0.5921568870544434, + blue: 0.5960784554481506, + alpha: 1.0 + ) + + /// Eclipse + /// + /// Hex #393939FF; rgba 57 57 57, 100% + public static let eclipse = ColorStyle( + red: 0.2235294133424759, + green: 0.2235294133424759, + blue: 0.2235294133424759, + alpha: 1.0 + ) + + /// Lochinvar + /// + /// Hex #42967DFF; rgba 66 150 125, 100% + public static let lochinvar = ColorStyle( + red: 0.25882354378700256, + green: 0.5882353186607361, + blue: 0.4901960790157318, + alpha: 1.0 + ) + + /// Jelly Bean + /// + /// Hex #427D96FF; rgba 66 125 150, 100% + public static let jellyBean = ColorStyle( + red: 0.25882354378700256, + green: 0.4901960790157318, + blue: 0.5882353186607361, + alpha: 1.0 + ) + + /// Daisy Bush + /// + /// Hex #5B4296BF; rgba 91 66 150, 75% + public static let daisyBush = ColorStyle( + red: 0.35686275362968445, + green: 0.25882354378700256, + blue: 0.5882353186607361, + alpha: 0.75 + ) + + /// Razzmatazz + /// + /// Hex #E30B5CFF; rgba 227 11 92, 100% + public static let razzmatazz = ColorStyle( + red: 0.8901960849761963, + green: 0.04313725605607033, + blue: 0.3607843220233917, + alpha: 1.0 + ) + + // MARK: - Instance Properties + + public let red: CGFloat + public let green: CGFloat + public let blue: CGFloat + public let alpha: CGFloat + + public var color: UIColor { + return UIColor(style: self) + } + + // MARK: - Initializers + + public init(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat = 1.0) { + self.red = red + self.green = green + self.blue = blue + self.alpha = alpha + } + + // MARK: - Instance Methods + + public func withRed(_ red: CGFloat) -> ColorStyle { + return ColorStyle( + red: red, + green: green, + blue: blue, + alpha: alpha + ) + } + + public func withGreen(_ green: CGFloat) -> ColorStyle { + return ColorStyle( + red: red, + green: green, + blue: blue, + alpha: alpha + ) + } + + public func withBlue(_ blue: CGFloat) -> ColorStyle { + return ColorStyle( + red: red, + green: green, + blue: blue, + alpha: alpha + ) + } + + public func withAlpha(_ alpha: CGFloat) -> ColorStyle { + return ColorStyle( + red: red, + green: green, + blue: blue, + alpha: alpha + ) + } +} + +public extension UIColor { + + // MARK: - Initializers + + convenience init(style: ColorStyle) { + self.init(red: style.red, green: style.green, blue: style.blue, alpha: style.alpha) + } +} diff --git a/Demo/FugenDemo/Generated/Images.swift b/Demo/FugenDemo/Generated/Images.swift new file mode 100644 index 0000000..804018d --- /dev/null +++ b/Demo/FugenDemo/Generated/Images.swift @@ -0,0 +1,145 @@ +// swiftlint:disable all +// Generated using Fugen - https://github.com/almazrafi/Fugen +#if canImport(UIKit) +import UIKit +#else +import AppKit +#endif + +public enum Images { + + // MARK: - Nested Types + + public enum ValidationError: Error, CustomStringConvertible { + case assetNotFound(name: String) + case resourceNotFound(name: String) + + public var description: String { + switch self { + case let .assetNotFound(name): + return "Image asset '\(name)' couldn't be loaded" + + case let .resourceNotFound(name): + return "Image resource file '\(name)' couldn't be loaded" + } + } + } + + // MARK: - Type Properties + + /// WeChat + /// + /// Asset: WeChat + public static var weChat: UIImage { + return UIImage(named: "WeChat")! + } + + /// Snapchat + /// + /// Asset: Snapchat + public static var snapchat: UIImage { + return UIImage(named: "Snapchat")! + } + + /// Viber + /// + /// Asset: Viber + public static var viber: UIImage { + return UIImage(named: "Viber")! + } + + /// WhatsApp + /// + /// Asset: WhatsApp + public static var whatsApp: UIImage { + return UIImage(named: "WhatsApp")! + } + + /// Telegram + /// + /// Asset: Telegram + public static var telegram: UIImage { + return UIImage(named: "Telegram")! + } + + /// Cloud + /// + /// Asset: Cloud + public static var cloud: UIImage { + return UIImage(named: "Cloud")! + } + + /// Phone + /// + /// Asset: Phone + public static var phone: UIImage { + return UIImage(named: "Phone")! + } + + /// Share + /// + /// Asset: Share + public static var share: UIImage { + return UIImage(named: "Share")! + } + + /// Star + /// + /// Asset: Star + public static var star: UIImage { + return UIImage(named: "Star")! + } + + /// Geo + /// + /// Asset: Geo + public static var geo: UIImage { + return UIImage(named: "Geo")! + } + + // MARK: - Type Methods + + public static func validate() throws { + guard UIImage(named: "WeChat") != nil else { + throw ValidationError.assetNotFound(name: "WeChat") + } + + guard UIImage(named: "Snapchat") != nil else { + throw ValidationError.assetNotFound(name: "Snapchat") + } + + guard UIImage(named: "Viber") != nil else { + throw ValidationError.assetNotFound(name: "Viber") + } + + guard UIImage(named: "WhatsApp") != nil else { + throw ValidationError.assetNotFound(name: "WhatsApp") + } + + guard UIImage(named: "Telegram") != nil else { + throw ValidationError.assetNotFound(name: "Telegram") + } + + guard UIImage(named: "Cloud") != nil else { + throw ValidationError.assetNotFound(name: "Cloud") + } + + guard UIImage(named: "Phone") != nil else { + throw ValidationError.assetNotFound(name: "Phone") + } + + guard UIImage(named: "Share") != nil else { + throw ValidationError.assetNotFound(name: "Share") + } + + guard UIImage(named: "Star") != nil else { + throw ValidationError.assetNotFound(name: "Star") + } + + guard UIImage(named: "Geo") != nil else { + throw ValidationError.assetNotFound(name: "Geo") + } + + print("All images are valid") + } +} diff --git a/Demo/FugenDemo/Generated/ShadowStyle.swift b/Demo/FugenDemo/Generated/ShadowStyle.swift new file mode 100644 index 0000000..db0aa7e --- /dev/null +++ b/Demo/FugenDemo/Generated/ShadowStyle.swift @@ -0,0 +1,351 @@ +// swiftlint:disable all +// Generated using Fugen - https://github.com/almazrafi/Fugen +#if canImport(UIKit) +import UIKit +#else +import AppKit +#endif + +public struct Shadow: Equatable { + + // MARK: - Type Properties + + public static let clear = Shadow() + + /// Ugly Shadow 1 + /// + /// Offset: x 2.0; y 2.0 + /// Radius: 8.0 + /// Color: hex #19193219; rgba 25 25 50, 10% + /// Opacity: 0.10000000149011612 + public static let uglyShadow1 = Shadow( + offset: CGSize(width: 2.0, height: 2.0), + radius: 8.0, + color: UIColor( + red: 0.09803921729326245, + green: 0.09803921729326245, + blue: 0.19607843458652496, + alpha: 1.0 + ), + opacity: 0.10000000149011612 + ) + + /// Card Shadow 1 + /// + /// Offset: x 2.0; y 8.0 + /// Radius: 12.0 + /// Color: hex #32324619; rgba 50 50 70, 10% + /// Opacity: 0.10000000149011612 + public static let cardShadow1 = Shadow( + offset: CGSize(width: 2.0, height: 8.0), + radius: 12.0, + color: UIColor( + red: 0.19607843458652496, + green: 0.19607843458652496, + blue: 0.27450981736183167, + alpha: 1.0 + ), + opacity: 0.10000000149011612 + ) + + /// Card Shadow 2 + /// + /// Offset: x 0.0; y 0.0 + /// Radius: 4.0 + /// Color: hex #19192319; rgba 25 25 35, 10% + /// Opacity: 0.10000000149011612 + public static let cardShadow2 = Shadow( + offset: CGSize(width: 0.0, height: 0.0), + radius: 4.0, + color: UIColor( + red: 0.09803921729326245, + green: 0.09803921729326245, + blue: 0.13725490868091583, + alpha: 1.0 + ), + opacity: 0.10000000149011612 + ) + + /// Thin Shadow + /// + /// Offset: x 0.0; y 1.0 + /// Radius: 4.0 + /// Color: hex #19193219; rgba 25 25 50, 10% + /// Opacity: 0.10000000149011612 + public static let thinShadow = Shadow( + offset: CGSize(width: 0.0, height: 1.0), + radius: 4.0, + color: UIColor( + red: 0.09803921729326245, + green: 0.09803921729326245, + blue: 0.19607843458652496, + alpha: 1.0 + ), + opacity: 0.10000000149011612 + ) + + // MARK: - Instance Properties + + public let offset: CGSize + public let radius: CGFloat + public let color: UIColor? + public let opacity: Float + + // MARK: - Initializers + + public init( + offset: CGSize = CGSize(width: 0, height: -3), + radius: CGFloat = 3.0, + color: UIColor? = .black, + opacity: Float = 0.0 + ) { + self.offset = offset + self.radius = radius + self.color = color + self.opacity = opacity + } +} + +public struct ShadowStyle { + + // MARK: - Type Properties + + public static let clear = ShadowStyle() + + /// Ugly Shadow + public static let uglyShadow = ShadowStyle( + shadows: [ + .uglyShadow1 + ] + ) + + /// Field Shadow + public static let fieldShadow = ShadowStyle( + shadows: [ + ] + ) + + /// Card Shadow + public static let cardShadow = ShadowStyle( + shadows: [ + .cardShadow1, + .cardShadow2 + ] + ) + + /// Thin Shadow + public static let thinShadow = ShadowStyle( + shadows: [ + .thinShadow + ] + ) + + // MARK: - Instance Properties + + public let shadows: [Shadow] + + // MARK: - Initializers + + public init(shadows: [Shadow] = []) { + self.shadows = shadows + } +} + +public extension CALayer { + + // MARK: - Instance Properties + + var shadow: Shadow { + get { + Shadow( + offset: shadowOffset, + radius: shadowRadius, + color: shadowColor.map(UIColor.init(cgColor:)), + opacity: shadowOpacity + ) + } + + set { + shadowOffset = newValue.offset + shadowRadius = newValue.radius + shadowColor = newValue.color?.cgColor + shadowOpacity = newValue.opacity + } + } + + // MARK: - Initializers + + convenience init(shadow: Shadow) { + self.init() + + self.shadow = shadow + } +} + +public extension UIView { + + // MARK: - Instance Properties + + var shadow: Shadow { + get { layer.shadow } + set { layer.shadow = newValue } + } +} + +private extension UIBezierPath { + + // MARK: - Initializers + + convenience init( + roundedRect rect: CGRect, + byRoundingCorners layerCorners: CACornerMask, + cornerRadii: CGSize + ) { + #if canImport(UIKit) + let cornerMaskMap: KeyValuePairs = [ + .layerMinXMinYCorner: .topLeft, + .layerMinXMaxYCorner: .bottomLeft, + .layerMaxXMinYCorner: .topRight, + .layerMaxXMaxYCorner: .bottomRight + ] + + let rectCorners = cornerMaskMap + .lazy + .filter { layerCorners.contains($0.key) } + .reduce(into: UIRectCorner()) { result, corner in + result.insert(corner.value) + } + + self.init( + roundedRect: rect, + byRoundingCorners: rectCorners, + cornerRadii: cornerRadii + ) + #else + self.init( + roundedRect: NSRectFromCGRect(rect), + xRadius: cornerRadii.width, + yRadius: cornerRadii.height + ) + #endif + } +} + +open class ShadowStyleLayer: CALayer { + + // MARK: - Instance Properties + + private var shadowLayers: [CALayer] = [] + private let backgroundLayer = CALayer() + + public var shadowStyle: ShadowStyle { + didSet { updateShadowLayers() } + } + + public override var backgroundColor: CGColor? { + get { backgroundLayer.backgroundColor } + set { backgroundLayer.backgroundColor = newValue } + } + + public override var cornerRadius: CGFloat { + didSet { backgroundLayer.cornerRadius = cornerRadius } + } + + public override var maskedCorners: CACornerMask { + didSet { backgroundLayer.maskedCorners = maskedCorners } + } + + // MARK: - Initializers + + public init(shadowStyle: ShadowStyle) { + self.shadowStyle = shadowStyle + + super.init() + + configureShadowLayers() + configureBackgroundLayer() + } + + public override convenience init() { + self.init(shadowStyle: .clear) + } + + public required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + // MARK: - Instance Methods + + private func configureShadowLayers() { + shadowLayers = shadowStyle + .shadows + .map { CALayer(shadow: $0) } + + shadowLayers.reversed().forEach { shadowLayer in + insertSublayer(shadowLayer, at: 0) + } + } + + private func configureBackgroundLayer() { + backgroundLayer.masksToBounds = true + + addSublayer(backgroundLayer) + } + + private func updateShadowLayers() { + shadowLayers.forEach { $0.removeFromSuperlayer() } + + configureShadowLayers() + } + + private func layoutShadowLayers() { + shadowLayers.forEach { shadowLayer in + shadowLayer.frame = bounds + + shadowLayer.shadowPath = UIBezierPath( + roundedRect: bounds, + byRoundingCorners: maskedCorners, + cornerRadii: CGSize( + width: cornerRadius, + height: cornerRadius + ) + ).cgPath + } + } + + private func layoutBackgroundLayer() { + backgroundLayer.frame = bounds + } + + open override func layoutSublayers() { + super.layoutSublayers() + + layoutShadowLayers() + layoutBackgroundLayer() + } +} + +open class ShadowStyleView: UIView { + + // MARK: - Type Properties + + public override class var layerClass: AnyClass { + ShadowStyleLayer.self + } + + // MARK: - Instance Properties + + public var shadowStyleLayer: ShadowStyleLayer { + layer as! ShadowStyleLayer + } + + public var shadowStyle: ShadowStyle { + get { shadowStyleLayer.shadowStyle } + set { shadowStyleLayer.shadowStyle = newValue } + } + + public override var backgroundColor: UIColor? { + get { shadowStyleLayer.backgroundColor.map(UIColor.init(cgColor:)) } + set { shadowStyleLayer.backgroundColor = newValue?.cgColor } + } +} diff --git a/Demo/FugenDemo/Generated/TextStyle.swift b/Demo/FugenDemo/Generated/TextStyle.swift new file mode 100644 index 0000000..e103602 --- /dev/null +++ b/Demo/FugenDemo/Generated/TextStyle.swift @@ -0,0 +1,498 @@ +// swiftlint:disable all +// Generated using Fugen - https://github.com/almazrafi/Fugen + +#if canImport(UIKit) +import UIKit +#else +import AppKit +#endif + +public struct TextStyle: Equatable { + + // MARK: - Nested Types + + public enum ValidationError: Error, CustomStringConvertible { + case fontNotFound(name: String, size: Double) + + public var description: String { + switch self { + case let .fontNotFound(name, size): + return "Font '\(name) \(size)' couldn't be loaded" + } + } + } + + // MARK: - Type Properties + + /// Caption + /// + /// Font: SF Pro Display (SFProDisplay-Light); weight 300.0; size 13.0 + /// Color: Eclipse; hex #393939FF; rgba 57 57 57, 100% + /// Strikethrough: false + /// Underline: false + /// Paragraph spacing: default + /// Paragraph indent: default + /// Line height: 15.225 + /// Letter spacing: 0.0 + public static let caption = TextStyle( + font: UIFont(name: "SFProDisplay-Light", size: 13.0), + color: UIColor( + red: 0.2235294133424759, + green: 0.2235294133424759, + blue: 0.2235294133424759, + alpha: 1.0 + ), + strikethrough: false, + underline: false, + paragraphSpacing: nil, + paragraphIndent: nil, + lineHeight: 15.225, + letterSpacing: 0.0 + ) + + /// Body + /// + /// Font: SF Pro Display (SFProDisplay-Regular); weight 400.0; size 13.0 + /// Color: Eclipse; hex #393939FF; rgba 57 57 57, 100% + /// Strikethrough: false + /// Underline: false + /// Paragraph spacing: 4.0 + /// Paragraph indent: 16.0 + /// Line height: 16.0 + /// Letter spacing: 0.125 + public static let body = TextStyle( + font: UIFont(name: "SFProDisplay-Regular", size: 13.0), + color: UIColor( + red: 0.2235294133424759, + green: 0.2235294133424759, + blue: 0.2235294133424759, + alpha: 1.0 + ), + strikethrough: false, + underline: false, + paragraphSpacing: 4.0, + paragraphIndent: 16.0, + lineHeight: 16.0, + letterSpacing: 0.125 + ) + + /// Subtitle + /// + /// Font: SF Pro Display (SFProDisplay-Regular); weight 400.0; size 15.0 + /// Color: Eclipse; hex #393939FF; rgba 57 57 57, 100% + /// Strikethrough: false + /// Underline: false + /// Paragraph spacing: default + /// Paragraph indent: default + /// Line height: 17.575 + /// Letter spacing: 0.2 + public static let subtitle = TextStyle( + font: UIFont(name: "SFProDisplay-Regular", size: 15.0), + color: UIColor( + red: 0.2235294133424759, + green: 0.2235294133424759, + blue: 0.2235294133424759, + alpha: 1.0 + ), + strikethrough: false, + underline: false, + paragraphSpacing: nil, + paragraphIndent: nil, + lineHeight: 17.575, + letterSpacing: 0.2 + ) + + /// Title + /// + /// Font: SF Pro Display (SFProDisplay-Medium); weight 500.0; size 17.0 + /// Color: Eclipse; hex #393939FF; rgba 57 57 57, 100% + /// Strikethrough: false + /// Underline: false + /// Paragraph spacing: default + /// Paragraph indent: default + /// Line height: 19.925 + /// Letter spacing: 0.125 + public static let title = TextStyle( + font: UIFont(name: "SFProDisplay-Medium", size: 17.0), + color: UIColor( + red: 0.2235294133424759, + green: 0.2235294133424759, + blue: 0.2235294133424759, + alpha: 1.0 + ), + strikethrough: false, + underline: false, + paragraphSpacing: nil, + paragraphIndent: nil, + lineHeight: 19.925, + letterSpacing: 0.125 + ) + + /// Large Title + /// + /// Font: SF Pro Display (SFProDisplay-Bold); weight 700.0; size 34.0 + /// Color: Eclipse; hex #393939FF; rgba 57 57 57, 100% + /// Strikethrough: false + /// Underline: false + /// Paragraph spacing: default + /// Paragraph indent: default + /// Line height: 39.85 + /// Letter spacing: 0.1 + public static let largeTitle = TextStyle( + font: UIFont(name: "SFProDisplay-Bold", size: 34.0), + color: UIColor( + red: 0.2235294133424759, + green: 0.2235294133424759, + blue: 0.2235294133424759, + alpha: 1.0 + ), + strikethrough: false, + underline: false, + paragraphSpacing: nil, + paragraphIndent: nil, + lineHeight: 39.85, + letterSpacing: 0.1 + ) + + // MARK: - Type Methods + + public static func validate() throws { + guard UIFont(name: "SFProDisplay-Light", size: 13.0) != nil else { + throw ValidationError.fontNotFound(name: "SFProDisplay-Light", size: 13.0) + } + + guard UIFont(name: "SFProDisplay-Regular", size: 13.0) != nil else { + throw ValidationError.fontNotFound(name: "SFProDisplay-Regular", size: 13.0) + } + + guard UIFont(name: "SFProDisplay-Regular", size: 15.0) != nil else { + throw ValidationError.fontNotFound(name: "SFProDisplay-Regular", size: 15.0) + } + + guard UIFont(name: "SFProDisplay-Medium", size: 17.0) != nil else { + throw ValidationError.fontNotFound(name: "SFProDisplay-Medium", size: 17.0) + } + + guard UIFont(name: "SFProDisplay-Bold", size: 34.0) != nil else { + throw ValidationError.fontNotFound(name: "SFProDisplay-Bold", size: 34.0) + } + + print("All text styles are valid") + } + + // MARK: - Instance Properties + + public let font: UIFont? + public let color: UIColor? + public let backgroundColor: UIColor? + public let strikethrough: Bool + public let underline: Bool + public let paragraphSpacing: CGFloat? + public let paragraphIndent: CGFloat? + public let lineHeight: CGFloat? + public let letterSpacing: CGFloat? + public let lineBreakMode: NSLineBreakMode? + public let alignment: NSTextAlignment? + + // MARK: - Initializers + + public init( + font: UIFont? = nil, + color: UIColor? = nil, + backgroundColor: UIColor? = nil, + strikethrough: Bool = false, + underline: Bool = false, + paragraphSpacing: CGFloat? = nil, + paragraphIndent: CGFloat? = nil, + lineHeight: CGFloat? = nil, + letterSpacing: CGFloat? = nil, + lineBreakMode: NSLineBreakMode? = nil, + alignment: NSTextAlignment? = nil + ) { + self.font = font + self.color = color + self.backgroundColor = backgroundColor + self.strikethrough = strikethrough + self.underline = underline + self.paragraphSpacing = paragraphSpacing + self.paragraphIndent = paragraphIndent + self.lineHeight = lineHeight + self.letterSpacing = letterSpacing + self.lineBreakMode = lineBreakMode + self.alignment = alignment + } + + // MARK: - Instance Methods + + private func attributes(paragraphStyle: NSParagraphStyle?) -> [NSAttributedString.Key: Any] { + var attributes: [NSAttributedString.Key: Any] = [:] + + if let paragraphStyle = paragraphStyle { + attributes[.paragraphStyle] = paragraphStyle + } + + if let font = font { + attributes[.font] = font + } + + if let color = color { + attributes[.foregroundColor] = color + } + + if let backgroundColor = backgroundColor { + attributes[.backgroundColor] = backgroundColor + } + + if strikethrough { + attributes[.strikethroughStyle] = NSUnderlineStyle.single.rawValue + } + + if underline { + attributes[.underlineStyle] = NSUnderlineStyle.single.rawValue + } + + if let letterSpacing = letterSpacing { + attributes[.kern] = letterSpacing + } + + return attributes + } + + // MARK: - + + public func paragraphStyle() -> NSParagraphStyle { + let paragraphStyle = NSMutableParagraphStyle() + + if let lineHeight = lineHeight { + if let font = font { + paragraphStyle.lineSpacing = (lineHeight - font.lineHeight) * 0.5 + paragraphStyle.minimumLineHeight = lineHeight - paragraphStyle.lineSpacing + } else { + paragraphStyle.lineSpacing = 0.0 + paragraphStyle.minimumLineHeight = lineHeight + } + + paragraphStyle.maximumLineHeight = paragraphStyle.minimumLineHeight + } + + if let paragraphSpacing = paragraphSpacing { + paragraphStyle.paragraphSpacing = paragraphSpacing + } + + if let paragraphIndent = paragraphIndent { + paragraphStyle.firstLineHeadIndent = paragraphIndent + } + + if let lineBreakMode = lineBreakMode { + paragraphStyle.lineBreakMode = lineBreakMode + } + + if let alignment = alignment { + paragraphStyle.alignment = alignment + } + + return paragraphStyle + } + + public func attributes(includingParagraphStyle: Bool = true) -> [NSAttributedString.Key: Any] { + if includingParagraphStyle { + return attributes(paragraphStyle: paragraphStyle()) + } else { + return attributes(paragraphStyle: nil) + } + } + + public func attributedString( + _ string: String, + includingParagraphStyle: Bool = true + ) -> NSAttributedString { + return NSAttributedString(string: string, style: self, includingParagraphStyle: includingParagraphStyle) + } + + // MARK: - + + public func withFont(_ font: UIFont?) -> TextStyle { + return TextStyle( + font: font, + color: color, + backgroundColor: backgroundColor, + strikethrough: strikethrough, + underline: underline, + paragraphSpacing: paragraphSpacing, + paragraphIndent: paragraphIndent, + lineHeight: lineHeight, + letterSpacing: letterSpacing, + lineBreakMode: lineBreakMode, + alignment: alignment + ) + } + + public func withColor(_ color: UIColor?) -> TextStyle { + return TextStyle( + font: font, + color: color, + backgroundColor: backgroundColor, + strikethrough: strikethrough, + underline: underline, + paragraphSpacing: paragraphSpacing, + paragraphIndent: paragraphIndent, + lineHeight: lineHeight, + letterSpacing: letterSpacing, + lineBreakMode: lineBreakMode, + alignment: alignment + ) + } + + public func withBackgroundColor(_ backgroundColor: UIColor?) -> TextStyle { + return TextStyle( + font: font, + color: color, + backgroundColor: backgroundColor, + strikethrough: strikethrough, + underline: underline, + paragraphSpacing: paragraphSpacing, + paragraphIndent: paragraphIndent, + lineHeight: lineHeight, + letterSpacing: letterSpacing, + lineBreakMode: lineBreakMode, + alignment: alignment + ) + } + + public func withStrikethrough(_ strikethrough: Bool) -> TextStyle { + return TextStyle( + font: font, + color: color, + backgroundColor: backgroundColor, + strikethrough: strikethrough, + underline: underline, + paragraphSpacing: paragraphSpacing, + paragraphIndent: paragraphIndent, + lineHeight: lineHeight, + letterSpacing: letterSpacing, + lineBreakMode: lineBreakMode, + alignment: alignment + ) + } + + public func withUnderline(_ underline: Bool) -> TextStyle { + return TextStyle( + font: font, + color: color, + backgroundColor: backgroundColor, + strikethrough: strikethrough, + underline: underline, + paragraphSpacing: paragraphSpacing, + paragraphIndent: paragraphIndent, + lineHeight: lineHeight, + letterSpacing: letterSpacing, + lineBreakMode: lineBreakMode, + alignment: alignment + ) + } + + public func withParagraphSpacing(_ paragraphSpacing: CGFloat?) -> TextStyle { + return TextStyle( + font: font, + color: color, + backgroundColor: backgroundColor, + strikethrough: strikethrough, + underline: underline, + paragraphSpacing: paragraphSpacing, + paragraphIndent: paragraphIndent, + lineHeight: lineHeight, + letterSpacing: letterSpacing, + lineBreakMode: lineBreakMode, + alignment: alignment + ) + } + + public func withParagraphIndent(_ paragraphIndent: CGFloat?) -> TextStyle { + return TextStyle( + font: font, + color: color, + backgroundColor: backgroundColor, + strikethrough: strikethrough, + underline: underline, + paragraphSpacing: paragraphSpacing, + paragraphIndent: paragraphIndent, + lineHeight: lineHeight, + letterSpacing: letterSpacing, + lineBreakMode: lineBreakMode, + alignment: alignment + ) + } + + public func withLineHeight(_ lineHeight: CGFloat?) -> TextStyle { + return TextStyle( + font: font, + color: color, + backgroundColor: backgroundColor, + strikethrough: strikethrough, + underline: underline, + paragraphSpacing: paragraphSpacing, + paragraphIndent: paragraphIndent, + lineHeight: lineHeight, + letterSpacing: letterSpacing, + lineBreakMode: lineBreakMode, + alignment: alignment + ) + } + + public func withLetterSpacing(_ letterSpacing: CGFloat?) -> TextStyle { + return TextStyle( + font: font, + color: color, + backgroundColor: backgroundColor, + strikethrough: strikethrough, + underline: underline, + paragraphSpacing: paragraphSpacing, + paragraphIndent: paragraphIndent, + lineHeight: lineHeight, + letterSpacing: letterSpacing, + lineBreakMode: lineBreakMode, + alignment: alignment + ) + } + + public func withLineBreakMode(_ lineBreakMode: NSLineBreakMode?) -> TextStyle { + return TextStyle( + font: font, + color: color, + backgroundColor: backgroundColor, + strikethrough: strikethrough, + underline: underline, + paragraphSpacing: paragraphSpacing, + paragraphIndent: paragraphIndent, + lineHeight: lineHeight, + letterSpacing: letterSpacing, + lineBreakMode: lineBreakMode, + alignment: alignment + ) + } + + public func withAlignment(_ alignment: NSTextAlignment?) -> TextStyle { + return TextStyle( + font: font, + color: color, + backgroundColor: backgroundColor, + strikethrough: strikethrough, + underline: underline, + paragraphSpacing: paragraphSpacing, + paragraphIndent: paragraphIndent, + lineHeight: lineHeight, + letterSpacing: letterSpacing, + lineBreakMode: lineBreakMode, + alignment: alignment + ) + } +} + +public extension NSAttributedString { + + // MARK: - Initializers + + convenience init(string: String, style: TextStyle, includingParagraphStyle: Bool = true) { + self.init(string: string, attributes: style.attributes(includingParagraphStyle: includingParagraphStyle)) + } +} diff --git a/Demo/FigmaGenDemo/Info.plist b/Demo/FugenDemo/Info.plist similarity index 93% rename from Demo/FigmaGenDemo/Info.plist rename to Demo/FugenDemo/Info.plist index b0f4e12..244fd5e 100644 --- a/Demo/FigmaGenDemo/Info.plist +++ b/Demo/FugenDemo/Info.plist @@ -20,6 +20,14 @@ 1 LSRequiresIPhoneOS + UIAppFonts + + SF-Pro-Display-Bold.otf + SF-Pro-Display-Semibold.otf + SF-Pro-Display-Light.otf + SF-Pro-Display-Medium.otf + SF-Pro-Display-Regular.otf + UILaunchStoryboardName LaunchScreen UIMainStoryboardFile @@ -31,8 +39,6 @@ UISupportedInterfaceOrientations UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight UISupportedInterfaceOrientations~ipad @@ -41,13 +47,5 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight - UIAppFonts - - SF-Pro-Display-Bold.otf - SF-Pro-Display-Semibold.otf - SF-Pro-Display-Light.otf - SF-Pro-Display-Medium.otf - SF-Pro-Display-Regular.otf - diff --git a/Demo/FugenDemo/Resources/Colors.xcassets/Contents.json b/Demo/FugenDemo/Resources/Colors.xcassets/Contents.json new file mode 100644 index 0000000..35f2f05 --- /dev/null +++ b/Demo/FugenDemo/Resources/Colors.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "Fugen" + } +} \ No newline at end of file diff --git a/Demo/FugenDemo/Resources/Colors.xcassets/DaisyBush.colorset/Contents.json b/Demo/FugenDemo/Resources/Colors.xcassets/DaisyBush.colorset/Contents.json new file mode 100644 index 0000000..8f384b5 --- /dev/null +++ b/Demo/FugenDemo/Resources/Colors.xcassets/DaisyBush.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "info" : { + "version" : 1, + "author" : "Fugen" + }, + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "red" : "0.35686275362968445", + "alpha" : "0.75", + "blue" : "0.5882353186607361", + "green" : "0.25882354378700256" + } + }, + "idiom" : "universal" + } + ] +} \ No newline at end of file diff --git a/Demo/FugenDemo/Resources/Colors.xcassets/Eclipse.colorset/Contents.json b/Demo/FugenDemo/Resources/Colors.xcassets/Eclipse.colorset/Contents.json new file mode 100644 index 0000000..a5b4f8f --- /dev/null +++ b/Demo/FugenDemo/Resources/Colors.xcassets/Eclipse.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "info" : { + "version" : 1, + "author" : "Fugen" + }, + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "red" : "0.2235294133424759", + "alpha" : "1.0", + "blue" : "0.2235294133424759", + "green" : "0.2235294133424759" + } + }, + "idiom" : "universal" + } + ] +} \ No newline at end of file diff --git a/Demo/FugenDemo/Resources/Colors.xcassets/JellyBean.colorset/Contents.json b/Demo/FugenDemo/Resources/Colors.xcassets/JellyBean.colorset/Contents.json new file mode 100644 index 0000000..6c1bac1 --- /dev/null +++ b/Demo/FugenDemo/Resources/Colors.xcassets/JellyBean.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "info" : { + "version" : 1, + "author" : "Fugen" + }, + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "red" : "0.25882354378700256", + "alpha" : "1.0", + "blue" : "0.5882353186607361", + "green" : "0.4901960790157318" + } + }, + "idiom" : "universal" + } + ] +} \ No newline at end of file diff --git a/Demo/FugenDemo/Resources/Colors.xcassets/Lochinvar.colorset/Contents.json b/Demo/FugenDemo/Resources/Colors.xcassets/Lochinvar.colorset/Contents.json new file mode 100644 index 0000000..8315217 --- /dev/null +++ b/Demo/FugenDemo/Resources/Colors.xcassets/Lochinvar.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "info" : { + "version" : 1, + "author" : "Fugen" + }, + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "red" : "0.25882354378700256", + "alpha" : "1.0", + "blue" : "0.4901960790157318", + "green" : "0.5882353186607361" + } + }, + "idiom" : "universal" + } + ] +} \ No newline at end of file diff --git a/Demo/FugenDemo/Resources/Colors.xcassets/Razzmatazz.colorset/Contents.json b/Demo/FugenDemo/Resources/Colors.xcassets/Razzmatazz.colorset/Contents.json new file mode 100644 index 0000000..be14d4d --- /dev/null +++ b/Demo/FugenDemo/Resources/Colors.xcassets/Razzmatazz.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "info" : { + "version" : 1, + "author" : "Fugen" + }, + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "red" : "0.8901960849761963", + "alpha" : "1.0", + "blue" : "0.3607843220233917", + "green" : "0.04313725605607033" + } + }, + "idiom" : "universal" + } + ] +} \ No newline at end of file diff --git a/Demo/FugenDemo/Resources/Colors.xcassets/SnowDrift.colorset/Contents.json b/Demo/FugenDemo/Resources/Colors.xcassets/SnowDrift.colorset/Contents.json new file mode 100644 index 0000000..94628de --- /dev/null +++ b/Demo/FugenDemo/Resources/Colors.xcassets/SnowDrift.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "info" : { + "version" : 1, + "author" : "Fugen" + }, + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "red" : "0.8549019694328308", + "alpha" : "1.0", + "blue" : "0.8509804010391235", + "green" : "0.8549019694328308" + } + }, + "idiom" : "universal" + } + ] +} \ No newline at end of file diff --git a/Demo/FugenDemo/Resources/Colors.xcassets/Submarine.colorset/Contents.json b/Demo/FugenDemo/Resources/Colors.xcassets/Submarine.colorset/Contents.json new file mode 100644 index 0000000..866d92d --- /dev/null +++ b/Demo/FugenDemo/Resources/Colors.xcassets/Submarine.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "info" : { + "version" : 1, + "author" : "Fugen" + }, + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "red" : "0.5803921818733215", + "alpha" : "1.0", + "blue" : "0.5960784554481506", + "green" : "0.5921568870544434" + } + }, + "idiom" : "universal" + } + ] +} \ No newline at end of file diff --git a/Demo/FugenDemo/Resources/Colors.xcassets/Whisper.colorset/Contents.json b/Demo/FugenDemo/Resources/Colors.xcassets/Whisper.colorset/Contents.json new file mode 100644 index 0000000..b232683 --- /dev/null +++ b/Demo/FugenDemo/Resources/Colors.xcassets/Whisper.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "info" : { + "version" : 1, + "author" : "Fugen" + }, + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "red" : "0.9137254953384399", + "alpha" : "1.0", + "blue" : "0.9137254953384399", + "green" : "0.9137254953384399" + } + }, + "idiom" : "universal" + } + ] +} \ No newline at end of file diff --git a/Demo/FigmaGenDemo/Resources/Fonts/SF-Pro-Display-Bold.otf b/Demo/FugenDemo/Resources/Fonts/SF-Pro-Display-Bold.otf similarity index 100% rename from Demo/FigmaGenDemo/Resources/Fonts/SF-Pro-Display-Bold.otf rename to Demo/FugenDemo/Resources/Fonts/SF-Pro-Display-Bold.otf diff --git a/Demo/FigmaGenDemo/Resources/Fonts/SF-Pro-Display-Light.otf b/Demo/FugenDemo/Resources/Fonts/SF-Pro-Display-Light.otf similarity index 100% rename from Demo/FigmaGenDemo/Resources/Fonts/SF-Pro-Display-Light.otf rename to Demo/FugenDemo/Resources/Fonts/SF-Pro-Display-Light.otf diff --git a/Demo/FigmaGenDemo/Resources/Fonts/SF-Pro-Display-Medium.otf b/Demo/FugenDemo/Resources/Fonts/SF-Pro-Display-Medium.otf similarity index 100% rename from Demo/FigmaGenDemo/Resources/Fonts/SF-Pro-Display-Medium.otf rename to Demo/FugenDemo/Resources/Fonts/SF-Pro-Display-Medium.otf diff --git a/Demo/FigmaGenDemo/Resources/Fonts/SF-Pro-Display-Regular.otf b/Demo/FugenDemo/Resources/Fonts/SF-Pro-Display-Regular.otf similarity index 100% rename from Demo/FigmaGenDemo/Resources/Fonts/SF-Pro-Display-Regular.otf rename to Demo/FugenDemo/Resources/Fonts/SF-Pro-Display-Regular.otf diff --git a/Demo/FigmaGenDemo/Resources/Fonts/SF-Pro-Display-Semibold.otf b/Demo/FugenDemo/Resources/Fonts/SF-Pro-Display-Semibold.otf similarity index 100% rename from Demo/FigmaGenDemo/Resources/Fonts/SF-Pro-Display-Semibold.otf rename to Demo/FugenDemo/Resources/Fonts/SF-Pro-Display-Semibold.otf diff --git a/Demo/FigmaGenDemo/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json b/Demo/FugenDemo/Resources/Images.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from Demo/FigmaGenDemo/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Demo/FugenDemo/Resources/Images.xcassets/AppIcon.appiconset/Contents.json diff --git a/Demo/FigmaGenDemo/Resources/Assets.xcassets/Contents.json b/Demo/FugenDemo/Resources/Images.xcassets/Contents.json similarity index 100% rename from Demo/FigmaGenDemo/Resources/Assets.xcassets/Contents.json rename to Demo/FugenDemo/Resources/Images.xcassets/Contents.json diff --git a/Demo/FugenDemo/Resources/Images.xcassets/Generated/Cloud.imageset/Cloud.pdf b/Demo/FugenDemo/Resources/Images.xcassets/Generated/Cloud.imageset/Cloud.pdf new file mode 100644 index 0000000000000000000000000000000000000000..066e5dcff4a1b6b9604b3c8b20f35d58bddd650d GIT binary patch literal 1760 zcma)-OK%e~5XbNS6mzKrNbGw2wp3Mulp+L(l5#^F!e%K!O%}2N0iT|~H@o)salnUY z^7FjMnVejnUp(c?3&A9*`}|E1ou1O!nP_+G^i`-iuiv!0>%&*lfXk%SANK8PE9&$1 z*QRNgFQ3!mYW}V1#Sg)i91h7zc$%gAcloN>3dqqo8)50B3@$(j!7A&iZ+7YW=vb*q z8f=bGn~JSe&Qh#`iC$YWX3{Gbg*Bp>6k4Q*Zi}Br6wMs4m^_ecMvce@nPuVr)jZ}` z@#TrwiTD58=1>K6$3$XXdF5n?gg)mf+!s=x5zq$fy+$XQmE=g<1f8NMr8xG3PSR+7XVAedN>?_AC z<53eXr6e%++IySyobe7GVQujktT(u~m6tB0IJ&ahg#c@hd~{?(EUPGuMtOxb!c{(K zXVnbq3RxS}l{%_*@|;mbR$3a1xHD!rI@Ae*CMkzzDHWaPM7;7tN2QKlCOZZT2IZg^ zIx1wFUj~xF1)7|Rscb~RWS1E_Y^}F}M!`?&ibi!)2xh~0A;F=OqX$JdLK%$MU_1pX zS0T8Rm|PB!(JYUm=c<4iVQlc`t;7salQ)cUq-S#Xg*76-?X-->O*5^fw1JN6ikV~H zR!FdHvHIC=*ByHL_z7DLr+(Y6H>>B}Z~8dZA&XFcy+xV~mu=tu+&67cX-zIicZ+U! zXm<#ZcH{&vS9>tRP%`@P=X*=_12eT zJ=XLcq|uq%$l!6_MZOpw_N&cJyBGKms$ZR>9gq5M+dig8oAu*kQ|e{c9Vit%biBUW Y{B4o_@L#mrABJ++>L5-|Uc9^b2g$K;nE(I) literal 0 HcmV?d00001 diff --git a/Demo/FugenDemo/Resources/Images.xcassets/Generated/Cloud.imageset/Contents.json b/Demo/FugenDemo/Resources/Images.xcassets/Generated/Cloud.imageset/Contents.json new file mode 100644 index 0000000..d7ca40c --- /dev/null +++ b/Demo/FugenDemo/Resources/Images.xcassets/Generated/Cloud.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Cloud.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "Fugen" + } +} \ No newline at end of file diff --git a/Demo/FugenDemo/Resources/Images.xcassets/Generated/Contents.json b/Demo/FugenDemo/Resources/Images.xcassets/Generated/Contents.json new file mode 100644 index 0000000..35f2f05 --- /dev/null +++ b/Demo/FugenDemo/Resources/Images.xcassets/Generated/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "Fugen" + } +} \ No newline at end of file diff --git a/Demo/FugenDemo/Resources/Images.xcassets/Generated/Geo.imageset/Contents.json b/Demo/FugenDemo/Resources/Images.xcassets/Generated/Geo.imageset/Contents.json new file mode 100644 index 0000000..412dd5c --- /dev/null +++ b/Demo/FugenDemo/Resources/Images.xcassets/Generated/Geo.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Geo.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "Fugen" + } +} \ No newline at end of file diff --git a/Demo/FugenDemo/Resources/Images.xcassets/Generated/Geo.imageset/Geo.pdf b/Demo/FugenDemo/Resources/Images.xcassets/Generated/Geo.imageset/Geo.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c2c9a43d317bec70ce7f2d9b81ea90eccc60acbc GIT binary patch literal 1835 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 E1w+BehX4Qo literal 0 HcmV?d00001 diff --git a/Demo/FugenDemo/Resources/Images.xcassets/Generated/Snapchat.imageset/Contents.json b/Demo/FugenDemo/Resources/Images.xcassets/Generated/Snapchat.imageset/Contents.json new file mode 100644 index 0000000..29e3616 --- /dev/null +++ b/Demo/FugenDemo/Resources/Images.xcassets/Generated/Snapchat.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Snapchat.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "Fugen" + } +} \ No newline at end of file diff --git a/Demo/FugenDemo/Resources/Images.xcassets/Generated/Snapchat.imageset/Snapchat.pdf b/Demo/FugenDemo/Resources/Images.xcassets/Generated/Snapchat.imageset/Snapchat.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8393feeefdcde1958a9e6d8f25435fb2f1914062 GIT binary patch literal 5114 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 K7K=BZuKoZKB_tvM literal 0 HcmV?d00001 diff --git a/Demo/FugenDemo/Resources/Images.xcassets/Generated/Telegram.imageset/Contents.json b/Demo/FugenDemo/Resources/Images.xcassets/Generated/Telegram.imageset/Contents.json new file mode 100644 index 0000000..6bc7c7e --- /dev/null +++ b/Demo/FugenDemo/Resources/Images.xcassets/Generated/Telegram.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Telegram.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "Fugen" + } +} \ No newline at end of file diff --git a/Demo/FugenDemo/Resources/Images.xcassets/Generated/Telegram.imageset/Telegram.pdf b/Demo/FugenDemo/Resources/Images.xcassets/Generated/Telegram.imageset/Telegram.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9aad9b705d766a1717158c6e4e5396e776d4af29 GIT binary patch literal 4296 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 CgBnEu literal 0 HcmV?d00001 diff --git a/Demo/FugenDemo/Resources/Images.xcassets/Generated/WeChat.imageset/Contents.json b/Demo/FugenDemo/Resources/Images.xcassets/Generated/WeChat.imageset/Contents.json new file mode 100644 index 0000000..468e04c --- /dev/null +++ b/Demo/FugenDemo/Resources/Images.xcassets/Generated/WeChat.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "WeChat.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "Fugen" + } +} \ No newline at end of file diff --git a/Demo/FugenDemo/Resources/Images.xcassets/Generated/WeChat.imageset/WeChat.pdf b/Demo/FugenDemo/Resources/Images.xcassets/Generated/WeChat.imageset/WeChat.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2a02e7650b7e92d769f843c3cf2639baafabb63f GIT binary patch literal 3396 zcmb7HO>Y}F5WVlO;3Ys(Ak^@i1cCsK-4sPz)Kz*5dQjIJM};l5l2WAk^?gI_4k_4& zbPqQDc0M0xX2;KNuHU{iIt_zSr1pROIVkn&m3sYpn0B}P=U{t$_0zPwJAG6R;F_h5 zr^B>)7*^NQKihFyfB!~Zz3cxPkHg=C(NrHr%i*P*9>0@U;$SId z@6>VJ;q`3T+U3MLGw8fFfou$_=eFzY8J-fWz;&fqPW)!tEpR7c_hp`r+EBTI0+fPjjRo-aTnSqo#hGn39# zYac9MXjLuIa{?Aj

a}*+=$jbvBt-2JK-HgBXSt*c6j?5y*{CMk7t*7W8~^9% zs|7_qV-~9 zPPHoq#oXhrUeGyW#BNbtT#J$|uwsk9z+e+o%EZ9+*d);v$yQ0>0Q0C}Euw}>=*^-e z*jx()&l016T`J97pPo3D;gJzO;R;a)f-!m4M~7ihBIX^6n7?+x7L_%A@thE(e(f=l zYTwRMh$AI@Fj>rbQ(zv^Vw$5(0M$;eorYmgbrj((;RAq917n1bEvrV1Q}}!WLiQ*F zv@3XDwl5w%{B=PeLmStUFqY%fAj{!H;V{23Ca^=)FED@OQS*RY-Ok`8V!=oSa#*!; z<-{b!Ogu#*Mx|xy8YFB&Rpj_W3uYIRb1hN|9X8wh=`ir^{csIB xo*(xQ(+l-{d;8){%4)sepA;ut8DG8Iewh$`{eNe3IMsCUP4&aGXW#wu_CM_$tnvT= literal 0 HcmV?d00001 diff --git a/Demo/FugenDemo/Resources/Images.xcassets/Generated/WhatsApp.imageset/Contents.json b/Demo/FugenDemo/Resources/Images.xcassets/Generated/WhatsApp.imageset/Contents.json new file mode 100644 index 0000000..22f7393 --- /dev/null +++ b/Demo/FugenDemo/Resources/Images.xcassets/Generated/WhatsApp.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "WhatsApp.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "Fugen" + } +} \ No newline at end of file diff --git a/Demo/FugenDemo/Resources/Images.xcassets/Generated/WhatsApp.imageset/WhatsApp.pdf b/Demo/FugenDemo/Resources/Images.xcassets/Generated/WhatsApp.imageset/WhatsApp.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5a980a72aa7c231cd1bab58160401abc060f6ca3 GIT binary patch literal 3446 zcma)f*t5?&fyKf)8=+?*2m;p#j;9? zi6Cv9eC;>eLFD9cHo6@`v_3h>X*n*&)4pbFY$YVKK#P;ju%L^VWwm@=Y!+-Ye8u@3 z*WzV{7AG4LJyJCLm>2V>W&aFqh7ZHLZ-(vg>;I*>*%U&MWadSuxit~zVC?=vY4*YT z=Bw8-h~%29x$R)h(d7la8N52kt*R%Hk|mf5<0<#bm698aY+H!UiSf4Lw^VbM|1q^{ zaAs>twG|9XscLWoPsMvz8*cGldy)A)v&$nTAA(1l*1MKVGXx%dZAtnG-b;$jh=T%O znls6^im@2Uld8G}A?0?CZ3drhZdi9TG$h2%W?M-$fFdlM`rDkZ>mvw>=tY{a(gy`JK&5TH1q7+{GSat2Ps zPms@rjE@HkIq5zHDQ9D6q>>8=GcHRc_d=mU3w%>3R6Oj{`#jYqLWs*DN1WK&$k@?;lBEzcj8|8a zg9CJ#Q7Cf=o?F0>!^Kf9_#?RJw0~GQ`awB;SV}E0QI#s8kP)rWN`(&^7SuU(tZ0A@ zyn?|sU8opHn=sVcVz*AEQST#%f_4!BJs2SlKOE24V3?2}V+F>PS7Z?)+<2QwlvbJ= zhs67FqCJr0;j#LY{ z?<+az?1?rZe3d@I;*1Ug%S_&^lGR{q(R&jVEr!yI9@!8m5%Y>34?P&hO-SrZR-z=- z)vb$)51T~$20C8PsVGI|k(g{KmIN5~sfg$7gy5*IQ)?PeYspRqmZrc?9nHQ>@}R{k zgGQ}|yg55t`dHidNZE8wwn<{2I$F%Aqnk#i*BmP-6QNlY;^-8W@5T_zRc9))me`Oe z{aKlvgup7)RQ2NX6}BfRa)o3}nIKFTRX6)m#kbxta3CB3l$|hvE2*;}kQq`_gxCc? zgN2r+sk%2*&u1E$Yk}*c532+j+7?W`N+WlWyHe*VS#yOb&xN5C7`tZ>vrlJ-(!A`W z?mjVFIHLH(D47)MRXg}7O&FmFkT4*;=j!Mj?L|~6v0s!>Ti*KtxP7 zu1M{|VlWXvOn`}csuL8JJU2BES3=MkO>YVsXh6d40AW;C2d;8VKKew^ImFe+0732r zr6m4o)>KI~4#cEn5@1^OW=Fk%1mv{Ai4%hR5v0h_S13)dl&XU#v>q_eD1D@8VvKmF zR2-o`IUL+gQg|>iIrl4bROjpQ#idW=27>Ca3u~CANs$^Dba(##~p#IFhxQQ3T!`=G&X1p7;dOy5`j>r4m?fAqzzP@@gk+Qnn?G8p0?u@VA aTz?*kzW;@^zB}}EcumFO(WCEvdG#LxfVl?% literal 0 HcmV?d00001 diff --git a/Demo/FugenDemo/Storyboards/Base.lproj/LaunchScreen.storyboard b/Demo/FugenDemo/Storyboards/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..94b6077 --- /dev/null +++ b/Demo/FugenDemo/Storyboards/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Demo/FugenDemo/Storyboards/Base.lproj/Main.storyboard b/Demo/FugenDemo/Storyboards/Base.lproj/Main.storyboard new file mode 100644 index 0000000..79e3410 --- /dev/null +++ b/Demo/FugenDemo/Storyboards/Base.lproj/Main.storyboard @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Demo/FugenDemo/ViewController.swift b/Demo/FugenDemo/ViewController.swift new file mode 100644 index 0000000..81b4227 --- /dev/null +++ b/Demo/FugenDemo/ViewController.swift @@ -0,0 +1,37 @@ +// +// ViewController.swift +// FugenDemo +// +// Created by Almaz Ibragimov on 16.11.2019. +// Copyright © 2019 Almaz Ibragimov. All rights reserved. +// + +import UIKit + +class ViewController: UIViewController { + + @IBOutlet private weak var cardView: ShadowStyleView! + @IBOutlet private weak var label: UILabel! + @IBOutlet private weak var imageView: UIImageView! + + override func viewDidLoad() { + super.viewDidLoad() + + view.backgroundColor = ColorStyle.razzmatazz.color + view.backgroundColor = UIColor(style: .razzmatazz) + + label.attributedText = TextStyle.title.attributedString("Hello world") + label.attributedText = NSAttributedString(string: "Hello world", style: .title) + + label.attributedText = TextStyle + .title + .withColor(.white) + .withLineBreakMode(.byWordWrapping) + .attributedString("Hello world") + + imageView.image = Images.cloud + + cardView.shadowStyle = .cardShadow + label.shadow = .thinShadow + } +} diff --git a/Demo/FugenDemoTests/FugenDemoTests.swift b/Demo/FugenDemoTests/FugenDemoTests.swift new file mode 100644 index 0000000..6efebcb --- /dev/null +++ b/Demo/FugenDemoTests/FugenDemoTests.swift @@ -0,0 +1,29 @@ +// +// FugenDemoTests.swift +// FugenDemoTests +// +// Created by Almaz Ibragimov on 08.02.2020. +// Copyright © 2020 Almaz Ibragimov. All rights reserved. +// + +import XCTest +import FugenDemo + +class FugenDemoTests: XCTestCase { + + func testImages() { + do { + try Images.validate() + } catch { + XCTFail("Test encountered unexpected error: \(error)") + } + } + + func testTextStyles() { + do { + try TextStyle.validate() + } catch { + XCTFail("Test encountered unexpected error: \(error)") + } + } +} diff --git a/Tests/Info.plist b/Demo/FugenDemoTests/Info.plist old mode 100755 new mode 100644 similarity index 93% rename from Tests/Info.plist rename to Demo/FugenDemoTests/Info.plist index 6c40a6c..64d65ca --- a/Tests/Info.plist +++ b/Demo/FugenDemoTests/Info.plist @@ -13,7 +13,7 @@ CFBundleName $(PRODUCT_NAME) CFBundlePackageType - BNDL + $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString 1.0 CFBundleVersion diff --git a/Demo/Podfile b/Demo/Podfile new file mode 100644 index 0000000..c8ef601 --- /dev/null +++ b/Demo/Podfile @@ -0,0 +1,7 @@ +platform :ios, '11.0' + +target 'FugenDemo' do + use_frameworks! + + pod 'Fugen' +end diff --git a/Demo/Podfile.lock b/Demo/Podfile.lock new file mode 100644 index 0000000..6e51716 --- /dev/null +++ b/Demo/Podfile.lock @@ -0,0 +1,16 @@ +PODS: + - Fugen (1.1.0) + +DEPENDENCIES: + - Fugen + +SPEC REPOS: + trunk: + - Fugen + +SPEC CHECKSUMS: + Fugen: b74397ba08948ef3b6c402ed98b080c299467432 + +PODFILE CHECKSUM: 1272ede7df0e71d4a3a82f7dc4fdbfc5bc9e4a12 + +COCOAPODS: 1.9.3 diff --git a/Demo/Templates/Colors.stencil b/Demo/Templates/Colors.stencil deleted file mode 100644 index 8116df8..0000000 --- a/Demo/Templates/Colors.stencil +++ /dev/null @@ -1,35 +0,0 @@ -// swiftlint:disable all -{% if colors %} -{% macro rgbaHex color %}0x{{color.red}}{{color.green}}{{color.blue}}{{color.alpha}}{% endmacro %} -{% macro rgbHexString color %}#{{color.red}}{{color.green}}{{color.blue}}{% endmacro %} -{% macro rgbaHexString color %}{% call rgbHexString color %}{{color.alpha}}{% endmacro %} -{% macro rgbString color %}{{color.red|hexToInt}} {{color.green|hexToInt}} {{color.blue|hexToInt}}{% endmacro %} -{% macro rgbaString color %}{% call rgbString color %}, {{color.alpha|hexToInt|int255toFloat|percent}}{% endmacro %} -{% macro colorName color %}{{color.name|swiftIdentifier:"pretty"|lowerFirstWord|escapeReservedKeywords}}{% endmacro %} -import UIKit.UIColor - -public enum Colors { -{% for color in colors %} - - /// {{color.name}} - /// - /// Hex: {% call rgbaHexString color %}; rgba: {% call rgbaString color %}. - public static let {% call colorName color %} = UIColor(rgbaHex: {% call rgbaHex color %}) -{% endfor %} -} - -private extension UIColor { - - convenience init(rgbaHex: UInt32) { - self.init( - red: CGFloat((rgbaHex >> 24) & 0xFF) / 255.0, - green: CGFloat((rgbaHex >> 16) & 0xFF) / 255.0, - blue: CGFloat((rgbaHex >> 8) & 0xFF) / 255.0, - alpha: CGFloat(rgbaHex & 0xFF) / 255.0 - ) - } -} -{% else %} -// No color found -{% endif %} -// swiftlint:enable all diff --git a/Demo/Templates/Spacings.stencil b/Demo/Templates/Spacings.stencil deleted file mode 100644 index 5a78d6f..0000000 --- a/Demo/Templates/Spacings.stencil +++ /dev/null @@ -1,27 +0,0 @@ -// swiftlint:disable all -{% if spacings %} -import UIKit - -public protocol Spacing { - init(_ value: Double) -} - -extension Int: Spacing { } -extension UInt: Spacing { } -extension Float: Spacing { } -extension Double: Spacing { } -extension CGFloat: Spacing { } - -extension Spacing { -{% for spacing in spacings %} - - /// {{ spacing.name }} - /// - /// Value: {{ spacing.value }}. - public static var {{ spacing.name|lowercase }}: Self { Self({{ spacing.value }}) } -{% endfor %} -} -{% else %} -// No spacings found -{% endif %} -// swiftlint:enable all diff --git a/Demo/Templates/TextStyles.stencil b/Demo/Templates/TextStyles.stencil deleted file mode 100644 index 0c36035..0000000 --- a/Demo/Templates/TextStyles.stencil +++ /dev/null @@ -1,193 +0,0 @@ -// swiftlint:disable all -{% if textStyles %} -{% macro rgbaHex color %}0x{{color.red}}{{color.green}}{{color.blue}}{{color.alpha}}{% endmacro %} -{% macro rgbHexString color %}#{{color.red}}{{color.green}}{{color.blue}}{% endmacro %} -{% macro rgbaHexString color %}{% call rgbHexString color %}{{color.alpha}}{% endmacro %} -{% macro rgbString color %}{{color.red|hexToInt}} {{color.green|hexToInt}} {{color.blue|hexToInt}}{% endmacro %} -{% macro rgbaString color %}{% call rgbString color %}, {{color.alpha|hexToInt|int255toFloat|percent}}{% endmacro %} -{% macro colorValue color %}hex: {% call rgbaHexString color %}; rgba: {% call rgbaString color %}{% endmacro %} -{% macro colorStyle color %}{% if color.name %}{{color.name}}; {% endif %}{% endmacro %} -{% macro colorDescription color %}{% call colorStyle color %}{% call colorValue color %}{% endmacro %} -{% macro fontName textStyle %}{{textStyle.fontFamily}} ({{textStyle.fontPostScriptName}}); {% endmacro %} -{% macro fontWeight textStyle %}weight {{textStyle.fontWeight}}; {% endmacro %} -{% macro fontSize textStyle %}size {{textStyle.fontSize}}{% endmacro %} -{% macro fontDescription textStyle %}{% call fontName textStyle %}{% call fontWeight textStyle %}{% call fontSize textStyle %}{% endmacro %} -{% macro textStyleName textStyle %}{{textStyle.name|swiftIdentifier:"pretty"|lowerFirstWord|escapeReservedKeywords}}{% endmacro %} -import Foundation -import UIKit - -public struct TextStyle: Equatable { - - public let font: UIFont - public let textColor: UIColor - public let paragraphSpacing: CGFloat? - public let paragraphIndent: CGFloat? - public let lineHeight: CGFloat? - public let letterSpacing: CGFloat? - - public var actualLineHeight: CGFloat { - return lineHeight ?? font.lineHeight - } - - public init( - font: UIFont, - textColor: UIColor, - paragraphSpacing: CGFloat? = nil, - paragraphIndent: CGFloat? = nil, - lineHeight: CGFloat? = nil, - letterSpacing: CGFloat? = nil - ) { - self.font = font - self.textColor = textColor - self.paragraphSpacing = paragraphSpacing - self.paragraphIndent = paragraphIndent - self.lineHeight = lineHeight - self.letterSpacing = letterSpacing - } - - public init( - fontName: String, - fontSize: CGFloat, - textColor: UIColor, - paragraphSpacing: CGFloat? = nil, - paragraphIndent: CGFloat? = nil, - lineHeight: CGFloat? = nil, - letterSpacing: CGFloat? = nil - ) { - self.init( - font: UIFont(name: fontName, size: fontSize) ?? UIFont.systemFont(ofSize: fontSize), - textColor: textColor, - paragraphSpacing: paragraphSpacing, - paragraphIndent: paragraphIndent, - lineHeight: lineHeight, - letterSpacing: letterSpacing - ) - } - - public func withTextColor(_ textColor: UIColor) -> TextStyle { - return TextStyle( - font: font, - textColor: textColor, - paragraphSpacing: paragraphSpacing, - paragraphIndent: paragraphIndent, - lineHeight: lineHeight, - letterSpacing: letterSpacing - ) - } - - public func attributes( - textColor: UIColor? = nil, - backgroundColor: UIColor? = nil, - alignment: NSTextAlignment? = nil, - lineBreakMode: NSLineBreakMode? = nil, - ignoringParagraphStyle: Bool = false - ) -> [NSAttributedString.Key: Any] { - var attributes: [NSAttributedString.Key: Any] = [ - .font: font, - .foregroundColor: textColor ?? self.textColor, - ] - - if let backgroundColor = backgroundColor { - attributes[.backgroundColor] = backgroundColor - } - - if let letterSpacing = letterSpacing { - attributes[.kern] = NSNumber(value: Float(letterSpacing)) - } - - if ignoringParagraphStyle { - return attributes - } - - let paragraphStyle = NSMutableParagraphStyle() - - if let lineHeight = lineHeight { - let paragraphLineSpacing = (lineHeight - font.lineHeight) / 2.0 - let paragraphLineHeight = lineHeight - paragraphLineSpacing - - paragraphStyle.lineSpacing = paragraphLineSpacing - paragraphStyle.minimumLineHeight = paragraphLineHeight - paragraphStyle.maximumLineHeight = paragraphLineHeight - } - - if let paragraphSpacing = paragraphSpacing { - paragraphStyle.paragraphSpacing = paragraphSpacing - } - - if let paragraphIndent = paragraphIndent { - paragraphStyle.firstLineHeadIndent = paragraphIndent - } - - if let alignment = alignment { - paragraphStyle.alignment = alignment - } - - if let lineBreakMode = lineBreakMode { - paragraphStyle.lineBreakMode = lineBreakMode - } - - attributes[.paragraphStyle] = paragraphStyle - - return attributes - } -} - -public extension TextStyle { -{% for textStyle in textStyles %} - - /// {{textStyle.name}} - /// - /// Font: {% call fontDescription textStyle %} - /// Text color: {% call colorDescription textStyle.textColor %} - /// Paragraph spacing: {{textStyle.paragraphSpacing|default:"default"}} - /// Paragraph indent: {{textStyle.paragraphIndent|default:"default"}} - /// Line height: {{textStyle.lineHeight|default:"default"}} - /// Letter spacing: {{textStyle.letterSpacing|default:"default"}} - static let {% call textStyleName textStyle %} = TextStyle( - fontName: "{{textStyle.fontPostScriptName}}", - fontSize: {{textStyle.fontSize}}, - textColor: UIColor(rgbaHex: {% call rgbaHex textStyle.textColor %}), - paragraphSpacing: {{textStyle.paragraphSpacing|default:"nil"}}, - paragraphIndent: {{textStyle.paragraphIndent|default:"nil"}}, - lineHeight: {{textStyle.lineHeight|default:"nil"}}, - letterSpacing: {{textStyle.letterSpacing|default:"nil"}} - ) -{% endfor %} -} - -public extension String { - - func styled( - _ textStyle: TextStyle, - textColor: UIColor? = nil, - backgroundColor: UIColor? = nil, - alignment: NSTextAlignment? = nil, - lineBreakMode: NSLineBreakMode? = nil - ) -> NSAttributedString { - return NSAttributedString( - string: self, - attributes: textStyle.attributes( - textColor: textColor, - backgroundColor: backgroundColor, - alignment: alignment, - lineBreakMode: lineBreakMode - ) - ) - } -} - -private extension UIColor { - - convenience init(rgbaHex: UInt32) { - self.init( - red: CGFloat((rgbaHex >> 24) & 0xFF) / 255.0, - green: CGFloat((rgbaHex >> 16) & 0xFF) / 255.0, - blue: CGFloat((rgbaHex >> 8) & 0xFF) / 255.0, - alpha: CGFloat(rgbaHex & 0xFF) / 255.0 - ) - } -} -{% else %} -// No text style found -{% endif %} -// swiftlint:enable all diff --git a/Demo/figmagen b/Demo/figmagen deleted file mode 100755 index b97ccf1c204ae6d50bf4de6c432e43fae4e5dac6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7022456 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

4B$6{|Oyh zF6|a^XTmlmJd!4i&4j&@@JL$InF(V(pv;7^ys{r44p!Z|_fb_uM|+WL+QY8`QW@!C z(lXLVBpGjT_~kfP{kIzRW}K^wK`N2?jk*)PK)GIiz51G4=a_Tl%)|ElFmgTJLgp}^ zf=Q0^B2pWgw9KhMxfDiC{lAn_GHAkVS4mauX-3FJ=*kL z*OfOqc#Z&t)|gE7$6{iQv>C^5l<)z^DldFCp}vS&vDA2x=$pm=fPOcvO!3=&evs#q z-1?gMki|B#x~BOD(#(3HvDCXhLw7c;L5sV#u#UaN@&&qx#lxD5AyD^xF1)OkXy7DB z=4V-Li&B*89wnW`VP!epUsT)AMD<24)Sfp_^Yz@WnR=<0sXezt>4i%`<$B>-OEy>k zV3eWfc1Ajq6k{NKYQ*Lr)M$pv1Z!k_AUr@#lV6)euMpKn8Ow`O`zYbOzPkE?od*=x zp9Z0Ij80Y;^Ct0s8>AJd!CC)zNPUM(9mxXvl~-Kiq&vIeg=h~9)-f<4)&t`nO1>6K{~7 z+qL&WwO73CR+|EJo209z3@%GA*e)_3+E%A!2B^OY*VyeaATK- ze}_~M@*MtMD*W4Egjhs<#jl2c9T;`czTbXz3eY*PrZJ|hS$Jcdg~C9QvYY_mXhx2vf882HwyF*Q; zfi+wAtDlL7WbAaP@g=K;wZFTnVz)Yz0R$1vjgW036}5&pG*kcWWvZ_49XyIm5N`Z+ zmnc>BnwHWrblllhk;}Q!?4@L`_vUVefYIZ_vt(?-#Ne#%%M`EE#7kD_Q&|WY=^T(1 z%xXP;8}E&A&;u8bW$GW$s1Um=dbz-pq)kK*N%G3KtB;KT@_v%)o{@ z1CSE0>`?=CfP+HwpA8@8NOt=Y2dKZng0 z&u+RwN#m2&+;7L=7P5sd@J1(U%Ae?+%LRET_fhS9gmUK?A7!Vju&pku%_cl{ee5=i zfO+Yx4I)||U#?DMu0`Zq?5HD*r4j-XU!R!evzD9EeRHf9oAb(V$};BfHAa|XPM$=a z*81GV0%%C9_G0lZ zR=SnV3)QGONVrwLL?->M^81W!KA^r_MiYepBUvlFB12!6wB=&|i}36)X?Z}petDav zZCzU4KVH+aNiOx#@{>q=`H~7li>w_$4AdAyi)5jtR$rD#5N2mUi!;n2#=lH&6- zMG{YZm&VunpjzxP(S}3$xBuGmoZ0pcPm$5S#?$?Q5d7)aB@02l2 zml3OS*}Ctj^77-7sth8yF7I`a_sW+@T#jgM)eSd$fm#3>WXt4N)R^{ET-3izeS_si zkR#4XFx>T@ZFH3d-^b4jwbg13K@86so^q>MLlp($WgvoKxE0P{YMPgQjI^qe2HC%; z8(V&Gdx3ot(W;R|Xhs`tR!4jdvFmdyV4^RuQvT%+^rZ`7QpGBc2=S>^(q&?u$SPYG zfe*W+>04}rVs)%Ecn6z{Ri0m=4Gz@Rs5U}>dB1%%oqei(J2$AqKxpb~RAUS({Zrkp zbqNEeX0NThy6rh#u?i}-(7u)!T>Ty8AX=T)!%HctraO${z8UH|pkyt#`}lw=1*3ho z^EfYDl%DHM7|+4l?mV|$@AWdh(E3yq~78g}5?vS*GBe*+{rlum6`_xH-ikDmRa-eLzh)W@)BxnlL zBlQb=5AdmkLo>Is)Ii+AA8knJ7@`+zfzymA6&WFs~)N5{`=f_hlOFi zcT_nyoYz?`Unkn&EruZ?=b@)sJIxhAyO?52$;2U@K@&pw!j>H8JCy<#dtTMB2SHA4C$m9OcsdVutP_i{%pUBGu3E zQu&fOhTuvrQuIJWuw>~X8}wyK6&H1>$hy#H%wX5Q2s)9&8g;LrLJn@lcJaK90Jq=yyw|I8F*SF3 z&aS65#lre_ZMB|p>Sa3C8uM7aWHe`;3hh&m0pV6iTLLgOe+xP7C{0~{@($g`1+)2`eY%z!{No5R~OAFoDQiiHK|RH@RG{R={8O9T6-Z)z&ebJ7~t7Kx`x#_ z&;1gOjw4XNfwYkHF6nXxKHmQ=8r@AgMCwCKzn8R=*WV>Q4FNJfin&;}O*;yI|D~fi z3NLf9uYZzF(RKZO;-QHIZq_oGE`K$FRev_W7$Vbquwxc&4!f~W?3?DF_Y?rI;a)n9 zbjPyw2kn^%w3uL;wNhTk+a-3cR?lPhFoKn6eHkU;43xEc-dYOO6q z23Eon`5O>uwSZNIA+;~(3}{dfzT#(-IJP1ZF9;;&k@91 z=}=HPM?40otWZBA%!yQ@Y@7bl3jgX%d7YYNN+%4r{+xR}+98)jhef3WDPtxwmcmf& zUiCqx^laVL%GOSliDKt`3~zj%Fn&jScV_E$AoN?TYBagD4u4g_^3ug@rT5P-Cl_x^ z=1q09rS7hxJZVljN>oMYCvI~h16<3B%!_*`}OMlC*V=2 zs1m!p0cmL6Rjb`fW*{{{t?GngVfe|OUzZp)N}N)mq=!&4&O-@QoL&zVw;iF`db?co zfP+KDD~~%=l=lm7$H`jBX_{z%A;a~uYSlyF&v`9P8Zg|tuff#MVDjn@H34LS@F_B_ z&2;D|T9)^yv8&Jwp{;mkOy_s@wo<+Q(IPZ#^@xaz8Oz3s)eR?+J1g`qkS`$P2|;Ai zD4}+(cdO$c65mlmX4L~LsE4FR;K9XWMRX(@Q)mq5E@hoZto7XG~wx^ZuuOwL%j~CQddg(9TUqhTh{{uCix+t zqv&);Dh{7h?FH!v^n(OW;nz3)@<@;#Nv;0pNY53dHzgr`|0s}-5Tr7lY*>~3dVQ=~ zEWYgjD^^Vr0uGAk#)O&n?*{=_w65C${?uGLK(7amrS<%$+{Hc>4L7vHqvD!m)#) zhyZVUNQ8e1f-z+g;~U}9h3aE@ubkM{*~R>+z*SN$Ui5Y!29V{+LXE-gK6}+xUbnya zUx`I;Vc>G4pI{0Lg`0FVFYVj-T2DoR4SPVCSaLHhXr3TanCnvsmOIY>9R z%<@G>{x8W~iAMLGLC9Y4~A;$`t!{AX1Qh}unM-x zUrkVs6cfwbnVecL66shE{uRwM#lUBc5Q?v=`Pju-|2Pn z-EZ(c;NbJnATz!?v|08~VMOU7_*y}yRBMP>rFUQ?UDIEq9yeW123CG`-kU4$#jMH! zwHi~X*RhPRSYC@Cj_-buGyGE8a>zmmznR&>I&)UQo%33fAF$gUd^Y3F+7H;TR_)NSp!fluwFN&}`kz+@ z8B8v2rTqgxrqbgdaJCyq^=u(BLVx^<&0O5Dn~K!tbN_U2^`n$p%ca>=YBixq?Dn_ur zrpv@<0s`eFStn4zPes66$WXf9R4_v><)xJp8(bj8hGs9Nl3hMP?1Jo~7Y~l}>&SB2 z)Qud_P1ttl0qVR;e!F9eJLy+Tb$lkBF|=Cky7Dv?HbU+9wyI?Hn>r5;Alw z=myIBRJv5Ayv;D_?rw=v0pQ{?X5P<((VxN{CTfw^QepNRn_zbJ5iYZrkcHVta`H3G zK6O9LzDRzjWcIE1Im~tj>&_OMg=e*@Shqv9%ExSIDHDofa_0aI)#SM1c0lzI8^ge} z>ckJb9J5O3(16ID?r^k3caSzeH*-7DbBBb7{hpVL;h~os5)G^OHSPIJ)uwx-y8UW! zxJ8(xBQ4OK1tHS)($TYeSi@JVJH=|nD&kg+&L&820LYaT`#q@33wLaQeu>ni%e*4x zc~t_owatO1Zjbr=cU_wuaxpzd%4#hHm6tAH7@z`5)l3MZYzDVyGZerfk@srr7Vir8 z%loEvKDd{6(FUu~7<3h{qvJrl2!vY`!M;~Rs=6lcSM+%VUH%)o{0j8#pfN>TV4uie41Hj{TT5Ow{J!D|#tO;nyGdJSvBitNw0A zVq>bGiKnhFfJc=2mwy-bRjUuh@FYsEQ;a~Z1S;O(GALnUz;ye+u>eIBYq$vQ0kx%% z%7lCa!rfD9yiE&fn@CKSk1};U+Nool8>*j>S>7-E9bMJHK3&y|xTyD-N77-ibVoH% z>+hJA3wK@ltCnjx_XfYz&stil)feKr>0nJS6{xS`GNHFX-dW8%ZsqMa(d=GVE2da$ zVyax~CLQ;n^rLu#M%U4vo0{l;OM7+@!op2E%0(L##BQe=E%cQy(Q^;wqZf$%dqaDf zQy3SUP4_KbXdjE}`vVfrbV!($NJ7~<+{rfK#x4zyG13VQkIN-a!v__b2AOeTPEm&G zgp6LAjQ{9SyYPxx@-SRF$G)AC{(u-)kwvt)w)w1)Tl{IJ`1bMQ1AJ`K4~9yLN>l zn!g(taoizFE7clxnIRFbE{#u0=5o`F6}GupP zFViO&H=SdK!JED-d~iGL91{d?#T`MAKjnhfT5PQxBp6Yns>xl_;45Uh$qGHxgNswf z$FIkJZsaG*C9)2OXAk`w|7O!p!L(weyjH$M-gXaYUah`B$IPSQ@+Pr3SKQ>BJ3`6fVN<<~|BX7}jGZe7Cy#PVx9y%Jel&UZtYcauKrytHJ1y z_~vtz&TO>vBA#?92xX0z>SSJq>i42egy0tp!|K z;fLIAH2+ya~+ncF=E z`CnCe^S>*--2O_xH+zn1PYLmt=Eh&j3;h(Wk#TsA7$4N7)<0()&w_>e{gd=eL|(YK zZQdEh8U8tPA`*E0^X}4oc}kQ43}nyEmsDJyEI1VqnJ_G?%rxwU+Y&nLSKlua20mm2 zty{Sszy?D%T$Q=&QH{z=r*=-GmfSj-vV3AR#8csKmGwt*kgL)OXJmwO@tvfQ3izDAj zF79-k9FiIcy(iS=>E2VV`iRe%tgm$3afU#I^A}TB^o7V!rMla2Tt=l6ca->#F#nCB zKZi*&iRXyt5jO_9ugBqp#+b4J9e!obsi;aHd+mGQ~=<}63Gdco| zr6(freR)w8YVUBp+OB=ors+JF_5Ks)OD!uj`cV#hUBsj*en6qtvw9#d7N6BwJPceH1BY(y zx?E9=9N!Yo$*wPydt;ucK68j_ooy?i+K3mUU5`*LhZ4}8UlPB786m2@d%38FHWMg9 zZ1dmdiHc{dZh60tc%t?au!=3gt_omzuRVe*+~(Y`2n4PISaf-~-<2}_@w0YMXD?(G zwVn$6#tP?EqQ9}bRjNd)6K?9KoNy0qL`D;$%DmY`9Qj44>qqqn>Gy%qR`z@1d2Uc6 zZ|9vP#qE5bg70~heVYkcgN4cfRIZdTL!U5gG4ua9ZVrQDRK6?gw^p|GK3mN*CP!Bh zqcTa&+8`Q!7_T_tl5+_Vs_J;7T&3{=LWVfF0Jzd^8KONWAyuq_p6)l3{3w{?>Od3dc} z@6;IV{RS z7#?$FFpYIXrB#|4w4T^NUU!_YKfwZVU*d;2#2LW)d2eUv9FX&i58lyy0XzAIw6#Km z+j7N;a1M9~4d(X{1Y~dzu9@8L%)t+&!TcUFhU*xvBe{;`O4k}}aqSIUHgKfD{2p>8 z`HB3#l6w=$PviGAuCut#vck8|fnY0io4$l^$I@xz#?gskf@c^uFH7zPLU(3KK5}xP z+}yFs!x}hzlobx7TOo^-VTH>UI&aC9?4wRru6L9z;@_MF^Rnd1!^K>r1i6x3>SX0g zw$jPUmFxy5D_62rPFAk8=?{&OjKXXyul(#L901In%zrxT?kA#K%okCZiinPukB@L{ z0OJ&DL`+%e?OozLABi2;D>->bK!)GRT72j5eC^Pew;n=giMzORCTTO{100FkLtFeSU|ZOvX&dmDRkDZOvik^=z_~90XESiZ z_Iu+Crh(^_hM;BxMeS)@ERokkYO6Q!VU?ln$w%(q@8N;yrMmnVJNa~L z9b+o!jnc*L_F@B-v*sZyZI&PoAf>O zb@tNt`+S$aygKylgVDGi+B`d&%=uK}-|DY} zWx}F|XF0@(BHgQ%k#SdI<69x;(_a9ed})2o#J1DBvKVS_W&}EC^Rlj`+9?(aaJJXO^$0j%AQZa=| zjJiNKZUUp2x6~fck9a^EJRZ=qyzUHgh~XE8l_z{_Z60^A{f1YZ=fw24Y_Kbysf(3? zKwfvg5XO$Zi?hT`pDKD`hgzhSqOdWx3wuHtDml}1I7UX~1<83gZC;#3hm&@To%%Dr zBIbUXGa_VkBRm2NJ)G1Ga_&4?dlARx@ogI8MZAB#@NBK@ne%uNImV5EJ{he`PoPhe zy#7|``4=nYM>%Z{OCr_pwTK&Xo?VDyX!(0Co%HDTQh{HibhlKvX{MYm)0gA|(+ zwdd{l(*j@K@1hrwhpwDnxY7b|tZ%P|PMRGN`+&J=|54c)aN+(38i|~&6bfRH4**Fl z(3>&7{wK1;AT%tSPLzqOZ`}M?JgNQlkxZgq%Ge2&R$rrNK_@@&L|0Or{JgG}{9G+f z6xwE5NuPNZcbDVzGZ@xVBRin}MZ?q3YL}Vmm!Gq_6(hsbI|rHlhRN}SwLUwOiV?VE zw{@;kQOS!%;41%W4QbBT4!6nQBJs1he_rYw{QAU^L$c>WHPzDWOq{A4b&gZ2ugJIm zHW%)Czb7aqx`9juxCJMroA(Ey5$};> zV=I--_qoDt`h6_)vIHk3y=)AD-qDmxp%?|ewI!d>Ft~Tk(YWh`Z|?Zs?jm=*Ozcg* zJ)Y@}_;{9Se^9CYr5^NZ3pu@6g>RKmKwhZ7r`0{wNp9{8{n56+V((Fx0ckYPZ2UZ$n9QtHs7Zh&$(P@ZVQyh5U)ck?WPO=7Dxe z`JM@Rzjfe)KznMf8RL;~EuT1@7*oI1ZnbsZYX7~J-a-w3cs{?meq#KC=9*&Zq#OiE%TW{WJGy)aeoKq@1*qLdElPm7{0leF zam2^aPu>xqSl$sIC+|P-K@QU6_Lm&wCG2mvx{k28`ibX`xEOkx3x^tjPm-5#^8;0e zBGdk2WcxJJ0%iD%51>zN78UXORbm@ZKhcUyas?w@B4-35N9WhO4p>v@#Bw*ZPA03l>`I9@_vt9j%h1z^D9-C zag84&8Hgl_X@YQMQAdI#-uSS9@ zLI=IAR!xTMx^#s&2l?6>hlX`#O^oVtoz!F99m6sM>*cteXkhb~fde1qwPW$39My-T zfAN}Z?U4@(eQ#~v9rQo(!;Ap#;n$O-&%P!7k+YF{3=Q{XjQfz<0XLbXp8pU91)}R3 zMl}5`s|BC*C|Q#&D29jn?&I2<+AJO#Y9+rjtZ3!5zcBQ@G!SKmbRZx6D&2r3km*(b zd^rm)aoy>3w=E+PhWAneeQ0UM}r5i|=O!!xLz) zFa7gwGwrqbY1->Yj+J31mF)o1Wckyz42Zi_K2W!s(C`|DQI0^GvH|8-X@5A-C!h8z z1reuQ2qm#5`?K3*d)3=e3GQf{o2iVR&+Z^4%X+m?{vtlY+nLFGnS)nnAS!g_{YyKe zeL7LnVtrVndifeHLI_vnDLQkw*W}f(CETWzi`sClh@D;x!-`)=-R-?rF#Shk{Sk|c z0Os5=98q9zrij8S-7jSc!R!s=EAskGrF{qS zqSGJwl3=sUoI8TeIxookBN%Le=G}n( zOYV>I$y67?VO_$I_GRUCtatMub+M`ZFW4J^NQ`J zb1K*-?7LsYm+P%sCb^7O_z^Yo2Q5KqH*-M{^N>a8&x|3vVdR_M;Wh>JQn zLF&jJsNbEA+;O7#3SX&iMoQ~+;=~@@TkG?94=!NZv5Em?-HU_ez5ew|XJ4Rke^KY7 zAVb8b1>{njI3D^guUx!385iFPiQ|ea)A~=8e0X#fivCUd`~?&vdzo8p<+thgvMa`L z(Ld)TVWEb;Aj5tJAwpz(R?^WH1^Nuhn0|pi3nAVX#{SSAv(aB}d!YFjK}RJ@MZ&vz zMKqzj?Js+SUt(YL!jso!8d7J`97{}d>{FZY7~sG^Ul!fk(dgB&MQ&5v^Qdl$W8ctC zaWWS*O?N#Et?2u`s+O*C=*rZ!0j-dY5;ky~})&X?SNbDV7%=ARb3^Ao4=9>7%UU<5Q`sCG}y_G&~@{U0Dd1Q=XfVbKv8gc5emJepl}S zFQy~$BfNZwDqCYXq;5uPBA;t(|FwEnM-@fR2F*w2%B0;|Gu_znD$QFxAW1wEpJ{9= zoR+ng90)e7d{76;ROO|y{6eA*KNz)8>OtxZ^czZ1&Qkz!ly1%{K|Qs26W?G?L)OL9 z)*o|_>MfTkDb<+*Y*|JZ2ww{SMz`fKxy(Q)mrf>MRt4~od|6e$AZk_}piH|tFQDxD zm^x_wu2VaytY+<kR8jq0v6Xw2mV@8!=09;nCk& zRT~9nn}+F>#|hEe2|c9Fy4w^7IJY#)BL(Gy0{&ba<;+BsVlUN9fw?^n^V;78mn*Z& zW%f>u5|~0$tT2HCi*BJ2rM836Yp>{6Ol_%^+q`htr`pP^o#W_#nw(H8I*m{L1X*?y zgC4A^O2ZVva;YJ!waq(j)nr^&RmwY6s0-Tqm0PsvJ7V*1pgGyufBPQbbX#XONtB=T zf(F`pB3yA=z)GZ*F=n5#q}(x->vUqZNqlGFx$|Y#an1weKAmPxrxJWycXoz)S_3jC z6n{Z_OoV;rv2V(Q=8*aaj&tNxhlaI4$C|_WHtSmGa++CYB-JbA?X^rECSw`_CYvqL z(ji_>Dd2h*A~M4%a8zP}n#4<;XXhq9ll~j&<2*Yt@fj?q60DJd2Sm)bzzYs(e;k4w zW@*9tm6x2F=y}s`$lJ0N2!gN5Pt{7AVEZQ;3a~z@!Gw1EJp*>EfQh}8>2YB*sw?)T z*20_2r1K7RiJ2My1VTBPjKJDG3!W*uxCi-&2DL zFYGJ>cCCP=B6RtU$%J-GBJ|!#iG)fgwBP0*Se22Q0_lhL;|9zgo3cLA^&&Te>aEl; zB9f8IfO#x6j5K!S97l3?YNyrFIJ@=drXzoHp1qa$j9DU|dW$MLLL>ZDOUT=A5eD2r z`V-wiaV=-LmwZRHKl!Uj50O@rS|D6MbIs?vo)n-fN4VPD+rjTfsG(Cx=aViWeFcsa zxPK<8kaPoSHuppu-a&ea)C!O1EYfA9B_#P?q7RFfMUwU5SCeAnm2Uhpl3`1AXo7Yj z{I|bA<7-_t8KI5YI{BV}Gh=DSuk9CkL4RdHe+)F~VeqfI2s}{Yo5a2odJ{gg41`L*4cGgfP~$Lp2Kl2kQu{={t)8V>vyF?x znlcc}cLC4UY|p2vF}72~uf~`@U{o z!ev;}w?z|?+3jJMygI?Wnh{}S??yAK8#{@}9?C-~?E|GU^aO)U#2Nd_X!%U3GoD#Y ztEEwAv)+fVj6RO!j<0x#e5c}cH#Sz-%8rgvvHnu zEiiHpn(PV6<+prCC&2ILxw`2R?$`I*z1ItPNiv@79Y4jN{MhUt;&Z#=fv+O&5f8kp zZo^N#E}iqS=lMXmp9PTBXb%DtUzdd}>`G_<28vW<=ZL4%A1@kUbbGiCyR$)r3~IOQhcR2)*EOSwwUNu#{{U_ zt?t|0tk^U6#hqcCK)cnpoFGXY00%C`fgG60N8dAzM=f;_kD7*dR&KoptdPmr6!P(P zsjh(|_2m$vnRTp}S%CdC+6cUMqQnm3Q`@7!#Iv&v6C4ynL7{!=(P#yY>lGo+vmS6! zJ-9T1;-3%aE%_WuxDbDCN>wm?E$kR3zI0`fis4Id2#@VdRES3Rz4OH-JvT2j zAw4ftERJ*~^%qAP$9hO+&VmBq4YS0PwqF&0FMJ~Os`&&$vG&(Kw7rn05Wt68AV4O3 z)K3OKi+Z`E`6%AAT^vW#KLHK8!e?I?e>!iTuvq*AX#<$yv(GYxNG<)Zj-`2|I!xS$ z0ClPY*>1DZ7CwD6fA2^?VdoN_{H`Gg35g7V+Ee3dCPc~1?E0t zixVg-n#X3y`e}8ac%)RIJPwa+_#)jsZmjO13-H%tANmkK*5!@k55EFA4)ewNuwMmD zGLAvuuw^k4Y)LJjhG6##EmlHNnl|?fEnO2HQTO;4T8>V5gdDhEXkm4ce4&N!`aB3R z4u?cq)Q`O4R6sl<`)61UomXB|w>ffFXz7#h{s7UxUI?Moe!xJS1cYNAC;@3_%U8_r zz4p3f3sEhUp}~fRPdZE5CYSuM&`Ia!tdKg|7Z{}LFRYI+sj8i6AfBohLU)ZrfI)g0 z5Ge`!kZpyDrfYB#Vb5RT5~e%Pvj%CmdW+Q^=yn6qs$K}~*G`10??%>FGwssKWY_!k zKGxps=}zA`2EvffoE4&qBF8#+e<%FVcg2G>O)tm#{tB=(i|Bb_pR)B0`8r)&@7%?y zz8?6TGx1Rixi-dM?M}Ln{L7@>q$c8r!_qg`p-fjFI&b1@g*4WdYq#$Vm=~mKc z;70OnB55J%1=7#p5AjS!4c;T2hTR@S8c&kxm(NMRkxs;hpHCV|^3MMz*=v@{9PrQk znKokF4BJg*)mL+HG0fojAsorL0k84eB!_WpfpEJ!BWU(hf+{??)~x>1>R}RbhW&T$ zI|lr2UWpm-1yel++&@B))nmN(@Jf7GtVt&s6?0tBJ?au>qybf37Ak(KKt_c)3rCn?e~6Tzx(slsi?8vQX}m5+kiT? ziP`V{%V`dueMB6gKcP6Se!fG0I`a8F@eep$`@KttLyrC4zg*kzRY22r+b4VN_Xhwb z+V2Qp-nQ!=Y@qEt_PbaYX&jdQ%eDQ^6I8~2|4u|xB?X?I#Sx&P(C$#av8nUs}qX58vjh?nDBJSO~Bh!qo_7uw@kaoH&kd1>_)E)~`%R02^QsILN2 zWxI*Nu>y#c&Bi*}VtRp9bYKv7LBc!VuF%Vnc%@qpg^K+-@e6lI;f_*KnU8DVw1a&29XL#e`uHrg22w*{`Ml3XWHu| z(R!}=kj1Bg*#5T(9?N^*5YZKE#KUSLtno3Q5{VUw`9!Ik$eHb#G9|UgOiA5zv3}8v z+j4j?p9nF=cYmIqnbKbhiP_&Kfi#ZEkkb*kFB23o`-&fXFQg+70stNpCgI$3ju#@f=y)e@Rd05Gvru+Y%fb$q|vWeje zk7AQo)pI!Lde7UQ1n@5*E_u(}$OZ~kFM>aE9i*M!5L5^#O{cTxZLlHr{+N6xS4V49 zb&()HHktH&_|gtCt@eI_Tgfo*0%Lz{lto2uDyHdD>}L(wq|{(qGu~>zE)Xzxpxltn zh<>KgjCV8Uss$*f8JkLMtB-88NGx0_b2qNA$d0S7Ed|M%VW@<69?j5PQ@%Sv zb)B8MWUuOKof^!mx^@p}fWTgL2z*u?@_GpLs;+wkWxZmjHMD!3zE)i`bUxWttM~!k6-GBbL6WOC9Uw1fpS{TSORh(ttIj0NC&@gQD= z)ld=>U&>pA?h?1Gyy=2# z0JHp4E64k%RSp{OzlC!HRt>;TsnhziC+3X-qUFkd9pJyc2REewtg_YFEE|@!0ap3H z^mz_?GzKScquM-78vb(55GZe&D-fJN(AnU7I3F)lW7;h^WxlDbGFt$80BpH*@H@-- zys4c3E@R3b&oj z4xTMN9{VHvE0{?*C^ItQY-gp|p!iC$cN1*>mjFv9Ye$6pc0whow&Yp7-`>=~sHb9s`93h$Ur{~o zX*(h5)YM>FJ+(8~hBQRy{g)-v*)oaFX?VLHI<=NsPaDIi@6Jz2r;a=yHDK#fgK0%| z6Q~|f4Wkv+7+`Kr4I_#wa<;P!VkO~IFx1CktR7iD!FlvV!Xv#v;z{x5Whd_CIeHWA z1L&u%q$sH)dT9dfsCq#2|KNUxK&kYeiAFBBP&+DI~w#S&piqBE!QfjTie?r#R*1_AJR1G3;U*6TK0n(Phqh0b8%#2&-KC;b_LP>&M_ zF@Vzjb^JV^-N)eUP+y_i5%`k2x)+@u2%p5ktkr5JVGqMS zubZhE_wG37Zft61KLfp2N`2UFk+{lZe8oQc(2?|;?xc~VCrNLSc9YIW-cXX!8%WZZ zmXO{d)tMg=dtoA#vk-*%%t)Upv6+!Caci|Sp6ZoGOcFJ<&WW*+2|Y&~x0`nTb3M;; zWVJgVb1@Jt>xIw)>C73bUNJL(#Opc3xEVNibh3JV4pPMoFlQ*LUmZmrf$Ws?hL%WY z&hQ?PI&B{#I_C{7lFpprb@f7MnRMn1M>Is(!xtwLc61V9vxs~QVOl690EC;ro?Rbd zS}Jch5L@eo&|)d$jLYhMtmRVX4F6g0V$PmruHh^dMV0^2#7pT7Om@mSt+)C^K~OEy|=By7lS zecxV~Oy89fp4FvKi>osPG%R(&BC|S<>XaHrORWq6HBJqqMOTJ^s(Ys7g^r{8K(1F5 z*;BU*Sv&=~%Oy=Ftt81BuvW<26{K59Pm?y1V&lzmeK>%|jqAfRCdTyPM?^Dmf$W$h zkmsZ%w0?m+r(awkf9;X7k~Fo?b_8;BYA~-rJ`Y&R20w_W<&Gd37rK~g)zjcwaXJEd zS?Yqd_H+dDtkhs$fo#LeznDPYpBg46kkeDc!~}A9Y8Wk$ z|At(zK#s5Y0(m?Y`5R17QdUI_J(dSF!aH46RQ70sLtnju$5!*KG+c* z65oZ-Qp!IW1n&1=Mjgwa)PcL%gCTp%j)kgV=;|yM(n<8rKWt~aI%{Ga;s=5zf#@L* zd&@uIzC6p4e@047zFrR@5U&r)8p9FnCM1^0VF`)9bPA)w+JQIx9guI&;6&;A;QQ2t*XJ7@42I7UB2MHvF-0(Rmg)ft9pmWZ8N_{r zW%z4s?+^Js=O^j2B`i6pYJe4LtbPgV*R)&b9eRnKS2TZr$*{SH4k5YI{c~U$8pT zRR4-r%9#LW|LWXB0x+}x++TGWP1X%b_fh7+13TvK76hSvt7}@U-qWbXI!iX**YvVl z?6a2fK>ng~tcx5hGIw30TB*pn9yDq7)<=$&;4FmIc7Nz>Tvpkr?3XnE;MGEqK2KrJ zgysWyF;@SwLye{%SGMku=lcQWO&F7E&i1*blqr8ct9^58_3r+b5P5F=yaNVV?tZN! z$7_4=xiTNpZO9jn*!4EvtcN@#-pni0Nr+?m@Zq1LD zaCmGpdZ~plsF{Q*5!gu2mGjt!k$AAxVNOh5Ew&cPtIhK5^LWEsyyjm@{Kp?2evuEs zfp08l1F(8^a5@|JOHPwR-&unz=e?SBoj0eeHN+>lq3T7h5w@XMmUK;mcubyj6kXOG z*7A_$Q>+PX7U0l1sjZVAF89o28XFt*AP)SKkr=73k~m02&ode+`o+q$A%Y3&fcpIZjmiEQBL=p9Yb3q06F$ z&G-tkl#9GZqqm5>W@vdOgS@i3g2lh+q7Uro+m?3r0gGDmtCkDAf6xbIzaBC|JmO7{ z=8V_DkzdfwJQ0bMGLYX4k>AcJ%d|?1<;7ZpeZDy!3HHDyC`rM`xfl;EkZs(??CTxz z*!q}!c?HVAx1OTmja#6r;ld-|kG-5E-;RDUua1-|&Gj>gTR5n`KO^>5i%{9kD=w%TIjk_LIT_*@WF%MitR&?VZk)``c5(|7r68`G`s&-Qn?3g)BvtmpVE36IE;p&YE3v!^QGF63r~j1j(1+D!U}^gYR|-%S5c4vz;r z^xdfGdnJj!MOlVE6Oo$n8Gh?g{mAtY5C{!W55OvOQ@23m3Uj~CD*0jwZRmIt;_$-! zNH_W|?v9*+iMHOM3UTaXi{$SDIJRomtStT;B*zA{v_`35Bqw@3=`PYrlJFqj+v4M; zGFEDatKOyLczD+LaxoM%{C?Go0;RzWLtai|$OG*UgCVz3fx}_Q6%y#ckW1q5^)lol zVuct(W&@nWkef9_oe@6GkV~llOw!*-t4JS_Qt{&xV-lRP<8wfd3T@+AVI*y`3C})~ zMd!W$G?xLg;Y3SBCPsiRL+AZjSHwA+)Y0{G;9$aeR|i>0U2+M$*P5hSRpOTzZmDHd z)D&(6!s&|_xrLwL6mIUD!cDVL_$&%{&8jgp@fu5i%(pKCecV4x)`zkA%I+YFzpC}8 zoRiiAQ)9xMzqgZ;;$hCr67L*dI?8kH2vEperWJ0wZw^YC`9;ac=kfUVK-2q~taYJ2 ztQU&O%V1WziC-l46=}($7CL?@TiXM>8Po4^{me%w5>9#;7T3;~!b(=&&b&%@_b#~o zUd_BL(`{T92{Vgojw9f=Xy&$*8#x8V8VL2x!uPGoDQAW@=fFof?bZg;epA~(&G|2} z(L8h5gCJ6O|Cv|6KzeFp(vw_(QQogeOD}h{?mb;)iDlm`0zW8Nt`+q?0`Lz9V0t2e z3^l0f0NAC7y8|;k5k~9o;R3^m73QB!-A%I0rtX`v($%{V>J%sJR#^fm3wQ8YYOw7& z{Je$~CcQ`!J>$khM&IuTgD^N#Gx%a@GuQOR_4UgDIZ7O+3_O)OHRs1Rkt>-)t;ZTT znD< zs$P0J{Biaoo#aq&w7B)y4JyA7ocCaS6r+4GI_(HMF8ZjV40i zMiZneh)Xn8L8_uu2*fH1Mv&|6t<)+~Tl+y<5L>P2=fk2c7(_|5T5&_9Du{}6jSFso z8~6J>XWo0Zo6qC>`2F+y>f@64yyv{noO#WenKRp&V}cEsHhAt{<_AJiQl2ta)t#(! zLQztT(jsEB`e%`{A#s{rExaqqYNVg&14b9{o561ZzyIbZeWtVzZvSZe2U(x>`-ekW zC9(~T$t4xtyDr#iA!4_%Q_^T}TM@8)mW43c3ykw}Q6c z^lN>ngQTg}iN7oquhrpli67_0pAm}JsxVCAiy}a-8yE)iFd^cefKV^JsvwFkbz~2) zJcb`|Y5yZ@M=SUR@eNPUOIor!^k{CnIvY$*JhT}m`4$tJpnJ$b)2UD`ZLX&dm2F3^ z5yGg%do`1|+4$RzvE-nS)FZ!-IurxLN?~#%0?$6g3fy9!^Z~>waN5y{=2TYTe+Z!` zu%$8=9tCS>py&>rL@wK(R;BJBLw@_;YJYYqyd(XY%th6GQp8Bm_GtA7ACdJBJ8Spd z>C^Fm z?J8r(^T`68*?(9lra>%X_~p$nsT z+n?`|&t<+xc`{xeDC6Zb?0ipwjFx-S)G%6JHxjp54I}d*m%n+=U&kA|oeK(ZVI(c` zCc0-YKf9o=zGvOHJ#=2tuQNLT60Ki#yL(o zO@ryh7;{qD+a9V7a<;B7qHj4nLhwa;IQi zt`*|mL1w*XDHnXc@)r+*)IkJf44%%t4z@I=>D)_rD78uRN78ol8@1ncKB!F%_6y6! zhc?a%hfWJjD6ZLp{YgKDev2@}5N1=n1sUutke6d`KB!;qK$@Z+fhiwcqQ87e?Z>w7jf9iZCW)NAG~`B_t6kpNRhGH>on=<=)GbM~vXgJEK%;6R+n7e zadk;2FK54c!-4BY=A*3qD~jJU{qI;O=D(&hQG`CF9*pRdwPykikv4edl`^lXYYlBH zpWFV%X>SLe*m8TT{iQQqZ5vec%S`#VBHv)XcbY<{`7?hX;x=;b6k@Qw@+Y6o>;Pd9 zaCiQBIBOQb?9J!>K!En>Ct9fSMp^%0ec{Ae?@2^YXF__`w-T~#RA?c@FHq$_Yq!u% zA3W|I)_a zA^dx_5PyMpT8JMQ`2Nur;`g=j_X+=G3-RApX#O?*NiD>`XXEwz z$`<0E55ynaLj2DSe)ido>l$}Y}{owE-l}0;5n3j zv86f9((EtkKjD7g*Tx-T<92HPqu+P6G`rb3FXbiaU+;dOI#aRPYU7R~E;Tm#{Y#c+ zwWT>mzL%Z%D*xj)?m-)uE#LQ!et(apInC1CF5iFoqx1a@Htq-;ceQ-Kfw)lqt1Qj# z?^XW&<@+bx?@MjmRvWid@S7j~zQ3heZE4c-{q^qmJ#E~BHtu~%U%Zfo(*LwvF}m5( zd?on*#Qpvi8z&ym!1hf^zjyTeWtQeoHjj0~B>y}se!sVIx7xTXiA!zZ*-u~Xb-mvT zCoVhmMsPgIasj5lS^$jhK^g|VF9H`s+Lo9jy54yN-_P{Z*Y$>3L*}eCa zyb0N#*AL#ozt6{JKc7AORz6ET$Um`x%z(O4e)i{mm3`fLJM$-GH?8Ms_|8I}7&Bg1 zv9pAKFWxztf3MhC&D;0*Z6$Qx&dEHz#!tSuZRbpw6L^-uuXoO~ffr(R>sU6a|Dk3f zQcUe1OTsy}^DV|Fkd59B{WCn|@E6kh{8)NT%{BsS*geuXiibwVuQxZA4_!aCS8T80 zZ$j`4fts)Ecp->ScLyKo`F(tLfzK|BPv-zWdH*|nR(SZV@bFoo_^eQTR)p|b5yEFh z5T6wReDcHitmq&<*^}3NXc4=)UU1rbui^K)Fnx_d;*WQV_Z^{i{mWfipU+~aa%#l4 zZhfRL`L;~sU$yadvd?mW7azJ`mcx;9~8WnnK_lPa@E zZ<+vCV)3HwP=q5W; z0z+pn9(iH-awMmp=YWh|2b!}7U}fJp&y zWGw4A;&x54W>30&#`G!ZPDgOtwuuSR2N86-vsyU0_&|1B4*^(w7<(&1mYbZy{GDa> z&k(CuflHT&FQCm-p1U9m@+@qN=Q(^8OB^E}$#h~Oejcc)@0Pv$*;y0TC2-ynQ(v~? zxus8$Sip+x{6aRWOG1P)a>D)^S928{pa>_74>P(#WL}0J@t^1Z2H1-(l z`h=tQ@0wbhNO}Ac_SYzw>bvCupUpD|1lcfaoRzBcV|$z=LbAn7zm*y6)OeeS>wC>+ zh%NoSlvMMB)Na{PE?KFc_zcetB_{)p)B%wNsc)PI_Z@6_36=%uety0lgtDrd?$ShuQmGQl(D9ITr!WRCwwr^5SQTs}Nfb_Ls}&F%`m z02!r4izN;{MoQ^v04$FmdYmJ-WI5#=tUI-J0VMnG!Mfbm$+XTm2kSoT+=iUR&E$L> zxq@;Y7?xA3Rs&Li=iS1&#r95*|E3mNvPrFz=|*8WSXbUUjcyc{gLVB|r_qxaCpa2C z9;4M)Gd+I6W#_8wXNIEoMm}>E`E!(Az%{4Xuy>K?x6VbL5xejUdgqg{$n)u$#V4`& zW*I|x3ctnt#C7)&_A|+O<2Zk}^BaNHy$@mW?e-GSU+~)-OJ4jXoWXBjXmWU0z)#$f zU(4@d_=>O9$^7KZ-xvJy82y~i@Av$~FY5>VdN3j!#BZdG3Hro%llgv2j$DU{g4;ldCJ#is*Xkfwq1QZ?1P{KJhtOevWEO&ifCK z%DHbu&gs2Eat72YFIL&_W^kjZ_^IOT!?oGIj+MSgp z`o8gG)%U4;T)@t;;xjIjdNJhtpL65OI?|8DyRLvh)O|QQO#Kn^@}}5?JL|!|Jg;U^V+yO(foR1|&`FKoovA2zg@2t(R(jOz@`z^H=>;LVx~B z_m9@yl9x4=#fHu1(LQ2gvy0RlZ?IPF9bfOl>cQIV<@L!}&Q5N(jCJn5)~+Y81kh|H z%;qmJwd(D!5lqv}yASd=F_XTxi8=R)5y4`hkKU)`cu_hFMNBJiZs+p?fFle9%q9xqaPUJ!Z2mJ7*qt}Jaamw>KZ z1o&Tx%j*vq3aP5do6b!i`XAW!2lERExa-Wl&(2K0L#B58@JW&Im67o6>;??bSEV+v z=w!=R@>iAG!8V>?c-jZy@EmSl3C1sfF&thT3D1v&r$xdOBH^)w=jnef%>TSt9)Hu> znU|KC!JE;L>liE7um9%D^(*XZHx*a5KlrkFzx{Uhn^(Cr`Jrsoy5nBH$}dY>=p z#%#`W=Dn^mt7Dp$XQ&^eG+n8%kM{NQ8LS(&Viei5gZnptd_SA^6w-Dp?9WL*3i*S6 z`xMmIaQ+Lt{QGjyZDQcL`7dcX|9nWXfBuk@e@0#{<=^@%^P321R4C@NHCf62-}Alf zb4gyLy%K*Z&D*Q}ZPHUo+RgrDI`GS^y$b2ux}&`O2L%c0+vt|_&xex##pv4y48vN{ zx7PBn$!h)&ZzKQXTF$>sdMZhK`PYHq|0e$fy!;0R3Fg1L<^1!ZmMds5hDG=URH!_5W&UaLL`Y+gBJUT7TZS@b9sLkk6d4_V7*Mw zo7^HEH}fHQZ2pTc%u9^Q+)nE6eh(6D|NP3~N{$@IsT`sp$vz%FK{;&uP}`z{eA!QB zIX56nDYCfiU70dz9~Q&PwvSzXIl}G3%og#u*2?hmpKbfFh9RBPK9HwWo$fzq!M;IX z#1ktM_Y9C7bNIk-Kap7msA4gyy&k2P_VwJ+cnjnRiMjw9xr^a& ziAY+v2BF{E9vk>CBvygG!|jcndK1Zan;#huAenIvz&ZVg_#=|Tc+Sa-9!O(7#qPtC z)dQ9YWG_-`Z;{k9@T2{Y+&<#6;wtfLcX1VXiRtoVUyyBJYP*MJE4QiGnQwM?CTdH} z)*po8S(ycwxdL4Gvkg<6E2qaG{1$|l3$?|suANFKO>+`7+4XQx0&f~^>?yB*_QiAX zlRc)1OId7?{hNrzR!)X$XCQ?9J({%1qvq}~o`av;{Vq}bqv3YTOYr?(Zbj!P88@KD z(6n^!mzNJ9T?%HCZt`-*FRBlLL0?PZ_R_N{6{U0UB#EG~4j$}Ns!I32ipW6u2jr7o zU+LU)T9wa!f3){~Fp2+-yiz_ve2UPqbndIn3uK5-YJ@kRCh6NV!Y2Wfta}8dv-u6~ zC)-=TjOequmx;f?c+Kv`mZ8K3^NGx>dB@!j{=OxB3EDrLEfRlNPZuDG`Tko`^X?V# z$!K*oqZ39>RVc-{{EFn{yo%(+d{M|(z7vJq&JwxV2SMc36TI^D{mb_Cy>!gEqfxEI z;T6d#==~J-JhDJ^V~-`BrtVppIMECs7fn6P;rtW@$1k-$;FEPyeIxmf}KNcC&WPrVwKB@1pS?4Y!wmX`(VK&R$4&|7Vo{ z|L5{V>enucoqZroe03cE3T&wUEIs{&epvD+HJ3fwySO1u=e?ekt)i)oJJB5-AM1WF zA(`&D&`cAh^VRDe=N!9EpUy3?oam^lFOj9@vcasWzgLkQmZ!7MDCOWC=3l$|G6gQ; zs)EYie1CiwOPoW)E{Bb?I5zCpW*7e$dy7Rz7OZArjB_ zb@#}8i}6(AHse_i4#(p$nQeMmRjG1;&1;MlKR<6Jh2%};p$sg2E~qr4FDI||AT_rV zZIK~CEPeuu^s+V`$1P_}2Di_c?xY2nd4am+l;>A5aW(>+@y!;D;F)->|EcAyium?Q zRcdi0JU;FF5Pke>VjV+OxwfFvE?$n`F23oz>bBu}|j3AZo5fg7G=-1)~? zU3!lxdyr^+XI1J`B7GfD{a8uebPvMZ()F)7B4DV#)D_~ zME;-aCnEniK0*Eq_~Xcrn|+z~4#=>|;lm$^-Py?O0xHSDmHF&@*eX`|C1pN&~h zkC)E<#f5UHK+NJWo0P1&gz*aC{Y$t;@DBF(2=KLb>g?9rGgkM#C-6riL{wlId?aSD z3*<+YxUVbmw#xV?zQjMe60eXYM3Hz~L}GtGD;oLU^uT^=sjp7^)h$-HYY(|xDCqv9 ziLji&=p2)y5(~c)E5L1?T>XvJoo@AwvkO(J$|txvxBl+zQ7t>65&Stzz~|Es#Bq`EbocxBOS3ABDkc?UW~wedXT(XoUQ z1jLSatiB|Rv+`MszUU&Pu}6Um(LLQklPa{LjPTaiGJa zB2iidkKxW4YWAE-k(37eZ1nf>nuz{ZMfNLKrRI=fzda;A67CiWhxc1I|9%31`2B%b zpYbX-7rYqN&Wpus8e{Pp>%Yw2x2&GofP?IR22;Gr+%eDg#4x8IbIHKQ2(+vyJXtN|$yM@|ss2PUfc<7O;d33d zm<3yTm*}(VJYilnlYZryKJ;XX+`3bElNfRhf6PfTiNgs?C!$@hDlmNQjd| zMhHP7_w->9@5!^w%aBMX5{V^e%p@Z~OLwCi4-=Iu%i}Lqa0!~ZX`4vFBmpMmCiW=P z(7#uam^9Cv{h>xMv#>Nhrk*x|C(5I2q1vsR2~m<|a|y|?E7>HOSS3K2S)WOop}8Et z#@PC-M;j9(3iNnmd?bH4s5FM}yz%xe1y!jcUf|CvS^W5+0?3fdP8L9NujWrm`hTm> z#6KYM$suR(j`&l~=+OG~ZJ#1;;Cux$A6>@@Lx0Wld%FSj?JYvNS$2)oiGs>nxh#No z9SC{T>$W=B^|vvj(atZ=*FrMAKY*CpUs~nb$H6wFrS{6t#%wuPYFq=s)k2sY@-%;#a5fDP>J4$lV_;@JP9a2c#sZx* zk{M~%z3Od~xZeCiGLz`qg)|b)@&0+B7YeFty?A%ad@`)kHnjga0z4k z!+V50Ib=S67+jfuL#H$T#TUcUd_mqQ_=RYf_JvnZJ#lj$bNT3B zNe@6@2}Ai?FQ%DUpe0eYltW3`w_SwMONOXS>S%D$J1l2kJkaMTt|oBOqm zTs2NI`&*!-DyMVLBwHjbMQS#DvzvQ*))rI@ty!8qTkidk!(-^p>@2>KzoH{RnL`jL zrS7aZKL~E&)-ii8-xLV7kK!L`hq#2}{Lw@juzZ-<25hFH4TlrmdD>h%zP3H?zQpsfz6bY5D1toK8>tVwT4gg^0?!T7R#d`0!pAfJiKMH7<&oZ zfo%eB$dDI}qzNDTifx0~lD>sLMM@*aHY%pnb*I#qGEJN;es2PLTj=R+qf%PEO^m0( zsD?KyTsj^dRzUB!eS~Q7=cRHu9EWE7`w{=b=}N25bXN7|A3I&04q%mP!WQxHqVAxV zj5_ayA=73kwf>v0{}!0l5c`6WqC&we01}G*8Opz|L`I8vd_GJI%ylrL_?TZp`)@=G zH%sSz5Izn4QWh^h(4dKxan3HBUl=K6U$;E@Dd?BRYke3+#;a1hBIWJnZ$()&e|}fs zXX`P#cPg*HKH}w%`rCSaI)`oAE!U@_i0b%Ru=UC3kMgXyzN*CYU$XcxvgM0tmWc%{ zt$Q_1SuN@?IUgH4HC)tyqUV?(Y9NONO<(fB_kss)42rPcJn@aI2!X}^)KxDYHN6uw1WrrxAF?DzhYTeHJeY?^zC_X%+QUoIGD*I zvEK;G;g7j$_d4x9btf^Tp6L)G=3vv*2qN8Sg}Q>II;7=WjjznGOTDe)x&` zno~oPKA0`y)x5nq_>~shn^**-mfD-qR$pFnHyDe`oWiyOzp|QJ>Af+3L}jc|Q=3mK zQb5&9=PqSx1U%BY59x#02j-?UJ$16UKfqHrRdH_kN(9^)mM8Tvd5x|&=>EA@+V^1F ze$@J4jhEfd+Nf`=jDJD9KAMyQZB?K*ap!}Qy=KVfhGf@2wXPqo|1La*(Z5Yr*WLvbhYa*}+Gulh; z1yk@s+*}L(41B>1H}4Nx>+gg5a3FqC{2m~x57q7JgSAK2AgwHbV~_k@PO$7N;dbp2 zbfaE$gz-LGjop3vwgdA=6Re4ulQ7rij5@ndEOgcRT9xRK%i|*pvE(m3-GNYi(v_xP zmpsYvQTpMZZWsKpf`hu9x}4(p-{BXvmtNxtLWL|;w`wm<45!VK=J2d=c{%NgZ1A>Y z&+A{%4o8~Pqu!L;o*7CBQQ|{+(6CCWE%0N7bPE=mIIM2?ju)Tq;k#9O{X|Wg(vNaz4S5VWoiZK%Z zqB6bX_kBan_&{o-bfXrmuwZONJv z$C}CW*#@h^VR;tdgx0ogL3!rSl=2CS6lrf9dlxI$*`|f9Te;3tnXg}$N40fTXA%>0 zWa%}&iFOqz%@{%Evc>!WAmb7_VA1OZ3q04RY?J&Q1-i3?h6B#(E3T-J( z-)%3hjX>rZSFP7KZFPPCyqxDGZI&Gy%!=1k3}>7m`C~iE=p2Yr@1YA&+@ln9?SwX% z|Ncxn?wc+Sp;rfuXE9E+79(>5y989*zPsk(@0wiX0y>yl3!$%E(f&TFUy9!yTB?AO zHn-?w6u*Iut>P#COrk2+96##gkB4Y|Tz*lYK7N5BgvXmv`OIeuS+qVbXmAAz>A!df zhzg_psgL7H*c)FK9o~`g<=@7O&9&5Ax=PO+d4!8f$X;C{f3c>dO-lZ0hK)XQ;?6((;HyjI6 zCS}LJyIcJutTT@`N;Vrz_w||{?V8laTy`H&!Irb(Bml`bFFTM(*C^vRu^^a^I_e~W zWT*MLK$a|){lh?FvW&vvdYMX{NOY)uZ!`Z|M9uoYXIstx%2xBw1bQx!j0c&r4Ymeu ze>_(9%LWa)5hTN~NEKWfuF~}Uddr^1MGx);$JZYJ>`eJ@Tic9(V+Q;m>y)AVbDHyC z-xmMeZ_W?22L*?8q<$W(X*FvPHhSrK8}t44z$uT-&}38|%b#h6*A|a|3+0hp8O+bP zgFBL+Gc~Pd`7vI4E#;?-*s7H5FK#hE?tZtDf6L^uoJlqBbHta*CL3T< z@-@x!zul9krTo{74V34&gF2LdO{-b{cX{bG%fHv&QlE=xa+h#GYAIuqmCSC`%fgLw z0FpJD;de~RDV_OYCz_xS{s|U|{$CxyZXb|XXO4WVV_(QPZH#o>5NCEEQB%(lr+{Sw(jUjLW(Km<77d>}u_T>4<0s%E zbMwnz^h%;9wW>6G`8U$2_u-kO#J_+{Z6+oyF(B|R`gVcG* z=<0XLj&+^n@~p8)7@SOYE(QE&U%?r=DCpPM*bFw9g2{$BdBbt z*`|4qPDIXo8kOQy8yQ?FYb6QU>B9aOmY+FRO=Bhrr)!p$rti&?eAYc13m%*C>^tiy zt|(T#8yKds(X=YnAM4DEck_1>qpOzkM}Pn6w?~P6K}Rps94DP8W=^m5J*ATT3Z(o> z67r`87+*2NfpRo3D!{oz_GR5nvy<_S78 zJS%A+7XKLf90HCnnOHo>eEHXv($cC}axiTg-{d_(_%V z>u{k~b^=#ocd1BRBfh>a?ut*AvZC_D-d)P$6&g6TGC8$tR(Ypq5vzU|Vm1BLF8a#^ z*UQICzxt7^Jr+FQS8gY$ISX)>u$@i7K`E&=`)JHQ(|@IYU!G-b=lOk!#hc0#gV_81 zxmgb~I3BZ&5AM*W2;E9ntK>g6p~_{LL)T8*uUwpwCGd_fx2KiIyEXN8I7pjyI5~rf z?^p~*CkvxQ8B4ZuZ4w^CwwXZ-V!PF>U8fl;A+iz9sR zX^U^2tWGE7no}tP(LQnrJd#a{mx)4-0#r(7D?m8EEOA9YnN%g4WgKUmmXd-#tUP`# zjR`;k2>4p}bS(Zk5S7iHP~ajdZe&u2ks0>}_)8f_TQ5)oow$-orMtM%j!ZT|)99z> zvXh0c)XUHZRJfONbX52$X%bS8dK@>Kb68*Z6GW1%)Nj0KC&9ApbbF4wTSu#?QQu9%hDLo=fV zJ#J%AZ$?3^ZtS)}rUiYfkOth?J+h(=1*!%JSB@rnP#*&IW0znpiRKLlgQuBVqMa-V zdQF!(5u)?d^%3X@*Ws!!yGregH=8p56BG(xc9E)Hx|Rm_a5w#{L+O)?EOQOHld49# zPtp8mrM`ntgvk%j&|Zk=7%EG3t4ggU-Za%sD^1FNURAhpZruB!I1u3K6F06Q6elt^ ze2255=7elmbX?iRzH6LXULkCwMr&}r{1t+ z&kC8-pgC=YOi|iaa{o8%h)sNVS&w$Ni;#Grr7hAzV<{k`{#3YWF;%0NKj_X%#X$7VEGX5_z3$s|`hI>#6E5dBhu|g4FnNYxQI6vQdi_E8v_KjIPe|(xE5}mIy|D%KW_2K#B`8`mqmglSN z`p9o7tymmiw8>s0SR%)+WZp{b$}D#3nBVo+uS2^xWd0*$Y~wsdI=+18G#ne{WP8Jf zOSRrvV>8{7vH7l z=8M(ZKyJjqEC-O0FG>eRCkfbCn2%`GKGQ3;ce+drJGXao{5oC_g>@+>tt4j60csVh zJ6!SX3%7S^$y9K$db(;f+#U1XQkbt85~ki2Gl%2K7_EmW+v9BmxZir|-`Cl|@3qLD zlPzD&ya&7&*Yb&aFBV^dXC=EFC4rpsPH)>W!>m;z=(>>2C`Oqert>^%IAXV};n*Fd zklaQ%NU_r38ji=Sq~~HCosUs8ET2`hd}}spekHp~EFDm44~T*Gk(V_Witajd4&o@N zHNwgT6|yHEbDKY5<=TvrThLofI}FViAy(aCrS{?kx)kNvE5dVpTRbn}D=uG)C9dWw zp35=z&QcSRz%bMU2!|)8U?2iV111fl@-jAXjmBW~J0Lv%XAk z4yUNSQXhvUbD@_K4Hws|@o1&K)RSLr!q3nQ3NrTZpiZ0yrP_nTS8DIzHQMhWhkkwKPR<%N>I0 z=D9Vl_R<#qWFX7@oQ%1}r>5ZNu+fv>{*Aj|tfU2405!0TX;ojXyzVuQ-;l1&rX;1J zxo(X&g`(6DbgyxIIus=WHoL|#28jcZD2!QX0nj?FR^V|YhM;>t(pq__ps5|e3)zQ% zYn4odPQ7f&Rzp@U&RgurRtiYg96dvDPuy(k0N67GZ${48<>Lw~6a5Zl^k_Z+#L9TT z!yVbR`MKUQ|9R^&2n4CKEZNDelWEoIXUX<&N7PGSh>H3eq6I}A8WvUSSObCp*Ydx% z3YXTkg_i8j*2&ZY6z|4Yw@#xLpm;YP**c9{fUbAr+c5-uZBql#^=^DkD9YM@W4 ztppd_7xcKQ8>T`4i8r_Z9>VS$h^@Apze~i<;};`*CBHxLdx~E^wqA%ZF zk?scTqxqG!W&gFcp7T=$C%T^V&R<g#`4+00f9J{WYG#wgU-B`0sY}$DH|xwRjAA(0JGDS={yddlN7`$h zfqB;qW_pKSr#!B$Hf_t`SDP-iZD%_7ghOR&P8&~caYn$p%MwwIXVth+lZS4SYReSy z{5@ron~H2lZZFB$>GG1oJNE8eI(KiZK;?tn-2cvqGU9I6&rEPVPxgm3v$y{ZW0^V+ z?~kZ`*abPXKAdL(4lI{D{w~0`>=`UT=5H}Eu(Lmx%`eGb^AumH4ZcX;dY;|SD6Y|% z`QOM6V!IV-aGFE!EH5tkZHvB;8;x>>GDbtB5dSIfJl{rC4hBNMu*nNnSma$l^N(?^bs){%r}nuyWVm`Ge zotx|A?rbU7Wbqsz6GK||@qR4ZPqZupnwL5lLX|H#Uc<6hPo2r)N8dxR^@qyTIJ-+W zOV#ZSsDsloWEo-RKP?s%mZ`@4fKYOa%4oHoCdgRBwVoWy=o!u0q0CCjMz>g?P{<(#P8;pA^V~vUhBF9BeMp~$cO_Pf%{6eXj1TH(hbWh=6`7v1 zfz+P`CmpXaK^+*cG%A41zg5JUzOJ~uRt7Dn%E+s{(`GwndC87-{4tAMM9zql<&Ds2 zrHdV{*a*o(Vrst}JH>s93Cq1K9aSTP?Le)6LzRFBE;%qSm{vZdYVq<**n7XsR!HOc{N|jtt$#xLaq+I zIyzqI($BqhWjDtm<>HmUyeg$Jh`};*e3kKQm<6^26eM*Rw$`ngD@=2NgDpt0zZ20 zD&CKFe3Cu@=gTbQ5OY3vf8?~8vAWk9W{zLu|y zwjb4KR%cn*m#{o1m*m`fe%%|K43~0FdH4-^MiT;=m_{zzI4qXP49_9G6 z|7xvV?9k;)iUzWyTPG8_Q~$DLorR1kHd&E#+ED*WmUA#AwL$a7E$d|56u6RQ5MjU{ z#Ufw#54q9Z|`mWY#bkK65qcg8ExCyAWowj!3WSkX< z(_zbUa_DG_z-tz}VLMe|=4*IM#615qW0fNqdwk2^KQXS5`Q}o>)%;bt3H)6$WH#g&ASGkoA`BS400sD)A@Y`kM6vaG0VC9Ch|-0E=JsS{NyIc?fed8 zjB*;k1^h4u((E@*cW10}48M{5n%Qga`3ir^TJ~8m>BVk%*+yHZutdiz$Nq_=y&dYI z{da}vRs;~oUS|NX?92W-UO7Pw>8|&JX;ljP$bL^5KVdyL#^V37mYJLi5(`?bo(6Nd z4lra7d+6+4z?P=H8x4_XlF63Yw0ZtvQ8&&ZIwsha^{xpP7+t0Ag{qzXr`JN#+@8+6 zUqM+O7e+ay|0Noys$YX*tp9#nU* z_4n_G%FC}WD_h&IB>R+#;$^R!(-lhDsA5jgN2=3}{z-z}=H2^Lb5@3TD-BOnzK$Ys zt-|?iyezS5R1{nu^Y&D``wvZ?aq;NnGc{1tV(rkyh`0N6FJ2#1E8-N z54fX>7RIa}$#5Y&X02YV6-~#id#n;J;W6t8#0QI;^Ho7`i`-H+4fiPTSYl$ZpwnXl z#r*XjC9O~~|2L+16H|apWXp<_I!_K1a(awxe!A*)hElV$5$^KXAf^nnnJU~zR!Q<@ zVy=S4q=NEJta)HXRCJOVlVk4{S=ftJyQ?yB9TX`2kiAstS4$hlfTIF~x{%?>?E09P z*79+lyG^SiET`DWdx@NOHw9}OjAPCZX(QXT&M%V11SG0Fp@LQUg34sS>=-*(dc=}l z_KYPi-V<~CEpA9Jip}~~_haoBOJMtzSR=3;-~LSpRwR&B_gY@rATv29VB}-X$_}gw zw!5&~;ZU|=9on52><*AES$oTK2^+t<+YMPGUjwQO_p!bTWJA_z%;RXk_?fwvJjmcv zTq7O$IMXCz@Q49Q8+D_`?UQ}`J;0;(@Cdoejp=?`gM|1 zcNC)eXO>a6L5XC#9*KGgBoA6P{}p1h3^qDUor#UB{PxO}-weJG6!BeADXLbj#eKGaJxIgO)7nA zR)FA5W($MKsjXe@5V#m*FBc~~n`MpdWAldnLh?yYL|3g605IOr0<7~QX{#08H9)YF z-d%D)ZK3XMHXmu&?!8hy(P8UrXbXDs?h`>hc^%U5uysEeXQVKfgMkZnjg`R5gAQ6R zBSClHRTcyi>&*GLweRW;9hq!4FY(v;L|geO@%;* zt?OYF*?3h47kAkD(eI>9X=#_DGi-IUJ13NwO6P67x+)YWHPqjDH7XP*LbkB+>J21v z@-0eajtyo*2d+Iy5eiupYhIP@p!IbMr*#sMIQ4jd#5S{Tn_yeJMUO>St`0(c*-dS) zDC{e$b`!#~;c9>*ur^5J0*srrG+H#NA#IXq-Ptcd(vo=Hnu+%-1ui7sJ9NAO@w93^ zN#Idb}N$y1H~SBKnGJhox@ZVWBu3mLBeChbpzIc`y6M zTTc6tkL>bE&|bu@{xxIL6BuI-V(j=ge*fVo_k~X5x0K&2{ElE8+L`g?_59t&PsW?w zdB2n2R-VPH=n?!*<98vy-SCic=}>;x@SDZ&KHiNdZZ5yS@$14k^eBF3^7}Ktb^NyR zll8O#{LbL#TZDE!1G_rM^pxz&8Qd%${1G1W%vGtE=>LP~MO^=CqkZGt?!Q|72f;VG z9yIYzwYt|w#%nQ@&b9wJQ-b>-cRk4Nzxsl*i^X;S)mU0!*?%Q!n(S52RwA=MYQxvf z_FqN(t1!sWvmy26@s}C;Ez~pX>RNRrjT0S2*%Dg=*FGeD3VyGKJjoMw>vzwJiJ#k4 z-#5$5pGfO!r_<><@y@+Qj%3GWcZxaf_hO33nf5nz$&GkivY5x`OZ#Tev&Xrud<{<0 zaR20=ZXAz9by&lUfLdKMme^7BLeuwg*T4_xTIy#|`2{*JY~NSL z*XhdGd9ug+n^^ou`lPqxA}?dQ+Fi`Tt_D(q9CbJ!TfZXCwrtnx>-<~Efot$H+5DM# z2Gd*&X$k1KP7LYL7PRx(f;M6h23uE_Citf!ZYnRowoq)f!irADFlIZ@gFHbU%t0=gM)1V;ld=542jbnb-Rl10AVW}XI8vFqia#p#QL zAC@IXml&3R*0_D9k5X$eH*C`%FLUU>(6N$SFs-XEn3n6rW~8UecU10h<4I!de zXteNmN>*cb8^ZuFbtjSK31ysP8QZ$i{b9!zcR>D_qb-ghUaNF!YELeVB~SfnMJJs3 zWA3uMkyIILZIGZ^;zV~Q`#M}-n<3+6$xU{{#5-`i|0 z=$Do_1{R>LGgGK@3e`E1OV<#$IkclWk<7wj4e>daO>Z)&_Pnwg1RFKPub}T%exE^> z5x;7_0KrP`{9)|Mfrl&eD#?r3-aX0^w-l&??!fq#p-lW+Gh?MB%-YfvRQYPIO+hC) zt`B->lK_X#4a*-s_eQ>SvaiPX7J4J6q$cRl-BST;d)M1|k;5iwUh`A(SgGZGkI(9m z2rFqDQZ;`3r7Kig?|Zc!#`sBb+~F3=iFKkK!`jzN>m(v=YK2EqAvT+I)ea-uke$Z0(e55z zyEWzsm5i>V;_}IyY#4NsXxRR|JTpE>v!u44aGk)Jlb)-Zmi8dUbc3Bx-I?Z5?Gbx6f-mUd`Zpm>X`DRy|*6-_T2{0+@M(u_v(l0tOH^nsTTNUY zzs3AIV^`D5F35fwHLD*c$2{blg*^CHpxW1y?rhnr{q z7W2yY|HHZ#%}uTN$ezJRzI7VfPbO#7Sz^F1lPrpS(w9Y%e00+;ihQ3GWpJF)IZj9i z!%JGk8WQ7+XR1Zl-!*$KR*Yv9;uy_fs2RW_eGV5-!$Ai znNHGVM@C?g^*qlvqm$9~B)lKr`ucD7b+Zui(OBk+9q`dOLn!gLtzy`{UHf=~2Uh)3 zry+O{f6AxkFfE^b$aE|I5p}ujCwth>J3?}6yx&xEA75_t@P)UD$hpGpqOV2INmc{eHB!<+EZ^8qt zEa}|6^nqc-XJ*Uav4xVwH(V@pFyfoA(Y*7ZtO|;6!eB}FLbSm6-l;F|UF4PbHg=z8 z=pRnKzDUJJ2@zFRw`mPnWcJHkoWmWg`FWOnU>i-QR*WM*$BtqVl|F!#9o1I;#rGMT z&cu(Pct>b7hiV4IJ3=r66_kzN{&@9mGy^stT&Jb^@{ka)zhyW~y$b>>)rUE6s!#DM z)<#vJH?^R}4co!M0-WZq2V5wFrTh%}@>?HU-ry*!NsFM~u>vM3Z5!hP{ zRCj69@qLsiE*(_@^;_EiMAy&O!#UaO zI(ChkGqHK#!9}#Y+(0g4Ad}`I8G$uuu<$u;uzPh89d(BGD`ae{8ze4(XM~s$>n$W)QDaf@tpD zGUjS9Cn&`_+YD|nKYKu%pSunWiQd;0J<#5>UOyjL5IuQ;if)E@Vh1bNc!+#m^!$T3 zto{S2h&4=~Il{l$12zgpuB-F`6MtDmE3 zxUKKUfd2pLcNUESv$ddgB)Y*2U#MVwm>UA)0BE9mFU#E{J`v5|X=Vyo_@~yE*lPVD z_qzoeMCL3AJv@B*JQrL}alU((Gm&Ek%#f5D%*@*yePj5#!Tg5%^GNT&u$0$A<4GBC z!?m!IYZQ0%M$Ce~~7$SFnQnFVWv{k8>X}MY|PwuDG_{Um}{}4T?O5NFV zJmq^VK60ddaja97D!|YSmLD7I@6qqiZuR@;_Sf(Kq~9A1oyhlP`h9lG-?Nbf|6aO1 z|9b)6JPCl(>tY*R{D%NI;z=nrk4PT`u~(75k4=9cO@Cq}eXo2``~pmtm9m*h=Xoos zy>f4b^b^DHn2}RD^P^6VYA&UszBfg-u**!@QQAm1m|3@~l1eigXQD3mjeqseGQ0kx zTJX#L(A841XgimQka}7$k!fn#-zDCWtLZ4m*Yg+ON0X3cBEFAm@qIKaW!2*!b$n>M zaMNogTlBJ*vz+$1>B}=}^VGR+YqivzcAtw*LBJ5b76xJbyXNu{ed*$TwSE5l@uQ@) z^I<6Mv)uO^YM;m8NSI>C$J3Vd7IKqRgx|7rl;3fd-}J-fxOcBYT*L~$A}|Q@qkpKe z^c!+C{oC)<{-OGhwttX8bdWw+Ui9bK|FX}H9+}R9&3BHSWUFW?H>go9Q!};QrT3#; z(y#fJr~ql+A=YdDb#!FLO6k}wcV^cD7sX(kUjT)*N6@ctvaNmtV_WucW&Gc*nZp+Z zWsokLX6w$6q{P|(H_OxaYdl$k&D9?vXsQ449HYAJDf)55QZ~huHQ7e>m0O%fmCCfi zoGyNlxi^r^_|~O)8X6CsfFs2(wpr&?1*UBrS??jVbS@#DT!MyG!n z`#h|Yy)I=do{=dJTiR~_5-D$~l+vX-1>NWsv@_iMQAd8wI@U;;r=ZeYx&7ux<}xV) zr_8%}IS7{d2~hZLOH1+C-aXAMcT=h%+;P^)OgB8vP`?{lCX>a6%U-JQl@#)?a;ZU!w`GMX^ zcEaf;Lb9PJ*xpR0y-}ZQg~R7o<0k8%57nME=Th#pEniE=`P_di+fnCHt(^^#Tkmnr z+hE(WA0PP$Ire(8>+DgsJwPmK%R`T9`%=Hrwg>;}L!mWJNLi@-4ne-(2w@ecF&VWR&VWm1(n5PP|)Z~y9fynNN4?;TE!I&BBDDwx@$WaBv! z1ku@KWi(0gf~>*;-}>|KpxvKzrsNNhLQ&5cX6BfEAjHTr_Emp`HMOE+qWb66HZ?KR^6ca zgW32P`70rRF4KSFo7BnQ&y>IBZ-hLypTCko{w^R5@>emst@0b~yf5OSjUmu%4n2oO` zf0N0d%k)q`e~&AF&EH~qY(IaK1NnPWdgx@=Yg*4AIK=8cpXp`scD^W2+&>eDDih1* z^2f>O+`Q%)4cgmk9|ijhpRP1ox9uI1&ipRb3m;oNb zFM!8lhRalmZ_msakEJm1@VJuC!9(7G$4ZH^cud4Qc(fsCvwol-4rfn4_JlcjSmuj_ zIe2I&9!%=T13WzL(o_|X+vPC>JcM5WkNMYIJjyf1qh2!Y>c{zf4j%FjJQ^j+;xP^( zJBo*J3F^mpj5xqUUZWqv96U4>4<_{~+Xfx|xK&eCJf_QI26za+03LHlQ}iR2F&^t- z;NdZn&%s09fyYLPvUtQ0vZHu7oIU;cc(USQnJ*IN;Gv;-FsXO;^YFM{Q&l{!l*bJ4 z5PktXrje%LF*0L3wn(O3{Wyuw!9(7Ghmk0YM-f7H6c6DN)Q?RJVbKqHjeZDo@X$~^ znAA)AdU#x>sVW}l%VP$32)_Ux6G&6=7?Cj^+hO40aTK3}hr9!iT@q#SC_u=L;^A=i z^y7tV6%WgNkuV1j4aI{=t;+H6I7d@eJVwf626za+03KsWQ}8Iu7>_Jg(mgy54<_{}Q@&37afYUxO0(gud zP4K{0gQquSZQkEjrKUj{m@o7C-y8wKtv@@jQGDbb_~c2H#b+1${5pz{!`Z{e;fXWfzKzYmnAK@3kX8>t}Pij~@_;~XdtMVn&E*>9Ut$4^g z@FEHiif-dk0Ob(cx+_0Z0 zmV)B3Qv}EW58)TUqZ?@o9;F%MQ6iak@o4yk;vw(ABPLN6k4CntbrcVWvxmo3Fb5CI ze338*4-LhGNmY@QgU6Ses^amHJZ6B0@C)FvW1_{QBx5{AOQu~sR`5CPtGok`aS~;>R3%9{cx=^F6^}RNF#|k=UjUD7S6Vzy&lrzt z$+U~dLwpV%@(w&EN|eQ83A-RWiigA5!{bbtgNJ3lNSK3%hT_4bib=}B<5f*n@o138 z4Db+s0X#NLuy~x7F&>j8(=HzO@;P|OJMgHLD2vB}9v#QS;q2jYGR(olGG8Rj!9zpw zU{c4Dl!M1JnyTWlLLM`~L-+;oSU29{QJgUzGbPh59=G#3c*r~Om@82hkGXPCBQjCm z-uTYp?BQ`V%)!GlUnI=ILqp7e_(}C4DF=@yG*!jpA$iOI58)TUWBC;pk5eL(GTx zN&U!DxP!-CnyTV)yF6xqhwuyFG5<1)$H^Jvu~Z~+@i?E)!9(7G$4Xzwak5_DLH%$z zdw6{JbH&3lUnI=ILqp7m_(^@rRuBh|TQyb1W4hfiz?zo3+|<&1;jHI`UjUCeq$&2t z(2Vh@7fD<^M)Em$$UE?8^o5Mc#^es-;c)iw__$i}u*??;bMVj*^C5mx@36JR!Q*;O zRq?n|9y8Dn;TOPT8fgk1MH%C4g7f_!$pd)9N3UI5Q-$ON7b z56KwMEKy_^&xVT?Pk9HPJtWHF*~l4|w(xAWegj?(XAiHdU{3#JnJ*IN;H4qvQ~ac= zNXo(MOHEbr`bZu#&@bT^z+=Zn7LOA$#v?~0aq(Ee=jfNb1CKmk$d#P+=_no!XAh4H zVGbUa`66Ks9vWi)#80Y{q#Qi9YO0FIoAQ_e9>Onx$F>VC9zV?(k9?8D#p5A92M>7% z9tFOTOE?SFQ9K;Z9v)}H96T)ZMZz3BG{pRgpOhTGa`1RnQ&l{~abG5Q2)_Ux8!oVT z{3K&M3PlnZk9+wXJmejC*iK2sS-=^xj^g2P_V73v=HOwOFB0b9p&{l^L<(Cqk0mJw zk7qPh6<~!tW}qL!FM!9oaTbrk8RJnRlDK%>&gbAE@4zGG3ptmwa~;LQ;q2jYG|a)n zGG8Rj!9zpLpZH1jAt?usCp1;X;~{y>01x38z+?IO7LUS=@faU$3poxUJE|WJXAh6>&Qm-r^F_iOJT%1o ziJ#P`J3KsY)l?Oa>GGHX9>Onx#~jiW`{USl@F-^{QK2& zg*!7B7~r3q@6LsHd^0Cy43k}1obL3`=bRgx^~n+)tvEXkm&xrCPhlKou~BC`UzRtN ziBTwjS(@Q*az=hExlEk7x@6B=vI2)J-yti6Y-WJ$K}*JvM!C^6D7O;G76iy{v}7@d zti&N>7uK?+0kZQf**J%6v_n=6S!00gSW7n1A**)C*b}sDOMtAKC98GFCd*%ME6uW9 z0m`?}5lm*!6$<|2ai%^TyP$-^b1^~hS~Gn$K+zr-bK zm@P!|pSN{kSxJDt!qTs_G$PMZ_c5t!`0yVWpg+{oH@ZX(v+Lc*NLO(e`|H;oZ zzZ+emhS@?S{~^y7{y;Atlid9N)6yHE;6LQqq7O>Hok!>w2Izln>36wA4YP$v{u5JJ zh6BlEVl}$_FShhOL`8+DVYU$IV^Y`DpkE)LA7ttCT%v~AIqqZ9S>#$~0`xzO*8IxA zP?Y4@gc>(%ATKbqv)G)imeN5_{KJ=FL8;`fA^8CJC?pa zKwn|$SGq*#zx#;(Tl$Rw`a>;!qf3PTyN~Fzo3^n)yY zo=b%OyN~FE}{Qdc3&b9s)R(4r6SL;Q5*?*oR-O4am!VLvo%raQ-=% z0j(q?^%FNK$p8*sxxR9}+&~{lGI&BF`I#mec(u0qehYhkCxq9=jPN=h?rq}boJaT1 zjHc&F#SzSob2B2YCOH`+83|+}h+E^Q&2Xb|Zd1+B{jHvVzDW5<{p&#aR5wp2Tt1v} z+`vUwj^l##y!?*w&uWu@2!E-p?d$7fpL865t-~F|KSnYUz0C}Nsp}oUe@j!dbRzh- zpifJkG&-P9wawFMIX`XG#|2KZ9juQ(ew=ZAl>5gb`X&uu2k@L{6AM(OV0#nNw?>C^ z+wJ4&Fl@EHhxl#Dh~MX_Hu$xW|6Lu-KkOrV8_}l-zBzO!9l*D+P5vP~3LMUD?@mYX2>l6SObyEii1UegyO{Z@AozR8}8WKdXDp8qq)*;n(ZIJ{cG zA9IL(wa~tj8A8*;zFKNu$t0lpW{XIsQ-6FY^L%EjeYM_F$yAHsE$*VK% ztI_t=IC*uFeN}B=O_W#t?5oN4Rjs_**S?x*U(Jwa~s=BCj^u zS4-`ymGbI2`>Ni)YLr(`*jMZAtBvyNzwE0m_LY%WzqYTo+gH2f)eZJl7RIFD#UC@l zzRIz$^5oUI_LU6rpem48CH7UJeI-LQbF6(;VqeAN)xq|ajI;P~oV@C8Usc;z6Xn&{ z?kCp_V~Lf* zh&70h9}KQRIOjpdCx@-nC3bI|<0Qtm|JHwkjgPexKf0axaqYxcw-c|M2R$ba&E=ci z&iA$L#LsLeer`MQ^V*4D&`$iqcH)<`6Th^b_?7L%*S8bj*iQWVcH%d-6ThXMc+*b& z_IBcTwG*FZ_sWL!KWKmYH6=3}`H=qv`y@Nw4A!TdjMK}^=Kb5Iw$sbcIK9kl*i%|e z?~byZew_rW%EXwg?B(@Xq^0S*3PWknq_b*Xe~Usi8Xs)*nzvWY={eu-mr|^q_|fge zk83Bsy2bd?neS=#rOm`E{PXE~69aVqlxuT+m>i&U{KWb|3I`k&XJ|O=}KE%>5jB!ur8dDT2-i?6MdqQ4d4j4)8NX#fA zOC@Idm1L=uNO${2Rq8%c@a-?~c^FCgAkQqc5BcU^9wOPfLge!H-n-w&62;>Yr7FcS z(onQpUpWsO|6X!|!|TpaGR&8x?4Nwx=M@BG6USAl?+1%`&iBkK^KC5Ar(r?=tn_R0 zDc=+YzR_9Js?>9Q6%;S}{q4c;3!8sGyPfYx2EIp%e84X-e=Xac_FaDK{ti~rs!~P5 zY#wJ{N5{BqfhO$`W^chkZ#ocn-?+$IXFh<6_DwTTddb>(w0}Z8b&rei&}(VU0we|F z(mCQsZJl}Cej*K`Yd=$dDc*`qW(yA?K&w)Z7B-q=fqLivsEic^sNs~Rb%ivd=`dHtVHjl45c|74L@;Lj| zsXg3WlHsOT?Rq7eK|9ZI++Hjb3tudg&SBrxMS&&2d7|qH5lcioJCDD3x;z`QQ78yk zf}YC&!kbYf7 zI6VLIaCpF&aJbvK;qaVD{^m#JJ3CB2Arg+_vyKg)LHU+P!iyu}`H}FPNO(j%d_N!(?i~qti-dQup);7j-Vy%YBHzL z;SCpr!|TR{!($`)8Cw^QKXFz#ym)Ll9Bu!i?Q6GKn0|hFIK1N@;qbOdcta$-E)rfI z2``R>=SRYGBH?L~@PtTsY$QA)5Icv>VpArc-N36F?`PmF{IM8drz;ck)ejwd7ekAycw!s{a8<&p4W!t?Y$X}`sS z>~mw%deQAwAO_<`Yw_Ckm8#V8Ss31)z3iX=s+J8X)^D)5w8r5f-)=Uy3=sd%?8uUf z4a~z#GUMoaW2u;@o6T4vOLwg6RC5h}e^*uE+&zQ8VKJdkD^;663MDaK*y;xpFa!RMzE2-Gfx2Bco zg&J$#@5)jlTr2YOxhFG^D>Y3}+#&-qh7F>JW#a}#$JNvIV-DrA}9Z9K^WKkEP#8q$n zEh9T^CF1RVS}d-VsTT>`{#$Obij=S1ha>xaxI(~;JXi|lS-GYrF$`N6r{%g9n79!m zc}jsfO5@+C7`mlq|H`31*6cI*KV^e=G?kSu?=<*7O(Q5*mR$Az_HVg1(u~VT1LVq; zv>Br!eQrwmD@rl7t9-a8AI9otGvYVd!A>g7DhzT z*2fYz?usRTYUUjzVyjqP5o>D93Q{Ti>$po^WqI*%k%fC`J~yk56d9iFgzsLtf;C+~ z`54&d$4)70tc-tMvuN;t5Gyq)ttTkVolqmIxTsEDz`N|dLiI!TD#5rQEWcdYw0ZklUkn znyw}2>Al%|+4;EhMuSJ$;13LbitOCi#pq!uf820@cHrrFTY3CP#*|zqn?rrR=R)f9 zf~0u3UQ6&d1euY$Q~o4!H{L`Olj!vxe@vHqrP4z7F4qy79fvwHCyKwC%cMhmh7=^% zAdSoCZdEGljE!b0D8-Ue_rEq9&g2YDd|T!052p6k!a^N~$A+%0=~gjx#>T0=v-fh} z7RuYB>C`)7}dTt7@1^1oj@o$;u%AGD?XCNChrOMdO< zcMd`Fd%OHeaX5lQ$ETz^W&lb@OxltPMYYxK``xa?hW)W$XOqa8nVX3=OCKYCEF-rkj zDhEv*|4Dlz{<>&Ye*1koz2liqHHXDc8J07pAhu>pSFS|tTo_AS+_^}Y7QwVh8U$$s zwxjy$b39l;&iQT2ue3dWhPs{+zu@{m*LZl>bH!%wnA+RcV%cg;)A}ifVd^pRWz}>% zSFla0$4xI_d}L}#&!aXEekZN)+EUqV{gD|h?aq$pI@L_#(u{gr?{CQ|AG$ev&Tn96 zE+g;M{aUHXmE5SBsLm-*FF$2O&Xi&)`O3si z-3lucQ@a(3Xs1Em)U9lAT3XonrdZuG>;u1%-xTuPHIL-nPK-L+N_};8SlXs)W?tli zG2}`VN*6(M)uTlEo0DU+|1t?H4KPARQ4@(Ku^A7eX{#1nZDU(o+G-o`5fvwZB;GJw1iX;| zO7=J^APP~``F?BfGnWLk?fd?}=lP!R`O}(n=Iqb|t(R+bwW^B}&5B?shn|qM zu3$KYG?9u{^_kKhQb}%A_BvDo*$+Z+y>j4Lv> zdK*6yk>L@M;X!1Sc@P;hJced=9Vax?(@2aR(m^xjpM*_8A(2<;WL%K_Nq-YG3A}HC zqog3aoiqcl_;zSIbEX6DDDK?SLe08+4GF56ehI*T)49fE3a|G%ax)jbi>*d&Ie?Ix zJz~%}XR0gY&e0Hyn-{lCb0>mIqiLb@4idyhN*|&}7zl2M5M!!UC&bi7o@DGo@(-ZF zNN!Yz%;@_D)7PTuw5ljJy@=fI8UHBsxq*+8J#w~@{D-k+3=2G#x(w}mHaE`r3p@1xzcLD`qF8iX_p{u`rr_t4? zkvUSTiHdudL)m*T6uA>vqK>*7_<}3s=3zfghOjz@Mqf&*`nDRoeW-MR2b^g2uu(lB zeb-X99rjSCVj4rm&3>|tU=DVgU;dHYm2OqeMI`v0S<36&vD53E*Fg_qd-$A}H>f+Q z4>q`1bgF=^yH)*~I(4_|OQ-mt3G~PuZ^$v;7c@PG{`0e4#ll2;iG#d_viO(2w4VfM;s= zOfzKkv^jDs1t4rUw{3FYB#+=5+z$1;6j&|=xC>sWLdslb%BTm?D*1>{;ruLr^&YEg zkW9PK=x!H)-bbqB26sFZUsVSmDQHEJ47QrtbfXlcCSU0G5z(>kevin4LK2VyEljZy z-p1`c#yMp}Gu7$39qD+Fp)MwdW+HFvy_HQKW{FkxDAUIm4Ae8sSeLJ1Ajax}@H+jZ z+OKnTdkp~K3+`5*@KbXtbDOU8UG<&9#15{47hBcyq<{KKN!jh`xs+a|6$W?N>$ZA( zO?ovSK{Qwc7d(FO_~4AeaF`<2V1D2`lyUJhQa=3=o)a!XI22_?unIA4idoIHsw-(e zdK`B=9=lMepJC$T#Tup^YOzL*i>HzLqg?ZAr+E5l-K?LxUinLT>UxRwYjB1772o1J z9i8uYDvs=#w}1Yvd^>P{sc)ZJdbFUA+fV?6{gxE{*X#I6$+VmDGr>`(fGt{o*4np| zpCwa%m>rrJ3pQ46ImoX3=Ad~;*}>QC+~vtBg=otRd}CL?R(i13ukF}tfqlBMq`a-~ z*113EPjPNse5W2j!R7Zy$@uOx_p&556-3_>c#9*V#HGZ$Nv`h#Ve}fS>VDGYlF90| zR!t-CR#hE;nb9rYP~iYnm!f8v!H{qgc3F@5LM7?;$bziWVyiMp{&7xeo(BTX6K0*q zZ6R-sb0*~pfj}t3^2PF%@A!H`6q~I{k!ipk>MFy!b*WMcI z(m@-zFq4d@BD$}aU#SY6p;uFhY{HF*&pAqFsT^G@6@d7DWf7~^1zBm<{fzAX=`Ox! z$^1?4oI&#!ro(~(?DmyrGx#xIeccV1@M0n?8bub8~$Wyi2Jn+Z&1 zhwGhAz8oUIAjA0B2-yn!vBr`NO`oa5mDs;MNcuqfK~gXkVzd5BSzk?Y^&@ytxHKO! zW($Ak0+A2_y-2y^2*VmqJ=~D%IDWG(LN_|k)s4cU8wJEf6ZN57J*^9KpEemIKZWU` zqGX{Ih1HrHgu$)!Iv1lWE%10lH#1dwPoD)__|kROfeoVmB3u5}angD1Z6aMpX@>iB8jvwW~{c+M%L) ztWtWFgKYf%M(H_>?SyZ6^9DDmGY=AIV(L_#xtPqYbOtcKA)n95SWiCH+s(8ui>>*e zdxQd8?WMZav@|STlJOss@uQwnTf5p!MpILrHib!sdnCgOH^Y-A18~KwX*1Q#kX(p3ck~`SvIPGf;(IXX*f!0EGkKJhzLwXXkCY`EnGR3TVV1 zM4Mze+k@Kb3ambb$9qJxLo9^R8x~vDSdwDV%e@ZSTxIQjT)yDue>Xc$gRIEZqxZY zKT#>W_Yhqs`^cH}e{3alDVUvk&0`r6RRVQ=s&xg)Zvs9Bn^8{Ed)j7GWK=L}pshed#M!a8|`%A1F9 z`gw~`Oj?Ev1`$*aqhS*Cg7y;<{lRw9y}=LEhd?M<-jFQu0p4mTC#2OiBe&EuI^$mT zPsyk$FD#2QE!5O++{9{=*qK&D?5TiYg2UMQFhnOC1EMae-w1y%j%>wzlVZ==EmvJ5 zpN3LzvfbLTC;%N8#M}^ufAA>Yd&i6YfsM@4B0> zPwTHS^?W=P+gjkY2l=8MN&a$92om?9RJwBW6Abs z(mpOQOt>p`oh+1eiv!&jN1K*ZK|B==@Dp{AZjqa(L^(;|pbvRE=|cta^|mi0+;OK` zlPLj_%H6&v+unAF^dN4(_*=T^ZKM9WL%kYL)onYZ$~^fKU;V+a)bFUXONX^Q4DR%y z@;JAkBVB^5nULdiU??_P>Bd+|POKzLeI<)Yb7lB}^|?6wgY@D-ucpgoiG|Wr)WG=V z{1_`}x(>173~!c4Xbv-ehvo);(C|f?bRnibg6s2xWP{Kj+?kbh`BQ#&;+3~ z)ssmE?eB>i8nj}o6MyX{-f0p$^8lUWCdrZH0fUl*nD8&t_Tcz@A0x0d6ilB!v!oQ9 z#i3$6cEP>6tZoj#FS@6cKW&V?^xA3j=FcomWBchpE5AaB+HLX>Ajr%Riw?tiAmi-)YLKZi1wJ9L90jH*QT}^}enmVLz z%I~Ezxro#Ww5U@Sh*rgY_UmjX<7a3GY@TN6QA5?Ys*b^oU{`+K{gz%_E4nB09St*# zc5t;_x&2!^bjPu5ufWim^lI=ghKpgfTo>J6;nbYjqi=A`kNi<99Mi z&;Q-ljgvY&v#e+fZ-pI$d28g&*OAZPsT~vfJEP+&zHZ^at^AtQQNr6g{*w|_9Til| zkCpsb)KP1Gye>X^tjxa+)QNd`pdFgjG1%VwKKd=$F5F4}<-8ouldQ`lA`lEfwq@CnPr{5LWEfX@hSvFK&og{eS1nWlgO+9lQ z`p1E#zjMMyln@4glRTL3_Of%Q&A)EC2mGW=7pm6dxbs^f2Vw6?a`?b}JHXg3C&gH| zME{PdC8&B#hd}AIH_p56Hl{=AbvMpUOZ!Y$z7v+#c|s@mcjEJT{tr~}WAiCxKIE{C zDvR3#q5>SeIYUr!+FSBK*#Q+Zr_Gx=k50r zZtmwvkv)D654Ri;1)Vh-vwqY13GmDQFBABCwks~Z`NZTZpu+BjDCftOWLPDhR@XU+e9a8m^^>x zyweJCzr?Qf9OZ=$9W*Ko{(R`F&-=waK7^gW1$$qBJK`KsytV} z9KzF!!10soyV1v9Sc1OzpltXB*} zV14Q@03Z2Ywhuz1mzeL7OupYM-vB9 zi^a0HexWJ#22HDcN=3KE{X@tbT7{5MGJSzYrVnaDpTp1+&Pe~LiWMz1^7 z|K?BP@VwF2g=Z}jPl)AX`znH&NdvR1wQ zohMCuC4}>!iQTimkL_8JUOHjfM3VKv1@S++ODlvz$miy{gxr+xxms++@iiEmgJTBS zO=AXMbK7+g$L%8^kbIVSc4gR(4qKL=THVk@b=^~{GX)n6V)tq=rAF88w(8W*M&irIY>-4`LcTB6@xa3Bw@ z;%2hRHp-Aa>Q9#m2wcH_k+zoDA+}zf-oq!e{4LW3#rE2&)>4>_pe(crRl|3@0<5al zP(H1N^^WySHi81p-q00;5OlRZd~T2InAMepAsZs;%oI|R}nR3dd z*hfsmD*ZOF;*^I4=auvw>&SR78@aO0XS~g{ZRBcy5PNBgO{55OOX%n7DqGdfJO$~8@r2OF8FS%ww1>ONt&K|%{8N``g7-R;FiC0qAiJat>bV!v zlOVjqRNIcBkzKfEwFyjk*PsX$*T_WZL*@RwkFBc1unEd`L}OczaUr(Ec=zQhJ6Kd9 zZY*<__=1luNb+}YsK@cXJY|J0(#6V~vCnv8E3Jwm`R&}=VFyDcdLV|#oEZoldeiaG z%o&+4w)N8$GGCqVVBk6k1h@QF>nv;Lq$TY@eDwIs+Qb}-!%$r)<89s<_kVLK|JCr_;qs*WJ2R^BY=5NlRUod*&QJbBo^TypajDHEtxjEemjMvX+f zvQef@g)g|xm)_=c%s^C2q|oSPDU;`xV<6H{cK)&Q=zSdz^~_k^ey7PZ(PTTuWII=~ zg>*IsnXRe#1Y(_3USnp@_HU*4diI?EQ)bWHS@GFZ$WLa^BRll$`R7Csu?0Q*hi6Zp zoibnIv*&y&PRyQbJI$U{1ANN-5%12?z59t6FF+AH^k~t}PUy{pS#+3w47B7UwEeGd z1nhS8SN+_nwN)|jNjrMK2yU>VukOGo99Yzo`#fpUzjw0FTr^QdKhqG~vNKxQ(enik z`li{|xp?`BSC6k(I!z&_k0oxgSqe$hgJ?1#`+O(`l}7U6T~Z6WkCT1;mCVJ;TCj5@}anfe=q$K0l(_T<{55Qk2dFu-AN2MR^^r z;q?U#LM`y!7O7_frCbayVMzT~;uA+MF9_T{jOPV%eYY z(SA|ZO8kpN{@H{21k$zgJyc$=3XoR5;1jwwv=M*sJ83U^iq7@8FM3(=|Aaa*zZUPPinlA)(E>JBPcOZOr zGf;^iu@IA9(Q0C<=I zhRkn(!Jafpx-)u!JVG<;?F4Z`lU%UCKbGLo5iSE_2vB)+)xLAZYtq89;inHieeh}X zrgzG5G&%S%WRE|{>R%S{QZ8M};XwshQ_Q@;pjXX#!31a;AkoE+qfs^HbMhMnS&YW) z7V2u2e!^$j@p;zFuF1?So$#n6EY$#~rEOUzpp(x{tcsW7Fo!c4#a|bh%UAD9Zjr6a zJcHaK@wUb%N+o@f$HD&E>r@p8rt;XGglOqc#9B6^Ca zOG_W|)$~e+%;!8ILzcwdt5PVpYoUK73JF5d8U&e1Ox2p?RE@^%!Of(=Lh8}j8*J{j zq?npw^dB`*KiieflQf}GHA=si*Q%lBrA7VJyewAzc`>_SSQ|tpbP@65U|qrI{r1;! z(HcDkv7kb_s^L8>BRq~m%M#(?(NB>KUmPX^tsH7urFw`0=LCRSBA-D_V!#(C#$anK z`_W680!>Al_a%m<4fzp9Zj8D>llf>KQklCC(V?za(gEznH{d&thykoyZJ7$<2)0V~ z7pjFlhL|g26kVlla2;wW#b{LZ7ci4l$5t-2VbjEf*P#xROq%3zkd+FZ(I-gV!9D6V zO(Of(`+mEr_qAP&xLaGYez)G|B$JUV@p@k!YwEozUT*++<)FP=q|&YTCh8>tqKGqN z5X98h@LoYCG*!3)2KP83gR+%_4QLdR(iREXlq>qZ*MyaY=)A7yat3 zBjftjw})!|>N_5Az3=s7U`#$TnpaXWoJ(Dzp9j{jDya&E_;K8+)ikh~qF-T+RPVI` zD=s6aiCPnEGU|124REVEc>>xAG#2-~jO>v1c1H1PIpNnALz%!ZkUG(ryKE>W{CW1N zGuI1KZ&Ei)OW@YHJT0cGWcO3_Y1w~dzxPvdVF{kW7IP`(P|NUX?!W~lU(JQl>Wz{y zEHAasGn@_*W@qc0g4o4b>L9mE5)CoYrJvKDfIDftbZKRxOGoiNYBAwfV384APL{so ztLh7$q^td&Iy3E1hA??qaCh22?P5RE@k+%-+vl92UA<^<=sMH=TUreOe*kzq^L8ElU5%vQGppi^X;U#W~?&X`fn7*Z5@E z-IYt+UT^ka@BFj_5X5YcT}HNkj%Q_)JCGi&oFXf=R&nedqIuGas71AYx7v*wkm7op zF1Ux#5lzcs=rMd}?WVB2;T)7NZisu|Wi#xYg}v-`ZT8+4Z~rDcG?s*-=7w{m@3}4Z z-nDSjCE|h0=dcLZAWrA6@oWV=Di% zRA-K{Srvy!G~1CyVJq|(Q77cwqBE*dt{ucjYen>SJ2V9+&SKKuINB10VG}yfM3byWcUGX{6T3 z9y>>4yxp%D!BF{vQTU$PCtsavK^;~Axg-OWWy#-u>A$_fd`k7Q(`Lg7Jy=m~RDsjZOLoZ9+0?xVQG0PSW%yuThABq?>r}xftSlv5F zJUIjLclw4fsPR{SCKA`GT4hGAf-$e7x)HiMtdiT+;AD-V@(RA#&I2;|RQZThIYL)i zI)i$sZcpje^i7lw{QqM@YEE&53!lo+SSha)tEN^tA**^78!5OlIF z$B{>|(qnSM>8m2@abGZPNFC~(2~v`!15K-Den{DPV~c0##Cr7@016Mme1@X8M8;O+ z_k!uz=ikS-cn^ETuc;u}qvz=cs`CNg%B>dk^NFPwytxQ}jBR(L7;BPWHA5GU4>XdD9p@jPJ?= zu6534VPGO{V%gOgZs?(U3}+_F$?Gg#&--#IhU?(2zrc$sY~eLYF?B9E<6`PlX^uR1 zXhp+_srdemw(raNtM66lEq(q*z_?map+Oyy1obon>gg`1_kJj#a@sYf-gY%BR6sB_ ze0`6TX&Z60RqYe?1i+sl1<4X;m9c?KsJAP>%oL)>-kQoVr+7f)uP;h4OqaupxEg&t zbx8An5v-u>-!l$oxr&j5S#EckrO&xO-{#~&S7!MtBMloIOJagy?zH!AusH*fV3^%C z)cAku1~N_^4<0q2ELseWt&Q9Xnvx8t7A}J>ipxdiwlF-!7rKtA@)l&H&p&Yd0~QW1 z<_JVnz8x9{!`TkQxdn!^S6wwNO(Uv?r(rx-jsRhDP^?-fwX4srVu)j7v!u&^)tH`K zt4$;k=DSt>Pd#QFV-H&u4=0%PKzY+l`cRnkYs57QE{{}7*3d-w^kn#Sw?r17@afkA z*N_IEmbC2&KJCNYN!t0EPiy}Fx}*i)OCmta2*=j~&wfpK_POxv9g@OE1^hja%T;jXZkDP}|PAgKg)+5k6-? zCeHJj9A-K7U|iG>rhl#Ke3VZ?>KIW%X~zc*OJR;L_173WBWRRd_Y86}%4CudZpz0P2K9UbyyrgwVC| zb{}cc0%)^py+UfFs-US=oMeNhR>xEoG!;9pnZj7LgKotxKG@sQSQC*EqDJ#F=d79fPzDjZx_k&<|4>Gjz^j)DUG(ete$_;ubC%Cp$d*t{t!vUJJ%w{GF(-o&GIw~P zyh<%(=8qO4>|H7k@~qz|ocmSL^s~3oU8u3QJe}dk#(pA1Dn_`1twOIcwOc>C_)NwI zDry)0ZO#K&4|D85>+kMwIV_RT=XD?PYbu$Am=QlpsrRqCUY5J~&wQg`alnC$i>bRv zfE~1{6J$<6Mw}C8`OWc(V5989o|nN;xJSk702_GCLPEzQxR)=;z0RPxL4_>bCoyUTmo>F-+=j4i#qdqa(vk53{+S#Te%Z#y_T;TJ0aN z*Djo@*8O&+GbR{AA9466y6{69U-3F*Z5-eK=6CA;{S*dAVk>xa_gWQgVAq?w(W-ct z7uYao4rVgFaj*yZ&35i?tD;e-h^59~hg`1lev#WQ&BPkn@FXOL~wA9(Yxl z)dmx$MYbz7Qk@6-0@K`W|@J4*cdUYO{4$Ghh6n*#kW1hYE*DEiICNogmi9 zK76=Hcy{>I_%`_<8{T4mP!20eh=9C8LF81!V9>cHlW1`DvV9kuTqm2~zVzKhxj=4| zFLuezM{xmzz45jl-cVr=kCu@L7jLNSP>-G4A&jN*dq(i{QFgk#Qarm-8d)i2nG(EJYGcrOCn|Sd#LpX|(B_~{RzqBfv_{7N6`NVt|EU#s7m-utPwJPd$f)K-3 z-o}qP6kd1=#IS;4ly#c8f3DNh1|3TjB0$|hC#u3=yUwcWAx*kxZ}K38FF`0JIU{(5 zP{Zj|Bh<53-Hukw9%|`);a?cERK9$G8uV~}qRJ6JaB)VLl^Sb|)5eigm{^X<*9<{` z`pNa`7`D^oT(CF&0||UW9gvV%O;jFrNS~pI3@D-}sE6tsxA3Fvu+9`Q(ojT(wD6o1 zYdX&*hP`SfzZuabh~C=dK=q*4(viPNZaq+`UJ3e`N~re(^WtO!O&GGdg8aakg#Xf? zF0)ofUl{(- zPY316-Dy>PBtx6qVpV*|i!g0Jp)38tH#I@L!8c#fUjsof#(p7+3Zu#u)p~RBICxx! zR*szrlMuQX8m9|bLL;QX&DbY9g(^F6Gh62g8lf#wW;!BpNz2Zi!U`T97ukApi|=V<7F`~Xc4lC z?@18?bsSKH2x&AJ($FI0VIUR}qBL1>1}q^$Hpmyw6$??c#KlMrvis>i$nJ}YdFyIB zd-RTj*|fh!8}u2bDx6%J3zSdxUW)HUlj$ebvv1@@VZ&P_b+vN4DiZ-!U z-xsqM^_FQZhX-1{jXTcqrnh?6#7IfMV=NmeyKgWCmtAk^ZW5O#D|)spuxmCk1+A(u zf3>Y+2um3zMTCGM>bXN<+rf5RJtB3a+s+A7^*W?geXfUc46DYX7E-{R-WhBFqOjgQ z3^6f7MVpw0&?%=f>s3Uvl&w@&nhP&&@#Zy^O=F%lU`r^y%+B*S2QJnjme?4flRpFb z(bM7?33X#Ko~1JmP084sj1}dZ(gPkqMvofYC5~4Lu^%Wt%K`A)-tyn$_t)1O{QmOI z{{p`kAJP@S-;OjCf3GIJ{|dja$>J*bALDn!`u`BWPmu9{iQlVy9Lez3ts(rQ{91E4oRvKYJgTaf6NACs9y?0r3!& z-%L0^5%R3i{2uf?G%uYWRMt{{rYJ7wJEMl2@01S7B=nysxaT`Z=AQ5Payi$&F~HH{ z)q&#(LKyw2S#LsK^^r@UP>D@r0sMI5@l{JuuG8fgex-9orzA7pqH7>V9`LXiDsk*e?c7|XX3Op7ucFV~vsrDe- zxir(8x4HZh@m|PnL2;|ID$+Exs{C9ON?*FND)utyFgDv7zsb&9XDyOoB^;L34CxD) zNV6J{DWd{0;a^_;Fv(t7LTWTwi~cFuB^)U1BX^ys9Hnz*kz}F_O)x=*I%F7co^7HG zwf7*5&`8htVCl#~B5(^T&LITOee7_M3pyQ4kA(27s*9!WkVF%GPXqE|3LsT8C=d~c zUpMy9CiVE)=^B(snP^U&JPOUB=o{*O`HmqC7zENtfaHRTvthu`L2#x~VWu_OUvG!7 zOhTA?IZyf|T>hJG@Ye?GuKW4^Wcr@Q^uX~hy$*Rz@{l9ly8C8QNh^&~9W*4n7gklB zR27;BbH@T3y6k&z2$Ns1STC~u&TO2^gMlSt6%Y*DfenGC=m_c%XP zdIk%NG8Pt%TYIQe^?bcD%ke)P(Ho`2)uS8g3%<+qj~B=Y6d|d0sI`0phz5QmsdlL4 z$=~4!v7*5icG5YU)Q6+e8HhR1t%Q#)Z_wkm1X3BN_Y;d4+oFacufd(DuC^wVE;mHQ zYOzVpm3AfEo(>G_Mwk?oL_bQEOeyc3{Xa!MU9}(oT#t1HR@#YwUWVBE{~rIG_qykQ z!aqk+?EmslS393o`+tgmegu>HkN9TsBp?UipR@B0%s(f|_y2$K&kIr{ zN%ar%&r8uO8IS)l|2)Q&|M&d!)7NCa?$1A;VnPa!yxN!KpTFW;D*wDI`MWd!d<3`P z{~`Z8UE2L$^3TDLJSH-v{&)0 z6mq(cb4DQ?O9y45-02X^&XFU=Ild8Ev&=w;E1l*lfj7VENn4U$dLf0xh2Un?R59HrFqukZ%OW7klPz7j`{N5w<`OR z?ngtaJX$iQXnK2vO4)=Uif#^Jl)@gjqlDJYB$UW7mQ8zqM5${~VbpT1U*Atntlon~ zA25IFL_zfD?X?yy=Ch6=YyuXmWlfqjVa_f}^NlRYT3CjHx5N#QUzRh7_ON~`Z})Tz z(PVLE);UEVL|#N`)*;<+8&Q*1dFTW$-EGZYn)Qz}`D&uR5g0aDl&1RgA^IDrJO4)( z`6;TDgz--7C;nf0|G)IU|01SAi2>`sq4(7*|08<8H0?*|eZ~rx-j66sq4#t7+KJwW z@ZtXey~6@#hS|`QJsmtDWC`A3=YD}(vbQmI4%Whv-gJ4*(6*BA`0^QFkc;1OVFGUW zY$^x+o2<}!Fs1k2f^Yl8*ZmuR@KyCb@w7(2(zWa(k^^K9!wO%;^3q{d%3h^FdY8ltj%?R``j{;X`XrkRY>c(2 z?P2MZp9LQs3+|wA{=8jQ<#S{v0+c^byeONkyZ>f>&%)nzVVjruyTHqHJSVs}28fxs zI?z)LCDAEvCuhFQu=9Z)j;0G_?bJ(xbLQB=i?Dy5kD<4_7Wn`mfY9X4XZ!P3-||58 zERh%PXEvIs0G{&`p_2B651#J;~%mO+c98JWJkz2F$-rxf$mWWCr>v$3T7%gaFkkEHbMwxTRuOy7k=GcJ~EYR>kq%(kPlwP}&a1|B|)n zA9NpcidFSTUTD8CxD_0wZmA#)iCcXjz-eLrco$}@m4ra2SEW6f0B^fc=cht_UIOaC zpaa)9?ld%R7r${2aqea!O9yZ0S`e}+^KlkF6) z(8Dy}$0{{GLf8`V2`}xQGC;>lS0xUfJ4REMN~60NqEQmT?>*Vo{3v$fq** zQx(z5vB-^Hb~yX9uTji8M7>V8B6CC|iZyitrqKWcYtf{V0K^_y-s~cMSSr%jydX+? zfLPio^+0>8bUpJh6zz@Zpx8Vw0R^ZRCZ4c2_&T9&?ZzEFwaFJ>es8bBuk*c5!C)K{5Xc294xfat>e>nCpfM>HmOL7)BdCuwTpAa)NWgdNQG z@6XGCtn@h}y_E}zY+LnGI@DSj&UYtL+=UjtkiYaCPz0N2wsRj!$GpS5p+h&?dCl`P z_=U%28Z~ z{rzzAjBsGV-^}^|TkzcIEv|jCAs<-0q49Xtt~UB;+$EF-2gABX*l4DNEY9Rl52L9| z2!_FSaM;0i5EWg1jj)5H1<~TwNiP}7J&vc`s)?WbAs|RvogMvUtpFKov?_#Q+avwW zR_H$7P>J8pm#lR0Ey-FCnJyy=KMh@%?i)F$x%>vnV@ulceCwvaT_WEmO1Wd>{E#13 z)yb6g;y4^RNsv_8*j-vG&t*6c^*h6wq!I%7+8A!bU(5ADcCfi@J7*ax!yS={QY3y( zhr%m!lI}l|Dmsb7S! z)!5EZyYdd9nvL){eLkhj`1B#q_lCyGkp$U$H*-dg1L&zzDpRG95$F7ZXjzlaRZv6Wu9dPPfRJr*DDQ-yht^kYc=Rwf1vhtS-wGv=|-FWt!H5&wokzJ|&JMi^aw^uDEqz34+M!1@Ip86ABC=8T?h9c`NY*;BxQyUk4AJbI zxlu5_`KOHMhw5;0yAwZg&`3@ft+D$Hx?ShpmEydcaNR9E60)nesxO0eYN#WVG;=Ml z@9eWHBNsg`PVcBPasOSa6aQUK-2H(6ZsakhT2eLB`d{f`aerPD-~NSsnV53$G49w4 z!22SbWaq_9q?Yp0$vUuqN&vR9#;at6;*$#hbhc5LR9g@imEj(d&nPZbIZ-g?j8vmE z7Ej_+A~;tfbf||kSt)j19}539@fP-wGNZ1b!$TZi_fo;#Qf4uX8*zb(gMoO z*L8l$rc~$oHQ|3bzh)ntiH$9j!%3**cMKwm4wFkf`|)L0uQEnvBGv1OM0^&!gr4|^ znM{(}<#b7@uQxs=0w8HssBBr!yZ(U%V}m-;2i8GC+mK2hbrnNMH;kLDAk5s9YG zr{PHe{_T7cA=M+&A@j*OsSAt2Ckpa42O1NH8S~i%MokDF6zwnkYc&!l>RDzqkPW!v z_Jmn;W=1_L^Canlt0RCtKxQ*X7t_-eIao%5o}5^`=4v&(R(A0;z)nW z#M7&FLOgx%CP{~)I-O5t_2Ll~Mel?XQWEF(nK~|W!oR(bhR1l4aVB@Y>)rl28Zm2_ zO)+**wQoCHfeGLCm`IwyCQ+tWkq;c0g_Jp88hMIusS>@@`KgK8v8Vd|1=nMb_BrSH zoLQMZ=XBv@qn?(!j7ttH(=F=J$31CsXI6m*s$E%Rz>R0YQ2fSBM&&s%4PD=?w}a@J zod4}~>Nj#_(|4{zX<~kBcqUKeS_+?Y;~*ka#wL2CR6(%>q;c)V7hl9>d$g;TfpfVt zC3q1w@GrZZoj!oQjYYvW?XiQ?+fJm?+2R{1oMd{BJ8=_?wRwXr-bRI1w#M5SVfBtR z^%IX5gGFPMIlRH!`1xS5LP&(K#!peEi76+x_Z@I6#BGE%?>c=?rc};0@aObkBZ~Rp zLhHF5HN`D8>eofH_ z`89zLS!oPg52tUh2e-~}_0~_=`jm8*p87mr zlX~kf@=EY;E_>rJ^4uKl-Gcybj=Tw3+6{0f`FD=pA9D(>Q_i_`iGXg-_4J9rq1bCS zsymr8qHV}NctChq!bcXd2qr#Ieux|#ixsPC2NlZ{Jjdj0P(R}(@|rZ~jGnrVep#kp z9s|2NT*Hle>I}~?pD+`sZ~rBInqlV6F_73TF}^x76#7VeM6IgdV`&3&m->cMBe4uM~F6$D(g?6Z|l*Dw_#G@P6P-m&BGhph(WWZ`$C~hv_=?TqUZIYn4 zO=^ndW>l`$Pdz}F|5-BPX$2S@MEy2f#)Pm(yYV3XQITbmD_)Og>(qQZq<~jAUV%v?gFm@b!--PMQ@q z<=fVuHd&QobrHpg3#|t0R5ALD;=j@!DJBKN84;Pzn0$KuU9aPR0z*GQjq{cYWTyyZ zkX95wq?kHENSx3nK4*k(hD{Un@#8bq(kDEa`Gy@&VhfAm2qsXfIF-Tp+DQ12iMsJVV2y=Yy=vF8D>3i`kN)!3oH46 zPP6$e2TR0t+n3i?Hc-$1?=|pRH=h#*!qi2q*hUkXU@l@z-7nLTWHR*ExkFkW5p9^c z2Q+PV?)N2=^c4!+MEbU!ySK#lI+N4v?zd%?0O!su-%)WSB?L54kud&}>y72{noRPpC>?)HRfr?4XI!WP&GHRTB}gGK!{H z8w)Lt&LCw1%`c7s>qSF8V}7v)n9R5Ynp3BLA@Gm9k$Y|4q>A%HJx&F%8dl@|6fYb$ zo6&El{OaJ>V!t!0A3yr;UOFPh6;04}rQHr)Z@s?9Vnb!w`9K|yEgD1UGU zWx3B!e&H@Ts;?a@s3c@6zjlsVriJWKjjb3RUQ^rC#Re38D@ zPH;{=Yn)R!RQGMXGis=M;&0Na9qKXt6d(Nx72+KNt5a3_rKkp%!l6pKBrnppT6yUh zA3Sv^Aw6a1fU|wI0E{^c3z{k=mzNmM_P#IAmmVbyL`R3SOz(LGXAsM#jn+$ z{=FW*)B($9yre(Jl2ryn39n*|d|(uxP7v6PpWU%^v+P(p<2x21J?dD1Q6DTZqqLr< z;MyB|OF9+!7x-nOEJ#ttA9J%lB3b3Q%ClnX$8(#2_!UcKvWI$ya1Zz8Maw6_HOL@6 z)Q11})EG*6b3e2yekD2Mr!a)hjh_8Um)2(fRRBr_K+d4KamZxZ_5~SyxzUobGF$xV zpR+8mq;*|i=aP{($(!UdKlGNws4M?FpEuq2Z_k_V-HZhPi17l^)KZMg(Jt){0KW1mJ zS4@GWH`p<(wcOL5qW)kH6)N%w6%7(98qD5HUy)5z*8_*`vSTxaieQ4XkImu!&F0dd zU_E#16-lG2=$cHFGU+08<{YmeA-;A2KY5^f~Y`m4{Gh-C;Rak5H@HgtC${EI)Wm zWiwFgVHta<8J2gY8~eqQ>are^_)thPmNHDV9Hu)r_%;PF$*(RwQo{EvM^=c&_wz@! z@6e(CyiWr;Pm6DRpby)lomO&839dCTo0f8oedpB3-a5#>Uj;+nXaUaf zdk&FFBbHi%MkDKw)FY%%d})j4<04u@oJ0r~RUk@ggmC`?hLAteb6JLLW*75n~VJdh;M*+v*RJgYek0_oS`oQ^KcHPbsD7ODeG62?xyhx|t;mH(;l+ztOUXm*u&-J`{X^DJFca6Oets4`P zD0jg(WV9Cj!Gp&5Wr6I9?@)KgOP2FO+lcLUb(4GqdDrQ0F*TW|z9qTpJ6ff6ItlA9 zcQ0KYrL*l-r%SQW=-<5u5ubM$L@a?WO!%SxAd}4?g4BQ3$Vm6e&teMJAxH;!5d1Cv z;B0KmMzmsHH_GaO5yU4&uv!&g&>0!wnkX+`=L+aBYAtHx2fB?k-yVme=`Z zr{g@eLSDpI=MR4bG(qEoya*bf0aiKZ_c1H0#OdHo)}nX#t*w!9QjyEj!s-_Ub&ISe zjS!tn82Ug%=>mUfmR;})Ep)OV17Fzy;-?K8pqBrJMp^F5Vb45~oh{slkoN|@RFo0q z$W1C?weJzIi-j75fBLA4=<46H%7al!OIF2B^2;GT-^lVMfj=Y>zk=*^MkrW4so!^~ zXL;(LK5i1#>+~3n_yWP3^i&Qxh33cawIhzuO@m*xX(UDkA?iwV<9giA|DXQ zLUuZB>W#!S+U{T)Mm2tJSq8Yl4~6)n57HC40ABERCEs?Z?&C_>kks)kMtxII;-Gb4iB z5>BOq^Lj%?>>cS)7zgYA?p57*!hp#r^_C*3mh1RBm0%$f!!~ajq-K*v zY%?6zu5JNQ+`DU4H}N9u?D^kQUf+M+s{X+{HLE}I#JMx_J$aDNlC3r+Tb0h%u1fTC zhbomc0G_RX$J9LlUKJM2*Q)9VuH;w;z;OY>baxV2cc096fAAVTk-R})KMxG8pG=|} zSX{rsLJq7R`i&6gn(4Na#uIl8A(zN{rc;7`G$ue>9XuO5s<4PnhzW^XvO{fvS!j;- z7BAAfSM}5I?HBYrvAlS4Q;1b1jDxNVMu0(hy9pw5k6XBmCmcH>CdB(QJ8|qA0nc#k zkuN1Ub~w(l85hH`rGoEEOyCY*G%DE5T+TnUneL#x7n%~!+Vlp zpT#fDum|fbF_lg0!k+Jg=?Jpr6gC6CXd%B{_G~7gu;*r_cEX-3Nn?EB(2F_SQd}3n zi=({3boil%1=%o(;+BXdtkqeV4>j4U@2}$2BnS!|4>bjjmSLJki2`j4(S;f*q$Mf7 zLGe*Jcd;;TVv}*_VAW?bKaxR)el z#=XCc!vn=N1bTVdeW_YV?nL8456wsx6RT}0`XxghxCLTcqN8%{BC|fxJ+cU`1T_3U z@}-7CZ~8O+A0k5vKZTR5yh=Dk>Rx5N>{Wgoy-Dw_T%|+9VH|i)*5jaq~t96r~{=aLN3B$AhsET|t0GHC$T(5~M5 zt&sV@l@EGzw2F=y{gGva?6~hOj{KJLsi&9CdWjWSId;+F$RA*;NnGr&|FXZD)ISeS z@2r2`4>AY^DH@{IKmBmFuKMRsXn)B2QSW|IBdk_@rs-ApR4=7Ko>e+)qMR_wg!S->si9)d$oG5BL|8CCPN-nu~S!(|mU? z&HxYEEF+9}yKq|Jy<)ZLH&{3^d>5Xtt8G^`JR|opBi!|do>;_`eBI@>B3}Rpjm&iH zdh#b3$y67(@osJB>E{l0CQqXxM?jO|xvT{QK`zfd$}O466P_D*8=mXw9_P7(AtH?d z!*iQ(mvFUYF*gnH2#1Y#YJhYq$!~Xq<~YBVEyM)B-K-M~zZKt+B)@Ium*%%7_)<(g z22g_Q$$ADS`E3!u_v5!=wIB+=9V648L-H<6x<-NmwW`+>S@#sx3!8^RAJXitd`UN} zN-jwDhORUWHopFmqow);vl zIkO-U5ASDewViKd(UQPlBE4u$nAC7`3Mh2BK5~fZazZtp`m|<(G94qs1!YO?xPT;m zX#+`TN|LJ}fBb+qa*`P;U9JM7y-@cM+G7)%bZYIqYM=Y93b|uM= zyV^^xlK!yY*vdjguU;_Rq=rnJWAsRdR({hMJ*C07ofD1&eCf{veyx-FC0dKKcI!>p50FTL;^{7a^0WBH{JJVfT;@9)-CUYUF;BYw5%K*} zfmd#APl5MKVy+3iA4z~?H5G_bz|E#frZk~}1l*HJ)C*U)x99qEzh7{U1ag@EhMo7W z^+1>lbr&}-1HKC49+vgUYz`cY2gu1xS&wKi2ZGjnr!3Se%DZXc-TAgu`pCbqKzfEu zyQ$)zk=s#vA~!P~c8A9v4KH3;eug@Mr%->qM1J%%nU?BRt$XsFborNN_kW$wXKPuL z%wA#l;&WI2l(bj7cZ$m1GR+Wbi=$>dYk4k4s`qO~s*l?z`~KRXb8;;hawR{@|XZdV=3Cr4|4$d3xREH)$cdX3cjnpyVHXu;l`rcS=K^iSV#x{R=s**WRS}~ zG1&X6qosMW1jK6| zy0K})Y{ev?tL*Ufe;ZFiPJ=M! zJweoA)*<}Oqy=VE6nCN3L=G~OM{N-C$*?y@M!5WLo(;d+u*C-W>xEhK=h=aZ2%=gQS>NM(LE+NXucDR2tNcgpwiCtUTXrDJactTX!I2) z4NRG(>f?}^(4nF_Z*XiD>S_+dHm!4}FqtrV_(H>XX39)1L3da{zKs5i6OC8E*)XbP z-1emiB==^VYT0+A6X%jIm-@KBd2X2Z58uNU#e4HCYj*Q)YoQ6a>kfR2BjCKs`cxa@ z*4-LoFdU@t9s5e%U|%0m&|r`$dkxu@>$YNhe?1qTYmtUmu1ULyv`A0hjXsHHHBsWvR)+(}i7px3_lk@|Y=fSitJDBJ znp_LMG81>R6}6gou#>_7J}UL1X!Rh@@I=|u2n~ObPd;b#m0Jd+>1wnl`i(jZoUjrA z&T=W^^qxfqH|=%-OGE|^Zp+oiYA{f}7N2pKnWA8!fMg7(T=X|$4+#w)qU*^1rj3q# z$l#`8g!IwJNP1}a!6w@}veDv~lG~DQr-%>qm6ZPXmC5e*UsY+UfkAOMj#l&&C`hfq z$e-dAdoZx1>mD_-c7L*_V8-;k}lJ8o3|5kD9!HGsjDC@7{fY0tk{>0FxYp{n8tQj$&(X7|IC29&Q_0n>UwSMB zbQ{hcnOwA;X-gQ_;Fv5QXFdtJoTElkRz&1bsnXqBb?H;%EUp_SYLUQTQj<#8C1dKd zU%;N-YS|{lgd^u8Z_iO}BuLe7@=WMWdL@;z|1XNCmDN+aW%cQ<>d0GQWdS7Jv-*t5 zQumtDU7TPAf9O*K77*%gLZ+=(`y##3kL)!O*{S^|{h09HmR`-#Beh_U_O4jyNh@6= zKNfaBD28^GM45qy<t4FGGVNO~p z2lLo>koH2i4^l_U3&WBEtfn7Z4x&2eb?nK%up5W&oczpKo9&zv`8%}6p&N!MQ2*o zXIdc!#CUyDl}uvnsT+$U<0##EyagUx<6D=1;y~raO6URqdg)ReIfF`=yj6TL^VjPH z*i)IDQyjS$xA`PB#pi36@;g`xbt+#lc_JEw-^C-R*|nZWq;+rS z;iG*7Laxd9N6Asln4}Ic>7$P^^&M-nx$=0nNZb1kSl_Otx?wGk_mfX4vgvZhW;g9W zio17gtq^fH`P4o7Q4#`I9$j3lw{Ts26-TyTpZZ(fLJ(tO;mbcgA3_-q07HuYk@0G$ z-$A^gG2X=K7amsBDZOFLgz@8x#!O0Hkk`(rB;*)P#|^2fh! zYZzNJsnY<*;r;4`RCwe0KWeax3JOyRBA)-9PWc-qOq}GMF#e)s`(5FEwsZc81(U|u z40Qrti6NWpU$Xs)6E2!`p!Taf)fdmdtzqKi1NU!cr~D0*E-V-Wx_+R2EzeO|up#bM zl@&6hcCxRhr;d!Tm35HSM-Okl<_KQLk6PG z9D%#X>OhZr1RE=-;z*ye`2BO7Pth)7#njiT(lrEnZGYL#vO?3ggI1(0aCH&adVJ#g z1h=#W0L;|#qRuaN1G=K_40zxshUx1ouOs)79@j_Y{ycb`9WT#*Tpb)#`GHU%x>48V z9&%8_O%l$9VfcM1TK=-n#0$ z&CkKWVDo0Z^F;#~4GoVTfxf%_4jF)qzmg$kz2NGrsp_YCvs`lSuj6X|gbr97`8_#| zK6aq;i+-ehSA7>n6hcK)y@W!dh>kIZyU=E0e(Uy9bkQS!pshH6{IB&-+(G{X{j)#% z=fLQxsrqM%zL}-<&8!3Ho6`v1!1_Y7`#3*5?b#Imsn_&!e1AnT<^_W6&S&GZh+&A z?pAC$%|tK2knHN_#-Pk^jVoJRYcLnyg4K(W$3Dcm&fP34xJ8UW_z@Ddgi5GU{gkKd zgQCIU8Gxy$S)%axy5BxR`tA9OeZzs&B(7~I$uTjvE0WcX&4KkOY*l_J*o=2&NTMs! z)Je&n^pcI~sx#4nyMp!?_^1ooZ*DW7-N#dd_Opnwui}tuIuFbBf(i2&}R{>~c(^()O;IyGPa+JK{f!13pO6}UTcr|8IXLGh2{Tqxwd zTcMQ7PUmTox=UidA)B()zsSl6`+c>2BK;j>yY4-qq{NN!vVqr=?vN&ln( zuCRN_9cOQC#E|7=tmc8SJ8UoOD;07lyZU-Aoq3pwUYHwUGK~=rpac8hy|Ez2+RFQ7=44&F}B{o0)B_OU8;)P zCm-a-TbKgKWL zpfNs`M;DC$Vh%g?&Rh?!q429#bu07P#W*SiX!Mw({duU%$Sj#`H&YjkfAx-TWe*Q^ z23f&&7#7fM>=~RCk^@;_+#j3^iUw=seHuk|(em%$=Dj&f{OoP6zPRySGIwbEik2eY1kX}@ z96k>kWXmJi9?S0j0fgx)GF)=(#+_zzRcSQp`J?S`>Q0S3QI2ETZ@n)D@vhqO0mhrT zJ%oPW#viIvY4;@Cp_S zC(y4mu90-EZydg;R&KK+^xSeaKVFFC`Dq$Ho%gpj-*HncbR3{V_Vhy+6JjQ|g)`wG z=()YolVwOa3|^SqR&t>|eJ8t{w;mBakMpAga=fRM4#+Cu_KQ6WhD#$NQ-kk`10Bpv z-E@!u-Kw6YU6>W)nzBJ18~FG42DoR5?uQV5&wtPGp9IHBj^O_O1n}NDG$IFR5Z-v; zzd`~2LE|xH-7R}LgdunGJNPf(8~g|tLChI#JGqg`7yL-QJJTR0xK2ICt3*I%Pp)!{ zCA$~>IqbG zP(zVuXi~7yOpOXo3vtYc%^qU$d4r8$q@`ezDi<7cW?1m@2;xX)+5`I89vwG?ec27_ z4uQ+DJM>VB1`xY|x!o@NQrh~d-qrYQmm1X*XhkHdY@8dVPOq+OuPWe)xdpe7RFW+; z_LjtaaO1Op(mHOkYWCslX$Lt&=LWF_y&!dIl~m0c{U5+7S>BkTvFdXcaI|1-z8%~W zM>_`|IFl*o+icD~o1^E5H-?YMrjRJPE9znX2QdNCLFp51NeYwd`NZY0a7S zunKi1>H2KGjEvrqQZH6QzH;PaiC$VR*V};V6pe?^ebW~VhAQhpjXvO96vhHKJ~&_` zA2dRR8LApH0BSbUN^)|if|_)+fYhp9`mLT+Y8+`%i6o)r{TBtXOZ1=wHxF5>Y*SvB zJDzefAXSv3zs>4-I9`{LkRBFcd|SnpFW`Q$nm=9RPZV+5hT#v^B6@>bscBT=BfPmt zj9PL42TU$ke?@C65HSv~nT8rsRK+o%Q>gQvq82>msy)0)Jz7cFuFBkcnu==ZFyuA7 z%G6im)^`c@(WaWl6J*z-AA(X+;T658U)(;Vt*?-^dH@ch0Y-k#1>z!z6@2(~c?*p$ z{k_1M{p`am7HZD|7tU#4BXo(tm?=aoH{uY?piy0BNXB+Dx{2g>M#Qool^3Z?-$X3~ z5!|Cr_D-H z7HWLX@H40bXk`D#8Ge@o#EkSL6fxV}{?1R*MAhf`-T>IKyE=lyaf_NJH7saF6)|DR zm;DlkoIzo5q!vz-N@T!>Qmu>JZ%{bm2z*8q5gnhQAU0`0ruNKzMlW6<7jy0ywFEAz zsp)jOC$P;E*tk|hT_@V2gdvzsJ&`|)TS1(>@zp2h7pL&W$n26g#naT^4C-`+*LY9|I_Fa0@>&w>QgVc49(ob(+Q8%J4&G#Q%x9_2*t#L+@uJe>9u`r;ka z$l3#1Vz>=wQy!|7Cd}S_!Ij04%K#@SE#vlzB!92`bdZsk>$Gz5y?W&Mw3M}%%=j%g z$jGgn)s#O-YM%mID?uq);PJbP=+gc)3lQ8S|1o(rOW3nkParke9gNK+un<#yg--O9 zEK^c+R=avd;IgE?ivJ828`{|`MQ*2v*f(S0lI!gk;yR@FB+CvKz^Z5L@-VR*)JolS zyLw6nptFW3H`gSTVQ>Fc960b{cU*qe(Q_9^R!4miRlqjj_=(sP@9a<1cq zNB#tp>5h67dNxf9L+!Al?!TToh0%SkrgOhLj6t92FtTb>Y~tX`4wm=N0hL!L@RIL+ zC5|MrtH*C;88Im1*~eID<>HGYDp=@tRuKAbZdPKO^g`kkX~?;Jgs*zHRow=Sqtfbi z!?i;As;?v`Rt6lmfXQvLsus~6gJ)IeGX+fvyYl}b?#$z(tgio`0D&OjL?wy~5)>7x zXi!r@M1vBTNTRr)SdDcjxy!ldo_p@O=bm%!bj4(=CBb&XfUrLpRV8oy ziZ!XFY;dmN+D>Rb)i~W2ch&VwpV+7kzt!4M^5?7ct8mS%q8vA6m=KO`xy8Udjw%=@ z2Tf}6$!6%fm2z{(9ojc1=2KL@9aPr`L%g%{Rd+`m`29x73mp`UnH2SM;@O^TAbEtoGSXbd$`~td&>y1bprC^?vA3|301i?HM8rFeVpc$@iA`L!ZhvDh1-I zOhpTMnQkbBjWt2ZKc!2io4A9davjzfnQ(WO+vOd}&!9z8m=vk+FsifM?@j~5!8KhE z*9BU6;Uc8@Ny-o{WuO9Mzp_RRO8El)&)+K87queZt9CVeoLK3s-gdB55-+xS8DH0-DZi=+3g6&mUn+&PqvmQ zc(Vg<5VaZ^;W_TUf5|(7E&VdXjYs={NrJ)7!_I{J#!oZHur~L`d6ax!I|}}qxORRs z*Wz6uv5mTByMxKwVag7$q+rVK=zr9bxxwZ6%wh|!M)ksfo@Eh(9VT|sY&%PdQ8E09 z4dOBupmFl5bSx^|oht`!_DdmAp;mftp(7|I2G)2cBo=u^weCVvJm-6{pG3t#G&iqE zbMq0oe370(>r*IV(#SgZ2`gc|ks{JpSBA<^n*@GWAM%FbaizX~0s5>me@A9D_6$Gl zUQBl$l9h+RH}gAXTd+}JtaEqpgX~%sk1z>LPG>&frOI~^)tUYEw(Tdq{G;`}k&$3M zhqWN~X)R2;0jH>Lu^9HV>^Ze!cigZN3nB74c^B4*i^@^a?|rw*H`nKTcdF!s#a>R> z!w4uS5NIF5k&nYeINSda2B%h;O43eznvoMEM8KSC{=lxGYfWP~_O#Xr5NPY-CFi6` zZsd6FxK;*o!uOh&UQVdFo*i?musr*6L}EyoU|YqApUd4&6V>N{hTUbSrU!pF>SeET z$MxE)aC-8EJMQejmzRCttAlc8exRHGFq)Nihp3FUb1z%M7Q?5^e!eFtj@zAke!!wv zg0tAD-Z5M2=U=8@h3gww>u(&Q!2o!_)}KR5w$`JZddHnivG_~kNdma<$G#57R3odnqdss@L@m z?WL@FdYxWRkqbh0k+VryH*}P+7G_CUub!=5t#lVtL0ZC^Lt=a`khUA2c4NchmXqk8 z{XX(O+mzJM<@4G_sfO`7L%ZNuNuNt?yvE+bc)iW08Zx58=`nlamxg9&$*}j1n{lUR z2s3rd^Q`STZWOgiWP8AWqxi_MB=z9WRIs)5_D71gm)>IJLwXC%oX0DZ+a#W4kY^Iy z6(j}4OoE%m@3aJW7q|jQcNjILB)A&V5;&V}i!}};pYqqU>;#n66TSxO;PdeEK%`(Ws=Z6qcJq|IZ0jkO28&+O-5|ssmT`9 zh{bD29FW=a%~BbbnC0$n!S4e)K;yIJ(mwN2Rh1?<32;M1y~Q4GsaHPgLk_#NvCZ{S za&pn-d&EZrTSkx@udzrHw(Vymqm3ijfeCEvl2QWOT&9s1*bYSiYhcWnNcx|@RWRRK zX}Ji|O@Svyo%f}fOMF>`FmVQeuCY3s2XRwrsa5hWb&8Kc9!P(2rCuTMDyzdr5s4uySmj+{| zi8m~Xi^ZZxf|y!~a3?EzoO(sj^3c;F9t{Xhu#`T}< zk71MT3RXtGbRYN6p;?PmTCdR1fS_`(vlMCb=6l$xn5K6R(A&xLXaeV_Q2nFimS9J= zIiZ=lJqjQpA_;dy^EJtiGsu*#P%}_}t6-&&3c^fP6F}OS-1mGiCZqny6J9-T=?MX< z$dV=jP({?ap;Ik40`msy@{ehjMmI@kG|H)U|ov(M5qKhkZoi3Yf$4(VVR3x9>{^O{6bZg zoOl%+)lNiKx(&u5&|W^>EV7?GFTTbkE<)7d!qda6xNZD;Q{PqHg zP%nEC>OC8bjv~}*J4{f#X(FhmbRZz{ zEPl6nw8fm)O!?M7x{EGE%fM;Y2JjL{Rco+nmFlHN(mNv63RlMcv^MCU`E_ohACO_| z1NZaQlo(D1h7I^uxL1lG6r9om<(b+>fA%mt2dibR`|UoWq&D{@Nm42#-5PDo+aK8k z=Y=|i#|F8dyZ>U46rC~HokJ-eij#%sEkwD_39&m~brWwHZFEKMI>RSxW47&L`aC*a z-|?yXc1+jTH&tH}DUtd<(fJ|ujnVjU$4}sG2|BCdIh6ADTs^`gyNB*=O4-|CK~kEN zb7i+-uO_<68a;xcdUs-n*Rnx*+y=q+n1!o;&$h^(*K#Y6fT8S zp}#COn}_J*nh{uJa#dugb`$S|#8CY${9xaNSxCR~x4#4!Li7f!{HSPDG)6+h|jwq%y0m9BuC@H3oWGgT97FckZl zRh{Zeyf>};tyjjrMEfmo!$%1C^T84)PjoHm7PIf5D|YJhy*ojGn?Bq9$u=Zat6Zg} zEknh-N>c=H@@CFU-B^<0eX9gnlgCrmFh4Y|=xM zdmKElEv#jCDrxlRuzkp835&On45I+$ZHPXIBenh>BU^UeL6#=XMAhtI_*yL~P&wAL zDux=nvE;-?R#}L%DI7a=IZpIUc&UB9bzdR`+3^`*yz21c)bX(Xm)_%<}F;F zwssUZq4P+YyG+$_32kI9HDEbrt(+CVTfJ9+Jvjxd8<&xdGhZ1QS;!b3ySF<)E27!O4UUVYKP(scj4B0y&t%?GI}L}o>zo!`#Zl?^+q~m+?$A1 zk{jdhDB9JVW!BX_231B66UFWZmNkQ4RB~hhlzU;;IXsM@{UOBzWK;HDmC7#r5qFa% zeIp?;UXOqVI8w}@Yx%GBKPd5Dg_Tg!1d`~K0FE7RQ#Pd_(RXIU(9zy&Fc&ys7h3*e zio0gmaz*{dQ2l;}aun;UurY$et)+z-S69|=4$b@*c=4R=-O7Pq2Jn3FcIXHACO4?;KINNb5{ zG>lz_vD1!?{vv4fzo?Ui4GrE&eQ* zf-IFr+NLbb#_%X^-OE}y`gmw1CtY)Fnk*B?qZasuO$V5Ii|bD=)})%DpsupSmb5QnsL;b((9#+ zgwoRF;189bCNkK6HDY}BvR#iyRzoLn%Krqb~_uJ`N^R{|2QTw@iTUbWZS-b7M)OcI*mwp z-pN-_oy_Ym!?9Vre);-~jLUU@HPB}8h11-U@Pd&==l|-G$(NpOD~WAA??0NNY$(}z zA_FP>uU9PGLb`#*%M572%ZpS9w!!MwDjbQ_F7y?-F*g2eCqHvjeyQW(vbmfMH!_>< zldiPorRxEBd@Nx3wI_I5t01k7r}c9LEs&cD?FI0 z8==f%RkG$0+cbj^jJmkWRO-!9aPRVk$6R)4_2f&dhtk8@(6DxmPqRG@9{(bhBWvD0 z@IMVg28mh=-*?aNt9r{CM@x0W`7haIURrZ09nj&WuzwakrUM71JCJJ9fPXGMEP#x8 zLvcmqLZ}$U84`p9`u7<#>G+5WDC4RP_nPKiC>?sH)G$>`5?6|cw;gLEdzmZVq0=B~@iF|0(-f zxq@Wkd!Gw`ggTbjLmm4+t!?O`9~IGNnisuTu8wnnvDl5WWoo7SAxu&xVAZH_Y)n3e zq8qyMkb?=pv;zE!`)S0IV9mmNUpSXZK*INiMjx^&wLYcd6CsQckvj67AWCa4!}ZP8 zN7%ON6`)dBv;+N3_3jN65&%XVqhNnY@8t<0*NOMtt4xT>5u0khXeaB{jHw**-PG%{ zh3Qw0k5&J-$Vt7S2?daTCdyK61sy#$*6m}zW~I$3v+bP|S*K=hDfw*#Ka=-Fv|5+`2-4P7qUpowekJ8w4cwQi^6lWhB>>3E<+ zDP^1%pH-kWa%y?3Vo-8SWK}8@+)fNa#gNshc!+h|iU$|%-}?#CR@FSw*F9<$TYWc9 zYdi^)NnpMbLI8@iYgex5Pv*It1SH18q~ChndhgCAUwnL*97;38V4rInb^iNGIC@e+ zI5r(NIIRf3gW5l^1TO}i6-201{rxG&^ITT-IpNrZ;lo~K2iR!(7K}P%ondbxm9xVm z!D0t%zRpwRgZTtK|TGswM5kTGJ#Hr^j^_AlvMoYE6IcF4T7{(2z4m zjANgN)sr}DVlSSwl^%VBU`x7@Rw#4v!}nw})8vobo&XOy=pC z^&~!zK#$q_l+^io-It}%@f;#3AUr>LieS&!)^GDHoWsw4sJ@Rsi{1fQuE|e%{cd2` zhG?5pQf6d(QzSF?yh7M^WTRu3!o-um`a4^k}0J z7ok@S_6=YILFih>u*Cgx-<;8`0bI z1Wft{z=EIij-8kLMwy}|H&d41%iVtbmYsDab2a|HW+@zlV3e`Px)@Up7>4#wD*`~D zpa|zL@slVbzN-MZoN&0^PL+s38!=_ztexEg8Fk)1?|En<$2ri*2wXlva$5^za{*5f z(VQtFqQbj>#jb1+W3Oo&9Ioe4m#q=0gW7*h)9`6o^9tVF-IxWBpzXVq zO(N|^*Oy!()@aF8pXj<+%3{}B->7cuZ&2YOD?_#UK&~#_9wx8TTnmuotx>@S4{6!r%eW?aj<5 zNVt9+q!~q*D1bmwTUhi&Q6tL;zkeUO zAFhcLqg8-6|$Y!MnBk9Ip#dWcrr zO|WSkyk<|ZL(~N(*zfrUvhy;K)#Q^NKOZ*W)-#+bO^%Ubgle~z*8}@xqQ1!E$u8{V z=Fhx8=Av0XxA#08wwPB<&%Zt|?agZSDZQ ziOpCpwhLi!{|Bd@oS}pHm&dLwa(Olv zeRScsc}B4tSEQuWfXbn@@X#*%Uiz`>r95QQ9+BMdBqQU zYQ{bT>OA;(Q75vfXOHE0)1=f^ft9(fy~`#+vrM6SNm1OZYCmmDuvu-JW&VhZ8$c`ueYkNOwvSTh6$jB;7S!~d(RYpEP5x1II&zp=mEbW~3P;I} zVoO+;R`)SJm~`imX4}i20ipguRA~+dNmr%SnZL!l|~nB1Is_Nou$SVu&9|E`pDXx=wwl3%r8hq%GyqQ`58SVREOMyqucY6yAxPJPCDy_2)<+G#WFmB+aA3BE1+ zzhW}Qd#PrBQnx`s7|-NbHsF~il$=DZ4A6(;Qap1hPk^)2WaF9L&W2~+Vf2v}N~Tg* zJDzzI=g*#JR;CQdHd#kExwEJ~u|1eibTd?{EU4T(F+k-b!}U9_4`drKe8K`mzH7(p z-S45EY;GEyrw`*YYs5*y&6HYv#Nk&^DLZ2VUn;_5$?Mg?{x%JsMtn?*wuM(b3X;45 zSK@9HL^A!M#y?vmQ=-)NCJuYvaZ$jjYby1bqIo~h`kl&HF{ohSQ6R=WFm`kDg`r}@TM;z=$^V)9p)$8|Q1n|n(*a-`AsOxzaCmZ7(L~(Q_ z4->saw_!w__Ivl?#6q$Cx1H4fNPN(4!gD70;;f0;oArK(ZhklLDWUf@l+g<}Fo0$@ zf#xhZv6!~^vZFcISKTmXHK7zr(|WNCaXNmm1bj)NTii|zVqMdgx()fETmB|Q#QF@@ z+sxw7wLH?@`;aXwSBo$EAHVn+b#u!=0qjMs!8EZ=Y9>$yQMlcqq76`#A3pcO;__Ix z1G#K(P&oG^E=;-_{6&gjHc&o;6+#>1qEXL(5Jqek-}nycHeUFa6g_ec|6{FREPx=8-m5WqEu zUm;0oJfX;%`fS+J_)534dG}SzteysaS2sE(=PjCWXGDN`W$iG zI-n;IGTc_|n z2Ont<-_UKtCngcU-PhQ!^M-qnBXJR}ez$L@eaKgyvE*s(JdcPX0W)xqb)H9K?eYOP zASB_&ZSb^^Hm=&3oH$%Ag6#qbEINPIYQ(o%jP8ERN8i~W$M0P@IdA0q-+XW4vo|Ye z4WB>qS;VK1Wo`tYDn2*zF?p;bzvES{PsP^fzT6q34o8`Nr(v zRqdGFIO;Y2mgaTxSkC>_GrJQGP7@A}aWK2<2C?fBw@WSy(_)I(mFIFa{u#+!&NC=K ziPj*)>Xt)^aGRfz=0>3fQq5ajiCA!ky-QpA9UMR2L~dPrHuG5?RAf7f1UT3mXi_*Z z^Y~bw@1VAA<6sRpxFCdh9Q^CQi>KhaYBzrMQN zI?KpFxU0!%Becakw=8Ek0pVsyaNC3D*R`W5me{GoAgvynuFICS+k9R34D6&Xg_GDw z@3Pu=aSimZe8Jq#fLP&ym``2-(GHPkv+6#~ z+uNOIqyC(@ZY%(Ie<2$OteGW@@y%Xh*B=!uVVuaMSJ?{~f333R(cayHRhF6JSJ^{- zy(f0wJhO@L;6B^_oo9n4bK;-zA5eB9+mAsxVOvl(gS2fx$;3#nwT}(x6qj&6zt%Q% zo+rK5p4WMv^jcfmc^+G9|Cpf#VaVO)e`nU((c4^XJ5bbi`xm7pu{ZbZq<5YqQ1SlGsI^=Sfq?*v|8$sbjCs^B8qp z54ZvAG3vNfBGz#-@LQj1}&J0(+ZbQnWt{ z`@4#mU2hpUSx91K_g^X~?4--xzk^y$x?7ag(Y0bG{qXkUsq?8DzicH1)GZH3%>6bT zv0G=D_S1}TyqCNPBT`=s;Xxy%9fv&T{paOA{M4?3#78r-LS>EHDp5Hri%4SARj)i; z0-|X$qH%}5oU6LLEkQsy9l~sx*K(>{On#}p=*V3JMsRW~vpe%W{w$+C#&G&Ov`anD z!Kg2GT^EHk0XnTq&Z-5e@_36(TpoTtWd;?_GRj(v?$h0|Gf+wqfAc;9*KQld;(h?< zJ*j9WcJOkxUK7bAW732FENaqPCNhUU4e+guWlxwJo(PQyz}`9O2rEoHF%DnN<@eV% z;2723ek%p-3Z<{IPYh{_!|E(Uq(#+3sm*${!cK?mtDM z!8|s>+iw|nuOXTa&tmKWUIUrl!LPZG+MY$mvk8ogSugFA#<^d*f)5BbXU4I;X1N1S-7wC zld-(E-(x!b?$znwFcs{DSAQnQXpq1$2UEcr%(B5n^|c%Ou0Za&oJCf1!Zq z%4->QYI^|~%PXUYa#P|*ZegJ?lMTr~j{>V{NZf%PAowzpfnYh$2En7$3N6K3_}18u zpjNb{bS7E&B$;$Bc!LdVStIlbjua!}-U&8kxl#e|P)-kK*e1m|9COg8Hl?3x#gP;H zr8|0n?saZ;2Ry5D2%D95JVQ;jlwlNR%gvpG$K8;L!3PabnUgp|;N8RR2ABru%NM&XRB2C;?`F-EYb=E1kSVkZN`AO?zSLc8^?aZh&sj?QMVzsT1>sz;*`+Vre?)K`&FzZ7RM3 z0n7q+k|Cjuu6tQ4E$9kaxWC(GqsUL>|o^0;Egmv#bFEx z^S3@4Sx*N#JsL^dGy3z9yt32NC`fP<<_}(cJc@2GR{qD)!-VQSf4vEyOx%D`xn6sy zk)_r7-d^%dP7v}o{(`&Co(=FF)c+M}0g4lcrR%>lWV8^}k1HZd!qa~ZZ%);($u&Vc zybev=rzW1-`aHSF+Xdh`$T=ZhaxihTAqs@stqzfW(>;MBEhazzLLer$ijSnkW2;N;k3a%iw&V#gvG&J&?bh3j{BO79WcME&xk`fFYPS7E|F_TXKitW-3GMr@ zoz(x-e*#!`=s#j%s{as_`hSr6uULp&85wl@_o5_(Y4JRdcvBW~7Qk+^qvpK*)XlS@DOFg0o~(1)-D?izl?V>FMPx?3OXu8<-Y7g@nd;R#^@D=!O|x}O>P zw*;AX5xM{IyO}RxVSaSnXltWO^)572-CwRj;poV4bXvYUq!@?v0sKl9&SlCZ`qJ=k zglF|JHM9tr98_`{TV_6b-`ok_M}#u_dyoQ^q@bF@03((a=M~#wuMI8>F*NjpbTb zWDO`Xlt|_ZYraeMK^jhuqY2502AvfdT)MZ>cIXVDJfhDTgIFIq=|F>;m`u)cauNr- zR%R4Rwqw)8cp$yEx3GBtWz3kxMpDPDidz~j-2XC@D5%FoiF1HJK;GKBD?`;ynWKje z@&ZFE?>r`0j~DqLnLT1!k7Z*P#O+SscWGhnM|D4iks6T+a12ih&UK(1&ay-Ge_@PC zRevWlHW~}&&r$Ah4OB3H-tP&F2#q#>lr=qnu75^&x2Oi0`Ev(FE6$x-T$zhgn#k)h z)=8UqEiTvE$euq;*7E3;`R+dlX#VgkSvd8EVE&xMm65uF z`YgbR!W~oRIiVlu2q19A)6e2q8aY~*_d>RhzX=K$w(s(@2uyE{z=AW7^u;vDar1el z>681c*M2%{3r_l?+4MW3O zoQYX%-5TJV@e}h0kGB_lw5JYvrlcok)l&i9fHS?eUP@gVyxFW>>u#YFhBs^fJ$}_~ z=u*AECgx}ZB07axxf1258-BPz-Gd3nSzdZlp2JE)4VsmQ&1gR>$ASGG*+dN50x-e; z-50mxo~_!fX+~D$CygF(>lADnIrx$0r*Wwh zhi9#V!FU4I``vz|+t>bm8{NK5J@lL*)9r_8KGW?seyQ79*)Q&%)qqaZ)0|=Rh3&e0 zXi%@ZoLVkYUH%jAGF`T5!JP>#!Rap7k|Vww+q;ZJY4=Y8!P9fq3uae~JJSHmX3;4T zXTpAI5$BDo0~S43B#|xRAPZ(+@@euax1C8d6uoRP`(O6~4d@(t9Y&~C@n(Ky!K3`c z+DdVN7L-*HTzmRZ7&?zKymS- zSKN%O7QKI>uOHtcbnVOCsk{#|f8-{p_H(ygdm6sr{qhNSvTsgOH(utQO98vKdpnXaE<9cOhgCa3i)&KwhU-Rsd8qRDVJClx z^2gsL11rxvBvWQTm3d5MR%rZ9tvX@qoZM==yiY%?l4ng%w{P!fHPDwxbM5LawHv#H z?rJVtlD-eJv^LqLx`6+?*7Tj5TUxt?@2W-i)TMfTB0uu=pe;vqslj}(YEfzNmQtd8 z8nLC|-Ddq31=Y z{cUr!Y*RQSyYSUT=4iYGj2C3+&$nMoacutPcHz>F)kRkn&F#9rxl8q~>zliI$k#Uy zuI@FgX?=4+=&q(%x6(}cl)fJ@Y+E6-)ovB6IR{;1<_`SaJl+uhChh?+)^+D#9Q}{p zJYzi$`|OQAcMy9jHjbwd6e z?sifW+v#a0Pcq!p?Rf=hOY{tVr9~7FISD;Ivt&ji&Hvokq^^(B356;AOBE?A6@+vM z1pFcSHrX=82~Koq?0mErw#yt{N(ik~Rv$`>tao&wf3`Ma6WQ@L74=wgYUS}AS>>uM zZ{AJSQizl_fW>ErgT*NR6B0Mpx~amZf}i65#v9jU;nndR7irdQfy87Ko#7G}0xf8k(e~kyioQf3_6NiT!^ocI3V&ye8FBia`$q=0 zU-rAZZ2Vgmb|W#oxP@6uyjg%RkBlu?Oj-`Tn?~K&islc;ZO@f2-;txE@a3jRQBEjxH=qyjlFaw;=w+91{x%{KeL$X&#I zlS74e3)yp4{AC;EH>03ySN>;|&rr2gxmHvBOD05y19ZH<$H#vNTMTPCFv_v8Z;lWO zy?Cmf#dm4PLp2;{Eg)}>&)XQ}owLonbIF@Q0JoPF>1?)uHkRlLE*II35s6(#@FX7r zAvF#?0G$&rSyr#qes-{m^%KD=JRJBhgXolkl3DMIl7(xfcVxB?W(bieT#F(ja5fJz`>`F2a<4 z!5*|{r0!m2KR}#>g2*KB)Mqk%2uEU4o`+K>nt2VVRrobniHq&Lhtfwg>kgx;l%4$U zx+58zc{6`UVH+E+?6LVOjJEL)GAaAu0{h8 zn^B8OayHxx{v=Cz?uX$Ri16?D?Yp(P@L?o=_`SlG0wn>=VHB&NLiqQXTg`*B5yF_m zj-MgcCeBW#`O)TjsB=+&4apB+Q+M>-)m%GcUJeUV5h~es^El<-j%N30O+rG_O=KcQ z{vG*GvhZdgrjJ6?d}@N?J^|Ghr zeeQD@qLTg#F@mOK;S-nYP=bcKs-X^cy;%&c)a1{0@Q;3~E7EV5>OJ|tTTLF;3yGb0 z99-RJSQFn`?8n3gmA327@4M4(4A8l+vAwatPHG>>F3>ayJ@cK$ZHS>Z=}rjV9mP8X z_7tk=0Bnc&a^Bu#v|M=aWX( zyv6Myqi;Q>U+wo@s`sk>zH9a1+V8tn4;>SUd%3Q9uQA16tbZxDX1DlKCiLjq&0T6j z@x}hJYiQhi229iIE-_wUN0@20CSK5s`cu3hgf6@t zFEE}L+|;wQt6IcB#SS~%B5TFC+dMtOOp}GzTPwOMVuM?|(fGqoKB<eD z#vhjI3+>PMCcE1aND^_{9gCx;gbVH?@zV81eMR1Pxtz<{*}$lUXgu7>8f`HMV-6De zI7Egy=+-iEht|ylvbjT(=MJszrA-4Max|m3@%dBNG-qfqHqqw3GD*oFtaB$?vhY3{ z6dC?YSVsh*@Lb2n835Wb3BR7++T+&kkLXg}=ZLN~JI>9m-PpCJP~tmsesx=7yU1&` zYqmfzUJ5R5Uf=Ac_bmBw;so|zkTl(W#cj!<&0xdl>yP#znx}S`fxlFA`@KUxgr}d6 z!(I&&;S*Z9YCCNjIlt%<4Kmn#^*^%O`ycmXlX8J1wI8d46f**bY#0uMK$xF`dA%Jf zA#i=8+ z+`_@R1sAd~*3W*Nb$K+LTAkg9DO_rR{QfC=Tv0eW7CGhkqHshvrYx?CKTLhWc!i@k z46cedkZ`{I*XTkIx?8h578;0L3nf!|k{7cul5mbtpi>7XGv_MD`Z zGdk*WFsUM|MZJ-(r>FG+9q$isJ<{XX-yijAA>-G(y zcIy=vD~`Kyi}r_Co?X|{wRvrRvSnBkBnRZ7-}8{e%!rN2>0)*vp<`G|^Cpp-%PSk~ z^2*RN<8tZn4vD?yA!Q^JhlQS1LiJ9~tMWt7gkodzHzoFtTAr^$&-6geF;Z}b#4A4KlzeU zQqX>H&{pJhv3Pr-W14-}uG%}&1T(#ka%mTVmT|ed@B8r5+Lo@R4Tn`Ny0N7zZAHFm zj^`(vNl}r)5?|z|aBgdIRm1TpX3k$sK}y!NR4uYc`|(`jn~1%&|LMoa)P=E95{b@$y_<19Z}aIWzk{;6jkzBDam~qgdwkJrHiZLzFQt`kX|WzKG_U>+9o5cLDBG1?xw@7t*45ueZbyv1kh@$4bqUQ5fyZ?eZvV+T{Wu@gQRzdP^h zFn;1F-NTU{;TWL+V9Y;DO3V=}ZoijI;nT+kt~)9Rt{A;G->o&tp70M=Ah}QDdE5k> zHJ|JR+s;yHhH1NFdGz{xI8Hc1;rSHSHB;S@X-FKe7rY0MYYRr-I<{ZKF2n0E^yK@2!SPf`$-rsg}kj&=_mEJ3@^fs4Tl@!!k_CyI7xgjw;GD`Qw8+*6 zo$zM^zq=q~yDEfq6*$6+y9EIyF+{I+PQ4;IfcGL^wue^{Y&ia-(PIjdg}vK>X^708 zzlVw&CvUhSRC~j&4C_38-O#m1VlP&Y=Xj9}k62>gu)E}vx(!=G$2BMNj2UbGWeC#N zGk5{Tui8aClRCS#jN4Uguvoh=D3xg=tHj7*E#vyJEgn}Oy5&1x-&tkE2xmdBC;X-Z zy_VO_C;&(Vo__8Mq_d2eYs>CYNZ%ko!_WPG<0Q5a2+bc<@6V>YUs-fUkv0cMQhrPX z6TAOnZDx{cNJ}x%hsxsc}okWm=}J~zgPE9>FZyxWW>mG zNJ4J;D@bs~;3rF89~)KXU*1k;R^(gAQx(6lYfhlwj^*vMb^8aW+F$pTwf~Fk_BZX3 zYX6v2`(KchYJV=BZrA=B{^icu?Q8$y<-=IsHig3 z?H6}!f1-bRADJ`#?~-Z%;VGTBzwS%x|3%sD_fEHeQmXy$chBnoh7SGz$iLh-yZzj( z_CLL3tM(-}@yGc4_P^aJtN*{HK7U^GfhE)bo3h$3?%4ih|MCekXZjDDO5uN>t=s>3 zs{M5d>;E;`?eCFp|J+pj+hw&sx2;3}zuL`^^YiTXbF0zOVHu3)vf!&`hTl66wJQ^((O-6wZB_d z`*YWK=>O(jt^Z@Q+o$`!eT#J+t~)BpB@&n{1yaV*XGkV^$DOCTK5xhGEyl+L_xfi5 zCU4sZs7a?f^Y#_Qz>Ho3T}j?$zoJ*q`7~Cfp3Ue`mSbvvSvgfl3#ao%JjOX_4bT;S z?Y`DTi%GjFqdIpv%bS*vKVQoF2(!KSJ6_k#a5>dS4f_CX(GIvoQ_E|=pt8D`@~MTI zYFhne)(QhShXO=8+5<(zoW#zdQ=15?w~7y-VU@j)Ox5>Kbw}unmW0EGrW5qVoxbuQc!Rk}*LVIcU5^}d7RMuDp{9FJK}nd>mF_)Z zDSCPVpcV+!C=q$RExr2(ucZ2vDbn|@SZi0TW)?~p^!!zf8OozI?we1Psm)!jdLsA< z94vrtd|8Od#6WDnUdKu%?;`ptd?FwYNr z$j2(nF(nrJHBH=glTXFX+e@(yDZlUfQ74{i?@m%lyE|R6WZwz5*Ix08;;n8CfF83>faye-?#k;J_$SyY3LTAWged& zuK8(v-o6v~{DTk}EqSSr$LFB0Jw6ZQdt3PIEA)%tUNyZ*3ZEC_4Czj>Hap<+aw-n+ zxn!N;^A;=lllc5KfMw$|O+Uzc^5Xw~we=8JhR!MGu^s8*bLvvGWL0n9!=r&h6jQ;s zW@Fu`dg#iirvK}`87X!~2MQ_b<;Oae38-d^t7kvzrdqo}FIxkuiBh>KMBjI75X7LG z2dt#;C9#LMqMF#K5X~YAH8Ks|!@wB77J(~6KTvAB{VZg)lcK+wjIFF-9kvTq^Xz3&t4`-E_Mg-?eQ}iI`Q~1@&G?Cv3`J`8?EGz;b$F#2YzbVfVg^K?0_F8*5l-0Vy)j!^Q+IP>&35{ zQ~ZYaHU9kq|NdFjt5xv_((f^pfX6>TDMcEgp7SkxpTCja-2>lZjm@&ppuVBLzAJrw zpIdz=bg1v`OnrO$`Yup?$8M{>PeDKJ9_Z`a1&v3QLS%Y=oThi|Az)>dEVxq9|I^R! zO)G44f0SQ70grSqXt|D-tm)}TcZ`XNi`{X2Z)<)ZYNOA{#!t$O>}M{jLAcV|>@dIY zq~c(HJ47%>_E9VOlk@u@0G2(!Wk17s?2y6VX9Yq}pM!dWKMqSejK?`2I0&Z&_d5UsH|aCO3E^no)FD8L{#W;hT*tFp?Iqqx zJa0>1Z}>SGoyzNI$k`a9_(lz5W&uQRU$(~fy**EUxs6@Q-fHN(%U;&a>m&WxXz z-@@jWb`?Qz*CPyaF1{CioHo%MJ#=8O$|QtE78G&Q1Y45b%|ZcZXzmcuYp$;~nrDi> zS=Uq~d7_M??%2bF;j9(0$HV#}+@YkY){2qS30hu9{_(MH9BfrKvGs38NSsP8ca6>0 z84Wn1mRgnmhO21c$!s^Fh9j{FR&4glpL8n`ycX3Un*vG2LceC=TO z01G8bi(ALH*GFW=o11oIlZs{{96fnasafxjiF^}Y_E|;f!EdJ(kB=SkjFc4NuGcbR zYi;GlRIUC=W(l6RiG`V}{P|H&&Pb{km5z@cN;z(`>N<^b>)gxd2qEj-mwcBuf0kF# zm1|c5bjiPAy<1~BK6l6R9gZGT5N5bf<}L#1)36>`QaPe6RR1`dE-z>|B4|t4t_=d8=ji+E40B$TJc zugx95YmT4QST1}k7fdSK|E2D!O9Ulbob$PQ$_WM`zH{t|!48Wt6gj5f`Jr`9dKlbt z%RbchRs%iuk^W?4dXuHU*Mj^ET zh%&ZZpK8O$0e4F&ip37HYHUeA%v zN-`aCzfo&^GOb+|w1$pQ;z~vyG5vTZugGkCkk@ZsvlOPbUyhD?{GdTti5^7t8Cpo| z|JVT3+xyVA-=|DVWTJ5NyMP-Q_-)Hp@NnJ-cRp&kp8VAJvOmf678;en1|QBL!QH=0 z$3EAQUsgn5*O_iKTl<;XpUSwRD*g#w_WC>IIqn%Ufg;QPL;iec;m)ZMWrwvbg2y@E zcAeZJR5{zZogvF~{Ecsc53EeI3qs$=X~@il8L3wM=ea{T@^A6SYFjgqmdVCVkig?3ZJ{)-TyC035&uC=Fi#^Qq=jyp&g!MG(@EEryh?K~FAJbF zXaXqPSd)}%2cYyF_fRe)-PYV%se_mkJK8#Inh5uzc6`}zYTLYWzQSrO9v%6&vd74x zi)7HC$3}gJg3H}+VaQ9C^k9sbe6@xiq02oh2=Rl^?L~ROjTwF`FsahROSJw}wI;4n zr5BM=p_-+&+WNYp(9O@1uH2nmRFt`mN%s~F4$m`XJ{mFoEQbFcF{Xp!=h#Ta$l+@F z=oVd>yV&q}(^7g*+F!IIObx=o^-y4H1Teo#Pl+N0;cje5ADZFPU!B3ubIwk z?lF8D^myZ@ab+jx)PyQWtgFH9d!4(D{b1stg-S(KG5h3=^7x+qp#~dGptk^=Og3HY zER)3QUA4~MOLf8dD_712jyY*~KB1*>+2}Dfd9+mhyM=mgSARe159;ojRd>xp=_)=8 zFC0@=QFd|}o#j5IUQgyyRcPiojY2l0Z+-wEi{b}qFf!-MrNi6W`43>&2rqBvuQCk~ zLeKo*F6Z0L~`38 zlb)VvkNrT}U*!!7q-Z3dAL~!bU*%EWr~OqLRr`~^#MT}1^vG%SXgkl%NGBqPakhz^ zR4}GtDke_Z`rKQ~`a#!ed<5&|=!P04r?*1s_nv-FA{thaSOu|9v_!FVHQEwtAvjn? z;o|lAj2z_q1jjLMAVGvl>Zhc%gs?j0B4C$s#|re);$hXP$l9kX{&4cl7Vvw|KCZ_TP(>tkni$65t!Cg4(R zN&DYsdLG0h@@)quk6T-*$Ch^}T5F<)d;Sf3ir-SA@M72YjA+Rma|jxHddkH+Wf z-~fut^Euz~vk-MK$#;w=7bWZdlgjAzbd*>++zDgQzH1BHo&RL4>X(LQK4|Lz0x>aY z%9ckb^b;mH^m!4T11DPys7$PVIn0%oknlP)~1b6MT#rqrIQlU6B8JYCdD~= z?=`~-=H)_E2Gw@4z@^3|*13F&7@@3nWqopT;^!+JeQl|Pur_xHTn#vumoMCwASN<& zTb}ZQ*bpEDg9R$~2)jwHo6(k-(HBu+@!uM{>2b!!-}*6AIn=>2ptJ+INwn;jPT!eo z<)E(HS@x+~_|wR`38cplH}L0szBS)#7=&@rD@ZM(IpRHC1~5r?nXtv}i44#L(P6Z# z5tcVekFohwo^;n5F%jwhX;1(72#D(0(b#)U5ZAVpplR9-O>EV5B0vlO9Up(oDkx*DNB zgw2(^gUOIZ=moa*L|Q+*B63kaB;Ss}|3teY@b1=S*)^|^UkcW+n11U>FR-3Xmh$=O z5N(lrg#i)M7It?Kv?NX>%)w6vVyo@^-r=3Zk(x@N8zn`mQ?TAx$=^5c19XestA0nU z#~d0+iLGyARay~yTup!$)mzJ5^N@s664TV|TqP zK{9wv0~7(r@kn{P6ihUDr<>TQpK-+HVxzUd%KPlxPf|O%(|7{)_v9L3L^14gS0bk4 zo=EEJLY>EQI9gvog$slU&~5YP8+Q_0oX|6b=8N^2^#!{kh9X+i;2tt>$NCLg(V{k& z%=8^%-Hi>7aCL1xcM6dgQt7%Ww*B~8?3!Qb9b-X%Vs z4cb&z0e+`IOHKs!U{^jotbG7zfFa;YNge-YgAuALh8i@Ay7*_xTs$XOC~UmoVho*) znOAzoMqRIS!}pF#joIJUq{i%Fo*13al1!0U;k!RDW-qZ0`!UPc>XRO`B6`to%xn}Z zB2Ry9tJ62`&bMs@8|lhiy6aBsMYm$9p_44;hi^#1&aLw3#X}%jC7}Lz$>&MUB-Q4-FXc_v*PX-v#*u%w$ zj00$P-JpUOB%ldzCgiBbhtYNflLY+@IO!BJD}qC9q7nq7=0 zJzy6YNQzx_J1%k^?1B~B7=_y0DQI(8P}v+i4wRv3faSK!vE&Ogj%;q1} zWHcIJ>aGq*W8uF15ZA#n}MV6$!klzT&n{%u9f>BI?Iz$s%#T`4WrecJqpUrliW~OPbNpsUa~$4hwM zp$17+Sv5S0?LzzF_xj=$(J77b2YB25wxyK*#788PkUE^ZJiY8)T9C^scJD_LZ&o6z zKhHvy<2HjM33jX58rq)M>${I~PcbfRZoT~t@s}RT`kmU})_qw_Ts1T7ATHx&1(L@k zVudj_!dq5DKc2lKr;!q4k|!X;&6ualyAFFbk5+BL?q!)DS-mNlC?cy2#_m4SBB_O&sTgXkYsBFcu_LYzdu;-VW92b z6;8G}JD{i6V zvJ@bJe#Pwlb*h_OH1&MUtGQ-SJk0IK#@yE+t?>!_cB89oCX%j;?bxeUxl#KmZ5ac< z$`}>QR+lQDPclNrDlyL@Fr-S%CK&*#;@fLHdwKl~eDCU=@j#o&TuhyJ;4v5Yhus5S zvQ;(#eaHIbL1b0&0Tjv}y=?reJF!uDoKd;yhe^QDBy!DE2p6t7gt;~P{nXrYf3f84 zuNrJlDn**KsSBvEkaSZtJiTQr86{F*WR=R{JQ1i8ahbLkcBgHhkxV>`hmw%Z;?R}p zHpW^T-L87s+9>GQ#^2biCUi)%Tc*fPRwVDLJFUno?Ay{{k+BdC8bli(>0YDwLV2#a z*I*f}l>WyF3vAVpm-c#sDlt4LOmzoXF;$bRf*|Fb4Vo9X8$%shVo<|yhyumvbP&Bm z`MKAZ5_r=8h|5Pu0@Dz8HQOPNN|q zU}ap_qzcb>sLBU|9~-o}l{?Hj9_&`X0MB;Ycyv6D*2ff$iH;xa2Ctx)0^h5S3w*Hx zcczM+Y^m~8(XX-m0@@=0K(d6Xo9NbhgjtWS+dtf7L9c`>AAqV0-BBba0z`FnlT}GB zm7G5-&SId?ZTymZhOPuWflqIqm3}7AgLpobPc_e}{Qu$ICep_6d7S6e=Q8qqLfS^s zM)UkvzVG6rg*Nq3{o8s@rRm-PeKJ$R&liq*s=HUkAAOa{lw6&8tNF(KyL(6G9}BO9QWru=;kKL$A<~zu)bHbg{QctJ~1+s)<&lq(hO! z2pXA_$^C%k&bw+q%e}4x>5=E1xjg^`~Yf-XAtAd()2HolC!pG7RojDzRBPo_y9fU9p(WP4)w(_OsH9 zk4jal(ft?2$ag*Fd4R1_z0b@IPJrO(Yg3%ERBSHCCmQMzy?r^cbY!{scU ze>%U{^C6gj@;Tn8KH96T;PWriP9gs;JU_tmYka3ZCy~Cb=TusZ{QAhV?#KL%9}+eq z8GmDw@6zkx@7ND+y&iV-FD~wefP<8UJ0>>WVb+`qC4-)Z|GtS>*b$4HX?lTC=0+`SqYG{>Vq!_QCka;VPT)hifU@oYPXa1uc&E z|FSh<0u3RfBi3D2P(EVCmDAioFPpo?c*V}q`9^t?a2(%5lEU!wcfT~Df0nCiNhGnZ-mo3XPO=q&plAD?D$ zd4%%+y0yG0y!a((H!1te#qwt62xfX|IP!M5?Y(f_#-ncN8D92rxNTYaz?J2(FfS_S zAyD|m|xw!a!5t!|w}j+&jzW5?!}*S*xOf*Ppqx=-VG zlZlkB8IbUIO)gS>`QgxuZzg)2KkKt zEgbDTjGG{baYV2~dF1N+iV+`I?_XZm482y)bvrh(pBeFSWrSey--d2Wz^y{Pz>y;D z9Kmbiuo4LU;2UxsXE?E|8X%YMfm-paw=Q64Tn}Dkup$`=NA;VbyrQ!u-WGdp_NwBTErT}Zx&xH;)dcdw`Scr{!(`t{9krx3qI|4b?rU zMxw_T+nZIOPIs$R=Yq4(Yr2O=Vu5iSG_(X`4La5;YmL_sG;o7GjFH(!jnkOmw4s{t zLCLP|Mb%b=(P=xk*V~437*hIE&a(UcL%aE+P{}1*pYv=tR?OT2W2(oXvlW+GB|IwMP%|YNVHXas_)$Ci&_F4Zg z_ANy!%06~aH92hCP5Sk+gMG_abW*sM4b-;mTNd*^ZQs(w54X&h*t$br|MEY?tDQy- zLA=^aRpX7@t}zX7CSL7PK4*X-!{7fFuQo>o!OxawX>W(0Xs@094+VYz=LI!f=`&rsNkhmu{cK`k#I;A#@w> zBOBV=A4fJcyZk{G;MdCQcR|+glst0dmyJ}&0aBB$@?yeDH1Vh9>}&qWf#}ejH@WeDrd3&yY=<1dl4j?zX48Qr;!a~Hip#>x z6;{lSA~-zK!3&yw-^JzbU{#T_LH0*@5?0Mt!JCoHHW{TPk*g!NmF_o(n*w5w7HJX| zx$nlMbQE?P^9mHJm6qjo9?j~nHXP}KIO(l`C&Eu8C_X2?;xA(g4tU*e{RJ3K4D+c& zdTz{JBo(5Bigz;@?206k!H8Kw^QtHwrwQOvhnMf68YGsQXAkSd{ju_8p+_+DGMcu zDhc_f%{}{!$3mc`_Qp{XjN2Kw>d@I=QI;CCBF^8!j4=WYEn_G&RsiGK2nuO!B2%ZV z)|&{a8)`qmS504(UJoVrR&Mv$a13`U4DE8Qk(Dhr<5OzUxEE0a-apd`2Qr?d*>1V| zK?pP?nq^FaM&#r{5Yl2&K}(cW;|^-QkZ-z-RnqKi9H$n*$i$2E#$|S z0&Lp2Wfk(E#`S+gxoUh<#YKjkYtjy(j@75Bv||TZQ%I8j-(6~u@RQ5BB#3%17## z1+ES#6ouv@_54cxh>jXSKKGRGBa{)|UI$dfQJz{9j+xB@vTj8r?(QeT7yGkNeGTeQ zsI%CEh)7AV?lRU9HEvuHwOcCPkwck3eKEA3znh)a23A#uJ-cy@`qfX}8G7P3Y{_)_ z<91egz?as!mL~<{cpq<4YK&{W41iu}0NgwOp+|KyX0a=n&Y6iuGWNK7 z3&p$l4oD`WWsMDHCW2{4L)kl_XDZ)mUR}`DE*PX91)V;Jf;P?Nn&@Uy$X7E-4SdQp zQtNT8YvNM>aVvN%$L|$Ees(zdYN%f7Yp7zL+g^kdeOd+a2Y?JW12cwm7w)R4r;4yd zluORvqy0}IMHfmMHk5Ov^=_qml5avi9LSp0FZ{L(k1T7tVjz2|#HkEU5v2soKU6K$ zeKL^5yNES$hAh77e%@OY@v@yH#HK?P(~82;K1;eoHX$-sL>|^Cs=;%tj>$_fs~SG6 z2@WCy#LNbB7OQ zS0pYNW#sjF_<6qdx7v=fovTQd@R#$M!6k+gR=2`n-`$LeYlqGk~ln)tFZG-0}3c_RD)l4z=oR19>fPZT z-u+rYo?x))mQ6p&W1~i{WQTUtq5Nd8R-&(H;q7_gINIm;e7So-VlZ2bt!FsB zbXORcv^}KZ!ebb1LehQyH~m_!f!L;ZVjvB;o(!&b@fli5%deUJ{Ec5qDv4A+gvtkj zl2rr?=IE%SI5CCcHvyLL#u}t~eB%%vv2$BT$Le>pjtQX0tm`GeDP(fhwdBL08bPR! znnE#8G42w;mTl01#;opAmRpZS$7Dg;@fHm)ZlWccx@$OJ713)-!+4QqR86bGZLQ@4 zIi)aDpKxp(@9Rs+I?pspL%t5Tah~LF4VE*i50VXaOHKpe?xp3@M)J}IzP{T3lFVY#tY(V)05^gmy=3V8U)nR;0e-y@BH$0Hj)QJ$@ zjJf#FqCt8KW-Hv_JBl`BBbPIDEDXFr2`8p@gHCxKr!GOD)4z-?s zO&;syS!OjD6W(w?_Hp|G`jh#g60Ih3rfa{ zRMJd%KM%(O5L(;}Rj{~Tjfnqbvy{682?U^bungE+wB*uWB5b0FkGh1XO3bPL^rtj$ zLo`Ep`9`U?k-Fe?Dx_ffi>jHw)#edo?=MlQbk&F<1|2%KpnQeOS5Zc6GsWhR+>9E7 zJcG#tIU9J<`2v;=c*DK=J-Y7G+%XMP-h^)7lo-T?muNw~C>GFpEDtEM z$QEIusd@(}Mk8C#d0jGo5>i#TZZRhS?+3F%QzcdY6}^oH_jQliaF$4YkWGxb#d+!c z81&e@y6#^DTA!ZC{ws^!kipnZv)jx* zQtW2f|6}jX|!??$)EG}@aQHi1iT)5xoYu@j>Bm}je$LEjVA3qfC zz3=x~=FH5QnKNh39EAdV_ljdpRnUt2m#s1Hs?-p*9Q-u_QIXiFzWE4^#XR(-#d~~% zV-DYg%@BGCU{D;p64Bq=19prIM`c`kY`lbXzG-xYl8ful9qo#<~kr>@tk)Xy~ z+^>21)EV%&UL{%l1OKH~-UJCAPmzGbG4;jaUfG|c4J`J8rJe}~TkRQ}ugmEY6WW#6 zYc--wRFh>G<_rh+wamhq2MRZ9+&UIxIztfg&de>%Y7SLCLnIZpof&I|P29PWRTrwP z@|UU_EzXTZSHX+M zIfd_s7QPC*W58jKE?mk;BZbdZ^cL%6Tm2HeJJ{ePTguB#EO)s29*A&#= zH1?wm9k;|Rv}y412DiYz`v+a8s!KFa!b~*teuW1b?6kQ=LqG!Pe^bNEL^swBZ6l&jvp#B`D-u5CkLb6LD2hmn2$rVOaGF>qD`Zw6tEn zE}M!PYgzQ%-SbOXOqWG3+`T`6q%x<=qVski%p9rV){xzYsqKHV+!QSR&kIp_OLUXs|Z~4@C$t zGv04W2nuI4@L&qxil1Ud!vR)Ai428QG;-IUQ(&YjvLvJ&_ty`0qxq)=3J%^f);k0O zBG5mzMKZT`@W~ug8%$6Z{(+6aM$+;_fY6IsW5Z*@7`+Hd^eME2V%lG$AHgHOQFqaK zLmac5^TnqOX&D)%dofANEI-eMT`7~(wjE(A% zr9Bve^s%9rmKGB9W#kA*6<{=U%~tx2e~;$Zemu0RX+9)vgtTcb>bESn2}>djc%fY# zM51GvMyqrj`|87eq zbjV~!nf5zGny#5 zNf3Js&ts(cY~}MY@=1oy%ROm?32`G0Gehd)HG~0^PvpXeex0E5%vv(F@C5hruD4Pm zR`6im!LWV3`|1rBEcd%m=p|!%S*I&aY9|+4~M48JdFRi_P0Xvi^4gB&#wZ zd0s!f>~*GROB#KG&GHE*y1{L}!>5~>h8(j$&_4&Mmzh|2q`w*}nA5&vR=uF%*U8Q! zw#*37Fv`T5zn;rL=!Je$gSKm`MosOXY-)G&>I6-7^Ibe{#@&n(JK?E*kc!)+p`R|0 z3)fCR`@+knfxXAdFRhps4vlK$PC0Z#q^fmDxa#?jkk`XxyI{POhDyH4Ft9@<7}*w~ zkBpjOqb|7V>o(|>TDkTPLvJ~!xP0H_2G>aEWxAZ=JuH{2c9xmXJs$uFJnVRf7IZbG zempXcL1faOO0ynktQ-p>b@M$i2@YUB0zkYL~! z(;4ox`si{T){JQIvMd{FQjV_tc^cHtwKps3m*xLBLq;SwTVLFfseW6u5qKM^Ju@M&jH>fO1w=?tr!QFY6ko{is1$g93y?)`Y;-3xfVTP6DpBOSrm$Jb?IN8u&DGqwTq?tHqD#xxi zWVh#_3x^LL8!aan35qL`H-fgCPbF=;B*lb`4&;D}cxTc632o-(6W08W=jDazd8vqw ztDjXv8L<_p*k#Mj=N1{a6PXbhYP^7j1Oj+U7kS_25YJU`zmCVn@}|p}i**lSsGBLe z8S_D6Lq=zOr77BiYy6_a{h}Yq7G{YpHfRV+#~)NlFS}E^{W8DOPJX2af=ceT%=RbS zBDdf`zv#R6(S1QsROp(KY=4YOdfC;TQ}BPLSFyam_?5<~lFlEo^dHI_J36FMOsk6@ ziMD0HPxuuo{0jT0E2yJ{mZeb+ES1&9d#k*ceR#UBtNp4+`Bgt;NXfqH)AjHw)Wr|+ z`x@_8=;l}WA1e5}MuxPTsRP?tUq7R~ADh#9&ZHOGPL#q)f5ysaz9G5ZSGd!MXI)Rnay=-LpH}h zN75)vvJ^#EwVva-SCTh+3o%li@oz_0RDD1sZ(_I0ELGbOR*4&*mjSeJF4f|9N=glA zR2Db?mF(+Hp^H!1nm;|%+{m|4TL<%PIp0dRj^y7-TgUV7xm&03bRB;`;MXZzXYuWI z{;I};t(COOk7xOD{njP^j~8$RahpipcU-vzQu~Etv>a~zPv`*kH@=1PEBKPjCq?V> z!-*9Y>-n*KdT3U|SiUrnbneQANMQ>*$-9pFf&we~QL!nwAHWZoP|p@0VJlCCP+;F1 z{@cAz#!FOvI+B$KBquP?wz5!^mZ$7*QOQ=NskVe5b&4|B?)Fu(HT7WoC!c~%a19Gr zH!ffE<2msNX$N2#mRwC1X|O?|nz`E@pvHift&XCtF;~-CMiBOj>L0`Qf5`;Awe9xT zcQ0?8G-nm5$Gw8ze<~%~{a$?_V(x{xW$e_KRMP}+3f_GX9U3dCM!W*v3T-#;DaD04 z?P;H!tUn09dwijqfGh8^u^Cr({|2snSic#k`=yNz?>Ey{%WN3MVqfZwJzL!#5QRQ~Jdx+o zxVZB)0E1rTf71CHa&h<7iXF}3=jiL@kH~h&4nsuv-1!J*E`)IVX;3~t1%2hj&+wUY z!RGuQWXi2>+X6AAMV26HT7kLFeZ(_yVUi~m;^MO+w-b@dE&jcHg&7AhO+H4v37y=B zxHFRRgyPRr6xpwcaaYe6B3>CLUwIxr%fN*?ubYf1ou}md;T5@}`PwbYJF=2{c>ruK zo265d&Wu$rz%Q3<)4^Qdn8jhT-1SAts)w>@g;{2HIP+j0rXdW@6Yn1G6AJ5!!_@Cx z+x*@+9NdU#@BRA^i#da_YjFP|Cvh{&#|oY^lILA1BQn?-q=L-wGAbxUG`(qkYI*0||11j+PRScD`CbwdQ4^61EF<%~d9`d~Q9r9HRT>MXV20EC@ zQ<%vBuKBsn0AJ(&xP(Ws@Y?Y5t;Z0hKOB9Y!;dZ5c-8F&?dWkmG=O_4Zy6VNmn($_ z)z$z<)|4%c0P>N(evW0|3g|;#OVYR9@AQ6j)u-W7FI47Tk{cPYIaE0l@OA( z33skgWwW%R4k=WdP(&TdPhtL9tCiw{x3vDHn?#LBaC??&?oUnTcQrz232D2_yd#A{ z$yIp5b>eL#dH}o;&REnacEJGHrmHo&(&Bb~;{(#(L)P+HBiKh%2Xlr*xKq*_pBoLeG{B_$pMnPA}!DO_9lVvqY)LfcMz6Q5`PpC2!E^Sm_Z+6Wqs^QZ`8<+%XzV zibVT?7F(Jw4K3J{+9@(Mgs$nV)?yb!CUSq!?P55;U?rU2v{jbHWH{tovm~%_7%+HL z$jdiwHa~<$KUl#%7!zGgLz&w_nVP} zIFr~Jh>hx!4?UJ@i-IFdyXJ=nY(aN~mv3WYeLg&#rLR<-Q0ZD!ul_hQO~eV?3=Z*! z1x}?|WVo?jt9zdUK8ws~$07`T#B&UM%@#l3jSUW#X_i7pFnb1~+#Tt`WW6_QIP$_6 zW^lkTr2{^g*LT)I8tCX)c|If25WjF^s2@Lf$NUn=r(bm>pI%2k{imILy5VJjJq%zK ztkYgT)oESl%co)y0n{WsKGX7PL{dI6(Yh|<~+>k08Rw>8SnvVwYp~X#znb3kd{(X!FFgi@H#AW7g#s{x`*@Yj)t9gZY z?e}*T8DE(b@}Px!m@^nQ_aN)57WctAiH@`vf$Clf=61xp&13sC|EhaDXSu1>!7M< z2d7rh?Zk?rk}}u7Y5dN@SSBL~PTjIJ7W`SNOh6p3SkL$X0dG- zhkkoWHg{|fNi_Gf_27`Y=yK%FVh+fm7QB5+yPe>s4x2(z&`zc&q(D=-jLAE8rob@74pmeC#<;obP0Na0(d zSO~;v@jQS{@tr9LjjFk+G8EfvoZFyS>#PQJiJa4gjp5MP#?r!1Lf3!HZ#7_BGN6*J zE0o5^=-^ zDIGq)v0@3Dqk(%3LY2K$!<)H;SGmadrGkIqnaE7Jwnd-=DjBp-p{?4RVVxkkP{@iHvn!zNKxsZgHwbWa&-F z{TDLyo6eArgy8?6?7y3fi#-h9^R~QMv?UjhHKt>yrLju^j^Mf2 z>DwZ)vV19j!4XI_DsaIP~8 z-$-&&{1VUfInTm|O6v6eJ}r>(jevMqZKM0W%6K#D;$lmPiGNg-j4GHr zmUk@FgYswa;now#PDyG}`a((tPQ&4O2sug}2TA+JG?5d%+$fYWokgl4P z2aJ7YLsDKx60490s^oP+{6qZm{!$Qu^e057blCQ?;POge7HI0@p*=}blB&B={FGq` z$W!|B&u;yXMNAI!WkE%4#VyRtI%L7DgF#(`q_Z16a9-!Np~@yz10yOHyX^}X*_0-rKT*bXuDX%;WreFlRoAIthNPOoZ?PRhXc&vr zy8NVM8skkGoHNEd9B$v(Rw_vbXwha;sn$u_L`&X~7+HF;v6E!}9sEOkcRmTA3KGLLj{oS|n$RyW6jQ znO}P%*Xz7EIyP@Gvem>A>x03A1)D2pu2>;1c2P=ySbeEi@<#kzTvKu#A!yv8SIhWa z<5r83I*q~i-Fc>NC7~>X!S^&2AE(Kp3}+^qKL6ZA(_c55XsYAGjp32r#-~z}DK-8l z37A0CwBKKX1k(V9n+e&jW}()i<=TKRSv5wMCyv3I9}&sY*RCdPzURqjJVEY!-<5>? zpdH)0tSJ<$F_uT4L|(-|J@l^N!*q+mC=OwVFJV{BZh5}j)!6T`1Xo-bi}(n zC*q;_!)ZY@tds-uzNz`iTuFPB`Q!%7lLLZF#3RwN9AS+JtlZ{a=?M_=Kx&v*$=7uV zhv#z33b%x+-Vl_9t1tE9FBrTssDM{-jI7uj-QTYiz+C4hpt;c`tG=x8i%`|?D2xFH z=z<}%DCYl0MUSFA@2ZxFH=BD~PUUm#7MZNO%4FRMySAk{91Nl#gU|y;FbI$-+U7oa znNxJC>gzL(2+R&Azw!V9meaF_tKmb|y6dE3q;B?LxuXZ#Odwzb+d<%+)vH<=?Qz z{$xaH);Hm*4_cT@kixw+U)i7GN$l*5%or*ABB^gq9`EyF!PGlho7PfG4zd;YX}+?@ zFB2KGc?k0+@+N((WgWfH*|Rw~z~ndu-i-DX^wCcoa;A$xepy(%S~)tP4vId&z1HUUH$1Ym;)tMOa7SLaA8YmLENA6i$jZa z=ZPxa`{+|j_<2cXwclw3<5Vx7sFR3SfgJOrkqK6%PNZ;UD0TxA9c`3N zK#`(UIbcI%DnqQOE{&F3h$`}^(F{Q&BDIcf|R=qoVq)nt~+>xSr zIug~|pIHq)#2kK%tvaM^C5YIUE_Cqalzo{_7w)^IG}?FH(yT3^1r>q7iW}#N!w1A3@5;c7Fvzh=I z?m5uJgvTGOh|&X$jAb>=ub4hc?q}QlvHb@e0c2LuB2X%uX_B=jRQV4>!${vfy(I{B zx1HF+ErhynaXr>c)2c=oJk9D6dG+(ifK_wmXgeT`z@InEm@qakCtvn7hbZ$ANW1(C zfpkB)%%yIXvgJQ=6;8QA;>2$&ob}EuoYZP`S`#k3ihca;9wc6Fa1ICBF>=}>t(^}2)hj~T+c^UcS75sw_x09$C%|3wwLH;l$*Ev8!R7qS}1GT#K zb5v%HiP_2VCVpk)U|r(pXYCJt`je+MpU-?gVbifa_=INA%?pJ+_RFHD@^|-)%G$38 z@?CLGD^b3?`;GdF&CPXRf1$MWB);PPrZ5s)m;Djyz^>EDG<@t9DS=!azGl)(5?jD8 z4m7g4dSmIwRFt)l*3IgVf?K?iE1V>>S%*E#ga?$e_o8xJHs;_7WWuytwC)hn|SiB9|?E!*saLl2+O z1;#jd`Pv?#M?#^8PwPxNj&3i+7UXh}Inms^mSTzKpNAe%v5I#>50A^L+L~o@-IBd+ zQ?j>A1QR@S^*7ej&#qo!J$*yB2}=)G)nwZF>TNnCJ$okMwI?6V7T(tX(`#v!kARnql>mpRup@Bp2Y-OCDFp)CH%dfzt8Y@1AkxPZ+gP}{*%zdKb-H-^8Em>$=_IZVJL&X z(6c!6cSb(V{moAN_GyU|SI$4S^}o`c$V!0qM_~825kJWHSkc`C#2}#mqz^CeaZ`8Q zpXDR|$2PzR@}l4hzu-+OK|pGTHv^mm`N7M(DkHdb5qbSr_UV*(P1>ll9(8H{D2)({ zmq7j_Uw!+=*C%ha`@O#1@4X*xTYlw3ZGUs{vQ2yK%TI4t|MGVA-)i?;_0#zwS$X9q zPlo$R2;Etia@w#5$Vg^ypB(ReiS8?vJyD6}fqC33o-p^o&RMm~t9qVCl_V}meUU4^2o~(zD9Yg2JdpP?L3)!-Aqxz!RIo5mJ z#K*93DW*IzVRa5PT?ycP%`Bk|mN0r~Z8;gMYJRSpO5wn`n^Ky^8OzHU(D7S{UejKP zR+5>*CRk5q)bF#y`fAmiH8}Lh_`~H!vZmszF3udh_@7JN=aXI}{@_|9!te2M^;iSm+QZ*11^+~< z0ROM}2;iSiC5*ic_}{z9urX7uouk$=;I|bwDZ#&WhqkR3&^x`J=051M=u2|WSm+9o zEas_FTH`m*lt1D*?HaFiJ*LBhiYz3m5S9*wtJbzCjn)8g^qw|;4~SHKmsK$iCXwZ8 zIgM=7nK07C_+iZl5^SRvzB5Rvl=zXpX@dvD^p=ed!kPHyCP1*}5jgu*_lxT8Ak(%1LcAO+Z4iNsZxhAOWjomRJ6^wU*cc5d!N=3cvg zhh1j-#`UvUB<-h)Xat2Vq~y z*Kqv_IdE>LjB+w>GQux?{`2`IR@8C_x@pXtgt_Q;0xvR{31J8Rh~M^EB(YBYXSNaG z)4!h-sdS&(*g0r}69bxuqqrN|*FVcelH$bLGz{?XuQ_kn)_#qj+D_juYNyXnZTEYp zcE8)(5AEwur~R}({|WccZkk5eBl$VM;L~-L^zuFVnW#wfS2{oEa>@&JZSD*HY4^`o zsw$%EN_Bao-;Op9GP?}+8X7wD^vTsHDD48tM+o)}F!qu|b_Lpte^;djd%pV=Ru;(#rmDmr)7-V3dQV_sv7XYXH`Nb20eA!SAl1(683ApgJ@9$8>?X_>}_E;{X zB+Ad^Mk?B`{y3SodY&JA_76S>+h^>uVRl%!q>eM)r1%O#yJp!DRfoUQeLjCS{4-5HkSVAO)a0L(R&*B zppiyB<`2h8aRbj7ChzY(;0=|ZX-s^w1omw(I8DWhF3T8VWC!{kRQ3 zW%4WV<@_Z0I&TNxEIRD~zKwe9!?)_)0KPGTuX4nQPN7=}Id65-HgpK%_VK$tfNut^ z{5by3xwk$38qetvzHw>z4o$-M4~i!7_dHw7mBb_5QnwurJBF{}KR*S&6@P9I-{6kn zdq9tU{QZ`ejlR2Pz&F6)>-^K<>;IGBJ8(PrmYm%o{z7T^K7S{G?*fV@@fZDA`0Mi1 z;af~AKTh9k?rD#|mMI;=cd@|s@i#UJ--{GY!WaKY@O9lWd`!k()|s!b3LCc9SJ@fw z_ig_^bNw@n>(0UoH%hp>o07wvB{9HOMk70$h=TPkM4y);7`$WHo@$``+x~>E^LlcN z!(1%=i*sEoV?tTD@6XB{GV0scT=Rqp4SBsggI*LF=b9)QXx(}TScqbR`!UX6`iI8YX$+ehVNiUwi3>2r7LEK)5XqA%J4m@!U*eXVvV z_aOtd(S3u?Qb(_8)C2<&2I?_uN0 z6v$VZqD%_p+9dY3>9MfC&AtCtFdyuJR& z;GeT;!3X(A`RCN?cKq`Q_!Iv;sWoXzrKI?0L~;b{-F`L#_-83aGx%qU@z4A>eg3(3 zonV1~P7+~uG@KvepP_2W_~&nb+@61SHh4Fz&IB2n9cb-+JFA7Eb-)0}*N-9{ZLYBfz{u_H1-7inLz8YpkDE^W)Upzy5vdkDYErDD|dDB=tcg)tG6HNGbs2 zvECDX1nb!7gZ2q*jfuPh8Z%!`K_6?DJL%p6cx3gQTz3&Is^jB*I_gz)js9(SM@gIg z^1vRKeY2RX*FU8H80^B|x96ozzp`PpHx4h==tPOl?nIh3URp&_Y|JsS!1Ky;(@7o4u3~j`d5z#ROg33A4TaNR1yr(>&Jk_mP=uj z?~h2^Z+^aYVhQQ0uewU!S8?7r_1oTIy)Ha}RFFD>%Vib*4?mrqe&cNUp$jDz`xi>g zBa4^c@I=`qgb3jb{}8+6D^4K#e0s%FoC@BB*)Sdf`qALD9dc;x1hC3B3W9J-8JjaP zOBfBSn44hYsUimp*=d!s6Njp!)^{V`@At3MB=fSjJ|P(=fy|oS_8@pZGQ1EUd=uak z37${jK)7}bPJjM%3iobGirk6DC`FIZf-BYcz)|SF1tcN}VeE#`f@++8q2CTxBX;-I zvBT)9+RqPcL1%o;XF%g=J@oMC@v-9k)>nIjQA-iY%P=n$*T&ZzzRvK!3I`S*=4Brd z41rK_1R^ulE)i>oQ^1gmN$Q+=Yqy=wZ zLdpSV@E+7qnC5=^Bv#{C$p-GWqOnCKHhGdP&y5M%>X=Y1_zm8I-_ayWrg>nS@iF1j z!h#V7)$kpiPkG)F1ZWX*oB{XxO}|UeK5#qzTK1ADwd9>3x}!Y|f~&R=Aik0b!W4r? zaft9j6r%AuX}w|KM8`%dYRjhyG&>jKm5>~1ZZg67yt3$g#2ML#g5bF<7Y;q(U$T+~ zdod)kIw(p>9?AbCZWTF!hwc&lZ#nu=!)D!6Pe7(v-p)_yqx(oc+35#A(tE1(XOCx;K2`jb!Q=RooOe=qLE2x6KhT}RToTKShh^ZX*u`>=*1M-qR73Udc|P&)(Pkp=68hs% z7-??2qU;KIwlhOBE?((wRL5-o?#k~(-U*Z(QfJ#FZTid5r?OX?I3bbNCENS6kR@-j z+1O713$oP8qYlVSDy=Yp&0e{iW_|rH;C*|g4(w3W-OnS_|EwB*$XwY@{|ny!DR|BB zO)a`PpgMq)cUtT9+Ya8F$9D+to=JGOxi9c78oU=#6iauU_u%1zS8#sMBhB#nvbj^T zG_r7IMX^pzKAPeYqUJdNBGouGEpJqAR%!1q!c|wWJ2ZnNzxhVV2OjCuskun`IiF58 zP}=)j-F+4bl`u0~-9kYPzBZ25r@7ju8z@`pqT(*)Z{_|6E7acRQ^e!;_Ji=}>XY=| zA^twTu|2&{HVv6vDbywD{hA)jcG%|rMYD##LwVK?e^2sA_$y*H(H4K>c7(r6FfBrr znk8)!Ih&EsDHk?}|0;L>Ot^A&J`g1G&VKmEuz92pth+lf+rV891I(~_gOAOftWZbT z6h>`-EdCe7R(k(GZC|iI4t^J}Oyaj=|1kWya7laoZbD3SFrO|R8{ilFpJolet0YnU z`DE^J_+v7~#0u}rEdBxWzr*>|!~q+B{_l_<-n^kbyvKD6?+QKk`QdJw_2<9AYx7C) z3eNj^Bz_nqc>mAl(^(Jx7zY&i;JH7ZATVt{?QNiB&Zn+cs3Q*Ocs?zC_DAt|>u=lR zuS;o%^u9)qef*tGvxdLbV^Z@eiNBc?6aHkcx5eN8-F({P-#>=U4FCqP?!@C$*lggD zjyoWog8B5Y73v6^KXpD0dnSqB9nPnMSbO~5BZ;}aemc+xS?lR6nl=1hNzq_Fv8pou zyj9lpcJnBdK2MX{e^Z1!&I+dejVn|~(fVQ5FU6SqWajf@Um^p@RP||@*Ozdk?CAA^ zwI|08bvdg2`l#yD{;7bT&J%STxprtrA1k2RE{+(SKPb3RVEy^9 z@42A&2!{7}Ps^DRoTuW%4d}oz!w_3tR~zC6w+nDvevgSnoPCSCruH#;kTuljT@^1u zl z)%bhZE~09GU(nkH$3U!*&DKq_MWic?qf!)#70W`7A$B9QwsNp#Li+#5ic#=8d}t9JTQ^79TheB z5XO#=ov78~t7H-?3q5cptni9h&C{W!)WU*XR<^3Zf1rzh1he~{0lUF1HfnH2N#nay z63Q#uyqJZWH?1192Sapowbszxdzfs8)A`cUJ-ID#@B>!hy+G(uno|Vl<59n>)pnvJ3`*c2BF^}S(X(dL!F#q-L{_7L?PzML_ zRBc%P!jA2YiBO=y&da$IPhm@{9~dVrt&uT-4ulbaS5k4QckE~ zeF~2td)|SpwFzca_FLDAZ%XRQymPbVt57;#xcC?rwGmIzs+!9mGM5);%;iUT3tRq% zBMEmLh#YwS@SQR}u!@s>JRbs7{SN|di3%Jax_ugp7~JQg39dD9sad4}Ej z^hY3?KPK&sWsd1XUP}BNX`^U$zZ73dU4QPb=^AvhuZ^PB?QCT>x`bg#P3PHA=7alf zuIem1>6An`r?(OlYDM((5BG`x+R4I7n~i}E^bd^4{MX^d`O-n-3fjql4QaV0%0tUt z7MTpdRnoVMk}69`fgF${$=w9FEck2PRfhFoj5nDsEBb7K34$fQAh7b6J|>2k zTq&j+PVc0pw9}S;%Wl(=N!DV8H^CPMx`?JYaob`*7UgD52;_maca5SP+R`sW9=yRR zI^;pG`}NWNR6g7g9>qWM<-tS#>uvYh>mzxsxf9~4$%A)yxc-@%?R0w5bX)~ zx5EXM(*0q~MLEl>@a$;2+l?uAhst^5Q3|6mBXC+T$7#K;g+rW*Zt`wWqa^DJEm(nD zwaojg@EEze-k%2qJSg>zmv_b0GLTNmqss}^_}nApK8zK8Oa3uQoTvIz$xc(aGZ}tq zbVe?$iv*m~0~3Q0&&g+EbU%aev8aDqIO!SB&i#v;Ft;+)2m`|SvU?^{FH7;CYySwAudED<}We|fDV@flvx(7_g6BN9W<{9z5%l7$#wecNUKRYIs>?{oB|-mQn@%stI?;OD-YUiEe*moUSb z{-qk2*YBd=fgLaVVtvH!*Ns$94Vsuwf%Fw_ABz94A7bJZL^VLvrG43Gu8OOGb+VwoCjYhY6>2`##kcV*G( z&7XVtVM}lIl&xp{qvi4+#sF&$CeDBg3(W)VLO|uPOdX+STmlHSSW)K&2Kt zcPEM8=g6pYBvZ5AT|8Wc*bG>mIGJ!{*iKub?s&NlxOe3=^clMDc~){N{knbPrP`3l zn|rr}(OtF!qFV!Zp=J2QD9N0kMDL~E{UW;i1x&?`+2$2;BeQ2vQtf*22sm`js+Ya2 zS}Zio%`s;1x80)tbHj{x#@Xl|j5X-yi3=5v$m25fy zIw>X`cb}#Y|H_9MJ_-1h$ouCX+3UNG#Bjl_v#+lW`v(onyo!;^myy1B_JeTiYmwdr zr}VmlN{=4HeA2G;^7u~dOf&e6?rcCJcLu;}BTzd-$EHO%%T?LQWY+u@H_I+>o|t}R z`M}vR&FvZNOFi-jSFV8(i0%Vokf7f>wSXw6gGK!Nshm znAH0rXjLXTEjBY%gsk{(>L+$7_vKbF#9P>e(-6ZN;zC6c@Q%Al^=?k^ZoIwwhu(2# zsE?XSdRJAyTgc8Ce9sW5UXGfG#Kw^^t$r)H8EYfaSLUsY522{oh5>CIs6hu;_uXpK zLt#d5A~|bl9@smj?rB=f)UV~?Q-dlHmod9VSGZ%%Vt+ma!+YE+Uc*Wl6yh86!IgkA zN?{!^8P$QP>feI>3tl~S6m>IOSr@$Q?$={t*d#+C`IWu~V#;R<+~Cc-yg}FsZf<{5 zEvB(#r{?Z@=t1JIivy%{oQpN5|JFMWC(xM^z$8f#sV+Y&xhKmSP+8j$zSiERW0Ak4 z`|^5S@_R9>2zmzUT=Mc{eL~oH5$A-!_m+4LUvwKfJH?G|%X#|2b!Kx71+Dh*LwiWt zZl4n{pHN*EdlCN)#nL*LjzA#d8lf@_YnsIzurqkN;?smJB&xP}k_pf4SF}m@3T{y6s0kMw3Q4*Vz zABmOsg$cXQyA~7U85@}0T&xE7ra}Co?B^mz5zT(GCIDId?LGj~yV<1l%u1MF!pG!q z=H4dKa9VZw!J>AImW}Z~2NnGhovsThT6~@B&gErukJ90DxxV*KS{~!g`<|GTvl*t) zTVGNq?u_7fvp;JspW4iZaIB;bGU_7gK_4#>O5zv;AMz~{t#kYKhe%$*h;hCwJs#^x zG#_uDCa)p~Yj|%kd+LmRR)U7R)Q*?^2R_`}yoU#A^OdE{P!=+*+Nu6j5n!lBQdq5{ z;<R+N0O-o=Y>iO3B26rUrMO=+#XF0fbtTc96%0`@7 zdHGmN+?%K;>uq1|6uP)%i5Z7I^Fx(6do$ERt*v|#FYJjZjGtz@0}miZ?|3NhE}ypz zbJ#et83z^tE&lT}?fJ~gOEd#v`8fKhTbl^n{Bm>B&Gy)Nrr?L?1Y+!7^jr^BH?It z1O>wS)ZG78V^JhZy&Kj~?@FpkMrf0=={6>%SI|4C>aR8GUH4>F=j%SW+!XrOzE-_5 znZoW4RS%dq^J+gu<@P%Kw<2A?0)23H%GZN!6rfbpT5cg1;k7)jHm9ULEaKq~l-*jF zpQ=%bxj`*oMXq%_`!Cw?kl)E?KpyZ8q_Ty!#OF2!D)G5uFF!z3sgui)7ruI1YxrHX zTrbI=tZN|<5y|yMCApoi8g+1fV0l9K>rmn#TD~?}FmFjLoR2|li@&q^5|3hGfXq6U zW@VER5wq?<{m3LOI-Z|crhh!pJPL5#yR;1YUU>=_($vjix|(*q_|t|jW2^||KizG z2MUIa3f#JB6>i~WfY@s0fRH08axbG5Vh`I>ylJ{Gb8;r*((sQ|h8Fdu5Qi}l*R0^u zOShg#$RlyZ2#tL(#bFY+pFaInhYk_(jD^;o6p9lgmh1^qByJ8!(ac$O>z;?7Bp*^s z!Qp;8e2ZVUMOr>tZUyC_ipfKnEgRjRF|Xpq6w<^rW8~Dc7%0B<`1CLM;$IWzijxm# z@(?v7v$gl8;?2)#S@*sgI**17zne@#2I@gppVZ&NEUp{0AsqtT#Fvr8oMGqWy%pJ)b!^n%p$2P65fXvTw&7Tj2yLgkM*9iDYP7v#Q6=< z1S#<13BEM{9<425v9qjQ36Mc*LMB4q+8cqQ%B~xG6SoO+{Vjb^ctpO5epqb*-~m-} z;%yVs{JX&|EmATxEsNc+tW}o7YmqJ2joE%dMMjg6sRh+YZmM}*3#u>+D)uvBm?iC2 zRFz?EkAj9>X?e)I;WQSi>PU~~2j>zP0P>oT1|%)69y{*hi!b=~G=`O&R_n>y@0O#q zl#TaTo2ChOKbR2A_X;DrbY?BkxhuccNSNy7WBwW{gs=!Sw4^=)DqQ&85m7$p3 zW8zJEVWjpZcF~lj_%E7Y3CFHr515N3Cw`%;Al^+_s0`evo zW~|S;TA;3Xk``zjZ=RQff!meFmEZ7Oav>wob`Bs;3=qUPaTjtwx$eCQ$BtvM*CaC5 zCI_z!lM6qQ<*yAO{aLRY(if2RED?WA&#RWRmeP3kpot*=JV`cJOw@4pCb=lN*Fo~| z5{S?+@8kFK!+^5&W8;(O>0-8Yy@>%{b7n0}=u zYWVf_ffs?@ypf`{??n)oUzK9~x7iu0378&kFgF7DE~(bM+nWwy`YN07u)ELak+jc% zvHTFruR?x{<;Mjq|Cn!^x&JW>FU|7%1}s0_XZfk=4wB6O?__>{Mu*6>6r!KD+yy2303ynMLcP3g<_vE_mG;ej8vn$ zM4~ULiG!LSFO8j@RXW^Emr$%BC=}*pXu&{!sr2oU&=ah{*9A^8UlyM*n4F%-mBU%D zS5%VeR`R&#E+o2@EN*pku{lNT%Vaeh#4K=UsQu`@!Xmb7Ei$qWJk;=)4IkSeJ5W5t zD&PKK?cFs|lA?ZL4?ZUGGW8B0&t3V}PDQnQ>+clu_sZ~ctE|=*D7E58VO=x&kaOe5 zkH-$WbWWd6d~+A}1Td}?K_GEFKL}nP>sP@9H7|713LU6AhMSB!Nh@@B zUM9_Zn72`)_(0Gu6O_mt$c{HJHV%tzYA(tk)5Z@iV#mHyq&Kljtkf{^Wq?+i@2XEe zWUF?6Jx~alU*rD37ZLO}dk~mdiO|CHnF#TPnhmBe19rQTX2q|tT>V6`T86$1jFN_V zA2gpXeF;yC-xl7gmJU`+@`PbM${E&tii}B|QTW4#8of8*IW||0*_|)C=P7|(uhg@r zR&b!mcO>NF;S_y;b59v)tO6TRnZv?G+YBwX{SdnLe~5(9qRzX^-wAAThwY=Wn&yc9 z$L+)~+hMv=Av4$zc1VdtUOvkjTPAG?*wS`*lPt^2lzs6b@5ERzVfV#ak&MLcQ>PFW zCIiNfR=^W#gZqqghrB!F`S^O^9P(~lfoP@7?5cI&g=3cxz}XsJzOi#SQ6K%rt~B1Z z+hsqqdy6**R~lE$j^9F^@PN0|kGWC!l$O+0#w~-V2Ui)l*j2_Yc9n5Uo2!glW>F?} zm2pcYE%LywGH%fxIzPCdcqP}%)CX4?AIL>{ExO8>&Q5LNz3wsIJ1ECB#U0&a{9>fA zLH8I>YM{V!epGB?zfM$tmR+H?(^|$7>p!zwiw)=g4ELw@?dAT|zOe@cv#DLrT0c3p z-#`(1i?R&39Y)*pvI$g`tP6j0jiVSK)P|2X=I}zI_=y4pOV77fHoa;8~U4R_& zts>-Ai{Z ze^GSfN5v*tk=N`Gn%l@?5sd})c0?;aMgK7y)?Dh-?VY`obmN`?cK$fu-(Rf-vbm>y z52Sv=b=OZsUA8_u6w_g^*M0Le(FWbG4-Vo#HR#;@1A#KV^ba-!Uf4@B9<9W|J;;h1 z#<_>>*#`ILUV-q@HLUBRk76Hp8!how`*r)OKR&jx$+M!>df=9=#|Mu zzts)4Y#DbYDx=m-8BA!6@2{rWYVG&>LdmUs5Webg$Sgr0ovR@iJf@G>v^rB8SYRox z1@aZ9ZCczLh($LwBs{XxXJ?Z|F^-KE_c$+v+rObCQw=2DCBEKiako(@?fp=gV8Zx|OSm*U4MCXoASOJw|agmtDeFG-w(k)Cxto`{Y@C~E%ib!f+1A=H!t*={c+-erSE#tmRnQpb?y93 z^(eYz(VdbH<2>};`D%7!nVOx}7=PrmblLydL%j07$Hv}2!FvNHP?`@@2Bm2r9mvfK zfijgHey9HmHHkX`i1T@^gAHx}BY1a#;k5nv`!KP)>C<1#-3!=8M|S$5w#oR+MvKpE z#4bsO+xqdD6-$%BnWKM>(}&>8I(mVr6L}|JEyoF26o4@*lEsRq00M-6)IRdQ42uoA z&m94CtjD}4^B%O?ncFI?=wGG5vfkS?=cwDuuY0+Dbbo**NZ>k*CPbi`t0bM9Y$@EJ zYJIpdH+ll0oHMy0?!qTnqgmF#EP@8~+CP(ZC?0Z>ig=pz5|ML9|8F_Mlx) zpwbu?A$~APByzq7rnq)Z+uw(rdERRnv{LZ>8wX`1VB2>OjV1_tN*)0rWfczA8q|AW>cF0#AO+Qm7@U`FuH@V(y770 ziB`A7a7};f-OYJ^VCCF{nV2yy-My3=8s-$^Dhsx5beG9A^NLpe3OXo8zG9g>9aj=G zs1pqaLxTq7{xV5!Xs~)Wi>)*Q;Gg`GVAvKTK*CM^ML>XMZcYs?w2LwO$@Ae1fzt7O zs6)N&Xg(apKr|o3hc+LMyD~i=t`N7yie_CcxC$P%kGx$ju=((MA@kv_x&C}m?H`;E zgZ#Re+ei2M^KCvXp$YL)^*n0-=zREuQD{Ci8S2@E)_iErGddhUvF&_V6{E!+%!iY9 z?Pxx*{bQ}a(LXgG;{T+PADa)m$#h^0mm~Xw`S2Mq{pfrMi&lR8v8Kh7eKake^`q}P z@2)|$offIAz?kjGDvJi0fu5G+BStly^mm;|Y+}$F zVOc|f8bH3fUK3+ZxGalR$ObptA0F;P_Z#kU)=1CkYZGIs`xP}*<^*Fen;3QObUI;T zJjAZFKQWfNVwy}611BmwzKFMAVm#L^8FUOixinD{3L8k#;!FmbPq<^5h!%6a)SY%e zEw!B>9nX*CeMV#*;C5Pu)k`oS<pHGDOyLCi_Ak)QCVkT3W zB2$5p$=nxZbqc`rvKuUvM@qS*hJBc9M0Swj@K8z5)VAa>Df(br^6w^B*C@n0>dA!T z_{dIH8sO~&8+2LkCUZ$VoFKc*?Qy%Yu4r_;Jto(|(~dw8)kD^5&Xu9PN8~82iyxAGt`@kuwp=G$ zIHi_8384`^@BSl$j)Xy_Q)h4_f!&yd>jR6>JPOGjlq+G|>UJ0E{bK~KGow|p7CwEG z1WUwqwsx}bB7`aPOrRL@b*s?o-jOzm&FujY+B~*h-ZQ9%Pn%oYb!RG(jrvXF|5jP* zdekjrcS-K1V^v@T1&FjE-4dAd2AU^{GTQdW2Qi7Sq$bJbw%Q8D((1dZ1)I#F<{Y)~ zxhb`xf1e!80K7Q$g!KL471s&kj;4 zn8ii@t|rA=IwKiuc)uYzl;SLvOLEqDf5?~(aLqP15P)pMdzsZpau*h-j*6^y-*Oqd zVT$!UO%U_uwn)l@v?=+bR+|$y?c(XHJ`IciPfDHq3!po~hfX=D#`-y^mIkS967b4D zc{|!$(5F%TB7M9fLFuJfGav2v@g)uYJ`N!{Csh^Ya3 zvwyOMRsxFqfw1*18irarN(`S0%#}fGtHUp#wUBG0pTLy-D&>}o2Dd31lWP_ zPKgSP6%HSkj6{f}rN8(GHim8PIEiDg z`zgdAX`Y3n+yfZnzJr*&I~!~goXSFr@2;yjK<d{Sy83lRuBo@Nx5rq?BXyYMahs&~94VYIOif}bJGofZ@vFVI zW5?~!pF=NhQ0HU?7lVrKngN11PnDzHFj8j2I+^W!&DToz?G z<{xP3O+f}+1F333IOLMtPPmV|18}V98Y`Z+-?jOj9xda0@uPLtd6O+qi|q=f;!_i( z(wnm%h*HFFhc-h1`BXIrR_B5nda(hzqkD>=ZDxF?_kWasJ~|xBE&+;^kE1f&ZAG|t zAPw@Tv4ecw8TnN-pHP%`IIrgC8T0AuuG^C(HH}hM(GSfh=EQ1u$k%CR3g#1|^ykwO z@Di^EM#;rZ2sg&9Iq2*w$;bj3<#V5x-BPBxru#Mz&yw=6W9Db0w4Uu*gW z#+4FZzrjlc#qCw#cIreV6IZnK1&dS2rob4K7(H~`76!UIcrC!T%YXz;Xtx;ywThtR!D2I&n;H^W)#(wNRM z#KVQ}gcjBC4smAAFqZiJ50< zTL-%wW6&kC#LOnuKR_0tuD&pN{6#0REXv4ET-8`Sub3OTg6t!n8TH7Jp)%ho)9{0uXM>e1yYuU4)s4^y2VJ0dxsW z{4qAv%uE4cSimF+0^u3nV(JVRSfjn`hgb8-O%u6x*K?H#aEm;d#MO^%arTF9|M^>+ zS#Y8;ht%<`9uT(7o5|N!w-WP1+T}IVX4(CKO`-};%`#Ss6&>5Qoo;F;*8L^i9(EI^ z^7S#Rcyxz7DyyX4;;@&!Vy5x4c_r)ZFbpt@pS#gu@-*QDcJbSsCe(%*mc44Z9@(0> z^BG>>}7m&KE11##>i&iS&a`5T2>R zv4X_D#>-pIpzu9b*c?-j+0Za|O<}fRnaEL#(PJ)3+Jl)7Lk@|VIeDf%Pm{3yHNVUd zhxR4a#>iT5O99&ta!8m~;&}XM>!T<}sDc>ZeRVf{I?-efE4NZcOs&SzUeCeofFiF@ z;qqGyvKMg2EE&Q>S+WR2fyR(6{3i;)AVYo8R#G?C`}0sSNvSs|a$z5`wB8rIV*LZD zkpmbK8{B-ViTqC+`AGmgg$K#Hs$^|Y;15=5gB!{FV=G4t?L1qej=$HMs7sQpg4d$g zRBJB){&E{UH`%i2Ab?IwpK@--@b5@*om8djnf{pu!bsqrn_N%zp)HG3+vs*vv$mdE zRiUj`RCUnGKj}k0E6m2kl3`MLKykA=ZmXp_UjJ8pO8)4tWS+yg#mC$HtTQj64&_4y z1OQa{YZrC0lNPV|iT9V$Wh4Oq2U=G}pK$^;L-o9;3QBh(Tk?e5vgmoJpZoUrk=p7a z3|&+x=9AO>_T1(2gD~myI#xoLU!I|WZqFB^n*y5GgE^1)@hf`Ny#By&9>D!|XC9J< z(Cy82dsuYCGA=yG5Ti{qL0c?ukBjut{e@YG(XTInJukI6S@5X;`b+!h{tsRY$FEbu z#OS${O4BgqkGK172O~;%*(1YB8^=60IVm-sbgU#jxq;_4(^d|gw|^PM{6)iMlBUT> zvl~NfYriTk3V$}G24=vq{fdl(o&W39Vi7z2%WQU>bzef$$e z##Y?`fWXnvi|++*9-yn}+$`QCAHCo|n(PD z`%Ab_XmBBhkVNpWd8lNZ-^wJ!ZlXNulzf`zF`EkRloP~%8zc>SXrx#;aGA{(I<(B( z>`nz9zxZo3My@Jf_)Z#z$7(uBq^?9&QV>ADalhH!_dUHPqgu+m6L|v(63B8PNV}+D?@McFNMH@-OEfn?!$-sA2$EBn2!~OdFgIGKdBsxRW?@e z!JeiZ-<2j^MA^VgeU~wj3_Upt(#p{{^wvr@?!Cp=jV#~4M9A0Kkz!ULIjz!2 zno`!+%hrD~#T4rZ|IkM%n%y{Hvl~du=3QMzQ8;CsH&1@ei{O&!Js2ITXQCR4v%=~LDc z$jUuL6f0OBvB~rTA8y)KO_0e;IfpH;yj)(~2RD#;HT=Bf0xHf==GAo}n^#pQQteQx zVHZgEm#Dj#+&Yd(K{=vr4P`4j#EzY*o!>}~0lLtNfJGH^iw?KCzcAg+7S%4TXEM%T zTh+K*Hwp74bxS`Pub&NzD;&#M!SQg;8`s!ABC_i82ME!2ogy=8Uq zNaki8X97Qhp#V6&!Cu;Xix$jc_Fu?Ew@iiQ7h0;(4HRy3951x+Ej>bpE`CJ~^^Pm$ zXejn9Kaj@nbE4$4vvo2A1Z{MyL?W-i>mf0paM}7v=u&85PE!8XQdqw9jqXppL>S^} z8FVraktnDoS)sP>ZVaqc=F#^inM*1`1B{iuw+aV2vojeh`&N#*+ggQq!|j;K%|_r! zlp?FHw1o*-&In4m?{i^bCM4bHrpwTQynq6}u_J7+A?)2M@h_@+meE_}eEUnEoJvlT z6rC?KgCGq{g(ak`@d-wDYcWnII;Yje@sZ#G1YNq1kD!n2dBFw2&o}*InRuv$N9S=e zJ;P8P3h7A=gQ=^foF7UO>wcPT;iXn|EobcjODE9Sj%)Tsl48vw_1aVny4x1BPq-xC4N zWM_u;n{rLc`la3NtY5ln{lu&o7us27>NLmYfx4ce|?ywxn-o! z5a@4WL?O@@BhZ&n=ns>{1~Id3>Mc1vU||Y%AH-R7ag+r55OQ~=1o~j6O;VuG;XBM~ zwGm~*N6X-3+0fm>hl@E8zCP}tw zb-smk5Cz;NXNz?8ls`b_V+D0=LR0?HF_b^o%FkqZ$Dx>_)suL1nUrj7{xYUJP)MSi z@5=&wb!3=S`X5GORb@KYxjP-}t9^y!>|JRkCBt^W zWo{93JrHFv!w{nESZh%n*W&&Mn-w;A`*d}}YJ7%_*25K4GEcEqsr`RpFk}C}qQN{UK!6kFeO`(M zh8PJGZh(fO1sJzXza@3x@_<%zx{HidPyGT1&@3xhH>($SX z$Ul`K1#H+GJ94|+ZN=B^*0*wN*U+`^F+)NRzxwFU!BFU)S1${-qlBbm7J~1gp&d!b zM=)tJq+{j89Z1L9InkYzj(e^7snU^1-IW_{pqbL~Im26vYyDW`%kF7?nsn^l+oa=b zN1Jqfmk)RO=b6$mhXU^8NlEFLrSh?YKXo8r}Bpu%~an!MNJi$y0CF3slrQ;fjtG3c{l^#ht)~lhU zbbNvzfppvjYy{G=S!D4FmUZ`~3EBEy2iaA{IN6xnL9S^&J#kB ziLZ*kkcqh&GBG$`*w%kWes2tZly3@SFrQY zX!#p+{m8$d{1(A3)5nICj9sSmrEXJb3D5uV8blYDy4fe)lmCRa?Fc-%K#EHFLHp(j z`Gb#P*&pso8xQF|I0xH=@a>=BVoutp7T=qxAKpGR2>1#1I#7^!*^84frre(XozN(V zCwSHV;yHuy$&7S(Z9DkPZe7`#2bg2LQAg)9ts3;DKVR7I8+G(xzA(y?x-n5+b4L2; z{$rw(^mt7oZ_7y<#0Ga5;7X^n>VtX{n%o+>9Bmy-zx{(j?UowU$dqF@J*X6a8ot|( zXUd?C#`D4_I~-35T?%@vO@BPO$?@PHO^+u>VCi9|oyvG{bi#^68^Vv4Yh@T6b*>#p|UZ#Kjl z{M&*@FY(Bt<32>P3I2L3vpxI|@Z8}4>f4Us&-WvdMS{H;LJ&BN+ucG>Drr0!Kklb0 zuFEj;wgg?5`rx@y_DLkAy0k;6P=USGxC=9z0HV$vVA$rCQ!BdB{Xgo?JUr^^iu;KW zjTM}@#G;}G1Pyg5C{d_H6Cp4o6OBdOqbNmjYf(XPL81Z8I8IAlQER1ImDUYwMcfln zplTHbm#PKa;Eqvn1r%l8&-dKltOT_0^Spn&d7jB{yUV%fo_p>&=bn3RNs#3S-dl}3 z24$|Zgare=Lwjb6%Es6zDgM^)0X`QK-0&_k65lQ#&VjY{b!DS$Z=I-bu(_qvm-HGYZP{SNXbA%;h{gvCDy z!}9pj%mKI>OEuu!BD6*04^J2NSkw&1t}sNhwIm#STyNb3x`J-h>Pk0;c`{yX1@cVQ zr4Y;$l@cp)KFT=5R9_uOMyVvXci6edL~UlSSh&ou#mi;k_zG+RBY#l06~rw*UaK1& z#VsC2xhA!Q6D9473l>zQf`$G5Klk8A*6-A~%>5HFgE__BuWMXxq3hf`@94gFDk`jv zX+ja|ypsvXj~=M$ru-Q$?t~9zQjr08bvcv%uZ~VHtT-MKjAMAnlJ?3&NV^|tndL#c z8$vx$d6T#5F85s`!(P^d=INzg@?l{m&x7Wn{|Zzstjwf0X61U&O!r<0?j4i4d`OH} zgx7q{Fn>Ko_9~))cEiJ>|K1A5ih~NwMrbj|&}!)jpr~C1aj4opG~uZD_$uaw1@2Qm zLODQf+w&mAW6J_Uc=lXc+x&dD0(;en1}O0^Y%2J-VPQJ+ZA#S{FE9b(GaW5rN$?eU zxr7h9y@tI-5&24*(l7N?eTfx745!JW$?6M($CLcyxxwSP_E<6|oz=B@edpx#3oH59 zyr)s=CwGIjO?;*Fq^!No9c+e(()js(LysNZA0#v;hd@bbc?VEm=uOubFJN>wCNF(! zcXlG@>{sLa-TKaP<|OGv;89YIBvo2p4eW;-qMi1;jD+B5FkiiN*lB+#FHt=n3kgJ3 z!jpS@xrUmptPvgXDxp&Vdm~|1G|2M9pufXJ{+fyTLgmAosBK$c+Z%7DYrAnjt8GhP z+s!<=v-4`}Mr{hbTp{LWn_$c|nb+RhbbUAe8aYpv?*YiQ%i-H=zq;X-#u zIP~**x;;T#TnT^#b-lc&wdVRvT_b#5&!Z2}Un5mlWnNux(r~qADT6()HBB(ag7y05 zPsh?(_b;)A`28n8FvS$kDwz!?j9{ItIukit^IB7fa}`RUVvGOg^_;ot-VRF5nW8=n zn|U}>&q9jOtV4vhnvLeoS$srGn(JB-)XiS%r?mr^)|k?UWlpyxMi3!x{j5e5HRckV z)hKiTPny|++q{{Lc5zUKgqlBzh~xV`+=t!`mhV4takie>(<=A*nNq?}?VFw(DL=JX zuD!e3={wB3SZ>*L;oiF1Z%>WA-`)rG&E_Sh6De&TqzWFg-oBic!7Paw*~qfS7(tSr zMN_X?K=bgE1eMeuQhn79Kqp{F159$8PHEsW1uw@$j#c@;ZuTPaRX>YU_Doyso7}`~ zYBO`Myi&(lsYptcYLKo;&SF&!Zvecn*gzt6as?%jyTa{D$rdl-Op;_`Y%OQQwq|m$ zRnLk*@9i=CD8@&;q>MW}g{L#+^ur^bP+u=9+DdGm>kpZ0BCr^QidDKNR6c*~(0*SZzlM@s^J^k!1)#MF#6G-hB#x&pgTkuKWL+L)eVi0b z)6;DwNu753@0r)NYeABS=ao0F@5LRbeKKF_x|pjsR1p8WP61Ot3Qav($>Y`A6f<|1 ziX}-Pn(uDba8z;A`7WwWW9LcVgreoNdWHmseg-3v?)p+B@`x=@#Jj#e2&~0>FXqBD zKb=SsG2HiGQrwjv7E`t%R4x-}`FiQ}GL4`Qo~b}C3XmQoSfB*)s-84T1oXAZp|*J9 z=Da2mqj~}2NHpQYjL?L0jisg$8}D5sh}1dz9m<^|2#i;eOzfwFm}mOXu#G#(xudLJ zEu1TqnYQH7W=SCN-Ukh#ahbrxK31r0fm-WAq^OT=Xg>{lp4)y>>EA&?aQ)gw&Gl@_=1=;x zfb3NLYxyLB)l0@>3eWqVW8YwEKY(-@pCrr&IuK}?J5~q-aVNj4uGi+X2@6fOdY>2C zd4}U-1^N^*O)ajAYu?UwdAWYdKml7@0iP?JX0C}lt?!%s<}QC*D| zmOw9pKr(Fr!J@Q^Y*594Dt=)_sIp{lR$)Wi4esVPTp*5#E7^U@L?O*0I+N&5sXdjQ z8d?3;{K=X>J>Hv7)Em7k0Ym079GI}A-Ybhp3a@(r)spP#t6TtqY zPiKJT;-D^oV7Rg-&JjW6?gV*JfXzkD)Zd2iz`+$45le8H+m>wY{dCt^1(;DB`<&mQ z`G+3_9@^j<_u|Wf$Zod=BDl>=w@77@^BEdwz4`{i8wf&5Ad&_z-J!x_^Yh2&81Xug zAMq9a_Zm2ByzBlod$KGvw!2~}Wyec)Kfm8!+piVYp$%{s|62gqh7XA&GdmPVBrcG4 zj8Dt7`r{t>XEvxW0?oSM=n~Xd+hlv&E**@CR_iys;U(|+EumThG+GQBax^eU2efEA zYTLVdTD-+1@@4LPD`I(;7AH>D5#?zP~@oqu3R=T3`mC-AmkYy0j5TA+-I;O(ir9n$BkP}2og zj{-j}awj6ZFma6!`#JFXul*eOf=vbs+^bxrt;$e0QBynyhTSBWe4}Y)t-Ia6FW@#+ zejMN1e-@6HEM+o}#$`a*cV|<~%n5c8Max6-Y-I@?W1m-boag06s=j#1r?~IrTe?oP z4`~O@Fz5yr!?+}2?%~Yz*;4oLkzzg=-S+3b*dskr$-o4IP`N}gxAY_M3-KOwqIung zrk-e42SEQT5DOjIwAW$bV1jwqveY%fm|B2uM@whkm^fvQ1saBcoH9S0n6)9?JFmco zFiub>{BDJ_O;piJ$7(kYqF_w6LILj2FY3N(o=v*8Wnp27bbzXh_td0WekB*T+hPe9 z@-cXXk8VRv+IDci(k80vlV&>@x({i;cwLRP9SfyKuO|G=f)QqH2Q$oez}WhayW$mZ zI}o01b__NxT*$bRh{FUa_T|k5pqmH3gCXVqY!iMXQX@{8BP73o;+Q%o--sal<~}S* z{f^(^{6_Ih&qtZ_T*Ky{`9c)f8KKx`Yote{oquC1>I47ZlILVuDfG|WPsmMgQ`Rnh zPbpplS|&ypr(|1|C?#p&pUHUrZ6*Gho>I&|^PeAxBd>K`j?eMWZ1dtP=#vZQ`Lb5T zOO7xLkJe8z{+S7Ba|LbB;dk)EZ-@}Zc;D$l#z~^&U|i+#%xvJ&nEZRM+(q+z{9N&= z6UU9o#S53{*ajHid(W%mBx&@7hiBMY;4Gg}xdJwM?r`N7OT~Z^udV6Gg{S3xO?q`R zeW@?Mw3$-DFaZlb_D9iXA{QXoL()WWvEC@@hFy!Zcega*#zyE>(jD1_5$!Z;R5YOZAtuoq1A6%pen4xwawm`lnwt?GJqaTwUAe){eiCAb)W#m``)Vhuv+=vi z-N+|N09`+jNQWa_{PcB@rzu+LXa%8Z%TT8T=SVV2r9SFPV}+rqi%ieb;@Z^Jo*m9H zrDK6><*ETFb~tvR*dc)>|Dxpa>UHok_YH7Tv-)GIK=uRhQVkI~gEv`~Is;{`Tj~X6 zdZux@s-J$b(6H7WX((9hp0V#G+wCZp*qtq)Y>R=vsmTXh63%lMSbicZO;1G6@(%XL zM05^>eNmZ53H)oJJ7p_PMo_h~A@;ft4a8;cT|sRD0?dcd97>Z+^&E=HY+tvCz@YJ} zmR+D$<`;Fx62^s^i7@U;&qDP6u((Cx>-%_y>b4N<33GN0C;Zt)c;mSTRI$8d#%qzgrOk5vPg?$`)7miTW9T zD3fe5$Eb2HQ4nLI#W3Ucatv6WCaO9b}I ziJrhdGZ=|lVc$w-Q@6$^!h#J^FI}v3uLn(eo2em^xU3g4=c96zwsCp_t-@!gSGNc% zO9kv`p`6?`=Dx+TLzCORWD|C#STV$W;i|KvhFmjYc3o%=W&uszP(O3Y$mw{INjgQd zjoKFI^N^J5W;CQYh4j~{=|yTcdJI&!MK?de{Mtr6HLY-0pP}&wIq#?{f{r*HF4o>h zfRuj4-62B8*8tt#4HK7|h-U51?&`HiIlbcfI%~j&mc{@t8 zB5qcnk^klf7y}IX7O_ubuaTN??1S{_jhHOFLpx!iqp|*y&gr)&I>XT2RlvownA$d7 zbnLh5{GLQ}v5_aXR*K&QL=+ZM&85>6D$}Q6Js*ceKC9h%%T;&DQXb75-k2;VV-{db zKcd0i?IcFQ;HvKQ@Pp|P5b1es)Q5e7F21%F%xH2VH%<4G)>__8wi&g!$+-=i_( z*7b7#mu{)~lw~*$R%4WJ|8yX`X)Gd@xl^ChsL5aR&4_T*bA_$UTj=R!ru&X<=`E(r zR{#D}B$JcWig?vEE4@VX(Lyz9fm_8@3SPWwlK%oXMmc%k%?lFz+pf|hm|bV2%Fky_ z*qGHCcTB7DYGXsH{6tdw)0t2%&rg+?I z>*Ww#b>|9cn(+4a1-{|m=qiit52QC0cY*tu4xu9ut%=KoS~%^Ov^BjY!$;8R`J^V+ zmF^VK0xZ}pVcQ5Lvuxd3>keiZVuy_m4vqsxynM}ehB8W`50|>VMLB`%z9D6aq!Jow zyA{|w7fVejL$sQi{&-$#`%Yfq0U6jHOFjPm@q4$ZaLs--N7*#kBzS~sn!p^wdO9J4 z@rivv?TveLbN+;eVwP)k|Or|19vi4zd$l|)g$wPiQ;mP5+bFN z+^HmKW3aYN;YvM}f)PGu8TwX8aN3_Y&;wmUyG#jYs@r)#;XRDY1t&3YVFJpxohEJ# z7GAeF*DQO4n?E4H^(6$j-VknEwM95JKlWAghn>RBsV*0Gvq;u#Qds>jX$I3K(zqlc z*NVb@mS#UG$o0BRu;g`_V9Dz&Sn@gxmb@-6Sn|5OV9D#6D3N&87A$$4)@yw5>IDS3 zo^L^}-yPqZAlK^%mi#X3$(x9CJ#WGa^0l228n^IBZWiJ#arsN(fv;Jd>qW#%evSvl zOJ3=Qz90g4yFg~jqp#-bCCOezsR>&{Y5RPz7jy;BeU4W!{7W$kxEeaF{e$%ScrHKf z28p$tB0Ar+alrQHmVB^f#*!2`HI|_%XN?1`j3JX`|De|rzSg)SDcOtz?aVmCp0cB2BgV_G?y8Zn#ytzD>XKmsxnRiW*dyR#tXDiC3lbCN&lqR< z@=0!c2GE$3=Lmqhh2B1JKm4$8%F0**T=!N4&3MU33OBP}U~6wRGx!vn?Qp^yJL-tU zAiP9~tB}aXN?60^BjdgHIWj(epHh|?THoKj=YT+iYb$FJ1-J8*md!_s;8)>hUYpD(-&>L%*Rz$0LseyY5q3} z=EtngdR@vjELxA~4rXQvk2i=B7EI-tC2>;k^r&hN&fPw3}pQZQm|9UmltNcb!aIK%E;aWpmvCY1I>&6mx^+m+^I)Jej%J z7;c-UgyZpZMEzQPn=bi)1x_Y7l(pK_4ZZqG=hs9RL|Sx<(YLy!pT0Xmy#p_2;yXoq zTc!44LAVJ-Gv$S**;0(Hzq?o7kP=bPlAL-n9U;p{9({caX(s9DSUx6ir1^z1H&8-| zB4kY>LY6dWHOlmOdK)j>hxiV@FQAp-(F&5aUaH_XR8JLxYTeU*m@I#lrI^QHk>t~C z8$WM`?ZX-~TSkNm$oTg;Fj&M77IO$oQAVG)x`&@NIH2rN(&ULb=8XvnGZRA+z_KT> zAO+B)@Ed07PgFAAkV9BtH0v`feg+uGUS+nItUMu0N2{4LXw6h%)e|+CUFL?!6cOOR z8&&@1SHPOG< znWtOwDI71k-AX#S1o{jdf48v@9W5tZtuLMq&j3L0|B5^)n@9!Bs~0BX%X%T1%5zHV z7}H<&bmMAeBjz|5znYLrl^=@$0um6T(`kobtzfpRf0YZ4HNk4a{9a1e!D_-Z_PwS( z5>Mc;W8E)I?`O&is1GXOe%b_Sr^K zOL>1T?p53eB)${>h>x6+m0nFaMQMqDw8&Ny)**GfyGR=tGoKKm3Tps7?NVFldc*WIy0U_lM-ft$Urku)8f-oZRuf7LLCf4BR%M?=L&fo7=d+Z35NB6sjtUPf1*nezoOmuj;T0@~NIfeH1g`zil z`-6=?zuy6p{p5#UBDoU&oe{(+IZl~-S%94n<|4gb;%Sv+tTK@PWFRB`$bOsvi|EMzE`*WMy*QwueVA8 zVHLv%DgF@ACD(s_Kv4g+2J1>U)x+#A<4U6#0?3g0{_Ce&mX)sFlCE}jL6&N+wg7*O z=^?A#0Q->N5>&X2^)1Edouh|6Fe=N?RI}mt*`(T z1jVSd*UQ{4hQ{SCssSD^Ip6B6YlY2SMqk5>oU%_Ojk}w; z>9WZrsz)eGqU!6Hj1_){WbI~H7M&Hm60t7+L+QobPlF`EZg#Vrm7mM z3PK)sdDyc_tRvsC4l;l*J~GEFw_e0Qv6EhDGvoJK=1Om7{DKF@q~di{@2>vGmbBXUUA(#-Ug=t`AD2mNK1#Q^BXl>< z&#I@EfPVPrL28nP^B^JzZ{W?z-O}Ma7F&C58f83g1zn>@lpM|U%q=q9Wk%W_1}fs>K(0Aj4yW!ZczZ1 zASPh?szEjR03Papb$)u)>pyOLy4PZ|*ixGUT@wF@@s{o8)Q#$8o0*ncSmU*>3Q(+H z_qEFMrbEbQ9O+FC`9WQTsf!?8uB(#9t1ertDQUG^r6Lm5x1WH4voFc~PKuLlS{_@b zppV3jtH8=xsd4#|FsQ*>HxmqY>)sIt&!(ufsIq?v_Jtf#B{OKSq-+Ht$O8kgI=rd`_TZ9Oq^7`B`CGfP z1C}TdpuH;Yv$!85m$HrSAlUVcWI^eZDG;BvL8xztF z6tQ_iIvie3{tTW}dBSR6mb?yY%;t8$juARhKVJ2+RPtp42d1L}Wapz`e}dwh?Ax|p(T}|8 z;C$dp>jCN6=cmLs`T0HK|I6GjpF>^TIKD})KBM_B8ha^9Na1MAucHQWL}DXng}v@B zSF>&JRYT>~_1i~T*6P=nYmP3zenU?#RhMybdq0@gQ=aCdE4A?Iiqkqr zX%kh)Y27{R2uXe>Jzg>P+|`MRxiC0vDb;C?wcAV&7<~IrfEX`CFi>;BW2y z`sbp-z>sIUi3~+CU_9bsTz;#REKY$HT^`6(bBBpZe)a!)L$1Pu%8}kYt5Y|QwT9(! z>pXjVhF%+@@iQx;@!wTy7hm6S>?;mNOqFj9dW=1;b~P%VDt~sDuJh13jPEVmiJ5Rm zvG+Yl5P61<(qD?BgpEoN3;d01G{1t?`T9)qzq7TMs7ZNjJq>@&Bk7Vv*Hv8bPr7+H zgDBCph6%MXNesB01ze@iz|ZP_n2|=`5>S)_0}Q@)ze0et1R@pIx>YUsfGTxe5?oK@ znw^lO#4H4@wziaBbQ@biC$vUlLwZ$)<0b8%OE73`C0Kf=EOl$JxZhh&;_PUbeI3zM z$Ka&k!?PmpLiB6hT1Zo~$ZC_a2;{lKUa+zNBjcP7Mn!On4M3t{onuq;TKB9a(+>XC z?h)=W5_EG{aifsn*Mb>ld0MGz;3VB5iBlC6JUZ~(&{byIXUs*~R(8gYHT#HIbO0@C zTy#Y2Dp~qgVWXQ#EQdkBhISMK1H=pv1S*WQQhvOu%NAjNtNa2nfUrwe5&AT zh~jj2+8^zcp?YI`Vv&M6V2dr@2(;5ojXQ~aXB!&`%#~>l3Ntk(+T>HOxjmhF(B@Ll z@~N-tWiZS(ZoUaGw>zI;^1x8#VOa53p?niCv{Gt^UT!nhF+Zo*Ajkt&NkPo@a+}HY zCjBt#z1(zEADv}u4!bf-bI+VVQx?cIdkW9Eu3l&}B2xe8jF;PsHyE>bSN>9cveNZ6 zdZ46L?jb%&lG^)8nN3Hc3|z7f$}|IbuY^KyaERtvSaq*Cr^A?7t4rC0dylvGE?;;gW+*qlB zC3f_<0eiP(JSGl%?bQ&@lhi!PJfYcj6P|C!DR-j!>-p4S&TXHY^^x%_E|Yg4i?X!&NPi%3Gh&5n-F#6o`7 z5NymxF4d5)d*U9C)jQ{!$CA61TpAWFB-Pr~kZZ8}-DWfCN_U~3CB_*uya^pKwgA=>2kUkX7YQ9iEhne0 z6Lj@@ndq+)K}WAw7^ExRu~tFJ!&IL~f6FBkrk#l&Eww)K^mnpkbWx3`zn>o-(BD5T zM=t$+|3#Mm`VKZsiRZh2l0`6_4h%y=bL!EEkSqv>H4-}fBH}j|3i)`zwWg*kcB2pp zhi77`+VDB0GVqTyo*=TkfqL9w0gLFWj`L`7C&A|0duzTbMmTT(l`8!V@NHv3J4?TY zJ$FnERyo!>}`XAzm_p#amSTk|Os>P>cx7dyghw+FWYC8_qOltjU3i)MbyuS7i6+t zdaH860B=3CaJ`gPOyi^BqcPPxg3Tyj-m~5F72=wm_8YBY60!xZHr7^5b*cciHX9nD zdBi8P4Q5S6{F%HJ>?iJqvl1orpaganFAA2tv;ztj`M9P@Nq?){44SGDStO+;cYA%% zf3+hUa8RJ6w{QSTmqHO2sfa|$&Qz=5LLgdzWO0$U2RA0~A!SGQN0SE$xowW>{T|VT z8!UKU#C%>j-)2^gS+PLEVk652_ujMOZR|#l*9?H-)66Xi&e_Tfy652AQ*bKb zo=oVPe6z;c>1pmp({AG{YTPO8M2e0c#|d&Q=&W?_(+n!nT=CIg)aaCZSwOSa;pUM; zX&xqx*c!ZVp?h9(c)WTKs`sZ7PIvbqTrt9DF%gbG0FDiRnmk>-dB82k?3ihgi?au& z5}F?*Q^7yxFg)>y;C8_vl_7Vd4es4%jIE{{4p(RYFp!CnJ$tUEZ(~tZUTB(rS*e2X-CppAW`+N1*CN6J$~C}IxkqIrdza1U2q&?W&s>(JL_Yk z{OM`R-wI@MuSU-~%&>2QjJCnrcF(>vRSU*bj{{|L`yF-l2Jvxq*GRk7Vw*dZVkF*Z zU4rD}>+0hN+1k_j*VA({*;eh*O3f^kX@Taye-RQExRrLD7mfG+ zLjxc_2D6@5{zif^Vrw>3Sh2fUvGdg*#W$vFc;Q)J12P3iaJflAC0C{^*>7K~gyP?@ zs`!t2mkldcaB2IP`uL%2^eRPUT4c5S^EwsH$uJC|rLMD8goab~n@mNV^4;b_K}9>K zE2^4Ts@AM#ZHp@GKjVo*yY__KHg?l--`9v7OGfTmu~Gc+hl?tt1^$dr;m0w#=`TNi z_=TANEPnWdA`m#2j~|{(f5*$i0NVQquE{X)!uMIXbVN@dMf&I@9P|$?GE#;*@_Jy8 zTpvZAWvz4P4;h8{c)(3tK&o-mM^G}1ldN#3SBq-WC*N`QP~E~*12m<>??O{&&=_I1 z%d`!k1-7}t6>|%|#X&!znC5j`gr;HnhtV9&nBV6EYQt)qJ}c{ypHo0^Ru)GkV+c-+ znWM}>?GYN{W?xI&GKpBuk^j{>9Td7?gB4mqp?UG)ThjgeiaM;r z{v8|i?*QmE=r#3TYlplA9xh|r+ps%m+tWhh%^lIgibx+U@LvZf%%xdXfoDs0{)q3_ z<$VzYTU8U1{r%K>&z}PZ1HU*#h+Z4Gn10}g9mKE}V&EjiHPA|ufUu<5;J&@m=s+F0 zid&7_F6e3FAS1ou#oRTODawmAs{ero(7G7X`>oI$~ z&N2|mX(*+JN7q>@Wni@M~Rn7K}_65`@GEc_n-eAd`^|esf6#A z9&zy_2qr6SW@Vs2ejS;q@1&r<4<9tJk4e{ev9IqpL4D8r&yAV-cJ=jHdg>dm`a0M? z(dAFM(x`85WAY*bRc7U{5e-441fMk$#<}-yA;r=A57K>^c-q{-F9s#?-tCze0?Tq~?d3 zqzu-_#}q}TJs+Bexx1*o$M^D2>K1;jJv#8K(6t<}CidJnC)6M&XW5C9+)c06fyXJZI$M>o#WRS4`->RoS zQtr1INK)=}gJgkH{%3~x&AXHOZxV`0TSo>i3njEF7}~})0&wzuyVo*Rrhi`$#uDY* zcG9KmFfNVB9=x;hqW<5)zHhKg*Mk@M{)a7Zp1zq;%n}aLweMqnI5ltFMc%zm9jF%U zNegJ8rjFPL=7B_eIkiCzgV4`Lv3b0;m8PHxZ>tx# zGu*As?f&Es6ef46A!+-5)i=Jqhx+#X0Rs{AdAzmfSM*Zh_^$fcr{CSDe+#l^XBj|b z_X7m}OPM_`*48ncmIl?b@@3=eVCHt4!)WVwwkTnJyQ8N3Y+J33c>MSVrr3-UH0>Zm zm710b*`4fZP0NQjBX2fPcQ}5c#zlDGSCh967rz^7dQrF=_*FO*UCLmIa50;ud7&n% z|AZ09-CHcCsl9wtt_C#B!YtK=LvtD$5{Fk{7_43UMs1H5h&=Tk5$VFsFK*>K(3P7) zg*dvv-DGWA=8l1-5H@K1$Y>uIY5qPnA(RQA)TFIphlFp5to=S*+!~Et2=5x)O?_BT z=JrrHzT2Gdz4m!|2ZWZE{Ehh7i%e;_sfPtTeDV0~y(G`_c_xUz7c&qGa@h@Sc^3N>BG zjrbfJnGg?ft?9Ei)HF(8J=a3_!VT2|P;2kBPKKT~7DA2mSrBUa73t`!#nVJa+D1~d z4wKrrhT6oD6}4;MtnKkiG-lS(qZ0e}=WAGsROq2G3x_A7EUQZM4Lv0DG>6C*GtLyc zXqlT$&uLZXe35>fj(N?652>3Qx^k3WG*6yg6q@=Rx7ZHqi@#Qm<6)eTH@i#}(4vAT zRyAdz4G+9s*53V zFIrShd`v4vz`%oeR5fK}pBF9uoXdLoGxu2+ZeE|7utOgGhNiY@INcInO9T?8jPG0@ zgVK9yEf`kD*CKbIz0=}4kxTmb60R=txN_b26p3~3#h{*)vveglN0X;%Aw7Zxpnj2C zBAp^10g>WmYE4eZITw7s@uSl14CA*AiS&NOB2^NuEc4WE>Tk z34*bdBqOtM-l)`rkB@#L1J9U1a#i6FJxDj6?#9SHlRNv?8P}BSRXdXuxRdg~{ z%|g6{^5J^G6X9 zTkh0DSMvZOP*b!R?w&_UfWx*xxfUfw%(yR3*g*mR1}Hr0i}%1p%g-cRM7AnFzL9}1R<6pWQ{|z<1}ny zqPMx*3`E3^oW>NtH|`K4oXImM^)=sA(aZ;z^%}RA8hS)xd<8906TfgLkw2+(E7Nom zT=%H)_V4CT%ixI*|3eIyof#YcN!+PVSo#)jUVDB z8Jf2d)0FOczZO>HjQgtFmqda8A0(=<{ixRUWvk zIiOoEhUbN*{apymK`+ALq_X;fYeUz*sxJ(sIaZ_$>!5LFZoM~PiBO6bYpXd*SpcU- zq^|?TiCzF;q5DiL;*i2o7+V_YG2bf_c&#jp#NKcbUzvLZ8Ooa{+%N3aC&>x8m1Whp zNRMScCvym1JC-KpF0*XLzP`Fv9Uv26H#H~GZ=<1@zrG@Wd|G%yzTg)Z5(X|t@OvjK z_>Dge=5Yt+7x#~~aLu+4J9BPug}DJD#>wVWqslSIAk?)1nn0Wq=b8u;wd-5hT5?c0 zF{G4-b)5_3xM`#}Id0XLJuPFC6~IB2I*lu{e*s~w1PB_FEZ^m*)){%7@84kS*!+1q z!F*K-eM!N1I?V~PI(2l~`=M#oMuKlgdpL-rTjaIXhR`M|j!ye9H1z}F$aIy-I4nOO z>G5CRGwo{jB$~~bavvaQnS!|5y=AwkVyoTDcFV%XGB=onrXLQYHX`JRAwzJBLM{FE zBDTDK;5VUbW&f-%UK6s=;O&=C|M-cUto!?GeBEbc>pm%4cSE-B1the(*$|am_oPx^ z@8sPGlGdXgW=QK-QUCc}a$iISz8MWgam#0_e9pac8|cVCq#_NWSD}~H_gEd!E@Eq| z8vkp9H07R}DlDn2A!X>*dppM{-WN(+utFGA0k3qW$^BZoy?*%C3HUsYW5OvzxET_`7kwIQ$A` zaa=b-+>ZZwI5whNI6kxjRSZ^tIKs=aR2k7?GOvbqGcC>h$q;(9E9c14aBMigPRQIR z6|9e9J7{}X*0A!PZy`kN*Eb)dMI&=3_W@yTreA-}RxOk|tW<_n)-NwDgLEifYmU+$ zCUkQH3<+3uKU>wasGS4G`JMoT_|c?o0IKc6@d#PM{CJ`%K~a?yMcXDgzsh zF}|KEzcXDF;?!{3-eFOR$pgZP3kQVbBN~LR9T^P`lz%+M9xrrdaW#x0ge&A#!_}}X zu8sn#tuSSbqNq_6HAzM7LQ#{#@#ZGuK-28@j)J~`GK|X>bILuXH?3GZ&h-^&i|w&kQh`PDP}2h1s|euDwCPcBWRT! zot)gsAU*~#XcnN3z~OX=%E~Yia;NC~Wnkb5tcyj-4>7INv+vzxt&v;`=erV^44sWa zQ92MP$&weTZ*Wbgddg=-24J2`X^d*s38Y@(%j@p36O?xV(8tzNmkEufEz9OE@~{i`_5^L|kG0FeE;<(wfN>N`Q^!b?iSJdym?P zG6GH@-#Q3u0{EWX%@EG6q6+-z;7HbuG;P%rSeuHHZ7e3F$>3-v3`4mmq9?j2!OV05 zK_+;B3*>?GUAV%xpk^CW?FTWhryW6BI8ikAn_djx-)N|KekyMENvfgDGwB(B^l>p(!Ls}!co&+B z-<5IY$|K_Y!WD>JN5h84_U&)HYpLgw_d$O&;FI$=-vA*jImM@a=10=nI3D5CUPs!W z(15q57dBuxux`|V`!COHfDQOhfQ$z8`4OOO>_6kv{xELyjkOVfolpDPkEF%6U(|jU z0L=Q4grb@Dnmn5PFY-W^s>PDq_sC1|R9*tHWcM^E$V`nk9PhI?>EW0Oj+IP}7@%#E z&Cd_WG3K2y{l&GZ)M>=kFGZzzg5PKSuH^YHejoDd%m%aSZ&RsXalMIah<6A_slHtI z=So22)Vcf;{2t`@D!-jcH;Qjl_&vt&6@K?q?k9ZP39(DDi0|X~7QarYTj%nd!S8u~ zpYhuXbHl+hImq6Zk=Glvp{03BY0>x{Yy;K|VIw}JTdKU_!=6M!n^NJwRJzOkm%gd; zgZ!6p1aXMT^tvU$oR|2)b)XwT2KfXbrroL=(mbRqRn%m1uIQs*vJEzi!> z{d@jiB511o-4CcV{;VWWH_v}))%|1sexdH~;~rWV`xS13qsN8oixofk)|gEiCI=#rkYu>M?;=9nWfq-0t95Tvl%&6UsD3%dlwlj}FxT#c5CdF@m_SlFvdrwA8&#HOYVQ0BE0bAGH2P%4lBKC3N-8e6n^N zT+oiM&h?zYXW*o(q)1b3ctJ&;8a(VTVB(jTy58I*BmS)r9|7@^_>maWhgQ_ZkF0d3 zB*<17WV`)h%U0%Y;3m1fy`_+=^wgOrpuIo}+L_&rA2^zVGq ztl-^8ywj$nbGY8Y?{(g#e=5JD`}Dgw>Gjii4#&$MZtGc;JSL%-AvHxB-m)HIV#KBA>=rQ#RPn!B&R6g9|m)*d9|nJ#V?(f8oy;@avnIyHO*w~c^MWGzT#62 zbxis*FelB#$UO@!cs5HybJ5XTS$8R;6CPiUW@v;a2S~y&q{B4GJ2D(EdH8WWqY}ip zK`LBmhE{EVx9#UPvqPNdLVrV38oppim1Yl85*)-01wd_OuiTCb64ejii52vI0%m7i z;1{^T`ql&JkIg2*HgFS*Y@&kmle?y{0rVK$uQet8Yu z5U-k%c{S5@*DK-LwH zpy^@mqs6R&u61h|hSAu*I8ADKXc4w*5X6pg3$Vee%upl+M3vmll{x!m3-K{awqfwW zAlAArv!CXnhD$Wd=D0TmQo}|LudWRKS1d8#CZ*^gwpr25V40clTZgc1U(&P=5F@4Zqd7_kqV zTG91T@}&9i;g(4J_sSsAwLVdgOrk_}{huhfh8XAh{CA1vDB!=(^0JWsMt})3!e;pI z<5p?O__s3r_i@(SBQei^M{@7^@6Nxm(l^O}4?ln$rRIsbPY8?!VJFFE*O!)--0)*seYRiVdXBDB3? z0H4+@Y&MoLExN~4CBq)Ow;Y#Zc5P}}bUrcM8_?x&5OJob5zp6S%c5VqaYIkfTYIid~QL3-#E(S{X;n8V0%_m9e@ zjaQ0=zkJ&G*{lv}-Xwjck~J8|%!wUg6qmAQQVb&< zQVjAK-6$(dP$%eo_cB*In`jVO@dlgCTri9NL$eF}y zjMogWh%9&>B1}aVe-v4}q`t?;QVH4|%G@#YYK$a@a0Kt-717XLpImraIDS&!Gp1V- z+!)zn6ONDXR2m()b^;#wYeQ4tHlC+tA#H=|HD>psS!{rMPWVc_kXyKp(mJNCu!0Nj z4sXq>8y{oi+iD09+&9wpapxmr{VR`*T~>)aSUW&IO-ICbtmH~`m1FE>Svb`??l&}i z7QXl4SS@SlV_KsFKSa@57@9`(BD!kAqV^uqc-7Ib`i0YX4TYTGGZq^bD8{Lb#6s>l zywUc&E1p+3=NQEb`~gXlIcoBvEgI)FCLg_Qy^o)QKR}PaGm;YJuV2%vDA{;vfj zxAxzk)A#Da?|#2g7z+an=8K6BF^QL%8|!Zbjqa==f+{f}JezfZ*Cq3ayW*Gg!(!CMJ@lJs_;|+Ea97 z%#b40zaA@Tx}<+!Y@_KUU_&tCPv6~R;MD_S{w>;G?H=VFHx;gio7~7is~eMDQKEA6 zFUHp!*QHYUN3pV!74@_BmXQsRCC4UoV@X2b73`-MgRKM>o2wg>4?+KV{$w0p!b)cy zX0-Z>#^f%4%H1D9f1QB+h5l4zy<|P>jJXh)J;`E)n~}uw#8<(3ajSV9D_ssO$qA%S7%^!7#(Y zNSSW;Fhi!>_LTG_)KC+sUjK&o=wwLgVYcUFBLEP-g(#@r^`toP1nnq1+hBqU$6t?-oI zR3H0~h1D*o+UQ612Vax90XE;4bg955O6JXeaJ-$+V`Z z%lDn@ck8b3M(xqmDx-GoHC?uZ!$&rPBMBKS?c~_SyKe7(wS-Ggi4; zux7iGzXU>xdiWUNPcO#Yu`vckW*qGGPv43s|$4kN(=H=G5#R&>Xd^&UlRh?5ru){a0G#o40n*=8? zr83`YJQwCK%jWlsH+xe&CHeS_^WAh`N)j3MgdApX=1&oz)<1g~L&rUJwBUX1iNl2O=5G%R zUHwPh$*9oWTBFS(bnhQ$OJZxS38Kf2YaQ}cXvz?rDH0`X?nM;w@pQ-iORuB2m?cWq zreBl$oSfW?h?V`KrK+?d2FM99jM+Gv7~Jqo5fD8g%Y#I^v1$oa+PPmVJ1v`^Z;(h9 z&=0{Uhh4E@Jt;3bt$BXuwpFF6`Tbh2poOfF-OP)X4U%E?*)Ep z<7@n~1Io|$p*dS=LuM28`th7IC^fzf)Zja)KaEYI{az2`ZG9I#8a}nYnW)mZrWvPb z{60`1AnTx-jxB+Ly3I2} z>Xrj+V1Fxsr{CQM&z*v2w@tt^GNABQC_MH+K0LrQg{{!>lD;h5`f;TFqy_L%aFM(6 zCxmPgomxXM7*FeIsdoo>4W9x zu1~2yOokLwXu5o3338ju|2GNJ&t7&6MY?`pzP7v!Tsxk6*gCn^4PKKP+AupQA2TNb#(_W@u$b6b|+iE7&dEg$}zQ)HJ0J&MyrGCR*7)tPin(^YHRx|RjkQeAUOVd$&<0*Z<=_2mMg@69WUeLW`s zm7Mi$0euyWhn?@S@$k-H84vQQ%xzJTks>3kbHCS_{W)diaWpAr>9qbV?Svt$&QFx= zeOGoAAM*G7QR7FkpO(&~yPiCZs>03R9X9a@dnt?e`$s|Odc}U%^c3ZXR(;~C>6xLg zp(PUQCE?FTe{6BPCKAF8zavh7mXpiBOvIH&fUL7#1QxGp_*+rY7DW>d@ez#GuB(sp z^3&mxpN`F!?^j}fh{jNhFO}YbkcoVMG4g#lc1UQ>+lj$tYZtSZuz0AmDX6v1m|BqRBIr86V>A8@~fO)S)2AU+Ft(vp8m7ie1bdU^P5eUdI0L=(w& znCIWJpsaUuj`a=NRSoLRba-f>L3uusyz^|dCv+;~DyiPP0xa+q0iSo()c%cS^h%I` z*y0>A0FFrPuvGb< zpXyoUaa98>L(ltD*FIQMwt+inTs9Vw*1Mz2@>h7 z79Q$LDMMc2?3~fV0=gRoDD5~K4qc}$8iu45F7@kt1ZRn{5WawCU!KMF9W@zTmj=Mr z1MFo(J3^a)-PVB3jFGx5uv-<3k$>_j3#-Sz8v(4jxD4b2Ge*X1`eKyu_7F~gg8>al zKQ|`NMqS!8zeN{|y%~G1F?kr37PQ~#(gCFYrnicj{Cbdgt*oT8Wa0OW1~wW zqlfLtZkJAxV)<^}H^e&Bn_zOB*>Vkq9~mZuj z0r<;iQ+eB6y=urQAvO3-F$$Lj|RUe0u#lyBIS^WFGuj1l^SxCn<3%m~?+ zShg}JR(XD$i~qO0aXY#Z#*yC&?XY0d@H!R+zCN~pee4XwYt{fe!rwb|6; zRi=U{)9g<$!1^X-9B;GqpJ|Vu`B@z${K)#S7l}}pLUWD^MRETOU-7LG)6XLV=U>!M z+X*7JpUIo*+fUHz14Q5QJI(oQ0$lsA>e=037+B-ZxGtb`PDE(NV+XXefl~2TmB^Rdjf=uBBiv-V1pZ~S7?OxAql-@8*dCgue_I1+2v%0o zn@0Uc$kB&usBYy+zo<4dRMXhm$fo}*_;VT&eqwgtMhi)*f-jjirEU5JBo*-A0(xR5 zHhL;F?_aci4vl!WR2zOAL0W&rUX#gU;KGYomm*#|I(trPPf<)=(%TLR$1wO0E_E|c z3kE&MIAlmAb(oF)fK+gsn^Zt5av#Ve6}`wKl{K!LSo@|)g@`V71phQrVTOl0W)gc+ z`TOufQXw?FJQ0qo$R(986kt7vRKE1(vH)4vx)G^Ng|B;kp6!z5+%_g}q1Up^%Foxf z+_2u;EGATYpNcku3>?bra8PfVJ+@w0CA}sQPF3si37JPihribR-3G579rawQmAR); z$AiSaVf5X9sNDV~;1^j_!|NiWkA>9|RxAQ?m&LR(M>$gO+k8d50T16d9m8jvl&|#mTL3i?J6DT2D2(6hHHf|#0C0hUD-G4I?MQ4GD|%B{ zalWuyeQaVkcO^AZW2*e%hcN@!c%hrkgUf3ZfLFVANo|kkBgNml6G@jmSFR)prnjHA zubaxy-=|b+UpJNYb>->GUc^AyzPmXZY;s>Wp0fkOx%;{!vE$G@2Om$daM=H4UpGaK zqNq`secco_DeU)kM`Bkui7x)90?Dh@cA+)BubXo8DiZViV}5Z2qqTb^VK2iS?dy&x zFza12$WtG?R~I&V&$Oq9bh*a1cGtFCJ&T8M{5I{ViNx-(OZ=+2dWnw)wdyt!zpB;0 znavyB@@Aob)5;s&@@A1Pv8#1~9V|ko598V~E0XB46|TXHykNHbv2ei5ytoi@Wjxl+ zWE!lGeeFsS9hiV!kwggM5R|86nZw=5t+Lr|@@)69ziD;vaRY6or_ z4eUPts}d?y7dyHGsp*V#4S(cYknb8n$#JleSodCjDdMsdG-n38xjX$zjhGA;@efB* zf-PmY;Vf01a;#<_P9)K}ySgOUkF&ugO=U3wgJm;hIr9lKxdN9UWn%9{0>5wYZqh7M zzc~u2SqAV1(|eQevh>2X8D@KlC)&rI7Yl;C!8YyZMXIh%*$w!!Ub#N?p`KJt9z+gJlfB)Z|Ct%aqZZo&0c+ah!eCXl(|cM zVt0XEMX%mcL`22(K5a?NYutGV`|W#*!~>k%Kn{waD$7NiirftzPcRH++TizSPvK?q zbYLtjau@i_oWcxkW8`Mx;+yBeS) zRlYz;_o&1r?qaaT?zv+~8lY4J=wf^RA=4J8{z@Ryys?Bw&Z%&m@`cePQ zCRMYNKl4c+Cn+ujp6gq;5DG7|A$zN1CD;&}nTZP-Ko3w{%McPiIcxmNRD`>RjpN*|?;!|nP?es}VFj^79TMv(4G zzWtfsVt(xTORc2r@A%f6MbZX-bNPM9Z(B5*i}?M8-^={I=GPr%XOI-0z<)4bzYc6n zepj|+aJPlYK9{m9`-!_{xVu!lviVZ!9Ev74?8=_$zi3x>IC1F!S9vsCx%pD<%I0~L z>t@eSwt#SUWruxiAveqNKPhR_{TkJV_cL`r)Za^ZOqJKE==hV88{K~XL#yt4`1^&r zFXz5~^hG*^2CCR5YEyznE`u=N?S$jG^ITUvqj6CRkj(bJ%^9b_0Wx!j%!YY+lEozE zZF*mJ!Pnax%z5ukE>`$_w;Cl2;bY=dD|}=@;mObo0d>M?qdlJnkqHll{ZeUy3ZrN;JYW8iW5^{1Ar<@re42><~6ms|q0yiLKjdHXDg(pq^Wn8@Ir z#0LRqdL_qa$}cqa{>GiN>PX-8lLa8^zR(fyvnh~Q(jjx!LHV^ziD-imbPQ{JKk4}AYc8C98B5qF>{kAAUS9b57ckfl~uow;$y&4 zlsKb)5BAjtN)>A3w;QY9D^V4!h80=$dmBNSr+)tsvDwCR)~UZxgEygmpQ<`zL`l!8 z-?KC7_t`Wjuww-3_iT7bM*Sw!rq%Dcf#%30QIza!!2WdgyNL8Kw3~c00^U3bXpALK z6k2kEo!!+(JrQ2VSzSVd;XI>(V{-Wvpuy&?UI~9KuTbIBl<>O&)JiWYD825dm9A*Y zn^nbU1*$kGT$WYE_rxTy300hdV5<0BwDLk#d>L|epuBc9p8iq`1RSc+DvQ7l*QDCPMiI_!9*UjkVZyE+*( zBS)bCh9dX9LFe^@j9$Kym&reOpqF1MN$yGVfw>ixKaPnGwet!2V2BUoY3C#Jzi*_S zSLJ_KGd882&jH>5u~1Tx+qR&!rk#IFc}WFKq*3Sh{;7=`<1^I!lniQOvcJy|B7-IX z+u|yjU&b)+Xydu^i9@`)tJ8MpW)$`pttI&i`@Xz8DmK2F@)SkHNI}?2{tN1(F@Np# z6B;A*C1>~y7ygtCLS*txpW$#aY_>6p!5uZ`hkojo{KlNhyTZnp?yfa28uQkkKcO+k z6<+cg?)fPhm~e}dxB3hdeo6+@=FbJ5VLv7HMmqh)$Obt>a3h`mg#7QO)1Lrl(q=Oo zvtfJj({%c0a7L~{KVQT3F7)oj{7&Wha(>V8d!L{5{N2#Yuj2YOze~B_f%n^S-4#7O z%1<%YuH|<>zs{sVl1j1sow}Ld1N^R|+~@iB4L`~Af8_TZKgD-C1-bqY{95^~;@2J7 zeh|N0e^y&BM}7|zN#1Mq65pc<_WUHyK&_cl3J!*rjz3K6LZeZ2%Cy?(x0$2%{~Wxr z0PZ?*eMI^RWBz6>zuB_dmNtCtkoVm?OLxLD!Us_S0IHSVM4_Z;kf?WyN6+p)oo5Uzz zr;AF*jbGlE4}JN7jiPfJ?5}Rf1>3SKD`58p?7nWdG}x~zp@BVPhyQD^2LSc}z-|DX zV;jbAuSm`Nf(k7mokp?kzt)?ctdum+uH$KpEf@L}1cSDt1KvJNswwesZIO~2+*OCM zvJxP!18j|=+EHeLq1s8l+5>`WKiQsYk5{!ce#9h}+L{=z;aIa>SX#`l{G|W2aBm# z=|XaEq?&bIFeGl~hL5sVkyIDb=;9^^MV{p=ZS^U1A%!mPq#(sGpJE~JC_@)g=;8(j zDSBH9TOg&^7V)Wm^m$?Yfo2ksrM_4m3tJA982EfzF$o}sv@6|0q_yPzybnP8oJM9r^K#l$%l0-UOShx&mq?Ud zx@|i|oiyJ|DdFxQPNBO1HP0%yHvpkGva&F)@9;$D{?Z{W@FW1a1FS&b&v7jMc_7mAeZM< zna8?cw*4Ea>-w#M)K0QisCinsEe0UNZ3}XF2Dc;|yQ>I88}?KfEo9X;Ih0ZY{Oveg zK7#44eZqvIAp(hgBk^5vcw^&JLs^VqRi@NAr57rRbVnd*8f?p`aKr#g6LmUe%Wt5+ za>_Ts=A+U~_5ISH@k5g`(8Hcpv_}ysi<1B3KTY|T*s1he(Bcp&O|Kmd%+~aakuq|d ze%>w{H{FVbzLJDfQkgI0mH8w}k*Q6i(q(onD0An{mH7_2vUtPYkGWmPN`{%jiQMBC ztY_peSi4R~6d+W@BN~9J>d=sxb-0;fR1x61GC+=`uH?<2H0aBZ_R7PxDawQJoJ` zOW;#ts5ac(5^70a29^3T$LSfifk>x5*bE$uII#m8aqccI=%cyMwaQd@?yuP05Va zfad5Nqq)|A=CI6+Lg-jVqw4UEn2xQ0&cWTPREU!h$Q7a+CQ^guhE>$HoC%fLL}Wqj z-JjIQLqy=dgD0UeW%#wZN4SfXq(^29V9gNw@YUkyld02SUtwMnu1q4`0Rcfda&{~|X+z_n9mL4m6)cz-)7z}1Kh#b+n2T=>Ta^?n5q znv8;P2I%p@x3}`Yne}B*@a@U`Z-TcS2GA)I)5hjY!3h!RT`j4Cl0kQoyG1C;ZxJK4 z$X&tvnHA(321O6pxa^o3kO6|HIzf$5}n+|Nk>x z5UMjS#>S#SR$(cMqU=P&Im{#!xfrr3S&J}}?254!9miR*i`LbKMZ3#xyJ%-orlJOm zdOdBE7w*2d<$D#Anmx!Ru?Yuf<dU#f2iEhYoDcpSKZ zcLDqttyz%oHa{w>A>>co%X_I1BOr`(N%|cB-s352Y7I@#Eprc%P7{1@F1-Q&!8xQ7 z-*I>D36`=~);jbYiF1^~kaP*15pSeUzmn+*UZiTVX%rQ7G6kii#xZt+PcKsDcw2s> zFAeG&RZyR`Z)EW4$bwIXn{05fR`x9TWT;68Kuvt0!pv*CxH&W?sL&9zB(E2Sk)KmW zO3}$_?FD76TN_~HD;}1s+Du^>`KV8^FDZy^)-38DVkDE~H^T)OdC?)o7`a-_^cdM6 zslQnhHk5Z@Ts5aVo4=Ryw zqhaJ9{jB$Fvjv8cH~17=y0_H}!^jCt#Huzw8%DzR4Le~4qi^&!_S1UGnwt21W{^x_)FHI3_W zt}g#&O%T_sTXZ&LvTaIC7*T(k?VI4>QbkJep4m|q z8=tdX*q4A&h_tBHgc9u4g=K>2@v+45n>JLQ(xIMXcq-Ame1dNvx4m;q#8@hmI4UUQ zq%e&FDW$9V5cuG3Le&F+++_PbEd2v5dx;ZAgyJ+Nd#j%le%UeSw#RKtDl!jGwg zc-!`VIK*?-dTb8XdeCsm;;i{d45!~Gaf$jL*O%YE{35IjC&x)#c3$0Rei3|*8^P}g zexv+G`5j2QO44y1&;4;@c%H!h7~W0bc_Q}{`JK$~W1g0 z@L4xef6!bkKCRa>J&rvl$|8tP+JoSCoZY#f1ZqOFP1wW~1`EyzKX02u_w_pnnvH0A zvzYhmu5#D!3LUr=l3)|x;+7z6PHk$Lx~WU#hG$e$vfB;%8ftSeA0NK4)N8Z9>SKbu zf7ot&0SRXo`vW)%O-LU~jAenf;U)l!o@Y3~VQv>U^9_RuFzEH#&D53p6P%PtX_aAD??Q)2-Ns8b5gNO{HC;!Y zN(Xs~>ZfknK5|184q`gUVqebb-L35%7S&p{ml-6B@nRB|piw69u%hnsn$+hq{1idwDqJWrF`Wl^zCi7*4X{qZ0sEx=hlri;pARl?5`+xE0ZWG zB|VABK6C5oOjc3YgG0BT&V-g9k#75~r!!&nr+Hvvg2>6d5C#hxb83N)Ub&`_VJx1h zHOKwn(>lpPzxkKeC%?gU8rOsH?PXlwa-9ONp29^yWD7#IKR;U3dL>tz>yNeGFcv2o zF|jJQg#OBC@*MB4tUDBCz*Zj)C1NUef-0Pcgk_9#z{FYT0(^ymPr*4>g`aYVt8m}x z3_No#8u3(+Q1d6+=5eB|TFjK7`yUDck@Znd#w?Lewz9d#E-qg%T#1l~IZsZl)DqQ=5g6*cy_ zfwZPF2pdbzG2~>$wdH)+a$es6xRF?yVXT%JMr)bJkQoMSyO3*=^NpJ(@3o()_C&Y5 z%dWS2{*zeZ*CK_n_;gE?umfRZ@uXh5RXakK4p+K;i_-Z7>D^;KgL|Bm(J)ScO$F76 zCzHT_;?woxjzQ7k%WVI}e&W;h<9hQY@W~DJXUURvE?-D)Kk@1MVg9d_FU~d}lA=*5 z;?woxK7twZrAe<6^X`3t&F(iw&ay&7qj$XNFiNdtLC1HO z9%gz}qQ2RU&r8fF)Q!2W7pe>h-jsS38Ws3^%!dU798HJ3w1K6dQK=#~Xe~NY$NVmN z+&7lMT_4}p6Yfks&#Qcf7cBd^ZSRY;~&(-HvaVj`s@~o{?@1CTl)P({?ZTk(QsjPFS zshVwl+t%%s-`|_88U)C15d*EimjLkj{r#k6EB$?pv1JVRDQNmY%2a>Le4jC*`XLsl@8 ztr~JAGJeoI6IUM7boZdZB4|5_bg6gzaP8b~3%vtAFl2waxxJ2fLNddb_MDQnGOGph z>n?kQCMzuh2)F%BlhAIPJGyp4e)Um*y~8ebs4w->_A8eZ788t~ z5**|JQe)&E_OKBMshr8B5Ho(`QT~RzB1qW}mKZ`x>YH|Z$TVeL9*f#f1|)JGu%FYr zl&n2S`DC}YX5mcfg{@}+f>jbiN>%%n=R?X~?I+8Jl#O3+rH#k6*~WR2AzHUFA5!j9 zscqAkETl|nKTQ@=&S*bP7E%VZpT;2N7MdGS41<#EG~escJF1be-@+F8IhTI(uVb-; zPUiZS_lwYJQe0)|E#tX#=I!HL+f&BD(qFhHaeY8}+NXIlmwxlF4|wi@9rZ4L?$Sg$cYn$E2(@6AQi z8Ip~r^DhxRMbp83fG{6K(?Jnin~SBxLNq{mqdUJ-ek`5I3};*MS*7H<3rWgNg&V`o zg5DHh`>oL`YEwV%Sa`liVt56{)!rCeD=@I~ONiY8WXr}6yta33ss}GPpF-!CB(_DF zt7p~Pn^7WhD_BzIO`0d!@(&apjd#R6pwL9b=gYURqk5ycZ)WnRmq|b~qi8Hq+n3Ct zVbn+9&xR?p2>i!U8}@fOm)$cRBr|r8-0(QnnlN{9{z|}DVh=(ouXYV2W1|ZNlL?`9 zAtV6>l<@i+-RQu4)8a-Lt@J9CC0*wts4b~KlDcNly2!NI+$hU_WC7!pd*@sILVhMMqja&)2hpj|-Jk9A!Cu+Ae`hUU ze9k}g`L9uPEkaVzfm~FVF0|IWCdN)sSeJtppRu}>7}m&%ZYK&17!|-*#;HQoLjfS( za~XtdExGVI$TkF;3p|N$SnGp$E*C9z*D{q*$HKMJ)|tP3N8^&^Ok)CN5M4vRe^8W=YxpF$BLJ# z$h`BxdE2X@^)){I!7-vUSIrn7w#_)$@AHa1h6d$|73WGd1jT9|_O;JAv4b@=JKOU) ztf{fClCmTb1Q>Yw+8FaJ*32hP8k+5Rxai^k%dt<(6-D8T?ITFiLhj~q;v7pSq zpe)%Eodd!$XR#0Q}gJCO==1qE5EFR#`Pa#3TzQ>=`dVS$= zaynOlKh4s(Z0S)k{>U@39JZPDjA(tW;g3Rru(q}p^4R;JkrEf(=M)$iYc*Oo{=cs)RK464q7Xyik{_H@sSWqEkClaMjvPOxzZA#@By7=(7B4lApL zWcg(+_`G#lSqR;d4^1_Rp92LRkQ5ruLsF++d4R-_2$mi)HQ6SSC_#)PW9Q+>;Heml z+&o&D>ST3!!g&iKL?JA>Ta{)Fl3y{ze4VQ-4`SR;m42?J_hk+#C{t>HJ6dUO%1blF z3=R48$L+2(6Y}dVCPI@fQ(HvHy+@s?1M@0qL^{ZIOq9s|Q)y)A2*LWdmL^AzrrC1= zIdapKX*oog8K2xeA80Niwb75WDAH#9zf_Yyv`HU=T|Da9`b4H$$83j z)_Fcb_qGzKt*P65f`6wq%)tUaPaimjCs-~tm_RfkRrCQX=F%>&1@3`O<5^A6&b(qJ z&X1llCV#Xq_I4F(s$h=hJf*&-_Vfwr+e)CWrh+YqBe&MD2evP6*biDa>=&DYhC$3q zQV;S+H1m@-8Yaw2P4fxfZ7YG8dU`zB7qs)mbwAfiuCKZJur6*2m)7L{gf(pEa82R5jOY8X1wF^LmTL>w zZdgh>^Iq%mzTx^Y?~dWpfkylA?O3k!xt`*Bmum|b5#}<4qtEu+4IaDBwZQ7)Nd zu}76t*F3Hi*9AN$xSF{>TmHIHjK*JoTikVbX9 zz_o>IC*J*;ayRq4muy*Fw{iW0>us*K*5y45-W0C48<9Pa@8=&Gyj9zId_ONdkM9i& zMIBlPR%YH%BmDGeoz#%<=`k-Y|{wT~8+9|z+q9Zg3xYN@=nMxaBL zUoI`T$A5(Qm|lv4e}#qjPOr_L2cwf=D`b?@AtYZ$<8NikpC7IDguwx^sVyj5c}5u} zHJi&7duRZBy#DVvFLmg5e8;R)=Hk?2hMuRnDYEa>(4oBZt(`V@^HYsIV(R;wqshxR`{PVIaAt6P;ncNQiCVf|(PMn%^QL|q`1^cx`t$ez$&&g# zf1-V`p@pA9`{S39OGj?37#~S5<8Ii-zT7S3u6ko7f6v}Hg1_f)9K&0tEd4%DBR5Xu z?lmsun6|Njl6iQRhnqIe^bap^CKy76u1i)16#lYS95W&Dz~ zsUn(LSig=3&it9!Je-?mjE2`Vr?;8?>zc%k<~|yp3e}^kaJwk9@VN z%O0MP9bfFJReNzVe6riiJ1W@(2zA(Bv$vT&)y@l!CQk3cc5R@I{n>p4yhpvkV%Zb) z*t5NOy6FSm6Q$Tmf>68sqS=3s6NU|6L->7cw=Dc}e8+RgsG%}Tw$UHjEZi8>5{*>T z(0A(2mAN+l7N=RFcqIG3S3y3rM(Xsh%FjHv;dY?}Z&=&4QaF-P4(#~)Cxm7n!hCe$ zVN*wLN=mEaS74(!mOiX@Q^}EzL=$^{I?|BPU1LS8P>^%KzE|x}cJ4-d8Q(X{)NHYo zaC`;-1t!Yscuf=Wdhy}CsIcR9;!I1lQ9PD^P0{HK>xR}0`fuc>w|K-xSa(O@q_g*|aS@&f{Ua|gY!`fx^n~B$I;`l;W!BCx$?DRpg1o%u?P;Bqj8y1&V zN2iI^OD6!_ z)4N3Dr*U=9JMS!(guZud`6k27K=%#oe!&>VJ!ikan7)Sb`|-B~C*Kf)uOCd?#%@gE z*p2KJ99gZwIqQQ~gSR`qDLTKoqNsOpRH93TJW_5PqhIvz#*=!_V3qgx>!t9mHnppG zP?rAHrmlZA|JmSU-y^d0M*J>Qe&)$qu!Te8W_r&}Z+AU63;Gs}%&Byw06tY;KL6v4 zaeNtvQ+TfaEDW-~kU$^x#3-4*2RtUvcpEb1B4(dtuO9>)|`SUM)e{^nLUwZNW0qVu) z^rDfogRK|K)C+>2)UT*cY8|)X%op#eBcEF@pjMpval4kY@zq`VZP15Cchhy&hrVIW z1=w9szfK@49M93#5b|S_PgP)x3%1l*W>53GhRno zvs;aqc#r|zQ(tGtYuUBd_IAdr^?c3god^Hz)&JBx-vR%*`bV@=zv26-pBX>!^kE5@ zk{h4e)V!kShl-wWFM7Vd=y_L;ip?)?o1*6p?-zbwSM>a5(esj`=XpiX4;4M%Ui5r@ z(etFD=kZ0)rxiUPSM+>%(esaro_8&J-lphz5*lUx_&kKLm;bzEO8A^Q5XCe{VGZ9n z4;!s7KmDY&h0of-mH++CqUR+=&l`%`Q(WHoqVi8GdOoh``S7CW9~C|CTJ*e4(es8i zh3#Kg^!#Sg^OBU271@bT|`b&12Av9>nCx`bcaf)9Yu3t`6Rz~9po=t?!Ub8;hhc&A2BELQIn#7Cf zCKFQ;`xVK>?$;46XNzQy_-YOxsv4TBibS09Zrl2D&>6^^=+n=jQk5)_^{oca_Nx+OhSs9X`u?7Fs^9Nd zK&9QoYt`1#IEg1>T+P=f;*Jv>@KMzFC{%|-{`cMbdk^aoOVkPr@cK0Tqlfz=oh)ci zZE7M7viTV`0+|3AsH!A0VobI#+4=s?{(eXM$iLO{#ouaEFRX!w+4!lwwW%kw&slj2 z_<5P*7yWr>1)XsxklI6q9fk5A#12;`a40mw^+0b@5Rvf+N(DL(c9Gpqx&y zp9N8JXO+sd3H?hVy*q!4!!)vEWtsas-&t~!YlhU6#ia9dJccu*uHlfTZa=#oz8xQ4 zDfcy@16eRMBy$**d_lCC!b+~U%!{ey_OOzRt&$~$m7Jq=iJBGBcod;u9foQrUo*aoQQ6aabH+h@zpUvs}3cz z;`tU1(70^o`hv_Goz5DG5y*oMugP{cv^NNT>?}{3OW{|k@VZuocgYssqoDAN8*PQx zs$o^iJFr#Wf4vv>>RtSkxn6B_d-%M;L}(3@PUX%G`Ts_rqc?5Qm*cGw{|ovOi({R5 zRa#ALN+#=E>x$0fME;(@9>&?wJUbK1woXOkQ<@o>ANFHp_KMmvEU!wpLC)Ez-xQn5 z9^#V7w0}_(%UIm)H4hfx#c-e$iayQD@jS^gmd!ETXeOaT~x$w-atD~bOnqww^r-ICpHn7v>@4(ccQ@lPt*P$E(aeixrF+#y2d%hz zF9^jWOqbb0`ekUEFYj5jFxV1bkHevXmFtFrL|XEee%o7f5Duo%ra(XZ&h{SOy1gCS zYVW7-wAbEF1x@kg<=Q)srqSNjee*lDW4rB@jYH@A0?$zCmulp7u3;24GxbfLN}PBw z@I1Uq@Eq(hZ4;hN)qRVajQMPE6IXh{VrQZ>0A52guM1iR^ES;=xz&KhGAw0))!Lf4 z6A(LjM}VE@UdX|YmpuvvnLPV@O?)9JD+~O0M6{qVZSg>umZ; zJF1q|#9zip+2~?#(}LtZ698$&-45{ZBIb!!H;{TJ?VX|S{D6oJ;Lj}Zs!7NQB0kap zB4$~pduoOFz)~Te!ffd{#hUm96<{$qbS1`}Db0j5!JJS#n={P^l5Q^PDiJ}t2r=EZ z3>b+TT?>s8mDpgv8{KDWBu!XP1=VquVI{lu=_Eq3(PP}on)oJ~IjcHRGZRb`hX2+2 zHDCS0R}ZR|$&AJHPx6WDsUAs?+SO`C(8|h3_C51f@O=X}1x&Fv zwJlll=C42=n%t(mm6exf&JgMc;$G z9kqOUq~Y4_I5wzJC%ARoHoaG5-tk@H3vqh#%u)7@G$|7~eqp+^ z-DR2zhbxfJuWM2ED|fr@8!NNZlH<24p^kkjH>|3hab=g<#n&zApuWYASaN)qlDt%< zwbuT`wwwUnWolE0sb7~yj$4>thsmq?FVx?uEgdf3Zt4;k(-D>PI`}F=dd!OQ(kYms zmk0etp4$<#BOGlXe%iOUGnn!|x^-^|zs$~_9j|=(JEy-LfHleexbi#ow@;rFDz~G* z4SCbhInduu!a-fc6V+csyA%!Mroyf9H@)3k{-&>c+20IwZ@g}4D&6JWV{t!zJ>q$XXv!TmP zuK&?C@hW6Tv}T65pIk_8<#Nro!cFLm6kGZYjdu~fHueY0dEY&*$Ei~qOCmFNrmD#F zh$>Vt%VehpJbH^`3)fNUF7qgAu3P@9rj=lg`iPr}-$m#>v*=Bnjk_;I`)rE-^MdjI zUvy(C8ebM&=&ZrU7+5Cvm*Fdb>4~kHzs@e_VCPam^Etq+@fU z3BHaftM2pu)dx*H=)`1KCa11h-H$X3y?F@fpXf#I`^)ydOVRg$|MY2@SdBG7yo0}e zHck}!mqa`MqHN;88pYdf!LSprT7!hW1_|5j3Mn)I7e!)Y;@0F?Z0bbjFOZD$xMhI< zC|A+=7c_U~z%{2DJ9;TXC|wb8*GmB5p3!k0WRx3ua7Q z$@* zrbxpPM(#*D_idEnO99(AMf`d?KRkmRRX~kp{&@sOi%ZY0yzK zCnozpQ=L42eFdcHE_TH{3+7xiBum5uVN12LxC;tm^`LJf7SW+*(3Z$euL?G&zrX|*jaI1Imb!>K3MhgRRD ztk$Of&xXy>-jM>USn9HW83iXlemdpvu6FkMa^fj)k$IfM{2W~u0u<%@H~Dgeim8YV zT0JGAH}vhAZvGSfow7|X6@)AgLkyp5Q@68PEJxp18I&%3e(00J=OsnYyOQ3_%~|_i zAQK)<n{7Y>^I{^@LMQm=9-u%U;f1XPzi~~=yviqtnop} zu1$61F<-t9<@2aTPHR>Fnin)|cx-nDxv%G!vnS}D zSLR<}fBYqd zA6w=!(qBPFSrBr=XY+w9yzk`RTApC^Kr(f7Z#I;s*iJh2o6_ByHZI$)IlYUC*y(N! z*Y+r>Tds#|J8oMnaT~l$-!OUm>B}egnZBX^$LYha+W?F=APYyAB3%pK13o`}`Bl3v zIlc!%Hh(3McgegQEoBkj5wtMm7s$)ETyFAm4t_wTXrlatoyClnxRw1&(2~OR0X&R7 zo<*R@6k^wy~dT_dC@PW*ZQTg$0Jmdp(at+nQ2-LS#b>+snILIIUBVsJqC8i z9^XG#eq-OQmrv?}Ukr_u4eMN_&ISCz&JD5Woh(iceTmUsai3LHJxFjMq zEYSq2VaDm!#^Oy*Tc7gGsg!4B$#w#VjK%+Dr@e?dR5Ma_&wEy2`}Q_L-Hm7{zM$s= zJ3&*kuXVa{Kg0mB0CzaRV+5I3W`%q4SsIR=#76oP9dXU9NgkpT z`F{B3`K)MrJ}a{GIlg&o^O>zv_BRO@ORJh`a!E|= zPXE?mCtem!bh~sv4mwG6o~R$pp3qFMWZd&K#gF~v;2M^ph`1#r7@Vkyd}^^O2Jn`! zrp2AONKZZ!#Z~y?_U6Z(NfD-SNS`R&?U18hp}rW(3(@O7?IO0XJ&RMCpkDFm70@Z_ z{p&vjK+_$9n;F03RSo=BvgtbK&s-RdC)X=M{9ojV{L^ww7BSSyv-tEff7?1!4}Gvq zv*#%j_U!?Wbk|xl(WiIkt0!83Onrg#G#39b)`$JIAI8w0`>+>}WAtRpMr{GXKLdI= zX$c_FN${B4$l4d87p#qAvu;&mX4zAhT=?^nsE*UtzYl19Z?z-;MPFW6yd4V?6`wML znVhNA(I@qne{0Y>XEF2-?rSso5I>01Gy83DZ$G(biTl+Pv>icb+6)ZN*bB7-Jkf2k zQYH4hDo9KxV>krnkRc!!ANSef{Z2r|OeQ#6-CA-VNj9aQtP0*cSQ_(`86GCwt&&3H zuPKYHy4|{4+LwW`uH3mQvOogeVZthFX0~KN@;@Z|Xdja8rDTcPnZVC1=1rqu(ic){ z)iRFejmGa;p?Q9a5Bk>aZ3^#srw*OXE~DvnQdlONZ}wD|FpbmyB98?n z_m!wf{6S%GG+`-%0p=;Hm!N^5z%{>~9fz0BV2~Jl8@S7$1(DO6B7LThAUQua7E7m( z;fbbNkAuFtXXj~I(|YU@N28wn1wkddBhtU_%gGIEYNmf!e@1GVjS&@}WEF>*uF7Rn z^*Z-@6XjJ5lLj-2kJV$XfF7xvDWC@aUUT3DWs!!#e4^mGs{suVZ+8ZU$H^e|XS!3uy>jX+MD$b#6E@=eLz#PiasO0MxX7Tvm>jZpf0bIkNOEu<2302vWkM|atN2(JeKck{^ubaG6vto94#2NZ z%R`@wzXN?j)QLZ)u@tBab*8ejEDv?`x-Hb%#VQRm4bNo?QAbz>>R>tDiH}97Lx}DJ z$AdawcPc=g)r^Rt&O5v>KpmUj^&H072I~9=mz4WtZiqUTbkyYb) z*c(_g&}yGPS>T-*u=0oEU;DkokLQto!A(tkjq9u?BnE6+xvwGmp^~w%3=Xzmq?Sh| z{%A=GXnomVV9%HHN8&U58B+6v7oVyc#6y7`$-jItyYhc2x;pV=$r0opnt5Zv6|_;Q zvMhQnELyF&_U~#%75t!T2EX({!kD@0$(Qa9^J~cUGPZ#83H5JTI0EXoFzcD$@YX$m zh(g65?ry#Qh@WT@*1zDaQ^s9ZKkkaU=##ZaRw#d(c45j@3%2}C9bZk4Ob$rg=0ybi zwpQPg<&PiHvn1PyhU)FUvD|dk5)>Vfjw&L*JmvVdvGIS9@giN$V_I zs&Z9!Cxy@|nlRdk;@YiCj%Y>)EuOT~&}SsTRtRh$lJ8PyQHJyQ5ObukO=%P%B*^>*0BB%0Xg7FF3pDH63! z(Xq!4M8uS$R@RA#e3WYtdyI|S6*gD(KaW0H=ivlNoD>GAZ~m1=kG%pl2FbBNjrlKZ zknTvlzd`UP?@AWV*DxHTdhCPfx5oX3B4`AD43@_v=8Ms}dZWlwmbst%n+7-5ZsrRL z-Rb^iqZ_Upvpy8L-12R8!F|t?v#`+pmg{d^m76#R0CV^)4A3JaH z(irdVP^P6-O`6N>q^_adX5gafnV!6MpELB4-c?9uiY(u)H!>g;tB-z?l)T`qQ|r#F ztG}Wm`sA^fo-YhyMmB0Vhe3}ZV84H3U+U#FY18Ve=DNcl5wjk0JW3a}AaO2npKJO< zRRRLBcvrr8jA;Re)%;JD9b}D;JMa8)mxHXeN3u|)1PFk78*aT$${@_F`{{!kp+GkY zzCRw6bU!7LD<24g6t^k`P{@#>Q4ov6n!G~xfvL|9%=2DF<+=I;gO_iB_4bY0)cEy< z_SJ3J^_#QD=FjH@+s9Tj!(w%bwt9&#KBXa=IHd>33EgU?QUz=;Q=W z49zO3QjYte6l>*;G~&e%t1Ejh&+Hv&wjB((i#6MiV|}otZ#Fc-1-{Y^+8f<*>~V;K zSIZzbWeyMC*cOe~&V|l&?t(p`k+-lsY-EB#9&q&fhuJ*HCX^{ZX;0%W(m6ilz>pXY zSS&6qLi6U9W$tX_v07i&1bNDo@1+cKTPD>1U?>znc!m^=eZ;d6aue_qxiHE%w(MQv zcBi>EHesO`eg=iZCIkhV6N~qcaNn1E7Q}GR37WBZT_m&%>El3N&h`l>ViclatpLOB zkAi9g?e#nrd2*D@%VUs6r-D$B45Peq=|0-h2U7L zaoxC4#$gL5rg%2LdeCOG6J7Rpiv9+vg_&aUb+JB6syQ*w$fjoVA}}~+=2btNb9uAkey9t-z%_S(Xf9#5NPn!|na4Wyu1ga)VX z%ullutH}%uewtA3A#qHsH~8^@70?oBas>tX7C$SN@>UtgvE_akY~e&Q_8p~43gdybnaZZJXoS@>(RqetQX-!k8)(`3yzz69;ha}VQ=3NYAXt;b+Z zv@lo`?J+o*=n#tobkAb3D1sK7dMrLqr54R>D|$qeRIlX)hSS-Z@m zbJOB1I`3DWhtAg<*DIW;Vs!q|{WiM;z6ob{+#lPT-B##)_YVuvS?HNX=X~OvLucW3 z7M&r^0XqL(mK=}H$FI}uhN!GTb&HHs<|y+tr7oUb8!3iYnv7fY=PY8M1(bWl1_Btv zRUr0>Uo+8{(0T(Ogkgj_A$J;eSjhdD%g*_nXuSUpA=S2foqHUw+rg-Ib-b588r8Os z@s+aX6BX4!$h4=F>tNI|z-{?ph1=((4Q4Wlp&q@LE7@C$cOU1{Y{na`J2if5i+8-*ucik-*hi4_6q$? zq5tQh(yjY{9_IV^^#4@0;r|h-`riH@P%bCjI35YyJ)Kz+Y3@+F!E+t%Ae?!}8bMHAhcb zf6YW++-3Z@KNX$4dlb23k zx3tdL?;Y{*bujI$gC66mFH^ZgMcv*s_^dyRr59b6D;fbbMQ6;~QnHsXy{4$J)Q8xmtK*N#AA=vto21RBa>`3GvT&=2 zAFJH4JYtJJe+9Pa3wAMEbX2`cnwcP4?9n+Jc0Ua*Q-_aV+?e(3L>U^5k*nZ*h|WZrP<}fP{KNNfE7WRi!&@zHFOt<3!bL z;Fy)6s8|$mS5QE5$j}{Cdig#`;L)Uc;qp8@P|LU7&J>>;EbP*1oX5w&PU_2b>z>ru zm`yeP6M|gn1S#*?sU!!U9m}}X{5*mI^*9(Q_sQKFJX}iNKAph_mbFg@?`5D~U&C^h z@u`oMo36Mks4_2Gb1s_(SruSXYm}46c}um6G~7+1>akYR9;tgM$-+4tSdXQ8Dxat! zGVOX^o0k_d>JDaz^mfKMd=_GQUk@;&jZjDs9u|&xQQfCGvLPURq~t#x2qe1st5KnQyd;Dg#>lZaL8T#S;l zR_vP~fi^?&QB2`#_XS1)L(FyVC=1LdnW3M3Ea_KF&zzed?S26_$>XOxv(xvSRsG8@uOJ+G#I-p6R5;20!|_Iv@BqCT6ik$iK5eCG!Fj=S*Z<0?i)pFE}7EYttCDlOj- zr3mqBa^Gl25v209pF(I8_jr+Lm0Q$JG<$v*`cjj)5?RBaMG7o(T1sE>zzRVA5oH38 z|G-kR1@gOQA@GAV0sr4~58tN2L6&~q(43=XPwN77fJm2>GPsF7FXtx!jL_<_!re7X zv;DD)ODyzbP=E2b=#$<_A$u0;<XRyY73=}hd69offj~xuZYcij~HooIpgV)`rrX8Pw z)p0+Ccu|@SZv{Ssrh7Fcu(u`dQ~_x#pTXWG-e+*GwWGFy1|ZY1zhW3NT+|ym+(5fW z1v$jO6sWp={mW*zyKcV2XV9}`d$zXLaQ%#HTl@pX_Ndy_LqxR9*_Ufm$7!v3cKu_% zy?L^?S2cKh^Gxi`Hhyt4$pj|n8G*^UQF1-rq?3yc^&UGM6mlP(1yD<4@{9{#}kn#ze#DX^lAFD z4xuv>H)XbTaj>9PwymrwL{=|CKKo*3@!%ENDb1Pk+qVHnH216Afp5q*;tkhY_w)_g zU!!}#*lJ+yoIq;mA>1z*#b8WjxNeZ#bfI_&$77h~TUO4a*<9$(qm?$oplw+05Z=k6 z1{ao!sxwuiW3Qlp;@_WqQ$btuQA#P-(1aGAWxx1BnMrQo`L-%&%Qmu!w)TcE8kavvD4ec9+?Xh zg2KZxc7&K)|77C6+}L8F+Eok>owD#S`u4V<=K~+Zgn68ea`)k{L+Cl6&D86neb{pX zg*R(BgZ}(FhVE<@>0koGU0T>}@?%RA5odha8M(Imlt7Z7GWa zH)hIf5mt=uuXA547vL1w$S*b#Fo2pvl~fyki+vr<0-0&I2iCM1t{eD=HH~z0V6`(5 z@#xIvk7#XAT5BT=_#msyh9Jq5w#gRj7!cLO`*-pHM5ZaT$#{`QVVzQV0K&k!ODEt2 zM1}5}|z=S?iU0vyVtIp7H&<;7GLDK&p%Yw+Zzuh`O%^~$~ZURdaL+<}DG!-m| znibQqBC5o|yX~Y4v_+8&tiGi^1D`10Q9Zp$$+D0&k~AK)Air7Kq_-ZnpkDSM>ZD?t zOd^rr&8X8~m$!nXHsGfQUk}7ca<&m(?DZx~ggnhm_D!BVb$i6f6Cl;?a`fCRd3vo) z60+9&Q&D*YP2+$MWmw|=385+m424?iqYz6_4V*o$>c%j2qRrF+d77OiPY1lu@F`Y! z+vMpneZJR!&ce~0(0_-MCuie_CFaP}Odhi2X#u|AfIOW_%z*-%f0KLJi;m0#Ebuo< znqb9dYo=DSES#X1e-lut26sUKfMz1YJYkE3<)l4jEe)@y;UXTgs&P&b-oPJ!f#*lm z>I6OofCaVM*29#Xu$U^!=PUC-rSLEXo7-huKnkig5-rJt6wHX19-?OYdr_-z1;p!M zx=5%}!rf;^1cJr=`1@>e|B1_5!B~z1dVilbH4_75L*35NJ}r|8>T*Pqx!u72WPY`x zBbUMZlTKqd2fbYE7DzVbw5|B5T|lOyy*vf-8T%;`wX#2SvH98HPOShEWI|sp^sfK2 zEDD>QF8ri#WZoh|nGo5AWqy5{CzeHL@t7FeBYNP_vWcD8(4#H3JxhpooLR+%u^_|J zmW<&m`*q^^@rG;cc(@^JUd2{+6p@b+@+-nEu#&l63ILI{Zo?&9qwjRptK_f};0Gx^ zh%USzA8n)SuW^zpRfVMvHci?1{!ilpjff^XuTNuEAYOKdGZuTQan<$0_aU=Zsg@;f zjEF_N^YbJ-BX4h()n~kIWEdUkd&PUb2q^N@BpWRE03fv}-fJ21MSe8fcH+IVA0_z- zd!L8ho3|h3f7YINpmRm-xf4!U)Sim(*B*_Bc1JT3FnCNelQ)qu*cq{CXy$YR-_~!> zE9RXic;b4$Z8d=Jf3mHjB-Kp)UZ1h@*yqxhGX1%I?@rTfEFSvIPXw|Y)EBwoQSO5C z`&PNG>JE&{zGw-e?b4XqR2hwTBHT&m15%V798$PVa8F?KOJC&xK|+#WOJsUrLh=^Y zzVP(HpEvV`6S$-qgv{7CCq6S)u859p=qN~JI zR!9SwY7uw{-J2sQ#r&>ExNY&6O^M18e=I5KP*Q&^{11-v+EigY+omQI4)G|(79MQG z&}HCC;oJtKWdZCdeN@c0Rz~KnNFH0Z@wL4dM@zqTl7CW%$Yf_k1l~-PXOM4o_I#7I zycj5c#fc`{MB{_;pdH_rjqOl8xN;KZh1EzLGqnxm@6*`APX}hokHW=M4&elNN2mlB)Cb%-l)?H&_a86qM>|3i7_*9(jw!+L+IgqKSqWZuejLHgUc} z0d81S==vRe6YYoun4ArDru%R`QFa96Gun&x0_qB%g%I!28?wAJ|HMpi8 zGUZQ`-f!{3BX9+~6~{98+T!Iq>6Sx;0&B+>AXw(69c?Ut7LZb$G~L~NVBzzI(6O9Z zlj~lq^%TIX;tR555eV&fo#6)C!0D*pqJwTI^A-@wu6EJ>+8H?r^_sui<7OaqufPlt zUrBn+NIo$W4eo-+LICVdut_D8hy@V#?^GS{-ys0PP5`0q0m3~xa2%rtz)N!g z2uywAE`%KUwGo-}LuiD-c#E4sA2sMd)SgbmH>}Xw(`itL5YwFgfuV@ssLyl=>UiCc zfZ~VSxHP_+`@@rpgG-RX$~ayq6%54 zHza$Iwc8f#m|6RDri9%v)>@PdNcq6@p}f)=?2Sf3aLC(kE+onhBtqvz~Lw|z*Bba%vYl?1=B2?0D>!|66k?s zmM&r2IrDl^7CW(7f8zQZ*_IGkOL<#&ehxhSXAh8v;>! zSAxDU;JFhDzTr~Xi}=fK0RXOs zboCx{U~@xyd#l;tRC^I@Tf0T5FI+!4!W6lHDt4NZWoJNmPGT^22C)DITwn2ivof0K zq*?o%p%Sr>K;b!71rMz`Rx|;}z`Q0}q5EiJB&$JWL<`E^UL!x&aF2C3gvne@)~ecEB^NX&`s7@An4*p`8K)RGYy~zG?HXn2J#hkJtnt z%f_=PlK;c~)IGrOWm)`g`eikDy0n!Ge$WC%Tfx-Xj(#aU|lCh{L}$%*1f1C~CsHh=#EI*o7txYq5r^Q)z9y%K*T z?86I_!#nQ6=wuvk+0$m4CKaKyhp)cNWXe}VNn8hv3~RAB&)V<>G2p( zc6weznk+*=f?wxWF^}n?5FCy-ol?Te5jQkhRW@|v8$^n5eG1;D9*2Z|w}2^u zuO@DegL65odzjjz1s$xrkZs%@%fxC`h#H{H&V&Krw~2AclppIIx5me$Rg7vv<~8|y zox2cL7q(i~H}SFk)$Cr9@W}4@0>ra1b849ls}~F7Ycr>UlPC4BNwWLP>K4Je^?DPSFH%YbDHWn9eWl+AIBo>V%L^b=@#Wl1_gHNC##kAV{LEPW0+n6F=Xi zX&g!7g-FwUsSL&HW;mc1a<9w@x%Bo6Hw{7Ggk1J?oR9{XY>||SslTURqJd~yEU1&r zBu~EC=#WOdEbBF`z35Mq1*XcS$|h0#Ux>br)FLe z42u-BFn&dmg7)+;a=;3^mF)RTrdu+X9*{Y`f>v7D*=q;z zx*LXAcCh0o{az>}A#E7iwos@h&iTNGh+~f#82FzDcZ`lb27jR`qez-#kEs;q;4)17 z6j}fB9?`@Jo)QRmqL46#67*8d@rL# zRx#{jq8Q$wB19>$KWFJL@X(Z1*c&d>Y%B=~T5~ipnkn;ep~_z~^$_Zpjkm!&X^01) zArg4@bG!h2Y$2^M-Dp>+w_|>XcBKy|m2|{ijR51JW;v~7NFd&wB0iZ%%za_5o4A_a zC>pqN6N8cR(EBsx@8R7va{Djc$UTJ_;KbzF14`Hw3V7Xjxe=zILvy9@LYo?MkoAoz zz0Xoc0BU+sMYM-KfVXP3ixsL@=Gq0kHKyrq-6b?h<&c0*%ndrx;*$A^^?8G?RIgD5)+4C49@wmq@9XoTD}ZrL(Xlaj z!`0o`ro2aYwB?cABDjp$CFP^$PAZQLdUn!}qY2cX6JZNpMXuG$!+=4zS6|f>eDsoZ zrH@M}&N||Lh!>#=sg+>VUDEsIJ`K<(uOsKBaDTbg^kkZKtVa$})?n)P!NN+NnerWF zYL!xK`T!SJ=14du(P z`SOjohe2*P1C4uM0wBpKz7=v?13}Co0gBXTuItsF-0H!T+lnIPEVPG-VWVLg*J5ci zq;?NTEz*ie?QNF^9BiWKMoz&tYg{0iydpjspdcW(OwvM<0Zvy0Po`p@W=~nb#VTwK z!1SmFBu3)=Ww4^QLdC1xs92sFO8?H1MmXZ zQDo^W1}A-7n8&{aA>?$GBvX-3TmGXr1JhuRCtBImzM|g3X{~99Ca~!zx^64`dZzqJ zystWoR44n>i#ja<%QuwEb+Zj? z-Li!5=$uI*ni$s6ObR_j2X{SCCWRoar-KCF!ycYBD7>DOAje)JziT=amy!F|NNQwX zQBH&&^j>7z?T|CQhMu8Mm??>4JkaeS&%KzIs39Ok>wR|wlBQ8R39rySy_E6qI_*?7 zGREj^aK|zIqGWpp)+96Y`6cLrc`s9g3t1DO|Aq}Pv@dLMEtJt(q|Q!N034~?VL*BK zk+m;8&kW?0;jBLt|6kU=aPWnpZeBN0GwAIL*ZiN_7l6ejKMPCVJy&u)B<1wJtc)#O zi1ne7HPh``8}YsE4wd-SjUb1j^ECTpU@q*qlKHUFr(bAVQ zu*0=T$gB-`oBaayho){dtzS|zp@6=QG(2pH?PGa*GI7>>#11@{-4%9JE;|ee!N!ge zBu+zq_sVJ@dipz)FO|$WwF!~{uQGn@KKz{)K(Oo>2}hfRZSn3$3^d=3Be0+0Mo@6j z>Uty>r9)aZdXbK>u>9h8O)hj9!=?2_OCE!$99q9{Fea>HxX$Kc9h+NLW4q3cmM*O7_wNibb}Zr& z`&oEQ?^-jKXci20OGSEn{HDF2P<1+l2}_1HsJkD3h!jLD;GUyD z2CcZ}K*~VKTf#K$A+kBP({<6(W?b)Uf@);_=$El+vY^XN%um1PeU|d)ZL<3RDq8wx zzvY@+%_DRBe81(fL2pbMkoqkNh>sUrxTPX}bZjgO%$fbKEA+8P`WI?$k2DU+k!rPk zah>3{3U) zq(Vr&Qjl6F9POrL*)3-|1g#$Q*_7SWrv~_`r>^NLkDr4+yV}%UkECPHZwq|?K7A|T zJ98HB_%PRFT=Tj11tzPw#&TWEB{;s3YZli%T(6L3H+~0k-O7~@zwYBT1@ljrrthKk zqtPDRUT$GLq7{n4?BR|5GV|xMX0aB7OG$}`_hk7;OYQrvci8ub zKhSq((0^xzkHz=rK=!xXMehh$S+};zjlg;!J2A_+Zm?UOD=E^>O0A#q!mstohu&bl z9r5OUBh}tT3K14BYHv5+-r>Hz*588m4)EJNxd;RG{Mm@1=KftTjNnGUI#?Ix=HSqb5*ujjNi@WZI;Nq%W9@)Vv%91>rO!=ChA9BuL=pW zPoQxk8aJW)pfg~gWIotlY~nSm^jA$PEg32qll@;x$&R2aO-EG%*L2^O%+Q8)rNfB3 z+1{Rk9R1R&Ndl|CrUgrh0e2@@>vx$~7rfOub82rBXMvU_?xQP8OHhP~O|>ocHGEK- z?(kR#)5*d^m-6Jz{PBi2UJRcI$NH6Xg0bH3oq6F{?=YTsrdw53B30OFsIA8OefK`B z73X{5Sf8$qS9KS=K9oyq{jMrA4WHhH@LDyIVgIeelB1Bnqbq4XW9m|yARmBujNbZJ zNGxt@y@nRw{l~5sACzE^YyvlK_Lj`t(xDrkE3NONxzXTZ{~j>zMuzQ3v`k}%iOU8G znHn!IElGFKGR=acS=+Sd6^+kdYs2w*>WOfC(nhYn0~X(Ri$MBz#;4A0N4f2d&uP&_ z=lR;HDUP1lqcj+%MH~Gv?L+T!!*n(bC>W+K7x`iOir*m5(ZA0Q6Ha?SOjw-;935wv zc2;`!uUl0tCQJ0k48PRfNLbl6N2>w)mB(+{*djqq9uZb5zTo!3Z#%d{-FESXb4xiX zsJ;@6svAUQug-u7f*}tetefa59}3VcOOD?!_5-Q}jWovtX%zTk4ajl&oRSpc3lY_! z9%KA=&WmT-E*mX~(;yJm)mbkL9 z8j|9vUFTy&;S#5mp_Net&g>zK???NvWAb%v0xpwjgkgMz-lqP>h|#9G5V#c> z*buSHfA~1oI`un3M?I;WKIm5zhDfI)U}|6Sg>HPOSh;k6WhBa0=}7=j(Qg zPW`&$mAew0yx%+hmZzW&2*2F>E$8tUqEp}B98LaWvrbc4_*sW&W=Z_ZsULKVPR(?^ zqU-p`=S}_Cg7^9J>5HR%R^=YQj9fZ$Q^oj5nx&r?)*_%f2_xw#` zc)OPCeV#^cn#kR2T*@(RQv>bb;aMJT+N5FSfwnB=?2ILw>t`#LI9$H_iBfuX!;#=+(Mz(H+iSMuJ5=)PITDp{a%? zuFTb3uT?Q(GUKosdZkEH5lZTpJ!?k#K+Zdp1?= z;QkkX^|*h)dQuhR{&c35PIj*gA)ym@Ktk0m1__5JfrP&y#pOZ5{o{&o|2(|d`MBSY zG6e{?`QKvPrxOLZf5N}o#eFFr9{1A%=!?Gv)WoP2sVPGHBKhol@cTTODw+M=Cx)|M#vQYNa?)o1 zm^iaPpM_C*IRBUPig5noKNRBp5X#i#-{*geabA=vpWmO>+%C@l|NP#psEk;E@1Oh% ze7^^#l8^5*++8nghQ1%a|2@;kjQ74IobkQ5W5&-#IYh$KN-_5$CZD_+f7%q>e1886 zT+8|V{saoulpAb_-}jWhUBKDf=lA!VQh@KbFA+Q_zL@q(i|2ol$M9uLAIb>gT zMS$!xKyc&xh4TDF)(OMJ6?&%%p02>R@0gR~-;+D0e+=3i)35bh?q4f4zEWOHz@P8+Rpc>)x;Nd`vo-sov|hlkrcBNLT>sk& z;b}7nZ~nzZ=L?=yN4$8ytBLn}1>!wzZAz73(XwZI!u(5DzPFe^sesi(?5B~xdudzu9ME_-O<_ns;fE3(K=W`GsP@3aONdOXv z|1+6f;9<9)h42vJ4tN-GgTcelsldb2D+=J@Q875N{}3L2&O+{dco=Nz@4Ifc07ukd z$Fn^(01QEETV0fTEzACCm)O7790_cHJzUVVG!*}DSOmOG{j>`yW(6bx4E|_!Q)9Epl4{M;%sDzfC7X! z_zmrc`WzN?K~yJ*bKAx_TQv|bZGk^{d5ee?wiPPCbU?i6uw-vjAk7IAzQLU+>%*-O z*N~ir$+9s&=1?MY-BnuT5ziUzgXD(A;(iPab#~fTG|_p7y8(*C9v!tmMr%VfUHuFM zKXyl;_e7Jw#9C}e#~9`Kr`{!a7oP%6B{n^$JSm?$^JX1?^0Dip1QfCcm5=hTxC^Te zOC^X~)=725IMdIq8m(^~qa8<&q3kl|mmF67nLf8Bc+jgYEDj*`JWH+Bgp;GyrNk5B zJS9lxcE{M+HE!X%EmVv^s0JyZ?MipfX{9v0^DB3%Z>*H*#4aF>?v&Z?A1X{1C6wzo zp^hJ5b#j*+ru0MpvC}?z2hh5EE$QeoDx4XOkM4n?4WNitu(AS1GqHDdoMkD=ZhH?T zb37TfURdZox;^X}Ks;`N&!S5$EFYkK3~joII>K$SZ&hu{%5xS?`r{GqL}aGb z%^K6$epE8$qbL@%bT{*YQJuxY1~ zU1Bu`pdqjD(d|x@Wl7n|A!rGrb~Y9R(O?cX8PPdK zL*XD|@t4>ZA7g{k9V0|`v@lGY^oeirF6kLCB4b><%uNL;#DEe$h)-UGIMQRu4g>V5 z$_J6XiH|UX;@$5w3B?B4oIlU6ue|P4Sww22Gt|rge?hDInYiESTu1fw;6)%psIwPi z?QAfHqa8r8)bZ+pQ0x$)aF`*)@pu@CB01ziDQPPf8hSN{30q+;{dKQNoRIuMlqAN^ zb!^#^aYt_hzOxc(v>8hVTzLhPg`n_9^_$X`vU!E6RasQ7VO3&tl>R{CaGzoRh>s~ z0k7fTO5TB{JT8h~W^+l~LasV-`VaXy2MRo1Fc@lG}7qd8}vF;gW<`8agnxw3D`V z<2byGLj-UmmiL>k(OT{P$rfr5>KlAf(ZoOnnoe5mG}rJiM%S|q+3Yx2cS=Kb@3CBaM?$@BP!L zH`(n0eoU^$xV^~jH$-h3vVa3P7WAdnUO*c~CY$Lg(2>c|6A7)yvb0om|2D2b-Nc9K}bYIlphE^th==69W^Q?XGL8hF)EPhFbWgR&4Nc(R=e z(ru^XO5ufr56wTK+w)8JaI-|SrM0QPRF*3}lIK4U@lCASoRb!-9FzmmExwRnf%$`| zdhCOjdKOs8FoGzR#Y{7xo8p4sfPQ2W+8avwaJOw{G8Sx%?j0;yZukPj#2GnEEHdE7 z5FOmFAW#Z~-5?5Dqd7@dK|w`-bhOKbg#N?2!Z~T8YjxfGy`yxyk#25jdMDj?<6cx( zFy5~Tjslu7leM#FpxPjBt0{|#2Wz%M_q#E=lfnIF?)biJiXf(Z;Z?|AgONyxY|Y#E zSBd7=(2z|F1n8zmvo`2IZYD%1G7oP>vfE4JC5{>F-jAr_{=p}8WhV2Sl2tcB!yYtx zoMUz~+zY1I(1gy9&ot+X`Ct~gYYs9n{XGHJ7DTgP`WI3wN;d~u?O0i+y9V7s3no^C z_!J-AJ79x-t34^_>p(bRC9OQdTu(KP(7Pt6PbF?yZf6l)b2gQT`&Ch6$o<|vx{&)} z*iBBE(m^bUmLAS>H=an;dY-`NsM#c!;$3lhy=;jjoRbEgxu@&Wc9j zs>X#3cVj%ntO+qkL`8U<`&~@D1F_dH4TWtJ!x_?;024&66Hj=!wh+#U#qvvNH;;RXx6REFFq>`NN z<8}~lmlP$qz@kZ9Tq--m%>1>v-1TYmto+zS%IvHOfaR)^X>lE3h=PW<6*PwC{ke)*Z}{Xk&l5whyVi*Jdv6bChWSNR%<&P zH)oI1E>y2S7VyJm0YCIuxb0Alqz6#X4@FJdLaSgB#ScHJv`nLY%1z`qw$}zOnk4Sg z@xX@}*rWep=-56#G<3Wik|hvs(6kN#H>1hvJ{~(*X)JL=SMj5b^2F`#BBX%f&0bQ~ z#L0XZ@{$%OIQ=8{mEa_4C-X*=Ui=&U+~y1kdF_Jwd$7 zx;G2_d+sK~P_T0w0D30aIm11Af`%8m(0Sv7`ONXW{R}&AC7@0ocHTm2VdtzYb~YGx zf|V78%#oQFg4#h2)$z$N$BC6N#}`nkym^78xrxsE{!Q3fH5=wQC&0^r{||NV0%zs8 z{{I(EvF1rdI(v;>ZX^NG-nxqSX{$u50Xh@q?Ih`r-On{2Ggi2uBS&L;1#K#+2i4 zH>UhE7x&oQkSU+yrQ3w4K;AB#skHIp6RM0UkNG=kCy_Q_$}Pnz!E}1zmdTWYk+g8U z5`4%Ij_6Gij#J!)u!R?np2$NZkluLVC@u+DbBeS>so>XX-m)!1ufOK{b1I^*2cJAa zBk^9F=v0$_Ud59O10dzwY3`3Dq6Hs5-}7fLjaPH5W&mkkn`3;YfRn|a2Eff_vhGP- zb~w70F30mCTt_`3y;@gwRhDetFDCOq+fx48ixnSuB#Fs)PORB9M)2 z5LNDmlx6-CbSdA^WFR87L(3QV!yw~2rui%GAdr1zi^dDPTm-M({<5MAO4w2rtPj@1 zW-t_|Bz`g#!GFOir{Yw7HG(8XZhp&m(6yqeVo8R5#4HJsdAwjV#0*HsbOEBN>TGgl zfpmgiTbNETc2CNf<))CdGP)P!!ki(CeM}s8pGv@8*tox?I?oD}oSvblYA_#W;4DTu zA0E;R!&Fra2|ZKLLiZEqpI1nN2aX4HU!PR_6se-v4Dpf!-+{YiP^Q#%P6CxpbD#H9 zPjoUK1<>uZS?gA=6GNolN=4|8o5@rJKC9+Ii1{+lCRMuKC?1{@E64+DShfR2P~Wrb zfT1BEgf}HOS3~TxI=I^zC$Oe-N@*z4ohc372QmymDx)Iw}=seTIvj| z?xHxl=iaCN!m77)jZGI{$cOb)Z~ZLZ*-|~x%}OaLs@9kl|L0~}5-VKH#pTTrRtZJjQ@#5)246FWjCutYWPGQwBjhgqXp+Ja(GqI`%zYVM4zC~^UTrJMj zJTlRBxCX$g`EE`hwVaREn<0SWE@sbEBZL_Cn;6RA9cqMz($$MSv*9Xdf69cfwciN- zn#`A)E$n@w_YX@r%yk#i+FU?L@g)pw_Vz*Q zsZy7wQb#}@e?TRIUDJJjMB7-)=DUhUbl&T}=liDkn+9tNV#RgC7<1fJ->J7;*V72G#bm2!oT%TNq_rPDRAZ=C9gYWyu|luga%qX^ow9?)7o$X}r3qfp*b7>IYLpT0$N@s&!h6_g<+{A6Od2lhW(RAE z91c|RzFRjKcR;uli;tDBNLR$Vk)GwCdf*Xk746P6+9j7ZkZm5f68*+1#@;~0&VewM zc`+Eqy-o_P?G#fROsY;@yT}}0^~u78EJ4bro4M65ZIq_mLL1M_Ahrs7d2O{{?08U_AhK)JidbG@x`Ht*tw7Eb zl^{jV<0zQqMng%TH6-W7PX*+BvgIgCle5<6SGfnfd2&AMB_rp0PtIY8(F}54?UKg@ zgTgh1 zzXIZJnoI>j%Urh?w*gJh4b~Lu?-xz8!KWHb%UgW)?i}_ZSb*rcJa&4404=Fp41Jzz ziC?W1!xThcr)RONJ9AdFNa+Kbp6|Mi@f7yHN!Fx$M1{oi`cgqQL_cccDO@hhgy?;& zcMZ@71HHtxeIlUgiI#&^mk^?*Vy<%U@8N5_p>BON%}UB@w~uD*!^T5^=guRIo?ku2 z=y{W~q37{WXVJ4sTRUeVbRGt}1Fs8EoZ%W=%s{gtG~v57$ZtW_5GUV+7e!B|@enf} zMAoo8L0>w_6ZFZlwt#tezm1S=BKJKf@dVPz!oK$zK{p}eCi~$gd|m7DxCSlHBf_8z zRb!ebNxPX{8$eR+HJ+?%UJA(iP3xLYOs#S|vfA(I`rKNRxGn1% z`Kj}D#jjwYx&Z^&-H{R7IeagFfI`@?HA~ub!aAy{q8etwYv=d&5HYnNE@}}l01Y5BoSkU|K4`MR z4Fr1<2b$}CpUO=8Ae-}3^fH2^K>vw`jK#S(yM;`=b+gS$uZ@3tGnGBZZbHxmff2Mj zS1`giZwP1q-AnXV27KQwgGx)}pDY0bc3c+N8eW{8bdtw_KT8;b0aLh2d6Ul7izObu z9%#148>dkDtB08WDseW1TQI<)Jrnndlzxn{wvY(sD}ztl;^}Ilr|m<_)WV*sGG`ae zzj>wzIRal>B{y+L$Wo-?YIpnvex3Z+Vl}qGy+cM8E3W1M=N8_-q?N zVK(JE4t)=*AbPmg(N(D`p|UnS_!A#?UV^c4*I2neSGWrbTGPqAhc9KAwV1vP30^>Q zci_Y9u8G-}6mXVdn>n^GHgpfoRs4A+5qCViH)s?qe1x{jM)t>66ii@c-{fr+P1%;# zwRtpHR=2_reoKX;Z`!_4ZHly&9Lc#Y-XN3U(9CsL$53+OiQyTknxhTX`KtFvpbd8H zxvH^)dwS%rx;J~vqH>@(B41}%NEU_;Mbf`S^xA1pep6(12X{n&xe-22oJd2NQ4RiG z6s+-paVlaxcuDNIU`VLk^yx<>`k37+(T75+Y(aLW_xRY^#qC9-r`q&G+OnyRu+-)Y zscm8rzh?)_rV}-jgRKK#hix6G(bfTJ&HV0`CaJCZ z_0W&ej1p7buNRvON-Ltn@%5ZPK={xZX5%v?Te2J@Qay?`G7fgWlC%9Hg#*>>c;ODV zW0X*1wj2&bqoeTYSDan5Dv6J%<*?N*Z;05u!F^9NgJMp6b{$)GP2pJPmY&Reb-xtJ zZ;Ro1b679L>9qUBS-t;yN9%o+qxb2J6J4Y)NS)2?z5H)i6fpv9oal?Qhq~Pr8mf57 zZtR>F0p0lr=`#&(h&|3)#>vv}GuLl68lRspRlfs#-eeyt4skBESt$6(P3^|u^Ui+) zwW4>c%>Ndj_uDCktnjAC=X3sBeE$34 zP4IbbKbR$+*8#?937_+^palTWYnGeC=VvTIfX{#bgHjtl7hG=$6&;m@P{(X%2(>k_ zx-$Inms_@G5K3Q`{vYu9f~g*#|3MoAU@b54_&530IE6I^1JlJk zj*Xnc=Q6z)KG*IS;&UfEHP9h;L00c8wzb}W(~yPFSCVUk_v^DKM(JLB_ChpFEIKA*J*75`88{Ju7kCM>+ne~ZuYokDzmr)zV~N#pYbRd%IS zwh{O|#-<<(pKIBN?>_u63!k?s_xOC2WEJ>4fNO})Ygkzc_2<8U<1UK99^i9lZqxYu z7Ac#<=ee*-6MSy;rMPb;k8<#N4Ar-c&-rJ1e12Xzq28&KBz!&@!{9gQ&#bG1d3%p- zg3rg#{N3>RITkFWH0_&b_&mzECKI2(zo!X4mo?R&N9|(x{EsQLb>f`%>(`;{?#smJ z@8-0K(d~#6mVwb%GMvp|^kblFh|y1QOo{vdLWlmPR}+jLLcw74x#zcx(dT#fGrYaX zvN??2)<_`0=wGlw1B^b+@4hY3C9OmMV=F_chO z=oRW$ym0WpHv*$)%P#?yKT4jUn2s|uF!~4TnNbN54p#=nw_b`L-4Iij9+;Uth z7e=Uych}*ZS}Ef34)d;Jl;e5xx!4W}JFKAd9gE!n8(-}b-Sb3^Z{c>wX-3w$8}Bp2 zE?gDX_J^NQw`EDS*eY4^)JTVJ*)Bx>MLRdwjR5&o`iMGPch;H*hoYY^)!1-2a>eN? zi+vX@41p~Hn;0KqlP#Mt*T#PaI?C@G+0KIgO8Rb3#W{?g}kUrXqDA+VAVTV_CC zNR<)-oHt+}t@?OmBOQht?S#nd+EhMtnjXhL>>^rxh`Ad=NH2fC@mFXR|n z5wLa*tJ*17NqZ`H?eCHc^X?+e{3N!pas;phsPCp(jN1q3VQ;b3)!VCwY$edD1W{5j zJN0eJz*Ryb_wn5U#9P7n_;|gGf#(BQrdOw;)H@B^ba9~!#y+L?Bj#Acr*MS9#((r-8Mv|fuR&9@`aH&1^h0S{+59WVk=&> zUjbK$rC(?A*F>=E`Hi=uAB%y(X3sG_0!N3ru|nTQsb*>%APfIA*3@9J|R^PA3b}1zhwX@ccJ( zaS&Tn?}LFjbvMsMO~+x&?`<4PK4ct9Q{&Kw^oGqF8VCCTIz7Y1H-@jQ9T)X*Jz3)z zFS&Y+!L^v={+&ExpJi`aL~M)C1RcDItO(DGl;``+JmGnfJ9t+?oVcxZUWARH87D%T z?zdy@s#SjXvN|^0LDOZN?Rk?O+W`Jd0Dm$ln76IEs(lJ2tu8{#v7?kY!()9*`Sx=N z)#crZYpkPK%L^^JhdjUgg>*Ta%3tUfjwF;b%PlV=PmGgU42K!_E zcd%o5|GbU{L?=Z=_Va8X59J)0->s|;9MQUEB>uc!x@{$QqGffO|1QjxG`(%?y3!q` z7RK_<_hs3#8gxEDpiuaS3pGFM+~B)4F>Em{IgJi228;Pr{xx;!d}};u0XQ3$*qb;>ZILdw|!?1 z*7#N78uq?PouoDVsNskD(%%G;?ND{StfDMR3H)Qw$HxoP^wGUTHhnz6JLuy`bgrtz z*Ug^4&3p6hbpFJa+4=9_9r^D?YpF^+)J*=0_)dFtYE7ELw@~P4O#_#ZTK}3^THk?v zPjnBQz+iLEM*$d9@yEjR5!eFSi)X3`S9T!srLhX826~P7U7>xWgpb$93_i;b1$H+? zcZ))|))b18@3d+5&8R@4tR_s{gru4Co?4!~pM*Bc;j&0eaRkb){buZWEV<9>Tk~sc zAJ-a$nk74JAcejA4nUG3fA>Asr5(U4n^De}XgDx&nmoM?0Mi297r81UOX-j2AAs zb7!ws%zt_)6W90YO-+3HQyG0{QERJYbzPFP7$@z+z}vZSed@;I7m$?irCY1ZYT<|? zcjL<##IL=Pt^XVf2TK3xLdDX5xTf@EXU8w)4p(%&u^Q1KW2SqTi?(~!u zoZh^))UqaBK zTh{Mfgr4?zo)#=2LCSz1dXDzZtaI;5bB`4kj}XLao%Tz2<~@4E$=%`oICfcySmvXM zeC(0?I=hcmPU9Oyd>M|fn)0m`y_B4#mcA?&@pB9(FTbpa?|0FuXboB{_{#NJrI~MV zBdvwnME{kRO0@Q))eJrhZX;jVrnRQ^{RLUnT1KW!YNe&DhF(c%V>|J0K_kT{AHr?-1#E6b0t_oMs`%3V>wc5+>;qyInkEfZ zG3a7rw)FzDCzS?CYe|~3W3$P6?r*`9o3{w@q`s3Te0?jq@sgXhv30zH+HL?(5^Rfb zCz0^?z?1)bBWs54L$+kjP*XhV5Rhh`uCWkL_FxTc19;M3GZp(E@MJb^+aR8dBN4N_ zbPG*o;SINKES|L4t9d->W33MG~k2i z)=gdT_S92I>olH>B4r9sM#FA_S1pYvQ!Q)K{Z;kk;K@!Zt2sP*q0-~Y1=cv^KZUr> zUf&2jX(L{U6)qhH(*$_3m6V#_1yA-GoWhf@zok&{q_ee9cyc{U9Zm4$6?UOBtxvw1 zMXf)gTV_&g4xXH4!vdZhl7%PR?`e2)7Q6f@GL~KBy{4|N2Tz9926!@Oyx~csiUCh{ z@8t31Q#umh$pDi6o_KO(yAV$%chrQhA5RX@+Twl_HjF3VjwWFn68;`|(*KpL85)SP zoH;{H@#J|M@CNsUt|>gJZo5G|`N8z?{{c__L;)MblWwXdUNW_vrn2zxn>Q9u{%^PD z@#Jf3b$}-;o&`_#Mo9q(#tt@vuy}Y+k0(>Nreg5q?_5JXIr@q;o_u&PvsS-N3QzvX zZ5mH@B4r9sieR@Ucv7a`qvjo}dUEjOO+9N4Pc9^W0>tgQSmPSp4^--&p1TovGIk0B z7%QB5S{hGgV>|vnc(VV6DLlDLULNpdz9gI|I-)W$)B^d#9{6FnDC%`sm&aeGjz9ZWum^O+sMVe{*%Q z1z^GFBTwr1b7@gL?@91UFxGc+OQ>9+n%(a!!})&rVJG=r`=89SShAIWe`}FZ}3A z^o#QDY&-iRf}+~}?MQU(wF}2yiIp|8=4Xs7DRmfGGi79*Lu2=U4YKIPL+`b^p&%rS zZf0ZwQ|t`VmKs9a>83~`Qi^Oh2G#7Y9&YJYBESasv92jxE5V>iEXc9Du3ea6cI{;8 zn}@ZZlrd_)0nCYR^ga@wYMw!MIVtQ-v;nAa(`YZi=3jWnxOuGo5~l6BYjDSth^{^- zODD=LSWPWO@?1C)Zk2BzV9pBx-h;vJq5T`zL*7W zf8N)F+bqd1z-ha)Kz-XEAwNlSKxJ?d>uNpJHZtCyB?FegJgWHZm+()zN0PZWgttZ;><6)jHmC^sP9dlXYG_jCH_;Ia-HLh(24P*_0OYH$+qqTb88}w|Y9gD> ziOkx^|5%W@LpT*5ZUkR50K+;?RD8JhqzvN=rp_~Qx_{!=J#cBxw{I@!JGbc#YLV#M zZrqkOq?ns@Y#g@y5JqSu2#`09wRGEF&d0%UNZMk)u6XZOxHlOVdX+4^W(>Wio6l*S zVr=%Gjk#DJYsZ%lhE=rwr6Nw4$6aX|X<#sdvmZi*BI=lxu*^-g>k4;;3Xsc3r(-$M znsBRIv2K8vJ|oCc8Kf)=a+WBEePm%=fg3=z=-aMakZ51K>idg5f-g&Fj$mqh2Bp{g zEVy=)_<38lQnP{pBpVe!@4I9d}42{JiDYh*UJdKG0pWi+>2Xw%dm*ipOoL zt~W1b`diczA zkvT4H$Yw$XT8w=k@QeZgs=&?M%m|`l({aOqdqrqq`VGVOMND(A4Xcg!(O9LPOll@| z7Dr#UAt;uRC|3C9KwQd0CWz5ixGCyaEN{`Vs%KPPYU73l+v{i9!vhLJOK8d}dr@!9 zrC2NWymNvMC=i}+J71xN=i@kJxg}u;m$*NEXFChrE^*P}O0(vcxX0SHhKchIpn40= z*FTS9HFq2o-`?ub$veQzeW0TW#HXvv!mxIhW_@A#IQks#u-G=J1v}V-llgfMYw4l6 zuzXiiM|i5abk*9H!}4v4@kMiCu@!DJX-QFbpua$|Vzf0h4P9!Q!Y}LzWkg~-9cwj) zVfiY1sndlW2h$AB9S&kv4wxjrzgC@l@zPBs^sQeb=&7{v;)Off8o}#Tq-|?ywd>u* zH406`@^S3b_Ul$gf5b~G;nS+MlsftUo5bW>0i#K7Y)nkPt=dvw5R)&@>dsm+$i;(M zAXd}Gf54M|PCkTw{`F!wA!NYZwfZSAAQ1rIuODiS2WwkQ3M`9Pi+&FIaIDZHEI8Z& zKn1o5pw6dmwI)n`RI{nmo3Y-Nd9~tC#1#irc4PfA;w|cZupr9R{_9>42HPvlcYK|4{OB_we7v%)|$D<(8#P zr$GfD5bI6Hi )Oozej{%w!#KtkPE?5r1xzjDOs*;O4#Et8Ms;K5DtAh{0_g3ax4nAENn?mN=ZtOf4eS*CKK#IvewAvl+~J)kR^H263*$sfDE=6YI1 zNaXV2WpZz$|8Ci?e0Vh7JRHN$NjcQxdAA-V#tk-hN%wO*T&Yp;5f(V;emIOLiB%DwuGaz9P5nt! zZZYz0nV&#|d?NO?2x}DTHtlfVjSrUkt<{;K2P@sf_ufrRPp z@xMxlVcgoXxy2QntYvgmt#Q_baEJUZ=L?>a?i9^Lykzt%6c$~g<>Kn3#<;;9Xm7GO zI&*_h_&u|{H=j+fz-|Anhso4>G4HgV_oH;Fk3MZ0kJsX}g!)uvy@g9sL{%c(MZYI* zU7mXG8L-_WMZI}3e{Me zt2+6BV1}`$`b<*egG?e>ZkuMZ#XflnN)9Up${xAE0JJ6q(A-KCwDk>((YRz?7x^u0 zaZ5w`4{25L!u@WeqBy$;QqdY4x3b_cL^hI96-H}3pX6b*#xpd)u@O_ij%hLzgOG7N z0HG(B)zY{}w79nwjf3P6BFj4JP7xbF=8pF}%TA3K=Cgs&T@U*Cz*7U_Vskzw6;t?_ z`XE%CzGCA(M(8V49Qwx&g;IW?L{=%6-^P;UroL-vI`O>XBLyck&q5iN$J(@$P9a8i z+oCU9Bl23&Iws$*sJYh^J(cr8|IT8ApOIg(NwufWVm5}$f~l~Lqculaq2q!BJ&GPT zu9TM6&^p{gGid@ME-!kHbR>49%qyD)yD4nro>UrYN4tHKtsSwkEMM z&|KRmwpH4A@l%~lHJW)6X&bLlC!{&Li)C?aINHl6I&}TnYH0#!N7`{mnCdWG+`G`a zcy`0lUY5C4Yo&33+22T+$PM*!tprMw{Ro~vb>65J0IXx9%#4V|Yy9{-!b_UZ1J6Ol38mE!Q8f@o_wGZl`l|HJV&IMDZF=_{Eq}n7wJ1h-bJSqC@XRgLHe9yFC+jX=GOe3tyD-`nE^Kpo$c3)~ z)fLUgYaD_um>I9J=pZz)Nj#LlM%?$*;UYDGLw3BzzcP^$KJmObt8|c3zyU|c*A57Yfikzt%i&5d0|xw746%{%8qWj^nq$C$-vRbnvmU`_vF5nYWT45%LwzQbeXmGhrJK zw<5B_HclGTBy8itY7u`{*v1#_QOSIr<$LGskZ&Jo7xL}jbw?c5uEw|jDS~e+E(!Uz z)1Rdshp~<=)Y(4`Y*)D3Dc60(5A{-E8#}^=<|D`m+qeqb&EO%gl=@Atvh%YKzGFRoKS2OmhNzu2%SmMRR}SSSdL70)d*-h7*j z`+020o2_{1jvXHI=1+SWZ{E3u@#Za+q${?Of(Erg7}RK;DKi1H-0YO#|{qSH$JGJ(z_^=r?$1V zY5c}V!c1^|Qg5X)T#FybREB2bH=czM(}qej)@>znkvmn*iI?2>Ab2zcYW8O9F{BKX0_@h` zCw^nWU)AxP_>C_?VsM1T^UaFixHk<7wTZ!>X2Vrh{KoCQQdwu9^%2Dhw6M?9bv_>6d|R|sY{!GoGwI)SXhPn~&l&!|i+r8uuypc;9Cb zE%N4$%rG9Fmk}zuzGYV*E%K5fkVp_Ma`SBz#TzNXu)V-1)9%-#}r@yH;M(+a7F`t--}Fl;35jCJnFMN*p@ z+|OfF(|W^3-k$s^Gi+qdj>a=R*Zl~t!$8K(I{m(Bq^Yox^CTjOepg{} z_5f{Fi0ce7R8{X6tG}}*=p@02I``CMjbB+E7V3Pwh4Avny*vy&e;M_}iZAJ{pR3&? z`bi(wS{KI?E%JU=IKpUqb&3K!ll-f|B6l&{{?<304+1u8uNF_{N9iFX$mQ5 zR1JD98;5^n|MWE4IVHtcOU^OspAk}j6Mxf8Pt&W`GN9_B@ztTrG(j!!6?3U|hO;MI z$#lu5Yoe)>=GIR`PH|tZr^NZb#IX%w>St1^o9C-pZthh0s`cMee5K%(hi>8d>Vj`X z;Pc!icJ;w4cV>YpTunr`059IC@H>5;$BH@6tk$3`>D_rUwM3NnKy0J9`h^(;k5aX-)?%lJ^7wWduIL7h@HL2+(;5%K@$P5lX z!q)_WGJ8wh4kLovZnqqKfhFWCJICd|de8IKy`wYvs@eFJM~DpSL zUun0Oi=UgtS68V@l0*CQ&R^8p_=^25-C(aNo|E*QvNUgLO9-FLQY3Bh*5u@%8qZO& zV$VY7V<0h`T@UsQcA9>|Q4d<@#8D@*gbPRI@=?bA2Os}j{80;kz#BDa1s<8Q;{B!A z+E8u*s+;A>q&dd_5%wY*P7AnEIAf z>Xz8#?>ECHi|^g(8;GAJ33WSU6N#Ta4+_}i;WNGXSxQ>i z1>d)H&y5vB}A*(%1xyecweSs4N~Pan5pO5Bz}xb`;DrqJ|AnY=ZKn z>sh96@`M7x|-C~}d zviVv}$JMH{^W~hwbI&f-2!#y3fK5M;w<&dpSQ|{@uDV*xP3l`LHKU)BxF7B>DDfK; zZ3_x74~$zx+(SOZ_0TDKpVRgcT4=WV@_#=OqmVD+$WzYotUV|x+Gw|&HRd@gfm zu|GwY;h_{>$r}IT(-^tbF@3q)Qb*PN;lIGu748RI=ZaY70sJQXK`pjGhrzB@?M%4u zJiSD24!6^5m{1k$7aBf>_5J0f_KPEh-;mdhQ&Ky_b~e$8qhGTJ2F~OdqCeZlN`HI^ zgC3lJ>w{a+8k9Qa#*+V+T4%r%RfkToHTS$bVG3LMUmb}*(Te=8=rlp)-JQi%7%io& z{1<65Z%d+P{_CZM;EnEwBQc`kkS% z=Z#L7gP&RXFx2z`5g$bgTQC(zM)JS$V9}HsI zPlxl6tNxW%*iY!eFCQ-8fbV}wCL$!q4w~t1ReABe>3c9HiWk5ZlVBKB%R&~vXGk1_ zyn{t93K+oFW_W`zh+};i#DUTm{OaZc*UM6yOXV@G!mv)dn}$2sm+xM_hKl1Qg|}yU zO}4RI+UPJPh=Pc|uZ<2PCbPOtI9?cGl}2+HV~dUU^9JD$F=f6@4np@^=GvOeoAVE} zFDPRmCcTB%GRN7{wxR-#3Y20!`&Hd%O03(v#2H>m&xb-o!POKfRAm%bzzlp&75C5(M(+ z6ln)3`IAq|T=}y#><9lekw1r-z->CxA|}6&*NWb%AajiUOaD)U0Res-98peG`ROg zNX^NgcPxSJu36w_VMdyY7|+|)_Sbf}7cW{Gi2F+yiI=<*&yqj4TCU$${#@VB%b%BN zULZUE*y!cYV`_1{aN3_XB!B*lUs!z~n=a!WZ2GkP8KDG{KXo65@@H>$-y(MZwL@mN zE46zjUhWXYeq$+SWFGv`Pzf7WV@kUyg-3Hh_*2VVXxvd6!x{3%Uj$e&4I`tK!w zR&a*fZDOIMH+vW=HNhuPdV zv419n_D?iR{=B!!%b#`(zN`kT)P|g4=O=u|0sP*{@h5)T={d0oY>9C zpJy@s(sCio{;@Wg{8@EzX#ZI1O!@QSZfW^*#sDvWZpX!*D}M%N)srcI-qxGI{;_&w z|L`nF{+!h@uzx7r?4Q_gl|RDARkyl$M5{_pZ9!CHqD%2WK# z=R3F0l|M!LBzfBY>EFEl^M=WvcT4EhL`Af0Nd|p4AX5f)_1@YRY@mZr%926<`k+}E z^hsk{27Pgw;OMv7K!5l$QwB{@dGWk^a0|C!1Kt0=k%~J}B-5M>I-ZuMY@mZIwb?*% zo$`)%xP(hu2G#lPHUA;DOvcJ_f#v#rWl&pYM|Mmp%?o7E=U;dkw4YiWFWlyg4auNQ zO_aknqyg_q9UsR556qm~Y^C$>g>0NZqxaKf)b=Z0s zA#mAtaweCIu$7aw`{a&yHLThedr=aUju#GNUzfD=dSH*C(_%Q$!@kq`>V6nBo(`M$ z7{=vo@GktzjTeRlO^H4 zU*RR(9ul-jxc#|?67B<*IYSTM`9C7zMxt~C5^lB9rzG6Nq%;Y~4w>RvtYrH`IkE6S z&Qgtk%Bwd&!`pVI)oW6%=mJSK9maXik~0S>w_ckrCf0_i8m<}nDQe3FI_rku+t*!gT9+cR2E4_QR#j8gThy2v2QuRw zPWjZ5mO$Qog|2OIpT4aO@_cjR$s%y#h*zkude`Yvb*gW8d8$rzI#2bN zhnk+JBF}qQr}Ia1^54Td@?VS_yDCx9eE#Yy)A`GD^7rK(`4@7&h4`P%F&t&w*;xlf>V8g@B$7h_z%Z&J;oZ<`Oht5Ls)-bW1k+HL9853tR zO|W!(!F};tT-;{By+|}(k}oUk)I-9(bM2KjUi?6VY25e96!c&IAD$ovEvSJl<=IDa*=o!FlgKR`@i`-Z#R*=~RTnU%> z(z8&Fk2{k%n2m}kt*o0g7wGd}qR|!t^PNu4NOTbTCUGR=wgN@SnTW1;HsLDUj2so0tVK)v(?;?5~Smj4=R)XZ(BdWwrWyW#tsQq zZR^ln-9x|n&GOS{S9~7vKKDy|pm3nly zF~so90Ha!=CG>>C+7uqQ6(F>zf|Oy1QHwnqtjktL`zYq97GyJGj%qa)YwDLg*@!H{ zDe%nC?q%e?$Y>>&hk;?d5yn+8VSD7;)l!#0SQkCF)L>C#aoQus>Wjm68u7B-KUW31HyUS4uOc=_0v zEWG^c6OWf&Boe{PJ-LQ>`PSZPygUnBb!Vsx9xsRDnQrW1i$};gXp*P;kJA-{4R!bSr za`5uXH6AZdqIAQ{*Q+-IFXtX7Vk-RS7HPbE=V(3J0AB7)r`!Wd`J3_bomN?RdFx#i z0$$dcN^EfuZFw;j2k|F&!kHuiFE7sGntRBQ!8KWUxs@hJE|xFXWa8y~y!3F;r{*^< zS(shk3BCa>KWQB{UUL1v)$%27;d34@r!Xl2UM7!Gi?d9s{{=6noVw9? z`Sia-1nls%#-MpGTBu*%@mQF;0i10yb*;zC39N*;YxmhGyew1NA*B61@bZ&USu_97 z7qezQ7caN5iEMCNa%Hyfo5@^k6kZ-{cFy?!9xvz9unpqn)g*#?zHToPDV*A8WASo} zH=D=He%9&$FOT9AhHk=zS$O%(haNA#ex8cK%T-)My!_i9X}mn(Q}A+sb;0B13lgCz zyc|o)6kc8p4>y6Z2UUKvc)6!a0>VN^%{sT_@;BqG{MWk z)|pVhoc6lm<%EZ=yaTe!+toLqWxQNm7T{&y-929NTX=ad@ix_iVN@F6<=c9-e!O(v z9P zfX~2~J$~*(Vd_WMml`WnOCptuh#Sv4j!QcJ?04>ZjCx$9KK^XstF|hGcVr9hn6(O7 zgYm+W&$?irAEFVn^${Hw)cQyvF~QA)-8`_TS29>s@OuB37}RwYQTz6VU#W9woIUQ$}KjtI2V&Ga8pM`(?) z!)flIKS5-@Ql|fw&sg8UhNj^=`G$j!KszOjK#TkLG{ScdXFx;{L%9OjH$Md3U`-`X zFmFJ0${Rp4eEiu@WOm+7RbIROGX2>PK2bHeC~>(t1EzYf@WV0`aS0UJWvW3%O#Y(= zCcza_3Xtue`s3NQ6EuuQi+ioXy&+K=FX^pfwFy?xE*^M(_0?>2&Y=>_dReQDA^2fm)MmPA(;D1 zcY&vZ1BsUb@a__|(I1@3)2)D;-^s#fNol~npd$KtMQo3ke%`GWeu3Rn8@a!O4AQv0 zGGi^~LaVSr#^Qb_27vvVr4ElIqR19@+Qb06#@(^M2kiflHjoZQbS53`ZE{vk?Trk* zQ=m<{rk74oOf77B8Kc(rs00^O`Iix03<+e`Zh&K)&cP59AuLAZc5Y<^Xxd`7eZ3b&uZ? z|90Zn1?2g5U)9&9E08+(qum6ltL@UE?hK^rm^QpMuYEdNL+1CDP8wJqeZM?PT->$k z*f{Wz8}@`vbR@30xXauXM!i?C`Fu<%L9P%kR>v#G$F*eFv*8iX|7XE^wPuN_n)ZS7nq~eo;5H@9CLkrtJmA_a%WqT(J;e zDv!QxrBv6JM}I}k9XTI_vAD7)&~QE~IVV3d@w1hY?*EY(0waoqVeM%Ju;OZrxISW% zK1m(@q2L*iCslGoT+%0Uys>$gobp&zH-aP&*-W49re@S z7T6o{+A4Q;Su#1J_1G@utU}qpx-x-J6|=PlModhhL^{s6a(=FQ)-!EMw=@G8; zYzcpY4HS3e4j?#wi3$JG#R&grJ(`9mr5}3SsI@%$o=W1d+W9|feAu+K?wQS1=3$hX z*n!$8QS@QGSnkd~M!nFuEO$e=Pn->t!ym_ylC4Zhj>IN+;F0J}W9c^CcdeWZz1$_# zC<=C?xPd@3sngTN3_$=fSUc&JCx~wlELA;U!iy@_od$C1 z1F7-6MhfM&mg%0{9wYg{E;6X+2~a!JYw7gJ`s3}k!4-G)>tt|n4?T*PZ1FA9e%+3i zNd)*gHhhq2haeMQo-zSKreApLdhFFIBQBVVKYOOn1olPZ#PqvrZ$Z4kZ+NMck9bL+ zQ;|uX>APRkIgkt@)#wmrw`x{eT0vV2T%o-sya=+xXnizGlVzxPWks+8Lbj?K>FUa( zg~x8H zzRY!F_7r0nzc3b4d5N}@2OD*w6=|L@`i$j`Prv_;24ufa$17$0D(lOMNgDlu5XODM z#lHDZ4LV5ey^L(44-<2%-K`?_SaG2m)p`l-`ZwyE2K~bW^&+ngFDjyaHq|^Sjh!6b z5*||r3sO=s6%T3P08}Vy4yD>bzWgV&Dxw2$g#)D?GKW|A^6%$GWt0w6L9N{r?G$vO zbePyqqUNl}X2d4}MTs6PKJsA+VKMsvYb0u6DuL8u0cp7W-Llztzc}& zbJpL9re5A1n*LgQ<*Mu5bJIl)xpo(}(j06h`(6j^u{IJ7_dEwjP}%FncP?2e-8vFo zX|W*Yxhoz9tA93e8pOKPW-_*x*qT*_@I{N&!d3ot2U%j1z34w%p!1XuZ&Opzx-R(% z{5TnynZlUV0XsGN0O#y)B#YUdf-<=>ShZAe}$MV^~ z7BzNh_I>PhzL$JqXJfN6bQC^=?E^&lo$pJbpDNL@({epw+_SJs98x zZohk^wwVNG~-B{fp;k;o*#aCY^PAH@AredPN-+6!h%R zmV#nexhvAQqqz-6j&*-CgS8iG(cvblw~w&mZ2vwf>$!^ZpsJN93yovx#x(86@uyO~ zsQ$uCemCmr&`uxD9r$>^j5GXq3&Ga{Xx^l<4{Fl-U&2a4XTGDt5Y=_xh$zt_R(Vl9 zg);TU>mU3zOBZ7X7cgSAR^Adf{m9f1+^O45ONMfS3btCiu82BmD{-%jb`$G*7u2K= z^RG>6oTBtAw%_yfWkX^HKF12DwPCsY`~eaFJok;R+6;_8+&6fh`}psM^QJ)L)sTm= zrY}j_)X+DH?!hdsa??o#rqD(=;6ZUk;V3l+h*yGG^<*Ww9%LqkSs=`Fy^xfBXLcrM z)XeImDAB#~&n~TK$%|ZQ5jm$Y7w#I0CudLpwHAXQ%Zqq2)ll-SaU0ECV@Dn_20`KN zt*fuv>hDgAe^ryTlMd65Ejkup-u+NytrAV$0V2`fj0RTCPYzTAIjV}G=h~{9v11Dw zcPl3ZO>AfZJO!T;wtG;0(k7RhrC=gV^ehN%@0&C$`5&sS^>YMhedn(Go5mLXH^{oc z-Tpj;frh?~3eM<80>f5J<*BinSK;s#S$TG9+WZKKp`={*OEQVpmaO3KYyQG`G^WoT zxSN(hO1f&(XQ;1v9a0Z2<$>4wQh03TeZH%e_byv` zeR&tFyh>l*T%P*!dinC6Pd(U+2jwV$vC%#9pBf<1RFyb{XPNeu>4zPn+9e$8)4nQ^ zgf5!CKQr~dA^UxXe#pRXjDDEXCr4rXZcv{@dn*?C#0zgb0nUi$ZTGh6i4iUX_`t7B z_`nqP@||;GKK%_o{mDN47aN9dE4(YGq)w~#JbIRjXjkBF5ziIf|27jqNa zZ_Up|L42$tqttBKl-jIpY>xx+E4O+l8W_(TeWI|yw9zUWCb$97e&z_Lo4!?`Sgv!| z8&jG#I@@j=+&{M`KX5MAy+_aDC0A;d^`bD>DtA&kS1icYce|7hdjXGV|Jysa3h6*V z^u8pkS5ZtGUAYU@#ESo-2w!PnNm6?TXTRq85A^puh0Il-8T>7v;CCw6>!m zu(ca%C9H4*Eu&XjkM^a44V?p}^(8`=slI)JT-z%()om5z-pq0bN^2LYhSS^+Bvzs| zx+)U%=k}l;(PN&DCNV$)d#)^kRh8oZmh{aR*dF5T1l84^Ix`f`-I;42;r@zJP!)5! zUnEzX%<$Lb>XTnUvffKFz7$VMBwJN%MjysTocQ$s`_#{%nGh?iBag<2S!f*uFyZTC z5Malr0ABN%;P;NQ?JaP9o8Ma-t~#hE@1i9pJ~GV<$%eS0I8@L2Oy|h>8Tr?3K@$I1 zj*-VV;g@%ez_qo>PuL$`K6^zEN|e-j=g@V@zWGni>-lP9|4M}GaI{8!t;I!VuPM^D z?iHY9fu3>g%oW*T85hqrgI{I5%`IXP!$jT?K6kxh>;>iVt5CZx=|*?!*xB5Job~R> z+s$1{9Jh_$0kDPrgQYnCF0K8~!{m>7f%s(0Jd$6ydTT6arUzeIo5 zQVacLyl1LxdM)ke)LX4vzBc#B6SO*386jl-6h>41-{(ci4xJOhL%=DS%35WZ=T7FT zb2=6YJDDupwEeE?1Y?mbT*2C?HeK$-#G?hTcC+pff1`!n%at)p^fni6(j9S&FGXtw zPb*jS2RDgCnB%n-(F4Pgg;ZN5?!g5#MS27~Mv{~H+l2?RKVKAIS0x}0@820XKrx2o zBwDh4;3PUht(B7~!i~8K{0NyjSCtsd(+vCw{4pG;lZU*CKPL3oEa=nxdqmd=BoOlV zoMTM>UW#^$pJoP^7Ub_BpZ;{8{wbf{1?kr(en$(=Z zZ5K+`)I*6+a|YF&y?M%=Q%>gvgiLCU-8Q&$I;BM6nR=ksv~KBO+N6@-#Bi zMC}gDa_JPfBSU3%NC7*`5k8F+gGcA6B7hJqy)f|TT!o>Tw?A95n)T>RHcft+tC4;p z3NFqwlfqqO3JV^cv3HAr5RN19=rFd`Qv#393fwv0@KTbouNAY}^|oAIGVW*3P-rC? zSsPvC9#CKfed?irwkz8@>s^CeWxrRu<@z1^b6Q*3tKFg?(Z`l(nS0fK%i9sjaOapj z%=9pdKXQK$9DtkI&Dj>-z=tM>Mz+7vzrVM|_qpZe{to%$hdBLchJRqqUUD(jY@6+S zP1ysn@x!VT528G#)+a_*CGJf9Zc)CE1_46mcHKyyA>aE^StLHDmvoXtxW|n+j6tqP z&X3HM^J#J2qW|cJLWn(HO+Ol(Koi3wWH#ww3QgO9yowc>b4Ewsq5S`oxG zi~6nW(dV@WnSb31>z>jc4&3ePy+0EwwDKaOz^}Y4aN`bGm+YVa-bG-o&Klg<3mOOs*m`%h?qQ6|-an3Iq}dW3ABVBap%Sb$N%{+K zM30b@$2<;r8d=pHQI}p}(b95M22}pFA0bmhA-JrkB&Ou8`-t1bRZ@-Q$9+pLSW}g- z_E9L^vz8Xwy~NGr*7!8|Kta4@-H(!QT18n!+(e_liul9w>`)xjOYpln?%chT$v&Hm zZPT@N^#C5vh)hc6Uwfx?GyI)T0kdCC^FlF|let)u9Ei#!SB5xe@ZVdt>TAN*U5aS! zyXqD8Je;f|;>Cym;8EpDUPvHMqW>>N^843U=9jHNXQVDoQ>WTd8;Jc@CLlPSNO)heOU zm-ACf2FcYvlSeZeAx1eq{S#XmtEOPMblvoDW$Xv;7^q@2EwsEnUqt@hvyB*uQSw^e z&9@sp;IdLlXn7|rHvc3n?6tgIZNffsll(PX%Zokim-(gW`7tblcBc3vNQ`I!g;J7v zd05qJd?BE1=9u{(G{bGWe~QM}{2`#**ysTu&;r0?h@nz^TraoJU;J^X7;0jybO=UD zduV(L%J?+C(n_gykg?QfT7mfBz$y8w>IWtVwg>BJ1{`MIue1Keh{(;?!zPXo%SEeF z!wSZ0 zAC$b3wFd*+XWHt;kkRT-%x^LRokt&YZ1`54n(OYPigF_CM`2C53_p=mt&&ArqWH^} za)%ylwR8(sAu^lWKQ|uc#IMHz<&dt3Ky|<4=X+3rM8{k1Z~0!&L!E&U-3r?rpSOna zBG63@YU9!)>~=B@yyj~#U_Zsdi5EZetT&1}(pc-vJXdD74Q?N_Rc{BlJ@tt5Uhk3d z2SRR>u_Va&-qcjaErX16U^Q(gp&j4wHgm%8Il#HnElqQ@!-MW(8e1N}q?f5uBlv-` zH>@&x4uXN+#7k~isR3Q*PE=LuAb`$TVvJVSF`kUExZ3?fdxI`qLrS6Fh1NK!R^u{M ztF(QdBAaX|zOxLZ?-U_iFIXmPkA5(*QRM*O3e3@ z>lhQr3+~XSY%iY9a!zrrt~WZ7d;l6}_z$$u6n=zfIrmXd{26e!i`CMC150@4=Tiv5 z7>-zg4MUjR^60Pbglk3h^RUM288Hehp8lv=;~+?b$=z?=^VB4)*Pgrs7zYSAS$GM( zL-ZsIM{oln9792xeUm(MajFPj^s$hLB|n-}KC63VqGvQ2LEU&P&F}{%*-G2am$sHP zS*4Lk*q_>{lO}l6ejn0ci+XLELq+bX8pasX*%4dIdcv;Un6vzAN>#@TR zx~Zb|TV*|8O@0}Pz7?6hyay`dTz;4L{^_cs#>*;(zg8YyP>wT75AqvFR>Y1$P9NEs zpH~kp@4e>AA(Vy(>pMz3ixSI+AM{wN#MucIH`|JvO>uvqxXA3Ei&SLq*%Y@^y13b_ z6ZWpVvO}c%n$er9{o#MoNXGMb1Aly1G5H{W&++#rfA8@Z%8&H?_F#Tz`WVRW@qY^u z%Vxc38WmqvG|8@Sj(_KlVylbk9EjVmBH$=iT+%>5p{%bzwy1pGE6jJY{GFxctKX~Kl}uU!ZySkS z`BE=ad;3R!ioEk>MgD!s{E2rMD<2CjkVuW{(;8Hs8HtUhQN8)lW!0?e%_8c=E|lrN zf&(eLo1$G>%|LBt-=?0HC+B6>1pPEq+n57VwWtPaQZ13*A6PB_pqA=;60^|5!u>|7 zZZkgEJNBhsm}d=*smaxtQ&nOc5^}E&*ao>efJk3Le+xC z{77u4$G#Vu@GV@1$y?T$VpPnNp27_K7!ALSlnM#q$LduI5M>b<0 z=anDys)%;QJ$|%}*uMCT3lbM-@?s_N?+l<_J}wf?knJi-ZOSo#*`R`R=E=f4 z$%0;6dD;-D4%KaChi8-xEGo$N&mqIwoAFtNnu2RS<{`RjAw#>Y&Np&t zaQ!S%_IHGv8~?(qH2!EGS+f(2e*|rmDK5uFSRNY$Nmh2NN`8{5Z=cT_(wfl zmGbtY@u73ADzP_tL%fH+_9#~St{$0Pd)U8t$#gzeNc)?AXWQBkWz8%kGsCM!V# z(|}k4OD+^K#fG7}1Un$2bNVJv>e>T!XBX{wTH;=>(Zpy`c|a+WO*-NAD2 zgXu|ZgJ;v|PxeAsA|0Qhxw{AgV9BFBzyFWlVv5uJBXsht?fMwTdE58oq|L&hef-`v z^S8#cCqwlv>uahn@LZUWBJb!172dyV`xlQulDJzh@6zhoBbc$s#GjA2^lW=5H`}4& z2R%B$*m7cBsWLG>dB=TF#GATOnZAT)8eP}_`~0i>ckLXBS9EP(89!>k3#};l8G!*K zD`f6w;!?E)EK2KLP><$1uPQN}szQALt+y&MSpzkN`GsZM8N1qXjbH4*UlJ#!d79Ni?Oito<#g~N zg?}jbEP?+(e;~VGKZeZy!l*!^iRMhBke4%%{9{gAjSS>p-#O6|J*82$}bx-KfxCu@Ny6BWq+hev~+|Sz6=v z;~Q~$q4vknRiBZqkvNP-W^}J#QE&z^r=RPdF~4aCQZuN1eFqpX4firSYvXy9$_mGm zWXFxAd1m`-P%sqv1dxr|az^cOoNlD~b5>DzQPjjWZSt?Xn8sO|+vb${^O*INc|N%! z8gUI+>Hy^X4U%6&FR#GN~#Eh zy4==)8qW$|Xt_yKi2XRUK#eYNuaQ)|J|~?;ywJEm?)XeDegSFHxJyufg2btzUv2>H z60|9pNQK5rET@>9GA^f##NE7PXqL1{yS~X|gQ~8|uFBdrBzSjL_B(N9W1ryNQQ7Yp zXjIWiY}0b6J_2p%RB?Ov1}zE(3JPxJx~4m!V^WFk)JJ1)8r{;oSYs34F*PJRujOQF zcj9%Qte=tvNM-m579|H1cnG}tMjvih_}BAQIUL&3lgRLqJtDC#5FnAzXfuP4UTPC; zSo9}fa^j*E+o=Ia9OIMCX*rojA+ftp_E#lqshwZlklW7FX;)@DU%oP{onTk1#H;*| zf$H0G1B~77^~rW|`ERq+jxmBbONM6J1z6^i+t?2H3`~3-0yK}}0#(is&$=z6Q`-$t{*m(Q~e|`Bq zjK4eho5kODtYK+Q?tHHG{Pkf?ZZ+4Bcs7swM*iBN8}82E5&RJ?G}(@4Mf?rqZzO*) zo<(?f5r2ICE4h-t?eG*G&fhftUgYm{{@URS*@wTQ`3v=<|Hl3^?8>(PE^A`{6`|1N zSXj;3e`)o`^qM`icGXLfX1$c1fXXYS=0GO5_2ks!^XzfQOS>Al7Qu5VaFv?3AFsWd zSNXkH^TGpI1dcr{5*yP#Hjo2u9g+{NO}fnsnEVeZ|J%Q$%HQ0|Z*%F(R{l1*<&RN! zXOLw{I?D$<1M@Gv$+El(W2Krz!bK2f;weZcsNelxoJj3wF%fF-c=CEs7|&d??&g2A zxj>XS&z3~Y;T$SSpOapD0f!IkQQrC^yVViI=;KW5PY;jMd=n}p7f z27N`*GJQmj~=!=wxUE+P#P=aWD3tS|Tf0Fa)OzM=BQgsJ*Fy^@ zJt2E0f2Yissr7lvf2C`>{KW9=@^9iD<=>2RsVeat#FE*5^AAi)j@>L0U0s!^y|hc# ziTI%Y)cdi`zL#6fox-d1+Nb%?_Pm6xH?r@|4V2`>Jf5m?m?ojS2TxUtW`4$b5$vZy z5%vEJb{3}_AKHIUFR<~ylS`rlW?*KDaQq+682?w#${wG~{PhMs;h6=b#{Y@a zRsW4m>(}`89n9`Ejwn~-qO8J2i4VGru47gb6{Iiyo~SdCECPk+MdNvIX3SUboc7$| z=j#B_r}_2ma(pb&pE6ydF7H#?hs|yMWxoa6KiDYO8RbQl`vcQ86lm|2)Ac({IsEz~ zTiyKp55^YC+^uNzop_vq{lDYV_O zXj-zLe+eqev^;a|=YH8G0m)hR^W+v~Lb ze7F5hdjT@-=cyBoxC7dVk#ha^bKwn zU6%daHv3%*_VZt8Q7}+uKYu~4pc9$)^9g6RG%s29^WH5dQ@ca^c~d28$u2#yCf6>V zOB*xo(tY{O;5TPKKQOGtc4peo*R-50(|#VRWG%Jx!K-uIxpPiCuN{@u&P@Bcb;}LN zw4WEB(PDQ}_Vbf1r%Bn*H@BQ7%YI&HmPvppIrj6D+3(DLev%#r)MEDYKf>RE{d}AK z{{N%>jJ|%;T+T;osq)d+iVso!4J^>-)X#X9 za~cr)XU+`9Gk#)rictUlHDf%>`50)h)^x#a%6`?4=UGEFo~I4TEFh(SFFnrskLjON zzx3}_b6SsWTa{RLF3M~2)64{=G^}t}HSC9eY5i6DXN{HDv_H+P-*B3#KprCDkR&B%q=1$y zm0re1;fZI(V!3+^XNA&~z<1)H(Bj} z3>zxw^WW;q@=+W?i)o{6tXuZNOt@o!`@}?JZaMa?bunh#Zl2edg$>E?Q zj#73O_?4W4y84Bjv$RkW8x*cnl@(<#jK!*n z-Au%B645{ok)86Auz2)i6N%)AKSv`u33C8G5E)i)BnPLzMsft-Hk5Of6UqT~8p%1F z9=PPQ8-QoX$Euu~kZ^xNXe_vUGPh>7-4b?`FolnW~na=w@E+%>>_h z$x?7YbrRUAb^<%!0hQBrAtf`?MW5Z}lNbs@0C?UxxyHvTrX6juyK@&4#3p1>Ewx=C z#T?EhfgNE@>A=p*RaW7X*sl%j9IeA++2EJ-38zyqg@BHLDr2!2m%tf+9o>W zhD1=2IM)_iH#%p(bY}Ij#a@yA zoo7TNQp>r%;o2R)@Znq%GfI%xhG+e`%Tnu3WA0u1nKkRK>4j_ICOMbw%au|I%|30 zv&sqG@Q|z)F;`+%B)eJ!%1jwu!hI$?jwS7Z6SbdC?xT`h|4Z$*g1{XzMHrbaA`V>H!g||Kw1ZW) zF1promL&iWxXzN955#B_olcQAiK9;k_Ydc@l>e&k#Rybc*MasR-}j-%AJPdH$8gXd z&@wjmp&aAEO3Gp|Dyw7)ta3HfBLgJNV*Xlz3>YHtr56q8^Qb&8;yELj_{fUN+qJ^%*hVvzB7npDd8^KkOg$+RORm;eYsDSnTDaLfIy9+Ft&FJy+Q4bST>#9%kb|*t3gE z)&9+qAKkXKjAPLY2b@OKb7?(i3E9H`SQ8DoW`B-GL# zQ$kKgN)uZh5E?fe*&ODS)+m1><0kYLR$F*leClC&k$g@>HKRsK<1EfR7xCQWHqP;h zFlz*}_#tAWGHvT*+GtLdwowo)lIuw1dntfK zzAIZ`VHTl*I3oG2%N>!-(ym}M;fUmusX{zE<6LRXiMQv2&aYA{0d}YYf|%~0aDi=} z+s<3T`@M+07(=QHZ$Zi?D;9wrp}3LU5JG*M-GCw4rX$uu;!QH>&4YlXUBOJEJ12r$ z6~F9NwBq**sovEuv|R;3ksgfo?M@rNvsJC3Dp_b^5%WEbFpQ_^r{8t+hqfI@RZpHt z!^=ITmrxocSC%7gukf{^9Wk?H)PL7%RvlRmMwIK0p!)lSv@|d%&8Fomb*Tww&XDT% z^#Qj98^Nha+4E6SvCu){UeF;cUEOJ5;V^ITLgF%4s(BG(O~v6kGC>*Z2z{AWh&^$s zr4oVKnuG_4d8blUXga#56|4AWRH|;EDj!~CU{scbrLNhm7VR@IEc82s8fl~BW zIBfRHx(PFGMi!>Hijj-*n|+Pr+1*@+amgCE^SP#Q&FA`rYa7=fUK!0L>v-6>owkoe zUW(hB{eQ10+wN`Ng(8HLn1pr_GYZ z$#t1*XPJrdPI2_5G+R=$r)_sjzL#S0vT@laHVuO&TJt!+O_h||Y2ky~jj})Ceb;!! zI8}Qoc3FwDdmxP6hCpGzSV--o!ELR1q>m6}Sys_}W~jN`0ufXzG`;-DV+TJjVmPhB zs~tQJ$@kyvUBMK8&{$A!0JE=PCAlML6o^@;(}k-jy}<*)N5Ce` z{&$=kU02I+Q=)tqZJNiaJ~@d}2e)2|@xm6ng;Iijlxg84iIXj)vGQEKv65hfRE{KY zO+$rz<7w%-)Xr)KSH2<(DUw*pbKtt;T?%Ud9lup)q_$j7kq}9s}Y;D z^tzyR_(XOj?y@zG$lb6Ck}JURp}EVbNEuF<)X<#$RN-<6Wj@JWM#W5jz;(z-aAOX) zX=a+Gm;E&DcjwKRir=jU*)o$$ezPw*Ph0G=$N62wudFidj$FBcOIE}#;_8B2!OqaN zrMIb!8S2#1Ys*z^nZynC73T&7h z)~f~XxR1^%J6HwE)9ipng^cxD(}`kfuc+{x>69{mJjtO1@vo(=2M=dkD$FmNvu!d_ zbTfyup_Sm_lORo6f&WN7d@>7ZbYw3Wa-8q(yH@bQ`@<8ZDR4<*)6QFQR zLmO^{d6Z;_8|jHR+&F;JP-jOAzN17x4-7gcPm`M-6N+__j=3ya6h#|ug!h58&zP)~ zIn7hmB~+#1#@_>+)_Jn8&NqkbqRyLnE5zxC5^m&l!vg3+ZC-Ku@?8ff+*q#hM%g*W zxR$eT|7qNp>78S`wMaEIU%auLKwVE4cN%Xzf-bnE_oq{{NzcX`cX#pu39D|cSc)la zDm!BB#2eQzjorG2d+UPjCPLTh@%n# z=(Qn7xAFfVa4{EygkmKDKI0}+Z;yWnm4LL>tI-6j=9JGtU zm5`$gM0YQc>5wDp9>5cFd_I`wkAlABC2kHRZbOb#<%Aq-DJwm>IrEN84LMjcOWbZU zlSjZ2N?Z{BN@)jABFyOt=k);=6e3($g}a0teU%(XC2q*^{+zU|OguToZL6QRErsrU zH?!EANt1cW6Wz=mH0OgdSqct#$d1T#$gzfELfUjhWT;tfQ6U{s&B6&emj5Q#_*gsA z2{|5=yO@CPh8$Z43f}Ev3DpLK&ANNZhM(t`(61kCNbU+Z`h8*ve zCR*h{*6?&fjuUei6Lch;kmK-O0es)NetRKk*Kl7?#o?FH4OxHNBILay+rdABi8n!|!#(1!r*`fZp;OuE|^va3y)x$nQy%dycCsI?Fr!zQ(g> zxPO;R^qG$6Fg>{VG^y@M+l^-@aE;`;h-baY8^d)A*XLZacZO3gQ-9)mnQI+aTlAcs zT%g4_Q7#{0XT}^FvPbb@^=8l<0r@%X(*9Njw{nWGIf2B`JP%{ zS1&QN0ym(zQu%EfAh9U_gj$~@A|QuKI03~BL{31F6FQxkB40K;yMxbn>BJN}h#!-C zi7C4GcrN?mx#T;5L-vwBmC`4*Z?V#rm`lNh8rOfb)VpDnqotKFrT4fO)-M z*sE(2aNir*0LyOro*s!aO0&XVs$JS!DFJ#-<3rmQbAK zST>$0F4hJ+Dm>$xO@foO+BAr!0n9y&Bh|S(hvX7(RMZL{rzj6hqn3(He{6$Yk2OtL z`}J#8WYP{%C6#TM1c^p680YC{i$fH=ScmA*3>wz50uZ=kA0(dYPU2Qg<45bx(3o@u zEo_{vuaWvR5~-+O1E3hn9Gv3HKLubi03?NFyy7W6htgswpNUs=a=I18srq=KBnd*+ z31Q(im8xV|@PQR%=Z_~}b2nPq`4PRKt?Qs@%fao7=#Vl+gwcy&H^)e|Ss_S;^ldbL zr!Ey=af*5!qgw0PZ{XW!b6w3foy&z6+|((BJWk35MV_7;EU*B+DBjkgUc z`r#Ms-CXB!aS&%H`Xg~R?2qzR0H=CJM6H#K)yTZJ0D2SZ*f~$W!9sU zGMlUPaG8ITNOscrgS$)B270OLLihX{zdU@0qjvOEm!AddKiT>Mb?-q`%;&vE3R7=z zRv}hOuEW$t1A?iCvTXu5kZP)ywvRhq#f440d@K~xn$vV9bvjPdg3KyiIc>#Rr2D9d zVOQ@&dUEu8N&3hY1i&iSVH(U&uhCs45fuE@)f>yy z&y&ity`2L2HneZ2E@kT5V86c3eL#`K2RsL^2an!m8;PfEvFmadQzn0#EjCh$xillA zX@}dA;zMCS%il{BD|l{DcLs8oQK=#R&g79fk)iTq1n@e8ueL;g zH|^LGhiiH#TcRF&;1*=Y{ao^!eSJk*Vr`G{D`%DM;5r1^QN{Hz*Fvsc_&e__+|_yu zFaOuI7A3mYf;A%5y;&=QSv7hn>oJ13rAB#V!LIq~$(U=xpJh+Qo8{TOw5R6mH94%h z-yayFGy`!LhJMpOZNjN=NDPruUKS=y&bl>Q*+)@{Hs;w!@n@$-I}z>6I|7j9asXcUpIArdjk)qV+k{>~(93ey(~#`b4ZWkM=q?|5y7cdfN^-EOZr6C^G%~ zD2DXfiCQh%#Ifn@qp0#!6{D(M@1scc+(n)LyL}Yz;gS%G{r_ek#VeS#j@1vz3uM}<>F$;=A0O{9 zLFZ_!UG1ZIjDX~gyYnl zbXczO@i;X@xr?cy;OwI~M2hVshn)kmt{vu=!(S?lzHJG^d6?zY6p9uExK7PCy5|H~ z6$i(uIWu=Lomq}k^I9pE3*h=w`~dfD4dDCw>;!POQ**D}kmyW&lFlK{nhwp`uWYAg zeePnaPKbx%;oN0p=#v9nQu+ihQ9`zYpnGu5d%pRPKyK^2kb+_a;J{6*7#Mda51 zAMc~^=o!Jxyj1X@N0e}) zf0jmbnA)NoFB#M$Avwf~BR&ro9j7>w|Gix!+Dq&tSw_kkpV1w%dqIM=cuc5@<2*kU zt)>K(d}z?_yHKP_1|L;*I>v8$C&T@41jpz{!IDi6YJJj8(Ltt*`IuhjA_dILXyFN6 zL?bXVs>5v8)M>E9e1(CdCg=bpk}5qlQb(2v8Wbu}6IAMRO;GMP(%=v9z))0{%T`mZ zx)Sk4EHU>`tzC2DN*x8}D1cEb^coKk;}wYf$}42eP0Wtnii2}EYkCWb-AJp?v|dWF zVRomKdP~=+Ytj5jGvVl$i7^1pyMaS;wP3B$WfV_#_O4HDHkV_uIF+h2X(t$93^Qw3 zn@u@o5^F&yt#oW1LeOW$%s*|h^#|nyM#apXw%Dr_gN($JA^`>U&hR-cXuy(chZBWy zqp=C~xGOZLh#_V@fp*7_ytdKGmcF*$ak-mU+0w}t8=SkC%9f3G?27&ilot4Uk;q%G5`+-1_1=^44psAc*OhYoaVsz~^=OBs%DGp1=d z;h$5dGy5atyu`8Co>REwH~U&adN=IRD8G&TZszKOJ$g0QeO#|`b;g%Dfa?M-_Ue1q zdve~{kPR9C=5{{BnSGu>NAmD*p4nCWn@W`_BXiM12xO01l^S{%LQ)VJ{P*`PG>@u;C;2T)t zp>ekk4d>(XmqcPSM2R#p&&=A9N~|XVY-?%Lkuahm)NbQg#s;#qBfs%=WaIwsv=-SR z$1;i^MmjN%Y7&2R5~Tu7?3Myk%uPbv{Z7Y2U_KN(jV&(2OUh%X^)zSvhS$z@UYpTF zUn?|saH9t?Y9%*HsxM`LcDw-K>cY+tTXg+-&I10kQL-0nQD;C>&Tmvdduy<7e!(mS~Lv}x)=%DR`tE#$1zCZ5T+FlX{BXDq(U zGxw7ETf29kO{BbBa=sk51!vP!S+Y%u?(cRjF3+ z8mJn6yb_a>`>fvD7fvY|^hZkF1UfEv_Xq(u&pP;;zW8YR#W$SMIwN{~8 zt%i%EQ2E{XC{9^!{Pdyet-0|hsU|f%<0M~W;+PMKiTd1g9DJ2Lch)Pnv%PQ-@C?9s zJ^23h${nSnt_OdOt3Kgs6MfBDuUzJ-a}0IvSY4BpCG7^|{GrI@RKfSurbR+QGA;mg*N9*`Par8wQ~p<2@Qxyz)r zq|1xn|93ROEv8`n`g)xA6cV3lS_WHum8*S%H{vrRs446 z?zOE{NZKvo%xjZ4YKrs#}P4=Hhc95}MHHFMTt zjuVm|LRI&8_7`BUNc)cb>yyQ^PuxdHwUrZ+x`~O1)r&LSS*NF8x{wol+~DgWVg@-P z_Wz}4{~X%^XJme&w~G2FnJ{V8Bi6?4oi%4{oOLJ9{+~Tny+Bo7&;CiiIs?0^^MB{r z-==2s|D9)l9cp8Sz;b%_BV{u3|HZR^ueUBZuGh1_`XpP4!~OrOXWuRV-#z;Wcv}|p z&*Rzuv8(N+ojGgGSDJ3!v%mgWC31&GR#VdJ**^`|l}#)s1a?6z*`EC>2MDM8JA3x? zD4?0Y!n6PWfii>Enz#6M-Vr&slV`sX4L{@A-%9E9Xgi+$t!}GX%awiMfm$kYJ^M|C zxw@+|KRLx^UAKGNQs~m2{mZ?XC|Oya{jfJvL`7?!{S`pvbX`cv^vZNZ6${6+e}AW4 z0-SJ`D_@hlm?{vCXFn*#T;m|U1iPIig*=^$Oo{h7|wF#zPTaMnfN5516S>oyI8ho zf8!oGyPx*#znQy?41LD4pAY0&1n>3ie}Vd%m8qWnFL=S3psJ$0@1`9UWs#=+D$0Zz zr{mlIiM7Y?^2@PPslRb`MQ<6*bpzM^T$^~-!0*YFo5OV=y3BHZU**};+`q#m-^D1v zMw30hoVJr{B2T_+-;e85uHW(OSn|%{s^(h9C1+wa>`~-*IhNpO35dVMYJ@NK;g0}|o|C5MS?ujZ>*@-{)G5-Hd8T|k0#L&T^_yue? z&zEJwW`#ZEoKX~$bw4aFHCex~RCrH!Vef4H*WB&E=$fpbPymzl3dTLn-$SyIKHA2r zKl6I3Q`;s^>L@tj14OC==~|$ySit_YDvPp#ou;PpT}Hn6rArpV`8aAdB+#UbaZDF6 zysSyW=@KPQJbmPQHXPZ4^+rm$66D^>teD|QR)k}@}Y>b#pe zvm*cw5Jv!nTCo#7rN=1*UMu$94!PSj#|Wv(I<%*DRjNQS4OW`%;^K2Gq(!^us@Ynx zD}W}mxY&Vw(!MfkT9*o&-Koo6DeV-AP$bc0?asY(!li8_UbV%(YM&Dn6+&{h1HD{G zF_*g1p8t(}@H=hFcIqLFT|z?QkxtvQQ^i2DUiG%D%x?pv44U=*OUQ@1FU<{tN}s)L zv7xz(sr32E&bIykE2QHNYZcP>1iw2&nr+#>-YzGyMC@4qf9^7A%eE?anY3klM(#2) z{N^7Sa!|4Hh?{nH;>JnytqGs^A3x!v@b@d=>$h>qZ}uhUBDICT-^Fh|zvBDb3*LSO zm&@z_i~qmfTUq}9Uv_x>|0|Z2i2wgjOzzhG|Dou&p`A@&bN6O!X3z5BVfMVFibR(` z^VOI1`3n_^xp8m$319ktU;1`m`UYQmf-ilJFFo9sKEapn;Y)Y%rQ7?`&3Ag?-{?!P z@}-yf(sO<3Cw%Gqed*hM=^K3MCn~(~%=M*v_|hl*-CMqgFWtqLZtqJsKkj{hqc6S6 zlQvBk5dF!V7iB*5r5n8Iip0hTz4fp1rI+~9bA9P2eChjr>Dztj8+_>rzVtc1^l)GL z1Yf#`FWtqLZtqJs&-C_pqc6S6mtNva`{C*FfVVz>`S!m2Cw%p7AlZT|#c{tX;;luf_>^f`BU^N0J=C-~AmeCaN} zbbDXAnIj3a+u!I*ukxjr_|kKI=_h>Y`+e!#ed!x~=?T8{IllC8U-|@Jx`!{_#gjHo z_j=}UMdF0Nc>CYOm+s z(#^Mc>uF9MmL zhGVy~W$BvYVDw!){4Dz6l}L1*>5N;^u|K+DrAgr72u-ui^(%Jnn&WT&g-H1bmY><< zoz(saN4KX&4M=ia#-);BYb;Bhjoq5wh)fxIG9VZqzdF6#L8N^R3b3C4@;`(B8sNV* z4L`7L7x>S{3**3Ffz2fF_xLqXC41^yn-mkDn+S3A9KHM%@Us#ns2?#eZwyAOW{ct; zt)3N*{f<3+XS22|I(l9(cIMDf^vhuFn+(eOEumiQJNP;njVuqwLKKM1;g)RHOvA#CngzUPz<@vRT0fOtj2~ z;qp0YBe$om@ornAev{m6rT4Z%c0KMVMyj7&rwO@w>D7++`@v{AZOC{-jpg%X%WjXUO)CaV5}pu4mE_2rdUxT^N(HVLgSM#D{)kb zcjiWrCgXZ`I69G@Zjr~?!&7;aU1^kJuj?@zyKab%xol^%Yo$aG^ zX2+dR2a1s0;k6QnaT-aym?h_Z;o1ck!9 z!wEBQeLOjm;RD7JoK(|)1}{D&dK|IYf9cUXcD*Fyxf5RvMZXC3!j1R^u8_+L1xvwg zWxBzixs*Qk^^D#!XyV&6_v|f&gmBvMLwlzbl=o?t@GA{NzUDoa@KBHeG#|={>0k_F zqTbj>hf2uc>Q80S6x&Lx>dj-H>%BPwM}oh%$GF|q^AFSf7W$>XKRA7Dq^~dap|6d4 z-p{Y=>(s!m`?|mM^+`pDAasp+b?Ww%bhNW{)KvHV$?fD;8Od}f@3ovlI{6^N&vvrW zeDhD+$s(b%orV;DLb`AE9L6tu)1Pfurk9bGG0pW5#;QJM!CvXdNAOs_Xj!gd-Jtm7 z+{H(-fb1IxD%s0S`wq%=4-!rva+u>AtF5f-GZ*cLvm_d8syC z>TkMOntqN~YBR4))mPe0en4MYg<~xZEd_7+;Xv<#zVkY>j_tCPT?=;z?^?ck$UfrG zZm@}`wjP+*>Vm%Ml=m;_dzcyg-xu^X{~|-xVt$0s6A2Q)wij(W{r)$V=z_j?$kLAZ zzq4EfOm+o|yP)rH6qWI4k}B_a5~BnfSxqk;*WUO=Un?|o zxk-fdDV5BY)F4tod+)b8-nwv6l^d9pMb}0MTD|bF8@uA?w={13jx6YVT`Fn*8J%s$ z0{+T%CsqE!<$h;5pL=*ZRvNGkLS0Ja_;4RXW8(qjPkSim9=^9 zHG{FY@}cNkXa^x-1v|n_j_-f8lLPIZof{}GR?4e+YLk2{kkbPC_f2LM-$w#wEph(V}NU(gMXRef#*?p-S_#rU%lw4 zvB*3#(AIOv&h>y?>GE~;$xfnd6_(A-PqyJsP`S9}z`SAbW$%uX*6eY{@7!SRO+tz5 z=#D*5h6Brjv735^;}fT2;F|Nk7gBCAH&d&K`|I@=qY}emt3oJG&)}&EQ_?AB0Pj{=vHb3O-r@#$*iFwdH`7d}}0E<`;wqrmEV72R2s@QltG_4(KvJz|&{v zSM^d%>|9y5bUk8d56(}{6_8(JF3rhL?k@LpxbIUBPR>nF%Jlc%*$?y08He!Uc4z-c zFxKufPdeW215Y~EZm}mFZ})n3dTXGt-Lv{2eI8K72~b|V-*X4cPf`C%ncDGAL-*}Y zgiY-1%nlpfFH<|@wF3^xOI39QvIC{iLWuWi9#O?Jpw*Os?&Nx1pC8285FZk^nVa_M zF7@M$ z@nQY)%tQ9BD$ks)cU^A?#fNp{gfaX4CC+>2?)3QJxs)H0XS$N2L`9zI&E2W-wm*R8 zyl}5A;e2D-*_VFEGx^-{A(1fF|8e$Vb)M;~cWrNxqPufXJ&)v>O-*vw_Am0(a379- z7hJG`aQ$kj)mFTU=WH&$Rm#Y{h4DQpo&Q}pUnY)OPs(~t)|&YQyM^^Jdfy5XV%Han zNg5m7XfDPWnqLCUx*S|e+|844wBJL8(3tP@1YY|ySUY6TVt2f+q_~dvkNfF(i|%d4 z(wJwwKeL%9O5O3I{U}qBV7TpgpEU|94A!2Ms@e;sN9n5~kreBJ-C9LbmGQ_|*uR{b zm5w))F3wKd16PDR?fKLky3(^E@emc-`6`F7FfX&y11b_XrPFEoHwqe2y+O|6+8Wqf zto`r!C{5<02{KVqVrJCt*zLNb!%+@lj-Fc#gD784`JpA@=vc)5l-}X!B)+p_58P6rh`LXv z9ElqjWG)DH{3tN(duXN4fBL)^9Jny>@Pfdf-o()v2rixWpTIOZDG+j}3#)N1)kmT~ zn4WAHfW~n&{SF77Jp@x+*y_B&Z_)43fhY)2dUMYHvwDr@Yw1wC8O4Ts>_3I?~X)u>!bI9+t{D$Nd z%a&Bp{$on=@Vr(I4aSE2V;@-B(_jGECBrjN&_^`~Qcd!Zbi;`qikZ!cr2aOgirzn` zBu|tB>mcQGc;-j4%A6+Vl3UiiC_gZ5E>C41j3^FtZns}pK39D~yMy(2YW;*juku;q zkwXia8IE-?h{*Y77~zHHEwKw&{1$FARt9ns0||&akR#{|_xJ%BsEy{3OJy*5(ttJ-n>a5u8kf0s zEtTws_1Mi#?L+Df;SuwZbE5WXQJ>FfCwVb|fvLvhFmuGZX%k-AjnQBYdl9*2Ollo=y>ZY%=A zuk9^#@xgZ(h70E8H!na9JxEA6T0v}~n)zEj+nfTTkb8|?A(9;&;}eWm%`TfKYoL@0 z-xM8m2Q@}ww`}X1ADFv^$4)%wTRB&Oq~p5WD&8$|0PGJi0|t~x1*QP0!0>31WPciZ z<5Z|N)~}d+^yZHIm|>IwX9zBtly9w-p+_lfroI9p2)is+T)6~rMBM1IPFp8x9UsV| zRhf`gdsFlM{iWq5a~BJ=lD%atwKn1wlq|v7BOsd^kWwaXiuRd0t6)xkS@V+os@>4* ze8cXQN5bFD^Ir?$@}aUP?9Bl42sbd*>?KQS{@>Hw>XyI3EkBW)3}*+5io`8E%IHom zzb+d+D#9ik#7}3^ceJCS8T(M!#3HDTO8j}JZv#VLf1+I0tj(J$TzY@S{ zGM`aE^j@#n$Ogxi2iTj@l}3&{a)kY3S~t6sG3l~j$jC!;D@7DvH`tp2W}?273ty+Z z<%hfFhj8QRQbpo49_`#76!ybq-Js~AgD&ruH~&yD_HrG6MDZVsTng-wc}L_M2c)65 zzJeZO$19CbN8Z`R$$8MEP-tw@HqNLVD#9!sDMhHog>@moV)A_3UgU(W^7>mViTFM<&B)Tf7+;c zSxL)^(gorC&uM)Mg#jx_?mT{Rq?OO&7l~FrlivZsXx&&_1b$Fwy}QFp$c49#pDn}x z6`1MsNjTQ;yuLDds_T;_*e}eudZg7}Cd9&WXgD=`2Cu>tVD8uVWaQ5pF1)4a@#A4Cn^|%QJCU!V%hK>S z%@?1^7=8@Z;uB%gdt3mK(qE9Up#|TxKQ%TiIY5@mV)uR4Z$3~_xnQp+1p?RbG1fWLzwB;piqGpRRks-X_rXX-F)RHBF=oXQGu`b;_{80AK( zq`E$_0%saMm~C#eHbP@E5R7#zI}KE!4K2hJ5q{(4wdkE$(=#J)&&J2~b#J2OD(#tC zs}WtaJ7j$Xl#l)t34J0GSsko_xuZtKPsMP1zpUl`veLJL zF`XhM6&6$&a3_`4924^Ztvog0c1}epo)3Kde|siB)~`&Sbmoc3FA8>) zG_pd|>I=|=o>Hqs?!=~S1HH~{cRsRNg@;AfhFIAzQiWrL9e)$;|K7I$@v#cuGJX=G zs#y5M(-4exkS?Oz(!>sR%BNOomH1%4l<{k0h1`V;mA;G|*l(A|Waw>lnNl1U5u^3~ zA41tK)P{xdq*Np}1-7~(*z!@ZcKb=Uc7#y`TULfj*M{OjG9vSWbs#oL7CjmJ&)be1j73z?UM(WGaem`*ou%g%H25RK9#KA$4`apbNxr@o_k-kfTqOx5mx-@x7Fn&gUaL{P-MZH(n9IJe%z$x%v z@)Q=4>}D%?mjYV<$XMm_QIx3a5{jRiAF6$`ZI~LUZt9nb2PwppHW`p6%z&>;eFee5 zYwsjGOqlWVPzr_Px1>U)@L@(_RdB(^_QCvjBGJX6Sgbry#B&; zO~S=-o4U2VCbd<~Wi!y9gA1D4gxcH+KWa9ECZkf13N;Kb0g^m^i=E#>=NCm@p39WX zOCI|x3nENRg&4$MhpJy6%lMa%hr*ec>K{SIWcs^&ME^t< zmN#t2aVam6X&hR)G1RguTnan%`~O!;Pl(lk?T>;BJ{Pxg0r)8>P)BmYoOE%X3iLUY z(?Emx_FJhZwu^dXm`w9nsi^8o9iyEpxc;>AKHoU}FBdpk&GWXJ?yXmI-9mBhf0Hbf zKW)lh$`>>lh;NvRnQTXPW=5<3=MR4WS9LM^GH*KLbIw^99MK&asR!cCx#ZVw$e(^L z(`r(&ng)(PoH-jCeHcrwvG<)}n8qkSykDSxt2z+SqN}VvKM2 zdYcOLc)yRhL(CkoyNc00SleappQ4H+>c4s>CNrf(r(m+j5bM$1g3;d=1RGA)DZsBz z34TkcI&aCzJt2IyHt<&G+k-v7Hp!G6Gf{sIc!i=*d4qtm~ zaULv}dSBlH>;%gZm(!$i8ru?#on8`*o>syy_&cqb-$H&-)6mAo@Y*?CdwKku)y3vr zokt$)%(X``7An0F zFDM%=6i|W)*I}}hfOUV1>MhlcsiKpImC!puKbkft_jvRFMh;(XcL>U~gRswf~u zW7VruMV+{#lxTE6eku$CTZ2_;ALHRbc!>I2_OhrdrmwD@+aUh4y|s>IrkHZ$FfxIOe8n1}bTV z0B^2UK*R@uRI1mtd&C(866^@Pb}&@FfdeGcMA0ew@~7ajB5MY|QQX zAlFVm5v00`7;otKMhAHDPnrJq|?m0`tko zGti{@)8-8MRwNRr{2((!uZ};)j1u!E?TX3d2cz4>H&est>3ksS_Cf!wc;LL<$dD4l z()q7@@`aCh^Z)M2NA~&hVDI}?o_rC}-u#N}{9vqI#FO^-2gVUCkP57SM;J-8 zV9C$|DiwO;pm_*I3)ucQ(4K8k)0)4Bts`CjP+$7^Ogb3bi}U=ba(S?{F*vZXvO}=r zQlb@k+z0Ms#smbGEd0j;w){K6mQ}%0{x8KDGjM4zFbo2zqM`wT`-W!0=ayd;>`07~ z0;NlX(ZayJQYM=^-0|Y$PaVq@gSLO9OMU4+o^&ACvLbY-gO%(W9ek9-o&v$r1;K#} z0{7NuH)`=ieq9I6ku>&=qA+Lq+G@0Stw-lqIJzJN?xI^^5Z&)7$un!0ALto>?4_3F zwhK=E!9ne{g7o~9nAr|Eg}L$)QM@!j`|O7zys`tdS@L_7uZ`6pFB3lf z{tl)+YjjgZyPv2cfCySDPJ zb0=7|WzJ%y5jRn_6emelBQWfpUwK&KeMldHfl3bVs-u1!Xh2lGTnhy1{zbk5snA^| z1)^vo4c2SD$;?(gjiteVUP>zG!n?BGCxOSG@i^%Sh?@fh>Dg1Dm3{HS8vQ7&T2TmR+cC9nR*GTQzG7Q(`3Z)`0XlXjyVb`vyhG^9za&O{1P7p*jJ53{1kGc@c8v^ z7tZI7EAe1Z2f}WR8k<`Gg^QJmYR2M*SeNI_)8SUP74C(2N6c8Bs?G(N^L96c@^y$Kcew}q{!-WWOPcMGldeGP+;B3AGlq4yS6 zS*nJDw(+T{7rKD@&4*GeYFw)5Bcis6bwI{UAhugQr=ff`DS0(jw1`Y-eIB7QD7eM^ z3zmvLC!KknGAzPeu%RT_QTh~J=Z@{I+|j4{pS4dfutd!azRE+M-Ly~mF{NKeNWYkF zu#PLx*neB>niR3}Mbl62nWjpacl5;cOJU%C-xr4i#VR3L^}Jz2?-*oPo{V!boc%40t!mMHv|ffkXl z>>UQWih-^?T6uJ1O59-$gg?ww#XrRHD6dc{Od+GA*Zz`U*{=4NwpIU8`k5*bN1(U{XC7|L*7VOz{HpfrDX7vme%1V@OqX(EH?0S-2o^`*a+hdm zJW0~=Auo2opZ+Ch+cGJ;{K$w9PF?~?%0(N@&w7gqCc#xRq-&lXm$ha!8R6Jrr<@>E zH@-0xy9n*R$-FI(A*q`o0ZfCyv`%QNk=WHNdeCT94P!7P6d%!3g1L;v^5oPEhKN^0 zS(Gq>I%!_2dv1X%4TG_Ehuh~VJb>SuP1+Ea8B|`6D`1Y!3+yyD7_t2&MEf{{1e7lr zQZn%u)M*f}ww_qVvcR+}5$??W+2PpOZ3N9UP7=cjmNN78jYlM;g|!VF!pueh3bl(* zA~qiJOOT`niUBjw7=eoITT1iHvu`WrWGTm?3i{$;L-{PG0TA??{I#HWtuBNP$IEA# z8I-27S%`_iw0vz%dYvjN?NJUTgN%+80TPNHm2#^#$PE zWcDM+Voy?6B5x#AxyHPWq9IW{DgGJJJuFVZ6l4XaeSp_hI{vZ(B$Fg%J^~5T>MJ`3 z=ZQVSzoDVJhRQP&@)-orvp}5~0Ks|N=m7unLZuBt4K&1}P<9dZ8*@0>@uE5U)9Lc( zwx>+n9?W;xFzj!+r!r`1dZ6w(DwJJ@FS~VO89>;D416fHC{UxPR%gQ%sFN?8`Cs86 zq~hR;B<|(Fou`Y=lMQ1edMQ4V^64X^!&*uN4T%pC;+%t@DHSYTSk~N-9}1K+%qjEa zTY}lOX72_E!}xr8l-P$}@9Mp4ocBIjqQop!jpC8~p6z7KCrjlG)xW64STRJ*N*_ZL zDRYpNB#0!mGW{d)LtI&~7nuHzV4syt@imNMqF%D1KW91-DqSp{hy=>N=cm^BAs)%coo(99S_k5PzDMk`*%7>Zq=E3yp&*pC1V3NS5w*k`Bk?{ z=quK3?Iz(T;`b_&Qfl!G7pBHO+onUwVs&%0Ayw2ugibj^i}~U|LPfehO1x3{#c-+6 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±hXW<+DZ6g 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