From f881251716ec6798165e9cef4998f203c1552dc8 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Thu, 4 May 2023 03:59:14 -0400 Subject: [PATCH 01/48] Add files via upload --- SRS.md | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 SRS.md diff --git a/SRS.md b/SRS.md new file mode 100644 index 00000000..eb0c540a --- /dev/null +++ b/SRS.md @@ -0,0 +1,79 @@ +# Software Requirements Specification Document + +This serves as a template for each projects' Software Requirements Specification (SRS) document. When filling this out, you will be required to create user stories, use cases, requirements, and a glossary of terms relevant to your project. Each group member must contribute to every section, so it is crucial that your group's GitHub repository shows a commit history that reflects the work of each group member. It is highly recommended that you create separate branches for each member, but since this is one single document, you will need to manually merge the branches together. It is also advisable to have multiple working versions of this document (named separately) so that one person can compile the final SRS document from the multiple working versions. Ultimately, how you go about managing this is up to you, but consistent formatting, clear commit messages, and a thorough commit history with contributions from each group member are required. + +Fill the document out following the guidelines listed in each section. Maintain [proper Markdown syntax](https://www.markdownguide.org/basic-syntax/) and be sure that your group has a `main` branch with this document and the entire [template repository codebase](https://github.com/david-gary/onlineStoreTemplate) either forked or downloaded and copied into your group's repository. If you have arranged to use a different codebase as a template, you do not need to have the original template included, but a `main` branch is still required. + +## Group Members + +* [Name](mailto:email@uncc.edu) +* [Name](mmailto:email@uncc.edu) +* [Name](mmailto:email@uncc.edu) +* [Name](mmailto:email@uncc.edu) + +## Revisions + +When a change is made to the document, a new revision should be created. The revision should be added to the table below with all information filled out. + +| Version | Date | Description | Author | Reviewed By | +| --- | --- | --- | --- | --- | +| 1.0 | 03/22/23 | Initial draft | [David Gary](mailto:dgary9@uncc.edu) | [David Gary](mailto:dgary@uncc.edu) | + +## Table of Contents + +1. [Introduction](#introduction) +2. [Requirements](#requirements) +3. [Constraints](#constraints) +4. [Use Cases](#use-cases) +5. [User Stories](#user-stories) +6. [Glossary](#glossary) + +## Introduction + +In this section, you should give a brief overview of what your project will be. Describe the software system you are building and what problems it solves. You should also give a short description of the stakeholders (users of the system) and what their needs are. There is no set formatting requirement, but you should maintain a consistent structure across future sections. Not all members must contribute to this section. + +## Requirements + +Each group member must supply at least three functional requirements for the project. Each requirement should be written in the following format: + +* **ID:** A unique identifier for the requirement. This should be a number that is unique across the entire document (something like REQ-1, REQ-2, etc. but be sure to replace the word `ID` with the unique identifier). + * **Description:** A short description of the requirement. This should be a single sentence that describes the requirement. Do not replace the word `Description` with the actual description. Put the description in the space where these instructions are written. Maintain that practice for all future sections. + * **Type:** The type of requirement. Should be either `Functional` or `Non-Functional`. + * **Priority:** The priority of the requirement. This should be a number between 1 and 5, with 1 being the highest priority and 5 being the lowest priority. + * **Rationale:** A short description of why the requirement is important. This should be a single sentence that describes why the requirement is important. + * **Testing:** A short description of how the requirement can be tested. This should be a single sentence that describes how the requirement can be tested. +* **ID:** A unique identifier for the requirement. This should be a number that is unique across the entire document (something like REQ-1, REQ-2, etc. but be sure to replace the word `ID` with the unique identifier). + * **Description:** A short description of the requirement. This should be a single sentence that describes the requirement. + * **Type:** The type of requirement. Should be either `Functional` or `Non-Functional`. + * **Priority:** The priority of the requirement. This should be a number between 1 and 5, with 1 being the highest priority and 5 being the lowest priority. + * **Rationale:** A short description of why the requirement is important. This should be a single sentence that describes why the requirement is important. + * **Testing:** A short description of how the requirement can be tested. This should be a single sentence that describes how the requirement can be tested. + +## Constraints + +In this section, you should list any constraints that you have for the project. Each group member must supply at least two constraints. These can be constraints on the project itself, the software system, or the stakeholders. Constraints can be anything that limits the scope of the project. For example, that this project's template code is written using Flask and Python constitutes a constraint on the backend of the project. Constraints can also be things like the required timeline of the project. Be creative. + +## Use Cases + +In this section, you should list use cases for the project. Use cases are a thorough description of how the system will be used. Each group member must supply at least two use cases. Each use case should be written in the following format: + +* **ID:** A unique identifier for the use case. This should be a number that is unique across the entire document (something like UC-1, UC-2, etc. but be sure to replace the word `ID` with the unique identifier). + * **Description:** A description of the use case that gives the user a high-level overview of how the system is interacted with. + * **Actors:** A list of the actors that are involved in the use case. Only include the actors that are directly involved. Actors are the people or things that interact with the system. For example, when ordering at a fast food restaurant, one might have the following actors: the customer, the cashier, and the cook. But only the customer and the cashier are directly involved in the use case of ordering food. The cook is not directly involved in the use case of ordering food. + * **Preconditions:** A list of the preconditions for the use case. This should be a list of the preconditions for the use case, which are the conditions that must be met before the use case can be executed. Continuing with the restaurant example, the customer must have money in their wallet and the cashier must be logged in to the system before the use case of ordering food can be executed. + * **Postconditions:** A list of the postconditions for the use case. This should be a list of the postconditions for the use case, which are the conditions that must be met after the use case has been executed. Continuing with the restaurant example, the customer must have their food and the cashier must have the customer's money after the use case of ordering food has been executed. + +## User Stories + +In this section, you should list user stories for the project. User stories are a short description of how a user will be interacting with the system. Each group member must supply at least two user stories. Each user story should be written in the following format: + +* **ID:** A unique identifier for the user story. This should be a number that is unique across the entire document (something like US-1, US-2, etc. but be sure to replace the word `ID` with the unique identifier). + * **Type of User:** The type of user that the user story is for. This should be a single word that describes the type of user. For example, a user story for a customer might be `Customer` and a user story for an administrator might be `Admin`. + * **Description:** A description of the user story that gives a narrative from that user's perspective. This can be any length, but it must paint the picture of what the user wants to do, how they intend to do it, why they want to, and what they expect to happen. + +## Glossary + +In this section, you should list any terms that are used in the document that may not be immediately obvious to a naive reader. Each group member must supply at least one term. Each term should be written in the following format: + +* **Term:** The term that is being defined. This should be a single word or phrase that is being defined. + * **Definition:** A definition of the term. This should be a short description of the term that is being defined. This should be a single sentence that describes the term. From 404c0789960ffe4039e38a048b3e0d45496ff537 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Thu, 4 May 2023 16:19:06 -0400 Subject: [PATCH 02/48] Update SRS.md --- SRS.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/SRS.md b/SRS.md index eb0c540a..a4418bb9 100644 --- a/SRS.md +++ b/SRS.md @@ -6,10 +6,7 @@ Fill the document out following the guidelines listed in each section. Maintain ## Group Members -* [Name](mailto:email@uncc.edu) -* [Name](mmailto:email@uncc.edu) -* [Name](mmailto:email@uncc.edu) -* [Name](mmailto:email@uncc.edu) +* [Vishal Dasari](mailto:vdasari1@uncc.edu) ## Revisions @@ -18,6 +15,7 @@ When a change is made to the document, a new revision should be created. The rev | Version | Date | Description | Author | Reviewed By | | --- | --- | --- | --- | --- | | 1.0 | 03/22/23 | Initial draft | [David Gary](mailto:dgary9@uncc.edu) | [David Gary](mailto:dgary@uncc.edu) | +| 1.1 | 03/23/23 | Added Name | [Vishal Dasari](mailto:vdasari1@uncc.edu) | [Vishal Dasari](mailto:vdasari1@uncc.edu) | ## Table of Contents From 7ade0d59b0dc4263f1e05ca28de30ec8eb709629 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Fri, 5 May 2023 14:39:29 -0400 Subject: [PATCH 03/48] Update SRS.md --- SRS.md | 175 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 151 insertions(+), 24 deletions(-) diff --git a/SRS.md b/SRS.md index a4418bb9..527b659f 100644 --- a/SRS.md +++ b/SRS.md @@ -15,7 +15,9 @@ When a change is made to the document, a new revision should be created. The rev | Version | Date | Description | Author | Reviewed By | | --- | --- | --- | --- | --- | | 1.0 | 03/22/23 | Initial draft | [David Gary](mailto:dgary9@uncc.edu) | [David Gary](mailto:dgary@uncc.edu) | -| 1.1 | 03/23/23 | Added Name | [Vishal Dasari](mailto:vdasari1@uncc.edu) | [Vishal Dasari](mailto:vdasari1@uncc.edu) | +| 1.1 | 04/23/23 | Added Name | [Vishal Dasari](mailto:vdasari1@uncc.edu) | [Vishal Dasari](mailto:vdasari1@uncc.edu) | +| 1.2 | 05/2/23 | Worked on Table of Contents (1-3) | [Vishal Dasari](mailto:vdasari1@uncc.edu) | [Vishal Dasari](mailto:vdasari1@uncc.edu) | +| 1.3 | 05/5/23 | Worked on Table of Contents (4-6) | [Vishal Dasari](mailto:vdasari1@uncc.edu) | [Vishal Dasari](mailto:vdasari1@uncc.edu) | ## Table of Contents @@ -27,51 +29,176 @@ When a change is made to the document, a new revision should be created. The rev 6. [Glossary](#glossary) ## Introduction - In this section, you should give a brief overview of what your project will be. Describe the software system you are building and what problems it solves. You should also give a short description of the stakeholders (users of the system) and what their needs are. There is no set formatting requirement, but you should maintain a consistent structure across future sections. Not all members must contribute to this section. +The software system that I will be building is an online gaming store. The program would display an image of the games a user could buy or rent. Stakeholders would be the users who would like to buy/rent the video games out. The stakeholder's needs would be the item that they would like to acquire. + ## Requirements Each group member must supply at least three functional requirements for the project. Each requirement should be written in the following format: -* **ID:** A unique identifier for the requirement. This should be a number that is unique across the entire document (something like REQ-1, REQ-2, etc. but be sure to replace the word `ID` with the unique identifier). - * **Description:** A short description of the requirement. This should be a single sentence that describes the requirement. Do not replace the word `Description` with the actual description. Put the description in the space where these instructions are written. Maintain that practice for all future sections. - * **Type:** The type of requirement. Should be either `Functional` or `Non-Functional`. - * **Priority:** The priority of the requirement. This should be a number between 1 and 5, with 1 being the highest priority and 5 being the lowest priority. - * **Rationale:** A short description of why the requirement is important. This should be a single sentence that describes why the requirement is important. - * **Testing:** A short description of how the requirement can be tested. This should be a single sentence that describes how the requirement can be tested. -* **ID:** A unique identifier for the requirement. This should be a number that is unique across the entire document (something like REQ-1, REQ-2, etc. but be sure to replace the word `ID` with the unique identifier). - * **Description:** A short description of the requirement. This should be a single sentence that describes the requirement. - * **Type:** The type of requirement. Should be either `Functional` or `Non-Functional`. - * **Priority:** The priority of the requirement. This should be a number between 1 and 5, with 1 being the highest priority and 5 being the lowest priority. - * **Rationale:** A short description of why the requirement is important. This should be a single sentence that describes why the requirement is important. - * **Testing:** A short description of how the requirement can be tested. This should be a single sentence that describes how the requirement can be tested. +**REQ-1:** Allow users to create an account and login. + * **Description:** To access an existing user information. + * **Type:** Functional + * **Priority:** 1 + * **Rationale:** Users need an account to purchase/rent games and access their saved games. + * **Testing:** Ensure the username and the password matches with our server +* **REQ-2:** Creating New Account + * **Description:** To have access to the respected user's page. + * **Type:** Functional + * **Priority:** 1 + * **Rationale:** Needed to access user's account + * **Testing:** Create an account and verify that login works as expected. +* **REQ-3: Display a list of available games for purchase/rental** + * **Description: User will be able to look at the latest updates games available** + * **Type:** Functional + * **Priority:** 1 + * **Rationale:** This is the core functionality of the system. + * **Testing:** Ensure that the list of games displayed is accurate and up-to-date. +* **REQ-4: Allow users to add game(s) to the shopping cart** + * **Description: To have access to adding games to your shopping cart. + * **Type:** Functional. + * **Priority:** 1 + * **Rationale:** Users may want to save games for later or purchase multiple games at once. + * **Testing:** Add a game to the cart/wish list and verify that it is displayed in the appropriate section. +* **REQ-5**: Allow users to filter games based on genre. + * **Description:** User will be able to filter thorugh different genres. + * **Type:** Functional + * **Priority:** 2 + * **Rationale:** Users may want to browse games within a specific genre. + * **Testing:** Check if the filter displays only games that match the selected genre. +* **REQ-6**: Allow users to search for games by title or keyword. + * **Description**: Displays current book info + * **Type:** Functional + * **Priority:** 2 + * **Rationale:** Users may want to search for specific games they have in mind. + * **Testing:** Search for a known game title and verify that it is displayed in the search results. +* **REQ-7** Display game details such as title, description, release date, and rating. + * **Description:** Allows users to learn more about the game, ratings, and price etc. + * **Type:** Functional + * **Priority:** 2 + * **Rationale:** Users need to know more about a game before deciding to purchase/rent it. + * **Testing:** Verify that game details displayed are accurate and match the selected game. +* **REQ-8** Allow users to view their order history. + * **Description:** Displays user's order history. + * **Type:** Fuctional + * **Priority:** 2 + * **Rationale:** Users may want to view past purchases or rentals. + * **Testing:** Verify that the order history displays accurate information about past purchases/rentals. +* **REQ-9** Rate/Review games. + * **Description:** Allow users to rate and review games. + * **Type:** Functional + * **Priority:** 3 + * **Rationale:** User reviews and ratings can help other users make informed decisions. + * **Testing:** Verify that users can rate and review games, and that the ratings and reviews are displayed correctly. +* **REQ-10** Provide customer support and contact information + * **Description:** Provides customer support and contact information to the user + * **Type:** Functional + * **Priority:** 4 + * **Rationale:** Users may need help with purchasing or rental issues. + * **Testing:** Verify that the customer support and contact information is accurate and up-to-date. +* **REQ-11** Shipping Information + * **Description:** Asks user to enter your shipping information. + * **Type:** Functional + * **Priority:** 4 + * **Rationale:** Users will get this option at the time of the payment. + * **Testing:** Enter the shiping information and see that it shows in the system. +* **REQ-12** Payment Method/Information + * **Description:** Asks the user for their payment information. + * **Type:** `Functional` + * **Priority:** 4 + * **Rationale:** It is one of the last steps for buying a game. + * **Testing:** Verify the payment information in the system. ## Constraints In this section, you should list any constraints that you have for the project. Each group member must supply at least two constraints. These can be constraints on the project itself, the software system, or the stakeholders. Constraints can be anything that limits the scope of the project. For example, that this project's template code is written using Flask and Python constitutes a constraint on the backend of the project. Constraints can also be things like the required timeline of the project. Be creative. +* **Constraint 1:** +I am able to use either python, html, javascript, or flask only. +* **Constraint 2:** +I am working alone in this project +* **Constraint 3:** +No discussion or guidance from my groupmates for any cross-reference. +* **Constraint 4:** +The website should not crash +* **Constraint 5:** +The entire project should be finished within last day of final project submission. + ## Use Cases In this section, you should list use cases for the project. Use cases are a thorough description of how the system will be used. Each group member must supply at least two use cases. Each use case should be written in the following format: -* **ID:** A unique identifier for the use case. This should be a number that is unique across the entire document (something like UC-1, UC-2, etc. but be sure to replace the word `ID` with the unique identifier). - * **Description:** A description of the use case that gives the user a high-level overview of how the system is interacted with. - * **Actors:** A list of the actors that are involved in the use case. Only include the actors that are directly involved. Actors are the people or things that interact with the system. For example, when ordering at a fast food restaurant, one might have the following actors: the customer, the cashier, and the cook. But only the customer and the cashier are directly involved in the use case of ordering food. The cook is not directly involved in the use case of ordering food. - * **Preconditions:** A list of the preconditions for the use case. This should be a list of the preconditions for the use case, which are the conditions that must be met before the use case can be executed. Continuing with the restaurant example, the customer must have money in their wallet and the cashier must be logged in to the system before the use case of ordering food can be executed. - * **Postconditions:** A list of the postconditions for the use case. This should be a list of the postconditions for the use case, which are the conditions that must be met after the use case has been executed. Continuing with the restaurant example, the customer must have their food and the cashier must have the customer's money after the use case of ordering food has been executed. +* **UC-1:** User Account Creation + * **Description:** A new user creates an account to access the system. + * **Actors:** User + * **Preconditions:** None + * **Postconditions:** The user has successfully created an account and can log in to the system. +* **UC-2:** User Login + * **Description:** An existing user logs into their account to access the system. + * **Actors:** User + * **Preconditions:** The user must have already created an account. + * **Postconditions:** The user has successfully logged in and can access their account page. +* **UC-3:** Browse Games + * **Description:** A user browses through the available games on the system. + * **Actors:** User + * **Preconditions:** The user must be logged in. + * **Postconditions:** The user has browsed through the available games and can view more details about a specific game. +* **UC-4:** Purchase/Rent Game + * **Description:** A user purchases or rents a game. + * **Actors:** User + * **Preconditions:** The user must be logged in and have selected a game to purchase or rent. + * **Postconditions:** The user has successfully purchased or rented a game and can access it in their account. +* **UC-5:** View Order History + * **Description:** A user views their order history. + * **Actors:** User + * **Preconditions:** The user must be logged in and have made previous purchases/rentals. + * **Postconditions:** The user has successfully viewed their order history. +* **UC-6:** Provide Customer Support + * **Description:** A user contacts customer support for assistance. + * **Actors:** User, Customer Support Representative + * **Preconditions:** The user must be logged in and have an issue that requires assistance. + * **Postconditions:** The user's issue is resolved or a solution is provided to the user. +* **UC-7:** Enter Shipping Information + * **Description:** User enters shipping information during the checkout process. + * **Actors:** User + * **Preconditions:** User has selected the game they wish to purchase and has proceeded to the checkout process. + * **Postconditions:** User's shipping information is saved in the system and is displayed on the order confirmation page. + * **UC-8:** Enter Payment Information + * **Description:** User enters payment information during the checkout process. + * **Actors:** User + * **Preconditions:** User has selected the game they wish to purchase, has entered their shipping information, and has proceeded to the payment section of the checkout process. + * **Postconditions:** User's payment information is saved in the system, the payment is processed, and the user is redirected to the order confirmation page. ## User Stories In this section, you should list user stories for the project. User stories are a short description of how a user will be interacting with the system. Each group member must supply at least two user stories. Each user story should be written in the following format: -* **ID:** A unique identifier for the user story. This should be a number that is unique across the entire document (something like US-1, US-2, etc. but be sure to replace the word `ID` with the unique identifier). - * **Type of User:** The type of user that the user story is for. This should be a single word that describes the type of user. For example, a user story for a customer might be `Customer` and a user story for an administrator might be `Admin`. - * **Description:** A description of the user story that gives a narrative from that user's perspective. This can be any length, but it must paint the picture of what the user wants to do, how they intend to do it, why they want to, and what they expect to happen. +* **US-1:** + * **Type of User:** Customer + * **Description:** As a customer, I want to be able to filter games by genre so that I can find games that fit my interests easily. I expect to see a list of games that match my chosen genre. +* **US-2:** + * **Type of User:** Customer + * **Description:** As a customer, I want to be able to search for games by title so that I can find a specific game I'm interested in. I expect to be able to see the game's details once I've found it. +* **US-3:** + * **Type of User:** Customer + * **Description:** As a customer, I want to be able to see the system requirements for a game so that I can determine if my computer can run it. I expect to see a clear list of minimum and recommended requirements. +* **US-4:** + * **Type of User:** Customer + * **Description:** As a customer, I want to be able to read reviews and ratings from other users before deciding to purchase or rent a game. I expect to see an overall rating and a selection of reviews. +* **US-5:** + * **Type of User:** Customer + * **Description:** As a customer, I want to be able to see my cart's contents at all times and the total cost so that I can keep track of my purchases. I expect to be able to easily remove items from my cart if needed. ## Glossary In this section, you should list any terms that are used in the document that may not be immediately obvious to a naive reader. Each group member must supply at least one term. Each term should be written in the following format: -* **Term:** The term that is being defined. This should be a single word or phrase that is being defined. - * **Definition:** A definition of the term. This should be a short description of the term that is being defined. This should be a single sentence that describes the term. +* **Term:** User + * **Definition:** A person who interacts with the system to browse and purchase games. +* **Term:** Account + * **Definition:** A user's personal profile in the system that contains their personal information and order history. +* **Term:** Checkout Process + * **Definition:** The series of steps that a user must follow to complete a purchase or rental of a game, including entering shipping and payment information. +* **Term:** Customer Support Representative + * **Definition:** An individual who assists users in resolving issues and answering questions related to the system From d4e6b47e4ccaaad6403280c07bc25c6fd14f9e7d Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Fri, 5 May 2023 14:51:27 -0400 Subject: [PATCH 04/48] Add files via upload --- diagrams.md | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 diagrams.md diff --git a/diagrams.md b/diagrams.md new file mode 100644 index 00000000..2b60590b --- /dev/null +++ b/diagrams.md @@ -0,0 +1,138 @@ +# Project 2: Design + +## Introduction + +In this phase, you will be mapping out your project and creating easily understandable diagrams that will help you and your team know your codebase inside and out. This also makes it much easier to communicate the flow of your application to less technical audiences or anyone who is new to your project. We will be using `pyreverse` and `plantuml` to help us create, update, and visualize our diagrams. + +This activity will require you to generate Class, Package, Use Case, and Sequence diagrams for your project. If you are unfamiliar with these diagrams, you can find an in-depth explanation of each diagram type [here](https://www.uml-diagrams.org/) or reference [this article](https://nulab.com/learn/software-development/uml-diagrams-guide/). + +## Task 1: Installations + +- Use `pip` to install the following packages: + - `pylint==2.17.1` + - `plantuml==0.3.0` +- Add both of these packages to your `requirements.txt` file, including the version numbers. Follow the format of the `flask` package in the file. +- Install `Graphviz` on your machine. You can find download instructions for your operating system [here](https://graphviz.org/download/). + +## Task 2: Initial Structure Diagrams + +- Each group member will create diagrams for at least one of the following subdirectories/files of your project: + - `authentication`: requires a package diagram + - `core`: requires both a package diagram and a class diagram + - `database`: requires both a package diagram and a class diagram + - `testing`: requires a package diagram + +All of the above diagrams must be generated, so split this work evenly and push and pull code often. To generate a class diagram for a subdirectory or file, you must first generate the `plantuml` files using `pyreverse`. Then, you must use `plantuml` to generate the diagram from the `plantuml` file. Here's an example of how to do this for the package diagram in the `testing` subdirectory. + +```bash +pyreverse --output puml --colorized -A --output-directory testing testing # generates testing/packages.puml +python3.10 -m plantuml testing/packages.puml # generates testing/packages.png +``` + +Since `testing` has no classes, we do not need a class diagram, but if we did, we would change the `testing/packages.puml` to `testing/classes.puml` in the last command. + +- Delete the `.puml` files that do not have a corresponding `.png` file. For example, since `testing` has no classes, we would delete `testing/classes.puml`. +- For each subdirectory, create copies of the `.puml` and `.png` files with naming schemes that include `_initial` in the name. + - For example, `testing/packages.puml` would have a copy called `testing/package_initial.puml` and `testing/packages.png` would have a copy called `testing/package_initial.png`. + +## Task 3: Update Structure Diagrams + +- Begin planning the implentations necessary to fulfill requirements listed in your `SRS.md` file. +- Go to the corresponding subdirectory, and update the `.puml` file to reflect the changes you have planned. + - For example, by implementing a method called `delete_cart` in the `UserSession` class from `core`, my `core/classes.puml` file would look like the one shown below because I added a line to the `UserSession` class that says `delete_cart(id: str) -> None`. + - [PlantUML class diagram documentation](https://plantuml.com/class-diagram) +- Be sure to regenerate the `.png` file for each subdirectory after you update the corresponding `.puml` file. + +```plantuml +@startuml classes +set namespaceSeparator none +class "Sessions" as store.core.session.Sessions #aliceblue { + sessions : dict + add_new_session(username: str, db: Database) -> None + get_all_sessions() -> dict + get_session(username: str) -> UserSession + remove_session(username: str) -> None +} +class "UserSession" as store.core.session.UserSession #aliceblue { + cart : dict + date : datetime, NoneType + db + total_cost : int + username : str + add_new_item(id: str, name: str, price: int, quantity: int, discount: float, tax_rate: float) -> None + empty_cart() -> dict + is_item_in_cart(id: str) -> bool + remove_item(id: str) -> None + delete_cart(id: str) -> None + submit_cart() -> None + update_item_quantity(id: str, change_to_quantity: int) -> None + update_total_cost() -> None +} +@enduml +``` + +## Task 4: Use Case Diagrams + +- Create a `diagrams` subdirectory from the project root directory, and navigate to it. +- Create a `cases` subdirectory from the `diagrams` subdirectory and navigate to it. +- For each user type (actor) mentioned in your `SRS.md` file, create an appropriately named `.puml` file showcasing the use cases for that actor. + - For example, if I had an actor called `Customer`, I might create a file called `customer.puml` that looks like the template below. + - [PlantUML use case diagram documentation](https://plantuml.com/use-case-diagram) +- Generate a `.png` file from the `.puml` file. + - Remember, this will look something like: `python3.10 -m plantuml customer.puml` + +```plantuml +@startuml customer +left to right direction +actor Customer +rectangle "System" as system { + (Login) + (Register) + (View Cart) + (View Items) + (View Orders) + (View Profile) + (Logout) +} +Customer --> (Login) +Customer --> (Register) +Customer --> (View Cart) +Customer --> (View Items) +Customer --> (View Orders) +Customer --> (View Profile) +Customer --> (Logout) +@enduml +``` + +## Task 5: Sequence Diagrams + +- Create a `sequences` subdirectory from the `diagrams` subdirectory and navigate to it. +- For each of the use cases shown in your use case diagrams, create an appropriately named `.puml` file showcasing the sequence of events for that use case and generate its corresponding `.png` file. + - For example, if I had a use case called `Login`, I might create a file called `login.puml` that looks like the template below. + - [PlantUML sequence diagram documentation](https://plantuml.com/sequence-diagram) + +```plantuml +@startuml login +actor Customer +boundary "System" as system +control "Sessions" as sessions +control "Authentication" as auth +Customer -> system: Login +activate system +system -> auth: login_pipeline(username, password) +activate auth +auth --> system: True +deactivate auth +system -> sessions: add_new_session(username, db) +activate sessions +sessions --> system: None +deactivate sessions +system -> system: redirect to home page +deactivate system +@enduml +``` + +## Submission Details + +- On Canvas, submit the following: + - the URL to your group's repository From 8cf585edfc354ae0a68de7e985a08192ac8c00d2 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Fri, 5 May 2023 15:07:04 -0400 Subject: [PATCH 05/48] Update requirements.txt --- requirements.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index c39f059d..b072d02c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,3 @@ -flask==2.2.2 \ No newline at end of file +flask==2.2.2 +pylint==2.17.1 +plantuml==0.3.0 From 7f80af4c10b9c8581ed3c93923ff1ceb8d25d605 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 21:22:03 -0400 Subject: [PATCH 06/48] Create packages_initial.puml addinf plantuml files --- authentication/packages_initial.puml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 authentication/packages_initial.puml diff --git a/authentication/packages_initial.puml b/authentication/packages_initial.puml new file mode 100644 index 00000000..80d19a41 --- /dev/null +++ b/authentication/packages_initial.puml @@ -0,0 +1,7 @@ +@startuml packages +set namespaceSeparator none +package "authentication" as authentication #aliceblue { +} +package "authentication.authTools" as authentication.authTools #aliceblue { +} +@enduml From d9dc1503831c5380885ba6f234b4c77d7aa4c9f8 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 21:25:30 -0400 Subject: [PATCH 07/48] adding plantuml files --- authentication/packages_initial.png | Bin 0 -> 2736 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 authentication/packages_initial.png diff --git a/authentication/packages_initial.png b/authentication/packages_initial.png new file mode 100644 index 0000000000000000000000000000000000000000..f20677a044d184c0b4a36f058de248dcbd67b95c GIT binary patch literal 2736 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 literal 0 HcmV?d00001 From c01f9fdcfb81db71fd96d8705206bba6e8aeeaee Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 21:26:35 -0400 Subject: [PATCH 08/48] adding plantuml files --- authentication/packages.puml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 authentication/packages.puml diff --git a/authentication/packages.puml b/authentication/packages.puml new file mode 100644 index 00000000..80d19a41 --- /dev/null +++ b/authentication/packages.puml @@ -0,0 +1,7 @@ +@startuml packages +set namespaceSeparator none +package "authentication" as authentication #aliceblue { +} +package "authentication.authTools" as authentication.authTools #aliceblue { +} +@enduml From 7934f54e51bbbd5e5e185ebdd25cc3f642de62b6 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 21:27:42 -0400 Subject: [PATCH 09/48] adding plantuml files --- authentication/packages.png | Bin 0 -> 2736 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 authentication/packages.png diff --git a/authentication/packages.png b/authentication/packages.png new file mode 100644 index 0000000000000000000000000000000000000000..f20677a044d184c0b4a36f058de248dcbd67b95c GIT binary patch literal 2736 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 literal 0 HcmV?d00001 From 3a27d2140a113f9152194cc6c6ff35c3caa74515 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 21:32:27 -0400 Subject: [PATCH 10/48] adding plantuml files --- core/packages_initial.puml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 core/packages_initial.puml diff --git a/core/packages_initial.puml b/core/packages_initial.puml new file mode 100644 index 00000000..9ffa5cec --- /dev/null +++ b/core/packages_initial.puml @@ -0,0 +1,10 @@ +@startuml packages +set namespaceSeparator none +package "core" as core #aliceblue { +} +package "core.session" as core.session #aliceblue { +} +package "core.utils" as core.utils #aliceblue { +} +core.session --> core.utils +@enduml From 5690a6463492c1c0053633f097c239c56aea169c Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 21:33:15 -0400 Subject: [PATCH 11/48] adding plantuml files --- core/packages_initial.png | Bin 0 -> 3926 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 core/packages_initial.png diff --git a/core/packages_initial.png b/core/packages_initial.png new file mode 100644 index 0000000000000000000000000000000000000000..d68ad8e717bd69b71ddbdb9d674cd96d3c88c14c GIT binary patch literal 3926 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 literal 0 HcmV?d00001 From ccd16ba54fe06b4ec6ad95f00e23c1f17bbc2dce Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 21:34:08 -0400 Subject: [PATCH 12/48] adding plantuml files --- core/packages.puml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 core/packages.puml diff --git a/core/packages.puml b/core/packages.puml new file mode 100644 index 00000000..9ffa5cec --- /dev/null +++ b/core/packages.puml @@ -0,0 +1,10 @@ +@startuml packages +set namespaceSeparator none +package "core" as core #aliceblue { +} +package "core.session" as core.session #aliceblue { +} +package "core.utils" as core.utils #aliceblue { +} +core.session --> core.utils +@enduml From 098bd08e161569affb86eadc77c227df421246af Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 21:35:34 -0400 Subject: [PATCH 13/48] adding plantuml files --- core/packages.png | Bin 0 -> 3926 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 core/packages.png diff --git a/core/packages.png b/core/packages.png new file mode 100644 index 0000000000000000000000000000000000000000..d68ad8e717bd69b71ddbdb9d674cd96d3c88c14c GIT binary patch literal 3926 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 literal 0 HcmV?d00001 From decae2505a6c270f57d0aa31be6afbbb487c5327 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 21:37:44 -0400 Subject: [PATCH 14/48] Create classes_intial.puml adding plantuml files --- core/classes_intial.puml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 core/classes_intial.puml diff --git a/core/classes_intial.puml b/core/classes_intial.puml new file mode 100644 index 00000000..9c62d774 --- /dev/null +++ b/core/classes_intial.puml @@ -0,0 +1,24 @@ +@startuml classes +set namespaceSeparator none +class "Sessions" as core.session.Sessions #aliceblue { + sessions : dict + add_new_session(username: str, db: Database) -> None + get_all_sessions() -> dict + get_session(username: str) -> UserSession + remove_session(username: str) -> None +} +class "UserSession" as core.session.UserSession #aliceblue { + cart : dict + date : datetime, NoneType + db : Database + total_cost : int + username : str + add_new_item(id: str, name: str, price: int, quantity: int, discount: float, tax_rate: float) -> None + empty_cart() -> dict + is_item_in_cart(id: str) -> bool + remove_item(id: str) -> None + submit_cart() -> None + update_item_quantity(id: str, change_to_quantity: int) -> None + update_total_cost() -> None +} +@enduml From 66b5f28ba902dc80896ddfa82208ef6d32a023f9 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 22:03:47 -0400 Subject: [PATCH 15/48] Create classes.puml --- core/classes.puml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 core/classes.puml diff --git a/core/classes.puml b/core/classes.puml new file mode 100644 index 00000000..9c62d774 --- /dev/null +++ b/core/classes.puml @@ -0,0 +1,24 @@ +@startuml classes +set namespaceSeparator none +class "Sessions" as core.session.Sessions #aliceblue { + sessions : dict + add_new_session(username: str, db: Database) -> None + get_all_sessions() -> dict + get_session(username: str) -> UserSession + remove_session(username: str) -> None +} +class "UserSession" as core.session.UserSession #aliceblue { + cart : dict + date : datetime, NoneType + db : Database + total_cost : int + username : str + add_new_item(id: str, name: str, price: int, quantity: int, discount: float, tax_rate: float) -> None + empty_cart() -> dict + is_item_in_cart(id: str) -> bool + remove_item(id: str) -> None + submit_cart() -> None + update_item_quantity(id: str, change_to_quantity: int) -> None + update_total_cost() -> None +} +@enduml From 97c601ffebd3615fb152cf1246f039e1da010c23 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 22:11:10 -0400 Subject: [PATCH 16/48] adding plantuml files --- database/packages_initial.puml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 database/packages_initial.puml diff --git a/database/packages_initial.puml b/database/packages_initial.puml new file mode 100644 index 00000000..841a5b84 --- /dev/null +++ b/database/packages_initial.puml @@ -0,0 +1,7 @@ +@startuml packages +set namespaceSeparator none +package "database" as database #aliceblue { +} +package "database.db" as database.db #aliceblue { +} +@enduml From 459cd041f4604128b13f0c2f8e8526b3ef9e3d7b Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 22:12:36 -0400 Subject: [PATCH 17/48] adding plantuml files --- database/packages_initial.png | Bin 0 -> 2273 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 database/packages_initial.png diff --git a/database/packages_initial.png b/database/packages_initial.png new file mode 100644 index 0000000000000000000000000000000000000000..32788095533992382e1b811449569191b26fea42 GIT binary patch literal 2273 zcmeHJ`8OMi5{_!MsG{wSy;8C7)zYVFa7$WA?OH_a#F~XRme{VPwN!Npp`J>qt@a3F zd$g+7xU>|FT^H(>kRnL9ZhGE%|Hb=Z<~wK3oNvzgX3or{+u7U@6Ok1G003feOA7}+ zZt~6S#F1ZqaH4?^ngo~&!51G&#Gw5NfE#EW`i?gN?FaH9f&vMI(7RXk^g=P-I6^oU zqw9;uMhp)s0ssOhf^NAG{uc)b@Oh%1qaSx6y3Hg~)_G^mJCsv}P^FeOuo?us@LAao z+#sbipGk$FB-yjG>QI-*ho@F}TG1kT^Z!y#-D<9xaA$!LM17Dl6l3s6|v-}ujur#nPt267fX?qW-RmltH*t| zy}lgTkqjVng+x4wJ~B_GN&tZ49&n4_Z$){mJrBa%x_!3qxMdN>VNj|4dSRfMRkljJ z{ypj9l)&8*rHuFwg`gx5C=pP)M#vleoi2a~QVF~%Sc5_9Ie?B#B$$P{9LZKf6)!+)u#OHyS8%15t-1*G~dmkSq&)~+=@^MG zm3aI1?bs%Ja;+2NP(ZD$5 zhM)5xm-n?|3=;m=Oq+H7TR~z4AIo}IQE)*mHl-Kd3QfVfaK_~ zn^dgUQDda9F&GPd*zXEdW;)}Ei{>W{8^ABD^1GatMp80i*eQAqaijmtTkvUd&g*yO zV*#osqo(|TE+-vNDVnbQ!Qsxv)YqWa|7M+lkP3Ff`*x#PxfrI0gNMiPq`b-swn@#! z{(P+(E$0}V(@851#qM6M2g_wNH;~t~p_hEVG72D(LDRMF7>u@jU7I_@X^4q6k@oyt zw&Puh+(?Lt?|0`Gx|yUHZMARh&J&FOTYU!QkXNW5nomur2lF z&}4U7HTt}Y9K|jQZPw0N>w6d@Zqoj(e57?^DNKvg4EgRAE37`^H-VkU@8vhg>xVhG z^*t({lNY{smu%Fwq$P@*{(GkB$CqQU>4l2=k7O}h zEnl>$XPXcY?V^q`SZF#)AHnqKpN{va_n*CAiRz8KqRO96F6W1ME+8Pc##OYo>%NtL zR{_B2L!S-hKJOi5{ZVR1EBl;r4C_eLbn=eTC)S&a=i7UpL#Q-tWveH?d3ujld|sy} zMT6Sv_u_#WEUzvVoRo9S*68X(6N-V3N#_}itOs#B{1A`z(wJ=vPaS{5V-BvmMaVyE z2MOC4;^$^KBhL1TLUP}*bM%n@_ls0RAzR0bxzsAr00pQ$do=Co#@561^hBhWikx`+ zdg92b6yDMQ?04uBq%qA0A>JjW0UyW5+2qTujg3<+BD|cb67|jP(0kLgg@FkYxNq<# z0r$rvXQ^ zrG!ZVfj@gL*J%4RX}=B53(s1^zMBVUsbsk5WKdoGXZ-{j&MlQyReRigyNP;NU{UkX z=zvLNtEQgb-=&BlWCOezi26 zGs=*Gsmmnm9+aqvNR;Ep{?Gia_{jiaB#v=>dyqVnh7PMjpU23kpc1+l7p(2UG*@5? zIvXSKNfoA4g-%3W9{?s`9hCncPV!SLM^54J1#eVgw3cz21l{Thrq3tfo3%IvFKHx& z*U{Ac%oi{Nr6cOiZw)89<53T?LMD$xNFBEn+fa Date: Tue, 9 May 2023 22:13:24 -0400 Subject: [PATCH 18/48] adding plantuml files --- database/packages.puml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 database/packages.puml diff --git a/database/packages.puml b/database/packages.puml new file mode 100644 index 00000000..841a5b84 --- /dev/null +++ b/database/packages.puml @@ -0,0 +1,7 @@ +@startuml packages +set namespaceSeparator none +package "database" as database #aliceblue { +} +package "database.db" as database.db #aliceblue { +} +@enduml From 9d04490915e835b795f959f3131cb10c40f4501e Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 22:14:21 -0400 Subject: [PATCH 19/48] adding plantuml files --- database/packages.png | Bin 0 -> 2273 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 database/packages.png diff --git a/database/packages.png b/database/packages.png new file mode 100644 index 0000000000000000000000000000000000000000..32788095533992382e1b811449569191b26fea42 GIT binary patch literal 2273 zcmeHJ`8OMi5{_!MsG{wSy;8C7)zYVFa7$WA?OH_a#F~XRme{VPwN!Npp`J>qt@a3F zd$g+7xU>|FT^H(>kRnL9ZhGE%|Hb=Z<~wK3oNvzgX3or{+u7U@6Ok1G003feOA7}+ zZt~6S#F1ZqaH4?^ngo~&!51G&#Gw5NfE#EW`i?gN?FaH9f&vMI(7RXk^g=P-I6^oU zqw9;uMhp)s0ssOhf^NAG{uc)b@Oh%1qaSx6y3Hg~)_G^mJCsv}P^FeOuo?us@LAao z+#sbipGk$FB-yjG>QI-*ho@F}TG1kT^Z!y#-D<9xaA$!LM17Dl6l3s6|v-}ujur#nPt267fX?qW-RmltH*t| zy}lgTkqjVng+x4wJ~B_GN&tZ49&n4_Z$){mJrBa%x_!3qxMdN>VNj|4dSRfMRkljJ z{ypj9l)&8*rHuFwg`gx5C=pP)M#vleoi2a~QVF~%Sc5_9Ie?B#B$$P{9LZKf6)!+)u#OHyS8%15t-1*G~dmkSq&)~+=@^MG zm3aI1?bs%Ja;+2NP(ZD$5 zhM)5xm-n?|3=;m=Oq+H7TR~z4AIo}IQE)*mHl-Kd3QfVfaK_~ zn^dgUQDda9F&GPd*zXEdW;)}Ei{>W{8^ABD^1GatMp80i*eQAqaijmtTkvUd&g*yO zV*#osqo(|TE+-vNDVnbQ!Qsxv)YqWa|7M+lkP3Ff`*x#PxfrI0gNMiPq`b-swn@#! z{(P+(E$0}V(@851#qM6M2g_wNH;~t~p_hEVG72D(LDRMF7>u@jU7I_@X^4q6k@oyt zw&Puh+(?Lt?|0`Gx|yUHZMARh&J&FOTYU!QkXNW5nomur2lF z&}4U7HTt}Y9K|jQZPw0N>w6d@Zqoj(e57?^DNKvg4EgRAE37`^H-VkU@8vhg>xVhG z^*t({lNY{smu%Fwq$P@*{(GkB$CqQU>4l2=k7O}h zEnl>$XPXcY?V^q`SZF#)AHnqKpN{va_n*CAiRz8KqRO96F6W1ME+8Pc##OYo>%NtL zR{_B2L!S-hKJOi5{ZVR1EBl;r4C_eLbn=eTC)S&a=i7UpL#Q-tWveH?d3ujld|sy} zMT6Sv_u_#WEUzvVoRo9S*68X(6N-V3N#_}itOs#B{1A`z(wJ=vPaS{5V-BvmMaVyE z2MOC4;^$^KBhL1TLUP}*bM%n@_ls0RAzR0bxzsAr00pQ$do=Co#@561^hBhWikx`+ zdg92b6yDMQ?04uBq%qA0A>JjW0UyW5+2qTujg3<+BD|cb67|jP(0kLgg@FkYxNq<# z0r$rvXQ^ zrG!ZVfj@gL*J%4RX}=B53(s1^zMBVUsbsk5WKdoGXZ-{j&MlQyReRigyNP;NU{UkX z=zvLNtEQgb-=&BlWCOezi26 zGs=*Gsmmnm9+aqvNR;Ep{?Gia_{jiaB#v=>dyqVnh7PMjpU23kpc1+l7p(2UG*@5? zIvXSKNfoA4g-%3W9{?s`9hCncPV!SLM^54J1#eVgw3cz21l{Thrq3tfo3%IvFKHx& z*U{Ac%oi{Nr6cOiZw)89<53T?LMD$xNFBEn+fa Date: Tue, 9 May 2023 22:17:24 -0400 Subject: [PATCH 20/48] adding plantuml files --- database/classes_initial.puml | 54 +++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 database/classes_initial.puml diff --git a/database/classes_initial.puml b/database/classes_initial.puml new file mode 100644 index 00000000..a90ae0b6 --- /dev/null +++ b/database/classes_initial.puml @@ -0,0 +1,54 @@ +@startuml classes +set namespaceSeparator none +class "Database" as database.db.Database #aliceblue { + connection + cursor + database_path : str + get_all_item_ids() + get_all_user_information() + get_cost_by_sale_id(sale_id: int) + get_email_by_username(username: str) + get_first_name_by_username(username: str) + get_full_inventory() + get_full_sale_by_id(sale_id: int) + get_full_sales_information() + get_item_category_by_id(item_id: int) + get_item_id_by_sale_id(sale_id: int) + get_item_image_url_by_id(item_id: int) + get_item_info_by_id(item_id: int) + get_item_name_by_id(item_id: int) + get_item_price_by_id(item_id: int) + get_item_stock_by_id(item_id: int) + get_last_name_by_username(username: str) + get_password_hash_by_username(username: str) + get_quantity_by_sale_id(sale_id: int) + get_sale_date_by_sale_id(sale_id: int) + get_sales_by_cost_range(start_cost: float, end_cost: float) + get_sales_by_date_range(start_date: dt.date, end_date: dt.date) + get_sales_by_item_id(item_id: int) + get_sales_by_quantity_range(start_quantity: int, end_quantity: int) + get_sales_by_transaction_id(transaction_id: int) + get_sales_by_username(username: str) + get_transaction_id_by_sale_id(sale_id: int) + get_username_by_sale_id(sale_id: int) + insert_new_item(item_name: str, price: int, info: str) -> None + insert_new_sale(transaction_id: int, username: str, item_id: int, quantity: int, sale_date: dt.date, cost: float) + insert_user(username: str, password_hash: str, email: str, first_name: str, last_name: str) -> None + set_email(username: str, new_email: str) + set_first_name(username: str, new_first_name: str) + set_item_category(item_id: int, new_category: str) + set_item_image_url(item_id: int, new_image_url: str) + set_item_info(item_id: int, new_info: str) + set_item_name(item_id: int, new_name: str) + set_item_price(item_id: int, new_price: float) + set_item_stock(item_id: int, new_stock: int) + set_last_name(username: str, new_last_name: str) + set_password_hash(username: str, new_password_hash: str) + set_sale_cost(sale_id: int, discount: float, tax: float) + set_sale_date(sale_id: int, new_sale_date: dt.date) + set_sale_item_id(sale_id: int, new_item_id: int) + set_sale_quantity(sale_id: int, new_quantity: int) + set_sale_transaction_id(sale_id: int, new_transaction_id: int) + set_sale_username(sale_id: int, new_username: str) +} +@enduml From ff91577e2a21ac7796cf021029ed80174a33ad2a Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 22:22:39 -0400 Subject: [PATCH 21/48] Create classes.puml --- database/classes.puml | 57 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 database/classes.puml diff --git a/database/classes.puml b/database/classes.puml new file mode 100644 index 00000000..86d3b89f --- /dev/null +++ b/database/classes.puml @@ -0,0 +1,57 @@ +@startuml classes +set namespaceSeparator none +class "Database" as database.db.Database #aliceblue { + connection + cursor + database_path : str + does_user_exist(username: str) + get_all_item_ids() + get_all_user_information() + get_cost_by_sale_id(sale_id: int) + get_email_by_username(username: str) + get_first_name_by_username(username: str) + get_full_inventory() + get_full_sale_by_id(sale_id: int) + get_full_sales_information() + get_item_category_by_id(item_id: int) + get_item_id_by_sale_id(sale_id: int) + get_item_image_url_by_id(item_id: int) + get_item_info_by_id(item_id: int) + get_item_name_by_id(item_id: int) + get_item_price_by_id(item_id: int) + get_item_stock_by_id(item_id: int) + get_last_name_by_username(username: str) + get_password_hash_by_username(username: str) + get_quantity_by_sale_id(sale_id: int) + get_sale_date_by_sale_id(sale_id: int) + get_sales_by_cost_range(start_cost: float, end_cost: float) + get_sales_by_date_range(start_date: dt.date, end_date: dt.date) + get_sales_by_item_id(item_id: int) + get_sales_by_quantity_range(start_quantity: int, end_quantity: int) + get_sales_by_transaction_id(transaction_id: int) + get_sales_by_username(username: str) + get_salt_by_username(username: str) + get_transaction_id_by_sale_id(sale_id: int) + get_username_by_sale_id(sale_id: int) + insert_new_item(item_name: str, price: int, info: str) -> None + insert_new_sale(transaction_id: int, username: str, item_id: int, quantity: int, sale_date: dt.date, cost: float) + insert_user(username: str, password_hash: str, password_salt: str, email: str, first_name: str, last_name: str) -> None + set_email(username: str, new_email: str) + set_first_name(username: str, new_first_name: str) + set_item_category(item_id: int, new_category: str) + set_item_image_url(item_id: int, new_image_url: str) + set_item_info(item_id: int, new_info: str) + set_item_name(item_id: int, new_name: str) + set_item_price(item_id: int, new_price: float) + set_item_stock(item_id: int, new_stock: int) + set_last_name(username: str, new_last_name: str) + set_password_hash(username: str, new_password_hash: str) + set_password_salt(username: str, new_salt: str) + set_sale_cost(sale_id: int, discount: float, tax: float) + set_sale_date(sale_id: int, new_sale_date: dt.date) + set_sale_item_id(sale_id: int, new_item_id: int) + set_sale_quantity(sale_id: int, new_quantity: int) + set_sale_transaction_id(sale_id: int, new_transaction_id: int) + set_sale_username(sale_id: int, new_username: str) +} +@enduml From 0fd87f31019bfa9e744987fa92c3aabb56c51763 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 22:23:16 -0400 Subject: [PATCH 22/48] umls made --- database/classes.png | Bin 0 -> 106018 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 database/classes.png diff --git a/database/classes.png b/database/classes.png new file mode 100644 index 0000000000000000000000000000000000000000..927e6b233f45f47e94632e0e851ccb4f75252a83 GIT binary patch literal 106018 zcmbTe1ys~syFQGqqzZ^g2}mP|fXGlP-Q6V(QUXJliZC=tHxffgx3tpT-3|f*gLK!o z2h{g@e9t-SzdqJ-xqzAZ)!z4YUvc9jBPEQ5eh(cD4Gl|FL_iJ=?UFY57kd37_(?Z5 z(>nN%9xA8;)w6uhG8ndIB?vwVMqr(TIA$cic6pOrKs zMn4e2Eh?psdAKX<3s)(F~bn6J=&^Bt91nv5xP6>8;#deHl3F_m;)4EAUyO8*?Vyw zU4!Q+%7nA~w)yk2!sR!OHwqSTFPmj{iKrS%^waBkid71U>$_0u3rcXiM`6H=w#Cy# zL_dU=*4n((;KIzg&Vbd@=zneckxz~PKGsN+ew%%m-YxCEFJ|)3aPstLS?Ha}osZ*; zD+HT!VoM*qjU9Sox66}Fp&r9tNW2ZZ5ul^-Hc;o4&tt+%bPqS0DevRWsgKL1xFx=4 zEWDOX+Vsu+ULAWsvtDD-lQ33S3>m`U@RSEG;__UMLyusRblwRU=LClzy&RX(EM@6P z>S5i?U$~a`7FHVA>*N$%>&6krs@BG<@baERZ;MicRISh5nkKsD%6E@=0?}vv*_+Cr zdg&2A&tN;yZ;x~eAO9?$uWQk+dsROXJI>83(a`ZKw*RUMUD{2Jt0cDf*gUn?tA9eO zR~OR)Osdj&hQB`AGEZyC>CA21+0Q>z^B}AFY92nGar}AyF8^|W zzLM8`px1-iB??COJ4rg)dYIEcnMSk>uLn-oeWH11p*TnM>0QZPa+OMgoF%3f6$581 zGrG4=bc>T5t}0L_-5nHfXUX;tu<-a0`{Jtt(>=ElzZmXa`foHJg>6}%Xm}*dDa{0r zX!|B0nwaYdk7xRY&SJ}Z(5@#w}yVY_<&>AkLSAE_3CWT(iy*?bnPfFs_-b>3FZ)n3UbNJ4>5l4 z)>nv??5CypsLJ-rO!H&CvRvd z+Me*a;r*N|%w(kZQ)hZvem_=4o`UmOEpD-QmoL zbpEy|-E{C{w6#68Du)8@O*(TC80vfJ_wFZ~iKrKmlc3(meJdFI!VJsn?Jnlb@=^EG zt$HKa@wdejX)Z1SMo=8)#?)7=7eu#WL(=KdX06k4^RxPowrGg;;L2$;5wicUxpm z5hlNX5smHk*{fEiPu?W!wDm$+FzAzG++B|0-D%x7E5Rkrf(v^l9u^YM{>5m9<8aw+ zSjKk=XJflov>=RIE`?Vsz zrF|%~4TepCQvY)F)ba6E?%956HJI9!s=F!+c~PnsDLIm{Pgcgtc6YWhPOPUq88{ka ze6bkZDws%bgX4dhy?*w&*(6-9r!zD`Ud^SLhns$QrL+XRE0cMvAJge5`@~JvO;tO| znYqhcyX|$$A7xXS6TSW8ooj}Uz0fr*kzM{>mhkT|cCZllEvL1XL7XkhprR>1h%YB0r z6BDD2wz5C0wcJ|^!>bQJo3h;_P%bn1O1^iDg~oOZ^=PdUaEL3+X2n$JHyyu5h78qx zb{D}oUG=Z6J(|xdj2W=o6KD3B6!TdOX4I;v8y)pr5zhAOZfRwv=SmDOTV8ZK7QPao zH+Mrcb6^czI~9JUx0AsWv2LyEP&rm~aRwz%VOb%K%{*KB9I3FdGLwG8oufvY?zr*t z)kp05;dHBV4w9oGnl7aw2*a|UJZTa*^Q_m<9+97)8{t~V7|D8J$1vPTSxl{!&nzO` zFJtA++e_dM;q`w@^S8{*KbY?>Z1ZW2%`rC{u_s(U(pSxvpbI98XETVY6xI$`3cH@! zT2tQ)7iQM1%qc1yD|O~$_6bzCT%EbUa|x}-;q1Xc7snJO-sbX5&^|GTR0#TeJRT@D zEwcbm)_3udf%p??7$?{6)yvrS)=S2Erdj=q8F9ykf-EGTl$jWFX4pgfi!#1%1f1S| zrD(I9P?o1%xw8W9i=U)~AsN}~h_iQ~oXdBW<4-Yai)?6U5*N=Fn91^yvlGn2^hv{LC0ugxE<}$=-B9$0B7g%pT~T72|g-B&A3TX*vr`( z3U&#~^NTX@!SJz4QIqIZ>8O#fQ*I5*mNKn7?=C^vjD){_NS4bqwRa2eB18M~0Mv?) zjf4k?N9)co_fy0rF_E8_c#=z-3qvHEOC|QK5%R9iO+Tf=hBTrJ=Yvic3<}igSV#)B z;Z+6EI(O2y;`-GyqArq_dZv19YLo3X;YOB z4ejN1RHYFZ9k+Mh-yhiJY!|&Ie|&VT-enVU0gY4`wa{NkVqiPY1q{mtruosyj28Hx zI&S6-h#^5Q><@!pM|(IhI9}^d%JsA4bYC7}Z(HjT=wx z1!XPOUVE>;tiAFCPzjLwKb2I`Q{8BvRrO z?n<9zee{Cx{00Evn?aQa@a2H2)ZmNs1>`dL?+xr;EVf>aX!0*qy&3ztpkPs^BNp|V zwY}dj0yhzS|37@j(R9wZT}*Uzd`<-gDGFd6`nXjWgRgw`P0SU?$g(`qkh8kcZE^+t zribzjf!~BJ_J1qks_oL;3rcs|=`&{Q>SAK$pD)~qQQuAL+N&GP!3f{|IZJxyR%dK} zPedvEaDTgc)}Yh=9x1O?MHjz5D9i)+wm%R{PaZz~zO=KFCG?LLnU~`)vc_kNaa_y2}2L&3;tp=R-v}Wqby%N$fX#^`oT)dtARIM4iU}lc* zdwCVlGzrA5&2lYx0fwEm*#ltZ@UwHOSt}E-dUQhkaE@~jUBAcRLU3@HShcHrVQMPk z_6O{*eLD5j0MF5SUPV16(fVv1dV6qKmZflGGjjW00JW|rH**r2@Mz#l(M))BrAM{@ zzF~@|r(kD}Gd+yyPkmi|1hJ^D_VAcmBX+PXl#XzOn5{iP-E=i9-1PdRcOH0202=h? z#xby4+J4v0A7q#F`r6u&H=RXQCFgnqt6|2?V@+QDi%cJG> zdq_*N;oK&|8kfYMT^~nsMc7vio;$fe*h8$((~ce>0YgYM$bwg*k!n**!Mu0}bFyp5 z-Hexi_C~H`U1sKoeR}oE7NV(OmTY#v`Wt7k<>s!;=7yg#+|$MTs`PE}#*c%KtRMr^ z(h57+*vq#=^lPs>y4N)Xl5kPM4dfhE1d8`Oa2jXe*2YcQoNPBe%R`O2Na*O{xArYV zu{x9Ti{Hh_zhig5{K|MaUo=UcubdHLRt^8c!%Hqt+kXLSN*|znP zUWda^6`!;*HsdmLIRE!7_7BHbF#+fgJ$b_G=HZy=HUG@8Q*{Q3>?<`_XT4-!Z1UyL z2cK^Um-Ei>3qRQG;A`zBs0iST`#soR;0x!kU(5K3!$8mGm?CpjI-v!r~C6P&)V6O{8%Fqhs~@}E?T~_oN-sxF@7;P{h8SN zE$iuTvwiam%**WeBpWImv|bPv2UWs~Ii@b5u81wlr(ehI>vQy1o^bra4M_jD#SMD9 zjQJrROYK^_mGL0-djPatws)8nK3C7Y$sYf{#YkW7GRvongL-?<%g!+Dq76IIejOpH z8b%T^KI|GfXAZiDo5weBxkko=9FDQ7trl;R(V~vVmf+K$lq4OoOZ@c3g`Yj^^2oUm z0|v!DauhDY+$!AC3lF^ZS_?sAQkvIyc76kX;4LR^7De{2RU(5Q94m@#cP5gM#7`0P z%nOL_gBB-oX|!Di(!u=nZUu$E_4g0SeZ6{9)>gKa00-pu4{@pOkRx<-4?`=k{JihD zhodSfIB$pZ2YE18B{*5J`-p=h-E6lJxu4B#Zp!5OLd=#QR(-dCX-Wpd?U23a`R18A z7gvDL?DB%N&WG^fi3$z_r$@FeKaGp%xqXAY&pz@cJ@`n}J^6nqrRU{1hMPo;EXL?| z&g=<$jvhYhv<`~Bp~ey%5=H8K1xYX?|`4bSr5jJjYBNO7~}iuwGK>F(A+`o z^GD!_c)YwZ+>O1xt!-lm;kVoa{Y7USskkAfr_ZEwl*ViLVIQ9BIeN1k9yg(5DH>j& z<>9i-KP`%gh|sLC!_d6dB+N1Js&VOh8IxvbXJ@>o27xEj!geI1`e#Fmi0vVDm00WhODeC3o}THwc|OXp4>~+x|TTl zUUrQl-4HKA$)$ukL^pZV0}5^{FC|TF2GT`oDmVRbn+%^VkX=+n3=Wx2WTeadETEE< z)W*2Hg&d5ChVi`6}Evs<>&0r=LMO2W>f|>pkhcw zlQL@hNnG+8B2pn)ZgX$3adfWXf*yrU&yaWHkQf>ZtUnauXOJT_eY0>s=I$WD*@@18 zZNrddXprxUH2DFHb-Qt2rh7|Iq)So-(2 z+YmP+EsvUI7{oNEYTN)b19yz+2}`uAOO@U#IYf*wP;Wcy)hl>^@T)I9RpGk23^`Sd zu8t>#T2GS6eHjqPw1Ku2Rbt3%;IPlqMEi7PM;*25`pFAQiZJf&?vzd*y3=yw7CZ@D zxXaQ%psGszjv_`Zi=o6mwD0kB;-dnO>SOQW>5m~RSFZgq?h1TIDF~MXHL%S&!epce zvE)F08mwFp2(c3MI`|NPLjR9-4U569g~WuRU&ML$kv0*^*7hr*LRtHMksHLD<|m|M z%(V{TWpbGvg@I7-R{8YG=~D;gU)?dEX05!UJfINCy0~!RL3T4^E8D89rd0mGJQ2$Y zmEZTSb((K4Lq5HWh{N(BW6pIyZ#(Oy7VBQJXrWrW^vnD=|F;V1W-~q$g#a~Fu;}aHNY+KOm8hC zq!T!WVMA08Ix(Xea=lHz^!R4YY7RzYW4W&O^!WM{VxaD;C+Ktl(;#!($n@|?>1ta7 z4O;kAuNNY$s0f4V)0;2fzV#OLakH6rU4#q(cq+QKtHYuI&Zao0yvFSW?8mVB2uAf* zVP!MhHI;RY3vWy9?Cu44smT^2wrkaJM=ifR%TY2l*PET?a8PszgFbwWbvK6Owz82v zgbfd=pro+y>)s?{tFtsPf^#z74#r--aMl8<@uc!!=^LMT?R3@|I$XR@LLWRi>vby& zg+axh5s6~y|GT#>GNXmEx8Bq%oUj)|q32;=vjB`&9YZ2r^>(FrRs#n9glS#Ab z4F}THjYSW9r}JAUQ}WtIuYz~n>eHEgWig415$lauj47jqf^w#7(EqB-;7JHVH6&?H z=FaL%%fwQ4Wp0#&?G?pK(x{qOj5r%pV>^HfN_4Z*X@%gc-WmXmwt5Z?Ysesz;Kj|M!FZmEuk zJsbsF63RyRP@Y%{4g-QlJQr7Y6gzBi)PC%IeV`pA2bRSU0a{4UMGWa+UmnlnuC)H&>XS{&%53pc=eu{fs>uqxx$dPflD=K zK2{vf`>%QF2V8 zn_-9gX>GC5Qcq9z?GU-lx?LJ^F?yz3^yRPTs0TY*S|hjbyPAA5D7<}2-aWUnkLm&3 zJYd{>(7Rd01xyL^GJv+z^G)XQc`}*MD1_b-mkk+{lSoyhIN$W}=Sk9jZY zyj&OaN56?#1*QB+aEpwY9P+t=z?2e|&(P?l=(XO|pF9c48hZ-eT8iu?*}>A_5mvq1 zV(sU-7AVsSgacKa!UJEDPttN4)C{fvto99@fP)+3nby^tf(1~0^u!&XrAE&?hN=~(fCAVO&^1aw<= z@hqBLSXcw zDEGvk@~dxqDrnb>&Br6|bg8e4(s%hP2hWp=sVPu6!?JxMTE)Z|n8mf_veS>_;+-#D zgmH1&78jHl#A|%E?w1J#-M#@&Mt8%_M!|Ip{Qe|lUPMB?u;&7kCN39h=L$-OVEeUo zZQj=FBj*Y$N|_On%^Uz^Pp;%|=m-vI0qyML(1tYsI2Y3U4Wt9YVN{OyV(0>yD`vcuVkA4K$HpfEz{Y(k6tk?TA#WFJU`P~;hBI_ z^4dkQ)ur}-1CAZo+z6WXpQNrP>7UY+()$G)soR`FbrRK1pvQp@BB%ES*T-uZRZHbC zZ&qE~zJ+h&sv;XmhwLrJK&$hrGec##g;Mz2oM0b}Sb1dq- zw0`Eg8iw@nxv$IdW+YJ;MlP|kcpa$rVX*4l@nmW~Kc_};PDjTcK@i)eDyvN;Ujdz4 zy;4#njv5YtCr!KMheU{SdSD-)DAU;>Nr-8=61Z)CipVZjyibiLx7psE_Q%w`C8Xnx zevU|;JuAzfEKiU>er(PEU;*&PVc>EIR;QT;KhNEJvX=LaycL|HxNR%cBXijx0qjTc z$kVkKZ;&ex{-WeiA^e&^U%E<}PMSxrgOyt*Jk4rFBTZvD}XvPbsa_UuZk*Gk2!Yf@Z%ZY5Ct zHZDn|0G3^)dFRfZfg4%!a#lVR8d2GXeMfM)WgsbKga^7bv!xxbHF)2nDZOZHIET=; zhF576frF{_D7fT)5o7=fo5c6Ll@;y#R4Ei2wHwy1^F*AhEiod?qOiWiY+pWY#mtEg z1+R$XI%V0l$W5WE0S1Q&T2ofb@(mF17Bs9OxxOTpuOgb&eL8^Eh|@EPCgM#*B`pg= ziY4M%>1rJYb2Yi#7?68du@gK8^mb>`$|GrG2p-WBLu2_&8|uwFp4dC?5w-feo8sd! z3`1v<$ld;QeqTm17w*wBTHpjkPl4u~Na_TtcBP%4v$?&-8XA*nS74wZVK8tU9#h-3 zdkQ!2kp0LUd^K+Wl$RBJYlT1+4CK|WuaLS6C2A_`I!k_vun)B$+25CUtnxp z8_2%ShniM+;PT&ivA9B9c8_lWQ3!OvfPZFD4%;maMAIY?78&kZ?TVZ!-;a5?^3-=p z<PG28D0E8}l zsK&fb%oLdMbnCrO;?a)r*8xn3vUZM7YE(I zBJQkS1-+6$i3!e`S|0&bQFY}{>CFz92Howk%T;mi$lS>xRaMz!1T1-WXq@Y5{xO74 zK{4!%LkJygf4!Q@Z)L2P)+Vp^2MtVgbiPg-?z zCMXOJEQM3VkpEMRZ+H3(uy^(AgT#^f0sL%@ z|43tSqGI7ckYZ7oEqWm=ux(03vb!s#&L%R~=MrlDvpow`zJVu_{iLXP1w}`ZJQyQ=5#{ z{w)+7d+cHxXuoQ3hJmBJR0G1)nQGBl@&19<#%OUg<2vdBp%ob;0#>&Vu37r8+s|OO zqLlXxpuCUmL20pbcopU0{5!4I`VtrUwpxu6{me&ch5@Ijud$Cxh^OH}sWCP7C!|GlT+356kS&Rk?djTZ<^?2A4NRpm(XP zvbbu8MocrzfoXaVhwET4rp4{j)mJ5IrbI+!wO_O9QXJ}4ZSDXm3Sj+^#CG5lu#x20 zfyHq1XYxtrou9Bom!+ARjG{uP#X04D5_4=)1~>BiJwshmDZP6K z`|>LK<_nA}FIc~6795hK8P0pBfSZNJ=D*mVBms~^v(lEJJ?Vm5l?wld^)I~?JCEJ! z(|CW9Iw+yK?WkbDgQobKDfDg!-iZYFMjM~hz+8{A@+~V{(|Lid-{GmQ(!&jH{8aeBTdK{-B89%~*31V{BYQm7{9{BK&UxB6|DQL$*D3qNh zg-p5-&*uNsq6iBM{I2KaLyj}e`Prr^&tkq-t*V7#Q}+VU2!Xtlu?ZXRY~5?kx(*D@ zmX8Hy)BWvS7OuW3sLHMOE+Pbbx$2fgyqYy6yJp`;v=I(**Kk>C#t6fRgn1@1<%RID z@{i=T#h$P;UJ?*l?OLYFPZl%Lk`&!^ zijUW+jt3bzRXqurOk*)O%~in#M|geQjM|SeS;vboo|Z?Jbfrt$R-a3;bJq z$(}&&#)5iBN;2;LF(V5AnLE}~QDg<|JJgqiy|CbVPD}@V|YQ#1jNlf@T`6wtZ-rC;eQ`0D| zoC>FR;44t6g1>cW!QB!U4*3E zWJmWwDqiRJ!Aq{om8y%-sw`< zN}VG^*VsJ>3~^aMG|z??Q86-`Wb#xgKot~!QXH_xdLBnVB~enE?lEQq9`;&@G+*M^ z!r@=6LgP29FiR9>Q-v+v4&_iEAIZ1O_qov#mEEM>*AsT##0VwDwlzt_E{O0qlpDu%JN(L$VxW9d+1r8*mxKcFFcY2BWObDg;D1l?t$ zsY6&}IN_3ThK3ynnQsyvVcx)0I7$_KCjJru1zIhd;9KB^R6XG2@w*a8;*8T9xHZ%R zi4PP5(*E{UYoFwQHT^uG=?~rQiGqsAHjNMGX&&wXQYjmu`@Aj61nhv@!YphQ_bY z9E<=rK8mu7LKu0~TgBx{^^3lI#hydb22b9P;Sm*NiS*8RmlLnq^SP`HP)Yu8(cUFi zRpC)zFyZxJ9rUFTa_(1!{!J@-_*6a|6k}mEWOhhatO1Z+?4joo*B)}j2D_rMchnhn z#1Moz#RYmI;{w1AM`1z0sBmaC>NhM5lliSNHHzNc!Nzq@X%C*zJnVR|D%qu7r4V6; zhZ}|2&Tw><0a%cDl(!C5cG8#a2hwwRgLT>Y>BLI&+}BvDk)ay)K{dLGzEoa)No|}8 zM+|Eg%j{&l#D`NlPId{!-GWK&>(%_A)rn|rSd{5@3r8Sg3aMf@gdLz}3te4?IJ`Y^ zET)0g9+w*Zei^Zkfr6QH1V`JSnMi>6*TJ(NOzBeS&07e7` zN`bbOKi;fuZznUMT7_o+$~AuF_p+~2%L7O^BmA<64xc2n6%SrRD9opYV7LB95tlMV z*)$Bn;MRrPWb7#i+nFA@q^95yf5(4pPo7A#-`>)zce)c;jOr@Yu7iTrriDTzt2UI@ zJbWS`TaWw-3pzOLzPQNo@}p8#Nom3QI#CtS#5v;Fjoua&iN^=sPz5der$uN5pzmS4 z2EAe|Z+-eo=jCWqU$a6-{O}G{Xs!j}*WSEoY-*I=YwU7-M8~*s;FYGi@JyFI9FHok z9_1BE;H1U1{k%`fqX{6Er(Fx|Qzv-syJGd(1xgZ&u6I<>J_kv=+WLVGVl9+1{t)(0 zxcb(*KHGS&ZQ@$sor1`9q9@x{yI+bxt`SX*8dy%%ut3442gDDVxMbyO=(*d*nuP3V z^c^k&z3&iktuwHA!lIguV&@N^ho~dN&6M8HpDTcQUhZ^Apkx6oT4Y3}-NJA=#_2jBsRKSh1a;5Q1U%tfbMxeBqGY6q z;ZQAr)a8gP1IgBiU>IzcWiATwyNjcac&UsJA67zF?f^@NB)RvH7etgsfu29hccg-R zFB>Nc_Rs0t1ht&fUwWAhm7lhkR6K==I)oKPMNTO4{P%41CEksC)Ox2!mTg&tJv4Ws zPvyyX6>}~oj!FNeyRo0_8W35Y3Zg#0GlT`{3j;~sZ%=F$_#T* zGS}EInX5qEqA$#Z1i3QYWJycURckY?)5es2bS}I}h;@FnQuY*H7e-5@rL*i$>qPGR zp|s`g%onc0`rlHF@}_hbif^{b9Ys6iiDk@#R8FJRmY31(Gn$ha5qcgdqAL?=Hn<=% zH$WFs8vkfLbec5K#eD-sVu+hgC~jlkm*}LbS;b zD|qE~(&iVL`(s@}x`JP3AzU<)hUBHw5 zn54gBtKgq~bY#F2AkOI(DdU}5^@0lziiaEffpR0Juxpa%pzt_Sn`FJqdDgK!GAM84 zlAbZO+^_tRGQt5(j?dQDLH)oF_$`ay`A(qp>U#jijA7Fs3gD7KJ9KvaWU}j)57O#8 zCPFuNrm*x91HxqNG zlM>?NH6vi2emsx73`2@+ET7H1rb!QcQd)|Ples=WEBEUv*8SIOTgpJ(2UeRh)R#t6 zDu;Z#8VNWSY4U0Pm)*uGkUq;ent+??c7q!&{h3-6)@a1wDB2cbX6I-Kv$n%)A*HHI zC^Gs%&qV2ULx_r`@8s{eQa(EB?0i2&+Daw)zR=N^cp>-7E4;+kU>mF8npE5k$uC1) zOvV%A<94g3Nox`fV^4V*NZ$-d$5W^t-KOcD=1P68KEKtVJ^>spJ`aSVbVLqff9R!ml>!n~ zS4ZJ|Xi>nK{xr0IPH}#I9?u8l^Ju6o?Uwr#{k5G2<z;1~TQ1Vz?hhr>%S+ z_<+N5uC6__bJ{+bO45a}Z7H9$i->KkdQXCDd$ZV&(s^iH*nA4>EIDW$SEQjjPn_4t z8TVgF>epVl1pI)KfPkRs8O3k1Ro~84FIvOs%qi{pv3Tv;xUvi&goLTles%d*D#E__ z8xI+`($R}&A9LbK!VeGjH>U}R_$b7QK>5z(^pp}40cARDFo~R&*Vi15+4&wpE$MOF z2&`)KO5b(yJf|grzEb5^t8RO(>DbtTz}1Y@a#M6_kK)9LkWtPS#fVEVyUx#(k;-4) zryV^BqKT}+ziXwzi+LvGSWczNRNI!-Zt&F8H7gX@`g#Dc^?|7s0KoaN>S+WA8-Vt) zD`dj?hl;*LT`!^#m<)iqW}BOlHjn660qf*cqg=?ypwXT6&>@=e@os0YUc-h`2ViOd ze9ychS6ukNu{UF5ToJ#ID-~cb?rj*Wp#Uo@D_~P6+s#eTK{N!dB%4gVw~eW6KMJ}( zfQ}%u#UiNAdr(4zIQJ{1?=jnF2HU@0CEG5EQXkNIj)Jk>h36vklOYV;-`>^6aR60J z1)Cm7#Ir-`-gDq3ooVn?{!vX4((t8NzDNa)5FTNb?4|+LZ=y;-VbQF#1Hro6I6Tq* zM+Bs2Oi}wN0nk`dkk0a0!gRM)a`=AkV>MR^CV3nu;bJv*zPE&&g z9MiUr=}Trbr$?15fKu1vqo6yH=FCrL=4QoFG%mUh*pbKAoL-fT?T|qHG4Hjf55JL) z=r7u&y()Y9D;j_eI-v30Xt%yLK&*&PzcuU9RFO5ta{g_KRrwqc0h*Hpa$#{vqf z8gu-66wPc~qWK!tpYa&?Uf^_Vh9Z-UCnDMH(CFc)O44Uy`lICxpcU0J*Z~ixhx>ma zk2kOUB9FPApnlRR*e*}$fjrO)+HeQqKfuTMP!eI4J|eh; zgINJGsSiN!c!?#-MGRvFTK^gNiX7gm#}y>D)aF~#SLk`_%g8u<&*my1L#>d=cw9ZH z7xC$`2Gn82#=<+;s-|l9$uv_x(@y2+Lc*9}sYVO3-^#^@8@d4Xi~(KyAH}kgwveBb z3tfL#$WU5Nw#v@ee^Ee!yfCuiZyeQ<9P`NLxRrHZNGAfDj!K5s-yg(OI`a!lb3s^c z=ZpT_N(gq?htTc?8~BceoZ38!S>>0Jtsf8_I3-*tNUfoHJ|?guXF!dt=091f9x8jr zTR~wZi=gd$FsECQ&C(`AKIdvti(tlLW_toPK)3q!D)wq;- z2j!JJ(V}vbM~&k6HXev@b>hHZAbjW{9kIPTeDdPi{W%Xn*{Gi^s6-$*+*J$B;CCrU z(i2gkiagf)5d*sqL}G!1*74qT^$`zOP_>yW2HS1zu&FP#udO)sK^ER+6+}i!$#K*9 zc@7nQ{Y*itQt=2_D|SDTW;-*XHH1a;BV11fviCVL14qkh`?9g&~_5UlWCf?x9M7YRq*D4<0Sw7_XUvySuZcK77nMH z3j!uf+fvodnP^f;w-zfqB!4!v(m zQNzX-3c$8UoHqb06RR^1%l(@!4blw;ig=*~Y7qzglhP*M1j7$|=BEj?d|KH_@1Zls z9~`bLG+2%ZoEolW1AE2cJt(HTq>wv=p|6WSBSBUUs9&Z;u{5lt;hGsI3vKKW28NUI z5t`0_`d+Ie4f-f*`Eis@6tcCk4wnJyRBw^8rLULmNt67CEh&mPl^jCv{zrz?hK7a! zj{uGYtfHjfkE6h319bNZh5y+rj6pN%c5ea|YkMYdT>i@(n+Ap&D$bJQjB_$By$(yv z84NAz^SW^^%<6JxtZi)sswYxJTtfSTn}q^ca{-08gY}DZb#pr3z?vE<8UsG41lRUK zbozRI39Sf>zKvO{#B?}t+J?ygNcbFTr=5>SxfBtgtc%F>&A#73yrO`ToJD4DW!rg-X|H9qdCI2h#au%eq zu@)Sk=R(-TKvDS13$w_;y%4-xT_`>J%KSh7b(7DyF)=3du>8G3cB97^z+7=U0! z!0DP^0q#@~V&x;gbmY_;cO&jeM%P`e=GFKCdV-7>R4$HDo#=bpaU? zmjD!~0*JLaFflqwHKL5p#oJs76#gQh{{#LWR*l>&NQ=TgPlwn7k#_Q0VDb4tOEF-= z-%mpbdWL)6?^`1M?kD(8|ptk=*L$Yd;iJ;kWcGN zC2)ynIkZ^$kr&?9t4fCBCVOvBfW@eGJ$?$b$YBqMj!a2Nl1XWa*Jx~do+*H%%%XY} z7H;4?D06GlZ-&LcUfTQ+$Fieuv{Y5XB%^_6WGw4@+R`{D^9|ViYx+ijO8!cYu*HuOD%tp_~_u_vdn{_FfH~`-r8q-;x7b=(Z7M0q6A2!_r`6?=zx<6VG)=;0_ecAVwwrAO*J{AR z99RjuIDKvnYpD(u0}FIq->OohyGKy^?u}X=nPv5lQ){8|_yll{wIB_Rz!SH?R2N71 zPHr|>9g;_YtFQ9eG896e`6+Xd=yM3&ZBwxnv~fO7tw!u# z_VGU|Z!f#bj#bin{rWs;H_fD^1^Y zepv|8%0^KDwvA{Ln6@2#X(oC$Vz>MY&SEE^{n`KF+aTzZB7y;L@0~@7w|hLG={XDd z8*09|&Ae|mCSm9E3Ea~~sBD1`;=y(2Rak9o@{6i@QDz5U0zNO-xLt5h4i0c=w1#c$ zS6D+Ym!P7Ls)Vm7oHN~C;1!gHojSCB&+MNhb1BTObuZPvem&LYkrQ&dVV<~M?r5GF zMc3lxs=q@syXCpRc|}a88u|YNvE|}XD>(SKx{O-D+el?Prd&Gp!o|mgzd3XF2S}Mz^a0Jw&GDJQK-a$R%ZGFh>RExX#g4>;~J!4;IVv&lLr$ZwKw4u2;BK zRJBb^9EEoC^2y32faRSdK71f_p?c|tY{S^j(xlPsd=At}8N?|c-2#Ig48&ZvfI^o7 zffS6|_;r>8cEkmNRC79EO1jB6l}T?S8`JcEKr=h!C5XVK4H%it+|LUx#~5|X()gIP zN^(yv48dn@#rd6?a`9BM>MX%=7QBb*B&_v5sHjs_Rj=I`OZM@L6*FC8$x*EPXWzu>lSE%qqrb8Nr-9e2sZHR_vb z^+pk80OJm~izm(pB|33_O%^#Z_J310rKq%BmCcLo_2$@+$((@vQm#u^&vTw3g4x0Y%n?`QO&;T%HywX>v|skBym>}0XGCBxMCe` z!J*flIvw@t?CeY`YyvqAK_2Y{uNSV{Q)Kv5ZY#~GKmQP&1bNEn-ulxa4g^25Q6oC{ z4S;6-{JTdG4Oo3($$(LW01*7^Lo5E@(Hme)y37CriElWaxTBM!X^GmoSGv6Fo;+Eg zN5gBh0ikm!AXps1gr}MD^PJ?j5B}wLNPy8A%uL#6UFiZly2;^v0HMQLRVTg(He}+zK zR)at!Z<8in_D5<8h@;fLo-+jA>tpK;RnDScnaf{if1bJg2Xb1i{3jOA-)ptJLP9)J z!#0>1I%rk_jRG@KB*{lcD8sXf1n?x_F&1oqG;XEcid*05codv&hdTEFsLSzRylvO3 z^nscl#s$}uef?edH&U`!ySSJbb-$%lkhIh07fb$+@rl*~X0lK?Se}}Jejtr z+&sl!OzEl%1A+PwFm_ojC-pdWw2$1Kl*C!IJYWZCIU^%ua>S{}d?$&@O(5(x#$ssV zTkVr&NRxktbGQ!sP3{iIsMY%8AZ!ba#GFEpyTBMAh+8n?V5HZfMx)qA)$>u1*5s;< zGWQeoQQ63DrHv5K2r{A-obk=>m6zS4xHci=g)yp*l^qWXm?>!z$?z{}SNA39B2vSI zOc)^+Ja8Vs?spb*Sj6R#k{Tr}i!v3yzySL@qqWZ1I)K}#bz;rQ)^VL1#LicV0=j5K_3aeLQqJK`fFTin$_iT44HNX=$htd6MS==eesE<7A2W1lUFF zW1bN(J22TRSXl6w*MoXVp9(^Px9N@ z*OM_1jf{sli}+`2yU(({k&8t~TFO>X_Jb(R8E+ID}@p zg(E135H;_S6dA|~Czgi#x19lT~s2cX6)%0O<@vNeYJBEqJOU%kNFA%k zIlLsmzl`pBgJAvuUnl}2)SxcxVbw3gS&G=Lo#+*ug5{78-Rh}<>26z!3PVQ!rgsyY z@6=r(3gkSAzc^jCoz(#d;J96;Kmv^x)1femeTv914cWz&L<#)rk;v z!f7$w`LDkLplo?s*VgG)>oaLx7*n`MfrSpV!oTPG7%;&~=j)Nr8Z2Gy(E)C44Z5nO z*B!Wb2`VzzVEE_H4j_8~%XUp%q{%^o;nQ_8H%2>(6<^7e`Jw6{YH6MH<6om&3tzzi ztdo3_p_WN}zdZTL6}pvPYvY7pJaO>nDZj(#^?5MX4Z2?YMwBdYHhE$x-DhJ53Lc24 zsgRVHg1H#(YaLPSV1!G!EdmL$dU!zDi zKQ1ihYa8WIqtW;8U^jQSjc-G1Pw<|krsPj4pe}9&G!+3a(v1}z@Z6P1x1S|F1R=sK z(Zyy72MWIt{Me?mbmdX?p)1G(hgjd`!a+v27o!iQ?kj)d@=NH5aq#-!d^Q%cD zCxL34c?zyhx(tn^d%W%sFrC5ZSHh}aHQZ<+ns66i5uD`=xJ7pobG}mnf-o8$OVTzf zd%qHw-8sZJ38P9xiIu^U0O#g|GdwEtOoEE!4orbTJ{J&F$KKfic7uml2JYXf&W40R z0ee1I zWsCXaLxxxW(}#SRd*(wvE~Nd^hf}NB4#q_r^(n`dQ3Ipw?iFq{_QSj;Y0lxhDC72dX}5MEDQXe^hP4dl zf2yEjL_p~R(><{~dzb$;8)l!H5%%Ic*xuQS;7=|n9zy8TkS|J{yh7pif0$1P$QDZy zPV){HMMjzFA0{8Y^GIT-qt)%p7CM_ZTLF`XU}yu-tT=1T?YJ|JrQDdHc(&Qj|8T=1 zUJejTGa3E|vD8nqz~tAYfrM*cbm~-G9Ask@`&v^A!PFXmP+xrg9krH+L0%CoN>? zYIShqg}502UVstl|49=i!o3==l!tt=&8M8(tE#$Awh+_sTNEwR{SUE1%PV7e(8S?@0KMo{mJ9H0ZeL+(4?*6i2qjuGk5EJMA;dFk= z;i)+P#46u&sBK3DYEh;niYR>~EDnRxRzCOfMWL%%@fo_}yFZIdZl*m$*CDwD9J2sz zXI$AMRzglkd|=Uxm6$eLn*0(@&(o|}JA3eYYcZH<<-g_*=6(M6xr5eMZSP{(Y5?WR{cF-L`_W%R%=`5E)r4wc zAZ^!>DfeV!Ya=ZQPyvwd@BAb>bo|dCYk-tZFt3g0c4#3LP`QEvfpSzBGSCtCe2N#W zSU~;(t1cxV{z(3V>Nt`waI~kc@kR@^_JRxEupm|8IO(yi0!SjBGqh)$k6a-~E22*S zo>3S@KG%q4F|`9DBy9{p69vZU{|KWH+Sj>lQGN?;Dz;R@T~Wkz!|>+^iRAEpnt{}cV9^GFy3IhwiFjG0|POTbbTRy8Hv;`y8DG^ zx~V!p1_90eSeN+CTf>bBmnG{9UUi_fPj7wDx(kC@-Fz^0FO;H6RQop4k)?js_Z1fz`(-r^EdX6AbJHJHuL@~UAhuGR_F*Wg~gliD3~hkgLc#mPqiED4Btzc z%o8#YHbW2xrcLMzL}JZuA-RjZ-0D$b=X)t&n0kFwOe+LrI_GZK(HaTAMV7WAMd^JD z_&;PDDorunksN6ULvL;h{u*9=R_pSDo~SOvWwDLz1`ol(S}0g2217?5~h{kCDc zS&kfomQj5zHtGK(?X9D#O5gWk1f&~5q)|#j5tMEODJe+_DFLNLy1PT9Q$VC!8U#s^ z5~PvtmTq{Ta}GMj%=hs`zLW}MmQ?7g4szUn@Zwj1HoD>tIi_Uu<=2RCNdM+|B0 zDPEpUr|Whv2jU%H!M?-rNJ+wX)yip@t`dw)&HMyX80jLB-i&9lcICTq*c2g94N`Vw z0W@I`ASt5y8#=$1C^oPEEK#VyN)+zBjsMx9=(Z@9e&oDu_~1bX$AeHV5Wc)QGYZzk zgg?F6{E6oE6APA?qC}$7as4nkQWGp`ll>Wl?X%L|G5|{p2prkp(>L=sr(BE7%6=;X ziT*&VukCM3$Ov(n&(PjpT9SJ@72rzyth}ZB0rye8kQNZ)w(P^}f=K!H%s0fPAg881 zz!4ZbM3cT?hmv@J9jf`MYiu%RF#g`XfxT8WQr0Jcs-RMrOh+S1{b=-l3t)$|namB=&c zUbEoj(3ceuXV8A;9*jZSLC#vJix~?<(`uWQTTuuW5EGEddC~|MQc8dn+ak*!g9qfz z68K!}d@q?;X{SJM3rr#4*Z`@4ViGb0KVTU-1Ai4N)5XUy4S;{&&EU&lbqtE{ppL4s35F=|DO3K6*0w*BGZ8H%`BP z5|p;r4KthuFbCLJ$tsavf%o@!UQz7Kx7!Wcc&@egE+6-u5}eyT|JutVeL#q z;4PmK)x+A~rH@UIvB*G8a4s-!V@FYj?CFOrwhtE8D-B6PctBZq)C;^=v+)3kzGWM1 zrw8)W7j%;Om2M{_y;Ia9vDjOx4s3E8Kf)om`~#6kU_Xd=-rNPjG~V3ViW-OC#yt}X zPAEis1_GkJC+~il6uzdUP6+OCIa>g=+Yu=^1B)s}yN88J}cex^2(*VxsWudNK zGj1i=tYKYP{)D71C3E$p%h~tlmEtX+{(;QDVhk+ux)jj;d4-2B^3neI0d`^nH*LDX zmlW_MPj3f8+8;e2MO(gcJOg5SCm)^P-{P*?_-^?D?b<*MG*WxF5$R>~*8eivE**IL zA3-v2zXW&a1z>^M{9;&Ownr)9XI^$Vvb3xGx!uF1UDc7#G4ghI{Xu>*8W6Ur+aTj` zaIC<3#h9MmnT+5DdAKALO7#}iUow1s#AOXExFwvYaxQ)^7%tP6b&I8_HimvUS@yFX zC+Ri@y8f2P^#P56O3*w)vK4hDejNCd#Xg3lc!2B2%bzVkZ=TPuGm_yXZK%FUk->TR zBToD5<(^Po#VsF&8&Br|!Zs&e;0QFmK>xEj=w(b{z%oqLI!sZ#(+mj6;hnH1@t?GO}}hMIyZ^!zt|?XN?cIfcqGl zFDqdVcrZXAIhGetTHA%~uWBWd$nl2p=&RpCK!JBE$=Zp)-Z&ydHskTRXcj}ZASv9d zk5qYXHq!TL?;SSdj6}O4;U#a-+)1_B3Xgo>!r487*UWh;o>2M<>2it?d@8*pOQ!#$ z5$$p|`T!wP{QJzJYftWut(fu!Zu3+gk4q7J^GF@a@BUo1|E%IO{Ud>WQT-p_}dI`AI zaJ;(ZG!IqJqDY4;kw?L{H1uO?%4g;GxC;-J$>0%g zqzP_I5Z~!=Y7fzz!aWsw=~1Ow{PL-YMv=5xA1^7JOSrFZMvuP3VdP-bW!-sZRrs{1 zQdV^?JxtydLfYKBjo~88ZIhNoyI5A+=tb(_MtK+szgO|a)14u-SsKAC$G7gS&qBvo zzIlsr2E96$>}WV-@ohX61q=0I=ckr6=sWcu zyi-12-k!xhOE1S95#2uM6huD`tnfocwk^5LX*T0E@O(KTA%T~#_CR+GgZH`=QhG`b zEux|E0xCZE58TI3t>x}RYeS>O_|{1{SrJS)Vl#=`?ErF=$zTP8;HUa6p!ofgwSN0;&1#%lLGcJMX#>VAJoKW_P=yzQ5LODQrQ zBElR7^OH8vuWEfLko$dMLVR*Af`YQW=8{MYyC?>8N|!Y8_4~xaBGZpK#{-Nx#zxDS z`7M!bb6$&y%U&kHzFs`u%WjIbJe(r~`^IhV3Rn+WFsjQL(qg_6!u%*^*}U2HUkF6CRYeRF8Z!9xJPpL1g>%PeEr%!yG+byC%)ApT~vHat%{YB zMZ91TWWQyT$sD)O3UbGm%3TZ9Lo(?iawAe%M!%gjd`Qu`b?X**UP2?IHux<#shLP^ zrs}5mUGL~Ff-|T^CZWOS@cB;s^mJP>%V>?qbsPnp9N;BxwyTtgl<3Yl@Qtajesitg zPHPEjlp$&#%-!Dj);v5s+&XA3f5JKt6P9o!oviKo@e5c=l5*#U9WCBr`dzkSRnGCr zFgeRPGDj)d%RLCANTtY)?z~g27PGTz1Hq?N2NY&!d)0StOq}CX(|~u&&meej`TOR= zq?1$0woMZMlS*34+HzYutqjAiSQ4T>HbZrxCGYk(ufdD+{BzK72Lm7D)vD7OMK!fK zYq;t;KLX7GNgA}0;6;wfc;^X`HDp{Q)=lrLPvG4@+1yA&n(`}7dEm-@wwbZ^qP&qs zCHEnsW`pld^pdsl8*Z_=lH$`(8a;W1q}I5;Bdnmt3U-S;kkO{AZz~Q^&U@T>>a>|< zb+wM~C1Op{o;68t+12%%H|yS)ELKnKyCA&`B#NHPWd$FaRcmidAEi@zm6=b1g8|ImZoUeoC zV;phPl10?A@MNqqdMa_{)>8$xVx9dJzT?AunT$u3TFoMjESN|L z^yDr^-`-{|AF`?U=r=?x3Gq1=t*K}Qo=v97*YJUx?x^iH`$AzLBq(S#FW<~;IxRM= z>FWvKlB%KMF{jJPb;KrY^r;{%>M`<)%IUvnFb5y>kwEi(F*VxxD)MMv zh0UXHwL2x(kO_DMjc`Z{EsvaN1e$#P^X{vgH1MY-#J(OZ)2vQ56M!>ao|&mOv4-EP zhpWXSCcl(85qu5xMU?SygE_XC80Oa2^5VcdOp>ig5?gzXPioEv`bGLRZ}N0JpU9V# z?-WMnB7a~$G%ch+IE%frg%q55Nja!_r(!Wfc))NyE=l&XQh=$(fn(XDG06oTCdImJO4c!W^>PS@G5DH=e z`#74i)V8K9Hjn2UO!3Lmef6K{!yYw?)%bQk)v;}Htvb~nwDnCuwBI?LzD@lZ>4kFg zH8rMdw;k763f`c^kBT@9Ne+1G$8WG=9~ic%Ua1R8;-LnwAt`one@bj^9326zp^9Q`DQ<|IUCz1pOUyA*d zG{9>Z5CC6aP1JKDn;f*ex4r}LH>`2lx=l-qjJaqH7YBuwh0Pdm(31#WWPIu%7CleB zd|>J2T;!rsGX!$pj|sda&Y==5)Cq*Nr2FoJ^M5B*F~G)* zs*z!{%ku-I1hO|Cxuh?*M;Zsy;=3A_+23JgUr*F&w5&$JC&i14dlftieX}d|@U4mP z2(eP-GQL`G;KKFF&6PePXlj1QSrN}%Z^?`ujLBSN{o=*e&W@zGjA=!VgIn4Vz1(Si z<*h!?nPa6eHQg4fhKG>W`^5*Ff% zEghuaWFUVxIH)#L1U;wVuuby%)5yW*f}O{@>8QGk29k+e>0MY+X{?&l{y7ykUu#WA zr|}I7BTo~aptH$uQeIzSHvKyPCaHG$Jp_DE)WKY!)0p>|sehlm|K{29>KoK)|M)uk z4^Pe)EGQ((--(V&>(>@tzEZwAu!;dOn#t-?PkNsCrxaPgx^IEO)iw?$iT z$> zQn*TVw{q~9FDz|Gf;ZRE(RTW&^?X7lcqWB%BeW_oj?#?FGv0N?bOIskMarmvOk|{z z7BUz`RNbEDDS}bN&jsPb@IGI}a~uxJ8(MaoG&ndW9N>irp(h!6p|ZmM*7WwbM+z>_ z40~+rHcl~6;0Cnn{2ThRu#z#?(Nkm-t5KYp6n(*%s6S`s+oViG?VkVmco5S9CEU`+ zW2f(o7`7k8C?qjT05caL_T#oM*Nea5DyR_n6zp-11NxD%Vk zykm88>SLMc!!)d0^{J6G@)d*F zsVsMB_!w=g+xmCGthFjM9T3R8T2j0RaG8@bX|_e6jseR2!%aUhCS6?(&L_hI&;6bo zn9X{-4Zv(h#TQsEox~qV&;Vu|v9vok?;+4#Dl`^9VGTvo?P*qCmRCe$A8%GwJ#HS; zoFIFF_p)UnuugkzH;EntU)4!820+7>G_}O%GI4D(!Sl^1|3`+1{o`uv0&P~>`ieV~ zR8ZV5`h{&v6fa7qyU=TP6(sfct2^j$OX+FFcs&q zUZ3s>-+mKp(A;t-2g0;RpM)y_f|g};b=y2JKQ~hHN~A}y?H$4a7t4JZ&;COA56`ad zH&10zvUT0u*>M024yDNcc(86|+|xIV`sV0$ck4wMyAB(QYubI&qFf*~PZp9~`K8L* zI8jEW(2;_@HD5JXz?pSmv>N}w>k-m8c(Aspk9RQrgVpJc`@J9!Motn>#6vL~je2zv zp%<=hV~}tEKIC*oEP`Nm=0s>TJiu&vcYxV6{}*O|Zv2VaS4?UGiwgIoY=pFheBKm6 zh&9?Qj?_^RrL)Pj=Bpf z({kU@nx2Z?Ob1AW7Cclb*B&Zr%gI`LHy~}zlrFQcult5ZPKq!Gynh(4qr0Sj6Y_yy zr`2-vsygxBp*dB3b_i&P5~>84(}@{SAEa{0C>};;-&V=L7bkt9r13C@fMma`aH^tK z6!%yBepTepje&}eoR{`>scIhut~qU|IFEZen}!t1kIPUr!F!_C&vR$B6;DM*Mh4&( zYFiejZNJx~$r`T?fI$xhhuxmORvla}`g=XjQ6+v*O5@>M)1wJ5VmVu2zy z?OqO4g#u?zOU7ZANF;}tY4BVMIB!=+*0Q)K>XaL{1g%r2CASFIVBA_hBQj4ORdYeA z)f()xm<;<89LrUa2zmV3 zz=U5(g3lreDg#$wi3&Kh97oHXButMJ^#2vlk>4F=HTtLz#{m^6fq1V}1G7H`ZF;ry z2ho13{x#K#a83Tido%t8 zxK-*%7zbR`7$fOB*i$Fm%=etJ87{pfppUt#<%IekeKa_T*z3k;AA?bCh4<$h&2(LE zvfmr4rgHg-@3pk&=qaz;#JmR2FJ<_^nKi=RZPdQn2XO4}LR>sN8&G=vOymbvM{O_4 zw%V>Pb~@#&#-n5hCKB%z&8&Gl>gRp8=m@^oCW$Ilm1S4BeD@BaYf%EfjWihh-s}I3 z(4uuvgobaf|B29Q1O?m0I2$(yTzWo-(`z858|XK#4?6B`YbMIH7P#wJES_jO4yQ!a zIbSXVW8bC-Z;q5eyp9YwHfLODrDL&r(T*2bu<>4lF>z>*u|U-Idk_6MIUZpM1mn6a zo?{?+E?NQ7&D4GB8`|Jgk&RCNY(}AQ8s) z>84t87@auB5Kckz)GPKgYM6-p-Bd~jpRVA|r!1Y&VCYF((n7mjxYO`-JiH{&tzX+F z(_-UN8$;770+nPsv8QnzWKwY9QP2&km8eg7swr^-_HXLG>XZggFuZ(BOn6dc_1NsP zL*+8o9;Ib-GvS_^n&XQ-hx`IO{b*TofE=2NjD3xLn$ILeQ!}$xp7DrO zz@E7MHJ@#aikw$o$3u>`pSa%6J85}`u=#e{0_4>4iwbI4{?ainxw+dutSqPCa+8Xy z^bs9J#)zXm+d{|6*YhvrhNy*1oWuHb-(=u&Ep9Fr@df&EFeR|EO#|v?l42P z#lg`QKAFXQva>zsMt8{%3Hl)?xbT0~pC6+DhL>Fp`7xSHZyRTn#I;-zvI|~YT(xc< zX&Ud|yF-KlAVUZD6pY7~ja=J=2L}fOht9YXkn0Wj=Xw=k+A{dTowC$m&gW_|zRWx} z-Vb(=Z!S$#wuh%P(l{fDiMcy9l@;f!CIP)8t8* z>GvW$r%cgTWzX28nVcEDA;{APj;nvul&|~1{UazBOh0eP9jdVP!E9Y)4ge_97i0pX zg3QQZhzu*V!13lz%y$fh3-ei3QZ~lDDm^u6RtDEvDsM#E94`1Ds0TSJ0dIYb2IH;4 z!ZY-{SYD@nqe?SwC8gV5FnG|eTMmN&7Pwd^ap;f;-s*Fy?MJ>0QnByp?*)9h)xD>Pph|KkP?E(}l=<%Fv^{;*b_fSiApO9yt;`>SFotZ-X9)kGZ3prY50zy-h>D=W5rBv7t z{WIBg2<~GuWbAUJ;kE4ksu`mo3p!dK9PqUBe*mYcY;u9d>xywOX%-BC*BBFHIkqJ4 z4LI4t?rB!@-2-NdL1a=S`q-Iec5dz#x7*l@rm9=U>3H75Vml-WM^X6H7eK?PRz=3!lise>4VQ`IYdF{gVu}*r16DeQy5)Xb zW9bLZ&%r|cN6(UyZ6IY8CgGqskaNF)=fTx1x=D7rbkLgYU3k~Lx7Y6f}q8ZH4t4OoO}gDZm>roiue*Qwusbd+~2 z_8PShP9UP@PKl>4@~8npRhJZhO@`{AD5F%Wh5zfgSD4jLHio-xt+^9F6Yv-$)fwL& zeRw#k@}=%*{DwsNg%pfnZ!M-M3qHg(#hd1_EKeQez>4YP$iY;B1EVYE*r@2OGYCQhFJ?Fy@b4 zvAun2(jwH1g=aNT_Zug@u2pHN(uVi|a>WLYP%8T9bUX3feXS#*rfhBG^yTp-BPI%p ziKjXEg~r2ZR9}r3=R*%oX+mNST_v%=l_0?*21~Ym| zvv5LIBgEvrLi>x!>j_4OU)j$MO;2@Ri~9n#8q@O96r&XM-~$k#U^JpX>uGQt*(-DOjF+Ba@o2YMFmrZ)nnt= z?`Qt-ns05pwKo4E3={k&3@iK)hWD5L7h(8ov0o`n7{&s^FwJ%efl6XxqEK`KQ_iPP z;32+ zJvuigyPAeiE9Qbvt+Q*#P;*t|hmME&kvu>4cQP}jPGoygn{gVB!&6W^!MQ6#SYVU} zrhM2J9l+(sCXTS9rr$^TrKv`<8F7Ol9o+7*Vm%eR`>t27UJZLI6_p>cbB*ZQV=5KPyqFplTgJIZS!%&V@~>mybx!KL_im7s zLj+APJ?+2b-)40n|H{GSUlQiKNQSx+tp5(77H}})i0b`=IO4?z zdLjIZp>fIFiuSnurrC)hVky^mZ0$)X>mqxN$_m$UNaZ zX(6u4x!T~`yn&(@1L1v{G>a2pam~S84$T8V%)ERa2rlL_AL?dq@XhJC`w#ig zt!Z;T7TrxfM?5bPV<7ptKn&Qmzp?azFa%4b9R9%4+oLcnMLo&_Q2K@Azn~QU_HR&% z=4J;U3x!g_A5glu&Iex%yw^pDc>7Kbh_}-{hMvdkOh@Zr*bYmHS@yd56|AB!VYuL03I#esNU83b~=*A&0EWSkKDt z8+Vw@JNyAgBGrB&ky-iMBiI`^3GJXHa^>wWBr@a0Qb=sUXjqH7;P&O+RT}ckwbz%h zvpibhG54e2Uhx;%HF+xEJ@p5WQu1*cBY6t#aGCWgvKJj=Q+Q)qlEu;{yY6~*D!XWL zxejXC(9fAa5qi1D3rBtxLGgys9LYWGB16dFX+d-Wro}(O)Y}FMrqTD!I2Qi9!(wx!K;yMKHQO&T6?F^k!mQ zElSB((l)BUBvOgoa=4A-P%u8nsQkgI3;hhaMW2gA(O2Q2;$IKP5qy>gLv^}kmPIrxIJbch+EL2}}a zc?sKWwYyY}{98{2g8NbF(T3${MD9$6cVoM(A|Cfke-WS+)lxX0$GWW?ZQDQ2M z*DDEW5O{k+B-3bbGihr-{6hVMu%wKPtFD)}YVyjC9343EN!Y9`U{{F*6;+pks2T_rRYM+|J>_}-`QzhST~k+rrkjzJ zA^FoI5BJMV17#CFDnEYc;jJ12maCKB*RM@C9U<*2QAsR=0AG*vGneJUDdmw=C9HvL zKI7v-Y|EG1SDW`&&PmsAEDgLjiucduDEmGIlywVN=phA}1>|`CN-TZ&zYx_0ZydabZRprloh&?xrGN zQcqoPgA`n`hqNjOIBo*#RAneMAPyxdU=dU(#I;)3y}sqraqO>^R#wW_NgmS5A)Ls8 z_4eS9G>KPQ*-9tlfqY%>ts=Svk zhG@tL-}AjFLZY#Pf}YQ;=MSzl-Zj zjpS44V73q`1;4Tfb}2nb;`;cfo2NrG(U1TTH`U(UY>L>?OP>RdH((`|Rh7@^Rz!V`j*d=N_V$^ao`}Xhs-Kx;D7#k{ zR~FWRs?(gUSwB2t-vH&Da6<*$kW?P{LrkG?5n^sS?}dbzS!u8& zq(}-%JI+kbfYe%%C`ZLf{Zh{W%Zv{4H%d-38@Zz^Uhm}kJ}&0<(v;uWEJI|-AA4y& zS_X12PMJ@2r$TvQAt)nxa_~2V2^D&s)N!&i+K zLmuN0zw`k_l>~ed#e3nkB|aZtt#p2VkEbuSdB>IZe&8Ph-+R+jf-|EVEg)qg0uy7vJQG@1vN{u=SiZe;_!$UO zwY5B4{e(-gR`WR#!fw3`Bj@`dtakkf({8FcdWdS+?;E0nOUZ`g7ffyR zIJjIv%)+rxnL@c4pQ%4J@Y;f)9)kN#O^{uz8^ItKB>irFBt*GrzxWAt)$91{hSiK{H=E0~&wo z&7v22GXu>}y?MS=V;Uz-@itp=c~w>A7>H@UQRQy)r#2Ru-56=Nd33fHDU;Dye%1cI zSwp1cPZYn54IYVXe$--?Zb~6L2&?gQ*wY;?s3AQ4_#n;B5lAC@ltOp%`v zsQf)h1Zp$ws#qHC<9y}87=r9Lrc@OAlRa&q;@vI?F*6-uF;_AB<{d{yOx^>c$hLZ7 z!kAItZoTJ4JVzoM1=(e_o2lUvz>dYkUIvd_37_+a@bbc&r-xnV^)?1Fhba!n&Dw@@@Bvb0A-`I#Wd~H)15*A2BHRqLM|PJB`3q|0_s9)my(B>w-AbR<*)@)st#8sp0y&cM(DLX}>k@aX99;T@+m8ScM=N&1VbAkA4Di z^t&bH3Qnh>nI+gJEiSXx*VdY~NB*sYYn$87E_XD{X8Bul8qI>x{jPvuJ>`sU72)za z>hy>wS>X|PP;2@U^D35CS9x8w-oJiIaBW!ql*d+Q&IYJW)6oS;k#JN#nCEE)$pVg8 zx#Uz$nqWVZJP>`er9GHB$}VVnL_V;2b#-^E^#6=A%Ye2J=&wL%WcWnQ>B@xlMhd?s z1MGvTcdI6UpaKkbxJ(2~ZmCivU8wC0JkUV2Zm6T>537JiQ%jipsIDvl&04UOt+MLF z(GiJUX2NrGPk6=w+C7)D(2v>{)>i0&i{%Vd{v=(o<@K$tSG_`BUvBR#R6tfhl@??c z6~lz5`TThe48_0!D7Ca5T-gPMkVD4WUG$H(YTi-7nPxzHr@ho@0^+Tg^(-wdFP#=a zf>0Dhw?92FVZ4+8j4`^~A9j$xfS=8ZR!CAc&BT~^$Hs2{5pQVj8Rs~hB`rpz&=dui zO#>8@BYs}`KOV4`4xgW09F#3TQR}6 zJ`1|`ES?>CcU9C}3`p>IdBn*^!hmN)&1{YJh%wS2kHYwvgWryoB=~nIUOu@NpN!#~ zmt6toD5nT;U4@1a%8keWXGtiG=|4+CSUJ)lhACGFB%6!uut40OU7l}q#si18>(i^N zt1~O*^e(XqGxKXtszEYzc?ZM_aTYy8#frKB|K?(S9(E`(>}e`+-o=7O6nHR<7p2}+ z=JDk_3TIp?4Fz{-BBys}3ov$p8^)6rr8IvD?YV_Geb9Akrjt)?C97ddB9At21b)s1 z@94^JbbQK1KiVy-^K0(O>-yJOtn}$^Iv4YRw#Ls|6OoC|)w6biuesrD0=6Qo>9ig7ME4mxB53pasraKHIS&lO2bEh zUl=F@Me@rUMaJjP3_ z1)L^%k4xi@52rz4!o_hBg^1yvR$e|RyMam&*68FlMKbCRUTnMdx-;H=tDysnk&WUm0NE(4LlXe^ZYLh30kR4HpydR*O}f5J6meA)YKjH~GK78z zXZNtaFn-zo@(Lf!JD$z26~NDGqw>Zwc!npEuES=CPoyS7qV5EXbY<;V>Lh7bjk_kl z$s_wAH_H=8te)rDaek>d2%Ouw2h?UigTL!ZjLEQil3e3I^`wGgJYS*#`~aFC-f@MY z*q$=zL5`juVP9dVqc+kfasTdj29!WV5)fwZNMP$Wx|>vMhZ)X6gyHRot#LGrfe>+j z0WEy4C6K-YN!35G^ZG?{b-d3$5WmhjMw&)6#P2XloFi-7!Sun znU+i9VqYUuxm2CPog81Jto>XH?ZP|1h9@H?OOIdYp&xFOXUzgVt7#z`e7VPkRF%T> z;s~=ncZxly&7StBaFW8EwYs-J`pgTE&pD=xZ>t1%H~mP1JsN^x zha2cC{+H<&iCD~M*2zJh5TyUkyT2|Bcv0(QdmBV)&1NzYlkO`LK zaplxn9xr2#Xapni2k^5YCn+LQeN@p{(qz+$NP#1h>mV6Po z5H z(5(*P5Jbmy)hs?QpPqsXoR03Xg7CRctY2;Q0JR^sx@{}WR!4Z-4~mDOQ3=SnT#W1? zYKi<$P{+=~BNSZHB^9)(3$ORxp!}Yb$3xi!64-KkLxGJTEX&Qq;|b5Bru+)D5bCV1 zDiiOM9#8>Vl(~rW@}EwXK8czicr7V$Qji+=fKKM_YN1}S565$~xhP9fXH-l>kt(8b zq8t!&p3Hx3Wo-;q!TXZ1AvmIRH(S7Wk>m4j8u`H$o=;s2Gq7}<&$F8lBf=_s{cL(^ zX%{4v!xjKsK)lOcUL_YiJJv{~^t)UPw00^q7kWjpsW0i9UMpV+4XGo*Mh3;L6XR(F ze@Jtyp{qxWO!$zL&j!9PrPa8i<_swUCu4*pq8|8twaIIGEJPY(-x{tT<$?01kJUW$ z_sz}AsMGo%1K0sag~vqxjKMGm$mpSb*u6=_h=&lz{$1|fGmDy+Aaze-YYS9J<<(vF zVX+qQe%5~<6?rhU?ur?tk4;uQ22dEZSui8R^Nem_UAp=SjM=S0$+J^a&+dZd?sNCh zRo=g1-iyM9y`P`m1R;5GL<{&h)C6d$A1^;Dpjf_Ff`htPmSe)>rZ^87t+MWNf8D?FtFPPDr4N` z`PY%@p}K_7a^dDr9mBtlWVH83Y8)yQ{IvaTAfy9OERr1nLqFl9_hD2gBp8LOqP} zU>_5H&_TGFQ*-MU{ZN<}39N7(z(y&Q5Oy(6Nr|b8-gukg5rB-VW)2&wlro?`(Gb^L zthp?k*4vJq~ zT6+4zI+&c7+FtLS>Vs$|&1*PBZwFVvPb+0~ht%4is|>8~j0y}fXB>^E0rQ>Zyg;n3 zZ7@126RpUFjyi+?E8UPb%X{Mq7o!f8B#ae=IbKfcD{lj9*KjgR zo>LL@sy02tWAWoiGV=FdV{(25z;ybTkw+`?_iA;(e^jf3&R(9(U=PokA)f=zA$(|f zrqnkDba!xCM?^dsQQH~Ya1=lw&{#!i$T2#f0DjWNc%snu0K=W9{*55q=7xk@xEq#l zNWx^Sl=e7iCur-b0m(w(vteY;UxSjJ-r91SL7E&F?9+KT#}Em#;e#T1@55%#QUPr3 z&8zK8B@l`1zSRTJp{-mF(JFY7T;>n66y~6o!aIOl-9N+NqIWXj55TxV$z<0K5^S+4 z0o+&GK=NpLo|c~{=7-Gxl3Nq#{F3vk+~V9dTaR~;DS~xJ@xc#~qM~07mDDD0Dsqzm zM#4Z9eB0dHT(WC+eJp6ZY}e7tmAG)BPX33gV6cKy`7F0^(cN7AY@0*xk@xkUAP)*6o}KIO$$Lmbxbr!hj)=yrYV73!s8qbo42whd;&U>bzq0~!`=JEqn6zNl*WpH=GExL2JUwb`M> zVks_S`cq{Lbkm?o{%d>M^spP@kJTp{zuNlN5incdg%x7!S4P%nf5<)hrnW;?uu=~u z;9N4JzlH_`e+9RV0N-3C-#1>ruROUy9$C*jS;S&(6q)mG`P=@t-uc!3_jm+Un}aZvYCV)V|MH+@-iKFc zoCqR8^0jymNELYA4G^V5*ozEL>VpZtuIn(?Jlzafh;o_OXvlA$+LxNed|LHKhK@lc z0R)b}AA*bo?CKg!m1GeA>QrZ+@VfonhLTzdX3BpQiZ$6E3Wdx6pioTjsz$*~{jVSo z;MN8!QLA<4R~-jtWDEih40^spFk#{2NH?q{Z3(vqlQBLDd)X7V*TFtk{U+Ph$K_^u zUzgBqHX7RkS|44_vjC=NFoX8pb1TlLHEH$eEw72oQ!mo&&dGgdq`y zvoFJ3+~k{Z^~3J$1uW)sdpHmzpgF$?5_F=h^;2cOhbR^Dt~KG1blqi;u2V<*Khkwy zL}aoVN51_TkYkKA87@M=(KeH)3(_rZ>Df)Ew6T9raCXgCRw-u5;FirKCMU&XXJw>szZNHz~#aKoBv zE=$!DuoX4#P*X+lsvd7^uaJRC?nT`-=*urgLOwxwoGCUCF0QB?8>0|cJ(q@v7cag; z#EVbv5~J_0bzQy4udn}m{O;jyux3`{Kl!`B{9Q2-m4`o5>{!wk;zmFlg{t;`^WJ}; zu}EaJv=UAwImRTubTU;TzoK3;WQ7st?g|2%5y7Izu z^&0BORw;M`9Iz2V0*}%9uYc{A{+4eaB)tOuY}RpBa4V`+H$5g^yYv9lsw}{#NvSBZ zWAu;hD5c-uXa51!tN4!czJ!F&jGu|iM{7&?MD1kZ!~O$#RmW0bL&tElMiUnxC?K1s ze#S?VW8}4?DED^{o5#H`C0#WNc`bq5AN@*(z2J|e8yYj}jv1YU5m z!=7(^-Kkl}r+tA74+{$ny!>Zf#i8al<6R&fG)SGlzqj6$v(dq2h2ZHhZ^B4lYjLel zcF;`rVeFlFwRFQd;d0jm2F9EkEba23KXFtX^soj#{3T5=8?5QdtN7n)hp7vgRN9mP z);*FY5#-V6c+iYziW8~?|JL?Z{`JX|0&=KfuJCJn$H7^8`=2%z4PP)OjH0l>Ld!u@tEO{ zjh?0@0qP4hq+z%W4t@|C)884)H{Tps%qe+{^O<{@|l%yj&aeVQQRY{_Ga7ASQ zwNo7=7SGtD{B#^@?mOuSJ4#`f3E6lqHf5;p)R+ILQv;tO=Vzb#%FjMEisMC}Iy2;_ znQ$B0r{0_){9z_Uwr3+|eoUFd1vM;34g-DgF4rZi9;|%?9u3G~jg7q5F)R31(LN?D zuM!$^DFyBUC@Rb{J5gHu;6KnY)mTULJ^NuJV4Op2gw-E5!jFspFkV8zen4;!T)cXl z!{q1*y06JT=q7&%uAL*eB6QrmQeFs+2NrVty5yu*AG+kkY1+ftP&O-97i@{@7zsZI z^bVvfaro>|-n%LNwYX$G;HvfRA`$Hk{ikM$Q%&-aFZW{#a1i7#|LGun<+P$1$?hPj zwm}hEW8?d|3JeaT$_66M-@O6p>AA44>>gn*sntB)+EL5Z0t(n2;$ZMYB%G*jnyT3q zHuw|@*MV9i4de~T%95t=bFi_b@U2{Eh)y}Bkk@9^=Ie|*2rgP^E=fr_#n}} z5uWyWx<}mL^q=hmd&_jJ)J(XcuUru z<|Zh>CUPHg_K(}fa~WzOV~2v}K0h4(PijS$9m_k1l8bxMZzI4FUbC*d2W8UBz@Mvk z`iDxx)|2?Ky8c{GqN+%hsO$g8 zxOYA4sKhgkoX5lhsil9`o2XgSA0xnlon(?{7dy#Tf7waae7qSz1$L4}_Gazn)Bj&P z$@V#K78q?eZuWwvGZZ47L3sUa@0K`y;bj7XYxhv7vvMJ~pi+L@qT@hA9=@>a4`>jEs>;}WP+y9qxAfxoxd((n+opf?8kRE+)xvYDAcyTf+NvyF*=0+V6A z$Uwt80*9o$5d7*|MWPYP|7*R;-K+mfb@RBEiK@Z!nIG;zm&vy74|f2W_Sby7Gtj*L zSa0%FfuM;-inBt!@uR%S6>)g1=MoxF!ybTapHFo*GG{M>gfcA?8F>`9E zJF%hJaBn0e001dWlcIuo@8t5)pM7c9w*Pd+^Jb=}dtu4=;S}&b z{+@adQpY|cEB{{SI#`Pg((yCxb$dXfTJ8`yKD70*`J{Xz8DNqWB}*pt|B?3AQB`i? z_Ap2(-5@D?l#o)oOS(2l2}nsdBHg(O6_60=ly2#6rCYj`Zt4E54SJ3z?)~l<-=7YF z@y2@BGoLxHyTSmiPzq~$7rs9EI7o1-+tGO zQTkhNjiSfSVHWOl6Wl@(yNI5*9V`C1u&gw>L)dUyFtl@i+xGNllT9u7b3EYRDJd_r z8K{5y=Lu?oe;!-yzx?ynkN)WV4>tghnf5<@1G7xlBaA9H)0d_A4RkRyQkRYA^A!>R(pndP4AR@!>sZqY{#n@~e zv-B+DM^U$F!Kt5Kd7N|Pn(cY%bqHS%(`nOVL_LaJk^pD_c{TlRgQAtL9L?gU^VS}z z{_c)&Px9=fSN2`m87@B~SDxhosp4^1qUAF(cS|DJ$o2+^ z>5<|8(WH-QFVHDN;rE**m0!Yx7UucX zXiqx_VB&M#3*P&d)DXzE_+tZ9n`T6*GZ6)jhf5}NLpuplKZtrYF7j*FAssVy11qm! z`951`uxOQ&?N)|Vtekv~3JuR8XEIVz{%lbW60qQd8y#rr(#P{`_ud-MII%lfBG}%i!>+mhKI+FF$-+P2BTMdmY~;2rH_zWL zcuuP)9jyU_7f+-GK>(`dy!kKJzsDB0-xmho1Gec-K<`&M)70oE=pj!SYdO z3s!z*tohUr+`KG?T0&I85Om;u?WVu-(W0?PFT}y%E|A%J$AWSIH3%t}i&ECtx7y#D z^t&WrisDOOF6Or}Mz$Tj7727bL9Z{;PoV9^>%J(wHj)P%>|mcC)kKuS|BhfHkuU>G zwF{X+7=4GeG5bM4=z5zFyW7y@^sRawa^7S0%doJ3P{b?p%=W%H_wK$6yWIUMU`Be7 ztavAhKf^Y14cZ7Kv_>$WM zxnSc6X;_X3Aeim`r1SPx?;_Lc_y%pJJOuv|D6b=0pwElAU6L$%slSiGFG}a6{@Bit zmDDhJNtV7Ayl>dF`|~o3VL|#X$QMn**q$15y?LtpNU8W!xxBXwAL2o{dFV1u|B)2a z{f@wb%+Ye}YGmQvGJph_{(v$UHlJ()M=i|RqdZ{F%%~_!eDPxL_OPA@t9LO{YA z7h9KyU^12$cp~He@=5??ah<(t+;^S5`YLnA0NrLE19Q{xp0%-b3J({Tle6=VQ69;B zHr1>(iP+HU8T$=KT-G=!A!dSF3{0Sb3c1*261+?2Ag+jg(~!JIP7dQ5&>H8=$@}>m z!}}gDH4@GSrdI+Ri#73YYCwoj4xly2)}V`+Tu15BQ2pzvzlIH2xxpR}gj9~cnw=tc zU9(d&Y1ltBqy9>Z5yo2=B_E$>f|Ovi#DQOr>hiqrw*KL-;8n_bR_oXM?By+e@A&sc z_B2CiqN3FXGWrYIZ%dzO3}m>E&W(YG$_3K5oLyq>+$0rR?c-*3_*|rqOuzDi0hEV1 zG15mK3a<4Ry>s?q{;zS`6s>Hf(HT~r3ampsM)A$Ui_+==Jpm<8ATRqd4~U3uDxj77 zgZLib`m%o-Fm|kJ|K}O|XaD5%+W_h`Izc2w_Xj5qf;`&B=AwGr%IK#-jB8H`7h%DT zN^gUMrI#3=e|ukG2nCr=`_5J6qm`GQOX6>CL*tnRJ6;2yh3pUvqpYDn#1J=$ifFr! zMk;)5#bEvd;1B-WeP2|3;II_`<**#yqW7V+IgY(dthI&D$(AA&K!x(q5fQXVI|)%s zBMO;)yxV>$!`8F6-xU!!el%P!)+rseXz_>W?vMUVCp2P+f(Q;iP6YE%4f{tHr}`w~ z`BLotv=!H9EWMY*`wrcv^=5e`T;{W$1-)B4V=f!}T3_`F91=@MAYgw&hOcHZ!N=@8`Q$Ar8 z0PPN^(#ff$IFhN5`eo3Ng5PPeWa_kdWU=HR;(q6Da2Xi`Uv-h=L~j*8dWI|jTTr?+ zx_HHC*fHJ095=1qUy^t{B+B#?hSsmckBBZ;y37dW`aXI!`kBY-uqtP%Sv0FKYWqo6 zQ<$M7!FyD~rh8#iLR`M+UlcyP0J{;x^iFv#N=W;G>)sA^q8>Dk*x;bdfVqV=bAa)U z!d5bIu#%<}!}l3$8@++5p&%!loH*5FoPHVNH_eKy=Xt1wbs;@nSc?OsiMPBnsp#`D z$I!Njn6z6prrjNQd04cnoChb`mj*WycSTk@RgjU9iY&sla|LhDePpQg>{_?0b9Y~V zOI8PGoEzK!MHh7rzgJ_LgpWPNmZOF}$SRHx8}l87goK2Y1RSf7Fhe-# zy@URibZ=S(g2qwJ#*caHeFGt?E{={$?uS0MsWmTp-}gZU4xdEYlcmD1gPRbs5!?8# zy|1NHYiFJ=HGg;5Mk`3`35%`_cNg{Hs*A`Oo^L(9{AXR5nnl9{=d#k9E9{4uUV&D_4rmc~_;qKP6ApQx0 zuhsGr61D;!9v=_R7S=Qwl%OQn@9bVihZ7oFXsxlMfgHv1@yR#?1eb(_-AL&1NP}mj zWH!`5kn(NxeOb*>8XsCN1$(dZi}qE@K%bTBx&Ef*SkdATLJP^b%b2;8~j-ltR1 zbI~3aP8eKg4%5HTb1zVLtRz=9j8p4GX))Ts% zdQp2el5BW zBuUd(E6prEqZbpbDlYIUdfi`?kC{uW=XStH-F@2{S5 z*&v{2gL!%)ImGfK-r>VUjJ0)?Oxt}uwI;SjrQlj{$(vwIgT4*g^649Kw+ju}7of-G zW_c3^DqX=}KkYi>4Ey$TzK$GSV->6(sd{eMT2oQl(<>1patP+-6hzcC$;ZdG2%6Lv za+!R?bzVA)bw(vyI@CWeo~iueETsd1bi7-D$|raQ>(DSg_~VbqSzw7IPl%gHOZTcu zYynos&S_v0$pwo7W# zS(fM~Omdz)t#bGqn$cCnJ+o+v15Qwcc6koV$q%69 zq;c75;Jsy)&aO}*j{L!7a}DQ*Hfl!(*7vs5JH!qLinRz)W#^bt*RqP zC{hY+fy%~DSnxs;L38!uJC}-T6zMfO~!ffMAPch z6E3!!5O2b)vzGFvNF;JGB(rsY6QLDVV2LE^VU}H_9IcG*roU|8U}q;<&sK?HFUuah z1%zMk8Nz$3Nq5`t6GB3b)BODP&L_`yiionU*MsOKzbSe>q>JS0*4vt-k$3VSTrake z9k+S?fKMq+Vw>ep?$v@sW@*hy_wLsA3GWtj z(Sltmj$+}~tw5#&O3#T~s^99}!MUI?3{`O>OrihwhcQ@kT@x<&wqLK}AS`%8q2k~W zmt&2K0>3YcV*dHxL_yVV?QZP73>!4aLAb=j*vZ`6&yW-H_)S>w`oAt=ah_w_9U zPHBj1L=~z+#oyxPQ$375`e|^ah$2H-`Ih-7`}Hak&Rd5@6qMMAxEUU7dO6H*pDzfn~r2~eoMwHa7%WBNT4rSNjCM7g|(WWn2*Ta)RgymKck2G z@7P4H_I)SOR?dEkCs72^ZQb9J?qJHAE>=$s_=pjZ5b?YQw=eC>v`>3cgc*0PP^!?A zY>VS;Hk|ls&WNj+c7J$fsB-g5zt<$FGq;||f9#Q19b0=e+1{6DSu}!|#eQI3If)T_ zJqT*-sHRQcqsnl|i-DLBIy|J*c-g{_OP`nG@$u5=E+Xks8%3U1FM|98+>*L-joBezZZ=y%F zPD3Isrz@$m#nIQBF6Y-?KT28Y*m5W4H)SO)Fgm%AbA4&0uk`6Cj^wL@nolN}Xe>p6 zZ;FFoJH?FGnR3UC#QuuL)QUxNMyGNW#)N?dzC4~SH8hOQo(aeAO2Fl=AyG#5h!CSI-?|Q8t-rxeBRb;The$u0Ohr zst*nFx{WqyrK6UJEV$I2?O*JaCEB?WN4*?j96|gS9Kq)ZzNkXP^it1cI_42bn)OVm zJ|u6sx^WY57hJ^NkMXnf+Y?<;R~gDkzgAP?t8+8^D*R zh0Uw2>UKQYN9-Vl=^rD@MPPvyZe%2GoOYOrIJzi>5a%`~N#&}xY_nnRUevtm{M_X~ z1#NFRaP)KikBVet*xhK|u_N$n5@=4$RW-Nxsi?Zo&(1%L@4hdvErs9# zr@O#DI#nF3+5!U^ zMG8d-(f%)`NH865q=S%!#Kg*qW;H2r1Eg`fBQ_wOs7cRQz;=ah+&QMH=bc3Y$2?{!i#SzUP4UUkHW#zYS0NOchR1BlgN6XnTE#T%a3O2 zURS3*eEcvxT-*;sVNVzOHc~&Or!PG`Dty(V?>ACFuUgYo7YOiD1c@9-cW#E5g zc4&UEyt1%>6uF!`wu|m2NE#8Mrji|W`T#?Fl{qR;uE_4VZG%I+jvOC$zIQF#po{PS3-Q<(yPyIyReR%H8hm7R(8U^q85ITHl^e! zy5Xc#mFQuz@pQ>04gV|cBG+LO;-}rz9ap~*3Vvg<^iUA2QLt-M(9y;w#x1TbePx!q z&k~VPaMW2N3gE`sVc~xKuY$ex5Y#-D$0gT!4XhGB%d}|n&oa%bU$34=H(#OvgdYqq z+1R4Z#YI9gGH}MEf}3)b=f+5k$x_2~RYmikm;4E}*++r+>Zf@u$k%Mtm6aRq&ALC? z>R5q~0(=JE#*P)1zw+#d_?3QzH(VxrsX}AK<2a!UsB6CdI7lz%U7nt{Vzq1>60ki= zVoM&xCF8%$#LNmzQx-P@SsDlXfe1I zK;TUSfi-SAb*zNdx9x!10XVwPoKdr(zK z)0#|*$)grLMCKCe0$?BPNE%<{wHy&n%GyVIO4il^Aq7@5O9}GYWs1B;-7$OxFEVZd z069YEy58dZki$cN!&2ZJI{b2xQRbEvNPe8+W6d3YoyL{>h>P#roMjm3F=b=f)`$c` zV_EQR>DClstv1;7XryXtYShb3Vp$#Fd045aiaJG}xAxRhoF9jBi0j-(&*b$FA?e25 zmzkN_ad0PgC6qroVb;Y6cpc=Qs=%iQn)OD^z-M;V@74MdHzC7<(PeS_eqbjLoyeWM zL4Eeha@><*$0TOJrUibS+(7ZQC>>*ZBRb8Sa3&XTU)Z_ULs3618{WDQl>khf9K8XF8h*SY_>| zKmue1du&3^(THIQgH~NodCmEzqdjWftNoAVA-x$B0!x2_fcX#V2)QR`uGx24T;dB7 z6CKyE;?&qix|hE*`vJNns$4AO&GMw5g}}M_jH(uC)5Kf{g_(|E%Itvl5Uj-0BgC-D zAVQxNnmpwBwD)Zopn!E!tt?J0D|GTMlqR;!Y*Q9@ZVn6k^<&(VZIrv&Z3-kwHxD4M zTa!6c6EJC%=pgyJMrqvLr}sozA~dnslO^fdbu+vKNs>%`b3XpU1#~}I2qT&b#HA}1 zg3IiRg{VVl{>4J%$Xg)K@)DEdfnoNi6&1aoyB4*j3Eava<~t;YhAz5aT*z!3cYdu@ z=PWY)9ThZK)tzgPYJo`(=ejz3v4Bims9 zy018z>IRMM)ePIg#c&259Ul*w6cTY0PiL%FwY2$Yf7T?r_{H2^RKbV2Q4T!?M;kly0B}eI=6Jh%vJ!nwbCTqP3p8jf>UXpQCSqdK4i{0@bvwsK&r6XYplR; z0SK&H$$+C1A%XaRNqJ&`nR;8QdffLx5tv#+zVRV8j1{^G@-0%bui!^7+BN(rvG_?v z9M+u@3z+;xL>&KErp-kDCle81R^r9LQ!f!y4cD`EXWFBoQ#Y@v;Cy$6x`VNzy1JRf zIx~%)#pSu<8v8(abw`yFHG8)XD$lF+PtH@wH?4J7_0+Zr)6#Y^QQjt6PF56w!Z)|L zp{Ds=-U{8SKjr?i*Qk&Ppv)HSK?CUHBcin~0N3;^{PK&>22Y`VxbBbV_7X8_MfIP2 zYU#X)b9t7)BlxIsnCaWHVy?mVmQ!$-LaJ4Hs2x6UV8e3pTp<~@0G0KM-2JmJ&$+Mx zDWSalPz~7cuWJPojFQNOcc7r&iJfU0>-Y_;U@&e1pQ&@pL0n>78xpmwlK?9#dQYt7 z>XM$T%`CB|{V59KsCgOa+0MRtK+?VF@l9=NPX#TKxhtjft}wSPhq-rxmX=mwXjcqh zZy(Ahq2mAp49z;5)9x@U6eJ{<)1$N16{FUrSDx-_Rf3n{^5?iwiqn>lWo)_&J8{jH zLwJ~FkoEcu9XjNfK6XbO8Z|ObjJ&>w*_Q^Tv!UI$5lr8i7a86Yf5H|)f)~>w)xTFi zgY3<>Wo;pZ1MB~i8&6jI1cm4K*exdJ4v=Ls0(#~}j%4&W`>SvCAnDzDkkJi;H)NAA zc%!s5*^5wh%}zv4LDXRXgaMwy^yA0ApuzNM<0#cW6P(PeOA7qNZ9Einrlp+PNCiliPL=C} z_fit(>4uZPu;pee8Fh#2B{z|vj?txUDr;WWrJcQ75bzqxB$%S9cD$b?iFd*JA`6=D zGsGvGHY}8?vWhJBFaBZ`O^I9u1C1c&R^^XsO6wOJI&HP;g0EhzzD`T1r3j}`6uR|k z1Ow0*klJ4~Mhd^4o83+6R?>T7NGQ;wqmu)-&Eq|Thph|xBkNA&JfdKI7OKp>pnjlP zd3?{z;dDhHH;TnUR|^Jw9d!aR4Hy-Lrh!~#Oju45pw|FN$t3*2K z(~*4pJJykGR#>TYUegX7yj*HLAaBqF%$|pXUmIVPJWWm8>r305?GZ3wO`uJjx+5DT zw6U#_I(FvtaciqZ{I(DK&La*1yHMO^PA`%t7$j?YAh2O(<#&o>NF2QNtr}bgR(c+* zZ=g{^drAcO%y&$3->79b@%wM9Y`)0o74jM`n?gu!m(^E%SUduz>?s++DS3!GrLO_e z_J)Kl29U&a;YR#`k~Fj6H%v*2V**{Q18eD#!yVhK&RAg_{{q&jY3V0}Bz!0ZO z$P;`3Nn)CNU+-Jr91`Yh)b58zquZOT-MXXF6zbo#CxAOfegod4!Pd)=^Ga8?(e>E5ZYmre=+r14)f_vzZ+Iw^LPHOyAUhg z7B+m7jYwu&YbH!Aj?OQVx*Dcm(mD2HJ%O}+aG3`dGzehHx*I*NtbUSXd$c3H0lj#5o6(GY< z2t!iSjhw)lL1JZb=2N9a>@7FrouV&!!m7|Ik;+PWDy`i}3+^LgpmP(@6=pa6KAJYv;}_fNy$8)08NRpDWK+ z82QNGiF#+sY`**ak%=0q8_X8l9|{(b{>*!ZXJJ6KyUpXpKuttv<>=y)VW6)^4R`Pb zGS>R=C^YDGmpL|2tnxso9Q<(p(+5goLKd~9J#cxh0gd>=AldmJxaPj-6|T8E5Q>3T z@}cjEP;>DHvuF&H*#2gb#!aP}!q^?z^bxQ?WVSv#OfTdMpNFZcbz!aW=~rhr*vMyv zW6*j5>Z!4?+u;MU38VpZX|HC0gYk(Epm_Rv+#_*E=#1Q`=+nVY#-QO}HFc_PdX`4( zB_vdM7bc^2re-7sd>7aTjS*Q@Bb|nGoi~$o^fipp0gcFi;21i`KXHufBfPI%k#<>f z<}r=<_RFIt`&Ag&vw%p2yb7vk=d(V0^{wpCxPt$kW_*%1&Om+L;Zvq@*ODE z5{~r@)t1smlwmY>B`Ld*yjoAPR5Y7QLNb=I&kvkVJ?qcN(2b8G-=r(($RZPR$}je( zhi(Hw8*Ug&N!TNSw>!-RYzr`X8(SAk9|x+qK)R(PxbE?9TITa(K+7^_|sWO zhGTGgadIhQIInTi9Mm+IB8kGF+V#!;lbliGZ=$QKQoAKOk#H`)LzRO0tj-jp%c+}s z6MS+{&YMnFt-nqqfRAKdK*c#T&D{NEOhMwz`BS>c-?*6s-%=R~3D=@axJkJoSaJWU zpm=9y3`y7#58p!$62`&`fhp`JpWTTxm0L1;t*y&RZp5;`nCk9k;NI1-9Zp^pkLl5^ zY(j2pIsAAKOc^k73*$Gy;hl-6na=&{s0(wcuqL`hQ&%KqeLm9jfh=GG-(pQAM#l|z zs^$fPZqE7G8Hd(#YZ*|20hdmj5eDh zwnu>3Zc3zCy;~xtnIwFWg<_L%Wo2dT)3Xxy9fV3Qkw+OokEHdZ1^TJ~tSu?61n?q}Mdl|>UTd5NZmrbG&!Luhy= z#Uq%|5x*a(t^pb1t3qiZ0D>UEquo4*p7b!q1nsSIf+yF-UJCN7o#epKc zVXDCwFy79&T24Yk{D7!*m`)=iiHa}Z`JDB`FDqE%lktju0X=AeUILh0$VkEChKZV6 zwn0J6XL&bVJ*ipbVQu6pdT#f-59j)0=X8(5+7OX_x-LXwKKvF+*0Rrx^sK(o< zgekR}4Ws9j{^?Pr!E8YtSFB~B8}w}-#tm3Aq3wxmn#?&{FyiTqUF-)Nj1sH0Y3AY-tT%$$uL=a&U6@SGhk;-TjRhqb7fbvk}<+xW{ihujL&OVHohU4 zu?R%enH%UpuqPIWeT0(X)tuSx6WzNaLMW?)gPE2{)(l_0j25N=X;>Pm?P9Mso5~X1 z%eEdCV9ad*GOG|-0gEvqt;aZSsaQ{;QyrDv!k}7OKx<=e&Z|DOHE_Q4IRN?V?x0T2 zAYlM0Eptb|J%LHcS3oCy4#`-xK0}Qp;`yT-8_t7jyFZ5B1EH4P7+m$8fbsVERqNdz zzQP~m41Ary!OC8Y^zzzv(fX(D;^Bw_x)R)9DoF0~*~9vjUeG#j;^7WV_Rb_`@p&9` ztD><5wOzf0?ax^+r<-o*Grjva+YtcX!5?;F-+15i0Z~0EuD-x;1K=1-hX@)U2~hZu zF-YW-2D~wvsr4~v1ue<%VFcwwszCKP1p%$W3bR!_gvHwhsDBj8ZU&HZCkpU-=3e?& z#0GEY`&voSs<%@Aw`$*NhX1<~5()QDC4`xs(CWq8qA9@6O&YDgo^}!;_t$W=?Ea(U zj^607V-r8mcZV&u8n{Y3T22~sQFHv}qCpsQf$jTH*T&BAfV8^XP^0*6aCr@j{SA#f zOiI(+2M2PUpIhYM*2AeUp1r+2`rhZKgMuSjFP425K@)Eom_3fLeQ148Ldsv0urSU~ zb95e5@9^V%C0+HoK)4KO<;snk$MX2V=0d@EuY$#S$)+?p+qdi2MO_&v468Ai1j7TK zN^pa>{%0jeoV)usQACvcmnbrG@_!IT(9tqJN5yOZ(fu5b4J7~^-SSc`XWQ)Z>@ctx z4KzCUW}FTolFtkes=!v2#^&{3v;@tA|DYw}p4yzB&d!DsonpZye*Nz8L+2E;%P5kC zZmCk*Fo-%l5La|Nzb)KyDis$uqhtf@IjeOd%8-F)Z<^sR`mpjJXg$ij+FH3mCyw3W zo!mU*y*~`-sSh(}gi&HZ@~OE2!2QOF1c$u5ytY6+MG@Z;b%sr&F7*V6~HInTU^$1CFo)T-Z5f>e?9{m-N==73ca=`V3*^O{O(Ga zGp&%aGj^PfQx338aKcj}H~rPm^hCbOuVH_L4&?0f)8uZ%hawKbYAGZXFVOpD#1@zJ_n2_mb_A{jN{=73BhL~smVrUPx6wA#j}A30$z87+Fnr5=T%e{nVs?<4 zdUDddrK4G?X#y#g!1~C)t>faO4sO`nn(g0JH;4FV)$L^etLpms!K!W~+c5F3s@o{7 zxgr}g%a@Ee$6)n_g0#O9ZNmLztgfJj-M1XPlSYy!d=-xG#B?7B)ZCq8K#DCZo=T@I z03vRK_UC!??QzC?ETr}VW5qsO-u^)58geWK9>_aQiC;&zZy+Y^L7Q-T@k}80t>CIh zw?@Js+FErs6G>jMs;h|_oYM@TR6~m6r#*VBFFg~VM|$$A51Ras>aeY>tc)umPR;ph zdXFGvPug49O~&`qkAw8 zH?gDfNB9m%sc#>oRf}F;J!|scjf^95_L;_Oa?Khdqb>(&(zy{pKrvb%tl@v92FRAW zUOp^_I}4Q9*Z>Ry83?w7ftArlS?^eH8gVVqOcVGH{=3?K8}Wh_TX-_R4`%_|4%u`p z;bYjM=+z|hqejrP&02q=JLQZ>D1LbXZ}d3rPu5}Qv1P)Pei()*8H>vOJkPN8I=*3~ z2lzK?YHJ4{KQ6+9JB0*!biF`6sGa-z6=Z#uO~}$Le(XLIRA-FlXiQ7`n^6%0Gb)}W zT^kj1(vO<84Z9Pdoi{1`_ysD)AO2Ng;`eFqBkz<1Ev@*lnfTe^G?N;0w^ zdYACCqcLal6y`HtTo2wf<#%J{vnxf0elZWY>!|uovV2qFR^Z^6y$?FXZYKHqyMu$d z4DkwxuWFTVjxL}>37TOo@xa=*wbL#uceI?36SZ6VKW&Dw85tP`iP|Bf31Dxim`$VI zg8KUl4KI8Ii5EmDZ~1V(P6*s-Ff3_pIhd~}_rHOupX?vJHiaUks9dSjhWNe%^hz?0 zPEJDSkANm4LTQcguM*p?q%b;s+&Jw25%=*24B4Hu9sQ2e5}o(e{o6NM5|~+q=A8T@ z3zx|A8E76~VS}5h&A+qsCvu?uI4klvB+!1I>x*jAdyxu~m2`pAjoE1VIqX1Q-!)({ zuQ1#48cKh7K>3hQNs(QEs~gxVyp$FGPX#t#>^}-DDxIk7EUds{s@31dv$V9lrrd{B zuY)M(Oo3re-EYq19!R3();X7pZ2;u@_5UeA|L!mtK|UhNjY?85J91+byQh(=)SfRk zg1z;#r>*9C@}h}~cC{r)H0NSItUrb47{N50 z%t0cnQiy+?$vqVM{L%E!vV8bRgrP#!Ep2>s7a!;}KhN2fg1G|e_W$JyydV2Ny8P*FH^o94P{1T6DGwI8_2E5Cu%n%w%`hf0WG~#h#v-6vi z02onyVO|1`6~DiG34YkwoTYtwoP zjiT>m8h;5Y%BM3Jm2Mftmpn=Pw`l|KgFk8b2LT>sF4`mGt|Qv%OL_e-Vv&#;wdznY zg*+}iN#D4b4|`aAjs+e!A%X8kVB$f^5LgVKY{jA~Z1m~gi{-Ft9CELqAy~ytu&0$N z13mXB9x-`l`cbuD5{=ijD`8!^H+H$i5IhV#CKo)`Xv4etiwViGVm^kCC6PFKncw{%*QCHoRp+ z$hK{qFPQn=*wK-7`yP8Al3%yuYixb7OBmmnl$WxTC=(h`PzAIHO`(#2^DRNKf1yaCB zoC{WI2ZwoU65(m{;M?>k&*+0%e~6GO<@C+I(dgVYRPVv`^<+a} zOim> zvQylP*_dfo1-ndiko@!t*DMt_rEuq_^c9UB$M}mz&(r@KjUFa{MWcU6@K1jQOo#J7 zU;_${$3#dNXcmAiVRd)gh>{9fj5VlrS&wxXKCCo!eVVnux96+(mXhSSr`k|oGz?f0 zZRFP-P&NZArXh0slt<$9jIFxU>)yR5$9Gy~YS!zTK?6X)iMpvvn}yuWK4Uc_ExH9;+_j zmAGE{IOpuSB5C8KOSq6k4O|y|T}gf=#i$Rpj5T(oHD|%zfM~>&iK&K>>a%K>@J!HB z)cS*753@Z%Wt1YpoBrDAzgTcB7z<96miA3MU1w&LQEdJ4dJy3yVAp5iGBIwMSc;X2 zw9DPOk#L0^LXQwu|313VlVv*nB#~`bDCmph^@PG^@uo81%CA=cEY^9_I}fC*4kUmM z00TA9%ES6^gZ-WoUiV!MwdTo9H|<-l6*Q%5_ojIH`2MZ-)8TS#;8~>cVMx=$Enx0> z1yKXOjb80LvB5lTkd27W7Ql zZ{+9!=S(vd=Zl}qeZ0MaDcOC0uLP4axk(@97|=-;_Cqzf>fl4MX()?wC6sp!0~A;& znIC+M|8YSNX?>#E$H%LhPO=vc-}~q{np{Zf7U(Gv07#nnWC5MH^)&-D>pP8J`+l%y zovQ-YtY^ZPz)Xxx&Z?*|V%-ghrw$u@p;fP1FJ7br=jbAJ#_`GVa69TZ{)|1>R_#TG z9|t>g^&j%IfAQqgo`J7}dOmlxT^$*$p!_cnegd_=*SWE= z8rIe~>pv88XUD;5WKoIqc)8iq9>Utgl$dL1A$b>la>E^NsnM0LFv;l|f?CL6_MXl| zHvP|Bg;tCU6ySP=l<>ahU43IPiV&JDLL|D|IYN@oZO>NhpExP!YGn%a>xx(r)(2!M zVQdu{!he_SL1T6WF?eSLlrpfhFo%mYz^VX~cLRytLEkj~vMx@MDWYwf^ciD^nQB}& z`IrV*h|T+D}y3tmK+F5HvOE>S@+cFkNx$1;>{QS>edA(5~W2;IE$8}zNc5G zS4zWBY0m7wMEb~=|FcN1OM}^B;P_8&T~vwigL%(M({i*LXH29)UT7VX(fV2EFIG}>5Zd-LB5dR|=P%2Sr zA^)4c&ypGvU^IFw@dLfmM6>uC!@=1Pb@h0ZC>SdQlrKTiF~MdtHtdYQO@9WCYWSUI zufYFLn*Gbysh#i#4nfQ4NMpbNmb7UyvFX+S?ZM+L;Pp2%*5y^OAvSWMIe-10uci)!mconkGPm7>H5gbQaq3vy3G-i%mP}&OTof z0P_fT#H6$b6#C5FPc*yvL^$3ccbhB7E`FfwNl-$2Qft_6Kku_%SPXHNPh;+e z{ITWj~-SoZ5+n+gV;4e)=$>&;VwNrkA!@H-f}GPHcsYQ&1+KSKw|s-1PR^Z ziXOvZDtu)K{zt~=VWsSU`VCQx+GL){opyCHt-D@NCOmrH0lQMzWI{^#Pnlh42o1&# z{e6z{;Q}x-fJbX``@`rhPq(xd0lTM-rf3(;5zk7N<_x0UYESn|HJpPNbDCkYdut0! zc3*{~2W-E~UB54X7u{Q6lzd0l6(yg(-4z}9*(6bZ=5$r%l{?H;i1#1pKq=fwY=Eq4 z3r1U5!$w{=)>UbB^T04i(`rIoLVvMA=0vU4WSe{pE-`*YvHme|%hd5YqXvBjjv$#; zpsOq&D2xvb>=Nj;8YY3(4YZG7Mh&)DL58fZ%Lw4H81!GUW|x(*Nlk{QMoJx1%#iNG_3Mk_k*z*t`I;Y*Y6{5vO>} z?Qk5fC6@5>LDFWR;@#?L{_H&gI)uu=YhJ!O*G0K%3&OpZ{pAem4*62=Jq%;EeXsUq zq)8ZCQ0%t!j0yxXD27V;~}Qx$2!tK{zV@w4Xd$& zZjv3}XqI%y2xblZ@{mCV9Z(ry-+h4AD9njXuOx9brsx%#?AlU%H@hqP^=Gipt}l?5 z&yXG4Lm-8~tz3}cuHvfS1>ApLbPwjeH|GMWhLb3rc|VN(Hoh>Y2x=&aghbr*M+=@w zIi*A}Y2J#0GC~AX$QNc|3VAYe*AHbgotpm-5`kZZnNe=#IHGu)BVx8P!77&C-1?^KGC&AE>8y}@_ll$)InW6KDnF$pS+<^s-=dy z$_N+mk`U+Sf9DoJJ&8$loyHncKf;@d9S0M46ZveZzLKVvPfUeNoZ^9&VllA^55*$P zmKj#V09iQ~e(9)LZqi?z8x6Mrok`Ytz z;WF}@9n`#yziZB}0hF&IJiPqLGX#YusIYO5+*d$~on;0B``LaA zcEC|w()c4f(eMfIW}(%h!Y{7HhwnM&k@VSF4hs$n?tQE_b+xwqBv-c>UYeWnTg8BU@v@c?f$7wm2Lc zXD-6kZi7yzU`PmNjlG~mt3jsw5+xKpqvu`3JP5NwMrjHFBOas8uT#Xyg z#DtAm{+-V^7En?|rrre63Qeu&KSvphe+m$UK0ttIl$yLY3E~eo1-iW0VGq4=4s#23 zUPF=rkKXi`A}@A?7cj7}u$HkV0EY-vs3cN6r@bQWGp8S{=Axfko8CKT7JoKqtd%eK zz(hmmMBm4&K#jzkFi@s-QMPgKj~Zvq77m{Pi4KilfUQmUv-`-tuG(OZX@By>kqX!F z(7TUF@^n7zm}_HoBH|D*v&kiMD-(z4+%8ZmWO*8>@a$;lnl-KjX*V?Id#PUDf#Fy%&jfk2 z9d%87JSlZ$m}6KJAZV~$W@u|UaJE`SA6+IAum;vEP|2u!G!b#+<$F`|c!~)6qloL4 zlc(>l^>)?)#$fbZzZ0_#%~HGa_#1#D!qrC+QR>Vc1{j$y&6bfn^S~U&QP^vdVCQmW zE0HKUhH83-8ihC|IyL!B2Pd>4S1^;AxwnnurAR>+2)Gmyd~Txn%nw%5;Y@E-{cO3f zYpZ|Ub})_d&0)$rnfH?GYFxjS3Hcyf8!m5`gI3qCW2^phEAdDlZ%z{IZ=d=3zca4f zQ#OzhXo2B384D%onHz;UkzA?u>g%gqhZX4^pCl5U*7lL-E_0bjh%ab9CoO=rz~}-7 z?;5eS+?nY(_6R}R$zkW^uGuJT0js>%=EXswJ_M~erM5OSQ7{vgtyVNE5ex@_Q>WN- zEefgJ?(Rk9-}+KkjMmplh$!q=DeaQD!NFj+}4PzUw|Br*t9A2RT_NTz%50|#4N zx&D&HtLnoWHo4G{n_Xl+cbY4gpLDxw#JHN&(8Uc_IxSJi$|)&%c+Oh&$=aW$M$0r) zA&ry?*1WI2zlaO!~MQGEkr5u5s*MZ6V{XUW;N7e_jwsyL%PTH>_uZ> z1z<=fwiwt&H5^D1UUX@d>OlS`D3uKlb;9QswW32RWlYol5_S?(FH~IDIwE0XQjIULQaru4>hT@h}kG+>F|X_ zB`h#h@Hd1%eM-(vPEKKF@&LB3if;BaAN#F=B8>O#;!F!nAI%MH0->={ zUIgV--a^*ZY88liXuyJU^(MPksKA&>rtNAj_xD03LNMZq#+WrX&dqQSZ>=R8?f{46 zvP;sZ1EW^der?Y4{pIP`-ZOv6#?_Sil~B8HWra}ZU^)Se>T9f&rGs(1)!TUoV6W<1 z3qt^WS@Y51H0MuSuxw`;yiad^%iG`J4B%knmG^OH&?-uluSRsgyLhlau#ELXL|aZ% znq0F)e9jS}$4rN<9`X{hG1#}m56LMmS9#-7LA9EinsPZjCeTbV<}b&y5Hf~TVv@7J zYt8xn9mTF%clI#7TVxz{+2+)gymmTR+l!B1vo^Ezu7Gmo`~>D*FTJR>sAm-^)ODs9 z__UL?XO%5SO9?j|toVFy;LwqdUW{MJbAD}poLUK9ne=LMTS}XJv*oqMVm6kEA9)14 z6QMa_TQx3!Iw3VfqyQ|NRGAw27<0A7gB7{nS2Vb4N1F8gIf$5efN(iSH*&8`@IJhP z=kBs9t@7KRq-WuhU}4IvwuH|C|6>e?Ram43T(S^*%ZzEJaOMTvd9pUJhq|^VsYn4M zP6&Ej2t(*_+gFqAk()JTsgn-=rh#2+lwrpT<=)$KorMd4JxL%bTj8(TqJ z_D|DevnkiL>v3_r8-tExG`}O|d~->p4^QP)*=aEK{2mAS%Z16PA(2SY+Qj)y7{bzF zAdO7Hf#RZ0dfsP;kv)Nq)nbTSF|T4%Kd5susNJ%}nE)isjd;jy!6F`@0lkSBeYrnU zKOM`RYEg}nr0K6GakgHW-G3W%g~jB7)?|LaNuO1{3*Owa4IUNEK^)PJmAFAp3_?qS zLq%EA=Oh)>(WW?I)6$~J_Q)hhyg&)Z2n3YLWE{FpLG24R6MaeDwwG+d`yj1&hdH`LhzjL?qfP` zpbeM98dSo8q->F$IUH~zC~jeLOvwW3tPZJt4Kj(?wLQYn7&4qZ_XP+2@Ba@&WHvLf z-v!rrMcw>mr$7PRQ(@>HMJ)NRkD3<0~{Y)D73^&Zzx+v9=r8-T5@vml0>?opF8 zbg^^EUJF3_fMiUG=tO3;EATh;gK0#s#e4!JEf7;!3q?L_7 zSyhz%f0TV?Sd~w=w<1y!Qi^ngNSAbXHz*y_2-4jpN_Tf{kPuLj4h5t;q@}w%-r3+k zpXZ$SI^T(V-+N}(uhyFPqN(}q3vWk}jZ;_$+c-tK2kmdOlq?df_ku1!wzBEHTa|a! zYmK6A&NUmEqL4)UMC7*jkcp<3^2Ni(h^X4OV@)s3dr~?uOP_RcnB|4r1t+DJ8HlyY zq)+5PuCQKDqh5l*xOv~~!HP72p8RSruo{m`8vt+(DKz;R@v*(Y6cp3n7ShzeEhH`X z|J0JQ3)pXMDg5pqbT**(V*^qASKtrm$$fEgISzBQ*sn}{1*RHkTr>T;#)pnwXpZQ+KJZDp2GE~GlDNq-5QkMf)Z1%FxGS|urzhSLkIdyM?+UeKB4UESBm zcoo7J>PD;7PP0&^>TGc|fq2EoRcEb)Y#tPjOMs6*4-8q*6Prt~Jr{Tt$V8c6gcF(k zw&Q!73Qw%WpoMxkH=%N95JcaA)Z#(NSMlSWy}gjPn^o5ut4pbF0*@T$uECsu)jmuR zH1Uk0J;eGp(V9jZq@?OtRiqm7_?IuskCG!1mhprArdsKCRognqZ=k}m4E&BqF1+nmCY6wVno`0XWBEEkHV*3Gc zw;d?0d`xPY{|1$_y@+3#BE^Z$15TJ((N(qnlCx5-UyKInKPq=*Qm2uJcE@rFrf5dO zh3#iQ52;X8U7o?^eN++$f}XFOJ<7iGK3cs+gs5j={6o;>y!wd2j7qS15GtO_vg{Y9 zVW?9U*tMCjKJ3nJ+(8$5VEVlCL;sxXZw0-r{N^{=m%wl zukYKrxm*>ip$&SoCkn zSevO*FrrKV#BxNx+Hlb9WCTMFN|N5kcjDSKJ;~h_VH-!r-2pEY1GTMhZq?*`Z(DWN zniFvEpC#Q`g-e+Ta=urs&qP@s1*VOqoN^XRrA~8wQlfYhxyHdDTBTzecW*esz-wde zz2y0R|ER|E40(im5HV^K;6j9cTYp-mNRY;L9O{e^2zzyMYwaN&a-@`wcesMct&NI1 zHawOQRP=+p$;Rp-l+Mf=+_~d@M^Z#k1r0+CiU$jretDjHd7|KbXx405IRA$EX6N~x zQAyyOfr$`pY8y`cdEejMz10HYOBBHgl!$m@F_$J#!kX6D42L(*7Q$+iLR6=i0*)3m zL?4td(-A|8Jb8i$pjhqAgv$*?%S}`vNui`5)XA2OVz;md#sQU%<+l=o2SH0+z53X$ ze+*i)Ov-$Ls$v*&+3$DrYCo$}kRTVJOnSQd8G7WiLxfj59!PEcOJ$^#g3eldY^zmw z$WZ(vLpB_s&~I#~>5aA5^Nr;o(6476md@(3Q&hTc%~jbs4hS@b~#NP_`<^LrpS zj2XM|*lNy~qb}*qve<4)8zCf6k_@UNX5IZAU;1+aKE}i5{xbA_z&R_)vZouqP?`f@ z7+&LBCbf+AS5nX@r^T6GbfU&XbAO$6I~<7zt(#nsKb|qE+{RQ6IS1lM@G|}-6NAoR zPtnMOOIz=@A^LrBv@L5KkHSM53V*?Lf~y5x2Z%80`5HVu@7#}jGzVagTQO!4%vg~5 zh4Nj1*$y6!e+as#bG5C@zmG>b3>a~@Y!IBY76_v{VqSs%)r&^P-bSWSs*QT#FZ6SC zx9@@m2?8gYD}E^JGZpDp<~)nGPsZiMWRK~zJCmvMAwQprR`H?_bQ%qJ;gUBFSoEU!q$PWAK}~30@4<@O6%N+Xd7#q{mo#PR8UD?2lwYF))(Pog%X|! z!vr<;X7kr|j%B*p&^a&ntW3f@)QX4-^NRKLFs#8TzfPaVna&dJ9A0Pl{@uDXHNR4V zb!lJq%r{Eu&*-%G`wt!03!wLtb+yW(jiA>hHYiD7>Fum`C>7*)5y=+Xc&eKFX4w62 zCB$xDa4o8({LXK^mqYc@>**dm3l`A<7gJ`$q-t_ewnw;j0|Km$Y=xjR^956Z5*Tt= zi!|(-`4Tn95V9v8%>>?VSp5%IRZN(ROd>7(I$wf-7xqwo|_AmLp+Xp`l#SE$>J zsFJQz<2qUH2?b39!L!=?&~#a%K`6M76sVy z925CzvM(Y|s2Cj8UVK((BH3^W0w@i6WStF2vi^(iV8Y#%#L)(S2pYNrg4QcXmx7|D z*LXr`6n)+u{dseafU$|3Rbn7#VifF&_LhS=u^sKzM$JcSajI}aPMiP?UZ&&wh zxD|sgMz?h}5~G2C9jyR^k{}Z-ts3;VSliT_P=nupL*aK1dFd!?!J5KFC@;KI1*~Pk zk|jFFaEw(J*X*iFxN!{l^;t=%_Z(W>Nk&RApD?df(sYZ0>OBKU1#|U^>yj?-(_g$wu$H(yW6pLh+epK zb4Y$l>KyNKtz}PM@Z=uX7 zl&kzqWf1;xP7*pNZ^m%tx^KdJ)7znVDrO^z{+v4!MouM@Inr?;#jn8)W}*sPhAB6)csGQqlf=w@$um&-G^P|K%83z(ed9pY@mNaX! zqOTvs1Hyt=^u!QMYATd~FyiDCtpnL3tZo*px<_$i0V6|G(Cuj>91l+aoKV@jBcm#WtN*&7z6sb=h7lF@(9Zzd~0rT@!xG?HOZ=J zrV((5>APRfp^5b}_Hq;8A`VT?8m+TiMK96MimOIS@iv88?D6jcH7@@fLwFjDFf@ei zuvFR`m|ZqSQ_JSYu?F(2e%1z9eJ&>j{kM|@dk-#C=Q=8JsNm4WGe@%pAyPO++}9$P ztU6;9HC)uYy}B}m$!9}3&&gGN{hB8@ApGY0CU7iGAwO}=NyTWx2rv&5js-)Ow&l{P zSqeWDwMqM(2HUWMC#34kq@mw;%w?^WssC?+cz0q@izNzZqq{zdsA7B(WWsM2xS6-F zj5n-bD(SU-CNs5b_1OM+r_vys~>n^X`fJAPZ1m5_&3KE|(l%z~4?}9|*tFw*Kz}hDm z16t+;;^}qf+1tX0!B0|5AP|K;pE8+&|poPY({-SW`C_xBGHmn{n!lqJwC6V3Q z)yHv>&2DGRh*@l|nG`LjN&S zg+rKT*_T`IDrSWY7p#OH=wh@0~+x;93vs9 zSu{wYgt!bv-=!C$5U%Vnd)?r=t2kND_|2nD;QZt~$}DTx4P!zK+rFgHoDv5d##~Lk zofYAfsq(B{BQN^mKX8p`C%8eCH}?u-O`?DS5DKfljJqjMxGp}#(Ftenoo`>CQxU#H zAbJOU;*DRzTTzJ>L_KAE{BY*kTnoK@CN&SSouB+3S;Xx9=9NhnG?S>f+n-&ABLMC2 z*E#~A#gBw%01nwMRa$ih9!G9W)q`CxlVsYL1reGq@a?4h61W3)sT82ZB^Xa@oWErV zZofq`Q_%Ww&?|`yUKFCbP%Q=WDd9Ov=Z%cEueU@u?1xtf2= zaq`o9o$Bb!@(c2?#&eOo^8-Ceh))U7yNMxLeJhHY>Y~2_6syTmLXrnnf@o9%bEITY zL$AVLa(V3}HtEFbys?}o@POeV;2=}7FT3mu8s+Y zoYd=&ntG!0$U!)I7GM-!W{+L8$K&2M7$HB>y35cFqBrx!=$5R2+{IIR%5<}ME-#o^=-!l} zYJcPrEBrFew9hA@xY%u!RYq4|M8tryMAkg6(Bx)5&upz8LPLl94ruAGwO=V6j%Tj; z&Gpp_Q+>ZYtpi=x%~e}q*hkB1dtcL)vL^6+&m@eFePuPjNyw&MrgX}uss^RJuOUMB z^4NT&QmXJh4@@dZ)rh^E7I(T>6TDwEcOq;8Fuh4EnvLu|Oc;9HvDe*Cn(26=ZwSOl ztr-jdte7g)iJ&r`6&%O*^KDUV`b)=ubDS(Cn}gqvX+~BPYt`6!eYtMp+0q5VwheDL z!HB7o3RmM)hez3ZGb$k^VeZS?8&SdLA`sjpsqm&0BwU8Tmfd-qcviu;OF1vt{8WXr zud_#biC6}ehV%v~!c>{|(&iD8?7K42lvG?;5~&pd;UHpQ;dn0*jdHIxpOQXIxJF6E ztY1R~Bv009qFJJr5^A@1PSlq(Z9?9MI666PPc5q}+?D44Y#97$78x#f9fY7?6xf72Z)Z)L zQhNM3dTCZca{RU&+BsodMk)ZzEE=`)wrd5+4aV4U`Er$;UB`?Gf@okA>^`ccm(?}Z3Vf9f-M6sjs$amo zUwGv0Q1)(nA3OU5n&r6QKk9)khL~GjP^aE&&p^iYOXAFU4#xh|vM|?7z4rWk7GKC= zbhgl)yjWF9&On2jNpzLUMvSi@jCdCjiz%gFh|c7pzmSTJ&`+t6?yocZUWS*NGq$C5 zBjdA)-to)FCmU5qFSjcn)s~)bR5;bZH>vF4!kwQ~z9Q=)dl~6kO&OUz>zZg?$101# znX8olMD-a%=tBIick{pDIB?@>poWI4etAsNWba4uh&P2jfemHcmAdPINt=sgLsMd&IX~4~bEPf5qMa)*WaZiD`ZvgB(zsA4w|MPiSkKXdiJzB88h3{` z$R)B9TyaI1!1i${{M1M;9i8@Y8*tOnneL&d_qyuTmE|K5{YZMI9o;z>N**lo^ox$~ zAx2`(DpskSyvkyTJ<^;THJ4Z6_+_^F+8Z_dE&~!G)wm)ti1BbIoGkg9K}_mltolN` zI_kr{;K$9!JC{kG!_uXcQDvs)G4gZCYGDgiUzZ7t7ZwUz&0)Tt$f46{FYJ*Vs$A>x zr|v51U#*qB*!6Hgu`F!A0AoAH-*Aewh2kwx=lne{ZqamQhb3Js=I zB_OOhmY#t1#PQX@^2D6yt2801dZ^r|fj45QCR}efOooTUgorE2qLWPYJ4RREAK3!qq%dMrK~OprT~F zLXL3k*rtPW>w3}egX&u$eOLuURQ7wb`*>o_9^dWS%i2M5e%Anc4PI+)LNynU>dXEt z(RVNGmecv1JhwBm3!jYV@YA@eeQw-}*bHf?Nr+9J+0B$w&Xc9eXU{VhAiY?!H#1v& z<^4R86kX_}nZ}H#?$$LDBy`79USPy)uP~ovCYtgC3C76l_MV^GDxUgoSM~gd?pPS~ z&je#PI+A1bdH4g_Gqp^;!RIs-tZPC}xX&z!mXPE%yG};c>&u|mK$v{!Y&C#U{}G)t zw_2x`o5l?5Z89lYN2jAc4?aV<{NB-#kG>I-$6^U3sm~BHZ)P-ndMPU1kw;-u z@TQnQ9$cBfkeV1#D=E47V0dsMFvrA^q1&uZ;c4#TSC>Ztv)M6T9mG27al|>+^`D$J*|``DR_^N7%q52F^_5OVOq#KA61b`A(;eB`WM*$(Uak=exGqAtEJ&!S5> zZ0s|3BFn_~+)F7%V-Y|N`NC$K()SeJD_P{-!z`RT@JFiT97{;A~kYmw&M_0Ov~ zsvm=F@1m-x+n=nJHR;5wsGuv7K0X+`d1O-7)GPzGq9-E+=t=C!thReYX1zS;`1mLA zl|g$&*WL)!haYYC$JMtW5f6q~{m@bkXinT6sOPVKAzleBpLRZXnS-hV24Y=W1T+q% zU*)^Ip784%;K}zkG1MdT)*vB~6fJH(Rp7;ruANh4;oe(8ZyvRRP|hxG5ptS$#h*8v z9d%Xvv#qZ(b{ol;5DaMceOlf&tTI~O%p1g8V$+ll*6K53;T9c^(IoY83K?y7{Lx9) z9my3c(>r~4acU0p+ZG|Ag1V?^FD}dL+KW8lYJtcnki4GRb^B|+UvEcIq3e5H?`kbV zi0?zqUW>dcTNSv3OS0qX1&+5?dUm{(NPEDF%n|o7fv;cI-h&*kt&4y?BY7~O;YT;s zFUfL=^w$-7{mgu&>jz2l*QAf_C%WVm*%sqge7JHEM&3Dz`?nicM=p%Cpl8oGZ=F7F zFYeL)`oo$l<^dLn60afGdmbaAyfd+!G^pK%o^0hXU^O~D#t+l{2(y-NDEg{J{Qc2B z8u4>8QPDPMR~L%nDVwuN7mg}N!!>ah&Oi%Nbq7dC39ISBSnXG=0IDMz|^nk%u zFu!{PtNv-Zh<$oW`_t~j`6+ag@)rgm$(7)m6)F+jV}#cB40F_*zJTtw4qGyhw{>aW2`RXn_|s8Hab;oQU}&&cU|cZo zd7}m2rL z+5MZZM}r_~>AzIK9DUgPLFD;4yO%c$-f^Rx%P3t)XfB8Z!Doi3M?78MQ6Gk#77^lul5=ru|G-^TZQ+M*kSA=ThM{munv1W)K|Et|hI{$qK1GKbhFn zoz2h*KkX~+QBzTwu{qw!ur?Ch@amxMHhMSmIF-<9EQN5aPQ1<_06c<*?{^h~rL74x zvR>W#j`aDPnx|YC&ZWsj#a?24^2@!!1^rtaYJY{1}`I~oU*8nqpb$q~zgY0>Amq;%C&95HooSC_4A|2uY zqK<}agU-j*B$@gd6l^TwgBUu&2&4~fRTXT4`%RIzFkKH+5IM0MxK8_Z1pCIn$|i#Y zQ+0c+y}e_dV4$s|<0&ich4Y)!5?`T&2eK!}KUtOw+!X}`w7Y8W7YlT&yPCREp?9{m zsi8{s*@wI+neqB><#0Oe&vGaqdZymmC|LUl#@al3G7ICttyTOUR}k_$d^Tfz257A> zrv$rHK31*LwBKN4@-)9Ub;fN4dIS7wcu3kXSS?1r^V{^si%U-K1%okWgB^vTg-;^L z>p8VwzH~`+$D#5i>d2pN^L4fEoq?Y?eoQ!6>HnD27Xf+uSmes5G(3d|Z{+h#v^=k@ z9N6#?sh?{KE?`#9lzYWVvdfkA7Qn&i%Y$M^0^dU0UY{fR;DMq5y>)icjG!g+Ul8{J5Bq#TA#M0MZzMv4FYgR@ID~o69>b4bFi9!}N02P{Ujd^&p z3pR&xH%P+RX6)d|WQMOR=jxl+<~d=M+tY`lZI*xZYuxf}QE=Rm&RC5h)nJ|`Kqq~^ zC>9tP(3^t!0A83(Tuii$gPS`(r8MxVST>Wj{N2)k;o-{91qL11{#+Pqo$FOjsuNOY6a8Ft{#IpKr$sy<~^oVq%lG z2Oz^$KO1&lYRt*Hz1uTZSX+!-LK5;Pu%G$z7P=u3z*&0dqJf`{#pJ^OtrZV1e8UOz z!3GVrf5VB38>OTHxum; zEk=}mvYtZn$cYywNa~I)+^+c4^c<&O(?lH0k;Z)v-7XLFQ>me>Rjz&XDf-$bTHL5& zvi)F#Kmmh*PjO>w?yjnw%0V&HukW4KTt)#F=F3(i+ohDGqqy5h^Hsv&HM=!l43h-7 zn>s88r9;fkQ&Ur;qm)mW?o_`NE7g&hwR_KVs8m29bveB2V!vE3Y@?v!>2uJV+7R)Q zA}PyU3P$L*s>&+S4&?u&)u@!gzANgKa(WV6Tvg!5#ROf)q$2E{q2!+l!*DLY+x0dG z7&~kYsCo{PJjr`WtX9)%9DQX@YWrcgMDLG++PVa=>!h{~$LkKH0%NepQHYo(dilL4 zH?gn@eyuLXmN~Yp+AYrwO@tN_btlN?r93V2C*PGE__`-O%8E&qt5c|MBksv5@1bLQQAt`bvQeTNLa?<6b?FUfHdx#_VO!D`Lbc%doja5nQp)GZ=$QxNo~xVZEAtx^32$2xgV~Ie;SLmux)2Uxz#;^qlOh3o!3vO*lauGYM9wiM6`W6% zpiO^IG4gUqa2mt6^{HovGl_e+af2LL>{m@R{e@{^amfk*{7z+qYHcP4TR#<04?$U| zP?}Q$SmGG(plkLCShMYy`=FvOjQ*>l;{AG9^QvX(;I+@xuJ%(jPQ2(a3HS@$_-@5Fa1X3h&He<4@Rf8}uxDOx3LsbHoS*c` zDIli|7v`jq-mE&lzQQBc6U{gOd8F-VII|~7pwMkr6wsL?hjLfraacE&(i;{D?*aLQ zLe>FM1GhlDg?*Gdu#x_KD_HLQxuqQ1#&pZVM^fm+XE3P-9rJgZkG0k&5qT|gBib4K zIt%3QIex~@tctn+(m=M@>4Yb?aSO(50X}+gst43U0GRK zUnau)oN&aTQCSQwrtxcq6{|VC!=3zLG=|3DMIKV(fY zI5`6X1Be*tXH*q%CaJKJb{IUW$|;|Fo%L>nU!TwQXbXHSEhX|W6S-Jh5O=%(B=q}; z)dX@VzNE6AN4MY5Nw^c0o7?%9N^`c8Z}IA-GYdQ7LIJIuY-_q#cQ^GPb!kVIB}tLV zS)GzTCkKPS>)G9n!o^(&Dg>MxsHR=dwR5)&Yk-sYMHQk#j zF?i)y{!%cUfl)B{{;GF2#pPoo^pBk>rqpdYLx{0f$GNqpCMB>PiVKkQ!aersn02nW zmcG}=lbc>`Sxl5F#U~}+OBD_j4Z~##d;I6x%a?lgveJ~vV(VgXxo4Z#o|TO(`9NH> zckR&_L6qRG)8h);eQv%XvmceK3q#+BklQh5Qt0VE)FSUtDvf;95V&iDybkldg^^hlyf3l3_!S9HGm(b#q@$uCbhG`( z^iA=!U{{UZgHqpTeY8T=?)zaC?;c=b{zZEi5Tn)KuSk5N)iYV`7kZZSXW1qh94um> z$@uEab0#^!b%iB;%Y?I%Psx|GYaKiF7zL^Y~nc(Hva-Tsg1 zjvv=zzWxISJOe=gA%^*1Fd$O^;?D~oEa(EeHO+=h0wS<4#v?UT*VT3`nI2+ozdx_qopc*ZDKq+OZ-483GZ#r2N|;P zjLU;{EoKfhUA~MWjv_<*woo{j=5oZzv4ducwsk=C@UH4hwb%6v4qdgQF=FL6J3zT3 zX_%x4)w@sdPp%E%H_!$ey)Knm?7qteK7Xh3jvTFXws~2rx-jmvOi+s zYwwF_#~ihi>243iU7WAd{6RE|I{x#n6}F@!*IS4&K}+vIOa@n;Y(Iv?!;Z)xQeHQB z6=NXN*0?zfFkxZyT6BHc-AhKrJJ*S7x!zLlfCS7AKXu*&0CY} z>7|Lua?S#l=li|3SUT5TNtk5ClNYvhSqG)#DkNvDHUL7P%6PCiT?x_T=qyEsUyQt# z$>rVlIzdMl<)c>dz{MG>gXbKPDQ9#NXccJhZV|7Sb8YtsdQp99|NaAMha6Qpt?;g( zysYc>y;H4N*kLBCkT?Nfi7+0l|K#hI8*Y+R2hfG3i(c?9RP+5Y0XW%jHqb3wpKtG| zXbS;yHO}TTk-%1JNJ!Z3!JcoIJ(R8AAAjemx-avBVga!|elfnJ@M8cHd$ws$lqq_y zS2rcvf?@$o`meNU|E$>h&(62z&+Q& zpbK4b(jD}abtpv*ps~ND_y!*T1|+SL4f_bRfUfSB>xgBS#}-+nm(>H3u~N8_;8I`j z84-k^BTuOK3ak4CDP7b-?{k;eR|n~db_U=aMpWX+;dOmu`f47x?5?>lz}du@6+&yT zrU5XPab8Z3*!J@J)cN50e&Ntuc=(06=Y<0}xieyT0{lahjYID1A%3;r{C?C5WP&vj z%=K4m9%50co^?lCKclDj_x2ne-<8!}88INgC9R!zYeKEPT8$sjd(~=tNf8Pk_ws#NS9+d=|=f)t4&vuaovDITj zhI#ns&(u7=egYzThqhlgY{fRkgK~X4u9aq|T!4qh?r9KA+=mZOk$Z3`3WE1~nO4-l7xxU9zx>EPkvt*wd9ykFrp2laDB zRuVZMf57y~`y3DDL(hQXkh#W50PC4RF?;w@)&bKG&Cu>0`L?IsyE{OM7?3D$`$K0h z#||yzT4-1{WwR`p&??YMxYgQ|@{8Y!RIR;hAtlGay&pQ|`HhAiC?Lf%l>yu0;D6Bi zY!(Tpih3&@cfA|<(U}$B`w~mdfh<6F4tx0dBri``3XinhxQU*_OVY^3EajxbezOK% zJAQz)9LCEydCT0w#Rw<>tP>M4grIJFsa51Iwdsyy@!hHr7mVN1U@UZ`yPlzB7JO3k z=&zv90EC#y?x)-pRDv>a?9wHmf06jGuih^^JG(U93-E!72EG1|B~vgcaDM4tjX{GZ zlVA4nR-L{a2R)Y1kB%^nlXw8Geu*CC&Iyl>RyNf**`43hz8}!!0q)nk{#Z(~q_4XE z__quJmbgPQJK&%LSO|q%MB8#lM@MhWhRwlQTdLF0;UgJA`q)|JMWSrwg7dAkK}^HO z5=4NHh2PA#*eVC}K(vuNIzOU}hyTQSqotf;NBSNcEC+%<{9h2r_-_!X@qX^sIW?ol zMzVF}?%s2T{iAinys6i8h)G^gRzf0()Ch`T{-IDXasPi5ii>K7t1Sby*Pd-bT(XJm zsVNf)Np}-xlLvEiW8?2miy$TYvzkZ(5UKBR?ooaHto>l_GR+(IVnJD6c#T3<@=C36 zgn>qXGjOAJN_6otkY&%I@Xzj#}qZzLTV=?VHoiAe0CY%%S1M~B!1SFXWX>2*u{LB)qtF|-dyC}1JwOl%>*Fr z7W)C^;-m)6YXpsex5H7V-lc8)+kFhe%@=i^(fRR@IgK&H@%a$TD-KLEDHOpKj;u}_ zd;-Z46An63W(fsAI|aMc>*UmnUZ>_2BhHBBn9L2Z*%jS_3Gcv?vt#7G5&!klOPbwG zE*ph3-iwi8@g5A-Y|G}x1y65wN@cV`r4Z$HzH|J_=yjJ`T?`T1g-isL2kD$tk5B`} zz*v&7H;#_nZD0_5yqm2D4$&BAkEKS z!Iwb}gMa+p3204_9<|;Ek^)rXR&jng;yC|q@;+ho(^{Y*5+M)6;g^l}I&T*fX%x`R z&Vn+=E85Zw%Dh0h>i376zdup}kHZ8@FCRQSAO%gSSNBLWU^;(v$2Yi)=UgT=RrY@P z)|qK~^-4if4be#T&O^x+9dBsW1JCze)ij6CS4G8rL=)i1F zS-Lq)_Dzx-oZV*mC4lH^!Z<;+QYp$o^QUPYe-vpWGa+u-3_#PUx2ABY86fc{ng19FV9 zl&0P&i~dBX)3+D)sacL&+zX8{+;+yq#0|j7J7QQ~#YQ0VNxoF~TutI>D&rIebZRfMa{B=td%eJ!7cu)wor?b?qqK!69Y;!Qw%YOhv9)#jXkhpqY{2UX zwydNjBNc*U-cYPJ^G*RWYv;W~|V<0wSk%#-lKy_BlxC#dOchfTp zAyRP+q};6$Vd{sOT7JKt{peMQXd;Z5v@aN-=QWKUuC4dkh8Bn3(opn1QcQ756EM#GFknkWw@dD1?AM904)o&zVNt zzQ9yE+zx;3GS@)N)?5gB_GQU|D@6`!QTya?Wrf@m;@ewlDGwBB;urfd1~rX3rFG{= zImck^aH_V})kS>6NBPRRss0$^=Yhx4#nPP&*kfmGrAY#Mfuub z6))lH)33)RhDFOSi->r+L%KmU+J76!1wG61MN;CG;(_(S6#80AzKSJ|PRf4SLwMZL~m)c};V zM0YMU{j)AkP@?FMUBi;V}8r&aGcVZ>dYLR?Hvs)g&!e zO@~sxs*k^uwhTg%a(RU@gaR)51-@uG1M^7EZ_$S!z{55Fx8hSAE_c3ORevaIVgp_) zRQ1Uzgg)Yc9(XF}>k3-gt&&T?ID)am){2VQ$y3jF|vaTza9)4hO^;O>gRk~2! z2TZO#lN-~WHlcw_>mxHsh6lX3xVSF=_1Kqhm0sX@(5|_Uiwwtq?Twb-`{m8@^MP%f zZ8V06X3q<%B#Hr{rT;NhFq6jFW-+898%Dwle?JH(R4l;_I4e)SYu;aVHy>)axHsV^ zsW%qlKdeG2W0EdvLN)Evv@MecTEO+Tpdg~$!!AtZ?Bg`j04(#DGjz=& z7(4>oGL7bgX@AzY;_7|*bnb@ZzW$;2mIFlCyhR{$B4PV&MjJS-+b0V7PY3g&mGP8W zh_5~DzE)Q5eY_atVh^wY9E!xQGfqRE&$#|<%cpCd1Mp<;guGxFAooXS48T6|`O)+9L!obcwnk?SA|_Rp z)z2`TT6IG&}1?ukP5(~jXimJ-zjrY(RojC$c{h%;p_1O8^t2?RFLf?U{ z(X;;yV)QZCQ`~t@r5(f;J}+IK)>9}r;f z`!z+BIo^xi?|n)X<+=zW2{;{m8e!`C9@|jx!ixLCZ^px#rpm~vNuN>2F4y_jVXJr; zleiQdQqMW`O4D~~inj@{ zSd-wAwFsu2d3Php{;N1rWeCI(=_0k!*VoM!`T?V(o*idbRdz)-Y$5fgt1xQc z*@E{Zt>5XspWjI1o%%~_Hcm}*Unrgdg639SV0jYU4;T9ZYYb*ez3KD?VPV&1J6J66~*$7-)*hOTm8>kzucpX(54=fo*83rZy)o!+KVfF ztk1G}>nYCam(3iwv(`69rb|?G<3A8DHFpiqf$YaUQn;_xHF(Hy5(5zktA)8m7;bzc zou;gxY#lZ+N1T8F%Zp9G(mOiZyKqjWlBi@CC-IJaabGqKP92Sn|BCC?gnhxCc1(GV zQo|*>I}g}YsXy&+xo%EXrTQoP$1XGKIpm6VhGb$(Mjv_R0Hov+xx z8La}gR;Q@&6HKjzYzH^*&erqK2sg!35@-l2yoLUa|Lafu&LUWf0up|@ZOsnHjFD=W7ZkR+&S*o!OOp%%`97u3m&Dg{k6O8{h_k^(;dV53QNVW-`Nbm%ZlpU2j9z@vb;#O2?F8yDZ+iBV*x|q7@=9+b7?r)J~Ilq@<(>wKRu6jtAri1Pzd6PvSim zna~nZ3t6c-T1{D-PqOo++6#ec7Jh`}+wS6E+R?U|@4eDf|{fov+)BHi>N13GUU)ZBb^j&DzJoh~2QFZ&Bf*@sM zf&T}aH-oyE|7!v-<-a8GrqBLN;5ElRPO2aWpS!I7vVQU!oBR-(!fW<~rtnmw^Kxi2 z2K6<5dkMCB^qjyJ1(wDZpo2g6k1q?CvmTAUqt#q?9|mJbd$H z93+rH=GLFNe{TBoThnQ+cHo5X4*kK`MZ5mN*TY_9b=talBh3lZoM{gt6Ql2GC|H+0 z{Em6!N*uF6y*?hOD{&XfX4I;EYkPJdygKmd( z57b{Bhg5O5B!2uHM%Fwg!2_B#&?l-k*hlbQdpG*}NvK#s&`RNN&p|5zcn)m8I?gEs z$;Amn`pR~IKsl#px&SU+!2xP?)c!Ez{fnsDuopSfY+bc(0_Z_1`%bdxuo3nHNKtqG z5z_0%hn7X!zsh115x9{Qp9d!Kt;ZGPg5gRbq)-*MLk6?{=41R-7He%(=VCwJQyJ_y zsjY)2gG1fhHCta>5@Xf*>Z!>ZFiOpY_X7c18OM2GGH^q%IXINnB;|8oS*gFsLbR?m z=5e|8Ntj&LDoxTnP*I_{jvJacV2g`QX7D1Ykcc5X zGq-UlFncd4Ey6rry{C|4vh9tuvGdlz2@Q=Jl9go=`sBHe=U}Etyy)>AYq$s3HQz1t zxeF;^YaN5Z@nvdo6W9~~kH8*D_G16N#-Ok>%S`~d0N@)}c!fy9{+emp3Hm%c ze`X9qKrof?84VtvL1ntvo$9;KXt=%)c0L0#8E_(73ajvx`IDHEWjK}95M9=za~y8G zfOsVK7Bhfj`xEnBa`#p#uvI~DN`Wx-ub9EJd!pu!w=siavp^KGonx=s!ICMzbn7WN z_F@T*&0m9YJ=jy^`BB77VuK9m7@ScG)DE8sg?tcV@$q#PJp<>FM-*+LFEsbqn>r_J zhOPS!gqEZh+>zHl+6HNb9;U&GMJ+87J;O)VGK zCa8+H0c3Wi;WADuE!FLeqa(omNAO^<-`u-kB8RT3;QwD{`-~Pz$o$oxn{6}tYu4%1r`qcD0=#2}X zJx|7FsADz)rd&Od8ROrSb>Ew^IpOzb*~D}{W`gOag8^?xg5`#$+VTELQ@MSdh{*aT zNxi`eV6_AF^qTRD1k!DI7D0)HL6iyVV&R!Ww zuOK0zzGyIea6_e8iJ(-JmKjh{n;116;~BjolQ>yDS*tsL3Fk@d_FD77a?<1&8un5Z zUiN1{@APKWvw`_A(1S_BU~R8aTif!1XiAawnoQhnV4Szu8Zy%v+x z*^b}?ItZW{ZSOjru(9Bd5d$bMI_rB9f@FGsbO&Xjd*E@!A)ueW9m}je{N8@Xzur<^;Z@?$7Pcr+9H6Y7a2B z5FZ|QFn@sy1HoqaL}C}wW^*nkPlvtiI$vT1a90F0bxHq(A%gKYd%bs)IPnD=MmZN7 z+(??h=5z&8M8||&NlB5iXW3aM4i7d^B`bj%8DaX5q=C$B(m;lf0kdgIsQU#5ctyXH z@icFtHM!~ls<5YuBt@Nh%WY5QK6ADQ0RjM3v5-Jkpfk;bw&3{a!ef?0qdn;ia6NE1 zYgOpmDW2XBM$9p#c98MhC`yhRzkPDQ~5iM651(qoH;ISs_`omA*@|v<_ zm?N*fH(}YmBfZv6sfRpCef*(X`*}R58c8hBvVC8up7U>IyFkvgckM8lr>?f0sl$en zL9jp4GWDip#AyLPt8cRW{En5-Dsi=^aGr2nE-#o}UvsS2JD`+sN2piPhd91A;{8x_KE!)M14YR{)t%-^nPHx|RXrc~IWaaL_r^a^rUr?vh63b_7w zl62`xFu7aE+E*J@CLClMGPBdpsHjg>u|-7}glYx2bJtWLZ@)KqQx3hMY`qWUQ$eFT z+B^LFvG7m1p`~0h*y9r;x$#XYZ+#jPRLb(N+`zXzsqwo2ADPJmO??I2?LBi~DJdFj z&Xa)Dp~DtQT>j{W)Z&`SU|<`pon_ny;g z+O4XRsqT9u zM#lvkeY9K5lmKb_+_BrV{mwPGWcoMnl?d1m(=_b<-aFYjh2yg=bzbT=X7?$Ykv>VRj~3*r$l+n3IY6(SEk zYN^ZPCY?Y7O0TrC<-&=Rm;1*qF+GsfYhQ+t7lfHbOU&MeD(+Vw+O)1bPjkDv&s+qA zNl;%p7>nrY@IA}NhUfTSP>O9$I<@;0z6O-jlz9mxmv`$yvhfBGwM^X)`W08qVY|2S zmu$|Rl9go$RyVO*DxVXf+=rU5ml1kktJj% z1{K2wX^%cR#wYA|2B1ks~ zNJ=Xq3?Yq#Al;3CbV!4=2uMqdbT=rCbc2XUcS?hFmvGmBb?NAwT? zOT#l!?=<}3Q-rfsyE}RvYl9}8h&>CzVN=(J@s9?ag=w)^P@dpt7cOHoS$}ZaUi0Ry zN^Hjc=(2ELs|#a7@kFz?z(C3mec%LWQU5RbYD3xHdtrDi9Cv8mJBpFg&}4yrYp!(x z5P?8Dc!+&&Fm3iZZ6z`j6-vcinGHLH{8uE{05rPOeSTC=x-oG>`uOC;r0&Z+cq&x= zk%u<8eLjH9Q^v+zJwOTBa8R}Zm9LJ~DWIYv1ki)s=;uVIs^*CKa5g9zh@8d{Lc!Bs z1uFd!UTyJ1FU`O5+SEu_ymrl5LTC9HI906ae_9P8w*Q&EJ_KL}&%^QlU5@%Wp@dAy zIB99%ntBnm-?h>QED_f%DSWzo{?e7}cR>+A*d+pR0tld3U>+R)kK%jF_6i5MrNqb| zYL~GmCYrIEE7z(7pV+UQtY;;x^qxVoNqU^E6AxULrOAfvI zMOd$Un!dmx4c$+9d;~4^H=}Higzrb1feSSb!bW`_pkd!D=~gOIf?Ea_L8ZW6V|_Q* z!`hqytcdrBhQZw+Xcw=3IJ%UapxHflwabeD@5bi`MOMrZ8!-1K2oS0uKl~Qf-G8dm zJdZb7l_g!4?O}&Y?Exbb0d(bl0qvW&ISv-#VsF(x$UVwhg_=I?ZoCs3KjMob#P=!@ zc+o`StDYZee!OgU6(7X{EIvX#Z?Bz0VHNO2&tgPL_9pLN>U`*&QWmZ7YY&0b`t#vH z$^`6WJ1_SGy^sP50bux>!kkU(z?~0PArLCvbr*;FjXYuspk$r_lT~s9aVM_ z_~P~oNAuM=v_B93_x<@N(qk5=U@q4@|GhGGptX7FA>ZB3vYwD7MQBNXo&_D(I#{Ndb7!2jjk z!zEgWd2mP||Ce68y5_IpxrLCs`g;^_;Mgy=OXk%nD@2ncpO`?SU2q}_`xZgjzb@=rJ8&9?MMobt-l6%J^TTYX zu9tT+JM-c@>1L_f;mndog(vDv8UW5*71|sfCWL7#(Kr2Xi(eYgQUv0;J;*N$w|rl3 zubf?fie5jjPGxA_kBSV9-U3(qKb!KR|EVco;J}T5iN()aWFK!20|iZJUm(%2 zsmf_L>*8}f_BhCv$@(>1bIy2dFz!Ms+&fDKdiAZBk3p}l*#9H8u9IF8*qL;(qjKQS zPR~H`m%99n*E>u$DGb`GgA0Khw*eEjnX9lPyCoWanLoeG4__XHP)iL|kj54Nx=nGe zSfV$WW#+=u7cs%+_tpnBuD|+*L;Iyyj*JI*<+wo-+mn!T`1Z{cN}6qAwEw>)5;! zhBO!>7d5yzw_%}LJPBxprTrn{ zbpOl*+_VM$Hg}iB+fhtNu-Snz6)$kJkNc3NHYxQwCaxOt#!=9aYdoM8?58uVbiW`^ zsNt@GIHYIB1vEetLLf|>KFg!52;bjccZ^5C4~jJaVcY7eT2eL|k9#)57IRSv@IauK zQ~T1LhyLH#Z1R7>X73#RX0tQDdY2Iu?>gW|JsJ67y4SqZtNjEQc+@^#xyFDb>;l;B z4mzn|JEWj9s5)Gt%Q*k^?TwhX5EET;Bxw4%(H!Fo(tMs!m?K4z-DSqy5M<0PX2~{j zMCKzG!?!oG)8#0i1q9{i=D5vxBIx{)Dt}zxe%h}xwGA1x5ck=#ei!{HHjn+!*xVWv zO^4ExVc+I*4qvaia@gzB{T6xiNTX;;)FJy6qYx%A4YP^PW&YGGczYORoeau4HoQsLWoUF zo|y^(I?$+*-$W!4!N0W3-wJN4;k^Ns>-)#w1W>7dwP{!w6u# zZ&J6=MyB=PY~8Hc2gX{vCVaX>B|B5b9D z*yi=|#QG52w+R&*v*2r65=}oPM#yoHdY<*1!JNh;>h-Ur9LbNQ9Injoq@2CDUiS1O zDd7zz4>5~aT)w+-+v3+N}rCW^|H&_SvI-C9@Z z0g0vQBTYxbwb*2Iw)+;V|+E!Y>*dLKjd=ir!7;M()y=&+zevaIEq^$Gnkyame2I{=nZC|ws?JS)qg z@-R|Z;gy@qWQY1e%ex=bSuR^vzezB&q;{(}XcVOT8xQYbX*(Ny%w$k=<=5-}BcAS; zpaT-;r>>|-{A=zr3vpUE`dUDkZuAg^X?l$w-1`_Uln1KB#WF+5Tg@8?+I6E!WKt;Z z&2Qbhw|2VT!GanqD5>|C(0VCWuBHFZ){}MfTQ(1V#ndr6b!p-!PC|QB=!ll|ZJ--j zb$s%EaX<_PB!H(_KApqsKLwNKib8QLJV)f0n{51kd$1Vv`ap+X9 zfgc<^L<6ut$wp99$Q+Tb!Iefi$ z`xFq$ObyY%%cxZTGa#2~xY#h`NG-E{=^0-=ZuF4QtmqYtHTQ!PV+C@=jEGfI&!zAT z9jtVn7c8y9W=PVTd^%;!_hg&ZE%0GX`j4-O^}-Loc=aYt=-?RM0W1khW3K&+!wFLU z^aw}a=(g7bb_$rca*X0kUdBBMF~fR*1rh1h5_DHR&aJ)whaW2#A8h&mDLZ$b3;J11 z7R^5`;~rM^m#KDw8L9M8{w`oay-@^JgxhHZV>S0z)NR=R?h*gWRQ{2qOM2(^Bw(SN z?~A=^frrQL*psUM$uh6El!Iuzmjec}(y+IG#8|n-BX}mjV8asIQGNs+@(WbpBtZQ( zzS)tLNS(D;O&umQwTNOfq6I;GH6lf&{ckg@rkn$54Mbma3wTep*?3-{UKms}Tgc-oUxoTEabdCi$~^ zyZx@-->^XSX2B}Hv3|T1i4M@-%%jY73yX!-ljiP=G?Ng+EcwINlm8Hqb!vKzKaVR| zea+QlzNI*3f<;x{J75EBJ#Sml+(BP!!{P58pWq^9J86_8)U*gLAviu;Xcyd1lb#(; zrFBE9$XPk`MB3#!k!lRm9CE_Lz~NsC_+_NN1H|X>Rr~2g3J-q(0J>>IQ0MWVx%->h zJa{us^rwSMYz}Pm z6^A;&@dxsZT9XrgXTU^mHkLM;Gf?~V@MrA~l{i87dy$?P6(=)QTAi0Ho0>4949dQA zqg_`c7C2Tgdwi5y-ynnUo%p;!#tnqrJTd?e=#;yW+8$WkCOdG~A~uEq-VPND%|=e%}~o)8fY1> z2otX-t_03vrXAx7$`0x?K%?_#Hj-UA(B5+kGtaiUyOHuj`f26Q{xcClMPL>54! zo=&)zlWk*X=S^w%D-K6_*BGoYaYgS}K0>d(DdC{DFhM@Q3`eivBqiJqYHG|_&T4m@1~AKx$ZM}RAA{oS z?>VTuJNqw!{$?-ZruqJ`uMx6A!AA&e3au2C;LbbDO$=d7OZ15|XvaQS*ba2*bD?X*%O8QTSK&bZC z;3U9sfnxW5ygE`SV*m?9C6=T56>o>7%Bg!IH81;mFTORx-XMAGhI#31CN3XfC;)?U z5ZqPp!O@5Vq$L7K6&0lrr%8w!_79?*zqe-V*%(8toP4j}M9SL~Bl1kl_*OhHzW#J}&w=?PyIvQDJDv?S;sGOc<XW=B-SORxO2qtLuz<@ax)n~3h5XkGlArOO}O9Wys z6SU#>;r_Q@gXiSCU-t?3yE`#caSOi8q>v(y^(17u2L_Z_*Qj2dn8npCMH7)gJO;zA z1do%6V_*ZxG}Mnc2YTWpY_*UB-T4MZq$4ruDg-z)ZA_nu#D}tmwxtYgAPSZods|LOdV{S8&P97EWCdFR9)%ZAoJj5Q2rdt%v7WSU=`o`-UODg6c)4xHzW)ElR=1t{q2OqyGt*} zqfePGJ_faY!#iv?hDiQq6Z!$l%Gls7`G>o^@p)SB+ls82CZ$##=IqjbR~hp(x&x5q zW)37i+i(FDEkIH)MVjs~)0OW90#b+|x|_0JHrIe+u2E5TTq%vw5=oyX;M`@gwn=+; z+WKeNe)-cwt-xd_8wug}U4wRydjqi6^}!4=8--`-u8+3Waf-g*b7dCc7A(?FPJZou zvg5q26$SV6+GFe({Ep_w(vTKGC-lf8pPp%mMO>N4i^Hh(=VOW=k43yGBX)i_b;5Cb zX`T1heXCHwv4SuH#YNx#cnan_)#iMJXTuHJ~j3lJ;O4l7H{etThyxBy;bUUFdaF{;vrSRTNZ7$43PVH{Bi;d z6TG%4Rs{Xq>zh(>QiOEVay57&=Jh;pQxnJp)5R4043ir$e<#~a1_0Cb534x}Z~D7W zPz-{^=ww}B$lm82bPtRUa4~j+@1LBQyz?md7|>N9tr1;l$Q#u$erFXr&2IGjl|N4G zja+X@TM&_qC1$?@aUW8UqHj$O7Kc*=rF4fG>@NgjrU6D$h+FO5!#lm7k?TvC*8kiA z5E>OAIEM4yXMLXEegSjz9*2Bgn()@aH{2M1{=2%+`RTuzOCO&N+4_2Jo_^%x#|@YFn-PB0$NMklwZauwk*!HzT_r!Gs1 zt|9*fAQgU>0E8)4fANJwPp8LSpR$V|>V2c46$W%xZU#ZZqkhUT1$z5fn6)dJzhfIj z+<||ohTRqJqj>k!Hn2K{&(QXPJq0I9iYwSCYfH+XDs_AXv@D|jfXrzz^bZTjA#P1G zssEy5dSYBDQ2VEaPwE=jF#aOoGd+Y){cjLNjI>!$Uhxuy(6fFF12j^aQHm-Yd8peD zwxcgAlQ%ZOyF($XvE`>VZ;e6kheiHl+Ppt|KCekR#S!?u1V*)VbcaR2qeLBWL^-%Sw{`a$wd!fiB@XItaf9HA)} zJ@iX!AOUdHo275PW24%{`2Lrl{Q)_EZUYFC(2I-?W#0qWh}kO(;QXnS4ZpPbVs2tL z#Y2il&B8aTf(bsVV1yG8hnKN+3E$s|Rc);PL(=!NFLbldE`j7Qy%AI27wIp%a?$T~ zQSHyV#{;Y!4OHaV5VGFVh({EjB3TfrkxH&Xwb+v?+k;aH*#}_G$P>_MY1_N;=VcD` zzi>un#qIc8uK~m zsOS+4tN%+Np(MVR)jkKko`HJ^3vsm&i^p` z?-Znu1OGV=SNVs0v7;76P0@j9#sOxSGSb%<@_I}sIrAYs@YyR7mq^u$@Q^+(49;4L zMU4}@xBRk2^kmxgn*|uyntXDVS35~G2(zd$i+(r#Dolr&fGpM+F>9pq(v0uZYyTSR z^lOdrQkH^_2Lfrhu&ZIYulCmufv+$^w`Le?Pn9A--YvRA-#&YqSUmD*drc?IBH($i zlP4AgA&}B&eqNB^5HKh2KprWCpO*!+lj+kWHF5P;;#t1jyO&NO8QI~spU`2Q0YKIJ42S|7G5en=mF*e<=}+hUiVyu zTV)k7C)ynIYC`Xg8rXc@L0goSt?h3?e*hKHEnyg*)tlQyF?{@Z`K^S^rS|yf!pO|XH-xO{U#1tfuZTaZJu5I|4 zh+Ypyy9Z;Pa`ddMuI#*f&%L&8eQ9!Y^y35H=C4k}mX!zYho_o{+DlG6MkN)Q-~lM@ z6C&ffVaJAHK5cc}a4N?rc%_eIQ|}=co=rHpFTbl663H@9id$Gx{N_Xv+n`nz*k4*^ zUa@Q|w}O_#P&YneRhZA2wvm*dXy=7C(~8v9@O93Jhlh7^VuEETzj=&VwLT#=Z4(VV z?mQNA+|f5aKc44kqJF3AFnX2fv!SiCGMe_&~;FKc(mt4O!w7L_Rf{_a&CW=w_u!-tdl4#FU$i zddfb;82YHR7imL6>;7$UUPdd7(%5EQ$0go)?nhyX1=Yw1odK-(cAe|!q@B}lHw5Cw zrW_(6hdehK*#ZoJ-SP-##n>%hk?6>pw;SA)An(9vK0&-O;>hgOVME*S=+j-_kXzu{ z0Zki>0f91myNAA?tY^*HZhz8@>%3^fF~y2Rpxs?!95PXd$&2k))UvU)^?Eb=TtrEF zYBBWPv`C`rtO&ayHc^$liHiG7hN05 zGhR9%J&tsnEAUU?p03sf!^bgT5mDA!q*QB{KASqy2CJj{&`fwkB;K?oWmXYYz{0{l zA>o6?ihEMJu7b|zZE+t}xw$Bo%H%@7_fX2ZF9U7a6aOwmCXt=kL6>Of!O@Bl0!onX zG%vT1T~EntSNnSoP)EJhHTDfObP`@RX2Z~mkdW$X7kx!YB!Ro}%BRw)kc0a%k|2)g zmUhA*A-?20i@oHyg4HrzMaIn8!tB^R}o3tMhd+`gBmmcJ#nnXW;& za!vc*U`?6%A@AYDb?1@TfY{ESSRuZ_PsG^7E>pUK);Vol;GX?@3tU?)<>TCP62gS* zPa@}p7(agsVRhl1(6H8^?4{M@P8$8T>*9To?wA3pEd+mnnEg5{)?y8hD_o+ZuJ&{5 z<*Hzx=ZPPcmSOCTVFs{_8iZY1~lKCvt>78;1CLS1h4$8;u z&`u&9D~TRNhR#8?;u#=TZ};;R9rF7u^>_pSJ7*%tOH?6j6Z4y<=6MB`g}S-Hlr0}) ztD6z4g$`t!r8LUtpfgE@clAy;tU3Y)z`~!Hn5crgK|{r~xQonxmhBQE>*#n00N0@r zwPyA4ojA+gPEXuiwk&;p-aeYo`YiU#Bi5>GV%qT#d#&!ONa&K`bTSnXNcPQIvK2Zf z<4aZRj@QO=lK(^m31?_O{}xU~ z%C688e`2;pHuD5<9*niYav^!2Z8~1QzUG819bYh2c475Q5Hl_$Flq8m=~7#Lbo|NA zLtXJvw?lqr`x8kAV~b}n1K}Qt+1c5ZC_4Cqu?nmufsY*{LE0Xy&i5|-unVuc0`0YQ zwLTpoMx5_HEPR<75yd8C=ib0!IKge6@9?3Ih7Yv)rqsIMi< zC~BP-)5R4=l;Wv<>~nDEX3K3zR11v}Yb9gAL(371tQ~LS;?uXBH@CNRbPij_^78PF z?mkHBP%Zh=J)LAxf@HLR_im0M>I0`Z-rAax1j!n!+=8c!18!z4G0AW{F^-v%5zc;H z{$@B1ha{Y^fyZ8kmlp=De>Kjbb))e4skDRf{xrKlds|(1GooB_)+1sau(`PGju(!E zS#SFrmK;mkGx!N;W^fxH2*TAq~FUgWeT2Wn${u`J6p4m^$II?KM%En z%@ouYzs1(JNpi(KzmK%jXvEt7#8FWZ?d~FD$D`!5M6=B?DWT1uGfvB=#>NvZOp#9lIMut;AGr8Z|WBGUh{)_ynrp zw`UVg%J15TUejN<~IFI%~s_kouRCc9}1c)p^w^*EQzG;~kmq$%G-d!Y8f zNtWoH>+W}OHcLk16QjI_udN0CS-o3X*ex3=qzYbEy(@pM%b%A~pxtRiU3*HRkjLx` z{aS~_cyA)V3OS&H6YA}skxmF1cU55`N7~!VzOH{6{97_gJmrmW-b&dBh(lu=VFULi z{pYXgY(tDfx|0+odYTjEU%*C^c?yLU@fbvozT5}IlG?>*Jw^S0)MxRl`V1a>z-L`f zh-UDvD8*FQc#-!pY*cyACC>Fx7tcLrTESHt7th$7$3;VOY;EmY;uY_DaZ^@+$* zYHi|p3N^0cg=MD#E9`ad`(;SBeY7|Zr#yIx%uCnH*FW|MtJN~cNc0hnK?wJ%xB{gg z?#V98A>1OsMMb69qb+o6-LYI2Av1C2AXdK}XIcvmL_8w1FppEp8Ei1diYxx(Jx((j zx?nsam-5_$%guY_12@m}y@7_ef>V5a8yg$oxzO`lLSRSOcP|a;(BIkHStS~@RC~s0sZ;brwjwh;WB+(<{D)(5=;m19*5M$->-irA(7!ftvTXE z=e5O4pxs-e1~s?Zd_3%Ofv{2UL1@7N+#`239dyQlkp>7sd1K7u?K;}6TWKFwdS*uy z@Al;xeW8$uZF;B8H#n4`49Ud-+eaerW?}M&$oBv$k;TJ-i{UL;ms{XVve1CPa1@GM zvNQKt8~spun)OjBR`KxC;Z49&JO-m@tR7}_o3k5Ies*#?y2-QIRI@ePV^4&<&C`p7 zh#d0qQ%CbI^xi0$3z|$hx`~3OJ!Dsi%S~Xz!^s$p*hR+a%588BT0bufCkiN>0qFHJ zKZ|O+*PKmE56a8t3I%xRZ$Zr*H``}|Cdt7mhMr~359W^9N4C;=5Rr0!T1m6>aL2{` z%4WSsvj)m?Zwmt+D$ga7AfYn6G~9clI|kE%jvS&|^6X9`4R|BXki|_jRJ`)GzQ~8F zj&sT)T?Vxk?PIvTrSQEG0LX%eN&CJ|XzR?^%lmB1{Fc@S9@A^=cF67%A|z08)5pMB z@I6>FPH)*RcU4Q`An4lIYS zPqz0z-Riab?#M40&%;JW*3;a-TS@MLktB8-k0gxKgFM>w&1c#P1u|2e@g6Gy&KVlY zrLApN^U;K$3rHbJzCvz$Dz=V$FFV+2Z#M4qCq=zD8X2C}|2Al8>Tqr*B#0fszZW$k z_f)$Xx{u$)Z*H6Xx*d=Uf^%OID`r|oSG7*jm+)|kjz1iY@;-EVcIMKN!^DL1CUVm8 z;<`dsx4!StBA&pFlO_KEfbp(5$Q3+bW3A4%dvsj6tI_FjQFVAnwtl2W^(O96hF`J# zAr3fN#rpH4wd32LEbK0(1@3N*(zK0QZH{E zrGWDLG;xjB3Xc8gsX{CjE7IY;<&0W+RM+ZXh1X`}(1~;Xa=Q%*0)jdRBKxb>*Fk|Y zkhm_RTr)wqS^1hAg40dK;a9DR9lq}{&q-~{zOoNVf*a=p7U&C7s)U6_j~$k`9G0e=H^e3H6vKC_A?!#>&U}lErs%#2p*^i4Yx{$WF(4otLuM3W7 zt0-a@L;I}qr0z8vHn?%#c?VYu&6qZ?Pe`@SwaF|mFLBI=c)W~}IV66ODqm%rwCLZs z=2q>Tanp;a&tA&1!|z|~$hvHj)e)gpcFnis?zF2%PFL3p;y7l>y*r)6HM{yGQ>Z*>yh%EjVfC19vK8X86A_Nz@8%26S^>Ti+ldBMt#47#WN71AoBOPm%KRh5+`D`&UOD2h}6kAgc8-g1oGNQ-Uq4(ycu zZ+rTazu-z&C#si`h(MvEZ&dXGsbTeX__l0IuK7<1$74O6;ftYT1h?@oJ5@Sm3Fw`7 z3*32#?ORF~yro_Ub+qliU|t5P(Sh@airI3pCU^b!-J6(W5mQkQL2)BY-YCpqxug4~ zv-#1C6aJzPzVEwnRlg-f1PriiM@9H9LHF9>W`b&=ZBMe>HTf$#cO6)~8y$!Z$8L^r zWZ87X%xn?AfiWM}&4j+PX*PZ`WzmET<$rqRuM#WkD0W$F1t%H}s)br@dE;X;Kk(WP zP3RWg*{)HF)l(!l+s9;3X2URD3#-apM){-0s^fJ{6BDkH6G|uq#6Jy%*S@N=2NM`8 zu)MjZ?~jj8NVpsbNsAvV*idohHzr>op;Ew?RnqruZJwCQ^+fiE)$;L|8ZqU8@x2({ z5kix?CAw@@dC0;)s%$q=qjaTde#63v2b54Z)7e(q2Jgek$w{x5LQ_dGR_lu)=5<|62+G+*@!?_nVoA&q z9Rn#(+rdFPRrcBOI1gnEcpNsjbSPYhh2`bpO(NPsIHy1gmM#*=oqXX;fJXxJsQFZs zgwOpI@rlSt@v!I24L~vMfh)Ug3My31@d5XnB=-S{`1;Up?t3b!`Px&3k%_O`G9}P` zNCKsyV7{iNmK?5A#)A!I_URLkh=L@%!|1nyUPZXCv_Xu z+R6UKI<`!)P+x-x_H&pcbW~Cg6_Q9()xwLdqCgc(0h9Et{r41%jm@h7 zsP0AHl6Px{(mCIBT>$vyMDKhncF~S-W^lk`?vsLF*00S#D2OV>LkuJ|rx_J=y$M)h#P&o5|az2_@HNuc{$c`{v420Hb&?EWAj`t7?^mM%X$)K5N?NrdQ8Gl_{81CUSR|qabK#eZ6 zoLcZ`IWMosA#gg4?Pa+iqL{<^+WA<)qXc7P_X?`6}mZo?D*8-bz;2`x5+ff@wRJm zFaLH;+s^Kxwo=*f7CG;S#r5jL3QW^oz+79UD1q-fjg*qS6C=J^*FI289mLOO_|=!R z$m!0rLLoh=D0s$q(Tvxo+&tPqo7b}o3Ke~v?qz3eqO86ae^*X9j01okD2@oQTS)S@Itp&0fX)Q#!SH321{PNBXFfo2<%yJUI$k<6Q80{GpV8BZi_iB zY+eQE?%2~aEU=jS;wqcmTXn^QiQRf0W+ISf!uvWDlebte<8T-v_O@&ExcR#sLD z^73iRMMYFRNH^m!Nl{Xb-f7do=60-eY+huT8Q&QQ0Oyd({+TGp z+)AHN$`u1diO0o0Qm1#!Q5qf!sf|M;aF*lV9n`Du-|k~xe%Su|cK+I!mIdF2vU9L) z?da(Hu=7G2OSOun;4sZik{ZmFR+-Lr@09O5PC05h)~bRNL^VshNXO#sy4$Dhc~5a0 zY>Nsk#d}BvOg#cuE85?_Q13HdKU-VeZq@D$N}i?4mV>e*BBL`zZiPlI~sO-*--ZFaUUdEsKK zwhdX=nVSeqW?UnHl~ovY*`g#PW2U-;Oj>-GQ?5_5l9|)h1b*2RIvQ4;3pCZHiR?`c zov~=;dNe|e*Q6EAI&snJ%M73*fiV^5)1MU{g3mZkOn*+_PgSH)gH#rqBy02~miwLq zrM4li4`LpzKI(Z>UXQ>CBKLx3$`A~`&~Lh0SR(znTF8rZA~=JNbkD)2Ls@Jxui82< zb+NeXLQ^qC*)Ht|fxQC=>`yT)%Zac*I_iF|w$Lgg=A~ef6y;TT(G)@9Tm~06cjInt zWdl&b)!_z+A2ZL&gYI=kyj`b-7lEwmJ_lXplfAj;!I-f&nK&ct66J%2LP4CO!?_ld z(BQH2M5zI{whRDKv*4!xpf6%7HvA0y(R%q3AmZI)A5!;$+DF+y5dqKtJ7vXwH+dG; zRdKw~fCQ*rmSU0>Y(th9F1s~OaO@W!hxTrR@-L>Phs1GSOG&|kv^W2ZUODa+7v`T; z-&FDDaQ(&f1Jbj@_av@2KidN}<;hBlRY)uHWJBqPda%>p5cG3)GKJSjJCF(xUH=P~ z*e>c$mU2ziPHQs1IyrJ)6c2dD&2@NHvlK%_XrS!}Xux#hJHui$}7{j%EXEv>vR zoBJqkRA8qaE>wpC9$&C|01^y5>L!8LveCa}5Fpbp477T?fFT4Th_{XXYA3P}mBHcU zMZ>@f>u5?@<&7=G({5~BT()SKwN!OmQ$q*2mDfAAOBHX{&+RuK&Fsc>1(NO|eUndT zyzdk8iWmM>142(eJMrWNhk?t5_43F{w)=OF)0T)gZN6Kem~JjFRnWWe-hR1%R!NC; zs9N*B{@4L9wLKoi#fEB+olg(eRovrq4y4fK)&XJ8Wxx7)fKe+3KBJ;b1~mUtqqZ$ z3%)OB6j{ZJn>UcZ&aPGCM#EitVo8*|HSBRHl=kq&8)W*0C;cjOY)FS>Q@c+zCMG9S z0(OODE1mLEmg3srlwDFbG$J}EbKQ(SK^EJlu0PW8;-AWp(+!~BIFZbmEP?ElHT7K{ z1C+M~Gh#~?sTnU$$A!Y>o1WYmpW5t%`m1~n+tAk+OWd{%afo z!4>PS!pV`)TVOUOG-D-!eP=}|vp2yiZ=F#m-m5qPmM)vA85B0eFZl-f(#3xG#+u=P zE+NhaWaW3u=}H!=S+se7#SYKz{lX47QFG!|%50{%#e}G_7Ik@bx0b6xUDkvj|Dk=O z)c!^LzFugV2)dcCLe5rQpSSW3eQx(b)Nyr)YN|v1E+o{XR=!M zkm0c-dFd*g_+FX3H4`|KLl?Ut6ze5?zX-Gs_Vc*lLwAPuRZXd zrvH?@L(YG(>2palv%b|p^UjfoHP!8bOcxxl++#qxxx_)XaJ7_=~oh%ds-EVbKdUa_3l;^a5D5?6mt{@Iq33cU{2VRwzN} zgV&ttqy+>~=uWO?8?jM+0Ylp%o7lP;I0^8wDR2!i{1SZLK ziT)c8&wvS)v>&7wGsgKM|l%{s3kETs%)LWu?Ge?SP9B72tK6hXMSPyQgkU|FuG6%{}-L;2%? z#Q?w9-hVck(#V)nB&$L$ujJCzK70u1*rQOT*zgWugP=EMl(-1(pK($##<-syY{dgF zBXw|c){|J9pJ)vITo_r$WzN<5Qy3YpSC!%&-&0B3cSQ>os4ZNkEb_XJP1?+Iif%n% z!$5PgE;)` z{Nv*InT?K*X%|poLiP|@VGOw&=0!AMY>U z_^AC7>pVog>57WKL&6aT!!J1ZsRJ6rcl@(+VEic`Lm@|Nh-K#6KeX{WJtT zKuvI#mB4K1`1rKMLYsvx7b3=H_OWApZDpbLnbs_uqy=%BN^b^Qb`-0cHubUO_CbQV zBUI_`_Vl1?@!XnXyi0@bP_aJJ=_uG-7ROJ|GwL#P({C%wUF>@A3+N>bD8^r{V~dgO zDcceP+(TQpOPaRZ-LAyOJh1`){p{=ihOX~(!7cu#C4u)nf(rFhs;#LN=bNMxv1O+B z>=Q%A;C>{#9Rzr9T4}J(>WH~&u(*)|P*2%RmyCRqvHU{b`FuiR1!k;!T&>sd4E}4{ z{(r>2lgmU(Ku!&xY{=%LE`4paX^w;v@!L|Z}nigN4LbzTKs z@tCV?V*TxwiL7QpDK}0t3|S1bn%gm#vNYflIkCXLeeG6$v30ANzee;+uO{Ud@%y)t-JtE!R|wcP<_o6_{w|xxF`VCch53Ux zaDMHCjQ14?46k)-aXgMX!LHI&)}>?o0d6(Q=#HncFr*quX2i`GpzotlEmpcu#ZTV! zE5Bdxg-Ywv_e4>igawFdi9m^_Vh!|1LFc=y-QN?%d5>frTcv#QRBGO!G^*zike4SHmeV2@E zYXLlp*T}uM{0Z+7Mn4@`Jh!6-YIn?;G34Mj>3LRu(g6?*FEm<7F-(K$=Vp3KUk;y* z)ZF-Tbj2}Dcuy6W6QTwv-l_>Gln(w?;p?v|JRVYbrXz4Ih`gt&jmW@{+#8s&dhvty z4+b60&8BVW-t`wT{c(!Ue;3m|@ca`OaZU0B@K)`v#B^sLSzY21U^=6n2ivg+)O9An zlHiO+8##xSP1_BBT~5)?hsJ*wzlm{t2)QNsx-)gUU$F|&vwB{WfO?M?qs?gY7J2cGcrt}Inhy7Rx?)) z%KvkcfR*oUy94F*vuO~{=W6|p%4_-`7aC2>En-@}R+OWFPsCvK z0zY5dCLsLjV(awk9~oouZ??1`fNm?A@Bk7(i!s!Hqt}}%GL|UAZdcWOqr(m#>SO?4 zq|>TA^I$H7f9Sxqn0yn>aecHxSK{qc*A@b+pT!=SIX gHu~Q`aPH!IDxqSl^R*%CYv7N#h_vv#hdM9+58wL`&j0`b literal 0 HcmV?d00001 From c0adc694fc9585a63f124baa3e4d47b5fd2d61af Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 22:24:56 -0400 Subject: [PATCH 23/48] adding plantuml files --- testing/classes.puml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 testing/classes.puml diff --git a/testing/classes.puml b/testing/classes.puml new file mode 100644 index 00000000..43fdf4a9 --- /dev/null +++ b/testing/classes.puml @@ -0,0 +1,3 @@ +@startuml classes +set namespaceSeparator none +@enduml From e5969e601741c3122646863c4d4010ea57e2fc8d Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 22:26:04 -0400 Subject: [PATCH 24/48] adding plantuml files --- testing/packages.png | Bin 0 -> 3845 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 testing/packages.png diff --git a/testing/packages.png b/testing/packages.png new file mode 100644 index 0000000000000000000000000000000000000000..fa59ed070b6d9b38a291cfbdf6640e531cad3d3f GIT binary patch literal 3845 zcmeHK`9G9x7bi=WFePItTg<2?#unKdMog9=J<7ffDq|mejU{4|C1WWJ8nUH4*6d2w z^u!R^h7vNEu^YR0dV1c^`_udW1@ABSxj)zEzRz{8@AsVRd=Jjd)PRRego}xZi3ec_ zzrn{o5E9Z=Vpfs~d*Nz}3su&k5s-l5h@@xP!s?_^U&q zK4>Q|On@g^&c)j^@bgD;CMIUFyEkuR{=Lq`%wlp@Ycx)ajKD;#F^Ev4EsE)kt-?IdY=_4j*^+5RpYMN^Eep5WA9$#IS>yWD1ZFo z0qTeh@*SGe_4GjX;CV18g35`(o~8SN3eN?luO#?s{~6+R-ehng^D0KK;xX;*8K2Ja zl)M4cGPx#JHA{~rfS4A&o^8V}6{Jw`%9{g1tG+w|h__x&DFX2Y*ex&CK?Yn+wKv?346kIBBDZzOgksNuO&mcB4(uC+T6@;U|J< zjmwi$2QBmm{4(G#$6x?fn3*mYj)!3Zto8i5r=uh|qE4OuFE-UAP7K%Sw;o^V$F1nU zmf(8Nt!}2IJ|Q7tdWk1lhD(Um@l;+r3ZJZkE+dE~b`P@mI9po=50wr%lgH0x0TNE1 zULF-s5c5#TejA9DceUFE3mP@;0TC7M4WOlsVu83ZK}MMBX20zXIXv^nK%}G zKBnrvh~CcH_>(6me3>cf8UO5Kh@XKwo-#q9+;BrdvPrS?73n+NftQh=}@HFDZc=;LbrBewL_B7>HFOWG8; zvhviCbPiX@n+Q%94M-70dgf9H3RGK^$YOkst_pZBWZ6SV8v#o57Cwjbl4{>{1IJ-E zsQej{WA}P(jA&);fiF#svvR)Cij?5^4y9S6#f61-*8*e?#IbGU^G6ET3!~JEI<#;= zuuGVz_frE)=dgt<@1*DYS9ZSoNwI({uDiz-ieyM;USrWbFpg?0=OvkWtZrpT3Flu+ zqI@YC%zLjV7Q9`d=Wy1Ys*g-PA*^1e7t70Xoab}m=}zHx>+4$$ejQ`}eHupvcvJP| zsETs$u#A9wg8~~`T_ZBL#jYW+d9C!-Pq|(9;s85sjftDKwwL6j9<13it5yA!(_GB< zr>t0nZtZ`l;YW*lZ@RuxtI0{D8qb_8t8SI3)e@HH4EJojOf&J@o>v{L^h1g(q_|!7 z`IZ+emeo0SL1Z~=zx$h{UI}4NvkE1r6HN%Bv|18$0?#(vY#peY64KqY;5iY4<}_~S zalBI|Vg^uSXRa*lifBM~^SzzY!foykrL{ur{(MG9{eU{u(Awg$err84e4;9vHFLwXg*xMnh_V;N1LSsJf zsZG+O3Tdn)l;g$z`B-EYgF896{SwG5(=4^iY zY}M<49Z1=C6-|wPypxsv6@SP05cVm@9>)|K9j;iYyOhS+r zk{b&O1^xvxU6bgj!Qox)W%JjV;D`

qpb)p1P@d6}Z zq35kMg`eesV*Qy9F_;aP!iA z)MAID1|$Tm8(SdQULtcG>^sIF%*tU;q-L<__zOaUqo=#nQj%!=;WB)gHrX}#xJnsY z*OY$6pdK1$flM?9`|=YJ7r4ER3CJ?7(TKIiPqHUMQV>=p7Rb)X&bbN0tRS7I0N0nc z>$=pe<4g4-7`#gKAY{{bgyK5RZ;Bv?YAc7EeNQJH@RobpUZ9KLt54JQFV@~ z7s3*T4zrF#px<^jBeJpCz1aSr8!YPIo4nH5@zoKge)I4 z$(-rmrIG1c-Q+gI4CeXd1kVXZqyvK>0!}WAzR0&yX^O?%E1ztpWRA8hN`(URDl4HB z5{qHM9WdFaWHocqOGr7GW3NMM95#WrNj)f9f<2@>jioI!F1fSvj*i8fNymi^625-uBWY@`Rw_eVChy!N7}JT8^gi>)}xtE@t&4ASXeZ4Ic5R;K-+ z-B7#I&$7)p+nU&Oo{SF(r$p) z_k!%L@-HPaKl=r{l&Z#S8C4GwBV?*Eu3UbkrUGi`M!;&>fKs1!teEPr%6(tQEuO0t zE8-C5(bWePooY7V3w0FMpqd)@BRzJrMU5{a3Il1X7$dpt}x*H8<9Wd?69l74!y0@xkh*-+)kU?`G#@FHO`^ zTV4S!Kkh1YuX-j51EXexs9DW0C*uGBJ*m` zMw!Y|i>mHM6L;r;SHRMUZ+o|SwfnI5D(C6b0;-oU`*!*<<7B!`T<3{xixW9= zzvU9YaTLHrigr{SKc$=cY!ijh(|cHVF<~wAS7gUh3&_$OBxOaHbjF`fakSlHEQzQ; zU8?+Xk?q7Wc}}yGK)eKeu=_LLqTnS=&7O*+`u9#9k^t>4c*4ge&`VotU-aqNn6)qA z0-o=;=8|p(*RO(~NfV6g4v!jKe!)I`9Tz|7aHpR-Edli)BH z{eK|;8xh->JC<+wg5-wF`gU6`{f3tS?)k*q%g;mseKm=j69h5@e;VJGa$2uPX=!Qu z%ff5_`S1b+QeIs8^e59m$0Q4hNOb-?jezm9g234sfoQ3nLkStx8#XqOH%hK+4*%qY z3g_Ly!Z9B&cn)Vj(#sy^AKhhMre Q=20euzA5~Tu4B}{07%>*XaE2J literal 0 HcmV?d00001 From 245816cb84360b4579523bdbfbec87c654602515 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 22:26:48 -0400 Subject: [PATCH 25/48] adding plantuml files --- testing/packages_initial.puml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 testing/packages_initial.puml diff --git a/testing/packages_initial.puml b/testing/packages_initial.puml new file mode 100644 index 00000000..6e3f7ce9 --- /dev/null +++ b/testing/packages_initial.puml @@ -0,0 +1,11 @@ +@startuml packages +set namespaceSeparator none +package "testing" as testing #aliceblue { +} +package "testing.authTests" as testing.authTests #aliceblue { +} +package "testing.coreTests" as testing.coreTests #aliceblue { +} +package "testing.dbTests" as testing.dbTests #aliceblue { +} +@enduml From 91c5361727b7489116ea39fe0747aa94306ce9fe Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 22:28:19 -0400 Subject: [PATCH 26/48] adding plantuml files --- testing/packages_initial.png | Bin 0 -> 3845 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 testing/packages_initial.png diff --git a/testing/packages_initial.png b/testing/packages_initial.png new file mode 100644 index 0000000000000000000000000000000000000000..fa59ed070b6d9b38a291cfbdf6640e531cad3d3f GIT binary patch literal 3845 zcmeHK`9G9x7bi=WFePItTg<2?#unKdMog9=J<7ffDq|mejU{4|C1WWJ8nUH4*6d2w z^u!R^h7vNEu^YR0dV1c^`_udW1@ABSxj)zEzRz{8@AsVRd=Jjd)PRRego}xZi3ec_ zzrn{o5E9Z=Vpfs~d*Nz}3su&k5s-l5h@@xP!s?_^U&q zK4>Q|On@g^&c)j^@bgD;CMIUFyEkuR{=Lq`%wlp@Ycx)ajKD;#F^Ev4EsE)kt-?IdY=_4j*^+5RpYMN^Eep5WA9$#IS>yWD1ZFo z0qTeh@*SGe_4GjX;CV18g35`(o~8SN3eN?luO#?s{~6+R-ehng^D0KK;xX;*8K2Ja zl)M4cGPx#JHA{~rfS4A&o^8V}6{Jw`%9{g1tG+w|h__x&DFX2Y*ex&CK?Yn+wKv?346kIBBDZzOgksNuO&mcB4(uC+T6@;U|J< zjmwi$2QBmm{4(G#$6x?fn3*mYj)!3Zto8i5r=uh|qE4OuFE-UAP7K%Sw;o^V$F1nU zmf(8Nt!}2IJ|Q7tdWk1lhD(Um@l;+r3ZJZkE+dE~b`P@mI9po=50wr%lgH0x0TNE1 zULF-s5c5#TejA9DceUFE3mP@;0TC7M4WOlsVu83ZK}MMBX20zXIXv^nK%}G zKBnrvh~CcH_>(6me3>cf8UO5Kh@XKwo-#q9+;BrdvPrS?73n+NftQh=}@HFDZc=;LbrBewL_B7>HFOWG8; zvhviCbPiX@n+Q%94M-70dgf9H3RGK^$YOkst_pZBWZ6SV8v#o57Cwjbl4{>{1IJ-E zsQej{WA}P(jA&);fiF#svvR)Cij?5^4y9S6#f61-*8*e?#IbGU^G6ET3!~JEI<#;= zuuGVz_frE)=dgt<@1*DYS9ZSoNwI({uDiz-ieyM;USrWbFpg?0=OvkWtZrpT3Flu+ zqI@YC%zLjV7Q9`d=Wy1Ys*g-PA*^1e7t70Xoab}m=}zHx>+4$$ejQ`}eHupvcvJP| zsETs$u#A9wg8~~`T_ZBL#jYW+d9C!-Pq|(9;s85sjftDKwwL6j9<13it5yA!(_GB< zr>t0nZtZ`l;YW*lZ@RuxtI0{D8qb_8t8SI3)e@HH4EJojOf&J@o>v{L^h1g(q_|!7 z`IZ+emeo0SL1Z~=zx$h{UI}4NvkE1r6HN%Bv|18$0?#(vY#peY64KqY;5iY4<}_~S zalBI|Vg^uSXRa*lifBM~^SzzY!foykrL{ur{(MG9{eU{u(Awg$err84e4;9vHFLwXg*xMnh_V;N1LSsJf zsZG+O3Tdn)l;g$z`B-EYgF896{SwG5(=4^iY zY}M<49Z1=C6-|wPypxsv6@SP05cVm@9>)|K9j;iYyOhS+r zk{b&O1^xvxU6bgj!Qox)W%JjV;D`

qpb)p1P@d6}Z zq35kMg`eesV*Qy9F_;aP!iA z)MAID1|$Tm8(SdQULtcG>^sIF%*tU;q-L<__zOaUqo=#nQj%!=;WB)gHrX}#xJnsY z*OY$6pdK1$flM?9`|=YJ7r4ER3CJ?7(TKIiPqHUMQV>=p7Rb)X&bbN0tRS7I0N0nc z>$=pe<4g4-7`#gKAY{{bgyK5RZ;Bv?YAc7EeNQJH@RobpUZ9KLt54JQFV@~ z7s3*T4zrF#px<^jBeJpCz1aSr8!YPIo4nH5@zoKge)I4 z$(-rmrIG1c-Q+gI4CeXd1kVXZqyvK>0!}WAzR0&yX^O?%E1ztpWRA8hN`(URDl4HB z5{qHM9WdFaWHocqOGr7GW3NMM95#WrNj)f9f<2@>jioI!F1fSvj*i8fNymi^625-uBWY@`Rw_eVChy!N7}JT8^gi>)}xtE@t&4ASXeZ4Ic5R;K-+ z-B7#I&$7)p+nU&Oo{SF(r$p) z_k!%L@-HPaKl=r{l&Z#S8C4GwBV?*Eu3UbkrUGi`M!;&>fKs1!teEPr%6(tQEuO0t zE8-C5(bWePooY7V3w0FMpqd)@BRzJrMU5{a3Il1X7$dpt}x*H8<9Wd?69l74!y0@xkh*-+)kU?`G#@FHO`^ zTV4S!Kkh1YuX-j51EXexs9DW0C*uGBJ*m` zMw!Y|i>mHM6L;r;SHRMUZ+o|SwfnI5D(C6b0;-oU`*!*<<7B!`T<3{xixW9= zzvU9YaTLHrigr{SKc$=cY!ijh(|cHVF<~wAS7gUh3&_$OBxOaHbjF`fakSlHEQzQ; zU8?+Xk?q7Wc}}yGK)eKeu=_LLqTnS=&7O*+`u9#9k^t>4c*4ge&`VotU-aqNn6)qA z0-o=;=8|p(*RO(~NfV6g4v!jKe!)I`9Tz|7aHpR-Edli)BH z{eK|;8xh->JC<+wg5-wF`gU6`{f3tS?)k*q%g;mseKm=j69h5@e;VJGa$2uPX=!Qu z%ff5_`S1b+QeIs8^e59m$0Q4hNOb-?jezm9g234sfoQ3nLkStx8#XqOH%hK+4*%qY z3g_Ly!Z9B&cn)Vj(#sy^AKhhMre Q=20euzA5~Tu4B}{07%>*XaE2J literal 0 HcmV?d00001 From 6daeff3dbe267952e725e5a0b5bd2b11f37b73a6 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 22:29:05 -0400 Subject: [PATCH 27/48] addin --- testing/packages.puml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 testing/packages.puml diff --git a/testing/packages.puml b/testing/packages.puml new file mode 100644 index 00000000..6e3f7ce9 --- /dev/null +++ b/testing/packages.puml @@ -0,0 +1,11 @@ +@startuml packages +set namespaceSeparator none +package "testing" as testing #aliceblue { +} +package "testing.authTests" as testing.authTests #aliceblue { +} +package "testing.coreTests" as testing.coreTests #aliceblue { +} +package "testing.dbTests" as testing.dbTests #aliceblue { +} +@enduml From d73ef94c31e245a532bf8e95c423e255bec45d37 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 22:39:03 -0400 Subject: [PATCH 28/48] adding diagrams for use cases --- core/classes.puml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/core/classes.puml b/core/classes.puml index 9c62d774..fd268d26 100644 --- a/core/classes.puml +++ b/core/classes.puml @@ -20,5 +20,26 @@ class "UserSession" as core.session.UserSession #aliceblue { submit_cart() -> None update_item_quantity(id: str, change_to_quantity: int) -> None update_total_cost() -> None + delete_cart(id:str) -> None +} +class "UserFilter" as core.session.UserFilter #aliceblue{ + db : Database + result : array + filterByRatingHigh() -> array + filterByRatingLow() -> array + filterByGenre(genre:str) -> array + filterByDate(date:str) -> array + filterByStars(stars:int) ->array + filterByDateOld() -> array + filterByDateNew() -> array +} +class "Game" as core #aliceblue{ + title: String + price : float + rating: int + genre: String + cover: String + date: datetime + getters&setters() } @enduml From 9089da30f7211338298f2f267c438141e22475f9 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 22:39:58 -0400 Subject: [PATCH 29/48] adding diagrams for use cases --- core/classes.png | Bin 0 -> 57516 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 core/classes.png diff --git a/core/classes.png b/core/classes.png new file mode 100644 index 0000000000000000000000000000000000000000..aaf92c894e379098d58cc855800e433007a6f6d6 GIT binary patch literal 57516 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 Date: Tue, 9 May 2023 22:42:49 -0400 Subject: [PATCH 30/48] adding diagrams for use cases --- diagrams/cases/users.puml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 diagrams/cases/users.puml diff --git a/diagrams/cases/users.puml b/diagrams/cases/users.puml new file mode 100644 index 00000000..9acc0b04 --- /dev/null +++ b/diagrams/cases/users.puml @@ -0,0 +1,15 @@ +@startuml rectangle +left to right direction +actor User +rectangle "Managament" as management{ +(Login) + (Register) + (View Cart) + (View Items) + (View Orders) + (View Profile) + (Filter by Preference) + (Logout) +} +User -> (Login) +@enduml From f8a3822af2c0ac3903078c80dfaf086c8c4acb37 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 22:43:28 -0400 Subject: [PATCH 31/48] adding diagrams for use cases --- diagrams/cases/users.png | Bin 0 -> 22517 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 diagrams/cases/users.png diff --git a/diagrams/cases/users.png b/diagrams/cases/users.png new file mode 100644 index 0000000000000000000000000000000000000000..054f9e68deef76e1aa3a93cd71603d9f48ec18fd GIT binary patch literal 22517 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 Date: Tue, 9 May 2023 22:44:20 -0400 Subject: [PATCH 32/48] Create cases --- diagrams/cases/cases | 1 + 1 file changed, 1 insertion(+) create mode 100644 diagrams/cases/cases diff --git a/diagrams/cases/cases b/diagrams/cases/cases new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/diagrams/cases/cases @@ -0,0 +1 @@ + From e90afcefe83d088dbfb25561856c6ffe4cc2bf8c Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 22:46:33 -0400 Subject: [PATCH 33/48] adding diagrams for use cases --- diagrams/cases/cases | 1 - diagrams/cases/management.puml | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) delete mode 100644 diagrams/cases/cases create mode 100644 diagrams/cases/management.puml diff --git a/diagrams/cases/cases b/diagrams/cases/cases deleted file mode 100644 index 8b137891..00000000 --- a/diagrams/cases/cases +++ /dev/null @@ -1 +0,0 @@ - diff --git a/diagrams/cases/management.puml b/diagrams/cases/management.puml new file mode 100644 index 00000000..1e724835 --- /dev/null +++ b/diagrams/cases/management.puml @@ -0,0 +1,15 @@ +@startuml rectangle +left to right direction +actor Managament +rectangle "Users" as User{ +(Login) + (Register) + (View Cart) + (View Items) + (View Orders) + (View Profile) + (Filter by Preference) + (Logout) +} +User -> (Login) +@enduml From c28deea59e96678dd059dd0bf66e12cca9fa3ed1 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 22:48:09 -0400 Subject: [PATCH 34/48] adding diagrams for use cases --- diagrams/cases/managment.png | Bin 0 -> 22842 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 diagrams/cases/managment.png diff --git a/diagrams/cases/managment.png b/diagrams/cases/managment.png new file mode 100644 index 0000000000000000000000000000000000000000..5b161e725430bc0c2088173f8f7b1cfbb3d36001 GIT binary patch literal 22842 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� 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 Date: Tue, 9 May 2023 22:51:18 -0400 Subject: [PATCH 35/48] adding diagrams for use cases --- diagrams/cases/admin.puml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 diagrams/cases/admin.puml diff --git a/diagrams/cases/admin.puml b/diagrams/cases/admin.puml new file mode 100644 index 00000000..423b0652 --- /dev/null +++ b/diagrams/cases/admin.puml @@ -0,0 +1,16 @@ +@startuml rectangle +left to right direction +actor Admin +rectangle "Management" as Management{ + (Register User) + (Refund User) + (Purchase User) + (Add Movies User) +} +Admin --> (Register User) +Admin --> (Refund User) +Admin --> (Purchase User) +Admin --> (Add Movies to Database) +(Purchase User)---(Add Movies to Database) + +@enduml From 72ef09f0212e9faa355cdffa4ec42542d0ca9e67 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 22:59:26 -0400 Subject: [PATCH 36/48] Update management.puml --- diagrams/cases/management.puml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/diagrams/cases/management.puml b/diagrams/cases/management.puml index 1e724835..705de76f 100644 --- a/diagrams/cases/management.puml +++ b/diagrams/cases/management.puml @@ -12,4 +12,23 @@ rectangle "Users" as User{ (Logout) } User -> (Login) +User --> (Register) +User --> (View Cart) +User --> (View Online Games) +User --> (View Genres) +User --> (View Profile) +User --> (Filter by Preference) +User --> (Logout) +User --> (Refund) +User --> (Purchase) +Admin -->(Register):Will add user to the database and save credentials +Admin -->(Purchase):Will complete purchase and recieve the game data accordingly +Admin -->(Refund):Will give money back to the user +rectangle "Checkout" as checkout{ +User--(checkout) +(checkout) .> (purchase) : include +(paymentinfo) .> : allows purchase +} + +@enduml @enduml From c077cd7becca114e36eaccc3926de4946c2694f2 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 23:04:18 -0400 Subject: [PATCH 37/48] adding core use-case sequence diagrams --- diagrams/sequences/login.puml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 diagrams/sequences/login.puml diff --git a/diagrams/sequences/login.puml b/diagrams/sequences/login.puml new file mode 100644 index 00000000..25dce6d4 --- /dev/null +++ b/diagrams/sequences/login.puml @@ -0,0 +1,18 @@ +@startuml login +actor Customer +boundary "System" as system +control "Sessions" as sessions +control "Authentication" as auth +Customer -> system: Login +activate system +system -> auth: login_pipeline(username, password) +activate auth +auth --> system: True +deactivate auth +system -> sessions: add_new_session(username, db) +activate sessions +sessions --> system: None +deactivate sessions +system -> system: redirect to home page +deactivate system +@enduml From aa145b94705609e46f68b171f07e056a56769d32 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 23:04:53 -0400 Subject: [PATCH 38/48] adding core use-case sequence diagrams --- diagrams/sequences/login.png | Bin 0 -> 19138 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 diagrams/sequences/login.png diff --git a/diagrams/sequences/login.png b/diagrams/sequences/login.png new file mode 100644 index 0000000000000000000000000000000000000000..7d190dc86de134783d7a7996ba8ecfba3c97cde9 GIT binary patch literal 19138 zcmc({Wmr{R7dE<)(hY(lp`aj$bf|!UlprDv0-H{ikXE`8MOr{gKvHtkDWHUa0f=-; zhlF%D-`L<2@B5w~-#LHIb3K<_d+)X8T63;3$GGo%jIsO_aU}%e z1U>?RWqtAleDjV_!599p*xpsQeQ0IvWNv6=i@0ZKY53H@*6`8g2TqqwY;CP=ZgFy2 zn;Tf#+F6)$JhZZ~|ItVTL%2OwQMdi;djuAYt|jry7~JtO4gsGe7K>n zC?16MP2>nhNW_($zyQz4W3xoc&T6(y0Un`0qx%S#3=lo(0+q zlzns1&96Yre_DKx)+hOD7~bmAG(kMJ+}ao{+AaBjfc<`NtSw&uv+uKuleB@2;`#kaV-4QMYD{@%J(klN+6Fe>#@lA&3~ zEi&eja9j(lzkuUSjKWkJIMH-D?pD!bij^nlUR<}xeuy5E?AqO2)A!BYP+^C&mzBlIa34xGoloA(J zanzlUJLO1rw_>yI+hy8QgtV8XZr{G_Nq2(slc73^we7D$zms_9U$U0v2RffU!#!sp zBiS4J8TVx<4>rY_r8|oERSi*I*|dJo@-NgW9do5h~_Hc2AQNf`S z)rIO>uR6@_aC>?}8=iNK&WSA?`0Gxn0+0XpSw&p zeg@e$+z-D5KK%M>IU0W5B0r}>%e5LcT6gdJ+wJ?BnyN;>u9mhPd~`~9MJ@DeZKlH& zV^3AJJ?MOw&G^kBswZRh{8GddTFyJ$ZSTG=3|A*`;=v6tZmE#nxKSuc68_-waA6@w z&;>3cR`}r>?r>&poIq~U9g$YetKZ%S1`@#KN1L$WCu;cV8Mcp6%Yk?%7W!wccR(<; zP@@`LutwiC9qH$%JQ*DI`KRAGW22V%=D)wca*u)OU3GV4oEtwgvtJ%;AJ0!)@?;W$ z=hFiZG__Q_uV%n^TQK^GZrE-5ZZMW(F3h6)s{`88Aq0lsf#a9lV3G2LtCVpms(un8 z5RqTg(Id5oqHwO+xEacN)FbT#!qfY@DB1b;Mb@?HWrw{g_)Q(BLq+t&undg%8-ap< z6>wa2nHNLKR$Msaj1eM69x+VhtnK>1+{I zcyPB1wwAxr^yFxLO+Ue7ejW3bXVgH2omp?b!D&kFZ_Uk<7PmiTYZN6XCm)~T$vZJQ z$zwGnC@AP!C3dVNwYeVWWSnYzfK_>ws(H#WvS);_=1)SW3a!#n&CwxJu7g|VWEseyKHUI zgOi5Gbnjc}spaMIY0i0NWNH{0!ffStUU`XG4-ql3ap)_tA%R803tUEf?WwG*D;%rk z`>`@nE3-XTis|w?H&u&O6AKExWABjJD$>ab*-lUA8(jJNDsFEwN}!yEDV0>3k#%x3 z085|cy%ojW�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 Date: Tue, 9 May 2023 23:06:01 -0400 Subject: [PATCH 39/48] adding core-use case sequence diagrams --- diagrams/sequences/purchase.puml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 diagrams/sequences/purchase.puml diff --git a/diagrams/sequences/purchase.puml b/diagrams/sequences/purchase.puml new file mode 100644 index 00000000..1bc75676 --- /dev/null +++ b/diagrams/sequences/purchase.puml @@ -0,0 +1,19 @@ +@startuml purchase +actor Customer +boundary "System" as system +control "Authentication" as auth +control "Database" as db +Customer -> system: Add to cart +activate system +system -> auth: purchase_videogame +activate auth +system --> auth: Add payment info +auth--> system: Verified credentials +deactivate auth +activate db +system --> db : parse JSON into db +db --> system : Added information +deactivate db +system -> system: redirect to home page +deactivate system +@enduml From f99ca5b5a38e06e183c06ac258b04c0a26ff2179 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 23:17:03 -0400 Subject: [PATCH 40/48] adding core use-case sequence diagrams --- diagrams/sequences/purchase.png | Bin 0 -> 17314 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 diagrams/sequences/purchase.png diff --git a/diagrams/sequences/purchase.png b/diagrams/sequences/purchase.png new file mode 100644 index 0000000000000000000000000000000000000000..6ab296243d83f5a13e0de31ae7acd434031ae52d GIT binary patch literal 17314 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 Date: Tue, 9 May 2023 23:18:04 -0400 Subject: [PATCH 41/48] adding core-use case sequence diagrams --- diagrams/sequences/refund.puml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 diagrams/sequences/refund.puml diff --git a/diagrams/sequences/refund.puml b/diagrams/sequences/refund.puml new file mode 100644 index 00000000..4a843964 --- /dev/null +++ b/diagrams/sequences/refund.puml @@ -0,0 +1,21 @@ +@startuml refund +actor Customer +boundary "System" as system +control "User Profile" as profile +control "Confirmation" as confirm +control "Database" as db +Customer -> system: Refund +activate system +activate confirm +system -> confirm: Are you sure you want to refund +confirm->system:Yes +activate db +system-->db: Add money to users amount +db-->system:Added money to users amount +activate profile +db-->profile:add money to users account +deactivate profile +deactivate db +system -> system: redirect to home page +deactivate system +@enduml From 2adff178e833ed5e628b73ed736d8c0e59e0ebc4 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 23:18:38 -0400 Subject: [PATCH 42/48] adding core use-case sequence diagrams --- diagrams/sequences/refund.png | Bin 0 -> 23755 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 diagrams/sequences/refund.png diff --git a/diagrams/sequences/refund.png b/diagrams/sequences/refund.png new file mode 100644 index 0000000000000000000000000000000000000000..d46140687033f88f05ce394ddff96216159f3e9e GIT binary patch literal 23755 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 Date: Tue, 9 May 2023 23:19:16 -0400 Subject: [PATCH 43/48] adding core-use case sequence diagrams --- diagrams/sequences/register.puml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 diagrams/sequences/register.puml diff --git a/diagrams/sequences/register.puml b/diagrams/sequences/register.puml new file mode 100644 index 00000000..f11dd464 --- /dev/null +++ b/diagrams/sequences/register.puml @@ -0,0 +1,20 @@ +@startuml register +actor Customer +boundary "System" as system +control "Sessions" as sessions +control "Authentication" as auth +control "Database" as db +Customer -> system: Register +activate system +activate auth +system -> db: register_user(id,username,password) +activate db +db --> system: Added User to Database +deactivate db +deactivate auth +system -> sessions: add_new_session(username, db) +activate sessions +sessions --> system: Session Added +system -> system: redirect to home page +deactivate system +@enduml From c46250cf0798ff84d54fd87d2073e651c870e3e2 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 23:20:11 -0400 Subject: [PATCH 44/48] adding core use-case sequence diagrams --- diagrams/sequences/register.png | Bin 0 -> 22779 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 diagrams/sequences/register.png diff --git a/diagrams/sequences/register.png b/diagrams/sequences/register.png new file mode 100644 index 0000000000000000000000000000000000000000..ce2f6a7fa832a84dc23f25c400aff80b1b26e682 GIT binary patch literal 22779 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 literal 0 HcmV?d00001 From 7f6e196f61dbb9b67ba4e204c1e0d814c9299643 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 23:23:06 -0400 Subject: [PATCH 45/48] added filter use-case diagram --- diagrams/sequences/filterGames.puml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 diagrams/sequences/filterGames.puml diff --git a/diagrams/sequences/filterGames.puml b/diagrams/sequences/filterGames.puml new file mode 100644 index 00000000..69b7b6fd --- /dev/null +++ b/diagrams/sequences/filterGames.puml @@ -0,0 +1,18 @@ +@startuml filterGames +actor Customer +boundary "Website" as system +control "REST API" as API +control "Database" as db +Customer -> system: Filter by Condition +activate system +system -> API : HTTP get method to get a array of games +activate API +API-->db:Get information about a game with a certain condition +activate db +db--> API: retrive games by query +deactivate db +API-> system:Show results of the users condition +deactivate API +system -> system:showcase the video games that met the users condition +deactivate system +@enduml From dc567f1552fb0301b4f52d7a1404fd375512d333 Mon Sep 17 00:00:00 2001 From: Vishal Dasari <123045538+vishaldasari1@users.noreply.github.com> Date: Tue, 9 May 2023 23:23:28 -0400 Subject: [PATCH 46/48] adding filter use-case diagram --- diagrams/sequences/filterGames.png | Bin 0 -> 29010 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 diagrams/sequences/filterGames.png diff --git a/diagrams/sequences/filterGames.png b/diagrams/sequences/filterGames.png new file mode 100644 index 0000000000000000000000000000000000000000..64f467e869046826ca02db85e10106d33e2f05be GIT binary patch literal 29010 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 Date: Wed, 10 May 2023 02:06:16 -0400 Subject: [PATCH 47/48] adding implementation.md --- implementation.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 implementation.md diff --git a/implementation.md b/implementation.md new file mode 100644 index 00000000..2e615a8e --- /dev/null +++ b/implementation.md @@ -0,0 +1,23 @@ +# Project 3: Implementation + +## Introduction + +The exciting part of the project has finally come. It is now time to implement the features you planned in the previous phase. In all likelihood, this will require a massive amount of work. That's why it is important to begin by planning the smaller changes you can make, divide these among your group, and work together to implement them. This process is repetitive, taking on larger and larger tasks as you go. The tasks listed below are not necessarily meant to be performed in sequence. They are, instead, a list of what we will be looking for when evaluating your implementation. Beyond just functionality, your project's code should be readable and well documented. + +## Task 1: Code Style Guides + +- Python files should be written in `lower_snake_case.py` format. +- Global variables and constants should be written in `UPPER_SNAKE_CASE`. +- Class names should be written in `UpperCamelCase`. +- Method and local variable names should be written in `lower_snake_case`. + +## Task 2: Documentation Guides + +- All classes, methods, and functions should be documented using the docstring format shown throughout the template codebase. +- After implementing a feature, be sure to update the relevant `plantuml` and `png` files in all respective subdirectories. +- Commit messages should be written to be descriptive of the changes made and the feature implemented. When writing code for a specific requirement from the `SRS.md`, you should use the requirement's ID in your commit message. + +## Submission Details + +- On Canvas, submit the following: + - the URL to your group's repository From bc23d0da4043e9ef4d8b40dfd68e5197f9580db6 Mon Sep 17 00:00:00 2001 From: Vishal Dasari Date: Wed, 10 May 2023 17:52:02 -0400 Subject: [PATCH 48/48] final update --- app.py | 2 +- authentication/authTools.py | 1 + database/Contact.html | 47 +++++ database/Game-store.html | 364 ++++++++++++++++++++++++++++++++++++ database/Shipping.html | 82 ++++++++ database/cart.html | 155 +++++++++++++++ database/login.html | 66 +++++++ database/schema.sql | 16 +- database/signup.html | 26 +++ database/startingData.sql | 21 +-- database/style.css | 73 ++++++++ presentation.md | 7 + 12 files changed, 842 insertions(+), 18 deletions(-) create mode 100644 database/Contact.html create mode 100644 database/Game-store.html create mode 100644 database/Shipping.html create mode 100644 database/cart.html create mode 100644 database/login.html create mode 100644 database/signup.html create mode 100644 database/style.css create mode 100644 presentation.md diff --git a/app.py b/app.py index adcee448..68e86d50 100644 --- a/app.py +++ b/app.py @@ -2,7 +2,7 @@ from authentication.authTools import login_pipeline, update_passwords, hash_password from database.db import Database -from flask import Flask, render_template, request +from flask import Flask, flash, render_template, request from core.session import Sessions app = Flask(__name__) diff --git a/authentication/authTools.py b/authentication/authTools.py index e9b8f933..91061c50 100644 --- a/authentication/authTools.py +++ b/authentication/authTools.py @@ -107,6 +107,7 @@ def login_pipeline(username: str, password: str) -> bool: if line.split(":")[0] == username: salt = line.split(":")[1] key = line.split(":")[2] + return check_password(password, salt, key) return False diff --git a/database/Contact.html b/database/Contact.html new file mode 100644 index 00000000..b0571f87 --- /dev/null +++ b/database/Contact.html @@ -0,0 +1,47 @@ + + + + Customer Support and Contact Information + + + + + +

+

Customer Support and Contact Information

+
+ +
+
+

Contact Us

+

If you need any help with purchasing or rental issues, please feel free to contact us:

+
    +
  • Email: support@mygamestore.com
  • +
  • Phone: 1-800-MY-GAMES (1-800-694-2637)
  • +
  • Live Chat: Click the chat icon in the bottom right corner
  • +
+
+ +
+

FAQs

+

Here are some frequently asked questions:

+
    +
  1. How can I cancel an order?
    You can cancel an order by logging into your account and going to the order history page. If the order hasn't shipped yet, you can cancel it from there.
  2. +
  3. How can I return a game?
    You can return a game within 30 days of purchase. Log into your account, go to the order history page, and click on the "return" button next to the game you want to return.
  4. +
  5. How can I check the status of my order?
    You can check the status of your order by logging into your account and going to the order history page. The status of each order will be displayed there.
  6. +
+
+
+ +
+

© 2023 MyGameStore. All rights reserved.

+
+ + \ No newline at end of file diff --git a/database/Game-store.html b/database/Game-store.html new file mode 100644 index 00000000..87360aae --- /dev/null +++ b/database/Game-store.html @@ -0,0 +1,364 @@ + + + + My Game Store + + + + +
+ + + +
+ +
+

Welcome to My Game Store

+

Discover and play the latest video games

+ +
+
+ + +
+
+

Featured Games

+
+
+ Ghost of Tsushima +

Ghost of Tsushima

+

Price: $59.99

+ +
+
+ Assassin's Creed Valhalla +

Assassin's Creed Valhalla

+

Price: $49.99

+ +
+
+ Cyberpunk 2077 +

Cyberpunk 2077

+

Price: $39.99

+ +
+
+
+
+ + +
+

Our Games

+
+
+ +

God of war

+

Price: $19.99

+ +
+
+

Rate and Review Game

+
+ + +
+ + +
+ +
+
+
+ FIFA 23 +

FIFA 23

+

Price: $22.99

+ +
+
+

Rate and Review Game

+
+ + +
+ + +
+ +
+
+ + +
+
+ +
+ +
+

About Us

+

We are a team of gamers who love to share our passion with others. Our goal is to provide a great selection of games at affordable prices, and to offer the best customer service possible.

+
+ + + + + +
+
+ + +
+
+ + + + \ No newline at end of file diff --git a/database/Shipping.html b/database/Shipping.html new file mode 100644 index 00000000..c78486a4 --- /dev/null +++ b/database/Shipping.html @@ -0,0 +1,82 @@ + +
+

Enter Shipping Information

+
+ +
+ + +
+ + +
+ + +
+ + +
+ + + +
+ + \ No newline at end of file diff --git a/database/cart.html b/database/cart.html new file mode 100644 index 00000000..245cc79c --- /dev/null +++ b/database/cart.html @@ -0,0 +1,155 @@ + + +
+

Cart Items

+
    +
    + + + + +
    +
    +

    Enter Shipping Information

    +
    + +
    + + +
    + + +
    + + +
    + + +
    + + +
    +
    +
    + + \ No newline at end of file diff --git a/database/login.html b/database/login.html new file mode 100644 index 00000000..e3a03d34 --- /dev/null +++ b/database/login.html @@ -0,0 +1,66 @@ + + + + Login Page + + + +

    Login

    +
    + + + + + +
    +

    Don't have an account? Sign up

    + + diff --git a/database/schema.sql b/database/schema.sql index 0f874ee8..94a744fd 100644 --- a/database/schema.sql +++ b/database/schema.sql @@ -1,5 +1,5 @@ CREATE TABLE inventory ( - id INTEGER PRIMARY KEY AUTOINCREMENT, + id INTEGER PRIMARY KEY, item_name VARCHAR(255) NOT NULL, info VARCHAR(255) NOT NULL, price DECIMAL(10,2) NOT NULL, @@ -9,6 +9,7 @@ CREATE TABLE inventory ( ); CREATE TABLE users ( + user_id SERIAL PRIMARY KEY, username VARCHAR(255) PRIMARY KEY NOT NULL, password_hash VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, @@ -17,14 +18,25 @@ CREATE TABLE users ( ); CREATE TABLE sales ( - sale_id INTEGER PRIMARY KEY AUTOINCREMENT, + sale_id INTEGER PRIMARY KEY, transaction_id VARCHAR(255) NOT NULL, username VARCHAR(255) NOT NULL, item_id INTEGER NOT NULL, quantity INTEGER NOT NULL, sale_date DATETIME NOT NULL, cost DECIMAL(10,2) NOT NULL, + table_number INTEGER NOT NULL DEFAULT 0, FOREIGN KEY (username) REFERENCES users(username), FOREIGN KEY (item_id) REFERENCES inventory(id) ); +CREATE TABLE games ( + game_id SERIAL PRIMARY KEY, + title VARCHAR(255) NOT NULL, + description TEXT, + release_date DATE, + rating DECIMAL(3,2), + price DECIMAL(6,2) NOT NULL, + genre VARCHAR(50) NOT NULL +); + diff --git a/database/signup.html b/database/signup.html new file mode 100644 index 00000000..385faa7c --- /dev/null +++ b/database/signup.html @@ -0,0 +1,26 @@ + + +
    + +

    + + +

    + + +

    + + +

    + + +
    + + \ No newline at end of file diff --git a/database/startingData.sql b/database/startingData.sql index 19da65d3..0ea567e7 100644 --- a/database/startingData.sql +++ b/database/startingData.sql @@ -10,20 +10,11 @@ VALUES ('llamport', '9171d14954eeda4e70777c23d98e349818125cdaeb884ff97ebf8cc0a9c INSERT into `users` (`username`, `password_hash`, `email`, `first_name`, `last_name`) VALUES ('bliskov', '1e4b9ae956cad1385cfa6fffd8323dd16c3fe18c54e6447e49bddef2138d042e84e1505a541c6ef19a5026e684b2559efd366145870a0a8d4d4173c0877f6cd2', 'barbara@thor.com', 'Barbara', 'Liskov'); -INSERT into `inventory` (`item_name`, `info`, `price`, `stock`, `image_url`, `category`) -VALUES ('Apples', 'An edible cultivation of the Malus genus.', 2.00, 100, 'static/images/apple.jpeg', 'Fruit'); +INSERT INTO games (title, description, release_date, rating, price, genre) +VALUES ('Super Mario Odyssey', 'Join Mario on a massive, globe-trotting 3D adventure!', '2017-10-27', 4.7, 59.99, 'Action, Adventure'), -INSERT into `inventory` (`item_name`, `info`, `price`, `stock`, `image_url`, `category`) -VALUES ('Bananas', 'A long curved fruit which grows in clusters and has soft pulpy flesh and yellow skin when ripe.', 1.00, 100, 'static/images/banana.jpeg', 'Fruit'); +INSERT INTO games (title, description, release_date, rating, price, genre) +VALUES ('The Legend of Zelda: Breath of the Wild', 'Climb cliffs to scope out a destination', '2017-03-03', 4.9, 59.99, 'Action, Adventure'), -INSERT into `inventory` (`item_name`, `info`, `price`, `stock`, `image_url`, `category`) -VALUES ('Mangos', 'The best fruit on the planet.', 4.00, 100, 'static/images/mango.jpeg', 'Fruit'); - -INSERT into `sales` (`transaction_id`, `username`, `item_id`, `quantity`, `sale_date`, `cost`) -VALUES ('1', 'aturing', '1', 10, '2022-12-21 7:30:30', 5.50); - -INSERT into `sales` (`transaction_id`, `username`, `item_id`, `quantity`, `sale_date`, `cost`) -VALUES ('2', 'dritchie', '2', 10, '2022-12-21 7:30:30', 5.50); - -INSERT into `sales` (`transaction_id`, `username`, `item_id`, `quantity`, `sale_date`, `cost`) -VALUES ('3', 'llamport', '3', 10, '2022-12-21 7:30:30', 5.50); +INSERT INTO games (title, description, release_date, rating, price, genre) +VALUES ('Animal Crossing: New Horizons', 'Build your community from scratch on a deserted island brimming with possibility', '2020-03-20', 4.8, 59.99, 'Simulation'); diff --git a/database/style.css b/database/style.css new file mode 100644 index 00000000..db015d67 --- /dev/null +++ b/database/style.css @@ -0,0 +1,73 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'Montserrat', sans-serif; + background-image: url('background-image.jpg'); + background-repeat: no-repeat; + background-size: cover; +} + +.container { + width: 400px; + margin: 50px auto; + background-color: #fff; + border-radius: 5px; + padding: 20px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); +} + +h1 { + text-align: center; + margin-bottom: 20px; + color: #333; +} + +.form-group { + margin-bottom: 20px; +} + +label { + display: block; + margin-bottom: 5px; + color: #333; +} + +input[type="text"], +input[type="password"] { + width: 100%; + padding: 10px; + border-radius: 5px; + border: none; + box-shadow: 0 0 5px rgba(0, 0, 0, 0.1); + font-size: 16px; + color: #333; +} + +.btn { + display: block; + width: 100%; + padding: 10px; + border-radius: 5px; + border: none; + background-color: #4CAF50; + color: #fff; + font-size: 16px; + cursor: pointer; + transition: background-color 0.3s ease; +} + +.btn:hover { + background-color: #3e8e41; +} + +.icon { + position: absolute; + top: 12px; + left: 10px; + color: #999; + font-size: 18px; +} diff --git a/presentation.md b/presentation.md new file mode 100644 index 00000000..5a4e53f6 --- /dev/null +++ b/presentation.md @@ -0,0 +1,7 @@ +# Group Project Presentation Rubric + +| | Excellent | Good | Poor | +| --- | --- | --- | --- | +| Project Goal (12 points) | Clear, well thought out, and well explained (7-12 points) | Somewhat clear, but needs more explanation (1-6 points) | Not clear at all (0 points) | +| Changes Made (28 points) | Significant changes made (15-28 points) | Minor changes made (1-14 points) | No changes made (0 points) | +| Challenges (10 points) | Lists challenges faced and how they were overcome (6-10 points) | Lists challenges faced, but does not explain how they were overcome (1-5 points) | Does not list challenges faced (0 points) |