From 827c417b628066ef974b373786e72d9defc0a1da Mon Sep 17 00:00:00 2001 From: Frank802 <223556219+Copilot@users.noreply.github.com> Date: Thu, 16 Jul 2026 10:35:34 +0200 Subject: [PATCH 1/8] Add Agentic SDLC MicroHack under 03-Azure/01-04-AI/01_Agentic_SDLC Adapts the Agentic SDLC hackathon content into MicroHack template format: main Readme, 7 challenges + finish, 7 solution walkthroughs, and an images folder. Also indexes it from the AI area Readme. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: e0ea89bc-7f71-443f-a688-6f8b2b9b65af --- 03-Azure/01-04-AI/01_Agentic_SDLC/Readme.md | 121 ++++++++++++++++++ .../challenges/challenge-00.md | 39 ++++++ .../challenges/challenge-01.md | 36 ++++++ .../challenges/challenge-02.md | 34 +++++ .../challenges/challenge-03.md | 35 +++++ .../challenges/challenge-04.md | 32 +++++ .../challenges/challenge-05.md | 32 +++++ .../challenges/challenge-06.md | 35 +++++ .../01_Agentic_SDLC/challenges/finish.md | 15 +++ .../01-04-AI/01_Agentic_SDLC/images/README.md | 13 ++ .../walkthrough/challenge-00/solution-00.md | 45 +++++++ .../walkthrough/challenge-01/solution-01.md | 59 +++++++++ .../walkthrough/challenge-02/solution-02.md | 59 +++++++++ .../walkthrough/challenge-03/solution-03.md | 54 ++++++++ .../walkthrough/challenge-04/solution-04.md | 51 ++++++++ .../walkthrough/challenge-05/solution-05.md | 47 +++++++ .../walkthrough/challenge-06/solution-06.md | 61 +++++++++ 03-Azure/01-04-AI/Readme.md | 10 +- 18 files changed, 777 insertions(+), 1 deletion(-) create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/Readme.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-00.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-01.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-02.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-03.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-04.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-05.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-06.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/challenges/finish.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/images/README.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-00/solution-00.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-01/solution-01.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-02/solution-02.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-03/solution-03.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-04/solution-04.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-05/solution-05.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-06/solution-06.md diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/Readme.md b/03-Azure/01-04-AI/01_Agentic_SDLC/Readme.md new file mode 100644 index 000000000..74994a5d7 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/Readme.md @@ -0,0 +1,121 @@ +# **MicroHack: Agentic SDLC with GitHub Copilot & Azure** + +- [**MicroHack introduction**](#microhack-introduction) +- [**MicroHack context**](#microhack-context) +- [**Objectives**](#objectives) +- [**MicroHack challenges**](#microhack-challenges) +- [**Contributors**](#contributors) + +## MicroHack introduction + +This MicroHack walks a team through the **Agentic Software Development Lifecycle (SDLC)** — plan, implement, test, review, deploy, and operate with agents — using **GitHub Copilot**, **GitHub Actions**, and **Microsoft Azure**, applied end-to-end to a real full-stack application called **Octocat Supply**. + +Rather than treating an AI coding assistant as autocomplete, you practise driving *agents* across the whole lifecycle: refining requirements from organizational signal, planning multi-file changes, generating and hardening tests, reviewing code, deploying to Azure with Infrastructure as Code, monitoring with the Azure SRE Agent, and standing up agentic workflows that maintain the app over time. + +```mermaid +flowchart LR + A[Plan] --> B[Implement] + B --> C[Test] + C --> D[Review] + D --> E[Deploy to Azure] + E --> F[Operate / Monitor] + F --> G[Maintain] + G -.-> A + subgraph Agents + Copilot[GitHub Copilot / Copilot App] + Actions[GitHub Actions CI/CD] + SRE[Azure SRE Agent] + GHAW[GitHub Agentic Workflows] + end + Copilot --- A + Copilot --- B + Copilot --- C + Copilot --- D + Actions --- E + SRE --- F + GHAW --- G +``` + +This lab is **not** a full explanation of GitHub Copilot or Azure as technologies. The following are recommended pre-reading to build foundational knowledge: + +- [GitHub Copilot documentation](https://docs.github.com/en/copilot) +- [GitHub Actions documentation](https://docs.github.com/en/actions) +- [Azure Container Apps](https://learn.microsoft.com/en-us/azure/container-apps/) +- [Azure SRE Agent](https://learn.microsoft.com/en-us/azure/sre-agent/) + +> **Companion application repository.** This MicroHack is delivered against a companion repo that contains the **Octocat Supply** application, the challenge scaffolding, and the mock organizational knowledge (WorkIQ) used in Challenge 2: **[Frank802/agentic-sdlc-hack](https://github.com/Frank802/agentic-sdlc-hack)**. Facilitators create a copy/fork of that repo per team before the event; participants work in their team's copy throughout. All in-repo paths referenced below (e.g. `src/`, `hackathon/`, `infra/`) are paths **inside that companion repo**. + +## MicroHack context + +The Octocat team are behind schedule launching their new **Octocat Supply** application and are exploring Agentic Development practices to help them deliver the remaining features before deploying the full application to their Azure environment. Core functionality is still missing — like the shopping cart and other backlog items — and the testing and monitoring aren't yet up to Octocat standards for a reliable, secure application. + +You are given the existing application code and access to GitHub tools such as GitHub Copilot, and you complete the work by progressing through the challenges. The app is a full-stack supply chain platform with a **React + Vite + Tailwind** frontend and **four interchangeable API implementations** (TypeScript, C#, Python, Java) over a shared **SQLite** schema — pick whichever API language your team prefers; the challenges are language-agnostic. + +## Objectives + +After completing this MicroHack you will be able to: + +- Use GitHub Copilot to **plan and implement** features across a full-stack app while keeping changes scoped and consistent. +- Run an **agentic loop** — plan → implement → test → review — on a backlog item, including refining a requirement from ambient organizational signal. +- **Generate and extend tests** deliberately, choosing models and context budgets on purpose, and run an agent-assisted code review. +- **Deploy to Azure** with Infrastructure as Code and a GitHub Actions pipeline authenticated via OIDC — no secrets in source. +- Use the **Azure SRE Agent** to detect, diagnose, and remediate a fault in a deployed app. +- Stand up **GitHub Agentic Workflows** to maintain the application over time with clear triggers and guardrails. + +## MicroHack challenges + +### General prerequisites + +This MicroHack has a few but important prerequisites. Completing them before the session keeps the time focused on the differentiated, agentic work rather than setup. + +In summary: + +- A **GitHub account** with access to your team's copy of the companion repo and an **active GitHub Copilot seat** (Copilot Business/Enterprise, with Chat, agents, CLI, and MCP policies enabled). +- Either **GitHub Codespaces** (recommended — nothing to install) **or** local **VS Code** with the **Dev Container** plus the **GitHub Copilot / Copilot Chat** extensions. The container preinstalls **Node.js 24, Python 3.13, .NET 10, Java 17**. +- For **Challenges 4 & 5**, **Azure access**: + - An **Azure subscription** with budget. + - A **Resource Group** for the team. + - **Contributor** permissions on that scope (plus any roles the Azure SRE Agent needs on the monitored resources). + - A GitHub ↔ Azure **OIDC federated credential** for pipeline authentication. + - **Azure SRE Agent** available in the team's region/subscription. + +> Facilitators: work through the pre-event admin checklist (Copilot enablement, repo access, backlog issue seeding, Azure prerequisites) in the companion repo's Proctor Guide before running the event. + +### Challenges + +* [Challenge 0 - Dev environment, Copilot access & repo overview](challenges/challenge-00.md) **<- Start here** +* [Challenge 1 - Deliver a new feature (the cart)](challenges/challenge-01.md) +* [Challenge 2 - Add another feature from the backlog (agentic loop)](challenges/challenge-02.md) +* [Challenge 3 - Run and extend test coverage, and review code](challenges/challenge-03.md) +* [Challenge 4 - Deploy into Azure](challenges/challenge-04.md) +* [Challenge 5 - Monitor the deployed app with the Azure SRE Agent](challenges/challenge-05.md) +* [Challenge 6 - Implement agentic workflows to maintain the app](challenges/challenge-06.md) +* [Finish](challenges/finish.md) + +### Solutions - Spoilerwarning + +Do not open these before attempting the challenges — they contain guidance and worked approaches. + +* [Solution 0 - Dev environment & repo overview](walkthrough/challenge-00/solution-00.md) +* [Solution 1 - Deliver the cart feature](walkthrough/challenge-01/solution-01.md) +* [Solution 2 - Backlog feature (agentic loop)](walkthrough/challenge-02/solution-02.md) +* [Solution 3 - Testing & review](walkthrough/challenge-03/solution-03.md) +* [Solution 4 - Deploy into Azure](walkthrough/challenge-04/solution-04.md) +* [Solution 5 - Monitor with the Azure SRE Agent](walkthrough/challenge-05/solution-05.md) +* [Solution 6 - Agentic workflows](walkthrough/challenge-06/solution-06.md) + +## Suggested agenda + +A typical one-day delivery of this MicroHack: + +| Time | Activity | +| --- | --- | +| 09:00 – 10:00 | Tech Talk — Agentic SDLC overview | +| 10:00 – 12:30 | Hacking session — Challenges 0, 1, 2, 3 | +| 12:30 – 13:30 | Lunch break | +| 13:30 – 15:30 | Hacking session — Challenges 4, 5, 6 | +| 15:30 – 16:00 | Final discussion / Wrap-up | + +## Contributors + +* Frank ([GitHub](https://github.com/Frank802)) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-00.md b/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-00.md new file mode 100644 index 000000000..b07c5136b --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-00.md @@ -0,0 +1,39 @@ +# Challenge 0 - Dev environment, Copilot access & repo overview + +**[Home](../Readme.md)** - [Next Challenge](challenge-01.md) + +## Goal + +Configure your development environment, confirm GitHub Copilot access, and get familiar with the **Octocat Supply** application so the later challenges run without setup interruptions. + +The Octocat team is behind schedule and adopting Agentic Development practices. Before you can help deliver features, you need a working environment, Copilot enabled, and a clear picture of the codebase. + +## Actions + +* **Get the code** — Open your team's copy of the companion repo in **GitHub Codespaces** (recommended), a local **VS Code Dev Container** (`.devcontainer/`), or locally. Confirm you're on the intended working branch. +* **Verify runtimes** — Confirm the runtimes for your chosen API track are available (TypeScript, Python, .NET, or Java) plus Node.js for the frontend. In Codespaces / the Dev Container these are preinstalled. +* **Enable GitHub Copilot** — Sign in and confirm your Copilot entitlement is active in your IDE; install the GitHub Copilot / Copilot Chat extensions. +* **Explore the repo** — Review the structure: `src/` (the app), `docs/` (guidance), `hackathon/` (the challenges). Identify where the frontend, APIs, and database live. Read `src/README.md` for the code structure and build commands. +* **Run the app locally** — Start the frontend and one API to confirm the application builds and runs before you begin changing it. + +## Success criteria + +* Your team's repo copy is open in your environment and Copilot is active and responding in your IDE. +* You can build and run the frontend and at least one API locally. +* You can describe, at a high level, how the frontend, APIs, and database fit together. + +### Optional stretch — repo-wide agent context + +Give Copilot persistent, repo-wide context so later challenges start with your conventions loaded. + +* Create an `AGENTS.md` and/or `.github/copilot-instructions.md` recording coding conventions, naming, and preferred patterns. +* Record the exact **build and test commands** for your API track (and the frontend) so an agent can verify its own work. +* Add explicit **scope rules** (e.g. don't touch generated files, infra, unrelated services) to keep agent diffs minimal. +* In a fresh Copilot Chat, ask a question that relies on those conventions **without restating them** and confirm they're applied. + +## Learning resources + +* [Setting up GitHub Copilot](https://docs.github.com/en/copilot/quickstart) +* [GitHub Codespaces](https://docs.github.com/en/codespaces/overview) +* [Development Containers](https://containers.dev/) +* [Adding repository custom instructions for Copilot](https://docs.github.com/en/copilot/customizing-copilot/adding-repository-custom-instructions-for-github-copilot) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-01.md b/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-01.md new file mode 100644 index 000000000..f96a50084 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-01.md @@ -0,0 +1,36 @@ +# Challenge 1 - Deliver a new feature (the cart) + +**[Home](../Readme.md)** - [Previous Challenge](challenge-00.md) - [Next Challenge](challenge-02.md) + +## Goal + +Deliver a new feature for the Octocat Supply application by completing the incomplete shopping **cart** functionality, using GitHub Copilot to move fast while keeping the code consistent with the existing app. + +The shopping cart is incomplete and lacks payment integration, which is blocking the launch. The focus of this challenge is **using Copilot well** — giving it the right context and iterating — not just writing code. + +## Actions + +* **Understand the current state** — Review the existing cart-related code in the frontend and API. Use Copilot to explain what exists and what's missing. +* **Design the feature** — Decide the cart behaviours to implement: add item, update quantity, remove item, view cart total. +* **Implement the API** — Add or complete the cart endpoints following the repository's patterns (repository pattern, DTOs/types, error handling, consistent HTTP status codes). +* **Implement the UI** — Wire up the frontend cart view to the API using the React + Vite + Tailwind stack. +* **Validate** — Manually exercise the cart flow end to end in the running app. + +## Success criteria + +* A user can add products to the cart, update quantities, and remove items. +* The cart displays an accurate total. +* Cart state is persisted through the API using existing patterns (not just client-side React state). +* Changes are type-safe and consistent with the existing codebase style, with a scoped diff. + +### Optional stretch — structured prompting & context retrieval + +* Build a **reusable prompt template** with clear sections: objective, constraints, files in scope, desired output format. +* Set a **context-retrieval order**: directly edited files first → adjacent tests → architecture docs only if still needed. Stop once it's enough. +* Run the cart prompt structured, then run the same request with a loose, unstructured prompt and keep the better result — the comparison is the learning. + +## Learning resources + +* [Prompt engineering for GitHub Copilot](https://docs.github.com/en/copilot/using-github-copilot/prompt-engineering-for-github-copilot) +* [Best practices for using GitHub Copilot](https://docs.github.com/en/copilot/using-github-copilot/best-practices-for-using-github-copilot) +* [Getting started with Copilot Chat](https://docs.github.com/en/copilot/github-copilot-chat/using-github-copilot-chat) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-02.md b/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-02.md new file mode 100644 index 000000000..0a8429082 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-02.md @@ -0,0 +1,34 @@ +# Challenge 2 - Add another feature from the backlog (agentic loop) + +**[Home](../Readme.md)** - [Previous Challenge](challenge-01.md) - [Next Challenge](challenge-03.md) + +## Goal + +Pick up an additional feature from the Octocat Supply backlog and deliver it with a fuller **agentic loop** — plan → implement → test → review. With the cart underway, the team needs to keep burning down the backlog before launch. + +## Actions + +* **Choose a backlog item** — Pick a meaningful feature from `hackathon/backlog.md` (e.g. payment integration for the cart, order history, product search/filtering, or inventory management). A set of these may already be seeded as **GitHub Issues** in your repo — check the Issues tab and pick one. +* **Plan with an agent** — Use GitHub Copilot to break the work into steps and identify the files and layers involved (frontend, API, database) **before** writing code. +* **Implement** — Build the feature across the stack, keeping changes consistent with existing patterns and type-safe. +* **Add tests** — Cover the new logic with unit tests (API/repository) and component tests where relevant. +* **Review** — Use Copilot to review your own change before considering it done. + +## Success criteria + +* A new, working backlog feature is delivered end to end and demonstrable in the running app. +* The feature has appropriate automated test coverage. +* Code follows existing repository conventions and is type-safe. +* You used an agentic plan → implement → test → review loop and can point to the agent's plan, the implementation, the tests, and the review pass. + +### Optional stretch — harnesses, MCP & requirement refinement + +* **Compare harnesses** — Run the planning step twice: once in **Copilot CLI** and once in the **Copilot App / IDE chat**. Note which gave the more implementation-ready plan for a quick fix vs. a multi-file change, and write down a decision rule. +* **Wire in an MCP server** — Connect one MCP server (e.g. the **GitHub MCP server**) to pull real backlog context such as issues and PRs. Note what stays local-only vs. what the server can see. +* **Refine a requirement from organizational signal** — Point your agent at `hackathon/workiq/` — the mock **WorkIQ** organizational knowledge (Teams thread, support-ticket digest, stakeholder email). Have it synthesize the signal across those artifacts, separate a genuinely-new need from noise and from work **already in the backlog**, and shape one unmet need into an **issue-ready requirement**: problem statement → acceptance criteria → scoped tasks (optionally opening it as a GitHub Issue). There's no answer key — the skill is the refinement. A ready-made **Requirement Refiner** custom agent (`.github/agents/`) can guide this. + +## Learning resources + +* [About GitHub Copilot coding agent](https://docs.github.com/en/copilot/using-github-copilot/coding-agent) +* [Extending Copilot Chat with the Model Context Protocol (MCP)](https://docs.github.com/en/copilot/customizing-copilot/extending-copilot-chat-with-mcp) +* [GitHub MCP server](https://github.com/github/github-mcp-server) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-03.md b/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-03.md new file mode 100644 index 000000000..f0e642dae --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-03.md @@ -0,0 +1,35 @@ +# Challenge 3 - Run and extend test coverage, and review code + +**[Home](../Readme.md)** - [Previous Challenge](challenge-02.md) - [Next Challenge](challenge-04.md) + +## Goal + +Bring the testing and review of the application up to Octocat standards by running the existing tests, extending coverage, and performing an agent-assisted code review. The mindset shift is from "does it work?" to "can I trust it?". + +## Actions + +* **Run the existing tests** — Execute the current API and frontend test suites and confirm the baseline passes. +* **Find the gaps** — Use Copilot to identify untested code paths, especially around the new cart and backlog features. +* **Extend coverage** — Add unit tests for repository/business logic and component tests for critical UI paths. Include edge cases and error handling. +* **Review the code** — Use Copilot (and/or the code review agent) to review recent changes for correctness, security, and data integrity. +* **Fix what you find** — Address issues surfaced by the tests and review, prioritising security and correctness over style. + +## Success criteria + +* Existing test suites run green. +* New tests meaningfully increase coverage of the recent features and exercise edge cases and error handling. +* A code review has been performed and actionable findings addressed. + +> Repo rule: only run linters, builds, and tests that **already exist** in the repo — no new test frameworks mid-hack. + +### Optional stretch — model selection & context budgeting + +* **Compare models** — Generate tests for the same code once in **Auto** mode and once with an **explicitly selected model**. Compare and record a decision rule for when to use each. +* **Set a context budget** — Before prompting, decide a budget (max number of files, max reference length per file) and stick to it. +* **Note the trade-off** — Capture how the budget affected quality vs. noise in the generated tests. + +## Learning resources + +* [Configuring GitHub Copilot code review](https://docs.github.com/en/copilot/using-github-copilot/code-review/using-copilot-code-review) +* [Writing tests with GitHub Copilot](https://docs.github.com/en/copilot/using-github-copilot/guides-on-using-github-copilot/writing-tests-with-github-copilot) +* [Changing the AI model for Copilot Chat](https://docs.github.com/en/copilot/using-github-copilot/ai-models/changing-the-ai-model-for-copilot-chat) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-04.md b/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-04.md new file mode 100644 index 000000000..ad5d654e1 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-04.md @@ -0,0 +1,32 @@ +# Challenge 4 - Deploy into Azure + +**[Home](../Readme.md)** - [Previous Challenge](challenge-03.md) - [Next Challenge](challenge-05.md) + +## Goal + +Deploy the full Octocat Supply application to **Microsoft Azure** using **Infrastructure as Code (IaC)** and a **GitHub Actions** CI/CD pipeline. The deployment should be automated, repeatable, defined as code, and driven from GitHub Actions. + +## Actions + +* **Choose your IaC** — Define the Azure infrastructure using an IaC approach (e.g. **Bicep** or **Terraform**) for the resources the app needs: compute for frontend/API, storage/database, and supporting services. +* **Author the templates** — Use Copilot to help generate and refine the IaC, following Azure best practices. +* **Build the pipeline** — Create a GitHub Actions workflow that builds, tests, provisions infrastructure, and deploys the frontend and API. +* **Configure securely** — Use GitHub secrets / **OIDC federated credentials** for Azure authentication; avoid hard-coded credentials. +* **Deploy and verify** — Run the pipeline and confirm the application is reachable in Azure. + +> **Optional starter scaffold (in the companion repo).** `infra/` (Bicep) and `.github/workflows/deploy.yml` sketch a **Container Apps + ACR + OIDC** topology so you don't start from a blank page. The meaningful design choices — SKUs, database/storage strategy, API ingress visibility, secrets, scaling — are intentionally left as `TODO`s. It removes boilerplate; it does **not** do the challenge for you. Use it, extend it, or replace it. See `infra/README.md`. + +## Success criteria + +* Azure infrastructure is defined as code and provisions cleanly (no manual portal clicking to create resources). +* A single GitHub Actions workflow builds, tests, provisions, and deploys the application. +* Authentication to Azure uses secrets/OIDC — no credentials in source. +* The deployed application is reachable and functional in Azure (exercise a real flow, e.g. the cart). + +## Learning resources + +* [Deploy to Azure from GitHub Actions](https://learn.microsoft.com/en-us/azure/developer/github/github-actions) +* [Authenticate to Azure from GitHub Actions using OIDC](https://learn.microsoft.com/en-us/azure/developer/github/connect-from-azure-openid-connect) +* [Bicep documentation](https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/) +* [Azure Container Apps](https://learn.microsoft.com/en-us/azure/container-apps/) +* [Azure Well-Architected Framework](https://learn.microsoft.com/en-us/azure/well-architected/) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-05.md b/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-05.md new file mode 100644 index 000000000..fe3691905 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-05.md @@ -0,0 +1,32 @@ +# Challenge 5 - Monitor the deployed app with the Azure SRE Agent + +**[Home](../Readme.md)** - [Previous Challenge](challenge-04.md) - [Next Challenge](challenge-06.md) + +## Goal + +Use agents to monitor the deployed Octocat Supply application and improve its reliability, leveraging the **Azure SRE Agent**. Now that the app is deployed, the team wants agentic monitoring — detect, diagnose, and help remediate issues. + +> This challenge depends on a reachable deployment from Challenge 4. If your team doesn't have one, pair with another team or use a shared reference deployment so you can still practise the loop. + +## Actions + +* **Enable observability** — Confirm the deployed app emits the telemetry needed for monitoring (logs, metrics, health checks). Add health/readiness endpoints if it doesn't already expose them. +* **Set up the SRE Agent** — Connect the Azure SRE Agent to the deployed resources so it can observe application health. +* **Simulate an issue** — Introduce or trigger a fault (e.g. a failing dependency or a bad deploy) that clearly affects health. +* **Investigate with the agent** — Use the SRE Agent to identify root cause and suggest remediation. +* **Remediate** — Apply the fix and confirm the agent reports healthy status. + +## Success criteria + +* The deployed application emits usable telemetry for monitoring. +* The Azure SRE Agent is monitoring the application. +* An induced issue is detected and diagnosed with agent assistance (not just noticed manually). +* The issue is remediated and health is restored. + +> Capture **what the agent surfaced vs. what you had to investigate manually**, and note reliability improvements to feed back into the backlog. + +## Learning resources + +* [Azure SRE Agent documentation](https://learn.microsoft.com/en-us/azure/sre-agent/) +* [Azure Monitor overview](https://learn.microsoft.com/en-us/azure/azure-monitor/overview) +* [Health probes in Azure Container Apps](https://learn.microsoft.com/en-us/azure/container-apps/health-probes) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-06.md b/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-06.md new file mode 100644 index 000000000..5a5c6b2e2 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-06.md @@ -0,0 +1,35 @@ +# Challenge 6 - Implement agentic workflows to maintain the app + +**[Home](../Readme.md)** - [Previous Challenge](challenge-05.md) - [Next Challenge](finish.md) + +## Goal + +Implement **GitHub Agentic Workflows** to help maintain the Octocat Supply application over time. Delivering the app is only the beginning — the team needs sustainable, agent-driven maintenance: triaging issues, keeping dependencies current, and responding to changes in the repository. + +## Actions + +* **Identify maintenance tasks** — Choose a recurring task that benefits from automation (e.g. issue triage/labelling, dependency updates, test/lint on change, documentation upkeep). Start with a **low-risk** task. +* **Author an agentic workflow** — Create a GitHub Agentic Workflow that performs one of these tasks autonomously. +* **Define triggers and guardrails** — Configure when it runs (schedule, PR, issue) and constrain what it is allowed to do — least privilege. +* **Test the workflow** — Trigger it and observe the agent completing the task. +* **Review the output** — Confirm the agent's actions are correct and safe before enabling it broadly. + +## Success criteria + +* At least one agentic workflow is implemented and completes a real run. +* The workflow has clear triggers and appropriate, least-privilege guardrails. +* The agent completes a real maintenance task on the repository (not a no-op). +* The workflow's output is reviewed for correctness and safety. + +### Optional stretch — package a reusable skill / slash command + +* Pick a repeatable flow you've done by hand (e.g. "read instructions → scaffold tests → run validation"). +* Package it as a reusable **skill or slash command** so it can be invoked in one step. +* Invoke it against a real task and confirm it performs the steps. +* Document where **human review stays mandatory** (e.g. before merging generated tests or committing changes). + +## Learning resources + +* [GitHub Agentic Workflows (gh-aw)](https://github.com/githubnext/gh-aw) +* [About GitHub Actions](https://docs.github.com/en/actions/learn-github-actions) +* [Controlling permissions for GITHUB_TOKEN](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/finish.md b/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/finish.md new file mode 100644 index 000000000..4211f0737 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/finish.md @@ -0,0 +1,15 @@ +# Finish + +[Previous Challenge](challenge-06.md) - **[Home](../Readme.md)** + +## Congratulations + +You finished the **Agentic SDLC MicroHack**! 🎉 + +Over the course of the day your team took the **Octocat Supply** application through the complete Agentic Software Development Lifecycle — you **planned**, **built**, **tested**, **reviewed**, **deployed** to Azure, **monitored** with the Azure SRE Agent, and set up agentic workflows to **maintain** it over time. Along the way you practised driving agents deliberately: structured prompting, context budgeting, model selection, requirement refinement from organizational signal, and least-privilege automation. + +The point was never just to write code faster — it was to work *with* agents across the whole lifecycle while keeping changes scoped, tested, secure, and reviewable. + +If you want to give feedback, please don't hesitate to open an Issue on the repository or get in touch with one of the contributors directly. + +Thank you for investing the time — and see you next time! 🚀 diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/images/README.md b/03-Azure/01-04-AI/01_Agentic_SDLC/images/README.md new file mode 100644 index 000000000..1dcdf3453 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/images/README.md @@ -0,0 +1,13 @@ +# Images + +Store screenshots and diagrams for the **Agentic SDLC MicroHack** in this folder and +reference them from the challenge and walkthrough Markdown with relative links, e.g.: + +```markdown +![Architecture](../images/architecture.png) +``` + +The high-level Agentic SDLC lifecycle is currently rendered as a Mermaid diagram +directly in [`../Readme.md`](../Readme.md). Add a rendered PNG here (for example an +architecture diagram of the Octocat Supply deployment on Azure, or challenge +screenshots) as the MicroHack grows. diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-00/solution-00.md b/03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-00/solution-00.md new file mode 100644 index 000000000..e00ada4a8 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-00/solution-00.md @@ -0,0 +1,45 @@ +# Walkthrough Challenge 0 - Dev environment & repo overview + +**[Home](../../Readme.md)** - [Next Challenge Solution](../challenge-01/solution-01.md) + +Duration: 30 minutes + +## Prerequisites + +Please ensure you have satisfied the [General prerequisites](../../Readme.md#general-prerequisites) before continuing. + +## Approach + +The aim here is a smooth, fast start — a good setup means the rest of the day goes into building, not fighting toolchains. + +### Task 1: Get the code and open an environment + +- Open your team's copy of the companion repo in **GitHub Codespaces** (fastest, nothing to install), a local **VS Code Dev Container**, or locally. +- 💡 If local setup takes more than ~15 minutes, **switch to Codespaces** rather than fighting a local toolchain. +- Confirm you're on the intended working branch. + +### Task 2: Verify runtimes and enable Copilot + +- In Codespaces / the Dev Container, Node.js 24, Python 3.13, .NET 10, and Java 17 are preinstalled. Locally, install only the runtime for your chosen API track plus Node.js. +- Sign in to GitHub Copilot in the IDE. **Proof that it works** is a real Chat response about a file you have open — not just the extension being installed. If suggestions are empty, sign out/in, confirm your seat is assigned, and open a real source file so the agent has context. + +### Task 3: Explore the repo + +- 🔑 The quickest way to satisfy this is to **ask Copilot Chat to summarise the repository structure and the main entry points**. +- Identify: `src/` (the app — frontend + four API variants + shared SQLite schema), `docs/` (guidance), `hackathon/` (the challenges). Read `src/README.md`. + +### Task 4: Run the app locally + +- Start the frontend and one API (see `src/README.md` — `make dev` / per-variant targets). Load a page in the browser and confirm the API responds. +- Pick the API language your team is most comfortable with; the choice doesn't affect the concepts in later challenges. + +## Optional stretch — repo-wide agent context + +Create an `AGENTS.md` and/or `.github/copilot-instructions.md` with: +- **Conventions** — concrete, repo-specific rules (naming, repository pattern, DTO/type usage), not generic advice. +- **Validation commands** — the exact build/test commands for your track and the frontend. +- **Scope rules** — explicit "do not touch" boundaries (generated files, infra, unrelated services). + +Then, in a **fresh** Copilot Chat, ask something that relies on a convention **without restating it** and confirm the instructions were applied. This pays off directly in Challenges 1–3. + +You successfully completed challenge 0! 🚀🚀🚀 diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-01/solution-01.md b/03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-01/solution-01.md new file mode 100644 index 000000000..2ef0fe728 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-01/solution-01.md @@ -0,0 +1,59 @@ +# Walkthrough Challenge 1 - Deliver the cart feature + +**[Home](../../Readme.md)** - [Previous Challenge Solution](../challenge-00/solution-00.md) - [Next Challenge Solution](../challenge-02/solution-02.md) + +Duration: 30 minutes + +## Prerequisites + +Complete [Challenge 0](../challenge-00/solution-00.md) — a working app and a responding Copilot — before starting. + +## Approach + +The emphasis is **using Copilot well**, not just writing code. Aim for a minimal, working cart (add / update qty / remove / total), not a perfect one. + +Suggested pacing: + +``` +Understand current state (Copilot explain) ~5 min +Design cart behaviours ~3 min +Implement API endpoints ~10 min +Wire up the UI ~8 min +Validate end to end ~4 min +``` + +### Task 1: Understand what already exists + +- Ask Copilot to explain the existing cart-related code in the frontend and API and to point out what's missing. Note the repo patterns you must follow: repository pattern, DTOs/types, error handling, consistent HTTP status codes (see `.github/instructions/api.instructions.md`). + +### Task 2: Design the behaviours first + +- Decide the specific behaviours — add, update quantity, remove, total — then implement one at a time rather than everything at once. + +### Task 3: Implement the API + +- 🔑 **Paste (or open) the existing model/DTO types into your prompt** so Copilot's suggestions match the codebase and stay type-safe. +- Persist cart state **through the API using the repository pattern** — don't fake persistence in the client. + +### Task 4: Wire a thin UI early + +- Get a minimal UI wired to the API early so you can validate the whole loop, then refine. If you're deep in the API at ~20 minutes with no UI, wire the thin UI now. + +### Task 5: Validate end to end + +- Exercise add / update qty / remove in the running app and confirm the displayed total updates correctly. + +## Common blockers + +- **Output drifts from repo style** → reference the existing DTO/model types in the prompt. +- **Sprawling diff touching unrelated files** → keep changes incremental and scoped; revert unrelated edits. +- **Endpoint not persisting** → follow the repository pattern, not in-memory/client-only storage. +- **Trying to build payment now** → payment is a follow-on (Challenge 2); capture it and stay scoped. + +## Optional stretch — structured prompting + +- Build a reusable **prompt template**: objective / constraints / files in scope / output format. +- Feed context in priority order and **stop** once it's enough: directly edited files → adjacent tests → docs only if needed. +- Run the same request with a vague prompt and keep the better result — and be able to say *why* it was better. + +You successfully completed challenge 1! 🚀🚀🚀 diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-02/solution-02.md b/03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-02/solution-02.md new file mode 100644 index 000000000..16a3bd343 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-02/solution-02.md @@ -0,0 +1,59 @@ +# Walkthrough Challenge 2 - Backlog feature (agentic loop) + +**[Home](../../Readme.md)** - [Previous Challenge Solution](../challenge-01/solution-01.md) - [Next Challenge Solution](../challenge-03/solution-03.md) + +Duration: 60 minutes + +## Prerequisites + +Complete [Challenge 1](../challenge-01/solution-01.md). If the backlog has been seeded as GitHub Issues, have the Issues tab open. + +## Approach + +This is the centrepiece: run a full **plan → implement → test → review** loop. The easiest mistake is over-scoping — pick a feature you can finish *with tests*, not the most ambitious one. + +Suggested pacing: + +``` +Choose a backlog item ~5 min +Plan with an agent ~10 min +Implement across the stack ~25 min +Add tests ~12 min +Agent-assisted review ~8 min +``` + +### Task 1: Choose a backlog item + +- Pick one from `hackathon/backlog.md` — payment integration for the cart, order history, product search/filtering, or inventory management are good candidates. If seeded as Issues, pick a real labelled issue. + +### Task 2: Plan with the agent first + +- 🔑 **Don't dive straight into code.** Have the agent decompose the work into steps and produce a file/layer map (frontend, API, database) before you implement. A team that skips planning is missing the point of the challenge. + +### Task 3: Implement across the stack + +- Build the smallest demonstrable slice, consistent with existing patterns and type-safe. +- For anything touching payment/config, use **environment-variable-driven configuration — no secrets in source.** + +### Task 4: Add tests + +- Cover the new logic with unit tests (API/repository) and component tests where relevant. Letting the agent draft tests first (TDD-style) is fine. Don't let implementation eat the whole hour — reserve time for tests. + +### Task 5: Agent-assisted review + +- Before calling it done, ask Copilot to review your change for correctness, security, and data integrity, and fix what it surfaces. + +## Optional stretch — harnesses, MCP & requirement refinement + +- **Compare harnesses** — run the planning step in Copilot CLI vs. the Copilot App / IDE chat; write a decision rule for quick fix vs. multi-file change. +- **Wire in an MCP server** — connect the GitHub MCP server to pull real backlog context (issues, PRs); note what stays local-only vs. what the server can see. +- **Refine a requirement from WorkIQ signal** — point the agent at `hackathon/workiq/` (Teams thread, support-ticket digest, stakeholder email). Synthesize across the artifacts, **separate a genuinely-new need from noise and from work already on the backlog**, and shape it into an issue-ready requirement: problem statement → acceptance criteria → scoped tasks (optionally a GitHub Issue). There is deliberately **no answer key** — realistic noise is mixed in, and the skill being assessed is the refinement, not guessing a specific feature. A good refinement has a clear problem statement, testable acceptance criteria, timebox-sized scope, and evidence the new need was separated from backlog/noise. The **Requirement Refiner** custom agent (`.github/agents/`) can guide this and will not name a "correct" feature. + +## Common blockers + +- **Over-scoped feature** → cut to the smallest demonstrable, testable slice. +- **Thrashing in code with no plan** → stop, produce a step list + file/layer map first. +- **Hard-coded secrets** → move to environment-variable config. +- **No tests by ~45 min** → have the agent draft tests now. + +You successfully completed challenge 2! 🚀🚀🚀 diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-03/solution-03.md b/03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-03/solution-03.md new file mode 100644 index 000000000..e9576daff --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-03/solution-03.md @@ -0,0 +1,54 @@ +# Walkthrough Challenge 3 - Testing & review + +**[Home](../../Readme.md)** - [Previous Challenge Solution](../challenge-02/solution-02.md) - [Next Challenge Solution](../challenge-04/solution-04.md) + +Duration: 30 minutes + +## Prerequisites + +Complete [Challenge 2](../challenge-02/solution-02.md). Know the exact test commands for your API track and the frontend. + +## Approach + +Focus tests on the **cart and backlog features you just built** — not the whole app. Push for quality of tests (edge cases, error handling) over raw count. + +Suggested pacing: + +``` +Run existing tests (baseline green) ~5 min +Find the gaps with Copilot ~5 min +Extend coverage (unit + component) ~12 min +Agent-assisted review ~5 min +Fix findings ~3 min +``` + +### Task 1: Establish a green baseline + +- Run the existing API and frontend suites and confirm they pass. If the baseline fails on a clean checkout, it's usually an environment issue from Challenge 0 — fix that first (Codespaces), then re-run. + +### Task 2: Find the gaps + +- Ask Copilot to identify untested code paths in the cart and backlog features you added. + +### Task 3: Extend coverage + +- 🔑 **Generate tests from the existing types and interfaces** so they stay accurate and compile. +- Prompt explicitly for **edge cases and error handling** — not just happy paths. +- Repo rule: only use test frameworks that **already exist** in the repo. + +### Task 4: Agent-assisted review + +- Run the code review agent (or Copilot review) on your recent changes. +- Triage findings by the escalation order: **security / data integrity → correctness → performance → maintainability → style.** Fix the top; note the rest. Don't drown in nits. + +### Task 5: Fix findings + +- Address the security/correctness issues surfaced by tests and review; confirm the suites are green again. + +## Optional stretch — model selection & context budgeting + +- **Compare models** — generate tests once in Auto and once with an explicitly selected model; record a decision rule for when to use each. +- **Set a context budget** — decide a max number of files and max reference length per file before prompting, and stick to it. +- **Note the trade-off** — capture how the budget affected quality vs. noise. The reflection is the deliverable. + +You successfully completed challenge 3! 🚀🚀🚀 diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-04/solution-04.md b/03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-04/solution-04.md new file mode 100644 index 000000000..aa713feac --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-04/solution-04.md @@ -0,0 +1,51 @@ +# Walkthrough Challenge 4 - Deploy into Azure + +**[Home](../../Readme.md)** - [Previous Challenge Solution](../challenge-03/solution-03.md) - [Next Challenge Solution](../challenge-05/solution-05.md) + +Duration: 60 minutes + +## Prerequisites + +Complete [Challenge 3](../challenge-03/solution-03.md). Confirm your **Azure prerequisites**: subscription/budget, Contributor on your scope, a working GitHub ↔ Azure **OIDC federated credential**, and region capacity. + +## Approach + +The most operationally demanding challenge. **Get to a simple, working deploy early**, then refine — a reachable app on basic infra beats perfect templates that never ship. Auth and quota are the top time sinks. + +Suggested pacing: + +``` +Choose IaC + author templates ~20 min +Build the Actions pipeline ~20 min +Configure secure auth (OIDC/secrets) ~10 min +Deploy and verify ~10 min +``` + +### Task 1: Choose IaC and author templates + +- Pick **Bicep** or **Terraform** and let Copilot scaffold the resources: compute for frontend/API, storage/database, supporting services. +- 💡 **Optional starter scaffold** in the companion repo: `infra/` (Bicep) + `.github/workflows/deploy.yml` sketch a **Container Apps + ACR + Log Analytics + OIDC** topology — two apps (`api` on port 3000, `frontend`/nginx on port 80). The design decisions (SKUs, database/storage strategy, API ingress visibility, secrets, scaling, image build/push, frontend→api discovery) are deliberately left as `TODO`. It's a de-risking starting point, **not** a required or "correct" answer — extend it, replace it, or ignore it. See `infra/README.md`. + +### Task 2: Build one linear pipeline + +- Author a single GitHub Actions workflow that goes **build → test → provision → deploy**. Keep it linear and readable. + +### Task 3: Configure secure auth + +- 🔑 Use **OIDC federated credentials** for Azure auth, not long-lived secrets. The **most common wall** is the federated-credential subject (`repo:/:ref:refs/heads/main` or an environment subject) or a missing role. If auth fails in the pipeline, check this first and confirm the identity has Contributor on your scope. + +### Task 4: Deploy and verify + +- Get a simple deploy reachable first, then refine SKUs and structure. Load the app's Azure URL and exercise a real flow (e.g. the cart). Ask Copilot for **Azure Well-Architected** guidance when choosing SKUs/services. + +## Common blockers + +- **Azure auth fails** → almost always the OIDC/federated credential or a missing role. +- **Quota / capacity errors** → fall back to a smaller SKU or an alternate region. +- **Provisioning partially fails** → tear down the resource group and re-provision clean rather than patching half-built state. +- **Secrets committed to source** → stop and move them to GitHub secrets / OIDC. +- **Pipeline green but app unreachable** → check ingress/networking and that the deploy targeted the provisioned resources. + +> No optional stretch. Fast finishers should harden the pipeline (environments, review gates) or get a head start on Challenge 5's observability. + +You successfully completed challenge 4! 🚀🚀🚀 diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-05/solution-05.md b/03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-05/solution-05.md new file mode 100644 index 000000000..1c5ce18cf --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-05/solution-05.md @@ -0,0 +1,47 @@ +# Walkthrough Challenge 5 - Monitor with the Azure SRE Agent + +**[Home](../../Readme.md)** - [Previous Challenge Solution](../challenge-04/solution-04.md) - [Next Challenge Solution](../challenge-06/solution-06.md) + +Duration: 30 minutes + +## Prerequisites + +Complete [Challenge 4](../challenge-04/solution-04.md) — you need a **reachable deployment**. No deploy? Pair with another team or use a shared reference environment so you can still practise the loop. Confirm the **Azure SRE Agent** is available in your region/subscription and accessible to you. + +## Approach + +Move from build to operate. The learning is in the **detect → diagnose → remediate** loop — get the agent connected fast so there's time to actually reach the diagnosis step. + +Suggested pacing: + +``` +Enable/confirm observability ~7 min +Connect the SRE Agent ~7 min +Simulate a fault ~5 min +Investigate with the agent ~7 min +Remediate + confirm healthy ~4 min +``` + +### Task 1: Enable/confirm observability + +- Confirm the deployed app emits logs, metrics, and health/readiness signals. If it lacks health/readiness endpoints, add them and confirm logging/metrics are enabled on the Azure resources. + +### Task 2: Connect the SRE Agent + +- Connect the Azure SRE Agent to the **correct deployed resources / resource group** so it can observe application health and report status. Permissions errors usually mean the agent needs extra roles on the monitored resources. + +### Task 3: Simulate a clear fault + +- 💡 Pick a fault that clearly affects health — a **failing dependency** (e.g. break a connection string) or a **bad deploy** — rather than a subtle one that won't surface. + +### Task 4: Investigate with the agent + +- 🔑 Let the **agent** surface and diagnose the issue and suggest remediation — the goal is agent-assisted diagnosis, not you spotting it manually. Capture **what the agent surfaced vs. what you had to investigate yourself**. + +### Task 5: Remediate and confirm + +- Apply the fix and confirm the agent reports healthy again. Note reliability gaps as backlog items — a natural feed into Challenge 6. + +> No optional stretch. Fast finishers should document agent-caught vs. manually-investigated findings and turn reliability gaps into backlog items. + +You successfully completed challenge 5! 🚀🚀🚀 diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-06/solution-06.md b/03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-06/solution-06.md new file mode 100644 index 000000000..1ad7e10c7 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/walkthrough/challenge-06/solution-06.md @@ -0,0 +1,61 @@ +# Walkthrough Challenge 6 - Agentic workflows + +**[Home](../../Readme.md)** - [Previous Challenge Solution](../challenge-05/solution-05.md) - [Finish](../../challenges/finish.md) + +Duration: 30 minutes + +## Prerequisites + +Complete [Challenge 5](../challenge-05/solution-05.md). Confirm agentic-workflow / agent capabilities are enabled for your org. + +## Approach + +The closing challenge: agents don't just build, they **sustain**. Keep it focused — start with a **low-risk task** so you get a working workflow rather than an ambitious half-built one. Make sure you actually **trigger and observe** it. + +Suggested pacing: + +``` +Identify a maintenance task ~5 min +Author the agentic workflow ~12 min +Define triggers + guardrails ~5 min +Test the workflow ~5 min +Review the output ~3 min +``` + +### Task 1: Identify a low-risk maintenance task + +- Choose a recurring task: **issue triage/labelling** (great first choice), dependency updates, test/lint on change, or docs upkeep. Automate code-changing tasks only once the pattern works. + +### Task 2: Author the workflow + +- Create a GitHub Agentic Workflow that performs that one task autonomously. + +### Task 3: Define triggers and guardrails + +- 🔑 Configure exactly **when** it runs (schedule / PR / issue) and **constrain what it may do** — least privilege. The agent should only touch what its task needs. + +### Task 4: Test the workflow + +- Trigger it against real repo state and watch the agent complete the task. If it doesn't fire, check the trigger config matches the event you're testing and that permissions allow it. + +### Task 5: Review the output + +- Inspect the agent's actions for correctness and safety before trusting/enabling it broadly. If it did something unexpected, that's the teaching moment — tighten scope and re-run. + +## Common blockers + +- **Workflow too ambitious (auto-changing code)** → start with triage/labelling. +- **Doesn't trigger** → trigger config mismatch or insufficient permissions. +- **Over-broad permissions** → tighten to least privilege. +- **No-op / nothing to review** → ensure the task is real and the trigger fired against actual state. + +## Optional stretch — package a reusable skill / slash command + +- Pick a repeatable manual flow (e.g. "read instructions → scaffold tests → run validation"). +- Package it as a reusable **skill or slash command** so it's invocable in one step. +- Invoke it against a real task and confirm the steps run. +- Document where **human review stays mandatory** (e.g. before merging generated tests or committing changes). + +You successfully completed challenge 6 — and the full Agentic SDLC arc: **plan → build → test → review → deploy → monitor → maintain**, all with agents. 🚀🚀🚀 + +Head to the [Finish](../../challenges/finish.md) page. diff --git a/03-Azure/01-04-AI/Readme.md b/03-Azure/01-04-AI/Readme.md index 1dd8bb072..41174f219 100644 --- a/03-Azure/01-04-AI/Readme.md +++ b/03-Azure/01-04-AI/Readme.md @@ -1 +1,9 @@ -Collaborators wanted :) \ No newline at end of file +# Azure AI MicroHacks + +A collection of MicroHacks focused on AI on Azure and the GitHub + Azure agentic platform. + +## Available MicroHacks + +* [**Agentic SDLC with GitHub Copilot & Azure**](01_Agentic_SDLC/Readme.md) — Take a full-stack application through the complete Agentic Software Development Lifecycle (plan → implement → test → review → deploy → operate → maintain) using GitHub Copilot, GitHub Actions, the Azure SRE Agent, and GitHub Agentic Workflows. + +Collaborators wanted :) — see [CONTRIBUTING.md](../../CONTRIBUTING.md) to add your own. \ No newline at end of file From e57d1f6df412fb70cf9a5b3d0045d6449044c9e9 Mon Sep 17 00:00:00 2001 From: Frank802 <223556219+Copilot@users.noreply.github.com> Date: Thu, 16 Jul 2026 11:23:41 +0200 Subject: [PATCH 2/8] Bundle app source, infra and scripts into Agentic SDLC MicroHack; drop images folder Removes the placeholder images/ folder and vendors the companion app's src/, infra/, and scripts/ (git-tracked files only) into the MicroHack so the code and deployment assets ship with it. Updates the Readme and Challenge 4 references to reflect the bundled folders. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: e0ea89bc-7f71-443f-a688-6f8b2b9b65af --- 03-Azure/01-04-AI/01_Agentic_SDLC/Readme.md | 2 +- .../challenges/challenge-04.md | 2 +- .../01-04-AI/01_Agentic_SDLC/images/README.md | 13 - .../01-04-AI/01_Agentic_SDLC/infra/README.md | 144 + .../01-04-AI/01_Agentic_SDLC/infra/main.bicep | 193 + .../infra/main.parameters.json | 33 + .../infra/modules/containerapp-env.bicep | 50 + .../infra/modules/containerapp.bicep | 141 + .../infra/modules/loganalytics.bicep | 43 + .../infra/modules/registry.bicep | 56 + .../01_Agentic_SDLC/scripts/README.md | 70 + .../01_Agentic_SDLC/scripts/seed-backlog.ps1 | 262 + .../01_Agentic_SDLC/scripts/seed-backlog.sh | 308 + .../01-04-AI/01_Agentic_SDLC/src/Makefile | 287 + .../01-04-AI/01_Agentic_SDLC/src/README.md | 121 + .../api-cs-tests/OctoSupply.Api.Tests.csproj | 23 + .../Repositories/SuppliersRepositoryTests.cs | 96 + .../api-cs/Controllers/BranchesController.cs | 47 + .../Controllers/DeliveriesController.cs | 75 + .../Controllers/HeadquartersController.cs | 64 + .../OrderDetailDeliveriesController.cs | 47 + .../Controllers/OrderDetailsController.cs | 47 + .../api-cs/Controllers/OrdersController.cs | 52 + .../api-cs/Controllers/ProductsController.cs | 47 + .../api-cs/Controllers/SuppliersController.cs | 60 + .../src/api-cs/Data/DatabaseMigrator.cs | 159 + .../api-cs/Data/SqliteConnectionFactory.cs | 38 + .../src/api-cs/Models/Branch.cs | 33 + .../src/api-cs/Models/Delivery.cs | 27 + .../src/api-cs/Models/Headquarters.cs | 30 + .../src/api-cs/Models/Order.cs | 27 + .../src/api-cs/Models/OrderDetail.cs | 27 + .../src/api-cs/Models/OrderDetailDelivery.cs | 24 + .../src/api-cs/Models/Product.cs | 36 + .../src/api-cs/Models/Supplier.cs | 33 + .../src/api-cs/OctoSupply.Api.csproj | 16 + .../01_Agentic_SDLC/src/api-cs/Program.cs | 62 + .../src/api-cs/Properties/launchSettings.json | 23 + .../01_Agentic_SDLC/src/api-cs/README.md | 40 + .../api-cs/Repositories/BranchesRepository.cs | 121 + .../Repositories/DeliveriesRepository.cs | 132 + .../Repositories/HeadquartersRepository.cs | 139 + .../OrderDetailDeliveriesRepository.cs | 112 + .../Repositories/OrderDetailsRepository.cs | 115 + .../api-cs/Repositories/OrdersRepository.cs | 115 + .../api-cs/Repositories/ProductsRepository.cs | 124 + .../Repositories/SuppliersRepository.cs | 121 + .../src/api-cs/Utils/ApiExceptions.cs | 46 + .../api-cs/Utils/ErrorHandlingMiddleware.cs | 46 + .../src/api-cs/appsettings.Development.json | 8 + .../src/api-cs/appsettings.json | 12 + .../01_Agentic_SDLC/src/api-java/README.md | 33 + .../01_Agentic_SDLC/src/api-java/pom.xml | 59 + .../java/com/octocat/supply/Application.java | 11 + .../octocat/supply/config/DatabaseConfig.java | 37 + .../supply/config/DatabaseInitializer.java | 174 + .../com/octocat/supply/config/WebConfig.java | 39 + .../supply/controller/BranchesController.java | 53 + .../controller/ControllerValidation.java | 20 + .../controller/DeliveriesController.java | 72 + .../controller/HeadquartersController.java | 67 + .../OrderDetailDeliveriesController.java | 54 + .../controller/OrderDetailsController.java | 54 + .../supply/controller/OrdersController.java | 54 + .../supply/controller/ProductsController.java | 53 + .../supply/controller/RootController.java | 12 + .../controller/SuppliersController.java | 62 + .../supply/exception/ApiException.java | 14 + .../supply/exception/ConflictException.java | 7 + .../supply/exception/DatabaseException.java | 7 + .../exception/GlobalExceptionHandler.java | 47 + .../supply/exception/NotFoundException.java | 7 + .../supply/exception/ValidationException.java | 7 + .../com/octocat/supply/model/BranchModel.java | 40 + .../octocat/supply/model/DeliveryModel.java | 40 + .../supply/model/HeadquartersModel.java | 44 + .../model/OrderDetailDeliveryModel.java | 28 + .../supply/model/OrderDetailModel.java | 28 + .../com/octocat/supply/model/OrderModel.java | 34 + .../octocat/supply/model/ProductModel.java | 43 + .../octocat/supply/model/SupplierModel.java | 40 + .../supply/repository/BranchesRepository.java | 79 + .../repository/DeliveriesRepository.java | 77 + .../repository/HeadquartersRepository.java | 101 + .../OrderDetailDeliveriesRepository.java | 71 + .../repository/OrderDetailsRepository.java | 67 + .../supply/repository/OrdersRepository.java | 73 + .../supply/repository/ProductsRepository.java | 82 + .../supply/repository/SqlUpdateBuilder.java | 44 + .../repository/SuppliersRepository.java | 79 + .../src/main/resources/application.properties | 6 + .../com/octocat/supply/ApiEndpointsTest.java | 58 + .../octocat/supply/RootControllerTest.java | 25 + .../src/test/resources/application.properties | 1 + .../01_Agentic_SDLC/src/api-py/README.md | 34 + .../src/api-py/database/__init__.py | 1 + .../src/api-py/database/migrate.py | 107 + .../src/api-py/database/sqlite.py | 29 + .../01_Agentic_SDLC/src/api-py/main.py | 60 + .../src/api-py/models/__init__.py | 1 + .../src/api-py/models/branch.py | 34 + .../src/api-py/models/delivery.py | 33 + .../src/api-py/models/headquarters.py | 37 + .../src/api-py/models/order.py | 28 + .../src/api-py/models/order_detail.py | 28 + .../api-py/models/order_detail_delivery.py | 25 + .../src/api-py/models/product.py | 37 + .../src/api-py/models/supplier.py | 34 + .../src/api-py/repositories/__init__.py | 1 + .../src/api-py/repositories/_helpers.py | 36 + .../src/api-py/repositories/branches.py | 98 + .../src/api-py/repositories/deliveries.py | 107 + .../src/api-py/repositories/headquarters.py | 114 + .../repositories/order_detail_deliveries.py | 92 + .../src/api-py/repositories/order_details.py | 95 + .../src/api-py/repositories/orders.py | 88 + .../src/api-py/repositories/products.py | 104 + .../src/api-py/repositories/suppliers.py | 102 + .../src/api-py/requirements.txt | 6 + .../src/api-py/routes/__init__.py | 1 + .../src/api-py/routes/branches.py | 42 + .../src/api-py/routes/deliveries.py | 60 + .../src/api-py/routes/headquarters.py | 58 + .../api-py/routes/order_detail_deliveries.py | 44 + .../src/api-py/routes/order_details.py | 40 + .../src/api-py/routes/orders.py | 44 + .../src/api-py/routes/products.py | 40 + .../src/api-py/routes/suppliers.py | 48 + .../src/api-py/tests/test_main.py | 12 + .../src/api-py/utils/__init__.py | 1 + .../src/api-py/utils/errors.py | 52 + .../01_Agentic_SDLC/src/api-ts/.dockerignore | 61 + .../01_Agentic_SDLC/src/api-ts/.gitignore | 7 + .../01_Agentic_SDLC/src/api-ts/Dockerfile | 17 + .../01_Agentic_SDLC/src/api-ts/ERD.png | Bin 0 -> 405033 bytes .../src/api-ts/api-swagger.json | 1811 +++++ .../01_Agentic_SDLC/src/api-ts/ca.key | 27 + .../src/api-ts/eslint.config.mjs | 58 + .../src/api-ts/package-lock.json | 5768 ++++++++++++++++ .../01_Agentic_SDLC/src/api-ts/package.json | 47 + .../src/api-ts/src/db/config.ts | 26 + .../src/api-ts/src/db/migrate.ts | 182 + .../01_Agentic_SDLC/src/api-ts/src/db/seed.ts | 166 + .../src/api-ts/src/db/sqlite.ts | 179 + .../src/api-ts/src/generate-swagger.ts | 27 + .../01_Agentic_SDLC/src/api-ts/src/index.ts | 108 + .../01_Agentic_SDLC/src/api-ts/src/init-db.ts | 46 + .../src/api-ts/src/models/branch.ts | 47 + .../src/api-ts/src/models/delivery.ts | 38 + .../src/api-ts/src/models/headquarters.ts | 58 + .../src/api-ts/src/models/order.ts | 40 + .../src/api-ts/src/models/orderDetail.ts | 41 + .../api-ts/src/models/orderDetailDelivery.ts | 34 + .../src/api-ts/src/models/product.ts | 55 + .../src/api-ts/src/models/supplier.ts | 46 + .../api-ts/src/repositories/branchesRepo.ts | 165 + .../api-ts/src/repositories/deliveriesRepo.ts | 192 + .../src/repositories/headquartersRepo.ts | 152 + .../repositories/orderDetailDeliveriesRepo.ts | 194 + .../src/repositories/orderDetailsRepo.ts | 182 + .../src/api-ts/src/repositories/ordersRepo.ts | 177 + .../api-ts/src/repositories/productsRepo.ts | 164 + .../src/repositories/suppliersRepo.test.ts | 209 + .../api-ts/src/repositories/suppliersRepo.ts | 162 + .../src/api-ts/src/routes/branch.test.ts | 120 + .../src/api-ts/src/routes/branch.ts | 176 + .../src/api-ts/src/routes/delivery.ts | 257 + .../src/api-ts/src/routes/headquarters.ts | 335 + .../src/api-ts/src/routes/order.ts | 183 + .../src/api-ts/src/routes/orderDetail.ts | 176 + .../api-ts/src/routes/orderDetailDelivery.ts | 178 + .../src/api-ts/src/routes/product.ts | 176 + .../src/api-ts/src/routes/supplier.ts | 234 + .../src/api-ts/src/seedData.ts | 312 + .../src/api-ts/src/utils/errors.ts | 94 + .../src/api-ts/src/utils/sql.ts | 214 + .../01_Agentic_SDLC/src/api-ts/tsconfig.json | 14 + .../src/api-ts/vitest.config.ts | 14 + .../src/database/migrations/001_init.sql | 108 + .../002_add_supplier_status_fields.sql | 4 + .../src/database/seed/001_suppliers.sql | 5 + .../src/database/seed/002_headquarters.sql | 3 + .../src/database/seed/003_branches.sql | 4 + .../src/database/seed/004_products.sql | 14 + .../01_Agentic_SDLC/src/docs/architecture.md | 83 + .../01_Agentic_SDLC/src/docs/build.md | 173 + .../01_Agentic_SDLC/src/docs/design/cart.png | Bin 0 -> 241631 bytes .../src/docs/design/footer.png | Bin 0 -> 346654 bytes .../src/docs/design/item-list.png | Bin 0 -> 735150 bytes .../01_Agentic_SDLC/src/docs/design/main.png | Bin 0 -> 1544701 bytes .../docs/design/order-tracking-prototype.png | Bin 0 -> 146768 bytes .../src/docs/sqlite-integration.md | 272 + .../01-04-AI/01_Agentic_SDLC/src/docs/tao.md | 107 + .../src/frontend/.dockerignore | 59 + .../01_Agentic_SDLC/src/frontend/.gitignore | 29 + .../01_Agentic_SDLC/src/frontend/Dockerfile | 27 + .../01_Agentic_SDLC/src/frontend/README.md | 54 + .../src/frontend/entrypoint.sh | 60 + .../src/frontend/eslint.config.js | 31 + .../01_Agentic_SDLC/src/frontend/index.html | 13 + .../01_Agentic_SDLC/src/frontend/nginx.conf | 28 + .../src/frontend/package-lock.json | 5861 +++++++++++++++++ .../01_Agentic_SDLC/src/frontend/package.json | 50 + .../src/frontend/playwright.config.ts | 34 + .../src/frontend/postcss.config.js | 6 + .../src/frontend/public/auto-groomer.png | Bin 0 -> 1748257 bytes .../src/frontend/public/catflix.png | Bin 0 -> 1879735 bytes .../src/frontend/public/chirp-cam.png | Bin 0 -> 1949726 bytes .../src/frontend/public/copilot.png | Bin 0 -> 35312 bytes .../src/frontend/public/door-dash.png | Bin 0 -> 1588998 bytes .../src/frontend/public/feeder.png | Bin 0 -> 1639770 bytes .../src/frontend/public/hero.png | Bin 0 -> 2432879 bytes .../src/frontend/public/litter-box.png | Bin 0 -> 1613519 bytes .../src/frontend/public/runtime-config.js | 5 + .../src/frontend/public/scratch-pad.png | Bin 0 -> 1524975 bytes .../src/frontend/public/sleep-nest.png | Bin 0 -> 1810316 bytes .../src/frontend/public/smart-collar.png | Bin 0 -> 1501542 bytes .../src/frontend/public/smart-fountain.png | Bin 0 -> 1395981 bytes .../src/frontend/public/snack-vault.png | Bin 0 -> 1669393 bytes .../src/frontend/public/tracker-mat.png | Bin 0 -> 1522856 bytes .../01_Agentic_SDLC/src/frontend/src/App.tsx | 48 + .../src/frontend/src/api/config.ts | 45 + .../src/frontend/src/components/About.tsx | 61 + .../src/frontend/src/components/Footer.tsx | 130 + .../src/frontend/src/components/Login.tsx | 98 + .../frontend/src/components/Navigation.tsx | 145 + .../src/frontend/src/components/Welcome.tsx | 434 ++ .../src/components/admin/AdminProducts.tsx | 283 + .../components/entity/product/ProductForm.tsx | 221 + .../components/entity/product/Products.tsx | 309 + .../src/frontend/src/context/AuthContext.tsx | 44 + .../src/frontend/src/context/ThemeContext.tsx | 40 + .../src/context/themeContextUtils.tsx | 8 + .../src/frontend/src/context/useTheme.tsx | 0 .../src/frontend/src/index.css | 99 + .../01_Agentic_SDLC/src/frontend/src/main.tsx | 15 + .../src/frontend/src/vite-env.d.ts | 1 + .../src/frontend/tailwind.config.js | 36 + .../tests/e2e/product-navigation.spec.ts | 76 + .../tests/features/product-navigation.feature | 23 + .../src/frontend/tsconfig.json | 23 + .../src/frontend/vite.config.ts | 15 + .../01_Agentic_SDLC/src/package-lock.json | 6 + .../walkthrough/challenge-04/solution-04.md | 2 +- 244 files changed, 29870 insertions(+), 16 deletions(-) delete mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/images/README.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/infra/README.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/infra/main.bicep create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/infra/main.parameters.json create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/infra/modules/containerapp-env.bicep create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/infra/modules/containerapp.bicep create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/infra/modules/loganalytics.bicep create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/infra/modules/registry.bicep create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/scripts/README.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/scripts/seed-backlog.ps1 create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/scripts/seed-backlog.sh create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/Makefile create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/README.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs-tests/OctoSupply.Api.Tests.csproj create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs-tests/Repositories/SuppliersRepositoryTests.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/BranchesController.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/DeliveriesController.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/HeadquartersController.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/OrderDetailDeliveriesController.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/OrderDetailsController.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/OrdersController.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/ProductsController.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/SuppliersController.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Data/DatabaseMigrator.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Data/SqliteConnectionFactory.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Branch.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Delivery.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Headquarters.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Order.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/OrderDetail.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/OrderDetailDelivery.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Product.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Supplier.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/OctoSupply.Api.csproj create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Program.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Properties/launchSettings.json create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/README.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/BranchesRepository.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/DeliveriesRepository.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/HeadquartersRepository.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/OrderDetailDeliveriesRepository.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/OrderDetailsRepository.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/OrdersRepository.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/ProductsRepository.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/SuppliersRepository.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Utils/ApiExceptions.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Utils/ErrorHandlingMiddleware.cs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/appsettings.Development.json create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/appsettings.json create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/README.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/pom.xml create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/Application.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/config/DatabaseConfig.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/config/DatabaseInitializer.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/config/WebConfig.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/BranchesController.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/ControllerValidation.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/DeliveriesController.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/HeadquartersController.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/OrderDetailDeliveriesController.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/OrderDetailsController.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/OrdersController.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/ProductsController.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/RootController.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/SuppliersController.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/ApiException.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/ConflictException.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/DatabaseException.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/GlobalExceptionHandler.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/NotFoundException.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/ValidationException.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/BranchModel.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/DeliveryModel.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/HeadquartersModel.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/OrderDetailDeliveryModel.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/OrderDetailModel.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/OrderModel.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/ProductModel.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/SupplierModel.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/BranchesRepository.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/DeliveriesRepository.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/HeadquartersRepository.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/OrderDetailDeliveriesRepository.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/OrderDetailsRepository.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/OrdersRepository.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/ProductsRepository.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/SqlUpdateBuilder.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/SuppliersRepository.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/resources/application.properties create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/test/java/com/octocat/supply/ApiEndpointsTest.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/test/java/com/octocat/supply/RootControllerTest.java create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/test/resources/application.properties create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/README.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/database/__init__.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/database/migrate.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/database/sqlite.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/main.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/__init__.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/branch.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/delivery.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/headquarters.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/order.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/order_detail.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/order_detail_delivery.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/product.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/supplier.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/__init__.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/_helpers.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/branches.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/deliveries.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/headquarters.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/order_detail_deliveries.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/order_details.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/orders.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/products.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/suppliers.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/requirements.txt create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/__init__.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/branches.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/deliveries.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/headquarters.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/order_detail_deliveries.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/order_details.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/orders.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/products.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/suppliers.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/tests/test_main.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/utils/__init__.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/utils/errors.py create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/.dockerignore create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/.gitignore create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/Dockerfile create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/ERD.png create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/api-swagger.json create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/ca.key create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/eslint.config.mjs create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/package-lock.json create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/package.json create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/db/config.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/db/migrate.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/db/seed.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/db/sqlite.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/generate-swagger.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/index.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/init-db.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/branch.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/delivery.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/headquarters.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/order.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/orderDetail.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/orderDetailDelivery.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/product.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/supplier.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/branchesRepo.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/deliveriesRepo.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/headquartersRepo.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/orderDetailDeliveriesRepo.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/orderDetailsRepo.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/ordersRepo.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/productsRepo.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/suppliersRepo.test.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/suppliersRepo.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/branch.test.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/branch.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/delivery.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/headquarters.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/order.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/orderDetail.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/orderDetailDelivery.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/product.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/supplier.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/seedData.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/utils/errors.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/utils/sql.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/tsconfig.json create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/vitest.config.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/database/migrations/001_init.sql create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/database/migrations/002_add_supplier_status_fields.sql create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/database/seed/001_suppliers.sql create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/database/seed/002_headquarters.sql create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/database/seed/003_branches.sql create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/database/seed/004_products.sql create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/docs/architecture.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/docs/build.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/docs/design/cart.png create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/docs/design/footer.png create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/docs/design/item-list.png create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/docs/design/main.png create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/docs/design/order-tracking-prototype.png create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/docs/sqlite-integration.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/docs/tao.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/.dockerignore create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/.gitignore create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/Dockerfile create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/README.md create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/entrypoint.sh create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/eslint.config.js create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/index.html create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/nginx.conf create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/package-lock.json create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/package.json create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/playwright.config.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/postcss.config.js create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/public/auto-groomer.png create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/public/catflix.png create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/public/chirp-cam.png create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/public/copilot.png create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/public/door-dash.png create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/public/feeder.png create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/public/hero.png create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/public/litter-box.png create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/public/runtime-config.js create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/public/scratch-pad.png create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/public/sleep-nest.png create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/public/smart-collar.png create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/public/smart-fountain.png create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/public/snack-vault.png create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/public/tracker-mat.png create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/src/App.tsx create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/src/api/config.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/src/components/About.tsx create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/src/components/Footer.tsx create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/src/components/Login.tsx create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/src/components/Navigation.tsx create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/src/components/Welcome.tsx create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/src/components/admin/AdminProducts.tsx create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/src/components/entity/product/ProductForm.tsx create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/src/components/entity/product/Products.tsx create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/src/context/AuthContext.tsx create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/src/context/ThemeContext.tsx create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/src/context/themeContextUtils.tsx create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/src/context/useTheme.tsx create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/src/index.css create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/src/main.tsx create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/src/vite-env.d.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/tailwind.config.js create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/tests/e2e/product-navigation.spec.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/tests/features/product-navigation.feature create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/tsconfig.json create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/frontend/vite.config.ts create mode 100644 03-Azure/01-04-AI/01_Agentic_SDLC/src/package-lock.json diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/Readme.md b/03-Azure/01-04-AI/01_Agentic_SDLC/Readme.md index 74994a5d7..a0804f2b4 100644 --- a/03-Azure/01-04-AI/01_Agentic_SDLC/Readme.md +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/Readme.md @@ -43,7 +43,7 @@ This lab is **not** a full explanation of GitHub Copilot or Azure as technologie - [Azure Container Apps](https://learn.microsoft.com/en-us/azure/container-apps/) - [Azure SRE Agent](https://learn.microsoft.com/en-us/azure/sre-agent/) -> **Companion application repository.** This MicroHack is delivered against a companion repo that contains the **Octocat Supply** application, the challenge scaffolding, and the mock organizational knowledge (WorkIQ) used in Challenge 2: **[Frank802/agentic-sdlc-hack](https://github.com/Frank802/agentic-sdlc-hack)**. Facilitators create a copy/fork of that repo per team before the event; participants work in their team's copy throughout. All in-repo paths referenced below (e.g. `src/`, `hackathon/`, `infra/`) are paths **inside that companion repo**. +> **What's included & the companion repo.** This MicroHack folder bundles the **Octocat Supply** application source ([`src/`](src/README.md)), the Azure infrastructure scaffold ([`infra/`](infra/README.md)), and helper [`scripts/`](scripts/README.md) — so the code and deployment assets ship with the MicroHack. The remaining scaffolding — the dev containers (`.devcontainer/`), repo custom instructions and custom agents/workflows (`.github/`), the Challenge 2 backlog and mock **WorkIQ** organizational knowledge (`hackathon/`), and the facilitator docs (`docs/`) — lives in the companion repo **[Frank802/agentic-sdlc-hack](https://github.com/Frank802/agentic-sdlc-hack)**. Facilitators create a copy/fork of that companion repo per team before the event; participants work in their team's copy, into which these bundled `src/` / `infra/` / `scripts/` folders drop in directly. ## MicroHack context diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-04.md b/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-04.md index ad5d654e1..ab58188f2 100644 --- a/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-04.md +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/challenges/challenge-04.md @@ -14,7 +14,7 @@ Deploy the full Octocat Supply application to **Microsoft Azure** using **Infras * **Configure securely** — Use GitHub secrets / **OIDC federated credentials** for Azure authentication; avoid hard-coded credentials. * **Deploy and verify** — Run the pipeline and confirm the application is reachable in Azure. -> **Optional starter scaffold (in the companion repo).** `infra/` (Bicep) and `.github/workflows/deploy.yml` sketch a **Container Apps + ACR + OIDC** topology so you don't start from a blank page. The meaningful design choices — SKUs, database/storage strategy, API ingress visibility, secrets, scaling — are intentionally left as `TODO`s. It removes boilerplate; it does **not** do the challenge for you. Use it, extend it, or replace it. See `infra/README.md`. +> **Optional starter scaffold (included in this folder).** [`infra/`](../infra/README.md) (Bicep) — bundled here — plus the companion repo's `.github/workflows/deploy.yml` sketch a **Container Apps + ACR + OIDC** topology so you don't start from a blank page. The meaningful design choices — SKUs, database/storage strategy, API ingress visibility, secrets, scaling — are intentionally left as `TODO`s. It removes boilerplate; it does **not** do the challenge for you. Use it, extend it, or replace it. See [`infra/README.md`](../infra/README.md). ## Success criteria diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/images/README.md b/03-Azure/01-04-AI/01_Agentic_SDLC/images/README.md deleted file mode 100644 index 1dcdf3453..000000000 --- a/03-Azure/01-04-AI/01_Agentic_SDLC/images/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Images - -Store screenshots and diagrams for the **Agentic SDLC MicroHack** in this folder and -reference them from the challenge and walkthrough Markdown with relative links, e.g.: - -```markdown -![Architecture](../images/architecture.png) -``` - -The high-level Agentic SDLC lifecycle is currently rendered as a Mermaid diagram -directly in [`../Readme.md`](../Readme.md). Add a rendered PNG here (for example an -architecture diagram of the Octocat Supply deployment on Azure, or challenge -screenshots) as the MicroHack grows. diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/infra/README.md b/03-Azure/01-04-AI/01_Agentic_SDLC/infra/README.md new file mode 100644 index 000000000..a88dcf525 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/infra/README.md @@ -0,0 +1,144 @@ +# `infra/` — Challenge 4 starter scaffold (optional) + +> **Optional starting point, not a required or "correct" answer.** This is a +> deliberately incomplete **skeleton** for [Challenge 4 — Deploy into Azure](../hackathon/challenge-4-azure-deploy.md). +> It removes blank-page boilerplate (structure, parameters, module wiring, OIDC +> plumbing) so your 60 minutes go into the interesting agentic work — authoring +> and refining the deploy with Copilot, deploying, and debugging — **not** +> scaffolding. The meaningful engineering decisions are left as clearly-marked +> `// TODO`s on purpose. Extend it, replace it, or ignore it. + +## Intended topology + +Azure **Container Apps** as the compute target: + +``` + Azure Container Registry (ACR) + │ (holds api + frontend images) + ▼ + ┌──────────── Container Apps Environment ────────────┐ + │ │ + │ frontend (nginx) api (Node/Express) │ + │ external ingress :80 ────► ingress :3000 │ + │ proxies /api via nginx (internal OR external)│ + │ │ + └────────────────────┬───────────────────────────────┘ + │ logs + ▼ + Log Analytics workspace +``` + +- **ACR** — stores the two images the apps pull. +- **Log Analytics workspace** — a hard dependency of the Container Apps + environment; provisioned first. +- **Container Apps Environment** — the shared boundary both apps run in. Apps in + the same environment can address each other by app name (service discovery). +- **`api` Container App** — target port **3000** (matches `src/api-ts/Dockerfile`, + which `EXPOSE`s 3000 and runs `npm start`). +- **`frontend` Container App** — external ingress on port **80** (matches + `src/frontend/Dockerfile`, nginx). It is configured with `API_HOST` / + `API_PORT` env vars pointing at the `api` app so nginx can reverse-proxy `/api` + (see `src/frontend/nginx.conf` + `src/frontend/entrypoint.sh`). + +## How the Bicep maps to the two Dockerfiles + +| Dockerfile | Port | Container App | Notes | +| --- | --- | --- | --- | +| `src/api-ts/Dockerfile` | `EXPOSE 3000` | `--api` | `targetPort: 3000`. Ingress internal-vs-external is a **TODO** decision. | +| `src/frontend/Dockerfile` | `EXPOSE 80` | `--frontend` | `targetPort: 80`, external. Gets `API_HOST` = the api app name and `API_PORT` = `3000`. The entrypoint also honours `API_PROTOCOL` (default `https`). | + +The workflow builds each image from its own context (`src/api-ts` and +`src/frontend`) and pushes to ACR; the Bicep then references those image tags. + +## Files + +| File | Purpose | +| --- | --- | +| `main.bicep` | `targetScope = 'resourceGroup'`. Wires ACR, Log Analytics, the environment, and the two apps by calling the modules. Declares parameters + outputs. | +| `modules/registry.bicep` | ACR (stub — SKU/admin/network are TODO). | +| `modules/loganalytics.bicep` | Log Analytics workspace (stub — retention/SKU TODO). | +| `modules/containerapp-env.bicep` | Container Apps managed environment. | +| `modules/containerapp.bicep` | Generic app module, reused for **both** api and frontend. | +| `main.parameters.json` | Placeholder parameter values with TODO comments. | + +## What's provided vs. deliberately left as `TODO` + +**Provided (so you don't start from a blank page):** + +- Module structure and the wiring between them. +- Sensible parameters (`location`, `namePrefix`, `environmentName`, image + references, `minReplicas` / `maxReplicas`) and outputs (ACR login server, + frontend URL, api FQDN). +- The port mapping (api `3000`, frontend `80`) and the `API_HOST` / `API_PORT` + proxy wiring between frontend and api. +- OIDC-based CI/CD plumbing in the workflow (no long-lived secrets). + +**Left as `TODO` (the decisions that make this a real deploy — do these):** + +- **SKUs** — ACR tier, Log Analytics retention, container CPU/memory. +- **api ingress visibility** — public (its own URL, easy debugging) vs. + internal-only (reached solely by the frontend inside the environment). +- **Database / storage strategy** — the api ships with an in-container + **SQLite** DB. In Container Apps that is **ephemeral** (it resets on every + revision/scale event). Choose one: keep it ephemeral for a demo, mount an + **Azure Files** volume to persist it, or move to a **managed DB** + (Azure SQL / PostgreSQL) and inject a connection string. *Not decided for you.* +- **Registry auth** — the scaffold defaults to ACR **admin credentials** for a + fast first deploy; the preferred approach is a **user-assigned managed + identity** with the `AcrPull` role (no secrets). Swap it in. +- **Env vars / secrets** — real app configuration and how it's referenced. +- **Scaling rules** — replica counts are set, but add real scale triggers + (HTTP concurrency, CPU, ...). +- **Service discovery** — confirm the frontend→api wiring works with whichever + ingress visibility you pick. + +## Deploy it manually + +```bash +# 1. Sanity-check the template compiles +az bicep build --file infra/main.bicep # or: bicep build infra/main.bicep + +# 2. Create a resource group +az group create --name --location + +# 3. Deploy (fill in the image references — see main.parameters.json TODOs) +az deployment group create \ + --resource-group \ + --template-file infra/main.bicep \ + --parameters infra/main.parameters.json \ + --parameters \ + apiImage=".azurecr.io/api:" \ + frontendImage=".azurecr.io/frontend:" + +# 4. Read the outputs (e.g. the public frontend URL) +az deployment group show -g -n main \ + --query properties.outputs.frontendUrl.value -o tsv +``` + +> **Chicken-and-egg note:** the images live in the ACR this template creates, so +> on a first run either point `apiImage` / `frontendImage` at a temporary public +> placeholder image, deploy once to create the ACR, then build/push and redeploy +> — **or** split provisioning: create the ACR first, push images, then deploy the +> apps. The workflow leaves this ordering as a TODO for you to decide. + +## Deploy it via the workflow + +[`.github/workflows/deploy.yml`](../.github/workflows/deploy.yml) is an +OIDC-wired scaffold with `# TODO` steps (checkout → `azure/login` → build/push → +`az group create` → `az deployment group create` → update apps). It is **inert +by default**: the `push` trigger is commented out and it needs the OIDC secrets +below. Set those up, finish the TODO steps with Copilot, then run it from the +**Actions** tab (`workflow_dispatch`). + +Required GitHub **secrets**: `AZURE_CLIENT_ID`, `AZURE_TENANT_ID`, +`AZURE_SUBSCRIPTION_ID`. Required **variables**: `AZURE_RESOURCE_GROUP`, +`AZURE_LOCATION`. See the header comment in the workflow for the federated- +credential subject (`repo:/:ref:refs/heads/main`). No client secret +is stored — auth is OIDC only. **Setting up the OIDC federated credential is the +single most common stumbling block — do it first and verify with a trivial login.** + +## Tooling note + +The repo's `.vscode/mcp.json` preconfigures an **Azure MCP Server** +(`@azure/mcp`). You can use it during the challenge to explore/verify Azure +resources — it's handy but not required by this scaffold. diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/infra/main.bicep b/03-Azure/01-04-AI/01_Agentic_SDLC/infra/main.bicep new file mode 100644 index 000000000..244e9b52d --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/infra/main.bicep @@ -0,0 +1,193 @@ +// ============================================================================= +// main.bicep — Challenge 4 starter scaffold (OPTIONAL, SKELETON — not an answer key) +// ----------------------------------------------------------------------------- +// Target architecture expressed here (Azure Container Apps): +// +// ACR ──images──> ┌─────────────── Container Apps Environment ───────────────┐ +// │ frontend (nginx, :80, external) ──proxy──> api (:3000) │ +// └───────────────────────────────────────────────────────────┘ +// │ logs +// Log Analytics workspace +// +// The frontend's nginx proxies /api to the api app using API_HOST / API_PORT +// (see src/frontend/entrypoint.sh + nginx.conf). Within one Container Apps +// environment, apps can address each other by app name, which is what makes +// that service discovery work. +// +// WHAT'S PROVIDED: the wiring, parameters, module structure, outputs. +// WHAT'S LEFT TO YOU (look for // TODO): SKUs, ingress visibility for the api, +// exact env/secrets, scaling rules, and the database/storage strategy. +// +// Deploy manually: +// az group create -n -l +// az deployment group create -g -f infra/main.bicep -p infra/main.parameters.json +// ============================================================================= + +targetScope = 'resourceGroup' + +@description('Azure region for all resources. Defaults to the resource group location.') +param location string = resourceGroup().location + +@description('Short prefix used to derive resource names (lowercase letters/numbers).') +@minLength(2) +@maxLength(12) +param namePrefix string = 'octocat' + +@description('Environment name / suffix (e.g. dev, test, hack). Keeps names unique per env.') +param environmentName string = 'dev' + +@description('Container image reference for the API (e.g. .azurecr.io/api:).') +param apiImage string + +@description('Container image reference for the frontend (e.g. .azurecr.io/frontend:).') +param frontendImage string + +@description('Minimum replicas for each app.') +@minValue(0) +param minReplicas int = 1 + +@description('Maximum replicas for each app.') +@minValue(1) +param maxReplicas int = 3 + +// TODO: The scaffold passes ACR admin credentials into the frontend/api modules +// for a quick first deploy. Prefer a user-assigned managed identity with +// AcrPull and remove these entirely. Left as params so nothing is baked in. +@description('ACR admin username (leave empty to switch modules to managed identity).') +param registryUsername string = '' + +@description('ACR admin password (leave empty to switch modules to managed identity).') +@secure() +param registryPassword string = '' + +// ----------------------------------------------------------------------------- +// Derived names. Registry names must be globally unique and alphanumeric only. +// ----------------------------------------------------------------------------- +var baseName = '${namePrefix}-${environmentName}' +var registryName = toLower(replace('${namePrefix}${environmentName}acr', '-', '')) +var logAnalyticsName = '${baseName}-logs' +var environmentResourceName = '${baseName}-env' +var apiAppName = '${baseName}-api' +var frontendAppName = '${baseName}-frontend' + +var commonTags = { + project: 'octocat-supply' + challenge: 'challenge-4-azure-deploy' + managedBy: 'bicep' + environment: environmentName +} + +// ----------------------------------------------------------------------------- +// Container Registry +// ----------------------------------------------------------------------------- +module registry 'modules/registry.bicep' = { + name: 'registry' + params: { + location: location + registryName: registryName + tags: commonTags + } +} + +// ----------------------------------------------------------------------------- +// Log Analytics (dependency of the Container Apps environment) +// ----------------------------------------------------------------------------- +module logAnalytics 'modules/loganalytics.bicep' = { + name: 'loganalytics' + params: { + location: location + workspaceName: logAnalyticsName + tags: commonTags + } +} + +// ----------------------------------------------------------------------------- +// Container Apps managed environment +// ----------------------------------------------------------------------------- +module environment 'modules/containerapp-env.bicep' = { + name: 'containerapp-env' + params: { + location: location + environmentName: environmentResourceName + logAnalyticsWorkspaceId: logAnalytics.outputs.workspaceId + tags: commonTags + } +} + +// ----------------------------------------------------------------------------- +// API container app — listens on 3000. +// ----------------------------------------------------------------------------- +// TODO: Ingress visibility decision. `externalIngress: true` gives the api its +// own public URL (handy for debugging/tests). Set it to false to make the +// api internal-only and reachable solely by the frontend inside the env — +// usually the more correct production choice. Pick one deliberately. +module apiApp 'modules/containerapp.bicep' = { + name: 'api-app' + params: { + location: location + appName: apiAppName + environmentId: environment.outputs.environmentId + image: apiImage + targetPort: 3000 + externalIngress: true + registryLoginServer: registry.outputs.loginServer + registryUsername: registryUsername + registryPassword: registryPassword + minReplicas: minReplicas + maxReplicas: maxReplicas + tags: commonTags + // TODO: Add the api's runtime env vars / secrets here (e.g. DB connection + // string once you pick a database strategy). + env: [] + } +} + +// ----------------------------------------------------------------------------- +// Frontend container app — nginx on 80, external, proxying to the api. +// ----------------------------------------------------------------------------- +// The API_HOST/API_PORT env vars tell nginx where the api lives. Using the api +// app name resolves inside the environment for service discovery. +module frontendApp 'modules/containerapp.bicep' = { + name: 'frontend-app' + params: { + location: location + appName: frontendAppName + environmentId: environment.outputs.environmentId + image: frontendImage + targetPort: 80 + externalIngress: true + registryLoginServer: registry.outputs.loginServer + registryUsername: registryUsername + registryPassword: registryPassword + minReplicas: minReplicas + maxReplicas: maxReplicas + tags: commonTags + env: [ + { + name: 'API_HOST' + value: apiAppName + } + { + name: 'API_PORT' + // TODO: If you make the api internal-only, confirm the frontend still + // reaches it on 3000 within the environment (it should). If you + // front the api on 443/https externally, adjust API_PORT/PROTOCOL. + value: '3000' + } + // TODO: The entrypoint also honours API_PROTOCOL (default https). Add it + // here if your ingress/scheme requires it. + ] + } +} + +// ----------------------------------------------------------------------------- +// Outputs +// ----------------------------------------------------------------------------- +@description('ACR login server — push images here and reference them in the apps.') +output acrLoginServer string = registry.outputs.loginServer + +@description('Public URL of the frontend app.') +output frontendUrl string = 'https://${frontendApp.outputs.fqdn}' + +@description('FQDN of the api app (public only while externalIngress is true).') +output apiFqdn string = apiApp.outputs.fqdn diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/infra/main.parameters.json b/03-Azure/01-04-AI/01_Agentic_SDLC/infra/main.parameters.json new file mode 100644 index 000000000..8b334a581 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/infra/main.parameters.json @@ -0,0 +1,33 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "_comment_location": "TODO: Set a region with Container Apps capacity (e.g. eastus, westeurope). Defaults to the resource group location if omitted.", + "namePrefix": { + "value": "octocat" + }, + "environmentName": { + "value": "dev" + }, + "_comment_images": "TODO: Replace with your registry login server once the ACR name is known. The workflow builds/pushes these tags. On a first bootstrap you may point at a public placeholder image until the real images exist.", + "apiImage": { + "value": ".azurecr.io/api:latest" + }, + "frontendImage": { + "value": ".azurecr.io/frontend:latest" + }, + "minReplicas": { + "value": 1 + }, + "maxReplicas": { + "value": 3 + }, + "_comment_registry_creds": "TODO: These enable the simplest ACR-admin-credentials path for a first deploy. Prefer a user-assigned managed identity with AcrPull and leave these empty. Never commit real values — pass them at deploy time (e.g. from the workflow) instead.", + "registryUsername": { + "value": "" + }, + "registryPassword": { + "value": "" + } + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/infra/modules/containerapp-env.bicep b/03-Azure/01-04-AI/01_Agentic_SDLC/infra/modules/containerapp-env.bicep new file mode 100644 index 000000000..83334ee6a --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/infra/modules/containerapp-env.bicep @@ -0,0 +1,50 @@ +// ============================================================================= +// Module: containerapp-env.bicep (Azure Container Apps managed environment) +// ----------------------------------------------------------------------------- +// The shared environment both apps (api + frontend) run in. Apps in the same +// environment can reach each other by app name for service discovery — this is +// what lets the frontend's nginx proxy to the api (see API_HOST/API_PORT). +// +// STARTER SKELETON — compiles as-is; decisions left as // TODO. +// ============================================================================= + +@description('Azure region for the environment.') +param location string + +@description('Name of the Container Apps managed environment.') +param environmentName string + +@description('Resource ID of the Log Analytics workspace to send logs to.') +param logAnalyticsWorkspaceId string + +@description('Tags applied to the environment.') +param tags object = {} + +// Derive the workspace customerId + shared key from the passed-in workspace id. +resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' existing = { + name: last(split(logAnalyticsWorkspaceId, '/')) +} + +resource environment 'Microsoft.App/managedEnvironments@2024-03-01' = { + name: environmentName + location: location + tags: tags + properties: { + appLogsConfiguration: { + destination: 'log-analytics' + logAnalyticsConfiguration: { + customerId: logAnalyticsWorkspace.properties.customerId + sharedKey: logAnalyticsWorkspace.listKeys().primarySharedKey + } + } + // TODO: Decide whether you need a custom VNet (internal-only environment), + // zone redundancy, or workload profiles (Consumption vs Dedicated). + // The default is the public, Consumption-only profile — fine to start. + } +} + +@description('The resource ID of the managed environment.') +output environmentId string = environment.id + +@description('The default domain of the environment (apps get .).') +output defaultDomain string = environment.properties.defaultDomain diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/infra/modules/containerapp.bicep b/03-Azure/01-04-AI/01_Agentic_SDLC/infra/modules/containerapp.bicep new file mode 100644 index 000000000..bae5bab8e --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/infra/modules/containerapp.bicep @@ -0,0 +1,141 @@ +// ============================================================================= +// Module: containerapp.bicep (generic Container App — reused for api + frontend) +// ----------------------------------------------------------------------------- +// One reusable module for BOTH workloads: +// - api: target port 3000, ingress (internal or external — a TODO decision) +// - frontend: target port 80, external ingress, with API_HOST/API_PORT env +// vars pointing at the api app so nginx can proxy /api. +// +// STARTER SKELETON — compiles as-is; decisions left as // TODO. +// ============================================================================= + +@description('Azure region for the app.') +param location string + +@description('Name of the container app (also its DNS label within the environment).') +param appName string + +@description('Resource ID of the Container Apps managed environment.') +param environmentId string + +@description('Fully-qualified image reference, e.g. myregistry.azurecr.io/api:latest.') +param image string + +@description('The port the container listens on (api=3000, frontend=80).') +param targetPort int + +@description('Whether ingress is exposed externally (public). Set false for internal-only.') +param externalIngress bool = true + +@description('Login server of the ACR the image is pulled from.') +param registryLoginServer string + +@description('Environment variables for the container. Array of { name, value } objects.') +param env array = [] + +@description('Tags applied to the app.') +param tags object = {} + +// TODO: Scaling. These defaults keep at least one replica warm. For a scale-to- +// zero API set minReplicas: 0, and add custom scale rules (HTTP +// concurrency, CPU, queue length, ...) rather than relying on replica +// counts alone. +@minValue(0) +param minReplicas int = 1 + +@minValue(1) +param maxReplicas int = 3 + +// TODO: Right-size CPU/memory. 0.5 vCPU / 1Gi is a reasonable starting point; +// valid combinations are constrained (see Container Apps docs). +param cpu string = '0.5' +param memory string = '1.0Gi' + +// ----------------------------------------------------------------------------- +// Registry authentication +// ----------------------------------------------------------------------------- +// TODO: This scaffold authenticates to ACR with the admin username/password +// passed in as a secret (simplest path to a first deploy). The PREFERRED +// approach is a user-assigned managed identity with the AcrPull role and +// `identity: ''` on the registry entry — no +// secrets at all. Swap this out once you wire up the identity + role. +@description('ACR admin username (leave empty when using managed identity).') +param registryUsername string = '' + +@description('ACR admin password (leave empty when using managed identity).') +@secure() +param registryPassword string = '' + +var useAdminCreds = !empty(registryUsername) + +resource containerApp 'Microsoft.App/containerApps@2024-03-01' = { + name: appName + location: location + tags: tags + properties: { + managedEnvironmentId: environmentId + configuration: { + ingress: { + external: externalIngress + targetPort: targetPort + // TODO: For the api you may want `transport: 'http'` and to restrict + // traffic; for the frontend the defaults are usually fine. + traffic: [ + { + weight: 100 + latestRevision: true + } + ] + } + // Only attach registry credentials when using admin creds. With a managed + // identity you would set `identity` here and omit the secret. + registries: useAdminCreds ? [ + { + server: registryLoginServer + username: registryUsername + passwordSecretRef: 'registry-password' + } + ] : [] + secrets: useAdminCreds ? [ + { + name: 'registry-password' + value: registryPassword + } + ] : [] + // TODO: Add application secrets here (DB connection strings, API keys, ...) + // and reference them from env via secretRef instead of value. + } + template: { + containers: [ + { + name: appName + image: image + resources: { + cpu: json(cpu) + memory: memory + } + env: env + // TODO: Add liveness/readiness probes so revisions only take traffic + // once healthy (e.g. GET / on the frontend, a health route on + // the api). Container Apps supports `probes: [...]` here. + } + ] + scale: { + minReplicas: minReplicas + maxReplicas: maxReplicas + // TODO: Add `rules: [...]` for real autoscaling triggers. + } + // TODO: Database/storage decision. If you keep the api's SQLite DB inside + // the container it is EPHEMERAL — it resets on every revision/scale + // event. To persist, either mount an Azure Files volume here + // (`volumes` + `volumeMounts`) or move to a managed DB (Azure SQL / + // Postgres) and inject a connection string. This is a team decision. + } + } +} + +@description('The fully-qualified domain name of the app (empty when ingress is disabled).') +output fqdn string = containerApp.properties.configuration.ingress.fqdn + +@description('The name of the container app.') +output appName string = containerApp.name diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/infra/modules/loganalytics.bicep b/03-Azure/01-04-AI/01_Agentic_SDLC/infra/modules/loganalytics.bicep new file mode 100644 index 000000000..5e7471a52 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/infra/modules/loganalytics.bicep @@ -0,0 +1,43 @@ +// ============================================================================= +// Module: loganalytics.bicep (Log Analytics workspace) +// ----------------------------------------------------------------------------- +// The Container Apps Environment sends logs here. It is a hard dependency of the +// managed environment, so we provision it first and pass its id/key upstream. +// +// STARTER SKELETON — compiles as-is; decisions left as // TODO. +// ============================================================================= + +@description('Azure region for the workspace.') +param location string + +@description('Name of the Log Analytics workspace.') +param workspaceName string + +@description('Tags applied to the workspace.') +param tags object = {} + +// TODO: Tune retention for cost vs. how long you need logs during the event. +// 30 days is the free-tier default. +@minValue(30) +@maxValue(730) +param retentionInDays int = 30 + +resource workspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' = { + name: workspaceName + location: location + tags: tags + properties: { + // TODO: PerGB2018 is the standard pay-as-you-go SKU. Revisit if you have a + // committed-tier or a capacity reservation. + sku: { + name: 'PerGB2018' + } + retentionInDays: retentionInDays + } +} + +@description('The resource ID of the Log Analytics workspace.') +output workspaceId string = workspace.id + +@description('The customer/workspace GUID used by the Container Apps environment.') +output customerId string = workspace.properties.customerId diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/infra/modules/registry.bicep b/03-Azure/01-04-AI/01_Agentic_SDLC/infra/modules/registry.bicep new file mode 100644 index 000000000..7acb6f7a0 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/infra/modules/registry.bicep @@ -0,0 +1,56 @@ +// ============================================================================= +// Module: registry.bicep (Azure Container Registry) +// ----------------------------------------------------------------------------- +// Holds the two application images (api, frontend) that the Container Apps pull. +// +// This is a STARTER SKELETON. The core resource + key params are wired so the +// template compiles, but the meaningful decisions are left as // TODO for you. +// ============================================================================= + +@description('Azure region for the registry.') +param location string + +@description('Globally-unique name for the container registry (alphanumeric, 5-50 chars).') +param registryName string + +@description('Tags applied to the registry.') +param tags object = {} + +// TODO: Decide the SKU. Basic is cheapest and fine for a hackathon; Standard/ +// Premium add throughput, geo-replication, private endpoints, etc. +// Ask Copilot for Well-Architected guidance if unsure. +@allowed([ + 'Basic' + 'Standard' + 'Premium' +]) +param sku string = 'Basic' + +// TODO: For OIDC/managed-identity pulls you can (and ideally should) keep the +// admin user DISABLED and grant the Container Apps' identity AcrPull +// instead. The scaffold defaults to enabled to keep first-run simple — +// flip this to false once you wire up role assignments. +param adminUserEnabled bool = true + +resource registry 'Microsoft.ContainerRegistry/registries@2023-11-01-preview' = { + name: registryName + location: location + tags: tags + sku: { + name: sku + } + properties: { + adminUserEnabled: adminUserEnabled + // TODO: Consider `publicNetworkAccess: 'Disabled'` + private endpoints for + // a hardened setup, and `anonymousPullEnabled: false`. + } +} + +@description('The login server host name of the registry (e.g. myregistry.azurecr.io).') +output loginServer string = registry.properties.loginServer + +@description('The resource ID of the registry (useful for role assignments).') +output registryId string = registry.id + +@description('The name of the registry.') +output registryName string = registry.name diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/scripts/README.md b/03-Azure/01-04-AI/01_Agentic_SDLC/scripts/README.md new file mode 100644 index 000000000..7fec7b641 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/scripts/README.md @@ -0,0 +1,70 @@ +# Scripts + +Utility scripts for running the Agentic SDLC Hackathon. + +## `seed-backlog.sh` / `seed-backlog.ps1` — Seed the Challenge 2 backlog + +These scripts create the [Challenge 2 backlog](../hackathon/backlog.md) as real **GitHub Issues** in a +repo, so teams pick from a real, prioritised, labelled list instead of inventing a backlog. The seeded +issues are also what an MCP server can pull as **real backlog context** in the Challenge 2 optional stretch. + +Both scripts do the same thing — use the `.sh` on macOS/Linux and the `.ps1` on Windows. + +### What they do + +- Ensure the labels `backlog`, `priority:high`, `priority:medium`, and `priority:low` exist (created if + missing; existing labels are tolerated). +- Create one issue per backlog item, with a title, a body derived from `hackathon/backlog.md` + (description + acceptance criteria + affected layers), and the `backlog` + priority labels. +- Skip any item whose title already matches an **open** issue, so the scripts are safe to re-run. +- Print a summary of labels ensured, issues created, and issues skipped. + +By default **8 issues** are seeded — one per item in `hackathon/backlog.md`. To change the set, edit the +backlog items in the script (and keep it in sync with `hackathon/backlog.md`). + +### Prerequisites + +- **GitHub CLI** installed — https://cli.github.com/ +- **Authenticated** with `repo` scope — `gh auth login` + +If `gh` is missing or unauthenticated, the scripts stop with a clear, actionable message before making +any changes. + +### Usage + +**Bash (macOS / Linux):** + +```bash +# Seed the current repo (the one gh resolves for this directory) +./scripts/seed-backlog.sh + +# Target a specific team repo or fork +./scripts/seed-backlog.sh --repo octo-org/team-1 + +# Preview only — prints what would be created, no API calls +./scripts/seed-backlog.sh --dry-run +``` + +**PowerShell (Windows):** + +```powershell +# Seed the current repo +./scripts/seed-backlog.ps1 + +# Target a specific team repo or fork +./scripts/seed-backlog.ps1 -Repo octo-org/team-1 + +# Preview only — no API calls +./scripts/seed-backlog.ps1 -DryRun +``` + +> On macOS/Linux you may need to make the script executable first: `chmod +x scripts/seed-backlog.sh`. + +### When to run it (event flow) + +- **Pre-event, per team repo/fork.** As part of repo prep (see `docs/.proctor/PROCTOR_GUIDE.md` → + PRE-EVENT ADMIN SETUP), run the seeder against each team's repo/fork so the backlog is already there + when teams reach Challenge 2. +- **Do a `--dry-run` first** to confirm the target repo and see the list before creating anything. +- It's safe to re-run if a repo was missed or you want to top up after manual edits — duplicates are + skipped by title. diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/scripts/seed-backlog.ps1 b/03-Azure/01-04-AI/01_Agentic_SDLC/scripts/seed-backlog.ps1 new file mode 100644 index 000000000..39cdf6703 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/scripts/seed-backlog.ps1 @@ -0,0 +1,262 @@ +<# +.SYNOPSIS + Seed the Challenge 2 backlog into a GitHub repo as Issues. + +.DESCRIPTION + Creates one GitHub Issue per item in hackathon/backlog.md, so teams can pick from a real, + prioritised, labelled list instead of inventing a backlog. The same issues are what an MCP + server can pull as real backlog context in the Challenge 2 optional stretch. + + Labels (backlog, priority:high|medium|low) are ensured first. The script is safe to re-run: + open issues with an identical title are skipped rather than duplicated. + +.PARAMETER Repo + Target a specific repo or fork (e.g. a team repo), in form. + Defaults to the repo gh resolves for the current directory. + +.PARAMETER DryRun + Print what WOULD be created without calling the GitHub API. + +.NOTES + PREREQUISITES + - GitHub CLI installed: https://cli.github.com/ + - Authenticated: gh auth login (needs 'repo' scope to create issues/labels) + +.EXAMPLE + ./scripts/seed-backlog.ps1 + Seed the current repo. + +.EXAMPLE + ./scripts/seed-backlog.ps1 -Repo octo-org/team-1 + Seed a specific team repo/fork. + +.EXAMPLE + ./scripts/seed-backlog.ps1 -DryRun + Preview only — no API calls. +#> +[CmdletBinding()] +param( + [string]$Repo = "", + [switch]$DryRun +) + +$ErrorActionPreference = "Stop" + +# gh --repo args (empty when targeting the current repo) +$RepoArgs = @() +if ($Repo -ne "") { + $RepoArgs = @("--repo", $Repo) +} + +# --------------------------------------------------------------------------- +# Pre-flight checks: gh installed + authenticated +# --------------------------------------------------------------------------- +if (-not (Get-Command gh -ErrorAction SilentlyContinue)) { + Write-Error "GitHub CLI (gh) is not installed. Install it from https://cli.github.com/ and re-run this script." + exit 1 +} + +gh auth status *> $null +if ($LASTEXITCODE -ne 0) { + Write-Error "GitHub CLI is not authenticated. Run 'gh auth login' (with 'repo' scope) and re-run this script." + exit 1 +} + +# --------------------------------------------------------------------------- +# Label definitions +# --------------------------------------------------------------------------- +$Labels = @( + @{ Name = "backlog"; Color = "0e8a16"; Description = "Challenge 2 backlog item" }, + @{ Name = "priority:high"; Color = "b60205"; Description = "High priority" }, + @{ Name = "priority:medium"; Color = "fbca04"; Description = "Medium priority" }, + @{ Name = "priority:low"; Color = "0e8a16"; Description = "Low priority" } +) + +# --------------------------------------------------------------------------- +# Backlog items (kept in sync with hackathon/backlog.md and seed-backlog.sh) +# --------------------------------------------------------------------------- +$Items = @( + @{ + Title = "Payment integration for the cart" + Priority = "High"; Size = "M"; Layers = "frontend, API" + Body = "As a customer, I want to pay for the items in my cart so that I can complete a purchase and turn my cart into a confirmed order. This is the natural continuation of the cart feature from Challenge 1." + Ac = @( + "A customer can start a checkout from the cart and submit payment details through a dedicated flow.", + "A successful payment converts the cart into an order (with order details) via the API.", + "Payment configuration (keys/provider) is read from environment variables — no secrets in source.", + "Failed or declined payments surface a clear error and leave the cart intact." + ) + }, + @{ + Title = "Order history" + Priority = "Medium"; Size = "M"; Layers = "frontend, API" + Body = "As a customer, I want to see a list of my past orders and open any one of them so that I can review what I bought and when." + Ac = @( + "The API exposes an endpoint that returns orders (with their order details) for a customer/branch.", + "The frontend shows an order-history list with date, status, and total per order.", + "Selecting an order shows its line items (product, quantity, unit price).", + "Empty state is handled gracefully when there are no orders yet." + ) + }, + @{ + Title = "Product search & filtering" + Priority = "Medium"; Size = "M"; Layers = "frontend, API" + Body = "As a customer, I want to search and filter the product catalogue so that I can quickly find the products I need instead of scrolling the whole list." + Ac = @( + "The products endpoint accepts query parameters for a text search (name/SKU) and at least one filter (e.g. supplier or price range).", + "The products page has a search box and filter control wired to the API.", + "Results update to reflect the active search/filter, and clearing them restores the full list.", + "Search is case-insensitive and handles ""no results"" cleanly." + ) + }, + @{ + Title = "Inventory management / stock levels" + Priority = "High"; Size = "L"; Layers = "frontend, API, database" + Body = "As a branch manager, I want each product to track a stock level so that customers can't order more than is available and staff can see what needs restocking." + Ac = @( + "Products carry a stock/quantity-on-hand value (schema/migration added following existing patterns).", + "The API returns stock levels and prevents ordering more than the available quantity.", + "The frontend shows stock status (e.g. in stock / low / out of stock) on product views.", + "Placing an order decrements the relevant stock, and the change is covered by tests." + ) + }, + @{ + Title = "Supplier & branch management view" + Priority = "Medium"; Size = "M"; Layers = "frontend, API" + Body = "As an admin, I want to view and manage suppliers and branches so that I can keep the organisation's supply-chain data accurate, mirroring the existing product admin experience." + Ac = @( + "An admin view lists suppliers (and/or branches) using the existing admin UI patterns.", + "An admin can create or edit a supplier/branch through the API.", + "Basic validation is applied (e.g. required name) with consistent error responses.", + "The view is reachable from the existing admin navigation." + ) + }, + @{ + Title = "Delivery tracking & status" + Priority = "Medium"; Size = "M"; Layers = "frontend, API" + Body = "As a branch manager, I want to see deliveries and their status so that I can track incoming stock from suppliers against the orders that need it." + Ac = @( + "The API exposes deliveries with their status and links to the related order details.", + "The frontend shows a deliveries list with supplier, date, and status.", + "A delivery's status can be advanced (e.g. pending → shipped → delivered) via the API.", + "Status changes are validated and reflected in the UI." + ) + }, + @{ + Title = "Order status workflow" + Priority = "Medium"; Size = "S–M"; Layers = "frontend, API" + Body = "As a branch manager, I want to move an order through a clear set of statuses so that everyone can see where each order stands from placement to fulfilment." + Ac = @( + "Orders support a defined set of statuses (e.g. pending → confirmed → shipped → delivered / cancelled).", + "The API only allows valid status transitions and rejects invalid ones with a clear error.", + "The frontend shows the current status and allows an authorised user to advance it.", + "The transition rules are covered by unit tests." + ) + }, + @{ + Title = "Cart quantity validation" + Priority = "Low"; Size = "S"; Layers = "frontend, API" + Body = "As a customer, I want the cart to reject nonsensical quantities so that I can't accidentally order zero, a negative amount, or a non-numeric quantity." + Ac = @( + "Quantities must be positive integers; invalid values are rejected on both the API and the UI.", + "The API returns a consistent validation error for bad quantities.", + "The cart UI shows an inline message and blocks the update/checkout until it's fixed.", + "The validation logic has unit-test coverage." + ) + } +) + +# --------------------------------------------------------------------------- +# Ensure labels exist +# --------------------------------------------------------------------------- +Write-Host "==> Ensuring labels exist..." +$LabelsEnsured = 0 +foreach ($label in $Labels) { + if ($DryRun) { + Write-Host " [dry-run] would ensure label: $($label.Name)" + $LabelsEnsured++ + continue + } + # 'gh label create --force' creates or updates, so it tolerates existing labels. + gh label create $label.Name --color $label.Color --description $label.Description --force @RepoArgs *> $null + if ($LASTEXITCODE -eq 0) { + Write-Host " ensured label: $($label.Name)" + $LabelsEnsured++ + } + else { + Write-Warning "could not ensure label '$($label.Name)' (continuing)" + } +} + +# --------------------------------------------------------------------------- +# Fetch existing open issue titles once (for duplicate detection) +# --------------------------------------------------------------------------- +$ExistingTitles = @() +if (-not $DryRun) { + $raw = gh issue list --state open --limit 200 --json title --jq ".[].title" @RepoArgs 2>$null + if ($LASTEXITCODE -eq 0 -and $raw) { + $ExistingTitles = @($raw -split "`n" | ForEach-Object { $_.Trim() } | Where-Object { $_ -ne "" }) + } +} + +# --------------------------------------------------------------------------- +# Create issues +# --------------------------------------------------------------------------- +Write-Host "==> Seeding backlog issues..." +$Created = 0 +$Skipped = 0 + +foreach ($item in $Items) { + $prioLabel = "priority:" + $item.Priority.ToLower() + + $acBlock = ($item.Ac | ForEach-Object { "- [ ] $_" }) -join "`n" + $issueBody = @" +$($item.Body) + +**Priority:** $($item.Priority) | **Size:** $($item.Size) + +**Affected layers:** $($item.Layers) + +**Acceptance criteria** + +$acBlock + +_Seeded from hackathon/backlog.md for Challenge 2._ +"@ + + if ($ExistingTitles -contains $item.Title) { + Write-Host " skip (already exists): $($item.Title)" + $Skipped++ + continue + } + + if ($DryRun) { + Write-Host " [dry-run] would create issue: $($item.Title) [backlog, $prioLabel]" + $Created++ + continue + } + + gh issue create --title $item.Title --body $issueBody --label "backlog" --label $prioLabel @RepoArgs *> $null + if ($LASTEXITCODE -eq 0) { + Write-Host " created: $($item.Title)" + $Created++ + } + else { + Write-Warning "failed to create issue '$($item.Title)' (continuing)" + $Skipped++ + } +} + +# --------------------------------------------------------------------------- +# Summary +# --------------------------------------------------------------------------- +$target = if ($Repo -ne "") { $Repo } else { "current repo" } +Write-Host "" +Write-Host "==> Summary ($target)" +if ($DryRun) { + Write-Host " Mode: DRY RUN (no changes made)" +} +Write-Host " Labels ensured: $LabelsEnsured" +Write-Host " Issues created: $Created" +Write-Host " Issues skipped: $Skipped" +Write-Host "Done." diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/scripts/seed-backlog.sh b/03-Azure/01-04-AI/01_Agentic_SDLC/scripts/seed-backlog.sh new file mode 100644 index 000000000..be77afdde --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/scripts/seed-backlog.sh @@ -0,0 +1,308 @@ +#!/usr/bin/env bash +# +# seed-backlog.sh — Seed the Challenge 2 backlog into a GitHub repo as Issues. +# +# Creates one GitHub Issue per item in hackathon/backlog.md, so teams can pick +# from a real, prioritised, labelled list instead of inventing a backlog. The +# same issues are what an MCP server can pull as real backlog context in the +# Challenge 2 optional stretch. +# +# PREREQUISITES +# - GitHub CLI installed: https://cli.github.com/ +# - Authenticated: gh auth login (needs 'repo' scope to create issues/labels) +# +# USAGE +# ./scripts/seed-backlog.sh [--repo ] [--dry-run] [-h|--help] +# +# --repo Target a specific repo or fork (e.g. a team repo). +# Defaults to the repo gh resolves for the current directory. +# --dry-run Print what WOULD be created without calling the GitHub API. +# -h, --help Show this help and exit. +# +# EXAMPLES +# ./scripts/seed-backlog.sh # seed the current repo +# ./scripts/seed-backlog.sh --repo octo-org/team-1 # seed a specific team repo/fork +# ./scripts/seed-backlog.sh --dry-run # preview only, no API calls +# +# NOTES +# - Labels (backlog, priority:high|medium|low) are created first if missing. +# - Safe to re-run: existing open issues with an identical title are skipped, not duplicated. +# +set -euo pipefail + +REPO="" +DRY_RUN=false + +# --------------------------------------------------------------------------- +# Argument parsing +# --------------------------------------------------------------------------- +while [[ $# -gt 0 ]]; do + case "$1" in + --repo) + REPO="${2:-}" + if [[ -z "$REPO" ]]; then + echo "Error: --repo requires an value." >&2 + exit 1 + fi + shift 2 + ;; + --dry-run) + DRY_RUN=true + shift + ;; + -h|--help) + sed -n '2,33p' "$0" | sed 's/^# \{0,1\}//' + exit 0 + ;; + *) + echo "Error: unknown argument '$1'. Use --help for usage." >&2 + exit 1 + ;; + esac +done + +# gh --repo flag (empty when targeting the current repo) +REPO_ARGS=() +if [[ -n "$REPO" ]]; then + REPO_ARGS=(--repo "$REPO") +fi + +# --------------------------------------------------------------------------- +# Pre-flight checks: gh installed + authenticated +# --------------------------------------------------------------------------- +if ! command -v gh >/dev/null 2>&1; then + cat >&2 <<'EOF' +Error: GitHub CLI (gh) is not installed. +Install it from https://cli.github.com/ and re-run this script. +EOF + exit 1 +fi + +if ! gh auth status >/dev/null 2>&1; then + cat >&2 <<'EOF' +Error: GitHub CLI is not authenticated. +Run 'gh auth login' (with 'repo' scope) and re-run this script. +EOF + exit 1 +fi + +# --------------------------------------------------------------------------- +# Label definitions: name|color|description +# --------------------------------------------------------------------------- +LABELS=( + "backlog|0e8a16|Challenge 2 backlog item" + "priority:high|b60205|High priority" + "priority:medium|fbca04|Medium priority" + "priority:low|0e8a16|Low priority" +) + +# --------------------------------------------------------------------------- +# Backlog items. Each item is a block of key=value lines separated by a line +# containing only '---'. Keeps the two scripts (bash/ps1) easy to keep in sync +# with hackathon/backlog.md. +# title Issue title +# priority High|Medium|Low (maps to priority: label) +# size S|M|L +# layers affected layers +# body user-story description +# ac one acceptance criterion (repeatable) +# --------------------------------------------------------------------------- +read -r -d '' ITEMS <<'ITEMS_EOF' || true +title=Payment integration for the cart +priority=High +size=M +layers=frontend, API +body=As a customer, I want to pay for the items in my cart so that I can complete a purchase and turn my cart into a confirmed order. This is the natural continuation of the cart feature from Challenge 1. +ac=A customer can start a checkout from the cart and submit payment details through a dedicated flow. +ac=A successful payment converts the cart into an order (with order details) via the API. +ac=Payment configuration (keys/provider) is read from environment variables — no secrets in source. +ac=Failed or declined payments surface a clear error and leave the cart intact. +--- +title=Order history +priority=Medium +size=M +layers=frontend, API +body=As a customer, I want to see a list of my past orders and open any one of them so that I can review what I bought and when. +ac=The API exposes an endpoint that returns orders (with their order details) for a customer/branch. +ac=The frontend shows an order-history list with date, status, and total per order. +ac=Selecting an order shows its line items (product, quantity, unit price). +ac=Empty state is handled gracefully when there are no orders yet. +--- +title=Product search & filtering +priority=Medium +size=M +layers=frontend, API +body=As a customer, I want to search and filter the product catalogue so that I can quickly find the products I need instead of scrolling the whole list. +ac=The products endpoint accepts query parameters for a text search (name/SKU) and at least one filter (e.g. supplier or price range). +ac=The products page has a search box and filter control wired to the API. +ac=Results update to reflect the active search/filter, and clearing them restores the full list. +ac=Search is case-insensitive and handles "no results" cleanly. +--- +title=Inventory management / stock levels +priority=High +size=L +layers=frontend, API, database +body=As a branch manager, I want each product to track a stock level so that customers can't order more than is available and staff can see what needs restocking. +ac=Products carry a stock/quantity-on-hand value (schema/migration added following existing patterns). +ac=The API returns stock levels and prevents ordering more than the available quantity. +ac=The frontend shows stock status (e.g. in stock / low / out of stock) on product views. +ac=Placing an order decrements the relevant stock, and the change is covered by tests. +--- +title=Supplier & branch management view +priority=Medium +size=M +layers=frontend, API +body=As an admin, I want to view and manage suppliers and branches so that I can keep the organisation's supply-chain data accurate, mirroring the existing product admin experience. +ac=An admin view lists suppliers (and/or branches) using the existing admin UI patterns. +ac=An admin can create or edit a supplier/branch through the API. +ac=Basic validation is applied (e.g. required name) with consistent error responses. +ac=The view is reachable from the existing admin navigation. +--- +title=Delivery tracking & status +priority=Medium +size=M +layers=frontend, API +body=As a branch manager, I want to see deliveries and their status so that I can track incoming stock from suppliers against the orders that need it. +ac=The API exposes deliveries with their status and links to the related order details. +ac=The frontend shows a deliveries list with supplier, date, and status. +ac=A delivery's status can be advanced (e.g. pending → shipped → delivered) via the API. +ac=Status changes are validated and reflected in the UI. +--- +title=Order status workflow +priority=Medium +size=S–M +layers=frontend, API +body=As a branch manager, I want to move an order through a clear set of statuses so that everyone can see where each order stands from placement to fulfilment. +ac=Orders support a defined set of statuses (e.g. pending → confirmed → shipped → delivered / cancelled). +ac=The API only allows valid status transitions and rejects invalid ones with a clear error. +ac=The frontend shows the current status and allows an authorised user to advance it. +ac=The transition rules are covered by unit tests. +--- +title=Cart quantity validation +priority=Low +size=S +layers=frontend, API +body=As a customer, I want the cart to reject nonsensical quantities so that I can't accidentally order zero, a negative amount, or a non-numeric quantity. +ac=Quantities must be positive integers; invalid values are rejected on both the API and the UI. +ac=The API returns a consistent validation error for bad quantities. +ac=The cart UI shows an inline message and blocks the update/checkout until it's fixed. +ac=The validation logic has unit-test coverage. +ITEMS_EOF + +# --------------------------------------------------------------------------- +# Ensure labels exist +# --------------------------------------------------------------------------- +echo "==> Ensuring labels exist..." +LABELS_ENSURED=0 +for entry in "${LABELS[@]}"; do + IFS='|' read -r name color desc <<<"$entry" + if $DRY_RUN; then + echo " [dry-run] would ensure label: $name" + LABELS_ENSURED=$((LABELS_ENSURED + 1)) + continue + fi + # 'gh label create --force' creates or updates, so it tolerates existing labels. + if gh label create "$name" --color "$color" --description "$desc" --force "${REPO_ARGS[@]}" >/dev/null 2>&1; then + echo " ensured label: $name" + LABELS_ENSURED=$((LABELS_ENSURED + 1)) + else + echo " warning: could not ensure label '$name' (continuing)" >&2 + fi +done + +# --------------------------------------------------------------------------- +# Fetch existing open issue titles once (for duplicate detection) +# --------------------------------------------------------------------------- +EXISTING_TITLES="" +if ! $DRY_RUN; then + EXISTING_TITLES="$(gh issue list --state open --limit 200 --json title --jq '.[].title' "${REPO_ARGS[@]}" 2>/dev/null || true)" +fi + +# --------------------------------------------------------------------------- +# Create issues +# --------------------------------------------------------------------------- +CREATED=0 +SKIPPED=0 + +title=""; priority=""; size=""; layers=""; body=""; acs=() + +flush_item() { + [[ -z "$title" ]] && return 0 + + local prio_label="priority:$(echo "$priority" | tr '[:upper:]' '[:lower:]')" + + # Build the issue body (Markdown). + local ac_block="" + local c + for c in "${acs[@]}"; do + ac_block+="- [ ] $c"$'\n' + done + + local issue_body + issue_body="$body"$'\n\n' + issue_body+="**Priority:** $priority | **Size:** $size"$'\n\n' + issue_body+="**Affected layers:** $layers"$'\n\n' + issue_body+="**Acceptance criteria**"$'\n\n' + issue_body+="$ac_block"$'\n' + issue_body+="_Seeded from hackathon/backlog.md for Challenge 2._" + + # Duplicate check (open issues with identical title). + if [[ -n "$EXISTING_TITLES" ]] && grep -Fxq "$title" <<<"$EXISTING_TITLES"; then + echo " skip (already exists): $title" + SKIPPED=$((SKIPPED + 1)) + return 0 + fi + + if $DRY_RUN; then + echo " [dry-run] would create issue: $title [backlog, $prio_label]" + CREATED=$((CREATED + 1)) + return 0 + fi + + if gh issue create \ + --title "$title" \ + --body "$issue_body" \ + --label "backlog" \ + --label "$prio_label" \ + "${REPO_ARGS[@]}" >/dev/null 2>&1; then + echo " created: $title" + CREATED=$((CREATED + 1)) + else + echo " warning: failed to create issue '$title' (continuing)" >&2 + SKIPPED=$((SKIPPED + 1)) + fi +} + +echo "==> Seeding backlog issues..." +while IFS= read -r line; do + if [[ "$line" == "---" ]]; then + flush_item + title=""; priority=""; size=""; layers=""; body=""; acs=() + continue + fi + key="${line%%=*}" + val="${line#*=}" + case "$key" in + title) title="$val" ;; + priority) priority="$val" ;; + size) size="$val" ;; + layers) layers="$val" ;; + body) body="$val" ;; + ac) acs+=("$val") ;; + esac +done <<<"$ITEMS" +flush_item # last block (no trailing separator) + +# --------------------------------------------------------------------------- +# Summary +# --------------------------------------------------------------------------- +TARGET="${REPO:-current repo}" +echo "" +echo "==> Summary ($TARGET)" +if $DRY_RUN; then + echo " Mode: DRY RUN (no changes made)" +fi +echo " Labels ensured: $LABELS_ENSURED" +echo " Issues created: $CREATED" +echo " Issues skipped: $SKIPPED" +echo "Done." diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/Makefile b/03-Azure/01-04-AI/01_Agentic_SDLC/src/Makefile new file mode 100644 index 000000000..8a613e99e --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/Makefile @@ -0,0 +1,287 @@ +# OctoCAT Supply Chain Management - Makefile +# Cross-platform compatible (Linux, macOS, Windows with Git Bash or WSL) + +# Detect OS for platform-specific commands +ifeq ($(OS),Windows_NT) + DETECTED_OS := Windows + RM_RF = powershell -Command "Remove-Item -Recurse -Force -ErrorAction SilentlyContinue" + MKDIR_P = powershell -Command "New-Item -ItemType Directory -Force -Path" + PYTHON_CMD = python + PYTHON_API_EXEC = $(PYTHON_CMD) +else + DETECTED_OS := $(shell uname -s) + RM_RF = rm -rf + MKDIR_P = mkdir -p + PYTHON_CMD ?= python3 + PYTHON_API_EXEC = ./.venv/bin/python +endif + +API_TS_DIR := api-ts +API_CS_DIR := api-cs +API_CS_TEST_DIR := api-cs-tests +API_PY_DIR := api-py +API_JAVA_DIR := api-java +FRONTEND_DIR := frontend +PLAYWRIGHT_BROWSERS_PATH ?= $(HOME)/.cache/ms-playwright + +# Resolve backend URL for frontend dev server. +# In Codespaces, browsers cannot reach container-local localhost, so use the +# forwarded host pattern: https://-.. +CODESPACES_DOMAIN := $(if $(GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN),$(GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN),app.github.dev) +define resolve_api_url +$(if $(strip $(CODESPACE_NAME)),https://$(CODESPACE_NAME)-$(1).$(CODESPACES_DOMAIN),http://localhost:$(1)) +endef + +TS_API_URL := $(call resolve_api_url,3000) +CS_API_URL := $(call resolve_api_url,3000) +PY_API_URL := $(call resolve_api_url,3000) +JAVA_API_URL := $(call resolve_api_url,3000) + +# Default API target (TypeScript) +API_DIR := $(API_TS_DIR) + +.DEFAULT_GOAL := help + +##@ General + +.PHONY: help +help: ## Display this help message + @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-20s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) + +.PHONY: info +info: ## Show detected OS and directories + @echo "Detected OS: $(DETECTED_OS)" + @echo "Frontend Directory: $(FRONTEND_DIR)" + @echo "API variants: $(API_TS_DIR) $(API_CS_DIR) $(API_PY_DIR) $(API_JAVA_DIR)" + +##@ Installation + +.PHONY: install +install: install-ts install-frontend ## Install all dependencies (all variants) + +.PHONY: install-ts +install-ts: ## Install TypeScript API dependencies + cd $(API_TS_DIR) && npm install + +.PHONY: install-cs +install-cs: ## Restore C# API NuGet packages + cd $(API_CS_DIR) && dotnet restore + cd $(API_CS_TEST_DIR) && dotnet restore + +.PHONY: install-py +install-py: ## Install Python API dependencies +ifeq ($(OS),Windows_NT) + cd $(API_PY_DIR) && $(PYTHON_CMD) -m pip install -r requirements.txt +else + cd $(API_PY_DIR) && $(PYTHON_CMD) -m venv .venv && $(PYTHON_API_EXEC) -m pip install -r requirements.txt +endif + +.PHONY: install-java +install-java: ## Download Java API Maven dependencies + cd $(API_JAVA_DIR) && mvn dependency:resolve -q + +.PHONY: install-frontend +install-frontend: ## Install frontend dependencies + cd $(FRONTEND_DIR) && npm install + +##@ Development — Full Stack (API + Frontend) + +.PHONY: dev +dev: dev-ts ## Start TypeScript API + frontend (default) + +.PHONY: dev-ts +dev-ts: ## Start TypeScript API (port 3000) + frontend +ifeq ($(OS),Windows_NT) + npx concurrently --kill-others "cd $(API_TS_DIR) && npm run dev" "cd $(FRONTEND_DIR) && set VITE_API_URL=$(TS_API_URL) && npm run dev" +else + @trap 'kill 0' INT; \ + (cd $(API_TS_DIR) && npm run dev) & \ + (cd $(FRONTEND_DIR) && VITE_API_URL=$(TS_API_URL) npm run dev) & \ + wait +endif + +.PHONY: dev-cs +dev-cs: ## Start C# API (port 3000) + frontend +ifeq ($(OS),Windows_NT) + npx concurrently --kill-others "cd $(API_CS_DIR) && set PORT=3000 && dotnet run" "cd $(FRONTEND_DIR) && set VITE_API_URL=$(CS_API_URL) && npm run dev" +else + @trap 'kill 0' INT; \ + (cd $(API_CS_DIR) && PORT=3000 dotnet run) & \ + (cd $(FRONTEND_DIR) && VITE_API_URL=$(CS_API_URL) npm run dev) & \ + wait +endif + +.PHONY: dev-py +dev-py: ## Start Python API (port 3000) + frontend +ifeq ($(OS),Windows_NT) + npx concurrently --kill-others "cd $(API_PY_DIR) && $(PYTHON_API_EXEC) -m uvicorn main:app --reload --port 3000" "cd $(FRONTEND_DIR) && set VITE_API_URL=$(PY_API_URL) && npm run dev" +else + @trap 'kill 0' INT; \ + (cd $(API_PY_DIR) && $(PYTHON_API_EXEC) -m uvicorn main:app --reload --port 3000 --host 0.0.0.0) & \ + (cd $(FRONTEND_DIR) && VITE_API_URL=$(PY_API_URL) npm run dev) & \ + wait +endif + +.PHONY: dev-java +dev-java: ## Start Java API (port 3000) + frontend +ifeq ($(OS),Windows_NT) + npx concurrently --kill-others "cd $(API_JAVA_DIR) && mvn spring-boot:run" "cd $(FRONTEND_DIR) && set VITE_API_URL=$(JAVA_API_URL) && npm run dev" +else + @trap 'kill 0' INT; \ + (cd $(API_JAVA_DIR) && mvn spring-boot:run) & \ + (cd $(FRONTEND_DIR) && VITE_API_URL=$(JAVA_API_URL) npm run dev) & \ + wait +endif + +##@ Development — API Only + +.PHONY: dev-api-ts +dev-api-ts: ## Start only the TypeScript API (port 3000) + cd $(API_TS_DIR) && npm run dev + +.PHONY: dev-api-cs +dev-api-cs: ## Start only the C# API (port 3000) + cd $(API_CS_DIR) && PORT=3000 dotnet run + +.PHONY: dev-api-py +dev-api-py: ## Start only the Python API (port 3000) + cd $(API_PY_DIR) && $(PYTHON_API_EXEC) -m uvicorn main:app --reload --port 3000 --host 0.0.0.0 + +.PHONY: dev-api-java +dev-api-java: ## Start only the Java API (port 3000) + cd $(API_JAVA_DIR) && mvn spring-boot:run + +.PHONY: dev-frontend +dev-frontend: ## Start only the frontend (points to TypeScript API by default) + cd $(FRONTEND_DIR) && npm run dev + +##@ Database + +.PHONY: db-init +db-init: ## Initialize database schema (TypeScript runner) + cd $(API_TS_DIR) && npm run db:init:dev + +.PHONY: db-seed +db-seed: ## Initialize and seed database with sample data (TypeScript runner) + cd $(API_TS_DIR) && npm run db:seed:dev + +##@ Building + +.PHONY: build +build: build-ts build-frontend ## Build TypeScript API + frontend + +.PHONY: build-ts +build-ts: ## Build the TypeScript API + cd $(API_TS_DIR) && npm run build + +.PHONY: build-cs +build-cs: ## Build the C# API + cd $(API_CS_DIR) && dotnet build -c Release + +.PHONY: build-py +build-py: ## Validate Python API (no compile step; checks imports) + cd $(API_PY_DIR) && $(PYTHON_API_EXEC) -m py_compile main.py + +.PHONY: build-java +build-java: ## Build the Java API (Maven) + cd $(API_JAVA_DIR) && mvn package -DskipTests -q + +.PHONY: build-frontend +build-frontend: ## Build the frontend + cd $(FRONTEND_DIR) && npm run build + +##@ Testing + +.PHONY: test +test: test-ts test-frontend ## Run TypeScript API tests + frontend tests + +.PHONY: test-ts +test-ts: ## Run TypeScript API tests + cd $(API_TS_DIR) && npm run test + +.PHONY: test-cs +test-cs: ## Run C# API tests + cd $(API_CS_TEST_DIR) && dotnet test + +.PHONY: test-py +test-py: ## Run Python API tests + cd $(API_PY_DIR) && $(PYTHON_API_EXEC) -m pytest + +.PHONY: test-java +test-java: ## Run Java API tests + cd $(API_JAVA_DIR) && mvn test + +.PHONY: install-playwright-browsers +install-playwright-browsers: ## Install Playwright browser binaries used by frontend e2e tests + @# Skip install if a Chromium binary already exists in the cache + @if find "$(PLAYWRIGHT_BROWSERS_PATH)" -path '*/chrome-linux/chrome' -print -quit 2>/dev/null | grep -q .; then \ + echo "Playwright Chromium already installed, skipping."; \ + else \ + $(MKDIR_P) "$(PLAYWRIGHT_BROWSERS_PATH)"; \ + cd $(FRONTEND_DIR) && PLAYWRIGHT_BROWSERS_PATH="$(PLAYWRIGHT_BROWSERS_PATH)" npx playwright install chromium; \ + fi + +.PHONY: test-frontend +test-frontend: install-playwright-browsers ## Run frontend tests + cd $(FRONTEND_DIR) && PLAYWRIGHT_BROWSERS_PATH="$(PLAYWRIGHT_BROWSERS_PATH)" npm run test + +.PHONY: test-e2e +test-e2e: install-playwright-browsers ## Run end-to-end tests + cd $(FRONTEND_DIR) && PLAYWRIGHT_BROWSERS_PATH="$(PLAYWRIGHT_BROWSERS_PATH)" npm run test:e2e + +.PHONY: test-coverage +test-coverage: ## Run TypeScript API tests with coverage + cd $(API_TS_DIR) && npm run test:coverage + +##@ Linting + +.PHONY: lint +lint: ## Lint TypeScript API + frontend + cd $(API_TS_DIR) && npm run lint + cd $(FRONTEND_DIR) && npm run lint + +.PHONY: lint-fix +lint-fix: ## Lint and auto-fix TypeScript issues + cd $(API_TS_DIR) && npm run lint:fix + cd $(FRONTEND_DIR) && npm run lint -- --fix + +.PHONY: format +format: ## Format TypeScript code with prettier + npx prettier --write "$(API_TS_DIR)/**/*.{ts,tsx}" "$(FRONTEND_DIR)/**/*.{ts,tsx}" + +##@ Code Generation + +.PHONY: swagger +swagger: ## Regenerate Swagger/OpenAPI spec for TypeScript API + cd $(API_TS_DIR) && npm run swagger:generate + +##@ Production + +.PHONY: start +start: ## Start TypeScript API production server + cd $(API_TS_DIR) && npm start + +##@ Docker + +.PHONY: docker-build +docker-build: ## Build Docker images + docker-compose build + +.PHONY: docker-up +docker-up: ## Start Docker containers + docker-compose up + +.PHONY: docker-down +docker-down: ## Stop Docker containers + docker-compose down + +##@ Cleaning + +.PHONY: clean +clean: ## Clean build artifacts and node_modules for all variants + $(RM_RF) $(API_TS_DIR)/node_modules $(API_TS_DIR)/dist $(API_TS_DIR)/data + $(RM_RF) $(API_CS_DIR)/bin $(API_CS_DIR)/obj $(API_CS_DIR)/data + $(RM_RF) $(API_CS_TEST_DIR)/bin $(API_CS_TEST_DIR)/obj + $(RM_RF) $(API_PY_DIR)/__pycache__ $(API_PY_DIR)/.pytest_cache $(API_PY_DIR)/data $(API_PY_DIR)/.venv + $(RM_RF) $(API_JAVA_DIR)/target $(API_JAVA_DIR)/data + $(RM_RF) $(FRONTEND_DIR)/node_modules $(FRONTEND_DIR)/dist diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/README.md b/03-Azure/01-04-AI/01_Agentic_SDLC/src/README.md new file mode 100644 index 000000000..d4fec9f54 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/README.md @@ -0,0 +1,121 @@ +# OctoSupply Source Code + +This directory contains the OctoSupply application source code, a full-stack supply chain management platform with multiple API language implementations and a shared React frontend. The source represents a production-quality demonstration application for cat tech products and serves as the foundation for this Hackathon. + +## Directory Structure + +### `/api-ts` +Express.js TypeScript backend API server (port **3000**) +- RESTful routes for products, orders, suppliers, branches, deliveries, and inventory +- SQLite database with migrations and seed data +- Comprehensive test coverage with Vitest +- TypeScript type definitions and validation + +### `/api-cs` +ASP.NET Core .NET 10 backend API server (port **3000**) +- Port of the TypeScript API using C# records, repositories, and controllers +- Microsoft.Data.Sqlite with shared migration SQL +- Swashbuckle OpenAPI/Swagger documentation + +### `/api-cs-tests` +C# test project for the .NET API +- xUnit-based tests for repository and API behavior +- Runs via `make test-cs` +- References `/api-cs` as the system under test + +### `/api-py` +FastAPI backend API server (port **3000**) +- Port of the TypeScript API using Pydantic models, async repositories, and APIRouters +- aiosqlite with shared migration SQL +- FastAPI built-in OpenAPI/Swagger documentation + +### `/api-java` +Spring Boot 3 backend API server (port **3000**) +- Port of the TypeScript API using Java records, JdbcTemplate repositories, and @RestControllers +- sqlite-jdbc with shared migration SQL +- SpringDoc OpenAPI documentation + +### `/database` +Shared database schema — used by all API variants +- `migrations/` — SQL migration files applied in order at startup +- `seed/` — SQL seed data files for initial data population + +### `/frontend` +React 18 TypeScript frontend application (port **5137**) +- Vite build tool for fast development and optimized production builds +- Tailwind CSS for styling +- Configurable API URL via `VITE_API_URL` environment variable (targets any API variant) + +### `/docs` +Architecture and development documentation +- System architecture overview +- Database design and SQLite integration +- Build and deployment procedures + +### `Makefile` +Cross-platform build automation supporting all language variants. + +## Quick Start + +```bash +# In the dev container, dependencies are installed during creation. + +# Outside the dev container, install dependencies manually. +make install + +# Start with TypeScript API (default, port 3000) +make dev + +# Start with a specific API variant +make dev-ts # TypeScript API (port 3000) + frontend +make dev-cs # C# API (port 3000) + frontend +make dev-py # Python API (port 3000) + frontend +make dev-java # Java API (port 3000) + frontend + +# Start API only (no frontend) +make dev-api-ts +make dev-api-cs +make dev-api-py +make dev-api-java + +# Install dependencies for a specific variant +make install-ts +make install-cs +make install-py +make install-java + +# Build +make build-ts +make build-cs +make build-py +make build-java + +# Test +make test-ts +make test-cs +make test-py +make test-java +``` + +## API Variants — Port Reference + +| Variant | Port | Framework | Language | +|------------|------|-----------------------|------------| +| TypeScript | 3000 | Express.js | TypeScript | +| C# | 3000 | ASP.NET Core .NET 10 | C# | +| Python | 3000 | FastAPI | Python | +| Java | 3000 | Spring Boot 3 | Java | +| Frontend | 5137 | React 18 + Vite | TypeScript | + +All API variants expose the same REST endpoints and connect to a SQLite database at `./data/app.db` by default. Override with the `DB_FILE` environment variable. + +Swagger/OpenAPI docs are available at `/api-docs` for each running API. + +## Technology Stack + +- **TypeScript API**: Node.js, Express.js, better-sqlite3 +- **C# API**: .NET 10, ASP.NET Core, Microsoft.Data.Sqlite, Swashbuckle +- **Python API**: Python 3.11+, FastAPI, aiosqlite, Pydantic v2 +- **Java API**: Java 21, Spring Boot 3, sqlite-jdbc, SpringDoc OpenAPI +- **Frontend**: React 18, Vite, Tailwind CSS, Playwright (E2E) +- **Database**: SQLite (shared schema in `/database`) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs-tests/OctoSupply.Api.Tests.csproj b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs-tests/OctoSupply.Api.Tests.csproj new file mode 100644 index 000000000..ad24dd495 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs-tests/OctoSupply.Api.Tests.csproj @@ -0,0 +1,23 @@ + + + + net10.0 + enable + enable + false + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs-tests/Repositories/SuppliersRepositoryTests.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs-tests/Repositories/SuppliersRepositoryTests.cs new file mode 100644 index 000000000..c96f9fc24 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs-tests/Repositories/SuppliersRepositoryTests.cs @@ -0,0 +1,96 @@ +using Microsoft.Extensions.Logging.Abstractions; +using OctoSupply.Api.Data; +using OctoSupply.Api.Models; +using OctoSupply.Api.Repositories; +using OctoSupply.Api.Utils; +using Xunit; + +namespace OctoSupply.Api.Tests.Repositories; + +public sealed class SuppliersRepositoryTests +{ + [Fact] + public async Task CreateAndFindById_PersistsSupplier() + { + var dbPath = Path.Combine(Path.GetTempPath(), $"octosupply-tests-{Guid.NewGuid():N}.db"); + Environment.SetEnvironmentVariable("DB_FILE", dbPath); + + try + { + var factory = new SqliteConnectionFactory(new NullLogger()); + await EnsureSchemaAsync(factory); + var repository = new SuppliersRepository(factory); + + var created = await repository.CreateAsync(new CreateSupplierRequest + { + Name = "Test Supplier", + Description = "desc", + ContactPerson = "Alice", + Email = "alice@example.com", + Phone = "555-0100", + Active = true, + Verified = false + }); + + var fetched = await repository.FindByIdAsync(created.SupplierId); + + Assert.NotNull(fetched); + Assert.Equal("Test Supplier", fetched!.Name); + Assert.True(fetched.Active); + Assert.False(fetched.Verified); + } + finally + { + Environment.SetEnvironmentVariable("DB_FILE", null); + if (File.Exists(dbPath)) + { + File.Delete(dbPath); + } + } + } + + [Fact] + public async Task Update_WithNoFields_ThrowsValidationException() + { + var dbPath = Path.Combine(Path.GetTempPath(), $"octosupply-tests-{Guid.NewGuid():N}.db"); + Environment.SetEnvironmentVariable("DB_FILE", dbPath); + + try + { + var factory = new SqliteConnectionFactory(new NullLogger()); + await EnsureSchemaAsync(factory); + var repository = new SuppliersRepository(factory); + var created = await repository.CreateAsync(new CreateSupplierRequest { Name = "Test Supplier" }); + + var ex = await Assert.ThrowsAsync(() => repository.UpdateAsync(created.SupplierId, new UpdateSupplierRequest())); + Assert.Contains("No fields provided for update", ex.Message, StringComparison.Ordinal); + } + finally + { + Environment.SetEnvironmentVariable("DB_FILE", null); + if (File.Exists(dbPath)) + { + File.Delete(dbPath); + } + } + } + + private static async Task EnsureSchemaAsync(SqliteConnectionFactory connectionFactory) + { + await using var connection = await connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = """ + CREATE TABLE suppliers ( + supplier_id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + description TEXT, + contact_person TEXT, + email TEXT, + phone TEXT, + active INTEGER NOT NULL DEFAULT 1, + verified INTEGER NOT NULL DEFAULT 0 + ); + """; + await cmd.ExecuteNonQueryAsync(); + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/BranchesController.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/BranchesController.cs new file mode 100644 index 000000000..bc85020c4 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/BranchesController.cs @@ -0,0 +1,47 @@ +using Microsoft.AspNetCore.Mvc; +using OctoSupply.Api.Models; +using OctoSupply.Api.Repositories; +using OctoSupply.Api.Utils; + +namespace OctoSupply.Api.Controllers; + +[ApiController] +[Route("api/branches")] +public sealed class BranchesController(BranchesRepository repository) : ControllerBase +{ + private readonly BranchesRepository _repository = repository; + + [HttpGet] + public async Task>> GetAll() => + Ok(await _repository.FindAllAsync()); + + [HttpGet("{id:int}")] + public async Task> GetById(int id) + { + var item = await _repository.FindByIdAsync(id); + return item is null ? throw new NotFoundException("Branch", id) : Ok(item); + } + + [HttpPost] + public async Task> Create([FromBody] CreateBranchRequest request) + { + if (string.IsNullOrWhiteSpace(request.Name)) + { + throw new ValidationException("name is required"); + } + + var created = await _repository.CreateAsync(request); + return CreatedAtAction(nameof(GetById), new { id = created.BranchId }, created); + } + + [HttpPut("{id:int}")] + public async Task> Update(int id, [FromBody] UpdateBranchRequest request) => + Ok(await _repository.UpdateAsync(id, request)); + + [HttpDelete("{id:int}")] + public async Task Delete(int id) + { + await _repository.DeleteAsync(id); + return NoContent(); + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/DeliveriesController.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/DeliveriesController.cs new file mode 100644 index 000000000..179626301 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/DeliveriesController.cs @@ -0,0 +1,75 @@ +using Microsoft.AspNetCore.Mvc; +using OctoSupply.Api.Models; +using OctoSupply.Api.Repositories; +using OctoSupply.Api.Utils; + +namespace OctoSupply.Api.Controllers; + +[ApiController] +[Route("api/deliveries")] +public sealed class DeliveriesController(DeliveriesRepository repository) : ControllerBase +{ + private readonly DeliveriesRepository _repository = repository; + + public sealed class UpdateDeliveryStatusRequest + { + public string Status { get; set; } = string.Empty; + public string? DeliveryPartner { get; set; } + } + + [HttpGet] + public async Task>> GetAll() => + Ok(await _repository.FindAllAsync()); + + [HttpGet("{id:int}")] + public async Task> GetById(int id) + { + var item = await _repository.FindByIdAsync(id); + return item is null ? throw new NotFoundException("Delivery", id) : Ok(item); + } + + [HttpPost] + public async Task> Create([FromBody] CreateDeliveryRequest request) + { + if (string.IsNullOrWhiteSpace(request.Name)) + { + throw new ValidationException("name is required"); + } + + if (string.IsNullOrWhiteSpace(request.DeliveryDate)) + { + throw new ValidationException("deliveryDate is required"); + } + + var created = await _repository.CreateAsync(request); + return CreatedAtAction(nameof(GetById), new { id = created.DeliveryId }, created); + } + + [HttpPut("{id:int}")] + public async Task> Update(int id, [FromBody] UpdateDeliveryRequest request) => + Ok(await _repository.UpdateAsync(id, request)); + + [HttpPut("{id:int}/status")] + public async Task> UpdateStatus(int id, [FromBody] UpdateDeliveryStatusRequest request) + { + if (string.IsNullOrWhiteSpace(request.Status)) + { + throw new ValidationException("status is required"); + } + + var updated = await _repository.UpdateStatusAsync(id, request.Status); + if (!string.IsNullOrWhiteSpace(request.DeliveryPartner)) + { + return Ok(new { delivery = updated, commandOutput = string.Empty }); + } + + return Ok(updated); + } + + [HttpDelete("{id:int}")] + public async Task Delete(int id) + { + await _repository.DeleteAsync(id); + return NoContent(); + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/HeadquartersController.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/HeadquartersController.cs new file mode 100644 index 000000000..bd2860412 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/HeadquartersController.cs @@ -0,0 +1,64 @@ +using Microsoft.AspNetCore.Mvc; +using OctoSupply.Api.Models; +using OctoSupply.Api.Repositories; +using OctoSupply.Api.Utils; + +namespace OctoSupply.Api.Controllers; + +[ApiController] +[Route("api/headquarters")] +public sealed class HeadquartersController(HeadquartersRepository repository) : ControllerBase +{ + private readonly HeadquartersRepository _repository = repository; + + [HttpGet] + public async Task>> GetAll() => + Ok(await _repository.FindAllAsync()); + + [HttpGet("{id:int}")] + public async Task> GetById(int id) + { + var item = await _repository.FindByIdAsync(id); + return item is null ? throw new NotFoundException("Headquarters", id) : Ok(item); + } + + [HttpGet("{id:int}/metrics")] + public async Task> GetMetrics(int id) => + Ok(await _repository.GetMetricsAsync(id)); + + [HttpGet("{id:int}/label")] + public async Task> GetLabel(int id) + { + var item = await _repository.FindByIdAsync(id); + if (item is null) + { + throw new NotFoundException("Headquarters", id); + } + + var label = $"Location:{item.Name}City:Country:"; + return Ok(new { label }); + } + + [HttpPost] + public async Task> Create([FromBody] CreateHeadquartersRequest request) + { + if (string.IsNullOrWhiteSpace(request.Name)) + { + throw new ValidationException("name is required"); + } + + var created = await _repository.CreateAsync(request); + return CreatedAtAction(nameof(GetById), new { id = created.HeadquartersId }, created); + } + + [HttpPut("{id:int}")] + public async Task> Update(int id, [FromBody] UpdateHeadquartersRequest request) => + Ok(await _repository.UpdateAsync(id, request)); + + [HttpDelete("{id:int}")] + public async Task Delete(int id) + { + await _repository.DeleteAsync(id); + return NoContent(); + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/OrderDetailDeliveriesController.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/OrderDetailDeliveriesController.cs new file mode 100644 index 000000000..bc60df362 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/OrderDetailDeliveriesController.cs @@ -0,0 +1,47 @@ +using Microsoft.AspNetCore.Mvc; +using OctoSupply.Api.Models; +using OctoSupply.Api.Repositories; +using OctoSupply.Api.Utils; + +namespace OctoSupply.Api.Controllers; + +[ApiController] +[Route("api/order-detail-deliveries")] +public sealed class OrderDetailDeliveriesController(OrderDetailDeliveriesRepository repository) : ControllerBase +{ + private readonly OrderDetailDeliveriesRepository _repository = repository; + + [HttpGet] + public async Task>> GetAll() => + Ok(await _repository.FindAllAsync()); + + [HttpGet("{id:int}")] + public async Task> GetById(int id) + { + var item = await _repository.FindByIdAsync(id); + return item is null ? throw new NotFoundException("OrderDetailDelivery", id) : Ok(item); + } + + [HttpPost] + public async Task> Create([FromBody] CreateOrderDetailDeliveryRequest request) + { + if (request.OrderDetailId <= 0 || request.DeliveryId <= 0) + { + throw new ValidationException("orderDetailId and deliveryId are required"); + } + + var created = await _repository.CreateAsync(request); + return CreatedAtAction(nameof(GetById), new { id = created.OrderDetailDeliveryId }, created); + } + + [HttpPut("{id:int}")] + public async Task> Update(int id, [FromBody] UpdateOrderDetailDeliveryRequest request) => + Ok(await _repository.UpdateAsync(id, request)); + + [HttpDelete("{id:int}")] + public async Task Delete(int id) + { + await _repository.DeleteAsync(id); + return NoContent(); + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/OrderDetailsController.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/OrderDetailsController.cs new file mode 100644 index 000000000..79ced50b5 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/OrderDetailsController.cs @@ -0,0 +1,47 @@ +using Microsoft.AspNetCore.Mvc; +using OctoSupply.Api.Models; +using OctoSupply.Api.Repositories; +using OctoSupply.Api.Utils; + +namespace OctoSupply.Api.Controllers; + +[ApiController] +[Route("api/order-details")] +public sealed class OrderDetailsController(OrderDetailsRepository repository) : ControllerBase +{ + private readonly OrderDetailsRepository _repository = repository; + + [HttpGet] + public async Task>> GetAll() => + Ok(await _repository.FindAllAsync()); + + [HttpGet("{id:int}")] + public async Task> GetById(int id) + { + var item = await _repository.FindByIdAsync(id); + return item is null ? throw new NotFoundException("OrderDetail", id) : Ok(item); + } + + [HttpPost] + public async Task> Create([FromBody] CreateOrderDetailRequest request) + { + if (request.OrderId <= 0 || request.ProductId <= 0) + { + throw new ValidationException("orderId and productId are required"); + } + + var created = await _repository.CreateAsync(request); + return CreatedAtAction(nameof(GetById), new { id = created.OrderDetailId }, created); + } + + [HttpPut("{id:int}")] + public async Task> Update(int id, [FromBody] UpdateOrderDetailRequest request) => + Ok(await _repository.UpdateAsync(id, request)); + + [HttpDelete("{id:int}")] + public async Task Delete(int id) + { + await _repository.DeleteAsync(id); + return NoContent(); + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/OrdersController.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/OrdersController.cs new file mode 100644 index 000000000..bb3069cd2 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/OrdersController.cs @@ -0,0 +1,52 @@ +using Microsoft.AspNetCore.Mvc; +using OctoSupply.Api.Models; +using OctoSupply.Api.Repositories; +using OctoSupply.Api.Utils; + +namespace OctoSupply.Api.Controllers; + +[ApiController] +[Route("api/orders")] +public sealed class OrdersController(OrdersRepository repository) : ControllerBase +{ + private readonly OrdersRepository _repository = repository; + + [HttpGet] + public async Task>> GetAll() => + Ok(await _repository.FindAllAsync()); + + [HttpGet("{id:int}")] + public async Task> GetById(int id) + { + var item = await _repository.FindByIdAsync(id); + return item is null ? throw new NotFoundException("Order", id) : Ok(item); + } + + [HttpPost] + public async Task> Create([FromBody] CreateOrderRequest request) + { + if (string.IsNullOrWhiteSpace(request.Name)) + { + throw new ValidationException("name is required"); + } + + if (request.BranchId <= 0) + { + throw new ValidationException("branchId is required"); + } + + var created = await _repository.CreateAsync(request); + return CreatedAtAction(nameof(GetById), new { id = created.OrderId }, created); + } + + [HttpPut("{id:int}")] + public async Task> Update(int id, [FromBody] UpdateOrderRequest request) => + Ok(await _repository.UpdateAsync(id, request)); + + [HttpDelete("{id:int}")] + public async Task Delete(int id) + { + await _repository.DeleteAsync(id); + return NoContent(); + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/ProductsController.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/ProductsController.cs new file mode 100644 index 000000000..66d886298 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/ProductsController.cs @@ -0,0 +1,47 @@ +using Microsoft.AspNetCore.Mvc; +using OctoSupply.Api.Models; +using OctoSupply.Api.Repositories; +using OctoSupply.Api.Utils; + +namespace OctoSupply.Api.Controllers; + +[ApiController] +[Route("api/products")] +public sealed class ProductsController(ProductsRepository repository) : ControllerBase +{ + private readonly ProductsRepository _repository = repository; + + [HttpGet] + public async Task>> GetAll() => + Ok(await _repository.FindAllAsync()); + + [HttpGet("{id:int}")] + public async Task> GetById(int id) + { + var item = await _repository.FindByIdAsync(id); + return item is null ? throw new NotFoundException("Product", id) : Ok(item); + } + + [HttpPost] + public async Task> Create([FromBody] CreateProductRequest request) + { + if (string.IsNullOrWhiteSpace(request.Name)) + { + throw new ValidationException("name is required"); + } + + var created = await _repository.CreateAsync(request); + return CreatedAtAction(nameof(GetById), new { id = created.ProductId }, created); + } + + [HttpPut("{id:int}")] + public async Task> Update(int id, [FromBody] UpdateProductRequest request) => + Ok(await _repository.UpdateAsync(id, request)); + + [HttpDelete("{id:int}")] + public async Task Delete(int id) + { + await _repository.DeleteAsync(id); + return NoContent(); + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/SuppliersController.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/SuppliersController.cs new file mode 100644 index 000000000..c567d9ec2 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Controllers/SuppliersController.cs @@ -0,0 +1,60 @@ +using Microsoft.AspNetCore.Mvc; +using OctoSupply.Api.Models; +using OctoSupply.Api.Repositories; +using OctoSupply.Api.Utils; + +namespace OctoSupply.Api.Controllers; + +[ApiController] +[Route("api/suppliers")] +public sealed class SuppliersController(SuppliersRepository repository) : ControllerBase +{ + private readonly SuppliersRepository _repository = repository; + + [HttpGet] + public async Task>> GetAll() => + Ok(await _repository.FindAllAsync()); + + [HttpGet("{id:int}")] + public async Task> GetById(int id) + { + var item = await _repository.FindByIdAsync(id); + return item is null ? throw new NotFoundException("Supplier", id) : Ok(item); + } + + [HttpGet("{id:int}/status")] + public async Task> GetStatus(int id) + { + var supplier = await _repository.FindByIdAsync(id); + if (supplier is null) + { + throw new NotFoundException("Supplier", id); + } + + // Mirrors TypeScript behavior where status currently always resolves to APPROVED. + return Ok(new { status = "APPROVED" }); + } + + [HttpPost] + public async Task> Create([FromBody] CreateSupplierRequest request) + { + if (string.IsNullOrWhiteSpace(request.Name)) + { + throw new ValidationException("name is required"); + } + + var created = await _repository.CreateAsync(request); + return CreatedAtAction(nameof(GetById), new { id = created.SupplierId }, created); + } + + [HttpPut("{id:int}")] + public async Task> Update(int id, [FromBody] UpdateSupplierRequest request) => + Ok(await _repository.UpdateAsync(id, request)); + + [HttpDelete("{id:int}")] + public async Task Delete(int id) + { + await _repository.DeleteAsync(id); + return NoContent(); + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Data/DatabaseMigrator.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Data/DatabaseMigrator.cs new file mode 100644 index 000000000..bfcac519e --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Data/DatabaseMigrator.cs @@ -0,0 +1,159 @@ +using Microsoft.Data.Sqlite; + +namespace OctoSupply.Api.Data; + +public sealed class DatabaseMigrator( + SqliteConnectionFactory connectionFactory, + ILogger logger) +{ + private readonly SqliteConnectionFactory _connectionFactory = connectionFactory; + private readonly ILogger _logger = logger; + + public async Task InitializeAsync(bool seedOnStartup) + { + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await EnsureMigrationsTableAsync(connection); + await ApplyMigrationsAsync(connection); + if (seedOnStartup) + { + await SeedIfNeededAsync(connection); + } + } + + private static async Task EnsureMigrationsTableAsync(SqliteConnection connection) + { + await using var cmd = connection.CreateCommand(); + cmd.CommandText = """ + CREATE TABLE IF NOT EXISTS migrations ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + version INTEGER NOT NULL, + filename TEXT NOT NULL UNIQUE, + applied_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP + ); + """; + await cmd.ExecuteNonQueryAsync(); + } + + private async Task ApplyMigrationsAsync(SqliteConnection connection) + { + var migrationsDir = ResolvePath("../database/migrations"); + if (!Directory.Exists(migrationsDir)) + { + throw new InvalidOperationException($"Migrations directory not found: {migrationsDir}"); + } + + var migrationFiles = Directory + .GetFiles(migrationsDir, "*.sql") + .OrderBy(Path.GetFileName) + .ToList(); + + foreach (var file in migrationFiles) + { + var filename = Path.GetFileName(file); + if (await IsMigrationAppliedAsync(connection, filename)) + { + continue; + } + + _logger.LogInformation("Applying migration: {Filename}", filename); + var sql = await File.ReadAllTextAsync(file); + await ExecuteSqlStatementsAsync(connection, sql); + + var version = ParseMigrationVersion(filename); + await using var insert = connection.CreateCommand(); + insert.CommandText = "INSERT INTO migrations (version, filename) VALUES ($version, $filename);"; + insert.Parameters.AddWithValue("$version", version); + insert.Parameters.AddWithValue("$filename", filename); + await insert.ExecuteNonQueryAsync(); + } + } + + private async Task SeedIfNeededAsync(SqliteConnection connection) + { + var shouldSeed = true; + try + { + await using var countCmd = connection.CreateCommand(); + countCmd.CommandText = "SELECT COUNT(*) FROM suppliers;"; + var count = Convert.ToInt32(await countCmd.ExecuteScalarAsync()); + shouldSeed = count == 0; + } + catch (SqliteException) + { + shouldSeed = true; + } + catch (InvalidOperationException) + { + shouldSeed = true; + } + + if (!shouldSeed) + { + _logger.LogInformation("Database already seeded; skipping seed files."); + return; + } + + var seedDir = ResolvePath("../database/seed"); + if (!Directory.Exists(seedDir)) + { + _logger.LogInformation("Seed directory not found: {SeedDir}. Skipping seeding.", seedDir); + return; + } + + var seedFiles = Directory + .GetFiles(seedDir, "*.sql") + .OrderBy(Path.GetFileName) + .ToList(); + + foreach (var file in seedFiles) + { + _logger.LogInformation("Applying seed file: {Filename}", Path.GetFileName(file)); + var sql = await File.ReadAllTextAsync(file); + await ExecuteSqlStatementsAsync(connection, sql); + } + } + + private static async Task IsMigrationAppliedAsync(SqliteConnection connection, string filename) + { + await using var cmd = connection.CreateCommand(); + cmd.CommandText = "SELECT COUNT(*) FROM migrations WHERE filename = $filename;"; + cmd.Parameters.AddWithValue("$filename", filename); + var count = Convert.ToInt32(await cmd.ExecuteScalarAsync()); + return count > 0; + } + + private static async Task ExecuteSqlStatementsAsync(SqliteConnection connection, string sqlScript) + { + var statements = sqlScript + .Split(';', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries) + .Where(statement => !string.IsNullOrWhiteSpace(statement)) + .ToList(); + + await using var transaction = (SqliteTransaction)await connection.BeginTransactionAsync(); + foreach (var statement in statements) + { + await using var cmd = connection.CreateCommand(); + cmd.Transaction = transaction; + cmd.CommandText = statement; + await cmd.ExecuteNonQueryAsync(); + } + await transaction.CommitAsync(); + } + + private static int ParseMigrationVersion(string filename) + { + var prefix = filename.Split('_')[0]; + return int.TryParse(prefix, out var version) ? version : 0; + } + + private static string ResolvePath(string relativePath) + { + var configured = Environment.GetEnvironmentVariable("DB_MIGRATIONS_DIR"); + if (!string.IsNullOrWhiteSpace(configured) && relativePath.Contains("migrations", StringComparison.OrdinalIgnoreCase)) + { + return Path.GetFullPath(configured); + } + + return Path.GetFullPath(Path.Combine(Directory.GetCurrentDirectory(), relativePath)); + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Data/SqliteConnectionFactory.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Data/SqliteConnectionFactory.cs new file mode 100644 index 000000000..26a65bb16 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Data/SqliteConnectionFactory.cs @@ -0,0 +1,38 @@ +using Microsoft.Data.Sqlite; + +namespace OctoSupply.Api.Data; + +public sealed class SqliteConnectionFactory(ILogger logger) +{ + private readonly ILogger _logger = logger; + + public async Task OpenConnectionAsync() + { + var dbFile = Environment.GetEnvironmentVariable("DB_FILE") ?? "./data/app.db"; + if (!string.Equals(dbFile, ":memory:", StringComparison.Ordinal)) + { + var fullPath = Path.GetFullPath(dbFile); + var directory = Path.GetDirectoryName(fullPath); + if (!string.IsNullOrWhiteSpace(directory) && !Directory.Exists(directory)) + { + Directory.CreateDirectory(directory); + } + dbFile = fullPath; + } + + var connectionString = $"Data Source={dbFile}"; + var connection = new SqliteConnection(connectionString); + await connection.OpenAsync(); + + await using var pragma = connection.CreateCommand(); + pragma.CommandText = """ + PRAGMA foreign_keys = ON; + PRAGMA journal_mode = WAL; + PRAGMA busy_timeout = 30000; + """; + await pragma.ExecuteNonQueryAsync(); + + _logger.LogDebug("Opened SQLite connection to {DbFile}", dbFile); + return connection; + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Branch.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Branch.cs new file mode 100644 index 000000000..02001ad6f --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Branch.cs @@ -0,0 +1,33 @@ +namespace OctoSupply.Api.Models; + +public sealed record Branch( + int BranchId, + int HeadquartersId, + string Name, + string? Description, + string? Address, + string? ContactPerson, + string? Email, + string? Phone); + +public sealed class CreateBranchRequest +{ + public int HeadquartersId { get; set; } + public string Name { get; set; } = string.Empty; + public string? Description { get; set; } + public string? Address { get; set; } + public string? ContactPerson { get; set; } + public string? Email { get; set; } + public string? Phone { get; set; } +} + +public sealed class UpdateBranchRequest +{ + public int? HeadquartersId { get; set; } + public string? Name { get; set; } + public string? Description { get; set; } + public string? Address { get; set; } + public string? ContactPerson { get; set; } + public string? Email { get; set; } + public string? Phone { get; set; } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Delivery.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Delivery.cs new file mode 100644 index 000000000..d97efad87 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Delivery.cs @@ -0,0 +1,27 @@ +namespace OctoSupply.Api.Models; + +public sealed record Delivery( + int DeliveryId, + int SupplierId, + string DeliveryDate, + string Name, + string? Description, + string Status); + +public sealed class CreateDeliveryRequest +{ + public int SupplierId { get; set; } + public string DeliveryDate { get; set; } = string.Empty; + public string Name { get; set; } = string.Empty; + public string? Description { get; set; } + public string Status { get; set; } = "pending"; +} + +public sealed class UpdateDeliveryRequest +{ + public int? SupplierId { get; set; } + public string? DeliveryDate { get; set; } + public string? Name { get; set; } + public string? Description { get; set; } + public string? Status { get; set; } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Headquarters.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Headquarters.cs new file mode 100644 index 000000000..3c8b00b66 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Headquarters.cs @@ -0,0 +1,30 @@ +namespace OctoSupply.Api.Models; + +public sealed record Headquarters( + int HeadquartersId, + string Name, + string? Description, + string? Address, + string? ContactPerson, + string? Email, + string? Phone); + +public sealed class CreateHeadquartersRequest +{ + public string Name { get; set; } = string.Empty; + public string? Description { get; set; } + public string? Address { get; set; } + public string? ContactPerson { get; set; } + public string? Email { get; set; } + public string? Phone { get; set; } +} + +public sealed class UpdateHeadquartersRequest +{ + public string? Name { get; set; } + public string? Description { get; set; } + public string? Address { get; set; } + public string? ContactPerson { get; set; } + public string? Email { get; set; } + public string? Phone { get; set; } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Order.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Order.cs new file mode 100644 index 000000000..bb06c9fa0 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Order.cs @@ -0,0 +1,27 @@ +namespace OctoSupply.Api.Models; + +public sealed record Order( + int OrderId, + int BranchId, + string OrderDate, + string Name, + string? Description, + string Status); + +public sealed class CreateOrderRequest +{ + public int BranchId { get; set; } + public string OrderDate { get; set; } = string.Empty; + public string Name { get; set; } = string.Empty; + public string? Description { get; set; } + public string Status { get; set; } = "pending"; +} + +public sealed class UpdateOrderRequest +{ + public int? BranchId { get; set; } + public string? OrderDate { get; set; } + public string? Name { get; set; } + public string? Description { get; set; } + public string? Status { get; set; } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/OrderDetail.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/OrderDetail.cs new file mode 100644 index 000000000..e00295ee1 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/OrderDetail.cs @@ -0,0 +1,27 @@ +namespace OctoSupply.Api.Models; + +public sealed record OrderDetail( + int OrderDetailId, + int OrderId, + int ProductId, + int Quantity, + double UnitPrice, + string? Notes); + +public sealed class CreateOrderDetailRequest +{ + public int OrderId { get; set; } + public int ProductId { get; set; } + public int Quantity { get; set; } + public double UnitPrice { get; set; } + public string? Notes { get; set; } +} + +public sealed class UpdateOrderDetailRequest +{ + public int? OrderId { get; set; } + public int? ProductId { get; set; } + public int? Quantity { get; set; } + public double? UnitPrice { get; set; } + public string? Notes { get; set; } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/OrderDetailDelivery.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/OrderDetailDelivery.cs new file mode 100644 index 000000000..ea182346c --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/OrderDetailDelivery.cs @@ -0,0 +1,24 @@ +namespace OctoSupply.Api.Models; + +public sealed record OrderDetailDelivery( + int OrderDetailDeliveryId, + int OrderDetailId, + int DeliveryId, + int Quantity, + string? Notes); + +public sealed class CreateOrderDetailDeliveryRequest +{ + public int OrderDetailId { get; set; } + public int DeliveryId { get; set; } + public int Quantity { get; set; } + public string? Notes { get; set; } +} + +public sealed class UpdateOrderDetailDeliveryRequest +{ + public int? OrderDetailId { get; set; } + public int? DeliveryId { get; set; } + public int? Quantity { get; set; } + public string? Notes { get; set; } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Product.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Product.cs new file mode 100644 index 000000000..e57b857a7 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Product.cs @@ -0,0 +1,36 @@ +namespace OctoSupply.Api.Models; + +public sealed record Product( + int ProductId, + int SupplierId, + string Name, + string? Description, + double Price, + string Sku, + string Unit, + string? ImgName, + double Discount); + +public sealed class CreateProductRequest +{ + public int SupplierId { get; set; } + public string Name { get; set; } = string.Empty; + public string? Description { get; set; } + public double Price { get; set; } + public string Sku { get; set; } = string.Empty; + public string Unit { get; set; } = string.Empty; + public string? ImgName { get; set; } + public double Discount { get; set; } +} + +public sealed class UpdateProductRequest +{ + public int? SupplierId { get; set; } + public string? Name { get; set; } + public string? Description { get; set; } + public double? Price { get; set; } + public string? Sku { get; set; } + public string? Unit { get; set; } + public string? ImgName { get; set; } + public double? Discount { get; set; } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Supplier.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Supplier.cs new file mode 100644 index 000000000..122db2a52 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Models/Supplier.cs @@ -0,0 +1,33 @@ +namespace OctoSupply.Api.Models; + +public sealed record Supplier( + int SupplierId, + string Name, + string? Description, + string? ContactPerson, + string? Email, + string? Phone, + bool Active, + bool Verified); + +public sealed class CreateSupplierRequest +{ + public string Name { get; set; } = string.Empty; + public string? Description { get; set; } + public string? ContactPerson { get; set; } + public string? Email { get; set; } + public string? Phone { get; set; } + public bool Active { get; set; } = true; + public bool Verified { get; set; } = false; +} + +public sealed class UpdateSupplierRequest +{ + public string? Name { get; set; } + public string? Description { get; set; } + public string? ContactPerson { get; set; } + public string? Email { get; set; } + public string? Phone { get; set; } + public bool? Active { get; set; } + public bool? Verified { get; set; } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/OctoSupply.Api.csproj b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/OctoSupply.Api.csproj new file mode 100644 index 000000000..0578db242 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/OctoSupply.Api.csproj @@ -0,0 +1,16 @@ + + + + net10.0 + enable + enable + OctoSupply.Api + OctoSupply.Api + + + + + + + + diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Program.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Program.cs new file mode 100644 index 000000000..807efcf05 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Program.cs @@ -0,0 +1,62 @@ +using OctoSupply.Api.Data; +using OctoSupply.Api.Repositories; +using OctoSupply.Api.Utils; + +var builder = WebApplication.CreateBuilder(args); + +var port = Environment.GetEnvironmentVariable("PORT") ?? "3000"; +builder.WebHost.UseUrls($"http://0.0.0.0:{port}"); + +builder.Services.AddControllers(); +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddOpenApi(); + +builder.Services.AddSingleton(); +builder.Services.AddSingleton(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); + +builder.Services.AddCors(options => +{ + options.AddPolicy("ApiCors", policy => + { + var configuredOrigins = Environment.GetEnvironmentVariable("API_CORS_ORIGINS"); + if (!string.IsNullOrWhiteSpace(configuredOrigins)) + { + var origins = configuredOrigins + .Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries); + policy.WithOrigins(origins).AllowAnyHeader().AllowAnyMethod().AllowCredentials(); + return; + } + + policy + .SetIsOriginAllowed(origin => + origin.StartsWith("http://localhost:", StringComparison.OrdinalIgnoreCase) || + origin.StartsWith("http://127.0.0.1:", StringComparison.OrdinalIgnoreCase) || + origin.Contains(".app.github.dev", StringComparison.OrdinalIgnoreCase) || + origin.Contains(".azurecontainerapps.io", StringComparison.OrdinalIgnoreCase)) + .AllowAnyHeader() + .AllowAnyMethod() + .AllowCredentials(); + }); +}); + +var app = builder.Build(); + +app.MapOpenApi("/api-docs.json"); +app.UseCors("ApiCors"); +app.UseMiddleware(); + +app.MapGet("/", () => "Hello, world!"); +app.MapControllers(); + +var migrator = app.Services.GetRequiredService(); +await migrator.InitializeAsync(seedOnStartup: true); + +app.Run(); diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Properties/launchSettings.json b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Properties/launchSettings.json new file mode 100644 index 000000000..c8d527fea --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Properties/launchSettings.json @@ -0,0 +1,23 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": false, + "applicationUrl": "http://localhost:5036", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": false, + "applicationUrl": "https://localhost:7096;http://localhost:5036", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/README.md b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/README.md new file mode 100644 index 000000000..1ac73573f --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/README.md @@ -0,0 +1,40 @@ +# OctoSupply API (C#) + +ASP.NET Core (.NET 10) port of the OctoSupply API. + +## Run + +```bash +dotnet restore +dotnet run +``` + +Default API URL: `http://localhost:3000` + +## Environment + +- `PORT` (default: `3000`) +- `DB_FILE` (default: `./data/app.db`) +- `API_CORS_ORIGINS` (comma-separated override; optional) + +## Database + +On startup, the API applies SQL migrations from: + +- `../database/migrations/*.sql` + +and seeds from: + +- `../database/seed/*.sql` + +## OpenAPI + +- OpenAPI JSON: `http://localhost:3000/api-docs.json` + +## Tests + +Run C# tests from the `src/` directory: + +```bash +make test-cs +``` diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/BranchesRepository.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/BranchesRepository.cs new file mode 100644 index 000000000..b915a11c9 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/BranchesRepository.cs @@ -0,0 +1,121 @@ +using Microsoft.Data.Sqlite; +using OctoSupply.Api.Data; +using OctoSupply.Api.Models; +using OctoSupply.Api.Utils; + +namespace OctoSupply.Api.Repositories; + +public sealed class BranchesRepository(SqliteConnectionFactory connectionFactory) +{ + private readonly SqliteConnectionFactory _connectionFactory = connectionFactory; + + public async Task> FindAllAsync() + { + const string sql = "SELECT * FROM branches ORDER BY branch_id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + await using var reader = await cmd.ExecuteReaderAsync(); + var items = new List(); + while (await reader.ReadAsync()) + { + items.Add(Map(reader)); + } + return items; + } + + public async Task FindByIdAsync(int id) + { + const string sql = "SELECT * FROM branches WHERE branch_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + await using var reader = await cmd.ExecuteReaderAsync(); + return await reader.ReadAsync() ? Map(reader) : null; + } + + public async Task CreateAsync(CreateBranchRequest request) + { + const string sql = """ + INSERT INTO branches (headquarters_id, name, description, address, contact_person, email, phone) + VALUES ($headquartersId, $name, $description, $address, $contactPerson, $email, $phone); + SELECT last_insert_rowid(); + """; + + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$headquartersId", request.HeadquartersId); + cmd.Parameters.AddWithValue("$name", request.Name); + cmd.Parameters.AddWithValue("$description", (object?)request.Description ?? DBNull.Value); + cmd.Parameters.AddWithValue("$address", (object?)request.Address ?? DBNull.Value); + cmd.Parameters.AddWithValue("$contactPerson", (object?)request.ContactPerson ?? DBNull.Value); + cmd.Parameters.AddWithValue("$email", (object?)request.Email ?? DBNull.Value); + cmd.Parameters.AddWithValue("$phone", (object?)request.Phone ?? DBNull.Value); + + var id = Convert.ToInt32(await cmd.ExecuteScalarAsync()); + return await FindByIdAsync(id) ?? throw new DatabaseException("Failed to retrieve created Branch"); + } + + public async Task UpdateAsync(int id, UpdateBranchRequest request) + { + var updates = new List(); + var parameters = new List(); + if (request.HeadquartersId.HasValue) { updates.Add("headquarters_id = $headquartersId"); parameters.Add(new SqliteParameter("$headquartersId", request.HeadquartersId.Value)); } + if (request.Name is not null) { updates.Add("name = $name"); parameters.Add(new SqliteParameter("$name", request.Name)); } + if (request.Description is not null) { updates.Add("description = $description"); parameters.Add(new SqliteParameter("$description", request.Description)); } + if (request.Address is not null) { updates.Add("address = $address"); parameters.Add(new SqliteParameter("$address", request.Address)); } + if (request.ContactPerson is not null) { updates.Add("contact_person = $contactPerson"); parameters.Add(new SqliteParameter("$contactPerson", request.ContactPerson)); } + if (request.Email is not null) { updates.Add("email = $email"); parameters.Add(new SqliteParameter("$email", request.Email)); } + if (request.Phone is not null) { updates.Add("phone = $phone"); parameters.Add(new SqliteParameter("$phone", request.Phone)); } + + if (updates.Count == 0) + { + throw new ValidationException("No fields provided for update"); + } + + var sql = $"UPDATE branches SET {string.Join(", ", updates)} WHERE branch_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + foreach (var parameter in parameters) + { + cmd.Parameters.Add(parameter); + } + var changes = await cmd.ExecuteNonQueryAsync(); + if (changes == 0) + { + throw new NotFoundException("Branch", id); + } + + return await FindByIdAsync(id) ?? throw new DatabaseException("Failed to retrieve updated Branch"); + } + + public async Task DeleteAsync(int id) + { + const string sql = "DELETE FROM branches WHERE branch_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + var changes = await cmd.ExecuteNonQueryAsync(); + if (changes == 0) + { + throw new NotFoundException("Branch", id); + } + } + + private static Branch Map(SqliteDataReader reader) => + new( + BranchId: reader.GetInt32(reader.GetOrdinal("branch_id")), + HeadquartersId: reader.GetInt32(reader.GetOrdinal("headquarters_id")), + Name: reader.GetString(reader.GetOrdinal("name")), + Description: reader["description"] as string, + Address: reader["address"] as string, + ContactPerson: reader["contact_person"] as string, + Email: reader["email"] as string, + Phone: reader["phone"] as string + ); +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/DeliveriesRepository.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/DeliveriesRepository.cs new file mode 100644 index 000000000..ed1837cf8 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/DeliveriesRepository.cs @@ -0,0 +1,132 @@ +using Microsoft.Data.Sqlite; +using OctoSupply.Api.Data; +using OctoSupply.Api.Models; +using OctoSupply.Api.Utils; + +namespace OctoSupply.Api.Repositories; + +public sealed class DeliveriesRepository(SqliteConnectionFactory connectionFactory) +{ + private readonly SqliteConnectionFactory _connectionFactory = connectionFactory; + + public async Task> FindAllAsync() + { + const string sql = "SELECT * FROM deliveries ORDER BY delivery_id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + await using var reader = await cmd.ExecuteReaderAsync(); + var items = new List(); + while (await reader.ReadAsync()) + { + items.Add(Map(reader)); + } + return items; + } + + public async Task FindByIdAsync(int id) + { + const string sql = "SELECT * FROM deliveries WHERE delivery_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + await using var reader = await cmd.ExecuteReaderAsync(); + return await reader.ReadAsync() ? Map(reader) : null; + } + + public async Task CreateAsync(CreateDeliveryRequest request) + { + const string sql = """ + INSERT INTO deliveries (supplier_id, delivery_date, name, description, status) + VALUES ($supplierId, $deliveryDate, $name, $description, $status); + SELECT last_insert_rowid(); + """; + + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$supplierId", request.SupplierId); + cmd.Parameters.AddWithValue("$deliveryDate", request.DeliveryDate); + cmd.Parameters.AddWithValue("$name", request.Name); + cmd.Parameters.AddWithValue("$description", (object?)request.Description ?? DBNull.Value); + cmd.Parameters.AddWithValue("$status", request.Status); + + var id = Convert.ToInt32(await cmd.ExecuteScalarAsync()); + return await FindByIdAsync(id) ?? throw new DatabaseException("Failed to retrieve created Delivery"); + } + + public async Task UpdateAsync(int id, UpdateDeliveryRequest request) + { + var updates = new List(); + var parameters = new List(); + if (request.SupplierId.HasValue) { updates.Add("supplier_id = $supplierId"); parameters.Add(new SqliteParameter("$supplierId", request.SupplierId.Value)); } + if (request.DeliveryDate is not null) { updates.Add("delivery_date = $deliveryDate"); parameters.Add(new SqliteParameter("$deliveryDate", request.DeliveryDate)); } + if (request.Name is not null) { updates.Add("name = $name"); parameters.Add(new SqliteParameter("$name", request.Name)); } + if (request.Description is not null) { updates.Add("description = $description"); parameters.Add(new SqliteParameter("$description", request.Description)); } + if (request.Status is not null) { updates.Add("status = $status"); parameters.Add(new SqliteParameter("$status", request.Status)); } + + if (updates.Count == 0) + { + throw new ValidationException("No fields provided for update"); + } + + var sql = $"UPDATE deliveries SET {string.Join(", ", updates)} WHERE delivery_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + foreach (var parameter in parameters) + { + cmd.Parameters.Add(parameter); + } + var changes = await cmd.ExecuteNonQueryAsync(); + if (changes == 0) + { + throw new NotFoundException("Delivery", id); + } + + return await FindByIdAsync(id) ?? throw new DatabaseException("Failed to retrieve updated Delivery"); + } + + public async Task UpdateStatusAsync(int id, string status) + { + const string sql = "UPDATE deliveries SET status = $status WHERE delivery_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + cmd.Parameters.AddWithValue("$status", status); + var changes = await cmd.ExecuteNonQueryAsync(); + if (changes == 0) + { + throw new NotFoundException("Delivery", id); + } + + return await FindByIdAsync(id) ?? throw new DatabaseException("Failed to retrieve updated Delivery"); + } + + public async Task DeleteAsync(int id) + { + const string sql = "DELETE FROM deliveries WHERE delivery_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + var changes = await cmd.ExecuteNonQueryAsync(); + if (changes == 0) + { + throw new NotFoundException("Delivery", id); + } + } + + private static Delivery Map(SqliteDataReader reader) => + new( + DeliveryId: reader.GetInt32(reader.GetOrdinal("delivery_id")), + SupplierId: reader.GetInt32(reader.GetOrdinal("supplier_id")), + DeliveryDate: reader.GetString(reader.GetOrdinal("delivery_date")), + Name: reader.GetString(reader.GetOrdinal("name")), + Description: reader["description"] as string, + Status: reader.GetString(reader.GetOrdinal("status")) + ); +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/HeadquartersRepository.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/HeadquartersRepository.cs new file mode 100644 index 000000000..2fcd6c0fe --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/HeadquartersRepository.cs @@ -0,0 +1,139 @@ +using Microsoft.Data.Sqlite; +using OctoSupply.Api.Data; +using OctoSupply.Api.Models; +using OctoSupply.Api.Utils; + +namespace OctoSupply.Api.Repositories; + +public sealed class HeadquartersRepository(SqliteConnectionFactory connectionFactory) +{ + private readonly SqliteConnectionFactory _connectionFactory = connectionFactory; + + public async Task> FindAllAsync() + { + const string sql = "SELECT * FROM headquarters ORDER BY headquarters_id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + await using var reader = await cmd.ExecuteReaderAsync(); + var items = new List(); + while (await reader.ReadAsync()) + { + items.Add(Map(reader)); + } + return items; + } + + public async Task FindByIdAsync(int id) + { + const string sql = "SELECT * FROM headquarters WHERE headquarters_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + await using var reader = await cmd.ExecuteReaderAsync(); + return await reader.ReadAsync() ? Map(reader) : null; + } + + public async Task GetMetricsAsync(int id) + { + var headquarters = await FindByIdAsync(id); + if (headquarters is null) + { + throw new NotFoundException("Headquarters", id); + } + + // Mirrors the TypeScript route behavior where missing floor/capacity resolve to 0. + var score = headquarters.HeadquartersId; + var average = headquarters.HeadquartersId / 2.0; + var display = $"HQ-{headquarters.HeadquartersId}0"; + + return new + { + score, + average, + display + }; + } + + public async Task CreateAsync(CreateHeadquartersRequest request) + { + const string sql = """ + INSERT INTO headquarters (name, description, address, contact_person, email, phone) + VALUES ($name, $description, $address, $contactPerson, $email, $phone); + SELECT last_insert_rowid(); + """; + + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$name", request.Name); + cmd.Parameters.AddWithValue("$description", (object?)request.Description ?? DBNull.Value); + cmd.Parameters.AddWithValue("$address", (object?)request.Address ?? DBNull.Value); + cmd.Parameters.AddWithValue("$contactPerson", (object?)request.ContactPerson ?? DBNull.Value); + cmd.Parameters.AddWithValue("$email", (object?)request.Email ?? DBNull.Value); + cmd.Parameters.AddWithValue("$phone", (object?)request.Phone ?? DBNull.Value); + + var id = Convert.ToInt32(await cmd.ExecuteScalarAsync()); + return await FindByIdAsync(id) ?? throw new DatabaseException("Failed to retrieve created Headquarters"); + } + + public async Task UpdateAsync(int id, UpdateHeadquartersRequest request) + { + var updates = new List(); + var parameters = new List(); + if (request.Name is not null) { updates.Add("name = $name"); parameters.Add(new SqliteParameter("$name", request.Name)); } + if (request.Description is not null) { updates.Add("description = $description"); parameters.Add(new SqliteParameter("$description", request.Description)); } + if (request.Address is not null) { updates.Add("address = $address"); parameters.Add(new SqliteParameter("$address", request.Address)); } + if (request.ContactPerson is not null) { updates.Add("contact_person = $contactPerson"); parameters.Add(new SqliteParameter("$contactPerson", request.ContactPerson)); } + if (request.Email is not null) { updates.Add("email = $email"); parameters.Add(new SqliteParameter("$email", request.Email)); } + if (request.Phone is not null) { updates.Add("phone = $phone"); parameters.Add(new SqliteParameter("$phone", request.Phone)); } + + if (updates.Count == 0) + { + throw new ValidationException("No fields provided for update"); + } + + var sql = $"UPDATE headquarters SET {string.Join(", ", updates)} WHERE headquarters_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + foreach (var parameter in parameters) + { + cmd.Parameters.Add(parameter); + } + var changes = await cmd.ExecuteNonQueryAsync(); + if (changes == 0) + { + throw new NotFoundException("Headquarters", id); + } + + return await FindByIdAsync(id) ?? throw new DatabaseException("Failed to retrieve updated Headquarters"); + } + + public async Task DeleteAsync(int id) + { + const string sql = "DELETE FROM headquarters WHERE headquarters_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + var changes = await cmd.ExecuteNonQueryAsync(); + if (changes == 0) + { + throw new NotFoundException("Headquarters", id); + } + } + + private static Headquarters Map(SqliteDataReader reader) => + new( + HeadquartersId: reader.GetInt32(reader.GetOrdinal("headquarters_id")), + Name: reader.GetString(reader.GetOrdinal("name")), + Description: reader["description"] as string, + Address: reader["address"] as string, + ContactPerson: reader["contact_person"] as string, + Email: reader["email"] as string, + Phone: reader["phone"] as string + ); +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/OrderDetailDeliveriesRepository.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/OrderDetailDeliveriesRepository.cs new file mode 100644 index 000000000..8c592f5fe --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/OrderDetailDeliveriesRepository.cs @@ -0,0 +1,112 @@ +using Microsoft.Data.Sqlite; +using OctoSupply.Api.Data; +using OctoSupply.Api.Models; +using OctoSupply.Api.Utils; + +namespace OctoSupply.Api.Repositories; + +public sealed class OrderDetailDeliveriesRepository(SqliteConnectionFactory connectionFactory) +{ + private readonly SqliteConnectionFactory _connectionFactory = connectionFactory; + + public async Task> FindAllAsync() + { + const string sql = "SELECT * FROM order_detail_deliveries ORDER BY order_detail_delivery_id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + await using var reader = await cmd.ExecuteReaderAsync(); + var items = new List(); + while (await reader.ReadAsync()) + { + items.Add(Map(reader)); + } + return items; + } + + public async Task FindByIdAsync(int id) + { + const string sql = "SELECT * FROM order_detail_deliveries WHERE order_detail_delivery_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + await using var reader = await cmd.ExecuteReaderAsync(); + return await reader.ReadAsync() ? Map(reader) : null; + } + + public async Task CreateAsync(CreateOrderDetailDeliveryRequest request) + { + const string sql = """ + INSERT INTO order_detail_deliveries (order_detail_id, delivery_id, quantity, notes) + VALUES ($orderDetailId, $deliveryId, $quantity, $notes); + SELECT last_insert_rowid(); + """; + + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$orderDetailId", request.OrderDetailId); + cmd.Parameters.AddWithValue("$deliveryId", request.DeliveryId); + cmd.Parameters.AddWithValue("$quantity", request.Quantity); + cmd.Parameters.AddWithValue("$notes", (object?)request.Notes ?? DBNull.Value); + + var id = Convert.ToInt32(await cmd.ExecuteScalarAsync()); + return await FindByIdAsync(id) ?? throw new DatabaseException("Failed to retrieve created OrderDetailDelivery"); + } + + public async Task UpdateAsync(int id, UpdateOrderDetailDeliveryRequest request) + { + var updates = new List(); + var parameters = new List(); + if (request.OrderDetailId.HasValue) { updates.Add("order_detail_id = $orderDetailId"); parameters.Add(new SqliteParameter("$orderDetailId", request.OrderDetailId.Value)); } + if (request.DeliveryId.HasValue) { updates.Add("delivery_id = $deliveryId"); parameters.Add(new SqliteParameter("$deliveryId", request.DeliveryId.Value)); } + if (request.Quantity.HasValue) { updates.Add("quantity = $quantity"); parameters.Add(new SqliteParameter("$quantity", request.Quantity.Value)); } + if (request.Notes is not null) { updates.Add("notes = $notes"); parameters.Add(new SqliteParameter("$notes", request.Notes)); } + + if (updates.Count == 0) + { + throw new ValidationException("No fields provided for update"); + } + + var sql = $"UPDATE order_detail_deliveries SET {string.Join(", ", updates)} WHERE order_detail_delivery_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + foreach (var parameter in parameters) + { + cmd.Parameters.Add(parameter); + } + var changes = await cmd.ExecuteNonQueryAsync(); + if (changes == 0) + { + throw new NotFoundException("OrderDetailDelivery", id); + } + + return await FindByIdAsync(id) ?? throw new DatabaseException("Failed to retrieve updated OrderDetailDelivery"); + } + + public async Task DeleteAsync(int id) + { + const string sql = "DELETE FROM order_detail_deliveries WHERE order_detail_delivery_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + var changes = await cmd.ExecuteNonQueryAsync(); + if (changes == 0) + { + throw new NotFoundException("OrderDetailDelivery", id); + } + } + + private static OrderDetailDelivery Map(SqliteDataReader reader) => + new( + OrderDetailDeliveryId: reader.GetInt32(reader.GetOrdinal("order_detail_delivery_id")), + OrderDetailId: reader.GetInt32(reader.GetOrdinal("order_detail_id")), + DeliveryId: reader.GetInt32(reader.GetOrdinal("delivery_id")), + Quantity: reader.GetInt32(reader.GetOrdinal("quantity")), + Notes: reader["notes"] as string + ); +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/OrderDetailsRepository.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/OrderDetailsRepository.cs new file mode 100644 index 000000000..276def5f6 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/OrderDetailsRepository.cs @@ -0,0 +1,115 @@ +using Microsoft.Data.Sqlite; +using OctoSupply.Api.Data; +using OctoSupply.Api.Models; +using OctoSupply.Api.Utils; + +namespace OctoSupply.Api.Repositories; + +public sealed class OrderDetailsRepository(SqliteConnectionFactory connectionFactory) +{ + private readonly SqliteConnectionFactory _connectionFactory = connectionFactory; + + public async Task> FindAllAsync() + { + const string sql = "SELECT * FROM order_details ORDER BY order_detail_id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + await using var reader = await cmd.ExecuteReaderAsync(); + var items = new List(); + while (await reader.ReadAsync()) + { + items.Add(Map(reader)); + } + return items; + } + + public async Task FindByIdAsync(int id) + { + const string sql = "SELECT * FROM order_details WHERE order_detail_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + await using var reader = await cmd.ExecuteReaderAsync(); + return await reader.ReadAsync() ? Map(reader) : null; + } + + public async Task CreateAsync(CreateOrderDetailRequest request) + { + const string sql = """ + INSERT INTO order_details (order_id, product_id, quantity, unit_price, notes) + VALUES ($orderId, $productId, $quantity, $unitPrice, $notes); + SELECT last_insert_rowid(); + """; + + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$orderId", request.OrderId); + cmd.Parameters.AddWithValue("$productId", request.ProductId); + cmd.Parameters.AddWithValue("$quantity", request.Quantity); + cmd.Parameters.AddWithValue("$unitPrice", request.UnitPrice); + cmd.Parameters.AddWithValue("$notes", (object?)request.Notes ?? DBNull.Value); + + var id = Convert.ToInt32(await cmd.ExecuteScalarAsync()); + return await FindByIdAsync(id) ?? throw new DatabaseException("Failed to retrieve created OrderDetail"); + } + + public async Task UpdateAsync(int id, UpdateOrderDetailRequest request) + { + var updates = new List(); + var parameters = new List(); + if (request.OrderId.HasValue) { updates.Add("order_id = $orderId"); parameters.Add(new SqliteParameter("$orderId", request.OrderId.Value)); } + if (request.ProductId.HasValue) { updates.Add("product_id = $productId"); parameters.Add(new SqliteParameter("$productId", request.ProductId.Value)); } + if (request.Quantity.HasValue) { updates.Add("quantity = $quantity"); parameters.Add(new SqliteParameter("$quantity", request.Quantity.Value)); } + if (request.UnitPrice.HasValue) { updates.Add("unit_price = $unitPrice"); parameters.Add(new SqliteParameter("$unitPrice", request.UnitPrice.Value)); } + if (request.Notes is not null) { updates.Add("notes = $notes"); parameters.Add(new SqliteParameter("$notes", request.Notes)); } + + if (updates.Count == 0) + { + throw new ValidationException("No fields provided for update"); + } + + var sql = $"UPDATE order_details SET {string.Join(", ", updates)} WHERE order_detail_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + foreach (var parameter in parameters) + { + cmd.Parameters.Add(parameter); + } + var changes = await cmd.ExecuteNonQueryAsync(); + if (changes == 0) + { + throw new NotFoundException("OrderDetail", id); + } + + return await FindByIdAsync(id) ?? throw new DatabaseException("Failed to retrieve updated OrderDetail"); + } + + public async Task DeleteAsync(int id) + { + const string sql = "DELETE FROM order_details WHERE order_detail_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + var changes = await cmd.ExecuteNonQueryAsync(); + if (changes == 0) + { + throw new NotFoundException("OrderDetail", id); + } + } + + private static OrderDetail Map(SqliteDataReader reader) => + new( + OrderDetailId: reader.GetInt32(reader.GetOrdinal("order_detail_id")), + OrderId: reader.GetInt32(reader.GetOrdinal("order_id")), + ProductId: reader.GetInt32(reader.GetOrdinal("product_id")), + Quantity: reader.GetInt32(reader.GetOrdinal("quantity")), + UnitPrice: reader.GetDouble(reader.GetOrdinal("unit_price")), + Notes: reader["notes"] as string + ); +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/OrdersRepository.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/OrdersRepository.cs new file mode 100644 index 000000000..846c4f4a1 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/OrdersRepository.cs @@ -0,0 +1,115 @@ +using Microsoft.Data.Sqlite; +using OctoSupply.Api.Data; +using OctoSupply.Api.Models; +using OctoSupply.Api.Utils; + +namespace OctoSupply.Api.Repositories; + +public sealed class OrdersRepository(SqliteConnectionFactory connectionFactory) +{ + private readonly SqliteConnectionFactory _connectionFactory = connectionFactory; + + public async Task> FindAllAsync() + { + const string sql = "SELECT * FROM orders ORDER BY order_id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + await using var reader = await cmd.ExecuteReaderAsync(); + var items = new List(); + while (await reader.ReadAsync()) + { + items.Add(Map(reader)); + } + return items; + } + + public async Task FindByIdAsync(int id) + { + const string sql = "SELECT * FROM orders WHERE order_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + await using var reader = await cmd.ExecuteReaderAsync(); + return await reader.ReadAsync() ? Map(reader) : null; + } + + public async Task CreateAsync(CreateOrderRequest request) + { + const string sql = """ + INSERT INTO orders (branch_id, order_date, name, description, status) + VALUES ($branchId, $orderDate, $name, $description, $status); + SELECT last_insert_rowid(); + """; + + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$branchId", request.BranchId); + cmd.Parameters.AddWithValue("$orderDate", request.OrderDate); + cmd.Parameters.AddWithValue("$name", request.Name); + cmd.Parameters.AddWithValue("$description", (object?)request.Description ?? DBNull.Value); + cmd.Parameters.AddWithValue("$status", request.Status); + + var id = Convert.ToInt32(await cmd.ExecuteScalarAsync()); + return await FindByIdAsync(id) ?? throw new DatabaseException("Failed to retrieve created Order"); + } + + public async Task UpdateAsync(int id, UpdateOrderRequest request) + { + var updates = new List(); + var parameters = new List(); + if (request.BranchId.HasValue) { updates.Add("branch_id = $branchId"); parameters.Add(new SqliteParameter("$branchId", request.BranchId.Value)); } + if (request.OrderDate is not null) { updates.Add("order_date = $orderDate"); parameters.Add(new SqliteParameter("$orderDate", request.OrderDate)); } + if (request.Name is not null) { updates.Add("name = $name"); parameters.Add(new SqliteParameter("$name", request.Name)); } + if (request.Description is not null) { updates.Add("description = $description"); parameters.Add(new SqliteParameter("$description", request.Description)); } + if (request.Status is not null) { updates.Add("status = $status"); parameters.Add(new SqliteParameter("$status", request.Status)); } + + if (updates.Count == 0) + { + throw new ValidationException("No fields provided for update"); + } + + var sql = $"UPDATE orders SET {string.Join(", ", updates)} WHERE order_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + foreach (var parameter in parameters) + { + cmd.Parameters.Add(parameter); + } + var changes = await cmd.ExecuteNonQueryAsync(); + if (changes == 0) + { + throw new NotFoundException("Order", id); + } + + return await FindByIdAsync(id) ?? throw new DatabaseException("Failed to retrieve updated Order"); + } + + public async Task DeleteAsync(int id) + { + const string sql = "DELETE FROM orders WHERE order_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + var changes = await cmd.ExecuteNonQueryAsync(); + if (changes == 0) + { + throw new NotFoundException("Order", id); + } + } + + private static Order Map(SqliteDataReader reader) => + new( + OrderId: reader.GetInt32(reader.GetOrdinal("order_id")), + BranchId: reader.GetInt32(reader.GetOrdinal("branch_id")), + OrderDate: reader.GetString(reader.GetOrdinal("order_date")), + Name: reader.GetString(reader.GetOrdinal("name")), + Description: reader["description"] as string, + Status: reader.GetString(reader.GetOrdinal("status")) + ); +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/ProductsRepository.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/ProductsRepository.cs new file mode 100644 index 000000000..fc1b795d2 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/ProductsRepository.cs @@ -0,0 +1,124 @@ +using Microsoft.Data.Sqlite; +using OctoSupply.Api.Data; +using OctoSupply.Api.Models; +using OctoSupply.Api.Utils; + +namespace OctoSupply.Api.Repositories; + +public sealed class ProductsRepository(SqliteConnectionFactory connectionFactory) +{ + private readonly SqliteConnectionFactory _connectionFactory = connectionFactory; + + public async Task> FindAllAsync() + { + const string sql = "SELECT * FROM products ORDER BY product_id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + await using var reader = await cmd.ExecuteReaderAsync(); + var items = new List(); + while (await reader.ReadAsync()) + { + items.Add(Map(reader)); + } + return items; + } + + public async Task FindByIdAsync(int id) + { + const string sql = "SELECT * FROM products WHERE product_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + await using var reader = await cmd.ExecuteReaderAsync(); + return await reader.ReadAsync() ? Map(reader) : null; + } + + public async Task CreateAsync(CreateProductRequest request) + { + const string sql = """ + INSERT INTO products (supplier_id, name, description, price, sku, unit, img_name, discount) + VALUES ($supplierId, $name, $description, $price, $sku, $unit, $imgName, $discount); + SELECT last_insert_rowid(); + """; + + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$supplierId", request.SupplierId); + cmd.Parameters.AddWithValue("$name", request.Name); + cmd.Parameters.AddWithValue("$description", (object?)request.Description ?? DBNull.Value); + cmd.Parameters.AddWithValue("$price", request.Price); + cmd.Parameters.AddWithValue("$sku", request.Sku); + cmd.Parameters.AddWithValue("$unit", request.Unit); + cmd.Parameters.AddWithValue("$imgName", (object?)request.ImgName ?? DBNull.Value); + cmd.Parameters.AddWithValue("$discount", request.Discount); + + var id = Convert.ToInt32(await cmd.ExecuteScalarAsync()); + return await FindByIdAsync(id) ?? throw new DatabaseException("Failed to retrieve created Product"); + } + + public async Task UpdateAsync(int id, UpdateProductRequest request) + { + var updates = new List(); + var parameters = new List(); + if (request.SupplierId.HasValue) { updates.Add("supplier_id = $supplierId"); parameters.Add(new SqliteParameter("$supplierId", request.SupplierId.Value)); } + if (request.Name is not null) { updates.Add("name = $name"); parameters.Add(new SqliteParameter("$name", request.Name)); } + if (request.Description is not null) { updates.Add("description = $description"); parameters.Add(new SqliteParameter("$description", request.Description)); } + if (request.Price.HasValue) { updates.Add("price = $price"); parameters.Add(new SqliteParameter("$price", request.Price.Value)); } + if (request.Sku is not null) { updates.Add("sku = $sku"); parameters.Add(new SqliteParameter("$sku", request.Sku)); } + if (request.Unit is not null) { updates.Add("unit = $unit"); parameters.Add(new SqliteParameter("$unit", request.Unit)); } + if (request.ImgName is not null) { updates.Add("img_name = $imgName"); parameters.Add(new SqliteParameter("$imgName", request.ImgName)); } + if (request.Discount.HasValue) { updates.Add("discount = $discount"); parameters.Add(new SqliteParameter("$discount", request.Discount.Value)); } + + if (updates.Count == 0) + { + throw new ValidationException("No fields provided for update"); + } + + var sql = $"UPDATE products SET {string.Join(", ", updates)} WHERE product_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + foreach (var parameter in parameters) + { + cmd.Parameters.Add(parameter); + } + var changes = await cmd.ExecuteNonQueryAsync(); + if (changes == 0) + { + throw new NotFoundException("Product", id); + } + + return await FindByIdAsync(id) ?? throw new DatabaseException("Failed to retrieve updated Product"); + } + + public async Task DeleteAsync(int id) + { + const string sql = "DELETE FROM products WHERE product_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + var changes = await cmd.ExecuteNonQueryAsync(); + if (changes == 0) + { + throw new NotFoundException("Product", id); + } + } + + private static Product Map(SqliteDataReader reader) => + new( + ProductId: reader.GetInt32(reader.GetOrdinal("product_id")), + SupplierId: reader.GetInt32(reader.GetOrdinal("supplier_id")), + Name: reader.GetString(reader.GetOrdinal("name")), + Description: reader["description"] as string, + Price: reader.GetDouble(reader.GetOrdinal("price")), + Sku: reader.GetString(reader.GetOrdinal("sku")), + Unit: reader.GetString(reader.GetOrdinal("unit")), + ImgName: reader["img_name"] as string, + Discount: reader.GetDouble(reader.GetOrdinal("discount")) + ); +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/SuppliersRepository.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/SuppliersRepository.cs new file mode 100644 index 000000000..d583a7a14 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Repositories/SuppliersRepository.cs @@ -0,0 +1,121 @@ +using Microsoft.Data.Sqlite; +using OctoSupply.Api.Data; +using OctoSupply.Api.Models; +using OctoSupply.Api.Utils; + +namespace OctoSupply.Api.Repositories; + +public sealed class SuppliersRepository(SqliteConnectionFactory connectionFactory) +{ + private readonly SqliteConnectionFactory _connectionFactory = connectionFactory; + + public async Task> FindAllAsync() + { + const string sql = "SELECT * FROM suppliers ORDER BY supplier_id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + await using var reader = await cmd.ExecuteReaderAsync(); + var items = new List(); + while (await reader.ReadAsync()) + { + items.Add(Map(reader)); + } + return items; + } + + public async Task FindByIdAsync(int id) + { + const string sql = "SELECT * FROM suppliers WHERE supplier_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + await using var reader = await cmd.ExecuteReaderAsync(); + return await reader.ReadAsync() ? Map(reader) : null; + } + + public async Task CreateAsync(CreateSupplierRequest request) + { + const string sql = """ + INSERT INTO suppliers (name, description, contact_person, email, phone, active, verified) + VALUES ($name, $description, $contactPerson, $email, $phone, $active, $verified); + SELECT last_insert_rowid(); + """; + + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$name", request.Name); + cmd.Parameters.AddWithValue("$description", (object?)request.Description ?? DBNull.Value); + cmd.Parameters.AddWithValue("$contactPerson", (object?)request.ContactPerson ?? DBNull.Value); + cmd.Parameters.AddWithValue("$email", (object?)request.Email ?? DBNull.Value); + cmd.Parameters.AddWithValue("$phone", (object?)request.Phone ?? DBNull.Value); + cmd.Parameters.AddWithValue("$active", request.Active ? 1 : 0); + cmd.Parameters.AddWithValue("$verified", request.Verified ? 1 : 0); + + var id = Convert.ToInt32(await cmd.ExecuteScalarAsync()); + return await FindByIdAsync(id) ?? throw new DatabaseException("Failed to retrieve created Supplier"); + } + + public async Task UpdateAsync(int id, UpdateSupplierRequest request) + { + var updates = new List(); + var parameters = new List(); + if (request.Name is not null) { updates.Add("name = $name"); parameters.Add(new SqliteParameter("$name", request.Name)); } + if (request.Description is not null) { updates.Add("description = $description"); parameters.Add(new SqliteParameter("$description", request.Description)); } + if (request.ContactPerson is not null) { updates.Add("contact_person = $contactPerson"); parameters.Add(new SqliteParameter("$contactPerson", request.ContactPerson)); } + if (request.Email is not null) { updates.Add("email = $email"); parameters.Add(new SqliteParameter("$email", request.Email)); } + if (request.Phone is not null) { updates.Add("phone = $phone"); parameters.Add(new SqliteParameter("$phone", request.Phone)); } + if (request.Active.HasValue) { updates.Add("active = $active"); parameters.Add(new SqliteParameter("$active", request.Active.Value ? 1 : 0)); } + if (request.Verified.HasValue) { updates.Add("verified = $verified"); parameters.Add(new SqliteParameter("$verified", request.Verified.Value ? 1 : 0)); } + + if (updates.Count == 0) + { + throw new ValidationException("No fields provided for update"); + } + + var sql = $"UPDATE suppliers SET {string.Join(", ", updates)} WHERE supplier_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + foreach (var parameter in parameters) + { + cmd.Parameters.Add(parameter); + } + var changes = await cmd.ExecuteNonQueryAsync(); + if (changes == 0) + { + throw new NotFoundException("Supplier", id); + } + + return await FindByIdAsync(id) ?? throw new DatabaseException("Failed to retrieve updated Supplier"); + } + + public async Task DeleteAsync(int id) + { + const string sql = "DELETE FROM suppliers WHERE supplier_id = $id;"; + await using var connection = await _connectionFactory.OpenConnectionAsync(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = sql; + cmd.Parameters.AddWithValue("$id", id); + var changes = await cmd.ExecuteNonQueryAsync(); + if (changes == 0) + { + throw new NotFoundException("Supplier", id); + } + } + + private static Supplier Map(SqliteDataReader reader) => + new( + SupplierId: reader.GetInt32(reader.GetOrdinal("supplier_id")), + Name: reader.GetString(reader.GetOrdinal("name")), + Description: reader["description"] as string, + ContactPerson: reader["contact_person"] as string, + Email: reader["email"] as string, + Phone: reader["phone"] as string, + Active: Convert.ToInt32(reader["active"]) == 1, + Verified: Convert.ToInt32(reader["verified"]) == 1 + ); +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Utils/ApiExceptions.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Utils/ApiExceptions.cs new file mode 100644 index 000000000..d10a420c3 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Utils/ApiExceptions.cs @@ -0,0 +1,46 @@ +namespace OctoSupply.Api.Utils; + +public class ApiException : Exception +{ + public int StatusCode { get; } + public string Code { get; } + + public ApiException(string message, string code, int statusCode) + : base(message) + { + Code = code; + StatusCode = statusCode; + } +} + +public sealed class NotFoundException : ApiException +{ + public NotFoundException(string entity, int id) + : base($"{entity} with ID {id} not found", "NOT_FOUND", StatusCodes.Status404NotFound) + { + } +} + +public sealed class ValidationException : ApiException +{ + public ValidationException(string message) + : base($"Validation error: {message}", "VALIDATION_ERROR", StatusCodes.Status400BadRequest) + { + } +} + +public sealed class ConflictException : ApiException +{ + public ConflictException(string message) + : base($"Conflict: {message}", "CONFLICT", StatusCodes.Status409Conflict) + { + } +} + +public sealed class DatabaseException : ApiException +{ + public DatabaseException(string message) + : base(message, "DATABASE_ERROR", StatusCodes.Status500InternalServerError) + { + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Utils/ErrorHandlingMiddleware.cs b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Utils/ErrorHandlingMiddleware.cs new file mode 100644 index 000000000..a1503683a --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/Utils/ErrorHandlingMiddleware.cs @@ -0,0 +1,46 @@ +using System.Text.Json; + +namespace OctoSupply.Api.Utils; + +public sealed class ErrorHandlingMiddleware(RequestDelegate next, ILogger logger) +{ + private readonly RequestDelegate _next = next; + private readonly ILogger _logger = logger; + + public async Task Invoke(HttpContext context) + { + try + { + await _next(context); + } + catch (ApiException ex) + { + context.Response.StatusCode = ex.StatusCode; + context.Response.ContentType = "application/json"; + var payload = new + { + error = new + { + code = ex.Code, + message = ex.Message + } + }; + await context.Response.WriteAsync(JsonSerializer.Serialize(payload)); + } + catch (Exception ex) + { + _logger.LogError(ex, "Unhandled server error"); + context.Response.StatusCode = StatusCodes.Status500InternalServerError; + context.Response.ContentType = "application/json"; + var payload = new + { + error = new + { + code = "INTERNAL_ERROR", + message = "An unexpected error occurred" + } + }; + await context.Response.WriteAsync(JsonSerializer.Serialize(payload)); + } + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/appsettings.Development.json b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/appsettings.Development.json new file mode 100644 index 000000000..0c208ae91 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/appsettings.json b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/appsettings.json new file mode 100644 index 000000000..8fd54cadf --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-cs/appsettings.json @@ -0,0 +1,12 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "Database": { + "FilePath": "./data/app.db" + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/README.md b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/README.md new file mode 100644 index 000000000..108261b9d --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/README.md @@ -0,0 +1,33 @@ +# OctoSupply API (Java) + +Spring Boot 3 port of the OctoSupply API. + +## Run + +```bash +mvn spring-boot:run +``` + +Default API URL: `http://localhost:3000` + +## Environment + +- `PORT` (default: `3000`) +- `DB_FILE` (default: `./data/app.db`) +- `API_CORS_ORIGINS` (comma-separated override; optional) +- `DB_MIGRATIONS_DIR` (optional override for migrations directory) + +## Database + +On startup, the API applies SQL migrations from: + +- `../database/migrations/*.sql` + +and seeds from: + +- `../database/seed/*.sql` + +## OpenAPI + +- OpenAPI JSON: `http://localhost:3000/api-docs.json` +- Swagger UI: `http://localhost:3000/api-docs` diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/pom.xml b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/pom.xml new file mode 100644 index 000000000..07c63e7e0 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/pom.xml @@ -0,0 +1,59 @@ + + + 4.0.0 + + + org.springframework.boot + spring-boot-starter-parent + 3.3.5 + + + + com.octocat + supply + 1.0.0 + octosupply-api-java + OctoSupply API Java port + + + 17 + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-jdbc + + + org.xerial + sqlite-jdbc + 3.47.1.0 + + + org.springdoc + springdoc-openapi-starter-webmvc-ui + 2.6.0 + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/Application.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/Application.java new file mode 100644 index 000000000..de80bd8a4 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/Application.java @@ -0,0 +1,11 @@ +package com.octocat.supply; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/config/DatabaseConfig.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/config/DatabaseConfig.java new file mode 100644 index 000000000..589472a78 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/config/DatabaseConfig.java @@ -0,0 +1,37 @@ +package com.octocat.supply.config; + +import org.sqlite.SQLiteConfig; +import org.sqlite.SQLiteDataSource; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.sql.DataSource; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +@Configuration +public class DatabaseConfig { + @Bean + public DataSource dataSource(@Value("${app.db-file}") String dbFile) throws Exception { + String resolvedDbFile = dbFile; + if (!":memory:".equals(dbFile)) { + Path dbPath = Paths.get(dbFile).toAbsolutePath().normalize(); + Path parent = dbPath.getParent(); + if (parent != null) { + Files.createDirectories(parent); + } + resolvedDbFile = dbPath.toString(); + } + + SQLiteConfig config = new SQLiteConfig(); + config.enforceForeignKeys(true); + config.setBusyTimeout(30000); + config.setJournalMode(SQLiteConfig.JournalMode.WAL); + + SQLiteDataSource dataSource = new SQLiteDataSource(config); + dataSource.setUrl("jdbc:sqlite:" + resolvedDbFile); + return dataSource; + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/config/DatabaseInitializer.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/config/DatabaseInitializer.java new file mode 100644 index 000000000..35c8e1587 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/config/DatabaseInitializer.java @@ -0,0 +1,174 @@ +package com.octocat.supply.config; + +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + +@Component +public class DatabaseInitializer implements ApplicationRunner { + private final DataSource dataSource; + + public DatabaseInitializer(DataSource dataSource) { + this.dataSource = dataSource; + } + + @Override + public void run(ApplicationArguments args) throws Exception { + try (Connection connection = dataSource.getConnection()) { + ensureMigrationsTable(connection); + applyMigrations(connection); + seedIfNeeded(connection); + } + } + + private void ensureMigrationsTable(Connection connection) throws Exception { + try (Statement statement = connection.createStatement()) { + statement.execute(""" + CREATE TABLE IF NOT EXISTS migrations ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + version INTEGER NOT NULL, + filename TEXT NOT NULL UNIQUE, + applied_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP + ); + """); + } + } + + private void applyMigrations(Connection connection) throws Exception { + Path migrationsDir = resolvePath("../database/migrations", true); + if (!Files.exists(migrationsDir)) { + throw new IllegalStateException("Migrations directory not found: " + migrationsDir); + } + + List files; + try (var stream = Files.list(migrationsDir)) { + files = stream + .filter(path -> path.getFileName().toString().endsWith(".sql")) + .sorted(Comparator.comparing(path -> path.getFileName().toString())) + .toList(); + } + + for (Path file : files) { + String filename = file.getFileName().toString(); + if (isMigrationApplied(connection, filename)) { + continue; + } + + executeSqlFile(connection, file); + int version = parseMigrationVersion(filename); + try (var statement = connection.prepareStatement("INSERT INTO migrations (version, filename) VALUES (?, ?)")) { + statement.setInt(1, version); + statement.setString(2, filename); + statement.executeUpdate(); + } + } + } + + private boolean isMigrationApplied(Connection connection, String filename) throws Exception { + try (var statement = connection.prepareStatement("SELECT COUNT(*) FROM migrations WHERE filename = ?")) { + statement.setString(1, filename); + try (ResultSet resultSet = statement.executeQuery()) { + return resultSet.next() && resultSet.getInt(1) > 0; + } + } + } + + private void seedIfNeeded(Connection connection) throws Exception { + boolean shouldSeed = true; + try (Statement statement = connection.createStatement(); + ResultSet resultSet = statement.executeQuery("SELECT COUNT(*) FROM suppliers")) { + if (resultSet.next()) { + shouldSeed = resultSet.getInt(1) == 0; + } + } catch (Exception ignored) { + shouldSeed = true; + } + + if (!shouldSeed) { + return; + } + + Path seedDir = resolvePath("../database/seed", false); + if (!Files.exists(seedDir)) { + return; + } + + List files; + try (var stream = Files.list(seedDir)) { + files = stream + .filter(path -> path.getFileName().toString().endsWith(".sql")) + .sorted(Comparator.comparing(path -> path.getFileName().toString())) + .toList(); + } + + for (Path file : files) { + executeSqlFile(connection, file); + } + } + + private void executeSqlFile(Connection connection, Path file) throws Exception { + String sql = Files.readString(file); + List statements = splitStatements(sql); + + try (Statement statement = connection.createStatement()) { + connection.setAutoCommit(false); + try { + for (String sqlStatement : statements) { + statement.execute(sqlStatement); + } + connection.commit(); + } catch (Exception ex) { + connection.rollback(); + throw ex; + } finally { + connection.setAutoCommit(true); + } + } + } + + private List splitStatements(String sqlScript) { + String withoutComments = sqlScript.lines() + .filter(line -> !line.trim().startsWith("--")) + .collect(Collectors.joining("\n")); + + List statements = new ArrayList<>(); + for (String part : withoutComments.split(";")) { + String trimmed = part.trim(); + if (!trimmed.isEmpty()) { + statements.add(trimmed); + } + } + return statements; + } + + private int parseMigrationVersion(String filename) { + String prefix = filename.split("_", 2)[0]; + try { + return Integer.parseInt(prefix); + } catch (NumberFormatException ex) { + return 0; + } + } + + private Path resolvePath(String relativePath, boolean allowEnvOverride) { + if (allowEnvOverride) { + String override = System.getenv("DB_MIGRATIONS_DIR"); + if (override != null && !override.isBlank()) { + return Paths.get(override).toAbsolutePath().normalize(); + } + } + return Paths.get(relativePath).toAbsolutePath().normalize(); + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/config/WebConfig.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/config/WebConfig.java new file mode 100644 index 000000000..01ba099ae --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/config/WebConfig.java @@ -0,0 +1,39 @@ +package com.octocat.supply.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +@Configuration +public class WebConfig implements WebMvcConfigurer { + @Value("${app.cors-origins:}") + private String configuredOrigins; + + @Override + public void addCorsMappings(CorsRegistry registry) { + var registration = registry.addMapping("/**") + .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") + .allowedHeaders("*") + .allowCredentials(true); + + if (configuredOrigins != null && !configuredOrigins.isBlank()) { + registration.allowedOrigins(Arrays.stream(configuredOrigins.split(",")) + .map(String::trim) + .filter(origin -> !origin.isEmpty()) + .toArray(String[]::new)); + return; + } + + List defaultPatterns = new ArrayList<>(); + defaultPatterns.add("http://localhost:*"); + defaultPatterns.add("http://127.0.0.1:*"); + defaultPatterns.add("https://*.app.github.dev"); + defaultPatterns.add("https://*.azurecontainerapps.io"); + registration.allowedOriginPatterns(defaultPatterns.toArray(String[]::new)); + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/BranchesController.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/BranchesController.java new file mode 100644 index 000000000..d78822d2f --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/BranchesController.java @@ -0,0 +1,53 @@ +package com.octocat.supply.controller; + +import com.octocat.supply.exception.NotFoundException; +import com.octocat.supply.model.BranchModel.Branch; +import com.octocat.supply.model.BranchModel.CreateBranchRequest; +import com.octocat.supply.model.BranchModel.UpdateBranchRequest; +import com.octocat.supply.repository.BranchesRepository; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api/branches") +public class BranchesController { + private final BranchesRepository repository; + + public BranchesController(BranchesRepository repository) { + this.repository = repository; + } + + @GetMapping + public List getAll() { + return repository.findAll(); + } + + @GetMapping("/{id}") + public Branch getById(@PathVariable int id) { + return repository.findById(id).orElseThrow(() -> new NotFoundException("Branch not found")); + } + + @PostMapping + @ResponseStatus(HttpStatus.CREATED) + public Branch create(@RequestBody CreateBranchRequest request) { + ControllerValidation.requireText(request.name(), "name"); + return repository.create(request); + } + + @PutMapping("/{id}") + public Branch update(@PathVariable int id, @RequestBody UpdateBranchRequest request) { + repository.findById(id).orElseThrow(() -> new NotFoundException("Branch not found")); + repository.update(id, request); + return repository.findById(id).orElseThrow(() -> new NotFoundException("Branch not found")); + } + + @DeleteMapping("/{id}") + @ResponseStatus(HttpStatus.NO_CONTENT) + public void delete(@PathVariable int id) { + if (!repository.delete(id)) { + throw new NotFoundException("Branch not found"); + } + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/ControllerValidation.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/ControllerValidation.java new file mode 100644 index 000000000..ef6918fd9 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/ControllerValidation.java @@ -0,0 +1,20 @@ +package com.octocat.supply.controller; + +import com.octocat.supply.exception.ValidationException; + +final class ControllerValidation { + private ControllerValidation() { + } + + static void requireText(String value, String fieldName) { + if (value == null || value.isBlank()) { + throw new ValidationException(fieldName + " is required"); + } + } + + static void requirePositive(Integer value, String fieldName) { + if (value == null || value <= 0) { + throw new ValidationException(fieldName + " is required"); + } + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/DeliveriesController.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/DeliveriesController.java new file mode 100644 index 000000000..4b1b809ae --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/DeliveriesController.java @@ -0,0 +1,72 @@ +package com.octocat.supply.controller; + +import com.octocat.supply.exception.NotFoundException; +import com.octocat.supply.model.DeliveryModel.CreateDeliveryRequest; +import com.octocat.supply.model.DeliveryModel.Delivery; +import com.octocat.supply.model.DeliveryModel.UpdateDeliveryRequest; +import com.octocat.supply.model.DeliveryModel.UpdateDeliveryStatusRequest; +import com.octocat.supply.repository.DeliveriesRepository; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/api/deliveries") +public class DeliveriesController { + private final DeliveriesRepository repository; + + public DeliveriesController(DeliveriesRepository repository) { + this.repository = repository; + } + + @GetMapping + public List getAll() { + return repository.findAll(); + } + + @GetMapping("/{id}") + public Delivery getById(@PathVariable int id) { + return repository.findById(id).orElseThrow(() -> new NotFoundException("Delivery not found")); + } + + @PostMapping + @ResponseStatus(HttpStatus.CREATED) + public Delivery create(@RequestBody CreateDeliveryRequest request) { + ControllerValidation.requireText(request.name(), "name"); + ControllerValidation.requireText(request.deliveryDate(), "deliveryDate"); + return repository.create(request); + } + + @PutMapping("/{id}") + public Delivery update(@PathVariable int id, @RequestBody UpdateDeliveryRequest request) { + repository.findById(id).orElseThrow(() -> new NotFoundException("Delivery not found")); + repository.update(id, request); + return repository.findById(id).orElseThrow(() -> new NotFoundException("Delivery not found")); + } + + @PutMapping("/{id}/status") + public Object updateStatus(@PathVariable int id, @RequestBody UpdateDeliveryStatusRequest request) { + ControllerValidation.requireText(request.status(), "status"); + repository.findById(id).orElseThrow(() -> new NotFoundException("Delivery not found")); + repository.updateStatus(id, request.status()); + Delivery updated = repository.findById(id).orElseThrow(() -> new NotFoundException("Delivery not found")); + if (request.deliveryPartner() != null && !request.deliveryPartner().isBlank()) { + Map response = new LinkedHashMap<>(); + response.put("delivery", updated); + response.put("commandOutput", ""); + return response; + } + return updated; + } + + @DeleteMapping("/{id}") + @ResponseStatus(HttpStatus.NO_CONTENT) + public void delete(@PathVariable int id) { + if (!repository.delete(id)) { + throw new NotFoundException("Delivery not found"); + } + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/HeadquartersController.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/HeadquartersController.java new file mode 100644 index 000000000..b741a3beb --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/HeadquartersController.java @@ -0,0 +1,67 @@ +package com.octocat.supply.controller; + +import com.octocat.supply.exception.NotFoundException; +import com.octocat.supply.model.HeadquartersModel.CreateHeadquartersRequest; +import com.octocat.supply.model.HeadquartersModel.Headquarters; +import com.octocat.supply.model.HeadquartersModel.HeadquartersMetrics; +import com.octocat.supply.model.HeadquartersModel.UpdateHeadquartersRequest; +import com.octocat.supply.repository.HeadquartersRepository; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/api/headquarters") +public class HeadquartersController { + private final HeadquartersRepository repository; + + public HeadquartersController(HeadquartersRepository repository) { + this.repository = repository; + } + + @GetMapping + public List getAll() { + return repository.findAll(); + } + + @GetMapping("/{id}") + public Headquarters getById(@PathVariable int id) { + return repository.findById(id).orElseThrow(() -> new NotFoundException("Headquarters not found")); + } + + @GetMapping("/{id}/metrics") + public HeadquartersMetrics metrics(@PathVariable int id) { + repository.findById(id).orElseThrow(() -> new NotFoundException("Headquarters not found")); + return repository.metrics(id); + } + + @GetMapping("/{id}/label") + public Map label(@PathVariable int id) { + Headquarters headquarters = repository.findById(id).orElseThrow(() -> new NotFoundException("Headquarters not found")); + return Map.of("label", "Location:" + headquarters.name() + "City:Country:"); + } + + @PostMapping + @ResponseStatus(HttpStatus.CREATED) + public Headquarters create(@RequestBody CreateHeadquartersRequest request) { + ControllerValidation.requireText(request.name(), "name"); + return repository.create(request); + } + + @PutMapping("/{id}") + public Headquarters update(@PathVariable int id, @RequestBody UpdateHeadquartersRequest request) { + repository.findById(id).orElseThrow(() -> new NotFoundException("Headquarters not found")); + repository.update(id, request); + return repository.findById(id).orElseThrow(() -> new NotFoundException("Headquarters not found")); + } + + @DeleteMapping("/{id}") + @ResponseStatus(HttpStatus.NO_CONTENT) + public void delete(@PathVariable int id) { + if (!repository.delete(id)) { + throw new NotFoundException("Headquarters not found"); + } + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/OrderDetailDeliveriesController.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/OrderDetailDeliveriesController.java new file mode 100644 index 000000000..2bbfd3f7a --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/OrderDetailDeliveriesController.java @@ -0,0 +1,54 @@ +package com.octocat.supply.controller; + +import com.octocat.supply.exception.NotFoundException; +import com.octocat.supply.model.OrderDetailDeliveryModel.CreateOrderDetailDeliveryRequest; +import com.octocat.supply.model.OrderDetailDeliveryModel.OrderDetailDelivery; +import com.octocat.supply.model.OrderDetailDeliveryModel.UpdateOrderDetailDeliveryRequest; +import com.octocat.supply.repository.OrderDetailDeliveriesRepository; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api/order-detail-deliveries") +public class OrderDetailDeliveriesController { + private final OrderDetailDeliveriesRepository repository; + + public OrderDetailDeliveriesController(OrderDetailDeliveriesRepository repository) { + this.repository = repository; + } + + @GetMapping + public List getAll() { + return repository.findAll(); + } + + @GetMapping("/{id}") + public OrderDetailDelivery getById(@PathVariable int id) { + return repository.findById(id).orElseThrow(() -> new NotFoundException("OrderDetailDelivery not found")); + } + + @PostMapping + @ResponseStatus(HttpStatus.CREATED) + public OrderDetailDelivery create(@RequestBody CreateOrderDetailDeliveryRequest request) { + ControllerValidation.requirePositive(request.orderDetailId(), "orderDetailId"); + ControllerValidation.requirePositive(request.deliveryId(), "deliveryId"); + return repository.create(request); + } + + @PutMapping("/{id}") + public OrderDetailDelivery update(@PathVariable int id, @RequestBody UpdateOrderDetailDeliveryRequest request) { + repository.findById(id).orElseThrow(() -> new NotFoundException("OrderDetailDelivery not found")); + repository.update(id, request); + return repository.findById(id).orElseThrow(() -> new NotFoundException("OrderDetailDelivery not found")); + } + + @DeleteMapping("/{id}") + @ResponseStatus(HttpStatus.NO_CONTENT) + public void delete(@PathVariable int id) { + if (!repository.delete(id)) { + throw new NotFoundException("OrderDetailDelivery not found"); + } + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/OrderDetailsController.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/OrderDetailsController.java new file mode 100644 index 000000000..97e2e4010 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/OrderDetailsController.java @@ -0,0 +1,54 @@ +package com.octocat.supply.controller; + +import com.octocat.supply.exception.NotFoundException; +import com.octocat.supply.model.OrderDetailModel.CreateOrderDetailRequest; +import com.octocat.supply.model.OrderDetailModel.OrderDetail; +import com.octocat.supply.model.OrderDetailModel.UpdateOrderDetailRequest; +import com.octocat.supply.repository.OrderDetailsRepository; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api/order-details") +public class OrderDetailsController { + private final OrderDetailsRepository repository; + + public OrderDetailsController(OrderDetailsRepository repository) { + this.repository = repository; + } + + @GetMapping + public List getAll() { + return repository.findAll(); + } + + @GetMapping("/{id}") + public OrderDetail getById(@PathVariable int id) { + return repository.findById(id).orElseThrow(() -> new NotFoundException("OrderDetail not found")); + } + + @PostMapping + @ResponseStatus(HttpStatus.CREATED) + public OrderDetail create(@RequestBody CreateOrderDetailRequest request) { + ControllerValidation.requirePositive(request.orderId(), "orderId"); + ControllerValidation.requirePositive(request.productId(), "productId"); + return repository.create(request); + } + + @PutMapping("/{id}") + public OrderDetail update(@PathVariable int id, @RequestBody UpdateOrderDetailRequest request) { + repository.findById(id).orElseThrow(() -> new NotFoundException("OrderDetail not found")); + repository.update(id, request); + return repository.findById(id).orElseThrow(() -> new NotFoundException("OrderDetail not found")); + } + + @DeleteMapping("/{id}") + @ResponseStatus(HttpStatus.NO_CONTENT) + public void delete(@PathVariable int id) { + if (!repository.delete(id)) { + throw new NotFoundException("OrderDetail not found"); + } + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/OrdersController.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/OrdersController.java new file mode 100644 index 000000000..f96fafad6 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/OrdersController.java @@ -0,0 +1,54 @@ +package com.octocat.supply.controller; + +import com.octocat.supply.exception.NotFoundException; +import com.octocat.supply.model.OrderModel.CreateOrderRequest; +import com.octocat.supply.model.OrderModel.Order; +import com.octocat.supply.model.OrderModel.UpdateOrderRequest; +import com.octocat.supply.repository.OrdersRepository; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api/orders") +public class OrdersController { + private final OrdersRepository repository; + + public OrdersController(OrdersRepository repository) { + this.repository = repository; + } + + @GetMapping + public List getAll() { + return repository.findAll(); + } + + @GetMapping("/{id}") + public Order getById(@PathVariable int id) { + return repository.findById(id).orElseThrow(() -> new NotFoundException("Order not found")); + } + + @PostMapping + @ResponseStatus(HttpStatus.CREATED) + public Order create(@RequestBody CreateOrderRequest request) { + ControllerValidation.requireText(request.name(), "name"); + ControllerValidation.requirePositive(request.branchId(), "branchId"); + return repository.create(request); + } + + @PutMapping("/{id}") + public Order update(@PathVariable int id, @RequestBody UpdateOrderRequest request) { + repository.findById(id).orElseThrow(() -> new NotFoundException("Order not found")); + repository.update(id, request); + return repository.findById(id).orElseThrow(() -> new NotFoundException("Order not found")); + } + + @DeleteMapping("/{id}") + @ResponseStatus(HttpStatus.NO_CONTENT) + public void delete(@PathVariable int id) { + if (!repository.delete(id)) { + throw new NotFoundException("Order not found"); + } + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/ProductsController.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/ProductsController.java new file mode 100644 index 000000000..051661450 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/ProductsController.java @@ -0,0 +1,53 @@ +package com.octocat.supply.controller; + +import com.octocat.supply.exception.NotFoundException; +import com.octocat.supply.model.ProductModel.CreateProductRequest; +import com.octocat.supply.model.ProductModel.Product; +import com.octocat.supply.model.ProductModel.UpdateProductRequest; +import com.octocat.supply.repository.ProductsRepository; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api/products") +public class ProductsController { + private final ProductsRepository repository; + + public ProductsController(ProductsRepository repository) { + this.repository = repository; + } + + @GetMapping + public List getAll() { + return repository.findAll(); + } + + @GetMapping("/{id}") + public Product getById(@PathVariable int id) { + return repository.findById(id).orElseThrow(() -> new NotFoundException("Product not found")); + } + + @PostMapping + @ResponseStatus(HttpStatus.CREATED) + public Product create(@RequestBody CreateProductRequest request) { + ControllerValidation.requireText(request.name(), "name"); + return repository.create(request); + } + + @PutMapping("/{id}") + public Product update(@PathVariable int id, @RequestBody UpdateProductRequest request) { + repository.findById(id).orElseThrow(() -> new NotFoundException("Product not found")); + repository.update(id, request); + return repository.findById(id).orElseThrow(() -> new NotFoundException("Product not found")); + } + + @DeleteMapping("/{id}") + @ResponseStatus(HttpStatus.NO_CONTENT) + public void delete(@PathVariable int id) { + if (!repository.delete(id)) { + throw new NotFoundException("Product not found"); + } + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/RootController.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/RootController.java new file mode 100644 index 000000000..66c58ca6e --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/RootController.java @@ -0,0 +1,12 @@ +package com.octocat.supply.controller; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class RootController { + @GetMapping("/") + public String root() { + return "Hello, world!"; + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/SuppliersController.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/SuppliersController.java new file mode 100644 index 000000000..00b9465ac --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/controller/SuppliersController.java @@ -0,0 +1,62 @@ +package com.octocat.supply.controller; + +import com.octocat.supply.exception.NotFoundException; +import com.octocat.supply.model.SupplierModel.CreateSupplierRequest; +import com.octocat.supply.model.SupplierModel.Supplier; +import com.octocat.supply.model.SupplierModel.UpdateSupplierRequest; +import com.octocat.supply.repository.SuppliersRepository; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/api/suppliers") +public class SuppliersController { + private final SuppliersRepository repository; + + public SuppliersController(SuppliersRepository repository) { + this.repository = repository; + } + + @GetMapping + public List getAll() { + return repository.findAll(); + } + + @GetMapping("/{id}") + public Supplier getById(@PathVariable int id) { + return repository.findById(id).orElseThrow(() -> new NotFoundException("Supplier not found")); + } + + @GetMapping("/{id}/status") + public Map getStatus(@PathVariable int id) { + repository.findById(id).orElseThrow(() -> new NotFoundException("Supplier not found")); + return Map.of("status", "APPROVED"); + } + + @PostMapping + @ResponseStatus(HttpStatus.CREATED) + public Supplier create(@RequestBody CreateSupplierRequest request) { + ControllerValidation.requireText(request.name(), "name"); + return repository.create(request); + } + + @PutMapping("/{id}") + public Supplier update(@PathVariable int id, @RequestBody UpdateSupplierRequest request) { + if (!repository.findById(id).isPresent()) { + throw new NotFoundException("Supplier not found"); + } + repository.update(id, request); + return repository.findById(id).orElseThrow(() -> new NotFoundException("Supplier not found")); + } + + @DeleteMapping("/{id}") + @ResponseStatus(HttpStatus.NO_CONTENT) + public void delete(@PathVariable int id) { + if (!repository.delete(id)) { + throw new NotFoundException("Supplier not found"); + } + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/ApiException.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/ApiException.java new file mode 100644 index 000000000..e58e3c99f --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/ApiException.java @@ -0,0 +1,14 @@ +package com.octocat.supply.exception; + +public class ApiException extends RuntimeException { + private final String code; + + public ApiException(String code, String message) { + super(message); + this.code = code; + } + + public String getCode() { + return code; + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/ConflictException.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/ConflictException.java new file mode 100644 index 000000000..19c9d9840 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/ConflictException.java @@ -0,0 +1,7 @@ +package com.octocat.supply.exception; + +public class ConflictException extends ApiException { + public ConflictException(String message) { + super("CONFLICT_ERROR", message); + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/DatabaseException.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/DatabaseException.java new file mode 100644 index 000000000..344412055 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/DatabaseException.java @@ -0,0 +1,7 @@ +package com.octocat.supply.exception; + +public class DatabaseException extends ApiException { + public DatabaseException(String message) { + super("DATABASE_ERROR", message); + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/GlobalExceptionHandler.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/GlobalExceptionHandler.java new file mode 100644 index 000000000..c862f1855 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/GlobalExceptionHandler.java @@ -0,0 +1,47 @@ +package com.octocat.supply.exception; + +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +import java.util.Map; + +@RestControllerAdvice +public class GlobalExceptionHandler { + @ExceptionHandler(NotFoundException.class) + public ResponseEntity> handleNotFound(NotFoundException exception) { + return error(HttpStatus.NOT_FOUND, exception); + } + + @ExceptionHandler(ValidationException.class) + public ResponseEntity> handleValidation(ValidationException exception) { + return error(HttpStatus.BAD_REQUEST, exception); + } + + @ExceptionHandler(ConflictException.class) + public ResponseEntity> handleConflict(ConflictException exception) { + return error(HttpStatus.CONFLICT, exception); + } + + @ExceptionHandler({DatabaseException.class, DataIntegrityViolationException.class}) + public ResponseEntity> handleDatabase(RuntimeException exception) { + ApiException apiException = exception instanceof ApiException api ? api : new DatabaseException("Database operation failed."); + return error(HttpStatus.INTERNAL_SERVER_ERROR, apiException); + } + + @ExceptionHandler(Exception.class) + public ResponseEntity> handleGeneric(Exception exception) { + return error(HttpStatus.INTERNAL_SERVER_ERROR, new ApiException("INTERNAL_ERROR", "Internal server error.")); + } + + private ResponseEntity> error(HttpStatus status, ApiException exception) { + return ResponseEntity.status(status).body(Map.of( + "error", Map.of( + "code", exception.getCode(), + "message", exception.getMessage() + ) + )); + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/NotFoundException.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/NotFoundException.java new file mode 100644 index 000000000..a9e46092f --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/NotFoundException.java @@ -0,0 +1,7 @@ +package com.octocat.supply.exception; + +public class NotFoundException extends ApiException { + public NotFoundException(String message) { + super("NOT_FOUND", message); + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/ValidationException.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/ValidationException.java new file mode 100644 index 000000000..eea60d2f2 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/exception/ValidationException.java @@ -0,0 +1,7 @@ +package com.octocat.supply.exception; + +public class ValidationException extends ApiException { + public ValidationException(String message) { + super("VALIDATION_ERROR", message); + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/BranchModel.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/BranchModel.java new file mode 100644 index 000000000..fd5999525 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/BranchModel.java @@ -0,0 +1,40 @@ +package com.octocat.supply.model; + +public final class BranchModel { + private BranchModel() { + } + + public record Branch( + int branchId, + int headquartersId, + String name, + String description, + String address, + String contactPerson, + String email, + String phone + ) { + } + + public record CreateBranchRequest( + Integer headquartersId, + String name, + String description, + String address, + String contactPerson, + String email, + String phone + ) { + } + + public record UpdateBranchRequest( + Integer headquartersId, + String name, + String description, + String address, + String contactPerson, + String email, + String phone + ) { + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/DeliveryModel.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/DeliveryModel.java new file mode 100644 index 000000000..b7faaf442 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/DeliveryModel.java @@ -0,0 +1,40 @@ +package com.octocat.supply.model; + +public final class DeliveryModel { + private DeliveryModel() { + } + + public record Delivery( + int deliveryId, + int orderId, + String deliveryDate, + String name, + String description, + String status + ) { + } + + public record CreateDeliveryRequest( + Integer orderId, + String deliveryDate, + String name, + String description, + String status + ) { + } + + public record UpdateDeliveryRequest( + Integer orderId, + String deliveryDate, + String name, + String description, + String status + ) { + } + + public record UpdateDeliveryStatusRequest( + String status, + String deliveryPartner + ) { + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/HeadquartersModel.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/HeadquartersModel.java new file mode 100644 index 000000000..78d70dc81 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/HeadquartersModel.java @@ -0,0 +1,44 @@ +package com.octocat.supply.model; + +public final class HeadquartersModel { + private HeadquartersModel() { + } + + public record Headquarters( + int headquartersId, + String name, + String description, + String address, + String contactPerson, + String email, + String phone + ) { + } + + public record CreateHeadquartersRequest( + String name, + String description, + String address, + String contactPerson, + String email, + String phone + ) { + } + + public record UpdateHeadquartersRequest( + String name, + String description, + String address, + String contactPerson, + String email, + String phone + ) { + } + + public record HeadquartersMetrics( + int score, + double average, + String display + ) { + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/OrderDetailDeliveryModel.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/OrderDetailDeliveryModel.java new file mode 100644 index 000000000..1883ee705 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/OrderDetailDeliveryModel.java @@ -0,0 +1,28 @@ +package com.octocat.supply.model; + +public final class OrderDetailDeliveryModel { + private OrderDetailDeliveryModel() { + } + + public record OrderDetailDelivery( + int orderDetailDeliveryId, + int orderDetailId, + int deliveryId, + int quantityDelivered + ) { + } + + public record CreateOrderDetailDeliveryRequest( + Integer orderDetailId, + Integer deliveryId, + Integer quantityDelivered + ) { + } + + public record UpdateOrderDetailDeliveryRequest( + Integer orderDetailId, + Integer deliveryId, + Integer quantityDelivered + ) { + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/OrderDetailModel.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/OrderDetailModel.java new file mode 100644 index 000000000..faceae275 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/OrderDetailModel.java @@ -0,0 +1,28 @@ +package com.octocat.supply.model; + +public final class OrderDetailModel { + private OrderDetailModel() { + } + + public record OrderDetail( + int orderDetailId, + int orderId, + int productId, + int quantity + ) { + } + + public record CreateOrderDetailRequest( + Integer orderId, + Integer productId, + Integer quantity + ) { + } + + public record UpdateOrderDetailRequest( + Integer orderId, + Integer productId, + Integer quantity + ) { + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/OrderModel.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/OrderModel.java new file mode 100644 index 000000000..86cc70fc1 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/OrderModel.java @@ -0,0 +1,34 @@ +package com.octocat.supply.model; + +public final class OrderModel { + private OrderModel() { + } + + public record Order( + int orderId, + int branchId, + String orderDate, + String name, + String description, + String status + ) { + } + + public record CreateOrderRequest( + Integer branchId, + String orderDate, + String name, + String description, + String status + ) { + } + + public record UpdateOrderRequest( + Integer branchId, + String orderDate, + String name, + String description, + String status + ) { + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/ProductModel.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/ProductModel.java new file mode 100644 index 000000000..1a7715647 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/ProductModel.java @@ -0,0 +1,43 @@ +package com.octocat.supply.model; + +public final class ProductModel { + private ProductModel() { + } + + public record Product( + int productId, + int supplierId, + String name, + String description, + double price, + String sku, + String unit, + String imgName, + double discount + ) { + } + + public record CreateProductRequest( + Integer supplierId, + String name, + String description, + Double price, + String sku, + String unit, + String imgName, + Double discount + ) { + } + + public record UpdateProductRequest( + Integer supplierId, + String name, + String description, + Double price, + String sku, + String unit, + String imgName, + Double discount + ) { + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/SupplierModel.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/SupplierModel.java new file mode 100644 index 000000000..172792a83 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/model/SupplierModel.java @@ -0,0 +1,40 @@ +package com.octocat.supply.model; + +public final class SupplierModel { + private SupplierModel() { + } + + public record Supplier( + int supplierId, + String name, + String description, + String contactPerson, + String email, + String phone, + boolean active, + boolean verified + ) { + } + + public record CreateSupplierRequest( + String name, + String description, + String contactPerson, + String email, + String phone, + Boolean active, + Boolean verified + ) { + } + + public record UpdateSupplierRequest( + String name, + String description, + String contactPerson, + String email, + String phone, + Boolean active, + Boolean verified + ) { + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/BranchesRepository.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/BranchesRepository.java new file mode 100644 index 000000000..6574e20ea --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/BranchesRepository.java @@ -0,0 +1,79 @@ +package com.octocat.supply.repository; + +import com.octocat.supply.model.BranchModel.Branch; +import com.octocat.supply.model.BranchModel.CreateBranchRequest; +import com.octocat.supply.model.BranchModel.UpdateBranchRequest; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Optional; + +@Repository +public class BranchesRepository { + private final JdbcTemplate jdbcTemplate; + + private final RowMapper mapper = (rs, rowNum) -> new Branch( + rs.getInt("branch_id"), + rs.getInt("headquarters_id"), + rs.getString("name"), + rs.getString("description"), + rs.getString("address"), + rs.getString("contact_person"), + rs.getString("email"), + rs.getString("phone") + ); + + public BranchesRepository(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + + public List findAll() { + return jdbcTemplate.query("SELECT * FROM branches ORDER BY branch_id", mapper); + } + + public Optional findById(int id) { + return jdbcTemplate.query("SELECT * FROM branches WHERE branch_id = ?", mapper, id).stream().findFirst(); + } + + public Branch create(CreateBranchRequest request) { + jdbcTemplate.update( + """ + INSERT INTO branches (headquarters_id, name, description, address, contact_person, email, phone) + VALUES (?, ?, ?, ?, ?, ?, ?) + """, + request.headquartersId(), + request.name(), + request.description(), + request.address(), + request.contactPerson(), + request.email(), + request.phone() + ); + Integer id = jdbcTemplate.queryForObject("SELECT last_insert_rowid()", Integer.class); + return findById(id).orElseThrow(); + } + + public boolean update(int id, UpdateBranchRequest request) { + return SqlUpdateBuilder.executeIfPresent( + b -> { + b.add("headquarters_id", request.headquartersId()); + b.add("name", request.name()); + b.add("description", request.description()); + b.add("address", request.address()); + b.add("contact_person", request.contactPerson()); + b.add("email", request.email()); + b.add("phone", request.phone()); + }, + "branches", + "branch_id", + id, + jdbcTemplate + ); + } + + public boolean delete(int id) { + return jdbcTemplate.update("DELETE FROM branches WHERE branch_id = ?", id) > 0; + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/DeliveriesRepository.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/DeliveriesRepository.java new file mode 100644 index 000000000..c1db21a76 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/DeliveriesRepository.java @@ -0,0 +1,77 @@ +package com.octocat.supply.repository; + +import com.octocat.supply.model.DeliveryModel.CreateDeliveryRequest; +import com.octocat.supply.model.DeliveryModel.Delivery; +import com.octocat.supply.model.DeliveryModel.UpdateDeliveryRequest; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Optional; + +@Repository +public class DeliveriesRepository { + private final JdbcTemplate jdbcTemplate; + + private final RowMapper mapper = (rs, rowNum) -> new Delivery( + rs.getInt("delivery_id"), + rs.getInt("order_id"), + rs.getString("delivery_date"), + rs.getString("name"), + rs.getString("description"), + rs.getString("status") + ); + + public DeliveriesRepository(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + + public List findAll() { + return jdbcTemplate.query("SELECT * FROM deliveries ORDER BY delivery_id", mapper); + } + + public Optional findById(int id) { + return jdbcTemplate.query("SELECT * FROM deliveries WHERE delivery_id = ?", mapper, id).stream().findFirst(); + } + + public Delivery create(CreateDeliveryRequest request) { + jdbcTemplate.update( + """ + INSERT INTO deliveries (order_id, delivery_date, name, description, status) + VALUES (?, ?, ?, ?, ?) + """, + request.orderId(), + request.deliveryDate(), + request.name(), + request.description(), + request.status() == null ? "pending" : request.status() + ); + Integer id = jdbcTemplate.queryForObject("SELECT last_insert_rowid()", Integer.class); + return findById(id).orElseThrow(); + } + + public boolean update(int id, UpdateDeliveryRequest request) { + return SqlUpdateBuilder.executeIfPresent( + b -> { + b.add("order_id", request.orderId()); + b.add("delivery_date", request.deliveryDate()); + b.add("name", request.name()); + b.add("description", request.description()); + b.add("status", request.status()); + }, + "deliveries", + "delivery_id", + id, + jdbcTemplate + ); + } + + public boolean updateStatus(int id, String status) { + return jdbcTemplate.update("UPDATE deliveries SET status = ? WHERE delivery_id = ?", status, id) > 0; + } + + public boolean delete(int id) { + return jdbcTemplate.update("DELETE FROM deliveries WHERE delivery_id = ?", id) > 0; + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/HeadquartersRepository.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/HeadquartersRepository.java new file mode 100644 index 000000000..2dc8ba02c --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/HeadquartersRepository.java @@ -0,0 +1,101 @@ +package com.octocat.supply.repository; + +import com.octocat.supply.model.HeadquartersModel.CreateHeadquartersRequest; +import com.octocat.supply.model.HeadquartersModel.Headquarters; +import com.octocat.supply.model.HeadquartersModel.HeadquartersMetrics; +import com.octocat.supply.model.HeadquartersModel.UpdateHeadquartersRequest; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; +import java.util.Optional; + +@Repository +public class HeadquartersRepository { + private final JdbcTemplate jdbcTemplate; + + private final RowMapper mapper = (rs, rowNum) -> new Headquarters( + rs.getInt("headquarters_id"), + rs.getString("name"), + rs.getString("description"), + rs.getString("address"), + rs.getString("contact_person"), + rs.getString("email"), + rs.getString("phone") + ); + + public HeadquartersRepository(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + + public List findAll() { + return jdbcTemplate.query("SELECT * FROM headquarters ORDER BY headquarters_id", mapper); + } + + public Optional findById(int id) { + return jdbcTemplate.query("SELECT * FROM headquarters WHERE headquarters_id = ?", mapper, id).stream().findFirst(); + } + + public Headquarters create(CreateHeadquartersRequest request) { + jdbcTemplate.update( + """ + INSERT INTO headquarters (name, description, address, contact_person, email, phone) + VALUES (?, ?, ?, ?, ?, ?) + """, + request.name(), + request.description(), + request.address(), + request.contactPerson(), + request.email(), + request.phone() + ); + Integer id = jdbcTemplate.queryForObject("SELECT last_insert_rowid()", Integer.class); + return findById(id).orElseThrow(); + } + + public boolean update(int id, UpdateHeadquartersRequest request) { + return SqlUpdateBuilder.executeIfPresent( + b -> { + b.add("name", request.name()); + b.add("description", request.description()); + b.add("address", request.address()); + b.add("contact_person", request.contactPerson()); + b.add("email", request.email()); + b.add("phone", request.phone()); + }, + "headquarters", + "headquarters_id", + id, + jdbcTemplate + ); + } + + public boolean delete(int id) { + return jdbcTemplate.update("DELETE FROM headquarters WHERE headquarters_id = ?", id) > 0; + } + + public HeadquartersMetrics metrics(int id) { + Map row = jdbcTemplate.queryForMap( + """ + SELECT COUNT(*) AS branch_count, + COUNT(DISTINCT o.order_id) AS order_count + FROM branches b + LEFT JOIN orders o ON o.branch_id = b.branch_id + WHERE b.headquarters_id = ? + """, + id + ); + int branchCount = ((Number) row.get("branch_count")).intValue(); + int orderCount = ((Number) row.get("order_count")).intValue(); + int score = branchCount * 100 + orderCount * 10; + double average = branchCount == 0 ? 0.0 : (double) orderCount / branchCount; + String display = "H-" + id + "-" + score; + return new HeadquartersMetrics(score, average, display); + } + + public String label(int id) { + return "HQ-" + id; + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/OrderDetailDeliveriesRepository.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/OrderDetailDeliveriesRepository.java new file mode 100644 index 000000000..499036f67 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/OrderDetailDeliveriesRepository.java @@ -0,0 +1,71 @@ +package com.octocat.supply.repository; + +import com.octocat.supply.model.OrderDetailDeliveryModel.CreateOrderDetailDeliveryRequest; +import com.octocat.supply.model.OrderDetailDeliveryModel.OrderDetailDelivery; +import com.octocat.supply.model.OrderDetailDeliveryModel.UpdateOrderDetailDeliveryRequest; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Optional; + +@Repository +public class OrderDetailDeliveriesRepository { + private final JdbcTemplate jdbcTemplate; + + private final RowMapper mapper = (rs, rowNum) -> new OrderDetailDelivery( + rs.getInt("order_detail_delivery_id"), + rs.getInt("order_detail_id"), + rs.getInt("delivery_id"), + rs.getInt("quantity_delivered") + ); + + public OrderDetailDeliveriesRepository(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + + public List findAll() { + return jdbcTemplate.query("SELECT * FROM order_detail_deliveries ORDER BY order_detail_delivery_id", mapper); + } + + public Optional findById(int id) { + return jdbcTemplate.query( + "SELECT * FROM order_detail_deliveries WHERE order_detail_delivery_id = ?", + mapper, + id + ).stream().findFirst(); + } + + public OrderDetailDelivery create(CreateOrderDetailDeliveryRequest request) { + jdbcTemplate.update( + """ + INSERT INTO order_detail_deliveries (order_detail_id, delivery_id, quantity_delivered) + VALUES (?, ?, ?) + """, + request.orderDetailId(), + request.deliveryId(), + request.quantityDelivered() + ); + Integer id = jdbcTemplate.queryForObject("SELECT last_insert_rowid()", Integer.class); + return findById(id).orElseThrow(); + } + + public boolean update(int id, UpdateOrderDetailDeliveryRequest request) { + return SqlUpdateBuilder.executeIfPresent( + b -> { + b.add("order_detail_id", request.orderDetailId()); + b.add("delivery_id", request.deliveryId()); + b.add("quantity_delivered", request.quantityDelivered()); + }, + "order_detail_deliveries", + "order_detail_delivery_id", + id, + jdbcTemplate + ); + } + + public boolean delete(int id) { + return jdbcTemplate.update("DELETE FROM order_detail_deliveries WHERE order_detail_delivery_id = ?", id) > 0; + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/OrderDetailsRepository.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/OrderDetailsRepository.java new file mode 100644 index 000000000..b93cdbb40 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/OrderDetailsRepository.java @@ -0,0 +1,67 @@ +package com.octocat.supply.repository; + +import com.octocat.supply.model.OrderDetailModel.CreateOrderDetailRequest; +import com.octocat.supply.model.OrderDetailModel.OrderDetail; +import com.octocat.supply.model.OrderDetailModel.UpdateOrderDetailRequest; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Optional; + +@Repository +public class OrderDetailsRepository { + private final JdbcTemplate jdbcTemplate; + + private final RowMapper mapper = (rs, rowNum) -> new OrderDetail( + rs.getInt("order_detail_id"), + rs.getInt("order_id"), + rs.getInt("product_id"), + rs.getInt("quantity") + ); + + public OrderDetailsRepository(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + + public List findAll() { + return jdbcTemplate.query("SELECT * FROM order_details ORDER BY order_detail_id", mapper); + } + + public Optional findById(int id) { + return jdbcTemplate.query("SELECT * FROM order_details WHERE order_detail_id = ?", mapper, id).stream().findFirst(); + } + + public OrderDetail create(CreateOrderDetailRequest request) { + jdbcTemplate.update( + """ + INSERT INTO order_details (order_id, product_id, quantity) + VALUES (?, ?, ?) + """, + request.orderId(), + request.productId(), + request.quantity() + ); + Integer id = jdbcTemplate.queryForObject("SELECT last_insert_rowid()", Integer.class); + return findById(id).orElseThrow(); + } + + public boolean update(int id, UpdateOrderDetailRequest request) { + return SqlUpdateBuilder.executeIfPresent( + b -> { + b.add("order_id", request.orderId()); + b.add("product_id", request.productId()); + b.add("quantity", request.quantity()); + }, + "order_details", + "order_detail_id", + id, + jdbcTemplate + ); + } + + public boolean delete(int id) { + return jdbcTemplate.update("DELETE FROM order_details WHERE order_detail_id = ?", id) > 0; + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/OrdersRepository.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/OrdersRepository.java new file mode 100644 index 000000000..ce990df5d --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/OrdersRepository.java @@ -0,0 +1,73 @@ +package com.octocat.supply.repository; + +import com.octocat.supply.model.OrderModel.CreateOrderRequest; +import com.octocat.supply.model.OrderModel.Order; +import com.octocat.supply.model.OrderModel.UpdateOrderRequest; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Optional; + +@Repository +public class OrdersRepository { + private final JdbcTemplate jdbcTemplate; + + private final RowMapper mapper = (rs, rowNum) -> new Order( + rs.getInt("order_id"), + rs.getInt("branch_id"), + rs.getString("order_date"), + rs.getString("name"), + rs.getString("description"), + rs.getString("status") + ); + + public OrdersRepository(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + + public List findAll() { + return jdbcTemplate.query("SELECT * FROM orders ORDER BY order_id", mapper); + } + + public Optional findById(int id) { + return jdbcTemplate.query("SELECT * FROM orders WHERE order_id = ?", mapper, id).stream().findFirst(); + } + + public Order create(CreateOrderRequest request) { + jdbcTemplate.update( + """ + INSERT INTO orders (branch_id, order_date, name, description, status) + VALUES (?, ?, ?, ?, ?) + """, + request.branchId(), + request.orderDate(), + request.name(), + request.description(), + request.status() == null ? "pending" : request.status() + ); + Integer id = jdbcTemplate.queryForObject("SELECT last_insert_rowid()", Integer.class); + return findById(id).orElseThrow(); + } + + public boolean update(int id, UpdateOrderRequest request) { + return SqlUpdateBuilder.executeIfPresent( + b -> { + b.add("branch_id", request.branchId()); + b.add("order_date", request.orderDate()); + b.add("name", request.name()); + b.add("description", request.description()); + b.add("status", request.status()); + }, + "orders", + "order_id", + id, + jdbcTemplate + ); + } + + public boolean delete(int id) { + return jdbcTemplate.update("DELETE FROM orders WHERE order_id = ?", id) > 0; + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/ProductsRepository.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/ProductsRepository.java new file mode 100644 index 000000000..8e538a64e --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/ProductsRepository.java @@ -0,0 +1,82 @@ +package com.octocat.supply.repository; + +import com.octocat.supply.model.ProductModel.CreateProductRequest; +import com.octocat.supply.model.ProductModel.Product; +import com.octocat.supply.model.ProductModel.UpdateProductRequest; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Optional; + +@Repository +public class ProductsRepository { + private final JdbcTemplate jdbcTemplate; + + private final RowMapper mapper = (rs, rowNum) -> new Product( + rs.getInt("product_id"), + rs.getInt("supplier_id"), + rs.getString("name"), + rs.getString("description"), + rs.getDouble("price"), + rs.getString("sku"), + rs.getString("unit"), + rs.getString("img_name"), + rs.getDouble("discount") + ); + + public ProductsRepository(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + + public List findAll() { + return jdbcTemplate.query("SELECT * FROM products ORDER BY product_id", mapper); + } + + public Optional findById(int id) { + return jdbcTemplate.query("SELECT * FROM products WHERE product_id = ?", mapper, id).stream().findFirst(); + } + + public Product create(CreateProductRequest request) { + jdbcTemplate.update( + """ + INSERT INTO products (supplier_id, name, description, price, sku, unit, img_name, discount) + VALUES (?, ?, ?, ?, ?, ?, ?, ?) + """, + request.supplierId(), + request.name(), + request.description(), + request.price(), + request.sku(), + request.unit(), + request.imgName(), + request.discount() == null ? 0d : request.discount() + ); + Integer id = jdbcTemplate.queryForObject("SELECT last_insert_rowid()", Integer.class); + return findById(id).orElseThrow(); + } + + public boolean update(int id, UpdateProductRequest request) { + return SqlUpdateBuilder.executeIfPresent( + b -> { + b.add("supplier_id", request.supplierId()); + b.add("name", request.name()); + b.add("description", request.description()); + b.add("price", request.price()); + b.add("sku", request.sku()); + b.add("unit", request.unit()); + b.add("img_name", request.imgName()); + b.add("discount", request.discount()); + }, + "products", + "product_id", + id, + jdbcTemplate + ); + } + + public boolean delete(int id) { + return jdbcTemplate.update("DELETE FROM products WHERE product_id = ?", id) > 0; + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/SqlUpdateBuilder.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/SqlUpdateBuilder.java new file mode 100644 index 000000000..039ca8a78 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/SqlUpdateBuilder.java @@ -0,0 +1,44 @@ +package com.octocat.supply.repository; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Consumer; + +final class SqlUpdateBuilder { + private final List sets = new ArrayList<>(); + private final List args = new ArrayList<>(); + + void add(String column, Object value) { + if (value != null) { + sets.add(column + " = ?"); + args.add(value); + } + } + + boolean isEmpty() { + return sets.isEmpty(); + } + + UpdateStatement build(String table, String idColumn, int idValue) { + String sql = "UPDATE " + table + " SET " + String.join(", ", sets) + " WHERE " + idColumn + " = ?"; + List fullArgs = new ArrayList<>(args); + fullArgs.add(idValue); + return new UpdateStatement(sql, fullArgs.toArray()); + } + + record UpdateStatement(String sql, Object[] args) { + int executeWith(org.springframework.jdbc.core.JdbcTemplate jdbcTemplate) { + return jdbcTemplate.update(sql, args); + } + } + + static boolean executeIfPresent(Consumer binder, String table, String idColumn, int idValue, + org.springframework.jdbc.core.JdbcTemplate jdbcTemplate) { + SqlUpdateBuilder builder = new SqlUpdateBuilder(); + binder.accept(builder); + if (builder.isEmpty()) { + return false; + } + return builder.build(table, idColumn, idValue).executeWith(jdbcTemplate) > 0; + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/SuppliersRepository.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/SuppliersRepository.java new file mode 100644 index 000000000..deadaaced --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/java/com/octocat/supply/repository/SuppliersRepository.java @@ -0,0 +1,79 @@ +package com.octocat.supply.repository; + +import com.octocat.supply.model.SupplierModel.CreateSupplierRequest; +import com.octocat.supply.model.SupplierModel.Supplier; +import com.octocat.supply.model.SupplierModel.UpdateSupplierRequest; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Optional; + +@Repository +public class SuppliersRepository { + private final JdbcTemplate jdbcTemplate; + + private final RowMapper mapper = (rs, rowNum) -> new Supplier( + rs.getInt("supplier_id"), + rs.getString("name"), + rs.getString("description"), + rs.getString("contact_person"), + rs.getString("email"), + rs.getString("phone"), + rs.getInt("active") == 1, + rs.getInt("verified") == 1 + ); + + public SuppliersRepository(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + + public List findAll() { + return jdbcTemplate.query("SELECT * FROM suppliers ORDER BY supplier_id", mapper); + } + + public Optional findById(int id) { + return jdbcTemplate.query("SELECT * FROM suppliers WHERE supplier_id = ?", mapper, id).stream().findFirst(); + } + + public Supplier create(CreateSupplierRequest request) { + jdbcTemplate.update( + """ + INSERT INTO suppliers (name, description, contact_person, email, phone, active, verified) + VALUES (?, ?, ?, ?, ?, ?, ?) + """, + request.name(), + request.description(), + request.contactPerson(), + request.email(), + request.phone(), + request.active() == null || request.active() ? 1 : 0, + request.verified() != null && request.verified() ? 1 : 0 + ); + Integer id = jdbcTemplate.queryForObject("SELECT last_insert_rowid()", Integer.class); + return findById(id).orElseThrow(); + } + + public boolean update(int id, UpdateSupplierRequest request) { + return SqlUpdateBuilder.executeIfPresent( + b -> { + b.add("name", request.name()); + b.add("description", request.description()); + b.add("contact_person", request.contactPerson()); + b.add("email", request.email()); + b.add("phone", request.phone()); + b.add("active", request.active() == null ? null : (request.active() ? 1 : 0)); + b.add("verified", request.verified() == null ? null : (request.verified() ? 1 : 0)); + }, + "suppliers", + "supplier_id", + id, + jdbcTemplate + ); + } + + public boolean delete(int id) { + return jdbcTemplate.update("DELETE FROM suppliers WHERE supplier_id = ?", id) > 0; + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/resources/application.properties b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/resources/application.properties new file mode 100644 index 000000000..bd5c96142 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/main/resources/application.properties @@ -0,0 +1,6 @@ +server.port=${PORT:3000} +app.db-file=${DB_FILE:./data/app.db} +app.cors-origins=${API_CORS_ORIGINS:} + +springdoc.api-docs.path=/api-docs.json +springdoc.swagger-ui.path=/api-docs diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/test/java/com/octocat/supply/ApiEndpointsTest.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/test/java/com/octocat/supply/ApiEndpointsTest.java new file mode 100644 index 000000000..3f9b7a164 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/test/java/com/octocat/supply/ApiEndpointsTest.java @@ -0,0 +1,58 @@ +package com.octocat.supply; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MockMvc; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@SpringBootTest +@AutoConfigureMockMvc +class ApiEndpointsTest { + @Autowired + private MockMvc mockMvc; + + @Test + void suppliersListReturnsSeededData() throws Exception { + mockMvc.perform(get("/api/suppliers")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$[0].supplierId").value(1)) + .andExpect(jsonPath("$[0].name").value("PurrTech Innovations")); + } + + @Test + void supplierStatusEndpointReturnsApproved() throws Exception { + mockMvc.perform(get("/api/suppliers/1/status")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.status").value("APPROVED")); + } + + @Test + void creatingSupplierWithoutNameReturnsValidationError() throws Exception { + mockMvc.perform(post("/api/suppliers") + .contentType(MediaType.APPLICATION_JSON) + .content("{}")) + .andExpect(status().isBadRequest()) + .andExpect(jsonPath("$.error.code").value("VALIDATION_ERROR")) + .andExpect(jsonPath("$.error.message").value("name is required")); + } + + @Test + void headquartersMetricsAndLabelAreExposed() throws Exception { + mockMvc.perform(get("/api/headquarters/1/metrics")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.score").isNumber()) + .andExpect(jsonPath("$.average").isNumber()) + .andExpect(jsonPath("$.display").isString()); + + mockMvc.perform(get("/api/headquarters/1/label")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.label").value("Location:CatTech Global HQCity:Country:")); + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/test/java/com/octocat/supply/RootControllerTest.java b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/test/java/com/octocat/supply/RootControllerTest.java new file mode 100644 index 000000000..7002696fa --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/test/java/com/octocat/supply/RootControllerTest.java @@ -0,0 +1,25 @@ +package com.octocat.supply; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.web.servlet.MockMvc; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@SpringBootTest +@AutoConfigureMockMvc +class RootControllerTest { + @Autowired + private MockMvc mockMvc; + + @Test + void rootEndpointReturnsHelloWorld() throws Exception { + mockMvc.perform(get("/")) + .andExpect(status().isOk()) + .andExpect(content().string("Hello, world!")); + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/test/resources/application.properties b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/test/resources/application.properties new file mode 100644 index 000000000..97ec0123f --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-java/src/test/resources/application.properties @@ -0,0 +1 @@ +app.db-file=./target/test-data/test.db diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/README.md b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/README.md new file mode 100644 index 000000000..805ae45d9 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/README.md @@ -0,0 +1,34 @@ +# OctoSupply API (Python) + +FastAPI port of the OctoSupply API. + +## Run + +```bash +pip install -r requirements.txt +uvicorn main:app --reload --port 3000 +``` + +Default API URL: `http://localhost:3000` + +## Environment + +- `PORT` (used by Makefile/uvicorn command, default `3000`) +- `DB_FILE` (default: `./data/app.db`) +- `API_CORS_ORIGINS` (comma-separated override; optional) +- `DB_MIGRATIONS_DIR` (optional override for migrations directory) + +## Database + +On startup, the API applies SQL migrations from: + +- `../database/migrations/*.sql` + +and seeds from: + +- `../database/seed/*.sql` + +## OpenAPI + +- OpenAPI JSON: `http://localhost:3000/openapi.json` +- Swagger UI: `http://localhost:3000/docs` diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/database/__init__.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/database/__init__.py new file mode 100644 index 000000000..fb24877e3 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/database/__init__.py @@ -0,0 +1 @@ +"""Database helpers for the Python API.""" diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/database/migrate.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/database/migrate.py new file mode 100644 index 000000000..c29446172 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/database/migrate.py @@ -0,0 +1,107 @@ +from __future__ import annotations + +import os +from pathlib import Path + +import aiosqlite + +from database.sqlite import get_connection + + +def _resolve_path(relative_path: str) -> Path: + configured = os.getenv("DB_MIGRATIONS_DIR") + if configured and "migrations" in relative_path.lower(): + return Path(configured).resolve() + return (Path.cwd() / relative_path).resolve() + + +def _parse_migration_version(filename: str) -> int: + prefix = filename.split("_", 1)[0] + return int(prefix) if prefix.isdigit() else 0 + + +def _split_sql_script(sql_script: str) -> list[str]: + return [statement.strip() for statement in sql_script.split(";") if statement.strip()] + + +async def _execute_sql_statements(connection: aiosqlite.Connection, sql_script: str) -> None: + statements = _split_sql_script(sql_script) + await connection.execute("BEGIN;") + try: + for statement in statements: + await connection.execute(statement) + await connection.commit() + except Exception: + await connection.rollback() + raise + + +async def _ensure_migrations_table(connection: aiosqlite.Connection) -> None: + await connection.execute( + """ + CREATE TABLE IF NOT EXISTS migrations ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + version INTEGER NOT NULL, + filename TEXT NOT NULL UNIQUE, + applied_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP + ); + """ + ) + await connection.commit() + + +async def _is_migration_applied(connection: aiosqlite.Connection, filename: str) -> bool: + cursor = await connection.execute( + "SELECT COUNT(*) FROM migrations WHERE filename = ?;", + (filename,), + ) + row = await cursor.fetchone() + return bool(row and row[0] > 0) + + +async def _apply_migrations(connection: aiosqlite.Connection) -> None: + migrations_dir = _resolve_path("../database/migrations") + if not migrations_dir.exists(): + raise RuntimeError(f"Migrations directory not found: {migrations_dir}") + + migration_files = sorted(migrations_dir.glob("*.sql"), key=lambda f: f.name) + for file_path in migration_files: + if await _is_migration_applied(connection, file_path.name): + continue + + sql = file_path.read_text(encoding="utf-8") + await _execute_sql_statements(connection, sql) + await connection.execute( + "INSERT INTO migrations (version, filename) VALUES (?, ?);", + (_parse_migration_version(file_path.name), file_path.name), + ) + await connection.commit() + + +async def _seed_if_needed(connection: aiosqlite.Connection) -> None: + should_seed = True + try: + cursor = await connection.execute("SELECT COUNT(*) FROM suppliers;") + row = await cursor.fetchone() + should_seed = bool(row and row[0] == 0) + except (aiosqlite.OperationalError, aiosqlite.DatabaseError): + should_seed = True + + if not should_seed: + return + + seed_dir = _resolve_path("../database/seed") + if not seed_dir.exists(): + return + + seed_files = sorted(seed_dir.glob("*.sql"), key=lambda f: f.name) + for file_path in seed_files: + await _execute_sql_statements(connection, file_path.read_text(encoding="utf-8")) + + +async def initialize_database(seed_on_startup: bool) -> None: + async with get_connection() as connection: + await _ensure_migrations_table(connection) + await _apply_migrations(connection) + if seed_on_startup: + await _seed_if_needed(connection) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/database/sqlite.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/database/sqlite.py new file mode 100644 index 000000000..d85e97dd7 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/database/sqlite.py @@ -0,0 +1,29 @@ +from __future__ import annotations + +import os +from contextlib import asynccontextmanager +from pathlib import Path + +import aiosqlite + + +def _resolve_db_file() -> str: + db_file = os.getenv("DB_FILE", "./data/app.db") + if db_file != ":memory:": + db_path = Path(db_file).resolve() + db_path.parent.mkdir(parents=True, exist_ok=True) + return str(db_path) + return db_file + + +@asynccontextmanager +async def get_connection() -> aiosqlite.Connection: + connection = await aiosqlite.connect(_resolve_db_file()) + connection.row_factory = aiosqlite.Row + await connection.execute("PRAGMA foreign_keys = ON;") + await connection.execute("PRAGMA journal_mode = WAL;") + await connection.execute("PRAGMA busy_timeout = 30000;") + try: + yield connection + finally: + await connection.close() diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/main.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/main.py new file mode 100644 index 000000000..43eb4ce45 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/main.py @@ -0,0 +1,60 @@ +from __future__ import annotations + +import os + +from fastapi import FastAPI +from fastapi.middleware.cors import CORSMiddleware + +from database.migrate import initialize_database +from routes.branches import router as branches_router +from routes.deliveries import router as deliveries_router +from routes.headquarters import router as headquarters_router +from routes.order_detail_deliveries import router as order_detail_deliveries_router +from routes.order_details import router as order_details_router +from routes.orders import router as orders_router +from routes.products import router as products_router +from routes.suppliers import router as suppliers_router +from utils.errors import register_exception_handlers + +app = FastAPI(title="OctoSupply API (Python)", version="1.0.0") + +configured_origins = os.getenv("API_CORS_ORIGINS") +if configured_origins: + allow_origins = [origin.strip() for origin in configured_origins.split(",") if origin.strip()] + allow_origin_regex = None +else: + allow_origins = [ + "http://localhost:5137", + "http://127.0.0.1:5137", + ] + allow_origin_regex = r"^https://.*\.(app\.github\.dev|azurecontainerapps\.io)$" + +app.add_middleware( + CORSMiddleware, + allow_origins=allow_origins, + allow_origin_regex=allow_origin_regex, + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + +register_exception_handlers(app) + +app.include_router(deliveries_router) +app.include_router(order_detail_deliveries_router) +app.include_router(products_router) +app.include_router(order_details_router) +app.include_router(orders_router) +app.include_router(branches_router) +app.include_router(headquarters_router) +app.include_router(suppliers_router) + + +@app.on_event("startup") +async def startup() -> None: + await initialize_database(seed_on_startup=True) + + +@app.get("/") +async def root() -> str: + return "Hello, world!" diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/__init__.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/__init__.py new file mode 100644 index 000000000..208fedbbc --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/__init__.py @@ -0,0 +1 @@ +"""Pydantic API models.""" diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/branch.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/branch.py new file mode 100644 index 000000000..f876a1235 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/branch.py @@ -0,0 +1,34 @@ +from __future__ import annotations + +from pydantic import BaseModel + + +class Branch(BaseModel): + branchId: int + headquartersId: int + name: str + description: str | None = None + address: str | None = None + contactPerson: str | None = None + email: str | None = None + phone: str | None = None + + +class CreateBranchRequest(BaseModel): + headquartersId: int + name: str + description: str | None = None + address: str | None = None + contactPerson: str | None = None + email: str | None = None + phone: str | None = None + + +class UpdateBranchRequest(BaseModel): + headquartersId: int | None = None + name: str | None = None + description: str | None = None + address: str | None = None + contactPerson: str | None = None + email: str | None = None + phone: str | None = None diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/delivery.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/delivery.py new file mode 100644 index 000000000..1800c2216 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/delivery.py @@ -0,0 +1,33 @@ +from __future__ import annotations + +from pydantic import BaseModel + + +class Delivery(BaseModel): + deliveryId: int + supplierId: int + deliveryDate: str + name: str + description: str | None = None + status: str + + +class CreateDeliveryRequest(BaseModel): + supplierId: int + deliveryDate: str + name: str + description: str | None = None + status: str = "pending" + + +class UpdateDeliveryRequest(BaseModel): + supplierId: int | None = None + deliveryDate: str | None = None + name: str | None = None + description: str | None = None + status: str | None = None + + +class UpdateDeliveryStatusRequest(BaseModel): + status: str + deliveryPartner: str | None = None diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/headquarters.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/headquarters.py new file mode 100644 index 000000000..2ac385c56 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/headquarters.py @@ -0,0 +1,37 @@ +from __future__ import annotations + +from pydantic import BaseModel + + +class Headquarters(BaseModel): + headquartersId: int + name: str + description: str | None = None + address: str | None = None + contactPerson: str | None = None + email: str | None = None + phone: str | None = None + + +class CreateHeadquartersRequest(BaseModel): + name: str + description: str | None = None + address: str | None = None + contactPerson: str | None = None + email: str | None = None + phone: str | None = None + + +class UpdateHeadquartersRequest(BaseModel): + name: str | None = None + description: str | None = None + address: str | None = None + contactPerson: str | None = None + email: str | None = None + phone: str | None = None + + +class HeadquartersMetrics(BaseModel): + score: int + average: float + display: str diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/order.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/order.py new file mode 100644 index 000000000..4d0529bb6 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/order.py @@ -0,0 +1,28 @@ +from __future__ import annotations + +from pydantic import BaseModel + + +class Order(BaseModel): + orderId: int + branchId: int + orderDate: str + name: str + description: str | None = None + status: str + + +class CreateOrderRequest(BaseModel): + branchId: int + orderDate: str + name: str + description: str | None = None + status: str = "pending" + + +class UpdateOrderRequest(BaseModel): + branchId: int | None = None + orderDate: str | None = None + name: str | None = None + description: str | None = None + status: str | None = None diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/order_detail.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/order_detail.py new file mode 100644 index 000000000..67db7c870 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/order_detail.py @@ -0,0 +1,28 @@ +from __future__ import annotations + +from pydantic import BaseModel + + +class OrderDetail(BaseModel): + orderDetailId: int + orderId: int + productId: int + quantity: int + unitPrice: float + notes: str | None = None + + +class CreateOrderDetailRequest(BaseModel): + orderId: int + productId: int + quantity: int + unitPrice: float + notes: str | None = None + + +class UpdateOrderDetailRequest(BaseModel): + orderId: int | None = None + productId: int | None = None + quantity: int | None = None + unitPrice: float | None = None + notes: str | None = None diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/order_detail_delivery.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/order_detail_delivery.py new file mode 100644 index 000000000..b3d2c4d1e --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/order_detail_delivery.py @@ -0,0 +1,25 @@ +from __future__ import annotations + +from pydantic import BaseModel + + +class OrderDetailDelivery(BaseModel): + orderDetailDeliveryId: int + orderDetailId: int + deliveryId: int + quantity: int + notes: str | None = None + + +class CreateOrderDetailDeliveryRequest(BaseModel): + orderDetailId: int + deliveryId: int + quantity: int + notes: str | None = None + + +class UpdateOrderDetailDeliveryRequest(BaseModel): + orderDetailId: int | None = None + deliveryId: int | None = None + quantity: int | None = None + notes: str | None = None diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/product.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/product.py new file mode 100644 index 000000000..c3c951223 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/product.py @@ -0,0 +1,37 @@ +from __future__ import annotations + +from pydantic import BaseModel + + +class Product(BaseModel): + productId: int + supplierId: int + name: str + description: str | None = None + price: float + sku: str + unit: str + imgName: str | None = None + discount: float + + +class CreateProductRequest(BaseModel): + supplierId: int + name: str + description: str | None = None + price: float + sku: str + unit: str + imgName: str | None = None + discount: float = 0.0 + + +class UpdateProductRequest(BaseModel): + supplierId: int | None = None + name: str | None = None + description: str | None = None + price: float | None = None + sku: str | None = None + unit: str | None = None + imgName: str | None = None + discount: float | None = None diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/supplier.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/supplier.py new file mode 100644 index 000000000..51570db74 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/models/supplier.py @@ -0,0 +1,34 @@ +from __future__ import annotations + +from pydantic import BaseModel + + +class Supplier(BaseModel): + supplierId: int + name: str + description: str | None = None + contactPerson: str | None = None + email: str | None = None + phone: str | None = None + active: bool + verified: bool + + +class CreateSupplierRequest(BaseModel): + name: str + description: str | None = None + contactPerson: str | None = None + email: str | None = None + phone: str | None = None + active: bool = True + verified: bool = False + + +class UpdateSupplierRequest(BaseModel): + name: str | None = None + description: str | None = None + contactPerson: str | None = None + email: str | None = None + phone: str | None = None + active: bool | None = None + verified: bool | None = None diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/__init__.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/__init__.py new file mode 100644 index 000000000..f7332970e --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/__init__.py @@ -0,0 +1 @@ +"""Repository layer for SQLite persistence.""" diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/_helpers.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/_helpers.py new file mode 100644 index 000000000..a20bd03ba --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/_helpers.py @@ -0,0 +1,36 @@ +from __future__ import annotations + +from typing import Any + +import aiosqlite + +from utils.errors import ValidationException + + +def build_update_statement(field_to_column: dict[str, str], updates: dict[str, Any]) -> tuple[str, list[Any]]: + provided = {k: v for k, v in updates.items() if v is not None} + if not provided: + raise ValidationException("No fields provided for update") + + assignments: list[str] = [] + parameters: list[Any] = [] + for field_name, value in provided.items(): + assignments.append(f"{field_to_column[field_name]} = ?") + parameters.append(value) + + return ", ".join(assignments), parameters + + +async def execute_with_changes( + connection: aiosqlite.Connection, + sql: str, + params: tuple[Any, ...] | list[Any] = (), +) -> int: + cursor = await connection.execute(sql, params) + await connection.commit() + if cursor.rowcount is not None and cursor.rowcount >= 0: + return cursor.rowcount + + changes_cursor = await connection.execute("SELECT changes();") + row = await changes_cursor.fetchone() + return int(row[0]) if row else 0 diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/branches.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/branches.py new file mode 100644 index 000000000..09a9c6cf1 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/branches.py @@ -0,0 +1,98 @@ +from __future__ import annotations + +from database.sqlite import get_connection +from models.branch import Branch, CreateBranchRequest, UpdateBranchRequest +from repositories._helpers import build_update_statement, execute_with_changes +from utils.errors import DatabaseException, NotFoundException + + +class BranchesRepository: + async def find_all(self) -> list[Branch]: + async with get_connection() as connection: + cursor = await connection.execute("SELECT * FROM branches ORDER BY branch_id;") + rows = await cursor.fetchall() + return [self._map_row(row) for row in rows] + + async def find_by_id(self, branch_id: int) -> Branch | None: + async with get_connection() as connection: + cursor = await connection.execute("SELECT * FROM branches WHERE branch_id = ?;", (branch_id,)) + row = await cursor.fetchone() + return self._map_row(row) if row else None + + async def create(self, request: CreateBranchRequest) -> Branch: + async with get_connection() as connection: + cursor = await connection.execute( + """ + INSERT INTO branches (headquarters_id, name, description, address, contact_person, email, phone) + VALUES (?, ?, ?, ?, ?, ?, ?); + """, + ( + request.headquartersId, + request.name, + request.description, + request.address, + request.contactPerson, + request.email, + request.phone, + ), + ) + await connection.commit() + created_id = int(cursor.lastrowid) + + created = await self.find_by_id(created_id) + if created is None: + raise DatabaseException("Failed to retrieve created Branch") + return created + + async def update(self, branch_id: int, request: UpdateBranchRequest) -> Branch: + updates, parameters = build_update_statement( + { + "headquartersId": "headquarters_id", + "name": "name", + "description": "description", + "address": "address", + "contactPerson": "contact_person", + "email": "email", + "phone": "phone", + }, + request.model_dump(exclude_unset=True), + ) + parameters.append(branch_id) + + async with get_connection() as connection: + changes = await execute_with_changes( + connection, + f"UPDATE branches SET {updates} WHERE branch_id = ?;", + parameters, + ) + + if changes == 0: + raise NotFoundException("Branch", branch_id) + + updated = await self.find_by_id(branch_id) + if updated is None: + raise DatabaseException("Failed to retrieve updated Branch") + return updated + + async def delete(self, branch_id: int) -> None: + async with get_connection() as connection: + changes = await execute_with_changes( + connection, + "DELETE FROM branches WHERE branch_id = ?;", + (branch_id,), + ) + if changes == 0: + raise NotFoundException("Branch", branch_id) + + @staticmethod + def _map_row(row: object) -> Branch: + return Branch( + branchId=row["branch_id"], + headquartersId=row["headquarters_id"], + name=row["name"], + description=row["description"], + address=row["address"], + contactPerson=row["contact_person"], + email=row["email"], + phone=row["phone"], + ) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/deliveries.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/deliveries.py new file mode 100644 index 000000000..a21b8db57 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/deliveries.py @@ -0,0 +1,107 @@ +from __future__ import annotations + +from database.sqlite import get_connection +from models.delivery import CreateDeliveryRequest, Delivery, UpdateDeliveryRequest +from repositories._helpers import build_update_statement, execute_with_changes +from utils.errors import DatabaseException, NotFoundException + + +class DeliveriesRepository: + async def find_all(self) -> list[Delivery]: + async with get_connection() as connection: + cursor = await connection.execute("SELECT * FROM deliveries ORDER BY delivery_id;") + rows = await cursor.fetchall() + return [self._map_row(row) for row in rows] + + async def find_by_id(self, delivery_id: int) -> Delivery | None: + async with get_connection() as connection: + cursor = await connection.execute("SELECT * FROM deliveries WHERE delivery_id = ?;", (delivery_id,)) + row = await cursor.fetchone() + return self._map_row(row) if row else None + + async def create(self, request: CreateDeliveryRequest) -> Delivery: + async with get_connection() as connection: + cursor = await connection.execute( + """ + INSERT INTO deliveries (supplier_id, delivery_date, name, description, status) + VALUES (?, ?, ?, ?, ?); + """, + ( + request.supplierId, + request.deliveryDate, + request.name, + request.description, + request.status, + ), + ) + await connection.commit() + created_id = int(cursor.lastrowid) + + created = await self.find_by_id(created_id) + if created is None: + raise DatabaseException("Failed to retrieve created Delivery") + return created + + async def update(self, delivery_id: int, request: UpdateDeliveryRequest) -> Delivery: + updates, parameters = build_update_statement( + { + "supplierId": "supplier_id", + "deliveryDate": "delivery_date", + "name": "name", + "description": "description", + "status": "status", + }, + request.model_dump(exclude_unset=True), + ) + parameters.append(delivery_id) + + async with get_connection() as connection: + changes = await execute_with_changes( + connection, + f"UPDATE deliveries SET {updates} WHERE delivery_id = ?;", + parameters, + ) + + if changes == 0: + raise NotFoundException("Delivery", delivery_id) + + updated = await self.find_by_id(delivery_id) + if updated is None: + raise DatabaseException("Failed to retrieve updated Delivery") + return updated + + async def update_status(self, delivery_id: int, status: str) -> Delivery: + async with get_connection() as connection: + changes = await execute_with_changes( + connection, + "UPDATE deliveries SET status = ? WHERE delivery_id = ?;", + (status, delivery_id), + ) + if changes == 0: + raise NotFoundException("Delivery", delivery_id) + + updated = await self.find_by_id(delivery_id) + if updated is None: + raise DatabaseException("Failed to retrieve updated Delivery") + return updated + + async def delete(self, delivery_id: int) -> None: + async with get_connection() as connection: + changes = await execute_with_changes( + connection, + "DELETE FROM deliveries WHERE delivery_id = ?;", + (delivery_id,), + ) + if changes == 0: + raise NotFoundException("Delivery", delivery_id) + + @staticmethod + def _map_row(row: object) -> Delivery: + return Delivery( + deliveryId=row["delivery_id"], + supplierId=row["supplier_id"], + deliveryDate=row["delivery_date"], + name=row["name"], + description=row["description"], + status=row["status"], + ) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/headquarters.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/headquarters.py new file mode 100644 index 000000000..76d990859 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/headquarters.py @@ -0,0 +1,114 @@ +from __future__ import annotations + +from database.sqlite import get_connection +from models.headquarters import ( + CreateHeadquartersRequest, + Headquarters, + HeadquartersMetrics, + UpdateHeadquartersRequest, +) +from repositories._helpers import build_update_statement, execute_with_changes +from utils.errors import DatabaseException, NotFoundException + + +class HeadquartersRepository: + async def find_all(self) -> list[Headquarters]: + async with get_connection() as connection: + cursor = await connection.execute("SELECT * FROM headquarters ORDER BY headquarters_id;") + rows = await cursor.fetchall() + return [self._map_row(row) for row in rows] + + async def find_by_id(self, headquarters_id: int) -> Headquarters | None: + async with get_connection() as connection: + cursor = await connection.execute( + "SELECT * FROM headquarters WHERE headquarters_id = ?;", + (headquarters_id,), + ) + row = await cursor.fetchone() + return self._map_row(row) if row else None + + async def get_metrics(self, headquarters_id: int) -> HeadquartersMetrics: + headquarters = await self.find_by_id(headquarters_id) + if headquarters is None: + raise NotFoundException("Headquarters", headquarters_id) + + return HeadquartersMetrics( + score=headquarters.headquartersId, + average=headquarters.headquartersId / 2.0, + display=f"HQ-{headquarters.headquartersId}0", + ) + + async def create(self, request: CreateHeadquartersRequest) -> Headquarters: + async with get_connection() as connection: + cursor = await connection.execute( + """ + INSERT INTO headquarters (name, description, address, contact_person, email, phone) + VALUES (?, ?, ?, ?, ?, ?); + """, + ( + request.name, + request.description, + request.address, + request.contactPerson, + request.email, + request.phone, + ), + ) + await connection.commit() + created_id = int(cursor.lastrowid) + + created = await self.find_by_id(created_id) + if created is None: + raise DatabaseException("Failed to retrieve created Headquarters") + return created + + async def update(self, headquarters_id: int, request: UpdateHeadquartersRequest) -> Headquarters: + updates, parameters = build_update_statement( + { + "name": "name", + "description": "description", + "address": "address", + "contactPerson": "contact_person", + "email": "email", + "phone": "phone", + }, + request.model_dump(exclude_unset=True), + ) + parameters.append(headquarters_id) + + async with get_connection() as connection: + changes = await execute_with_changes( + connection, + f"UPDATE headquarters SET {updates} WHERE headquarters_id = ?;", + parameters, + ) + + if changes == 0: + raise NotFoundException("Headquarters", headquarters_id) + + updated = await self.find_by_id(headquarters_id) + if updated is None: + raise DatabaseException("Failed to retrieve updated Headquarters") + return updated + + async def delete(self, headquarters_id: int) -> None: + async with get_connection() as connection: + changes = await execute_with_changes( + connection, + "DELETE FROM headquarters WHERE headquarters_id = ?;", + (headquarters_id,), + ) + if changes == 0: + raise NotFoundException("Headquarters", headquarters_id) + + @staticmethod + def _map_row(row: object) -> Headquarters: + return Headquarters( + headquartersId=row["headquarters_id"], + name=row["name"], + description=row["description"], + address=row["address"], + contactPerson=row["contact_person"], + email=row["email"], + phone=row["phone"], + ) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/order_detail_deliveries.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/order_detail_deliveries.py new file mode 100644 index 000000000..e55c71aad --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/order_detail_deliveries.py @@ -0,0 +1,92 @@ +from __future__ import annotations + +from database.sqlite import get_connection +from models.order_detail_delivery import ( + CreateOrderDetailDeliveryRequest, + OrderDetailDelivery, + UpdateOrderDetailDeliveryRequest, +) +from repositories._helpers import build_update_statement, execute_with_changes +from utils.errors import DatabaseException, NotFoundException + + +class OrderDetailDeliveriesRepository: + async def find_all(self) -> list[OrderDetailDelivery]: + async with get_connection() as connection: + cursor = await connection.execute( + "SELECT * FROM order_detail_deliveries ORDER BY order_detail_delivery_id;" + ) + rows = await cursor.fetchall() + return [self._map_row(row) for row in rows] + + async def find_by_id(self, relation_id: int) -> OrderDetailDelivery | None: + async with get_connection() as connection: + cursor = await connection.execute( + "SELECT * FROM order_detail_deliveries WHERE order_detail_delivery_id = ?;", + (relation_id,), + ) + row = await cursor.fetchone() + return self._map_row(row) if row else None + + async def create(self, request: CreateOrderDetailDeliveryRequest) -> OrderDetailDelivery: + async with get_connection() as connection: + cursor = await connection.execute( + """ + INSERT INTO order_detail_deliveries (order_detail_id, delivery_id, quantity, notes) + VALUES (?, ?, ?, ?); + """, + (request.orderDetailId, request.deliveryId, request.quantity, request.notes), + ) + await connection.commit() + created_id = int(cursor.lastrowid) + + created = await self.find_by_id(created_id) + if created is None: + raise DatabaseException("Failed to retrieve created OrderDetailDelivery") + return created + + async def update(self, relation_id: int, request: UpdateOrderDetailDeliveryRequest) -> OrderDetailDelivery: + updates, parameters = build_update_statement( + { + "orderDetailId": "order_detail_id", + "deliveryId": "delivery_id", + "quantity": "quantity", + "notes": "notes", + }, + request.model_dump(exclude_unset=True), + ) + parameters.append(relation_id) + + async with get_connection() as connection: + changes = await execute_with_changes( + connection, + f"UPDATE order_detail_deliveries SET {updates} WHERE order_detail_delivery_id = ?;", + parameters, + ) + if changes == 0: + raise NotFoundException("OrderDetailDelivery", relation_id) + + updated = await self.find_by_id(relation_id) + if updated is None: + raise DatabaseException("Failed to retrieve updated OrderDetailDelivery") + return updated + + async def delete(self, relation_id: int) -> None: + async with get_connection() as connection: + changes = await execute_with_changes( + connection, + "DELETE FROM order_detail_deliveries WHERE order_detail_delivery_id = ?;", + (relation_id,), + ) + if changes == 0: + raise NotFoundException("OrderDetailDelivery", relation_id) + + @staticmethod + def _map_row(row: object) -> OrderDetailDelivery: + return OrderDetailDelivery( + orderDetailDeliveryId=row["order_detail_delivery_id"], + orderDetailId=row["order_detail_id"], + deliveryId=row["delivery_id"], + quantity=row["quantity"], + notes=row["notes"], + ) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/order_details.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/order_details.py new file mode 100644 index 000000000..c5c773a6e --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/order_details.py @@ -0,0 +1,95 @@ +from __future__ import annotations + +from database.sqlite import get_connection +from models.order_detail import CreateOrderDetailRequest, OrderDetail, UpdateOrderDetailRequest +from repositories._helpers import build_update_statement, execute_with_changes +from utils.errors import DatabaseException, NotFoundException + + +class OrderDetailsRepository: + async def find_all(self) -> list[OrderDetail]: + async with get_connection() as connection: + cursor = await connection.execute("SELECT * FROM order_details ORDER BY order_detail_id;") + rows = await cursor.fetchall() + return [self._map_row(row) for row in rows] + + async def find_by_id(self, order_detail_id: int) -> OrderDetail | None: + async with get_connection() as connection: + cursor = await connection.execute( + "SELECT * FROM order_details WHERE order_detail_id = ?;", + (order_detail_id,), + ) + row = await cursor.fetchone() + return self._map_row(row) if row else None + + async def create(self, request: CreateOrderDetailRequest) -> OrderDetail: + async with get_connection() as connection: + cursor = await connection.execute( + """ + INSERT INTO order_details (order_id, product_id, quantity, unit_price, notes) + VALUES (?, ?, ?, ?, ?); + """, + ( + request.orderId, + request.productId, + request.quantity, + request.unitPrice, + request.notes, + ), + ) + await connection.commit() + created_id = int(cursor.lastrowid) + + created = await self.find_by_id(created_id) + if created is None: + raise DatabaseException("Failed to retrieve created OrderDetail") + return created + + async def update(self, order_detail_id: int, request: UpdateOrderDetailRequest) -> OrderDetail: + updates, parameters = build_update_statement( + { + "orderId": "order_id", + "productId": "product_id", + "quantity": "quantity", + "unitPrice": "unit_price", + "notes": "notes", + }, + request.model_dump(exclude_unset=True), + ) + parameters.append(order_detail_id) + + async with get_connection() as connection: + changes = await execute_with_changes( + connection, + f"UPDATE order_details SET {updates} WHERE order_detail_id = ?;", + parameters, + ) + + if changes == 0: + raise NotFoundException("OrderDetail", order_detail_id) + + updated = await self.find_by_id(order_detail_id) + if updated is None: + raise DatabaseException("Failed to retrieve updated OrderDetail") + return updated + + async def delete(self, order_detail_id: int) -> None: + async with get_connection() as connection: + changes = await execute_with_changes( + connection, + "DELETE FROM order_details WHERE order_detail_id = ?;", + (order_detail_id,), + ) + if changes == 0: + raise NotFoundException("OrderDetail", order_detail_id) + + @staticmethod + def _map_row(row: object) -> OrderDetail: + return OrderDetail( + orderDetailId=row["order_detail_id"], + orderId=row["order_id"], + productId=row["product_id"], + quantity=row["quantity"], + unitPrice=row["unit_price"], + notes=row["notes"], + ) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/orders.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/orders.py new file mode 100644 index 000000000..6685e28f0 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/orders.py @@ -0,0 +1,88 @@ +from __future__ import annotations + +from database.sqlite import get_connection +from models.order import CreateOrderRequest, Order, UpdateOrderRequest +from repositories._helpers import build_update_statement, execute_with_changes +from utils.errors import DatabaseException, NotFoundException + + +class OrdersRepository: + async def find_all(self) -> list[Order]: + async with get_connection() as connection: + cursor = await connection.execute("SELECT * FROM orders ORDER BY order_id;") + rows = await cursor.fetchall() + return [self._map_row(row) for row in rows] + + async def find_by_id(self, order_id: int) -> Order | None: + async with get_connection() as connection: + cursor = await connection.execute("SELECT * FROM orders WHERE order_id = ?;", (order_id,)) + row = await cursor.fetchone() + return self._map_row(row) if row else None + + async def create(self, request: CreateOrderRequest) -> Order: + async with get_connection() as connection: + cursor = await connection.execute( + """ + INSERT INTO orders (branch_id, order_date, name, description, status) + VALUES (?, ?, ?, ?, ?); + """, + ( + request.branchId, + request.orderDate, + request.name, + request.description, + request.status, + ), + ) + await connection.commit() + created_id = int(cursor.lastrowid) + + created = await self.find_by_id(created_id) + if created is None: + raise DatabaseException("Failed to retrieve created Order") + return created + + async def update(self, order_id: int, request: UpdateOrderRequest) -> Order: + updates, parameters = build_update_statement( + { + "branchId": "branch_id", + "orderDate": "order_date", + "name": "name", + "description": "description", + "status": "status", + }, + request.model_dump(exclude_unset=True), + ) + parameters.append(order_id) + + async with get_connection() as connection: + changes = await execute_with_changes( + connection, + f"UPDATE orders SET {updates} WHERE order_id = ?;", + parameters, + ) + + if changes == 0: + raise NotFoundException("Order", order_id) + + updated = await self.find_by_id(order_id) + if updated is None: + raise DatabaseException("Failed to retrieve updated Order") + return updated + + async def delete(self, order_id: int) -> None: + async with get_connection() as connection: + changes = await execute_with_changes(connection, "DELETE FROM orders WHERE order_id = ?;", (order_id,)) + if changes == 0: + raise NotFoundException("Order", order_id) + + @staticmethod + def _map_row(row: object) -> Order: + return Order( + orderId=row["order_id"], + branchId=row["branch_id"], + orderDate=row["order_date"], + name=row["name"], + description=row["description"], + status=row["status"], + ) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/products.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/products.py new file mode 100644 index 000000000..84f68b6a0 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/products.py @@ -0,0 +1,104 @@ +from __future__ import annotations + +from database.sqlite import get_connection +from models.product import CreateProductRequest, Product, UpdateProductRequest +from repositories._helpers import build_update_statement, execute_with_changes +from utils.errors import DatabaseException, NotFoundException + + +class ProductsRepository: + async def find_all(self) -> list[Product]: + async with get_connection() as connection: + cursor = await connection.execute("SELECT * FROM products ORDER BY product_id;") + rows = await cursor.fetchall() + return [self._map_row(row) for row in rows] + + async def find_by_id(self, product_id: int) -> Product | None: + async with get_connection() as connection: + cursor = await connection.execute( + "SELECT * FROM products WHERE product_id = ?;", + (product_id,), + ) + row = await cursor.fetchone() + return self._map_row(row) if row else None + + async def create(self, request: CreateProductRequest) -> Product: + async with get_connection() as connection: + cursor = await connection.execute( + """ + INSERT INTO products (supplier_id, name, description, price, sku, unit, img_name, discount) + VALUES (?, ?, ?, ?, ?, ?, ?, ?); + """, + ( + request.supplierId, + request.name, + request.description, + request.price, + request.sku, + request.unit, + request.imgName, + request.discount, + ), + ) + await connection.commit() + created_id = int(cursor.lastrowid) + + created = await self.find_by_id(created_id) + if created is None: + raise DatabaseException("Failed to retrieve created Product") + return created + + async def update(self, product_id: int, request: UpdateProductRequest) -> Product: + updates, parameters = build_update_statement( + { + "supplierId": "supplier_id", + "name": "name", + "description": "description", + "price": "price", + "sku": "sku", + "unit": "unit", + "imgName": "img_name", + "discount": "discount", + }, + request.model_dump(exclude_unset=True), + ) + parameters.append(product_id) + + async with get_connection() as connection: + changes = await execute_with_changes( + connection, + f"UPDATE products SET {updates} WHERE product_id = ?;", + parameters, + ) + + if changes == 0: + raise NotFoundException("Product", product_id) + + updated = await self.find_by_id(product_id) + if updated is None: + raise DatabaseException("Failed to retrieve updated Product") + return updated + + async def delete(self, product_id: int) -> None: + async with get_connection() as connection: + changes = await execute_with_changes( + connection, + "DELETE FROM products WHERE product_id = ?;", + (product_id,), + ) + if changes == 0: + raise NotFoundException("Product", product_id) + + @staticmethod + def _map_row(row: object) -> Product: + return Product( + productId=row["product_id"], + supplierId=row["supplier_id"], + name=row["name"], + description=row["description"], + price=row["price"], + sku=row["sku"], + unit=row["unit"], + imgName=row["img_name"], + discount=row["discount"], + ) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/suppliers.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/suppliers.py new file mode 100644 index 000000000..698e821d9 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/repositories/suppliers.py @@ -0,0 +1,102 @@ +from __future__ import annotations + +from database.sqlite import get_connection +from models.supplier import CreateSupplierRequest, Supplier, UpdateSupplierRequest +from repositories._helpers import build_update_statement, execute_with_changes +from utils.errors import DatabaseException, NotFoundException + + +class SuppliersRepository: + async def find_all(self) -> list[Supplier]: + async with get_connection() as connection: + cursor = await connection.execute("SELECT * FROM suppliers ORDER BY supplier_id;") + rows = await cursor.fetchall() + return [self._map_row(row) for row in rows] + + async def find_by_id(self, supplier_id: int) -> Supplier | None: + async with get_connection() as connection: + cursor = await connection.execute( + "SELECT * FROM suppliers WHERE supplier_id = ?;", + (supplier_id,), + ) + row = await cursor.fetchone() + return self._map_row(row) if row else None + + async def create(self, request: CreateSupplierRequest) -> Supplier: + async with get_connection() as connection: + cursor = await connection.execute( + """ + INSERT INTO suppliers (name, description, contact_person, email, phone, active, verified) + VALUES (?, ?, ?, ?, ?, ?, ?); + """, + ( + request.name, + request.description, + request.contactPerson, + request.email, + request.phone, + int(request.active), + int(request.verified), + ), + ) + await connection.commit() + created_id = int(cursor.lastrowid) + + created = await self.find_by_id(created_id) + if created is None: + raise DatabaseException("Failed to retrieve created Supplier") + return created + + async def update(self, supplier_id: int, request: UpdateSupplierRequest) -> Supplier: + updates, parameters = build_update_statement( + { + "name": "name", + "description": "description", + "contactPerson": "contact_person", + "email": "email", + "phone": "phone", + "active": "active", + "verified": "verified", + }, + request.model_dump(exclude_unset=True), + ) + parameters = [int(p) if isinstance(p, bool) else p for p in parameters] + parameters.append(supplier_id) + + async with get_connection() as connection: + changes = await execute_with_changes( + connection, + f"UPDATE suppliers SET {updates} WHERE supplier_id = ?;", + parameters, + ) + + if changes == 0: + raise NotFoundException("Supplier", supplier_id) + + updated = await self.find_by_id(supplier_id) + if updated is None: + raise DatabaseException("Failed to retrieve updated Supplier") + return updated + + async def delete(self, supplier_id: int) -> None: + async with get_connection() as connection: + changes = await execute_with_changes( + connection, + "DELETE FROM suppliers WHERE supplier_id = ?;", + (supplier_id,), + ) + if changes == 0: + raise NotFoundException("Supplier", supplier_id) + + @staticmethod + def _map_row(row: object) -> Supplier: + return Supplier( + supplierId=row["supplier_id"], + name=row["name"], + description=row["description"], + contactPerson=row["contact_person"], + email=row["email"], + phone=row["phone"], + active=bool(row["active"]), + verified=bool(row["verified"]), + ) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/requirements.txt b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/requirements.txt new file mode 100644 index 000000000..169c804a0 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/requirements.txt @@ -0,0 +1,6 @@ +fastapi>=0.115.0,<1.0.0 +uvicorn>=0.30.0,<1.0.0 +aiosqlite>=0.20.0,<1.0.0 +pydantic>=2.7.0,<3.0.0 +pytest>=8.0.0,<9.0.0 +httpx>=0.27.0,<1.0.0 diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/__init__.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/__init__.py new file mode 100644 index 000000000..75959421a --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/__init__.py @@ -0,0 +1 @@ +"""FastAPI route modules.""" diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/branches.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/branches.py new file mode 100644 index 000000000..8db8cc364 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/branches.py @@ -0,0 +1,42 @@ +from __future__ import annotations + +from fastapi import APIRouter + +from models.branch import Branch, CreateBranchRequest, UpdateBranchRequest +from repositories.branches import BranchesRepository +from utils.errors import NotFoundException, ValidationException + +router = APIRouter(prefix="/api/branches", tags=["Branches"]) +repository = BranchesRepository() + + +@router.get("", response_model=list[Branch]) +async def get_all() -> list[Branch]: + return await repository.find_all() + + +@router.get("/{branch_id}", response_model=Branch) +async def get_by_id(branch_id: int) -> Branch: + branch = await repository.find_by_id(branch_id) + if branch is None: + raise NotFoundException("Branch", branch_id) + return branch + + +@router.post("", response_model=Branch, status_code=201) +async def create(request: CreateBranchRequest) -> Branch: + if not request.name.strip(): + raise ValidationException("name is required") + if request.headquartersId <= 0: + raise ValidationException("headquartersId is required") + return await repository.create(request) + + +@router.put("/{branch_id}", response_model=Branch) +async def update(branch_id: int, request: UpdateBranchRequest) -> Branch: + return await repository.update(branch_id, request) + + +@router.delete("/{branch_id}", status_code=204) +async def delete(branch_id: int) -> None: + await repository.delete(branch_id) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/deliveries.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/deliveries.py new file mode 100644 index 000000000..b09327161 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/deliveries.py @@ -0,0 +1,60 @@ +from __future__ import annotations + +from fastapi import APIRouter + +from models.delivery import ( + CreateDeliveryRequest, + Delivery, + UpdateDeliveryRequest, + UpdateDeliveryStatusRequest, +) +from repositories.deliveries import DeliveriesRepository +from utils.errors import NotFoundException, ValidationException + +router = APIRouter(prefix="/api/deliveries", tags=["Deliveries"]) +repository = DeliveriesRepository() + + +@router.get("", response_model=list[Delivery]) +async def get_all() -> list[Delivery]: + return await repository.find_all() + + +@router.get("/{delivery_id}", response_model=Delivery) +async def get_by_id(delivery_id: int) -> Delivery: + delivery = await repository.find_by_id(delivery_id) + if delivery is None: + raise NotFoundException("Delivery", delivery_id) + return delivery + + +@router.post("", response_model=Delivery, status_code=201) +async def create(request: CreateDeliveryRequest) -> Delivery: + if not request.name.strip(): + raise ValidationException("name is required") + if not request.deliveryDate.strip(): + raise ValidationException("deliveryDate is required") + return await repository.create(request) + + +@router.put("/{delivery_id}", response_model=Delivery) +async def update(delivery_id: int, request: UpdateDeliveryRequest) -> Delivery: + return await repository.update(delivery_id, request) + + +@router.put("/{delivery_id}/status") +async def update_status( + delivery_id: int, + request: UpdateDeliveryStatusRequest, +) -> Delivery | dict[str, object]: + if not request.status.strip(): + raise ValidationException("status is required") + updated_delivery = await repository.update_status(delivery_id, request.status) + if request.deliveryPartner and request.deliveryPartner.strip(): + return {"delivery": updated_delivery, "commandOutput": ""} + return updated_delivery + + +@router.delete("/{delivery_id}", status_code=204) +async def delete(delivery_id: int) -> None: + await repository.delete(delivery_id) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/headquarters.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/headquarters.py new file mode 100644 index 000000000..3a266d935 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/headquarters.py @@ -0,0 +1,58 @@ +from __future__ import annotations + +from fastapi import APIRouter + +from models.headquarters import ( + CreateHeadquartersRequest, + Headquarters, + HeadquartersMetrics, + UpdateHeadquartersRequest, +) +from repositories.headquarters import HeadquartersRepository +from utils.errors import NotFoundException, ValidationException + +router = APIRouter(prefix="/api/headquarters", tags=["Headquarters"]) +repository = HeadquartersRepository() + + +@router.get("", response_model=list[Headquarters]) +async def get_all() -> list[Headquarters]: + return await repository.find_all() + + +@router.get("/{headquarters_id}", response_model=Headquarters) +async def get_by_id(headquarters_id: int) -> Headquarters: + headquarters = await repository.find_by_id(headquarters_id) + if headquarters is None: + raise NotFoundException("Headquarters", headquarters_id) + return headquarters + + +@router.get("/{headquarters_id}/metrics", response_model=HeadquartersMetrics) +async def get_metrics(headquarters_id: int) -> HeadquartersMetrics: + return await repository.get_metrics(headquarters_id) + + +@router.get("/{headquarters_id}/label") +async def get_label(headquarters_id: int) -> dict[str, str]: + headquarters = await repository.find_by_id(headquarters_id) + if headquarters is None: + raise NotFoundException("Headquarters", headquarters_id) + return {"label": f"Location:{headquarters.name}City:Country:"} + + +@router.post("", response_model=Headquarters, status_code=201) +async def create(request: CreateHeadquartersRequest) -> Headquarters: + if not request.name.strip(): + raise ValidationException("name is required") + return await repository.create(request) + + +@router.put("/{headquarters_id}", response_model=Headquarters) +async def update(headquarters_id: int, request: UpdateHeadquartersRequest) -> Headquarters: + return await repository.update(headquarters_id, request) + + +@router.delete("/{headquarters_id}", status_code=204) +async def delete(headquarters_id: int) -> None: + await repository.delete(headquarters_id) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/order_detail_deliveries.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/order_detail_deliveries.py new file mode 100644 index 000000000..6f88848f3 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/order_detail_deliveries.py @@ -0,0 +1,44 @@ +from __future__ import annotations + +from fastapi import APIRouter + +from models.order_detail_delivery import ( + CreateOrderDetailDeliveryRequest, + OrderDetailDelivery, + UpdateOrderDetailDeliveryRequest, +) +from repositories.order_detail_deliveries import OrderDetailDeliveriesRepository +from utils.errors import NotFoundException, ValidationException + +router = APIRouter(prefix="/api/order-detail-deliveries", tags=["Order Detail Deliveries"]) +repository = OrderDetailDeliveriesRepository() + + +@router.get("", response_model=list[OrderDetailDelivery]) +async def get_all() -> list[OrderDetailDelivery]: + return await repository.find_all() + + +@router.get("/{relation_id}", response_model=OrderDetailDelivery) +async def get_by_id(relation_id: int) -> OrderDetailDelivery: + relation = await repository.find_by_id(relation_id) + if relation is None: + raise NotFoundException("OrderDetailDelivery", relation_id) + return relation + + +@router.post("", response_model=OrderDetailDelivery, status_code=201) +async def create(request: CreateOrderDetailDeliveryRequest) -> OrderDetailDelivery: + if request.orderDetailId <= 0 or request.deliveryId <= 0: + raise ValidationException("orderDetailId and deliveryId are required") + return await repository.create(request) + + +@router.put("/{relation_id}", response_model=OrderDetailDelivery) +async def update(relation_id: int, request: UpdateOrderDetailDeliveryRequest) -> OrderDetailDelivery: + return await repository.update(relation_id, request) + + +@router.delete("/{relation_id}", status_code=204) +async def delete(relation_id: int) -> None: + await repository.delete(relation_id) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/order_details.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/order_details.py new file mode 100644 index 000000000..9d8bb570b --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/order_details.py @@ -0,0 +1,40 @@ +from __future__ import annotations + +from fastapi import APIRouter + +from models.order_detail import CreateOrderDetailRequest, OrderDetail, UpdateOrderDetailRequest +from repositories.order_details import OrderDetailsRepository +from utils.errors import NotFoundException, ValidationException + +router = APIRouter(prefix="/api/order-details", tags=["Order Details"]) +repository = OrderDetailsRepository() + + +@router.get("", response_model=list[OrderDetail]) +async def get_all() -> list[OrderDetail]: + return await repository.find_all() + + +@router.get("/{order_detail_id}", response_model=OrderDetail) +async def get_by_id(order_detail_id: int) -> OrderDetail: + order_detail = await repository.find_by_id(order_detail_id) + if order_detail is None: + raise NotFoundException("OrderDetail", order_detail_id) + return order_detail + + +@router.post("", response_model=OrderDetail, status_code=201) +async def create(request: CreateOrderDetailRequest) -> OrderDetail: + if request.orderId <= 0 or request.productId <= 0: + raise ValidationException("orderId and productId are required") + return await repository.create(request) + + +@router.put("/{order_detail_id}", response_model=OrderDetail) +async def update(order_detail_id: int, request: UpdateOrderDetailRequest) -> OrderDetail: + return await repository.update(order_detail_id, request) + + +@router.delete("/{order_detail_id}", status_code=204) +async def delete(order_detail_id: int) -> None: + await repository.delete(order_detail_id) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/orders.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/orders.py new file mode 100644 index 000000000..0e67d1238 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/orders.py @@ -0,0 +1,44 @@ +from __future__ import annotations + +from fastapi import APIRouter + +from models.order import CreateOrderRequest, Order, UpdateOrderRequest +from repositories.orders import OrdersRepository +from utils.errors import NotFoundException, ValidationException + +router = APIRouter(prefix="/api/orders", tags=["Orders"]) +repository = OrdersRepository() + + +@router.get("", response_model=list[Order]) +async def get_all() -> list[Order]: + return await repository.find_all() + + +@router.get("/{order_id}", response_model=Order) +async def get_by_id(order_id: int) -> Order: + order = await repository.find_by_id(order_id) + if order is None: + raise NotFoundException("Order", order_id) + return order + + +@router.post("", response_model=Order, status_code=201) +async def create(request: CreateOrderRequest) -> Order: + if not request.name.strip(): + raise ValidationException("name is required") + if request.branchId <= 0: + raise ValidationException("branchId is required") + if not request.orderDate.strip(): + raise ValidationException("orderDate is required") + return await repository.create(request) + + +@router.put("/{order_id}", response_model=Order) +async def update(order_id: int, request: UpdateOrderRequest) -> Order: + return await repository.update(order_id, request) + + +@router.delete("/{order_id}", status_code=204) +async def delete(order_id: int) -> None: + await repository.delete(order_id) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/products.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/products.py new file mode 100644 index 000000000..3180d4988 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/products.py @@ -0,0 +1,40 @@ +from __future__ import annotations + +from fastapi import APIRouter + +from models.product import CreateProductRequest, Product, UpdateProductRequest +from repositories.products import ProductsRepository +from utils.errors import NotFoundException, ValidationException + +router = APIRouter(prefix="/api/products", tags=["Products"]) +repository = ProductsRepository() + + +@router.get("", response_model=list[Product]) +async def get_all() -> list[Product]: + return await repository.find_all() + + +@router.get("/{product_id}", response_model=Product) +async def get_by_id(product_id: int) -> Product: + product = await repository.find_by_id(product_id) + if product is None: + raise NotFoundException("Product", product_id) + return product + + +@router.post("", response_model=Product, status_code=201) +async def create(request: CreateProductRequest) -> Product: + if not request.name.strip(): + raise ValidationException("name is required") + return await repository.create(request) + + +@router.put("/{product_id}", response_model=Product) +async def update(product_id: int, request: UpdateProductRequest) -> Product: + return await repository.update(product_id, request) + + +@router.delete("/{product_id}", status_code=204) +async def delete(product_id: int) -> None: + await repository.delete(product_id) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/suppliers.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/suppliers.py new file mode 100644 index 000000000..787353340 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/routes/suppliers.py @@ -0,0 +1,48 @@ +from __future__ import annotations + +from fastapi import APIRouter + +from models.supplier import CreateSupplierRequest, Supplier, UpdateSupplierRequest +from repositories.suppliers import SuppliersRepository +from utils.errors import NotFoundException, ValidationException + +router = APIRouter(prefix="/api/suppliers", tags=["Suppliers"]) +repository = SuppliersRepository() + + +@router.get("", response_model=list[Supplier]) +async def get_all() -> list[Supplier]: + return await repository.find_all() + + +@router.get("/{supplier_id}", response_model=Supplier) +async def get_by_id(supplier_id: int) -> Supplier: + supplier = await repository.find_by_id(supplier_id) + if supplier is None: + raise NotFoundException("Supplier", supplier_id) + return supplier + + +@router.get("/{supplier_id}/status") +async def get_status(supplier_id: int) -> dict[str, str]: + supplier = await repository.find_by_id(supplier_id) + if supplier is None: + raise NotFoundException("Supplier", supplier_id) + return {"status": "APPROVED"} + + +@router.post("", response_model=Supplier, status_code=201) +async def create(request: CreateSupplierRequest) -> Supplier: + if not request.name.strip(): + raise ValidationException("name is required") + return await repository.create(request) + + +@router.put("/{supplier_id}", response_model=Supplier) +async def update(supplier_id: int, request: UpdateSupplierRequest) -> Supplier: + return await repository.update(supplier_id, request) + + +@router.delete("/{supplier_id}", status_code=204) +async def delete(supplier_id: int) -> None: + await repository.delete(supplier_id) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/tests/test_main.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/tests/test_main.py new file mode 100644 index 000000000..167fc5e5e --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/tests/test_main.py @@ -0,0 +1,12 @@ +from __future__ import annotations + +from fastapi.testclient import TestClient + +from main import app + + +def test_root() -> None: + with TestClient(app) as client: + response = client.get("/") + assert response.status_code == 200 + assert response.json() == "Hello, world!" diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/utils/__init__.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/utils/__init__.py new file mode 100644 index 000000000..f419f5515 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/utils/__init__.py @@ -0,0 +1 @@ +"""Shared utility modules.""" diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/utils/errors.py b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/utils/errors.py new file mode 100644 index 000000000..ce9edc04f --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-py/utils/errors.py @@ -0,0 +1,52 @@ +from __future__ import annotations + +from fastapi import FastAPI, Request +from fastapi.responses import JSONResponse + + +class ApiException(Exception): + def __init__(self, message: str, code: str, status_code: int) -> None: + super().__init__(message) + self.code = code + self.status_code = status_code + + +class NotFoundException(ApiException): + def __init__(self, entity: str, entity_id: int) -> None: + super().__init__(f"{entity} with ID {entity_id} not found", "NOT_FOUND", 404) + + +class ValidationException(ApiException): + def __init__(self, message: str) -> None: + super().__init__(f"Validation error: {message}", "VALIDATION_ERROR", 400) + + +class ConflictException(ApiException): + def __init__(self, message: str) -> None: + super().__init__(f"Conflict: {message}", "CONFLICT", 409) + + +class DatabaseException(ApiException): + def __init__(self, message: str) -> None: + super().__init__(message, "DATABASE_ERROR", 500) + + +def register_exception_handlers(app: FastAPI) -> None: + @app.exception_handler(ApiException) + async def handle_api_exception(_: Request, exc: ApiException) -> JSONResponse: + return JSONResponse( + status_code=exc.status_code, + content={"error": {"code": exc.code, "message": str(exc)}}, + ) + + @app.exception_handler(Exception) + async def handle_unexpected_exception(_: Request, __: Exception) -> JSONResponse: + return JSONResponse( + status_code=500, + content={ + "error": { + "code": "INTERNAL_ERROR", + "message": "An unexpected error occurred", + } + }, + ) diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/.dockerignore b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/.dockerignore new file mode 100644 index 000000000..fa9992069 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/.dockerignore @@ -0,0 +1,61 @@ +# Dependencies +node_modules +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Development files +.env* +!.env.example + +# IDE files +.vscode/ +.idea/ +*.swp +*.swo + +# OS generated files +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db + +# Git +.git/ +.gitignore + +# Testing +coverage/ +test-results/ +*.tgz + +# Logs +logs +*.log + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Documentation +README.md +docs/ +*.md + +# Database files (will be created in container) +data/ +*.db +*.sqlite +*.sqlite3 + +# Temporary files +tmp/ +temp/ + +# Build cache +.cache/ diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/.gitignore b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/.gitignore new file mode 100644 index 000000000..58851fcf2 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/.gitignore @@ -0,0 +1,7 @@ +node_modules/ +dist/ +data/ +*.db +*.db-shm +*.db-wal +coverage/ diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/Dockerfile b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/Dockerfile new file mode 100644 index 000000000..485db78c4 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/Dockerfile @@ -0,0 +1,17 @@ +FROM node:24-alpine AS builder + +WORKDIR /app +COPY ./package*.json ./ +RUN npm install +COPY . . +RUN npm run build + +FROM node:24-alpine +WORKDIR /app +COPY ./package*.json ./ +RUN npm install --omit=dev +COPY --from=builder /app/dist ./dist +COPY --from=builder /app/database ./database + +EXPOSE 3000 +CMD ["npm", "start"] diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/ERD.png b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/ERD.png new file mode 100644 index 0000000000000000000000000000000000000000..ba804205132778bc50b1e59669f3846f7c6ff089 GIT binary patch literal 405033 zcmeFZXINA1wk}LlP)bmgP9mTpz4uTA0i`M+RY0WI0MbGUB1(}G5C|Z>i}a3kL|W** z*AO5eE%ea7_^xlC^K0+5ex4uux|qz6%p_xuXN-H?qdbJY)KsCo&3K!DfPnJF^Jm%w z1UFFlV~*@5{+Z1F_+k8s@V&N*0zt_DGY0?1Gb@7^)*2cFT=>Ui1cV`W1SEei!5@tH zgMffIgOGq2e5FOf+Q{f{U4*gJb| zr;myMY_j}&DVPaC5ho7+PS$@!uoWVbrC+rCVAAyOWx$IWv=5{FHHm3o|0S?2{qE#{iT*z>$B-q7pFndDL4(hKWN4(Q zOUD1qd?P*pI>i~@>hJzLd;BZrU*jeIPuAgojrSkz|F7}>10DZsy#Eg&FW+q2X?eMz zT*H6j$E{WJOBE~;5IeghT7m|e|L84N()7Fe6aNXSCi3AC<-%Q(W+&u-1iya(z11ol z4^?J0`4i-8c&wtMA-s0(=y#p1fVgY^m1 z|E+w1ek6PiZQdY)Ub*Qs)W1hX7guWA771%6hog(LI}B0*rbfobH-h%Fv$I(pi|$YU zl{HG9m&~Q)y$G3yM}IWJ=y&SmfBWr(DoYg#OJ7+cK=fb^QaCfB^3n#qx7;oyAn=kg zqQ$S~N81A+=^$BaZKe1gAR>=C+5SrFtr?P}q zc{?H_zK>|UAl$nvMHJO4^6Y`h9gXj$k00il-zj;JkazvoZ{?k&*G`J#OqJo)hI9a* zmfTUJU;Xv>zC=;Q;9%E%OeSEo*nl-X_uC;|&}x76(8DhN4@O;i6crY)I#-Yp)z#HK z-9K3khh`ta!EP-V0}ww&;JC{|%Fo-O6Rfhe2B$p$D> zV--o^-4g)0uj^($udh}(2D?KbyU|o=rrZ5ebr=8O^wJ9J&`j2#P&Tf?KF<$bdD5%j za+>JactmSh?UUP=CSz-1~o;OhN$dAi!%q?h-$GqH@0v}5~9>gR7<`!2vfGO$;4R_47k<#yOHCT)Inu@fQ& zS`dwOB{Ln-c0(vPOH_e%A{A?8zQpxo*E=x6Si7KlZgfm~BNW#Y65UwN!rcqT&Q_r< zQlyfcb)Pp3K~O`Wd{>CYIp^ANej>j>L~m?JRlz5yX9f+FN70l_c1z3Gw}Dy4^Uc+S z*)?PpavgcCY2E*a6GK=E!rR1<1j)nD_C5fPEdwE6SZ8>xK(=*ZgDreaX{(9+8~E#u+TG8Q=Fp=NyiAe+uO3j5bMF>G(Q z2qUt249etp>QJ<2eKKCXOx0ikBTU!J;_5wpHU>it0ILLM`F^Y?4jTCql_$z z`lnR#7>pJgz5fJhbonHbnv@T&S|!@>=jm`9b=d70r-}iAx@8sK7jJY&o;C(V$ij!EaWu zZvTvQXSS0U0s77Ta|!xa@eG8T8>tem3Z8$aSRs%ZHZ9pB@-z2AQ-OoDTWpb>S&?@Uv@Q zF&;XkiR#WeyMB0sveI3S=b&eoa;Fy1;|_gG7nhe&KsnY+o12FVBoCGc(NPfzyF{!4 z%SmTM(|y9iseU~Nu2Lhs&SDF?W*&YD>*Q*KqE0N^=Du?`>ibz1ew;%BcD;@$FG)X= z=Y4bdp;iJ01!7t>`s;S-b^TCB;%LCtYJ;05)32m@bo=yscDLszzNy30d|P^a2~_@< zL@M+jm=hY@i9rz!?t`hmrsPB^E`>^K+Nk-;>riGX=o>_TQZ8U*-fd--^XwP^V{5NB z>HN}irLXAP>He$?tdd$B+AxO1TuBj)QWCnuTvOx%G}A_3I|dvFfi`D3{iQ<3c`ckQ zgoflEUMdp1;r_T7aDF|5pAUk52=iQ&;se64WEXY-26fvsUyX` zd=HO{lYon=6dCCU=>dP1_gq*m+B0MpB*vcowF><3Gc4HMckc51q_<$y zAB*LNAZxEL_${{vnkt^3AJF@@=D?0QNmJ*#WF%w*Jq?$ZKI4HWP>qprOvNDDeQAkR z(i2w{5g8GDcr;m@U|4D0Q(@Js+CcqgfaOoB}xFLPig&Sx!$FC>NBHzO{v9g}FL#nW#^W~G3^E0R>w%u$v=&Icdri!^YW z0Hp9>3mfRq6#rzgQ65Iv{4+*l(v&-#b|C)jy$z;r@(>zba`?kHw~>=z{N<}tgY9nL z_-pMaX4MrMqUon-b6pKN^ug)oxWiHIfX)|dt1q3!K*VQRVSc3$81{a3{7SZSGHFwe ze&th8F&Gt(?T-D7TZ_7q7M6I><$koi(-eXpZ931*_f_t`>ZvU4#@_E;t(kRBdSKm2 z%`qgij1Sn=tkh}o?)K!69LL!jjWqw|*JnF4S}z=Y!;6fB%m%2^VhQKdti8Prlz$ml z$cC9Q{TkTDzpYe zwsTRH2MOtY6!n~=NSA)wauy5w!&Q!S6HXgccP%OQ3vlA5_#I9L%m-~v zSmDU6Tdr7b%@>atS0tV&vM^LnnIVmw9ePLZ*rZikc?ifMD(!j|WyZ`8iqx4o7QGGX zNeejE;G=p#Xf%6dLkrL8M?EcIX1007q`KZXw zUDGL7&;6|Pjmo~arpb?$!=dK7*?<^~74{ZrsfhdC;cdRY5xwbJ|*2=8;F z;%bHBnr20sBUpE%g?od#XdNks%-5A#COjc%jz}<+)v6nmf3W(TLvG|~GowVJsvZSS zj@o7$9HGyrIP4Tzn=boy$tG3QteYa1!F^w==U(pX1O86)=e1bbak&Q}a3Hy{eX&u! z{4r4Cq1MG}g4^}H*Zp5b-ys9~(nQSA5)&-Z^H1UWEd+CNL;U=k3y#H7LW>h$;Kh;M zbU=RtpzkRxwHP>|FB#u|;N*9d)em)@{o*?nJZgSU*6W1mw?E53e&KV_+5VBy=|=&Fsk^-eG#pmjACs`Z z93b86a@U52mAK6!_DH(E^04Z^L_@%e#AT61(&x?9A73rx$IsJD?(G)s*w!Yd_8-wT zHB<}?3^AFkm#0SbA%j5se8;K#mPdvwPahV7STa<}%A8oWWD;MITA@Td%zl`^Nt2Kn zcY6goq*na>wAOCun``S$M|1KBbT6X2UbGjzd0!0;Xg-pWbo=w2Cs9UcVfMJd@p_N_ z=XTx}F+}*nB{ixwK3M)Di|g_41=xv<9fV;xtjt-mlpDQ%GJt5<{iz|g;GWH6QemK< z=1HH3925+;%}US#$-SQFE$~~b5*4`}A)qW@^nsmjPju`hO9%AsiKahZx3GVwepw zYcOd(Umdhu{v(Mk-n~?~+Jsyy(?fJ`u<*)H_T%PdB3H%NDUq(+Ai+ zVy~WTzPb7SwOM%{#sRk__sP6j>m4Ngqzj|wSt;n_>x7R^eU-;PaMjtrV_51%QK zcVan%bbe4ZSJ9_i`ZLX!3rrH(kZ;bL(^`zjTC{p8iq=Gw_?pr6p0u1!tuA?5nCpWe#P4bzq5&x0G?jD!T2CzVr&~J2+43saKv*d0QO=}@(D9h}14{UHU!K!uj4%YMZ|iCf8J zcgbaKJ*J*jY&x8AmXa;g!i_O-0taBUgvD z-8ZV-9ojp4+K1Nehv`tUQXwr1+`b)3RQW~d-!2B9@$g0kapbY~v&ZX4DjR-6B)D(d z0MD@4o`l=Q>eUyC37)J8Qs3dwRSSa`X%(whQd+@&efb*6YfWUPojod-uFs*H@Pild zv&1|YQ=YqS7P`ksYK4=fCZ&&`O~s#rlic6@Tw}fn)*kHPHtNB&nmA#{eH4g8Pc9-- zrM;{-nM9u7Ip4%*%&Lk6GM;k*HXaT=po_f_x4rKDz4D3oitN})*!h;*rRbJB{~DFu zmMvgVyiP^1?AvFnstR9mCiw`IRSA#vK@#0)qH=Sjuv2@Z#A;%f_k)L5zs253Cc|Z4 ztD1d52)yP3c+lR`@p&GO<{swdKf@|u+0tEu^=^t_1*-f6O~v39oIf)}_Bjw?R@~Fs zQX8!v5GyC3e^t%91qnD-OnpB(ING&PI!^}#W%xQ!#wf#|j;#(JQb~=NrN(KWAx!(N zc_3CvDlGH?ZKVzQI>6!2&s+B6yDU#KQEt81!quM%W(jnrP>&SR`TQIpAUUY@FH|8! z8cwz+rx`D)1NE?5lcn+Ty@;D4F6Gm=gHrX#?;oIsux~c^eR{3Y+WV??OL=(|r_`m0 z8XQk)?s^BW9E!ps3GCC?g}i;CWc7|k%%m`i?PA66P9Sg<#i|`sevtuHW35*7jG2iyciHzdCZ2KH(iS z<#nG?=&m8fKA#17d`-s~1iN!H^+uDLr`U{+J%uIL?8gC-zs-vl*JiSWyZQPtxf;P^@AR% z+p7~D%Y(+(Gk(7JL6=0<_8d9rzvIntyt0M+m3bJuyl7y6y&)mV+kOk?e++)UJNi1C zK91CB`^){2@#$BtuP>BZ_rD1D9Ox7*A-XzQY4W)-Ki?cM2dSO+tz4A5@*3UUv(Ua% zh|;$;nV25uGTC;j@V#bb7@F*GIrVsTPh zR4kk!5P0ypL-2ynyo~T_lrbcB zA!*(`yx|t{JAC>}wNRR1|FiU7%O!XmmIu`u%B}F*KP(coH7eW*5BSgz%66& zl%;389(^)>kS!&#_(%l~9Ip*Iufk$+g@XF_PDX##6(0EXw8{4*L>V9~@qQgcI&~N? z@a9uvYxkD9#hpa1X1#^ZWvdkDqV@jCMcaVz4K;Jbj|iPAHXKubEVg!7EHA4xG+^BO zgXn%uV~*jqqwL1PT3_7pF~i98@Z$#0U50?fn!7-JvoFx+&Jd;G$Bm@sQ8#BxU8xy? z{c%mEH#tEavz9;|evLwbf1!Hg?#>lXsX z-GxD7dqFVfiO0|{pOjX$!3YFbc0c^m0;q^Hd_}blVl7-6+RaZZE9^hprhfND{Q8I2T*QoxyPOc-KF;svDea4Zh!b67VJeZY1of zmLroJUS2V{92|JA7srpNJTiUN5`L=g_s&;+a;r4HcJjlx4Qf>-QKc5_+W3v)08b$b z-204qQ%B70%KfSv6Bk#=rX?0P6~SxpgP0mANAQ4J4{h$WLlKavoMO8ZO>Cx4)6*=d z$j~b+G{?n0BV$tMl3Df6RokYJ8SMA$<^Yu{#0$_$7<%t$2%qZNKO-RCuL~N2u}tu0 zXkx^^PJOk;e7rF-I+|@kjlS|L^1(K}fjwp|EoO2|IV%{#vO14)UK!bryXRtc&^i70 z0=_82f``Jg$x7qPFT^x~!D8@zRdmK1u1{c(2mcC|h<@zX5TV1*tOuNGvLiZpz-2+y zev?}*woa&_*QPT6VtsJnT?8qQl5jeDjqI&_9o~rMWz5&2u=tq>%(sB$>8y((QWFPc zg(6`$Hri(b6U8BEeZzv|*(y;zSH$%~rX0+b7Apz_GlykRJd11dHhu1wsHiwKJz5;3 z@08o-?fbMdK3D^F6mi;?e0KCp?fN^ZU1x!?X6!;l^f80xxbhp>xQ+mP}{I``ZVfPrBRFO{Ky zzYao0GPDyp*{(vx5)W)aADg8_Vfy&*j@cyh8_uwSaM}1U znHZ(GrvrqFMTs1|$cN>%#Y#EKTD96>;)r>H5Q{WQjM^i{qtVBsdN*A+-z6r1Mw13& zEnw`wro3jJb+fOr%H02&fQ8y|lc%{jABNcu^cl{WwRYvtTCF$xkAQBX_6gSxq18U% z1p|`2qeD`D9@z(|@h~cuYDV%>L-it;A8o(Fn;FyB#Q}tAgKLJ}T&vcb`ObPUb*+=V zcc;FBj;2Ki(e*WFf*fmtsb`7XOj-dw?NuRoE-^$;GPM89EFBz?7aCSI~y;3x3ZWMuJ-4naj~Q51!ui8dqP{O)0g2b zf{>W^&;msHFpRE^t8;RcHn0dnpo*E>P|3IHPq{~_PGpB& zVHY;gc~s2VN_+nvzwJe?<&R-)sluM$XOTm9wu<8NWP+EhQp_Kn^~&%Ag6_%Wbztu4 zjeAQhsL19Co7A((Qde*#f;pu%{{}7G9eL@`ApOm%PvgoowI8}iop;rk22uP9`M}_~ zr&4*WgCl1zzphmJ(3jrR=I7x49($--5sA#!*r?oB#+2rD%~<{na}}KqPt{sv=)77T zwrJL^|L*vOUrB8`)b0q`;gc9F`({>0(tbazk&Ge4iD~el11k`vqyi@5y^_eu+eZkL zOdiyy<{v-l-pRx}t;lUcmMTUTnNkbg=})i_7^=x_Oit;|6VB!G-p|g`&V)I=SH9uDWpty9l~l#TrZ@ zMH<2bWuZG@U?Drd=DApU6}V}9W9a@?;p5SWizxu^H?^1(vz_to0~6WDfHI5I%xpzE zj&i7&G5evGTfp$$A{g!0NRGqb4F447VforzvH->ZAnN!Pwf>+x0I#pAu zchU?V^E-J=djnf?v)MweR;ti&6k@W|qFEw!MPvBgPgT3_uKUK1u5=f4{hwoso@L8y zHRQhj+H@Bis`O^!pEWZe9a&lyZ5QZR7s1cf)OnNbEv(8!y3_KvFn(KSv5JPEpchIT zW9`vGu2M?yUIic?U&_Iuv2fM{eAwGTibw#_W$MWAd0y1&%+j9D6EQeggF{ANikiP~(c7j;2kf=Bp z2v`X};VjPG=}n}~=kyi)<>MDfv6WeOQ5}~Vy3Gczo^pH)Nh{@y;3Ok7LA|CVK|Kb5l}wF6Spel!_?M(Mcwxbt&oB`%8Y2So&|)N#2_{8)cy z?k+i<>P^d+{}pOjVoPFQp#Jjgcl^wK$~3zFGZBSva&~XAuMYEDJZZGWd;b4FSmhE( zUH7JoIZyH0?#Gno>nkD?1xi7S!O3{to!}3X@{jQ2W%2?hUG>nJ_qy;45-X2~ ze8K%vb15}!QHxbFqC1J~E^X9hN2fQ0H-ni2$v?H`P7G*Vp9==`7L&WH&PTAhgl#j( zouy1O(YTtPMhGwFwJA!8Xj@ktI|3fB>5!fl`Kguwjf!GDw}xLo3r1&}gsTWiQ?24RrXSR_-)7TwGVtjttd;UO=k_Io?oGroQYu$0GuwcE;k>~kQ z5^x+=0f|OS&*Q~lgcI!O0P9GTqEM?(o11ER<)GAG(^SHbV$+WZz%evrt=u{ky6czh;jIpWsQm{Ip zjyAH?i+!{&GN#|tZADo*)+4@zx>a`%(FKpiBs^{!Hg}}M=~Ve_=eZkxixi&`^UsSM ztCmlTb3z&ddlNA%CX_0?ETaG?AJo*)7zHne+=|JN*#O zs0pCe%0*(DenNEVoy?=Q8Fm>e9kHHva9$?BHMm>l+nKsfROV4om2wCtXu~1fNmM7D zm-NrQjwru!zgK3wdiV;PW=Ap4wxKMpv(ZPP5P&TokdU)#$1xmqVGPpFC}Q9e7iA(N zoS^lXG`dbS67{|w@1A2J@^xK@%^hv$G^{8Duq&q19IAt9jayP1F5U(=A=17WGdlfd zh0^OGZJP8T{&69$ysZh6iD*T(ie`q~Lp5A6oP)8JxI;PxsKAhN9mfNTXc#&KF^=@WZ z%#^IZb)t|7C;URmyLa3=EuiAh;P3KeA(?PP88P62i6+J#U4#gbG+(w# zf|2RgC+El48k*$XSMU9;nzs>T6Z2~-`HoN5N8W1jAEoj3?ZQGr+TZTida9^|#2$i^ zCp5osOhqxmX4KGVOz8GYl`kNXH63TiUmQ2wS{|E;_4WRW0n^ZIB$Y%wOQxZ> ze?9~gy|b6=XlPbMr3QC0kP#b18kqD)wS#7qZ7)#^8+{@CVj#QZ5ckc{qmNz4X>V0o zr9zd*xi(x?;VZ;j2?Y{66@P0?_XBU8c#Va8f9QyI1S7%@3~H?p^|s~IorN=l0LGzR zQu6JDQU~;3f%I8&h!Dd=QW~O}ucSg})YuRTrhLEZGGLMchxyT z8g*ew2fsRtb|?5p7>r7J(sT8{7&B~IKL05}DP^mNXjH;Ghift)n^|Q3Fpg`wvc|FT zE5*T&ePNI}r>r)NRzc>MEYQPe1K*z2dHTSJ&_J=J&8YgMD7R}r%P+1_Z@nUoAfV6T zfSv;|Qa$nL(bazW*Rfy3I1|nseoi1R1iaTl&hSJB``HiKoBj2Q4IEtyd-<530=6~< zKQb`I^$0~psucNC3<=9snmGdmJatB5_9Q#Wu!kH}2S{b9?Fao5irCeV&h`CS4d34B zv(JlY9Xj11@y(#rDOzvs!$i0g{fr-zjjY0u1!%=Rt!P~5A(f0?LL^-b|3J|DRx?-5 zbw?f|49D-znZ){<{rj7lAK^fI6cb^mb`_iERCubCyan^Qmtd5@eXZ$opYT%~4;`~t z#)uZ$hME+spG8?If)>HXo z9#xQ+9|X|h4eI?{Hf1E7Tg>$ZZz|?I60(1x94iLw{S7T*?>*d1HQ7U)_0n<;_r5_J zsH#keRlP7a4tKAzO25r!W*9KR!js=CRoJl^6Xr3Jo|vXO`HTE4F@3#j^Cn>C#cD2= zclUFI@nW%A277--E!YPFtWgk>AsrDc9c2NrIKj%XjZ+5J5i-bi;ZnKLC!jYn%ibJ@ug9Wu zcksmUQ$&~B_(=S!f#xOwKiAVC@uq_k@L6nn59zGzZDQ;pVJ59yA@wUuUU6#|$tPMS zQ1eFtSWE22At!%29$N6>nYGB0IFf|v3tN5Bf^x^UWQ2d{C};8!)7p<1#+4}X<0EX2x=e3+;C5(%)xh>O$9?U75n!f>V=(y zexJlNWz665`0Tt*`zMnnAn6pi8N<>@nxy%;NPH+S4hQ7ybp6&;%Uz~{{FpigD&!tW z&UwIQF#W_q`)*^|;=%&3^QM7ya4g9W>MuC^vkLE@l$O9>^j>R*;_u9Kz^nMgUb(vt z9f=VHK<}`@uR7hVn%yK{5JNnvkQT49ziw+1_#mynD1)%rBAHIkb`dLvuTjwwAz+iT z>EU785+bq_oMWWGz&4a;ZWWTHu&_i^5UJ6oe3sB3RaeQ3d06K*?882 ztJLGdp9!VBshp+RPMZaF$Fg33WHzFj^1HZNdn2Oy_$gN4k>j;rG7xTt>V@Wd8j#yMg&=Ia<5Xi@iTyEC4CFErZx)edDlB@n zk-{xT25@!J)ao^}Cm_DKRHNSAi>Ov~1i?iR{DZJ;j83^>xMP?&Y(N0hLrfpZSG@I}q(p$ks6rh1a&tt+ zfRJbmvVT&>T)fdQ47H4PqpJwqW7E97ct!8HEOLm89Qr@+cu!-emT zm);E*qXC!c=-tcy#Te3^29vW2!m~QTVA;aanLslo05V2SGd4z$Xnx!4N5-sLW*L=Vd1ur=$5|xilh^QQ0nL!g>fuLYKe!RK zc1-#6_adQC^H&U5!M;%ypF7Oq8x@6z-)Doz+Nhxs!c`X$!thDjQGC5nA^0kAu@fb7 zB+QeQ4yNrjkk!-)HaCTRNy~Z#P{ay23UV(?K2b5v>1tSc2>mCpu~FkT(U8ns9DsAY zQ9pcb{FmGhe|je&HB!rci>5CEC3I?iVb9aHRo#n1<=judU!1{VC9{jw$lZ%IeXIRn zN@^4`@IH=Fv5)y4uSmO%=F~SEzzJ_N`eib)N(q5Jq|FCS(2J*&)Wab8Sz9*4F z3G!okC?Vohl#!pD-qc&W+dCh3-lze{`W)6>Ow-8SBIktd);2#j38(!GVb&IRpSJi2 zK*iQg(0Ze);%%65JvOK@{Ja?e08rD?g8N~6@Z)of*9CK)+eT;H0cXi0ve_D!EK~;a zfQ6N~VOq?ezRr{fW)ruPX}X9C(*4Ma<@(^4tf`s(wXSRIecAe`7d;(S5+*&S)!1D3 z;jSKNt1w6h37rCy@FlgK-X&RM=i2WG6`^`#8==Fe8Jl(+nrSWM{e*=|I5NXR58!Kb zxsl%zoqlnllq3i7{C+4eC+)2%R%H07tB$g!=t<{Qz)vwDCGT z%UY=@-~(I`k?AW};iB?A)^b*ndw^+SIwy30f>O z^NjugpMWm~?mAk;teHcpyZAduVZCZ+5>?Iks$(DiUhyNv<_{R_(dNK*gWy9|^E8Uf zK%NyrS{`!6nKHZIu0zTxc@dPn@bMeKJSQ@#BV*w21FF5Q$+GHX4jatSo!*?032~;{ zdae$;E@Z`p-oOZbtq@{z#DbXzgc=K>4vFW0|3e2JlI)44PKblCI6z-*W|Iwr3d|26 z%%2xT2SsR_t}e^Zet3<^@bd8ZTtALAm{!laNbp+?8(p$AHB?P_#Kr85+W9lhI$i!g zp)YBgrV||ZCh8V3Ma^N&!4#LN`F!w-C zT^Bhz9G261I`HuxFt+l_=3CExpC zlUtLT9zHeh>^gpMur|Bf6N*5Uhk(e)mGEu2d{71}aQ(F^DQQ258-fb9`bxQG2*Vqf z;ubvj=}l5>kA+=#_|c3zkl*9!0vr?B`bd~QeY_C2L2oL^AM_uwy$D8|| z1#=$^1|QFGuIFsz2=ctow?M#MgYCk??sGtSYi#{o9{_|?4%P+`Dxi9;D|7%(=L|~+ z91aVU%wz+sf1iW&d^#*0|19AYN1sQ{`GXq{IGoB)6xTHNasqlxUy$F=2T|D7e$`sF zdY+`4xKb{{q}78j&2{G-{;o1QocP5wTW+^eKKZjh`5wT-P;6hAbMV&RmWKezliN^rtDv+R}=Vp*DMEqvY ztU}8&x7k%np6}t)6G!h}KC8i*inB+!Q{=Q`ZylDHaY5*l)+5=D<+;7kl+CRKcK;w; zhRD6Kj_u6qJ6*l?D=9q~@B+S@Se&N{#j67={BSqnXcpj2k^g<(9+{EW}PfCd&I3*MCMO< z+V*thpTZ&Rc=e;KZjFL;;ckUHeQ5z@Nd}^ZVFW>$WV59|L^M$^1@bS_NEYwCx;)QS z8ts;rlVWQ!nXgc$qu~1{r$yVB&V+ky;6l9`7ZNhA#;7$o`Q&?5q?c9k?pPOfeIno*?Fld1}xRCA37!fK;Rd6oOpe#jND2cQf_kk{Eco z2}*|HvRBVwSAF3^MeB|o6}c7Wmz$1TEbpVfcg;MeGzZROb-%3l&}FXg>sBNn|5kbP z-S1^DYp#_hetIto{9A=eQyN@@CvxfYS*cpQ`_A)Hu>c8Btf5<1PN=y^vd>S~$QwBjn`ZldC6ZFch+$<}=Jcamf*C_rr`!AZvq^n-Si>o=hv@$pG zvV%L2=8|&SUMyjj-@*i~~2|0lmJ&SZA*iCt7{mBIt{kCAds zBHiV>P2FPL4uI-Zd8T{-{Z!s#b?d=oj(HOn+|zM(Y+-Rjj)vK|$<*wlb1D!ONYQtr z&DZj3PO@I;iLWsKdymG{-=@2HF}$_8Jk-d9BfwO1MJgNr$c0IhUmh>L+JF5ofF!@; zOkWT4w&*vN&fBM!fljj-;r=v*$;V@9QkVcf<0o`TfvZN4q?t2K@7Xe?*F3`q|HwMNz6&Bb{Q{fq_Y;~nG&MQIXpNC@(D*U@Np%$aG7{{%lJ0URwH-kDTrRApYFHoh3+C(`vUeX#i z*<0DQJ#>G&#B^K$I(G8Ql0!PthP>Ppxv&w0NvXx?!0g`hV2 zY0KA-yzezSJQHuWsBR9BD^@tH%T8mDHP4PpDO7z6owx5cpAk3h^`(VW7%*@=HYP$TyD&&i3;hQ$9rXkwR6<4SpBbiEd8gk@&8IpUo z(@+$0(UufTbPI@|WsMxf;~^Sh43QUQbU~VG_5Nwq+anJc2gFhNNf;C$F1bbxqKodT z++cb3E4`=)?QY5gFTI-@shl=&uL+nGmxht=ZSTbC;k&B7bN_5rP`gh!=B2cGYJbG$ zPGT~ZZ36PcZ&*wS*_ox+D>*tk>S@IYyQv23I-ft6J@qbi4m@cr(Y8+@mBllRog{{u z&R$1Lr=#zi7RI+7E05#0`JRN@s32=^iLmUYNjv0$U9M%!Z!j#lw5OG>_8{Tz$2h@X zV=?isKpE5N&+&T~1qE}ct;`5-QQX`JA4Tz4H6&>)(anLv*l$!h zvX_4f-E_|Z^yvn*o=Jy&8(*~!+Y@*F%1lVtjB^6^8V@%o+_~M!!B(%J58992*;J=X zh`YJhLpoe=7yT-GMSPahezM?$1XKDUThrqQZ9^aMhMQ@1Tb<=k1p56}f7{$tb$Fb?%cXnN4Ohv?x0M{L)x4up{RJ*My|2qQi^$(eyN|kY0_55MLT6~#Wqj%r#N7kkq#j-@MEt9 z&*XvDfw=cLBz~t_@IjzNc>@p#9tM#nYaCY&=rm46RWPGRNr56P=_i(fhF)*b0;{7drGE`fiyDCY(d?CiT_ z6mxsWfubvpImbQaU)NvBCx0(4sxe+|(E!W!=)^ose{9FIG zU4crZ(UEXn21TagOM=GzPEtgK9wM(;=!W37bcUP&OjW+;aBE3=U{FHlcZ?)#h%`7y z|F+9av6&1#WUrdU z{V}Zx-w!StAfepOlTkg&*j!>d%vk1?V6K^08C}Q%b#QL+b+s91%^sVb^E2<|HPapi zHfHR1AFHL;xuv0r0JK68whR-crks;zz8bdI02Zlxofc8R-B|x~K+j2<4`;;u1#YtC zZq3{cvCS&gge~Vy3IhztPvRcx{_l@x^p&?_8D_4f{FXBO*5T=29o$bEAjbx~HN z6H=XbaqRZ&jWVIIXvqp}!uJ11(^+^m;l6)gB$b$obWB7+8btwNFaZfk5hbLhrMt!e zDW#Qekd_$TFkp0dH;jhCh>gME;q(2S=P%gV+1Y(x*E?Q!2=vcphzQr#KwOBV^X+$o zN^6#C(=Hhh33r6F(7UpQUVUb@#GV65kf=JmT>ba!c0o~J>E$|6m^kzPth++ZUQNI6 zsl{@_^5ouDO$scAzd7DTgh^t>ebYk6S5tL+u=EQ>N5b$MJjK{*liI$?Uzo^0EZ<}s zR-U!R&`ZqQMcKBTVprr|dloiGhR~qVcr}E}u#TiHM-)NSAEC=xl|ZdR;(A3m8y#^H zC{5zM4Y#0Y2Z!fpef$a?tTqpX_q&($?_)FrZzL|K()Sk(okB8WO zBSyBwcBNJxF@|>!g3H&W{VSQk3$tgjU@eZuq>B5bA}r^u;_j-3zBtpUASKEG!O+m}GlDHjm`221LLVe$MeCE5xv?zT*iur` zRe9;z3au7P(wP-MW*^GHWAF-()5fvCLheKxw!e|V_aMGSCfoSW)WsD ztPzi+a%bz}iXOw{^ZrO~PX0}3BGZ`pnE&5)?_l+`)f?nZU82pP_^Qutz1&4iz&eWa zC=xJKyB#ttxb1Ve|5FtWAX#*F1&#3s5{S)fcc_!jjqH{=o=TmntLu8$V!BgS z!h=IdA9MkU&Q{5&&qsb4TAsYT0IrSvW|<|V${ERiaXH-9^8`k3Uek9GD=%7qJ!KG@ z%PV&xj zq3*BS`T*_4+7@sW&}QKi7#Zn}T*)#)18+664vSc zgwO(5d;7cF!@$;*=>vR*B+M@A(|0%_*{qQ7Pju97*;z(JKu|+(r2kM^-`irBp}Dg^ zzLt%g)su0<#E>QT)7XV#!s964)$$c`NNeIi-XN+Ukl`gKcFN?Zc8!iJ6T!iJ&d8C_ zdufaSW2SXxtbO@AxA-ZjiuU_Lt6XEqU-wQuD}ae;-gFk81STd$%t5To)UbM+Cz9EF zJNM=5%$1rIV)?SwuE^(g;J|6+#7s6q4l*_!|wyAUH*Mi0e0>bNpZoS%P zo-?0`Je~_rDwxEsoBy&GYi1dD?}$|~_Y(4^Z|WKh57`>WTl^U0U(_X!BLd+31wSt& z`*(lHX%o(bg*D?3FO3a7o1|&%ijTk8jJ*68FwuwsM%TJzR1%T`iu8oBtR!Qu4qn}* zi&+n)g2J0;NnHVTD!Mg&m~@EZf7Fb=Qi)51j7*-$iNB#ZxKt=D#g)Tn`8uGD2ivTs zg}u3|PuLJwyLxZniMQR^6Q}MAkn+-X!^V4CBAwn@BrZd@npcE0ky-m4cb&?D`tait zq#HYiEl-xOmjD6H?DA1jT8T*#Jx1}sh|wVlTyokW99&>X)=h!g5h6rS2xKIHN8^6X z*PsTeVDIt-3f}VHV*9`vsvi- z5<1PU@d0@9eN@RHcw+Ux{G%Q#S?uA#hcwI;I?gnS2fQ*>1u%Ptk?bGf8auZYKd4+hKgoP{-0$t zLnB~=piaicU!K~}bgb7>qB2ZHhLzzmhi-aDIhDeJSM$Kl~wf>cYzz$OkFCf}_)7b|* zo9?xNTb5P%BW>po*ba!iESX+L&z6QoRtkf$W|zuhpQ6emlu74S9;QWRh`zd)bj7Y4 zPUflVQgJXH=kxp}j^3aEFi~tT9jquUt($AsrrAKh&?!xLwSv)a(7Hn5yI?ytJZZ0V z;j<@8@)?2U4^Nf;h`D|vz>O^ToVEuP+Xv9sD*D^aFpV8EQk;e~eex+`VLjuV0*)nK z8HJGH6kkcn?x>YT$VSXq8K;s~eV4bX9Dtd%-n}OQ(B{0CdW1+EPn{J)S{vg3ly<;{ zYzjTrK4&mXy6M?kzl_b;B58PKSaHmqqy88x>noMw5qp_Ny@Pz*mE{s)aWUeU^-JD! z!P4oX4{Q2rpWFh-NWynQDV7y7z2K4mxiH7Eo#<5=!m0dfN*FD;D-U{tAiOdb1ZM4W zIhlI(HOV4Fx6^wFAy^aDS$-~7VLAdshKvAvHxsiYV{zJu8kYew!c|*a!U{uhLyc7J zzh1lV%}FnHi)n)6)(6M)fDd=}z`S7Gj(~J_{U`W?2tXwzRmM1j<*nk@6OWOMPB8FR zYB{YBX^$5vizNB>&TxG8bcpt11)*lzIriMR3|DVq7*E~Mz2Dn1j(eHFP+>bSJnONi zf}UXq?8>jsRezFwUR1PIr7r5S{S$N?laD-Sf=xyZ4#jL`cfzqmXMQp z%!aigR1dD#EIiN}+{clhE?+<5kve|=1P_q>b6fM%m&A0eK0go1hRIgi0vv8u z{6Hm_%g~(5>NGLeuejmV$?2{0-W2=2^zS(CM+R+RUue^-3AuX_C#1Tyy}Bv2eZg;v zkUbYMXgnu0C+4AdHMNr*?Owu&eUm1}csw);dzUjze9Tjx)v#FLc?KuBL5kLUEk$2; z%hLch*Dgt&eO|!2r*SbIB;I`8Q|z19f9aIZ4YbW0vWe{+xyx4njR8APTD`BNOTy(P zz5y%le$r+DFAaCE_Ux(r{nN@QwA)O?Lk_bQ7mAt zVK~!EnW_jHn|Cu{C0(3KM>#88kQ7rUvMe{UG+3q z;MeuJZ$g>1B(MrsgCa|r-fM>wvUf<4LYPH9kwp)m7o7dX86y^AE*k})%LSg@?o1GR z#KQC-`3p{vYDGx-@%zwN=`|vj@f|-yu8eH~gd8q)>>luT`7dELWX$cJOaG_Zj}zWI1LMUn&#i2nxL;GnZIT{BvfWJ z8f7CHDZf*$QA^V0cRXssnJW)=iV`8No*LLVwGaQI;2cepbzb6-iTZJzTD>>jqt$}d zxfsIuK1->!n|}F6#&|Em=A+YJ$(6hH?3|JP(a`raCNCD}YTN3FuQXsX_J8Hw6-5`p zPi|urN+IV`Vy-aPQ~wc|x;CO-WOz5j70k*}QMZ7FaJ3DcN zI`APlJJe}UW!kh37LGv$6%HL%WBIIWsYfENwxwB;MEqH8SdUE(9*1i321)ITzC=2> zFz44Ksy&0_r`9fjSGOnX_@+Bjj3vB#N&l-zU~{Vx`Sr(0t3Z#*t%#D09_eO($MN74 z8r^owTz^F(Cv0NZ-f*)3V8L1Zy&@_0Sg_%2T@5)oy-Wc}UcNpTs&JVE?TnCQ!r|bf zbdamu=C)QlYQe)9i|nvA~_cQY;)4M#4jA(QtK`W*3pg;|5uja}T` zf=H1UQ*;GFXS!mi0;o9rIF$V2d8X-{Tjn?+HFLG zy`5$FBi)@Nv9g(j)HlDeSAt<^<$P&$j?E0HOG7MKCBPQj9eo~(ef(cakBe2Q(ve4t z%OFbmxz9k6tbpf3+<$nR1mN9V@A*>nzfa0js_7U7}4Su9v~*ueq}5k`~cvqP3E9*Nyvn1VyCdIEeJ?iUgUtaV1rxIAtl8I&aQ>_ z2=vp1YVVAzYwF=X8Ie)|o($x%wo2#|uw~%!1$y0XU7@s`xi=jL@yIl&aENEV9lACS z_>9r;t7OL_=5fGJpDp;+JK?K=7l|mRTDitvVKdrDWmzOM`nDt-mdb z4?RFLXAYb815YMn@(#6yWz}x0B~Puk+X$|hT$Lw9`o?P&p}*-sqMX&Sh`u}%dd)7gE{x$>I5Yn@>T zkGtrXkq>G*M;^?tox8a9C4b>Dttq_&F62o8&(`b43)KIc&}5#tw^!0|WSd9TuvCA1 zF8J;uo*yTk8FSPu_OV`FD;j1{t+)4zuS|0g#e+)6U!GEeeB7obI&Wc1G#rSR^^sCr ztE1FnrmYQ30p7bIeXidPSHfEsuZu*MZ}-8dpb!3~RQhp}-toNCsEOj`GEGw0%gm(7 zq^|>lY)4Dpy44VJSMZ6h+3*q`=XP@`M&$$wcU*AX<1@BD7NjpdATE0j%^gR$y(iU_ z$x!MR8aZFT6xA0icUTNQTWy5uVpwBr=Y|{P=q?8LcPI(>r9$F~2{GDFj(SVga@FXl zsVFIn@H)ng^x-$WiLhntXgS*ozUkbV3Ml>$pM|e@$Ei>QIWnfN>M}Ymqgq>n&Z}gB z=)*fb`V9`cZM2#Lyi}ur;xwnci6SC4bd{={wah5xlqi%oA}g#|{_y3Ve~2LG<%>}sii{LSW23QJ4v#Ox?7 zE?&3xS}}4rr*B6HZ`@>EY7j7!Zh@TiO50sB60T9PWv_guo$|7j?}{3iZE88!P#O) zk{a=|fMV;jJRkglJ5oYF_j-=W-m2s;&D7t{bwHNR+229)#Fv4j+3OM1tTtPF;r!-- z^CNSC%FV}ThN7_mm~$;}5*LfMnLX8Ky~MbbB0`kfUh8X;a$gKal9MN%4-l}2UFpi> zn>U3GS>Bv(4flGbJ?xej{PlPJtvkPG{MezbY6*ydm3wzq{g`fwNU_1By zkUtpKb%YvaX3I`nmYmbIlHTlzB@@lbK7Gt($SORAdN~P8Q0P_S0B-G#hm=- znVw2#xD`TvZNOO;6L9bzDQnsL z^Zi+N6I`@c7_Qu5^lAmns=7P@9dq|R6`BNdV-}p6&(q?A{R0jf#%_MmEs@z?{|zEP z%dQsc27a5927mi4`7?bN7^jjV+^aF%@~^p2U8ma8zxZqYXU!7rQh>A)&ETZ*k&(kk zt-+n|FTaI85M`Zi8QPJ_HyiX3;UUq^3hIt1wg?uzc$jfW+NaUG+&69DliNR@bnDfg z>DV@XW``67`lNSP&y~ah-As~1)3#Fn*Jx)Y;*d<3&d#DuasXR<2m69lcm0mId~{WV z<<2f{xRYk*Su_v-;?p5jeGA0o$j!Z}zDA&3LYi2a2TH%z%6qn?INM19jK)P>U--rw z-Yn=lHLKRZi+mz{FXeqp$w`OzI((xdiS_ubr%U41S?+WiVPn+r(opP}?knAHK~+F% zoUX7QA3TfvP>>#+xlZP>S0a1)h#uw#J@tHt_}ip{+r-zlT;|wZIKW-bzEzi(dQG_< z6ag0445w*&ri*op4j`JJC_b@@x_rJ)@V(C1@WnO@1QGa#S6>y~;MlFy4G&xF;;5ho z)HvSl`Ld-j8ILwXN#hfP@ByP}IzmLH#qbnyoV6Kh34uPWIY5sPVtN;5ouz@q0Y@ft zYFD30Gknj(=#X&9v!=*?qkTEd%W1w4m`SXzT~t z|9%U?!1s=$8&qi_m|yuD2sJ7t)B;0;sObykr}%1n$)~pSKKX*xe66ap_nG@$ zJ+6m4_miCJGYW?yykLJZ&Bj5k;VqVMY`wx9d7p)18sKo6b`Q{#@6w+PIFrI8O8(^6 zuPA$6N4b0~(^+LcEA5FDa_={Zg36iib{lq8m0u|^?czzJz6ZQ|hO#7fxsh=1v00QO zr6J$Y*2!O}ycmi4`?n3T(b*^#)4a7({_!{XY9s)i*`gUaoh)}Mk(uCXol*ikjMiH6 zl4q^E;ji~Xq6K^JFww7oJ<#Exi%JXAcwxn;1z(ukea${l$yHebgH4zGbD+tR*La*w zrutvQ4U+}~@3Wp!VT6~<1hqh#*;-TJJGAxR$V+;+MzZqwZ*ITo$OV6` z&V)u@Y<1S+d*2ofpaAMH?NvXBPQ(uOYoOX z5+XS;P55~pG+WMa3n~MTsyv=bas9GX(kAkTslDiwvY}QO&Iz9baoqk*{&b2Jj!e$7 zPa9OSfy(&x8$Ju$=&^YNSjXZ%hL{fSPR`vh-1h;TN|kA6p-#Edp3sj5Jt9|vky-fE z7f;M0LOR(HWc6mLJ>n8F2J#g7`3arP4HNywc=@K^(+^#Ri2i+L!Tz^2j58B>4{JKT z*)+jFJUlrbYIoF+^EN*!F4n7mr)4pGFW|2w>S(|gu-(2pe<3#N6Tv@pxwD7b&GdjX zyqG42HZbDnT$OUH&0(d<%h~o>&1@$P77D{ZW^pyRFJhu^)y^W#mTkN@pL;4T|Cz6Y z1`Q;=(bZb44G}rI?)1e`*MHSgtKAVL(p)3WaDDKoC~TGRYVNvssElP`mH_{8TYtI$ zVxI|=@cg+_R;lS-fMYfF`vp9|dbkM!UQT3LGzTqGli z*20#ZD5=#)s_W}_m32Y%r12$l@~!XC;X`gL+i=x%&*Lu#^2~g*!H_VwUpSYCs~Wh6 z;}(X#N}P8z_s)4M+wcB>>fb4oCmkP!w~>B9&3fpzx-R`KGF`W@qa>WLh_fg^H__a? zdzYDza4$!x_H~;m0Z#5_6#!=kLL1cVv@4}cb($49`CR1vS}H3%mKZ!&&ju?#)~@4~ z3~wsVGhDpWN8Bg$?^h94uKc^G*c*s24u4ks8ZcMszo>|$vU%(K!U6_&I6O_3$*@{l zAoijx8LfS~L}veb&6entauo3XI;7#-wVKOc;;qBq!wbC5XI{6a%}bwvwWNflsak*+ zQo!e+KMSRO&LFXN943Y)4^#2l;){-}EJsMY>6;k$2JZ>?kjlHFywcu_?Ns z53&vwN;{~!XUsHuXN2z@KB(Q^7)!0MY=24{i%L^L^}=srfZK-@LdbGb`w3`Hqz@N9 z+RpnlAfx$3ntn5SQUI!YnN*klD#U#Ej8|e$8jM-Q)b{b%+x^ki5*R~)(f2jYS`BVDc5Hqc)nl@Ix*1GaNfr6cG#c0Q&H~Q zk|;pG#bLdYR+UxmFMv&~tm5HEPQ)iUe=@rc4O}v&>lWr#3&mUK`ZShdo8?K1!I&9@ z*xpt7(4F+S197)q)Bs>S`1_DZm2GDH9wNNAicre z#KiRv1%~(xoTD@0liY+ytE9R!0km=E8AGOEubV|DRGOG}reo97;16ME4Y&iwPN%RI zoZDtNw490kf!By;Ei~s~!pgSE_1hh4(nMo{6H`hFQsQF0H^6}39l$vi(>R5V53`x} z1MK!6>h3+9@sqgawr-Ov>#{1rCi!;rna@61q;eQ?=O}Z-9z_UqA3qT|kGtX$bDi3w z-Y5ug`(H+U$NwF~zH0|0(AF*HfBY9CX8Vy<_$Zi}O)i{*~ry`9L zTMJ2VkIEWbX1CTTtznU3U6ykT{72x=W3e}L=SN3E*GEx+?r$$!Lz&|Hit8&82nJfp z{ZT2WrlgST?rHd`PQ6lXi+@z}zsr*-(35=C)QM&r-yE0=YIJ(Up5K@PTy_gOnKW^1 zy}^q3su`kMp7(qshL`$}^y1Ab%zGbsUS_l46!BSQK+wjDmTqH9WHF2l1$NM$S}Iep zt2>-4BO{0*Z_q841e(Fxt)0f&oWBiEKg$bymuXmT<=w2OoUucC)qg_cc~t&M@`O=` zc8>{Cu%&RJ-zy)VO{-gt)mfXo^d}{e-7Q!8KeEhQvZEH>PZl{I4))eahC|d#A0FFx zS_+0R`(nqiB=fL3Ths!&G+JO^Z?6n3LFVSQR$9%^P8+qD@tEI*W+nuXY!HUx6F+0Ro7<$gS-sH&VXHA zs(T*eC&SH8Le6X{A;YLjTyxg^8K1&wXS(gx~8>u^B$Y~e!L@{If%dbwWGAVi<=7F3Fj;`FmGncZMPn0*FX7} zHx?*~fIY>E*X2a-2%~SGo(jyur1K_!qv`h^Z}Ijve=WfxE}pH!^-Va3jO$e6=1k4^ zap;$Q?$<(NrC-PP>kbbNlOzA7Czl?g(~F<#oGy8*-F=dU62EA{P(8x5VD3D6GU^ip zQE(sXjoDgC*)-k!5QA|{wZmRcFSR8$Si&X^!@)4iZ>>)XKRR4fQ^68gGd)EP&i z8=Kk0Rh!Pbz~&dhX1wXK;5lIyM(&RDY!A-+XDu!v-n^GnRK;t9v_R5W0cwc4qF+f0 zi>7|^6!|0o+>tXA=tKCr{nWFvOCR|WSIv1Kie)NWu71SRQ$>11tEpA%a}lQ!E@H18 z0H~-aTJTl)T?&(`b|@~2tcgMp`B3khsjKrRcjVcY_llO*cq}zJtQ_6jcj|smFFul- zGW)ZVE%+Og_$aMOT)f-LQ$XtH?zllmZ6BL%yBlJb5>bC=gj?_MZl5Sg?2yr-X)D&R zM{QERM8QiQ+YFF zw_2#=QCf(@X(DEm7~48+`yN^so9Ol*tHB)8Ki6*_E%#4saizvfdF1xe?OS5GV_G~g zR_UaG^^0@Cvp`wHvg)-T*%|RET@p6cWiTbax?;#NZ-$^`YLEtx3K~YNwL$mj#WO+N zBLz5$e)<_FI;LH4GM`HiRjcZ;8clnQd)xTp%u)G7wJdObr_6kxem(q2S}QZyRjlc9 zr}XH6t~M|~12WL}grAddFi{ZpwdPrs%6Cfd^EOtl$e+&LI?VmpF*M@0X47=={fnLL zB1{|AuBUSGzP4y*@JnKM@b3hTnJoA%K}|5fa{i~&rz%SEB{wOyYtCh_x3@#yqn+Gi zrd_!h7apw=GNsLys6|(cgFk%yHT~sRdx|)YdzIYhAK#r>SD8jFl{@GIQZ}g&j~9ysKr{v&Q77){ zg4xo^=Ys&C#G}YG5HOxE*_P=-Sla4?kQ=NC%WIPWYioW3Z?iibe)sYmmNR(%6LR8& zaTd&VKW#rdTK3(VJlfZYY7K@|o?R?^oDnZ*P19XZ-<)t7gS)tyrb?xf-fhs|BN8Q9 z!$U}oo^B0aA2qJ3+YGR)%q58AQjjwSvr}Hb5WoJWyF`?`L&LOOcCGb5lCl!cIjn!r zI)RS@j#;!{YroCBJ1qV~&LAcEuZC}B?!W`XgD|&!x*>ov9D@8Rdh0CCv|K*1*&U`# znS#|s1VZE{OdJC4s?m*!5!kla`&Fc`Q*+nAFC(P^n1TD*fV|U4o(!O;zm6loG7$-V` zLNroYH2JN{O7m3>U!^T@xAL~%BkPML7dit6Xuk!Z5WL;uEz=0+D>t5H)RE<5ZFhG6 zET2VpjWPXor$s;O@a(M#N7-Bf*-jQ)Z5Bi>3;61~7IAZA0Vb2MG*w%5`eLwK#w5Ps z8yQ!FDKYt{tbEliR2B6cFS?e?dz)_!sq!>=%`}iZL+MM+(}v!wS0Std1 z0`_%1)F{M0r`Vi4X5xIAP$sj#GMc?VfJoJ0F?P~jz*AqkobGP-d(sV%?5nOli|4TZ zTePI*ncfqi!YFuet+4TnXqy`$bs<7DStaJ}M#TD)t2er6akv<3gV84ovB+BIZ{8=H zDl?K2EM7xPuNrGUr^mpyzxmPi^0nJlvUjVRjCt4aQnNBYp=ACjTq&$qwPjk|#~hkNE1fY9QW0`9;|2S;foqAc7aEBMg{}MUo{)L8x4(z zQ(rfUXZj_b}FX2$oyMzuMhcLy94DHaluu`6or@E+U+hY!rmDuJpC)bROS}Mm726fB=nrG zj?n%gf08emq6`0=7S7{E{V1UF>OkB*#P&aTSF(`{ggfFG>1@9fH@rQZU!z*C^f^Ib zyMkr#wY>#ih?JlJ+R7j%*91*jGJASN*eDDIfA?y<|Spu!yBwCIv)i_!IhAb=xyc&+1(tD;M+i3BQ^ zpb_jT>bXNz{kTIru0bCpFm>;HP6Z7ih>@4~)cDE`1gXJT&NSI2*-{wex!B{|%IC$J zm<~!}j0lXQlHTU%AjKzKrn9hWPrB2{%se&YiXWG$BgS!8xby2I_)58VM=Xok!$O0Bikbpt6ad-Ca+RJQp zHds!#YJ~nPrY)s9m*6zqFAePK)4CXK$IWAOnCO~hX>Kn+N0y3SLzlSYXpk`G7J42` zzHSsiOHSePC%_{cRz|P_=vN(&P1v#+?F~5F;Z?G$dmU&v2-D0cZYr+&ep-YqG)T`I z`?-bCaa0ozI`h;qj@vnojVFe^ZtJmVSYip*@S0o;9CrSTvLe^?4DHv_@x1uK^S_%~ z&fqSNN&}w$CurR`DL!vHlp0Ll<<^w+i1C1qqrfe-VN0$Kiu6hZ+rCnbX$z!qOLBCw zp%%kZ)Mg4~ylsA?*ZM3aCVocEYG=_|_g+3ya`FO$9455`<>KKk{K-06=ySh~S3 zwV9b<=gsgSPoe}L3HN-=(&5Y8Hpoo&7qN?P*Vtp~2>C;seB05my5c=<{tj-`*Y3zB z){!)D5f5(%eHgV4Q~kSA=3xh2TF&4w+F^ixqJnKmVe-igMccTK%YvsHiF_Vx{e9b~ z1(cAnbQNV^Q(b|fxOpK9cT&T~I0JPHmw9%%Fnx|sS9qw<>vg5oI_rn+<>RMsMO8OWl; z6pUB}FkPZG5=w*Q%RJzwZIF~&=N1*@>*J`^Sp2F9XZs(WG~NSS)gqCJ?i+m4Z~X2S;!>RI z9qG$S)dT9t{Jm|qL|A_>z*`P)kbK~NBq@79I zj|=870|XZRc;Mkv0+Tn1D$;4%YGU5*Y$nNKU&U&fFeJng!`8dmyCZ|}q(kq5KSm=u9y(&FSOZFTcFzo$1e~Qp zhNC#h*ZY#N7Lo%5duYwuW#D9mM{M~OpzBg@xt!{G(=)QIctsD zXZ=Z<-`I4^7Hk=jyOKuIHDg9Cru?_D)mtAZ6*L(L$4RCpw|)mlHkPSdwMUFnmp@{% z>o(D{l%~{^|M88G&Q@k*X0P(VP4;wn`6j`~-X9DOX4 zM6GnJ>FMQZ-2NvxKf4MfrkIc+->4w)?4yFw#`8>6bjwYoPQ@6y z?m_ABu%gK&4e7NXF9yz9G!{vo;Zt^SEd}gv`LlUElYlXP<--zlY(6ux(XlGXuNhHg z0vDrlFVPFCNGD$@8C>TRnCcf;2k?pu1`U=Ee&Ago&_5alq>u}n0FQp9q$o25^ z+Fu;k{`;@xPVonRoGkIKXI^S`zw|Zq>p+K(BDqlWQNQRp#{O{f)nbg=eJS&{Ma{FM zpG58nM#`{Q@jyw0N#2X+e!TDCp_QJvy7DUh3mpeE)di2vh6(;^@H3`}6qNbkOB{-q z2~iCk>ZNuphW_R{sh|Jg6sKm;3Gm6~8N`SO`aDSWcqZU!ym`!!GlUR=X@WXoG%#6# zL6~gR1#5T6UYp7>1IFoi_4}!IsgVZjm%$~?GvfOlNo<#LB|c$-*%{Dnt_6zIBx#bkl5UXW z2)Q}4X$a6CBA>!UvIy%Y!}LQd^JjZ6Ezdd7bEcUy4y4px`gK3ux=Zn^&jyeK!OdRv zx1VQzX{z@W-Wt2S5pmwM1CbyG_mJKcQnUI5Sw#kJetaFdc6cTkF4dLA8|mY5w{?Xr zL2gA|ctKx9Rzj2Q7UE8)!k||9!`%a2K7m)nJn~#|4n@C|KO(s zguF)VP0u|g=+C{E8uKwYB&GJi)bfOADaNI{D^c%-jz2ZkK^c6w;n>1NHN2CF(Q@Z6 zrTgjd1qBEx}_}w22Nyyf?&Hp%<(rpuxDDU88>=5;QaNNM-&#gI^dyhRau<8;XkdfAXQ-q9@!a1>*Mc!W`Nx zQrWw4Fs#&S0XNWcTal8nZH$gzIPdqnhW|S?owWzs_R=-;eBj z&|!LpP^+2ErRjG(CAV$A6LLuI__{Y&E-t;D@D2gu4G0-Wv+oBFh>YH`5&X8k*vYFMtd?ww^h0^AoK{If}LQ)OP&yRa_^fV90Cj z+L2=}lytj#FY3P8bl~^x!lK-J|IR?$K+58;-Wgu;wSHok^9xY>fWGw2HS9XWfr0#L zUG$QxzQ=@`_A#UXye;UDz;U0K(=_us^ZW}596j}Fq7bL9lJURI1fX3lJCfJBZ=*1= zHJwVlWiB9lbTBL1IIdwr9EtT z4ARTpYP)a&mIfunWdsS-eQ)VLF<#3#Zn_-}$D3l!8DYe*E8eE!*X@@sKyw4au4O0Y z<@}4j{~G{<+5P=b62=1S-xs_R0MeRGFC*70uS8YVeLFl|=we$ej2{K;JrDK%|15yb znSz1R^F`-$l`{`d>N^~GWfSkwKxlm5vKhHW$l;+XlYMkN^0qi$?;qnTFA&J3rsh`| zp&8Ep6wC}eJrVI=Ckoe4Ora<+7KCb3J^r)rtu>fz$DwUGluO5nS^tGE=xJI6y1rO1 zj~*h1M!F{suZbahike~HCxB*kKLESeI!#QA4`Sh23JjGT&m&T|H?Dr?hb z{z+qE6NOqOjXXAQ3l=|!5ji!K6+<;4#z-6rwape8pCCAF{95mmyv=WUyKDMR%_~XU zjali{0Am@HdELPs;|c0-zKjecESrb3Z0eOR*F9>89}-Ob$z(PZN-ybW~!w!i+b;T+SQ2 z1xj6`M6#r@W1pW_p}tC`>uODOS;QQ^=HIC00JvruQO7ooWNO{asV*h=>#GX~Ds!JH zP#_C#hS_@4ycO{!oE)~wvgzFs0n{olN{7sg__N?t>N*k>og?4YkKdrH`)giwinNY&c3(pIg*VZ0$w;V%!8}&$C&?|GGT1u-aqrs3mxa0N0gWd*%!yJze@gYZ4 zD)-49js;bu7R$$JY{a=6>OSAm8RiHw)^jk(Q>2D44y$qsS z#YV_zWEb5cO%Kgm-MFyR_tR3bKXTV!=K_c>kNMKlo@-^y9yzi6DJr+YTI~iEHARR@ z%E>p>a7PL{ZhSV_*M7>ZRsJ^XK%O%jcTaM#jVLoj(>vWMO0}dt;Hd^1``g(LBpP_AhEw6ygbct6+{`h zNu&4E2oK2*JmegF*+2iMB0D`gTIN(T)&s{SLu+sE_InxauT%taOB(e3wI8gRf0Bpn z;L5?K@SzWA&zXOz;RK+#Rdp%gs*N%MJ-@jLp{QQ!whq~%V5uP@vZ}@5UZ~gcor=v4 z-Egy;2*JegOaKR1WBx1RigrPTB{;0b0^BffMc6fUWY%nj<{IZf06b+$E9v$@pUga-*pqNNKN{uy;NBGnvQ5+5i-Au z2xXOrBX|J_x&{elk=zoP>&%l$>`gY=g4fl91`7^^KeCv(3h>Ad~|eFNG= z#%+!7<-RH46}jHTE{!u2={|e>p9uf{UYSWKKA0{3@z8IDediF|U?Cq{M1$i+nvCc4 z9pdH3iTO!^8jkyA5NXs z7Zd)~a@^T*2?wstaB?^H>dBaV78XidCpJ{uw0PUgHmK16>HEnRdG};=qT*T#JwS!u_V0>l&{6pk{iUDbF>sI0?A!1&jylW_&p1b8 zuKA{>YmRsg&xAl3VkbiZZ0nXF`KBggN|_b4iE3oE-HHo4AKMku_lk*i#xEwlI5@D7sV{#)@DOVvm)cDXY<5NdV^9caB&h6%xT|JJ1VpfbE6O%#kPLgSt7|kb7L3jF69~;F+Gs`BGB4b$OcdCc zom((@bzO}CsK6@Ar+-q^C6|3EK>7&p1yUc)n6#%74o3=>ZS?8F`<}-R0MlMfpo_L- z+Agihj*#Z}7Su6Ao(5Buf2VWH@LNWy z;K?Y*%qP_s1 zt`l0u?`iK;CHGkco<~Lr2v509+!G$Qq|JW_1iy{qAN!RiQ4ZKT~+Vf@Pq& zleSG}3E*?9GAnolIqiXM={$cq&B$3yTci3Tex<{8ezKOK`&Zo`o0{cCqV|>12S>p+ zDpxwCy?FyByw1;Vrn~@h75mHPa~O@%7Mq*WB_+=yiZP2ihajT+_rh)OZKtrR@}cJ$ z&MS2u^Y}EOPG;x~5IN!Exf~{I64Z2E-Rz~c#!PAbdmnG*Y>}Huz#vsoQr!AC%$@EJ zqqg&dT~{1KptO?|M!gDRofc-!b`8g!xuzk0Q-AZ^?KWCPsIu=cNG41Hwhrylc(J%cs+Gjjrt{9 zDzVTTA-_g<)U^XS`3-YGnxwnrQN{e^$F6xFA-^+z$!tYDgcad_a;5P#n+BG!<+Umo zhAP)ng@A#@j2pFJ0Br`bNDvW}?wJE@ZeG+~K7-iIfjstiOqt9DN$kc#^WZC9_(U_n zlCVr={&ACF_2|fgX=AI;@{q;5N}f*~dr1xp@9J74d1FspSO;u8^3gd)=1Z*x!d;gC z*wL&;gm@QGM-mS4g_$27e2JIKeml*w&gL_T#&>Rr{4{iV46Ss^f>*8`y2U+Lu%Ylj ziG8o_O&~@tE6(Av$lA^<$mZscey!4A8SlstUHYw$niHhQU>5gKLkTyo1uqf~&n#@- zVRkGHfue7{)SoaeX83!254OyExaCL$eDOB6XA5ynZDCyL>-qm^`pU2-_%~dGPU!{} z0qGP53{U})R#8f7G)m`y0ZL6;q+1%LLpnELk`oZ5VH@2WHTvxRpL4$L+pcT-)pMtD zy|usbog^Sn`wa-c(_tCjZzQjWs%|()Qg46TzW}y~|K_2CdH5T!5!rnAnm&1e8juLM z?YYdsFtY6~t$uf_<8(vPOd+N%26ZrC)@6JNLJwU zfXLhQ$JW@Np%1PFEW-;m66WHM$ys?VKY0f4Ur&Gz`+e+Vmii0s+h#uxSDMbQV_Bm_ znu%b^Oe=)9CH?R0Q8xFR@9UO`G~uw7#bQ$*trYSEs2a@YbosA zOkEIHpJNc9OJ``ere!+VRQ;BvnRo@!EKIpHcVN0UK{d6$NdXx(lEun^p{lZdw z2^9SNxpJqY2!eFNMm$?j`cnzPgPRt#f26&3Qm#sS%Oj$>Rcy#T@da+9;d>^{h>ml7 z0w6CzD~`ue+p#gv``Gxn%&UE2N*d!9$?;4PA+nhNbZoy3;PBWX*A2fgPDhXor0upf zea;JsGLm7Y{@w#O1nQ~gf^8k?4GFyw*YCQ+r#D)8b)4vtGgtXfg&Dq-Ure%l3eT zByW|N)9N5+$$YA-zahf&@11WskUWk&Z5`|xmDi_dmYXYKpc`(m=`UCTZ?jC*Q5#k> zNo>$rqPRk;ew@T+Dy;xVF3O$Ee|83ZeeAErkc&P(hb4(Ck4r&1LrOx8{6lTbKs`ks zDBCk3IIVkxzNJjW_93I81?vCN(trGZ?!R90KHs(X;5SXEa2_g-5qska{)-0LcvCecM( zElU3O5Wy@w4K|;Pm~l2Z1k~rWlKILJ{1XmIRNQhZo;$W1{pxjxYsk1DVc#ovO)Dv} zAeSD!vXB4VtON`=b_S4j5y7+EefCYy7{ms%AwQQ&scMao^+q(>oxK?fJ|74X^iJS) zOeN}JznHYcsEmOEOZ6hvVVlFu7&t!W?|#yk+$7kMiC^*dne^2&FLWZL7}Wn!eo7Z9 z-*?&^ighvpS(d*ftNW%$$ z&$#vRg7H>$vIH-+H?0BRw2LpdT%tWF0a^h-{I#pO_Zu z20iohYl^$eT4Jyu8mh9@m9D3tyaXlI&r_hJ>Du@$_k=%uHGzXqKUZG&UEEAa=_1UV ze}3l{!;^m=;>$7mK>F+V**k=8)JF8nFvzQ_w<}q$#Kh<76vEn6w?a$6qvimf#mh-W z)cU?NwRYPqyz30*m)~t}&%xqfdljFf*t79V>)E^K@!tH&N^%F9Az!75MdSdf#8!J#c+dkiFZWxFMXd0Zi0k?c>|BqL(cZEcM_aWo0NDNSF{ag z2o-~kAnWHXz~?CHXV{YL$Ww{S@2acoKCjy;pU!?J{p4ngR6mk!0^L_NJaHiaK>OHKRG!9ePMSfkJ5GX; zmJ+n3PqSbr3#9P!CfDz|l_)AbM~hBh2L1|`@YFRyiPx%U{jxGA zTM*LX&PDjK7YGt!$nv(BTzqV`Wrej#`m(jp8N0$l7&O6Z)zi!oVONLoFO*J@ zPhopr7!x1L8pbgyXHlVIbr569?hq_#yt|V&li=Euae5Lenx%{)*awE17%b& zC|Vs=HFu*u0Z}PS@-@Qc3JeP?Fb+qpHq>C92E2S-5Fo=9HlD1pq&Q9&oWXyqZrlLS zr_}KQq@U;R)XwhO;s49ge$}CP^1TH`n)*=bSq)<3Td`F=4(Q6x%smkVD8?K@014b! zgJzjr^f>^e37>dv%FLCw2G6yp6Z;RkJ$m$iq1$cL)8_DZ#>x|F$nj~t?>D_SgRGyQ z%9ivjeWU+c!)dgm;>{{6AUTyT%Qu`c>5`;m@qKb$N=yf#Zs<@W9Hep{xcE+$PqsvO z`Ez0D=XhYc&CGXEBRz4x$9k5aw%^oQd(@2~?goGNe;WDsp*bhq?j(Z2tKx#;)Y{O~4iM9)Aj4w5eQ zA&1lN(G`4qKN4=tn*O9zkrUuf2K)u})%h^MoA72LZKz;%Q_Av~Wi$-Ej@>(R03_T1 zA$iKltpO&*GLU(wx@GgV`KwIm0EKX6DnUgwsD8G1dik|;UDI7iE>76I6SpdzgKD7a z89F`CDo5yV8`0|BHu#SuI^bLGnryEr+nzi1i0Ihg?DZae8@3S#kGB!S+h~|OH)+A4ipHbgPIHj1KlyMt^s-E9mUs?*bF?P_8j2>CaA}tZo=g|!-%VRTv3~dI z_`{w1>XohEQU~eH&o;j%*mRerMMwJ#Xx2#wYh8{-ws}8$k&tCRpzuw;L?(yX3Te^I zdcqC3lY#2Ill{Uu6qj@C*i&CziO-U7YbV0Inl+STW0lv zBsY{9`u=M9`vYmqkfMf0uDKG+=ws9ZrrJ<_po!_+RsGVjog0-<;4>RR@c11ZGyh_$rRWGL*tNZZ0_vZNgYoXo4H2z^J~v zF@lE~+#x9g@-<)A*mb8f>iUy~(;oK+ev*Qnc6`w3gJz@0ng|FIDNsk|u2=W~e0gMXj5aDK~#)a0!hFBj@}Jyn^FA@8-$ zQuF%Ocb%B@el|!cWHoh{s-R9@%n>o5=Hx2f%ov~lN#6mosv~2a$0MLwtJ1Fry0;o% zIWz4NyfWP9j@pTEXG*i%{S>Do#@L{nLGjb0u6F^?kcqH4wa{)3*!uwR-Lh@&)3&b_ z&h_6ULToWXZ^t(Qa%+e#H4(%siI{5pY;+bW@g>o8-1?&p`ki2Id0(LlQ=oVQ3_^`~ zknE7Eou|t@9G0Crxbkf6*RsnBU-y1+Mb`wccyU4a^E(8M(O|*e!mA%FO*o};m3AA& zFo)&3-x9wB2?=JLic8|En(P;<`e|2pu}-Cdr=M+VSXAgZ(Do_5Puk?$H9SFRuTppE zJ;<}6(6d0x4kjy4^~XI6iKT$N=k=fzn<$rn|b&NF%Uu3zHYDJ`)VoF^YV8T_>|`? z{_@0>t4xFL#_S#nub~{lih@MKCq9jT+ABr-wv$EyH#PZH&C!LAz<~)1Dm6UyQr6 z0=a#L)AkL$@91Ijich-gw`_ccAn#NY>1I>S`*t3Vw|y*=Z{BKcGv3zM8CU0`&v+a+ zrxgtz>g5sIb?C80_pcuAhTqBJ04 z6Ije@WswHBHNf$o(8buFk)tUFc%4T|;Gq*TQg4^?g zJD*%$ee9yR*dKmxS~bO{B@chd z3ul_mu#b61oypX#;>dV0{raoipCXK2pk9eh5lq4fnY+N1ib>rJtI6rIL5RICy2p(o zhm+(8C;A>f8BgA~)JklUda*$}H0kzO{fi~4$fKC{AB+Cv2E_|I!smo=%kqj3kOU%? zLfwgfNa%nDJCDm^H10oT75L!My+FOA5Q;DAk7`DmBPfv;fmb63leu?g1p~n&S~}oa ziDie71&6d2&)OWtuy{^+kngHyX!B0YjHRa;-Nh-uH5wB;NR;3aPY%fa?OD59aOai* z>B%u*SGJ{C-W!dpj9GULSJjBOzT+!u25Yw4g!#+LhnXvf@$GtG_`|E>M{68=Vh{G9 zdC(x^uj_X89yo5M+f3ZNT`Rn}jK0@;?6&;_Q-$R$(432tzP_kM?&-4q{>V^G{=1-( zhKc57>jkE^o6dCs@oWSi3L2fHv29VZKA3|LI|mAmdJ@sn$3Z2sRl)C~$_Jjy>TNhvJJkLOq7R^4eXa7nMSjlf*Cyv{N2=#u9U~(Q&-ce- zP@LY(^JlsddDUs+9ZNZphns#J{BG!!hTn>Qf+11n*amX_k9UTQL_WW1pG+RWAm9q! zkIbkjijoK+0Uw)*-V&DB=8&85<{-4aQ&KP85RWrQ`=>~hwSYMUrQC^yPw}>DJkHY^uLAS|(b&CTAOFG5Vpw3&eTOcI>v|#j(EEfN0*8g3;z{sNS; zKh7KP7jnh}(+@s*0f;4+6gQ9$*ipl`-CV}h&^G=8pUny*Rk#fcKCcT&?AF&Y~|CYc*$?J&tJgS>bo@+_xg%)8Qx2$lzhkBoe;#fI^WYzG-rcW`fgJ(@4 zSi)CWUI^@XBZ!5KQvz?2Dp4$MmxJv2lfo=BM3d~8@$fFX*`VMeOpW4h-eQ2_Uedh{`0+}@`+~$(o)Z%8~mw}$BFQ5u5EyK;*PG@0v z4qfXX2a3*O9HP0yTOKB`QQhT zAs|Yw;C~QjX5Nlz`M!R67sp=97AvCk67MrCn;|+b>n2dbI^qBjgx`r1P*RC!FOc7|O2asd(GnLj|;5_JB<;J*<CeR} zy_elJ8;dwqeXd!VaTGbyN#{i6()%O82gM@)F0(B$YrpHLZ<`8>+K5^zISRe-PSAP7iA12C27V=G z7xf2K_$Ta7uV!|=r%vxlE{5adsrGTo9^1;PaDoc&L z?bs{)@xzHK=2x!{?-0-m025wFlpL@^r>N?;;7jLy-ppTusZ*y zhdJ1_^X8tq=v6PX-=&5gepVn*`=(v+wZgG%sq^}EB(<=|=MQb0k$cN;{$=b=?AWfP z49UTjMNHid9Mlt31F+_(wbTnrG>h#+E#H|u|JeurZ-2ED50l0zv3Pc1h1}J zZWM%^j3=EY$c??}lE1Fb4>OePtnv7IaY^nDD}~2BYCL{iAgZ71YGyoQbVJ84!zkq{ zT_#{?e=g%kiez5#r5|s{FMt@o}lOjC$M$uALb&+uqd^#b)(P$PJ z*a*@%r{nC)wAJvYL6wbG-9^AtkG0{HNM#U@l0d9d`lTMck3~CGj7;Tv-47<^{nE^3 zg<_MMQ~w-Y-tlT)yif8V1I1$z$Z%!s+%S;D-;3VABj(!%zAWK7Yw<>LDj#?Nw0!8P zAH?^Y?Nh$zUbK?kovD4h#lj&U+)P^Y4NQXwU|qakjd#c5nCb=n)-He5c+Qw{=9pR| zCVn>^lp>vJxm+qGkX{PTSJoQoO65bo8&1bx-9J3~Ex={e!V_8fgobPpd{OwPl@Kh# ztpiUKsrsI)6!KtaHjpd{n_FXd$m^S2RxK`Du##Gyw$oezw-GS<0Inz$i{mqPHEjg* zx5HKh#CHzI6(p)N4`s@G7IZBtrRs3?o;~NiIP5nZ<%M zK8zuS5@di}xOEJ-M*D=(^g0XbzX|7s5kVchxgONy&qFmM|j1ZNx1nM;l;1}~K z;Z04uloPZ(l+{=0xEgv5+c^);RGa9Iz>^u*qqN*0DR0r_~UOjcKBvk&4BwYBPrhzJg2&RzmU2dH$D_ zDiH(#_H}}IM#<4Qm^lb_-uhVA&H*J@&8^a>zgln!v^>6-yZqLd-KZ6^I&^vj$y{DF z8e-5%RWWN9F;zGHZ<72)07_cg-MN`)_d&^ec|n{P@6KZnHHsBd=ApHc`-kFwAZ&{; zFuu>tqKaIiS@9Kwht}=-uo?uzyaD)i$W`=_w+SY_ciGbon9QEF-MW{G!VN@tIe=Jj z0|(cod8$9Uh+3o78?&;qPEPih++ucjB}^V_oOk@;i4Aj#hsr541|Rka*iT##Ze~(` z#S$C8WAB}(T}}cUj&*)4zGV}+a(+=0$(kx+@+nkmNu68OHOL_Lrs#32(oVFH-&B@X}+J<=!PsbMvuy$mP(%?S7~B z?}uZ$+q!hR%4J#8)Y6aIzxs@|w?s}PM0_df$CmuwZzHz@4znACNPFDTot6m;`Ax(j zVGnYavl(~IHU+q7xo$;o+ZxiI4+-k0gxuhNIZC zCNK0~;>Vv^dOd8&U)e~%P)|Gl)R6BMy+$ios_0imni(wbdqgEG2Vqy9Yn_md6YD4W z>M!B-*5Buq5zx}Lf4bT88Gx*urYra&=b+N9o!#DwbC8;+Oh}J=o@~xA>{bQoN zGd@@rRrE+qjY6(!iGrotg1p|;l;nVe=?s#AY5RHl*=JRH)vkui>pk4)k1&=|RYO=W zxZC!D{u6h)s6CqgB8IFiSijFl*c=ZeQa7IzR;_}UfUHj%9aQPo`PGo~M>(3FccXYg z$AiW81z(!ST_nwh66J!0bEHe4)a9wmZ?~VNN3gT#S$2NLp6bl8A>-=*nqwI$m&gO5 zS~h#Y^Plw)n4pLXWt#taWKgg&ja@|^;xVjH@Uvu5Y=SiiBW)UQhb8U|i<05UC3L}r zyLI3~cVFGCD)K-v>$KteV>O3;`+d+U$rRs0<_JPkCp(v|hD;YsQ-=MWER43&lrGn- zOA2z-ckRy9BocDI$}IzFg4ZWhlZz|eB%3#S9<8uF-nX%#SGiYJ@Zw_MS&b(Mob$v~ zC2%|JV03E15!eqxC?-(qQY~G~N`v67DO1L^s;^6jc(F|Z7tcxK8(sTUfMV94`@+U5{fAH4Hp`o_j zzo%oR@;S`0!WO}(0r$f77vOD-3kt~J0gdOPZSZTmSstr#LFT(N#o+!k=|%WaXq~9~ zL#YMiGGzjkNy6pDFn~K*ch``)w-1BX35FfbjZFEw-^N*mtbs2v;kSL75s6Dv0b5tC z2=sa71A*dUH{FQnXu@dS{pi*)#@wS<*7@bG^m!Ab#>tPalks{KqPinKa7{0wY3YVc z_NO@J(Sk_U#o_o=m~qike9ZIe(H8Nb? z$jlueDBtL^1+O?x*ZOsB-kqv8p`N^r&>81lIW!c8w)>4Z5`3(?w1i44;uf1G1;)ko zTIqAj>8K^Yjjx*;*GG!t5u$&hUiE0t$j;)4V=kwy26Co$Mcv@%Jp%{jOYJ-o2$|D9BJ^pI1581Yu5gEt&#V|8x3N(g` zrL&^@srKCWcjICt%xt@7CThsmYz&uee+Rzzi%3wJWiGKA1EDVc^NEpLe`lmo-Pdr` z{agWzaGIE^Qw8s_@v&kjgLI8k3i3Sev@!BUY~s3aV}yyc;%;XVN&OqRuK2un=rdsi zjy9I#@gZqs<&xwJf+0LtoXRly4>&dwL(0Q(%h$}q`en{R-D-?T2babhupqHty?MVK zb$eMj*GRknAxyzrNS2P2+AH1m&}Q|+qMT(gcbre)CfGNrlCfU$eMIC9tC;N>+^vIk z%@;|+u57j~EqwQuY=!eiYpWvMTc-k9V6d|bBK=h7!Eu_DphD4BmD4yhS{?5BFa%>* zy=x!hJY@f|;UAA8#p;dEb~w0Ys1-V8P3-Z@=hcU9dA5=}R?3F`mce_HAMpy`typ$n zq|aw4y6NG2c)Gsm`58KU4{{0SP2|*gPU8NMsz04eHq7d_>F8QA9GUZaaXqK3eb9^H(fVZQAwSHgJFW>|4(hqy63k$$IqkJ zGBg;Iq(##)#!_Hu6Y{$=y=`o!sjj@hI{3D4mYW6C9FwlopyNyv!z@aXCF@3LSHzGg z2u)P(-lFkHvqrEB0FvAr&RBhoxqzOJAoxC`{J`_%8rL(J#7&FXw3nr0n+Kq}IjqlP z&)Txyx<&UdEtevPUXQaGFY~_tGhvoX`NR+1qgDJz+bby;+DkdaxyR|GwT?B-%#}>g z_g{>P3j&4vjTtXm+?HVh3?$mZhGOKF@ZNY?6Md_uo0ASwcl!N+^cb$!306Izo^}%u zs{Ks1e*=pCjG@qrb|TGf%VC|ejg@_A1DNf7QX=6|dTH8q3KM&T31uI*mn~G{u}Y2nIImpO8usZyjETnW6sY^yDHx!2OQ4xp|YvaWG=| zjEx9-O--%Jrs{G>oOPkyLo|7Y#p=TtHZt%U!=yLh_q_ByU@<8qpA(((9kzkUFU!lj}?zQEG z*rg4L<){#1Rese~ytismntu9{*zW^!UiPA8q3@@G$t$v>=a@MukLO^H!GAngJ94t| zn^2QZ&E}7#TvC}+3i8et3A$gAN;ajmPL?XOiwTss-ztcAyW&Hz$E9#Zo?zz13;bb? z*J<#aXbAD?`Q?P0GR=C`0)>91rJ+K~ACf*lGKN=c&N~pxaE2&{QA?_urKL`ioU!Mz zW250JH)$bOhQ#36#KA4DuZZg~#CLI1_7ffjW?ybauFlgV{!fA0Fl^!M630R<+17_jovmI@rGKXPoR3w3d+D(6{w(4_UM@E5>p ziOvT)8J|2@b=oSzI=5R&c_^%`LViHM@Hq)IDeU8R-W@GQmAqQP0SJ$ZQ_#WB14_0!e5{8xn?awlW(LiN2v*6}-$5iU-8{-S@@{y+6zz&8s%)j96clG*#tmU6| ze`ENZ4Xpk}x6RF*L^~v3F zCnUn_BjL7VM`u*)s1pCrTf?8PauhK;qZt|!iS}pN zmmcmaRpeT(v3J+3=@EtPKy`!%NlAerl@s{9cNK5_L~mACW2v1<3$GOD3o>{Ltd(U+ z>Ojc3!Fs<>#1n6ade43c*%^bnIB*ES=C9QG{8SjP+VLNh_!oBS<(X?dZe`VvhdY@@@Y=vF9BnmEG1THOycR(ay5!Sc!h9Ju794& z)9C?MIyeUPo#MUQ-z$NYIsv#|`B&=H;XmVbIBPa^~h7vp&AboM#lH8*J zf9$HHnK-xqL33)yj-*QdG2$N$4&=R1fbAD3N{m82!=u8~TwMvl_pq5Wd$Dq2m97ZZMg=OiK8-3XZ-D-8CMDkiG72-eJH#W`jcVb@^T%7zl zdbr$`nKjI{C0+6i`X^jB$ed&_AS3qiCaf-`Uw zMmf5AuHwIC{d>Z1(ZHDoL$fWGm^lw~>q-W&J=Qq{aC(XN^C!uvEV6Z8-|0UD@b&n? z@DKL+umdcvxjfsF0J&{{dZB$2+LEs+4~rp&7KyUs|B0>eTLsHQ8K-E9dT!PpLT2gR z<*oYyaKN1~y@L9WC0En0dJ88#j?Jj^OKtF(tyldJ=Vg z-PDyEg;dkypH_MAM|J`fP3ZOBds&LhJ)Hn1Bz%vAKclAEjzfYwkv@^iy=QGkL2v8_z@Rb-_Pw(TGTGkfBP2aQk z@qxO9@alcB;YRRcK0y_%9`b8|3lpROybl)uEzvf2VRVr;c^jD$pFe)`C-~z1eVI8P zDX1E0l=e8jF}fq8FLmH#f(k&@xoarwK11)i`lIR}QMa}gKN&H>YG=LS>&e@FW)2(I)qKz%o^x0 zcNNf5IfLW!08NczV9wIZ@7Nee&oEoXWY`UkHbflKdaONc8uO9K3oqkt;zV5 zMP*XeuPxFQw6$_Ds4b4B|3^YlK{9gC%)(S_fD(3ES%T$G=u=AqF&JSUNE4oSxkLSU zsX9WSM$?+X3e2-~7PAiPI!B!jGfHgFz8n!v#{I4TlZ~Zzb}wq-$YuW%Dq?qal=S{N zkGCknFc|WIlEknlTO}EqL3cfSNCI-WXF`Q9wGN@vdx}H97W_@VqUHifWkng`hSIPW zZ>oTN10MB$;h@F(vi;}IkL;B9Ill|qZT36_9y^vX$ZS#rb_OCMOaKw*SO-N|)xw4I zgYrOMIXy)nBX`)3hq;DUKJ4F5KM;*lOn<$x5n&vO*kp?}jC?Wq(u!Uv48CFDJ>xyO2x|InnSNE?6KLwkishJ8AxWUA^j4}?6m*TSu}&rw>7nv>Za!{ECZhKISvvZy#yGKf=V}t|V8`r= z_5JF8>ph;a<69<9%3Wkj9Yj0wB{@bUGlY#Ei4(Jb+x1fDKd~d@BZ+TIgn9&syiOAU z5-A^5wpZ{bOQQGCdqO6~hLsv4!EeP@o7VS6PJ<~@9DtG@1&WPooF@w4`hj}BgAfMt zub#uFN6CAj^cU$b758itz}fLN71-YxqL24OYKMQD$ZX%e=Ov75 zqpqQ0-C2t=li!WxYXNE zdOF*OTQilteIsYHE*F$iUQqTZFLG$N>t=)n-el?D4=#S=3nQ{XvtKw42C~_nEM5K! zac*l8ST@mBlYhIT=i)+}g*7v#6#{R9TRk{sm0iucNDiodVc%kiIYkqBJ{UC*U8ql6 zgy3qSyS79u&TlP>-kfRsd)|(ea$W9I98KguTYdHGb`FJ0wZm8-%)>XJYQm zaF7yv4ZM?FfPo+6Wyjg|dTp#0GTU%7!4s@9-(Ny6cI##0sCtP;jYQ9NEClZfkr`C?hm1U7<9_{aE$o_tR z@e}ZE5BhOhs|aCvDg?=LDh1KAaQTJPh$z?Qnz-IiFu9k~(6FPW7wiZCoc)c?9{bvz z{<>cSL$&34Il+fVbsJO0AfA(R01Z{|-PpVD|#Jc(6N5V5cd_c=6 z6Zx+<%gHlz=tG4FErg~bLqd2}NF73l9I~(@tFp)g7d$az7b)kS7hx^_VS&!tbjrl7 z7!mkq-q}zdO@e|ck<7&Y% z5yJm%Mq9pax2ns9{Kq_}F7ePGeXo^jIyuKVV&Rf%#nc-JN!MS3;SSSHo7|S5Z2`%s z4mfd8Jek&&!UrAtu)#;V8C8;>#(9wCwrKy?{@kUx5?E^`A})Qb2kJXr61TowJQI;X zo(=0YA!5_|?(X>M^2^hK2?v<^v|=&2@?KG06i+`0I0}&)Jycgv-h(??bl8>1;0}m1 zEKwrHs{^MJS`&wF=iw_6^;SWdwCiIIt;;Lr?F1W$>Hl2V#UA?QrnyjUxS$0)GW7KL zEILqc{|`FPfB7j$Z@{C%;>}iHa`Z!^`@bN+;zEbcEizJJ z?Zhpw%q? zvaiBAGh1K8%N4u{hM1ha43NEi)kd3F;!t9(5umF2v4s^@E55Gjudu21J4^K5C*Q%W zYMYF&l=pHk|AcdaFrlHoMh2%noxingqR6C011q|{T_Gz4h?Rl2Y3j;-2E^j=80&0` zka_BGMJ#&rR)NRxB+F2~Yw06t3;dwM(i%_EVaAMCegqNxL0+xSxUe7V&AN9L=$+Y;%Dd zxuDgSr_YPM2cuIt!QuvkibG|~Ulm1&y02B1{5sbk(aE){aT9B2LcEh%R{ihTjQN4W zu2*%-VX%n9IDQuLbPWMujBRhd6;ak|Ozu`;v(*Ful`boh<1?{Wev&}v%CP4@ot>(-Q*$QMT~^a#w$DSiZh zG-%jhVO|0vG$e(&cpK#+G|6c2z(!118L2NqZ z%tlv4g^}J?(Dc6=#0$kpsduh}(3j=$(L*f2AZ68YI%m<$q6gD5B4#O=pafpvIl+A# zu|2`c&vhMME<>A!wqGT;FYBy^(k8{P3m0$u|E3HiOX7uRrK!d=y5e@?CcW@X9}fkcIpMUKVw~EfJy|5@CF0 z-JKA&$^OFPALsq>(GbYrTc=dIQ;>ZJ7ZZQBvu=IHQ2Q8@17NcWyV-1gvUh zInU4t>X<#N41Zr>R4~%}R!qxA;Y{-|XdXI5oO}nZqFc?3goET4i`~(x!ORtoMa@q0 zn1Jl$#)PCu=&?-Q#zlk3JkT_^3WnzG8;CBSm(g$da7M_RGvESVRn&~XjVGv&_fe4a zGuQxH9Uo!&pPauV`Dw9R|Dfx0z-Y(BzRc~qvd$S9@xDp9+!6-lDI%8A5aj%&boSe8 zFaN7r+&hxCh3S#EYop;0u1a1AJr;HWPT&vYy{CtM-q>?b07F6@GNFf?TVAi9v+=YV z8xCgUnP{#mWQt>u#un;gl9tW2$^}Wd9Zd3Fmr$ee=FQvfsrc{DRmRuQFE;-!xtKMw z7aRO!n9$DR)A`J;OA}*+E@ZVj7=1SQ8N&YVT2fW?^O*4AV!BDKisrb#(t5}z*Kv%i4kyU%lqbZ1O>J6GF z_n~70X{E!R%w9gvO;owqHwOQvy4whuYobDhpJe4plcJqT1$0Z4&)z`>`f?xOrOvSr z)XtI}$-^esL;JwfDP1&KM+gtvrIL5G2Mn9%TSx+ySzp8G-ZnYR3%0_MpoG6|6&cFK3qh~?e zLM=;%P_@N|4tfmu<#>LX|A&jBLfobq6i6f6txtLeFE(EO&u{is;CAqm>Q(=wa#RW8 z6tq@~72zyiJu{Jc!wnQe4JE~m1MbJX;FRmTHa#LkNW5SS11ESt|g) z{4nd8EfNYNUHfQl%61CUBIUb?`)CAzV)oXLnx(ws>Ld_#Bg_I_<-4fNj{TXt z>iNoY|1C=~dG2QBD=G0+qXXK|YK7ljM!7o^GO(tcLwm21^+X9HHU-5KQAX+Fgsy*WtE zbGCSxiVIiG>nejrDI$sCiF63D#Xbi#0o_TA_KAIXP}nYHBf6CktL*rN3N!ZizT9)Q ztGLoUuBzX)u=n9_%{p_LFj_+;Y%Ekq5Ft*Q($dNIR^} zL=KL5jH^oXTZ>ldOUyJnv*@M9`;tnNB0U;!6CKn?q-eQj*hkS|bals)NAp#oFfnHu zlNxY#(lEgS-Kga9VKDpEQ;pOPe?=Pf{G)%L-kAgl*A3)t# z`?J*HZ=!m17S1a&ArlR4tX=5 z`fj13J8dy`KN`Lm30eXctGoMK1J4JgGm=*YdF?pg1c_JYQaal6Ssbtak}D2rXCHNqVlFQ_wyi&zA4zDMe7iVmx*{M z*B@jI)-q_%+;=*c@E~}&Qc68HgtLS5dJQbJ3fV0OdE-m-z0V4MfVb+MX$##m^?=xn zajW^m`|P;-17Lfp+~bbF@%JKajzvtlyU6~t;kxfX>fTRO8DU~A8T!Cer*(XwY`G~Y zTAZXDvZMM##x}3~TK0U3HCZzN$S-AqsxA0plzUIpym^qAT2F#&4UKKd!K6A_gv@ z2e*T#4OR{ zippP-bpfw~iOSr$ov2ra4&hQ25E)0I)2Yh$D59N$5C77fD}^ip%C6;;_vgb3pE`(} zQOC5prGRYK)nbAbRi?9K&;BM$&j8#REpI>{htt!!49x-veF!Ff3!_ncyxX6zr{~ zk21)l3pi*JZm*D13PMp@c%0=X$P71+6XmTNk!UiRFf^G4sR^gj&B+uq1^*9W)4Ox6 zXy44)lw?=SSv-b3cO?uE4DXw%gps9Z-jS0$?^#2fAKv@5`bCYs2t)dhpor6$&Fvg~ z+j$$6P@HsMAb`(ob&Mr9;*YJ13ccoq`T^KV0I(sI}Ar zQ}(x$BS}*&d-#-dpb3J7hyM;&&&nqMB`q-;abC3IYjAwxeXAGVW2a7`hcZFwXUbyN z;p;)P>u~N8Q)2*bqAuBjHm)JQR~M@kD?S95+(Er<)IU6M>fB(DW#r+zze-+u@INkH zgMK-^CyqmH@^tdt^{Pn+5R^8^;>uo4k~aQ`dRz7X(Dl_}QGQ$7f}@mlcPb(&Af19V zLw5^ENe|sQ(kLY{Lo<}1NJ&b_C`flpj4;#)3|-&g@0|0#-*v9{ueliJdG_9Gt$p8X zt-bf!>gPD4WU|oAgE6lRK4S#;Q1EqK|D)V3V>} z9-B|pW%h$-2(6@k)a`J6n5d8{3o@1AF~KzosR64Z{TX7M{GfGQ?h+*OX(k9po4O=F zfEnF|KzlGgS$&;FDC4(U|G}WLvgkg^ho{DSUk}&_Gb!^+?VcM?)@pPDU$pTn3)<2_ z+6kW0td*XV*I=tNaih}442aLzdM>eSwe8b`f5X3ljp1*sbUcKB^w(CHjZ4>iup64d zpr9VY_Z8Uy?`Ol(CyJY!ubW~r>KBChWYSg#M!zekcM_9_*XstVY1w1|J3WZYZcF-K zFX5*0yMG}5wUiDz(f`h!fg0o`@2=vPp~qA`uzepx4|RRWu>M&_(aO0OMXXNEhkG-A zbGi}XYsjhP+(_A_v;f-G-1To8eck)A#i^R4L8Q>pr+LhkBX1F8fjVoid?qOHi0z^Wc$;rtdoxhCN-KT5A~Di1G6I`~|%4O%_AOV|Ggo9Sor?YvOS{at;-Z(VjSW zd#L?^xu1^xcT&P$W=eIPZVtPFuj$ZCl4vaE&~&uu@{Qon-S=e4mhF_GH)rtfmdUD} z1Dh?(wG4jJ2h6QrTw=`0x59x|6Iq^B88{L49UZt(Y9V`v&#i+^EsgEDm&f%jpIP}w zl6H)_W{{GrFFlb7>oRZkG;b1|_hf1M$igtHdpQK@5Fms%!!#@+VlEsWD99!PGHKEn}0tw}wvu_3U~)h|(S69v-K%d}iE5@aP*UvxNi#bl zh>0eXLD!PD_FI~@R1I85V*H@LzeuNQulq;Tp_BlRjIKYiGR;+Ri^u!2{9o@kY!3VP zg=wfdHo0VvUgXNm7y5HejLg@kyOG{j%PeRC9CX-+Cj2~HE?YgXc_CiPYTosfPa?9E zUkvdUdf-wTV7$+2B}{Sh5n9tvZO#PsNavR-C0M?Q%&3)0DfUp)@?3cn`zxb{(OAFk z^P;(MnC1Hfg1XH|O^wlwTzYp?2rv~w(=^a8vi_*)8DBkIi=;P~@kZri>X~z;_#u`F z!IeTzszgU)hX{h{arK_~w2oin9_{u~ZhJ$0T%oPG6 zvuZ(Sy@OA{XHjDT2j9fCdLB}D{k;$%1|UdraGi@@t|z`g2@*qh@PN%w`~0#-mTy1Q zI1@cySb;KXnu9R{!j!V>J_lv+TGj7m)YhqJ1>2RDB1jE)J#v(Twb%z8%2%H{?Y14UA`27ZmpilRVFYb6HLjRxp`fl%va$&(vwiupTUpKWaz}ci?KIM z%~gXAeLC^(MbV3TvJ!!nZkwRC7af52pv zI!#J`UkDUa8zh!rIhdeqsqXNXt_0VWa3>w(FbsSsER{$cL=zhVbvzR$&d;!l)%-bu z+xVA9Xc+NM-JkLQL}etOHCO{2aDU`eh$aOsc+p2F5^tzJvAD!o&Tj&x4(rVe%otBR zPS|z^)COvl@-Iu8BQYD)ON|a+)LQ281mGHV^po?9V>m6+;Hk&yWZPm4~WaLqH0 zKj*=CY5mwGuE9kuKUjF%Gg2?Rs1WTe49M*!$&$^l{WwOuVGR2AF2<&>{&-}1nYu+% zLO~MfdW=S=!(VZ^j;f9yu0Bb@oF*9Vwt-@*FdUATSTVLFKg)mhR)_*G@u~f#cBM$m z$8+30pNdf>NlwcU7DoOlf&6|n-EPJ+nmPZ32+7*c7xcPrb_f1L>YdX*1I2!w1H)@o zrY#$@;Hnjh0L)Ur>Ca$gTFH4j=9#FT&@RtT{D>x0)L=G4C>lx{TD^5-|bQ>|8`ewxWlpNUs% zWhRtm*B#dVN~ph`+_8@%9^~#Tl%x{uU38fju)ex%YzXN%x2%$ zVDit>h2HrlTj#uzzLaFf$YJ&UKD9Qsv{A%qXoh4gQd3Bhe7+qv}@%)*qWf<>H9D5g+c-&?%M7DTdOlZz+ATLQD->V~L4y zXuq$Zr5~>NRhRk|^#(B0B&~9l>%ZTxGQ9S6Ji;?kNMP4*tt;Rx@f+Q?c*?^i<+P1a z9v2?zsL1K(*u`uS5+a?1St+09d{YcMz!!P=ZO^f1$qMKigpW(ka>mM1U(eu3`xHR` z$Zs4s#dTtwYR;-22fy+tljYI%m?JiU<(|jwnfc%~WHuQSn%+s)^3f~0r#3bFUBpF6 zU5dg15BRu%m2SR>e&N=`;i8rCgKiUqL2>rI+InXnowI`& zTh|z;KUKNQD*JEp%St^n-kvih+gy)H1ktQGl%7dVT6G-gc2YqoEcYq+lL%@ut%xm| zG%O_sszrx;&OCVO0*=(2{KfJ&dLn<8hmgGS6fNn7(MfO$WTqxHDLf4ANJ1GDj|H&BIK^0?rgvnenSPCc%e}BxRM!6oFXe)s_h;1xe?!2KPUaqymlT}bd*d|6K1R)^v?c*ugFH0(kNnTM zh@?)yc!w4A1c%}V~(%hJFT(|cyJ1}@Z{%#(MO|qtSD`RoUb&y zJ3ce`H%v@M>(s=lzZi8$`)CleZ&-Xip2d3@^I(qLg{gG9`l0!39Emy}XCYjE? zm+EsBT;$B%^H6adEes9M%2zOiOq7wp=pYdR6E8NiG7Wo`)v;}rXqQI>m;@`T7yj6f z?LBTczDDR9M{2C8)gsawJrD#NmKnKYlvmE7RLTAsR)n3*O{-B)l<}hMZ3x`oiVku#PEZpV)1ehIE~L`wEpxPiAUPB!1$Zr{xK-y z*K*=w*4W^WF);T}gn2|(7~rJ9KhC8(`%gLsL8S;+arue+dj56z4TybC^&xtU>*-BW zXb6FgP{~pr1k+KXrbD}&;kzzI%5*$ z9^4S(k)Z@0ZpS%{TF;sY-&4=;ENsT?{1<8HBdTD~cgq>_=QZW(RI0*YOMEG&=qimo zo^XcKVfxu({X>qD;{uI(H96P&o-~GS_-czLB`;v-ZyLuk9OMkH{ZFOxOnnSH{L6LC zCwWF$Q#S@+337%x2V47bwSp9xTEU|?H?tQ+UqzB_cWqD>eJ?=0R)SY!0K zgGIu!@!Ipm*TLacXV2o!P@|mB%N9Ao#gW-jj~oMH3%{b33%NiKnL|X7^n-L|-wCzi zZHFXs_qvSqnhhO^Wp5QH(9bWr?Z zJ0o#V{@lw~`#b(YYN|<6*p?{Yb$cI`NS_q%8`(OdxC5^0ffeR9;)sP_05K&PgS(Kg!yRsFjggS0W(+tkPkf17p|BoZwNr(X!zSBVrlE zS$n|CBXsg+#UY;Z0+713-r9avT7jEbR2Xx(H;|d=XOT&h|F~$*%o`qgITBnZtR@lR zcgswTTnzWE686lx<4p=S6we|YTLg0q+t4j7KgK_euSw)7kUAv7IsTWiHSYTX>4o6$0t?-cl<;X#v=2oVBgw zQ0Cd4aad6U6fRu-mBPHSkCTHE=g3ZnErTn;dg72KCWpYOBvdiw9CDRIlE##iNgj5H zRWo-mT@avxb=%!H;lme6D0*HYKW`)g-JDyeNUlc9?Y?RQhw}}ZW}PL zg+8Cqz`TL^QXQt!aoKAN54x;FzhNoyi2;uVJ}oWp_zUjgfWYs;%}i54MF?S{qXRN( z03c$M%{qkm!%1}#bdSQpRGPyS=H3i+NZJ-eOSOVpg`X6|wmpA4WKospS@u;}N+dye zhBi{2#Olk;P}#}d+L-F0zQLdlw^a#Qh^5vEwVzpEa`O1&iF`cRXY-DxInJRIYA=(r zl^`N6iwdv}IeT<4OzhB$ek*uq%Oph7`C%BiEuH0;yQc^bjwJkWc?#|E*eB=(BRpx|EajkT^PUX{x+5qzmyqMOSte$#?IRw&as@X!k=u_E6Ytz&KFcw&RxGILRuBo81wGqrwm)%V^E{PueEo2m;ep({G@pWZkzOz2JU%yrgo6WFU(r_RY&+iEzRyj^|DCeL66ot!eplF9P*4=TI!DI&~ zU0N$x5N#_+p+Uc$vibtto zXMb!6S1|z(vX@k;5JLP!AL_6DwV@5nS_mJ@DKW(S{zQNdZL5$m$g&sA4{VCfV;&l* zY~@QsYzn7qWkLHufi0N$RU%_NfX4Gc;SGP0G~cLt96dTodabw#PI}Xf)bYrBo(x_i z72kg;9w-AB=chRP*;DblAlOCx>c#Y$p#<#08X>-42x@8uu#c;`a7H=p99$ylE2J#) zt?fNb!Vo)-x2Tko0;PUU+k|#Qf-H*YHe8*Hp6Ey8VK0(nT?PG`vP9aWnEamJ^NXc_ipSrYNeP-bF*_NlI<)?RjE#5T1cDAnZ z%6x_tYbPzPkl$;ptAh1j1h+*<8^ zUD`_en9=5i?|7w55gZC9T z^XiSdK?Y;*KQawvHu2+gZ{GmnFaGgSC_V(mo1Gb>ApJ3!eDf30v1X@g-;#u6SiAgk z>0()QWwpcjIR<{Gg5IPv@$}H$f9H_JTn>ylxI$WU4y(Dh6B|Msf*+r>Xe6iY`JQ`s z$cno;US^~iLM^VU>lP=z5hi8SE`}(d0?ekEr8mBG!E2b_J;KGs{*-d3efhHHE>UDd zY=HT4&-_D*h|LdYZXH@vg22knwuMa3RmvgI)IbtYW7{y41=^c(^93=Rfvom_y2P;M zGd+%O2HH|L^?xizI+_ZcM?V=*RT4PzUR^0kE6S2ygZz36l4rrjjc#<1;(m^*oA)N#GK@@pegxuE52{4;w%;rE724Aq=#UvVunCjplY*4)ByuD3Ar z=3_~4*{1_fHNVx;EI)}ZG49yKcy^O8NbVkcBjU%wZ)vU_kB zN&9#?>7ciVm$?bFl3q2i-ppvok#=Yzvp8S+^ux210Usrrcs{rOnbA$Bzy+&z9|_J& zNdLAy#PKoY?7VnGs_Y2P-xhF+%y4z?CaCZr2QZKnoa8S1u&Jteh(@XN7k_TN1??$h z>q})Vr@SH7{n53b(^feaOj+X!oQoj3CeL?B!y0m}DOhpv&MD4n#lY`o#{3}_?=kRG zV*Ms8=x!oo?Sh2q{AH?W!@It?X1d+nq(k#yl3vc!m|1SvG_AmZDrJ9Deh6l^@ z$Udj~5Op#B%pX!8PV$)C3p)b^GOryYKh)A&x;aK>(3=E$-97C5u12;ugxfm_-LJf< zrd8Z<_K^Zx*{$|oXd#_i0R6BwYuN(eCB~^qdVWp4qdqJJT0HVE2!>2?4H=6gwvj8T z@XLjMpLeQAL#Yq-s;a8Hjw*Z^;}{ruDb3DUH`F4-F`fi8pUO}66>j0Vozv@h*td+d zjk~!lbTtoyR}f8IXm6Dcj1A~X>`(8KFG~IZt@cQLVK`h1!VsBQ{`gf)gxxtey&BYD zLrw~NRL>$V_WIs@G69FA?pb0$K}!tVavaQ}#Uh73d&RWWlU^74pPAfZv*w_ zQ&H+o#11VpcZwx?^FD6$7SnVm!L_xQ`bG-Q#{NkpYBAP4xknE1J{jadPp8q!N)iSO z&fHFCu0UHOOp!-H+`vG~k}!gmUs~q}LJn%FDwfLBMy2j zvK$B4uON03rQ1G@#h=v22S7?vBkq%`oT5IS3TwSqWA|?TzRd>!wyVXh*Vl!ihY;wC zlI=APQC+0P2bs6sac2@M_E~OOeZi4NKKvfmaZfh;J(21K5{txWhsiE&I$pNDr4 z7Y0W?=NhN|4$6c=9ySRH5OD~-GbTZ)91u6Sxq-YC$W>%E%mPeM*}(2oWfr2m{pupm zuW}Su`%suV|DBsd4rkJ^06LS_^6>Wiz+tb>y&oieGx?{Bf9= zy|2Cl7e5Be?qj=ky0{_Pl3X5R);GaD+CDpuXW9s*$~;Q-u%q!qw7;^?=QaB*s!9e3 zHC+5bhC_kZf|B>UwREO8?mP%RMs(oj{-3QM;HH-}rLJFls=}s!QQ^!_{8=*TgDQ=B zc^?b_Q?l0>Oqr!&I2Uyu;+&y*z+jB0JtXYbEr-BHfE8kg*clGq=bKpqLFr7JXW|(T z8PQUrZN?}Ma5WD2=W-HoO3>Vpc=wjoYO>Or39;)O+6W)Nh}N$Z;2A>c1IzFxh;YHzE5EwVy=aJ_KYRY#Jl!GQ zqX*Ra)^@RJhST}0E9Z>jjW_nWIUX`HD-UrM0a#b9zqG>5B*LV`YT4VKbE(^(N>08- zLCt2}kTfYCFdS=l3^AI!S>Detsh%*AK*D2Hwvl?| zO>Vkv$4mZrS#5dr0%P+bJ-kBc8zVXk*crqIoT4+$g?J_T>jbyRFp@#Cxr2IHj^QWt zgUiX%&-p2`ixTgsD>jx4_P21SK51v>i-JEDq;0a?GFi->kWPiOSonb7!}OMzH9Vip z1&>W8H>UjqGdzd(MX4}R;gyMswYHh2e)4?DAssP5iX4OZT2!rhv)ahOx0@aR^MTLB z8^SOzUu3!x^~S#RVSGmFQ9`2(V@A~)(#~$j&O=-}WxOZ}>xZp$wS+OMry_UAECsBm zl(qhFeggCZ{v;z_8u0vz4-=C4b2zJ9?%JKIJ4mCw0`m@!MskKP#UZF8!HCtubiCei zE1B)Blt(jCHBo6-#Fy?sL2v4gp?BIIri_Ep-OK~l@d`j!6IEnOz-uIiY zbq-SF&2Kq{Z()-WAcb>DLKCOCUX~G^Djs z%#e}of7SWK>aX2ra*pc-gh@3g{Z`zl6 zZf}$m*SdT1yo8sDWZ;nZyKNE35nJHYuehP1CfEWnEkbN-EUuUj`Jnin;fEp zU}9Mfu@cf7NGG6YnGgAv6edqq>~6>w_VN841vPaI!B-6pTn>!B&_SoRK9vUJ=Y)K5 z_}Glk9*G7DM~p%I#Y)Z2W=CgBO$LxBio>q_ z(u}3=uoy%Ei0ZewXj%O%#I2E*(R-J45ynhCG^m+6v%p|cub6{r2^U+Q#X7h(c#y7iv@`ac>VetF)0xQeEscS#FkA4*nkE*2dtxVUf&KWnt6FJj91bX6ewXLo7x*!!NOOYf!%Rllk zgKkz!HS^4~gb8bGE3WmL@jFm&crlnd<&9>dGIieaM0dP6bKI zOo$4~y1!qHyz#h~N@rJ+A-9#_V5Bj|7A?mhwwCnpC3>xYus@tL|3b8+tZdCaHdM;% zAGbdYcjTn{%LmG>Ejkug)hsV zKIVA%(1yNyo`Nvv3k60tSn>trqy-|1t_tm@_E|ZRW{xA_p;e<^xKlsI<0eT)Bjq&M zQVZJlW1TBY!>f?xgL1Cm^mK|mn(};G>NEq~1l^VM%;*HI0=0YWoHTQCUQvTEl;{uQ z-(JPF^f}gcbE7S9S7Q5;{fsmd9!jZXl>lt9Su}N>g_?feBYGwpVidyk$*@+;qc1mT zjK!@8;}AiD%D-sHv@kR`zJ6}|ZV@o`;N@wbNaKExXZ)L3zN*l!i? zgp_s|SqP!&P45gC*2LTeCpVgzY^d}2{cWt54}0C@VQo(YJ0dkJD~f2UZ^odJ-jNDt z$UhXnnVO9bo<3oxqN#!xsQC7a%41xRGNAX%{B;FbP^eHkE4j4%YJJj@&XLMfKW9TV z)$LYKa&S_CB`#a-{8terWurX0=bT2>Y$OEBzm2~sp~(QjBy!4aJ_5^}R&E$|us8zH zGHK39Yg5fgS}yItKaZ>D8=2p|D@|e&F4vXA*z-#qEOX?zkSIaj=dsb7a2eb~o(EU+ z)RO(au9~agX;ThWM&%6*La>~-JUacs9U#B$-fwy#YpT;V$8&xgDOKYrAO<={{f{RC zfSSO_rF#KlvP&KmkE~&)&rqX5Zw?pij;ac13p#()mo1P=S9FB~DDeN7Fx|VOwUEd3PwwY#DH2S|0kn6Vm3sfF#1xm%E;{FGA_kxi%wcQbGlmaaL zgk*y~)8FOP93=AI5Y+BrmJHr#b)Uo?8!qYjQq^?+_B!qI>%eOd{7sK~{~*u@o*z45 zLh{B8P+qICEaI%(c6I&ov^FU8-UfZ{A2|_se$y9ccWIiQQGUA@F{JqQ^_wb42BGw( z`F)9?N3_Hq2;X1_=f`z_BV}AFtfO5)99qvb$>r5b&y`#bzqiUPeUN?79RF@{BKSkY z>WX50-g6?$gv;9J9Jm-;rywby6;(a8D3)&ejy=|~e~Kx+;q6&e5c`G%(87cL!8+N~ zhR|#>p2EN&k210y$!F$L@%~o(A%Jqd4~>D(nnr$Qw=npI07_ybcz69`kUw$ecL>&vs2sfDZZ8tsCEitKAy$=yAh}FGTj@toGM8QR?Ex?5EY9 z(?-0Q-fpHB3Egu%rgJ4rY2OlYA8y%}WvsYmG>|92(VrBDp7mQfZ1xnjnvuDMhpi*` zRd6ke!RS;gheRjbQt@_F(WC-&1QW7Fw5@VxUMnX_eE8p3nQcyELYkh-Y34XpMOEi% zeE+Tzg+_w{;4PE@WxFY}H87H{s>i-g_2ZEKQMu0 zRQRZ+<5461&$uB$R)O>3$G_X>UB#Y3uW7T8=^OK#YY)l(F);${1<&6CJQ^`^m zPhBv zQUw7FxNcGZQ+W7O($q#+7k>_XI6g6} zn&NaQxQhT0HA#1d5@7?5;l8_-YP+}N+-5I0Ng~rwF7(H5z4p$cQ)0q`KHGXbp|nTl zy;aVs!}gDCWwC{uhv(gYScjtX9WYc)s68WJN~9Af17y?rJE6;2Sk!xqus`D>%Wzc` zKIh8#S2VJW#E_< za`q3>$fWMvj4Y9G_Z|Nf}P?M)K0%*-@nhAjLI{crW~x1YD7^iz^MS6MtmsxSWg zRS_d3sg!4hD^xYQo@)p!#*W3TqWD7fX8>PQrbr8>lxLe--r#qQ{^9KKJ z=9aE+TdQVaAyh6yyruiU`^SO{c>dSS9D)m!xy~@{ zkZ9p<&QJ8FEfrN^3=2dOA@XE-3mn%e)%r4G^DZX0o`|YX2L38gF1c=~03!%uHQ(_^ zV65e>vK)#Ux&K|A3h(wUCV-h&-Zb(~FNfK%YrfKv8pl+yj391>AywZ968}^B{C~zY z0wMW2VTw(^I-Pj_jy zQ+?h=Mut;jF@aV`a`;a$ZyWIh%(2YL;5N=Om-%nIRjP(Agc2VmnH z4qJy(+&73E(Nw|ME{iY8$6$o5@+aRMj*@!ycYuGZv`}L22E}|by=p8o zp47m2x&H%MUvaR8OCC#4YQm-olZMDIHsyWDq7bzM@x}hy?~S)6HCgH=Ox@P-BBl&I z_j<<<$t>2WBQ}Q=;owB`u9yjhOvK+R^Q#uB*iVXbeC%Uy zPESWy(9%Npj*N^Irp#AT@_p;4nE(2s+PB_b#gw#iGXrysGoVNt(HpG~3ZGUsscaXk zbBT>Rp$lyEVVKK8=WiiiiREWg&nw=Pw)*nfk~;H-Jhg)bmoJp$-P-Fz!0PXW)RD27 z43CsRi+&(9(xO#;WgV#p?USU%xjJYc_m*G>vcvb3Q@-#`M9BDW;_h%Q;y4UJw;z0a zQT7j($~7r}U5X8AEBF=5Lg;8m+g+XTjtaau4=vqAZ zr{XdA{rU@ftaItQwC{uN5_9KqQt|~=EF*JM?ZG6M7KIxycx(UR19Rd<>EBD#UBMw8 z@R>VED2*T;83yjcWdZ2gB-xgs;T{t^ub9|7&t^nx=5bS`_Jyk#KYm+Fba2z;9n`ik zz;hk+mrH7x?pGYe*F1v_>&u7O{^4dFGBoVUb??N{lDg8G`DB{~tASX2aO~pr`j_dw z#KLm649GQJ5Z4g)J;SUHT1K__mfJt3XpgSkx&LijKsG~y(yI=a{%(a&nl8BJJcVQD=65pK3T z0&s6Tik@ByAih4KmW_e5p7?J&o7^KYgv8uV_`eYQix|rrMS~C? z0D`04HT2*AyA}Y)>(CXOnpoFo)p@l&)67EdP@N^7S?AYg3V!u5_gpOwCxmXIId6_z z=n7=wh1!tuInqXB5*x%Hl7seQ!Z4Y@5V|F+Hb9PN%pDt4qqKZ|1tu^|PcK>dCbYf^ zLoSGKCQLZ86m-G^rReHj#Ij%j_02VO|Fz45pd|XAT+O*=bJm;^KdnMnn6;zQhCxA8 zKSjfvAO50x4bqWZxw3azX@AIF(AZ^e0tUp3&UFz}@y2XipRrA>;!CQH+dsK)f!1ON z=J;Qtw0h=I{QLD-3saCs77Q{VhNaM}05OYz#soHwNepg9c(9NtOXJtt;46P?y-O_e z6Aw={HSaY8aca(%^rLWJNHNjYKy3$B)AHp*|MS_fu9z0ndxTk~^b$`VMTq1jq3wy9 zgHK1jPA`o@@rk960s4jzJxvk|<}hatRv)0Dh@3B8$q%O5>w5crA;R*SdV|!c!oh6O}~=_Ufd~KKt{WrWSYe^U9Hb+mtez3IodISPbPG z2}`a_NG+W-P-93>$tSfYom*H@!@mlu@edv5aG#xkRmyPtFVzuO|`y3Skxx}oiVwnNjtb*oWtM1_Arhc%#E6=E3OMa)I zumjIGa}R!ZN%vRrBzm1*xRitJ^Gw)c<`#Cq5h4TpBx^aQa=|@(N4aTOg zeqn#C1THXl&%{4{)y(-4fj(~~CE;nOhdyV=ji$$f`*ANsM(1PZlOh#X0wK}yV&fdo zO9$Iz$hI|6vQeG{9+;RpX6%ERjqEwTRMet*9iyH*eY9%c^Qlp*Ma(+lQZlSNA@Hg! zm>?7i`cS|q%T8#-!?t+cqx=gUqcju6P1-*&5YopgHR;9)-*z8WRMr3MV=4pM#!DDg zIoK^ptrZ+L-Hj6!O{v`Jh;vvoGqQ=8Z)P+<(w)5PJUq^|{uTc6#h#gn1a7LQdQbKR z=IY?cdj#&`lCq)P4;Y0<^q2cq#mgsiteaQ9Koyk^@z==!FY&OhL&jQ_T9yBXYWsYT3F5bK-(|`zoKyk)HS#R0@|gO9?9#@`h?$wy>(&d7437;LTYDz3 zD((DC&N(tSaj(-QpAmL;g&xil+Hs%u(A-pLMalSM*2QQ`#*l}9_d%{>DRp-MXcY}LO&?d>jU8DSJ!e( z5wV~n0lP05Hs407?ri_$3fAJjJC-me<+B>BwK+-{P<7?4dY{Wlf=1){Z{?=Ig`b(2 zpp*h5-WikKBVffxT*}*MhAC*L=z8U&&ZX-QHFa=p7$U*re8PlA+By2&-b$^gzW_XK zue^BrSn}O_S_%GSZ<_Mzm5o0QD^r3@IqJKTv?nQXnxT!)RbT z`?=w+3J5ep4QmqmoL7i+Oe;YIx=L}5X`rJ43wToub{inuP6-FMrDMPWNZNa`$KtHs z>3)6+plwCMt2{%X=)DcZ#^G0m-}LOzD85R-Xm)HI2D!dw**JfRN{QhC3_pA8$K*`SsdJaoN@Gl?N|5}JO%LpN4{}ni) zbDiPI^oLi*&o5(0BwH9dN0|alVHA=-3Vn}3cZ)uWqzl|shO7?ijZ4$!_{|q{@6D=t zn#nwR%cr%k+q)1~N+DhI*!<>G|Iua)L+~Y?1Z!W#S`8nMwy`npi}oO!RjwE=q`Hx0 zyFuk8>A!vY?!-HEJX?v3a3L*BX=&W3^OGpnD4Zv2m5olL3~TjZ@p*xiL50r-W=6#D zWM=R|8mvIe2I~Q%Ag*I(t4+a=p}_KIh>&>!yOW%poWhDPl)AcUEYGqHI~wHJp@U;@ zqEN_YUURi~-a@Hc+E!Mz409awbHFd!X2f73#>h2FPV1Rp@&b<5VZ%22CD0lhUZx^^ z)wtB`oFcTV^Xq6x>+$oW7&;p1mtyO`?c}}H={brIrFaJmR^pLfW@fqjuW2RpWw3O| z-+6X)^2Mmrh}=9^kmjg=^y}EKqCAUVL}M1?_;LcFv3HwgU)zK-CDND_iERmfVeGQU zY$Cy5VZ&6iAH5mp+#4<}< zmN`+21!ej>_3xhSd=wFUpkUKS$(%^943+S4C48ClZ90|_Z70KMjyH8QwWb7qulA&; z#BKyaP2X~8zKcFtFMk7rK42()*>>-UHA?k7ZQsR-{rWyB{mj?<263sfk#Z9xzh-&S zxtjVY#RNBS+E0@^?X`Js6IPYetozo+2j_%E9uu0t2uAI@SfBIc^M$^az;Bn zzOi4*ZUT7EiwK2@RU|*{B!>jqOz(v>J0MvwiE(U=9D)0>L`+5g#;z@0>a;P`${l=B%^7q)z7d_Z; zcP6iywJ4KDliPp@jj=v}fWMQXFNG10cV?>4@ZNNULM;HZUG1VP@9l|OpX*SEjX?Y%`b&N8f3=s1!BP-X`dE?NB{)vi+ zTHHKdiH#>`&j7l{aX7lUMhL;UC)Xp}F3rDxb#*DX@I2lzdG>voogc@j*x|xMcbV;V z*ogJDQ@R$KLsCd+e7p85S$f#-9dWUMgOaVD6HJ(RaOg$JzkO0wSSUX_)*rC?;%uX` zs$j?eo}Hb8JgQBq+~qZP(ZG+v$b}sSW(Yd>bB2L-!h14{6b1z-ba?-~@4nA(4Z-tQ z2Y8a+Y!Ps38#1!R3O(4bU>`>G_ADrljEb(2Y+#@Q+ zA9ZJB4Hg@ITAkIlB5-eS(hvDq`(?{(bGeqd+Oml_C@nP1-#XFcZ~ip-S`5?KH(PKsUd zYW56o%PlvCaJHT8v27Ze1DY263GM9d12&sK$=|`0sX!Vu14T)L}*qtGlSEsn?-`K(=`Qw(1pj7WwQ-_vcU(* zX4dBm11s*tSF~Q9AHU8i)K*l)T!h`+xx6@o{dx<(!6JW@tUyQi2dJog9eSE?wS>bj zdm~Ii1O-SR3VvGrj5oxvgcTNm#yjnWyX!z~>e_`#ERFoIuCGtvHlybjf4cr3PiNs3 zbsueg8l(~FRJyxcQb|R+yGuHThEYjHrAtb>ySuxY0cPm#7;1RO=idAN1GCor*0;_% z`?Ggv_JFWFJNQzjGt{L36AC_WKT8Fl!P^qPhk-_iJP>ERXf&e*`nDo{%5zV60*6oL zT=bytEw*B@vuku)g#^-`wBJ66%6>;J9`Oj%K-ZaQ4ezE6d`E)zCm|G0^R2_{`@dPl zcUcIcpHpQ6;?}RWr1`mFeorP1z#K~xrZ{k-a(<|BzEvTsdBDV{jjp#(N-j6WA)D$j z5w^ou%NBp36ig^0 zH|zDf=Du!PKyu&%?9v-0D~c{!rXDZ%*TSJpy^s|SGRwf+m!yEIS6Ly)>M4S*Wg8(^ z_7u*`^+xKrDG{jGKI=*|4(Bxq5Z;PNBhe6UwG7!~%1ui;3@d{$V)V73Tfor7Sa|6N zTepn1E`Q_btXXbnf^vgad_=Hcq-OA=Qi|uW8pV)ZDB`k33k&@><>-jBjY|TyFpz~f ze8&vY5^-HY;c36Y;52B!(5(Pty|^wiKZEVNKl+LN%u5QA4lcvNiPf;UzPmiz7_;-&K9qJM?c?l{uD_ILCWg9 zvmxTio|5{*T(4Pfl|yYbVkLrT@t^0_My}DXBQV%$KvQo%4xW#t3b>zU(*jSSKhD8r zYKRypl30VLB^{YFf!7aLF@;Z4Cf?JIeF-HakVa=1jQ`xbX^ zo`DL)hUvcWtfAlVL^zhki}G8qUXFIckxIgc6YTe32btepkCqC&%@qi4n@I<~@$#%` zqqdvQjHZoX?uvYu^j*aJ_}wX^4yI1mqkQd3Af!PcQu}kw^jyKY|2A${oejrAPi4q0 z{S_B`=nq`5DJJLzYD_@MFvjgO)IzBEwa~x%-}HqbwyZiSE}|6wudvxO#WHsj-yj(< zt@yn0WA$nElrH)q_*zu0<*x!Bb;yM(2V~)}BGRd{r7W{tTlhy1<4!%gUJBqr`L-*J zfh9*1c_pOI>~PT~91J#YI!%6#(%AD4Q>R##v^I!?M=hF$kdT(IqUR0%WJQcS1bcyW z+z~8vfmk46P5+GZqc3{LxOLTtPDV5f{N~k>=tpEv9$}VywhsG{@!9`bSOkwrPBn&@bQuTI@*?Y1U6wk)H_Q@#05 zuM)UjjcAnUrXoV_BycGtW$~;N1+sY9XTx3c?XuuxLA!ysy^#(PI?X)6o4_jf3C^ZN zoNU{V*@-rHj3aS~mFwm74~(IkD6$U1CC1^9&NfdIYHU`W~l1opnARO9B8p`K#tYyS6G6Exrf7TS*&zR7MTk*gX-n zi{Hd`Q_&r0I_M(OueU{wk6p}Vcz$tYz01C-R=d@B%o(-2ZV>j+D*QIYctY55%l+uk zDI0Kd#X+pL`spM7GgCwN-6a`)t~1q~@LX}cC>7(I+-+k)eUH;q+Avf9W%tWpp60MA z55M!&#+*kL3h}OoZq5vyNrpAibItR}3llA$4Mxf#)HARr5AqdfWO#-exwt!h ze!&#n(==!f4=#t5TVL?PYA_f2mc&&|{<`Rj(d!L)JY2-%)e}$#&S3q@x(fzHwYbv3 zF@L%rcfXB!Mn*iXX-sOXTP-kxbE4KjI7DJk*NC{GyXt8C{eGKwfZp5RiP>P<1D&h^P9dac|D! znlSbGJa|cC$>T3>{Lf##YCqyJbiMWYG`#A70sj3CO$R%7Q>~32Unsal%&KjrD^O#auQcQy<`6X0&1JtGB8!`(;JbAD2dl<)S(!NSxJ}3XK#jyYR{(y(Eo!y;KG?zvGH0F7z?9&cSAmnpKy~gpY8Q=;&_%~~R*zI_M zGDM)!1YJHF_ro97kh^a>XAd$`xKYddRkdX=ZDT2M(WL^r7UZ`@-9xa0BOspMCyeePsC@3m5}%^){Sn1>>s010 zJL+>{w#|9^A@oLKr>p8UYOFP}L?M(A2vbkp6Oe1aE=2};O?JYtC2!^~d3{FcGtB)_ zDANczsP&h=fo`TlgSj^Fw92Gd99a<8-M`KY56bE&#iW_sWpCiw*@vYTfJkgw5FbKW zhEdUW@tKuETFoWlZRX^;6;R$3U)r(*sB*a+%Bw?M~{_{Bmdf460n3`{LT4BDrZY6Y#xx zusBzcBD^fP-Q)MYT*mhfsvToN9A(EM2)rz5dhb&YQigXYDa}k}=NYpxU^&PJHuEuV zP&L!s%~ywOhS~em^KaX=*>2nDS}HtzwglKz$k!!4llEZLN60fAJ8vqCm#(q9`LQO7 z7vnaeKuWhbezNmXye)bnU?t)AO=dw%tgq!qsx4e{bVSZ{uZz2GkGF_1dc?N}R>}8O z#OlfCT+BHxpCBd_)8u0(MiS@~4TH!r<(iFd%L8MwmaZ_Yo@?=-Y5Glt3ef zvJl4}CiOrd$3fXAok}s3U3IyT0Ymhd`>;_SM?b~62ig6*@(>hO*XE88=vAHI`&R8B!oZ#%2UkLg+whP8Dh~Gv}!E+Ay=9 zj*_A2z9AGC_!L<7?{$9vjE?Mbb~0z!$H^g)>YV{hxH3b_Yr=v^wG6R{g=YuFEwfRhYL1&+r5| zY6t9YQa0N(Ixh?VZ~NW-A+&e9)SRZGfkVojkQu@mtRtUMCrcBsQelgup+GM62Mzup z^Nh-Ze>F(4$Cj8K5xBqrP5F@bLBnjRA@38HY7xG)(5InPO`6RbVwm?L&Ok?Q*_H0rokp=k?zp_uHTMg}gH+QX#W) z*093rGrd3$`^(VP`Qc^RU|z)+tbfn!976gB+d4F)n-d8n&F4d%zg?*yV&&gmZqK*0 z-d%U_Crpp|Wrni}4!7>5ed0N}-4?=t-Qfner79x$(+W_FzYZ(-dVM{LgKVtd#a(+I z2?p4sH@(7e6?u3E#&?}jXm3)_2xJvZ(fFO9n?qqZLt498{cQ5-Bbw9nLbf!(P;Aqi zS)r9|vZI)7{e?UbK=SP;SJBsiU61f}qqDV=ab8>i<>cduooK3?IOB%D;8ri}(hQE_ z2Ej+sGxHP!`)t;;5?{+osCyskEK%vYETI5BB+`z7@!jfrrqS2bUyML%k$?@F=@yd`cbx^^}I8eI8!ZnJ!lM{6!jI(zW? zJU0YAN(wS?SQ&j9bjaaIAu-LV5Rv)~GtYV5lUy2RPE6f&$Qw(gN~3+M=#yxjK)pt1 zmj@u($?MI6S-cr*x5o&&OP4_c!(J`8ts*Z%E#B1eNC99T7p)1U1nMPx9WI6;{k^a9 z($MTVhOUI6??bIbu?e>AET*pb&gLt@=)?oDy8I410E@}2y`Sqis(NnWMz_!(*KA3+ z+;!H}1b*Xv)0dr(PX^=(57Tg%MC2*?CKB1qvX;@layg+qruJ)XG6r5;viWq|ZLR^p zZi0?!=s~otF@_Hd*!`)#^S_IC?@*KZuO`}C8LqA{pWX(hl6VU_sG4Z#L%#Im7{^?_ z&P~S1G(8;3ploru;4-yfCukhMJA$hhvCy|zm25Q-AF2uVK@B?QkO@PKze{eg@y?P^ zmyZ<@2vTxVQbfcZF@0_g{=z15C7I*FPXXy^<9+3cu&1VD8YKLy+r!d^Kd&ilL{VKO z8hBPN0=vQf$z6%vPu0Oct-Op`Hi9d0b|=H0ALf$|kPIDpv>qb4d!rk> zZPf;7cU`~x;q{{Izlj*?{)fZ_%vJT%ueCdq-By#*rx83-stZCY-`{d$MbaR&7?kT| zuJTlGwtOjl{zm1}6Y`-=v2zG4gJ+^$LTRcj`U4~Ky?+- z?o*`dpuN=t-V4J*vfEJ`SDPstlLVMANUo01F$rj*x7VLY%ZwV4UAu%o1+XJ(XtMpp zuSOfk{VtyC#&xtO5BrPL79r?YT@i*j*w}NpHy?Uc&9OE91U*&*Jrv<&bGkw$Rd+>{ zdfX@6T>S$o-^CN9h5DZt=qG|FyOIWQ<|{*`Vb=DD z77LO<;bvC;iajsUU!{r!C(y>8E@_ce8Do;hmh=Y$R6R2fwxE5_?2qw&8%5TCn6ulS zgj1w#>19pCsQcO%4&1*IPgWIO2npdOMq_?keOQ<2NMF_ASEH`-j#mx*oy+@ zaGJKDAS!vT&&9-UEkET~ykHcyV>+K(Wkee^etp`Xqj&}h@N|Xp_5Yhvcc&2b>a;Xl z;@~n&N8u<#$ zL6G_D6e=wzm0&w|uE1tLdOQ>3-#01k4^F<__8HA)!8PykSXog#ecHc`(#g>)5%R9R z+f4rvdHT&5@zx{^!K#WYFR4&eey}K$m5S|;7{MT*Ju1e%`|*|g1qjKD*Z-}HzyumX zh9U^S^w51$jalp>(N@}o?(MNEQ@w9Ud23jb8Ot!XIS|`d=h^g!VA81@bqeOlVCY@% z7RZYSEaN#I7dQ8kG2Us{bIBdNdzICjdP~Bhnd3o&dl%KD$$qdH`;bSw6he-0LdMaX zNXKB3$3U&;V@>j6Jj_J&_ZgHR7F8}l_mEp`%?H%lIqxGiJg~4EvvK$_nIq_LuXAzP z@(ww_7a=zd9X9A}O3X2Pzno)*KS3AcZ2}?|#P;XPK*AP#h8p}8FAvu+F;nVX{1R|< zm-sw%(PLA2gF;xIcO4|0e-UZRCr#(G4tGACz8$TJz`T*)FBv40io|PuPEu)&X5hUD*y@7h%9C)jX#7ml(ev2Rvo=7~f@uY%4tpX7gkQIS<1~&=5zcFu+i+y(-QnY=jRLJ%dvD>{2F;>WFw_>4p7DZ<7EA$YHHyhw!L;J$NsuT2^G$l z3>CVydO~s^1F%n=WK`l%W@AMw2%;FG@uJ$U1Vz0zIOm{Pye3dk4_M2b<}rtvAr#3{Zk?kDY9xK{=> zUGE(J46~Fk{OT3U&p`vKAtn*6F^m6284cQq?UP?WBb02ry5F*lU}8dVY;?GiMwMFs zkYkO|sVjwI*6*1(`=y`!#%f^Wu(xCM{q% z_MO((UC`88g`l5Cro)d~g2|%gkTX%^;A25@VLvQ(x25G;(b6aPJBk!uOV+JjDojw4 zt5=pr=?qchT(__a%9cf%e+9n7m&`lHGJ#JgQB)O%Sn@zz{;NX4Hkgr$OT~24LA-Eb zZUorKy)b9yMYXv91*7v)8xHgDD@DwEccCh1{jq6aWusNwU9{-EY6P~9&MwiYl9wOE z^jb7#ocz<-jMi9JMppVF)NOFG@h3u`JFO`D3{cXmQTZo{OC*{)l4(S@A6>Sg3r1^} zs)hbYouwxukklhvruXd85I(6j4aH1iSqP*;Dv1lDIn!q0Kytj@#J>5?>p)%pUf`&q zyHiJ9yv=LESrl-@DkwO$?0mw#pjo6bIn-0`dX{)iTU_O{X-nNzsk>}FdLFVAct%*Z z+D643ON%eB7P!8&gy@F3gXDZQn6CuUmLl{fSjgEKH09% zLi`}sJ0E>h^=to()lN!7kDKQqcMrsaS81@>mDTuK&w z3Cfi!h>noY^tQ(QhDciv{9v#7?kY3Y;f~Rfmul|yN6ZCPo*%ZU!KD3h#(WA%khiIE z1sO~bhi@yyeZ-g^oxV2=*&{wm>q;%6gDf~S#2ncp1fK7S$cEC+rQ-F#LLk9Srd?7Zo+Fkcg-x1aAN9c z+S%Q|K6YD?@E*>5;Elwuls6%lcjY|uRMpZzmw&U*mP}9RgtgacfMB?sG?lLqM5BD@ z(Y1!8DpOuaykW5|?oPV!`|6DyQXplBVB6e>0*)8Qe(LIY8KVA%$LXfJ!S8AE1MZ!f z1m{J%&)zXipZH5`d}1c28mvQ)y5sc#tNaxYqP816{Q&AB;t}t)naq-^vOK5ab?ITv zc+&mzW7t5mcC~sD&!A}>50CaIG*(o6t9~Pr=yzV6ZXA|ppiBfEyx`dF6B*6JiP!+W z__$#nUd!H}8$y#hM!?G4J3r|O*?N(qVQsrPSqz(5=O=93?%%fu33!Dm z6W-S|6vt@{b*p#_MNOJS`8HGeIL~B_9FN-XD(DGK&|tUY$B@1EWDftXQhpS}#-9(X zFP5g=9Gs#*fn@+2Fg`zsf6eruj?YY$M_oJ3v6|iLO3lvO2yqB?(R?Yz=DT;M$k9*l zBlG7Nhfcra%*Uyh#6jQtUTOcmT-168Uz<|sDjV~XG_s+loI_h`@^2OQ(>>R2pmh&l z^AH8N$yyyc;mq>p=-U<-yPANgzip2pANk5=xr$3YAnq0V>4ti4i~rDN}+6y$4) z;{+YuWhAxTgzrC`Wl(I(=lVoWPrPZV-m7e~f5h^G9wWx}>%oe>0$WZ~6d^v(;;h~6 zuvz{%gY!?!ORDqo^=c#YVi9$5iMcpdS@zCuyH!#2)Bn?JL1HjhTis}NCA~S6Ataqh zeeoOwAZojtcr!Gj0^}eyjULVVHb-lXjXx@q6h{P9kdLXEQfpR9xb1LTLF z2wjLL8|68RGCcJ?B`$0DtBidmmPC;p&kmwnm!c<^;i{ROuGf@Z_UhWIJ4R{k=4{Fg zK0d1Nqvcv+CJ-?hMSeOuB+ko$Xwv>qDCA!rmMBS=a%?%T1H_?Q2(t$SgC`prTvXSm z&5e*xd@(~aG)&KFIY7y`Vo9+z^%tKh1c*4=mQijRel87LA=nB9M!psG%EyI2>~@Cd zzdD$*c$ubipf)2cq_bNJrJfl1L$L{tr#J0hlKN8+VnESUFgEpC{~q_}hIC2!+`9oq z8*4oW9cn;wz!q7+3YFk@$kG0LByiwOo{rObXq|l1HSGlbpeC6ZhL%yjB4tMNf)8cp zg zDg!zjZI)aV565^-hR2MwqG_3FCr(LHpE(;=)a+872gUM_0hkGUID;O6G-++hT*!aQ z`{#WI<7o#UB+13=6z;J9Cd`H=z4&Ry;K54WEB7dL*qEc4i#$q>A9BH_^(g52VNrkz zKxPd)|C4AL=N;$x#`LuYK7>7 zxar$54_%hl{-G8BL64IBYWcC4esDcJA>;_d_)Roj z5dUvPBzGtAs^}R33%Ro7sIHBU-JDUH_#ZEQLt9I1pEeJ;*!YRkT}!*J(y*WwXSNKy zPS2pz63kFhp-bbcl<8;FlbD=f%x(XIcu&hvyU0*b5R-r|ye$mfkq-QPcT6{x^MiQ} zuvaWPuItph4STN_N4Gf_sS2G#L*(ZAp8a96br0a#+670B_Tb8=nFl}}QafE?NA3qX zer(+TymPKAAg6l&t#T2xy>=l^K|CeB%*wF3K5MTt@yP~Z=e+6ZO~58-ibx&vr@WCk zBQuNKzC}iJIk%NC1zu{a6lWu-3OF4QYnM*W4*K#?rrnJJZoHr@e797h_!A)%h^UhM~M>TZ#Slb{{e~dXAg2YZ`>= zbHWydP~iO;L!%bu0h$EfcJB>axr4;K1~%m`^SSUY{>`Q~a__2wuGyDb=~$5M0}_>r zRayadY_7y=r6}&6W;NYk2+IHDjR$LgwD(17z4;aPy57QeGVR6l{UAqGsTU7tmw;u> zIYh6=r?+st1SL-i!YDWD>=RWu*wE-^bbf-?hmbwJEa4ICN%;YHoKmR&Oh|X3%xIs) z;*l9qbew~Rs1^TFNzR1-R(UOIES)buXWi;ZoQQFrc;foQemlZ=#LT$mDqTh@wzjnd z0$P8pF%({Pq(mLitbI44Kb67TNJc>_T-Y*g6)`&#KH>BjDxj)i2M?go*yI%}#^awE zQt>D7IiIP8+8*5GR$s0D#rc(&>i5;2+`(sMn7HT@^82DEV}BVc{t+S3y!gYptkOmX zr(`lUL-k+PE(G3ZMrx>Qg;@-gvXm-QC41$*ye}gWo;AKuJ$Zj3*3y;^T8Q@>3({JAcK#ZXa<*8a3IfslO(@v z2hrAXz&xJol6aTFd7XO9?ipVl;Kf|wG*8QX2TuTLe=(l?(*!ag20BAwHE(+KaCWvF z{Pb=9;zAwd)BE^B-U63)s!)9G8*O7xZ^6D_4xSo~3~5DI`?_}3=GViMpR5OEA6Kz} zh4)IvS!6e>bPXz>gH>M2Q1I@ukS z^I9p2+i$+@+)gWmbwmJD?Kb?;tDY_k$@yj`1HP;0?q{!2GsYed>aijhI|GTD*13foxKuei^-^W_ z%ycQ)jsmNwLO)!HaohE@*WZ^eKHO_9nJBo zjSk9d`f&~k3GL<89GHBsR`bZY6lXp^{&QvcTfr_NN4h1B>P^Iq#iy30OY(Y3;7~nV zHySN6hDNyVZKy6Jj+T#_z7uJ|W$6!oO=U0F!-CrqF4;I8@EG@VerxkztJD5u)hTCK zxM};m3m5ly7Ml4`)WW@Ni-!PoS70^uzwP-yuq>hn74?Qn!R5;*ud1ZpG#&{F1qUyt z8Aidjy{wGe=4AsdApYsTc2QRoAH!UZ#4P*Uq~8sW9ECbpJBs-39GNT$42CMwQKZHf z8VxNx_|b^}J~LwwQcl3kEE3UnO)W%S?QIwIT)p73*FGyw3N_hx_pjo<6B zbyeyMpq0oY>z5>Ulj*3#U$Hm0kO>8Um~$#JN^|t&K0i%Y2OEQ(d|n{QfGM(WdP<^ZYz-TzV-^ zgaI=?#(xo7ycQb>c9@(ff98@_IVBbXbI=l4us0CjPLj{a_*yrXrBveZg4%oR&Jx%x z66N`p;L-z>g9eU>wj%hVj+6b4mdlS0pl2zLO80`0w@eN|K>Jf^xY!l>P zO(QGJ#=@dH4qu7E1kOV{{-o{?bQB#QB`pJICAu7zh=7r6O(tqWKGZy{c5O09f6F$U ze1`B=x{lE@?Jy?(944r4c#wTs@`Z$sh=<_cM!8A6U;q*f7DoDph}E1c0%DNv@lnzg zL;h^Mx|$ci5;u$YY}fg_Vw$l@HB%xv56{8pHuV~MDyU`tr~aC!t@YA(?yt6Tza~j; zIZ>G{6!RgA!(lYH>%{vUmNk2qW(dCFPWRn&+D%;acW+hFMBpj^i_#IYqd1QSUhN@^ z+1pKS{uXcqiDO1bn_T-)?qy+|Vs0$7k`%C5EW{4GKa`7<%pW^4N!;_a&6PC&IWee+ zAnzO=K=KI}H**8W?z^Kj_9OJ~2@|)rq5)_G0YJ4BeuqDH=yZIeiZl)h*V?;|=G~9} z?&H63=ID_ci6v2r0oLqC=hdQ1o|+WwZ}D;4>@6WjF?QWGw|cU_#2@g@C)ZG`LNxJ$ zE~z%@Wz5z+O-ZVsdXrwH@DP*So}e4-vx$1teAu7d_j&#B?dXD0{XfR&t*j@eH<@hJ zh^=yplN!cX>ftAkuQ!jXcD;5o-U$7oD7G#)0985A*NJypg_pZq+=DbZ2?{M45!EV+ zhkJH>>D;wM-F$bZly;UgU$eR0G*^b4x$iHnG^V;uooC~CkXT!%Ff@4_7M&tK6I~0o zTF!{EqH*tT7JI9q+HNn?w9tSd8jo2d^vBgYac)RT9M8Vk2;22*(l^ZRsn2&l6CO5d z4h@})viC&C>>TK~i4oz_P4D5j8R9n1>AmO^2YXq-?0rPuciR!+(b_U|ngK8Spy1(GIi8;J)Dk7XQ&<>p!uFE@5;JwbG&FSa zV-G=8rv4#p)Z$(WU%h@7u}ydvp#*@uZ1lISr z?Egs>5bJR1P1lodUP$H_)J^4iQg3SxF-;!({JV-Ts)NCP(zGgT81sG$BOdmyeU~O@ zJsx(h1%CSOqurvj{YlPL(=L`0C}Y&IpsBG;G4zI0DKy}RlYN0-Ro=IzD%`Z#Ngg;< zX`hCKf7%Y)-42CCjUWvQCn^05DMxbu9i9vPnqqtIryC|01JT1T=w zm&~ZC;qQZz(;`U_0!W+k!cZFuc}aL>q~bQXxVT1kt3B>?|CV&u9-VD8gw=Bo+;qk^ zz4;~cKW#30LfGMs{F5ewgj6gem=xt``EUVB*? zA&JGnVeX>%Z6PQwP_O8E+N;qFbVLPIR| z+G*SK>n&0X;GDBBAznXlQ|(ICRxSJqq}#nSZj@UwE%|^xI%D%F1mYSgr1aQOS8d&Y zuaxdGrmx)?{9IK|Bh-erqehMgOwj8pnWs9Rs(nf{{e;x(UQe(7Nu zwEB>>Y_*BV-bpeFnTP^AzJEjy(C@IU|D4uHa@${U zUB^hPh+w|LxCuhy5;IWlq%I&E6thSr98gH^rq&0!TG-ylIFf75A-U(CPO~0F1VblR zxxP6e?puV%%m0#Zk?6?1q>XPeDjX*#RCEQ#5~#)gI1_>R(r%Q=GPf6|w19k9O!mUb z_mAy?I}AEPN8n~Edm##wPo@mo4v#<(5;ecnE++1@^-Z@9tQUwEEr8kBlN$k?_u&O; z!I$LP-QDT+sv+{~@9>YSG@uiit!Gs*$^x@Mv1q3e4Yz?j00l!7%`@OEF>q)oV%*5* zFY@io%tvzZ^Ot*ipVWSLWL9>6%{B>eO>p+c;-+<|#4ptuN1d(gxu1Uj_VWr=@SE1O zC6C{Nh%0+99?Ofzt_?2LSFl=#8{1%FA+M0>c&{?6{OLIEo5y{Xb{c<>sJ|+WRR_VC-D#CHx*sqZTJiGl;aeN#E+jU zehs8LF)%}6GgyK;(%9BhqQ3-g3isvW{>)t6?kkicrw;i?=LdhhESu3b+ zY3-L-#wcH~ob!SdRe#GdOk8P4uWl8OSZ2i0tzP!aaPAas_6aU%Sy=vY8P9tlV(K*q z552Cko5c_ff>ojDo-+Z)QoVJA$OvO_>?1u$+jaT490v_&{y%PqP?8*~PT05XomO>6 zn4dMpctkJp`8|~1Le#bmYy^fiGQ|S%vz~9A&bU`*!l@;(esK$-#_Co=bIX>BGlgyV zZ(Nmo4ulRNzx391BjC;w4(nG5zbm7e=(vFh8z|bMK*#q#{M{wGzB3Hw>`0cccm~#& zr0&QA@jd~Ixl9}0a_yS(I$?7Mo`$In{g^cu_hGNDnLF>eszGnUmn2>TguG~b=zb`X z`s1a5R8ryuY42CH*suAeKVV_zSNjBU=>5C!^=01Aoh$g$L+@F!l?BCuKS{-_CWjL* za5ibKviX!h&77+u~|op#|=w&O%C4+u+L zWwh%-!jO2%`~LqIlEq@&AmwT1wTG$vb#{#0E?q1+KKT1;S;5uLdAXVjpGFLS7=3xE z{~CWNY5h-=TZrIHp2cP%O_l4cE>og&!Svhd?OMFeEb)7+DKS~p?P1X*lg^doc~8Fh z$C!s}J$`&z$uFRJNPbtupvT)yw4pw!qy3HLV?ov6vB(!wc1zZNA?Mgjt-hTjZnr=@ z?gfzJAu%T$$H}0Ohn+nffyKV^IR^dfMTDV}Po(n^fd~QNyC}W?=LJyxMT~96aA_wC z#1KI0BD3V{{`K=srG7I$$VYH=-A_YJ@0&Nsq=n$TdspF@<#MCsy#0TUH^0ulRb-sm zlD`QYl-2(TeHp1o)_DHQ&!2l`zt=wOo%2Vj#MzxTD6sCO0$IE_|GHXAAAze?y;p{E zHRztLL~%~uNg~~hIb_JiXX<-@0Yeq1T_f_#xa>l1hm*Q>5wj126XRg|>Xf-Hx0 zAaOJvhY@M-yfrn=(p`ZK72QsRuHbmPKcgme!BK&dnI484?PPf4F_mrcfde8vI?3Y^ zJ#QuL)e#|d9P+LyNc99Xagh6JtfQtAnH(N)!0NVp{v$Pl!LeKl6WF@5MAeB41pS5z z3m?qHN~Z@P9H-eCzLlKQqo13LeF~oH>fp^Gm)N}PKT8PdK;u|+{p9T5wZ$v`hW6oM zwkl+uk99%_zgHU#2E;^%nZEts;zcfp0V_ovJ0X*j-x>?-bzR`T*C*z8Uf&48^BQtn zsw2W25$P?h>_jJ!gpp?*&wM%lVy#K>*)J)R!L-)>be?M01TBWlEm}qr#@hC@_HwD& ziNJaAW?(~c6e1D=$9aS$-^wfAy(Y8H=ACZ7+JZ;v_6vMMuzL8W zZ#$=N-)mreSpE1t&!%bpKyYYS7!$Wju%2&KDh6jjFuqxwwU?GHuqZW2wSK!d9z`r%RYgg9%~5 ze(`Z0=&lw^>MzZw=RR}>bu($1n&3PKL52M8el?zjE~%Hy!WUXkyX6xkqm9T=@-2#t zcCG4^Tl8vE`I7$G@FDgU{b#IyUM8dy?c^^v_~4`|7nD{;(NUbp3ov zQdJ#?vlP1DzL+SB%@~=$$QYI&JCd9j$rzbPhZ3pv_H^951xI+v931$)m2>pBb!oZJ z^X=H`a=W1p=tp_|M5s3i%r@B`IEjEu?0(ncT`>8OCR@xjZ8qnW)h@O4{Sxd~T#u|C zv@)NZfNj)Po6h4B#P-C1$akQcoq51Eb-}I zj0d#APdGUZJ5pm>Zse3F%wM@SJbJGlN|RA&9=yI!EoO-WvMfZ1?AN$Kd!kd;Zq$#;}hgj7K%?T_y23PswWQAkcqI)87*DuAg^!VBcbXJbuL)jUPl1q;Y3KPjMpE zMi?mABIZ*$$hH9~%~4Z2sSIzK5hfSu(n*K}|{W{i*-@EFOgvWG3m zc3o>%H{_P*>KkGpzA^rf&^osKTF_VRJjFsDeHfn4F?ZK^<9fu8;|JEH$G_jyyQ0Xl zQBtL!z@?{iS{Ex5D_wE`zRfzey1BKmcEv!C@y3uZ8YZpu(tOAg%eG&4KV6kw)lI$f z`tI?=7yD^EZnVx9G)u!y*xLccO3( zXTP_lJINoGcq5UAdVkX!Wj6`&x=TGea_cL$GX@4n1ia2Vj#WPtVMxsQ0?zn=ICsd% zjMP21ssw}8#M-<}t&Eg%H&QaE3>K7c`muu{p&fpY;{^JC1W#?g3fN>Jo+C%Fl*-g_ zPwP<*7b>&Ji8bR*e-9l2ml^9I$-oZ2oTkgh+dS4ztSiPC_J$B!V_pg?#JR>%7w=n` zwy4%x5pScd%g_`>2CL3M^0^S@E-M%d;+WbIV}|J4P1kDe{X3QigyCoA|7`FKlAx~ z*a=Z^Ivz9)q8mPc0Xt9VNEj;-zn6`t|sJx*mQO_j0atobVlpab1Fdl2ChEMqOYm4oEs7d3 zKOtBU@T!TY;dtKMcu9W<&5<+*!%0XyxjHmx?Ast!HRlH^f8w=+bop_@s`9C8G}e|j zm91cjv|dvB;bu>8o-dnSPiMKP%UP^F9Byqxp;_6);#-064*Ca-1Kkb0Wb+Q#kYbUbw1 zr653=D>}ZH2uihxKloKtt9tiPIptf{paQrQo7~X1%!){7LJQ`YBMmW!H;6YBU4rBj zB}(@Aps7X--PrUA$)Pah?z!z79r&}*``m{D?XGor9N_sfeT z4M`ElK-&8*_NJmteu~4t`S5wV=XgnvRdDS>VV z$FsvQ?6YG|zggM!A|*$=rk=59mkbpD4_$l9t?a{?pp{2**6+v)ImA$8aObs=7%BP# zfg3!_W7l^vn{I&Ba9Cm?5LtWR;@kTSNt>EkqK3O~Lg{RnhxUe~4X>c(rTc{9%gx$k zS3_!paBI35etQdB@jgyqKGip!Nqmrjb9^dc1qXqD9(A_hz5=-Em>nE&dph0jq=WH-DJ*OXCi;*r<2$6n9vcNiN0RV_DB=Os3s_8W3+2h7!>X=HI7?vQz{ZI zSv}&mHqtblq}d}#i4iPrN4pc;jFoK~fM){n77U)X!H~|JhU6{d@a^Zb4IQs6gBP<# zo=h`doW4`d>0Xmm3))3B_S|O5mG-h4*yC@?oPA9dSnPcIt{K#+tjCzT9Pm+D`ObMn zWjOQq@95Ihn+%@LKXO(zAK)_22k9zmYJG^3BhJ*40grS&RSXA#@8;r2+eK%w9y6)j zQQ`Ewy+}&+V#yZ6KP;vb4gO@dwd3P|}l5WUkL8a3(3wRyuu^zFfZyHAT zd^Mrfs*t5U>6$sk*D6IC)H3js>Cwcs?eY56TTKpRCimEvUnp(bu!?P8bbE>KSZ^9F znuZ;fd2uT=L~`4jhKA7T@fK+viMexDJm26oZT-NRZq`;-9zv&T=XV55-`PRJicA%6 zj|3$zw_3?1+o)V&Cj=hnio5CklY~n)g`CZ!9C^7HeB7LDgXnhIN>LYrZRcx1zdbk2 z*L-Xk!&m()m3DeT&qjJyN21)^q_|2JgZwePWvrL8_ni15Cce@|5#<9or$Ju`Y$uc` z0j)*8&ItmVv~)Gp{(e^pWjaF`{oYp^a2l$M3DhFRxi7s zrb=B756o}rmX7s*y~AwzDo2};eLK3KX9CS11~3fyeKg)R_CHs&6^_uS>wxVj`^I_|Wg4km1JC#^D-}_IM9OPnSI4?LiZY6+KP9%%?fC@4E6OqSt+JFGbTnV?Xg8vh-%^M<-9JvfJ#W zwb_02VMV?fOx^EfSb4hO*`6V$q0%5$fTsz!vu!iv3>k!0DgBT_vE|De6Ws0Lo4i=c za?*ZT1RLf#?Z(l3!l7u6*!$QRTeAv0c51NPvu~+s-ZK_}xNf@`I`S_LZ;sv2aD4A% zAX8LSe6847W~BGQAE{OJu;S0kAiP->jj=8|$eaaYaI!WVDZyn5+8|J{kiweZ4 z>dcQQT@&7JY4rD(;``#n?E)$WY7k~2p?UqQ zN|R1xf~RX~uYHM^rVU~j$&~{tErZRwyNwoNCJ)lL*}yny6=psysSPl#aZ5Nkr)soNsdD1ZDW17?3NEvVOn={pzxL zpQ0aY0vNYpOZ3( zaG#0DGLZvZjvef6sJaX#%85RQ*TxkD?d8#xH4#}}?J}Qpx9+{wKt|B_zTpNCE;epj zwxhX8QGj?+2%h&zRptbQwI(01&9qxRn;GfF{{Luu$N0LRsBy4S)7VMVxM^(LY;4=M zb(5xzZ6}TG#Q+ZSu4r9F22tP>%YmC7^?QP;H=Y6IWlGV8IH)@^}qO0V8oku1(7 z2gah-NJ|1$^&%*cg;kSPe)ZafL3Cnu6)*Y%j zCYC}M$)IVy;}5~)!lu~Mzn!Y05oU&DWhDKJvrSAvtT-&Ee|y@@`p*o&^v8B>DThiy?7z*?n zp+t>S7mN)flV?eJfmV{i0?o$e>Jnc2Xv!3i7%$XsWWdLH6SkT6iDBBrwV%14Jg`yM zuW^2Y@v@8=)$e_R-au(#K^vkESgqB@gT=!=I=#e&Qt}FFdcD@<@%@Nhs@{kTgFz#L z@o6>mBX<{R_T$xw;fB}^a(1ds`~B``3J%D!=1cB|$pdwxOz}R0#%)NRCJ2@l7ec?Q zWAm+_SG~SMEEkFwsdTCD{j8n&TwRGEtK5@nf|jfYzdSOFV!f4(s(W?5)tS7t?!vf2 zE_b>#g2kG{@Vs>UDV@&UcW4L)YBD6E+1>W?eAWjBpmPhCa!@7tSz2w0TRFT&*%Iae z^C4yeF%t!&ZrE1a$^oF$`r`5s+4?!r4`sPe;i772%g9z7=<8(JJi^S=9eJWDw^Rnn zU2^4kkFXaGRMDB@Za!9kt$J0VrY~bE^;lF1!ZM&@YYCsnc4E$V_UqZdxi-74?If47 z;LT-bdJ69u){Zi!e%<}b0s8d@>?tY8&T}Z>r_0kiKu4JmDNnEa2Rd0~_|OwnwB=>FoWK z_;Pi|G#vZ=J-f;3VskMT?8l@{LbU0gJ*LEJz3?d)l8TLYijC)f=0iM-AaV4f<3w=s z#LykosT^xHc%HKkGKNSWWl00<+HtbMsQK78=__eo;fYxduXQ%QqtG3eproqj;KN!m zM-2y7_rwDrAb#vL)LmCxw;mJ@+AzJ=`);ps=RJz8nIPLBOx53p8znMYzg>9!y&Y_F zs(S7hnUGOczg$!~>EumTBk^a3cqzyawo2}G)A~{w>a3GIYeM~cRQ4OS%joUk)(vR#c z9uF&N_!e-VO|VIW9)D^8PU^<9uv^b01m0&@BHq*7f8ATEXP7Nwi+$Nobi(L`OG}CO zdH#x0r$V;)>9aJ^oRjZ-UP|m(v%2!u7*5#7?fxU~0$<5R!Tj@Had8(K$d1RK2yn>m z^5lWnB8uU_CL}G z1QHA$l?r(7J7iA)+;&jOzy}Yj!;d`u*hYgJKdDmIK-T71R9ziTV(cGd_i(WiN{65c z8lyl<;9t1@DBTZ3mI1Yl;sw*ps_7QsE}uA$g- z8d*ds{f-SVp73!3S0l$Th?dG#pSQ@GMK*Z)mTXVI8py{UJdaa3^r43E<58-kMGhtG zG27T$_8~I-NRFB#R9b08q??eF8qv4xeIwb;+%-P^*~5lB>OfPYFW`sKv9U-kR4&wY zQ0cQ=L}SoUbMv@zjJIACl!fSD-^>DnvFsIP72;$zQ$D;LtDGA7?>3x8O|`ZMu@w_e zYXG}ts-op?yHl2eLMy(*1%&u^#SvdA?1*2cI}?r)uXHJ2MJd?#m&8Bht!B&NIy^nd zam{%gii?Z_FVnxTd5EA^^&4@+c2tSMKM^t&e{lqmq77bb8HnHxFvZ_FiZGowIE?(H z(+m>_!N$Fck3M-~V37001<~+ytHF#y?)05tqL1*+u!wg+w&Y~%U6Wd5lYcB5Vn1AL zM0l8KF&F`lW_bvEKPcP#Oc7VsS;WB8ZHpqTOS_0@q=dUU-Ah3aH9{m!=NhTaLQA%g=bud59~OIPF$du+Z?ifnh1L7(`62RtUZuTDhU zU#G^i;>sgIHhNSO@i5>}k~UeeOKIHhuGD`vh1B4lJ65R7y@-6;TK)N6y|s^B7#Gj% zL9%`{HJ+1!LMPd-tVb5Kj7SR*>gFBzv1U6hwful6UixaKhRp?IFol3YT>hoDsIwB95MsTQZOZ zdQpAyD?*&X#l$`M5uRNecp5@;^dP=3&je{pPalkA!5g}9-Odj9lN?A@l_t1J0Vy)> z^BOL1(I&>S+`L%>aPf?gAp3?)q|St1)1h6~GSrtVXI*Cd5$vYo?j1|Ulkjo9xHHAM z%_6YxzbW(2+>TU8j@I*}NDn(4Ax*;M5*mJ3rZ9|x=`q3o=F|KujB2@Gzq4n!`cAz2 z>HgAo73@{e=@coV+Y~3>rII&w64N?D5yy0v6RkMjQ07u^Pm~%466;f-Ro1=|6t*qs z&8>46!whUJuR6gR{WtS4a`k!SsBVd=r!YgTp|-wtneXgd6`?9wyiA6rj+b(TLD*BS zWub};aPBi71nbLYnx*C~u<%h^p*W<}v(f@egY}xWplaL?0&&=>u)6_|yO*t7^-_CL zi>al0W(@~0LfqeRlq>k1vA!T-9I#_F@HqpCM+TG+R2JBLMnX1jMU4VM5>5DG*hfA$y7~gi0Y7r(=M9DnfKt1I+(lc8EM246*c%}#@-gYY&%U)`B(STqe3at6 z?HJU6bwWU=)(ZQP?iu#le7pOR&clXORzz8*m(o`Tc3JjqCblYQVTiTS$~D;!p~Mr? zsX>9PsxXAv2thicirYoY&u3P^&Pb z!gYIEovZgEV!!$nX5MPgM9uk%otg8C)E~Le zU9z*YS?3=L0-XE5`>`k3+S;;O4M6QhMWa=`GpF@QVt*!7q#73abKm_974mBv-IsDd zNMQ5ky1fp2nd;iPx}2|4(2p*^hOrouBkJee;pqiJOaEP?FF3FwCaeAeW1*rHA3r~G zY2Ae!EG}c)l)?h6aPQ|9YYX3vj|Lfvz;nZY_>gbt0mH+vXc`l?6N`}^UM0nax!mYz zZ+ATt^MSdvQS?SbOAGhqK2Mu~nHhH<^H>7aT{3iIxywQOpGBH1gKNZnX#Xab+@o6j z>m*7%xPOS&LA8GtM}Cz2FU18EUhE)6U~KnWUs->=-kgx}Tj+7hMfv)L^Sx6twky6I zdjPsJfEh{(n1JtT@hUyH`^$$J_EjB(41_p|g#NR2t6D_`6Jh?e2JHcp!58%E`6k9y^#$KcbU)y*vY=EdNdk>2E+S?2|& ziLrm3EbwE9*WgQ~H)iUCBA(aP|IlX)F9Wg->Uo%=hmH13ROD;ZLYRs0SW*m-AgCmG zTUDrFRic&u9Su}QjG#SC!#|e`o&WaDya{d)5zlQpn11lvZcoi@wx)XAQkO2>yKg7I z$AlsKm~x(mtlmyhc`l_fb^#GQT?GO^9Roh;F+ZG$73q z!V~HrR=g4CS^&zMug$3^?5^=ACJ+f@-@rlJm413GJ_RI6+rl7^XaBQTpIk&6inU+i zQ>c2M{!42m{@!NZYNJ(SQGXks|MJYIFZj?diXAKgqBQ?vSS({2S;o+#$dgfx7Rdi$ zhM-|(0=&hGP1T{Zzwax5=KJ(~5N&LKF{dom`X8t=@dVEl#ym|6n}47+3;fTy{xz3M zJcFRfP=F^9}fJzuq0pJDbmfKaaqIXO-yiaf(HuZ8go?)_dB}4UsTB(gJeUo zy!>ALfA(i`4dkxX1H4Fdng5{U z&j6WZ?}w1GVZqVAR}2K3!Gr=lTyrmWHRk`*Qdo&U? zX8t{d0H-%}+>qpN{||b2gDHtD!@^{FQDL6*FS-7IgOdO3>`jgT|NqgPDWX zBKQBE0=*9}{@7OCC)xiV!rC4X*H7bs_iCX38-f3j#$U(I+5-i|^+!OP8W(V=8VN}F zV1y)3SIH%&X~ExPtDQh`!_5md&1s6`r2h-&T_M;+{9n@L@4^2QF~6bk!n_?l4A{)p zKd0~)^#40K3Wn3KXqQNf{};?(5WaysfGB&S#qbUyec*LOq!Lk<|IJXF-^R^S{j)=T{gk_(z-mjT=@_@G0XbB=2I? zzkhinR!k`1=CwR~ST^-%v;X<--|XoGdceTFke(6O3S^}8^OF00llk9+#>IaF8dMSg zS8f0OSraEvGtAW^Q6|3sY_XcuXHT}LX!H)<6N%CGKY#q5l^N`<)*~`|IWZxO0hEJy znxo?4MQ=L@Kz~DXIC`d<)IW390+8|t$r;y1xYlg(Y*+DYi~Zk-(`S!JW|oE4%{+@p z85ADmQfn4*N90=wo|Dbsd|~01sLU+q@1}coJ136y88Kft zr25NT80~h&c~Sv(Qplgv0#b?WB;mD--olCeMAF|TaKLBKNa%|=(uPLqBc+$*7I#HV z8P7J^F7X{Nr$Y67`Bh}cNyfja7HEem^)zm~+n-15c;hic;wIdH#GWnrEz)RJo$h9| ztdj0vYA+%UUw>f4c|#FzG6~}14ixFTfAEz7@u6H_oT4gjzsZiAO&mMJZ~19=J@Tq3 zr}OAM%k3JnCyEMDbdy>5XcOpvhEb4<{#U{$C3;W02ZvY(@+!IuR?Y~^Qf_Xmm8bfc zoh+Io)$aZLizs~rz92FUxcoBV=preu{rlFy`VBn9{iAFc76u(vjIB(+b)_yk^C<5; zu7byvvcjkL4+4OXus)Me0*c^vRb}GQt{g-*GLgRs9)gz7-AA98e0N4(9ujn zbUK_#T(tL3%(G;ui(XgZUW6K|@t`S;=R^RU?(@pM2SrmHfp9ih{+k(X65doDAmMsy z@o!v``Vfk?wU)g@vwjH;I@9|i*^0ShERULsXld|+~s?N4r!|P&vhC2Kcc(FZvE;{?AP8I*sp)$e1Yn(a3ILhC&7}KVU zlCgSIcpnZXq%O;Kg1pclOwY|a-H6FPrG%udspNf-lityKr>IuN1tIML3BF;sMz$PQ ztQj0}ly`bJXQ1Strk%4{!uO9XGl>P4xNKAY5%lAw`|~e}f-lG$drpAb zkoAv*VZ;IEFMIJ=AuGxWGHez5Sx+z#tVB1%ZI z{6XxP6Hw!{9CN#u)c;MgMkH%LA=tmA8XB9`Qv^4lJLLRgkJse-kbdF?UPwOgqvb!q zawm}(-=EAH%DHYbWg^W?)8EC1Jpv&V=^92#O*V1c zV%kOM$Wk-iIV5BjQoG5;c~!GaIXoJ}sjqcA%2~Dps36j)&pQA=C?^zHJ#J`xm{}pI ze(H^{sR(wYQdhg8vi_`eMx^r37p&``xBX@OfXXjW`5(&9=lutnXpMN#uk3@45Nz7l z*Y>23y^MD=9?;T8)OuVKDd(TpD7^CydB12~V|0Zz#|ht&RmbFgUOAk@1<%LkK@Kv{ z6vtom@|2GsJ*a7RlKq$w5h^UeSdzEu}$OxfZGK;u<;ax*D_@!FFk zvq`OV;}UbRceF~rkrmpr_>RAE|-w2K9a0ROJMdh!OJS*_|ch;2F?Xd%&Qe ztkh=y{_t7Dq9y7$!ZLtkle;Ut@%>AeM8mv0%8JX1J#5M9CnNia(b`hK1wLY1gUriB z|4*XySaR4nrhjAy_nQyEb5v0LZ~Ht$5-GndYwPwgw1aW2EZh1{)#2+UI;goe$bdLv zfUyW$+x}+vA`-`)hl_LrR0WsFgtP}ShhCWUJa5LrI_Zg?n!Ju}$Fo{RkN$cG$tN1q zlDc1L17REMeM8_TO>HG~ex4-7mBJsz%6ms5U;YRopDaFJ@MYcigcNKx;VNzgo0%6B z+`1eaa0+FfaHNaxrLi%7Tr1lTCsGAqG2+ME4o2Y6}j93vl zT)yZ)u2`f<5z5moSD=%g5s;`BJ*yuIf_)X~f>ZbU!I65c+G=V%wSM4o57lD5gU^l% z3)h6^26S@2-ENk^Nh!d5fEn<$nQqsd3d8QGFTWUkva!MQ18!riA>`~38Lr{G%5m0@ zx#INip@<F~gg&O^MAAyyQ zt^!VOj9i2Q#JRPv8L#Ae+>XL$0bGN>>86`FHS*?LnGM!ca9WOe5(gXUDtsEFTBmXq zoNTji%X%Jx(HLr1x&uVh{&K3*_e~b+soW3vteqoUq=omLG|JJ?093+h7A*WviwM0h zlk7n>K}ID&#??gvV&qA8TF&~<-B}NG<{%dhLpC@UTrKXMyEwri1ptk!#$|1h6)%=% z1r+eY67Y3&+fj|~GKqv5hwixH^GP)xfmPo=Wqkhp{zxv_!Oa-sVO)un!9k7HDy6EQ z`^yu44;~A2t;elfwYWIKEXPIe`!Gv4ZmBH5WvcV}97EYUhqAVJ@F))?&}D^q%S~VO z)}zu8ZCg}K)B?R5045aFAP&>2_6@-Kgtz5%5OC_X`|0X9+F5k;^8tA&#P5}3cY=p_ z7$o!7OebS>++K{X4WrUj)(9)?XT){Y-otIj`*0%GOORZ%-{qk z8i;6x$!RTM-3(QLjMtE4Gf(8^=jZE8bBTsX(;oYkgSIdwFfyjrbLNQ66<*SAlMn zRUZHzhLPm)kku~?A2X+n!CFGAJ5$lS5tJ(w9^X_;>2md<9f{N(>2~cTo;g=|?4L#m zRWLgyH8l+Ca+P?e!&(8q%x625RTVb_RZiKNq?ldSAR{wuZgD*xZp`N@_5EeJzgwT{ zEAtVYG~AA=w0PvOQQ^p{m)bPd)Yk$7myBrckc(zZgy>4Ph~{>um;+5pvI4yyH62ey zk-!oRDjo2`mYeEDAjP%`TD)4T7O zvp`v}`99^#%mEBECKPUSI{P##gFc_BIFnmXntlxqx`^JUUJ+_&d%H1w=71gW zodK8EqLu6{_m?&2SCmcC=LQwbf^hK0SkLp$PjeNkD(QiE^3LU+g7=Jdr%=5WsXFd> zwYbz0z1_QY$T%`+X<{@==Z}N%z=j^_ZHo-XnHf4HCr|q&d$YB*llwJ^KTvp@xE{HR z8rR^msT?b>ZAFSsn>eJNAFml=jClt|XS5%-e?XGUC@Knxi;_@XwghbhE8!%#M9B%> zTWmOCslujVuo#>OZGI6Wb=z~>3LUAS(q2~X+%7w9Nc(+L25N4>MDkThC`l|EyDeeI z7tk2M#g}qd5Kcp^J1FaLvjM@=70WZHKH-k(QT&?Me(b$bn~7KtK}^Z|H6;lSw!zwz zldU7~7B1KCHKF~!4MDb~w{s4K9$pr6aN;hbpCD7uK{}z+TEkT zBr$!2vU^q>z_hYGZMHS;#-?WQ;!I?%C%U7C*;5P^|0W%w-V~+%o!;_pvRY3rstD>y zU}nZT&#k-JG7j7BfoOkP<)Y5d93H~F8p~CmAKEm0x44>gzy!*!ZdS=-8HbbaH<&z? zQYV$*(WMopM{c2gZoi#|0m7hs@pi%@BNv0ta!ccZ9ZgO)F=swtLT6O3u!`EPL2ZS3 zAGt6^_dX~b`R5gWu-$A4PN2hRPi8?*12+``7tyVsRckHsmn#*hCmEUwuA4L1`qC}K zUs>|mqSz+-`NK2@~Qq3-% z?x*>HBwRP08X*F+yeEOF52a70t3#slpF=0z*vP(&ZoVM=nv{!Y_$}&|_{}L5Eo&?Wh|MO^>i7oQzZOE-w}5_PG@+ru)=VP@WAm#t4J<3zIu(W;VzMNS8fsRgldm_I+Ny!^Ys-=g-0eyBp%;Fh-8zsYXV?iQJ zAT3=J@lo(`;0Nh!>#FSDVV~J~xAUy~De^tGMe?b4FN)_iF%xlkrD0DuulA&TBVAss zO}d%cWBe5HAqB}!<%pAE)z0ypNhTfeyVYps#;ZLn&X;YE>lf5zvuEXG&oorptxf}_ zMS0_wMs{dZoQ_?XTb38U5_eiDaT$-$z)5{?tU<%-SbN^t&ytG|)jRd(5(VaCi1E%SMULiz zPdeEIbC}A5(>&DA0ZnNZnd<|~{FPQn(Nif1?%2!B(p^}3>)jSn9gfd6jn#zM6z-VV zu{zwnKqZ_v19jV-RjaKo#i$XN+ke!vUFJX9=Jzl#R^4Pl4q3}29XOipX@uV5z6r-j z93T)sg7eLn?B>{nQX{Rd0X7C z(#2#sVys@PL$Tg8U>h(2Gk%S;F)}<1|JoKjE>1?yyU}DCon!2{cFy+?Cu*4t zvrpqgR2eql7m*CywBnq55`Yrb;!B*bM}e#*oN04KT!`zB zF8n4_`MrhNiABK_p7hLsPi@E`i$2k}8d}z^B<&9Vp26Az(-_uSZkHS%Vve(~X{l1X zSWNqsx?s6cD&(!!KbH`$OYVS{R!1N}stwEQTC?xVUf7dSQu4pVSpt)~u;>{kQVRoG zom*92XEmV~6Jw5Zht zFtjrnf#{f+E)^s&oS$zN7 zY_TqDZIG5!u7-|-s;e1MM64KAZ7!|cWVBR$rVnSUJPJ~jw1dDN2kSp-feP}ax4EOR z%JY58rrEBy?GNV>)1wkFsm4S2s|)w##Qo%{|*6`71j2!0y+LKU42>xp}|!3#FMoSuw` z2x{YJ53W0Fu&fap>rbmVN8P|J%T1L;^4?re(#4FYYTF?u!sS#3dYhFP#Kb&KDfRH& zr83*!#43^mG?c>`ZHIrqeDH$K2vtme$g!g)F7}{*2Fb~O zDSG>nXHPtyx|d&T5ST!O7kl2^;KWD0ydI*o@xDm)Lkd{cAukE=hIZ4L7d1Wdp zCDBnF&ePd6x{LJ#SdB&-yuvGm!5YM_(XsogKz=OD&<^sRSWJcXRovs{9^)fp9Zjxu zveiiaprzDV_@(A`M)uV^bSgE$?pNVX1}3&ZZW9q5SXG1UJOVB{TtfxF#z|VMh&pCI zRUx)Gk1E*v`}?^TdlqJ^kvw`X_+@tIo_twC+N9SdC1)56&(N}d$CDI@y_Ht5^jEj0 zy9+E)X~~Wj&u-T9E|ejz9tbeVq%Y4xFshYzl>vwd0{rynW zoipOKZ(`R+Kh^u*OGGK^)5h-`ZW`1o#%O!(jwAd+6&#;XQ*F~bQ3=7L{#M?jzDdM* z7QeWQKnVi7ngsp%W2uEc^di{YCS+5y?NE-D$Q29>P9gW;iY%SlNQUJG2VruwZDtir z<8V*z^vGfQHS_JnJ|5L8#z>0>r{kcx1RZt0_sn~lCDqla$(Oasd}f$u7_P*=J?FMD zsoRWEw4u~B6e{R*?v{Q_pM1dvdVysI9db2d+RdOGVOc?oTN)u?N=?UC(eP5i*Zl6Sw>|H)f}=y{1FSB zo@tz!Nh)|Y17d)*Zfm<`{WANYn}ImdfX;(`-nAV*b7U$B9zxN&A!NxzQJ!pK>w7P? zivA6=e52hko_Er`(zvS?4(i3d zGAyFzr1GAdPk;^>Jg+OvlRJ4o=8u2Z0_dixFzQCn{$=j(={~!eEkD{l%;E);)BT9p z7gQFRe~d2%BSN|Vdfx{)yL|+NXMeY<#t-L{^T51`J?X+}ZNdPynY@iiP2E0-Xo!V7 z@g$$3@N{`>R;_zQXzhLmxB_dSgcw9N3m13{-nROFog5WjZD|grUqSDi*=_RyyBh_h zcedg^VBvZmeGS1nq)Z`>+b>co>(<8g_#pjssGFU$BUdm)--F8wWz4?x8V_l^e65_R z`N&6 z#yrSHB*l40Y2MfE4Gh|j(g1*61Rs+cyCzvo6ywFp~`ta(tVXEOZFNFOr zaFc_0I>z`AwnlJ?#opr{9A{v z>-2APP#6TnS&d7G*~Yc)onx-<*fBUrtr(Y$&;!mqkVarnDGl>U0^DN;G@<&S}PeRGsEZCF#6>+(Z`Cm0GD8kfXJ&-+}(ocnfUP zDydSV$Hblb2=Q=p5GG6Lmx;HCQYkD6oA?#jnzN1!Z&0bUW9+A|Dfk$~V(m!>(1Edj zm@{YtdgusDeXD9Fv=kOuX{@9NLteF6TRko6S+A#<9-*3=e;7`6xt_9b$)wh0E$9yZ^oN~%C7RQcW%ZL z);9yS^YL2W3opdF-eXnv@-k)BK~E&+Q`u)%A?ozfGP~1)lBtGtjQEoB;-{LEX9}^A zmb}zp8?2Xo{{rq*6@B#c8!0o`G#2-6%oeMQe0~6l(q!vpOgo1Q{f1v^;6Wv{&SZRc zPZ$kHdoF`V0&I=|rglTDK5-OQy0rZlvq4ma>bWp28GSR#aqHH{*R?>&j=SjIip>O} z?MqgRd0B6Bs~1dqIpnc20hvTA)M5#l6@nId$bmtdSKsip_Ezq2l)MzHlhCZ#0XL?x(%F|}0k-!u7&m#`0Mc{onL4)q9ZTTybf>eCtweW6sZTpvzkWYNfMy`e?@aC@r%{sYlUSSrNbSEy0cPNONJMn zHl$xYK%d{kwe3&leu4;EA_V$C#eS}Ig%2mQ=o4{l2gehH z9I0`>uBxik8wBvnj!z_UT-qjKnr?n&8%RZxSD6 zfx6kaUutA+%hGgqlh?N$@Jc^n;}PuDsWZ7TXqP@5 z8lLHXm|_+ui>%a=*Q|9#)IbDTUTQF916@#P=r)IpDdpX(%_>;RS31)CruYT_Sc2>6 zTH)>MwK-z^RoE60?tvtq0xbvVn2suUI6&PZ;@U00(&3oR)rUTd@`rA?MW}-LGb1P6 z6jraz!eQsx7^RpF%jRcZM0yon)T*1u^d%HDYfTuLz@xxCh+6*xnDrRZ91l5!F6rh^ zwuCfHAHa+<(#0M+VR4}aOc@dqEiN?FSm&_G3(3#B7)CeqYF7f`x$GiihMZ6gC#(V2 zh{9pV{*SMBSQ6OIP2=I}w{#t5{ZZYlrz!Slgz(&}_m_)j7vg1`?yJwt6AkcfUkM>M znyN-@V$M+=#p6oa!mS>OxL+OE+zF%Jo4P&FKF>6&Z9uf#`MjZgYlq+b;q~cpHH2Qv zC_WHN;6C)8b@D8<)_CIp%gZMWCpsb}Er4hF7Imc6gxu-Xy( ztKQq|Jx%CHh6J~s4dZX^&nu2RrwXMpYmR62N%8vtk@RMpT`xbw9Jp0~G1DJzBW!rskvJt}x{ix&g_3mAZ zRuu@s>uxKsJql`UlP55=S_&8`Opa(FvOvBk$A%xV{F5uLbTte|L1OVDxn!vitHx?2 zD77(&?sy0#a+!R{ow$;$`q`FF=Jk;(}*udvd}Tgw1= z-p$&JN%N+1P?sM{l$a4auN42XBG_~`fOWV0>W<7Ji5+aM?F>hsZ-T+|e7sm|tmVa^ zzmB5@fsT6A|k$yy9{VstXA^a=r^V_(E)5?t;P+`$k$pX zd&4Gm%c$05154xjfy93q5xx#ix24UCSY@@{ _Wo5a!sw1T)&$No4oxDn`31Y|in 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

xN9y0^8cQ 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 z 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

I(tRS(^Cwi9AtU!%WD? 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� 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%0Dbh^ZMKknJ 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 kQxZ|!IzR(OJi1j5e4aAZA%jQw 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" + } + }, + "node_modules/@apidevtools/swagger-methods": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", + "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==", + "license": "MIT" + }, + "node_modules/@apidevtools/swagger-parser": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.0.3.tgz", + "integrity": "sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==", + "license": "MIT", + "dependencies": { + "@apidevtools/json-schema-ref-parser": "^9.0.6", + "@apidevtools/openapi-schemas": "^2.0.4", + "@apidevtools/swagger-methods": "^3.0.2", + "@jsdevtools/ono": "^7.1.3", + "call-me-maybe": "^1.0.1", + "z-schema": "^5.0.1" + }, + "peerDependencies": { + "openapi-types": ">=7" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.5" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.0.tgz", + "integrity": "sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.0.tgz", + "integrity": "sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.0.tgz", + "integrity": "sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.0.tgz", + "integrity": "sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.0.tgz", + "integrity": "sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.0.tgz", + "integrity": "sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.0.tgz", + "integrity": "sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.0.tgz", + "integrity": "sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.0.tgz", + "integrity": "sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.0.tgz", + "integrity": "sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.0.tgz", + "integrity": "sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.0.tgz", + "integrity": "sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.0.tgz", + "integrity": "sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.0.tgz", + "integrity": "sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.0.tgz", + "integrity": "sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.0.tgz", + "integrity": "sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.0.tgz", + "integrity": "sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.0.tgz", + "integrity": "sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.0.tgz", + "integrity": "sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.0.tgz", + "integrity": "sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.0.tgz", + "integrity": "sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.0.tgz", + "integrity": "sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.0.tgz", + "integrity": "sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.0.tgz", + "integrity": "sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.0.tgz", + "integrity": "sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.0.tgz", + "integrity": "sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", + "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", + "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", + "license": "MIT" + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@paralleldrive/cuid2": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.3.1.tgz", + "integrity": "sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.1.5" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.3.tgz", + "integrity": "sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.3.tgz", + "integrity": "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz", + "integrity": "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.3.tgz", + "integrity": "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.3.tgz", + "integrity": "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.3.tgz", + "integrity": "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.3.tgz", + "integrity": "sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.3.tgz", + "integrity": "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.3.tgz", + "integrity": "sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.3.tgz", + "integrity": "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.3.tgz", + "integrity": "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.3.tgz", + "integrity": "sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.3.tgz", + "integrity": "sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.3.tgz", + "integrity": "sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.3.tgz", + "integrity": "sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz", + "integrity": "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.3.tgz", + "integrity": "sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.3.tgz", + "integrity": "sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.3.tgz", + "integrity": "sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.3.tgz", + "integrity": "sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.3.tgz", + "integrity": "sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.3.tgz", + "integrity": "sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@scarf/scarf": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.4.0.tgz", + "integrity": "sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==", + "hasInstallScript": true, + "license": "Apache-2.0" + }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/better-sqlite3": { + "version": "7.6.13", + "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.13.tgz", + "integrity": "sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cookiejar": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", + "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/cors": { + "version": "2.8.19", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.5.tgz", + "integrity": "sha512-LuIQOcb6UmnF7C1PCFmEU1u2hmiHL43fgFQX67sN3H4Z+0Yk0Neo++mFsBjhOAuLzvlQeqAAkeDOZrJs9rzumQ==", + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "^1" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.0.tgz", + "integrity": "sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/methods": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", + "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "24.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", + "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/superagent": { + "version": "8.1.9", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz", + "integrity": "sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/cookiejar": "^2.1.5", + "@types/methods": "^1.1.4", + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@types/supertest": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-6.0.3.tgz", + "integrity": "sha512-8WzXq62EXFhJ7QsH3Ocb/iKQ/Ty9ZVWnVzoTKc9tyyFRRF3a74Tk2+TLFgaFFw364Ere+npzHKEJ6ga2LzIL7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/methods": "^1.1.4", + "@types/superagent": "^8.1.0" + } + }, + "node_modules/@types/swagger-jsdoc": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/swagger-jsdoc/-/swagger-jsdoc-6.0.4.tgz", + "integrity": "sha512-W+Xw5epcOZrF/AooUM/PccNMSAFOKWZA5dasNyMujTwsBkU74njSJBpvCCJhHAJ95XRMzQrrW844Btu0uoetwQ==", + "license": "MIT" + }, + "node_modules/@types/swagger-ui-express": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@types/swagger-ui-express/-/swagger-ui-express-4.1.8.tgz", + "integrity": "sha512-AhZV8/EIreHFmBV5wAs0gzJUNq9JbbSXgJLQubCC0jtIo6prnI9MIRRxnU4MZX9RB9yXxF1V4R7jtLl/Wcj31g==", + "license": "MIT", + "dependencies": { + "@types/express": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.1.tgz", + "integrity": "sha512-rUsLh8PXmBjdiPY+Emjz9NX2yHvhS11v0SR6xNJkm5GM1MO9ea/1GoDKlHHZGrOJclL/cZ2i/vRUYVtjRhrHVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.46.1", + "@typescript-eslint/type-utils": "8.46.1", + "@typescript-eslint/utils": "8.46.1", + "@typescript-eslint/visitor-keys": "8.46.1", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.46.1", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.1.tgz", + "integrity": "sha512-6JSSaBZmsKvEkbRUkf7Zj7dru/8ZCrJxAqArcLaVMee5907JdtEbKGsZ7zNiIm/UAkpGUkaSMZEXShnN2D1HZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.46.1", + "@typescript-eslint/types": "8.46.1", + "@typescript-eslint/typescript-estree": "8.46.1", + "@typescript-eslint/visitor-keys": "8.46.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.1.tgz", + "integrity": "sha512-FOIaFVMHzRskXr5J4Jp8lFVV0gz5ngv3RHmn+E4HYxSJ3DgDzU7fVI1/M7Ijh1zf6S7HIoaIOtln1H5y8V+9Zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.46.1", + "@typescript-eslint/types": "^8.46.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.1.tgz", + "integrity": "sha512-weL9Gg3/5F0pVQKiF8eOXFZp8emqWzZsOJuWRUNtHT+UNV2xSJegmpCNQHy37aEQIbToTq7RHKhWvOsmbM680A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.46.1", + "@typescript-eslint/visitor-keys": "8.46.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.1.tgz", + "integrity": "sha512-X88+J/CwFvlJB+mK09VFqx5FE4H5cXD+H/Bdza2aEWkSb8hnWIQorNcscRl4IEo1Cz9VI/+/r/jnGWkbWPx54g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.1.tgz", + "integrity": "sha512-+BlmiHIiqufBxkVnOtFwjah/vrkF4MtKKvpXrKSPLCkCtAp8H01/VV43sfqA98Od7nJpDcFnkwgyfQbOG0AMvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.46.1", + "@typescript-eslint/typescript-estree": "8.46.1", + "@typescript-eslint/utils": "8.46.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.1.tgz", + "integrity": "sha512-C+soprGBHwWBdkDpbaRC4paGBrkIXxVlNohadL5o0kfhsXqOC6GYH2S/Obmig+I0HTDl8wMaRySwrfrXVP8/pQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.1.tgz", + "integrity": "sha512-uIifjT4s8cQKFQ8ZBXXyoUODtRoAd7F7+G8MKmtzj17+1UbdzFl52AzRyZRyKqPHhgzvXunnSckVu36flGy8cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.46.1", + "@typescript-eslint/tsconfig-utils": "8.46.1", + "@typescript-eslint/types": "8.46.1", + "@typescript-eslint/visitor-keys": "8.46.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.1.tgz", + "integrity": "sha512-vkYUy6LdZS7q1v/Gxb2Zs7zziuXN0wxqsetJdeZdRe/f5dwJFglmuvZBfTUivCtjH725C1jWCDfpadadD95EDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.46.1", + "@typescript-eslint/types": "8.46.1", + "@typescript-eslint/typescript-estree": "8.46.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.1.tgz", + "integrity": "sha512-ptkmIf2iDkNUjdeu2bQqhFPV1m6qTnFFjg7PPDjxKWaMaP0Z6I9l30Jr3g5QqbZGdw8YdYvLp+XnqnWWZOg/NA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.46.1", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vitest/coverage-v8": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.14.tgz", + "integrity": "sha512-EYHLqN/BY6b47qHH7gtMxAg++saoGmsjWmAq9MlXxAz4M0NcHh9iOyKhBZyU4yxZqOd8Xnqp80/5saeitz4Cng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^1.0.2", + "@vitest/utils": "4.0.14", + "ast-v8-to-istanbul": "^0.3.8", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^5.0.6", + "istanbul-reports": "^3.2.0", + "magicast": "^0.5.1", + "obug": "^2.1.1", + "std-env": "^3.10.0", + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/browser": "4.0.14", + "vitest": "4.0.14" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } + } + }, + "node_modules/@vitest/expect": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.14.tgz", + "integrity": "sha512-RHk63V3zvRiYOWAV0rGEBRO820ce17hz7cI2kDmEdfQsBjT2luEKB5tCOc91u1oSQoUOZkSv3ZyzkdkSLD7lKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.0.14", + "@vitest/utils": "4.0.14", + "chai": "^6.2.1", + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/pretty-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.14.tgz", + "integrity": "sha512-SOYPgujB6TITcJxgd3wmsLl+wZv+fy3av2PpiPpsWPZ6J1ySUYfScfpIt2Yv56ShJXR2MOA6q2KjKHN4EpdyRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.14.tgz", + "integrity": "sha512-BsAIk3FAqxICqREbX8SetIteT8PiaUL/tgJjmhxJhCsigmzzH8xeadtp7LRnTpCVzvf0ib9BgAfKJHuhNllKLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "4.0.14", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.14.tgz", + "integrity": "sha512-aQVBfT1PMzDSA16Y3Fp45a0q8nKexx6N5Amw3MX55BeTeZpoC08fGqEZqVmPcqN0ueZsuUQ9rriPMhZ3Mu19Ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.0.14", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.14.tgz", + "integrity": "sha512-JmAZT1UtZooO0tpY3GRyiC/8W7dCs05UOq9rfsUUgEZEdq+DuHLmWhPsrTt0TiW7WYeL/hXpaE07AZ2RCk44hg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.14.tgz", + "integrity": "sha512-hLqXZKAWNg8pI+SQXyXxWCTOpA3MvsqcbVeNgSi8x/CSN2wi26dSzn1wrOhmCmFjEvN9p8/kLFRHa6PI8jHazw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.0.14", + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/ast-v8-to-istanbul": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.8.tgz", + "integrity": "sha512-szgSZqUxI5T8mLKvS7WTjF9is+MVbOeLADU73IseOcrqhxr/VAvy6wfoVE39KnKzA7JRhjF5eUagNlHwvZPlKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.31", + "estree-walker": "^3.0.3", + "js-tokens": "^9.0.1" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/better-sqlite3": { + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.5.0.tgz", + "integrity": "sha512-WwCZ/5Diz7rsF29o27o0Gcc1Du+l7Zsv7SYtVPG0X3G/uUI1LqdxrQI7c9Hs2FWpqXXERjW9hp6g3/tH7DlVKg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "bindings": "^1.5.0", + "prebuild-install": "^7.1.1" + }, + "engines": { + "node": "20.x || 22.x || 23.x || 24.x || 25.x" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-me-maybe": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", + "license": "MIT" + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chai": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.1.tgz", + "integrity": "sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "license": "ISC" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz", + "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" + }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.0.tgz", + "integrity": "sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.0", + "@esbuild/android-arm": "0.27.0", + "@esbuild/android-arm64": "0.27.0", + "@esbuild/android-x64": "0.27.0", + "@esbuild/darwin-arm64": "0.27.0", + "@esbuild/darwin-x64": "0.27.0", + "@esbuild/freebsd-arm64": "0.27.0", + "@esbuild/freebsd-x64": "0.27.0", + "@esbuild/linux-arm": "0.27.0", + "@esbuild/linux-arm64": "0.27.0", + "@esbuild/linux-ia32": "0.27.0", + "@esbuild/linux-loong64": "0.27.0", + "@esbuild/linux-mips64el": "0.27.0", + "@esbuild/linux-ppc64": "0.27.0", + "@esbuild/linux-riscv64": "0.27.0", + "@esbuild/linux-s390x": "0.27.0", + "@esbuild/linux-x64": "0.27.0", + "@esbuild/netbsd-arm64": "0.27.0", + "@esbuild/netbsd-x64": "0.27.0", + "@esbuild/openbsd-arm64": "0.27.0", + "@esbuild/openbsd-x64": "0.27.0", + "@esbuild/openharmony-arm64": "0.27.0", + "@esbuild/sunos-x64": "0.27.0", + "@esbuild/win32-arm64": "0.27.0", + "@esbuild/win32-ia32": "0.27.0", + "@esbuild/win32-x64": "0.27.0" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", + "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.1", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "license": "(MIT OR WTFPL)", + "engines": { + "node": ">=6" + } + }, + "node_modules/expect-type": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz", + "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.12", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "license": "MIT" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formidable": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", + "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@paralleldrive/cuid2": "^2.2.2", + "dezalgo": "^1.0.4", + "once": "^1.4.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-tsconfig": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz", + "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "license": "MIT" + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "16.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz", + "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", + "license": "MIT" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/magicast": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.1.tgz", + "integrity": "sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "source-map-js": "^1.2.1" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "license": "MIT" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-abi": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.85.0.tgz", + "integrity": "sha512-zsFhmbkAzwhTft6nd3VxcG0cvJsT70rL+BIGHWVq5fi6MwGrHwzqKaxXE+Hl2GmnGItnDKPPkO5/LQqjVkIdFg==", + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/openapi-types": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", + "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", + "license": "MIT", + "peer": true + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.3.tgz", + "integrity": "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.53.3", + "@rollup/rollup-android-arm64": "4.53.3", + "@rollup/rollup-darwin-arm64": "4.53.3", + "@rollup/rollup-darwin-x64": "4.53.3", + "@rollup/rollup-freebsd-arm64": "4.53.3", + "@rollup/rollup-freebsd-x64": "4.53.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.3", + "@rollup/rollup-linux-arm-musleabihf": "4.53.3", + "@rollup/rollup-linux-arm64-gnu": "4.53.3", + "@rollup/rollup-linux-arm64-musl": "4.53.3", + "@rollup/rollup-linux-loong64-gnu": "4.53.3", + "@rollup/rollup-linux-ppc64-gnu": "4.53.3", + "@rollup/rollup-linux-riscv64-gnu": "4.53.3", + "@rollup/rollup-linux-riscv64-musl": "4.53.3", + "@rollup/rollup-linux-s390x-gnu": "4.53.3", + "@rollup/rollup-linux-x64-gnu": "4.53.3", + "@rollup/rollup-linux-x64-musl": "4.53.3", + "@rollup/rollup-openharmony-arm64": "4.53.3", + "@rollup/rollup-win32-arm64-msvc": "4.53.3", + "@rollup/rollup-win32-ia32-msvc": "4.53.3", + "@rollup/rollup-win32-x64-gnu": "4.53.3", + "@rollup/rollup-win32-x64-msvc": "4.53.3", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "dev": true, + "license": "MIT" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/superagent": { + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-10.2.3.tgz", + "integrity": "sha512-y/hkYGeXAj7wUMjxRbB21g/l6aAEituGXM9Rwl4o20+SX3e8YOSV6BxFXl+dL3Uk0mjSL3kCbNkwURm8/gEDig==", + "dev": true, + "license": "MIT", + "dependencies": { + "component-emitter": "^1.3.1", + "cookiejar": "^2.1.4", + "debug": "^4.3.7", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.4", + "formidable": "^3.5.4", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.11.2" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/superagent/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/supertest": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.1.4.tgz", + "integrity": "sha512-tjLPs7dVyqgItVFirHYqe2T+MfWc2VOBQ8QFKKbWTA3PU7liZR8zoSpAi/C1k1ilm9RsXIKYf197oap9wXGVYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "methods": "^1.1.2", + "superagent": "^10.2.3" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/swagger-jsdoc": { + "version": "6.2.8", + "resolved": "https://registry.npmjs.org/swagger-jsdoc/-/swagger-jsdoc-6.2.8.tgz", + "integrity": "sha512-VPvil1+JRpmJ55CgAtn8DIcpBs0bL5L3q5bVQvF4tAW/k/9JYSj7dCpaYCAv5rufe0vcCbBRQXGvzpkWjvLklQ==", + "license": "MIT", + "dependencies": { + "commander": "6.2.0", + "doctrine": "3.0.0", + "glob": "7.1.6", + "lodash.mergewith": "^4.6.2", + "swagger-parser": "^10.0.3", + "yaml": "2.0.0-1" + }, + "bin": { + "swagger-jsdoc": "bin/swagger-jsdoc.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/swagger-parser": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/swagger-parser/-/swagger-parser-10.0.3.tgz", + "integrity": "sha512-nF7oMeL4KypldrQhac8RyHerJeGPD1p2xDh900GPvc+Nk7nWP6jX2FcC7WmkinMoAmoO774+AFXcWsW8gMWEIg==", + "license": "MIT", + "dependencies": { + "@apidevtools/swagger-parser": "10.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/swagger-ui-dist": { + "version": "5.30.3", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.30.3.tgz", + "integrity": "sha512-giQl7/ToPxCqnUAx2wpnSnDNGZtGzw1LyUw6ZitIpTmdrvpxKFY/94v1hihm0zYNpgp1/VY0jTDk//R0BBgnRQ==", + "license": "Apache-2.0", + "dependencies": { + "@scarf/scarf": "=1.4.0" + } + }, + "node_modules/swagger-ui-express": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-5.0.1.tgz", + "integrity": "sha512-SrNU3RiBGTLLmFU8GIJdOdanJTl4TOmT27tt3bWWHppqYmAZ6IDuEuBvMU6nZq0zLEe6b/1rACXCgLZqO6ZfrA==", + "license": "MIT", + "dependencies": { + "swagger-ui-dist": ">=5.0.0" + }, + "engines": { + "node": ">= v0.10.32" + }, + "peerDependencies": { + "express": ">=4.0.0 || >=5.0.0-beta" + } + }, + "node_modules/tar-fs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tinyrainbow": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz", + "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/tsx": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", + "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.27.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.46.1.tgz", + "integrity": "sha512-VHgijW803JafdSsDO8I761r3SHrgk4T00IdyQ+/UsthtgPRsBWQLqoSxOolxTpxRKi1kGXK0bSz4CoAc9ObqJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.46.1", + "@typescript-eslint/parser": "8.46.1", + "@typescript-eslint/typescript-estree": "8.46.1", + "@typescript-eslint/utils": "8.46.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/validator": { + "version": "13.15.23", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.23.tgz", + "integrity": "sha512-4yoz1kEWqUjzi5zsPbAS/903QXSYp0UOtHsPpp7p9rHAw/W+dkInskAE386Fat3oKRROwO98d9ZB0G4cObgUyw==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vitest": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.14.tgz", + "integrity": "sha512-d9B2J9Cm9dN9+6nxMnnNJKJCtcyKfnHj15N6YNJfaFHRLua/d3sRKU9RuKmO9mB0XdFtUizlxfz/VPbd3OxGhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "4.0.14", + "@vitest/mocker": "4.0.14", + "@vitest/pretty-format": "4.0.14", + "@vitest/runner": "4.0.14", + "@vitest/snapshot": "4.0.14", + "@vitest/spy": "4.0.14", + "@vitest/utils": "4.0.14", + "es-module-lexer": "^1.7.0", + "expect-type": "^1.2.2", + "magic-string": "^0.30.21", + "obug": "^2.1.1", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "std-env": "^3.10.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.0.3", + "vite": "^6.0.0 || ^7.0.0", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.0.14", + "@vitest/browser-preview": "4.0.14", + "@vitest/browser-webdriverio": "4.0.14", + "@vitest/ui": "4.0.14", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@vitest/mocker": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.14.tgz", + "integrity": "sha512-RzS5NujlCzeRPF1MK7MXLiEFpkIXeMdQ+rN3Kk3tDI9j0mtbr7Nmuq67tpkOJQpgyClbOltCXMjLZicJHsH5Cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "4.0.14", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/vitest/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vitest/node_modules/vite": { + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.6.tgz", + "integrity": "sha512-tI2l/nFHC5rLh7+5+o7QjKjSR04ivXDF4jcgV0f/bTQ+OJiITy5S6gaynVsEM+7RqzufMnVbIon6Sr5x1SDYaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.0.0-1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.0.0-1.tgz", + "integrity": "sha512-W7h5dEhywMKenDJh2iX/LABkbFnBxasD27oyXWDS/feDsxiw0dD5ncXdYXgkvAsXIY2MpW/ZKkr9IU30DBdMNQ==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/z-schema": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.5.tgz", + "integrity": "sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==", + "license": "MIT", + "dependencies": { + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" + }, + "bin": { + "z-schema": "bin/z-schema" + }, + "engines": { + "node": ">=8.0.0" + }, + "optionalDependencies": { + "commander": "^9.4.1" + } + }, + "node_modules/z-schema/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": "^12.20.0 || >=14" + } + } + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/package.json b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/package.json new file mode 100644 index 000000000..d20dc8744 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/package.json @@ -0,0 +1,47 @@ +{ + "name": "typescript-api-project", + "version": "1.0.0", + "main": "dist/index.js", + "scripts": { + "build": "tsc", + "start": "npm run start:install", + "start:install": "npm run db:seed && node dist/index.js", + "dev": "npm run db:seed:dev && tsx src/index.ts", + "test": "vitest", + "test:coverage": "vitest run --coverage", + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "db:init": "node dist/init-db.js", + "db:init:dev": "tsx src/init-db.ts", + "db:seed": "npm run db:init -- --seed", + "db:seed:dev": "npm run db:init:dev -- --seed", + "db:migrate": "node dist/init-db.js", + "swagger:generate": "tsx src/generate-swagger.ts" + }, + "dependencies": { + "@types/cors": "^2.8.19", + "@types/better-sqlite3": "^7.6.13", + "@types/swagger-jsdoc": "^6.0.4", + "@types/swagger-ui-express": "^4.1.8", + "better-sqlite3": "^12.4.1", + "cors": "^2.8.5", + "express": "^4.21.2", + "globals": "16.4.0", + "swagger-jsdoc": "^6.2.8", + "swagger-ui-express": "^5.0.1" + }, + "devDependencies": { + "@eslint/js": "^9.37.0", + "@types/express": "^5.0.3", + "@types/node": "^24.7.2", + "@types/supertest": "^6.0.3", + "@vitest/coverage-v8": "^4.0.10", + "eslint": "^9.37.0", + "supertest": "^7.1.4", + "tsx": "^4.20.6", + "typescript": "^5.9.3", + "typescript-eslint": "8.46.1", + "vitest": "^4.0.10" + }, + "license": "MIT" +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/db/config.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/db/config.ts new file mode 100644 index 000000000..133e2855e --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/db/config.ts @@ -0,0 +1,26 @@ +/** + * Database configuration settings + */ + +export const DB_CONFIG = { + // Database file path - defaults to './data/app.db' but can be overridden by environment + DB_FILE: process.env.DB_FILE || './data/app.db', + + // Database engine - currently supports SQLite + DB_ENGINE: process.env.DB_ENGINE || 'sqlite', + + // Enable WAL mode for better concurrency + ENABLE_WAL: process.env.DB_ENABLE_WAL !== 'false', + + // Connection timeout in milliseconds + TIMEOUT: parseInt(process.env.DB_TIMEOUT || '30000'), + + // Enable foreign key constraints + FOREIGN_KEYS: process.env.DB_FOREIGN_KEYS !== 'false', +}; + +// Test database configuration for unit tests +export const TEST_DB_CONFIG = { + ...DB_CONFIG, + DB_FILE: ':memory:', // Use in-memory database for tests +}; diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/db/migrate.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/db/migrate.ts new file mode 100644 index 000000000..67b8025ac --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/db/migrate.ts @@ -0,0 +1,182 @@ +/** + * Database migration runner + */ + +import fs from 'fs'; +import path from 'path'; +import { getDatabase, DatabaseConnection } from './sqlite'; + +interface Migration { + version: number; + filename: string; + sql: string; +} + +export class MigrationRunner { + private db: DatabaseConnection; + private migrationsDir: string; + + constructor(db: DatabaseConnection, migrationsDir: string = '../database/migrations') { + this.db = db; + this.migrationsDir = path.resolve(migrationsDir); + } + + /** + * Initialize the migrations table + */ + private async initializeMigrationsTable(): Promise { + const sql = ` + CREATE TABLE IF NOT EXISTS migrations ( + version INTEGER PRIMARY KEY, + filename TEXT NOT NULL, + applied_at DATETIME DEFAULT CURRENT_TIMESTAMP + ); + `; + + await this.db.run(sql); + } + + /** + * Get all migration files from the migrations directory + */ + private getMigrationFiles(): Migration[] { + if (!fs.existsSync(this.migrationsDir)) { + throw new Error(`Migrations directory not found: ${this.migrationsDir}`); + } + + const files = fs + .readdirSync(this.migrationsDir) + .filter((file) => file.endsWith('.sql')) + .sort(); + + return files.map((filename) => { + const version = this.extractVersionFromFilename(filename); + const filePath = path.join(this.migrationsDir, filename); + const sql = fs.readFileSync(filePath, 'utf-8'); + + return { + version, + filename, + sql, + }; + }); + } + + /** + * Extract version number from migration filename + * Expected format: 001_description.sql + */ + private extractVersionFromFilename(filename: string): number { + const match = filename.match(/^(\d+)_/); + if (!match) { + throw new Error( + `Invalid migration filename format: ${filename}. Expected format: 001_description.sql`, + ); + } + return parseInt(match[1], 10); + } + + /** + * Get applied migrations from the database + */ + private async getAppliedMigrations(): Promise { + const rows = await this.db.all<{ version: number }>( + 'SELECT version FROM migrations ORDER BY version', + ); + return rows.map((row) => row.version); + } + + /** + * Apply a single migration + */ + private async applyMigration(migration: Migration): Promise { + console.log(`Applying migration ${migration.version}: ${migration.filename}`); + + try { + // Split SQL into individual statements and execute each + const statements = migration.sql + .split(';') + .map((stmt) => stmt.trim()) + .filter((stmt) => stmt.length > 0); + + for (const statement of statements) { + if (statement.trim()) { + await this.db.run(statement); + } + } + + // Record the migration as applied + await this.db.run('INSERT INTO migrations (version, filename) VALUES (?, ?)', [ + migration.version, + migration.filename, + ]); + + console.log(`✅ Migration ${migration.version} applied successfully`); + } catch (error) { + console.error(`❌ Failed to apply migration ${migration.version}: ${error}`); + throw error; + } + } + + /** + * Run all pending migrations + */ + public async runMigrations(): Promise { + console.log('🚀 Starting database migration...'); + + try { + // Initialize migrations table + await this.initializeMigrationsTable(); + + // Get all migrations and applied migrations + const availableMigrations = this.getMigrationFiles(); + const appliedMigrations = await this.getAppliedMigrations(); + + // Find pending migrations + const pendingMigrations = availableMigrations.filter( + (migration) => !appliedMigrations.includes(migration.version), + ); + + if (pendingMigrations.length === 0) { + console.log('✅ No pending migrations. Database is up to date.'); + return; + } + + console.log(`📋 Found ${pendingMigrations.length} pending migration(s)`); + + // Apply each pending migration + for (const migration of pendingMigrations) { + await this.applyMigration(migration); + } + + console.log('🎉 All migrations completed successfully!'); + } catch (error) { + console.error('💥 Migration failed:', error); + throw error; + } + } + + /** + * Get the current database version + */ + public async getCurrentVersion(): Promise { + await this.initializeMigrationsTable(); + + const result = await this.db.get<{ version: number }>( + 'SELECT MAX(version) as version FROM migrations', + ); + + return result?.version || 0; + } +} + +/** + * Run migrations using the global database connection + */ +export async function runMigrations(isTest: boolean = false): Promise { + const db = await getDatabase(isTest); + const migrationsDir = path.join(__dirname, '../../../database/migrations'); + const runner = new MigrationRunner(db, migrationsDir); + + await runner.runMigrations(); +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/db/seed.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/db/seed.ts new file mode 100644 index 000000000..70c3346e8 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/db/seed.ts @@ -0,0 +1,166 @@ +/** + * Database seeder for populating initial data + */ + +import fs from 'fs'; +import path from 'path'; +import { getDatabase, DatabaseConnection } from './sqlite'; + +export class DatabaseSeeder { + private db: DatabaseConnection; + private seedsDir: string; + + constructor(db: DatabaseConnection, seedsDir: string = '../database/seed') { + this.db = db; + this.seedsDir = path.resolve(seedsDir); + } + + /** + * Check if database has been seeded + */ + private async isSeeded(): Promise { + try { + // Check if any suppliers exist (assuming suppliers are seeded first) + const result = await this.db.get<{ count: number }>( + 'SELECT COUNT(*) as count FROM suppliers', + ); + return (result?.count || 0) > 0; + } catch { + // If table doesn't exist, database is not seeded + return false; + } + } + + /** + * Get all seed files from the seeds directory + */ + private getSeedFiles(): string[] { + if (!fs.existsSync(this.seedsDir)) { + console.log(`Seeds directory not found: ${this.seedsDir}. Skipping seeding.`); + return []; + } + + return fs + .readdirSync(this.seedsDir) + .filter((file) => file.endsWith('.sql')) + .sort(); // Ensure predictable order + } + + /** + * Execute a seed file + */ + private async executeSeedFile(filename: string): Promise { + const filePath = path.join(this.seedsDir, filename); + const sql = fs.readFileSync(filePath, 'utf-8'); + + console.log(`🌱 Seeding from: ${filename}`); + + try { + // Split SQL into individual statements and execute each + const statements = sql + .split(';') + .map((stmt) => stmt.trim()) + .filter((stmt) => stmt.length > 0); + + for (const statement of statements) { + if (statement.trim()) { + await this.db.run(statement); + } + } + + console.log(`✅ Seeded successfully: ${filename}`); + } catch (error) { + console.error(`❌ Failed to seed ${filename}:`, error); + throw error; + } + } + + /** + * Seed the database with initial data + */ + public async seedDatabase(force: boolean = false): Promise { + console.log('🌱 Starting database seeding...'); + + try { + // Check if already seeded + if (!force && (await this.isSeeded())) { + console.log('✅ Database already seeded. Use force=true to re-seed.'); + return; + } + + // Get all seed files + const seedFiles = this.getSeedFiles(); + + if (seedFiles.length === 0) { + console.log('📝 No seed files found. Skipping seeding.'); + return; + } + + console.log(`📋 Found ${seedFiles.length} seed file(s)`); + + // Execute each seed file + for (const filename of seedFiles) { + await this.executeSeedFile(filename); + } + + console.log('🎉 Database seeding completed successfully!'); + } catch (error) { + console.error('💥 Seeding failed:', error); + throw error; + } + } + + /** + * Clear all data from the database (useful for re-seeding) + */ + public async clearDatabase(): Promise { + console.log('🧹 Clearing database...'); + + try { + // Get all table names + const tables = await this.db.all<{ name: string }>( + "SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%' AND name != 'migrations'", + ); + + // Disable foreign key constraints temporarily + await this.db.run('PRAGMA foreign_keys = OFF'); + + // Clear all tables + for (const table of tables) { + await this.db.run(`DELETE FROM ${table.name}`); + console.log(`🗑️ Cleared table: ${table.name}`); + } + + // Re-enable foreign key constraints + await this.db.run('PRAGMA foreign_keys = ON'); + + console.log('✅ Database cleared successfully'); + } catch (error) { + console.error('❌ Failed to clear database:', error); + throw error; + } + } +} + +/** + * Seed the database using the global database connection + */ +export async function seedDatabase(force: boolean = false, isTest: boolean = false): Promise { + const db = await getDatabase(isTest); + const seedsDir = path.join(__dirname, '../../../database/seed'); + const seeder = new DatabaseSeeder(db, seedsDir); + + await seeder.seedDatabase(force); +} + +/** + * Clear and re-seed the database + */ +export async function reseedDatabase(isTest: boolean = false): Promise { + const db = await getDatabase(isTest); + const seedsDir = path.join(__dirname, '../../../database/seed'); + const seeder = new DatabaseSeeder(db, seedsDir); + + await seeder.clearDatabase(); + await seeder.seedDatabase(true); +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/db/sqlite.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/db/sqlite.ts new file mode 100644 index 000000000..c44bcdce9 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/db/sqlite.ts @@ -0,0 +1,179 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/** + * SQLite database connection and helper functions + */ + +import Database from 'better-sqlite3'; +import fs from 'fs'; +import path from 'path'; +import { DB_CONFIG, TEST_DB_CONFIG } from './config'; + +/* + * Database connection and query execution + * Wraps better-sqlite3 Database to maintain API compatibility + */ +class DatabaseConnection { + public db: Database.Database; + + constructor(db: Database.Database) { + this.db = db; + } + + /** + * Execute a SQL statement that modifies data (INSERT, UPDATE, DELETE) + * @param sql SQL statement to execute + * @param params Parameters to bind to the SQL statement + * @returns Object containing lastID (for INSERT) and number of changes + * @throws Error if lastInsertRowid exceeds JavaScript's safe integer range + * @note better-sqlite3 returns lastInsertRowid as number | bigint. We convert bigint to number + * and validate it's within safe integer range to prevent silent truncation. + */ + public run(sql: string, params: unknown[] = []): Promise<{ lastID?: number; changes: number }> { + const info = this.db.prepare(sql).run(...(params as any[])); + const lastID = info.lastInsertRowid; + + // Convert bigint to number with safety check to prevent silent truncation + if (typeof lastID === 'bigint') { + if (lastID > Number.MAX_SAFE_INTEGER || lastID < Number.MIN_SAFE_INTEGER) { + throw new Error(`Row ID ${lastID} exceeds safe integer range (${Number.MIN_SAFE_INTEGER} to ${Number.MAX_SAFE_INTEGER})`); + } + return Promise.resolve({ lastID: Number(lastID), changes: info.changes }); + } + + return Promise.resolve({ lastID, changes: info.changes }); + } + + public get(sql: string, params: unknown[] = []): Promise { + const row = this.db.prepare(sql).get(...(params as any[])); + return Promise.resolve(row as T | undefined); + } + + public all(sql: string, params: unknown[] = []): Promise { + const rows = this.db.prepare(sql).all(...(params as any[])); + return Promise.resolve(rows as T[]); + } + + public close(): Promise { + this.db.close(); + return Promise.resolve(); + } +} + +class SQLiteHelper { + private static instance: SQLiteHelper; + private connection: Database.Database | null = null; + + private constructor() {} + + public static getInstance(): SQLiteHelper { + if (!SQLiteHelper.instance) { + SQLiteHelper.instance = new SQLiteHelper(); + } + return SQLiteHelper.instance; + } + + /** + * Initialize database connection + */ + public async connect(isTest: boolean = false): Promise { + const config = isTest ? TEST_DB_CONFIG : DB_CONFIG; + + // Ensure data directory exists for file-based databases + if (config.DB_FILE !== ':memory:') { + const dataDir = path.dirname(config.DB_FILE); + if (!fs.existsSync(dataDir)) { + fs.mkdirSync(dataDir, { recursive: true }); + } + } + + try { + // better-sqlite3 constructor options + const options: Database.Options = { + verbose: process.env.NODE_ENV === 'development' ? console.log : undefined, + timeout: config.TIMEOUT + }; + + this.connection = new Database(config.DB_FILE, options); + + // Configure database settings + this.setupDatabase(config); + + const wrappedConnection = this.wrapConnection(this.connection); + return wrappedConnection; + } catch (err) { + throw new Error(`Failed to connect to database: ${(err as Error).message}`); + } + } + + /** + * Configure database settings + */ + private setupDatabase(config: typeof DB_CONFIG): void { + if (!this.connection) return; + + // Enable foreign key constraints + if (config.FOREIGN_KEYS) { + try { + this.connection.pragma('foreign_keys = ON'); + } catch (err) { + throw new Error(`Failed to enable foreign key constraints: ${(err as Error).message}`); + } + } + + // Enable WAL mode for better concurrency (only for file databases) + if (config.ENABLE_WAL && config.DB_FILE !== ':memory:') { + try { + this.connection.pragma('journal_mode = WAL'); + } catch (err) { + throw new Error(`Failed to enable WAL mode: ${(err as Error).message}`); + } + } + } + + /** + * Wrap the database connection with promisified methods + */ + private wrapConnection(db: Database.Database): DatabaseConnection { + return new DatabaseConnection(db); + } + + /** + * Close database connection + */ + public async close(): Promise { + if (this.connection) { + try { + this.connection.close(); + this.connection = null; + } catch (err) { + throw new Error(`Failed to close database: ${(err as Error).message}`); + } + } + } +} + +// Global database connection instance +let dbConnection: DatabaseConnection | null = null; + +/** + * Get the global database connection + */ +export async function getDatabase(isTest: boolean = false): Promise { + if (!dbConnection) { + const helper = SQLiteHelper.getInstance(); + dbConnection = await helper.connect(isTest); + } + return dbConnection; +} + +/** + * Close the global database connection + */ +export async function closeDatabase(): Promise { + if (dbConnection) { + await dbConnection.close(); + dbConnection = null; + } +} + +export { SQLiteHelper, DatabaseConnection }; diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/generate-swagger.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/generate-swagger.ts new file mode 100644 index 000000000..3a968bf1d --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/generate-swagger.ts @@ -0,0 +1,27 @@ +import swaggerJsdoc from 'swagger-jsdoc'; +import { writeFileSync } from 'fs'; +import { resolve } from 'path'; + +const swaggerOptions = { + definition: { + openapi: '3.0.0', + info: { + title: 'Express API with Swagger', + version: '1.0.0', + description: 'REST API documentation using Swagger/OpenAPI', + }, + servers: [ + { + url: 'http://localhost:3000', + description: 'Development server', + }, + ], + }, + apis: ['./src/models/*.ts', './src/routes/*.ts'], +}; + +const swaggerSpec = swaggerJsdoc(swaggerOptions); +const outputPath = resolve(__dirname, '..', 'api-swagger.json'); + +writeFileSync(outputPath, JSON.stringify(swaggerSpec, null, 4) + '\n'); +console.log(`Swagger spec written to ${outputPath}`); diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/index.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/index.ts new file mode 100644 index 000000000..d2f278a6b --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/index.ts @@ -0,0 +1,108 @@ +import express from 'express'; +import swaggerJsdoc from 'swagger-jsdoc'; +import swaggerUi from 'swagger-ui-express'; +import cors from 'cors'; +import deliveryRoutes from './routes/delivery'; +import orderDetailDeliveryRoutes from './routes/orderDetailDelivery'; +import productRoutes from './routes/product'; +import orderDetailRoutes from './routes/orderDetail'; +import orderRoutes from './routes/order'; +import branchRoutes from './routes/branch'; +import headquartersRoutes from './routes/headquarters'; +import supplierRoutes from './routes/supplier'; +import { initializeDatabase } from './init-db'; +import { errorHandler } from './utils/errors'; + +const app = express(); +const port = process.env.PORT || 3000; + +// Parse CORS origins from environment variable if available +const corsOrigins = process.env.API_CORS_ORIGINS + ? process.env.API_CORS_ORIGINS.split(',') + : [ + 'http://localhost:5137', + 'http://127.0.0.1:5137', + // Allow all Codespace domains + /^https:\/\/.*\.app\.github\.dev$/, + // Allow all Azure Container Apps domains + /^https:\/\/.*\.azurecontainerapps\.io$/, + ]; + +console.log('Configured CORS origins:', corsOrigins); + +// Enable CORS for the frontend +app.use( + cors({ + origin: corsOrigins, + methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], + allowedHeaders: ['Content-Type', 'Authorization'], + credentials: true, + }), +); + +const swaggerOptions = { + definition: { + openapi: '3.0.0', + info: { + title: 'Express API with Swagger', + version: '1.0.0', + description: 'REST API documentation using Swagger/OpenAPI', + }, + servers: [ + { + url: `http://localhost:${port}`, + description: 'Development server (HTTP)', + }, + { + url: `https://localhost:${port}`, + description: 'Development server (HTTPS)', + }, + ], + }, + apis: ['./src/models/*.ts', './src/routes/*.ts'], +}; + +const swaggerDocs = swaggerJsdoc(swaggerOptions); +app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocs)); + +app.get('/api-docs.json', (req, res) => { + res.setHeader('Content-Type', 'application/json'); + res.send(swaggerDocs); +}); + +app.use(express.json()); + +app.use('/api/deliveries', deliveryRoutes); +app.use('/api/order-detail-deliveries', orderDetailDeliveryRoutes); +app.use('/api/products', productRoutes); +app.use('/api/order-details', orderDetailRoutes); +app.use('/api/orders', orderRoutes); +app.use('/api/branches', branchRoutes); +app.use('/api/headquarters', headquartersRoutes); +app.use('/api/suppliers', supplierRoutes); + +app.get('/', (req, res) => { + res.send('Hello, world!'); +}); + +// Add error handling middleware +app.use(errorHandler); + +// Initialize database and start server +async function startServer() { + try { + console.log('🚀 Initializing database...'); + await initializeDatabase(true); // Always attempt seeding - the seeder checks if it's needed + console.log('✅ Database initialized successfully'); + + app.listen(port, () => { + console.log(`Server is running on port ${port}`); + console.log(`API documentation is available at http://localhost:${port}/api-docs`); + }); + } catch (error) { + console.error('❌ Failed to start server:', error); + process.exit(1); + } +} + +startServer(); diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/init-db.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/init-db.ts new file mode 100644 index 000000000..a6b0b8d9d --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/init-db.ts @@ -0,0 +1,46 @@ +/** + * Database initialization script + * This script runs migrations and optionally seeds the database + */ + +import { runMigrations } from './db/migrate'; +import { seedDatabase } from './db/seed'; +import { closeDatabase } from './db/sqlite'; + +async function initializeDatabase(shouldSeed: boolean = true): Promise { + console.log('🚀 Initializing database...'); + + try { + // Run migrations + await runMigrations(); + + // Seed database if requested + if (shouldSeed) { + await seedDatabase(); + } + + console.log('✅ Database initialization complete!'); + } catch (error) { + console.error('❌ Database initialization failed:', error); + throw error; + } finally { + await closeDatabase(); + } +} + +// Run if called directly +if (require.main === module) { + const shouldSeed = process.argv.includes('--seed') || process.argv.includes('-s'); + + initializeDatabase(shouldSeed) + .then(() => { + console.log('Database initialization completed successfully'); + process.exit(0); + }) + .catch((error) => { + console.error('Database initialization failed:', error); + process.exit(1); + }); +} + +export { initializeDatabase }; diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/branch.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/branch.ts new file mode 100644 index 000000000..e7c385c48 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/branch.ts @@ -0,0 +1,47 @@ +/** + * @swagger + * components: + * schemas: + * Branch: + * type: object + * required: + * - branchId + * - name + * - headquartersId + * properties: + * branchId: + * type: integer + * description: The unique identifier for the branch + * headquartersId: + * type: integer + * description: The ID of the headquarters this branch belongs to + * name: + * type: string + * description: The name of the branch + * address: + * type: string + * description: Physical address of the branch + * phone: + * type: string + * description: Contact phone number for the branch + * description: + * type: string + * description: Additional details about the branch + * contactPerson: + * type: string + * description: Name of the primary contact person + * email: + * type: string + * format: email + * description: Contact email for the branch + */ +export interface Branch { + branchId: number; + headquartersId: number; + name: string; + description: string; + address: string; + contactPerson: string; + email: string; + phone: string; +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/delivery.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/delivery.ts new file mode 100644 index 000000000..fb58ce14e --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/delivery.ts @@ -0,0 +1,38 @@ +/** + * @swagger + * components: + * schemas: + * Delivery: + * type: object + * required: + * - deliveryId + * - supplierId + * - status + * properties: + * deliveryId: + * type: integer + * description: The unique identifier for the delivery + * supplierId: + * type: integer + * description: The ID of the supplier for this delivery + * deliveryDate: + * type: string + * description: The date of the delivery + * name: + * type: string + * description: The name of the delivery + * description: + * type: string + * description: Additional details about the delivery + * status: + * type: string + * description: Current status of the delivery + */ +export interface Delivery { + deliveryId: number; + supplierId: number; + deliveryDate: string; + name: string; + description: string; + status: string; +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/headquarters.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/headquarters.ts new file mode 100644 index 000000000..700214887 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/headquarters.ts @@ -0,0 +1,58 @@ +/** + * @swagger + * components: + * schemas: + * Headquarters: + * type: object + * required: + * - headquartersId + * - name + * properties: + * headquartersId: + * type: integer + * description: The unique identifier for the headquarters + * name: + * type: string + * description: The name of the headquarters + * address: + * type: string + * description: Main office address of the headquarters + * phone: + * type: string + * description: Contact phone number for the headquarters + * description: + * type: string + * description: Additional details about the headquarters + * contactPerson: + * type: string + * description: Name of the primary contact person + * email: + * type: string + * format: email + * description: Contact email for the headquarters + * city: + * type: string + * description: City where the headquarters is located + * country: + * type: string + * description: Country where the headquarters is located + * floorCount: + * type: integer + * description: Number of floors in the headquarters building + * capacity: + * type: integer + * description: Total capacity of the headquarters + */ +export interface Headquarters { + headquartersId: number; + name: string; + description: string; + address: string; + contactPerson: string; + email: string; + phone: string; + city?: string; + country?: string; + floorCount?: number; + capacity?: number; +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/order.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/order.ts new file mode 100644 index 000000000..7938253fa --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/order.ts @@ -0,0 +1,40 @@ +/** + * @swagger + * components: + * schemas: + * Order: + * type: object + * required: + * - orderId + * - branchId + * - orderDate + * properties: + * orderId: + * type: integer + * description: The unique identifier for the order + * branchId: + * type: integer + * description: The ID of the branch that placed the order + * orderDate: + * type: string + * format: date-time + * description: The date and time when the order was placed + * name: + * type: string + * description: The name of the order + * description: + * type: string + * description: Additional details about the order + * status: + * type: string + * description: The current status of the order + * enum: [pending, processing, shipped, delivered, cancelled] + */ +export interface Order { + orderId: number; + branchId: number; + orderDate: string; + name: string; + description: string; + status: string; +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/orderDetail.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/orderDetail.ts new file mode 100644 index 000000000..4c2179b43 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/orderDetail.ts @@ -0,0 +1,41 @@ +/** + * @swagger + * components: + * schemas: + * OrderDetail: + * type: object + * required: + * - orderDetailId + * - orderId + * - productId + * - quantity + * - unitPrice + * properties: + * orderDetailId: + * type: integer + * description: The unique identifier for the order detail + * orderId: + * type: integer + * description: The ID of the parent order + * productId: + * type: integer + * description: The ID of the product ordered + * quantity: + * type: integer + * description: The quantity of products ordered + * unitPrice: + * type: number + * format: float + * description: The price per unit + * notes: + * type: string + * description: Additional notes for the order detail + */ +export interface OrderDetail { + orderDetailId: number; + orderId: number; + productId: number; + quantity: number; + unitPrice: number; + notes: string; +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/orderDetailDelivery.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/orderDetailDelivery.ts new file mode 100644 index 000000000..8a1cb2dfc --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/orderDetailDelivery.ts @@ -0,0 +1,34 @@ +/** + * @swagger + * components: + * schemas: + * OrderDetailDelivery: + * type: object + * required: + * - orderDetailDeliveryId + * - orderDetailId + * - deliveryId + * properties: + * orderDetailDeliveryId: + * type: integer + * description: The unique identifier for the order detail delivery + * orderDetailId: + * type: integer + * description: The ID of the related order detail + * deliveryId: + * type: integer + * description: The ID of the related delivery + * quantity: + * type: integer + * description: The quantity of items in this delivery + * notes: + * type: string + * description: Additional notes about this delivery + */ +export interface OrderDetailDelivery { + orderDetailDeliveryId: number; + orderDetailId: number; + deliveryId: number; + quantity: number; + notes: string; +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/product.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/product.ts new file mode 100644 index 000000000..f141f4aba --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/product.ts @@ -0,0 +1,55 @@ +/** + * @swagger + * components: + * schemas: + * Product: + * type: object + * required: + * - productId + * - supplierId + * - name + * - price + * - sku + * - unit + * properties: + * productId: + * type: integer + * description: The unique identifier for the product + * supplierId: + * type: integer + * description: The ID of the supplier providing this product + * name: + * type: string + * description: The name of the product + * description: + * type: string + * description: Detailed description of the product + * price: + * type: number + * format: float + * description: The current price of the product + * sku: + * type: string + * description: Stock keeping unit code for the product + * unit: + * type: string + * description: Unit of measure for the product (e.g., "piece") + * imgName: + * type: string + * description: Filename of the product image + * discount: + * type: number + * format: float + * description: Discount percentage (if applicable) expressed as a decimal (e.g., 0.25 for 25%) + */ +export interface Product { + productId: number; + supplierId: number; + name: string; + description: string; + price: number; + sku: string; + unit: string; + imgName: string; + discount?: number; +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/supplier.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/supplier.ts new file mode 100644 index 000000000..2875c9a13 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/models/supplier.ts @@ -0,0 +1,46 @@ +/** + * @swagger + * components: + * schemas: + * Supplier: + * type: object + * required: + * - supplierId + * - name + * properties: + * supplierId: + * type: integer + * description: The unique identifier for the supplier + * name: + * type: string + * description: The name of the supplier + * contactPerson: + * type: string + * description: Name of the primary contact person + * email: + * type: string + * format: email + * description: Contact email for the supplier + * phone: + * type: string + * description: Contact phone number for the supplier + * description: + * type: string + * description: Additional details about the supplier + * active: + * type: boolean + * description: Whether the supplier is active + * verified: + * type: boolean + * description: Whether the supplier is verified + */ +export interface Supplier { + supplierId: number; + name: string; + description: string; + contactPerson: string; + email: string; + phone: string; + active: boolean; + verified: boolean; +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/branchesRepo.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/branchesRepo.ts new file mode 100644 index 000000000..db3e6d7ae --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/branchesRepo.ts @@ -0,0 +1,165 @@ +/** + * Repository for branches data access + */ + +import { getDatabase, DatabaseConnection } from '../db/sqlite'; +import { Branch } from '../models/branch'; +import { handleDatabaseError, NotFoundError } from '../utils/errors'; +import { buildInsertSQL, buildUpdateSQL, objectToCamelCase, mapDatabaseRows, DatabaseRow } from '../utils/sql'; + +export class BranchesRepository { + private db: DatabaseConnection; + + constructor(db: DatabaseConnection) { + this.db = db; + } + + /** + * Get all branches + */ + async findAll(): Promise { + try { + const rows = await this.db.all('SELECT * FROM branches ORDER BY branch_id'); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Get branch by ID + */ + async findById(id: number): Promise { + try { + const row = await this.db.get('SELECT * FROM branches WHERE branch_id = ?', [id]); + return row ? objectToCamelCase(row) : null; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Create a new branch + */ + async create(branch: Omit): Promise { + try { + const { sql, values } = buildInsertSQL('branches', branch); + const result = await this.db.run(sql, values); + + const createdBranch = await this.findById(result.lastID || 0); + if (!createdBranch) { + throw new Error('Failed to retrieve created branch'); + } + + return createdBranch; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Update branch by ID + */ + async update(id: number, branch: Partial>): Promise { + try { + const { sql, values } = buildUpdateSQL('branches', branch, 'branch_id = ?'); + const result = await this.db.run(sql, [...values, id]); + + if (result.changes === 0) { + throw new NotFoundError('Branch', id); + } + + const updatedBranch = await this.findById(id); + if (!updatedBranch) { + throw new Error('Failed to retrieve updated branch'); + } + + return updatedBranch; + } catch (error) { + handleDatabaseError(error, 'Branch', id); + } + } + + /** + * Delete branch by ID + */ + async delete(id: number): Promise { + try { + const result = await this.db.run('DELETE FROM branches WHERE branch_id = ?', [id]); + + if (result.changes === 0) { + throw new NotFoundError('Branch', id); + } + } catch (error) { + handleDatabaseError(error, 'Branch', id); + } + } + + /** + * Check if branch exists + */ + async exists(id: number): Promise { + try { + const result = await this.db.get<{ count: number }>( + 'SELECT COUNT(*) as count FROM branches WHERE branch_id = ?', + [id], + ); + return (result?.count || 0) > 0; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Find branches by headquarters ID + */ + async findByHeadquartersId(headquartersId: number): Promise { + try { + const rows = await this.db.all( + 'SELECT * FROM branches WHERE headquarters_id = ? ORDER BY name', + [headquartersId], + ); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Find branches by name (partial match) + */ + async findByName(name: string): Promise { + try { + const rows = await this.db.all( + 'SELECT * FROM branches WHERE name LIKE ? ORDER BY name', + [`%${name}%`], + ); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } +} + +// Factory function to create repository instance +export async function createBranchesRepository( + isTest: boolean = false, +): Promise { + const db = await getDatabase(isTest); + return new BranchesRepository(db); +} + +// Singleton instance for default usage +let branchesRepo: BranchesRepository | null = null; + +export async function getBranchesRepository(isTest: boolean = false): Promise { + const isTestEnv = isTest || process.env.NODE_ENV === 'test' || process.env.VITEST === 'true'; + if (isTestEnv) { + // In tests, always return a fresh repository bound to the current in-memory DB + return createBranchesRepository(true); + } + if (!branchesRepo) { + branchesRepo = await createBranchesRepository(false); + } + return branchesRepo; +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/deliveriesRepo.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/deliveriesRepo.ts new file mode 100644 index 000000000..b6ba66991 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/deliveriesRepo.ts @@ -0,0 +1,192 @@ +/** + * Repository for deliveries data access + */ + +import { getDatabase, DatabaseConnection } from '../db/sqlite'; +import { Delivery } from '../models/delivery'; +import { handleDatabaseError, NotFoundError } from '../utils/errors'; +import { buildInsertSQL, buildUpdateSQL, objectToCamelCase, mapDatabaseRows, DatabaseRow } from '../utils/sql'; + +export class DeliveriesRepository { + private db: DatabaseConnection; + + constructor(db: DatabaseConnection) { + this.db = db; + } + + /** + * Get all deliveries + */ + async findAll(): Promise { + try { + const rows = await this.db.all('SELECT * FROM deliveries ORDER BY delivery_id'); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Get delivery by ID + */ + async findById(id: number): Promise { + try { + const row = await this.db.get('SELECT * FROM deliveries WHERE delivery_id = ?', [id]); + return row ? objectToCamelCase(row) : null; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Create a new delivery + */ + async create(delivery: Omit): Promise { + try { + const { sql, values } = buildInsertSQL('deliveries', delivery); + const result = await this.db.run(sql, values); + + const createdDelivery = await this.findById(result.lastID || 0); + if (!createdDelivery) { + throw new Error('Failed to retrieve created delivery'); + } + + return createdDelivery; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Update delivery by ID + */ + async update(id: number, delivery: Partial>): Promise { + try { + const { sql, values } = buildUpdateSQL('deliveries', delivery, 'delivery_id = ?'); + const result = await this.db.run(sql, [...values, id]); + + if (result.changes === 0) { + throw new NotFoundError('Delivery', id); + } + + const updatedDelivery = await this.findById(id); + if (!updatedDelivery) { + throw new Error('Failed to retrieve updated delivery'); + } + + return updatedDelivery; + } catch (error) { + handleDatabaseError(error, 'Delivery', id); + } + } + + /** + * Delete delivery by ID + */ + async delete(id: number): Promise { + try { + const result = await this.db.run('DELETE FROM deliveries WHERE delivery_id = ?', [id]); + + if (result.changes === 0) { + throw new NotFoundError('Delivery', id); + } + } catch (error) { + handleDatabaseError(error, 'Delivery', id); + } + } + + /** + * Check if delivery exists + */ + async exists(id: number): Promise { + try { + const result = await this.db.get<{ count: number }>( + 'SELECT COUNT(*) as count FROM deliveries WHERE delivery_id = ?', + [id], + ); + return (result?.count || 0) > 0; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Find deliveries by supplier ID + */ + async findBySupplierId(supplierId: number): Promise { + try { + const rows = await this.db.all( + 'SELECT * FROM deliveries WHERE supplier_id = ? ORDER BY delivery_date DESC', + [supplierId], + ); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Find deliveries by status + */ + async findByStatus(status: string): Promise { + try { + const rows = await this.db.all( + 'SELECT * FROM deliveries WHERE status = ? ORDER BY delivery_date DESC', + [status], + ); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Find deliveries by date range + */ + async findByDateRange(startDate: string, endDate: string): Promise { + try { + const rows = await this.db.all( + 'SELECT * FROM deliveries WHERE delivery_date >= ? AND delivery_date <= ? ORDER BY delivery_date DESC', + [startDate, endDate], + ); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Update delivery status + */ + async updateStatus(id: number, status: string): Promise { + try { + return await this.update(id, { status }); + } catch (error) { + handleDatabaseError(error, 'Delivery', id); + } + } +} + +// Factory function to create repository instance +export async function createDeliveriesRepository( + isTest: boolean = false, +): Promise { + const db = await getDatabase(isTest); + return new DeliveriesRepository(db); +} + +// Singleton instance for default usage +let deliveriesRepo: DeliveriesRepository | null = null; + +export async function getDeliveriesRepository( + isTest: boolean = false, +): Promise { + const isTestEnv = isTest || process.env.NODE_ENV === 'test' || process.env.VITEST === 'true'; + if (isTestEnv) { + return createDeliveriesRepository(true); + } + if (!deliveriesRepo) { + deliveriesRepo = await createDeliveriesRepository(false); + } + return deliveriesRepo; +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/headquartersRepo.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/headquartersRepo.ts new file mode 100644 index 000000000..4d60cc723 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/headquartersRepo.ts @@ -0,0 +1,152 @@ +/** + * Repository for headquarters data access + */ + +import { getDatabase, DatabaseConnection } from '../db/sqlite'; +import { Headquarters } from '../models/headquarters'; +import { handleDatabaseError, NotFoundError } from '../utils/errors'; +import { buildInsertSQL, buildUpdateSQL, objectToCamelCase, mapDatabaseRows, DatabaseRow } from '../utils/sql'; + +export class HeadquartersRepository { + private db: DatabaseConnection; + + constructor(db: DatabaseConnection) { + this.db = db; + } + + /** + * Get all headquarters + */ + async findAll(): Promise { + try { + const rows = await this.db.all('SELECT * FROM headquarters ORDER BY headquarters_id'); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Get headquarters by ID + */ + async findById(id: number): Promise { + try { + const row = await this.db.get('SELECT * FROM headquarters WHERE headquarters_id = ?', [ + id, + ]); + return row ? objectToCamelCase(row) : null; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Create a new headquarters + */ + async create(headquarters: Omit): Promise { + try { + const { sql, values } = buildInsertSQL('headquarters', headquarters); + const result = await this.db.run(sql, values); + + const createdHeadquarters = await this.findById(result.lastID || 0); + if (!createdHeadquarters) { + throw new Error('Failed to retrieve created headquarters'); + } + + return createdHeadquarters; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Update headquarters by ID + */ + async update( + id: number, + headquarters: Partial>, + ): Promise { + try { + const { sql, values } = buildUpdateSQL('headquarters', headquarters, 'headquarters_id = ?'); + const result = await this.db.run(sql, [...values, id]); + + if (result.changes === 0) { + throw new NotFoundError('Headquarters', id); + } + + const updatedHeadquarters = await this.findById(id); + if (!updatedHeadquarters) { + throw new Error('Failed to retrieve updated headquarters'); + } + + return updatedHeadquarters; + } catch (error) { + handleDatabaseError(error, 'Headquarters', id); + } + } + + /** + * Delete headquarters by ID + */ + async delete(id: number): Promise { + try { + const result = await this.db.run('DELETE FROM headquarters WHERE headquarters_id = ?', [id]); + + if (result.changes === 0) { + throw new NotFoundError('Headquarters', id); + } + } catch (error) { + handleDatabaseError(error, 'Headquarters', id); + } + } + + /** + * Check if headquarters exists + */ + async exists(id: number): Promise { + try { + const result = await this.db.get<{ count: number }>( + 'SELECT COUNT(*) as count FROM headquarters WHERE headquarters_id = ?', + [id], + ); + return (result?.count || 0) > 0; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Find headquarters by name (partial match) + */ + async findByName(name: string): Promise { + try { + const rows = await this.db.all( + 'SELECT * FROM headquarters WHERE name LIKE ? ORDER BY name', + [`%${name}%`], + ); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } +} + +// Factory function to create repository instance +export async function createHeadquartersRepository( + isTest: boolean = false, +): Promise { + const db = await getDatabase(isTest); + return new HeadquartersRepository(db); +} + +// Singleton instance for default usage +let headquartersRepo: HeadquartersRepository | null = null; + +export async function getHeadquartersRepository( + isTest: boolean = false, +): Promise { + if (!headquartersRepo) { + headquartersRepo = await createHeadquartersRepository(isTest); + } + return headquartersRepo; +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/orderDetailDeliveriesRepo.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/orderDetailDeliveriesRepo.ts new file mode 100644 index 000000000..26cbaa9bf --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/orderDetailDeliveriesRepo.ts @@ -0,0 +1,194 @@ +/** + * Repository for order detail deliveries data access + */ + +import { getDatabase, DatabaseConnection } from '../db/sqlite'; +import { OrderDetailDelivery } from '../models/orderDetailDelivery'; +import { handleDatabaseError, NotFoundError } from '../utils/errors'; +import { buildInsertSQL, buildUpdateSQL, objectToCamelCase, mapDatabaseRows, DatabaseRow } from '../utils/sql'; + +export class OrderDetailDeliveriesRepository { + private db: DatabaseConnection; + + constructor(db: DatabaseConnection) { + this.db = db; + } + + /** + * Get all order detail deliveries + */ + async findAll(): Promise { + try { + const rows = await this.db.all( + 'SELECT * FROM order_detail_deliveries ORDER BY order_detail_delivery_id', + ); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Get order detail delivery by ID + */ + async findById(id: number): Promise { + try { + const row = await this.db.get( + 'SELECT * FROM order_detail_deliveries WHERE order_detail_delivery_id = ?', + [id], + ); + return row ? objectToCamelCase(row) : null; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Create a new order detail delivery + */ + async create( + orderDetailDelivery: Omit, + ): Promise { + try { + const { sql, values } = buildInsertSQL('order_detail_deliveries', orderDetailDelivery); + const result = await this.db.run(sql, values); + + const createdOrderDetailDelivery = await this.findById(result.lastID || 0); + if (!createdOrderDetailDelivery) { + throw new Error('Failed to retrieve created order detail delivery'); + } + + return createdOrderDetailDelivery; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Update order detail delivery by ID + */ + async update( + id: number, + orderDetailDelivery: Partial>, + ): Promise { + try { + const { sql, values } = buildUpdateSQL( + 'order_detail_deliveries', + orderDetailDelivery, + 'order_detail_delivery_id = ?', + ); + const result = await this.db.run(sql, [...values, id]); + + if (result.changes === 0) { + throw new NotFoundError('OrderDetailDelivery', id); + } + + const updatedOrderDetailDelivery = await this.findById(id); + if (!updatedOrderDetailDelivery) { + throw new Error('Failed to retrieve updated order detail delivery'); + } + + return updatedOrderDetailDelivery; + } catch (error) { + handleDatabaseError(error, 'OrderDetailDelivery', id); + } + } + + /** + * Delete order detail delivery by ID + */ + async delete(id: number): Promise { + try { + const result = await this.db.run( + 'DELETE FROM order_detail_deliveries WHERE order_detail_delivery_id = ?', + [id], + ); + + if (result.changes === 0) { + throw new NotFoundError('OrderDetailDelivery', id); + } + } catch (error) { + handleDatabaseError(error, 'OrderDetailDelivery', id); + } + } + + /** + * Check if order detail delivery exists + */ + async exists(id: number): Promise { + try { + const result = await this.db.get<{ count: number }>( + 'SELECT COUNT(*) as count FROM order_detail_deliveries WHERE order_detail_delivery_id = ?', + [id], + ); + return (result?.count || 0) > 0; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Find order detail deliveries by order detail ID + */ + async findByOrderDetailId(orderDetailId: number): Promise { + try { + const rows = await this.db.all( + 'SELECT * FROM order_detail_deliveries WHERE order_detail_id = ? ORDER BY order_detail_delivery_id', + [orderDetailId], + ); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Find order detail deliveries by delivery ID + */ + async findByDeliveryId(deliveryId: number): Promise { + try { + const rows = await this.db.all( + 'SELECT * FROM order_detail_deliveries WHERE delivery_id = ? ORDER BY order_detail_delivery_id', + [deliveryId], + ); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Get total quantity delivered for an order detail + */ + async getTotalQuantityByOrderDetailId(orderDetailId: number): Promise { + try { + const result = await this.db.get<{ total: number }>( + 'SELECT SUM(quantity) as total FROM order_detail_deliveries WHERE order_detail_id = ?', + [orderDetailId], + ); + return result?.total || 0; + } catch (error) { + handleDatabaseError(error); + } + } +} + +// Factory function to create repository instance +export async function createOrderDetailDeliveriesRepository( + isTest: boolean = false, +): Promise { + const db = await getDatabase(isTest); + return new OrderDetailDeliveriesRepository(db); +} + +// Singleton instance for default usage +let orderDetailDeliveriesRepo: OrderDetailDeliveriesRepository | null = null; + +export async function getOrderDetailDeliveriesRepository( + isTest: boolean = false, +): Promise { + if (!orderDetailDeliveriesRepo) { + orderDetailDeliveriesRepo = await createOrderDetailDeliveriesRepository(isTest); + } + return orderDetailDeliveriesRepo; +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/orderDetailsRepo.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/orderDetailsRepo.ts new file mode 100644 index 000000000..601df8680 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/orderDetailsRepo.ts @@ -0,0 +1,182 @@ +/** + * Repository for order details data access + */ + +import { getDatabase, DatabaseConnection } from '../db/sqlite'; +import { OrderDetail } from '../models/orderDetail'; +import { handleDatabaseError, NotFoundError } from '../utils/errors'; +import { buildInsertSQL, buildUpdateSQL, objectToCamelCase, mapDatabaseRows, DatabaseRow } from '../utils/sql'; + +export class OrderDetailsRepository { + private db: DatabaseConnection; + + constructor(db: DatabaseConnection) { + this.db = db; + } + + /** + * Get all order details + */ + async findAll(): Promise { + try { + const rows = await this.db.all('SELECT * FROM order_details ORDER BY order_detail_id'); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Get order detail by ID + */ + async findById(id: number): Promise { + try { + const row = await this.db.get('SELECT * FROM order_details WHERE order_detail_id = ?', [ + id, + ]); + return row ? objectToCamelCase(row) : null; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Create a new order detail + */ + async create(orderDetail: Omit): Promise { + try { + const { sql, values } = buildInsertSQL('order_details', orderDetail); + const result = await this.db.run(sql, values); + + const createdOrderDetail = await this.findById(result.lastID || 0); + if (!createdOrderDetail) { + throw new Error('Failed to retrieve created order detail'); + } + + return createdOrderDetail; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Update order detail by ID + */ + async update( + id: number, + orderDetail: Partial>, + ): Promise { + try { + const { sql, values } = buildUpdateSQL('order_details', orderDetail, 'order_detail_id = ?'); + const result = await this.db.run(sql, [...values, id]); + + if (result.changes === 0) { + throw new NotFoundError('OrderDetail', id); + } + + const updatedOrderDetail = await this.findById(id); + if (!updatedOrderDetail) { + throw new Error('Failed to retrieve updated order detail'); + } + + return updatedOrderDetail; + } catch (error) { + handleDatabaseError(error, 'OrderDetail', id); + } + } + + /** + * Delete order detail by ID + */ + async delete(id: number): Promise { + try { + const result = await this.db.run('DELETE FROM order_details WHERE order_detail_id = ?', [id]); + + if (result.changes === 0) { + throw new NotFoundError('OrderDetail', id); + } + } catch (error) { + handleDatabaseError(error, 'OrderDetail', id); + } + } + + /** + * Check if order detail exists + */ + async exists(id: number): Promise { + try { + const result = await this.db.get<{ count: number }>( + 'SELECT COUNT(*) as count FROM order_details WHERE order_detail_id = ?', + [id], + ); + return (result?.count || 0) > 0; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Find order details by order ID + */ + async findByOrderId(orderId: number): Promise { + try { + const rows = await this.db.all( + 'SELECT * FROM order_details WHERE order_id = ? ORDER BY order_detail_id', + [orderId], + ); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Find order details by product ID + */ + async findByProductId(productId: number): Promise { + try { + const rows = await this.db.all( + 'SELECT * FROM order_details WHERE product_id = ? ORDER BY order_detail_id', + [productId], + ); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Calculate total value for an order + */ + async getTotalValueByOrderId(orderId: number): Promise { + try { + const result = await this.db.get<{ total: number }>( + 'SELECT SUM(quantity * unit_price) as total FROM order_details WHERE order_id = ?', + [orderId], + ); + return result?.total || 0; + } catch (error) { + handleDatabaseError(error); + } + } +} + +// Factory function to create repository instance +export async function createOrderDetailsRepository( + isTest: boolean = false, +): Promise { + const db = await getDatabase(isTest); + return new OrderDetailsRepository(db); +} + +// Singleton instance for default usage +let orderDetailsRepo: OrderDetailsRepository | null = null; + +export async function getOrderDetailsRepository( + isTest: boolean = false, +): Promise { + if (!orderDetailsRepo) { + orderDetailsRepo = await createOrderDetailsRepository(isTest); + } + return orderDetailsRepo; +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/ordersRepo.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/ordersRepo.ts new file mode 100644 index 000000000..76862cc9b --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/ordersRepo.ts @@ -0,0 +1,177 @@ +/** + * Repository for orders data access + */ + +import { getDatabase, DatabaseConnection } from '../db/sqlite'; +import { Order } from '../models/order'; +import { handleDatabaseError, NotFoundError } from '../utils/errors'; +import { buildInsertSQL, buildUpdateSQL, objectToCamelCase, mapDatabaseRows, DatabaseRow } from '../utils/sql'; + +export class OrdersRepository { + private db: DatabaseConnection; + + constructor(db: DatabaseConnection) { + this.db = db; + } + + /** + * Get all orders + */ + async findAll(): Promise { + try { + const rows = await this.db.all('SELECT * FROM orders ORDER BY order_id'); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Get order by ID + */ + async findById(id: number): Promise { + try { + const row = await this.db.get('SELECT * FROM orders WHERE order_id = ?', [id]); + return row ? objectToCamelCase(row) : null; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Create a new order + */ + async create(order: Omit): Promise { + try { + const { sql, values } = buildInsertSQL('orders', order); + const result = await this.db.run(sql, values); + + const createdOrder = await this.findById(result.lastID || 0); + if (!createdOrder) { + throw new Error('Failed to retrieve created order'); + } + + return createdOrder; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Update order by ID + */ + async update(id: number, order: Partial>): Promise { + try { + const { sql, values } = buildUpdateSQL('orders', order, 'order_id = ?'); + const result = await this.db.run(sql, [...values, id]); + + if (result.changes === 0) { + throw new NotFoundError('Order', id); + } + + const updatedOrder = await this.findById(id); + if (!updatedOrder) { + throw new Error('Failed to retrieve updated order'); + } + + return updatedOrder; + } catch (error) { + handleDatabaseError(error, 'Order', id); + } + } + + /** + * Delete order by ID + */ + async delete(id: number): Promise { + try { + const result = await this.db.run('DELETE FROM orders WHERE order_id = ?', [id]); + + if (result.changes === 0) { + throw new NotFoundError('Order', id); + } + } catch (error) { + handleDatabaseError(error, 'Order', id); + } + } + + /** + * Check if order exists + */ + async exists(id: number): Promise { + try { + const result = await this.db.get<{ count: number }>( + 'SELECT COUNT(*) as count FROM orders WHERE order_id = ?', + [id], + ); + return (result?.count || 0) > 0; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Find orders by branch ID + */ + async findByBranchId(branchId: number): Promise { + try { + const rows = await this.db.all( + 'SELECT * FROM orders WHERE branch_id = ? ORDER BY order_date DESC', + [branchId], + ); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Find orders by status + */ + async findByStatus(status: string): Promise { + try { + const rows = await this.db.all( + 'SELECT * FROM orders WHERE status = ? ORDER BY order_date DESC', + [status], + ); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Find orders by date range + */ + async findByDateRange(startDate: string, endDate: string): Promise { + try { + const rows = await this.db.all( + 'SELECT * FROM orders WHERE order_date >= ? AND order_date <= ? ORDER BY order_date DESC', + [startDate, endDate], + ); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } +} + +// Factory function to create repository instance +export async function createOrdersRepository(isTest: boolean = false): Promise { + const db = await getDatabase(isTest); + return new OrdersRepository(db); +} + +// Singleton instance for default usage +let ordersRepo: OrdersRepository | null = null; + +export async function getOrdersRepository(isTest: boolean = false): Promise { + const isTestEnv = isTest || process.env.NODE_ENV === 'test' || process.env.VITEST === 'true'; + if (isTestEnv) { + return createOrdersRepository(true); + } + if (!ordersRepo) { + ordersRepo = await createOrdersRepository(false); + } + return ordersRepo; +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/productsRepo.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/productsRepo.ts new file mode 100644 index 000000000..c8e749839 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/productsRepo.ts @@ -0,0 +1,164 @@ +/** + * Repository for products data access + */ + +import { getDatabase, DatabaseConnection } from '../db/sqlite'; +import { Product } from '../models/product'; +import { handleDatabaseError, NotFoundError } from '../utils/errors'; +import { buildInsertSQL, buildUpdateSQL, objectToCamelCase, mapDatabaseRows, DatabaseRow } from '../utils/sql'; + +export class ProductsRepository { + private db: DatabaseConnection; + + constructor(db: DatabaseConnection) { + this.db = db; + } + + /** + * Get all products + */ + async findAll(): Promise { + try { + const rows = await this.db.all('SELECT * FROM products ORDER BY product_id'); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Get product by ID + */ + async findById(id: number): Promise { + try { + const row = await this.db.get('SELECT * FROM products WHERE product_id = ?', [id]); + return row ? objectToCamelCase(row) : null; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Create a new product + */ + async create(product: Omit): Promise { + try { + const { sql, values } = buildInsertSQL('products', product); + const result = await this.db.run(sql, values); + + const createdProduct = await this.findById(result.lastID || 0); + if (!createdProduct) { + throw new Error('Failed to retrieve created product'); + } + + return createdProduct; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Update product by ID + */ + async update(id: number, product: Partial>): Promise { + try { + const { sql, values } = buildUpdateSQL('products', product, 'product_id = ?'); + const result = await this.db.run(sql, [...values, id]); + + if (result.changes === 0) { + throw new NotFoundError('Product', id); + } + + const updatedProduct = await this.findById(id); + if (!updatedProduct) { + throw new Error('Failed to retrieve updated product'); + } + + return updatedProduct; + } catch (error) { + handleDatabaseError(error, 'Product', id); + } + } + + /** + * Delete product by ID + */ + async delete(id: number): Promise { + try { + const result = await this.db.run('DELETE FROM products WHERE product_id = ?', [id]); + + if (result.changes === 0) { + throw new NotFoundError('Product', id); + } + } catch (error) { + handleDatabaseError(error, 'Product', id); + } + } + + /** + * Check if product exists + */ + async exists(id: number): Promise { + try { + const result = await this.db.get<{ count: number }>( + 'SELECT COUNT(*) as count FROM products WHERE product_id = ?', + [id], + ); + return (result?.count || 0) > 0; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Find products by supplier ID + */ + async findBySupplierId(supplierId: number): Promise { + try { + const rows = await this.db.all( + 'SELECT * FROM products WHERE supplier_id = ? ORDER BY name', + [supplierId], + ); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Find products by name (partial match) + */ + async findByName(name: string): Promise { + try { + const rows = await this.db.all( + `SELECT * FROM products WHERE name LIKE '%${name}%' ORDER BY name`, + ); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } +} + +// Factory function to create repository instance +export async function createProductsRepository( + isTest: boolean = false, +): Promise { + const db = await getDatabase(isTest); + return new ProductsRepository(db); +} + +// Singleton instance for default usage +let productsRepo: ProductsRepository | null = null; + +export async function getProductsRepository(isTest: boolean = false): Promise { + const isTestEnv = isTest || process.env.NODE_ENV === 'test' || process.env.VITEST === 'true'; + if (isTestEnv) { + // In tests, always return a fresh repository bound to the current in-memory DB + return createProductsRepository(true); + } + if (!productsRepo) { + productsRepo = await createProductsRepository(false); + } + return productsRepo; +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/suppliersRepo.test.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/suppliersRepo.test.ts new file mode 100644 index 000000000..4a57cc195 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/suppliersRepo.test.ts @@ -0,0 +1,209 @@ +import { describe, it, expect, beforeEach, vi } from 'vitest'; +import { SuppliersRepository } from './suppliersRepo'; +import { NotFoundError } from '../utils/errors'; + +// Mock the getDatabase function first +vi.mock('../db/sqlite', () => ({ + getDatabase: vi.fn() +})); + +// Import the mocked module +import { getDatabase } from '../db/sqlite'; + +describe('SuppliersRepository', () => { + let repository: SuppliersRepository; + let mockDb: any; + + beforeEach(() => { + // Create mock database connection + mockDb = { + db: {} as any, + run: vi.fn(), + get: vi.fn(), + all: vi.fn(), + close: vi.fn() + }; + + // Mock getDatabase to return our mock + (getDatabase as any).mockResolvedValue(mockDb); + + repository = new SuppliersRepository(mockDb); + vi.clearAllMocks(); + }); + + describe('findAll', () => { + it('should return all suppliers', async () => { + const mockResults = [ + { supplier_id: 1, name: 'Test Supplier', description: 'Test', contact_person: 'John', email: 'john@test.com', phone: '555-1234', active: true, verified: true } + ]; + mockDb.all.mockResolvedValue(mockResults); + + const result = await repository.findAll(); + + expect(mockDb.all).toHaveBeenCalledWith('SELECT * FROM suppliers ORDER BY supplier_id'); + expect(result).toHaveLength(1); + expect(result[0].supplierId).toBe(1); + expect(result[0].name).toBe('Test Supplier'); + }); + + it('should return empty array when no suppliers exist', async () => { + mockDb.all.mockResolvedValue([]); + + const result = await repository.findAll(); + + expect(result).toEqual([]); + }); + }); + + describe('findById', () => { + it('should return supplier when found', async () => { + const mockResult = { + supplier_id: 1, + name: 'Test Supplier', + description: 'Test', + contact_person: 'John', + email: 'john@test.com', + phone: '555-1234', + active: true, + verified: true + }; + mockDb.get.mockResolvedValue(mockResult); + + const result = await repository.findById(1); + + expect(mockDb.get).toHaveBeenCalledWith('SELECT * FROM suppliers WHERE supplier_id = ?', [1]); + expect(result?.supplierId).toBe(1); + expect(result?.name).toBe('Test Supplier'); + }); + + it('should return null when supplier not found', async () => { + mockDb.get.mockResolvedValue(undefined); + + const result = await repository.findById(999); + + expect(result).toBeNull(); + }); + }); + + describe('create', () => { + it('should create a new supplier and return it', async () => { + const newSupplier = { + name: 'New Supplier', + description: 'New Description', + contactPerson: 'Jane Doe', + email: 'jane@test.com', + phone: '555-5678', + active: true, + verified: false + }; + + mockDb.run.mockResolvedValue({ lastID: 2, changes: 1 }); + mockDb.get.mockResolvedValue({ + supplier_id: 2, + name: 'New Supplier', + description: 'New Description', + contact_person: 'Jane Doe', + email: 'jane@test.com', + phone: '555-5678', + active: true, + verified: false + }); + + const result = await repository.create(newSupplier); + + expect(mockDb.run).toHaveBeenCalledWith( + 'INSERT INTO suppliers (name, description, contact_person, email, phone, active, verified) VALUES (?, ?, ?, ?, ?, ?, ?)', + ['New Supplier', 'New Description', 'Jane Doe', 'jane@test.com', '555-5678', true, false] + ); + expect(result.supplierId).toBe(2); + expect(result.name).toBe('New Supplier'); + }); + }); + + describe('update', () => { + it('should update existing supplier and return updated data', async () => { + const updateData = { name: 'Updated Supplier' }; + + mockDb.run.mockResolvedValue({ changes: 1 }); + mockDb.get.mockResolvedValue({ + supplier_id: 1, + name: 'Updated Supplier', + description: 'Test', + contact_person: 'John', + email: 'john@test.com', + phone: '555-1234', + active: true, + verified: true + }); + + const result = await repository.update(1, updateData); + + expect(mockDb.run).toHaveBeenCalledWith( + 'UPDATE suppliers SET name = ? WHERE supplier_id = ?', + ['Updated Supplier', 1] + ); + expect(result.name).toBe('Updated Supplier'); + }); + + it('should throw NotFoundError when supplier does not exist', async () => { + mockDb.run.mockResolvedValue({ changes: 0 }); + + await expect(repository.update(999, { name: 'Updated' })) + .rejects.toThrow(NotFoundError); + }); + }); + + describe('delete', () => { + it('should delete existing supplier', async () => { + mockDb.run.mockResolvedValue({ changes: 1 }); + + await repository.delete(1); + + expect(mockDb.run).toHaveBeenCalledWith('DELETE FROM suppliers WHERE supplier_id = ?', [1]); + }); + + it('should throw NotFoundError when supplier does not exist', async () => { + mockDb.run.mockResolvedValue({ changes: 0 }); + + await expect(repository.delete(999)) + .rejects.toThrow(NotFoundError); + }); + }); + + describe('exists', () => { + it('should return true when supplier exists', async () => { + mockDb.get.mockResolvedValue({ count: 1 }); + + const result = await repository.exists(1); + + expect(result).toBe(true); + expect(mockDb.get).toHaveBeenCalledWith('SELECT COUNT(*) as count FROM suppliers WHERE supplier_id = ?', [1]); + }); + + it('should return false when supplier does not exist', async () => { + mockDb.get.mockResolvedValue({ count: 0 }); + + const result = await repository.exists(999); + + expect(result).toBe(false); + }); + }); + + describe('findByName', () => { + it('should return suppliers matching name pattern', async () => { + const mockResults = [ + { supplier_id: 1, name: 'Test Supplier', description: 'Test', contact_person: 'John', email: 'john@test.com', phone: '555-1234', active: true, verified: true } + ]; + mockDb.all.mockResolvedValue(mockResults); + + const result = await repository.findByName('Test'); + + expect(mockDb.all).toHaveBeenCalledWith( + 'SELECT * FROM suppliers WHERE name LIKE ? ORDER BY name', + ['%Test%'] + ); + expect(result).toHaveLength(1); + expect(result[0].name).toBe('Test Supplier'); + }); + }); +}); diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/suppliersRepo.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/suppliersRepo.ts new file mode 100644 index 000000000..7237d4f79 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/repositories/suppliersRepo.ts @@ -0,0 +1,162 @@ +/** + * Repository for suppliers data access + */ + +import { getDatabase, DatabaseConnection } from '../db/sqlite'; +import { Supplier } from '../models/supplier'; +import { handleDatabaseError, NotFoundError } from '../utils/errors'; +import { buildInsertSQL, buildUpdateSQL, objectToCamelCase, mapDatabaseRows, DatabaseRow } from '../utils/sql'; + +export class SuppliersRepository { + private db: DatabaseConnection; + + constructor(db: DatabaseConnection) { + this.db = db; + } + + /** + * Get all suppliers + */ + async findAll(): Promise { + try { + const rows = await this.db.all('SELECT * FROM suppliers ORDER BY supplier_id'); + return mapDatabaseRows(rows).map(this.convertBooleanFields); + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Get supplier by ID + */ + async findById(id: number): Promise { + try { + const row = await this.db.get('SELECT * FROM suppliers WHERE supplier_id = ?', [id]); + return row ? this.convertBooleanFields(objectToCamelCase(row)) : null; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Convert integer fields to boolean for SQLite compatibility + */ + private convertBooleanFields(supplier: Supplier): Supplier { + return { + ...supplier, + active: Boolean(supplier.active), + verified: Boolean(supplier.verified), + }; + } + + /** + * Create a new supplier + */ + async create(supplier: Omit): Promise { + try { + const { sql, values } = buildInsertSQL('suppliers', supplier); + const result = await this.db.run(sql, values); + + const createdSupplier = await this.findById(result.lastID || 0); + if (!createdSupplier) { + throw new Error('Failed to retrieve created supplier'); + } + + return createdSupplier; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Update supplier by ID + */ + async update(id: number, supplier: Partial>): Promise { + try { + const { sql, values } = buildUpdateSQL('suppliers', supplier, 'supplier_id = ?'); + const result = await this.db.run(sql, [...values, id]); + + if (result.changes === 0) { + throw new NotFoundError('Supplier', id); + } + + const updatedSupplier = await this.findById(id); + if (!updatedSupplier) { + throw new Error('Failed to retrieve updated supplier'); + } + + return updatedSupplier; + } catch (error) { + handleDatabaseError(error, 'Supplier', id); + } + } + + /** + * Delete supplier by ID + */ + async delete(id: number): Promise { + try { + const result = await this.db.run('DELETE FROM suppliers WHERE supplier_id = ?', [id]); + + if (result.changes === 0) { + throw new NotFoundError('Supplier', id); + } + } catch (error) { + handleDatabaseError(error, 'Supplier', id); + } + } + + /** + * Check if supplier exists + */ + async exists(id: number): Promise { + try { + const result = await this.db.get<{ count: number }>( + 'SELECT COUNT(*) as count FROM suppliers WHERE supplier_id = ?', + [id], + ); + return (result?.count || 0) > 0; + } catch (error) { + handleDatabaseError(error); + } + } + + /** + * Find suppliers by name (partial match) + */ + async findByName(name: string): Promise { + try { + const rows = await this.db.all( + 'SELECT * FROM suppliers WHERE name LIKE ? ORDER BY name', + [`%${name}%`], + ); + return mapDatabaseRows(rows); + } catch (error) { + handleDatabaseError(error); + } + } +} + +// Factory function to create repository instance +export async function createSuppliersRepository( + isTest: boolean = false, +): Promise { + const db = await getDatabase(isTest); + return new SuppliersRepository(db); +} + +// Singleton instance for default usage +let suppliersRepo: SuppliersRepository | null = null; + +export async function getSuppliersRepository( + isTest: boolean = false, +): Promise { + const isTestEnv = isTest || process.env.NODE_ENV === 'test' || process.env.VITEST === 'true'; + if (isTestEnv) { + return createSuppliersRepository(true); + } + if (!suppliersRepo) { + suppliersRepo = await createSuppliersRepository(false); + } + return suppliersRepo; +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/branch.test.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/branch.test.ts new file mode 100644 index 000000000..cd2f57a94 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/branch.test.ts @@ -0,0 +1,120 @@ +import { describe, it, expect, beforeEach, afterEach } from 'vitest'; +import request from 'supertest'; +import express from 'express'; +import branchRouter from './branch'; +import { runMigrations } from '../db/migrate'; +import { closeDatabase, getDatabase } from '../db/sqlite'; +import { errorHandler } from '../utils/errors'; + +let app: express.Express; + +describe('Branch API', () => { + beforeEach(async () => { + // Ensure a fresh in-memory database for each test + await closeDatabase(); + await getDatabase(true); + await runMigrations(true); + + // Seed required foreign key: headquarters id 1 + const db = await getDatabase(); + await db.run('INSERT INTO headquarters (headquarters_id, name) VALUES (?, ?)', [1, 'HQ One']); + + // Set up express app + app = express(); + app.use(express.json()); + app.use('/branches', branchRouter); + // Attach error handler to translate repo errors + app.use(errorHandler); + }); + + afterEach(async () => { + await closeDatabase(); + }); + + it('should create a new branch', async () => { + const newBranch = { + headquartersId: 1, + name: 'Eastside Branch', + description: 'Eastern district branch', + address: '321 East St', + contactPerson: 'Emma Davis', + email: 'edavis@octo.com', + phone: '555-0203', + }; + const response = await request(app).post('/branches').send(newBranch); + expect(response.status).toBe(201); + expect(response.body).toMatchObject(newBranch); + expect(response.body.branchId).toBeDefined(); + }); + + it('should get all branches', async () => { + const response = await request(app).get('/branches'); + expect(response.status).toBe(200); + expect(Array.isArray(response.body)).toBe(true); + }); + + it('should get a branch by ID', async () => { + // First create a branch to test getting it + const newBranch = { + headquartersId: 1, + name: 'Test Branch', + description: 'Test branch', + address: '123 Test St', + contactPerson: 'Test Person', + email: 'test@test.com', + phone: '555-0000', + }; + const createResponse = await request(app).post('/branches').send(newBranch); + const branchId = createResponse.body.branchId; + + const response = await request(app).get(`/branches/${branchId}`); + expect(response.status).toBe(200); + expect(response.body.branchId).toBe(branchId); + }); + + it('should update a branch by ID', async () => { + // First create a branch to test updating it + const newBranch = { + headquartersId: 1, + name: 'Original Branch', + description: 'Original description', + address: '123 Original St', + contactPerson: 'Original Person', + email: 'original@test.com', + phone: '555-0001', + }; + const createResponse = await request(app).post('/branches').send(newBranch); + const branchId = createResponse.body.branchId; + + const updatedBranch = { + ...newBranch, + name: 'Updated Branch Name', + }; + const response = await request(app).put(`/branches/${branchId}`).send(updatedBranch); + expect(response.status).toBe(200); + expect(response.body.name).toBe('Updated Branch Name'); + }); + + it('should delete a branch by ID', async () => { + // First create a branch to test deleting it + const newBranch = { + headquartersId: 1, + name: 'Delete Me Branch', + description: 'This branch will be deleted', + address: '123 Delete St', + contactPerson: 'Delete Person', + email: 'delete@test.com', + phone: '555-9999', + }; + const createResponse = await request(app).post('/branches').send(newBranch); + const branchId = createResponse.body.branchId; + + const response = await request(app).delete(`/branches/${branchId}`); + expect(response.status).toBe(204); + }); + + it('should return 404 for non-existing branch', async () => { + const response = await request(app).get('/branches/999'); + expect(response.status).toBe(404); + }); +}); diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/branch.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/branch.ts new file mode 100644 index 000000000..b1ffdccb8 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/branch.ts @@ -0,0 +1,176 @@ +/** + * @swagger + * tags: + * name: Branches + * description: API endpoints for managing branches + */ + +/** + * @swagger + * /api/branches: + * get: + * summary: Returns all branches + * tags: [Branches] + * responses: + * 200: + * description: List of all branches + * content: + * application/json: + * schema: + * type: array + * items: + * $ref: '#/components/schemas/Branch' + * post: + * summary: Create a new branch + * tags: [Branches] + * requestBody: + * required: true + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Branch' + * responses: + * 201: + * description: Branch created successfully + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Branch' + * + * /api/branches/{id}: + * get: + * summary: Get a branch by ID + * tags: [Branches] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Branch ID + * responses: + * 200: + * description: Branch found + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Branch' + * 404: + * description: Branch not found + * put: + * summary: Update a branch + * tags: [Branches] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Branch ID + * requestBody: + * required: true + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Branch' + * responses: + * 200: + * description: Branch updated successfully + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Branch' + * 404: + * description: Branch not found + * delete: + * summary: Delete a branch + * tags: [Branches] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Branch ID + * responses: + * 204: + * description: Branch deleted successfully + * 404: + * description: Branch not found + */ + +import express from 'express'; +import { Branch } from '../models/branch'; +import { getBranchesRepository } from '../repositories/branchesRepo'; +import { NotFoundError } from '../utils/errors'; + +const router = express.Router(); + +// Create a new branch +router.post('/', async (req, res, next) => { + try { + const repo = await getBranchesRepository(); + const newBranch = await repo.create(req.body as Omit); + res.status(201).json(newBranch); + } catch (error) { + next(error); + } +}); + +// Get all branches +router.get('/', async (req, res, next) => { + try { + const repo = await getBranchesRepository(); + const branches = await repo.findAll(); + res.json(branches); + } catch (error) { + next(error); + } +}); + +// Get a branch by ID +router.get('/:id', async (req, res, next) => { + try { + const repo = await getBranchesRepository(); + const branch = await repo.findById(parseInt(req.params.id)); + if (branch) { + res.json(branch); + } else { + res.status(404).send('Branch not found'); + } + } catch (error) { + next(error); + } +}); + +// Update a branch by ID +router.put('/:id', async (req, res, next) => { + try { + const repo = await getBranchesRepository(); + const updatedBranch = await repo.update(parseInt(req.params.id), req.body); + res.json(updatedBranch); + } catch (error) { + if (error instanceof NotFoundError) { + res.status(404).send('Branch not found'); + } else { + next(error); + } + } +}); + +// Delete a branch by ID +router.delete('/:id', async (req, res, next) => { + try { + const repo = await getBranchesRepository(); + await repo.delete(parseInt(req.params.id)); + res.status(204).send(); + } catch (error) { + if (error instanceof NotFoundError) { + res.status(404).send('Branch not found'); + } else { + next(error); + } + } +}); + +export default router; diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/delivery.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/delivery.ts new file mode 100644 index 000000000..9bd7bf2df --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/delivery.ts @@ -0,0 +1,257 @@ +/** + * @swagger + * tags: + * name: Deliveries + * description: API endpoints for managing deliveries + */ + +/** + * @swagger + * /api/deliveries: + * get: + * summary: Returns all deliveries + * tags: [Deliveries] + * responses: + * 200: + * description: List of all deliveries + * content: + * application/json: + * schema: + * type: array + * items: + * $ref: '#/components/schemas/Delivery' + * post: + * summary: Create a new delivery + * tags: [Deliveries] + * requestBody: + * required: true + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Delivery' + * responses: + * 201: + * description: Delivery created successfully + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Delivery' + * + * /api/deliveries/{id}: + * get: + * summary: Get a delivery by ID + * tags: [Deliveries] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Delivery ID + * responses: + * 200: + * description: Delivery found + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Delivery' + * 404: + * description: Delivery not found + * put: + * summary: Update a delivery + * tags: [Deliveries] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Delivery ID + * requestBody: + * required: true + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Delivery' + * responses: + * 200: + * description: Delivery updated successfully + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Delivery' + * 404: + * description: Delivery not found + * delete: + * summary: Delete a delivery + * tags: [Deliveries] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Delivery ID + * responses: + * 204: + * description: Delivery deleted successfully + * 404: + * description: Delivery not found + * + * /api/deliveries/{id}/status: + * put: + * summary: Update the status of a delivery + * tags: [Deliveries] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Delivery ID + * requestBody: + * required: true + * content: + * application/json: + * schema: + * type: object + * required: + * - status + * properties: + * status: + * type: string + * description: The new status of the delivery + * deliveryPartner: + * type: string + * description: Optional delivery partner to notify via the notify-service about the status update + * responses: + * 200: + * description: Delivery status updated successfully + * content: + * application/json: + * schema: + * oneOf: + * - $ref: '#/components/schemas/Delivery' + * - type: object + * properties: + * delivery: + * $ref: '#/components/schemas/Delivery' + * commandOutput: + * type: string + * description: Output from the notify-service command + * 404: + * description: Delivery not found + * 500: + * description: Error executing notify command + */ + +import express from 'express'; +import { Delivery } from '../models/delivery'; +import { exec } from 'child_process'; +import { getDeliveriesRepository } from '../repositories/deliveriesRepo'; +import { NotFoundError } from '../utils/errors'; + + +const router = express.Router(); + +// Create a new delivery +router.post('/', async (req, res, next) => { + try { + const repo = await getDeliveriesRepository(); + const newDelivery = await repo.create(req.body as Omit); + res.status(201).json(newDelivery); + } catch (error) { + next(error); + } +}); + +// Get all deliveries +router.get('/', async (req, res, next) => { + try { + const repo = await getDeliveriesRepository(); + const deliveries = await repo.findAll(); + res.json(deliveries); + } catch (error) { + next(error); + } +}); + +// Get a delivery by ID +router.get('/:id', async (req, res, next) => { + try { + const repo = await getDeliveriesRepository(); + const delivery = await repo.findById(parseInt(req.params.id)); + if (delivery) { + res.json(delivery); + } else { + res.status(404).send('Delivery not found'); + } + } catch (error) { + next(error); + } +}); + +// Update the status of a delivery +router.put('/:id/status', async (req, res, next) => { + try { + const { status, deliveryPartner } = req.body; + const repo = await getDeliveriesRepository(); + const delivery = await repo.findById(parseInt(req.params.id)); + + if (delivery) { + const updatedDelivery = await repo.updateStatus(parseInt(req.params.id), status); + + if (deliveryPartner) { + exec(`notify ${deliveryPartner}`, (error, stdout) => { + if (error) { + console.error(`Error executing command: ${error}`); + return res.status(500).json({ error: error.message }); + } + res.json({ delivery: updatedDelivery, commandOutput: stdout }); + }); + } else { + res.json(updatedDelivery); + } + } else { + res.status(404).send('Delivery not found'); + } + } catch (error) { + if (error instanceof NotFoundError) { + res.status(404).send('Delivery not found'); + } else { + next(error); + } + } +}); + +// Update a delivery by ID +router.put('/:id', async (req, res, next) => { + try { + const repo = await getDeliveriesRepository(); + const updatedDelivery = await repo.update(parseInt(req.params.id), req.body); + res.json(updatedDelivery); + } catch (error) { + if (error instanceof NotFoundError) { + res.status(404).send('Delivery not found'); + } else { + next(error); + } + } +}); + +// Delete a delivery by ID +router.delete('/:id', async (req, res, next) => { + try { + const repo = await getDeliveriesRepository(); + await repo.delete(parseInt(req.params.id)); + res.status(204).send(); + } catch (error) { + if (error instanceof NotFoundError) { + res.status(404).send('Delivery not found'); + } else { + next(error); + } + } +}); + +export default router; diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/headquarters.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/headquarters.ts new file mode 100644 index 000000000..b1cd4f1ce --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/headquarters.ts @@ -0,0 +1,335 @@ +/** + * @swagger + * tags: + * name: Headquarters + * description: API endpoints for managing headquarters locations + */ + +/** + * @swagger + * /api/headquarters: + * get: + * summary: Returns all headquarters + * tags: [Headquarters] + * responses: + * 200: + * description: List of all headquarters + * content: + * application/json: + * schema: + * type: array + * items: + * $ref: '#/components/schemas/Headquarters' + * post: + * summary: Create a new headquarters + * tags: [Headquarters] + * requestBody: + * required: true + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Headquarters' + * responses: + * 201: + * description: Headquarters created successfully + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Headquarters' + * + * /api/headquarters/{id}: + * get: + * summary: Get a headquarters by ID + * tags: [Headquarters] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Headquarters ID + * responses: + * 200: + * description: Headquarters found + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Headquarters' + * 404: + * description: Headquarters not found + * put: + * summary: Update a headquarters + * tags: [Headquarters] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Headquarters ID + * requestBody: + * required: true + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Headquarters' + * responses: + * 200: + * description: Headquarters updated successfully + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Headquarters' + * 404: + * description: Headquarters not found + * delete: + * summary: Delete a headquarters + * tags: [Headquarters] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Headquarters ID + * responses: + * 204: + * description: Headquarters deleted successfully + * 404: + * description: Headquarters not found + * + * /api/headquarters/{id}/metrics: + * get: + * summary: Get headquarters metrics by ID + * tags: [Headquarters] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Headquarters ID + * responses: + * 200: + * description: Headquarters metrics calculated + * content: + * application/json: + * schema: + * type: object + * properties: + * score: + * type: number + * description: Total score calculated from ID, floor count, and capacity + * average: + * type: number + * description: Average value + * display: + * type: string + * description: Display text + * 404: + * description: Headquarters not found + * + * /api/headquarters/{id}/label: + * get: + * summary: Get headquarters label by ID + * tags: [Headquarters] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Headquarters ID + * responses: + * 200: + * description: Headquarters label created + * content: + * application/json: + * schema: + * type: object + * properties: + * label: + * type: string + * description: Formatted location label + * 404: + * description: Headquarters not found + */ + +import express from 'express'; +import { Headquarters } from '../models/headquarters'; +import { getHeadquartersRepository } from '../repositories/headquartersRepo'; +import { NotFoundError } from '../utils/errors'; + +const router = express.Router(); + + +// Get all headquarters +router.get('/', async (req, res, next) => { + try { + const repo = await getHeadquartersRepository(); + const headquarters = await repo.findAll(); + res.json(headquarters); + } catch (error) { + next(error); + } +}); + +// Get a headquarters by ID +router.get('/:id', async (req, res, next) => { + try { + const repo = await getHeadquartersRepository(); + const headquarters = await repo.findById(parseInt(req.params.id)); + if (headquarters) { + res.json(headquarters); + } else { + res.status(404).send('Headquarters not found'); + } + } catch (error) { + next(error); + } +}); + +// Create a new headquarters +router.post('/', async (req, res, next) => { + try { + const repo = await getHeadquartersRepository(); + + const hqValidator = new (HeadquartersValidator as any)(req.body.name, req.body.address); + if (!hqValidator.isValid()) { + res.status(400).send('Invalid headquarters data'); + return; + } + + const newHeadquarters = await repo.create(req.body as Omit); + res.status(201).json(newHeadquarters); + } catch (error) { + next(error); + } +}); + +// Update a headquarters by ID +router.put('/:id', async (req, res, next) => { + try { + const repo = await getHeadquartersRepository(); + + const hqValidator = (HeadquartersValidator as any)(req.body.name, req.body.address); + if (!hqValidator.isValid()) { + res.status(400).send('Invalid headquarters data'); + return; + } + + const updatedHeadquarters = await repo.update(parseInt(req.params.id), req.body); + res.json(updatedHeadquarters); + } catch (error) { + if (error instanceof NotFoundError) { + res.status(404).send('Headquarters not found'); + } else { + next(error); + } + } +}); + + +// Delete a headquarters by ID +router.delete('/:id', async (req, res, next) => { + try { + const repo = await getHeadquartersRepository(); + await repo.delete(parseInt(req.params.id)); + res.status(204).send(); + } catch (error) { + if (error instanceof NotFoundError) { + res.status(404).send('Headquarters not found'); + } else { + next(error); + } + } +}); + +// Get headquarters metrics by ID +router.get('/:id/metrics', async (req, res, next) => { + try { + const repo = await getHeadquartersRepository(); + const headquarters = await repo.findById(parseInt(req.params.id)); + if (!headquarters) { + res.status(404).send('Headquarters not found'); + return; + } + + const metrics = calculateHeadquartersMetrics( + headquarters.headquartersId, + headquarters.floorCount || 0, + headquarters.capacity || 0 + ); + res.json(metrics); + } catch (error) { + next(error); + } +}); + +// Get headquarters label by ID +router.get('/:id/label', async (req, res, next) => { + try { + const repo = await getHeadquartersRepository(); + const headquarters = await repo.findById(parseInt(req.params.id)); + if (!headquarters) { + res.status(404).send('Headquarters not found'); + return; + } + + const label = createLocationLabel( + headquarters.name, + headquarters.city || '', + headquarters.country || '' + ); + res.json({ label }); + } catch (error) { + next(error); + } +}); + + + +// Inconsistent use of new: helper function used both as constructor and regular function +function HeadquartersValidator(this: any, name: any, address: any) { + if(!validateHQName(name)) { + throw new Error('Invalid headquarters name'); + }; + + this.name = name; + this.address = address; + this.isValid = function () { + return this.name && this.address; + }; +} + +// Missing space in concatenation example +function createLocationLabel(name: string, city: string, country: string): string { + const label = `Location:${ name }City:${ city }Country:${ country}`; // Missing spaces + return label; +} + +// Implicit operand conversion example +function calculateHeadquartersMetrics(id: any, floorCount: any, capacity: any): any { + // This will cause implicit conversion issues when mixed types are passed + const totalScore = id + floorCount + capacity; // Could be string concatenation or numeric addition + const averageValue = (id + floorCount) / 2; // Mixed type division + const displayText = `HQ-${ id }${floorCount}`; // Implicit string conversion + + return { + score: totalScore, + average: averageValue, + display: displayText + }; +} + +// Misleading indentation example +function validateHQName(hq: any): boolean { + if (hq.name) + console.log('Name is valid'); + return true; // This appears to be part of the if, but it's not! + console.log('Name is invalid'); + + return false; +} + +export default router; diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/order.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/order.ts new file mode 100644 index 000000000..b78ec3779 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/order.ts @@ -0,0 +1,183 @@ +/** + * @swagger + * tags: + * name: Orders + * description: API endpoints for managing orders + */ + +/** + * @swagger + * /api/orders: + * get: + * summary: Returns all orders + * tags: [Orders] + * responses: + * 200: + * description: List of all orders + * content: + * application/json: + * schema: + * type: array + * items: + * $ref: '#/components/schemas/Order' + * post: + * summary: Create a new order + * tags: [Orders] + * requestBody: + * required: true + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Order' + * responses: + * 201: + * description: Order created successfully + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Order' + * + * /api/orders/{id}: + * get: + * summary: Get an order by ID + * tags: [Orders] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Order ID + * responses: + * 200: + * description: Order found + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Order' + * 404: + * description: Order not found + * put: + * summary: Update an order + * tags: [Orders] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Order ID + * requestBody: + * required: true + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Order' + * responses: + * 200: + * description: Order updated successfully + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Order' + * 404: + * description: Order not found + * delete: + * summary: Delete an order + * tags: [Orders] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Order ID + * responses: + * 204: + * description: Order deleted successfully + * 404: + * description: Order not found + */ + +import express from 'express'; +import { Order } from '../models/order'; +import { getOrdersRepository } from '../repositories/ordersRepo'; +import { handleDatabaseError, NotFoundError } from '../utils/errors'; + +const router = express.Router(); + +// Create a new order +router.post('/', async (req, res, next) => { + try { + const repo = await getOrdersRepository(); + const newOrder = await repo.create(req.body as Omit); + res.status(201).json(newOrder); + } catch (error) { + next(error); + } +}); + +// Get all orders +router.get('/', async (req, res, next) => { + try { + const repo = await getOrdersRepository(); + const orders = await repo.findAll(); + + // Non-linear pattern example: duplicate destructuring in object + if (orders.length > 0) { + const { orderId: id, orderId: duplicateId } = orders[0]; + console.log('Non-linear pattern in order routes:', id, duplicateId); + } + + res.json(orders); + } catch (error) { + next(error); + } +}); + +// Get an order by ID +router.get('/:id', async (req, res, next) => { + try { + const repo = await getOrdersRepository(); + const order = await repo.findById(parseInt(req.params.id)); + if (order) { + res.json(order); + } else { + res.status(404).send('Order not found'); + } + } catch (error) { + next(error); + } +}); + +// Update an order by ID +router.put('/:id', async (req, res, next) => { + try { + const repo = await getOrdersRepository(); + const updatedOrder = await repo.update(parseInt(req.params.id), req.body); + res.json(updatedOrder); + } catch (error) { + if (error instanceof NotFoundError) { + res.status(404).send('Order not found'); + } else { + next(error); + } + } +}); + +// Delete an order by ID +router.delete('/:id', async (req, res, next) => { + try { + const repo = await getOrdersRepository(); + await repo.delete(parseInt(req.params.id)); + res.status(204).send(); + } catch (error) { + if (error instanceof NotFoundError) { + res.status(404).send('Order not found'); + } else { + next(error); + } + } +}); + +export default router; diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/orderDetail.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/orderDetail.ts new file mode 100644 index 000000000..724edccf1 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/orderDetail.ts @@ -0,0 +1,176 @@ +/** + * @swagger + * tags: + * name: Order Details + * description: API endpoints for managing order details + */ + +/** + * @swagger + * /api/order-details: + * get: + * summary: Returns all order details + * tags: [Order Details] + * responses: + * 200: + * description: List of all order details + * content: + * application/json: + * schema: + * type: array + * items: + * $ref: '#/components/schemas/OrderDetail' + * post: + * summary: Create a new order detail + * tags: [Order Details] + * requestBody: + * required: true + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/OrderDetail' + * responses: + * 201: + * description: Order detail created successfully + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/OrderDetail' + * + * /api/order-details/{id}: + * get: + * summary: Get an order detail by ID + * tags: [Order Details] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Order detail ID + * responses: + * 200: + * description: Order detail found + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/OrderDetail' + * 404: + * description: Order detail not found + * put: + * summary: Update an order detail + * tags: [Order Details] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Order detail ID + * requestBody: + * required: true + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/OrderDetail' + * responses: + * 200: + * description: Order detail updated successfully + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/OrderDetail' + * 404: + * description: Order detail not found + * delete: + * summary: Delete an order detail + * tags: [Order Details] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Order detail ID + * responses: + * 204: + * description: Order detail deleted successfully + * 404: + * description: Order detail not found + */ + +import express from 'express'; +import { OrderDetail } from '../models/orderDetail'; +import { getOrderDetailsRepository } from '../repositories/orderDetailsRepo'; +import { NotFoundError } from '../utils/errors'; + +const router = express.Router(); + +// Create a new order detail +router.post('/', async (req, res, next) => { + try { + const repo = await getOrderDetailsRepository(); + const newOrderDetail = await repo.create(req.body as Omit); + res.status(201).json(newOrderDetail); + } catch (error) { + next(error); + } +}); + +// Get all order details +router.get('/', async (req, res, next) => { + try { + const repo = await getOrderDetailsRepository(); + const orderDetails = await repo.findAll(); + res.json(orderDetails); + } catch (error) { + next(error); + } +}); + +// Get an order detail by ID +router.get('/:id', async (req, res, next) => { + try { + const repo = await getOrderDetailsRepository(); + const orderDetail = await repo.findById(parseInt(req.params.id)); + if (orderDetail) { + res.json(orderDetail); + } else { + res.status(404).send('Order detail not found'); + } + } catch (error) { + next(error); + } +}); + +// Update an order detail by ID +router.put('/:id', async (req, res, next) => { + try { + const repo = await getOrderDetailsRepository(); + const updatedOrderDetail = await repo.update(parseInt(req.params.id), req.body); + res.json(updatedOrderDetail); + } catch (error) { + if (error instanceof NotFoundError) { + res.status(404).send('Order detail not found'); + } else { + next(error); + } + } +}); + +// Delete an order detail by ID +router.delete('/:id', async (req, res, next) => { + try { + const repo = await getOrderDetailsRepository(); + await repo.delete(parseInt(req.params.id)); + res.status(204).send(); + } catch (error) { + if (error instanceof NotFoundError) { + res.status(404).send('Order detail not found'); + } else { + next(error); + } + } +}); + +export default router; diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/orderDetailDelivery.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/orderDetailDelivery.ts new file mode 100644 index 000000000..8f910da43 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/orderDetailDelivery.ts @@ -0,0 +1,178 @@ +/** + * @swagger + * tags: + * name: Order Detail Deliveries + * description: API endpoints for managing order detail deliveries + */ + +/** + * @swagger + * /api/order-detail-deliveries: + * get: + * summary: Returns all order detail deliveries + * tags: [Order Detail Deliveries] + * responses: + * 200: + * description: List of all order detail deliveries + * content: + * application/json: + * schema: + * type: array + * items: + * $ref: '#/components/schemas/OrderDetailDelivery' + * post: + * summary: Create a new order detail delivery + * tags: [Order Detail Deliveries] + * requestBody: + * required: true + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/OrderDetailDelivery' + * responses: + * 201: + * description: Order detail delivery created successfully + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/OrderDetailDelivery' + * + * /api/order-detail-deliveries/{id}: + * get: + * summary: Get an order detail delivery by ID + * tags: [Order Detail Deliveries] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Order detail delivery ID + * responses: + * 200: + * description: Order detail delivery found + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/OrderDetailDelivery' + * 404: + * description: Order detail delivery not found + * put: + * summary: Update an order detail delivery + * tags: [Order Detail Deliveries] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Order detail delivery ID + * requestBody: + * required: true + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/OrderDetailDelivery' + * responses: + * 200: + * description: Order detail delivery updated successfully + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/OrderDetailDelivery' + * 404: + * description: Order detail delivery not found + * delete: + * summary: Delete an order detail delivery + * tags: [Order Detail Deliveries] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Order detail delivery ID + * responses: + * 204: + * description: Order detail delivery deleted successfully + * 404: + * description: Order detail delivery not found + */ + +import express from 'express'; +import { OrderDetailDelivery } from '../models/orderDetailDelivery'; +import { getOrderDetailDeliveriesRepository } from '../repositories/orderDetailDeliveriesRepo'; +import { NotFoundError } from '../utils/errors'; + +const router = express.Router(); + +// Create a new order detail delivery +router.post('/', async (req, res, next) => { + try { + const repo = await getOrderDetailDeliveriesRepository(); + const newOrderDetailDelivery = await repo.create( + req.body as Omit, + ); + res.status(201).json(newOrderDetailDelivery); + } catch (error) { + next(error); + } +}); + +// Get all order detail deliveries +router.get('/', async (req, res, next) => { + try { + const repo = await getOrderDetailDeliveriesRepository(); + const orderDetailDeliveries = await repo.findAll(); + res.json(orderDetailDeliveries); + } catch (error) { + next(error); + } +}); + +// Get an order detail delivery by ID +router.get('/:id', async (req, res, next) => { + try { + const repo = await getOrderDetailDeliveriesRepository(); + const orderDetailDelivery = await repo.findById(parseInt(req.params.id)); + if (orderDetailDelivery) { + res.json(orderDetailDelivery); + } else { + res.status(404).send('Order detail delivery not found'); + } + } catch (error) { + next(error); + } +}); + +// Update an order detail delivery by ID +router.put('/:id', async (req, res, next) => { + try { + const repo = await getOrderDetailDeliveriesRepository(); + const updatedOrderDetailDelivery = await repo.update(parseInt(req.params.id), req.body); + res.json(updatedOrderDetailDelivery); + } catch (error) { + if (error instanceof NotFoundError) { + res.status(404).send('Order detail delivery not found'); + } else { + next(error); + } + } +}); + +// Delete an order detail delivery by ID +router.delete('/:id', async (req, res, next) => { + try { + const repo = await getOrderDetailDeliveriesRepository(); + await repo.delete(parseInt(req.params.id)); + res.status(204).send(); + } catch (error) { + if (error instanceof NotFoundError) { + res.status(404).send('Order detail delivery not found'); + } else { + next(error); + } + } +}); + +export default router; diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/product.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/product.ts new file mode 100644 index 000000000..47a9c6557 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/product.ts @@ -0,0 +1,176 @@ +/** + * @swagger + * tags: + * name: Products + * description: API endpoints for managing products + */ + +/** + * @swagger + * /api/products: + * get: + * summary: Returns all products + * tags: [Products] + * responses: + * 200: + * description: List of all products + * content: + * application/json: + * schema: + * type: array + * items: + * $ref: '#/components/schemas/Product' + * post: + * summary: Create a new product + * tags: [Products] + * requestBody: + * required: true + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Product' + * responses: + * 201: + * description: Product created successfully + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Product' + * + * /api/products/{id}: + * get: + * summary: Get a product by ID + * tags: [Products] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Product ID + * responses: + * 200: + * description: Product found + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Product' + * 404: + * description: Product not found + * put: + * summary: Update a product + * tags: [Products] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Product ID + * requestBody: + * required: true + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Product' + * responses: + * 200: + * description: Product updated successfully + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Product' + * 404: + * description: Product not found + * delete: + * summary: Delete a product + * tags: [Products] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Product ID + * responses: + * 204: + * description: Product deleted successfully + * 404: + * description: Product not found + */ + +import express from 'express'; +import { Product } from '../models/product'; +import { getProductsRepository } from '../repositories/productsRepo'; +import { NotFoundError } from '../utils/errors'; + +const router = express.Router(); + +// Create a new product +router.post('/', async (req, res, next) => { + try { + const repo = await getProductsRepository(); + const newProduct = await repo.create(req.body as Omit); + res.status(201).json(newProduct); + } catch (error) { + next(error); + } +}); + +// Get all products +router.get('/', async (req, res, next) => { + try { + const repo = await getProductsRepository(); + const products = await repo.findAll(); + res.json(products); + } catch (error) { + next(error); + } +}); + +// Get a product by ID +router.get('/:id', async (req, res, next) => { + try { + const repo = await getProductsRepository(); + const product = await repo.findById(parseInt(req.params.id)); + if (product) { + res.json(product); + } else { + res.status(404).send('Product not found'); + } + } catch (error) { + next(error); + } +}); + +// Update a product by ID +router.put('/:id', async (req, res, next) => { + try { + const repo = await getProductsRepository(); + const updatedProduct = await repo.update(parseInt(req.params.id), req.body); + res.json(updatedProduct); + } catch (error) { + if (error instanceof NotFoundError) { + res.status(404).send('Product not found'); + } else { + next(error); + } + } +}); + +// Delete a product by ID +router.delete('/:id', async (req, res, next) => { + try { + const repo = await getProductsRepository(); + await repo.delete(parseInt(req.params.id)); + res.status(204).send(); + } catch (error) { + if (error instanceof NotFoundError) { + res.status(404).send('Product not found'); + } else { + next(error); + } + } +}); + +export default router; diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/supplier.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/supplier.ts new file mode 100644 index 000000000..f2401bb3c --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/routes/supplier.ts @@ -0,0 +1,234 @@ +/** + * @swagger + * tags: + * name: Suppliers + * description: API endpoints for managing suppliers + */ + +/** + * @swagger + * /api/suppliers: + * get: + * summary: Returns all suppliers + * tags: [Suppliers] + * responses: + * 200: + * description: List of all suppliers + * content: + * application/json: + * schema: + * type: array + * items: + * $ref: '#/components/schemas/Supplier' + * post: + * summary: Create a new supplier + * tags: [Suppliers] + * requestBody: + * required: true + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Supplier' + * responses: + * 201: + * description: Supplier created successfully + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Supplier' + * + * /api/suppliers/{id}: + * get: + * summary: Get a supplier by ID + * tags: [Suppliers] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Supplier ID + * responses: + * 200: + * description: Supplier found + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Supplier' + * 404: + * description: Supplier not found + * put: + * summary: Update a supplier + * tags: [Suppliers] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Supplier ID + * requestBody: + * required: true + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Supplier' + * responses: + * 200: + * description: Supplier updated successfully + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/Supplier' + * 404: + * description: Supplier not found + * delete: + * summary: Delete a supplier + * tags: [Suppliers] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Supplier ID + * responses: + * 204: + * description: Supplier deleted successfully + * 404: + * description: Supplier not found + * + * /api/suppliers/{id}/status: + * get: + * summary: Get the status of a supplier + * tags: [Suppliers] + * parameters: + * - in: path + * name: id + * required: true + * schema: + * type: integer + * description: Supplier ID + * responses: + * 200: + * description: Supplier status + * content: + * application/json: + * schema: + * type: object + * properties: + * status: + * type: string + * enum: [INACTIVE, APPROVED, PENDING] + * 404: + * description: Supplier not found + */ + +import express from 'express'; +import { Supplier } from '../models/supplier'; +import { getSuppliersRepository } from '../repositories/suppliersRepo'; +import { handleDatabaseError, NotFoundError } from '../utils/errors'; + +const router = express.Router(); + +// Create a new supplier +router.post('/', async (req, res, next) => { + try { + const repo = await getSuppliersRepository(); + const newSupplier = await repo.create(req.body as Omit); + res.status(201).json(newSupplier); + } catch (error) { + next(error); + } +}); + +// Get all suppliers +router.get('/', async (req, res, next) => { + try { + const repo = await getSuppliersRepository(); + const suppliers = await repo.findAll(); + res.json(suppliers); + } catch (error) { + next(error); + } +}); + +// Get a supplier by ID +router.get('/:id', async (req, res, next) => { + try { + const repo = await getSuppliersRepository(); + const supplier = await repo.findById(parseInt(req.params.id)); + if (supplier) { + res.json(supplier); + } else { + res.status(404).send('Supplier not found'); + } + } catch (error) { + next(error); + } +}); + + +// Update a supplier by ID +router.put('/:id', async (req, res, next) => { + try { + const repo = await getSuppliersRepository(); + const updatedSupplier = await repo.update(parseInt(req.params.id), req.body); + res.json(updatedSupplier); + } catch (error) { + if (error instanceof NotFoundError) { + res.status(404).send('Supplier not found'); + } else { + next(error); + } + } +}); + +// Delete a supplier by ID +router.delete('/:id', async (req, res, next) => { + try { + const repo = await getSuppliersRepository(); + await repo.delete(parseInt(req.params.id)); + res.status(204).send(); + } catch (error) { + if (error instanceof NotFoundError) { + res.status(404).send('Supplier not found'); + } else { + next(error); + } + } +}); + +// Get supplier status by ID +router.get('/:id/status', async (req, res, next) => { + try { + const repo = await getSuppliersRepository(); + const supplier = await repo.findById(parseInt(req.params.id)); + if (!supplier) { + res.status(404).send('Supplier not found'); + return; + } + + const status = processSupplierStatus(supplier); + + res.json({ status }); + } catch (error) { + next(error); + } +}); + +// Misleading indentation example +function processSupplierStatus(supplier: Supplier): string { + if (supplier.active) + console.log('Supplier is active'); + return 'APPROVED'; + + if (supplier.verified) + console.log('Supplier verified'); + console.log('Setting up account'); // This also appears conditional but always executes + + return 'PENDING'; + +} + +export default router; diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/seedData.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/seedData.ts new file mode 100644 index 000000000..3a7ceb2b2 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/seedData.ts @@ -0,0 +1,312 @@ +import { Supplier } from './models/supplier'; +import { Product } from './models/product'; +import { Headquarters } from './models/headquarters'; +import { Branch } from './models/branch'; +import { Order } from './models/order'; +import { OrderDetail } from './models/orderDetail'; +import { Delivery } from './models/delivery'; +import { OrderDetailDelivery } from './models/orderDetailDelivery'; + +// Suppliers +export const suppliers: Supplier[] = [ + { + supplierId: 1, + name: 'PurrTech Innovations', + description: 'Leading supplier of premium smart cat technology', + contactPerson: 'Felix Whiskerton', + email: 'felix@purrtech.co', + phone: '555-0101', + active: true, + verified: true, + }, + { + supplierId: 2, + name: 'WhiskerWare Systems', + description: 'Advanced feline-focused smart product supplier', + contactPerson: 'Tabitha Pawson', + email: 'tabitha@whiskerware.com', + phone: '555-0102', + active: true, + verified: false, + }, + { + supplierId: 3, + name: 'CatNip Creations', + description: 'Supplier of eco-friendly cat toys and accessories', + contactPerson: 'Nina Nibbles', + email: 'nina@catnip.com', + phone: '555-0103', + active: false, + verified: false + }, +]; + +// Products +export const products: Product[] = [ + { + productId: 1, + supplierId: 3, + name: 'SmartFeeder One', + description: + "This AI-powered feeder learns your cat's snack schedule based on nap cycles and mealtime habits. It detects overeating, undernapping, and auto-updates a Feline Health Repo.", + price: 129.99, + sku: 'CAT-FEED-001', + unit: 'piece', + imgName: 'feeder.png', + discount: 0.25, + }, + { + productId: 2, + supplierId: 3, + name: 'AutoClean Litter Dome', + description: + "A self-cleaning litter box that detects patterns in your cat's... commits. Sends you a health report and Slack alert if things look off.", + price: 199.99, + sku: 'CAT-LITTER-001', + unit: 'piece', + imgName: 'litter-box.png', + discount: 0.25, + }, + { + productId: 3, + supplierId: 2, + name: 'CatFlix Entertainment Portal', + description: + 'On-demand laser shows, motion videos, and bird-watching streams - customized per cat using AI interest tracking. Think Netflix, but for felines.', + price: 89.99, + sku: 'CAT-FLIX-001', + unit: 'piece', + imgName: 'catflix.png', + }, + { + productId: 4, + supplierId: 2, + name: 'PawTrack Smart Collar', + description: + 'GPS and activity tracker with AI-powered mood detection based on tail position, purring frequency, and movement patterns. Syncs with your phone for walk stats and zoomie alerts.', + price: 79.99, + sku: 'CAT-COLLAR-001', + unit: 'piece', + imgName: 'smart-collar.png', + }, + { + productId: 5, + supplierId: 1, + name: 'SleepNest ThermoPod', + description: + "A smart bed that adjusts its temperature, lighting, and white noise based on your cat's REM cycles. Auto-generates nap metrics in JSON.", + price: 149.99, + sku: 'CAT-BED-001', + unit: 'piece', + imgName: 'sleep-nest.png', + }, + { + productId: 6, + supplierId: 1, + name: 'ClawMate Auto Groomer', + description: + 'Your cat brushes itself. This AI station detects which areas need grooming, dispenses treats for patience, and logs grooming history to your pet portal.', + price: 119.99, + sku: 'CAT-GROOM-001', + unit: 'piece', + imgName: 'auto-groomer.png', + }, + { + productId: 7, + supplierId: 3, + name: 'Smart Fountain Flow+', + description: + 'This water fountain adjusts flow patterns based on time of day, cat hydration levels, and even playfulness. Uses facial recognition to distinguish multiple cats.', + price: 69.99, + sku: 'CAT-FOUNTAIN-001', + unit: 'piece', + imgName: 'smart-fountain.png', + discount: 0.25, + }, + { + productId: 8, + supplierId: 2, + name: 'ScratchPad Pro', + description: + 'More than a scratcher - this one detects scratching habits, gamifies it with leaderboard stats for multi-cat homes, and awards digital badges.', + price: 59.99, + sku: 'CAT-SCRATCH-001', + unit: 'piece', + imgName: 'scratch-pad.png', + }, + { + productId: 9, + supplierId: 2, + name: 'ChirpCam Window Mount', + description: + "Motion-activated smart cam that records wildlife outside the window and sends curated 'Birdflix' highlights to your cat's personal feed.", + price: 99.99, + sku: 'CAT-CAM-001', + unit: 'piece', + imgName: 'chirp-cam.png', + }, + { + productId: 10, + supplierId: 3, + name: 'SnackVault Puzzle Dispenser', + description: + "Treat puzzle toy that evolves in difficulty with your cat's cleverness. AI engine auto-adjusts pathways and provides tips to the human if the cat cheats.", + price: 49.99, + sku: 'CAT-SNACK-001', + unit: 'piece', + imgName: 'snack-vault.png', + discount: 0.25, + }, + { + productId: 11, + supplierId: 1, + name: 'DoorDash Pet Portal', + description: + 'Smart cat door with facial recognition and time-based access. Prevents midnight squirrel parties and tracks in/out commits to your dashboard.', + price: 159.99, + sku: 'CAT-DOOR-001', + unit: 'piece', + imgName: 'door-dash.png', + }, + { + productId: 12, + supplierId: 2, + name: 'ZoomieTracker AI Mat', + description: + 'A motion-sensing mat that detects zoomies, spins up chase lights, and logs agility bursts to a weekly health report. Yes, it graphs zoomies per hour.', + price: 79.99, + sku: 'CAT-TRACKER-001', + unit: 'piece', + imgName: 'tracker-mat.png', + }, +]; + +// Headquarters +export const headquarters: Headquarters[] = [ + { + headquartersId: 1, + name: 'CatTech Global HQ', + description: 'Feline tech innovations headquarters', + address: '123 Whisker Lane, Purrington District', + contactPerson: 'Catherine Purrston', + email: 'catherine@octocat.com', + phone: '555-0001', + }, +]; + +// Branches +export const branches: Branch[] = [ + { + branchId: 1, + headquartersId: 1, + name: 'Meowtown Branch', + description: 'Main downtown cat tech showroom', + address: '456 Purrfect Plaza', + contactPerson: 'Chloe Whiskers', + email: 'cwhiskers@octocat.com', + phone: '555-0201', + }, + { + branchId: 2, + headquartersId: 1, + name: 'Tabby Terrace Branch', + description: 'Western district cat tech hub', + address: '789 Feline Avenue', + contactPerson: 'Tom Pouncer', + email: 'tpouncer@octocat.com', + phone: '555-0202', + }, +]; + +// Orders +export const orders: Order[] = [ + { + orderId: 1, + branchId: 1, + orderDate: new Date().toISOString(), + name: 'Q2 Feline Tech Refresh', + description: 'Quarterly smart cat tech product refresh', + status: 'pending', + }, + { + orderId: 2, + branchId: 2, + orderDate: new Date().toISOString(), + name: 'Cat Enrichment Bundle', + description: 'Monthly cat entertainment systems restock', + status: 'processing', + }, +]; + +// Order Details +export const orderDetails: OrderDetail[] = [ + { + orderDetailId: 1, + orderId: 1, + productId: 2, + quantity: 5, + unitPrice: 199.99, + notes: 'AutoClean Litter Domes for new cat café locations', + }, + { + orderDetailId: 2, + orderId: 1, + productId: 3, + quantity: 5, + unitPrice: 89.99, + notes: 'CatFlix Entertainment Portals for waiting areas', + }, + { + orderDetailId: 3, + orderId: 2, + productId: 4, + quantity: 20, + unitPrice: 79.99, + notes: 'PawTrack Smart Collars for adoption events', + }, +]; + +// Deliveries +export const deliveries: Delivery[] = [ + { + deliveryId: 1, + supplierId: 1, + deliveryDate: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString(), // 7 days from now + name: 'PurrTech Smart Home Bundle', + description: 'Premium cat tech products delivery for smart cat homes', + status: 'pending', + }, + { + deliveryId: 2, + supplierId: 2, + deliveryDate: new Date(Date.now() + 2 * 24 * 60 * 60 * 1000).toISOString(), // 2 days from now + name: 'WhiskerWare Entertainment Package', + description: 'Entertainment and tracking systems for feline companions', + status: 'in-transit', + }, +]; + +// Order Detail Deliveries +export const orderDetailDeliveries: OrderDetailDelivery[] = [ + { + orderDetailDeliveryId: 1, + orderDetailId: 1, + deliveryId: 1, + quantity: 5, + notes: 'Delivery batch', + }, + { + orderDetailDeliveryId: 2, + orderDetailId: 2, + deliveryId: 1, + quantity: 5, + notes: 'Delivery batch', + }, + { + orderDetailDeliveryId: 3, + orderDetailId: 3, + deliveryId: 2, + quantity: 20, + notes: 'Delivery', + }, +]; diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/utils/errors.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/utils/errors.ts new file mode 100644 index 000000000..a0dcd960e --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/utils/errors.ts @@ -0,0 +1,94 @@ +import type { Request, Response, NextFunction } from 'express'; +/** + * Error handling utilities for database operations + */ + +export class DatabaseError extends Error { + public readonly code: string; + public readonly statusCode: number; + + constructor(message: string, code: string = 'DATABASE_ERROR', statusCode: number = 500) { + super(message); + this.name = 'DatabaseError'; + this.code = code; + this.statusCode = statusCode; + } +} + +export class NotFoundError extends DatabaseError { + constructor(entity: string, id: string | number) { + super(`${entity} with ID ${id} not found`, 'NOT_FOUND', 404); + this.name = 'NotFoundError'; + } +} + +export class ValidationError extends DatabaseError { + constructor(message: string) { + super(`Validation error: ${message}`, 'VALIDATION_ERROR', 400); + this.name = 'ValidationError'; + } +} + +export class ConflictError extends DatabaseError { + constructor(message: string) { + super(`Conflict: ${message}`, 'CONFLICT', 409); + this.name = 'ConflictError'; + } +} + +/** + * Handle database errors and convert SQLite-specific errors to appropriate types + */ +export function handleDatabaseError(error: unknown, entity?: string, id?: string | number): never { + if(!(error instanceof DatabaseError)) { + const message = error instanceof Error ? error.message : error; + + // Default to generic database error + throw new DatabaseError(`Database operation failed: ${message}`, 'DATABASE_ERROR', 500); + } + // SQLite constraint violation (UNIQUE, FOREIGN KEY, etc.) + if (error.code === 'SQLITE_CONSTRAINT') { + if (error.message.includes('UNIQUE')) { + throw new ConflictError('Resource already exists'); + } + if (error.message.includes('FOREIGN KEY')) { + throw new ValidationError('Invalid reference to related entity'); + } + throw new ValidationError(error.message); + } + + // SQLite busy/locked database + if (error.code === 'SQLITE_BUSY') { + throw new DatabaseError('Database is temporarily unavailable', 'DATABASE_BUSY', 503); + } + + // Handle case where no rows were affected (for updates/deletes) + if (error.message && error.message.includes('No rows affected') && entity && id) { + throw new NotFoundError(entity, id); + } + + throw error; +} + +/** + * Express error handler middleware for database errors + */ +export function errorHandler(error: unknown, _req: Request, res: Response, _next: NextFunction): void { + if (error instanceof DatabaseError) { + res.status(error.statusCode).json({ + error: { + code: error.code, + message: error.message, + }, + }); + return; + } + + // Default error handling + res.status(500).json({ + error: { + code: 'INTERNAL_ERROR', + message: 'An unexpected error occurred', + }, + }); +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/utils/sql.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/utils/sql.ts new file mode 100644 index 000000000..2b1a76c59 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/src/utils/sql.ts @@ -0,0 +1,214 @@ +/** + * SQL helper utilities + */ + +export interface QueryBuilder { + select: string[]; + from: string; + joins: string[]; + where: string[]; + orderBy: string[]; + limit?: number; + offset?: number; +} + +/** + * Simple query builder for SELECT statements + */ +export class SelectQueryBuilder { + private query: QueryBuilder; + + constructor(table: string) { + this.query = { + select: ['*'], + from: table, + joins: [], + where: [], + orderBy: [], + }; + } + + /** + * Specify columns to select + */ + public select(columns: string[]): this { + this.query.select = columns; + return this; + } + + /** + * Add JOIN clause + */ + public join(table: string, condition: string, type: 'INNER' | 'LEFT' | 'RIGHT' = 'INNER'): this { + this.query.joins.push(`${type} JOIN ${table} ON ${condition}`); + return this; + } + + /** + * Add WHERE condition + */ + public where(condition: string): this { + this.query.where.push(condition); + return this; + } + + /** + * Add ORDER BY clause + */ + public orderBy(column: string, direction: 'ASC' | 'DESC' = 'ASC'): this { + this.query.orderBy.push(`${column} ${direction}`); + return this; + } + + /** + * Set LIMIT + */ + public limit(count: number): this { + this.query.limit = count; + return this; + } + + /** + * Set OFFSET + */ + public offset(count: number): this { + this.query.offset = count; + return this; + } + + /** + * Build the final SQL query + */ + public build(): string { + let sql = `SELECT ${this.query.select.join(', ')} FROM ${this.query.from}`; + + if (this.query.joins.length > 0) { + sql += ` ${ this.query.joins.join(' ')}`; + } + + if (this.query.where.length > 0) { + sql += ` WHERE ${ this.query.where.join(' AND ')}`; + } + + if (this.query.orderBy.length > 0) { + sql += ` ORDER BY ${ this.query.orderBy.join(', ')}`; + } + + if (this.query.limit !== undefined) { + sql += ` LIMIT ${this.query.limit}`; + } + + if (this.query.offset !== undefined) { + sql += ` OFFSET ${this.query.offset}`; + } + + return sql; + } +} + +/** + * Convert camelCase to snake_case for database columns + */ +export function toSnakeCase(str: string): string { + return str.replace(/([A-Z])/g, '_$1').toLowerCase(); +} + +/** + * Convert snake_case to camelCase for JavaScript objects + */ +export function toCamelCase(str: string): string { + return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase()); +} + +/** + * Convert object keys from camelCase to snake_case + */ +export function objectToSnakeCase>(obj: T): Record { + const result: Record = {}; + + for (const [key, value] of Object.entries(obj)) { + result[toSnakeCase(key)] = value; + } + + return result; +} + +/** + * Type for database row that can be converted to a model + */ +export type DatabaseRow = Record; + +/** + * Convert object keys from snake_case to camelCase with typed output + */ +export function objectToCamelCase(obj: DatabaseRow): T { + const result: Record = {}; + + for (const [key, value] of Object.entries(obj)) { + result[toCamelCase(key)] = value; + } + + return result as T; +} + +/** + * Convert multiple database rows to typed models + */ +export function mapDatabaseRows(rows: DatabaseRow[]): T[] { + return rows.map((row) => objectToCamelCase(row)); +} + +/** + * Generate placeholders for parameterized queries + * @param count Number of placeholders needed + * @returns String of comma-separated placeholders like "?, ?, ?" + */ +export function generatePlaceholders(count: number): string { + return Array(count).fill('?').join(', '); +} + +/** + * Build INSERT SQL with placeholders + */ +export function buildInsertSQL>( + table: string, + data: T, +): { sql: string; values: unknown[] } { + const snakeCaseData = objectToSnakeCase(data); + const columns = Object.keys(snakeCaseData); + const values = Object.values(snakeCaseData); + const placeholders = generatePlaceholders(columns.length); + + const sql = `INSERT INTO ${table} (${columns.join(', ')}) VALUES (${placeholders})`; + + return { sql, values }; +} + +/** + * Build UPDATE SQL with placeholders + */ +export function buildUpdateSQL>( + table: string, + data: Partial, + whereClause: string, +): { sql: string; values: unknown[] } { + const snakeCaseData = objectToSnakeCase(data as Record); + const columns = Object.keys(snakeCaseData); + const values = Object.values(snakeCaseData); + + const setClause = columns.map((col) => `${col} = ?`).join(', '); + const sql = `UPDATE ${table} SET ${setClause} WHERE ${whereClause}`; + + return { sql, values }; +} + +/** + * Validate required fields in an object + */ +export function validateRequiredFields>(obj: T, requiredFields: string[]): void { + for (const field of requiredFields) { + if (obj[field] === undefined || obj[field] === null || obj[field] === '') { + throw new Error(`Required field '${field}' is missing or empty`); + } + } +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/tsconfig.json b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/tsconfig.json new file mode 100644 index 000000000..858db8413 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ES6", + "module": "commonjs", + "outDir": "dist", + "rootDir": "src", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] +} diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/vitest.config.ts b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/vitest.config.ts new file mode 100644 index 000000000..d368711ef --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/api-ts/vitest.config.ts @@ -0,0 +1,14 @@ +/// +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + globals: false, + environment: 'node', + coverage: { + // Include json-summary so CI can read api/coverage/coverage-summary.json + reporter: ['text', 'json', 'json-summary', 'html'], + }, + exclude: ['dist/**', 'node_modules/**', 'database/**'] + }, +}); diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/database/migrations/001_init.sql b/03-Azure/01-04-AI/01_Agentic_SDLC/src/database/migrations/001_init.sql new file mode 100644 index 000000000..267a0e8c7 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/database/migrations/001_init.sql @@ -0,0 +1,108 @@ +-- Initial database schema for OctoCAT Supply Chain Management +-- Migration 001: Create core tables + +-- Create suppliers table +CREATE TABLE suppliers ( + supplier_id INTEGER PRIMARY KEY, + name TEXT NOT NULL, + description TEXT, + contact_person TEXT, + email TEXT, + phone TEXT +); + +-- Create headquarters table +CREATE TABLE headquarters ( + headquarters_id INTEGER PRIMARY KEY, + name TEXT NOT NULL, + description TEXT, + address TEXT, + contact_person TEXT, + email TEXT, + phone TEXT +); + +-- Create branches table (references headquarters) +CREATE TABLE branches ( + branch_id INTEGER PRIMARY KEY, + headquarters_id INTEGER NOT NULL, + name TEXT NOT NULL, + description TEXT, + address TEXT, + contact_person TEXT, + email TEXT, + phone TEXT, + FOREIGN KEY (headquarters_id) REFERENCES headquarters(headquarters_id) ON DELETE CASCADE +); + +-- Create products table (references suppliers) +CREATE TABLE products ( + product_id INTEGER PRIMARY KEY, + supplier_id INTEGER NOT NULL, + name TEXT NOT NULL, + description TEXT, + price REAL NOT NULL, + sku TEXT NOT NULL, + unit TEXT NOT NULL, + img_name TEXT, + discount REAL DEFAULT 0.0, + FOREIGN KEY (supplier_id) REFERENCES suppliers(supplier_id) ON DELETE CASCADE +); + +-- Create orders table (references branches) +CREATE TABLE orders ( + order_id INTEGER PRIMARY KEY, + branch_id INTEGER NOT NULL, + order_date TEXT NOT NULL, + name TEXT NOT NULL, + description TEXT, + status TEXT NOT NULL DEFAULT 'pending', + FOREIGN KEY (branch_id) REFERENCES branches(branch_id) ON DELETE CASCADE +); + +-- Create order_details table (references orders and products) +CREATE TABLE order_details ( + order_detail_id INTEGER PRIMARY KEY, + order_id INTEGER NOT NULL, + product_id INTEGER NOT NULL, + quantity INTEGER NOT NULL, + unit_price REAL NOT NULL, + notes TEXT, + FOREIGN KEY (order_id) REFERENCES orders(order_id) ON DELETE CASCADE, + FOREIGN KEY (product_id) REFERENCES products(product_id) ON DELETE CASCADE +); + +-- Create deliveries table (references suppliers) +CREATE TABLE deliveries ( + delivery_id INTEGER PRIMARY KEY, + supplier_id INTEGER NOT NULL, + delivery_date TEXT NOT NULL, + name TEXT NOT NULL, + description TEXT, + status TEXT NOT NULL DEFAULT 'pending', + FOREIGN KEY (supplier_id) REFERENCES suppliers(supplier_id) ON DELETE CASCADE +); + +-- Create order_detail_deliveries table (junction table) +CREATE TABLE order_detail_deliveries ( + order_detail_delivery_id INTEGER PRIMARY KEY, + order_detail_id INTEGER NOT NULL, + delivery_id INTEGER NOT NULL, + quantity INTEGER NOT NULL, + notes TEXT, + FOREIGN KEY (order_detail_id) REFERENCES order_details(order_detail_id) ON DELETE CASCADE, + FOREIGN KEY (delivery_id) REFERENCES deliveries(delivery_id) ON DELETE CASCADE +); + +-- Create indexes for better performance +CREATE INDEX idx_branches_headquarters_id ON branches(headquarters_id); +CREATE INDEX idx_products_supplier_id ON products(supplier_id); +CREATE INDEX idx_products_sku ON products(sku); +CREATE INDEX idx_orders_branch_id ON orders(branch_id); +CREATE INDEX idx_orders_status ON orders(status); +CREATE INDEX idx_order_details_order_id ON order_details(order_id); +CREATE INDEX idx_order_details_product_id ON order_details(product_id); +CREATE INDEX idx_deliveries_supplier_id ON deliveries(supplier_id); +CREATE INDEX idx_deliveries_status ON deliveries(status); +CREATE INDEX idx_order_detail_deliveries_order_detail_id ON order_detail_deliveries(order_detail_id); +CREATE INDEX idx_order_detail_deliveries_delivery_id ON order_detail_deliveries(delivery_id); \ No newline at end of file diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/database/migrations/002_add_supplier_status_fields.sql b/03-Azure/01-04-AI/01_Agentic_SDLC/src/database/migrations/002_add_supplier_status_fields.sql new file mode 100644 index 000000000..bf3646e4b --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/database/migrations/002_add_supplier_status_fields.sql @@ -0,0 +1,4 @@ +-- Migration 002: Add active and verified fields to suppliers table + +ALTER TABLE suppliers ADD COLUMN active INTEGER NOT NULL DEFAULT 1; +ALTER TABLE suppliers ADD COLUMN verified INTEGER NOT NULL DEFAULT 0; diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/database/seed/001_suppliers.sql b/03-Azure/01-04-AI/01_Agentic_SDLC/src/database/seed/001_suppliers.sql new file mode 100644 index 000000000..1baaf5d7d --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/database/seed/001_suppliers.sql @@ -0,0 +1,5 @@ +-- Seed data for suppliers +INSERT INTO suppliers (supplier_id, name, description, contact_person, email, phone, active, verified) VALUES +(1, 'PurrTech Innovations', 'Leading supplier of premium smart cat technology', 'Felix Whiskerton', 'felix@purrtech.co', '555-0101', 1, 1), +(2, 'WhiskerWare Systems', 'Advanced feline-focused smart product supplier', 'Tabitha Pawson', 'tabitha@whiskerware.com', '555-0102', 1, 0), +(3, 'CatNip Creations', 'Supplier of eco-friendly cat toys and accessories', 'Nina Nibbles', 'nina@catnip.com', '555-0103', 0, 0); diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/database/seed/002_headquarters.sql b/03-Azure/01-04-AI/01_Agentic_SDLC/src/database/seed/002_headquarters.sql new file mode 100644 index 000000000..222d567c2 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/database/seed/002_headquarters.sql @@ -0,0 +1,3 @@ +-- Seed data for headquarters +INSERT INTO headquarters (headquarters_id, name, description, address, contact_person, email, phone) VALUES +(1, 'CatTech Global HQ', 'Feline tech innovations headquarters', '123 Whisker Lane, Purrington District', 'Catherine Purrston', 'catherine@octocat.com', '555-0001'); \ No newline at end of file diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/database/seed/003_branches.sql b/03-Azure/01-04-AI/01_Agentic_SDLC/src/database/seed/003_branches.sql new file mode 100644 index 000000000..c75c64942 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/database/seed/003_branches.sql @@ -0,0 +1,4 @@ +-- Seed data for branches +INSERT INTO branches (branch_id, headquarters_id, name, description, address, contact_person, email, phone) VALUES +(1, 1, 'Meowtown Branch', 'Main downtown cat tech showroom', '456 Purrfect Plaza', 'Chloe Whiskers', 'cwhiskers@octocat.com', '555-0201'), +(2, 1, 'Tabby Terrace Branch', 'Western district cat tech hub', '789 Feline Avenue', 'Tom Pouncer', 'tpouncer@octocat.com', '555-0202'); \ No newline at end of file diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/database/seed/004_products.sql b/03-Azure/01-04-AI/01_Agentic_SDLC/src/database/seed/004_products.sql new file mode 100644 index 000000000..ba1a3d054 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/database/seed/004_products.sql @@ -0,0 +1,14 @@ +-- Seed data for products +INSERT INTO products (product_id, supplier_id, name, description, price, sku, unit, img_name, discount) VALUES +(1, 3, 'SmartFeeder One', 'This AI-powered feeder learns your cat''s snack schedule based on nap cycles and mealtime habits. It detects overeating, undernapping, and auto-updates a Feline Health Repo.', 129.99, 'CAT-FEED-001', 'piece', 'feeder.png', 0.25), +(2, 3, 'AutoClean Litter Dome', 'A self-cleaning litter box that detects patterns in your cat''s... commits. Sends you a health report and Slack alert if things look off.', 199.99, 'CAT-LITTER-001', 'piece', 'litter-box.png', 0.25), +(3, 2, 'CatFlix Entertainment Portal', 'On-demand laser shows, motion videos, and bird-watching streams - customized per cat using AI interest tracking. Think Netflix, but for felines.', 89.99, 'CAT-FLIX-001', 'piece', 'catflix.png', 0.0), +(4, 2, 'PawTrack Smart Collar', 'GPS and activity tracker with AI-powered mood detection based on tail position, purring frequency, and movement patterns. Syncs with your phone for walk stats and zoomie alerts.', 79.99, 'CAT-COLLAR-001', 'piece', 'smart-collar.png', 0.0), +(5, 1, 'WhiskerCam Pro', 'Monitor your cat''s daily shenanigans with this 360-degree camera featuring motion alerts, treat dispensing, and live streaming. Includes night vision for midnight mischief detection.', 149.99, 'CAT-CAM-001', 'piece', 'chirp-cam.png', 0.15), +(6, 1, 'ThermoNest Deluxe', 'Self-heating pet bed with temperature sensors that adjust to your cat''s preferred warmth. Includes memory foam and a built-in purr simulator for ultimate comfort.', 99.99, 'CAT-BED-001', 'piece', 'sleep-nest.png', 0.0), +(7, 1, 'ClimbCast Cat Tree', 'Multi-level climbing structure with integrated speakers, charging stations, and modular perches. Designed for modern cats who appreciate both function and style.', 299.99, 'CAT-TREE-001', 'piece', 'scratch-pad.png', 0.10), +(8, 2, 'HydroFlow Smart Bowl', 'AI-powered water fountain that monitors hydration levels and sends health alerts. Features filtration system and customizable flow patterns to entice picky drinkers.', 119.99, 'CAT-WATER-001', 'piece', 'smart-fountain.png', 0.0), +(9, 3, 'PurrFect Groomer Bot', 'Robotic grooming assistant with gentle brushes and nail trimmers. Uses AI to detect grooming preferences and stress levels for a spa-like experience.', 399.99, 'CAT-GROOM-001', 'piece', 'auto-groomer.png', 0.20), +(10, 1, 'MemoryFoam Recovery Pod', 'Therapeutic resting pod with memory foam and heat therapy for senior cats or post-surgery recovery. Includes monitoring sensors for health tracking.', 179.99, 'CAT-POD-001', 'piece', 'snack-vault.png', 0.0), +(11, 3, 'DoorDash Smart Portal', 'Smart cat door with facial recognition and time-based access. Prevents midnight squirrel parties and tracks in/out commits to your dashboard.', 159.99, 'CAT-DOOR-001', 'piece', 'door-dash.png', 0.0), +(12, 2, 'ZoomieTracker AI Mat', 'A motion-sensing mat that detects zoomies, spins up chase lights, and logs agility bursts to a weekly health report. Yes, it graphs zoomies per hour.', 79.99, 'CAT-TRACKER-001', 'piece', 'tracker-mat.png', 0.0); diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/docs/architecture.md b/03-Azure/01-04-AI/01_Agentic_SDLC/src/docs/architecture.md new file mode 100644 index 000000000..22bb7aa6f --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/docs/architecture.md @@ -0,0 +1,83 @@ +# OctoCAT Supply Chain Management System Architecture + +This site is a demo application written in TypeScript. The entire app was created originally from an [ERD diagram](../api/ERD.png) and natural language prompts using Copilot. The frontend was created in the same way, using some of the design ideas in [the design folder](./design/). + +The hero image and product images were created by prompting ChatGPT! + +## Architecture Overview + +The system is a modern supply chain management application built using TypeScript, comprising a backend REST API and a React frontend. It's designed to demonstrate Copilot capabilities using a fairly typical architecture with a little complexity, but not enough to derail demos! + +### Backend Architecture +- Express.js API with RESTful endpoints for all entities +- SQLite persistence using a lightweight repository pattern +- Schema migrations and seed data managed via SQL files +- Swagger/OpenAPI documentation integration +- Entity models with proper relationships following an ERD diagram + +### Frontend Architecture +- React 18+ with TypeScript +- Vite build tool for fast development +- Tailwind CSS for UI styling + +### DevOps Integration +- Docker/Docker Compose for containerization +- Optional Bicep + GitHub Actions plan for Azure deployment + +## ERD + +```mermaid +erDiagram + Headquarters ||--o{ Branch: has + Branch ||--o{ Order: placed_at + Order ||--o{ OrderDetail: contains + OrderDetail ||--o{ OrderDetailDelivery: fulfilled_by + OrderDetail }|--|| Product: references + Delivery ||--o{ OrderDetailDelivery: includes + Supplier ||--o{ Delivery: provides +``` + +## Component Architecture + +```mermaid +flowchart TD + subgraph "Frontend" + F[React App] --> FC[React Components] + FC --> FT[TypeScript] + FC --> FCSS[Tailwind CSS] + F --> FV[Vite Build Tool] + end + + subgraph "Backend" + B[Express.js API] --> BR[REST Routes] + BR --> BM[Entity Models] + B --> BS[Swagger/OpenAPI] + B --> BO[TAO Observability] + B --> R[Repositories] + end + subgraph "Data" + D[(SQLite DB\napi/data/app.db)] + end + + R <--SQL queries--> D + F <--REST API--> B +``` + +## Key Features + +- Complete REST APIs for all supply chain entities +- SQLite-backed persistence with foreign keys and indexed queries +- Declarative migrations (docs/sql/migrations) and deterministic seed data +- Detailed OpenAPI documentation, generated by Copilot +- Modern React UI with responsive design, generated by Copilot using images +- Containerization for consistent deployment, generated by Copilot + +## Persistence and Data Model + +- Database: SQLite (file located at `api/data/app.db` by default; configurable via `DB_FILE`) +- Access: thin repository layer that maps camelCase models to snake_case columns +- Migrations: SQL scripts in `api/sql/migrations` executed in order and tracked in a `migrations` table +- Seeding: ordered SQL scripts in `api/sql/seed` to bootstrap demo data +- Test mode: in-memory database (`:memory:`) for fast and isolated tests + +See the dedicated guide: `docs/sqlite-integration.md`. diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/docs/build.md b/03-Azure/01-04-AI/01_Agentic_SDLC/src/docs/build.md new file mode 100644 index 000000000..d09d0cfe5 --- /dev/null +++ b/03-Azure/01-04-AI/01_Agentic_SDLC/src/docs/build.md @@ -0,0 +1,173 @@ +# Building and Testing the OctoCAT Supply Chain Application + +This guide provides instructions for building, running, and testing the OctoCAT Supply Chain Management application, which consists of an API component and a React Frontend. + +## Prerequisites + +- Node.js (version 18 or higher) +- npm (latest version recommended) +- Docker/Podman (optional, for containerization) + +## Installation + +1. Clone the repository +2. Install dependencies: + +```bash +make install +``` + +## Building the Application + +### Using Make Commands + +You can build the entire application or its individual components using the following commands: + +```bash +# Build both API and Frontend components +make build + +# Build only the API component +make build-api + +# Build only the Frontend component +make build-frontend +``` + +Alternatively, if you're in the `api/` or `frontend/` directories, you can use npm commands directly: + +```bash +cd api && npm run build +cd frontend && npm run build +``` + +### Database management + +```bash +# Initialize DB (migrations + seed) +make db-init + +# Run migrations only +make db-migrate + +# Seed data only +make db-seed +``` + +Alternatively, if you're in the `api/` directory, you can use npm commands directly: + +```bash +cd api +npm run db:init +npm run db:migrate +npm run db:seed +``` + +Environment variables: + +- DB_FILE: path to SQLite database file (default: `api/data/app.db`) +- DB_ENABLE_WAL: enable WAL mode (default: true) +- DB_FOREIGN_KEYS: enforce foreign keys (default: true) +- DB_TIMEOUT: busy timeout in ms (default: 30000) + +### Using VS Code Tasks + +VS Code tasks have been configured to streamline the build process: + +1. Press `Ctrl+Shift+P` (or `Cmd+Shift+P` on macOS) to open the Command Palette +2. Type `Tasks: Run Task` and select it +3. Choose from the following tasks: + - `Build All`: Builds both API and Frontend components + - `Build API`: Builds only the API component + - `Build Frontend`: Builds only the Frontend component + +Alternatively, you can press `Ctrl+Shift+B` (or `Cmd+Shift+B` on macOS) to run the default build task (`Build All`). + +## Running the Application + +### Using Make Commands + +```bash +# Start both API and Frontend in development mode with hot reloading +make dev + +# Start only the API in development mode +make dev-api + +# Start only the Frontend in development mode +make dev-frontend + +# Start the application in production mode +make start +``` + +Alternatively, if you're in the `api/` or `frontend/` directories, you can use npm commands directly: + +```bash +cd api && npm run dev +cd frontend && npm run dev +``` + +### Using VS Code Debugger + +1. Open the Debug panel (`Ctrl+Shift+D` or `Cmd+Shift+D` on macOS) +2. Select `Start API & Frontend` from the dropdown menu +3. Click the green play button or press F5 + +This will start both the API and Frontend in development mode with the integrated terminal, allowing you to see the console output. + +## Testing the Application + +### Running Tests + +```bash +# Run all tests +make test + +# Run API tests only +make test-api + +# Run frontend tests only +make test-frontend +``` + +Alternatively, if you're in the `api/` or `frontend/` directories, you can use npm commands directly: + +```bash +cd api && npm run test +cd frontend && npm run test +``` + +### Linting + +```bash +# Run linting checks +make lint +``` + +Alternatively, if you're in the `api/` or `frontend/` directory, you can use npm commands directly: + +```bash +cd frontend && npm run lint +``` + +```bash +cd api && npm run lint +``` + +## Additional Information + +### Port Configuration + +The API runs on port 3000 by default, and the Frontend runs on port 5137. When running in a Codespace environment, ensure that the API port visibility is set to `public` to avoid CORS errors when the Frontend tries to communicate with the API. + +For Docker, the sample compose maps API to 3000 and frontend to 3001. + +### Docker Deployment + +The project includes Dockerfiles for both API and Frontend components and a docker-compose.yml file for easy containerized deployment: + +```bash +# Build and start using Docker Compose +docker-compose up --build +``` diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/docs/design/cart.png b/03-Azure/01-04-AI/01_Agentic_SDLC/src/docs/design/cart.png new file mode 100644 index 0000000000000000000000000000000000000000..b4ac91cebfcf45adf9656e577a5ff517c02d119d GIT binary patch literal 241631 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�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%0DGoo<#YB3cqk|J|)OVw+&pMr+}` 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 *HAD=eX>t6$ONOj8RX|5=ka#c>$M~< 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 z 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

=Wq|R`R8Gopc}3gANj}!VOgR5;un7T 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

b#t{1a{qpe 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 z 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®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

5n=d>pQxn)MJNk&j?H2|Y{PRL{ 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�FUYwyza(reUcv-#?bTYS-}Omg;A)&&TzKf$ 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

F&n7jhgIyu%>3rF-;4b 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

3{w8Po(1r6fa-BoPO-beiDJ> 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%0AqcZ=BKlDnW&2rK!EA=> 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
^;cN^T`CX??*)1uyX2dvi<&|T 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

(* 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 L-pE(Ung;(rXtqh$ literal 0 HcmV?d00001 diff --git a/03-Azure/01-04-AI/01_Agentic_SDLC/src/docs/design/item-list.png b/03-Azure/01-04-AI/01_Agentic_SDLC/src/docs/design/item-list.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f92517265d5a48cec11c9e95cb08c8ac4c1a86 GIT binary patch literal 735150 zcmZs@1yEekvNg;wz~Jr@Toc^g-C=NdcMmpLaCd^cyE_DT_XJ3A4;BcLpWJuzUj0>H zb)7jQXQozf>0Z6|J`<^;B#nYdhzJD*g(52>p#}v7yA1^ejDUxGdxv&9qWkRxa8r{O zgQ}e&K7M;4VWBN+si+9W@b(-Y3J`7s1@rfkw}bHQc>8KT01Eha2K;?5ANt>?u-o~- zf6svte=kgfO)i3h5`mJH5CwY!&Uy@{Jf}6@wQkRnzUpu04a9|gFp=x00<kvWJ|3YFy!7x7skm%w0lI>{z`^sN7^|D0cB z^~XM1X<{b7`42d%wV@P5Dt&*C_Y$ej`b|kH2u-OSpI!CIk1KB2PN>A!b@rIyCcD`> zRUOiXBPyo4mbZ+`nmw2+e`@w*dRT!hLGRjt_lKWmyFTYW?e1>-JsBDH-s!zAUBCY7 z3w)fpe4g3w^E>QH3%nG52pYA87AnoqV7<|`yA__QIXqm)kVA@Q4xR8W!*R!Dr568GVzWl;Z}=mQm;r4dYXxZ^ANp1_mGrXjjD^#5^yU&2 z-%g-q@Q*0UE=4xCaJ4Nm*v}biL7`Q3j-QSQ0w0y864GkaV9nVb$UeV=d7vul)*q4P zRo8(icf_!gg420%)W@(+A$_ObKY~%5H%8=#4AfcD%luI=vy+N3)2=*fWh%wtMg3XK zNX|UK1saetIl}SVV)o2hPsbE<6Jh)t)4a8ACGw{I?26B9K~2EF<~0|@?DzFFE$~WR zxWn%%gj7G^NcazPTHeP?-}LRrDXU8npCXBSYg0?g@qsImHS)UcRah90=Q6z4+ZAT8 z^FC%OOKDxMsx%L$E!q1#J@`kWM=A|2LHMi4KerSWV7D1_EQ;``1DgCt#~(Bfd6HJ3 zR?^t}uK{uA#fw~q6pl&39RlZiRXZtE^OIiCBDpY6J~%sxI+U`B9-5koHJEVFzl|}! zGqJN1UWy)A{N@asLPb95AO6OApk?70YjzO_hV~*FpesdBcA=~$LZS*&$<<3NhTsQ? zWd?BAhcYN=G+Vgfq&cd$|&veC{BFf;AeR==N#0G!xf@$SHJg@^PY?6 zLrJNw{QBain5dhP1L{VvJI9n{5I1@ix$F`?L7R|+nQCRgBCUkD`m^Pf#3h97->a?| zjP>MZxwnT zRxh7u$5@Gl#YChw>cwI&wyXjJ)~CqO=dnq`mSL(NWkpC8u6em*d18N&-Ie-h4O@Xc zJ$IPi$$iJAE9K{d@GAr-c4TxErO7iU;D|kTMp40(W%o9TuKO_>Ow#^Rh|#^5O3S1{%!!g!%!0TT$Ivih6N=FDKwM4_&zFBbx%=BH$JIxG)KnnR-8tZ+^{Rvrz(&I8&tJU+Hy$} z__)L#_=qRkV$OwiWp4JrQSPr@v;e)mSzpq9g%YHyutwZo6XWPfjSEBb8~4MM1vRMN zla*$R(+g{%cTUJd;;;<&7~z%;s_cG&!OnrIZ|H6ZhVZ&`P23l3s5*X8JbqNnj;++Uk6z3zdI8bLzc`N=fl=#RKY5i zMoweRD4tur`Wb!FfuXb^%h&0OlBzy@*3Ze`Uzcac;9lu0Y)XN}gu9$|t+cC+v=^4p zYK`GV)tA-fVpi@G{azUqzo(=z#7^kE` zBx-kH?wP*<2zUVxw832Y<}W5Xd(frKVvg#PF^BSlN@sIyxv_6H@KQwYRC4{l?q$W9XOJH@e{ZbuhgNE zp6DUkvWsNeEk;CYMDjX5w$3C9+(T#cTRW}^aScOQHCzD_xS#mScnKf8898Mm7kU2^ zZ{H%WC+NyKf3&^9261&=?c)ha;T`%y?y`n!w~`YT7M-qCI|mM(4#g#Lf5pnBmh5Mp zKOG#*0bTD7x?tC=^R{N%g}>Bds7V7@4& z<3Rx_=?j^syjENkJah89*9(bOzu#^Q*!1EZ$G*?GS_fRFgG$+Wo=vg5j(>hcev$|DArpd+6nohvOT=1%*8u{IoImbSx z8bjc|8mLq`v`*R@!&{Dj0}=Hc%Kxn3Q2gM>Y(Y!c*rn7_YiHt13EE{Z?6)=B9CMs> z2~j@JiK>;g@xCbgXG84eF%P({oand2A7eR7*meTt$b0iu>IB)`F~vGdX1pEN_77Ok z%Kvd@KJ!jSHbpH|6OhE3E3Vn7)IUorLdk!y{IOpo=CujHTteN+Ib%Jd+l}2s=RWaN z%F6EyB7whmW$6I^RHIm&Rfs&vu&TWnRQJ<QNF| zo1it2Q%|!!Q7d$ff0+B|P{DmX`+@JjgA(1V|8>iAS^9Hen$H&|vg~0y+k0$yq=Eys zE-aZC!I+=behW*Tf@S1P>YW==flaD-zfuwbI?Ex$N$6int-t+&a>eY z{995Bz#UDilbekl-LOOIFvQ(PbSf)&bf)CJLIO1qv$R__U!aB;PJUgo1Y9%{4V;i; zA7q^w6jxmSWbZ>I^M$=jF z?9U%&XVArM{Z&s6MCR>vL5Cx~x;jziJYFIgen~A(jx8BZo>Yh_$3S+JrtSshF&N|c^Wl4Ao#HM21D7IY zUHqdfQ!8rfU8@d=aoEU~)-G$`666gktXeT}BX;v@)lSJk)kf_j2>SY9Ov8XJhTuM; zL0%EcUOb7}=SNGo_MqE@tp{0Xq|eDF@|DyaLIbgi;QVqq@Z>ihgt6E-u1z#q5tT2% zyY#l6PQO~^;Zzod?Tayf@}2MD?q{~{ijOr&>VCWmp7NA5n?>csX_VtJ(oQV@OL{wA zcSh3cPAC~1amLi8q__l$BIvS6-g7dG^z7bPPKaaH7uB$hh1?`WCAJ0Fq7e%R>djaJ%%6cYRvk!BgE+6p2f)$UkIi61Q!d5RHuM%?^$4$<-x zLxk?&(F;rK2C)!XwciFj>YMcYUD3k|iRqV6eQ_^2FQT>7K413jNW4t_R$)qhlBzq` z6zyn=gj#ZYL>_PZNh7Ygor2 z9{LFLYOu~vE@H*%p)qq4C5*&Gc+`J-eQ2hn#%}e30}Nqhll7XSZs<8rAN~g>MSwu( zr}B#L7jI-u#hOAwBDkJlRY3Y7nauoxe?FZQnEtwr4 zETb_cYAXzKib$MHxb+^1k*LI})8Q6FoJXcL-^%W|S@Jsst~!if8&Z=T%`I%c8ckob z`mUNGq*HsN^{M~q;Wr*833@0BwHL5*ETGm&7V3(`yOP~{N1LUh{apKvc);l?STgy_ z08x}9W(132<)Q(nNX8-^4FBUGpZb?p=eFIq>C{jv`)a+pdV zxRUvig?Ag+vpLt}SLUgft}ZyRZ^g%d35i;uG;zpI zm-rlJTH_fR-##MG_4>Qe+GwpR+9~05@?GgwhQ$pMGKpmpJ6dUhE`xb03)XuD3)6Q} z7~e?EtbUU-JlW)KiVqUKbF-T^jWt!#BOe-0xv$*niL0MrWv>!6>}MUOIsL1Y{I%pG zs6WNd9k9`O)7~(stNP@nSG8FtBy zAwo4BMZHf+EJ=e>8eQb^I!5(F<&WG;T=Lt^z-H#NYJ z!2wIrXJ@i&-$Cu4+vm4A}Z}%;N>2J=uAG;}MQjUYbSMVl-(H zw#ggqW_m=TURBX;Af>DDXu}xQ7b&&F;ZgH>YTytGg5`s%(Ft4cT~Tho6in<0DM~xv z)2}C5;F_$8zI0v$pQVk^e{I;v{Fk#?_;*OX4mt+&{L=lV68f7$Npz|P4G=~@rwQS& z^)9iW!b>R|^AY+QD%fGxr!o7_E>HuvWbfA~jk%K_9nI_mX*ciq`s)e@0# zGdAlSGwe7sSwmXO>45c8gziat-|Vb$cX!aUk7U7EP=83AW6vlPkyhkcL4_`zKD=z< zZ$CPn!t7up0P7HH3DB3Ep&fCLp0X&z5LpV$Af2`V>Mr=s50r>HbL575VM+JP%_cWr z`8T}1k5K2D4n8W2uDjCtS+*Pqp-fb(-qid?m7*Y^--^DL($ptOR3yQIK$#NF0p}#a zst`(JAcv<-T8?_rRt8(Tv1|Y?r``P|m)%I?czPpqLjt|nG9b_}D2^Cj;OJ<@_pH$+ zb?jYMW!PX?0#)T~coOvl&O?YWzj(VoKeR3<%h>e`co|;3%Tn75JbMZXJ_;&KeCm>u zmNk~ZF&gAAOc`~{pvgyTZqHV1D7#`lZl3YwOClAyumSkCT%*{v54kgUjm>_=*IyR< zDJHYDCVXC7qEP(>e&C~q@><^!+^5QHhWvsILb;btS(BDQ+Q2$hFI(t;#qAPFzI2`s zjNuc4H3whLW@j$Z>TjKJ|L^OAzSZTLGMWhCJ4@9fBIJBot9!hs$nQGSCIYp9;!&N! z=zU&kHHUXV(bPE|!j8bYC{EIt^6&EAqZxeZmaK{*q%u}BrE7j|q6Y0NKlcK^?GUYG z6S9){HM(-cX|bKGINmp7k`l`X86!zJL;R z-VzVbLJEnmz)Q zi{YZp7*o#Y7)>t?eutG(!r>~RB)DBf@$-g*l+>d}OMlg`jeI8R4J{ZVt>A_;bzP8*?PyndiEUn>#aBar@3-UQ-*lxR>tC15@N{C!l%RU_p4 zfcX{4#0SP=v=v==*!I0*@(xrBcuSg7L@P>t^V70nzTx~{IO&m;Js01TLOd4i1#i{J z?%~DU|0ehh5}sb5cmAd{4-GgiP>GlhNR4?LHYWlYRhuWol#hHw;NJ7x2;c~`knX-d-y z!~|Z@>puo{zIW`oX&?z9A%%vimP zlQ;TQBmtk@-&eFOXG zMKHpU)#UkI4pXk z2~E;#ACVco;Sn{2Kep2f)f#lkkpX8G5L?`0Fh|o**>>ti6lMfbDXnH@;6T6OSJ6@q zfu>}5Aa&^$|H8)lTGVY9=9d@5^C%Dc|9SApR?ih(0_9HtJ+sR?b9~qVt-Lks>!tAi zfuI<%urR|FB@8|MKkZihLkm-8tts8`SL4rdnqkgU__RfsZ`WWOhPe@)rYLtI8Mu}i ze&QN?tC}n!ruUL1cVMjbIl!yPpm<|mQhK@8 zVVT06Yq|0RtJ;z2=^?3U@E_wi>t6xftHxyNJu{@e0L=V1Zt|qjmi6C+Gk20IbnxIK zVXv~sC%)iR8)zq=N)8ERm6 z^Qh|Hy1X2GlCY_Eb^imsZ8Gq#11;eA24>Ov0&+yH_`>T*V<+2>P?{YY0i7y>mk_1$ zx1zwamQfO2X5Q{V{HA$%;`Ic6zq|%rWWuz->mR)Tj)dx6-B_FuJTviKVu>IOwWyakd|E(B~>> zi5NdL_3f3Ja&Gd9(6uZFkMrJHrT(Ma>wrzb&ychX!!p@d6nsGr@zh=W{5?b$YJI#y zG8K_QKA{0369IPh0*!okz#F!d17)8kcU2L-xEEuZs>t(f-HF?rrJy&pq*#hngU0RH zato+2r(sZ@gkZ7t(-85kl=@~ysiN;@M!dN630wN03nI_qi%(R`IlJQ5|QZc7Eu~a^7-@gb0;lH2` z!W%nk_y>&hZ9ClF{fwx7b2y?lx1XMwL7i=vPX%7%$1hAx21=?QmXWcg|3T*grquM6qK<}O#jg3eNmw@G${3qj>%49Z?{^GY% zpbT~AH+mMkW6%bFDjs#Esr$2OR3!oT;Ca#CA6|7(So%VumbY_Pp#~;XCLkETHDxKZ zb)~9Eo}t%c zTDhAU>?JBMNR0yfM6%SS7@ zv>RGUwr~4!7rXyxc`1e>oIG#8l4~e1gSknmz_0&ek6CzFx3IxkqH;vKET(VN20Om) zqcLf6$BUp^UotT?gSw>(dXO|Rk3L2~8aJ?4k`+}UZ&vmSYsX|-byTSR62w9|)fh~t zt5^k1F)^lEQVvZamrAK<*ZqpdS&G4M%`QR}&y*NFDNuydH1cmKx9~xvvEFH{s)0DY zBg7aVwT9c~rZx720OCHLV0dW~kJv{?N?Wg%@Oyz`mG09B>05E)>>RC@JT|emL-_-@0LMGR%WRAS=CH^n#po z;Z#nS*t-<4I{zb5i9@-J9%m7Np$(B$Ee@~CwgO*01MqvEFL`L_ILo2J%_ z*{X@eVWx)F=xo(ZpGLdU%G=`^mZlt--tBf3tp-6;@W$+<7dmRg1cBsjV%}PDNHsLYk#( zU|0mrb;!WLvWr0`$jfA5_P@D*OA-_uzVcgEslB!ZSwJgO#!rq%!MapLOs*>wxs6I~ zu(kQERy+-BiaMNxn{Im>4kw%LQ>ern0R4hHn0-R(#hNX{^$UppAVA zZ_iR8e+j21sh5-fDf{bLva#pR4yrNm=EY7f>Ue-cL>Uj2!OUE!9m>j#d`N|VN-juF zTT5HEFf=m@wL%%*y>bDZ58=uHFIGVyj-#Ppn=5EGJ^5wO31cb|Pz0Gw(kQO$1x zex=1CH$O`$u)Sl4!oAv*uT(QN>`ww5>=Z~VxC~t`pI<)}I<>wwKS=_Cos&e3YR{-w zoQC?rD3iwOh1F3#VOBa@I0hS-f%JpAJ6+XqeQLmqy`iPHXF7< zRF+kP5G8F3fREg^jnAi1Y1bC?x+oU#69OUH>TpN zZ?QQNy^+%dc%hT0FRL3LOrge{LALTNnG7f=kK0}G#$ksvveXe))3-(Dpr%)9`uxhk z;HV4h4y<7{c(F(P$avJ^!Fb+bm3VtTNRVRD7Xj(qOg${^15nz66lp?~D@Gs=x<&SZ zj9ds7Ln9KriF0D3XbraB;8>4_4nCTS>|+r1yx3PkHxgSFqAE6FLssHiDYN4A` zM}8zN>_~I~Kf;~x&Y((=Bs|3f5XnFBP3+-`iOCMaQiq|FJxN&rs6W({kaqxVZ3*1T z0ex7xxT$y7$@?PC^YBEE9JCk$X_#T{#Jp&22d2fQLW_6bGkk)&m4+N=kQ|*s-DBTt2f@uj@8u_S(}ZENrcyANAUNf{M?{wZ zOs+c0I6`Xgvaqh%ir`()c1T4qWEXiHHMEKt!^drB;9M0J|7E_n^~oQoQ~^o~?T#Ok zQrm>hCT45Ig%BGk91apj``(81>>useDe{_MQQpQ^ zX2^Ro4hf$%nVesB^{{8En{<$C9h}OTw|ME#NPJ}_3#LG2%>eyj6IH7E6f46M5K09e z6wpS>hMFIvcKg$81$szJ`|9j_Ot?wAwy#jJc4ayNS*Z@C?)EqQ+hC`hn4ANGYeWnN z49$pO=5RqB={RYDUub6EdrOj9TOL<@ix>k7{|QuYlwdh%=mxoVt88TRL^;qhe-`Id z`4m*aJf~(YQ-{bo=LQQi=YX6PJpM^mn}JG%!;=euO;sQRFvdvHj#wzs4PNb+BukE; zC}kGX9CnS|BY5(v(}zaW19h9;wtwCGl!#DQ z*R9Gd!Td6IqVnjG;l>SKQxCbJl*Ss3_6z+`<8PyYc5|MnqyZuSj5_5{a+th;-d6Nz z`9sE1V6Tz&fW1@@-OL6amT%04HE!(n+&kTz_pA+P?=TL5TwdgHFCX}W?`B&N#)U`U zVN*Y99?wsRNOmtG_?<^{V&zn-j|~*uK+&?|tGox4FC<#-0h6gO*88Nv)1inhbt)wb zksRUtGpQkD+_rofiW3&z;kQHb2AgaSgE%Zj>$Pf01@y#oiM7nM<Opw zx9v55cWJTkUs;p%hs^lJ6e!1Wl+1PRJXRK*R8JTjj?j>JdxAJb zB@3X3pNfXf^fctI`tmcOe;PnF&~G*Lf-P#N{_FsZ(FHU&&HJ=L^`Q3ZQ0Cq1&4{vh zcB@f;I(73fKGy^p)F8P%V3QB>3+bEVr{vgwZ$t}^ew(uNof8XnW_2^+Lyo|=m)u-G8xz8K zGK{*s5P?2>pUypgQ_ze>YYWfe!!{T>Ffsico$~SMV@mlh`appW?bh9eI`_E$q}c&k zYE>zH2lay}i5VV=-AvS(oI}&DM1^{*v?Qn+V9SA?^?N-{^7}G@Em^}sJcS}_#^I6_ z*T*x(HoP`S+6l*2SV_)Gh>rEY3I@R)D&Ab6u&&!&AUj0Zm^kGFkNKWHBJ{>)@UKzkTCW+`nNBa;d`{8oInAUeu z9?E}sOKvjxX2XU#29Xpf#r(vtVNFadKfp7EN=0n)FoZGe#!8!UCUA-0``t7-#lzHyyB30^Oo#6?;@fK9 zHGP}TCWddj9jD~}39f(7y}(<6xPbPb^LB&}$R@(jby)4S^x74OhhhLHh@-vGIFX)x zsARMIUI2$q(efpOM~LnIP|P9}jnF~myG!X!?~>#@JsrXc1PYE!4v7D%dg7@to?D#hp%2{>Db zY_L=Y{WK>{cQRVFyaiu4<;I3EwDusfPX-z5H61;X)Z!|9OFuZx3o0LzpS` z5~T~vD*1pcW}#3j$=QgS@dJAA!BO@`=54@Wh0+za{<#iVIj2QgU(}1HxyaB~k)Bk} zm_Gc@?PDl`GWax9uTl&oQc>hXKVhpeuV1a$VwNjr&{2 z{v1HT7vo4XCH4~hoHD6+3Eq%2vGCacXrA*vQUzCKFo_!4ic*!*k8wE_yIjCREky@8 zF2zf?AhGbghumWpU)Mb8pZGe3s^0*-n16X@A`RU=M9m^;je+I`BUc!dhnzRn8FtBq zQOWTC0oD3Xuen=&m@}L5M1%S+8w?MDl7haG$TB*Fu*Im1EPugcq(rzrDs#B{RH(ca zet}QA1tFI(qaSfuZIb1!fq!p|So40@3f=J}QJ`u-^9|!k7*QnQuH8#*vG&LN*%@bR z+aK57^CR**6m-a3t9DB8r}GMm1#lyrx`K_^GrW%`dNWY%O1T6>ZXFDAg@3N%NOH0u zV~p&cr+8vZx9%~x!h^`qbBPzWoT9tIDcWotJ>r&&MJbO15J{5Yv-+kvjBGplWTQ8S40n(fbC3P&0sjo6G$K(6wo2l0X)Ic0EuVpGfj(y# zA^!ER8E;;`NRH7X-q^+0q%Po(A?Q<=m9^I3Sf@pF&w)%mLrt9}yzrRk;}QGrM)Z#` zff96x```7#roU_Jfao4rwPNzmWi;xyF@uvu2p<@*Xf-;#sqOz15+QPmOm-5!_10-@ zSv46!311|8+R#U|E+Q$ zeEq^nopDt9t0$@6kGVP{tXW9Y^r0KgbP@2uv+NFgsDj%L?ky;?QR>b9Yq!QukWaC{ zp2(Y<8FY;u^P~bO7+OSep>ba$=34LqVrC48dD86pRIGARTc9bW=7QBiFTE!|f6%4eFa?ofgtSeVxzU|3Y$*3dC zmEQYgee+%nx`(DUmrxrInq))FC9_WZzi8gB0lIp|x_eVhJNuUq!*qYQFs^~@CR4`S zpN8q+-?Z>Nwyp5Ikv*vg-M05O$x};?Gf6E?hLL=DRcXjj160yB&&r456=(2&td&rb zZp0Sd$r;8r-yb62*1+xX_y=DE=|7)oXc{0C(aYiQycLA3)Cy&Pc}(ZB(A8I|d#7Hf zW$|d-{x%tW#p$)AbEo^=ljqY{tWPNs-&D}hagiCULKUeqS_@FG$(H>=? z{oq#^KTw!yb;kF45(x##!aN3(cYT}IbZb!4leSbgp`SaMiUj9vS4zYB9^>{8?qR=M zf<^H8Og=(8QHgw(58t>7YI*NtrnXofMD)v0UN4DD>fuk49(&F9&;-$_#3ZC=(p&9u z>2Y0&Z@=WLJjsN6WrGha4JPZW^^!C+pPJa$9GKr6Vp%sPM%Y#}^5t|{$99=ZG|u1& z{wR*&{IWHRA?mRZp^HKxYTgA>UZq6V=qXeIOVE*Kl(?INjbjfXvh4yqO4e@yr;Wc2 zws}YSae!G|-xS(4rvmQ?B~XtCyr;>eQ;Ml{K$U|?0ZS!&o|D^8B$UGDUJfq(c`o;j zXPLuxXQXGcoY=bONnatt=RK~$hJeV#9mhjA|s?c_(e zwF%`o{89YI5<;uo*u!*#>5OH6djw^wjPz6)_RWdJW?81M{|6hcY{q*1*-wJmXazM0KzV! zu%IjMs8!5&ayQnuYPmFMu`Q1B{wxP;0;KA(EIY~#T0|5ziA zduF5YcejHoW!s2183W<+S)(!$P$K_g-OS1`+w;Dl6h^&1H0|FT`PNOmeLIV~Rrn^; zUB3I-mcZJ1Krhc*5^)?;h$@O*ukd+#x|-ETt7k-)VE*HH*U&*_`U_o!E<=ABTShwt zFRnoU!IyGBF86u;bdU9T$Y8*rZav;(L9QAkdzp?cwS7zYag_P70?L$wDDJiG8&|zr zmTx~zPQW!Kw{Td-mvEQKtd-;oC}e+;63IQ?U3gPCp|Cw{e^>WJcXqJTy8JCIffm2XX9lm^Y#B6YwiMJ5k97a zzXn`TeaRMXL7mIpHS&8|^V&*pXkcVFX(z%@Yz(xg+kmP$RlA3I3+=@@+?@x-f6ii3 z3cB&=O@hCg-%;!49xNTekaM$Ys8_yGM1K8g3q>)%pVfa5-d!(FKCr|g&P0=Sm|V^Y zt6#PN*YJ2>nt34@M3M?_$XnZqgNsk+af2lEHvWH8ht}fT4}P3hJXSO|qF{TQcE%FR z`|$F{BaTtd9u0ZvdlpFpd!TzCSId(1AXbtc-;OZWbdYfD25=ROVAMaB^s3A0mk{Ls z=T9jPt6|omvv8a0q7YUB6cip5X{=Bre;5kW4EfETzRJ|`SwA%L>#Tq5$Ay4X@u zyP@E_bK3M4DIGRL=*B6-Tg$0#|G)i9M%WrB6{13BJ>Dk&SSs{Z*f6`w7ra2ntnr&> zneDvBVds8x^1{B5kv+AevJLIZqN!q@w{w)UGX6U0#Sr4ZCtr#}{Xq#8GekD#t-sl` zurMVvdalPvlAeY;$3yFKozG@hLEq9Gj`p z12(*_NG%_;mgzmz+YqdWY$yc}8DpAZzY&dPNO1t>Jrpcx;lj{CtJW(i@ zp(IbMqeocqwZlOkd1WqT0|s@XSy`z(mDz;i(fCOhbqb=OzYj{wT51BC@k11&rLi0= z*GlBpZeh5+g;O7cqsrCUOMJf zBw?2|@uVwWds&IdE$LRC{DDpkP+mXWA{lGM)c9Gy3rYXG5=2L*FD2`(qX>4!rAFC} z%sb-4j=U%mu__!<3xf-3@VgS_4GBT-$2(W;A7v|8pV1aR?#uaXc7DccT}pxFi^91&d>(nOuX%Gk`(ms_L?i5GzyPjRio9<2j+#ty(331a_pO|gfwAs>-_i_Oz zSGd*|Z-UfuH3r>v`NlUE;Lm3q^i1nNl`cVR|M`5`?RV$c8l1{9)4eXVPNY|D+G2%2 zSXoy53{@9zMrzxB^q_-?3%R%c!<_;1mpA> zCSfAOxZIo=-w}Heo*BuB$}Y5NgQ+PwpSOlLNEXL3wGt6Mlw`36M(6n>>kZ@DfS)0v z)}^W>hy5$f)9f=|Wo=~c5kI_bKSwC4eqO`+z{*}E+&X(0O(QSeOmJSD%#VNxDZ zww?|a{sYz_>n=1OC)c1l_7A^UQ^H+~oLKW%XU$CuPfU(74b0oV$C)&AzyAFI6Lp8) z7Rh#jFy|-c;SMAU#UOB0t3~Of(p{lV87@k6%RTd5{NqD>bFF?HhSRYs>Sv%^VC$Za zxOzKV9!KmhiO3(HK9@#sWG{_#Mg{9C>f|H;r4ye-h9+h?FWp{7_V(WN{ei6SSn>J9$4?|KsC);JXkM9KQ=!URdMQ2Fj8_9687JRHBYE{o%&lLaFAbCQ@bd8Nd;O8>c~Ty=e&J`_yDy*15o+g^ z!`aHbU-Z>0HtxdeY9kSCXXdSn)UN;e*hl0#iuB4J}|i z$c^^p(I<{R&qb|RR2v9p?oDjQm~n5P3V@zmPWc97sTNjIstS}0`edUWZ0SCo!HUem z@(pexr4IT+;g3TnSJlM@q)T5Q-f!=r-xexPHPq!!hr7JKjoNeOvJ7}lY+Bo^NFKyY zAjFBFoO^#JVg{N*LHJcXGG*6a^WY4-dq$QSMiHjcm+=-Bt;?<6ZuEO{3DNo05wb!B z@cKR=CiGelfD=MLkhJ&)7zb+<0=UR1K`)a+>DL{6^G9B;XHuQ|8pTN2foXgurTMMsBE z&E>-M_9yPvVQnZCCZzEP3_?r$484o=G~;rW`^gA-^M9>{h3L*3Wah7>dxF zT)mgBf4_V9g%E~In3#DDz*onUCpX_C{O`X2>i19MJRZS&qWvC^t&ZMn@d9=s3BL{EKK~xbD-a?JwdKOPMf(dq@2=XnSI;g zXm%1|tn|j($Ts7&pC;4kVJp64S$-8kn6BM`-wwtth8T^Al`wB1@kGnvWmBO_f^rNG#zN1ymKk`eq6d#8_z;k-+9tzB_8wxI$7?zJgFMA7~T8)I- zAQx%G_vSMrap72u)fE9)8EZGvZxM9NtxalBjl-==0J(YLUEJ)%Bphlw2hx@=NRHck zh-E=Hv*-28^9IyGE9w+0g@@$mwhPWk;<3*j>Q47fVqN+@8cD|kp~p5tXoypH5?aIC zLg*5o@!QIz8Op~BZ!*4&?5^B;_qjqby8a4Ulu(qpdcOo2tgR9;ZAaYVLy?8;R4Um) zA9m_AIgaUZlXFU|FU67)iC-9tJYRo83ZJtT!4bS0pHcL!WJ8BclqgBEdZD^3&3&ON zNf^Z#z=hwbr6Sa$Y(n4bpj3ynQ-n%|oimfwEiks~?hS44ds)74lo(U_ zK62k`ifN;^I0iCs@&D2F&hK@2(U)*++eXvawv)zf?4+@6HnwdyZmfG_+qP}zX7c&I z&ph+~F!LXrvyb*(YwdM#EERC^(AS`Tig4w5$Aimf;Y1SsllR0DJ|#mg-_U_P>n5Nk z-QAWJIN%mKky?$t0UIT@!l)pI;8(>6!K{(mmGaPZI1-N-&OGC${gcS5Hd8KQcuqR^ zJDQvLnAydFW@JFGKee6x1GdF{w#6kt*epn4KqkPbCUYf0wJ7^$C9oWFL5CDJ`O)1) zEk;gZNbNG9wIJfe*JUtrP_nLO``#4`0Y~iO!}jal8}bqW$8XK(uS*^(D-Gf`&`^!F zxpSX!qqgOYYeY#pj4;|3?K?7c7H+XzNKeumEqYdgwG_G7{95)!`WG}<;axi5jV$-9 zTQsclrE-#tE&B1QjoP$aq0Nqr%=Oy#U4`LhOXWFn*P6%UXqrK+SFXLh_@BIfIc-P| zv&ckB>FhoMTZ>eg!y40`fzpY_3HYkzm>*0TTx1iDGmiZ6=3vkM9$Lb*J+%`%yL#J#|AHAl zT%CXyZQC!F(}Je5%*wWgf6Z-`K0kL%iqA1@{NAocR+r>oDl7wAH*o+6$V-h#zi;DR z54f3Bj(+#qzp(rT7&|4j<%+lqk*NX5)0XAOHa&ObW~H4NcQ&}Xj~#D=p*~Z?31p!TpUFw zil#*P4N>j%bd=jvEy+LLGJPiAvS^FpObhm3!4gfu#EB;YMNxcwVg-09G+tAja}|Y= zy%-BBOzC@7>6vJBso{1yHRNoG>G%$b`#&mZ8iZGBD>Djtd(tA2uu~AQR4R$d1t->B z0e3yMI4pR_OM5Xr&@>x+U$p>UwAt@>YAWY9&N3gYKY4?mUnq46go%gl+^M*V|)a4zq( z1GzEhDX1m-ojINPr8npHTj)&sEgUE*q8lT8jV)rzndf#+C9-Vsx6cA;LBkpAfULr120F4>x=t=Jcu{ju|} zUVOv+s?jL9zaP_coDB57OLP3@3iM2A)GMiknC-0Iw84L?2-F*@?&t2NT}pJ>6j^8R z>_VxN)|Ml36P7ZJ53LU2-Q`eaI5>sU3bg17^gX*JmY68tP)wck}4_ayjz+F4ULFMp5sSE6YDUu@*q$v=vwqS42`50FHI@$|w6atBJ#I zqQa+yDT&#tZ=g^HvuJ&Yc7n0bsWBx8^l_K3J5yw4TS`3fFGjfz1M?T?$g5)q*N%EkKQ;>N5hos_eEcV9%xqw8B;!h3-^@#_R;eLsl5DBTdctog*@qun1 zD^4G2PH`y8rH&x?bFMYAgxI${aT=Te)(~(mb_z~R^|m5vm&E4MYF8~B_Fuic!v`=} z$L8Cnvb@5rvXs+y#DI7f?%y8u=G}oK_ z0e8$xqJDP+eRZtHZ-z{C7P(Oe?{u*zS;QX2D27*a518w2bZ9*5e-o}{6w<9_-Mh0t z-}p9^$GB@6^JrUK+rc3_JAFbG!ADHZ)+NfRpnt+E;ogt1u$1o1${#l)4Fym|CwdGK zWxA;Zn})^elo)UL^gFf2-5dEuFXFgGq}-Wcjglz;(!!5ZI}uh?3DH6z4@8r#z~Xjx znlb9zclKPg&*8EGg3Dvt6=6yB^TG%b9FUJbv)p*1C{BKm5EBfG6C8@999Gc64LN7s zmAv1teLjAIi->~BVEqZ){=@o~bybe+n~sW4C`-6g(Ep9s>Cbb2m0)nfxty5*zBAkh zT4HoJ=DN$qHTAWpgF;5cK!*L}C#P#rGrK&LwP3?Fqt%7x`PUJbb5Cq3Yd|tv3@Jrd zz*5+D=}K;q(}6D5T=P9)8$5$_;l4@wViU|HzK?*vJeGQJ%k$P-qpBkuWicZP0bsKk z#gjvA`{+sqzcd`vUs746!6uyg?V!DFI1Xa>EpQt!_p1RfHoHHy+%(X&Q5f?4>K$Kn z^lVN2SLr}<8u9hqhAWM)vg3`^m<}efhE1cAkHB@N6Uq-z?it^@jkN9W#Su(~jPO?D z(T3Cl9D*3u9fSBJ6N>tnODQJh9fg*=jruW66~;^eD>H#cCRE%jF4sQ&ZCu;x_m4#u zJpO=>@b8#JXzK#etKor3r?{x`Xrd@TShpihPso(20Y0$MIDcL)>l5nGb5oB#?Hz9$ zi+9$ea@|iv*wEe39jIM9IwahU_2%&5vVQ@3qFllEkIK^PU}k7?Yh)VGETBk;(vJqE zB6u_3Zi}>5X|UC~0}8wC#B!kd=6ZuZsQeW4u=HdBrl#d5^WEitMpa5$z+T-*HGVq@ z%9i~V#B`Y=-bQ6!4tW3z+RzV}oc8XKUDi zH3a=Rdp$FL)u_MuPBDyLsfwf0dyhZ}Pq<@A{H5G%XTCtifWR7+NZf#oSEd5rqoT|jk6?Hhj6WdCv| z@6Hd4)-yW1vwe6qv$NM4kO%=KhJlgY@zkLCce6nQ@OZE=6$xd$ECFt0QL-Ysnt%~` z1GNdam!f5mN=7V3!84F7XUH6(?AuP?rs&ThR>R-)LW%rcIhm8Vh>xZG^L-t)@JFo! zt*3wc*g5U>nPsVk;&sVCsg!>R!>Zh{wc?E?y0G`hYWk3gKkYW?gIavo!~lEcB-lnGmOw$nR-Y(_w?d0zZT5lW5`Zu(0n53%M7b@1HfOK!3D_k@)3 z>Qq~vM!*<9^57=+=u~U5TXfZ<1^khwd~v080~bXw3RG7_C9j@GStR&!fU?HJ=Qz8B zm1&1RRaFTZJY*BlO0}X%f^zo5CCZ_;^dql#4`4NN*Hs!xB~OgI(Fx zd%`c+ov^Nqsto!h_kbaBLC?Q!{rk-%QYD#MS?7eJ8VQB5Zv&OO1fH!y5 zMIOpLDw83qvyGk1#Iy9tCdiN^Tk-oC;`C8lFyUZD=Pz1$dmrWc4DHG37J7+3Ya6x~ zj7(NhzmK7%2=aV=*IdjG^ir{*a*+MAY9O){-az){W62>fFg3jkBNme*S4y=z!fVO% zP?&byoiLNV$@m$5*%#yfH|=dV%C=Z<+W=$un-L+tM{cjA<$9`IFrF0;nlZ;g^S;ak z^e=>eTioR`{K#zO^rl$}TMc~bFoW7w4kT={M0@k12W}+f#L&p`kFg(7oQb%9t}z!s zSMbq>(Pd|^4!?SHDtDWU?~&!?JwOm7Rvex|m=(=U$#JhjWEi^@B=|=#xkeJ;)^2Q_ z>khqD_lIDU4AeO8@Ij3@%M%M`L08=YBq;gUPJagjj3w&r-*{l&lvjr&&Mvf7HB{R= zevN+5AKxO_7)=PtN~>=Xp+A_o(QoHYFaFSpNKm*lBkuOxHxWg0a|34+|BnyE{qls_ zYIS3sl7j+!f`V}3&*FhhI|G{}R0LptD@{wv!N#hh)t5XUVT*zPiJ;!=OF;1To>?m7 z{y}ONy=Kj!=*ks?(LU-6cL@ngBUCKc8Iqv;0vKVZx^?AFh%$9Meac*>N3e7ynnk0|RfNQ;XK8oaZuE(#UzLdHr9gb$mz%_Ka)j-rar$h^ zb}h}akM7O>$e#N6D{t_r}ILxUxOR!^d`Wjem93e85mVc505=p6qzVOo9$u|A)f&kkJ zH@iM0W;sGR;^W-ZHHZp0Hh<;BUuy`l;#U8nCoPkDl=3O=;$KBKnh|V|^QXD+#s1A$ zR{b~FDy@ZnD*kvL+F8jsq1zGGk+35w85X6WGe!M|SdwVG{4Tu&%^OAJ@-4}^ls}O- zGA{SOHVDekx^MDwBHDhD={78In`Q`J^O){#vgn|h@!vG$G`K^oH z(Y5$HKjOs?b9t5@!Nctq?TP8{(G`Wza3-PF#oqM48GfAC3K@zmvTbcCpO8^m*7e$|LGehzWE}q2<3sFD=B|)L+JdN^o3j@h@Zbd2f}Xec zz_+b3?KGmc)8dz$dCx##e@=UXu!E!`t^aq9jC~e5dinf_7eHRW-B8xwf3ZIL9l7 zM)sWQ9u{PZv%(WO<6A_UN3@h~(5}Plm;os5otWn)>#E|XbTC5puVsYr;cYe3J0@OI zF`QWHS&8M#fe{$ms5>o)J7mA;YjY{3;}|5CtIH{@?7na)dm}Fy+4x&E&1nah@GA_N zqD)X>eNxdc-Q+xO^SXY>iZeM_tS#xDe;Hc1`cf`xuC$l)&dM9ff9tR&j;**&@MKE# z7d4Xgk@VeU)za5emvh~UYtru`NNLvRA0zv!P5iRH^hO?u#Q8cxm#`}^<40o6oN36@ zve?qS)M&Ul+B=pHmREsi%2+=|UZJ=!xO>ks1q!%Nc_C)L1njm3WX`+M2%>ve5E@vqb4g{j3H zikmg0g+Fwoo{mLZ6SsgZJ`ddez3xGD*Y> z0jGbsFt~cp2q1b5Rj07SeOIER!|NE+-(;NA9}|ZOt179EZdtRj&Y`2>cPbVk?4)10 zp237?NJO@3+~UK92vP^eA0_+o^<4C19c@okX3Rt!qSCJZNtne(1^Rv8ht)Ua`DADJ zw>vkVNyYNa7Pod+K33JW_6dt7TP}`SH2V~W;^n$kgV?Qu#0Xna9%MZfSz)!=U?>~o zDJPpGnCU~wgfPcJ%eQAIk2yxQsmc0j68+BZSsb&1v;79a%>8WBgr-M>T zGs3pb+l347o&xM6u0R60CWJzb4>Mmqa~ea4bKlhv71mv(1$9;LEzgem;oY*c&!tcH z?}?Nz-_A3zT+~)~Lw!b;Jn99U4Wxi1ODL8*GpBY$ott|FyJp*8SqplSdF2d)*k>at zG9@sRi(h0o_Zmiw5nI)%%@zIYIJ*w(dL4ynfa&1z`=WI7TcYqinfXC8^X7 zeKn8%6KDCxwneTji(<~bxGR@Yb)_eF<&pX<2c=y@ z^ta=9TP~O%1h7Q;)?YDZ(D*y64*nZdpfc+;Bt0+ZG~IPHx#T)jM#Y#j2@i0vbGXgU z3!M+-h?Y?@$}7C`2E|hWr(Lvc3&TqBp>0$1=k zH*wPH3wNuyUefkACpf!vEwd?10u5qthwZiXN(;CPT`fveOz@qA@B^yGCPtcl>p~kU zm?2RLWqpzJ?aJcCR`G+PeO-pRXc1{*AW^0{zb>Ox`d^ln0r6Y!uo`rIL@o^_xFbDE zSFISs6E?kTeJ|m?VO={c)(#&`CMf^R$&C33%E@s}vXTBF*W(oMh4aQ;W%az`^*x8- zy@bb+b{iF^zxX4z4%mFgfoBZyB5=*}_=5ZWgk$6RJV{igP!$U2fOrA^P1N`Po^wr> zLbKmO29a62-eVF=4-ZWX?Wu?{p3SJ4x@erMTqrpiO3Yw`L~L^N6r|u3H-P6oyY`q= z*lQ;kNzfIqN$5Eq6883(?>t*s%gwBxW-eMPLa z?y*O>)%yPA{{++n?E~-2QuAKIgb7{t9t`d!$NtA|_8<-D;5lKf-_?2gi;2FkG{*zk$RYKx=GwUu;%_*(2#kwcRg1T;Lp^E*f%ydeV4Es;CoC!EF6Cz{z z{E=$`G-Vv;+B^HdrR^9qKDlE})%Ho2LXNIQM0_G(t$4PqWtl{=Pd;TJ){)o&(Q-Da zqtI<;c9zNTVYUD)Yv5Du0$!?GK9*F%CdY5;%v%&#R2;6**m|T_-b~iVCKql|O*a-j z5j%ZAR^OFfrgB@Tt?sWDNAPyf^38mcMjQGl`UB`z+W@ycd69TxM)r#iO|7(igRPD) zuZ1WWJh6+cF_b^H*sO90G!0T!RVqaiJ+}n(W<6}XB^`mA8mEsdjYR9kcC}{T%kpLY zNXUHc{wB`f=jFc4e{2=_pp*A+@7*nr*yF<5z$66tx=_pdS$^AoK)-dHGIr&2=$>i- zIxx@&4QOAtNXvQ@SU{-y%&@}~KNi&iYgPs?zb zQ(sxNl?1LoygYm9J-lp?D6Jo75<7(Ii#s!rNy1Ka9?62*nDvbBc5IBbBr2Cm1i9p_tvyhYN>9 z`L6fbDkmxVc&2kB^)ElCSfRio$2^7z2D!Mkyie@H^IwR|JXuo6?uO%^ zyhRp51|E#Wddp^b*kkq9u|D2X->OictG4q5qmP!!g<@1i)zDWI8%I@?|H_YXu9ZA! zK4Z&{5hC?&x*XYBYz_N;NHPnaO+;XnG-9KVYX^Q*K_q1B(yhDs`A+&VcmOH<?+#_B7RwsuQXL~tx z^n;bydJ#U4oPJsLqSxNJXIzbF@#gxTSrKsWTAb9%UR^bl?p>Gc^>2{&#{IY5as#UJcbh_Mo56e{{&Xb)x>A)a*p5;STR0-(VeeBRk2)FrIR6 zjc9nngfYv)m0|G90oSiR?6&!{yAXqJ}}1Z^RdJz{CP*J>32f< zxfiCnRgDwqjWM`?7nY480_msnsGgZ;qnAzOjX_e3=w@#eY^1w{GpVRsTUZA%OPe0< zxLw%a$>LUuji)f2NPw;m`<)|Pt}f09y`L<^J5QqSoPZpjl9tkQKWsdE!kNk3`Nk*V zn!QJp*%{i5f;xQe&lB7ooC`JV*Tj)K67u{{~bQ?!N%h zmE!~ct@G_80LR2B^kggz?^BjOb!;l$>4DRGln0DysgnGQPo1$c(-r19cIZnmT-1sNmg+sfh4WHQ|sPH5WpKZB2$MM+c{zmknI@SU`O_6|HHlZW&HJKrq<& z?ZODZY{S-ALgB+U6Ub6sp|><3)_v4%{fj3f)9+kkHyuc~zo*y) zp{7LOa@9NV8!jkJ!wnCVj{&d{@W1+#V_L`eG*3CMnkUF%6Lrzla>s1(TLfaI zR+DLOvd?C@a3B+$P(CNo8}XiISaH0*)t?A$#zcNwfIa1=u2^AI)`RHgdeyT??r%-V zh?>YHja+|9&=u|6e$(GySQsPZKcOZCq=V*PAfo5$k}cg_woySn!lod~zqJT#TMsqv zj8`5*23p6^?^kc5El~Bmo&?1CTS5L?Z(G3k+^xIN162PBQa^$yA)}O5ccXpkU~dvw z8GbOQ&@YP3lyCbfnw!E<2t#z}EAZyjs=uyRDX(ALNE- z**q9Z@NX6mq&=K#<9vR`3qpEiujjc34KoA3_1~a)kwW4?HvONurhc`a*ic(5;2r06 ziQt0OATOss%{7~o)HQ2DVOt91SEi17hYH=Qvc>XGH0%Pu-!O~}8rP8N_li4vn0fk@ z#n9w~9p<=b{MeJ<<60X1umFDoKQp=fsTD1(anlDwl#EJ9wCyvD9!1>BqkMTqYR<-$ zhqA~YZ-(T6;)HHxyO#3^P zw)IT=Nkx&5d%gAKdsWB04ZLMkI)N6r;PD&gjZ4srl7IJ|5WX)!CG43xLVONZB)qiu z!R<*~)y6pjm%>sKkl9Nr<;=q-IouO-A}>fX(-06#fu%dw6mW4ZPQ~4c7-IF7Q}ZOE z*MX7oB**cCN@9*#^RZnwXrP-i9{0@#^|P-$8ahvkvaa9m4EZSdbYE#6cb5bv4*J6W zH>FETlz&fWNXMZH^X>E9T$Uj2t+iRc=}}DYX+G|r>3Yw3b?fgNn%9z&tz9^J8rBBg zS!vhz=1#+#b~4sJ1F3)xq*r85b*fhKRTmu7UvlFMc$q=;U)kOV5S<=NJw3O~GI0k4$+E6=YCsLN*;GjEs%c$ag<@fBD5m#izl zquUhwmq><7zQFZMa$#eq>JdR-~;z2UaEV76}NK|aWMxx?9=#=o80eZ=Lv*@BR9iey=n{Po_ z1m39aFV}?AR<-`s%OFAbw|wo-%r`H7oywc+RxUNDeEbV}kLbh2@TE7Ti}HA^FQ-n4 zQD8hCuJ}H=)CzB=yg{AveQ}hEzVWCe8@LmWG|<+X<`k= z2X&svgcAx?Vudh8_nl#q53_P%i6X?9pbi~R5nsZTFKZyL_)yVkRL60o4Mbf-tWO>Y z1(9+)`kjuqZ>P#bMZbOV%fRB8JNhZ%L)dT_PPwNPk!B*~wRDIChM$oT1Vc6ZUV)|5 zq*WpFQlC8wuNW}o7LM+o)S+iXyaY|j0YiWQZrj_*i-DKdv`yJ4R0RHc{7EF#gv^%P zvolc2Zxhs+4l@h1gzm#c_k=ACwp81-0Qgk0qiX}t{+B;eykY*+GWYYPj=#I9h6*I# zPgMr^wPQA*UV0L-{OC>FP_>eliS;>2F2r_rw z&)&j6r5qI+ROEDb|j) zXdIqVSjJL1#!0{#I)}M@^KRkT8ea!QbHk~BA1CA$M;CGe+48P?w=@gTHea+Y$T*<5 zHyY$Z`qdbcR`*;NVeK0dX%iIxTMnS;pmWEZ#|=EdO#l;BLKol~mbV{A+bvAD3+QO5 zgNk-<36Mq`x1Ssj^-Nj2qik$hPZ`|RDSU46Wb#l0VIX@icr{lvf9)}iuKOJ+qHNw=kc*udoN)RneTF3~sE$b1f%cV?^Bkt=sLsy`QVZ4KaIR!GCa5juB@H=)o-bdSC< z3Z_MHq`XMRtygkfmwl~TNnFnueCWNJfwXvb+lfa3dGyP)!(w#9Jv@yZGQaD=CEe66 zY08-)#+WINAgv&Ay4XjL1>_VXXN4fwH^*3xxh zI~Mn`?BCTnv5$7Sf;g3mo7-h5b$4JOFfMtS+5&Zm%uRQTJua2p<`^{ohEzDPKG!~0CoM8iHs zt?z|(D)VQTfgOnT&|gdF<78{Hr}Xnn=n?kpG>C3f1h<_qcYFc{46SIfi>-_e^FFr! zaviMU1D4T1ZTQ4sgQqwcOCr~R@8=t?m5GW#Vuko1@D6Ikj6QqO60~3hrp~JJbGQ^| zFaK0I9h^%1KY_$LQf2*>rV5EINl5<4z4dz%`JqbnJH)qW<_g~@qJBJnIM44ZVZ`4| z2Op$bL7Y#InGC@~ooM(S4K=?PabGKamm_cczl}?ajd|woV4yc*Q;rPv*sl3sZgXK+ zQ94=l;~sRUn#9;UWRK2)ts=zFwt zsEa%}V8_(@!cZ=T-9%?Lgr0%f5(83(6@*$!o+o#?dj6|w0rwO3`a)))y^M;z4!~JQ z>eXva3-i`(wZGX*sr_r|f&BQ^Bj_X#baGHc`r)7EzoP_-IKZy`avF=o)t|ZE6?7fk z_%&*9>48^ccvOdHGWShP9~eV!AvGC7z|o7EM=e4Ul&*#*6y2}T+}Di^uxNx{B#LuA zxj*k0WgTsLF_RcR%%=%dS)w81XAk<*n>xJHnj`zG^`vD>_~Ar}u`%t?@eO6W>U9Rs z4K_a5K4eYa7YX{f0?*P5$T(ztj5PzZd-vR!QpD=lT1FAj`^;C&HB8Uv)RdrjqZmo# zdMr(D&`(HicNCo#*p>88kT~Q;hQVobQg@Qful@R@(&3tAdtF0DkV#_oBwldW*{=3@ z4j}Jof@or7$a(jbnGJ3Sa5I?Wd6!W8@#Qye|iraCfY z0=rx@cKoOvn0;6m+`t{yB=(^hg}4&OQlLmH^JC5Qm5Gh0`(EC$VnGt*`%jpPn-@?C#{ zStIYwY@g2TXa3Q-lQTy`Pi+TlfDZ#Lzsn=xy7y)OyOy-8m)xuRLjUJ5e~*_~;63id z5N@ynXwdr-$;6pzF*c3=kv$<|ZAvC|C>9CTDjEv{hsB{v$@}O4o(tZB%Zeocl3u!> zo>J+~D`D>v_@~|g1&L@;zUU&WZ_Oode^|HX3VH}<61G^PXkQ1Ml>0M4+}o05=@e`- zRRbDUij+labZBpG(mlXHeO{V-2z#*4Gcii~y$hzY!0|2U>FeLENYuHurs58$GM=j1 zZ^q0%!Y7Nm@)9BQnq$N`WxMY(5eY)Q&Uxcyyn1)7{>J+}W|T;D>FmQENoQdbl@6qT z$eE6=^Ekx*C#1~(6H?YK+vUemJ8bV*5Vq(LbiqT&!%h^Pp8oUg)WP1*6i58kRCc`(8w}VX`EsssQPi~aZzIfrpf8SK6Xmvokh*^}$jOsyT zJ|!t`Gf(w5-NAQ5UCnD9T=Jj6Wvul&`L%1`l@&FRJ#O&44VxzXRttLhI=*k|FUU{0 zY3{(IT4sCyx3x6p=OAWHzkO*x(--rt*TsV|!1>rN%IXyRxGi^R){$|exlL7_Cl6|o z|Br@g*fzuaiMV-rzA%?LN^j!Dto(*x{hA}fa$5-s(h;{#KVA0YmaP*~YYU}`y+`71 zElO&aL6$Gaq0pJ{lJStXhJI(KU`*(8TwJ9by_dUPS{P~as zCeWL>p{Y5NB6GBbi37r)I%_}sreIR$Rg9|Q;)+_`@8ZkXd#-Zw+{qY%O6xXc;(o7b zv#(Z$zPq%x0!3wj{SKXj|6$6xv|=rpPO^1FRs}VLX4y~_!llY&gw!lBq8Csjcuk%; zJl~7>6lc|Ddz)(f-3Fs}3sN8ocvQbTiXcI-(8wtd+pb8s)I~*NH(LA+G^ULyO*azqg!nYG-pyfs#EkQuk7^1rhAwe=rmv)qq~h_6W-ThV%sXL zp?cbG^!@}pbtciY2+P#I6V%G7vwX?^0;l=-_ut|%#AQy$#POpSkT~l`=b=SB3Htgx zjzJi(V#_(>L1SFNV}7lPkl%$fczU%LTtQRAVX~Cxuq#%$LcF%Ko7bUB=AixYhJ&kj zcYpVnep$;FN zPNKXB75AehzTPUsm~e_CSFyQ*E9Xl2Rec!+)AGz2W&S{!olO4*1%~lmSec0V&o1!+ zkAieN#Xv+~Uxd_Mlb7C)o?g2VdcNnMND%&OTqt&GK9!Ohj+TSwiUfQYmJVlZu5ahZEb%cyeHS+~9-P0&7ocmali zvSZO^`DPK zq!8-ES|+R7#U9qI0>p7yJ_)bht;aqefS>lX`lz}EDkdRyD$PrI{16zE(Og4*>_X83 z2|mx-ANOVEy@CTba{yP^W1E@Heyu)%SxGWJIF`5%ViDmdcD>|4oN&or{iEy6AFX0w zWE{I^%3a@r>KpK8Ed>r8#&<`q&nlI}Bkl2R)O=xa|=4m`KbEblE& zx`Thm?5Jlw*lXcmwXn~zdo@WKzoo%@%pLm^=GOS#^&#mG)l!xJFe!<`u>#261d89<7;56x!`zqG>+SliE;6kU*)GB-rxAHP7^hQGxK^MLh5q{Ki$+)aaQ zk=i-JYHAu#g`44;CIE6B+WV4WD>n+?C3LajE_11K_1%phWKy}`x5A$4OMX_IwdGTW zd;Phm1ezLK1AqwAwmvqdGPjKVLq1|WZiA-^2I`yu+kPGIasGE-4)2%NpToCLpFN+a zjt1AG%nm^8E4{#aI+XQ+k>*6S$HEs(K9~2m&mB|-(%0*->W?P>ecLa!N$iy-sNwS- zHtnhF^J6Sb_#ORB$ntFznC8n18zol1gy{;FZs=dDa|CSsVAHaN;oTxOkfh@F-k`&F(GF_G-TClaXdFR0o;>~a1`;$ zWj}3)_cy~9^Ms(QLACu5Mk)sqpGNjLjLJjnn`{a*5Rn%bK})8>r|mamywsUTViAw% z26e4Z7(;3cL?S+M=_QPcrp9Rf7v9~Xh{=u^ZODmkt_9IMOp6ZKD}onWUX#+iOr@aiY=N#`cvNO zWEF9Aid8k;YjB{A6HBTTUSI$=^hn`2Ln3~4 z&CI6M;4ID0bM~K6kr;C-^L14u`W*@^f>Sj9cg0=#afd=qvVJRI2M_2GF)AOqx9dU< z0f`}-Wz?tux~Z7CJ_I2*BFf*g+&T~x^{n5$C%B9KC=h*NwQYC!l579`X_MCvVk%Cq z`mg@N5w@U1J#Gh4>w%No%$OD|h z=L(y!tx~xuGNl68DfT?rdnQx>@iSDL3o&bk6JRgZT1$}D9EU)P8y*)6M2C;43LeA9<6LJpR;gNMtRO$%YvzTGmW{t83oT2WjgCQk=NaONkxQ4Z4X_oMC$TLRiw!++8zD7lM>_=6C zY3wl!I@#_qEB*0E!=K+W1*Ou}1Q3>Ez|59Qoq}8m1xAkqjar)YQLo__G8KlQ|BvWC>6;b*52bSoacHH|^S;CLMlZ#LV zi~ZbBcsiJ9>H2Vo`V6SOqC+Ij9iUb@4AR~oy+aMR07GViRCmcl)34-OnMr_`NnJt6 ze?>x0nH9SP9PE*^-wry0Wa&Od4+w&1v0oKAh|CVrVPm=WIg=umQzS#vGFZden}!(R zAFKKss5>Td^*@jf(mBLrwL@uuR?NPAVZy0?bmCW^GHo++N{3y+0r5gca~m}D5te|N zf^tN7HjdY3ZQIz<-#vA8qt$_@)1fJ2U45E7C;>V57)&PS`$GxHPnp)W8r&N`QL8p{3JbxOtUBTZPCS~#3e1-4x{OdGXr%OQl^VPzdVxZ4=Pk{%D{8txUYtWj z&gFZtf>H{?A1<%WoNtvTpljHs@gbqoN!~q|Grv7#Ze@O(mK?A5o1ulttq(x^6X0z= zdsVU7vMfh^f^V!Uv1BmD*>ic`z-okg!AP2<`jLOT%&IiQ?B~$u&Xd*q^UW!D7;!1c zaVKQZFYM~PxOweHCsg0Ndg|}hReMzXXW$$1RezF_O6$awJt{AiR~#LMlO0s0(5zkO zkjl7btwzTpUXGxcymrmS>nwri=+~L;7Ai+3Cn=&s=v9lXaDP{67-3huE>}IV1KkkN7sk@Y(oBi*s2ql;$f|<+uEFx6HNl zPNQ5pWL_7J9k(uQ`=bW)W%zPAwQ?mh_zVL=F+7iDt^XODXr>Qk6nhss)fl%&@lnAk zacF}C7$A7tpM31K+LJl<34bCgVEy^7FSDdHSA-zjUA)K3uC%Qp?r>5=lje}Ln$G4$ zxP~$NgS`T&_i}lt@q=URDu5_%R%OUiE4KJdrvK?EZq68ucm-13T1hlBc<`Ak*z^yQ zifWraiWoPHY}na%;+jU$uH~@KlG5bwaGoc=`i0q0MNihpCrFOUMc^8Tm^K(-_%d*|twI9^-RL7WGvfCe;*XC)3 z09CJBpP;hTw|&|e&`_G5R17h{dXC@W3jCJo_Ft#XOPH(+d%#QT>sOLc(Ii2j( zDbvtY>%k2F@F^W||b;0aQY zp*ua(U$iuQ%#8itUI1~vY(;V#DrtYKtE}5EtS6!|D`|7*;^PnEnF2iR<71nKXVyR#e59ljtJR>G&bH3 zuhxf!FQpPUqdKTGFPDpZm_`O0^x{*I{syy07;r9vsm^Pb$<5Ciedu4xv2}{6k4K%3 zg<_i*89Bfc%J{2Z@0jh7N_^gKzVPu!psz~D&#qOX5-Az%WCT4qUQSa+2yX1?R=gGK z)XJao>vp_GA&Ne1u;q$n06UcaHpQxPJ2Q^R91*fy{1wZ&J5}=WX_w5>d zt&sR6@M>gmGUtE<85(-(B5wQscExHoRb$u+!knCs2NxzTz& zB*45#xW8<((#bT`gk5k~5{T<`6)n`G4k zjpN{<6-u=<5M#t)0x!v<`{%e>2hR3K zt1I20Pac!4xa&+_%77ya7u(so6&0^~GF7IU;^62`YlUI|?tjaed_625iy1@~JUN}j z6$!DgnXFtOUfzD1K-C{i)t@FbyPvSM=xim%h^x0kFhZ zJIKWKE(@aCr9X8v`Kl+3Sf!Do0LuRhra)Q0qd_6%=9S#MIbt8j_lC`9)ocVDW{Hx5 z%x3c#Nbfv{u@^;3mZXKsh^&l2SwyA2rZME3cP9s_Cj~r$T5??NZQQ_>R1MI1@_*P~UR}VfkL48->`+SyJW_EPndG{T?x&EGd?X}nKKqt|k(I(I#<5OTmwuEcTzz#z;+8XLxDCz13omSFKFv4Zd?Zbe+ueM0=_M_1i6s`-SNgX;GE8_l zx^n*0`bz{h#KaH1e)01zR?|%v{Wk#gHe7!_b;O~+RVSWwvRZe;jn&6Kxt!Sy|K6@U z(@o`Gt^v6=xDqMHnv(KxKx#{Ad^|YsSGC-X<0w`ZvL}zd^gW{MKtLkPdAEKcln)5v zDXsMcVgn8c0gU*FOG;onAf=iz3KUmBrL%~5^V8Yj1*0{TBi;7KoTOx7KKE!DdNg!Y zCC@UnOrEEBQj2>zBn_9t(+HejvE&082V|if^C_0S(5jDQF7PO441v)k4_V{N_J~gn z`<~jow~qBq7i$>4F$z3s9q2+8dhvx5t+3J`bOJ6yJgPY|n=z%vAFk9l60_D#B2g}| zHSd`~fUh5dY&j8>JzfOQkWM0+!!dhbzxdeXZq!>;WUYOZg}g}TxNg0Z&QVMiBM^bW zW*=(w9%lcPJUa5n511r+ zG&9yu_CTgWB+h@PqkPRM81>57!6r@L=lf%6OBs9S66pY{=(Hx~F>P=JtsmyZfF47C zOdheOp62&ZGpXx*(6dRJyh=Tt!?-r5`I#_m2Ses3)rLm27Nb>Zf#hq%pcE_qS&u#8NosFl{g{L;(Do>@>Y z(`k*uXPglJ<{pt7FYftmTv$*%YY&YC^ley>p&wjGM z+Ujdts&&8k1@({f&(pWAnO{Bj#1lsK`WtRA{U47x#{35W1~besz0p1N*N3Qu7Fy8! za4k0HpL(j?ZD-)CXv55L_C7qvoQi9T_EJt>xThCiiuJE$2{AoWfK?1SYc*5Xk1-mT zLBK~oXiFtb2d5;cIAS^o#8?rwfrQQ!$I93{D3~P^mbiKy9Ti9jD)NE+3YgVbh9A5> z&rV$oQ=|KOT=DY|yqVA9=wsKW*H1==6;RlE^+DHO zj4*Z%nx0}7I(ZQ*#9nO2g)pyBjyE!{;F{6wZY&f263Db8k{+5oV<3)yiq)2D~SB=Q+b| zB@u(eI1#v#$Al3>G~u2;86y!q$k5tmZ9zy&-IJt^GmZybljfj=xyOfXVy!|4nK}-k z88`B&2ewaBmwi^{w9WD>WsFDP?D0J*ntn!|aS8MeiSfczECYn!7|-W-cic!;jW{ib zQ{fb#$oVU5R4$h)+R0SNVXwUkvPz6zwF#CLAA7x;bI<0*wVjh7Pv<#mBXQdZa6+)k zW14H5A`?T%sAv1^BCL3?0KJ)1{^-J#u<~A~0e0?jLnJc;{PMW0V8$aG|zMuQo z^VC5<|Cz$(Hg3TZYX5uhe}?_;|K1IW4G*`xL3{VzNY@PX6RybL?MJ(-1NPrn9eeaq zCa+0PO;TUpVoR!++*e#-MY9RM<{GP;d(*%0;)`nP4^3@#zP9zY>b$egRNHT}wc$;A z>M7&v{r97|U~azU*VIXW{*$?%JieU3T=Z+V3uXkBQr zCCrb}e)1EaR2!_fuG)CR4NUBN?!8xi^V{DsHcdWFuh-DzciuL6G7i@q#*)UE=Xmf* zgP&})jQik;DwbJCwDG-J1z#{4w}AlB4x&pT{09}<2s~(}#0R~`O+q(lrP{p>6qfkB z*u&Mvb5k@!Ii;r5qK0+oF?fT48KNiGDv~k@##zcF1q&O0Mx~tuQ|#Cf^enmVQF7d69-0#32N2ra01wgz=o4f#k=grUO=TT%Pta zFYiEG6ixw(EXy&H0;!;Bb1wGMq6(cEbIXkJj%~P!YqO*tV@BKTZWT<9eVHP?T=j6w z)HBS`+RTTXewj`otZIT zXc9_=JtQnGgT*lsx(xBHksw$U4u0kt@<-3EfXP?VPAHqloZwrIFwL z3g^E|vr&y@7*Fw_rvUObU7~q1NFfIuZ^+ zcmnbRCYO={izdE$2_#!@zGQ3}Px3>Kt**|ZOM4rkw3_D;{fd$7hP&Qo)vol{Cfbqx z8l|GsfSH*S_zt(cD)QtZue4zg9WJAgK6z5VkO2)7yc&0+|T1}SYN?JNyrAj7MQazeL2|``PmQJMoz;%S= zvd_%Mp7i609A_F0mr&xEy1by|3;l7!u*p0d3B>^MQgKhRjYQ0K%9L^ysZiR0hRycL zw7`jh9yJ=*ep;_3DpALMk+}JLX)BwwtWvr3vsNImDATTcesc7 zs;jK39)IGo#;<3jYYmKK=XJURdWtAU*L|q^>_E zf7Dk&fHRVYHhemW`vz5l4!Vsv$qRA-tBzNOeO=_@Xq770PETS{GO3d4EgcSKivW-Z;-N+v`&frV-6t&}EYfJ1qwlM690);APzljAk#g|p zk~Y+1Pkq^kWZ=<N6KB*U>!HSz?6!(+Qcyy3BL zdLWWkl6K98X#^DbK;1!9$Yc-2vJ(cI0*z~fs{WY#TKbUl5U-YC#hfra`ofJyg$meF!@IS*E}I~N}Q5Nu*^okqREMD_YB*QK*Blq(gG*g!H67(_t@VAs@z{$eI4p zla_WqkN(|WYPpi+D4?rZm_yWH<`PCm4OhG)*{HMs?E!hBL5U9tNu&2$i`UTRy9kJd zs$ZzgJ*p&I(2|sCOPV@Nojv)o57|L3Z6qyi9ok=2jxc-BhH2!uP=eVx*n`!qEUnvi zQaSNrF~cw{*yLq-C|xoP%!yE1N;)graLEi*e#v@L0H1SU_&O!WoOAXx_s8Vd()-Ra z?sD@}%1npK>@$@+CuBOj`ahy$*uF$)X+hff)K9#c}4Y)RVT7_T@|`yte^|aRewj#+pHy2>@Zsn_-zJ@X%sE(Lg_wuT(9Y z?@n%U5Qenh%;D-$R?cuw_1%$*|A2Xj=oJ&=`{Ai0eM1Jo#{?StEKy-!4d5ar#dt(U3G? zB5Fk;qdxl3qj7YY00J?A#)IYuU@GkMEn*E>Phq3x6_YPYvNBEQeCTLC!{#G!YD~|8 z4r^X}n-4!25r7*W&WWcrq!`6QMZgT!s5uCDAUd)F11?u~bq$!fxc32MOw7OK_n$l2f{fHi})gEiEt#^a;du|aK-onh%GbG(utd*iW8_NcE7 zff!-OpMje%PV60x(IA0L%JQs)B+g;7NuvG0jGkqi@JUobJ6vM*@X ztQwPH-)uDF9ih+|lH-UQc!q*GuP0?Z@1UnzQftI1jsOwOvxxL~<#V*b9(@A-K)*+h z=9V){pX|fFDJ{}d2Z0<~j4eMLu2F7Oe`}2w4o1id8-x{6J0BqpVnZE&3>&0Ee*WG@ zYyd+x^BzoluNAwLZXGN6G{WmAYK+B5&?Lq3s9)m z6@a=LJip?~=~Xt&`aWLim1cNauE)fKaq7288YGK;wxX%PW{7-(bzTG9cv5vw!; z@v7x}EoY;>I?~lGOBax8u;da;sM%)IS1~{OSgOuQFhYO`EWGeS>ctmdQV%@%AX#1Q z+kP40v7B%eAM;(Uu7893uR#fTC4*42@87bU%beJtkDDOL8i1aK>QeZ6n^9FyW6)-D zZJKAG)~2Xii3Q>YSkB%C<^K7oO$3I-9O%gtwJe)5T=t948+_Ki0lg)cR#j=^GS4_I z)jYcn$t$N<*|7e?mg7Z7zb=N*Q1kvmH z*_3cXJZe=DAh;>^2Hf@$Zr?*ner>QnzU;Eb`nl(xYs1UPbkGstZv@jn1ai^JRTxqz<&yIt=*8C*FU9tUrpWY4(TdB5XTz5s0zwDHRG$sY7{e)7TeGuJthKolY^yIZ4J>)@nM{?%Pq9J1CR>tJE zI3a&s`d%sP4+s6FP+gH}XXGTQ@#~UB%Imu&~M`)~V-rs`OI_B7?7f;Wg4=5k? zX$TPQ+I)oq*kjG_WE~{iiXLKxlj2Sz_3~qix*cno1 zXR2fx7?4H=M(CuHAQj#ygMt(9g!c0C~u!aKe9F?FCI+H;is~QH3QG=@{U9^>ETgFXR z<@!#h2@WSe?vqNclK~lJmYFFW5CGaOLoS;PUr-yhb`T(f@uIYwZCs?B2*jW+XvpQb zb)-Y;O2Fy;hFj3gH-0|#_!Ez*H{N)&_Y)pv*f;|CaaG*oed45vJ#(v>GDY(!<QfO&d67wBr@HA6fv(CF#ubABX;hG` zI?3t5N-HEu6aQH1!RnGJG5Ms#eFH^#mOgcK549%nV0f-Hjz#F6AX&SgC;3Q{vh0M3 zq|m~9V*i#PLR^*1#j;q!Rm0b2*H)Ts8P`@quA^j{;Bc+PeNxHsD=i#Bl>ygd?6e0q z-&3k^R=G294ALczTK5Jy33BeCMw-dym{P5L?*}UHA>X30nYw6F2 zu(b2!>mW1gx!&BIsRM47o@>?ID40W#Suh9K`bCDoD(J3LYVDM4bF9UQ_0|aCrWl$m z5!O`}g8nC2T4HIY3i`k1Ml0YkFY(g>C7X1kc?^VexhjbofYmgIc=a$WG6*~YAfMx8 zpRbX$={3&ydFNG&Ew-3?>7|#{=r%OHHanfm2b=D=&CJwOk2OE8I_asWIv2dbNd8e> zEEKK85pJ%+g*A8qx#bm$FsxcYj;IpF=sYZ79aeCP)~x}|T7|^7sJp(>bBc2YP8sPE zN3DBd`n_sqM#^-gCfVBE7ni1(72ZLYH?C1-O5UCiWvEmC0x78LXb|yu1p6g0apHL(hOS@I z@7+8Fph(giCiCW^O-g)Dt}EZ5$H!yGj#UdUw2-+9{<-I$Q*XWX=3rh4kBQ4Xadl{- zdL<8CE;rrBO*@^r+WpbT9#fMiPwo&9oe$IY^jim(&_(c!AbFjytzRQ1P)jiSwXz2D z=92S5q_91$J|CJQ@q~qvUU9ml$Lg;k(HdNI4iqHoPhFq@sv)s}xO4dqRHPVHyV34X zMDb!X=SR9FjlK_Bt!dWktU2(KY5JUawtaR@DV25G!<+B&u!zyI2U{2|TA=UgRw6-6 zDAh^JNv5prdZp90ot1P@TM^;7xuuy6cq9=*7(SU`uBUJUeZWntJON1`L%U+3`I?x~jvbTQ81Y^K)ur(JYcxv?Zd0NzbstA^^JsKwvkf?D1viFoL z0$b6{3*JA&apR^{knM(qykLo`aQK=lpR zAl>^*ifhiVx`#L4MXL5-15cJB%WO$puJF@~WW{7d%dMiTBr0+xC8eF?pdeXj#mI%r z30?)yBq|2)Lo-5d;NSptkS+{p?-XBa%C$Oc4x?n6lEbrw=1I0qXYkfN%gn5dN*0F^ zVG$s3vbVw(0r996L4Zhc(FK5|N{%~PO0|Nf(qy3MS!SMD%{uEWYK9qRRMSm2PK_Nq zjhaet)JE?V3zjN@m4IT(IF{3w>DE`I6Y?{SyDTISp*~K{l*5_?ueQuTQ2%@HJ$+UC z+v?3X-%_u?{+hnk(97!OS6-glpL-N&68}K4p)O^G)gc9KWcw$zFTPG^h+FgoCfQn7l}5KQNn=17)bIuUwR`Eotj$_9JVuP>GT6tTk5qrY96%@>?;n} zEn<2Fc*Ewi>TZNYxnS_{W@`SJ{81l9KrAmojy_X_(aPXz^a!9?sQRhIdmK833%Sne zlJZes0s(?YKsheqVx%e%0FJ~kgsJ3_7Umb>5# znJ_09Wwz<6g_LyK;`SzmqM2_10E%*xH;UAjPIE1rSCDBT8peTIEuZ=YGNUWmJ7y(( zId&Zy)S6zc&N>8u4ilxFk$i@zb6GYYsZg1Pl$y`A=Ocv9FFNTIcF&j7odk&%79D8a z8y5M+vx=>aL3!)qaRyFv1YG}3>F69?Y0fIcX8#M6XO_yID&^hpMiMP~x~cMhyx*~? zls}hUY)lM2b|u%nYb2_)g<>VyK_c~ZNkX+Z7&RtbqpN&uN(3vRnjhEKfODQ)8V%$J z?<wlJ$L{3DPnR9vZ|WmW5QMSwGWWsqK|gtF!h}DPtX_osoQos7#!ub*E}NK>hxS ztnNYLTQSpfuvC=kX~W zF$T2c36*m|?AezNKa2(vEJ+U|7X4PUKVPHsccB?1Y=8^2?86RX4fFn2fNV*6p|w9I zf4F<%4iqeOX^@N{Od=C6Lke;+q+(z9tWx);e!VbEPrh7LtwN1TYuMXVb}6NDrz;xq zFbbnYt@?V#gGa{nbE+>|>`4ZYbSRLY6vx!fvX{j{pSD>x#;;a1y0Id4eZ`CCX zmf1O?*6_7D>l_9$Qu5!iyrR6Jv>h}$v(!xCpdrylJv`vidrh(cryP5#Lp+qIaM6LM zX@0R=0v+kCgxT<@5}*NHknzeHp82d&Dd(PtTNNJzZbN7)ttWeL_%xs^c^z=XqwAZhOFm#U6dVQ3F!cn8SfkV9uuBA8YrY~mjxXZR2$$0DoX-I+G91*sjo!TS-9L)3faDRzu`{Ky5#Au;MT$Li z;st2GNQ>=l82XF#9JjqRV1Ddv0p*hP&EO6X@Y&~jlul@vYt*|6nI*7RgS*r;jNUD( z&CFOS%jej*bp~w)$}z7U<=P$Q6wrV;dO_mMu%MJlp}2uOdeNmt0d-4=NcUpWy_S>2 zF3wHDN3rDfS_$3D2dEGs^k|xAz$%Yed5b9Gz&{fhLL9?9NOhw`zdWui)Ja4?qUKRqL9Cszb?gu3_%%n6dK?5>J029|xPwYo1h0rO^1AfG^xK%%E z#?{(AjU)p8n(8}zSOEJP3m{tTb60|l&3uFr#AHiVp)w*ZLWCkl%7CZQBXFkYz|+-3 zqaL%fF!w#sQ?K`|skS_8cUW6yg&hsc-bTGwzRM$pM*|lF$Azb$21O^PGjNMiOe{TpEKARB;Mi((Se3zi>bhO9@t&w<3yL*ek|DtKtinU{27 zPeZ3D@ixm&GKLO~oPxQe0%`_3&6j;ZZ7^95F3!NIcc8GTshCVRnZoed&H;QV2Lvsp zcwP((F;s1nc80PI(<);dIx0bGD=Dh&Q^FCno#9d3Xdx3pKkO_IriYRHsNVW(n zW%kxAQ)_^QT?T;R{Zj||1B`rbX;sey($2>(dt=f@vbjRZnujNnTyiNML1Fa<;3sn zrqDFpGlZmt+K`YuIr-(vbtY)OJ{Wbu_s!!mz2|GDIOqX3)`#ChJYT2KxHd?k#iiWiHi^lP6i2OMv0QOT@9 z4*Ip?@_DmjE;o4a5NdeQmCw1SEeKu=D2EbPuEL(Kqa(>lbOb_%tx@9ZLWx{r*h^Rp zfNBpE%@q8#P5uC&-18+!tR;=ad7ke|5ljYsR}<+<^~u-MtTalU^M(}A7(XtnEI3E9 z90Yhgj=*dI)rq~0RN1=e1{>>o8dk*Nl*m9D==#spRpJi{79pm=~(}F!zpj&b=&^JWo}sq|;eO za7;OaqWR~EK~b$*9?YJ#4`GU$XEmrp zXLac!i4Iqv?g>zVO(?1kDq4xU2ww*aXUIe@F~d*AAE()k_?<-{G%q~r^5(eKOtTWH zHBfIklVub4+zfdRgaPQpdz8YSazhP*0@pEn)MQ`-F@g#xBpbmpYfOvT$C}nJ7V}PmW~)kokO{=Z|SmzZm;Iz|(T80y+J#Hwv+UJZk`bIe^2#Yh%XF zIK$vqnV2`O1`6Ua-#8jJR|IuJYb>eL(k?-929O3C$I+;}&&-K=$#I-&j9$4sGivlg zl=Iu5c6!Q?=&W(V2!7ybFsTMz%X&G-?ESD-mqePPZdRY4D9xEnAWbKWpO!2E&a!P-CQD1E38_d@?rliJhI8x%_hY8ko9_aOUdX9S zIcOBjN{JVT1B$m`bcT+&iHx}rO-@Y&sNj>iq!iDTD|l|55A`Zr(6r zj-CYq5+Sh)`JqE-`eY2TVbjvr8Mv{8tD)jTA%+IuhA; z2%-?bq57FhL+;yfi_8Fo-(e34{J%Ood|P?t3@pSYk@pe4d{d=72ivX)AkaC+7`197p;9LRcC) zW>_Z}M+2!UtYWF;RHSW88!~c~7Pw-VQf7?J9>yY1l2TmQf52G!fmn{c&{jr0x+@&N zZN)gEAJ~52Xgfe#4kUKOs4a)Wm?g^?Ml2bisR$v*QpXq#-jiD*3->`FI9l!+3?3i_ zDagT2Kkw2-Y*!63t=#wEr+uH73B6C#0H<)R`jdIOeu3fQKz%3GxS>KO@PK|-=X zN!Oe#L;4~7am`^z?)nIUthLa{%YzI^x{*MAGzpD#;w_$VYDxp^r7Zvg_bj$!&rePcnq-rcQomG|0exuWh(|m(~ls8zg zA4ZM=sSHgSc%Y>Wy3Myh!~iQRkCN(Ht`aih0|Da5aYDHXhCeABmq|n>PO#{wiJWWl z>6R!HCe0oJHH~4}Mm%6goTOXutN4Xomzqg`>KXKHXJm14G69yYTjm?mlk$F|Ie)Cl z85`ypJ;w$%T^4({La2o$u3l{;21DQNM&LvqrPC^HAcEzPOwWgm{2cS3IGipcXp;sv z-$fL&=7I@!n8}3X? zXesP~=8&?uVN|00fyI<-30O2(Bwh2ASOWTy>Ii{S2=L`ZF6~kdiYm)Mu;I9v(V!xhSLjTS_$y5|AFJ?yns+VaCKKL$N<7)Pxh|Ebcw6ilOt1OII|2< z%b<`_OTE(+)ALUY`7EKDaK$)gzw@BI%2>t+)`K1Ol0;~aqrcg-^6dcF{qmY*&R`O3AdK_SRuUNx~ zSIVNYmm6wKoXvMEM%uV|g}JUy-;O#^Tn9q*E&QXzJBI*YZV(Y`QjTlMf~Sz$9oLdw zTTV)sg!jb;FKdzWTt7O$YRs2x>ZMRT$U3` zU6*A)OZkpM`o2z|kF!hEQYdgEFa9#7&r5D3eFKyBZ18jjjf5L~r##)nm2yaE2Oj{x zLLgvPm+mF)>G4?g*#3|nWbfz;VZC{>#C zzKAEFu9wm?2}mp*bSi<}Gi7xyk&G9c3{mIu>!nCRK)C8Coo>9B z?64cnm$4fS(vEW^=$~0)e+6=lRRD6iY_j`ij^LuohRu;=3B=4u> zAK7ayqZnC@(XZhl2vc129-GOhfzw9D1}1H9Lg**E`5yGiS%`%k%KUAH0DOMO`LR0T5uO0g^Dt(Jz`vO?sj9g078XVeO!cjxsBz>X>1` z`R!=(%>*l7j<#?BX(q3J^GY0%cMu*b1cm)pZNvHUyeY7fA2b-9Y8($|pK~&@AXy>- zQ@SLf+MkRD3T(h-e_}hzx-StBr`G!OZ`67H=@#)=x+G`woe|_&qqIjl8Mr=yM1nDJ zCD&V!TvpmMhlG*idV}_%Hwy%b;t0{Aqg5kl!4x}|A9E@b5H*z1F9k9k%OH|27n|Nn zrO*q?Tqo`1g5o{s+HqH>tv@d;He94Pwz1gmXp;$5w?E9+8f-5ASYpxZ> zjKw|Qvzm`;tSf=dG9N0L+3f(Te$_+^d|VeFsSx;tx^G_hn1So|ThU*kbO;ia*-Jj@ zih0yw#0fWVqtlJIRco zbKod65J37H@A0ZE-0uMxI5k|0Fv`?|V@lLtnDM(9$+0gEAE@mNfN zLbQNELKxt52&;^=C`xAAq1^m1Oa#X;lY@@W_w6c;=@iEDq!Bxl;uQY{R8lNE#AaD_ zhwFjDn@S-YGD_p# z)ob&1l~Uvf$L7=P%LqQEiPi2a^ktPDPFfyQq~jF4VTTjzm2gBsE-uX@yFi*HR10|P zq6!M}V5l>jfx)RxP||#HE(jXt#pn69oIBe1a*jj3XbTVpVKs0b|- zB|m7G$K?F9?Iycc0E)990W+YcoEyKeA zi!3;n$Sk&)R;G)jkWR7QNylX95D+R!U;W0(ECxb?;`ec(Mn%i;!hqE^zr6VOJ-h4HSS4V?|ODUZK3;`q^}l+b%*=j>eAQ+En&II684#OQb|hc@sk&9gVv8 z%-on)jhWE3bjdI*pJS<0C(Sq!;91eMW}oeCpf+O6zE12yzFK%{sWXVRL%dj2eDfU! zDRY&=jzf&P1Og6V&LE*m2Ig>zc#tulRIk?4F;XI3%~RV}mBUvyY&&JwL5v~N$%Zr5 za6VjQTeyMxYh#>RYrXfflQbPbEZg|w=E*%l8ny%7ck{SxC!9{;zmX)mpgXb>Eqiz0DqvqiE#A)y=4OYmd z&^8QhI|!!NHD>8@j6rFuuGQCxz(F*~#CeHyCz9#M7@>2wt|Nurj}>+%X9qB6kQu+Y zX24AW;{qxH$NkLmE9MCx=KJE5QiEz>(p`#OU$KKl)>8qYYA{4*qMRn?5h;T!Gm=`+ z&||V9gT8x~6_ReEq=Zk&$O$}E9jG#%oX$G@4y+G;qhyYV7(H_(UOJLIc!)8_wPHl) zbjmT)BEJKD7em)m9j8@$%Z4wm)cJNg+oGNXyW<7bn&pr1DAO=7=xhri?DG7?#Mt?w zq_cVVQ#2RPjLZuwX80IZ5te1#2%}i36b)~0z|hEKTMCEOHH(!a7Acg*^;2plkH2kI@C2 zKxZJ~TPIX`P$UF>#KDW#9QdZTI>#(JR0ZU}>2}7HcToFRP`MyhS*84MQDlzYdA?RKBxL5I!TUW&>sU7k+L4j6hJqy83|?E9>=ymVO>`#k+jIh?Sit#itIu;-~O>o7HG8?Yo|l7@yq?!jVf zObOMZu}@4r;b0%BkDet0K4=6p*73z)dn(e~5YsVI5-@&ds<5|_igUb{{Utq`6Cg(L zV>Bf00e~ci0r6n0TI`RaGVq?cxOfm)ra)H^6&e)$bPKo7( zZe(ck(4NgrwqyZ`LY?r;n7t#cd%*ds+i!}$O5rLQr6f=zyHHwI$r3eY&>OB2l_eO} z@`M}zs7d!Eg9eTqDYj>}bZ;YxeQgOt;ouoo8F6zE;Nlhwova+o;StLZ90jWGYy4_R zz6KWsQ0}nGKo-?u40}18IREhjO)sZgCb!yNCTnw4Cj0hv3#V-rN#LL--F_bZ>cK(4 z8T4yK9nL%DwS%im_8rcwzr$7C+t7eJ+c|;x39$MbtHRlHHPRqPq97o&E~w5R{n0m6 zRJSn0sa%$neQK9dW-O*nibs1J0+{F>1aX!yN!l^MAXDgRYuzcQ8awtU9=p9EZ%hs^ zI(vJrWhG?VaU2ecKF=^D6Eq*O9Xg{T^W&!vSY~YF7?O@zo#~LA zo+ZS0UU_8nSjQIBlBG*pI+ZCn$D>27Qm78+SQLuLd(8Q_cfZ!vr*zzAmamijVTO>E6gnszBXs zok0+kw2T3sNvI_>=hs-L#g#@OIxRrEy0rKG`(x;tLSh4Eu6b0IV!Calx1dJenTi=n znIq6rCK^o@M~$T2h|_d1D~GFWn4U{jNp>ob#`9_ZTSLxs)rh@ims)?SAU*$LCd5?s z+GjE2^xz{&I)pW0yUjPgu2xxTWwqF%i>UGA=T$S!G?RM!?YGrSFTJdue)?&3@@c25 z)6O_kz4u=J#zsF)*Jhh;qPE`ZYlTw&K%Xa`fBpsa>T9p53Hk&2$)}#CUd#B9UdU-b zDDeXva?ROH<)6IDb&e-{lbfp;~sC zWo%fSKlj>qU-kGCPg-6YvB7%lsVz3&%n_e>(#h(gOD=JEYp$_|y6EqJ)2F3qHr{{# zeRcG)$EqLhzK5e%bdXX?syU9=RlMW%fCHO9Ue{lDUA5&Fo2TYgM)1Ic52*tV{JAkn ztAENVr&Q~H;qz+AB^FnUd}L8I>#VbwV-)WZcKFUtYVzdC!H`QYwUkZ`kXue zeDf)s3-BJ|v@_07=l}fzYjfzY4^caR`&)MW=9_P+O}_FKb=l=tSYA`ayz|VX?!W5} zHE!HE8{+0$ZdISs$5mdlcv(VQG;xsU&p|@V002M$Nkl^qr#Z^T07@c~}o{cmsNTw@kBPdweVR#=U>R&XUx-Rb7c zR`y!Em~pz>kt7{Ljcq&dMw{JuAHnxs>C73 zG+!KWlmIfpNVt_LQk%Sla#02xbhuRxS=q3e0yEPw8}EoKXR4Vzy6M$mfTsdw5-+Hd zPS2fAb#F**Wid^+8cDJdNX1>io$aBR^t(Inq<*sRK5B*;rq4CN#>U?+_=o!1*4vtm z`CNlOP`LWCf0+&0Dyd>K>5e<^RA2ep*VSW>KT*X+kK1@>fIj`;feo_#_u0Gf8vpx0 z{-M6UE!KE=Ln$bZAAFFb$kiF@sVGmEeyNmEH?5a?pk!IyGhCha6m|I!w6=IisN zE$F|Wdye|tT5CJ(d+xnQEx*dA9A2jfFFo@gHQjWr4Nb(~WADAyp+_85I`ktexO`@J!0_y7zwj`>M5$ufFV3 zwbF_!)Z+7&2dFBpu0(+)RC^zx zHj9zwy|7MrN=9C!()w#sYP7eJ4p%`*D((Vqx}t8e`Jz?Sw{8++R-t*)62F&5 zl!3==q#U%?@zt26r<%g{w7NZHG3fa~PLhttMOC3*x&_bzix1;Z>No-$ElTkNlfBd+ z?f2F&iy#!NKTEeJS>=!&%&|zRnd#UKCCmz2rUjMyrblIFE?Jf=Rm;-WV@s_?IYr}z z$QZ{xgrgTH2cjYaqHCZ8gdrm`F^8l>dIfp7%4_1I53Aq&>YzfKl5mTw);8K;ef7fA z6V+!w^XY<-23HMNTYmBrpU_v$-Kn{19pP32PdqX~ z{rccvmRjQ*uD`x|ZsJ6RD~gM>UaUPgZzSC(iO)FW3~Il<_fofBf1R3c+G$N`NFA$_ zCHTEj3dqSvPaDY#(NYhzd_X@9Af6h7P@KqZbFTU7fLBFf4yh@PoGo7^o5aX9kUvD%nh=2q%1J4o6 z1@Sa$0knuMMdGvD7_*2e@Z&^$nnOz3?|sYu8lxJ$80C7*D4?KPhKC*yu?X~}E2Kqp zAjsB+JGv;{r>)0UUM4#KMX5x+ z)F4f3_T;DbwzgD_+6ARUM&;L@M^%TJ`Ez5*{s6B(6FpW;Nf4MlssjCiezK23zKm6@ zslA9dX%UkV3OO4o2?V&(*b7la`T~EPFvw?M6aAL!uT^u;HCMiJKx3L|rcwX+>$z&V zPlh)>0wx2^nrf=4)N%S&2P^zv@(RqpE*yt7&y5*{^y1NvHGb2z?XB?(&O1jfr@veY zH3JRc2?=|VCll_Qq+K9C_R){2i}imcFn#u}*6@t_wtggDQ}XY=`)*>w@gGSy-F#Dm zUzWi%+e(#A$_DR(KI>%4xR?I7w%I$I&_OtTPl|6SJDUecf%h->%>#eH@N4 z$08Rm1=61{t8s5bhUqqKE;=ce1QB6h%&JGV+9(31(p=I_R?Ah2UOw_;B12)Fcpd6g z1^Jown}$F&oH`XK^~dDLJ!XQl;nSX~8Mdx`4@sNgi2_KnZz5dtJ|)bE=8svOm==;o zUCWJ$WY(3n_Ra7uLOTbO4;c$DQsEaWx}g<&X`P@=U7E{2p-?}AD6-Ftz`WRJDtAW6 zyxH5RW|K*C%?7;Y7T9#MwmnL44axp}Ki32hP=Ey+t@Ri$OxU$Yb6%vRek2|}rz1c_ zi5d`frh$UAKHYU8$(}#{p;~;gMT5Hd5d6j)Z>pDGep!V!HfV$o*Oy-S4-WgUPk`QD z3AhUW!oU5kJtw_lZ9jB4tJ2A?X80W6bqsL7={nZ@$jWwsELd`DrOim_CUKi7< zD>QCJvh%mUQQZcinxrv#6F@a!E%Y1H7-mZ^rEK zo$sj4zPhEcrP7Npy`=8F?>-J~f4IKYR43Z6e)HQz82skMF~9$Pg6}gz>%j8({>?Ic z>(RIr0>o1rkz`-W&q&!hUI8YTD0_pj1=kWW@)%1VMoAuFrY1GmQ{G#B3xT3}mA5GB zxdVDgUOq~MlxCz$n75_MHN+myK<789C9Lb-+W;W4$*}~Bw3JJ`KBI{!QD%9z3<}bE zt5}R6Y>dM(to7!*92Rp}S&IdwIDnXs6qP0ex1JA+q$WEYG1;tWGcl`@)_|8x;0jN|9->cZ>lz)(Pg)G-#2ISv}GrE16ju zjdUSHCCQq##C+iZ4dKCG%R;0TN39J6{CRMYC(i8Kh?8cz%{RUg6yXO%XPoWIx;m(j`^4|^oo@$a{mi`S=3CTp~aWbbDF-!cmDRb1Lw`4`|dG0Imn<(6C_h$8a__~^pPc&P}9sfW8$&&$3L$2 z+-INE-<9~m_rE9IjOYvmB>p&>xilmn=KeUtWpg5#T)`+?eq(EOl)kt4#7UFXv(G)J zF1+|6y&=3&LF?*j?wPTK9|<(;En%LedgDzutEs1-vGilMx#tPGUF$QSPVjMm`1u!E z%=|#>+2{RLU83(jZ<~JYSmYxMtEs1++OkOe#9pHyWGs-6Hh*=esS<2`iFD#H@~His`Qy>pQE<<<_>DY!;h#JUVKsAe#aeZg-@+! zaw+OlPAhE8)W%Fh7j-n!3nP$oz(LGM*ujYFocsX?7iQdZXpkb_1l9jMSOc6gL=Emr zx^SwEY|VRLofUffJ~-ViJOsR?8+2R3gk@hMCt0hcOSmYk%4J6bt`&?WO?kMd7xuB1 zzm|(TY=w~k_;^wl;!_4slIB?26s2j49*ut4N8IQ+#FO$iX{Jm!4)VmAJ(X(inM3EV zd`BUySQIHpQ))n^W(Yd%j*$Ct)A(A?KgmM1&SpW*MnCOpc%Eixjc=Euzmz2F&OarL zWM`l&)mn5Ha%=@}QJk7YI%L=vU!vc#?KH(){hoP{kFlgFN6)fc8rm_33g(3=W(Pak z1cf7J00B8Cq!TD67y(B$uyAix{5!ed@S%9??RQYGzV@0U!iVIw^atZ_?X-)-=U~Tg z=Kotdb-UhUjq{O_jQp2)srL5UZ>xV@cA3Uw9kV$oWu(8a?~mJejjw~|oF`XkbW-4{ zpYjV=tu2~4 zJS9xBr8=s_jQFqSms={>a3M7BluHiSv! zL%4yAa!FH>GLAdZGp5YP=SdlI;+T3B^OSQ!n#fz135Jz4N_1rNo%per72%>*!)G50 zsmosC10MPG#j%u;ri{A1)2C&|%uzLf(POjm5cg?j?GzS=vS%=k4I>JO=jh?znuf~M zXq|{4L1S+QR72mP#*l@=buh2Ae3-9;n^9(RT4L6OX0lIn)+S%(09roExuz$-cfH^> zD7u9VgK380xq72fJqU0`<$B|^#g%e_4&2eR%93$OA0_0^YI?f4T; z2wnkSc8z0h*Ztxb%?}CIHn(zGBrOWUeeM@ubTPH@h8vpLi!8jbnsUl1g+_G}A*cS( zhs-_j(Wj(PJwU+nt^fX4-=5;@0f|z${Y+k)NncgJ#_Fr9FK@DmT7J3Z)GRa4oM%!> z{t11BKCqs5p7zgyW5-UdR$L)Ejy|I2t&?rW8D=o}053Lwe&rZ68vAI}p=TyiQ#gE) zv%z}nsnu3pRsX1H@`~*`!hF)MlkgSh9XXgP6oT`K-(Gm(1;Yx@{TMaXlppd<%q?eL zd;N_Bzi!5d=bTfm^M%iw2k1^V96O&|Yb~|Deodca_Sv1#39J$fM?E;e54(S9Bb;ke z)=7D2N)=9!2`a}y zuT)|LDl?PTM^S3Br$r;Z*#m;-Fbd2rENvvCdYm%x3f^eSnmI1xO3oc;ntd5Rt)rM8 z*?V4$bNys`E#ro}RQC&FVeH|OG<)*U_j^N4vav?L59vsrrhQkQxHXjcx44Z`$#*XW z!^xt2O#CriQa>caLNs#p@k849G{(e={(K$A10RigelKN4G1evB-JaP7vf#-$LnUBU zj74yv4ceR_G+}l{=|XS7YZk({&^5|b(0w$3FDOEs)QC|gtcm~W28GAA? zF!NHyYc(6(%QV!MSYq)I+u@yc&biJQgK^`gb$Fj%a}D+OYcH#J-gwnMCO-PGqvH>r ze|n_2$E)(;S2kuj+{^bO9&+WIUci((X zJv-?MwdEFHF@AXX*15zlz5H?~M+|13X{H2^jP1ACT0QyihjksVsmC9FNS$}qnd$=l z!?pjJ_=KAL`m5^J8?HnkG9IOQbu`isw-$JP4Q1E-yIqPqXCJ53!g zKJ&CX{p7zS)&}j_-+t2#dfr}f9@}rTjhXwKuDx2l_QG>&!hQFuhwi<{#5wwi!)WUE zm{dMAnYP9kUp#${b6uQ$?s=|nJ@VIhLP0aO+j?s~rxSE7uc}8MdQh*;Gt}SDJ6ApZ z#N&EBzhZvixX6Za$ane)TbYfX6OTJiy{d1y@n3zF_}#bNs!l)YB=z@m&sF!`d8c|) zUr~CG{z1cCzq3=&HJNLD=Cei@KKOX-p@&T9pY6ZDdThc3Js&Tq>#w@X^iTf#-<5x` znK6s>SL%47`CNRl#e(LWfBDPm!F%peZ|ORo)wd$K_<{@6Nq_#cy7r1I)HC{a7B4>Y zA2T<3SI*yd;|<0K{P3~e*4voP_DPRDrswokb%VZD(PO)Twsn%9J6PgcB=mUl7E_Y{qnQ_QNKL!XXeX@H(!3q=-~Lp8t9-YpzyjoP3gcOrICt(mwCk>txxqbwV&Z0;0?~qE9*T&-Q%0^ioSD6xRCe zXRVyC6|(>Pd1ohV@OvneU)QfIczuZ`RAF}^rxTD^R8n*t6$gm z-s8vieV>`q!27*BZ@E#&Z@pgv{mpH+F`MoGnfSPQFLU#CSF1BmJz1~8hcx~#>vP;) z3h|3Jd^vF3vB&5&{;baJ6`l9h=DiYnjNf?adG(j$k5f1&g&N+Y;XRdn9Q=y|L#mdC z9HlR0Hsm*uR#oYWc z`L*@|fFxd|*_Vxt8rWn#q$%eZx}+(iee*r5L}W>eq>x0DiJ2EF5kB55HNQa4lx%KD z#&1^13Jgc*i~|L<|A1oBs-?LBvqKuu9fll z6Hn^*!ZOpy{XTo_o*U;fy+PwQ-xoGE@MEmFYL1V*tADX!O& z2Q=_W*PaR+6WClre80g5ehc7B8*QYXn>0~NUuee-qu>LDCx6)r3`WXF#gcJ29_*XXD%)v_fznVn4{F@kBnKC4&4UIzpwNX`o8^7J^r{p z-v4B7N#h?sj5*zO9rW|`&7-;IO0LZV_TSHJmID`HAREpo=Uu6a<7}Y?7u5fivyT2^ z@I13-rsoYO|40Gea=)N888e{x|ij!k!m+0_;FK_T=IbNsy_a2ZVHrC4l`|hj1gn3l0xyI^X+XKWLAMrsFdL8`P0sEWH z_N+B@>kZecqYghb@|*GegYSJ;zyH87|26$Z^0=TTUTeSlmCf}Rl#i* zR^k6jLIB{7dGT!~Oep>ZRxr^rOuW6}Tb$TV4oR~wua?mFqQFYPfW}xG0_3>@?LIf)i%&=mMG;we73)GX9FwNOZU5PFE#2)&j zDMKIPNqLKw-i4K6>nF18`q2?3ujNQju@*fmFy+1py}wvO@P! zUSsvu^i{LBq+a=iba0!M`4(POExOc4?PHz=7H%-pY}fc88T#PsTj5`;PdffjKD+Jl z3d=8-@ZsMx9~HpUOHNNr4<#f3YY&5{@CMBs8{sWuzthsP5g!r{tEgGU?4tCr&2Al1EJMQ=s9M(R2?qN3HLmM5AVm!bG=^+RG!rYQ3BoFa6+jP^^ zjpTgYqe6v~OI27^lPj^`33+h|9Eb+0A*~fefe#i*| zw=1oz%nZ&XI_pOfYK1Jnzgi)wcSFld-u`wBeQoxC)oIE}$iQ-w)<*%PqF> z*>-&Gb=O(CDFRn)hQ8!^Xu?A_B#yCLuD`C-?VEtx_jcJ;Uy1n}>nD%EMp#~h-yOEw z-rVXYO?R)|_fXh;FLNCI>X+q?qfl&YyyJ_MBIiunFTdRK>aJUFEu1Uuy50vC^^V(b zuYP^-L4}T)(D|@vO-0uU^1&^UQX6YvpQ<=q0{pkvgZJJY{Oy`FB=s&{n<$`~U9ol?zyX{EY{{8pgSGav)u0`+6ai1f|~NbZiUOvmR{ z`K}GEz%AceFTE*owM*sz?@_eqd-4_^;J_1Js5OOL)%y`0+q85wL$t`BU>GvQP28QfV&BMQ*ulRq<*S4hbFZrMS%%>A&J*|JB zmJOTd*Isd%@~_gRJgbL)+zvsuYpzXhcH+uAzkT6zYo~6OZ4ANtu`nd4o zi!J{PpZlEJZ|}YAxD0W^aet`ge%sgGaFhFbn~}u9zfND{PwLx8oOAkVYEgYKP8-E5g<2wV-l-`;zdG0D_5PzVi-8)+gCzQj4~H{o+aBe4rQ{p0WS zI?4FY0_#T9VtGSKT&e$iXx3R~DP29T?!M;o%Tiw(i#R;?=%W4F;NwSZ zCr_T7;5WkXf#v&d*^9trgXNnFwf-Sl1Q%M|bI3w4?zzU#wuxS63ZAJAJqSKn1;&1r zQuaOvPERW`>6Ja=kPh{*3-Kk-)q$jXGuh}ec?G|W1Qf^ zv}7S}8ZYL{1mFm4&O64GLjXGTfSxfl#OSF81k5zVsKzsuL|6(iFEm1YJ8u~1Cg&~U zH2yr5pF`sj>ka@w32a=9k9pl8tN0_%?BRoXR`Hi^BO^eIV*wOd5I2xSVfQ#QBLSO( zCiuaUJfjlp7#RgJc^MIWHt0&3q@feZO$cK`-@aa~tK(CHC*bI%Akq(8Sqq&>q!HP` zr|@SzLx(n`p$8tukxj&jJVx5W1~`3y7jfwOjedMS#`HlNeyC>&%?SC8^`sh2Yw8iT zLH9Lf*3H>Pwq#Uch6v3U2jstiFXz=&Ivm ze*Xt+eBc2G1V0o*;l`V8R+nCWg_?f)>GUmJHqck9&u{HW;9j)&K|pKUyR^YIVi;oR}nuSEB`cNF6R=Jsd5JV=kQ7^CydTA%(*LiJvKYX;eH#b~I# z^Ugc!jyvyCcinThxuSgib=OU7gyPC&+)H?!4L1(CD9rnpzT&WGJM@Sn)#hK;Yy9J% zNSI)aBTqcA#{Z=63I5x|57%q_orG>0<7YqFKXqJh%9d1v$5AaYFn< z4hqi&?u~x`1NW;NZn{am{`wng?azKj-x_Awgo~w@T3X>YEf4B@P*-iht;vSlN}PW3 z$?8+9tda=xqQ1X6b6;iUmCbEt5=xr!tiBKaZTf!qx8HGxT3~?%)MolBJ5`qoRQ=zFJ2ziD%aup^AINDqP*GlMob-BKk*kAwlcU{jV`rNsu+IXW4)Mxei zz`r^kSF-*j=Ld@uAOslS*SB=Rahccf1yyZLPb)Uw)2{x#NB^e81^>LrY=Uq4r7x-Z z_}@WoCNSY)tdmR3I@xgj_3eM0NVjI4==nV5G^~>Xjc?KdOLYbP8HQ=rF#Fp_pI5y_uX&l zG6a609JezGHCzaA)z#Oici(+it-ji-!QVr{ZKv=bAp7V?*@ok9t1Z78G{gD!x*M)H z7bPsCudZKZ<&_f0+v1BYs&?FdJN5hHivJfL*3d|xvgdA@-fP?V_czUS(ebkC zRv6+*c{MsMgUDMTFZp5xC90SWWj$t^bnGyw9C?qP!K1QILqpooc}S14$ZPaWUZgKy zj9T)Reo`)DxAa_F<_>P8A914RmIqLL0gpViz~UG^bB=i}2U?_MW=tmfC{C;$Fmfez zkJ2)*alCRYf5-^VSZ3LUlrlYZOt`|QRyRMeh5LM_HEcrsRNv?LC;RTBF1+{>^}Qeb z(0sT|)9(iVzWeW2%dfnu`GCkn2_JBeK0Nv3oM}JO=;w{id;bUFpo1$E@$caNrWoyU zHSqB#{)I!e%XhwIX-Ry2n{CzUXP#wQKiXqYb