From d9ef6fa0edb57194191989439bf5c28a8fe8a3f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 18 Sep 2020 11:46:38 +0300 Subject: [PATCH 01/31] Working on the blazor getting started --- docs/en/Getting-Started.md | 44 ++++++++++++++++++-------------------- docs/en/docs-params.json | 1 + 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/docs/en/Getting-Started.md b/docs/en/Getting-Started.md index 55fcafe132..4cc3a6e68c 100644 --- a/docs/en/Getting-Started.md +++ b/docs/en/Getting-Started.md @@ -3,13 +3,13 @@ ````json //[doc-params] { - "UI": ["MVC","NG"], + "UI": ["MVC", "Blazor", "NG"], "DB": ["EF", "Mongo"], "Tiered": ["Yes", "No"] } ```` -This tutorial explains how to create a new {{if UI == "MVC"}} ASP.NET Core MVC (Razor Pages) web {{else if UI == "NG"}} Angular {{end}} application using the startup template. +This tutorial explains how to create a new web application using the [application startup template](Startup-Templates/Application.md). ## Setup Your Development Environment @@ -20,11 +20,11 @@ First things first! Let's setup your development environment before creating the The following tools should be installed on your development machine: -* [Visual Studio 2019 (v16.4+)](https://visualstudio.microsoft.com/vs/) for Windows / [Visual Studio for Mac](https://visualstudio.microsoft.com/vs/mac/). [1](#f-editor) +* [Visual Studio 2019](https://visualstudio.microsoft.com/vs/) for Windows / [Visual Studio for Mac](https://visualstudio.microsoft.com/vs/mac/). [1](#f-editor) * [.NET Core 3.1+](https://www.microsoft.com/net/download/dotnet-core/) -* [Node v12 or v14](https://nodejs.org/en/) -* [Yarn v1.20+ (not v2)](https://classic.yarnpkg.com/en/docs/install) [2](#f-yarn) or npm v6+ (installed with Node) +* [Node v12 or v14](https://nodejs.org/) +* [Yarn v1.20+ (not v2)](https://classic.yarnpkg.com/en/docs/install) [2](#f-yarn) or npm v6+ (already installed with Node) {{ if Tiered == "Yes" }} * [Redis](https://redis.io/) (the startup solution uses the Redis as the [distributed cache](Caching.md)). @@ -37,7 +37,7 @@ The following tools should be installed on your development machine: ### Install the ABP CLI -[ABP CLI](./CLI.md) is a command line interface that is used to automate some common tasks for ABP based applications. +[ABP CLI](./CLI.md) is a command line interface that is used to automate some common tasks for ABP based solutions. > ABP CLI is a free & open source tool for the ABP framework. @@ -62,31 +62,21 @@ dotnet tool update -g Volo.Abp.Cli Use the `new` command of the ABP CLI to create a new project: ````shell -abp new Acme.BookStore{{if UI == "NG"}} -u angular {{end}}{{if DB == "Mongo"}} -d mongodb{{end}}{{if Tiered == "Yes" && UI != "NG"}} --tiered {{else if Tiered == "Yes" && UI == "NG"}}--separate-identity-server{{end}} +abp new Acme.BookStore{{if UI == "NG"}} -u angular {{else if UI == "Blazor"}} -u blazor {{end}}{{if DB == "Mongo"}} -d mongodb{{end}}{{if Tiered == "Yes"}}{{if UI == "MVC"}} --tiered {{else}} --separate-identity-server{{end}}{{end}} ```` -{{ if UI == "NG" }} - -* `-u` argument specifies the UI framework, `angular` in this case. - {{ if Tiered == "Yes" }} -* `--separate-identity-server` argument is used to separate the identity server application from the API host application. If not specified, you will have a single endpoint on the server. - -{{ end }} +{{ if UI == "MVC" }} -{{ end }} +* `--tiered` argument is used to create N-tiered solution where authentication server, UI and API layers are physically separated. -{{ if DB == "Mongo" }} +{{ else }} -* `-d` argument specifies the database provider, `mongodb` in this case. +* `--separate-identity-server` argument is used to separate the identity server application from the API host application. If not specified, you will have a single endpoint on the server. {{ end }} -{{ if Tiered == "Yes" && UI != "NG" }} - -* `--tiered` argument is used to create N-tiered solution where authentication server, UI and API layers are physically separated. - {{ end }} > You can use different level of namespaces; e.g. BookStore, Acme.BookStore or Acme.Retail.BookStore. @@ -113,12 +103,20 @@ You will see the following solution structure when you open the `.sln` file in t {{else}} -![vs-default-app-solution-structure](images/vs-app-solution-structure{{if Tiered == "Yes"}}-tiered{{end}}.png) +{{if Tiered == "Yes"}} + +![vs-default-app-solution-structure](images/vs-app-solution-structure-tiered.png) + +{{else}} + +![vs-default-app-solution-structure](images/vs-app-solution-structure.png) + +{{end}} {{end}} {{ else if UI == "NG" }} -There are three folders in the created solution: +There are two folders in the created solution: ![](images/solution-files-non-mvc.png) diff --git a/docs/en/docs-params.json b/docs/en/docs-params.json index 23d079f9bb..f28a3b49ef 100644 --- a/docs/en/docs-params.json +++ b/docs/en/docs-params.json @@ -5,6 +5,7 @@ "displayName": "UI", "values": { "MVC": "MVC / Razor Pages", + "Blazor": "Blazor", "NG": "Angular" } }, From 5217b1e7d6ad486a12efee9cb6e8a78f6a68b253 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 18 Sep 2020 14:49:13 +0300 Subject: [PATCH 02/31] Complete the getting started document for blazor UI --- docs/en/Getting-Started.md | 169 ++++++++++------------- docs/en/Startup-Templates/Application.md | 1 + 2 files changed, 74 insertions(+), 96 deletions(-) diff --git a/docs/en/Getting-Started.md b/docs/en/Getting-Started.md index 4cc3a6e68c..b992247224 100644 --- a/docs/en/Getting-Started.md +++ b/docs/en/Getting-Started.md @@ -11,6 +11,8 @@ This tutorial explains how to create a new web application using the [application startup template](Startup-Templates/Application.md). +> This document assumes that you prefer to use **{{ UI_Value }}** as the UI framework and **{{ DB_Value }}** as the database provider. For other options, please change the preference on top of this document. + ## Setup Your Development Environment @@ -41,117 +43,83 @@ The following tools should be installed on your development machine: > ABP CLI is a free & open source tool for the ABP framework. -First, you need to install the ABP CLI using the following command: +{{if UI == "Blazor"}} + +BLAZOR UI IS ONLY AVAILABLE WITH THE PREVIEW VERSION. SO, YOU NEED TO INSTALL THE PREVIEW VERSION OF THE ABP CLI + +First, you need to install the ABP CLI **RC.2** using the following command: ````shell -dotnet tool install -g Volo.Abp.Cli +dotnet tool install Volo.Abp.Cli -g --version 3.2.0-rc.2 ```` If you've already installed, you can update it using the following command: ````shell -dotnet tool update -g Volo.Abp.Cli +dotnet tool update Volo.Abp.Cli -g --version 3.2.0-rc.2 ```` -## Create a New Project +{{else}} -> This document assumes that you prefer to use **{{ UI_Value }}** as the UI framework and **{{ DB_Value }}** as the database provider. For other options, please change the preference on top of this document. +First, you need to install the ABP CLI using the following command: -### Using the ABP CLI to Create a New Project +````shell +dotnet tool install -g Volo.Abp.Cli +```` -Use the `new` command of the ABP CLI to create a new project: +If you've already installed, you can update it using the following command: ````shell -abp new Acme.BookStore{{if UI == "NG"}} -u angular {{else if UI == "Blazor"}} -u blazor {{end}}{{if DB == "Mongo"}} -d mongodb{{end}}{{if Tiered == "Yes"}}{{if UI == "MVC"}} --tiered {{else}} --separate-identity-server{{end}}{{end}} +dotnet tool update -g Volo.Abp.Cli ```` -{{ if Tiered == "Yes" }} +{{end}} -{{ if UI == "MVC" }} +## Create a New Project -* `--tiered` argument is used to create N-tiered solution where authentication server, UI and API layers are physically separated. +Use the `new` command of the ABP CLI to create a new project: -{{ else }} +````shell +abp new Acme.BookStore{{if UI == "NG"}} -u angular{{else if UI == "Blazor"}} -u blazor --preview{{end}}{{if DB == "Mongo"}} -d mongodb{{end}}{{if Tiered == "Yes"}}{{if UI == "MVC"}} --tiered{{else}} --separate-identity-server{{end}}{{end}} +```` -* `--separate-identity-server` argument is used to separate the identity server application from the API host application. If not specified, you will have a single endpoint on the server. +{{if UI == "Blazor"}} -{{ end }} +> BLAZOR UI IS ONLY AVAILABLE WITH THE PREVIEW VERSION. THIS IS WHY IT IS REQUIRED TO SET THE `--PREVIEW` OPTION. -{{ end }} +{{end}} > You can use different level of namespaces; e.g. BookStore, Acme.BookStore or Acme.Retail.BookStore. -#### ABP CLI Commands & Options - -[ABP CLI document](./CLI.md) covers all of the available commands and options for the ABP CLI. This document uses the [application startup template](Startup-Templates/Application.md) to create a new web application. See the [ABP Startup Templates](Startup-Templates/Index.md) document for other templates. - > Alternatively, you can select the "Direct Download" tab from the [ABP Framework web site](https://abp.io/get-started) to create a new solution. -## The Solution Structure +{{ if Tiered == "Yes" }} {{ if UI == "MVC" }} -After creating your project, you will have the following solution folders & files: - -![](images/solution-files-mvc.png) - -You will see the following solution structure when you open the `.sln` file in the Visual Studio: - -{{if DB == "Mongo"}} - -![vs-default-app-solution-structure](images/vs-app-solution-structure-mongodb.png) - -{{else}} - -{{if Tiered == "Yes"}} - -![vs-default-app-solution-structure](images/vs-app-solution-structure-tiered.png) - -{{else}} - -![vs-default-app-solution-structure](images/vs-app-solution-structure.png) - -{{end}} - -{{end}} - -{{ else if UI == "NG" }} -There are two folders in the created solution: - -![](images/solution-files-non-mvc.png) - -* `angular` folder contains the Angular UI application. -* `aspnet-core` folder contains the backend solution. +* `--tiered` argument is used to create N-tiered solution where authentication server, UI and API layers are physically separated. -Open the `.sln` (Visual Studio solution) file under the `aspnet-core` folder: +{{ else }} -![vs-angular-app-backend-solution-structure](images/vs-spa-app-backend-structure{{if DB == "Mongo"}}-mongodb{{end}}.png) +* `--separate-identity-server` argument is used to separate the identity server application from the API host application. If not specified, you will have a single endpoint on the server. {{ end }} -> ###### About the projects in your solution -> -> Your solution may have slightly different structure based on your **UI**, **database** and other preferences. - -The solution has a layered structure (based on the [Domain Driven Design](Domain-Driven-Design.md)) and also contains unit & integration test projects. - -{{ if DB == "EF" }} - -Integration tests projects are properly configured to work with **EF Core** & **SQLite in-memory** database. +{{ end }} -{{ else if DB == "Mongo" }} +### ABP CLI Commands & Options -Integration tests projects are properly configured to work with in-memory **MongoDB** database created per test (used [Mongo2Go](https://github.com/Mongo2Go/Mongo2Go) library). +[ABP CLI document](./CLI.md) covers all of the available commands and options for the ABP CLI. This document uses the [application startup template](Startup-Templates/Application.md) to create a new web application. See the [ABP Startup Templates](Startup-Templates/Index.md) document for other templates. -{{ end }} +### The Solution Structure -> See the [application template document](Startup-Templates/Application.md) to understand the solution structure in details. +The solution has a layered structure (based on the [Domain Driven Design](Domain-Driven-Design.md)) and contains unit & integration test projects. See the [application template document](Startup-Templates/Application.md) to understand the solution structure in details. ## Create the Database ### Connection String -Check the **connection string** in the `appsettings.json` file under the {{if UI == "MVC"}}{{if Tiered == "Yes"}}`.IdentityServer` and `.HttpApi.Host` projects{{else}}`.Web` project{{end}}{{else if UI == "NG" }}`.HttpApi.Host` project{{end}}: +Check the **connection string** in the `appsettings.json` file under the {{if Tiered == "Yes"}}`.IdentityServer` and `.HttpApi.Host` projects{{else}}{{if UI=="MVC"}}`.Web` project{{else}}`.HttpApi.Host` project{{end}}{{end}} {{ if DB == "EF" }} @@ -161,7 +129,7 @@ Check the **connection string** in the `appsettings.json` file under the {{if UI } ```` -The solution is configured to use **Entity Framework Core** with **MS SQL Server**. EF Core supports [various](https://docs.microsoft.com/en-us/ef/core/providers/) database providers, so you can use any supported DBMS. See [the Entity Framework integration document](https://docs.abp.io/en/abp/latest/Entity-Framework-Core) to learn how to [switch to another DBMS](Entity-Framework-Core-Other-DBMS.md). +The solution is configured to use **Entity Framework Core** with **MS SQL Server** by default. EF Core supports [various](https://docs.microsoft.com/en-us/ef/core/providers/) database providers, so you can use any supported DBMS. See [the Entity Framework integration document](Entity-Framework-Core.md) to learn how to [switch to another DBMS](Entity-Framework-Core-Other-DBMS.md). ### Apply the Migrations @@ -169,7 +137,7 @@ The solution uses the [Entity Framework Core Code First Migrations](https://docs #### Apply Migrations Using the DbMigrator -The solution comes with a `.DbMigrator` console application which applies migrations and also seed the initial data. It is useful on development as well as on production environment. +The solution comes with a `.DbMigrator` console application which applies migrations and also **seeds the initial data**. It is useful on **development** as well as on **production** environment. > `.DbMigrator` project has its own `appsettings.json`. So, if you have changed the connection string above, you should also change this one. @@ -181,7 +149,7 @@ Right click to the `.DbMigrator` project and select **Set as StartUp Project** ![db-migrator-output](images/db-migrator-output.png) -> Initial [seed data](Data-Seeding.md) creates the `admin` user in the database which is then used to login to the application. So, you need to use `.DbMigrator` at least once for a new database. +> Initial [seed data](Data-Seeding.md) creates the `admin` user in the database (with the password is `1q2w3E*`) which is then used to login to the application. So, you need to use `.DbMigrator` at least once for a new database. #### Using EF Core Update-Database Command @@ -221,7 +189,7 @@ The solution is configured to use **MongoDB** in your local computer, so you nee ### Seed Initial Data -The solution comes with a `.DbMigrator` console application which seeds the initial data. It is useful on development as well as on production environment. +The solution comes with a `.DbMigrator` console application which **seeds the initial data**. It is useful on **development** as well as on **production** environment. > `.DbMigrator` project has its own `appsettings.json`. So, if you have changed the connection string above, you should also change this one. @@ -233,7 +201,7 @@ Right click to the `.DbMigrator` project and select **Set as StartUp Project** ![db-migrator-output](images/db-migrator-output.png) -> Initial [seed data](Data-Seeding.md) creates the `admin` user in the database which is then used to login to the application. So, you need to use `.DbMigrator` at least once for a new database. +> Initial [seed data](Data-Seeding.md) creates the `admin` user in the database (with the password is `1q2w3E*`) which is then used to login to the application. So, you need to use `.DbMigrator` at least once for a new database. {{ end }} @@ -243,27 +211,27 @@ Right click to the `.DbMigrator` project and select **Set as StartUp Project** {{ if Tiered == "Yes" }} -Ensure that the `.IdentityServer` project is the startup project. Run the application which will open a **login** page in your browser. +1. Ensure that the `.IdentityServer` project is the startup project. Run this application that will open a **login** page in your browser. > Use Ctrl+F5 in Visual Studio (instead of F5) to run the application without debugging. If you don't have a debug purpose, this will be faster. -You can login, but you cannot enter to the main application here. This is just the authentication server. +You can login, but you cannot enter to the main application here. This is **just the authentication server**. -Ensure that the `.HttpApi.Host` project is the startup project and run the application which will open a **Swagger UI** in your browser. +2. Ensure that the `.HttpApi.Host` project is the startup project and run the application which will open a **Swagger UI** in your browser. ![swagger-ui](images/swagger-ui.png) -This is the API application that is used by the web application. +This is the HTTP API that is used by the web application. -Lastly, ensure that the `.Web` project is the startup project and run the application which will open a **welcome** page in your browser +3. Lastly, ensure that the `.Web` project is the startup project and run the application which will open a **welcome** page in your browser ![mvc-tiered-app-home](images/bookstore-home.png) -Click to the **login** button which will redirect you to the `Identity Server` to login to the application: +Click to the **login** button which will redirect you to the *authentication server* to login to the application: ![bookstore-login](images/bookstore-login.png) -{{ else }} +{{ else # Tiered != "Yes" }} Ensure that the `.Web` project is the startup project. Run the application which will open the **login** page in your browser: @@ -271,11 +239,11 @@ Ensure that the `.Web` project is the startup project. Run the application which ![bookstore-login](images/bookstore-login.png) -{{ end }} +{{ end # Tiered }} -{{ else if UI != "MVC" }} +{{ else # UI != "MVC" }} -#### Running the HTTP API Host (server-side) +### Running the HTTP API Host (Server Side) {{ if Tiered == "Yes" }} @@ -285,15 +253,15 @@ Ensure that the `.IdentityServer` project is the startup project. Run the applic You can login, but you cannot enter to the main application here. This is just the authentication server. -{{ end }} - Ensure that the `.HttpApi.Host` project is the startup project and run the application which will open a Swagger UI: -{{ if Tiered == "No" }} +{{ else # Tiered == "No" }} + +Ensure that the `.HttpApi.Host` project is the startup project and run the application which will open a Swagger UI: > Use Ctrl+F5 in Visual Studio (instead of F5) to run the application without debugging. If you don't have a debug purpose, this will be faster. -{{ end }} +{{ end # Tiered }} ![swagger-ui](images/swagger-ui.png) @@ -303,12 +271,25 @@ You can see the application APIs and test them here. Get [more info](https://swa > > Most of the HTTP APIs require authentication & authorization. If you want to test authorized APIs, manually go to the `/Account/Login` page, enter `admin` as the username and `1q2w3E*` as the password to login to the application. Then you will be able to execute authorized APIs too. -{{ end }} +{{ end # UI }} + +{{ if UI == "Blazor" }} -{{ if UI == "NG" }} -#### Running the Angular application (client-side) +### Running the Blazor Application (Client Side) -Go to the `angular` folder, open a command line terminal, type the `yarn` command (we suggest to the [yarn](https://yarnpkg.com/) package manager while `npm install` will also work in most cases) +Ensure that the `.Blazor` project is the startup project and run the application. + +> Use Ctrl+F5 in Visual Studio (instead of F5) to run the application without debugging. If you don't have a debug purpose, this will be faster. + +Once the application starts, click to the **Login** link on to header, which redirects you to the authentication server to enter a username and password: + +![bookstore-login](images/bookstore-login.png) + +{{ else if UI == "NG" }} + +### Running the Angular Application (Client Side) + +Go to the `angular` folder, open a command line terminal, type the `yarn` command (we suggest to the [yarn](https://yarnpkg.com/) package manager while `npm install` will also work) ```bash yarn @@ -320,11 +301,7 @@ Once all node modules are loaded, execute `yarn start` (or `npm start`) command: yarn start ``` -This will take care of compiling your `TypeScript` code, and automatically reloading your browser. -After it finishes, `Angular Live Development Server` will be listening on localhost:4200, -open your web browser and navigate to [localhost:4200](http://localhost:4200/) - - +It may take a longer time for the first build. Once it finishes, it opens the Angular UI in your default browser with the [localhost:4200](http://localhost:4200/) address. ![bookstore-login](images/bookstore-login.png) @@ -336,7 +313,7 @@ Enter **admin** as the username and **1q2w3E*** as the password to login to the If you want to include a [React Native](https://reactnative.dev/) project in your solution, add `-m react-native` (or `--mobile react-native`) argument to project creation command. This is a basic React Native startup template to develop mobile applications integrated to your ABP based backends. -See the "[Getting Started with the React Native](Getting-Started-React-Native.md)" document to learn how to configure and run the React Native application. +See the [Getting Started with the React Native](Getting-Started-React-Native.md) document to learn how to configure and run the React Native application. ## Next diff --git a/docs/en/Startup-Templates/Application.md b/docs/en/Startup-Templates/Application.md index 4e9bd63371..8cccf32382 100644 --- a/docs/en/Startup-Templates/Application.md +++ b/docs/en/Startup-Templates/Application.md @@ -33,6 +33,7 @@ abp new Acme.BookStore -t app This template provides multiple UI frameworks: * `mvc`: ASP.NET Core MVC UI with Razor Pages (default) +* `blazor`: Blazor UI * `angular`: Angular UI Use `-u` or `--ui` option to specify the UI framework: From d499a9e5d747668a23b6114e105f4679ecbccd47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 18 Sep 2020 16:45:04 +0300 Subject: [PATCH 03/31] Delete unnecessary value assignments and add Blazor --- docs/en/Tutorials/Part-1.md | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/docs/en/Tutorials/Part-1.md b/docs/en/Tutorials/Part-1.md index 9cc3354156..9a95fb5ba5 100644 --- a/docs/en/Tutorials/Part-1.md +++ b/docs/en/Tutorials/Part-1.md @@ -2,32 +2,15 @@ ````json //[doc-params] { - "UI": ["MVC","NG"], + "UI": ["MVC","Blazor","NG"], "DB": ["EF","Mongo"] } ```` -{{ -if UI == "MVC" - UI_Text="mvc" -else if UI == "NG" - UI_Text="angular" -else - UI_Text="?" -end -if DB == "EF" - DB_Text="Entity Framework Core" -else if DB == "Mongo" - DB_Text="MongoDB" -else - DB_Text="?" -end -}} - ## About This Tutorial In this tutorial series, you will build an ABP based web application named `Acme.BookStore`. This application is used to manage a list of books and their authors. It is developed using the following technologies: -* **{{DB_Text}}** as the ORM provider. +* **{{DB_Value}}** as the database provider. * **{{UI_Value}}** as the UI Framework. This tutorial is organized as the following parts; From 0fb5bac8683c8050f88d58f4117149b1565c74cc Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 18 Sep 2020 17:09:25 +0300 Subject: [PATCH 04/31] fix: add missing rootNamespace in templates --- templates/app/angular/src/environments/environment.prod.ts | 1 + .../projects/dev-app/src/environments/environment.prod.ts | 2 ++ 2 files changed, 3 insertions(+) diff --git a/templates/app/angular/src/environments/environment.prod.ts b/templates/app/angular/src/environments/environment.prod.ts index 719dd1fe53..b78ef813e1 100644 --- a/templates/app/angular/src/environments/environment.prod.ts +++ b/templates/app/angular/src/environments/environment.prod.ts @@ -19,6 +19,7 @@ export const environment = { apis: { default: { url: 'https://localhost:44305', + rootNamespace: 'MyCompanyName.MyProjectName', }, }, } as Config.Environment; diff --git a/templates/module/angular/projects/dev-app/src/environments/environment.prod.ts b/templates/module/angular/projects/dev-app/src/environments/environment.prod.ts index e7750a4873..21ca034862 100644 --- a/templates/module/angular/projects/dev-app/src/environments/environment.prod.ts +++ b/templates/module/angular/projects/dev-app/src/environments/environment.prod.ts @@ -18,9 +18,11 @@ export const environment = { apis: { default: { url: 'https://localhost:44301', + rootNamespace: 'MyCompanyName.MyProjectName', }, MyProjectName: { url: 'https://localhost:44300', + rootNamespace: 'MyCompanyName.MyProjectName', }, }, } as Config.Environment; From 0b71db8f4f95b5144fc36ea10d7cebd2b31cb22e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 18 Sep 2020 17:58:01 +0300 Subject: [PATCH 05/31] Part-2 blazor UI initial. --- docs/en/Tutorials/Part-1.md | 6 +- docs/en/Tutorials/Part-2.md | 79 ++++++++++++------ .../images/blazor-add-books-component.png | Bin 0 -> 19010 bytes .../images/blazor-menu-bookstore.png | Bin 0 -> 7754 bytes 4 files changed, 58 insertions(+), 27 deletions(-) create mode 100644 docs/en/Tutorials/images/blazor-add-books-component.png create mode 100644 docs/en/Tutorials/images/blazor-menu-bookstore.png diff --git a/docs/en/Tutorials/Part-1.md b/docs/en/Tutorials/Part-1.md index 9a95fb5ba5..1d9b4c11cc 100644 --- a/docs/en/Tutorials/Part-1.md +++ b/docs/en/Tutorials/Part-1.md @@ -200,7 +200,7 @@ Before updating the database, read the section below to learn how to seed some i > It's good to have some initial data in the database before running the application. This section introduces the [Data Seeding](../Data-Seeding.md) system of the ABP framework. You can skip this section if you don't want to create seed data, but it is suggested to follow it to learn this useful ABP Framework feature. -Create a class deriving from the `IDataSeedContributor` in the `*.Domain` project and copy the following code: +Create a class deriving from the `IDataSeedContributor` in the `*.Domain` project by copying the following code: ```csharp using System; @@ -400,7 +400,7 @@ namespace Acme.BookStore.Books ### BookAppService -It is time to implement the `IBookAppService` interface. Create a new class, named `BookAppService` in the `Books` namespace (folder) of the Acme.BookStore.Application project: +It is time to implement the `IBookAppService` interface. Create a new class, named `BookAppService` in the `Books` namespace (folder) of the `Acme.BookStore.Application` project: ````csharp using System; @@ -440,7 +440,7 @@ ABP can [**automagically**](../API/Auto-API-Controllers.md) configures your appl ### Swagger UI -The startup template is configured to run the [Swagger UI](https://swagger.io/tools/swagger-ui/) using the [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) library. Run the application by pressing `CTRL+F5` and navigate to `https://localhost:/swagger/` on your browser. (Replace `` with your own port number.) +The startup template is configured to run the [Swagger UI](https://swagger.io/tools/swagger-ui/) using the [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) library. Run the application by pressing `CTRL+F5` and navigate to `https://localhost:/swagger/` on your browser. Replace `` with your own port number. You will see some built-in service endpoints as well as the `Book` service and its REST-style endpoints: diff --git a/docs/en/Tutorials/Part-2.md b/docs/en/Tutorials/Part-2.md index bcec504886..3e1b0047dd 100644 --- a/docs/en/Tutorials/Part-2.md +++ b/docs/en/Tutorials/Part-2.md @@ -2,32 +2,15 @@ ````json //[doc-params] { - "UI": ["MVC","NG"], + "UI": ["MVC","Blazor","NG"], "DB": ["EF","Mongo"] } ```` -{{ -if UI == "MVC" - UI_Text="mvc" -else if UI == "NG" - UI_Text="angular" -else - UI_Text="?" -end -if DB == "EF" - DB_Text="Entity Framework Core" -else if DB == "Mongo" - DB_Text="MongoDB" -else - DB_Text="?" -end -}} - ## About This Tutorial In this tutorial series, you will build an ABP based web application named `Acme.BookStore`. This application is used to manage a list of books and their authors. It is developed using the following technologies: -* **{{DB_Text}}** as the ORM provider. +* **{{DB_Value}}** as the ORM provider. * **{{UI_Value}}** as the UI Framework. This tutorial is organized as the following parts; @@ -115,7 +98,7 @@ We will use these dynamic proxy functions in the next sections to communicate to ## Localization -Before starting to the UI development, we first want to prepare the localization texts (you normally do when needed while developing your application). +Before starting to the UI development, we first want to prepare the localization texts (you normally do this when needed while developing your application). Localization texts are located under the `Localization/BookStore` folder of the `Acme.BookStore.Domain.Shared` project: @@ -341,9 +324,7 @@ You can run the application! The final UI of this part is shown below: This is a fully working, server side paged, sorted and localized table of books. -{{end}} - -{{if UI == "NG"}} +{{else if UI == "NG"}} ## Install NPM packages @@ -551,7 +532,57 @@ Now you can see the final result on your browser: ![Book list final result](./images/bookstore-book-list.png) -{{end}} +{{else if UI == "Blazor"}} + +## Create a Books Page + +It's time to create something visible and usable! Right click to the `Pages` folder under the `Acme.BookStore.Blazor` project and add a new **razor component**, named `Books.razor`: + +![blazor-add-books-component](images/blazor-add-books-component.png) + +Replace the contents of this component as shown below: + +````html +@page "/books" + +

Books

+ +@code { + +} +```` + +### Add Books Page to the Main Menu + +Open the `BookStoreMenuContributor` class in the `Blazor` project add the following code to the end of the `ConfigureMainMenuAsync` method: + +````csharp +context.Menu.AddItem( + new ApplicationMenuItem( + "BooksStore", + l["Menu:BookStore"], + icon: "fa fa-book" + ).AddItem( + new ApplicationMenuItem( + "BooksStore.Books", + l["Menu:Books"], + url: "/Books" + ) + ) +); +```` + +Run the project, login to the application with the username `admin` and the password `1q2w3E*` and see the new menu item has been added to the main menu: + +![blazor-menu-bookstore](images/blazor-menu-bookstore.png) + +When you click to the Books menu item under the Book Store parent, you are being redirected to the new empty Books Page. + +### Book List + +TODO + +{{end # UI }} ## The Next Part diff --git a/docs/en/Tutorials/images/blazor-add-books-component.png b/docs/en/Tutorials/images/blazor-add-books-component.png new file mode 100644 index 0000000000000000000000000000000000000000..ec0412d31ecf79ada3578add9c7d5e28ee21979c GIT binary patch literal 19010 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 Date: Fri, 18 Sep 2020 18:45:56 +0300 Subject: [PATCH 06/31] Completed part-2 for blazor UI --- docs/en/Tutorials/Part-2.md | 67 +++++++++++++++++- .../images/blazor-bookstore-book-list.png | Bin 0 -> 61075 bytes 2 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 docs/en/Tutorials/images/blazor-bookstore-book-list.png diff --git a/docs/en/Tutorials/Part-2.md b/docs/en/Tutorials/Part-2.md index 3e1b0047dd..24f74eab6b 100644 --- a/docs/en/Tutorials/Part-2.md +++ b/docs/en/Tutorials/Part-2.md @@ -566,7 +566,7 @@ context.Menu.AddItem( new ApplicationMenuItem( "BooksStore.Books", l["Menu:Books"], - url: "/Books" + url: "/books" ) ) ); @@ -580,7 +580,70 @@ When you click to the Books menu item under the Book Store parent, you are being ### Book List -TODO +We will use the [Blazorise library](https://blazorise.com/) as the UI component kit. It is a very powerful library that supports major HTML/CSS frameworks, including the Bootstrap. + +ABP Framework provides a generic base class, `BlazoriseCrudPageBase<...>`, to create CRUD style pages. This base class is compatible to the `ICrudAppService` that was used to build the `IBookAppService`. So, we can inherit from the `BlazoriseCrudPageBase` to automate the standard CRUD stuff. + +Open the `Books.razor` and replace the content as the following: + +````xml +@page "/books" +@using Volo.Abp.Application.Dtos +@using Volo.Abp.BlazoriseUI +@using Acme.BookStore.Books +@using Acme.BookStore.Localization +@using Microsoft.Extensions.Localization +@inject IStringLocalizer L +@inherits BlazoriseCrudPageBase + + + +

@L["Books"]

+
+ + + + + + + @L[$"Enum:BookType:{(int)context.Type}"] + + + + + @context.PublishDate.ToShortDateString() + + + + + @context.CreationTime.ToLongDateString() + + + + + +
+```` + +* Inherited from the `BlazoriseCrudPageBase` which implements all the CRUD details for us. +* Injected `IStringLocalizer` (as `L` object) and used for localization. + +> We will continue to benefit from the `BlazoriseCrudPageBase` for the books page. You could just inject the `IBookAppService` and perform all the server side calls yourself (thanks to the [Dynamic C# HTTP API Client Proxy](../API/Dynamic-CSharp-API-Clients.md) system of the ABP Framework). We will do it manually for the authors page to demonstrate how to call server side HTTP APIs in your Blazor applications. + +While the code above pretty easy to understand, you can check the Blazorise [Card](https://blazorise.com/docs/components/card/) and [DataGrid](https://blazorise.com/docs/extensions/datagrid/) documents to understand them better. + +## Run the Final Application + +You can run the application! The final UI of this part is shown below: + +![blazor-bookstore-book-list](images/blazor-bookstore-book-list.png) + +This is a fully working, server side paged, sorted and localized table of books. {{end # UI }} diff --git a/docs/en/Tutorials/images/blazor-bookstore-book-list.png b/docs/en/Tutorials/images/blazor-bookstore-book-list.png new file mode 100644 index 0000000000000000000000000000000000000000..05b81ab61a6dff3a6013a15ba369fa9dc438ba63 GIT binary patch literal 61075 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 O)i!7Be=mh!yZ2wGFd*sx literal 0 HcmV?d00001 From 08a64041cb913bc7fe58ec111843ad9eee53bb41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 18 Sep 2020 21:09:08 +0300 Subject: [PATCH 07/31] Delete unnecessary variables --- docs/en/Tutorials/Part-3.md | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/docs/en/Tutorials/Part-3.md b/docs/en/Tutorials/Part-3.md index be3dd75d64..7056bdd587 100644 --- a/docs/en/Tutorials/Part-3.md +++ b/docs/en/Tutorials/Part-3.md @@ -2,32 +2,15 @@ ````json //[doc-params] { - "UI": ["MVC","NG"], + "UI": ["MVC","Blazor","NG"], "DB": ["EF","Mongo"] } ```` -{{ -if UI == "MVC" - UI_Text="mvc" -else if UI == "NG" - UI_Text="angular" -else - UI_Text="?" -end -if DB == "EF" - DB_Text="Entity Framework Core" -else if DB == "Mongo" - DB_Text="MongoDB" -else - DB_Text="?" -end -}} - ## About This Tutorial In this tutorial series, you will build an ABP based web application named `Acme.BookStore`. This application is used to manage a list of books and their authors. It is developed using the following technologies: -* **{{DB_Text}}** as the ORM provider. +* **{{DB_Value}}** as the ORM provider. * **{{UI_Value}}** as the UI Framework. This tutorial is organized as the following parts; From 8bdd4c08ab05f4e66960cde3ce77eda740aeda47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 18 Sep 2020 21:23:36 +0300 Subject: [PATCH 08/31] Update blazor-bookstore-book-list.png --- .../images/blazor-bookstore-book-list.png | Bin 61075 -> 62835 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/en/Tutorials/images/blazor-bookstore-book-list.png b/docs/en/Tutorials/images/blazor-bookstore-book-list.png index 05b81ab61a6dff3a6013a15ba369fa9dc438ba63..91450f47c2026615ad655666a493603b385bb2c0 100644 GIT binary patch literal 62835 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 literal 61075 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 O)i!7Be=mh!yZ2wGFd*sx From 18a7d7c63f8d28555e33671f403a951de8900989 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 18 Sep 2020 21:25:51 +0300 Subject: [PATCH 09/31] Update Part-2.md --- docs/en/Tutorials/Part-2.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/en/Tutorials/Part-2.md b/docs/en/Tutorials/Part-2.md index 24f74eab6b..805ae6dc4a 100644 --- a/docs/en/Tutorials/Part-2.md +++ b/docs/en/Tutorials/Part-2.md @@ -608,18 +608,20 @@ Open the `Books.razor` and replace the content as the following: ShowPager="true" PageSize="PageSize"> - - + + @L[$"Enum:BookType:{(int)context.Type}"] - + @context.PublishDate.ToShortDateString() - + + + @context.CreationTime.ToLongDateString() From d81c98e5b6a49a441be6afcf4fded183cbf2a172 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 18 Sep 2020 21:28:57 +0300 Subject: [PATCH 10/31] Update Part-2.md --- docs/en/Tutorials/Part-2.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/en/Tutorials/Part-2.md b/docs/en/Tutorials/Part-2.md index 805ae6dc4a..14dfb8d8e2 100644 --- a/docs/en/Tutorials/Part-2.md +++ b/docs/en/Tutorials/Part-2.md @@ -633,12 +633,15 @@ Open the `Books.razor` and replace the content as the following: ```` * Inherited from the `BlazoriseCrudPageBase` which implements all the CRUD details for us. +* `Entities`, `TotalCount`, `PageSize`, `OnDataGridReadAsync` are defined in the base blass. * Injected `IStringLocalizer` (as `L` object) and used for localization. -> We will continue to benefit from the `BlazoriseCrudPageBase` for the books page. You could just inject the `IBookAppService` and perform all the server side calls yourself (thanks to the [Dynamic C# HTTP API Client Proxy](../API/Dynamic-CSharp-API-Clients.md) system of the ABP Framework). We will do it manually for the authors page to demonstrate how to call server side HTTP APIs in your Blazor applications. - While the code above pretty easy to understand, you can check the Blazorise [Card](https://blazorise.com/docs/components/card/) and [DataGrid](https://blazorise.com/docs/extensions/datagrid/) documents to understand them better. +#### About the BlazoriseCrudPageBase + +We will continue to benefit from the `BlazoriseCrudPageBase` for the books page. You could just inject the `IBookAppService` and perform all the server side calls yourself (thanks to the [Dynamic C# HTTP API Client Proxy](../API/Dynamic-CSharp-API-Clients.md) system of the ABP Framework). We will do it manually for the authors page to demonstrate how to call server side HTTP APIs in your Blazor applications. + ## Run the Final Application You can run the application! The final UI of this part is shown below: From b2bc1bf0fc1bae39440aeb04a9859a246d3a08b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 18 Sep 2020 22:13:55 +0300 Subject: [PATCH 11/31] Completed Add "New Button" Button --- docs/en/Tutorials/Part-2.md | 20 +++- docs/en/Tutorials/Part-3.md | 87 ++++++++++++++++++ .../images/blazor-add-book-button.png | Bin 0 -> 8810 bytes .../images/blazor-new-book-modal.png | Bin 0 -> 40416 bytes 4 files changed, 102 insertions(+), 5 deletions(-) create mode 100644 docs/en/Tutorials/images/blazor-add-book-button.png create mode 100644 docs/en/Tutorials/images/blazor-new-book-modal.png diff --git a/docs/en/Tutorials/Part-2.md b/docs/en/Tutorials/Part-2.md index 14dfb8d8e2..3edf5e339f 100644 --- a/docs/en/Tutorials/Part-2.md +++ b/docs/en/Tutorials/Part-2.md @@ -608,20 +608,30 @@ Open the `Books.razor` and replace the content as the following: ShowPager="true" PageSize="PageSize"> - - + + @L[$"Enum:BookType:{(int)context.Type}"] - + @context.PublishDate.ToShortDateString() - + - + @context.CreationTime.ToLongDateString() diff --git a/docs/en/Tutorials/Part-3.md b/docs/en/Tutorials/Part-3.md index 7056bdd587..4af3d2ddf7 100644 --- a/docs/en/Tutorials/Part-3.md +++ b/docs/en/Tutorials/Part-3.md @@ -1158,6 +1158,93 @@ Clicking the "Delete" action calls the `delete` method which then shows a confir {{end}} +{{if UI == "Blazor"}} + +## Creating a New Book + +In this section, you will learn how to create a new modal dialog form to create a new book. Since we've inherited from the `BlazoriseCrudPage`, we only need to develop the view part. + +### Add "New Button" Button + +Open the `Books.razor` and replace the `` section with the following code: + +````xml + + + +

@L["Books"]

+
+ + + + + +
+
+```` + +This will change the card header by adding a "New book" button to the right side: + +![blazor-add-book-button](images/blazor-add-book-button.png) + +Now, we can add a modal that will be opened when we click to the button. + +### Book Creation Modal + +Open the `Books.razor` and add the following code to the end of the page: + +````xml + + + + + @L["NewBook"] + + + + + @L["Name"] + + + + @L["Type"] + + + + @L["PublishDate"] + + + + @L["Price"] + + + + + + + + + +```` + +`CreateModal` object, `CloseCreateModalAsync` and `CreateEntityAsync` method are defined by the base class. See the [Blazorise documentation](https://blazorise.com/docs/) if you want to understand the `Modal` and the other components. + +That's all. Run the application and try to add a new book: + +![blazor-new-book-modal](images/blazor-new-book-modal.png) + +{{end}} + ## The Next Part See the [next part](Part-4.md) of this tutorial. diff --git a/docs/en/Tutorials/images/blazor-add-book-button.png b/docs/en/Tutorials/images/blazor-add-book-button.png new file mode 100644 index 0000000000000000000000000000000000000000..58a607d3b1ec5fcd42ea93afc837c0b2baf05b69 GIT binary patch literal 8810 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 literal 0 HcmV?d00001 diff --git a/docs/en/Tutorials/images/blazor-new-book-modal.png b/docs/en/Tutorials/images/blazor-new-book-modal.png new file mode 100644 index 0000000000000000000000000000000000000000..dd284a0ffd66a815a16e3eb2efc43ace3e486dab GIT binary patch literal 40416 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
2yWqE0(%a<1mT6iNCnCf9Ie!XNFSZ7da2m9rx$t z?cWD2lm@Z0-R1nXm{`J=_8xG&Ag7~93>)U^Tvzt|Yi*<)P>O}=;jr@tj9oqY&xGt& zrnd!je`2$GkrIy44TlEA071-VOS#C)+sUoqVoTMRid!6?w-5dfDk&IxO1Y{AuIFn} ze$)h2&$@(maT5W)m43T$20vC-*gDixt4u*vVnX0niL?ZYTYZ`J(f*+EK4MAu-rn)$ zv&ji07Jl&}us#K+C&<6sB(E1H@~S!=8Z@@*4V# zo?w(vhbqOEVo7GJjql+e&#si>|3Y($Z?H%t1%Ar}wjiazR}d7VCc@%tsgFsq7ytio cA3or`py>SoKJw$o0>c1xWgVp|MVqMq0npMOx&QzG literal 0 HcmV?d00001 From 70fc46e72a2c165c3b0af39c6f0e0b7b4b813c60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 18 Sep 2020 22:48:50 +0300 Subject: [PATCH 12/31] Completed "Updating a Book" --- docs/en/Tutorials/Part-2.md | 2 + docs/en/Tutorials/Part-3.md | 114 +++++++++++++++++- .../images/blazor-edit-book-action.png | Bin 0 -> 64062 bytes .../images/blazor-edit-book-modal.png | Bin 0 -> 27492 bytes 4 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 docs/en/Tutorials/images/blazor-edit-book-action.png create mode 100644 docs/en/Tutorials/images/blazor-edit-book-modal.png diff --git a/docs/en/Tutorials/Part-2.md b/docs/en/Tutorials/Part-2.md index 3edf5e339f..5afc96be87 100644 --- a/docs/en/Tutorials/Part-2.md +++ b/docs/en/Tutorials/Part-2.md @@ -642,6 +642,8 @@ Open the `Books.razor` and replace the content as the following: ```` +> If you see some syntax errors, you can ignore them if your application property built and run. Visual Studio still has some bugs with Blazor. + * Inherited from the `BlazoriseCrudPageBase` which implements all the CRUD details for us. * `Entities`, `TotalCount`, `PageSize`, `OnDataGridReadAsync` are defined in the base blass. * Injected `IStringLocalizer` (as `L` object) and used for localization. diff --git a/docs/en/Tutorials/Part-3.md b/docs/en/Tutorials/Part-3.md index 4af3d2ddf7..1714aa8485 100644 --- a/docs/en/Tutorials/Part-3.md +++ b/docs/en/Tutorials/Part-3.md @@ -1237,12 +1237,124 @@ Open the `Books.razor` and add the following code to the end of the page: ```` -`CreateModal` object, `CloseCreateModalAsync` and `CreateEntityAsync` method are defined by the base class. See the [Blazorise documentation](https://blazorise.com/docs/) if you want to understand the `Modal` and the other components. +* `CreateModal` object, `CloseCreateModalAsync` and `CreateEntityAsync` method are defined by the base class. See the [Blazorise documentation](https://blazorise.com/docs/) if you want to understand the `Modal` and the other components. That's all. Run the application and try to add a new book: ![blazor-new-book-modal](images/blazor-new-book-modal.png) +## Updating a Book + +Editing a books is similar to the creating a new book. + +### Actions Dropdown + +Open the `Books.razor` and add the following `DataGridColumn` section inside the `DataGridColumns` as the first item: + +````xml + + + + + @L["Actions"] + + + + @L["Edit"] + + + + + +```` + +* `OpenEditModalAsync` is defined in the base class which takes the `Id` of the entity (book) to edit. + +This adds an "Actions" dropdown to all the books inside the `DataGrid` with an `Edit` action: + +![blazor-edit-book-action](images/blazor-edit-book-action.png) + +### Edit Modal + +We can now define a modal to edit the book. Add the following code to the end of the `Books.razor` page: + +````xml + + + + + @EditingEntity.Name + + + + + @L["Name"] + + + + @L["Type"] + + + + @L["PublishDate"] + + + + @L["Price"] + + + + + + + + + +```` + +### AutoMapper Configuration + +The base `BlazoriseCrudPage` uses the [object to object mapping](../Object-To-Object-Mapping.md) system to convert an incoming `BookDto` object to a `CreateUpdateBookDto` object. So, we need to define the mapping. + +Open the `BookStoreBlazorAutoMapperProfile` inside the `Acme.BookStore.Blazor` project and change the content as the following: + +````csharp +using Acme.BookStore.Books; +using AutoMapper; + +namespace Acme.BookStore.Blazor +{ + public class BookStoreBlazorAutoMapperProfile : Profile + { + public BookStoreBlazorAutoMapperProfile() + { + CreateMap(); + } + } +} +```` + +* We've just added the `CreateMap();` line to define the mapping. + +### Test the Editing Modal + +You can now run the application and try to edit a book. + +![blazor-edit-book-modal](images/blazor-edit-book-modal.png) + {{end}} ## The Next Part diff --git a/docs/en/Tutorials/images/blazor-edit-book-action.png b/docs/en/Tutorials/images/blazor-edit-book-action.png new file mode 100644 index 0000000000000000000000000000000000000000..f1179dae5838b54485d8a5236ba989d7a9c34afc GIT binary patch literal 64062 zcmd?PcTiK^_b-h4ASwb6A|e8!NUutjuF|`JfOP2{qy`8OA3>^s^cs-fdrt_c^xium zAiX8@NJ5e~%JaSV_s-n+{o~HunS1A+$(%W7pOw8=*?X_GK6^#H)>NXn_23o>2?>RY zvb+un$@L@>lB>UNTqU;9e%LxAA$dfiBLDJ@Z{{A{&sW`!&~xY}Sg65$C$}NwOZUUb zTpw*o+K8>at+DFMnRLh(CP8nh`?y@oq84dzhAQ1D?G6{x}R`?R~A$g zRADCVop}={5h6D>LxETI*lAqmRw4cDCCHx>- zziddQ@3N~8-r8kTXJ==h$m#UUrYs*U*hu~u&<-k+H6X}&d3l+bWWs)5IG(E3`2F~Q z$1gkHn-hvw%p0?3WMs?)gA-gQIRJA}2esLV0tyro4oyi-eOvzanX&Q0Uee9Wf!;zx zLPC^cAI{CrCUWa>ZzpHU`_A2-*ZBm9h=>>)8zbI_hlfJ|m(-lS&Mq!sF!(egEp_*1 z%BOLU@wm;}DypGv1C_NSFC z)6mpZw8?Zy`lWMvdU|OIzdcc;awQ#qR({=YPHXW_w7u{HAQ0(B){ZfsVCk*I<;C>hcf0Z#CoV_tpT`K9}z=&a6d@tuA=~9nfU$Uj=^fSbr7N^WNyP z{gJe|`p6dOaRbL^$`Hfy?Sc&yH$0&0*E@%Do!^M3tT+!xbQzLv+^{68d}PPh3_gE>U~ z;E}wK{$0$y>25K1{cSaHP49lDX|{=5YFO#?{f7@*VDaft&ULHlQ##iFMxRPp_a^@$ z^k3T^=w~$e{Ferj|0O#_<%?OF))=LsL=e-)rwwo5AI*NCwHJt(U~`B3+VGb9e2U`x z{nC0evYXs0{2#*!^q+6{QO~A{(lhCk2ywlwd~GK7sOZ(E&raix>qburxnw)isKON| zx&)ULM|S?R!0z~>Q|(N1n`-P*PAUBf{2WqBy4rg>LU4ui&@i+ zKaAY{8}e72fwh-``_OLkw+FPT7sKI5#I9t3j6MDklVR=qhibVCifP)C&*bSRObzT7 ze!E56d7&vUe+MtUy5N}z@-l0>+-KH+=}xulHQ~xV$%F61cSU z=V+~DAL?V)##AK)5kG6zLXal;#Fih8&tFc*TZIqF)~YIXy0r^i17u>x1x;X(Iza+y;@kC?$boL&Dw}oerScs^T(%W>6u&eIzNme z!Mz|*yhY&v==!g4yT{@_uhW?u%BeL4VR-+_K@_Z~ekDlvmnx*({GYYWimG#edkC%MD3(|YTlAA#G%tP=kJ2K(*z=JJp$!BkB zl`lB5e7O6-aLpZ3$BS}^b)B|T%9*DSzCfg?aW62_j_ z-nnZ`MPf1u-qF=Fq<%=)=HJBjzXNa`mKJ**{b~tURei2DW9t!ApT<3Y#KfLwN*rN! z?Bd>%%9R0>y!_;pk_O6baVs?B>v76axyYqemc!#7bF4>%n>wVyyK{vuuB*=EvW!^o zUf~i`U<}A#v@{Gd@6?}f{DK-_Wp2b(hKHMS(cAd@*Xgi~u*qoD&wMvkjo3o=ef0A0 zC>XEEn4IYQ!KdR|`&^xd!949gi@5Ux2) zdfBtysQIRb};2x%DVf9 zfk^I`!&&hgVSJeAa1|5GGBkb)-5F;lYEExNv?JurwS)}KKJ&J)v*;}8 zNwC82u&1ob%kSt3F^aV2K94Y=j2m!g@%ee~(@)7!f`)|mp7SI(if>UJ;v`R_7byGF zHrbOPqVeoi;jF!-`yRX+j{(C2wUR6>BHRVS#`%PWpRPQ)arC=`ArU=i{bwKrd84)@ z+wAag-^LU_5qUn3l|-+hq80EO^pvMou0Y3b|1TG3`Q?A27jV}!m;8%=yLDxV;r{FL zUWWAyVe}3rCEEcSLE3J~37nu?Gd{I5?Y0Vsc?Jvm_$|o)nZ0*^R(_Tgz&=p3 z5Hp;9I}cXftQOSidMUpqAD#vVW`&1`=S|YiJz-&4a8om&D$!9iVH3aMw9ay55@V7G zg6BIal&tf|3opPIbm01|Mxr5x^J@wJY`8|pAqdIr1qJH;&wJ2n5vua|xGBI8lfX|; zr8X`Boj2(P!qBl@7M5oK8*K?aRBYmsLf5dNe?++$TrU^KYtQ>h;bTxrC6sSp%|7~; zbr2l`y3@W)XUHfy>ploh2&1oSGzlmcsncaZb4nn`hBH!pD$^@{94-#?t7KjE1$S>6 z2h3LbA%^GtzXvdBcVBgJjHp_{=)hv$4@aM4PR>KVu>bTUNBcMMiJO#*7;H<#> zEYVj(ehr!DRc6M-S0>-7Z>G}Fq1ooZ`^jb9thlvFS~d)z^R#Cq^r5WNNipX{u>%*m z=J=AVOr37R!_^=m=A{A|iKEHf6{dxl1rXw6aP-deLzkHiQ}$nJR45&0Chwm`aTSv4 zvk3(ff^@LJHEe=L2Q;W`I)fZl|8fA+w1X(u>F&X$az{X?G|`Lm$!Vs>M$R#mhec;X!vtQ?s(c}xmXcIB?d*)4cGN*=%d`ISIikQK zqcr7J`weUcQ&v~GS#p7#SRGe!bZoeC#F3yBxO4#$9xhL?a;}I=qfdAbZjCepnfNk zl!{_K;8alyV@jIVEwI&f0dlbiQM=3M`w;Ppp%4H|tQetsMWDm>&_~wUOm{kDSISyosIRQrC_=H3wpNIUI2>uE_%EN(5l>W>On^vUP_eu#Z0er(dI zf894je5oPpwmU7g_<2!|MO09VF^i=Djemw=^h_PhmyTBDZ-STYB-GOsf=q_q%=JiQ z%U)Z!Awbv!%+Hd|j37;gO8|B3(g7n|N}&>y_gg#$lw$||LruYAJ{lnwy`>ckA4C?~ z`+WOuK>KlYr~?PbyDJWwLx_A%+rGnUG7w}Jq-!vmQ znMYWf6$KRI{^{w>ywvgU$50nFi8Kn7e0>;ImYDEt+fc|{#kja&1SEfx4wqpIb^o&# z*K~=lbtZ>}#e2xR*4Rs(Uy8>43tNYcA3nRx*Ugp-v@sBoZpZn_X@>9ocumovf6Ps-gs@wSP2bJyHuEhqcx> zh&2hkA{v?ooWJNK*c^Nt`DorQmxq;@Yt-=Pi(8$#(3|O~iigV&gg#9$4Pz;AvflIh~Z7;HE+Zd<_5lb!!v?Lj3CZQ7VW( zhRdl(rj0{xy1(WP`kMroq%u21tTNJyeGQ;rB6dzV zQx~(J#3IjUpF+gB zB>j}|ysm&>J#lvmx-{;9aWBjv11M79o4rbdk^76FscM@AuY)i3RxqJujCK`7t#DVa zy9@|`V||rNc<=tbFKf9K$q?$^v~x=?nRj=-)%5cr@rY{mL zT4kz<<($kCw_~Ihb-Z!gsE#Mu)p%yeVur-!P&8Q%3}eqhntofO`g zE)!oCvb5vp1(E;Z`a}J1)d9NqPaT{#&Wf4@%-i072aO@NR%q9IvQ*pXs_xFH zDfABaeyOdmqM%E-8;E)0z;(zc$`(x%r^u8cxwlj%D~_CoXUReS&9WxNA+ zIFuRRhR%G~VEZi!NiPN&zfXh`8aq(NWNyfq8~ETIdbXxLeOtN^Msr?eQC19GcjmpV z4Rd76t0)c+ulJS`EX{l6vvW{vD?F4X55Lv4#!6(MDM&GDX`blUMr#YiEod`W8vA3zj z%&Z!!ver}J65iL3jwPwxPcY4%?s@xVJ(NY;|D>4D zrEoe(oe%*Kt!}2_r6U^0CjQ?(KVvM<)m=!=t$|9Ql5wi!2G9gOo{EU#Hh zF~IA5HGFn_8ST7`YVH*1?E82KBX6MFe>q2s1YUF&$K)<*yO&M(@_Ly zzWFuf9Aca^6D{{W-lo5B-W=l0m1MEIbh3;)~J^Bh#==*YvJBFQgYXzB8rF9q=isxgzJczAf(f6PGCf$Tg_@^z&kFB#<5&PQrlZ;hu?z={GwML5 zjTNGIZXC#dnUXkrD2fr;V}Kb8s1->9Fc#+@juZu+&oc~!o*E`IP-hjZ`DDmIvc|5d z(|E}U)Aj#B(I1T@ab`9*Kj|1OpZXayf9Dg;F@)Ce_3LBkf>V%$wN#!d?MQM=NvvN_ z8E!X}Zz#tcG%$YKwMh&^%D&aKm(l3pxbfA0Y5%kB$^@g?eoBD^(s|ZvY!p7xrULCY z6gQTaH(e!fKV_#jGa3D8AvdkK)*ba_6g8nI_%@&Jog*#@Z+9aWOQxMufjd`8T7PU)ey-J zGq$vG63l_G$BJXVktT>4oAoTU3`Fnv!aPx;w!6I{kZ!txqV`>D#uc1Q86q6qQoR(C z*LU?2Uti-1bljO)xsDm76%HLY|zGf!4k6VpW z)WDn`wJUCeUCzI+LW;HnIaqXDd&AK|^bL~ye!8Ci{)m>OCeTWpgX%q)=h0-IJ4OR* zn+?MINQ5Ob2t#o5E5K9l%)@Qjs{Ukc5y7es&|>|Ew{lDxJ)eugbK=|XXJ*xgp@6ja zCWwt@s|3jH1Y(>io*{m*)}6#AK~Zj<;?S~rHTZMm66bzA{Q4g-@~bl2Ee`xz0j@8q zrr!6T-#&yO9r-y@7>&Zr!OAvb&c7;5-0PT04FOp0PNSeJdJ|k)`{M4e(iMz~vYNBU z>I7w+Pe&;eH1EfYgca(xoeE}9u}_UzUOd;zb9ICmJNbKO1o5s)RN}@FPW{j1UTrOl z&-F;+BzTwiq}}>@Xg}+AG+UXs%Pu+#v~I1o!6i@9foqxpifoR-o9E6rgZ7frnH?6ww=w*24(yq2=EvbwrD@vf}g3?c-T=s4Un2;};2V0v0n<L+unaC2Xf_tWlXw*q1Y857(?xqH@VOr7^lje&u>dB4XEk9v`>ePX*i`Ey|?YVgcb zsL~2Gd$vlIu@R}6BuV*z;GP0m*Vt|LcAvN?Ii^&kpV2-sWhRiC(NER{`hsuv=!*8A zEY#X1o_Fdn{9LF&^c#1BY1CT9?BJQxg*GV0?PuE|;o*>GB`j4aXf{uK$dVmxaRC=< z$36G^ZjlGf^+m5ki`o*vhp@}deR_8Z24qu9u5b8r)zs89G|*BrFfiZrCkxMd1xIQJTamrZzIdSp1g~)JLdrQloy3FqkeN#+&hR4jz$x`Kg`##MQ zzm^eE{;clK&LWvd#|N6cBPe;+d5|w%_LIWZD5!v$Ohb(}1?FP7KBJY6ykN@gDBZ5?=E zSEaBJ@VVz$^+!c?Hsu+`urDj_F4sOP6d|tNqi5a^BC3Ogge( z4E$Bjh8@nFmqZ7~vKZb<+*`trR9(p^LYL}F9ZyVl?NYvde=xeU(ja8M@;yIhKKmEb zSq5%p;og*X5h6YiJ44`D{oX$JbFbn3_Q8Wf>ZN`e>D$z131%G`iH*z1IzFS4ypauD zkU;Jw{zF0y-(~oJY%R+FM)fiu zKDsPCMfX4CB80lsY-Ntp^PLv?3TM-%dq714RyX+^Ve4k+6+136XlO~`A>S2}M+Bb4 z8H(QqdS}*K-e@*J5QM7jFPl`VCM3hI$L^TS;n~D^uEp^vX-d3Tlb086qWsL~tV!2E?F8uO9OYYDolONBfar52$fh?B2}!T{<(cDKTJJb91`2|Wx2!?lLM788 zLz*20aeRS$m*amb^>#F$wijaAQ_T_~ZWFC<|CAGa5Gge(_&Ao#&aWsh|H`((yJ|1) zqN>0x{E&Vjl-@`0VIvzZSHvR73es3=2=9Q^h5=788qgSXx_fShWv}e&Ckq<3j)*6RmbW{2@^kBtu4IlX^lGM;{azPWdqDFK#FHGdBrY}o+9kCrsf zG#8M)V#!<8xwkOdt)N5-p7k8Q7)5M8R`ajF7zH>TT#F{wAQVNk)F9BojU9l(Z1fe9 zF9MhDglMfb&^OLA|NZ^zZtI%gi}VL6B1Jrbdt*1{?jibZbDlvJPjRSd-paTPO*P9{ z^=!J-Az~%XJMd*eSXpi~%x@GOjCVrbcjaE#T)o$#-&Sh9>yW`u8Wv){)MWiWngz4q zofEam)Mpmga}i4)-&_j=iPPMFc<;``fU`uzUQU+l*)~{z4IE)SVn#uJ^NdjYPY%-& zIt~Z2ts>?HZ;M{}!GBLolH}*2jkP^*g__Ei7^MKt4U44;dVn7r*+7Y?@M6=2pax!~ ze^kwt^!z|AEhgzFd=G44ulGH{hlMa0m>4H2m&}{dB>NS3#s`Mc4}`ukhzf@seM`I6 z*!b30+E2^6QzXu0$L$8m2inW(ns*Iv6f)G8YS3j5c1(C`UZTy06*FSMLs+oWiKc}l*NUjUH=^8Mkllv2^_rZOY-4k$e*IRYEefr zJGxk(U^~=JsZ+IfF;61u%4N)^cdxioe~hiCU>fH<2vxlHP67LL>s!AHZegk%;iULY zI%=cK)9d|HXQ}Xhvlt?W-j;tVnBLJ!ZHDk|pBYCCHeX-?@!^->qqttBSNxUD>%*x1{Rb&{YGUS;C;XA{*F!- z%`_90MEmw8we)UMlP>*P=fhJ|ugB1?t0b@g{_Xi=OR2k8!X#}JoB9*5ym#mjZ9aj(py9^iJoiXGTtxrTM6axr;~POQ zmkGv9>C;h{=x|X{`>rqUKp_);mi0_&8qA<9T^a3|45gvyyV1z@6X@Q;8Bi98L;1uw z%DzuVlsKW8Ic$Q{XNyyPJCKZCyVpp*K6;1$T{iWI*E0X>9>f`yj;il^5{v63*mGh#yi_1)zJ_!3*Z zpq{Z~$T~Dsn#*S!IM?~{c%W^&P!(9#UxAIJWlkCKJ08DlQhwNZikKW3V)ME}(hK;r zGCl+p_@;cqCR4g0k=9jrsI?^%E62KeWZ!9vMJ4-sGq*YQ{P?cH^PE+|(UFWUwsI9D z-sa?3_jAro2lnt9bkZB(GcI79Qw!iW&2t!u*rm)goSFfjP?CJOP0ZKWje@+!zpD^9 zSXqfL?8G}O>tZ_yF*LMKDnk8dt&mjfP*YR?f8;v3|0$OHuk~#I=LVRjOMbo{iYQw> zZeX*4+u2Ha0@X1@oT!FsmdADT5Q8&i{LHu*Yt=&VRV{|L!{d7mOCD7h`lq7VSokEd z*6fS-d`3`qLzUT32h0e3FWZH(DZTx1tn}R*qQvrvWM;6}`*Fg}n>UFs#5?gqqYwa3 zPvA?9fSZ=nCxJl!uVWNdX!v_)BQTxucFvf07;-${c@ALYVG%SyXZ++#8qonm`EY9O z4u})zH7AH_O=(ThAt!K5LV(2-pgV3Xcs%`s2YnJ~*{H&ic} zE?G2Pb%7fGuxw0_?_pC?b|l+mVOx|kKEdrpogob&vd6F1;$1a1LwCfa+n%q)`a~va+&ra^hhT6&1x0gcJyp)DcEd@zIlH(AoZNVURPDE1&-) zw~WL?(bIBcMv_=iM@!Vbuc23ZYVUG_lU>kcvqkLrKZl0m4PR7GbBzkT=7CCfr=`Y4 zrie6#7&4{p4oT`UqVEbLb2XMhH|_e(%0$s}TZ2IzS1)GeUcL(A@NgP9<0)~&0tuDm zEjrEYn4dX%e?08)rm;F&nBa&U_3xS@!ixCeWm4U(05Z}@X+ggW*E>=qBuC=J*kJ;? zfjx0K)-*r}({*!xwG7@sZ^M2iclAI6PFCwh*Z1{UxUokrw!;i>UrW4j;2%D46|+BI zSAw*pf>3dwwcS z>q>&LU~L{dut4ug)pE_H`GPDxUf@x1M26k}4wl;H@u_?N6% zu(=j$%Gptls7+Fn27zlo+JxII242V3T;XCEl)1iJFcm-dk_fG4Isu0atD?>_-wWHM zBa5zJV^lKq{pNW|C$iEoB@Vtt-1^X-*)iDsROObl0Ly$2+Km*~=5~A}bmlkJ{igi% zyfV-gyno$8`yXamhGzGSphkRcboZI#iBbRbLl4LQZh)k;I%VAU5H4GSeypQdO} z9Ti5C97TUzA|QVZUjr3g?9EpuDAkpn>Oo`K1A}wLYi-&a^%hPfn7R-$u%PXaL%_-< zm9(#K_LujJ0N)b*I(C=^@vmg&YHE_CyCd&Q6x%g^EMgx7EnVnA`4{n$Ems?Y>zt;} zP_Yjd%WBHNeL3trKa-dsfrMGho_ktZFbvw5;OLcG%VX3wH%nUQZy+i?5I|c6_45tH zuWspUrY(B+q94Ez`=yBPe2!kQp84QTtCI(X8fLjm$y@?A(C8f&V|Ko)J=p#L%qn0# z9q=t*8@HQQZe=^}U2y*SpkTie`S!WzVYlvzyAgFmFmUysRomOgyao66VdQ0-!*9J0 zjI58ct_O3dW9wU5^v3FIUS@zY8y&R{D(({_#z{*4r1VzVqYR5ILt{A#5|2l=rUZYP z_Fbs;Bsjp(WkryT_|9#Tp3E*=kuVHFeAfEJ^V2i=Yg2-1JwOFHS_)M;5SstXuz z%ZLiMNA8(#U_lupCefcKBE$PD?fqh7t`(~985(j)%X|?^e@gJHOL10*)YCKss}1q5 z7TP@3SEmU)Uz^`=XQaG=-_=%EZ`G84LWHW3yetT6JF5c|x9%E&tJ(PL zr;{(+_Sgl=xWWst4@yqv8Uvs3u%c>zrHhJXqa0)mG@nK@HK6&+&5l;xfNt{Lo%tpk zDaEhbam!j^Faub)19V*KVH>BvS6?D(Ix{vrVkV-0sibu?wZ&5?Fk7(c7Z$t@UrgCW zy>JuqW|KV|tY1N!Zv;Xu2}xv!654Yq#pC!oR1vz|IeW)O-^QTUae;cfb<+{ai1FLd zV$d>I3mRwucpPs%eZTYk*lqL$l4}`<8g^N#ApBT6-Eb+5#7I{aVhWsuui%x2&cw%; z7K92Ff&o};CG2n4ddL@1ehH~>0?V$$3k9%kwBhc&*=q8`8xg{9zD7q;%C-+Txs`1! zkqbDE%NomE324JQN&GzSb-(bCmq_UT;NOK1s)-#{0+UiC4wBS`XL!Nr9l14@D=*L5m4M&=vvK{fXM{LI&| z1=;QAw!3gT^b$2}eIjcWtyF0Kaxa@4>sOEwEMJjTdsLVffwrUyk~MEHb{(wL4kQ5O zR8XMTnX{=y6}BULiSf(ZEXlFT4dc4W+phe~QqzM8s`B!~ys2JWi2B&Y*$;g~5JJGv zph}HWAYEEH4emXbgQ;h))h%dV1>Rm%bP5g%C6oS;A_up9E!Huv2O(FYqKDx-oe^cA zbDb%a^w)s-W37r*hPzIMi?ew&q4x#IN+^y_cj~sZJi{Wx&oG#m9ia8q5WT25k<#6h ziH+%o$*ykOgFsh^7c~zyMlwDL-Lb`&?H{|Cgv9RlZR6U-2e3{uNAJTxU&m}4Fd9Q% z{!t4Op3yB@jN3^LD`cEy{?!h_Rrl93s~Ywe`59o>tN;P++(SRxXI1PJY}$9e(%QP1Prf2EqPKRFv6WWGAFbn!~w^_S1~X+0nmxp8DR#LoEaxNMt6 ze{j+Hu7D#Ub85filPv&3vC5do z$O)5y7Ls=8gMf!$`;;iO=2+ZL(_rW7?|k1X`yR~6m9;x>x(cwslS4zoK81{&2}_K5 zY7#&F{_SY?mUNag;PgJUUDYemmysMcr=%jkDN`3@85n5C2_ITFA8fH~BmrwK`tvW* zG2Zhyz1Vr_%H5IGuEnfrShkuoA(uwj(LS1d(C z7(bdCV_;sjbbj2zbH*eK6yar+;$7Q0*HEN_&%${`GYIh-MZk)dk+FftD=BEcZHtR< zQ`=spVnAMTTE;s;ei_=@EFfk$O+Lc6)#gGN=UJy5{f`hHYI6rntz3TGLddyIDrW^7?`8C zBz~Z0OqGc639IQUy=jUBZ#QdUuXYRhUyMb!n3^k(ut+7whNtHS3=P< zIZp`kAIV_i5j~~>#6v_2EP(9H>zSwZ@|TGaT1CWqVETi+9p z-xfc;_Sw7*FYdRdsHkUv6?{ZgxbwhhZRi5gb*eb}{L(?)UH}(TT+=tdrFnWNFYhH` z8h3rQiS)Oajrm2|yIz}=$cgq(W@+d&yyj@TQW)t&(?#4+V$&kIYydR2$)xou>GSr9 zhj8kzASdqWO5J|p3Qe%&^cZu#WLuxG(+v|CCKCUNn27^`jiA-j#=76=PH#r^b$tC^ zU1o(eUBj7JhnIM%g!%qOi4uiUL-?%Z%!67FixIICC47U!zIdI&8;n;Uy25l{VKN4# zo;BC;K2+XB<)&o)h{h7<-hKk;lTHJSofn%nrE3;!kNHdBq^C-7w`a@--%=qY zi*|flVtsV?zN1p?;{=&ebIz?w(`VUI3r!iYW+ibTHE^a85imaZOHO4jh`b1xtP?eB z@bJh~wqw&G;?|4+GgFJjCp^6i!u8C}ywSTstupZJ9j@+Z{yXe5CD}oIBB9tk5a*PJ zTwF<15x4Zgnk)O!HM-#}lQju<^%;FctXoPgYYO|jk%&cX#eoNtS(AdSUR~>w=V9&R2JmnBU0sR@5+$1c zH?z=MMWVQ;xmK&HY)lD=&ry^2g>#DV6IDq6>H^c9yy;4*QdC?9xZxyJ({-RP8#Ip_m>-rKK`*$8qjjZ?iQ zJ^5b9J!grTt~2O(Rhfl=6^E%!S2=hdo@Z6cwL1&7-i3|f+C%jV{Q1Ti;nf`%2B%4( z6{$<5nJ^-V7aTDGqz_bt(Lb<0`@Cr2FdG?xdS0pvlA?~AN!KzFEUqO|C2mgERG16x zwFEv{U+vDx7TYRXDLdKTSwq{`@XYw{$m4+Z8?(q&0nE&c?|ScNsz#CXt>(;#IWfnn z7wtVY`%t|iQug-VZT`K(*zGxv^^8L&B~1pimPo(AdAN8}hWF0r#|y7TcF!%`S7AFC zu<_l6D@Kf_~O1G2&1vAU!0%rl z%xL231e0%JAmbsn#uVriwiI*gW{iJn#Mp=d8%r!w!EiRjbCV*aFkL!(%0mn^i)%;z z4tI)qP7Pa;8SGs{C_TS`Hq2(03bRCHt064>JWrmLocU`x_WM0Lr#6Hk`x`wa0;Cu) z&U-7yRfJKY(PlGUG$jkQeN)0k7z=UQG^5a1YEd_j;?I_050ot6`Y~0PG-g8W?Fj6x zDwzQWtfqwozxc^xpP|QTYk} z*Ti+-9YcG9GBh8UO$bB7^p{-lFHFA@DtiL`Ib^R9Zbv`eD>W>#sB9X@XYkop)zdMb zl)T5q8!za9@N{XE-24ORO0wU_)HpF;XL>8X{jHx%!HMDs=UzT%Bdz_87JbIlUU#0a ztEC_>%uyJ7Z2X1|X4N1j7RxB?VqU5FcZrS-UX|8EWHGmPT#f3=GU@9kT=4<}Hb?`r zRw`b*T3zp00&h_Rk?J(6#Y$|9c$K{6o04>=6*A8ZG1F>@e<$%!9?sTYr^ycbsXDbJ z2;W`XdWRR@*JvM;Yag~3w23mkIq?2nhS~77tDM38mBk5aU1unecsWXvKJZcT>C38m za#X6_HZd##R;OKm5gW4yeRR5O+wjE*j!D)0Cw<*%-Xx%{Xjid$jMVEBcS*|jQ$N1( z?Q-`E`^Vme%%Cc>x)VOJ_zOw_<(EvdPEuZMG>|&U@$GBQQ;|RdU?x82G_uG)XB-Fg zD`_FB#vZIDuKUC zpOT9?YBI`j%;$xjBq-_~A;C)_w2h^c*Pe7d`GvWX{LJj8hF-Z(m5OYIY|vV7!MlXH zJd!7&Dx*KD{<@xZh(4xI{ar*s856)k6pX$-lmK(Vcb9`gxpi3W0IVZ`uOwVwaVX11 zY*8AgaNs|{rtTA_WmcA-I<=`e*oElozvD88d{RQyw(o>ix#zluMx~m~$;Jd)&T?u? z$|+5z>teUzi+u!J|Z}o(7>7R z|EUGwLdU@FIQqZ~zSu;afF*bWAr{Bsi2}Cf0gp@yy>7-O3Uoz!n*)3tk$_mz59K_F zDnM}8M0};hL#A2p#bfvWR>jimfii-12hQ=u;S7Z{_u~M$w+;BuC{?o2>ilXu>aEQ= z0?ft7^c-ZsxI}7WDx^|+%mZPB)@J|FIfj;mn_}UonAEz(S?}QYG{F{OzUkwX1cX@c zf$t*@zh3DmjMG!Xfx35TcqQh+$ZQxXa~# zJVd7UxQ9ktvL%T%iyNda-t^|ko|}!;^zog$WlMk-H)Pb+D|;^&p7z1&cc*~^2Z6uL zGd8SqvgeOClTTQEN)37r^dgXxjr;7Tg!)Y%#%HbfplzlCn@E6l_V1SWT zhZGou(Cde2zK;1BxEWw35?p}n^h(vDH|QviG$xBJk~K6#zAx3uNex;Zi(|5@sM(bH zaM8PsyW*l#m>hV5{VB2;Uo@#Lvb`jYQv<=%VC+%dp_OMs>avyoWoFXU)Ft}o8Xb>Q z(5^$)|2%%1?Wp%zaES-c5M4D=zZnF#a21}JVhBZ>q|}BUyD>>Pjx7s-hkvOd33jOA z)x2U9;h%O}TRT7kd}yQX=1uJw5|)&=3Y^?uKQLOB+$+^7ZOG*_I>eN8t(NJRo0k`u zt46)4pR!bV`SMEK$8eUbEaOM7 zkQeBm<|Dt(?;z+Gjc!$HF0^by&E=F##+s>wW~#&&_axB1Xmie2AMOp_?->rzSr4r$&x_lxzO;L32?(n7uW ze4=(Vy(=0&G6ZNnIqws6bCIi|&HS|imtB-ZYi(u%zCg5o4v7i(z4193@!TNnzQ$=k zYf@<#&1M1xt{7)reeT&PCKFvNyc7y=ofYUJd$fThZP6u8|mrtX4U3sKYj_uG>_+TBZQiT;iE! z)^hmTf<)^h$#9P5!p%*n>=9pkYeUWJma?EAbbp`?KZ)wp3JB-FLD+K%zp6-BOG$v( zK038sAI2_^lwIQl6y3^r=53u|jAUjXG-}nPb*rR}>v0BsO&RWP!Hu zZuXSAt(w(9#qZr3FqyU0)6+O_cJ=>(@D+P82^QeL*h)^J@~=|rj{wQ|cE}o! z*qk4#fglT762&h#WA4z59wLTmV)mDJJr!X~jL6C0M`LzrwA$!?!% z4I8OAnXK?fV7J!v(B)Oo7Qb6fG9p%!x-OvgQVaT7Gql89!s$k)w%c^zGQl?Ux#ip2 zlru`#To$t0Y?miUf-d@3#EPtbC5$Z9y5f6I(KB@!_l6ehi_g(LCJcM1Ts75iRIllN ze!nMziw4}X9r4@$I#OdJ!I~=JVwa7=_vU5!yJI%6GNlJ3ABqAtf2J7-xQe7CilPKY zVs>(+!f)n87qXk+hpL*u*_g>H>2!){wPCSksi5QlhNqwiLY{>C zk|(+z|5_Ec*)q3j@#ywB#-RPz@g(a*sQlz={-QL{x-QD0ob76ZEN_Yi7 z=;v@7)sg2N5&Bl}2dq}Umff9xRpko}4(D3q!-xIPEvFZ^ zJFxPiyo@^GA{L`t3)vSl8*cb#MI)cQC-RR~A6^{r0M6Cy*{J+2_sIm*N5YS@?#DlK zU7nle8Oyk_g&$+HsYm-lB52lUg>$snP&TdR0 zl#X1S?k=TDx3*n>oIxXGD}_I6Y#tow$pu0K5;dFv*kbt_^h^>C3aTS~M# zI>UYPL`)R#f}fR%28?Vl#}ZbjO|#o106)Kl9CTyLo=Me?ggbZ=&>dY(nFCb$YI0wR zi(>6Ndrz$CukZg4dw&@eSJbruq6Y{hxCKb?gaE;VyCeh%?lewtclQqN?wa6Ekj9&a zB)Gdb1b26x&ij3D&HR{|s{7~G{c%@yb=B$K=bT+@+gfWs&)OitnTO^3xuKk&)WMoG zgq&4(bN3rme#c=?IGUBHy2S?pXG_(+dwx$RS2}PTzt;GncwfnTo4r!$-{D}YA^!_x;ke`b|u2kd9 zllfqIPwJ8vJVFYANc^nFz{JGF%Bt{ELir`?M?499F!c*;|Hi#>YyW@$yXZ5JJ)J0v z7kwK&aW-R@eTmrT$43o3LF5cTEMEDuIPEtBQljM}VYG$ti@i$@5Z=E6-0lpUxwMEP zyGBw5EsxW%jfS-Mg-Z_@&wJkdyYXwy0|lbkm?w3YqF<$~^Vz?f#=0U7ju4d(Ye_J{ zIuc&3qR(mdw-E|-|5wdPq(M;x5bS?sQXMgh|CRhF+eY2j{~q=qQ6A~~|6lyS=%8@# z5cwGkCq1k+QtZFlBx$JEM_)(sqgR>dTB1fA4RW$yE+&t!zUI6(2 z`KJG0Zi#<-aKY6I&<|k#^b$b&0Du9!=1DwFwSi} zMsbrrhpV&z9yNO0=U1*u+-giEr3Z&b|J8?UFYQYhA!^!1T;U<>^K1k7gI(NLck!u~ zR<8dl`eTb)H!Sh9W;7ODuf+sigQh@s1K|t)NAe`s0#cYZe(!2F+AylwfadwU)explpfX7CZfdQFTO;@#K z`p~UsS1Z|gEu?04AM@X8ydv>jlu7Y9&vN~DXUr$nADG_?%#RO^Xu{&oM}x&w^-!fK zl4)5)NKnl<{*7^j~}=d}yFLMw5x z{-^ZYyqul4xL^A!{c@pvBxT6bxE~6;Box5~p=Gm?&N@D$w;j~~TXHv@_4I?}-f$hI zH~!~zmLpc8fEUV_vys|zW+F!aTc$-xci*sL+K@DsY_%&F5=a^@;IYU;&*Are9zhI!|}Iaqe3jjuCmhqZTEnlFU0?C+y9Sd71zPB-iz0k<(yszqVr3% z=wV6??`}k2TT(qtPcl-RG;5JH3eecPO6qFN3|3P{UE6$_znl4E2I5v2Y+*zEKEHc6 z_%Y=|W!)L2K^o@&X?{1V{vz^1Py45x!?*0Z)Rzp_en(fFDx!C167G}u_{w(zO7h(P z>G2H$GzS9^JuTK<=1vhdyqh9KAIDRU{k|;vW=GQw;G_d7%&HN?H#SZxjU21xnOqN& zJMT>;R=cUU;xIqkJ!8?N*1#;H@kF0CLpRDdG z`(BU3CP-M{hsuX8*RJ~(x+jG*0%Ba=>zcGToBbm00yNCpp(IPjJk)wNlgP%?3)8B( zugfDoE9#{<%g3ligOa0thbT!Ge|>Ulh#*yh4C|hVHR^pWH7CsS{^jSvzpbThX zL)*MMB58MgQJRD_f^DHZWwUFP*K>2<7yuykagZ!NbmrATasb+stRQLgqegi?w2K$E z(4cne(@%0F(-JN*@ia5mG6&vjGM#x)Zca@e)Hb_%@Rb1FEBv`S3ewn&WTeipuABks zLVC@(Z?go$D%CEXsz*RKes~;1!h)WL^sxO_vEI-kIx2yk>RNg=KY|+n^up_?tGwbq zbeYxa2&q9Q*(IgPocyZ!9jOcTP)yYYgWh0m`3s4XMJwUvUs>L|AY+nUy4UKypKWhf z>jFbu?dN($B~oGU+-4XV4t$@~eW^&+%a};iy8gJgg|L>K{`mCxX>Hd#UvKJhFTl?G!EVGQ7Mf0!QXsBN5Z3Yw^HAFHWbdH7#19yz62cXqv7=(DwSM%?e3OEgjbu2nxn(x+9zpV z5M`%{lh}71iMMCOoq`|vZ3K>0)^~&xFjhF0mo+e%1?{7U%Ply%s+bH&ppNCH#}W5P zff>uZ0gE!~T0R(7eNdj$S!vN+_29#HZXQlW3l3?e(+hKA+Ko0n$A^s5FE>6($E&VC zG*opMIS(?3oQvihk%0`^ioTiDEg)+7LX1`KZ)?0a{KK3cVD&JpVRma~X5;n-5F0nq zQrd4hb&c1V(NWbG^uD-GQGdHj+UAUp4>X0^^plUfd|J}EVzsh&eYA|nbh6hO^=i>= z;@TfAHd_-muiA-^uKV+GgZF^#=upKaIb*0MlahyD7+j!D55j5xO$i?$Bttf=qBU%_Y;SpB#E4+gJlENj??8v zxK7G8x7hNG$jV8-z9poaZ%Fk$1M2Ofe99n{!UOX_TF;9PQa2z?g85@R_|KA##Fv~u z#h8*q4g(x3xo? z#3WF{^AL`TF6zUg!4muA_T_SFZ8voqW^?+N!@scK`<-bInlf)uMKl`sA?~kXfo}sg zzGR!F9P4cqZs)?Po~3|T9N>@Z8{v3VvE7F8!g1<%3URS%$=j7a^d*1){XW$Ylq)F- zTZVAksMoFzOkKjc+-`I_F#zy#4c8y*;%-03oVlOy-1i_bmqnIhH6D0xbR$@^ppWU8 zi?Mw9d8i&#&URv$K5rK`Pw783i5Wp~J2X@?$0Jr1ovSM1&@e!*Werx-qno=7-fXun z<56 z{#Y@IAF&e(+vOIcRP{NN>UyYh3+*m_%f(;CLw*en-SN!h~cy*j{Se~bgR zaJSJXN-O$$xn$_{N52H@#W z*lP`kSwHyAwF~XKpnol;y!mM86|xJ({{k%wt?WC>#7fd^H<&Bv0*&fOH<+S;ON@`J zVth^2%+Tff{N8%h(x3D#mQoQFdk4A$Cfr7Lozb{0sA6*#Ls%|xS}hiHsZu5jfb`DQ z$Ra!DfpRzmjppll5M9d}9SF;xeygpWVVTTrTR49RUdUaAso$p)-{aOx8A~kCZn9d| z-_U}yk1go<5?nk&b|c!|@Y!31^s^%}^he@^{ub-%}I z*D4^ti5W2Gv6ZOoV;J_U&dP3QvF}aOej1r}+Vm0z_OeY&S>|1OxnIK^(8apUi*|1< zJMC#dR-yvmpd!%zU+uo))mr4@{u}gunfm-LG2^$LV?M1c7~meIwqk3{FTw_WNWwr= z8M#oH;R$9?Cm}n;X1|+LRliY7d_Id)Y74P|XOHK-soVcTQH)?=ASC!jhj2p?senFFr8ReOo{X3uinj35T&sW4YNBeo#jPJ{sN$=3&b3 z?#-zL~z7L%0JQL ztu0ofOYv}Euy;y~E;%KXx7)wPc+Ugd6>@F1?s+*w+pI&@cpKi0$Zw}uQ0a#Zj?J>p zS=$V(4l(yNNR^QNP_~J62Tqky)rp-w7|+#y>FkjR-$8ySzr5gjL)e84EvHgwSv#?)q{yWoB@nn)!LMAh{N zQZVONlK&BTZhHP!L1cfZWp?FlkHrY$x#9K zZ+OKj1=(>|_dlWo}KFpSr5SYF5+iTY9qb!OEKAN*}K zKrff&d!;r#5UFBh`(g#mdgr@F6sY^H9j#JSbvJR!$|->0Zel$Cs-=ys0&1Q+Qjv;8 z;VO^&c)lsv7+ZdnPm9uheHg0mPHdBy9qsu=Zzq-*x2bH0VbJ*dou|*b9qRXfGoWNR z8Hq|<){_&oO{Y;941r-xExcm=HKBh=#BME}hBCUOIi|7J+A>IVc;2deP`&WfV&z)| ztBicTLq6B>y}Pf|hIVdK)OfqFyItt<4mzr*%Hxy}0r}{sg|7x22fcIo*vHChJ6)@- zu9|tQ@tG6q{;hjA4|ee)#{L&hJ86o)_Lduxh?VcBLvg6P-Ag<@*N4mT?P<)C0nLNv z{p@|i&VtMr(PsdGTe@QM9CFnX>bdTy$;8~0+{Cxkw+crIM5uA~aeguFib)0{Z6}l< zUT5DQ?L%Mgh{g8W#ye-Cp^d-tCh~TnjXY}eMEqMD+YeM^WhhMt(?hU#yDN9DOWuW= z?x%W%pzG2dRGsIq$SJ+P8lHzE3?9>tp60-bg*l{er1pv!=tHg{IoDz`S##^kg@aB; zYzVs>^tofX-_GX5BU8TWqf^xi<>n+DP&B8h({PmTh-X?Bz&XpQ3#R(RDdv3csF zoXj=%Vu*I$Ey$l=WT&-y9uw?>DUo{SQH@*NL%#54W)`)#j9J_{ya8&+@2xYWYxd}5 zGoIt>l`2IDcs#q>i4(ti=ifX%qKN7C=oVqc=V1M-hPgw9(?g9D)iXOo1E?*bpUa#X%;e2GgVJPlBnRf z9lWW6g2b0Yhy{>52K`Zyvc1zby;({iP zn0Z=6d#Xp3txSW{=z&A%!-~c;28s37reT$GYP9n9(<}Ik#nHvY^gbMKcxINVPbu)O z`OCLCwu*h63_Ln5$JWM7>NIjk*iH8YPib$9xCi~__=v!J4?!2PX<117UL);cEEnbx zJt%z@=y*v!4|7jJ8jWXDE3qxz+2ws4z(;-xr|tHFY9C$ApoGHky*BfYh2Nz!Y|c0L zu!NzA2_DhiTZ6kjfk{f4&M8dEZ*OaqVMBi=`nn-sd|gkq--h6A zje=|_UJ;5t*neRFO6j~Tib)Rgh%8tzfuP!r@V%mcP1~vmuIM*fn37mJ5%j8ll2}jw z-E!M1saI+LP>Fw$o&{OYU5El?%=a+Q;cx&4!)psfNb_Dcp{&9MBUjb2-UNJ zzikEhvz8#dO*^ao8j4zEMBBx#2-(1&&er8+wbj4Qzw}wse6N#G|JZ&Uz=`~Ba!Cj3 z{bTTaC}_QUnOj5f4a9i?b)`~>-XF^G$1K!l8t{lXHz%gAfN|$lY}g843y39KZq+v# z!`t9^lM3V*T5eeWMcN@sP46vxti+=+!7JBvJ_||PpXkrmWI|)sn4o8YhydSq)(g+r z?uG2B-%k^9WW#ND!)g1UW;G^l$XJ{kuIo6wH9c zg}2Q$fnhF>^7WB}hHlw?`UAsWXMufVB$$-H(PPqAA+js8SaH~ZIC18bLCoJop`_e> z1LDuDxLb%6P%G%Ofb!RrhyAImH^8#%gat&ke{Y*uOBp5VBm=I%(u^1VzVnktiiT&& z65>gXTh?}~xPg8`O8q|cx7%Pe^Kh-tL%s8=SQ$bjBu&CG1c@rDs!qw7H zqf-r5;FPv^m~8#t{akCrpQ@o zlP^=g;&qv0Gw&b2OP3PlpeUx-XHuC{FT@;d!spvNj20*$#-)3k4GGX`h`vq!$=9Lz z*^!(V>cB%>e|+^M5qgAXJG<4)6DNo$qdkYv^Y=W@9qEi|M1}RPlL-A7juJ%<(qch`_LwF8mH$5Sbe2|g+rP&6`;F!6wOq+V=zm{UR<=~#tk`i|)5PYU z-*q9@40&f*!(WT*ZzHH;2Nx3!fxe&MxxW~Z3{5t`4Q^0g=in6G+;bie?h}w@F)v1P z`P;g~_ckKWa*{5LG)>Q%1K~2oCW64LE4}OnT!1=5xQOZCH729i)K-7fyZ0d|vD&tj z+<((o>tohqCaG=>R9UDM>kA#;M**nX1IXYENXbP_o!9hNY!SJ$H*?p4Ylj`E5@FsD&&q2I!Eh2jhj`5wbyspP%g{j?1QPs;Ytv+sl zTmC~XILqwrwp%->#&uqIGKKmB#dYmBzF@nG>T>UEFY(G}9!{UG9vBZ@QqrDu2Zw)j zFA@}vkfB~sO)a}Uz0&8XbUl+?Ix*;0BPF$;P;$AEHG*kbDrs*x9*Pas*;uMcTU;C` zUtk`og;)kB=H)j$&@tO9ug*(gCqj{>nsE;hkpKS+nHFipJLl69H!W2S{P_-AVpYvpGDAd|X1;L&)^pG??bE%D4|CA|^Dwn6p%>^5u3t;o6dAUK~ z=jU1D$Nr4mHt*IK|9pwMp&qOhg*H69GqG110+y~?zUI&5hfBy?^ZK8?*ZHkz(x?sB zH@?^p*duAssl*yuzy?lWjFuHyuZ5LWWu)L!!*}hwJ`}*a$(#|eE#Ya6`L2pN*BmMy z%i;Nqb2Y3^!+L2=i~aG~sRa3ze}brIX(I-z80V6b)5F_hoS#sN9B)=O{^U_#wh%^m zQqd6)F?ua2d!ffKQ6?6Gdgi@HT!D=oif#UKKeC$#4gBMCt$5CsAH^XEZ*J}$f5zgt zm;TYJ<#VP%A9vu)x;}5CB-=;lzUIgT5z^!~X9yewy6Fx)2$2tt_9Xl9I%Kv=3vO04 zA4Bfi?soX3o&k77nNM@``_)!1S0-?GaPZonj&}BUAbsW}^nSN$CB&;obDD!bJ!%VYugXPD-z*E0BQ!}lp-&dUI8YP) z_B$uL8EBrs%RpuxXS!qmqroH0XU zkiZFSWC~>Nw_Lp7jFBM;7UC6oLBiSZ>6NdGh~TFmrJeH7UQ`KBSJPeUU!C>dBU9O) z2%PFVs2sHvepN}7f71=Z)yn2=Lb%Cy*w)_i^H2dbURM0d$Wy6Br9CLF475y&x%?-x zL&*B!B!RxgZTv$S$vzrDTf|It;pr<8{?MXGWUO-Q^MZLmTNn2P_Y2{BKLnM88w zdcH)HF^MFgrPVton#q*?Z?*~fa-<#9KNT;9VreIx9XKADkFJiOq3mZFZs)~!$vt6*s)7ed)8>=Ko7T46PK zo^28z9G?j(j-0>p$f|SrC|0R~&+tk^IWeidd>F?v{&=tC;#wcbIS(z@c8S1$u70_L zE9QS$r@;b#2YR}*MsDISae4tvCb^y`XBOOO4j=;4m1QskG(mF3g;RNcDI||^1B<0B z`N(@c&rju41$IBpQh)^Ol_TvKce6CDRsqX(Fdg2_~-;lGoByd%ZYxQj>GySBv zj=Df2#y3B^q92ZQF^@Tj-fXX=Du=6Rwhc>*G2e(_t{vF9>! zv$@bWPkWGJU1QgP=f+{PB1H6VWbxii>qvwV*b13tOVPy$e;Hich2Gj2`EB1F5kDQK zkv3>&vrZVdmrx!Uz=6CO)h7P=J8P@aZbjO=pnrW$P-YpmLF0Fc<=-6$P)`_g%Ub{8 zX_1%)X=8IjCv#|5UNFCv{rg8w--KI)?QlQ%N5ajTuT8m)t*6*V%gV-&z-_x(%n93P zajq<;===^M9%_beJ3n62;uz%HF}Mk%E)*DEFnBY^({z&<;9={U^i0g@)=CM_+27Kq ze6-TjPD15HM$z1kCPfDyG*2Ac66O1=%aL%=27{O5(oH5|ACd6~&&>z?yk|~$r}P^Z z*|U!1Dbxb z<}rE>sGx6m^ARkx@pbGRStl*U(RS5=W;NFS;js{su} z%EhdgHf7w_#*LLp+k6wX64qKzHm2e9EG6MZmWrhp(IEn8N=A;9T z$zT3U-(d?!MlZ*jMbFRg{(4hJ-5JUB&r=oJ>Ccr#5SX>zOJd`lPIKEz+78~zVH92N z#hPWS3pp;NpG1=X;8?+zO{Mb@T3(#3g&2>Z`tbx`8=JobdXuFV*tDMSb)#5m>z!Nu zVtWoO5mjl(@9gcKMO0pBxX>z|UMNUZDZIh}8VFs>50xmyA}N+6)?_dx*#1xqAm`Z{ zPbcy0xUDG|c)6{=BBH#R{f)n*QVu(JxNlY95V_Yr62wc~h_OWQ4HsTL-_iB;nRK*g zQ~eTbdoWz3gRa~WB*sePDL@Zw$Bf7b9@GyC$Iowbg2 zV@biJ`q^4r8kR0S{`xL~apG)?!NlP;yJ(JQRyhrjL^aRf`Hql-D~58A-g~5u;q51r zYhMd>MnV0V3)bbh!^?&B{9Gesa!MB&gD&u})^^qgpmgoByIcG)MAO3bO;%*<`((LS zZ|j_Iqtt_Ydsk7f)M0GIf(ii>ikNx|4!9~-@TYTGdJKi@w*y`KO?j66(|I2AHTKcO zUI_XbCV_T44Y4&N67{KBX%daX|0d^T zL@m2wJmlezZhvTPNlfUrrr7Ty<&{ox?A5w1de~8lMxVF{>U%CRdDXcR*#B@ zpc(t#R&4$`Q7;`UN~A3s#Qt>3g_tsUf~Ir4N3MvY4*l#mN*n2@_#zV2rz7}T&fHxo zhZHULKjm>=^9~7GI9ngZj_b(KA$QmVz zA7h=X!2>shP(;mM%3gHCKw250$LAVEfC`h{yb|10om77KC$5$q)#^A=JK4p7^^ajy zLxab0=d+B62JJ>#z693D629;V_g|5lDfM2-Gmy_(C}25X)D@<|_lz+qiRWh6ctMU5 zqFVF2b;B!qenVPX5(CN#yX1)!z^D2%KDtE4P(a~bdj|jQs%_AC^B+fb=v%qs0cBU+ z%XTMw|B>67WT|ZTEtwc{B$nq5*1}}5-*RM^Y=)hY$EKu*G9n`Rb4ejQ9H93h4-*8j zrXMM_=5M?I=Ca>8qk~=Zpp^r6`l@z){AN`asd25W^~4|aK@?x8J4Q54TOFtvqFx+# zhcr|qaYtHjd!r(C`|Rk35ddnrljXQ!Ii zZGfWuE?4XJ!3}(DkjPeL+}@SKV{Ds(kCr_9L04(UvS|9HnDO|T3hyB>mx2wv>2oE6 zm0RcNeN^Xr2KVf^qRaleKJ*tfAf`W+E6VVY_YzOMTd&7`{Yase?xt6`z3 z%f)_hC^-k1U?7J!y-k?TbL!=^WdYbLFtn)cG-V>My5i&6 zw_HKcc^D~D2di_@5q@gW;!_BKht@1`mh2&@tBlC=b2?i1A;ueYLdpMlWplTDkda?y zw?$l8SI=*S6#I=*LFCe(jw;%8en3~bhHJBlS4RS`vo*xp*!CXVc2QY?!C7LVwlY+d z1aQCA`xbS+Zq9V0=V4(e((;o`dnB%9@QL~tn>tD~3N|lKyC7-1buzCGYM}d;^f?|c zu#eey<~rQWngk@5k8svBK-2*D6->~*$n!z`-O6$J_)>|-QvsP+_xIVICB2Fqo3Z-Owq3`-6LUt& z>?1*Gk8>e>9VrgRRhxO3+Ucan10@DqySm^imb}Aefj$OXy;f@Iv1zLId~w9+U2V}p z=(Qc&+0`o`N4`Pv2c)#HFtFM*{sV6K3q)sk?_0vTlAl+#s%|IJ+w(CAOhB z2*XACF8XLR5Jpd(?ZHxULHNV3j7AdK>G!4o=$J{X?f6KA3VAB(8OTsWFk#kxC+EIAgV1mSmFd-*jcP^nBu8YTmI6s4eSXJt0V zPlpDTJh*c1#OyjI7(>}4AqizOol)>%rNEDv# zao6TQa$Vaj7!(bLRQWWtpSrjXaq^+Z=szHRcT)dsH=yn0JEY}A8?)B+SLo~gVHS2Y zlmTBUTLTyI-1SOUtMxmdPmI_UBKX`k+yS?=FmZM?P@0G8rpecT!y)Ma+VJM65$STvp0Cbsj^Zsl_9Memb@8<=l z!Kph_h&5A)KQAWO@p9xg$H&*A@`|Y%_jc7hzTL|F7M=I}akcObHfAG?{d%;TP!g>U z(nef4q*KpR?Yvcx!|LUy6@c1{y}E1`b;~3d%NaCrn5|80jjPR`KS1NnFJ?Ge#_v0<)u~JB|{B-UJBS8 z_4sn|Sk8=(jtl7_0^drB#Y{`2?RyQ^gq4XP4<>y)r`!lpH_h{Ds1W~;JM*605;YXE z*5&vUX9*zbfIV|lhm>Q>3lZTPk%7B^s`*@hE0bp1n;ilCINn(w$)sH%O8WFWz3XJ* ziCpO`OGUK~5N9m_t@cC({foK#;llAf8w?d0jBe=JGtG2tDSM4&LebRNRVsXej+!|Y zCp)d)bIyU=BIMz?C0_c&htJhqS=15Ri}rAT`}>hL`0ThjYv|kCq=De2kYo?KAu41$Ii#5NtP-*;hn( zXSp))TE5BYpAM;24yHE06aM+{bBgo_R!(H6>p|q1%hm%jT7enYcdJQ7(Wbi`plka~ zw?WO#XDc{-f{Ce`*V$Ota=&JKGn+rT8>`bpme~(-D4okrSZVm$YYx-mJeV;NgVDcl zZ1vd-BPJv**a5`1rn&y-Nm9j}{Tw&#&BDRk??pm7Zj@w#26*SRqA!47x0m1Lj7eZg z{YYzV_5y1#P4e9m!3NZgpQb%QL2`BDwK%DVIElb^>?2QJ(_tAaU&CiV_K{tT3y{Ck z#3rAMSRcKzdF<`sjXqS!@*h5r-|*njdq#gRbgh3 zO$TMb9nzObTj^+QFCb$g3$o+Qf3MxQtZu(J+jk_|`ws}NEPY!Y@>GV&OfGZLq1{FJ z`ihJGot{+Z)mq&(+R4aAqYHdRY}wWfd%f*JHm8r02yf=Ki<Q z7RAPb9VDt6&&>P!j87cnpMqson^+Y^V0$VRZD$6eDMDNY^wt_4a&ul4#kwIj!8Jp<`Uh^+k|STC^k zlfRkeVtS#-W`YViGy}Wyko3HX=8ipa!EDiA=jb7UZXjS4nVDNW$0gh67wH#)sAJR{ z8pU@0rHTJF2eb{$KnrSBL5Sf{<-@&CwzK#6NX1#)44Gip_L?MZ>blE;H1C*yc z|J+h5*up{ue~w}rgwY{el|BxRr%g*$r0H|t9u1-SpC8WI%3>WpAcCw~NMFq4A(*7# z_5P@a=}CU6Y^t0|UW}}|HC*zSvY>9?76J>tWME?Pw&exFNd3q%ovW4PVWxam>STKa zI+KjPif_)VT&ym3nF8=`Z6z~C^mTy`MIO_&#Ojjv7%w!@AnXbGh;7zPY5PE$rkKpD zMML<6Pg$A;%*)l$sT|L6MF$#?WZcE_U~8cx&00Sx<_I}X^Wb^745SK=^M z@r$(#EL3veZELL^blRCK{d`v2ZX>PG=+TA@|Hx5Cet^4H0IoJNrf{v`o@JQFR` zC)f}iR?y#;oSBYZ*dV{giV-q>u*!q%7^8ldWPRUcrZT~#o;r;bK!?NF`pCUh6e>S_ z`!H2sV(9)dMrZWZO6B#i66PyAtO|*DsG$c(!^(rgf#+bibxliOtbv-Ue?9aSB07$|G?c;AA z{QKlsFX0r1xA##E$5I&+3n|QmS}S6wHS(^1^S$+aE?L2RohKJqLdID*lEE%g)hZ3T z@O-a-<8V-lbhXd9+{nApoaIkc29D!mww$|&u8YpfK2@TUR!NpeJmxsX6aHgQgUE(Y zXW=i2W90NE1V6{yO;1Dzu4nTfprwG|y<2Km89LaCM0oT(UgrG3)R>pJ&`q^;@M<$! zXS+U)TTF@ZhwLd=&inY7a^CFMuoA|WSVn2^TgC`F`liH9VgvS?%!s{I;^yQ1CP5-3 z2fMI`)vGt$*b^k{!`CJ6eADuHk@1pbkR+!@dy?CKemy0~{rCV(ou}(i#49zLF0vxP z$$9o{uVHKZD;f%(Oqh?xTUbCV5iuVvu9or5) z(Gp@m;wVa63r#3sRhcE9sY)kvx!PbQ_^N<)DCbzl)aN0mGFfe4J7SL~_hOl|H?f7w zyT3M~;P#^BAi&}>$V~0Zdt*Nc^_w30#%}pEaiO`#J9GrfHCgC~GIlNkzP2g9q|0|K z>0Y9B#%l1PEX7b=96p@h@;1z{?2ls???VmaTMa@$vGDz$9Py&1FL&Fv{4+zKlKuOU^v4;j_fPRL;XA$t(-KR~1OztOGXo?7ay8PDZQWex)k z4_~+O&4CVofEx*bcZ;AD5jpm>J+|wFB1H%Ko7~(I@7{lVXE8b!_D#svZy@-pvUGM# zau=?|L2P`2rdkp{RO-*vT3^%=h{BGG{53w;PodUTF)^*|uH|Po|5yhA_g~ltZanH} zmHeE3mY%mCy1q{B2FTS~eQ}^4Vxfd_dfSu-bs_d+JycT76g5p^!=|`eOL($27f#Wx zOWGJv9+O2)>fa84-?j*sF*N+8chOsF@fLP?+NwX`;o8@Qnn5)={?q)~JWo1?w zMgQ1a!NI|$rKNgme~5#M1Jd{z>o=0dX`X@+M`RVg_V?^MFw}tDPW8kv+q@#DW7+6P zWDop&QSKTlS#9fQCP8Q8{l+m0DTXsRF=t>2-kne_J(5d8iM#QeNOZBK?nbH(&4N%| zSk+SN;ZUPNvEN`wThu2Ud1LxakBXg@%!ijo;b6*j8U8w=- z&mYyO%;g^KBo-ZjveUl{Qua&mf-K9vWnp4oUCE6fS;sTG8BkU~vuhgYH_qULApF3q zyHfN@sU~Z|dJ?Wi7ORd}9XY1T!}=~l1ewCM5vshm8PuFtUbU?61#k6_C_dbUn)4dv z@N*ts9==kG2ow17{?@npshtg-Mz$ELKE-kF&$v3F^UL;Optz#c;zHB+(PSz0^1v-u zKCtvT$H6P|%wqQ_xT?!vETd|uLyksLaxxJK34KJ~`-lMQu)G&yctIhsg|18YtxqtE zpgD{t1<+&ZPVaC!YVL*w*yAE@b~9S?gOkkqE0piE1`p1eovmLbx)oq@&*}pWOdGM_ zNbi|$4pMPQsA+?RKQwKGR!z{tmf%9YY3Z#DQYc@!dG&uWS*rmbWQ+xBW&s~a-QN1j zf5>fJRjgO#JH$G?QA?ZhUQFu6H_~3RpM}-ZH&#f|{pJzL7RhYD7idzvXh++~&ZC-t zzu866w6|h9#Uo&z=Es+Q185u7X~VJtYW=nC@f`o9<=k z*bk_-?}jcH_Fs07e{7hS@9YmjO{)I$*sswLkwI79dDVbEOWDs$^6$Nb+y1NxI-`OE zs-wYzHz}+G@8wCdceA^#EKU;3UYqZd4jPO((%9p)syw6C7j*r}Gc`kQ)H^hzQ=`D?1{WN=eb<5+wCACy~A^GS9i?YD{$5pCSS? zx1);IZu<=SwKYHMKH0)uh~fS&!vy~!H4+)Bui>b<&h+Q!4(D9BxL0O{2}qXczJ8jz zQyCa6j$R-Cjhv7z{doEp528|QfLkhX(ldxWDe(%n_hF*#@r`XXDh9AU!R92uC~74# zR`@J|s;1Zx2HQR6UC5(MBM>xq_+nIIxaiuqRu#VVlg|0nJev~_sZRYroJM@tLWpB| zuEjpSb^5~FGfNcH5EPlR ziNa{z^71(kcGs>P!Uo2s@jBe4W^l?h^uX+&X9Nk3mpFOfbzz9PX6X#TvN#K4Sy+6r zx=RUHbF#>}`zvy}I4>%H1-c&y7IzW+hmxc`gE{tD47ETLG`~g*f=_aAGUH#U326y# zS6MSdk@zTbZ!zFVy;?dKmB?c57b|JEmdSS!LVyt)Ztik(A^*BiDe{Zv6SKsT5pQ`; z>}TJn$@wN3_M9shTsC*jG22yuF^At%?Wd{#1}%bNG{W&?yWw|w9gg|%z5U})%r_pX zEzHi-f92?MX^rly@{PDjVIXKpaOD+ii5F-gD>&Y zQK_;tkPJs543RpfC1NJ$do$@#;5CyQs(YL`lD69Zz%GC~9H~%%?tdvyGs zf1`ZO@XrVkZY)(Zk2f#S^wfUta%#Mzcrn#g*u&~ADes`dVDoY%vSj0;kvv3!fGkt%V7C8!V9hpPWUcg=JJW4mTMpe6hLG{=$Pn z?UvmVGH}w@cBV?hJl`>@7=*!cZkf|6GX`{;;3Z|us}?ir^Cw;qx_y6twMa2H0P zDPtuZ?MM(9+yBaiZq)zxF2+3FxSV_u;en{8ibK{H_{u#DE%#mM zRJgJ_+3^it4yT=}KtaU~ba~{u9%i`pzNty>i9kIe__*Uc@$U5 z4bM@RgT3qcabqSGbeIuqFUF74#IT0}<}UNkvCqMD^zXxAjFjvH2gPN~d{;pa$10j| z^z1yK*6OwCfJZ@_yFukeh1Iu{KM5s-|AUJEsy0MZR^?Om_6@ve5Lg+{^`tpHCe4Sc zi~5hB4^zDPb!H|di^NGv z@r)}QvO4tV>9M+V$s}Wwz*g`VjGQWE*2)Zc&v}$akO&&%>r^cet>b%R9zBwPH-;LD zAh%n6WG7Fj@L&1L3pazvwO{8vgqwFXN(_pawIZJEzCM2~)5R=xe7TB*^75h?LmkXVLrIEMhaH%ysbOuAp;ck^Z8)g%88)x9&+z9i%AKCB9atI?DWG` z!Y<}lAI17HLL<$i07#&sTrqnW%fb(37db256wFdWWr&%{;B-(}iI;WKyj6kbdCI&| zNi7}F$Mx6gG1AI^z=HOBuLGH?2Rfg|R@q$DD)yuGYZ!Fl==zfmAkY%W9`dqY2IXPAbBTn zWqice=m!$mCI8-h$8qz79jGPqAkoVb7&vjo1}9-+;26E}8iuYYdqB`W{SAK~AVI;v zO)A+P2i>lbMgFcV&Vn(0;i|8}=~oQe#2I*oj#r!EuU&=8Q5&_^xbWCGC3NsD{vA?4 z_j+MPcdoF_^hu4Od7^1n9frOcQEKL)#!q7FSUD@sH=Jzd8n-Q8p`bL2pnVVyk^U)4 z?d)sp;ajp!hRQp5#m~mwKP6vzn5&LbwItXQp}!56kvZin>#NKOtdrMf-sM?Y=R%js z&)RZVH@VI;QGo5V4<5Dx;NEa-wyclQ>{sygQo&FB^r2tDy2*?aKwS9{nK}0@^A9Z@ z$YqJ{CdneHKH^M~vjXNyf0ukmxH`sIsmG6a!7x{^q83HzMjoa%^R%Tm_Ip@DcC~^n z5;SW~u8=CbX@!}oUcFk~0VNP2zOv=#bW-45usB?n4*jVQn600j5DXSi$!1YWh*q`l zUD5B)j?lh~gAT9VqwNG(VgL(L+!W{g2IU(x*O`A~q%o9SgsAX^MfHz!GBnrU1WMS_ zzxqG8d#ix9x~^R`Sn*OyaVafDiWVD6!>`p89_1vy_yEl_U=?V!3p!MdQE}#D$4S|_WHdPXi3#E%p1}v^3s>doJdFH1m=#j=#-eoI)y{kOi52=5%%jnrs#y5=6=-i znF;=c&+y3*Z}` zO@CO<&oU>VAAPF~(SGS0*t)g}t!4a4iXe@N*|xlnsXGZ@KV!gQq6vj{O%^w(>+`~U zdwW}sO$Ca=4$KmLv00X>Swb{lD1OTgi0acRc|2;%0MKI+6nDpIvHo!##P1XrWv8j2 zG%laalC)5^yu;Mu`K$r>qlEe}%g~l-wXwODp)V3uwSxfL@4ly{phuDw@Aml{4Xi}ViG5zwXfJimMb>`D!-!wm3kV>Rh>TDe=L&R| z05H8XzH;pD_%x9Tyi4}|&TeDVra`?;B{{LZP7TSQtDgc$ro=aaE&DM5&c=Ryls+MF zo~5u}5o$FukLr~P^;rd6xme1IK>zu1Wd}?^?RU4?RPmY^Rqi%{%GeF(*18j2e7z$p zk14IRs$->bx|gyBhBR6ttg9@Jj+skF3KeCM5yhHJFC?bD3Htq5sJB+a@+l($ISGeV zme1J^0H4O?3(UC(uYverESv>S>2qvfD?7L6dc{|;by~V~^tcyO5t1eA?_QR+7@zJX zv+Sq6*89_vqPJ2QPq|)$_fcR@-6R zphIZUQ|nCq@MNIFkW-I#?cEkz)MtB3;H=>HF!f$2)v?q)kTTdA8b5l^oqz9`fY-ms zLM;d&p3oq-2(XDZ#L$h646th8VfM!EP%0I=dDj;=l!+rBxXET$fSKlIJNJi(s(D+x zb$r@7dvf3OYY1ZwAJVD8kroGMu)ACUv~ls6_@D@g6hfsJ4ji2z$XiY1WiBsqVc<#< zGF)BD#ye47uyzc;Hl?$(rTGUmfh*cF@NRl^@OE*yGM>8y?0;!T1-qXJPT#f-O^gOonbV*K=6LAwjZjwnQ($Gwe!k1wbRXy8=@X+ zO=)oevw4Z`*xUSC0?v)?bhug>+#SmsGBVqYRPV=JM0dHYF>4~BAukznvLoDkuBT7 z2XKDQ*zy2DZKgW)hD9<+({zA1ti27?g-0^7Dig&_L#i&$=?QcyK$4vn%u-8^TOch;}6mI5eq2H_A z9%|K`#ao7zIB*t!L=+^785+T|JuLOGplnz%%LKXYI63M|-Lq}B8CO*1ATP^+QrU_CRmUpI54G({2hcbMcsUdeO#p`776$->13sO4cYQV@OWf zv(aPlcqEu+mg`?Wpa2_V+JSQgNgW4|?9bM$X$y~1$4Ab97#V!}ym?-VGCDwTLaY2V z*ATn;_WjOUw5XUTpUXAFR@=yrFqiRdc*%k^ohe6g>|ucf_b zeqGzCxr@mRCK5&3|xoG5&hwBeEQUxfOR9tK=4_s8#mG{D1|wxvVvn z$tl1q#wVO_E|3+jotw5|rosEqvcBr8V77gyyW^CLW=@tEnH4!nRRsHC`M$h1)<7nb za@19lFHV@jYzOb9FRHdKKPw1FM&`1Q+?jZ@6CtMGxX#1eEh%Ays( z<@XTY(FkmS;#`-iQKD@IwJtL&om|Z1>SBg2@F#AwrKc?*;>`!NDDk<0c4pB>YT%pq z;xd>1#bl^%O{6N(tA6vEFG2g_tzuI0BW?`_7qwaZlNzeDmmyvS+%}b(P%Y6>f#w#a zH-`q+(-{f4TRU$WzPe2GMFuZIm_(nd6))0&Ak{Q%0TKLCjs5)N^FbslHaVZl)Wa4K z4TCay{f#9yiBB!zV=V+#xU!GZyz}{e7g)DaeCol&&Dl(TsWW1vygE-N>he?A0Lk&h z9MVfs_Ft9CQNcWBRqRWhmQPGJfEw z1H5OR1=lPwFi|l3j%uae(7J}3q*47be9T}yorWv@%bdW;ZlyIVB-5ff0t&bdg%IeGt)Fwf#bBxMoZqTlA@xrZ>g&9;8#YZO)nVXyGob=`>b=kWj1pjLG2>a>RECmB?3?rpgDt9e z_8SJSC<=!bQVd{ zx^gAMpYLO+h_uL8Ey>_j1mn}kpX3n+FG~kYS6mIC(5-d*3f5d?7=+joNxK+`H?}~)>^wbK0cGIe?iq=w;G(d@A-AlVpNx#Ax)L3N8N+njcK)-H_8?iF45j(m#X;s3 z@5FUlf%QcW@ij5g3pW)TEz`Y>yIdPq0QN+0b-P`~z=y{vlHavDa6o<&Jb))Li4R9{ zoB~sl$8SZ_;@l##f@Z7{_OX3>P>_{-P{S9cUUM=T3#Oz2VesuvaNvU%(tw$l3%f!c zyj6&_3KW}Uv1#~|HAB^m)$LB1)0m#3X=hb&`td@if69c?$}K30 z-6B3iXGJHb*pFkL#U<}yJtjCOVaQ@}c#*$1e+xRVxj#95r~i{Z(D)$}QmTx}a9iyM z9cI7I8t)e?Idom0Cx{-Nr%HuXxKL6x^V1a#))R?+rz-H6&oJ*}CX#taCsjT=9z*i`l{)bA9CrnG zp(O98R79`-R9;^BkIva37>jqrqT}L&pfBaAX+%V6%Yh)`M165@u0rTMws;xy9mN|* zZFji39#(IRIk=YVu3~^y5ucErWa@>NI=_iu)#11Ik9r3j3Re!>1PUsn7je{zs5_;~ zMTFXS8=oyn1(nv$3!!=zZRq=~TOHo4aUlaqy0A2oeX()>s)2|`>}T`W2-c8$bzX3> zmv+Iln;&~BMxxU2S5uBzs$bLBZC^JxyDh;z4SV#1+rid9I7;lMUvGO3P4oVS-TGA# zj?~uA_S2JSSWq=DE_2ikB>G`IewJPskD8k?_bz`L)WvoRmV}E@)M1_ae{Tvlfvuuy zXoFwz)Q=|GY4si7L}7YT*~rQy%Evqt(3N-KHKlqfm1x6f@e`+NMGtP$pkFazJ#CBn zh>eT$^7IT;kez;!4ma;Bk`XuDQcJR1B^LW4vz@2!wqd$yxPZm|&DyghUAkL(8gbxA zzJe9-H@p)OQM@>LBbtXVD<`+Ov_wt$w+)!{FfcFx79)Q@QX#4c{O#=_fZ~HxEiNp0 zJsrkzslHG5;OMveBB$S4G#+Jj{-^oUX@OBBkXj763k@EYRF;+h(8lHNQfzw3T;>k) zG@pI(Y-=4((MUtd^*=33V}=XKPTY3-l3AeDnF)rCQr7UCFIpBU;r|@4hx-Oa9LGgt zra?#_lA~U)*=QKA3I0SmdHGLlh**moQ-0h05C7$VE?LUi`~UBaEVoZXVk-uGZqNokc4R~M zgN8{^Lr>Ym>^IUNnt$X+Oe{wJoecz-(VBN1^AhZP25eY``^EZC*0=78!*}P=krzX$z`_QgnHwz03E~e&?(gxs_|;rMl>OQ(JM z9@cCH09c7TO$@im{-*tBV4`MCsV|CPwJaquc7%rK;S>WGK>u?l-pZ;wlrCclrr+HP zWNo(o=gv_`m5)16=PI&uNKRGaUh-=we9tK*Xt|-C5};1m0*$tTIQ)dAs~zCpA>7-z zf-#=Aj4g^fz4|v7Kn%m(km54ve=)IMW}qT;t}9EYj?sj&#vIQ+M=#!Qr+}V*&v;)2 zcaU@Q87*^F1bPLDPTQ+P*9}g@%DVoQ!vt^N6|}UaiQ)a9X_VswvV#qE9Y`Phd9S_y zzh=Q+bI+Mqa@p#9CW1FTr8?whER-5xFXHF3x5Vz{;nHEkty<*#@3U#{zeQ9=MMp%S z1K_?_te{u_-GNI1_7k6skj{37Y0l1=t_NN<8Uh3KH+#xf+;o=`05aOeuKw(%ts z)>EXR{oi41-J5I_Y0WqKnH*n;zOYCEuV`^rwW9yO zVtrvw71Mj#)*xbsEYmLIr;5?9&@P)fJ3AX49aSxfAY~I3y=UAFOE$vG-CbSj7pbhQ zM1B7s`ImC?@Jz0*uJ-?J@=Qr6Wsep=VD5wDAnp6#=f}VD{D01z|4(~nI0IpC>S`7L z%Xe#DZA%V@uR{kp(f&O_LMIAVp6pfppFeSmf&R}wYS^)YF#i>S%%d{T|4_U zasKZb{(n>V|8EmOXCo;|g09z|){_BSsoCG{HRgiBgP<}$@5*-E>E}QZQ|&1{1b;*XfqQ^WQ6P0* zbSpcsx~_b4xkeG<6%Gr?Yu96ZcC^sq(~m5~$){Oz!wb06@w6!=)Vk>;Rh&h*oH<4* zd~Ku*cnE=N6S=YN=hQneK<>}KPJ0h#zc1wL_c_M>wK)x0brOT-PJ5r1NGF-F)@ro| zSuP+goxI~;khz^7^B3-QJ@fK0Ax zQ_G8whwqXsl@9Itv0u^Mn!w`_nrO7Cp;cD`m#MyFo^f93#A-*gql!|36l&7#^8BT& z_tPy9e(lVH_(GGkLBx z>E6h=fn!iB(Amk_UIl}rurKW7wlv5O>M_^-62wfGzBuF7?*$Jro09DumU=EmrZMCXrCCLd%@;7$Y0?&$i)m2u8OI<(KOgB z$>K_Zh@tzKP|b`5&c#uOuYyg#B(|^Fau@(=HYi zAg}lOgG*gba6ZFSo2#AEyHB5(BKB)uz{wxOj`$vQH|p3NJo-?uE;-42 zwFp99l*sto5$FTw!jk5eiHMLuis50FYl(>VvSv4Ht(gRoQ!oB`dXe=8b3tLk;Tz~ zjvHC#>#2YTGAilR?pJ$ZV{L{CbRc)1DX1Wt+gL(~n|KMcZ7gxqEigSe7rysSyO~QC z+2*oOp&F+HiZSx$W2KhD1@|=HhFE3GCt$))@I8$Qabs|ZVsM0OJ!Ke#e$1t)-re~} z2Ju81fLEVs9F+{sGNV{er@`&f%xV?HM%J)+A zvbP{J8~llZ;=BQ^JIPIslSo^tc*$XPJ!hQy3%TRB42T5W!=N*sh{a~=oyS929>r>Zi{-^2smf5yN2|jnZ3Xaf@wBF%czSUy01E9E z`+uHezhOYDKH73y+wDBjUUZqVBy0)tIfbcTefeetsQ??8!a7FMs}v>DeGM2wC7OL)>orlJkbKe*xPF59cE-y$3QR<-?lVwvM0?n9#N#*{2S*A8d0!tk zqSLP;ZXaHQvJV*cb&=Wrao7_5-uHZ5Qd(cUT}S01@*kY(K*w8^dMi{r_06tqyVuX} zFBg^=X?^VfoP4MKhrHAxNxog$&)zwL6US@E35c{$>a6Y7mM7)esG3rjG@vc!Wxk6P+ z|4TafO3Y7(ap2JBj%Jys@g`11^lqe968G!H&B)S@dsP)7t?R)%6^m(T({bTTF}8YmP%G zAM;z-W@F~Pg(Wy8_UdRDzzgz?jWG$bI%us3ddRmLg=>)Pfo%HrL&dO%EbP5q2USLQV>bUklF5anVxs_a=_%b zM)dqQ$UiQ(RdOqe0Mn%cCr}sLtA4RI5Gz0i(xSdx@D%8e_~S8fo+*?>tz~!{8Igro z$7B`|$9Z6lE9qky_!?F(6NY23vsv|R{4`|SO>D5SKG)lNPMvhzyT7Sbt0*f+C~OZ2 z=O#TpKb;6AtKq5G7BIaIn@WvEiq_}L9yy+fx|2w5s++)oY^}10!L6EOO!+ya=re=i zEI{*G9Sp8;PYl*+wIe*b2)Igu`{KPWw$#5uS}21 zqerUyCe&(KqV9$H_&stx3IP4>Hoj^gHQ@C|Z^h@wq+I?F1>ld?!ZwXXvNm8M ztwOdrM|4RLk;KG9ikg;%H6cKz?-ii>c($lQWoRNVh};dp4OG+{_`>=ZL}+pfGMoUa z9Z+O- z34`BeXF}o}AUX9km~&k((dHX%^NKc2SIXYw13neS7VQgtY(2eV4tj+%O46RLW&$k< z`7?-8I~52vuA|$Nkh#Ou>xob-NIZbgZUyB%=*@dCXdrn7jl5vYc;{$O04N>aX!jzU zz1xk6+T9tOPoU?!H(h^)8ji%tslWLFfM%Bgj_|Gxp{&~n!%rxR(=18unWlzhEWmPH z$N0&&h*D~wxQPcl zjCgd6QS>Kq_fURv9l=yVaC5mAY?}7Zujb|^&wJK4P{uPvK}`1Jy=z-HLDUiCb7WPG zP_Y}h#v(vw?=#omKV|SWaUa5MU@mTy;Hq&OS&LIdftjyozt{lV$kHX9sMDsbSTp~B z@fmqA#X8tsX{=G%aK+FNh3fW}VY~t1h9-*xGb2478;+TC9$bqXGo#SJ7KRMApD9bt zNk~id9V7TP%i&Klhn*-XyP0H=keuTVUg%u$7u896iAjh{b!{zXa1%OhxZy_RSmBYp zlgu+b-QR3|*=&3;Omz zNJ&&^R~j7dOjVOR+<91P1(iu%7S|#2)6K%IhIGO6{rFFtov4=NoiZB(QHoop6 zV+s&FmA%~ZCiUd~5VzcZRp@5*ew^_Sx;!x%0wwz~kLpu+pB9-gNnR_H(wAs-$Z zN)xY1^cBWQ``KDJwyqAs?yQc_`+^yJujBD^xZ9;h^D^R4iU$xU7=>R(s+iuKd#dlT zZ5NBSWm#Fg5>&1uwA(ARxP;zMKr}Pw5;3^{c6p+0U1?clJ4ssMZOomG4wv5!3f^gNm-9Q1O1uh2VIA`-u1aVZE(tP~mSO8kL5vx_h?{*juE}r1hity6*!-4b3Z`VDLZxocn#Y6iW%h~RwWnNEG~ z^t2zXjc_vdnEX|acAPk!Z(~Z%O7-tibb6y}9}uLJ?U88R0G{D;kpfFtFmr3IUcB}Ugv$?rO z+6GcK^w~LKz(E1-4AmFJAKn-GUHxo)_*_1y`(kW`ucj|Qpr>1RXuLlP=B4aC<#tqB z2XvEA<`(1hhPDDlTEY9Vt0r%cJCJuVS8exdn8AHLE5A62g! z3Ey#=tc&_Eg0NF{q}aB68gyUwsluSCxyjc(Fz5>Mn#qv_nDL$_+PcyvG=XGh&LZZj;|*4fCNY_p7}`mYD*_wWhl>@&5o&?1#F*VYZY-cN#a9 zAAwx)H}tZ#_S18HP<#2ChWL(-^cT#61fFE{jL#oV;5?6a=mC%};ObPPs zSOkk_jzU((Flme3%t@>+k?Hqp=>zzY`2 zdzR6cO4B)jo0|GtRm$Si%=SnsnmHZ(Q<`Jj3u6PsA9d-lxxtlPnnk2hk^bOX3`yG} zKT73I-mUEWIYl@4-Ftrqw$Iy7o-E+2vW13iri}UiPSH?AZW=(sM|#V}h$&FgA#R@q zeG4Fg1>7K_>=baWjr^}Oz`q?He~m4to$Izc7!Ws7+&+HQc^qkg4TbUuj zRRed?mTy&Zd$3h$f2U}yi?lElum{C3=8FVo4-09!vj!Z6)wrpqc@77$NvSwe>^kB` z0B2+F*}WPT5Oxe*(hObX9*+R-#)(VfSsD8&Zdug@53WhCcX!s>U2JxD9XMXdp8UMq zMiU$RB?U%~!_I=Wib5(^aGJ@8-OZ0ptzsiN#0PH}7uH}MgYvM^zMHRJp1KQq4PvW5o7Zi}K^Ag_*c zJlY2RI!IXFVV?kRbI|A2j%zy3O2-kD$#kn4WmAU>#xB3!saUN0h?*s?7j_dpBTGy# zL(I+1e;UAUj`9l8a|nJO^1t0xXO-E`+*HJF7lU1zh5AhVd5ScKZ3Z64J2i)9W@d)c z05kZ6Yo$7h(PT%rT?f0r_@Lr>@wg^+HBRx!x4o06E&pG>`sQ<+d# z4F3tkb*1jrm^9$Yu>H}I{WEmHs|>@|d+&s|_1+F={d#B$oj%i1yNr}l9T^!uzp#+| zqYIc%yv04cXCYR;GhF=S%3pr@Ll4$RINVmTWdo}8mf|?AtyuSk)TgJ zzV-f_ZL+@4d0#m`+@;FncGF~nj0+K2X8{L3Jt08LmxO#72%^LJm4R!Q0St4snHNh+6I&BNdU@aPwRI7&Wi zf^RZQW(tEe7(bYVzL$9v|LQeA|IFavK|v(={xY@=@cPzvG*2^i=eR|A(OXt8=zjTK z3%4M*_e6E%VO1eTo2dP9WC!&ZE3QnCGlO-Ns-Ry!W(CckwXA5p0aFUb>+$?8EhpXvp$8{9o%lD{?Y=38S)#uMIvpe*w-fyz$Dk0H=`MCr}ugPEg+JX^U zYkyI%!;Z#%Esq+)z@6jp5iu&e+5Ivb2Stf@8>_D|+TVJrI$Z1=W$GaD2}HdF-msiz zUzr)#JcAxTXj;{NLLI{pz<^pmqk&`ozb!}6gU3%oK7>7dw1Q=`H!@WTS@+^Fi}mr* z@j5sgt<(*r^SNTuuMmu8N=2uxQqO1u5@FD{TGn$N64$+wUK7JS>P?T4`!_Qo7mu12 zaTZxnwHdENbg;=DpMFEsZr5T?(~0_NCfHBsK|C;=FJw^Pq(B385Z1|#R=yJkF081L zz&tkll|o6BZGM?FA)BZbN4xy2V`MXk%!b+lt}>lQFr9Ol{ulr#`knoZu8}>cE-xHF zFJwGM!X-_uHxaZ_86G_DcwThuAwKpC0|G4tXrhHjfA1(?2|Ae4cad*x^xo2i@Z(YP%aR8pYB6>vuBGY8a1L&b#VuIxFalHD&L(jo$!59X6M?U^F=*Vfz&9cx`l zfr;jVdvi&*7^+*^jzWYi`Qs*nhdZ(pm0Cr6^EzH1a(VdsZi_BfT=3Q04_0nJP;dXr zVpFACdQ%|HU{|*s8=_eB+72nqr$J1Mor4%suHT-14E}0SwQU!bK3VqXR2(-sd^w=2 zz0NP-4kTpzennDk+J(B>6xw`sGT?=lqn@+@S?jJK+09Uw@^%>QH0dLw@~L;b_!)-& z0}bEuWCXW8qEiujOepW0MRq}1RuLsdCfWAz6#ETV(5Piruak!WJ0F=pq86`bZcA9Y z760kfMo29Dp~iLfN8}%0pd-@P&B>uQ?`!#^xC6(>=2^=@`I6Lbj<9Up?V%KnpIsiO zFl-D?Xxdy}7EOF&RVCe|&H2eag~MVf8#jOkLYZSF-kujg3uy9VP_mNdb_#8EV>zzZIo`F6J$yAUfsoj$m2GIInKA`bPNYGN$WhLp`QN@_en>nzK6W!nnmgw6 zF)JDn_A6v6Q~(^jot{EuTs*<83P7dUKRs%d@bR+f=-vBCi}Z5c8Lad%x{i$&RALz$ z4|thdO25m5##!kDt3R)76ZwVodBxj-%-<_%6L}iv2+1axK9MN3L;OCkjJ_ULrmNqB zY?Un)5zQm?IDo6qhkpu}2VjISm7uwt4FK$^`8hm`HIsT(-qJFV8Z9kOmi~;-UZwyf zZYri_zgm^J>Dkl6&eg=)73xPBjGu*{k4R8H5bjN*4Pi8PGu?Y!3L6iB!-w_CR0Q3y z2B&Gr-|p>Ifk?7g++<&zw`3NTABxKE&eV6CJM?uD`~0cG+&xPt_h9?OPk4y(CA>Ba z=UNalgw5a&pg4^Vh4+M{*sQ9PD_}(}ArMQUud~;F*7-+`J7+*^ zH$Ik#LJp>9Qf+kN3=(Pp&pZxOEyl}Oov-%d=8XJxtGh^_ky%Rlri>o(`lK3XK70ST zZ1hNi@p>F#6Wtdm7EdsJ9$2MF$*ITQtaZ^Tk$vE2_9r|93@TO<;T#qxsx6r}ku4F)80}I(8oUr3waHO1T7Ll@bfIot5qRdeefiQw&}?&~{X740^uvZk z1PFWY*}}M-_EPL-_QJ@DCAn9ig)N@i>5^vMH;FFhmvlE4Ug&^0+`7g6c4B_GD)rrF z+7&nV(ro6h3+YgQx8hebPWQBc{tb&*F(5_E(lZZXzQ}#{2!-UcJ@tN>QrJBLrOhV@;un?8!sZ&LnTsOX3(-8BcJKf$UN7-li;c=uOm?Db`TBe&?;C06U>p^?sa1y9Yg-e& zcsK^IO-e?$&IaKv{^rSR#%eqe z8K-2uag#0S&V#EK2QNDLkfudmcNcM5Wq%{cSJq)|oo!}kV7y9rb&ZanfR9e!v)aNb z1@ZN1Q7lK__>ydJBL61nB0U(zR+#24 zsmXIXu##cdI<@ryG=rBg8fh|c-B#V zth0-(5&ag`>9^mK=!QmYAk486HM{0WTvMaIg@x0iAg_QR@zRSM&Z3&{@I%dK%h7z5 zUyz}I;PK)Q3_1H@r-410J}_?}C0enBqZbyl4D-uU`41rGn58Eee?8q4r5DwA1z*}$ zv@3ALKucT=CQc3+1xa40&Kss`6}MdZP&80cM5i5kyy%1KGcS>jfp980M3a+G(i|{i#yswbfxU`?I50~!46A;3JSq~o1T0CW>u$^H6zXXPc~>D zvgMo_8XkmrZqL)eJzlHRZP60XDKG(q7gjdAmX+Qh>m9rwC={HK)SSCZVp++eH+?sQ z6@J5?>Bi%(!VL=JygoRl4pE7IIZM7|z#^}j{f#x=+xE85U_AYG0RRQqbEMW5k~TVC z;+GW|HIrd)v8(L~99nmme;#%HCktT0Mejx*8udD0X0}w8Bm=J}Iap(3Emvbs;~@@n zzx4;Ne5r%P%33A`ZJ7l1q~hwsuL@(&2dD%>{vz-_bqVxs@p2m5U`OXBsez$tEFM1D zME_a`v_WxqeWkL0$O|b-huhI;gpDEfC6>daLDt&!^2(H$OQ*|?Nt$|LPG2AdX|Zp4 z>Ty|eT0~`$GUeKhpmiock?jI~(UC@zwBFMHNc4qO{whPlptG0%8{pe&kL+3;2(UIw z@xTVs)LLk*9KWHsb26TrRF&5Xr)YIQ8hnGBvcgR2?Y}!;r^AcZF`_I%Gokz@tKKHk z1Rc@-(MX}b1yJ41$Y@)jzwWOP}mOkmu2$sPT#!`gl?$|sP!Mg}w{Iz) zFR4ZG$u^zJ_H>{O@=o#`;gq_+15-RV@Owk~Wbv9V9;R-~tMd$~ZIqU7h6)AfujYwm z>*I468;G8TA3kLV`5R71-(SK$6nDKk&fyq2SJs0qiG& zgZ4bZ7f*-9u&-Z3vwiot>d3K{=jLQ0=VlRwMryepj?|N@AS(w+JYA!d`htO=`|1XH zjO6+yt084TgWqFzs>P|i;|}8n!2V?%gxp6b8w+Js9JW6!;YkiRGJ*!vBHLdIwO)8? zphVB17;Cw2uee<6?}rZf?LofUFNTlGfvd4ZAse;LX-2?2^*0=V0EMP&eyac((fesb zbGtlE{CHs!gc#b|!}|D*B<~XsGyuk<9l2VjZMr2As^`|0n-94~4ZS~6Z0#ib7jCg1 z10v(qf95)QpE5qT_IEB}27KR(G05JmxsD%msTI78bv(C?OUmBL77gH(3i}=N0{ZdO zh05pE0ld{D*3REt5X3Ob4eKaY8HKR=v!xOuu$o}HaC}%0`ca0T0(o2!*eNJggMNiq!DvwA=0G_i%K^0_p*QH{bJ(h*-k z6d?!}7t4bt3m(M#Di7o8XpH$jO(1ge?@tx9r_Z24gkMi+I#P|OaRHwZm!OYtpD{qs zu5>av(6-a`oQP1aJz=jh)HR*uz{H0PjJlrpzLi;(jm-mBSjHh2M8wIR)V)3)mA1|d7-d#L)MbUVLS^GsDsIF9$ArcYM8YicO|8Si5 z#pJ$%Rdkq_*-iGZ!CfIVI$)^o5;FJLe*!s0dkb+uxu#9T&(E)8ewZ!d4G=%H3RfV(_{F@cU+zeD}M+ZEKXM_@$osR5{N<>hyBX3 zZY2lu1cnl;bp^ZMWT{n+n#r@7&`b0E1jioE&z7KfatguQA{xEB94zbHKHAKR^p=0< zt8l4DWl61}iH=$D?K(sq5oud+*X3PTj?K4uOn0&Zt*bAnx90wZccOJtyTYnsXgnxv>mDN z5ouvh`#rXK#%-1Xr|=DLXgXVib;SS`pNE zJ5(mZ#8a8{&sf|Dd7IiW1=l_=D2gConRm=F##W>UJ-wi8EgS6qM(wvtxGYk2T6XUH zka}#iQ8I;_3L3jKpoCbJA|Gxv@F5Zn)u+9^472ywuZy~$PPo0Y43Gd`-3j#DwF&qR z3<}Y@PqFVn*Z9k;juU86CVEe|o+h!?oRcVs4zNWw`;}EIT~KZH<`2IKS?ix<7}bQ^ z`o8qwo&&=#=$krq`PWq({b`!Ibr7UO>~mqyndBciD7RmEcuuvpsLIFy8rys;q6b>m zdc_ep?RlWnYqwjOJ#8koMMfq+HbP~$FYa&{*QO9z$p?3q17>QdvOu5zTDcu3$HVvW z^i9G1eIhbcl&@+;p?2P>iS7erZ09|RH6WvD4g44<1rhFS9~-RTy~v_WZOZ*T+B`T; zqjT@8yAg6KW{ z!jO(^A%ZGLjl^HmLL+}xCIW^=6+N%Sr$5Olb*^l$W`8#b@LZv_I2}wl*51)tPdVYW z^t(s&kUdDBZe>BQYQ&Dny>BHR5`533)(8P~V%R^f(FRBh(O=E1)E$y%8iD1l@=W2q z41?+LXVkC11jjs^RD+%!U4^ED477=k^1)lrFdS*Wx(PXZF@G?tWm z*}fY4$n8@NptisphS|k~W_sZiKN4zBeu4qGKKg3UY3}yIK;yGeMvc{5;a}3e-^7^5 z?Kz)8I?Orsp}hmoI&f%3%)IQx`eyt{r|dqB;qt-p$S%fB2?G@|gMA%!4c1gEm7gnl zea-2eAh9mwxG-#OAVR>@PnMrwC=iT|?Dm67$2M2avK(W{gdA#esvW0YhKaDpP`U6L z(A;MJwiK)k$Ug6KUP42f+D$xz3D~Az7$hU3^~2QCYj7?#fS+7Y>h(D z*0_~SG77HNxW#^n%(GxhDyfd})K=SFE~;gVSrG-6^5&?nIt;Ww4+kxss6V;^TrdFzGR;fE>sPoJ&4*ID+}U4(jm`RgNd zQG9G7jA)x933@*`&-|Om^@!Kk+K${#cJv0LIW%u6cma&Kf?a=*?WGinyU78?0DSU@ zm^=r9v`)lrygK&zlkok~&Q(78$7rq$nB2O1bvW^2TSNF>vpv*w)%ciXhoDj49m11r z1dhiv?20_yYvM6J`wFvDd1SP%k2iie`I?pKW>Zv)?(GnfCI7IkIQOcf!VUOwvn&P) zgr8^4XoUOm)v}$6)wnssXfFO_1&umT?dM*+7+SHq%a&-RhxsuU78U1IH=;UW9F*OHH!p7Y0+9cp)da*=^KRsVTnS7hfGuBb8mtz6!wOE(s zWIW}zJrH!w#iB;EMTRIvraF-pTWN4TlEv6@a(6_2SJV~j=c9^Q_p|ewMd(y$+woDM z-rmtJ+uYnl#lW&Z60@b)JBDVR5awTgZJ-)z?;CD?*K_53EZs!C4o%w2A^B1(*P-do z_fC%8x1uxc>F6?^3x+!Rd>#I(4xZBit}-?~Z65f~&hp$&V6aoh7kl=luW1P_N_ku-~68He@X@5zdj0w6`;fC{uG>fk5H5VP3vCoHe_)7))a&i51kxV`f4|^ z3DxU7rpk^IrAEEQLGom52I?n(!#f40sSlQtn& zJE@8Ukx};Ih_r~*T`!vY<4?!L24g`Zkufq{>}U6Lw5xE2ch(mp%_FiYwasnQWn*Ir zNXTkHpN<~nVKXQ@>D^ac4cw1v&)#)>Sun~%dcYleBsKxALF}PNc>K%Z_(LZ`hFS%xjJGPq_cY!l^YnXk}Uda|Y za(G4=0DibXt@5+nO%lLASwv~KQPSNxQ$!!Z*ZOGp5t}LpVi-Ua1ngkjb3OQ**FcEq&lCw z8%{q<6ds%MHN#T^vk|q?D5*bA#!7Z*(ei%C4)bw{54CIwvmo8~qQM>-LR~Wh(Fep8 zYlm-FpTP>~Yfr0_f{6A3B)j87=r3%i?>Sy~Rjku*$Uc2yW2{GeT6cp>^cyto{{jMO z`G1O7YBOuAv@3)_N_<=-rMv{UQ7EL~9&)O2LhffmC#KrQ2r^TouZYEtg=n3FK(_oY zo{w0}J`|gXLpcId@QF4JosBHgEhP}~(`o7_{C>Z5OaH=MP%f~_)}eBd!W4zO^nF78 z^=YLo;8$&$vO@Z_OTBlV@SzChAwfl~9_f_g;0ybBktmN*G4VxtM6;Fa0q58a)J5r7 z>GJ0tS?07^YvcEl_YZQN+)EBPD2t*PkAdUDP<T` z#SCBKZyejKDV3j6_K07liQW0lEZ#3whE_mt=aWK$Ho~al0(7z4Xe9lcE<4i|O$m=8 zqu?KjUT4p$rkU|)ZKl3p4Boz4mu19f-?uSvjU?oBavB&4{1~fB>Ej>}nj`0FVbUUg zAG5e(KaAvk#?DZvvpyXiXQB$6?|yG+@a)9VM3`a;dE7)qtNiw{gU<>V8Wy~@d+%c( zSL%+;E#l{gIoY{s0lw&U1~VdZfq=YaUw5EHa(9oxM}g7zo6{(RYN^o2f{Z zK&ujuAwwf2jRq}#*~lAHwP!W5YOLtr{;cLWsG?bLKKKCfL@0wFusi(_>HL?IY6qwy znTLZ-Oi?@Eh92m7>tyL1%9&mBTeTxzX};N#?bJ3(XXR{q-okLVOWZ zzb?&f80V%p{se(^=mQ(DO1(p#23F!*v=2Q6fi(SsrzXIR_%om+#gZx-{a&OnFnAOm zS%z)FxJQQ5T}@YJxpw!u6&7<$bQT^!APFWXclBNsDCRv6N&)Sx#}9O@oyyA&Udulg zZk9cwQJ^i}^gZp|r#ED!(6MGWlTJ4^)b{-~yV?idmZj6sUrPm>xs0^CL44Fc@ zXVha9e>Kp)1Of%In1zD085wBdgTzKrOe6GOnEUbzFbEW~ltVO8 z7GFHP`XfTn_A=|9Sy-L((NdVdu=d()cE>E+#)7FA)IVt8>2dA6P{A@g!yX5$7k z2*Dn63%)BbC~?aU@rAc7>e>!^tT2?o)^X)}QL=kzjqm@&^lRD*GEcq3P81y@qW zKqk+8lc?JYJLOT4P=@Akt4Gnt9z=G8b>4Wl{%M&5SDdR0SVB?XBxAP|R zJc!={0C!4m-oAbN#*G)&B_r(6^C{O#MnFl|ipEI(sX$m7xc+eA8t>hI)!0$myZ@91 ztab;k7nVRb1g@?#@ zj$%V$vuH!lz(sdGRmYUiVk_qUF%tB}CQm%#l(PiR3Z{mqiTs5%nfnp?V+N3WU2FL4 zAW`RjRo~ZtyCb8fuC9LW+|@k-8>L(;8e!vpExNJfs^7D{N7?ZkA#P}Q|KcloA^y7^ zin1yL*?Qp%b>9Vu1kHuUb8t!=46#K@Qk)Bom2AxSh)qc6OJ;4U@sI9*=zW;%X&tdz zrMc>MLf6tl{J9LBRzcmSQ$J~1V!hWW1Q>LSzE>v8B;pam_}-m>ZNyOR zIl{#kOBNdCT}xqI;JnOBeq5kJRcOTQ^D~CFy0bQJVs`od>B~K;dmMhOp5myzDX<}J zt_5fw8!Qc6NkR$`VyXJ4s5lvck zgnAE#F$ND>uN(s%>`2TJbPaX!B|gDcaE>K8{KGCKv~|vz6&Cj-C3FWN z_}$m>-C@=%fI!CAh{$#j$h~|qo{U~^r+PyUL}#OepS;7122Y6~1(8$bvRQ*DTU&Tr z*?bRGDU&bksXbjF$zZKcR79>l*Q^MzB}6IUlR068#z^(IvEAq$kG^ZAe8 zmJ+O@0+8^~sS+E(r~dIm^i_D9j7~{F73YXK$wVL0e8j*PVPRL?hr^AR+b};_dr3cd_1F0PsmoNXD?gz2xEYHBDp?xX?@(frrb!EPa*53P=ZB_BCQL=TFHO&g}( zAG$&;^>xKniy|Uk+*PY~x`b6k-kwp;JCR4Y^H6qId}kp}rS97oKAycC$V|;|>(hkU zSQ(3sU$T-L^w>8;FT`mop8#W=9|1gBK4!lGmTYA>nrvgN`d!_GWC@fwy;@Dnj}&rX zsP|U*%D9>L^P`SIrC?7hr+|3kzJmW|=#W-0pOcfYARIoBF+~>e@eL!KCpo%t*zsAS~FpxWP*zC7;DtLZ7 zwvi=xLe%S(=Cdc%%?IdS%#8)j1YEYum96}z$zLlUdy~1%+R!A<=cE`aCGLu!pj>KD zvszBBtiw-1^R*1LenC=DAh_T42aq9Ychi-#_M)UUh(T3${(CZY>4ouX6FWWrdgsb$ z>6Nyr^qtk0ILsji!qn409KQL5#F2MB_QyqI_U@jhc&lEfBHkSZ)=~C%&wRvQoS_i) z@1MNi1t&&CTY%OoU(*2hK?H3QZdh!wGdK!(wX&8JYR zl5lMmmT>z=!w$(>LrB(J=k~#YJd!iK&j&@mS)zKrORlH2TF zlK=09#9slHJ=Ye-h?$tXI(`Y{a4y0V4;&RKl))R$KO0ih_j+j;yubnPin@3Xjal5K z+5X+03M&*{#I?vHt|otZ8!5CIXx^+E&OCHmjw9g-#NqSbm@_Xoq@<>%zI^$5Pg&+% zD;j2p!e8Gg4Z~--1G65aqUL=~=Uosz*lKQcF z?~DK_$@LK-?0}5;bG7Gc^Fq4o%E4d=gd5Y$gRzRE-IO$1o;ZB?s(z)$UE}_=V8*Wh zS1g+Ura|;S-~dzqYqsRSCtXU`%C`+y-R&ve_Ve>{K4oR)wTOd1r_RqW$jjHA(>UKd z(9?rd2O7MTm72+P_x4HCaCUO7F7`_Mpg~0T4)~NR47V`ybOZ3pL{DPOoOckvq+KrC zY}Foq)4@J1#WAwZ%jxdrtOTW)k__2piDir4iVjk~4j5N|`>?QvascR#bA8L7Rz6bs|E2Z+?>Y9boQL3A#Loxc&eRJq zrje7G2pQ}KO?9gisRbY>wR{t~AYAQ(MY5(#6{ApjvHq=_oj6?j=2jgg1DD9a_-#Fh zHgn!A)_9NMB&dyacf}LeS#k|bzkzQ$vI7@RAvS7nI0REJysf z!#i8DuvT6Q;Lxs`Z2C}hN$Z?x$5r7Fv&3xEP|%=xXfkO2Oy4ApGQBMU7WWx<4D1>3 z-+79c7gkVr@({yGwE1@*k*lx;9s7ApmUWc)H<+s=OO;XHi`2bp+Y~q%ixMuf^cfr7 zGVU3^3blqA?S;xGc(z}uF4fT4ZzA@uY-KS+d3UqC2Up)(Vw$@4JD2)ySq>y9Z)^=m zkpp=u&*1KM9jD0~BpW`k*NRKi173{Th&fDmk>cb|0h72TM3iVfCAy&p`P)RD*RGBx zS;!sdE7-e3_Jry1ED;c_UA^e()}d%jNT6*)tdq%3sg_MEw0gTyv1(iy=A!-r$b?J% zJR3&_&MoDbKs^?h<$Szr5WmXKDWDd&OHHHQ9`%JW4a%;-Z?@_$R%c9ToF{s;YTxUP zGqcZ_N{AYe>?-Uh3?QLdRDV1WR?+6bM0hQ=T7+ffMen&rzCx8&Laj3YFF+pzqLSkf zL+F4>Yk(2N!78ujB(42{qkj-#-?J$85_y+l))D6O+_pPJr;9I?_P*v5KYuDWZOZJP&=j!(G_PloeXYXaM)*K#Zgeg$84q;H0Nih?zHE-!wG_)xE(JsD1Pb6%n#2PZx<8t3yk_ANXP$WD+mqF=%; z@n87P`~pUZB0#k?lNnK+hnUBPi^Qe6$r6q#pKK4xNobz2pqodD+&GnJ&qXpOw2usd zj7fI9&z)DWRuqiS;;oz-YbwsmCiMr<9^y}1w{E{~RZ^T9?{1m}hcCBNucbv!)ihcT z6l&~#NP^DHGB1LCroZxV!Ba@rJC9vqz^1eoKBiDWAYEPHh+78|H_eT?O&*BLBDNG5 z5%N#!7c}4F74Vrm`MPnpoDJ_U4C8QzbC7;(jH&2=CXrim>P-&_#LiB%KHWVWjoIjN z6R~n8dd6;+Y#iVYXOwXhixXRC(RpXE8}OxLfMpB_dl zLvKAI#K$Bw1$Mf!aVfKs_0Edog!eulWaGX>PI@LxsVilKYfkA$*prfdu7Sh3l`*)4 zXg7>UqWWLIPxfcm5=7i$StkILk7 zSS6b0%VUJUw}b*EQU`KPqL8WA0N)_rT}$jw>&1v+-~|q9tSC)+h_uqt1)oUAGGIj) zl2;?Q+w&yL--KbH@h9xbqA9q!?Gh|;`F-QJt6cCd5T=F?_8N{-QmJZzDw6buf7-# zkLnlg+FKl@zzps#%47gW`?%%dFPrPt!kOHCn#&X4Q#`EZ%M6QV!C0?Rnq~RvV06xU z)2t%=Aty}(EUfn#pxq~(a!@me>3Q3#3`6^yR%2vMbAz(%#zn6+v6zWIRGh2PO2$y^ z5o5sPT-JH?cWQMZ3m?hnWmFF^c+GDz*1BJI;~MrQPLk!~8QsMis))euHd<~v;nC=m z!i32?RX+Qyu)l+bW=BI3!vzULma2!azN?S#(jg8|{=0)A+C%I&1KC6iHFSjG$`O-| zPj*Kt_3ib@f$NQ6e&w5RHxKD#HVw2~Qj;B89ZViGgZa#F8chH30+$Y(U#TC7K`B1Ea}{0@ zA&CExry&S)5@cGOss`w3J~ru*i6!dJJR;?T2FT5OHTTVZgE1XVDwe zs<6(w=8W2~Yt|;B!Tn29^P!w!4T$yzt19akTEkl_U?1g0xrXlnFZNFPF(7+XOW~ro z{0;u$A^DATkePAQ6g@W(;2gX)p$eWXd>i(YLX-3gaTWUcrH%}Ev}qmch~m&uAGN~W zIoP+CAd}!wuYqSP#stlTTR+6YGL?o5Aq5+QANi5UHktC`7N~9n4?!yvQoaK}fHW&d z#0_2RD-}FXQ`TY=G&Qqyg118~T&nNt5&Bc1?{TMNkJz{~wA zwL{lC=goXI{XSbXAX)g)onRssFFMVNk+epve3(+;a#snMG~lnkir-S764x|FbsRdP z?o@38xwrF0vNQB0KF6V{czITnrfm3jpb&f=0c96GXKm795Qu#1X15Fy(AvQfx#45e zoGBgTd_{+NefN~3@?_PJgY))ZmLgWsj2~sJS|pWM@hzar;052DZhmeHziP;bU*)8h zBf)tl}LY9Qg1o9IIfZBP}Dl;$>0NP1Wj3GsZFBvQ^ZDh=i~KGzj+@?_VC z8qaO4xK!uNZ8op{{+r$EG4c$_Q!HK(J06-0yz;{DOVa~>0-LY^SSnA6b$;<$_Eu~h zjIQSqq!Mh*Gu=$TOcHP?O$ghL8DYBajD&9DF|ogr#)B?BQ%ua^4tIhytusj8UBvrh z(Q1zk&vYf$@d%?*mvI8XJTn8pyzAUDrtNJ{!Z8QH7#ojPK4JK9=R+E&wM0ayGW8?) zIyRiHS3etv`(m=G2-tsUJL}FLLq{=3tdEnuca3Gex4?@wy zv2K4IZE^kBT9f&0-*wqITsm(&%BHVpj^ldcQo#G{Bt8uD_i{l4K4WdXCsrqk$(q8u zjogv${WOnS)SuH4JsW-57a@Rs%zG4WJ+W!QX(W#D+%_u@0n%>)Na3J+n3V(7j!}H! zzKzq`2N{q2E;lSqR2!`fMFGms$kQP?ZIuIEdpCpY{&7}itgV;Ibn#}ztep3J7hb{v zwl>vb{}%00_i*G+0zVb@KJ!T4c28`q4qLed%Pu>3JlhS2oUje~$d}J? z(8CiKTgsgp>netHOjAc1I^G?`i@059K(^~!OR@y#=KwkDl(|GDNQon!ej4KKjcial zi&m<}+QK~+J5?>SBG}Mqd8udc^(i1ICWN0e&(rp_7aqkQ!rqK+WfP{|&|m z)mu7C(}E6--q$eQ%_-TKklkF=r_0h-6Y~vEZ#RW@MM$c4*4P#$H}$65`bp@zcwDbF z{~$1^9#@_s`(S3pAp=(eA{)8M%(oqN8;xlvZ=s7oGyJ+Ba-!;$uLCPi=W*;#xlW5=!J|dx7Jl7pKcG*_FP*H zE)?G?TGaLZ)1X@Uw2SJ)2T#Yb+%ngN`#?#~gL?K(4g^Jaf9kA;aGAlIod4dygREN8 zYFGVW8NrNz0_QIJO(=U#Z53UfI2R!}ryNR2lNWQh(iSxH^k(`Wo`wV;JTQ_npW*}T z0^-ShRJ98=NEZCSlAsS6a1R_e_4ICqQ36*wi_Ao{1J(FwxEVeq}X%rP)bpL0qg%u+>Q*?r^Ja>D@g!>ejOCdCH$!xG@W*&JsN}6O zVvO;U+ui9y?5RR4A%`9D@A87B0jx@AL4%u4+^B(LOh0>_ewMf%xhwE5R+RXd@04e2HjMb5o`M=93X!J0O^iKjoB z_#B1uNmjH)RI407()s_0ZROXWLhCg?&pBcwd;>+PpYM$CyqQ|rH7AE$9^=mqNcdK1 zN4yD`o>a`9q93=uQD0wg6@Z{NuIeUtjgF0ZXlGnkslD_5_gpC2zvOTFYvPJ~F z=Uw{Su9&p6EN3VCoR#xZFRE(Fj5PK2fsh0c`mF^1bG$WJT+ssg8l!LuHv^(9zK(nG z?FR4g9Ym1rbQxtHcwO34sh=EGlAY?CTN>Y71b+P!IxQ~^sKBGECIukUM3wZ(=iWX( zX&0QGZVjryG&O1U|5i`|q-1>5kve+8wfVzYlgEdEJYc(}<4x*l=1YefyD zuM-2jQW~_NI{(KAtJmE@d_08>4-ZdCN$Ima0@Nl|_c!1>@I>*%)G)iw878h;Ooe`Ty1Hg&W&ohGz8^AYG&Lc;+{ew?MkTov z-PhNLsQ0!H58u%sE)O^O(S$;wUny|NJ%CawfOAbvP4mNA0GdLfe9eJVNL8}V+G78u z4I=K1S}La?@k4LXelXmC*bGZyLT^Nz6=M%o&OIEAay>@C0z(6 zRK09AtW~_utTes_B=ge%xss&_?uguj8eFW5?OZf((mm>2FTEnqLWP~8e~O{yI~B$Q z;slt}RGOEl8@F=YZwl^gD6Sex1oHAcYCG*tobn!c-M#o{sH{G&o{tZgxLdfWmwIx{ zP30?xZj-FOe^0x^Sd&@6SK74fw9bT!#64V-M6z_qa+B?<4U|+KldGV`*Lu zC1bK#mU^hZ9Jb*9#Q)6K`4Dy26#o)($YPojP%C$ip|_$rbn!zhuh6La>*NaK=g*QK z5TGrwe!ZM~ryn9dno5U%#p;@3mYHJwnF!|*NrS3SaW~)@OZ^-bZ(T<3uF6#Nr-j0P zf$kN&U1a4MLVGb)x$-JJS=aDurSOoSP(FeQ#`7%r-g`WDz&8yyn@6PL_vrESy`oyg j9;DP;+y6hIUNQC}vi(U=VaEPFEUuba!>fL|^ZWk-#HoAj literal 0 HcmV?d00001 diff --git a/docs/en/Tutorials/images/blazor-edit-book-modal.png b/docs/en/Tutorials/images/blazor-edit-book-modal.png new file mode 100644 index 0000000000000000000000000000000000000000..e63e796d34b756a5e6b513daca7c34f85e9e3259 GIT binary patch literal 27492 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 VF40o Date: Fri, 18 Sep 2020 22:57:17 +0300 Subject: [PATCH 13/31] Update Part-3.md --- docs/en/Tutorials/Part-3.md | 187 ++++++++++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) diff --git a/docs/en/Tutorials/Part-3.md b/docs/en/Tutorials/Part-3.md index 1714aa8485..522e3a4676 100644 --- a/docs/en/Tutorials/Part-3.md +++ b/docs/en/Tutorials/Part-3.md @@ -1355,6 +1355,193 @@ You can now run the application and try to edit a book. ![blazor-edit-book-modal](images/blazor-edit-book-modal.png) +## Deleting a Book + +Open the `Books.razor` page and add the following `DropdownItem` under the "Edit" action inside the "Actions" `DropdownMenu`: + +````xml + + @L["Delete"] + +```` + +* `DeleteEntityAsync` is defined in the base class. + +Run the application and try to delete a book. + +## Full CRUD UI Code + +Here the complete code to create the book management CRUD page, that has been developed in the last two parts: + +````xml +@page "/books" +@using Volo.Abp.Application.Dtos +@using Volo.Abp.BlazoriseUI +@using Acme.BookStore.Books +@using Acme.BookStore.Localization +@using Microsoft.Extensions.Localization +@inject IStringLocalizer L +@inherits BlazoriseCrudPageBase + + + + + +

@L["Books"]

+
+ + + + + +
+
+ + + + + + + + @L["Actions"] + + + + @L["Edit"] + + + @L["Delete"] + + + + + + + + + @L[$"Enum:BookType:{(int) context.Type}"] + + + + + @context.PublishDate.ToShortDateString() + + + + + + + @context.CreationTime.ToLongDateString() + + + + + +
+ + + + + + @L["NewBook"] + + + + + @L["Name"] + + + + @L["Type"] + + + + @L["PublishDate"] + + + + @L["Price"] + + + + + + + + + + + + + + + @EditingEntity.Name + + + + + @L["Name"] + + + + @L["Type"] + + + + @L["PublishDate"] + + + + @L["Price"] + + + + + + + + + +```` + {{end}} ## The Next Part From b6385d94749780e11fdce1a982bd730218fb9722 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 18 Sep 2020 22:59:19 +0300 Subject: [PATCH 14/31] Update Part-4.md --- docs/en/Tutorials/Part-4.md | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/docs/en/Tutorials/Part-4.md b/docs/en/Tutorials/Part-4.md index 2868df8ba6..0d0b48ab7a 100644 --- a/docs/en/Tutorials/Part-4.md +++ b/docs/en/Tutorials/Part-4.md @@ -2,7 +2,7 @@ ````json //[doc-params] { - "UI": ["MVC","NG"], + "UI": ["MVC","Blazor","NG"], "DB": ["EF","Mongo"] } ```` @@ -14,20 +14,13 @@ else if UI == "NG" else UI_Text="?" end -if DB == "EF" - DB_Text="Entity Framework Core" -else if DB == "Mongo" - DB_Text="MongoDB" -else - DB_Text="?" -end }} ## About This Tutorial In this tutorial series, you will build an ABP based web application named `Acme.BookStore`. This application is used to manage a list of books and their authors. It is developed using the following technologies: -* **{{DB_Text}}** as the ORM provider. +* **{{DB_Value}}** as the ORM provider. * **{{UI_Value}}** as the UI Framework. This tutorial is organized as the following parts; From 2744b866215c5ed613b7f7988d2ff6ed242976eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 19 Sep 2020 12:32:56 +0300 Subject: [PATCH 15/31] Revise the part-4. --- docs/en/Tutorials/Part-4.md | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/docs/en/Tutorials/Part-4.md b/docs/en/Tutorials/Part-4.md index 0d0b48ab7a..f00dba0c47 100644 --- a/docs/en/Tutorials/Part-4.md +++ b/docs/en/Tutorials/Part-4.md @@ -6,16 +6,6 @@ "DB": ["EF","Mongo"] } ```` -{{ -if UI == "MVC" - UI_Text="mvc" -else if UI == "NG" - UI_Text="angular" -else - UI_Text="?" -end -}} - ## About This Tutorial In this tutorial series, you will build an ABP based web application named `Acme.BookStore`. This application is used to manage a list of books and their authors. It is developed using the following technologies: @@ -55,7 +45,9 @@ This part is also recorded as a video tutorial and **
The test projects are configured to use **SQLite in-memory** as the database. A separate database instance is created and seeded (with the data seed system) to prepare a fresh database for every test. +> The test projects are configured to use **SQLite in-memory** as the database. A separate database instance is created and seeded (with the [data seed system](../Data-Seeding.md)) to prepare a fresh database for every test. {{else if DB=="Mongo"}} -> **[Mongo2Go](https://github.com/Mongo2Go/Mongo2Go)** library is used to mock the MongoDB database. A separate database instance is created and seeded (with the data seed system) to prepare a fresh database for every test. +> **[Mongo2Go](https://github.com/Mongo2Go/Mongo2Go)** library is used to mock the MongoDB database. A separate database instance is created and seeded (with the [data seed system](../Data-Seeding.md)) to prepare a fresh database for every test. {{end}} From b81e99adf48728b0a2bf3ff3d51af31f2d54114a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 19 Sep 2020 12:33:14 +0300 Subject: [PATCH 16/31] Remove unnecessary variables from the part-5 --- docs/en/Tutorials/Part-5.md | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/docs/en/Tutorials/Part-5.md b/docs/en/Tutorials/Part-5.md index 5b2dfc0431..1edbe0b89f 100644 --- a/docs/en/Tutorials/Part-5.md +++ b/docs/en/Tutorials/Part-5.md @@ -2,32 +2,15 @@ ````json //[doc-params] { - "UI": ["MVC","NG"], + "UI": ["MVC","Blazor","NG"], "DB": ["EF","Mongo"] } ```` -{{ -if UI == "MVC" - UI_Text="mvc" -else if UI == "NG" - UI_Text="angular" -else - UI_Text="?" -end -if DB == "EF" - DB_Text="Entity Framework Core" -else if DB == "Mongo" - DB_Text="MongoDB" -else - DB_Text="?" -end -}} - ## About This Tutorial In this tutorial series, you will build an ABP based web application named `Acme.BookStore`. This application is used to manage a list of books and their authors. It is developed using the following technologies: -* **{{DB_Text}}** as the ORM provider. +* **{{DB_Value}}** as the ORM provider. * **{{UI_Value}}** as the UI Framework. This tutorial is organized as the following parts; From aa1f6dbeddcf0c46c8ff891a6063232a1c9e5c1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 19 Sep 2020 13:27:34 +0300 Subject: [PATCH 17/31] Completed the authorization part for the blazor UI --- docs/en/Tutorials/Part-5.md | 97 +++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/docs/en/Tutorials/Part-5.md b/docs/en/Tutorials/Part-5.md index 1edbe0b89f..edfa1a4640 100644 --- a/docs/en/Tutorials/Part-5.md +++ b/docs/en/Tutorials/Part-5.md @@ -128,6 +128,8 @@ Go to the *Administration -> Identity -> Roles* page, select *Permissions* actio Grant the permissions you want and save the modal. +> **Tip**: New permissions are automatically granted to the admin role if you run the `Acme.BookStore.DbMigrator` application. + ## Authorization Now, you can use the permissions to authorize the book management. @@ -169,6 +171,8 @@ namespace Acme.BookStore.Books Added code to the constructor. Base `CrudAppService` automatically uses these permissions on the CRUD operations. This makes the **application service** secure, but also makes the **HTTP API** secure since this service is automatically used as an HTTP API as explained before (see [auto API controllers](../API/Auto-API-Controllers.md)). +> You will see the declarative authorization, using the `[Authorize(...)]` attribute, later while developing the author management functionality. + {{if UI == "MVC"}} ### Razor Page @@ -395,6 +399,99 @@ Open the `/src/app/book/book.component.html` file and replace the edit and delet {{end}} +{{else if UI == "Blazor"}} + +### Authorize the Razor Component + +Open the `/Pages/Books.razor` file in the `Acme.BookStore.Blazor` project and add an `Authorize` attribute just after the `@page` directive, as shown below: + +````html +@page "/books" +@attribute [Authorize(BookStorePermissions.Books.Default)] +@using Acme.BookStore.Permissions +@using Microsoft.AspNetCore.Authorization +... +```` + +Adding this attribute prevents to enter this page if the current hasn't logged in or hasn't granted for the given permission. In case of attempt, the user is redirected to the login page. + +### Show/Hide the Actions + +The book management page has a *New Book* button and *Edit* and *Delete* actions for each book. We should hide these buttons/actions if the current user has not granted for the related permissions. + +#### Inject the IAuthorizationService + +Inject the `IAuthorizationService` into the `Books.razor`: + +````csharp +@inject IAuthorizationService AuthorizationService +```` + +#### Get the Permissions On Initialization + +Add the following code block to the end of the `Books.razor` file: + +````csharp +@code +{ + bool canCreateBook; + bool canEditBook; + bool canDeleteBook; + + protected override async Task OnInitializedAsync() + { + await base.OnInitializedAsync(); + + canCreateBook =await AuthorizationService.IsGrantedAsync(BookStorePermissions.Books.Create); + canEditBook = await AuthorizationService.IsGrantedAsync(BookStorePermissions.Books.Edit); + canDeleteBook = await AuthorizationService.IsGrantedAsync(BookStorePermissions.Books.Delete); + } +} +```` + +We will use these `bool` fields to check the permissions. + +#### Hide the New Book Button + +Wrap the *New Book* button by an `if` block as shown below: + +````xml +@if (canCreateBook) +{ + +} +```` + +#### Hide the Edit/Delete Actions + +As similar to the *New Book* button, we can use `if` blocks to conditionally show/hide the *Edit* and *Delete* actions: + +````xml +@if (canEditBook) +{ + + @L["Edit"] + +} +@if (canDeleteBook) +{ + + @L["Delete"] + +} +```` + +#### About the Permission Caching + +You can run and test the permissions. Remove a book related permission from the admin role to see the related button/action disappears from the UI. + +However, ABP Framework caches the permissions of the current user in the client side. So, when you change a permission for yourself, you need to manually **refresh the page** to take the effect. If you don't refresh and try to use the prohibited action you get an HTTP 403 (forbidden) response from the server. + +> Changing a permission for a role or user immediately available on the server side. So, this cache system doesn't cause any security problem. + +{{end}} + ## The Next Part See the [next part](Part-6.md) of this tutorial. \ No newline at end of file From 64601adedaaaca751057ce7aadf7f72c8ecc9cc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 19 Sep 2020 13:36:35 +0300 Subject: [PATCH 18/31] Revise the part-6. --- docs/en/Tutorials/Part-6.md | 32 +++----------------------------- 1 file changed, 3 insertions(+), 29 deletions(-) diff --git a/docs/en/Tutorials/Part-6.md b/docs/en/Tutorials/Part-6.md index b1b38f18dc..8323f9ed6a 100644 --- a/docs/en/Tutorials/Part-6.md +++ b/docs/en/Tutorials/Part-6.md @@ -2,32 +2,15 @@ ````json //[doc-params] { - "UI": ["MVC","NG"], + "UI": ["MVC","Blazor","NG"], "DB": ["EF","Mongo"] } ```` -{{ -if UI == "MVC" - UI_Text="mvc" -else if UI == "NG" - UI_Text="angular" -else - UI_Text="?" -end -if DB == "EF" - DB_Text="Entity Framework Core" -else if DB == "Mongo" - DB_Text="MongoDB" -else - DB_Text="?" -end -}} - ## About This Tutorial In this tutorial series, you will build an ABP based web application named `Acme.BookStore`. This application is used to manage a list of books and their authors. It is developed using the following technologies: -* **{{DB_Text}}** as the ORM provider. +* **{{DB_Value}}** as the ORM provider. * **{{UI_Value}}** as the UI Framework. This tutorial is organized as the following parts; @@ -242,16 +225,7 @@ This is a unique string represents the error code thrown by your application and "BookStore:00001": "There is already an author with the same name: {name}" ```` -Then open the `BookStoreDomainSharedModule` and add the following code block inside the `ConfigureServices` method: - -````csharp -Configure(options => -{ - options.MapCodeNamespace("BookStore", typeof(BookStoreResource)); -}); -```` - -Whenever you throw an `AuthorAlreadyExistsException`, the end use will see a nice error message on the UI. +Whenever you throw an `AuthorAlreadyExistsException`, the end use will see a this message on the UI. ## IAuthorRepository From 3d3d58633177f6ba45d208a97bce1200bb843ca1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 19 Sep 2020 13:38:16 +0300 Subject: [PATCH 19/31] Update Part-7.md --- docs/en/Tutorials/Part-7.md | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/docs/en/Tutorials/Part-7.md b/docs/en/Tutorials/Part-7.md index 81fd07f1bf..26a222a2a4 100644 --- a/docs/en/Tutorials/Part-7.md +++ b/docs/en/Tutorials/Part-7.md @@ -2,32 +2,15 @@ ````json //[doc-params] { - "UI": ["MVC","NG"], + "UI": ["MVC","Blazor","NG"], "DB": ["EF","Mongo"] } ```` -{{ -if UI == "MVC" - UI_Text="mvc" -else if UI == "NG" - UI_Text="angular" -else - UI_Text="?" -end -if DB == "EF" - DB_Text="Entity Framework Core" -else if DB == "Mongo" - DB_Text="MongoDB" -else - DB_Text="?" -end -}} - ## About This Tutorial In this tutorial series, you will build an ABP based web application named `Acme.BookStore`. This application is used to manage a list of books and their authors. It is developed using the following technologies: -* **{{DB_Text}}** as the ORM provider. +* **{{DB_Value}}** as the ORM provider. * **{{UI_Value}}** as the UI Framework. This tutorial is organized as the following parts; From deabb06a5a462f06adea0f239571eb94d0d88a91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 19 Sep 2020 13:44:08 +0300 Subject: [PATCH 20/31] Update Part-8.md --- docs/en/Tutorials/Part-8.md | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/docs/en/Tutorials/Part-8.md b/docs/en/Tutorials/Part-8.md index fc10a799f2..a885bd7c28 100644 --- a/docs/en/Tutorials/Part-8.md +++ b/docs/en/Tutorials/Part-8.md @@ -2,32 +2,15 @@ ````json //[doc-params] { - "UI": ["MVC","NG"], + "UI": ["MVC","Blazor","NG"], "DB": ["EF","Mongo"] } ```` -{{ -if UI == "MVC" - UI_Text="mvc" -else if UI == "NG" - UI_Text="angular" -else - UI_Text="?" -end -if DB == "EF" - DB_Text="Entity Framework Core" -else if DB == "Mongo" - DB_Text="MongoDB" -else - DB_Text="?" -end -}} - ## About This Tutorial In this tutorial series, you will build an ABP based web application named `Acme.BookStore`. This application is used to manage a list of books and their authors. It is developed using the following technologies: -* **{{DB_Text}}** as the ORM provider. +* **{{DB_Value}}** as the ORM provider. * **{{UI_Value}}** as the UI Framework. This tutorial is organized as the following parts; From d5d9a2f0abfa79905b033b9746b57fadc1cc8884 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 19 Sep 2020 13:51:45 +0300 Subject: [PATCH 21/31] Added link to the Blazor UI sample --- docs/en/Tutorials/Part-1.md | 3 ++- docs/en/Tutorials/Part-10.md | 3 ++- docs/en/Tutorials/Part-2.md | 3 ++- docs/en/Tutorials/Part-3.md | 3 ++- docs/en/Tutorials/Part-4.md | 3 ++- docs/en/Tutorials/Part-5.md | 3 ++- docs/en/Tutorials/Part-6.md | 3 ++- docs/en/Tutorials/Part-7.md | 3 ++- docs/en/Tutorials/Part-8.md | 3 ++- docs/en/Tutorials/Part-9.md | 3 ++- 10 files changed, 20 insertions(+), 10 deletions(-) diff --git a/docs/en/Tutorials/Part-1.md b/docs/en/Tutorials/Part-1.md index 1d9b4c11cc..e7129eb951 100644 --- a/docs/en/Tutorials/Part-1.md +++ b/docs/en/Tutorials/Part-1.md @@ -28,9 +28,10 @@ This tutorial is organized as the following parts; ### Download the Source Code -This tutorial has multiple versions based on your **UI** and **Database** preferences. We've prepared two combinations of the source code to be downloaded: +This tutorial has multiple versions based on your **UI** and **Database** preferences. We've prepared a few combinations of the source code to be downloaded: * [MVC (Razor Pages) UI with EF Core](https://github.com/abpframework/abp-samples/tree/master/BookStore-Mvc-EfCore) +* [Blazor UI with EF Core](https://github.com/abpframework/abp-samples/tree/master/BookStore-Blazor-EfCore) * [Angular UI with MongoDB](https://github.com/abpframework/abp-samples/tree/master/BookStore-Angular-MongoDb) {{if UI == "MVC" && DB == "EF"}} diff --git a/docs/en/Tutorials/Part-10.md b/docs/en/Tutorials/Part-10.md index 05ed6e343e..0003ab27be 100644 --- a/docs/en/Tutorials/Part-10.md +++ b/docs/en/Tutorials/Part-10.md @@ -45,9 +45,10 @@ This tutorial is organized as the following parts; ### Download the Source Code -This tutorials has multiple versions based on your **UI** and **Database** preferences. We've prepared two combinations of the source code to be downloaded: +This tutorial has multiple versions based on your **UI** and **Database** preferences. We've prepared a few combinations of the source code to be downloaded: * [MVC (Razor Pages) UI with EF Core](https://github.com/abpframework/abp-samples/tree/master/BookStore-Mvc-EfCore) +* [Blazor UI with EF Core](https://github.com/abpframework/abp-samples/tree/master/BookStore-Blazor-EfCore) * [Angular UI with MongoDB](https://github.com/abpframework/abp-samples/tree/master/BookStore-Angular-MongoDb) ## Introduction diff --git a/docs/en/Tutorials/Part-2.md b/docs/en/Tutorials/Part-2.md index 5afc96be87..61271b1c93 100644 --- a/docs/en/Tutorials/Part-2.md +++ b/docs/en/Tutorials/Part-2.md @@ -28,9 +28,10 @@ This tutorial is organized as the following parts; ### Download the Source Code -This tutorial has multiple versions based on your **UI** and **Database** preferences. We've prepared two combinations of the source code to be downloaded: +This tutorial has multiple versions based on your **UI** and **Database** preferences. We've prepared a few combinations of the source code to be downloaded: * [MVC (Razor Pages) UI with EF Core](https://github.com/abpframework/abp-samples/tree/master/BookStore-Mvc-EfCore) +* [Blazor UI with EF Core](https://github.com/abpframework/abp-samples/tree/master/BookStore-Blazor-EfCore) * [Angular UI with MongoDB](https://github.com/abpframework/abp-samples/tree/master/BookStore-Angular-MongoDb) {{if UI == "MVC" && DB == "EF"}} diff --git a/docs/en/Tutorials/Part-3.md b/docs/en/Tutorials/Part-3.md index 522e3a4676..079b9e7cf8 100644 --- a/docs/en/Tutorials/Part-3.md +++ b/docs/en/Tutorials/Part-3.md @@ -28,9 +28,10 @@ This tutorial is organized as the following parts; ### Download the Source Code -This tutorial has multiple versions based on your **UI** and **Database** preferences. We've prepared two combinations of the source code to be downloaded: +This tutorial has multiple versions based on your **UI** and **Database** preferences. We've prepared a few combinations of the source code to be downloaded: * [MVC (Razor Pages) UI with EF Core](https://github.com/abpframework/abp-samples/tree/master/BookStore-Mvc-EfCore) +* [Blazor UI with EF Core](https://github.com/abpframework/abp-samples/tree/master/BookStore-Blazor-EfCore) * [Angular UI with MongoDB](https://github.com/abpframework/abp-samples/tree/master/BookStore-Angular-MongoDb) {{if UI == "MVC" && DB == "EF"}} diff --git a/docs/en/Tutorials/Part-4.md b/docs/en/Tutorials/Part-4.md index f00dba0c47..9c31f4fd3c 100644 --- a/docs/en/Tutorials/Part-4.md +++ b/docs/en/Tutorials/Part-4.md @@ -28,9 +28,10 @@ This tutorial is organized as the following parts; ### Download the Source Code -This tutorial has multiple versions based on your **UI** and **Database** preferences. We've prepared two combinations of the source code to be downloaded: +This tutorial has multiple versions based on your **UI** and **Database** preferences. We've prepared a few combinations of the source code to be downloaded: * [MVC (Razor Pages) UI with EF Core](https://github.com/abpframework/abp-samples/tree/master/BookStore-Mvc-EfCore) +* [Blazor UI with EF Core](https://github.com/abpframework/abp-samples/tree/master/BookStore-Blazor-EfCore) * [Angular UI with MongoDB](https://github.com/abpframework/abp-samples/tree/master/BookStore-Angular-MongoDb) {{if UI == "MVC" && DB == "EF"}} diff --git a/docs/en/Tutorials/Part-5.md b/docs/en/Tutorials/Part-5.md index edfa1a4640..14b3a09b08 100644 --- a/docs/en/Tutorials/Part-5.md +++ b/docs/en/Tutorials/Part-5.md @@ -28,9 +28,10 @@ This tutorial is organized as the following parts; ### Download the Source Code -This tutorial has multiple versions based on your **UI** and **Database** preferences. We've prepared two combinations of the source code to be downloaded: +This tutorial has multiple versions based on your **UI** and **Database** preferences. We've prepared a few combinations of the source code to be downloaded: * [MVC (Razor Pages) UI with EF Core](https://github.com/abpframework/abp-samples/tree/master/BookStore-Mvc-EfCore) +* [Blazor UI with EF Core](https://github.com/abpframework/abp-samples/tree/master/BookStore-Blazor-EfCore) * [Angular UI with MongoDB](https://github.com/abpframework/abp-samples/tree/master/BookStore-Angular-MongoDb) {{if UI == "MVC" && DB == "EF"}} diff --git a/docs/en/Tutorials/Part-6.md b/docs/en/Tutorials/Part-6.md index 8323f9ed6a..69c6574520 100644 --- a/docs/en/Tutorials/Part-6.md +++ b/docs/en/Tutorials/Part-6.md @@ -28,9 +28,10 @@ This tutorial is organized as the following parts; ### Download the Source Code -This tutorials has multiple versions based on your **UI** and **Database** preferences. We've prepared two combinations of the source code to be downloaded: +This tutorial has multiple versions based on your **UI** and **Database** preferences. We've prepared a few combinations of the source code to be downloaded: * [MVC (Razor Pages) UI with EF Core](https://github.com/abpframework/abp-samples/tree/master/BookStore-Mvc-EfCore) +* [Blazor UI with EF Core](https://github.com/abpframework/abp-samples/tree/master/BookStore-Blazor-EfCore) * [Angular UI with MongoDB](https://github.com/abpframework/abp-samples/tree/master/BookStore-Angular-MongoDb) ## Introduction diff --git a/docs/en/Tutorials/Part-7.md b/docs/en/Tutorials/Part-7.md index 26a222a2a4..9d4666b4d2 100644 --- a/docs/en/Tutorials/Part-7.md +++ b/docs/en/Tutorials/Part-7.md @@ -28,9 +28,10 @@ This tutorial is organized as the following parts; ### Download the Source Code -This tutorials has multiple versions based on your **UI** and **Database** preferences. We've prepared two combinations of the source code to be downloaded: +This tutorial has multiple versions based on your **UI** and **Database** preferences. We've prepared a few combinations of the source code to be downloaded: * [MVC (Razor Pages) UI with EF Core](https://github.com/abpframework/abp-samples/tree/master/BookStore-Mvc-EfCore) +* [Blazor UI with EF Core](https://github.com/abpframework/abp-samples/tree/master/BookStore-Blazor-EfCore) * [Angular UI with MongoDB](https://github.com/abpframework/abp-samples/tree/master/BookStore-Angular-MongoDb) ## Introduction diff --git a/docs/en/Tutorials/Part-8.md b/docs/en/Tutorials/Part-8.md index a885bd7c28..819c835063 100644 --- a/docs/en/Tutorials/Part-8.md +++ b/docs/en/Tutorials/Part-8.md @@ -28,9 +28,10 @@ This tutorial is organized as the following parts; ### Download the Source Code -This tutorials has multiple versions based on your **UI** and **Database** preferences. We've prepared two combinations of the source code to be downloaded: +This tutorial has multiple versions based on your **UI** and **Database** preferences. We've prepared a few combinations of the source code to be downloaded: * [MVC (Razor Pages) UI with EF Core](https://github.com/abpframework/abp-samples/tree/master/BookStore-Mvc-EfCore) +* [Blazor UI with EF Core](https://github.com/abpframework/abp-samples/tree/master/BookStore-Blazor-EfCore) * [Angular UI with MongoDB](https://github.com/abpframework/abp-samples/tree/master/BookStore-Angular-MongoDb) ## Introduction diff --git a/docs/en/Tutorials/Part-9.md b/docs/en/Tutorials/Part-9.md index 0d78d584b8..1093a6aa56 100644 --- a/docs/en/Tutorials/Part-9.md +++ b/docs/en/Tutorials/Part-9.md @@ -45,9 +45,10 @@ This tutorial is organized as the following parts; ### Download the Source Code -This tutorials has multiple versions based on your **UI** and **Database** preferences. We've prepared two combinations of the source code to be downloaded: +This tutorial has multiple versions based on your **UI** and **Database** preferences. We've prepared a few combinations of the source code to be downloaded: * [MVC (Razor Pages) UI with EF Core](https://github.com/abpframework/abp-samples/tree/master/BookStore-Mvc-EfCore) +* [Blazor UI with EF Core](https://github.com/abpframework/abp-samples/tree/master/BookStore-Blazor-EfCore) * [Angular UI with MongoDB](https://github.com/abpframework/abp-samples/tree/master/BookStore-Angular-MongoDb) ## Introduction From 577c70396a888d6e6b55a1bb553d640a53304b58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 19 Sep 2020 13:53:16 +0300 Subject: [PATCH 22/31] Clean unused parts. --- docs/en/Tutorials/Part-10.md | 21 ++------------------- docs/en/Tutorials/Part-9.md | 21 ++------------------- 2 files changed, 4 insertions(+), 38 deletions(-) diff --git a/docs/en/Tutorials/Part-10.md b/docs/en/Tutorials/Part-10.md index 0003ab27be..9794644cd8 100644 --- a/docs/en/Tutorials/Part-10.md +++ b/docs/en/Tutorials/Part-10.md @@ -2,32 +2,15 @@ ````json //[doc-params] { - "UI": ["MVC","NG"], + "UI": ["MVC","Blazor","NG"], "DB": ["EF","Mongo"] } ```` -{{ -if UI == "MVC" - UI_Text="mvc" -else if UI == "NG" - UI_Text="angular" -else - UI_Text="?" -end -if DB == "EF" - DB_Text="Entity Framework Core" -else if DB == "Mongo" - DB_Text="MongoDB" -else - DB_Text="?" -end -}} - ## About This Tutorial In this tutorial series, you will build an ABP based web application named `Acme.BookStore`. This application is used to manage a list of books and their authors. It is developed using the following technologies: -* **{{DB_Text}}** as the ORM provider. +* **{{DB_Value}}** as the ORM provider. * **{{UI_Value}}** as the UI Framework. This tutorial is organized as the following parts; diff --git a/docs/en/Tutorials/Part-9.md b/docs/en/Tutorials/Part-9.md index 1093a6aa56..fd16707aad 100644 --- a/docs/en/Tutorials/Part-9.md +++ b/docs/en/Tutorials/Part-9.md @@ -2,32 +2,15 @@ ````json //[doc-params] { - "UI": ["MVC","NG"], + "UI": ["MVC","Blazor","NG"], "DB": ["EF","Mongo"] } ```` -{{ -if UI == "MVC" - UI_Text="mvc" -else if UI == "NG" - UI_Text="angular" -else - UI_Text="?" -end -if DB == "EF" - DB_Text="Entity Framework Core" -else if DB == "Mongo" - DB_Text="MongoDB" -else - DB_Text="?" -end -}} - ## About This Tutorial In this tutorial series, you will build an ABP based web application named `Acme.BookStore`. This application is used to manage a list of books and their authors. It is developed using the following technologies: -* **{{DB_Text}}** as the ORM provider. +* **{{DB_Value}}** as the ORM provider. * **{{UI_Value}}** as the UI Framework. This tutorial is organized as the following parts; From 6b3a4fe6d5bb2c8d917ae56e4e8a8fc3a20c2641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 19 Sep 2020 20:54:25 +0300 Subject: [PATCH 23/31] Update Part-9.md --- docs/en/Tutorials/Part-9.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/en/Tutorials/Part-9.md b/docs/en/Tutorials/Part-9.md index fd16707aad..240776913b 100644 --- a/docs/en/Tutorials/Part-9.md +++ b/docs/en/Tutorials/Part-9.md @@ -36,11 +36,11 @@ This tutorial has multiple versions based on your **UI** and **Database** prefer ## Introduction -This part explains how to create a CRUD page for the `Author` entity introduced in previous parts. +This part explains how to create a CRUD page for the `Author` entity introduced in the previous parts. {{if UI == "MVC"}} -## The Book List Page +## The Authors List Page Create a new razor page, `Index.cshtml` under the `Pages/Authors` folder of the `Acme.BookStore.Web` project and change the content as given below. @@ -832,6 +832,10 @@ That's all! This is a fully working CRUD page, you can create, edit and delete a {{end}} +{{if UI == "Blazor"}} + +{{end}} + ## The Next Part See the [next part](Part-10.md) of this tutorial. \ No newline at end of file From 44dccfc3cdc434f43c5975b68dce8fdd3f03f6a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 19 Sep 2020 21:11:18 +0300 Subject: [PATCH 24/31] Minor fixes on the tutorial. --- docs/en/Tutorials/Part-7.md | 2 +- docs/en/Tutorials/Part-8.md | 2 +- docs/en/Tutorials/Part-9.md | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/en/Tutorials/Part-7.md b/docs/en/Tutorials/Part-7.md index 9d4666b4d2..32c9f6b9a4 100644 --- a/docs/en/Tutorials/Part-7.md +++ b/docs/en/Tutorials/Part-7.md @@ -70,7 +70,7 @@ This is just like done for the `Book` entity before, so no need to explain again ## Create a new Database Migration -Open the **Package Manager Console** on Visual Studio and ensure that the **Default project** is `Acme.BookStore.EntityFrameworkCore.DbMigrations` in the Package Manager Console, as shown on the picture below. Also, set the `Acme.BookStore.Web` as the startup project (right click it on the solution explorer and click to "Set as Startup Project"). +Open the **Package Manager Console** on Visual Studio and ensure that the **Default project** is `Acme.BookStore.EntityFrameworkCore.DbMigrations` in the Package Manager Console, as shown on the picture below. Also, set the `Acme.BookStore.Web` (or `Acme.BookStore.HttpApi.Host`, depending on your solution) as the **startup project** (right click it on the solution explorer and click to "Set as Startup Project"). Run the following command to create a new database migration: diff --git a/docs/en/Tutorials/Part-8.md b/docs/en/Tutorials/Part-8.md index 819c835063..b7c805c17e 100644 --- a/docs/en/Tutorials/Part-8.md +++ b/docs/en/Tutorials/Part-8.md @@ -302,7 +302,7 @@ public async Task UpdateAsync(Guid id, UpdateAuthorDto input) {{if DB == "EF"}} -> **EF Core tip**: Entity Framework Core has a **change tracking** system and **automatically saves** any change to an entity at the end of the unit of work (You can simply think that the ABP Framework automatically calls `SaveChanges` at the end of the method). So, it will work as expected even if you don't call the `_authorRepository.UpdateAsync(...)` in the end of the method. If you don't consider to change the EF Core later, you can just remove this line. +> **EF Core Tip**: Entity Framework Core has a **change tracking** system and **automatically saves** any change to an entity at the end of the unit of work (You can simply think that the ABP Framework automatically calls `SaveChanges` at the end of the method). So, it will work as expected even if you don't call the `_authorRepository.UpdateAsync(...)` in the end of the method. If you don't consider to change the EF Core later, you can just remove this line. {{end}} diff --git a/docs/en/Tutorials/Part-9.md b/docs/en/Tutorials/Part-9.md index 240776913b..0b155be681 100644 --- a/docs/en/Tutorials/Part-9.md +++ b/docs/en/Tutorials/Part-9.md @@ -834,6 +834,8 @@ That's all! This is a fully working CRUD page, you can create, edit and delete a {{if UI == "Blazor"}} + + {{end}} ## The Next Part From 8aec1e0c062cdd289973599dd1a532bbed01cc68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 19 Sep 2020 21:40:39 +0300 Subject: [PATCH 25/31] Add Blazor Tip --- docs/en/Tutorials/Part-5.md | 2 ++ docs/en/Tutorials/Part-9.md | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/en/Tutorials/Part-5.md b/docs/en/Tutorials/Part-5.md index 14b3a09b08..2c0ba3a16d 100644 --- a/docs/en/Tutorials/Part-5.md +++ b/docs/en/Tutorials/Part-5.md @@ -452,6 +452,8 @@ Add the following code block to the end of the `Books.razor` file: We will use these `bool` fields to check the permissions. +> **Blazor Tip**: While adding the C# code into a `@code` block is fine for small code parts, it is suggested to use the code behind approach to develop a more maintainable code base when the code block becomes longer. We will use this approach for the authors part. + #### Hide the New Book Button Wrap the *New Book* button by an `if` block as shown below: diff --git a/docs/en/Tutorials/Part-9.md b/docs/en/Tutorials/Part-9.md index 0b155be681..13efab3c4e 100644 --- a/docs/en/Tutorials/Part-9.md +++ b/docs/en/Tutorials/Part-9.md @@ -493,7 +493,7 @@ That's all! You can run the application and try to edit an author. {{else if UI == "NG"}} -## The Author List Page, Create & Delete Authors +## The Author Management Page Run the following command line to create a new module, named `AuthorModule` in the root folder of the angular application: @@ -834,7 +834,9 @@ That's all! This is a fully working CRUD page, you can create, edit and delete a {{if UI == "Blazor"}} +## The Author Management Page +TODO {{end}} From b48e3c7392797382f17ca7241f9f085418dc8755 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 19 Sep 2020 22:23:16 +0300 Subject: [PATCH 26/31] Add Menu Item section to the blazor UI and revise the MVC menu section. --- docs/en/Tutorials/Part-5.md | 154 ++++++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) diff --git a/docs/en/Tutorials/Part-5.md b/docs/en/Tutorials/Part-5.md index 2c0ba3a16d..e501070992 100644 --- a/docs/en/Tutorials/Part-5.md +++ b/docs/en/Tutorials/Part-5.md @@ -315,6 +315,64 @@ if (await context.IsGrantedAsync(BookStorePermissions.Books.Default)) } ```` +You also need to add `async` keyword to the `ConfigureMenuAsync` method and re-arrange the return values. The final `BookStoreMenuContributor` class should be the following: + +````csharp +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Localization; +using Acme.BookStore.Localization; +using Acme.BookStore.MultiTenancy; +using Acme.BookStore.Permissions; +using Volo.Abp.TenantManagement.Web.Navigation; +using Volo.Abp.UI.Navigation; + +namespace Acme.BookStore.Web.Menus +{ + public class BookStoreMenuContributor : IMenuContributor + { + public async Task ConfigureMenuAsync(MenuConfigurationContext context) + { + if (context.Menu.Name == StandardMenus.Main) + { + await ConfigureMainMenuAsync(context); + } + } + + private async Task ConfigureMainMenuAsync(MenuConfigurationContext context) + { + if (!MultiTenancyConsts.IsEnabled) + { + var administration = context.Menu.GetAdministration(); + administration.TryRemoveMenuItem(TenantManagementMenuNames.GroupName); + } + + var l = context.GetLocalizer(); + + context.Menu.Items.Insert(0, new ApplicationMenuItem("BookStore.Home", l["Menu:Home"], "~/")); + + var bookStoreMenu = new ApplicationMenuItem( + "BooksStore", + l["Menu:BookStore"], + icon: "fa fa-book" + ); + + context.Menu.AddItem(bookStoreMenu); + + //CHECK the PERMISSION + if (await context.IsGrantedAsync(BookStorePermissions.Books.Default)) + { + bookStoreMenu.AddItem(new ApplicationMenuItem( + "BooksStore.Books", + l["Menu:Books"], + url: "/Books" + )); + } + } + } +} +```` + {{else if UI == "NG"}} ### Angular Guard Configuration @@ -493,6 +551,102 @@ However, ABP Framework caches the permissions of the current user in the client > Changing a permission for a role or user immediately available on the server side. So, this cache system doesn't cause any security problem. +### Menu Item + +Even we have secured all the layers of the book management page, it is still visible on the main menu of the application. We should hide the menu item if the current user has no permission. + +Open the `BookStoreMenuContributor` class, find the code block below: + +````csharp +context.Menu.AddItem( + new ApplicationMenuItem( + "BooksStore", + l["Menu:BookStore"], + icon: "fa fa-book" + ).AddItem( + new ApplicationMenuItem( + "BooksStore.Books", + l["Menu:Books"], + url: "/books" + ) + ) +); +```` + +And replace this code block with the following: + +````csharp +var bookStoreMenu = new ApplicationMenuItem( + "BooksStore", + l["Menu:BookStore"], + icon: "fa fa-book" +); + +context.Menu.AddItem(bookStoreMenu); + +//CHECK the PERMISSION +if (await context.IsGrantedAsync(BookStorePermissions.Books.Default)) +{ + bookStoreMenu.AddItem(new ApplicationMenuItem( + "BooksStore.Books", + l["Menu:Books"], + url: "/books" + )); +} +```` + +You also need to add `async` keyword to the `ConfigureMenuAsync` method and re-arrange the return values. The final `BookStoreMenuContributor` class should be the following: + +````csharp +using System.Threading.Tasks; +using Acme.BookStore.Localization; +using Acme.BookStore.Permissions; +using Volo.Abp.UI.Navigation; + +namespace Acme.BookStore.Blazor +{ + public class BookStoreMenuContributor : IMenuContributor + { + public async Task ConfigureMenuAsync(MenuConfigurationContext context) + { + if(context.Menu.DisplayName != StandardMenus.Main) + { + return; + } + + var l = context.GetLocalizer(); + + context.Menu.Items.Insert( + 0, + new ApplicationMenuItem( + "BookStore.Home", + l["Menu:Home"], + "/", + icon: "fas fa-home" + ) + ); + + var bookStoreMenu = new ApplicationMenuItem( + "BooksStore", + l["Menu:BookStore"], + icon: "fa fa-book" + ); + + context.Menu.AddItem(bookStoreMenu); + + if (await context.IsGrantedAsync(BookStorePermissions.Books.Default)) + { + bookStoreMenu.AddItem(new ApplicationMenuItem( + "BooksStore.Books", + l["Menu:Books"], + url: "/books" + )); + } + } + } +} +```` + {{end}} ## The Next Part From f1c69a5787e265446819e864fe5a461acd843645 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 19 Sep 2020 22:34:38 +0300 Subject: [PATCH 27/31] Added blazor for the authors UI --- docs/en/Tutorials/Part-5.md | 2 +- docs/en/Tutorials/Part-9.md | 331 +++++++++++++++++++++++++++++++++++- 2 files changed, 331 insertions(+), 2 deletions(-) diff --git a/docs/en/Tutorials/Part-5.md b/docs/en/Tutorials/Part-5.md index e501070992..74d2c25d70 100644 --- a/docs/en/Tutorials/Part-5.md +++ b/docs/en/Tutorials/Part-5.md @@ -555,7 +555,7 @@ However, ABP Framework caches the permissions of the current user in the client Even we have secured all the layers of the book management page, it is still visible on the main menu of the application. We should hide the menu item if the current user has no permission. -Open the `BookStoreMenuContributor` class, find the code block below: +Open the `BookStoreMenuContributor` class in the `Acme.BookStore.Blazor` project, find the code block below: ````csharp context.Menu.AddItem( diff --git a/docs/en/Tutorials/Part-9.md b/docs/en/Tutorials/Part-9.md index 13efab3c4e..0724854ccd 100644 --- a/docs/en/Tutorials/Part-9.md +++ b/docs/en/Tutorials/Part-9.md @@ -836,7 +836,336 @@ That's all! This is a fully working CRUD page, you can create, edit and delete a ## The Author Management Page -TODO +### The Authors Razor Component + +Create a new Razor Component Page, `/Pages/Authors.razor`, in the `Acme.BookStore.Blazor` project with the following content: + +````xml +@page "/authors" +@using Acme.BookStore.Authors +@using Acme.BookStore.Localization +@using Microsoft.AspNetCore.Authorization +@using Microsoft.Extensions.Localization +@using Volo.Abp.ObjectMapping +@inject IAuthorAppService AuthorAppService +@inject IStringLocalizer L +@inject IAuthorizationService AuthorizationService +@inject IUiMessageService UiMessageService +@inject IObjectMapper ObjectMapper + + + + +

@L["Authors"]

+
+ + + @if (CanCreateAuthor) + { + + } + + +
+
+ + + + + + + + @L["Actions"] + + + @if (CanEditAuthor) + { + + @L["Edit"] + + } + @if (CanDeleteAuthor) + { + + @L["Delete"] + + } + + + + + + + + @context.BirthDate.ToShortDateString() + + + + + +
+ + + + + + @L["NewAuthor"] + + + + + @L["Name"] + + + + @L["BirthDate"] + + + + @L["ShortBio"] + + + + + + + + + + + + + + + @EditingAuthor.Name + + + + + @L["Name"] + + + + @L["BirthDate"] + + + + @L["ShortBio"] + + + + + + + + + +```` + +And create a new code behind file, `Authors.razor.cs`, under the `Pages` folder, with the following content: + +````csharp +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Acme.BookStore.Authors; +using Acme.BookStore.Permissions; +using Blazorise; +using Blazorise.DataGrid; +using Microsoft.AspNetCore.Authorization; +using Volo.Abp.Application.Dtos; + +namespace Acme.BookStore.Blazor.Pages +{ + public partial class Authors + { + private IReadOnlyList AuthorList { get; set; } + + private int PageSize { get; } = LimitedResultRequestDto.DefaultMaxResultCount; + private int CurrentPage { get; set; } + private string CurrentSorting { get; set; } + private int TotalCount { get; set; } + + private bool CanCreateAuthor { get; set; } + private bool CanEditAuthor { get; set; } + private bool CanDeleteAuthor { get; set; } + + private CreateAuthorDto NewAuthor { get; set; } + private Guid EditingAuthorId { get; set; } + private UpdateAuthorDto EditingAuthor { get; set; } + + private Modal CreateAuthorModal { get; set; } + private Modal EditAuthorModal { get; set; } + + public Authors() + { + NewAuthor = new CreateAuthorDto(); + EditingAuthor = new UpdateAuthorDto(); + } + + protected override async Task OnInitializedAsync() + { + await SetPermissionsAsync(); + await GetAuthorsAsync(); + } + + private async Task SetPermissionsAsync() + { + CanCreateAuthor = await AuthorizationService + .IsGrantedAsync(BookStorePermissions.Authors.Create); + + CanEditAuthor = await AuthorizationService + .IsGrantedAsync(BookStorePermissions.Authors.Edit); + + CanDeleteAuthor = await AuthorizationService + .IsGrantedAsync(BookStorePermissions.Authors.Delete); + } + + private async Task GetAuthorsAsync() + { + var result = await AuthorAppService.GetListAsync( + new GetAuthorListDto + { + MaxResultCount = PageSize, + SkipCount = CurrentPage * PageSize, + Sorting = CurrentSorting + } + ); + + AuthorList = result.Items; + TotalCount = (int)result.TotalCount; + } + + private async Task OnDataGridReadAsync(DataGridReadDataEventArgs e) + { + CurrentSorting = e.Columns + .Where(c => c.Direction != SortDirection.None) + .Select(c => c.Field + (c.Direction == SortDirection.Descending ? " DESC" : "")) + .JoinAsString(","); + CurrentPage = e.Page - 1; + + await GetAuthorsAsync(); + + StateHasChanged(); + } + + private void OpenCreateAuthorModal() + { + NewAuthor = new CreateAuthorDto(); + CreateAuthorModal.Show(); + } + + private void CloseCreateAuthorModal() + { + CreateAuthorModal.Hide(); + } + + private void OpenEditAuthorModal(AuthorDto author) + { + EditingAuthorId = author.Id; + EditingAuthor = ObjectMapper.Map(author); + EditAuthorModal.Show(); + } + + private async Task DeleteAuthorAsync(AuthorDto author) + { + var confirmMessage = L["AuthorDeletionConfirmationMessage", author.Name]; + if (!await UiMessageService.ConfirmAsync(confirmMessage)) + { + return; + } + + await AuthorAppService.DeleteAsync(author.Id); + await GetAuthorsAsync(); + } + + private void CloseEditAuthorModal() + { + EditAuthorModal.Hide(); + } + + protected virtual async Task CreateEntityAsync() + { + await AuthorAppService.CreateAsync(NewAuthor); + await GetAuthorsAsync(); + CreateAuthorModal.Hide(); + } + + protected virtual async Task UpdateAuthorAsync() + { + await AuthorAppService.UpdateAsync(EditingAuthorId, EditingAuthor); + await GetAuthorsAsync(); + EditAuthorModal.Hide(); + } + } +} +```` + +### Object Mapping + +Open the `BookStoreBlazorAutoMapperProfile.cs` in the `Acme.BookStore.Blazor` project and add the following mapping code in the constructor: + +````csharp +CreateMap(); +```` + +You will need to declare a `using Acme.BookStore.Authors;` statement to the beginning of the file. + +### Add to the Main Menu + +Open the `BookStoreMenuContributor.cs` in the `Acme.BookStore.Blazor` project and add the following code to the end of the `ConfigureMainMenuAsync` method: + +````csharp +if (await context.IsGrantedAsync(BookStorePermissions.Authors.Default)) +{ + bookStoreMenu.AddItem(new ApplicationMenuItem( + "BooksStore.Authors", + l["Menu:Authors"], + url: "/authors" + )); +} +```` + +### Localizations + +We should complete the localizations we've used above. Open the `en.json` file under the `Localization/BookStore` folder of the `Acme.BookStore.Domain.Shared` project and add the following entries: + +````json +"Menu:Authors": "Authors", +"Authors": "Authors", +"AuthorDeletionConfirmationMessage": "Are you sure to delete the author '{0}'?", +"BirthDate": "Birth date", +"NewAuthor": "New author" +```` {{end}} From 3cc6c38cc3d242d7d973013832431f844a0a1d79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 20 Sep 2020 12:12:46 +0300 Subject: [PATCH 28/31] Finalized the Part-9 for Blazor --- docs/en/API/Dynamic-CSharp-API-Clients.md | 2 +- docs/en/Tutorials/Part-9.md | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/docs/en/API/Dynamic-CSharp-API-Clients.md b/docs/en/API/Dynamic-CSharp-API-Clients.md index 94a0222243..23ec336acf 100644 --- a/docs/en/API/Dynamic-CSharp-API-Clients.md +++ b/docs/en/API/Dynamic-CSharp-API-Clients.md @@ -162,4 +162,4 @@ context.Services.AddHttpClientProxies( Using `asDefaultServices: false` may only be needed if your application has already an implementation of the service and you do not want to override/replace the other implementation by your client proxy. -> If you disable `asDefaultServices`, you can only use `IHttpClientProxy` interface to use the client proxies (see the related section above). \ No newline at end of file +> If you disable `asDefaultServices`, you can only use `IHttpClientProxy` interface to use the client proxies. See the *IHttpClientProxy Interface* section above. \ No newline at end of file diff --git a/docs/en/Tutorials/Part-9.md b/docs/en/Tutorials/Part-9.md index 0724854ccd..841d2fb3cb 100644 --- a/docs/en/Tutorials/Part-9.md +++ b/docs/en/Tutorials/Part-9.md @@ -836,7 +836,7 @@ That's all! This is a fully working CRUD page, you can create, edit and delete a ## The Author Management Page -### The Authors Razor Component +### Authors Razor Component Create a new Razor Component Page, `/Pages/Authors.razor`, in the `Acme.BookStore.Blazor` project with the following content: @@ -948,7 +948,7 @@ Create a new Razor Component Page, `/Pages/Authors.razor`, in the `Acme.BookStor @L["Cancel"] @@ -990,7 +990,12 @@ Create a new Razor Component Page, `/Pages/Authors.razor`, in the `Acme.BookStor ```` -And create a new code behind file, `Authors.razor.cs`, under the `Pages` folder, with the following content: +* This code is similar to the `Books.razor`, except it doesn't inherit from the `BlazorisePageBase`, but uses its own implementation. +* Injects the `IAuthorAppService` to consume the server side HTTP APIs from the UI. We can directly inject application service interfaces and use just like regular method calls by the help of [Dynamic C# HTTP API Client Proxy System](../API/Dynamic-CSharp-API-Clients.md), which performs REST API calls for us. See the `Authors` class below to see the usage. +* Injects the `IAuthorizationService` to check [permissions](../Authorization.md). +* Injects the `IObjectMapper` for [object to object mapping](../Object-To-Object-Mapping.md). + +Create a new code behind file, `Authors.razor.cs`, under the `Pages` folder, with the following content: ````csharp using System; @@ -1020,6 +1025,7 @@ namespace Acme.BookStore.Blazor.Pages private bool CanDeleteAuthor { get; set; } private CreateAuthorDto NewAuthor { get; set; } + private Guid EditingAuthorId { get; set; } private UpdateAuthorDto EditingAuthor { get; set; } @@ -1113,14 +1119,14 @@ namespace Acme.BookStore.Blazor.Pages EditAuthorModal.Hide(); } - protected virtual async Task CreateEntityAsync() + private async Task CreateAuthorAsync() { await AuthorAppService.CreateAsync(NewAuthor); await GetAuthorsAsync(); CreateAuthorModal.Hide(); } - protected virtual async Task UpdateAuthorAsync() + private async Task UpdateAuthorAsync() { await AuthorAppService.UpdateAsync(EditingAuthorId, EditingAuthor); await GetAuthorsAsync(); @@ -1130,8 +1136,12 @@ namespace Acme.BookStore.Blazor.Pages } ```` +This class typically defines the properties and methods used by the `Authors.razor` page. + ### Object Mapping +`Authors` class uses the `IObjectMapper` in the `OpenEditAuthorModal` method. So, we need to define this mapping. + Open the `BookStoreBlazorAutoMapperProfile.cs` in the `Acme.BookStore.Blazor` project and add the following mapping code in the constructor: ````csharp From 8cb762a56a14bdfd66b3c1db76167997e1900195 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 20 Sep 2020 12:52:05 +0300 Subject: [PATCH 29/31] Add "The Book List" section for the blazor. --- docs/en/Tutorials/Part-10.md | 36 +++++++++++++++--- ...lazor-bookstore-book-list-with-authors.png | Bin 0 -> 83953 bytes 2 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 docs/en/Tutorials/images/blazor-bookstore-book-list-with-authors.png diff --git a/docs/en/Tutorials/Part-10.md b/docs/en/Tutorials/Part-10.md index 9794644cd8..48a5a0ba9b 100644 --- a/docs/en/Tutorials/Part-10.md +++ b/docs/en/Tutorials/Part-10.md @@ -50,21 +50,21 @@ public Guid AuthorId { get; set; } {{if DB=="EF"}} -> In this tutorial, we preferred to not add a **navigation property** to the `Author` entity (like `public Author Author { get; set; }`). This is due to follow the DDD best practices (rule: refer to other aggregates only by id). However, you can add such a navigation property and configure it for the EF Core. In this way, you don't need to write join queries while getting books with their entities (just like we will done below) which makes your application code simpler. +> In this tutorial, we preferred to not add a **navigation property** to the `Author` entity from the `Book` class (like `public Author Author { get; set; }`). This is due to follow the DDD best practices (rule: refer to other aggregates only by id). However, you can add such a navigation property and configure it for the EF Core. In this way, you don't need to write join queries while getting books with their authors (just like we will done below) which makes your application code simpler. {{end}} ## Database & Data Migration -Added a new, required `AuthorId` property to the `Book` entity. But, what about the existing books on the database? They currently don't have `AuthorId`s and this will be a problem when we try to run the application. +Added a new, required `AuthorId` property to the `Book` entity. But, **what about the existing books** on the database? They currently don't have `AuthorId`s and this will be a problem when we try to run the application. -This is a typical migration problem and the decision depends on your case; +This is a **typical migration problem** and the decision depends on your case; * If you haven't published your application to the production yet, you can just delete existing books in the database, or you can even delete the entire database in your development environment. -* You can do it programmatically on data migration or seed phase. +* You can update the existing data programmatically on data migration or seed phase. * You can manually handle it on the database. -We prefer to **delete the database** {{if DB=="EF"}}(run the `Drop-Database` in the *Package Manager Console*){{end}} since this is just an example project and data loss is not important. Since this topic is not related to the ABP Framework, we don't go deeper for all the scenarios. +We prefer to **delete the database** {{if DB=="EF"}}(you can run the `Drop-Database` in the *Package Manager Console*){{end}} since this is just an example project and data loss is not important. Since this topic is not related to the ABP Framework, we don't go deeper for all the scenarios. {{if DB=="EF"}} @@ -92,6 +92,8 @@ Run the following command in the Package Manager Console (of the Visual Studio) Add-Migration "Added_AuthorId_To_Book" ```` +> Ensure that the `Acme.BookStore.EntityFrameworkCore.DbMigrations` is the Default project and the `Acme.BookStore.DbMigrator` is the startup project, as always. + This should create a new migration class with the following code in its `Up` method: ````csharp @@ -206,6 +208,8 @@ namespace Acme.BookStore The only change is that we set the `AuthorId` properties of the `Book` entities. +> Delete existing books or delete the database before executing the `DbMigrator`. See the *Database & Data Migration* section above for more info. + {{if DB=="EF"}} You can now run the `.DbMigrator` console application to **migrate** the **database schema** and **seed** the initial data. @@ -283,7 +287,7 @@ namespace Acme.BookStore.Books } ```` -This will be used in a new method will be added to the `IBookAppService`. +This will be used in a new method that will be added to the `IBookAppService`. ### IBookAppService @@ -1052,4 +1056,24 @@ Open the `/src/app/book/book.component.html` and add the following form group ju That's all. Just run the application and try to create or edit an author. +{{end}} + +{{if UI == "Blazor"}} + +### The Book List + +It is very easy to show the *Author Name* in the book list. Open the `/Pages/Books.razor` file in the `Acme.BookStore.Blazor` project and add the following `DataGridColumn` definition just after the `Name` (book name) column: + +````xml + +```` + +When you run the application, you can see the *Author* column on the table: + +![blazor-bookstore-book-list-with-authors](images/blazor-bookstore-book-list-with-authors.png) + + + {{end}} \ No newline at end of file diff --git a/docs/en/Tutorials/images/blazor-bookstore-book-list-with-authors.png b/docs/en/Tutorials/images/blazor-bookstore-book-list-with-authors.png new file mode 100644 index 0000000000000000000000000000000000000000..75c5306c3cb3064ec008010e48ec71776dc9e143 GIT binary patch literal 83953 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 Date: Sun, 20 Sep 2020 13:22:18 +0300 Subject: [PATCH 30/31] Completed the part 10 for the blazor UI --- docs/en/Tutorials/Part-10.md | 88 ++++++++++++++++++ .../images/book-create-modal-with-author.png | Bin 0 -> 32773 bytes 2 files changed, 88 insertions(+) create mode 100644 docs/en/Tutorials/images/book-create-modal-with-author.png diff --git a/docs/en/Tutorials/Part-10.md b/docs/en/Tutorials/Part-10.md index 48a5a0ba9b..2e0b1c4939 100644 --- a/docs/en/Tutorials/Part-10.md +++ b/docs/en/Tutorials/Part-10.md @@ -1074,6 +1074,94 @@ When you run the application, you can see the *Author* column on the table: ![blazor-bookstore-book-list-with-authors](images/blazor-bookstore-book-list-with-authors.png) +### Create Book Modal +Add the following field to the `@code` section of the `Books.razor` file: + +````csharp +IReadOnlyList authorList = Array.Empty(); +```` + +And fill it in the `OnInitializedAsync` method, by adding the following code to the end of the method: + +````csharp +authorList = (await AppService.GetAuthorLookupAsync()).Items; +```` + +The final `@code` block should be the following: + +````csharp +@code +{ + bool canCreateBook; + bool canEditBook; + bool canDeleteBook; + + //ADDED A NEW FIELD + IReadOnlyList authorList = Array.Empty(); + + protected override async Task OnInitializedAsync() + { + await base.OnInitializedAsync(); + + canCreateBook = await + AuthorizationService.IsGrantedAsync(BookStorePermissions.Books.Create); + canEditBook = await + AuthorizationService.IsGrantedAsync(BookStorePermissions.Books.Edit); + canDeleteBook = await + AuthorizationService.IsGrantedAsync(BookStorePermissions.Books.Delete); + + //GET AUTHORS + authorList = (await AppService.GetAuthorLookupAsync()).Items; + } +} +```` + +Finally, add the following `Field` definition into the `ModalBody` of the *Create* modal, as the first item, before the `Name` field: + +````xml + + @L["Author"] + + +```` + +This requires to add a new localization key to the `en.json` file: + +````js +"PickAnAuthor": "Pick an author" +```` + +You can run the application to see the *Author Selection* while creating a new book: + +![book-create-modal-with-author](images/book-create-modal-with-author.png) + +### Edit Book Modal + +Add the following `Field` definition into the `ModalBody` of the *Edit* modal, as the first item, before the `Name` field: + +````xml + + @L["Author"] + + +```` + +That's all. We are reusing the `authorList` defined for the *Create* modal. {{end}} \ No newline at end of file diff --git a/docs/en/Tutorials/images/book-create-modal-with-author.png b/docs/en/Tutorials/images/book-create-modal-with-author.png new file mode 100644 index 0000000000000000000000000000000000000000..5e662553aab024486b21e13c3ea76b69e254186f GIT binary patch literal 32773 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 RfZx2Qs;H$ Date: Sun, 20 Sep 2020 13:30:03 +0300 Subject: [PATCH 31/31] Add MyProjectNameBlazorAutoMapperProfile to the Blazor project. --- .../MyProjectNameBlazorAutoMapperProfile.cs | 12 ++++++++++++ .../MyProjectNameBlazorModule.cs | 10 ++++++++++ .../MyProjectNameWebModule.cs | 1 - 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorAutoMapperProfile.cs diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorAutoMapperProfile.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorAutoMapperProfile.cs new file mode 100644 index 0000000000..e6c9d51544 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorAutoMapperProfile.cs @@ -0,0 +1,12 @@ +using AutoMapper; + +namespace MyCompanyName.MyProjectName.Blazor +{ + public class MyProjectNameBlazorAutoMapperProfile : Profile + { + public MyProjectNameBlazorAutoMapperProfile() + { + //Define your AutoMapper configuration here for the Blazor project. + } + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs index 486c74cffe..df234b5665 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs @@ -15,6 +15,7 @@ using Volo.Abp.Modularity; using Volo.Abp.UI.Navigation; using Volo.Abp.Identity.Blazor; using Volo.Abp.Account.Blazor; +using Volo.Abp.AutoMapper; namespace MyCompanyName.MyProjectName.Blazor { @@ -38,6 +39,7 @@ namespace MyCompanyName.MyProjectName.Blazor ConfigureRouter(context); ConfigureUI(builder); ConfigureMenu(context); + ConfigureAutoMapper(context); } private void ConfigureRouter(ServiceConfigurationContext context) @@ -86,6 +88,14 @@ namespace MyCompanyName.MyProjectName.Blazor }); } + private void ConfigureAutoMapper(ServiceConfigurationContext context) + { + Configure(options => + { + options.AddMaps(); + }); + } + public override void OnApplicationInitialization(ApplicationInitializationContext context) { context.ServiceProvider diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs index 8f63e0768f..e9bf54a468 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs @@ -107,7 +107,6 @@ namespace MyCompanyName.MyProjectName.Web Configure(options => { options.AddMaps(); - }); }