diff --git a/.github/workflows/mkdocs-deploy.yml b/.github/workflows/mkdocs-deploy.yml index 95a9508c..f17ea8df 100644 --- a/.github/workflows/mkdocs-deploy.yml +++ b/.github/workflows/mkdocs-deploy.yml @@ -2,7 +2,8 @@ name: mkdocs-deploy on: push: branches: - - docs + - docs + permissions: contents: write jobs: @@ -19,6 +20,6 @@ jobs: with: python-version: "3.11" - name: Install Dependencies - run: pip install mkdocs-material mkdocs-autorefs mkdocs-get-deps mkdocs-material-extensions mkdocstrings mkdocstrings-python + run: pip install mkdocs-material[imaging] mkdocs-autorefs mkdocs-get-deps mkdocs-material-extensions mkdocstrings mkdocstrings-python mkdocs-git-revision-date-localized-plugin - name: Deploy docs run: mkdocs gh-deploy --force --verbose diff --git a/.gitignore b/.gitignore index e79973ed..bce9afb2 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,9 @@ # BlueJ files *.ctxt +# Cache files +.cache/ + # Mobile Tools for Java (J2ME) .mtj.tmp/ diff --git a/README.md b/README.md index 1c06e0a8..3d4d4110 100644 --- a/README.md +++ b/README.md @@ -25,24 +25,24 @@

-Codellm-devkit (CLDK) is a multilingual program analysis framework that bridges the gap between traditional static analysis tools and Large Language Models (LLMs) specialized for code (CodeLLMs). Codellm-devkit allows developers to streamline the process of transforming raw code into actionable insights by providing a unified interface for integrating outputs from various analysis tools and preparing them for effective use by CodeLLMs. +Codellm-Devkit (CLDK) is a multilingual program analysis framework that bridges the gap between traditional static analysis tools and Large Language Models (LLMs) specialized for code (CodeLLMs). Codellm-Devkit allows developers to streamline the process of transforming raw code into actionable insights by providing a unified interface for integrating outputs from various analysis tools and preparing them for effective use by CodeLLMs. -Codellm-devkit simplifies the complex process of analyzing codebases that span multiple programming languages, making it easier to extract meaningful insights and drive LLM-based code analysis. `CLDK` achieves this through an open-source Python library that abstracts the intricacies of program analysis and LLM interactions. With this library, developer can streamline the process of transforming raw code into actionable insights by providing a unified interface for integrating outputs from various analysis tools and preparing them for effective use by CodeLLMs. +Codellm-Devkit simplifies the complex process of analyzing codebases that span multiple programming languages, making it easier to extract meaningful insights and drive LLM-based code analysis. `CLDK` achieves this through an open-source Python library that abstracts the intricacies of program analysis and LLM interactions. With this library, developer can streamline the process of transforming raw code into actionable insights by providing a unified interface for integrating outputs from various analysis tools and preparing them for effective use by CodeLLMs. -**The purpose of Codellm-devkit is to enable the development and experimentation of robust analysis pipelines that harness the power of both traditional program analysis tools and CodeLLMs.** -By providing a consistent and extensible framework, Codellm-devkit aims to reduce the friction associated with multi-language code analysis and ensure compatibility across different analysis tools and LLM platforms. +**The purpose of Codellm-Devkit is to enable the development and experimentation of robust analysis pipelines that harness the power of both traditional program analysis tools and CodeLLMs.** +By providing a consistent and extensible framework, Codellm-Devkit aims to reduce the friction associated with multi-language code analysis and ensure compatibility across different analysis tools and LLM platforms. -Codellm-devkit is designed to integrate seamlessly with a variety of popular analysis tools, such as WALA, Tree-sitter, LLVM, and CodeQL, each implemented in different languages. Codellm-devkit acts as a crucial intermediary layer, enabling efficient and consistent communication between these tools and the CodeLLMs. +Codellm-Devkit is designed to integrate seamlessly with a variety of popular analysis tools, such as WALA, Tree-sitter, LLVM, and CodeQL, each implemented in different languages. Codellm-Devkit acts as a crucial intermediary layer, enabling efficient and consistent communication between these tools and the CodeLLMs. -Codellm-devkit is constantly evolving to include new tools and frameworks, ensuring it remains a versatile solution for code analysis and LLM integration. +Codellm-Devkit is constantly evolving to include new tools and frameworks, ensuring it remains a versatile solution for code analysis and LLM integration. -Codellm-devkit is: +Codellm-Devkit is: - **Unified**: Provides a single framework for integrating multiple analysis tools and CodeLLMs, regardless of the programming languages involved. - **Extensible**: Designed to support new analysis tools and LLM platforms, making it adaptable to the evolving landscape of code analysis. - **Streamlined**: Simplifies the process of transforming raw code into structured, LLM-ready inputs, reducing the overhead typically associated with multi-language analysis. -Codellm-devkit is an ongoing project, developed at IBM Research. +Codellm-Devkit is an ongoing project, developed at IBM Research. ## Contact @@ -55,17 +55,16 @@ For any questions, feedback, or suggestions, please contact the authors: | Saurabh Sihna | [sinhas@us.ibm.com](mailto:sinhas@us.ibm.com) | ## Table of Contents -- [CodeLLM-Devkit: A Python library for seamless interaction with CodeLLMs](#codellm-devkit-a-python-library-for-seamless-interaction-with-codellms) - - [Contact](#contact) - - [Table of Contents](#table-of-contents) - - [Architectural and Design Overview](#architectural-and-design-overview) - - [Quick Start: Example Walkthrough](#quick-start-example-walkthrough) - - [Prerequisites](#prerequisites) - - [Step 1: Set up an Ollama server](#step-1--set-up-an-ollama-server) - - [Pull the latest version of Granite 8b instruct model from ollama](#pull-the-latest-version-of-granite-8b-instruct-model-from-ollama) - - [Step 2: Install CLDK](#step-2--install-cldk) - - [Step 3: Build a code summarization pipeline](#step-3--build-a-code-summarization-pipeline) - - [Publication (papers and blogs related to CLDK)](#publication-papers-and-blogs-related-to-cldk) +- [Contact](#contact) +- [Table of Contents](#table-of-contents) +- [Architectural and Design Overview](#architectural-and-design-overview) +- [Quick Start: Example Walkthrough](#quick-start-example-walkthrough) + - [Prerequisites](#prerequisites) + - [Step 1: Set up an Ollama server](#step-1--set-up-an-ollama-server) + - [Pull the latest version of Granite 8b instruct model from ollama](#pull-the-latest-version-of-granite-8b-instruct-model-from-ollama) + - [Step 2: Install CLDK](#step-2--install-cldk) + - [Step 3: Build a code summarization pipeline](#step-3--build-a-code-summarization-pipeline) + - [Publication (papers and blogs related to CLDK)](#publication-papers-and-blogs-related-to-cldk) ## Architectural and Design Overview diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 00000000..d048e9b8 --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +codellm-devkit.info diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 4338d8f2..00000000 --- a/docs/README.md +++ /dev/null @@ -1,78 +0,0 @@ -![codellm-devkit logo](https://github.com/IBM/codellm-devkit/blob/main/docs/assets/cldk.png?raw=true) - -[![arXiv](https://img.shields.io/badge/arXiv-2410.13007-b31b1b.svg)](https://arxiv.org/abs/2410.13007) -[![Python 3.11](https://img.shields.io/badge/python-3.11-blue.svg)](https://www.python.org/downloads/release/python-3110/) -[![License](https://img.shields.io/badge/License-Apache%202.0-green.svg)](https://opensource.org/licenses/Apache-2.0) -[![Documentation](https://img.shields.io/badge/GitHub%20Pages-Docs-blue)](https://ibm.github.io/codellm-devkit/) -[![PyPI version](https://badge.fury.io/py/cldk.svg)](https://badge.fury.io/py/cldk) - -# CodeLLM-Devkit: A Python library for seamless interaction with CodeLLMs - -Codellm-devkit (CLDK) is a multilingual program analysis framework that bridges the gap between traditional static analysis tools and Large Language Models (LLMs) specialized for code (CodeLLMs). Codellm-devkit allows developers to streamline the process of transforming raw code into actionable insights by providing a unified interface for integrating outputs from various analysis tools and preparing them for effective use by CodeLLMs. - -Codellm-devkit simplifies the complex process of analyzing codebases that span multiple programming languages, making it easier to extract meaningful insights and drive LLM-based code analysis. `CLDK` achieves this through an open-source Python library that abstracts the intricacies of program analysis and LLM interactions. With this library, developer can streamline the process of transforming raw code into actionable insights by providing a unified interface for integrating outputs from various analysis tools and preparing them for effective use by CodeLLMs. - -**The purpose of Codellm-devkit is to enable the development and experimentation of robust analysis pipelines that harness the power of both traditional program analysis tools and CodeLLMs.** -By providing a consistent and extensible framework, Codellm-devkit aims to reduce the friction associated with multi-language code analysis and ensure compatibility across different analysis tools and LLM platforms. - -Codellm-devkit is designed to integrate seamlessly with a variety of popular analysis tools, such as WALA, Tree-sitter, LLVM, and CodeQL, each implemented in different languages. Codellm-devkit acts as a crucial intermediary layer, enabling efficient and consistent communication between these tools and the CodeLLMs. - -Codellm-devkit is constantly evolving to include new tools and frameworks, ensuring it remains a versatile solution for code analysis and LLM integration. - -Codellm-devkit is: - -- **Unified**: Provides a single framework for integrating multiple analysis tools and CodeLLMs, regardless of the programming languages involved. -- **Extensible**: Designed to support new analysis tools and LLM platforms, making it adaptable to the evolving landscape of code analysis. -- **Streamlined**: Simplifies the process of transforming raw code into structured, LLM-ready inputs, reducing the overhead typically associated with multi-language analysis. - -## Architectural and Design Overview - -Below is a very high-level overview of the architectural of CLDK: - - -```mermaid -graph TD -User <--> A[CLDK] - A --> 15[Retrieval ‡] - A --> 16[Prompting ‡] - A[CLDK] <--> B[Languages] - B --> C[Java, Python, Go ‡, C ‡, JavaScript ‡, TypeScript ‡, Rust ‡] - C --> D[Data Models] - D --> 13{Pydantic} - 13 --> 7 - C --> 7{backends} - 7 <--> 9[WALA] - 9 <--> 14[Analysis] - 7 <--> 10[Tree-sitter] - 10 <--> 14[Analysis] - 7 <--> 11[LLVM ‡] - 11 <--> 14[Analysis] - 7 <--> 12[CodeQL ‡] - 12 <--> 14[Analysis] - - - -X[‡ Yet to be implemented] -``` - -The user interacts by invoking the CLDK API. The CLDK API is responsible for handling the user requests and delegating them to the appropriate language-specific modules. - -Each language comprises of two key components: data models and backends. - -1. **Data Models:** These are high level abstractions that represent the various language constructs and componentes in a structured format using pydantic. This confers a high degree of flexibility and extensibility to the models as well as allowing for easy accees of various data components via a simple dot notation. In addition, the data models are designed to be easily serializable and deserializable, making it easy to store and retrieve data from various sources. - -2. **Analysis Backends:** These are the components that are responsible for interfacing with the various program analysis tools. The core backends are Treesitter, Javaparse, WALA, LLVM, and CodeQL. The backends are responsible for handling the user requests and delegating them to the appropriate analysis tools. The analysis tools perfrom the requisite analysis and return the results to the user. The user merely calls one of several high-level API functions such as `get_method_body`, `get_method_signature`, `get_call_graph`, etc. and the backend takes care of the rest. - - Some langugages may have multiple backends. For example, Java has WALA, Javaparser, Treesitter, and CodeQL backends. The user has freedom to choose the backend that best suits their needs. - -We are currently working on implementing the retrieval and prompting components. The retrieval component will be responsible for retrieving the relevant code snippets from the codebase for RAG usecases. The prompting component will be responsible for generating the prompts for the CodeLLMs using popular prompting frameworks such as `PDL`, `Guidance`, or `LMQL`. - -## Contact - -For any questions, feedback, or suggestions, please contact the authors: - -| Name | Email | -| ---- | ----- | -| Rahul Krishna | [i.m.ralk@gmail.com](mailto:imralk+oss@gmail.com) | -| Rangeet Pan | [rangeet.pan@ibm.com](mailto:rangeet.pan@gmail.com) | -| Saurabh Sihna | [sinhas@us.ibm.com](mailto:sinhas@us.ibm.com) | \ No newline at end of file diff --git a/docs/api_reference.md b/docs/api_reference.md deleted file mode 100644 index f94e373b..00000000 --- a/docs/api_reference.md +++ /dev/null @@ -1,21 +0,0 @@ -# API Reference - -This page documents the API functionalities. - -## Models - -## Python -::: cldk.models.python.models - -## Java -::: cldk.models.java.models - -## Treesitter -::: cldk.models.treesitter.models - -## Python -::: cldk.analysis.python - -## Java -::: cldk.analysis.java - diff --git a/docs/assets/cldk-dark.ai b/docs/assets/cldk-dark.ai new file mode 100644 index 00000000..6a99523f --- /dev/null +++ b/docs/assets/cldk-dark.ai @@ -0,0 +1,1915 @@ +%PDF-1.6 % +1 0 obj <>/OCGs[25 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + application/pdf + + + cldk-dark + + + 2025-02-01T18:13:06-05:00 + 2025-02-01T18:13:06-05:00 + 2025-02-01T18:13:05-05:00 + Adobe Illustrator 29.0 (Macintosh) + + + + 256 + 40 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAKAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A6c7eYfzL1y+htL+TTPKO nS+hzhryuHU+xHKo332UU2rnVgYezsUTKPHnmL3/AIfx9u+7zx8TW5CBLhwxNe/8fYjH/wCcfvKh UcL+/Vv2iWhIPyAiGUj2oz9Yw+39bYewMP8AOl9n6kTY/kb5ZtYp0+v37GYABllWPiQahqKlGP8A rVGV5PaPNIg8MNvK/wBLZDsTFEH1S382tEvtf8n+arTyzrF6+p6NqoYaTqE1fVjlX/dLkk17D6RS m4x1GPFq8Es2OPBkh9URyI7/AMeaMM8mnyjFM8UJ/ST9z0fOed0oXd/Z2ihrmVYwfsg9T8gN8VUr TWNMu34W86u56KaqT8gwGKozFXYq7FVlxMsEEk7glIkZ2A60UVNMVUtPvob61W5iDKjEgBwAdjTs TiqIxV2KoOw1W3vZbiKJXVrZgrlgACSSNqE/y4q6z1W3u7m4t41cPbMVkLAAEgkbUJ8MVRmKuxV2 KuxV2KpdL5i0eKV4pLjjJGxVxwc0Kmh6Liqtaatp123C3nV37JurfcwBxVF4q7FXYq7FVO6uEtre SdwSkSlmC9aDwrTFVljexXtqlzEGWOStA1AfhJXsT4YqqzSpDC8r/YjUu1PBRU4qh9N1K31C3M8A YKGKEMKEEAHsT44qiVZW+yQflirzf8l7mKysNS8sXNItW0y8lMsJ2Lo1FEgr13Wnyp450XtBAznH PHeE4j+z8ebpexpCMZYj9cZFk3lTye3l+81W4Ooz3w1OYTenN0jILHbc1J57nbpmt1uv8eMBwiPA K268nN0uj8EyPEZcRdq3k5tQ82ab5hGpT2/6PTgbNP7uQVY777cudG23GHBr/DwSw8IPH16j8dFy 6PjzRycRHD0Y558uotU89+VNCsiJbyxvF1C947iKKMq9Gp0LKp/DxzYdmwOLS5sstoyjwjzJcPXS GTUY8cecZcR8no2c87li+k28Wsand3l2PUjiIWKM/ZoSafcBiqZ33lyxuDG8AFpKjA84gBsPYUFf fFUTqWp2+nQK8xLs3wxoKcmI+7FUAvmVo3QX1lLaRSGiStUj6dlxVMdQ1G2sbU3EpqvRAu5YnoBi qUXGvSz6fcCaxlgilhkWKY1ZSSp412FK4qivKxA0WInYBnqf9kcVWt5iaR5PqVlJdQxGjzLsu38u xriqP03UrfULf1oaiho6N1U+BxVKfLH+92q/8ZR/xJ8Vd5f/AOOzq3/GU/8AE2xVES+YRHqE9l9W Z3iH7vgeTO223Gm3WvXtiq2DzPEZJIbu2ktp0FVi+0WPZRsu57Yq0vmUpdRw3dnJapKaJI58dtwQ P14qneKuxVjWi2ttPrGqieJJQsrcQ6hqVdulcVX+Y9JtILP69aoLeaBlNY/hBBIHQbVBOKprbalE dJjv7hgq+mGkPv0NPpxVAHzLL6f1j9HzfU/9/wDt40p0+nFUTfa5Hb2EN9DH9YglYAkNxIrX2PhT FUdNdRRWj3RNY1QyV8RSv44qlkt8995dublovRDxvxXlyqBtWtFxVT0e+gsvLUFxMaKvOgHVj6jU AxVGW+pTy6XLezWvpKsbOkRapdVUnf4RSuKqNpqROjrd2djuWIFrEad6E7L/AAxVK/Kt7cqWiS1a SKaWrzg/ClR3FD+vFXeavy80nXryPU4p5tM1qEUj1K0bhIaCg5/zUHuD70zaaLtXJgiYECeM/wAM uTgars+GWXECYzHUMR836D558t+XLvWP8Z3VytoI6QegFLepIsYq5kb+fwza6HU6XUZo4/AiOK97 8r7nXavBnw4jPxSa8vOu9MrPyN54vbKCeXzxdrHcRpIyJBxYB1DUDiWo69cx8naWmhIgaeOx7/0U 3w0OeUQTmlv5ftZJ5R8i6L5ZSV7X1Li/uf8Aeq/uDzmkqakV7Cu9Pvrmu13aWTU0JbRHKI5BzdJo YYLreR5k82RZr3MY15UK291fWT/DKrDip6kKSD/DFU+vL61s41kuJBGrMFBPicVSTVyG8x6aWIMJ ClD25cj/AGYqjfNHD9Cz8qVqnH58x/DFUm1X1P0bovq/3dP3lelPh41/2OKsk1bj+i7utKejJ/xE 0xVKdK9T/Ccvp/b4TUp174qp6AmsnS4jaSW6w1bZ1YtXka1piqM0TS7m0ubqaWWNxOassVaBwSeh +eKofyx/vdqv/GUf8SfFXeX/APjs6t/xlP8AxNsVa0//AJS2+/4xH9ceKu1AD/Ftjt1iBP8Aw+Ku 85/7xQHuJdj/ALE4qmGsaffXfo/Vbprbhy58Sw5VpT7JHSmKrdI03ULSSRrq8a5VgAqszGhr/lE4 qgvL/wDx2dW/4yn/AIm2KonzVPHHo8kbGjzMqoO5owY/gMVS7VYZofKlpHQghkMg8AwZv1kYqjkt 9ektFjWW19B4woHF/sFafqxVba6LKug3Fk8izGQs8LJuvQFf+GGKpY+oSTeW7azQ1nklFuR3opqP 1qMVT6/t1t9AmgT7MUBUfQvXFWKpDfjTbW9kRZbG2chIT3BclmI/1vhxVll3cRXOiXE8JrHJbyFT /sDt9GKqHlX/AI4sX+s//EjiqF8mf7wz/wDGX/jUYqk/nH8wryw1iDy55bs01TzBPu0bk+nCKchz oV347n4hQbnN1oOy4zxnNmlwYh8z7v7HV6ztAwmMWIcWQ/YlOuaX+bnmXTJNF1O10q0sbtoxcXEL SmRFSRZKgGR67p4Zl6bNoNPMZIHJKUboGu6u5x8+LWZocEhARPv/AFo78yZtSs9K8veX9OvZLNtU vINPlvYqhxHQIaUIO5YE0PamUdkRhOeTNOIlwRMq8+bb2kZRhDHE1xSEbZZo+gRaXoCaNFczzIiS J9amYNMTKzMW5UHQvtmqz6o5MviEActhy2dhhwCGPgBJ8zzYR+X0Or+XvO2peT7jUH1HT47Nb21e WoKHmi8QCW419TcA02r3zddqSx59NHUCPBMy4T9v6nV9nxnhzywmXFHhsfYzfUtAtryYXCO1vcj/ AHanenSo8c5x3ahB5Yj9dZr25kvWT7IetPpqWOKo/U9KttQhEctVZDWOReqnFUAvlppHQ317LdxR mqRNUD6d2xVMdQ062vrU28oovVCuxUjoRiqWp5alMLQzX8ssXErFGahVJFFJHI14+G2Kpjpenixs ltS/qhSxLU415GvSpxVL38ttHK7WN7LaRSGrxLUj6KFcVTDTdMg0+JkjLOznlJI5qWOKoW30JrbU nu4LpkilYvLb02Ymu1a9i3hiro9CaHVHvYLlo0lfnLBTZiakitR3Phiqrb6T6Orz6h6vL114+lxp T7P7Vf8AJ8MVdcaT62rwah6vH0F4+lxrX7X7Vf8AK8MVdrWk/pOBIvV9Lg3Llx5V2I8V8cVTDFXY qkMnlm5+tT3EGovAZ3Z2VFI+0SaEhxWlcVVLfyxEJ1nvbiS8dd1D1p9NSxP34qm1zbQ3MDwTLyjc UYYqkw8szKphXUZltDt6Pt4VrT8MVTe0tIbS3S3hFI0G1dz4knFUsg8tRxap9d9YmMO0iQcaAFve vb5Yqmd7bfWbSa35cPVUrypWlfbbFVGx0yO30xbCRvWjAZWJHGodielT44qhrLQ5LWyurP60ZIZ1 ZUBTdCwIr9rfFUVpVh9QsktvU9TiSedOPU16VOKoOx0CSyu/Ugu3FtyLG2psaim5r/DFUB5a8gaP oOsalq8Dy3F7qLsxlnIZo1dubopAFeTdSd9hmy1faeTPjjjNCMO7q4Om0EMU5TG8pd7Js1rnMQ/M nyvq2t6dZXGjSKmr6TcreWiuQFdk341b4a1AIrt45tuydZjwzkMn93OPCXXdo6WeWIMPrgbCb6Bc +Y5fLUM+r2yR656chltkIC81ZhGKhmA5KFrvmJqoYRmIxm8djf73I08shxAzHr7mO+SvL/mp/M+o eavM0UVpe3MAs7eyhYOEiDKxLFWcfsD9o9+mbDtHVYBhjgwkyiDxEnvcPRafL4ssuUASIoAdzOs0 jtXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX/9k= + + + + uuid:fd716809-8c1e-ef48-9082-36ce5ee30e1e + xmp.did:35424d6d-4124-4535-8cd3-921de37f79c1 + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + uuid:70581454-1635-7c4f-bcef-799d4260f20c + xmp.did:6b203221-a0f8-423b-b13d-979831625d90 + uuid:5D20892493BFDB11914A8590D31508C8 + default + + + + + saved + xmp.iid:6b203221-a0f8-423b-b13d-979831625d90 + 2025-01-31T12:56:43-05:00 + Adobe Illustrator 29.0 (Macintosh) + / + + + saved + xmp.iid:35424d6d-4124-4535-8cd3-921de37f79c1 + 2025-02-01T16:09:07-05:00 + Adobe Illustrator 29.0 (Macintosh) + / + + + + Document + Print + AIRobin + False + False + 1 + + 1435.982675 + 213.739938 + Points + + + + + IBMPlexSans-Medm + IBM Plex Sans + Medium + Open Type + Version 3.005 + False + IBMPlexSans-Medium.otf + + + + + + Cyan + Magenta + Yellow + + + + + + Default Swatch Group + 0 + + + + White + RGB + PROCESS + 242 + 243 + 249 + + + Black + RGB + PROCESS + 46 + 45 + 48 + + + CMYK Red + RGB + PROCESS + 186 + 32 + 48 + + + CMYK Yellow + RGB + PROCESS + 244 + 225 + 31 + + + CMYK Green + RGB + PROCESS + 39 + 138 + 71 + + + CMYK Cyan + RGB + PROCESS + 0 + 151 + 217 + + + CMYK Blue + RGB + PROCESS + 46 + 55 + 128 + + + CMYK Magenta + RGB + PROCESS + 185 + 0 + 119 + + + C=15 M=100 Y=90 K=10 + RGB + PROCESS + 156 + 39 + 54 + + + C=0 M=90 Y=85 K=0 + RGB + PROCESS + 189 + 62 + 60 + + + C=0 M=80 Y=95 K=0 + RGB + PROCESS + 193 + 84 + 53 + + + C=0 M=50 Y=100 K=0 + RGB + PROCESS + 210 + 142 + 46 + + + C=0 M=35 Y=85 K=0 + RGB + PROCESS + 220 + 171 + 74 + + + C=5 M=0 Y=90 K=0 + RGB + PROCESS + 236 + 222 + 68 + + + C=20 M=0 Y=100 K=0 + RGB + PROCESS + 211 + 208 + 46 + + + C=50 M=0 Y=100 K=0 + RGB + PROCESS + 157 + 181 + 60 + + + C=75 M=0 Y=100 K=0 + RGB + PROCESS + 106 + 159 + 67 + + + C=85 M=10 Y=100 K=10 + RGB + PROCESS + 77 + 133 + 65 + + + C=90 M=30 Y=95 K=30 + RGB + PROCESS + 58 + 99 + 63 + + + C=75 M=0 Y=75 K=0 + RGB + PROCESS + 104 + 162 + 105 + + + C=80 M=10 Y=45 K=0 + RGB + PROCESS + 87 + 153 + 148 + + + C=70 M=15 Y=0 K=0 + RGB + PROCESS + 102 + 162 + 213 + + + C=85 M=50 Y=0 K=0 + RGB + PROCESS + 68 + 112 + 174 + + + C=100 M=95 Y=5 K=0 + RGB + PROCESS + 45 + 60 + 128 + + + C=100 M=100 Y=25 K=25 + RGB + PROCESS + 45 + 51 + 93 + + + C=75 M=100 Y=0 K=0 + RGB + PROCESS + 87 + 50 + 126 + + + C=50 M=100 Y=0 K=0 + RGB + PROCESS + 122 + 42 + 123 + + + C=35 M=100 Y=35 K=10 + RGB + PROCESS + 133 + 41 + 91 + + + C=10 M=100 Y=50 K=0 + RGB + PROCESS + 174 + 31 + 84 + + + C=0 M=95 Y=20 K=0 + RGB + PROCESS + 187 + 42 + 111 + + + C=25 M=25 Y=40 K=0 + RGB + PROCESS + 189 + 178 + 156 + + + C=40 M=45 Y=50 K=5 + RGB + PROCESS + 150 + 133 + 120 + + + C=50 M=50 Y=60 K=25 + RGB + PROCESS + 113 + 103 + 90 + + + C=55 M=60 Y=65 K=40 + RGB + PROCESS + 92 + 80 + 72 + + + C=25 M=40 Y=65 K=0 + RGB + PROCESS + 181 + 151 + 106 + + + C=30 M=50 Y=75 K=10 + RGB + PROCESS + 157 + 123 + 82 + + + C=35 M=60 Y=80 K=25 + RGB + PROCESS + 129 + 95 + 67 + + + C=40 M=65 Y=90 K=35 + RGB + PROCESS + 111 + 81 + 56 + + + C=40 M=70 Y=100 K=50 + RGB + PROCESS + 94 + 67 + 47 + + + C=50 M=70 Y=80 K=70 + RGB + PROCESS + 67 + 54 + 49 + + + + + + Grays + 1 + + + + C=0 M=0 Y=0 K=100 + RGB + PROCESS + 46 + 45 + 48 + + + C=0 M=0 Y=0 K=90 + RGB + PROCESS + 69 + 69 + 72 + + + C=0 M=0 Y=0 K=80 + RGB + PROCESS + 89 + 90 + 94 + + + C=0 M=0 Y=0 K=70 + RGB + PROCESS + 110 + 111 + 115 + + + C=0 M=0 Y=0 K=60 + RGB + PROCESS + 130 + 131 + 136 + + + C=0 M=0 Y=0 K=50 + RGB + PROCESS + 149 + 151 + 156 + + + C=0 M=0 Y=0 K=40 + RGB + PROCESS + 169 + 170 + 176 + + + C=0 M=0 Y=0 K=30 + RGB + PROCESS + 188 + 189 + 195 + + + C=0 M=0 Y=0 K=20 + RGB + PROCESS + 206 + 207 + 214 + + + C=0 M=0 Y=0 K=10 + RGB + PROCESS + 224 + 225 + 232 + + + C=0 M=0 Y=0 K=5 + RGB + PROCESS + 233 + 234 + 241 + + + + + + Brights + 1 + + + + C=0 M=100 Y=100 K=0 + RGB + PROCESS + 186 + 32 + 48 + + + C=0 M=75 Y=100 K=0 + RGB + PROCESS + 196 + 94 + 48 + + + C=0 M=10 Y=95 K=0 + RGB + PROCESS + 237 + 210 + 53 + + + C=85 M=10 Y=100 K=0 + RGB + PROCESS + 82 + 142 + 68 + + + C=100 M=90 Y=0 K=0 + RGB + PROCESS + 43 + 64 + 135 + + + C=60 M=90 Y=0 K=0 + RGB + PROCESS + 110 + 63 + 133 + + + + + + + Adobe PDF library 17.00 + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 3 0 obj <> endobj 5 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/Thumb 30 0 R/TrimBox[0.0 0.0 1435.98 213.74]/Type/Page/PieceInfo<>>> endobj 27 0 obj <>stream +HݎI)r}5,BBB1hDZkDVi8q"˖v|[#s//~7?~?\߱_[mi{~u|}^?^~xno_t(wζc1j8ۯ7}MحLj޽V!u _) yn.kqXc.~s`M|)hl]2͵|-w}_` r80ԣ#^(sAa]QSFkg7lcqxr&07KHw?4]7{@>`u9&pUY{%vʱ~shv=ZmnqE`Sc ?OcMqtCrVY\:(] +dnr*Y+(Q)\;cN^*w 崂5Y՝ӎZr CM ~-,Ae\A~x3tH?ã(UщMC\O4x-Ȑ/Yr0.ț Ljr2Sa>.jvh#Q0rN;tIleEr3Klz~3yK.`ezBBIA(-vh `gɤ*XR1 S?,{l= Оw| nEBokQ`j62<$aG|G)S'>V=F]gUiG1@HfSfK'RS,cD%;9F N;e$H(=>{2U*b^`$WpY&l!U D +n:&3w**T**{63'u0 փ(tbݽH%4qoOoY +ICFW.*RWEQrj&ߧζLENTO"b&?qz꿂F''#]>ѡ*X ]zj)H2٣ulV;"m R A;k`,害U&Y;gy\cأA_O"6E8y72R) ʜsJ+&7CR=JeAu%ECk\efH )*lCIHJ[T헵UV(V*@vUN$__"%uݽ+G|*hYi=*trdP06Xu te. +s*xB:z+IEƿzhD\16i3uC 5"b$jCA0u՞><,jRqNw`j[W$;"QRϏcfPU/ +63liPsY2V7EJNE/ǓP +[PIpEn딀Lxӳ(4i,U9^fț.j9LPȷFfcLgnI8i;R-_-YKը3 0#2QQ4,D]EEzͲՄekRqGn5X"9ph>فau$TF`=z&a7n&7/?}R|wZVGW%~0%ztEx,Nܠ,Ѥw*r3ͨ; `=ZB9^@_!髧0J$ؾ )yRjtBTmz˽VW"X lGC/QTs0 @*=A|yc + l3o03D#r}N*?(.o3k8kq*jQp!4J%Dc-ߵR6TTB!;!:L_ݯXSOVѯB׉f1{(U_$aT$suG#`mp-iJ۾T8 endstream endobj 30 0 obj <>stream +8;X]Q_%FU.#]/IE>qoAM5P.<)B4O;)1\]>9`50E878RahkgfD&&k0RXPa#!k_+5Hd +$gQ7Q5FP8Q%#(%e\2^h_NP!MSYC9d+UP83X(+Rja9sVQ0I[d4%AhecnDVHs(Fkaeo +Z#bs::5QKV6\B?^-k=p\qU2XQr, +QUnOFRA@rDIMbtNk,f"<3GHnd;qbQoaa+_!Aap\$>/ZrkFCH^5#;E0qW"=BYO\a%0 +Z.&DonH^[cML=EnU\-`O;=dU7DUq"TG' endstream endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 29.0.1 %%For: (Rahul Krishna) () %%Title: (cldk-dark.ai) %%CreationDate: 2/1/25 6:13 PM %%Canvassize: 16383 %%BoundingBox: -1 -214 1437 0 %%HiResBoundingBox: -0.000000000001819 -213.739937990305 1436.42578125 0 %%DocumentProcessColors: Cyan Magenta Yellow %AI5_FileFormat 14.0 %AI12_BuildNumber: 192 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 -213.739937990305 1435.98267476687 0 %AI3_TemplateBox: 306.5 -396.5 306.5 -396.5 %AI3_TileBox: 339.991337383435 -394.869968995153 1073.99133738344 181.130031004847 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 2 %AI24_LargeCanvasScale: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:24 4 %AI10_OpenToVie: -961 463 0.5 0 8624 7790 1716 1053 90 0 0 6 58 0 0 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -961 463 0.5 1716 1053 90 0 0 6 58 0 0 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %AI17_Begin_Content_if_version_gt:24 4 %AI17_Alternate_Content %AI17_End_Versioned_Content %%PageOrigin:0 -792 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 11 0 obj <>stream +%AI24_ZStandard_Data(/X +=@k0 Àda̹,hƏ۶j\P!5QJ)2ɿ"+L + 7 1d(Iv=dJDCƦ7XCƮ"jfl  0 ".0 *\`̶u]-LU:Z{/2O2\SWUL֏k׃XC&vk!sKzf#;=d,Vl{GX 2LT:$L2TUUU˖yEB4T"PCf%!s[TҼ!3B!y;٥2&H!b3leuvhQ@DIdQ=$QHA +RXXEq)VXA ++,Kr,bЦQRRH![YYr)xqÈi4l. )h!NFUF&ëV( vakvR*):-UtQzkmon&첊Gv܁Gzqȑʱ#rDQdAQQPE7Qeŋk dHPEQ( +K-F-\.,ʲH*Tq(HŢX +ZI$GjfOJJ. *&"'GO_N9;;K 5""*; #b& +tVZ^>157D2I%T$􊚪z(Zb%%wLIEBa\y]*""9#(H8=uб*TQD]MEAd"(\b)WgwKN~~y8ʗ+NhF2uȁVaHͲpdz]wΦLU2IWϰ`@0eUFʌJ얪I?k7 ct>te먹7v?2ktz*Cuk:Xe~T4)ѷgc2DTۓu+M,JTc7z6w<#F ćLK" Qm.i;#-ia(eF-(faHC$CI=쁉 =k, [ZH*l ,ʕ554Fr&TbqCQ5eɍpUJ,<[R=y +ݱT+əZxȘCYn١2X>FxtC榇 +N/wh:0Dq$@cm@Wd9C#1 eg$B1Pŗ)QbPBɁjd EZa"4DA+, rzUNOj鬴]ʹE՞P CAaz(WYnRHSIDx%jPWM S9#aԂ W-j$7/ZhjMѱ\He^;^<$=422Dkڕ!"f,bj +PY\v=$={?ɬ4uo"%L'UjS͈S$J(G"Vxt* 2tZy)i)Mhז!#:\[aMP*S 2쎊ɂ +9+tUQ +(0CIφB]Y剞:Uz{$5yM,=[BU\)*\k-zNtUE<_ZzzVޥu,ozյU:.!>i^myGyjڥ(f._g%2=x΢tflڭ#.{&2ݯTxlxU$Xeh%ޭkgB\{ zl4WӶ6V;u*u}^m=ΞɯM^9ɾGso/mJGo?B-';poN˸Tcw~mShM-\ۃgjz6+>X)L{tg۩[xllj٪oxq )͜ppϚ}D?XYND[9n/q֡ZZtޙ6msINjwToKkM|,PwizG\u.ձ]Fr +SͺgrimdAL%#=fdwxGwkT35߼zνWO& QF'Kq{|!WBJ-ow<ڮ{3E5'%^]u)lo_4uыZF{ҿb.jޤThuGeJ=UݥVӧ^ݎ[i3TەQGtJwy-ZB2CVxxn.Tռ*OEīW cxfzz(wTXU쯼pf)u;x^鳓zC5ş{O==y=OΨKNCg^6jwZy{ "2CaOiM١4x KO,MXJ{cgwMo.ڵUڝAT4W9yW13VTe'igg_+fy-2lЇVb^ o[yZg-1,Rۢa֙aWlk5=7Z') mkJ[KcmNg;k[>\ee9]gO+ތ02(hggϫlDrfx;Y k|dxvwjlݷeEںF/z&K.BiY}?(V2,v2OifiםnjyKҾ1-TO5Ո{Xt*~/Q:Cۥb./"oKj3]Tܳ赛p󮻽Rј>իvV{TkMcTuI몫xKSosQ +]%#J*W>V5B]VU-UuaY7:Z5}U>[*CXv/-;VgWOJ۫v?z_m^L]w[W*z5*N.VShU8",&,,`0ꕎi+ $ޭUʵ)޹Jx|,(I)W]zyܟDnZi_mgըJ?W½dK?]utM[2E\Cfݻ9Q&W~ʌmoUiOs g-xVMڍh_-#~i_RjYzq)ݢSvj$߱uE\NM1}zB;-=gDR+S߁ytMkzV榴zʌ1iQw`m73M|"=;0]J},L3%*oV7ΫE4fYk>Y^M,} Zě"Z;?-:ve֊O]C"/NfDjgu|;ȷTcVvݷku{P׺>ku޺oͥ>N%- o}gyǪL zW<7#M8"NV>x="=Jv̆p.x\6dHDvi2YM5,:E4˵ҝM;UyϒY{Y.ztMXcْrmgs|dhynޮ?ߟ7ʳ1Z)Օ\oz)RuIߊ_SxE?eR=T4ۛ[׮iU:pv+q/+ +yveeY6Z婞ΌKEuR<$[)Ѵ*YgZј]6w%9񇙹eXG 11;hϟШp"Zf1RL$@(}>vBfB*Gt8f 0 3 OA꟭`UoTę@>qC#H-w{VU +K;=@}23QIEI?D @?TgCO)Ȼ' YOpS3dxUS1yrSRC΁ p*U8x,׫6ԮjIiODٴYk01b9`vS+ +zQRzI +1점ʮodZ-(4ln +˸/Մrx㾟h_F +k Eĥvs)b>@beshe@+ͻqͨZlˈ8c=jNž]Ok#h(<^2'Q1(g##:m#MaS #"kovs #B( Fw +kbjkutYJR iUt]Z7&0_nj9ЍS#h7b[7ׇMjS˼BbZpF +eyy=C嚄I3s.Mh2q+Z32C|MȎbבETtllv[<3MB+uE#SOͿ) lSѐWXŐnxa<έ8\ WHv9}I.L`N0QuWCWd|R%@`[LX 0] S:IH~(G*"5;Qip;Q$C=Z9%YxI(= RB;N3зm*Je$TLyAi2 K Ԧ.D@Cԩ$rt~Nu9A%\05slZ8߳ji[v| fOi_VR5 '@)Ʒcq0e'80ll>$% a*׏`ݙe{GWps)5VEog _ +Gvõ?!t?rgIqX\W3ݸUegP. 1mvݭWU+Ӻ_7IF5tFM-LbYƕQH`qc~n5"Pär2݅iHjx1\eK'h&+M*(<8zu9 VQ7$|Gr%v::M5P8s׈gԼD.@3\[3m#sU&ɐHq@ܨl:f*P"_}*Ye0k @<i2"1H[kl1%FaD3C)Nj_˯.#Z6,1['.⎫W8jJLq'v%T).S ~idRUEEI)bBWTd؍.bQӭ3OL|M-:&Vm[-P>t*Y8<j:ϒ +v>G'ӅGINt΃gH9Y$4'gi2"l&jԤHiS `73CsSiȨ`:*eaaPui]+^$yEW9,l}ڨö9HC9.bmSC}I&R]-f'{[۰jÖH,s$J E s[jo/4jY,9Ok8O1ZT+~՝!z.wg菧3T(zU=dr/˚CǷE䊖n% @ex=60tSYdHʻar/nD[?*K2 zo r{q )=Ke m5(qΏ1EH%mA + `h-+n@5t9VP)ާW=" [aÈtb`Kc$tmROy+Sտ/hlBψ3[B/~PGG]I8ESz6 wBm;kҖ]Sx ^(6`]ikț }}Pp4۵DVRW:Qũc"p ID9j~j\=Ի#I%*C*u2)]P0  Z_im4wq\"߄ZpT;ϷC_ ^%:ῷ6rϾ2\647!5ynf\3Z Zd4("R̾,D]KIbԘ-V;^R/$?D$8Bjg-G?›+# V#Ҍjfa/7ͨ60튑.1ʮUF3JUgNj?@Y;~/7®G 75΁B? jco-sqS;eqT{@kc +[Wz#:նjE$^tt]=쀸ޞ? gjf>իENPVRF82ZOQ>X#r +\ 6%·"H^Son) U4ƌ<[I\'̭]U{zUmBi/61 jK׮W{Ŭeto`1)\xM}Tǽr~Mcy4?i/jB ]%j,x~cG9ѿȚ$Zlw=sMVZ-vM5'47Ƹkl tZ\s,ZGEɮ¶Xc8m״kޤ1Ii2,lU͑`3fc +c6D;Ä\(Qx$?Ì݄>%jfJ/RyzKD +[[j"1ɷNխd\Un݄-w$4VW/M@l[bkdqYw+Y \SPgf.կ`w +7 \`HkIC6 dn !>ǼDn +G p$рw ~[+z gj~ {[$8;`6\oA}q0 pJM&5w,.98a|exnLԬsW"0"joz|j!npxo7| -w u(nQZddC6RyBِuga/mj/P+w~-F7wCPZ̆}aM\F7l%!R9tJ4>s 8s)B{c/gM Z9tx@t)sHоYA0(`!ɕrMU١X!dͩp$[ٿr 6r#t`hA9ǾJ qmy}}bUe_uZ u u5,{Ջ4 ]-+ӮSxbKBp9ҿ?0'=`ua_px6Vk"xW9uw9;6+c#ݧңdw^poC2U~#̝-<4 +GE%wQ>T)#Naf}qTzfQXQVtq9=S ">]$gU{@4j^|Zl_ /Gߓ"Tw\ +k]*_ej<(f4O OCD&'`2}a~jcjm= pļxr=onn<" eeCpb]ٻfnLlaPH=߫kS~Vr׋a +- + 8HEcA2ZPZ?˅S4b1DF] X)3ZHƈ1Ь6 kMHGzޜPߚQe w&vD&ǭG=Nb'13hPBBhKCRurWz1$oθ1w2;5XRpgVrBJj߾& 5૚-_CUx1fy(  g0ʽy sR=i \,JF6pXpHUU1X6 +Ngfu%g\)7v=8N `vQaId~*ɬp:ɍt(Hу7gBH{J٠oݯڽÛ{֍nj[jU s EBZmbBbQPON02j0ExCȪZR><6} $w3D>. +?C`t;pHhJ[33h~I~%C$S +1teF owkQ0~w#D ]hn?}VN|ktVzdA(m> $%Ff`٤qZah6ib}O%ULEV>e T=fKr– +9CX:uE%auc޶]PuHd|eXXX_s +9uubvpM%摤en);z''1̴I)}Q" ++, Rڧq۱⍳\݋BʭX!Sך؁"Y!ÎO /4 xQ@rъ t#PAG=Z5\ekdVgK3Jf|(B =7 +J^a+47i8Z2rHr ?JfE:NQ{~;@|/cS]_Q@l&2lWh[t'4$vŔ%y*cY_NRV2r-5yxIk`$6xIN})+BU2\<<ΩF;$ɫrd~M+2ZrG䵼ϿoQ] pwc +H[|чS<&vHJ>b5PEUBW!ӽf9f6ErܜA$yYcV +:oOs&!1W{ETXQK]xҤGXpnB6 Bح!\|jމg{Ա̙2I-W[Rċ̑˂/VAsPlL%([@x<.2(6-j.Td:z\Eøu7&MxwH#[Hc9Clds* ZɌ9ENtM04fRd,GcF +~X!#)0}L7CߨgLSʈƨ-TiIMit^{%BٜH*h7[+@:mnA0S4@Ns{bhsz+B9ذt>SsZ%KQ!,TSH=Q +߬or *ek B;N r ¥*woUEoX>VXn/\FpA.>캱d ꍡO&c^C(Wd&cv߱}参N6ɼd~R=qkHƫwBHHevgbOzAz_OR=̈R)? "u-RC*}TN&0QimBa9n-U\N\|A`YAdAM{@vKͪEpeR\jvbaUR㹏3EPxqUU;|g.iz8dӂ9ioH"R[E(< 4iK^E,(ץa-ތgO0ꔶ ' 4A|.^;O<18Vh#)2]O%S,{1I6XyS^ +sX@#2{mym|0e/M؋76w= l*Ikԫ /  {3d$PᭌںmЯV[~*d8ĝ%C([I0h%΀7[^7 ;xTeǒ(A|_X_$3?l͕Y <#)5` v'/u4nSYV֥bϘυT,s(YrEmMA^NK3Xc{* `@nDuhZ2\?k}2hDn4ڐd\H̳)䱍Ѓ[8 +DI3l[M#E:+!?6*dDݜ3t<$Zg[.p@'ަ*n$~>m2Qz:dG%QD2 .qg'@tX]oHWKf/mwhe%ٺM=ܠ:{j~r>]*Jqk'gK} +7ݔxsM: +<3t-sJiB1y-ψ U r׼ 魗hX&FwFq* ~J)D*̮RyPz/%4<ׇ6#9{t4N箔^}R7P] k@7 =߿ mّ wC&.7\p +.rֺ:縼ŸXrF +}^6ˋ懘{_c: 1!zIP邆335!m,x׳ Ǣ?uYVB +Ks!ФUGQ +"(i-&4Lh) VkdJS!jqdd9 HЙ#djlQ1tɭ]$"v#S5 +G`IR{ %| }ڊ5u!->me>1_'Tp.k~tIr%93Շ_o$h+.xC3p jB#&lcSխJ%om2hfPQGV\~y4N|#RA^M)޷7h(2 + AAzipp6&l.E .нQu]+t2@0ze{2mϲ0PGR{ +()lԯF7 w~Dӡ .넗=9vцrgy ʟ,s:*Q3>5rP\^4'b qE6A!kyܗ9G|z9y?Pjs"atޮol/: + _t#Е0$x̃!^, . ybr}8 ~~^Si+- +)4ï]a2~ǭ,m@uY{h-1v,0p)yywQ-O0J[?7.\}p̈grv(-›nЄ(|8hr265̶wl8P:P7u`(ˬFy*D+y"SLIHTЌxshiǁ a"P5hJ˟ܢ| OBdИ*!RȞWrj vRb?faWr <)~ :&f'\pZ ; [f$Z_xf7 +wG3$ó/P "+aj-"]r4WXb`:WA+ր+b(^W_#($(yuG *K;LBЗŭڬ;fhm)+V3_?F_!PGyԺ/Rm)uۗL@b!'^CqpV)soa4U--җEkN^8=9?&iJ%4/12l6]%n˒D8Xog^yeЇ!3<+R:(Pu ӶO62>J[l0]"R`< 3Y.hky nl4m,OuJY=0nnh!&+B?v}n=7ua$p%3Ml>Dv_x+ҍC=cGݖ9_&~ m:V{SRLlESح%$D&(_ce}bgP 4a29+S4VLjS>=,onFwםQ렑 {l9,oՎ? G)IW~zj ~ى>SNБȎ>每U# >$]vw3q^,ՠX `yi;C"LlcPC)]-Yzs"@HRܺ;ϰ;)I^eG^_/OXHI߉JG!(1g^[/&ȕp2W/䊓3b0qD~`?]{Dfrҭ̳[Fn_ؕsd܊x־9#*=dt +ފD\,Տ3e?GMD4~Bebz̻y4-P:tG@Vi*_(s~><\*l`vB7/f mj*x5 *}|b|iFFa`D:.6nzLn!91 +0,amusB퀸)|3ű'y&1PԸ"ϣRiH'!ռz+YJlR9iAdJf731Ø:/Jo P Pȍ9{%~3aЬ䓄dTlfˢ~<#+G R}rʪU8uB)6w]n"p+ %,a( bI ?Xl41-w,~FuX r|JkU(LQ+!QnWi+穠i>aѾ,BK*:Qэ +I-b)u;z7G_2.gHLYhn^V3-lE ~Qm`n(oIa \m/= TQ +x%*2VQ pvhD"V.݋p P=`d^XF@ϰ$d#aJe1FbZ"VMGނ&+YwC,s@p@:LEjs۬ݳ2`Ԍ)KvL`)G +Vwz4EB+owdD@h 0qCSjye+] Ώ@a"jOG)ԁN!]>ƫQY8[#b!n +FVadC~ 9Hhz8QF"_#"bjsTg娸fāF\ SK&KKD!OILl%bF`cN k$VA2=uѨ".:zDtmXS e;T Z-?)')in$1PQLh ydW1G8zT8Qu0@Wc`-'ʤ꼺^ T&m2FʜBBSW e&CpMqPmYA5h.#mN+IpOfkT E N k")d&;'x&$]ek!NTpuMdŒF;oEt5Ө$鰀{yᬩJ296$fx}wY-LM{ ѽw7s@G=Ȍ#|y3@t@팊D~Ƹ9X%SSnWN船bލ4?::D]8e[a\+qT|hVUkZ#w|axyh׉w>\ZeSQ +1t~?ّdc^CGw_cmpV7o$:$=o.޸@y0jg3,#(&Պ76j2&m&ăSP<U07*wUqrk}8hVװ@t,1A5?=jhPäۇA~YfX}ͼ8^U,^esgqJ uhǸW~͸j^cEFr"; ɖl3l=fYfCXxYc5$Жs5e;QR)IK(*;)㓰)DLɦ +KZy$&,g>DGpZ|X[<O Zp)RI<\J, yS$s\Ӑ}CIۂ\F#h)[qQ0&PR疞CX +A/҄oyxy.KmDČ6S|^П"-hIrD?Ԭn87Dڮ[`\Ky˕aJ¦{/4 w1byDl+%27D>UGqӆُH$S-J<=(E=CaA_;WLT)()yB^&=YSp0T#4!$'xFc=:d)KZ勵O`"ȹQ*8'@N `>]ؙ]:LOFE/G d4hki`g1@mTcWF?? (VJO{<rVky +Ba~=u[hN~/:)<&QjnFI5ߛB+nl2[4XҬ؅R-n=IG0WH"O~B~hxmw?6"RO;"n"L:X j[@(#4Lr(f1ld!dCh? +@/hc˰0{hGgOk)*` +Ͱe)BR},)JiaCL\V[sId54yh ykn`Z{`![f6ad|s4T4a4}RBe%U)ӭpAUvı +"&*b{2d7y?24qg<$V#IƑ4N.UDaׇ ʃ5& Q)Iܛ?ibRő_x $@ы1>|1MjIDDs3R ;ҝoh T4l6ɻ&9RHƭ ~GKP!? V)Oq)А +\KIpFݿQbSJ.#?yGlWe%؉co01ZPM"mkxe,T+Gmf-[mU +4sf@|1>rpjR̴0U=PD=5∡ +zpNx8B mwr DC $ش!_Clg76쩩Y3 [~RX<H6|ܡ]5 Hu +~!{U3{Y`} ZDnh4E9ǣyj-]yTQ|Ei $'@ׄÙp/-XHȓ0o /LKfhW:ޙ9<] +-$I$E&`_q bTJT8؉c{ZsXe n`<3D'PU$rb+^pN ]۬Ux$ YƽYkƃ.MDž3q|} +TboR˱_ GR{7@IR_عJFzxVA`-%뗉ctn>*n(,U1)D%,L$ %R |AnЧN4}_Ʋ}`~yh"h2 + +2OjP(06JI~އsR++)+yM,hH^˘<q5MBu\-BSN2CЌp3 ,JG{bqD:IJ&l.(UM{٘znC~уy?AW{޵W]CW,`xU2-ύگ0M̂; pW-)l8>_DMNaKoW9]fݪ gN{z/k?XNVHm"ϊ52K Ac #mQ* -K0pݢ* 0F\sM-v ΣY +y8]j}K1n{:gX7p ㄌ[c?v 4a^dA#֑Oa=0mZWhFVv-*<*PG)/TXM'g-m qk9)%(?mtޯ W+liFN["6{OV\'XF5t|tmDDӇj^܋- {nlDlM<,y8]@pDAPHn3X_ϽB>o^NiiH9'ꨟiX'~@% >OcLGvu&X;'~vą%dC)-/CTSB8T-A=AzPA(鍃|ٷev *B6/_G F d_'L˨&|PgAseF6ͼ:mH~/SHLވVBK6CjW~Ī$ZxO1G5C{h %612 (kJ,D=8َq{_'`Ӗa((n}q Э LW-\8s Y}#LIDsE+Q2XŶMDjDʅ@[N>IK+&!{ Pou g4OHC,[0ׄ+27ħT0-G+`% G'iw -| =%4sS LN?nꂽ覻ݼhkȽ0$h8tpN1EhWJx3q;5v;d:HYd&xx.anJZ߳i*A%\-K֠Vgi,&Ia@ВGd$'ŽZK`)(NȌ?Eͧ +|\ꀥ?刘; #YGxEpcܒ(ⱚwR Qw#vr)bf&vlQBVpWrqr m7K)c ))CҦu]Ňf?]S/}ZaCsgox1ʐeGPq:xU BFY^`jĬFϏ*XIBz{,^?&xXvO) WSrΓ1M3vZsEa8q$+j2bYbZ}2sSO#6EힴFDש +P¥ű!!yzZ蝉$hDm"w&]f&oq R2$8@ +>3kxCf/G#DԄpž9_%LiOx,-\ӪJk CDsTkIkr2;APE/yKXpUJLL / m RxpѦEKTKUPTF;pm&oHt 3SE߫.{Ɇ>FW'N78UX* ϞZ5>U{Cb >73 `ځwc-65t &X('0θD \$Ċ$RDJRɐӤkr!ޛʬ3}NWR&,=Ȋ2&8H~ڊ"VB>S +)H Wr*9FH' 'Z"cRc*VqJ8rXѼU$(RK6掠ɰ,05 +i(B!Ed,k9#BO|^XݩѴ8yo":F"2|dNG +ChDxg*f.&g3N0!1h&ID#m~t"f/W +媂U  )ŲPYCrHbJjF9Lc2<"d$M#,DonȣBU)h\kO;!]"&Bwŋ6k~4Wj\V!Ei%mh#(qB?F<&&2Dh4POM&9$5цLeEQd9ӲK+x Nܛ8i bU2}wvP<=ޮ-- +o.$oj&7 +C*_m`0ؔ\H(Ԍ}dv97yQDW ED \̇r.'Vp:A]r +N!Y:J/Q&% MbC^ C[X,}9H'X#B N̥ⁱVg$熭'D&2yFɄ%Ad2!tpN\3qVmqDkF+D!mh>/%B}M=?NYe +}Wab4|%21V8՟_v{]4E$msicE^3 b1kp{_CED$H-Ӑ"URӹ*\ +`đHI[US04!<xSa %Fuدd OF6ER&t {/f}^AVL-TmD}AP/fDBm>;~95&h@4;YlȾN?܌>#M|1PIhBrG|QZ|~6WѼ{j"'<V3359fʌ 괬#1K3+qpei7 ybl""ƨE +K@[INJӗBa,P^ۥJ73ZdvAp3%a9O^\Ӫ|$y^I#jn{\i3y|ʝOaBCJOg +˧΢$LTޭsֺWVĤhEU) +2mЄEn8e"(Hw)n}NRpPKU$a9EI]"䠦fT/$2>5}t{CAQtGF,0oܡeI&}j~Nr(M()WtHUc[GwIQfYhѸ]|%@nLwR)S&F#,j*ګ̗M,FWxV R<4N],xqVDҴ@4:>hᴲ0rP5Ƽ0N1R 5v +FgdEO>S|+Pcug #g,IIhJ#_:XfzG!(ϻ:`,Lu ;A`6%|{"n=G |JrT\2U>YEM~ɢH&(Ʊbh`̡GU&:oU 1`TLA>dBdj±ɗH^&$;IP+&)`>+/2B\b18\rW3:;&A({ce%F#(C~rFjCu&~FX'T4am@X"\h(YLC]hhh"Ȧ!vbц/QBGLl "\.!-!OmDF `b7s-n(-" sBєŞ.נ=y8J3͌FA7%L{8SD03E]SVBDMa!1AyFg +C ʸ^U% +Y&t4#ZY2s9lΊfaqUI2 C>*Z%PURa~H$0T[gmsR1b7)8 CHYTM +M'A +}*a͸уC/&C+jlE&"VRڿAUwBmѐL5Rԯev!AAb"EQ5&^L% iHW%XA c1ړsBJL%9[. Qw`,͔ؠ)OX -0\  lP`H ,!d 44 6p)\4|`@)!%@ 2A(A@đD:1ΜyT_8Njt 1eAɺnњ5j^Z' BiēlP`LN OLo7>IZC(_Y;9^?+VD Um8xf80%%&qNX/JlQdzyJOZEhR(kHHW Um/ ] Q^ +iQqE1QE+1M[5GWP9,xݒh¹DW{K 8-8î"1Z.+Oİ+ʪYMĥUe8V=xsauK?Q"_DQ$OJTML9\䜌NSBeK%ar.՘4sWqT)?e}~LAD3U&J9tgC.CQbfy) i>F4qMB uH492ԏܴr,^RÚB8 ̥ET&CwcEPI*.NӝR;ăAGy|zcj O"hR2srx㤚Y`yb:JxEx&f b(Gt=8遐x.bUt&"9e'4+#g) De$t 70:-dyl ;TFÄ)'h=N- +%Ewa8Pс-~3k?p^ ldd7MI99Ha1`J:TsyAba8[V}~{;~W#ޚ cpmjR_X< Fnؔ,lrFRY$R#c*3 _St:A4[:yLL*hMT&:,b"aDt=6ӪVN=,{(؋`IVB +y_ʝq.iP~F,%qBEr1Q.D%H5yuz:pJdGq? +ESAMSQԔ(4eǼ# hс;QЂ>h +CbLF%H+ỸT K"{MW!ll:AQO 29QX1DD&" ?5&s7Q+!ʓ0|(Z[GElՏP[oٵ۹H z?smÞ1 ICJd֧֡ P,B@]0|t>|?95j10);>耺?&m)A50G8. gkw~RX %/F`փeXz4h!dT8XRXHa0S) :e6=`i83^QyI{[ae_^X*hixaE:fy lqBX!4c){uF& +]\L iOV#p#xigp_7YE9E$c=\dᧈT(P;bڙ(xCA|1V'чpA hiն udlw?gI4aj_lKkPg=%aɔ8}lXQױo7 +bmU`rZa҃ #H~|hEWTf6O 3FEBȽV_Oue .Lz7 T6eq΃#irM;pxXl E'-7s16wK8rľ|5B1b'OgrޕVhxլ529n]t;][Ǐ1;4oHuT-V6'584/|֐yk^2"0 +ӲU韺LL<.6.~I(Ӱj mx?]p=ȭgJ"Ŗ0>;Hap4:!X"6Tk5;W N~<{ICߡ%PaG`Y2 +F~儔/ߕA!&`|{e-r6q:PP82*w*':DfE/(NQZZE$0zRy, + w,e&.H X,`)[_d(Sd!09i&{.jFqTinm0SQ#Cҝ#Q|_f,4r7,Id^ I8r椅Jl&yukwFwt*]gc%SN+EW D<+>Cޓ\7?Z5IF[nb'cj. nT߻i4:o^!= U6s>3LL,Sn s +ABb _Vi6=$rn${Sb.O, +nnB+a)VwNuC}gu>J|ƌNQSgvŅ{jE%&=jQ!L!|s+"[Nyƃ倶?z fuq]#۞'ިHfI]UrG@_,lcK\"Nd- +*7M8rq! ~w1E]4"cƸ s^V;g!g&}df0LBL(e%t? fЏchz7Y2JuxcN+)L39:ʛ  *C%1_N`d'S>2^FhW)oCSWhlH’ ^[_<PGc<1.|e4,$P 3ɘ#712,fM!''u)H"e=v۰H dvH˔$hhQT& +(?=!.CKZIY=;=3'%Qk&1%u=7qM3 ŌMC[EoAy`QrasMcE._c!×d@ˈ?u{Q13aS(P GйzVM1,|Sɑb\J x5D} 㔳?xd&ؘpcJ|$EL<#Q~Tƃ >XMJ)M3Knhv@EIM_&layגT͘mLxVLS a:YӢWNZ1{KHG'/wO5zF–mtFUѳJ`9b' Cﶮlt+S@%їR*nrɑ">[7WPXˈ^9%n&plbIZA |)yU=#T Ds޵iUHNjŎ tKUZ9$Jd[PQ :Zѷf< +PjS{-1G  ^9|Dk QZEFU mSJwN +].r+M =[Bymb[ S%~qd9UXYf';<u_ȁ]Q7kxr*< +f.==:Hp +&H)"s~꾚6uD 5S[yP?lK)؄sGXA~tHuQz$*(DDGC'th`W5[3y6T"FQ"BN-X".Ոn税B͒%yosHPVt"bn*´_&X'\QRqL"xA zŻ37&dzQs߲F2¶=?V( >,,a< +0pow8(ċ8r"\7)r:uHܾ0ه" +ZYN$tR$ARN͵h6; ^y>C d okvgvM ǠQ'<EH+W4 V!_#ﭳoߑYרHr92b*Om%D`ol )Z9Ir1'T8-\3W[ +1NڥUY]nZ7B_`Yby#{"XPauUVgrȲ|q! +v +T#es}"j'(PBkmJW J@0ʢObQl&k&)|i'鼸ڐ:dq*>WMTŀ3J?$K*݃<\7~fGr;QuxwN)/F{%vAk;g8R.R+͋h19j:k#WRs!a aK!+Rw݁#hI(O)V5EeiϪQ:A dfm5/ؽ^i 縯|ZX"BTg{jlrگ[r+1y),!4F&ypb݋!083'YJSdlC4&߯ }z0HIJ%f8ߨLZSKMԮOHKSw0.{ˮG7aaVcO(O7:t|f O={ofU .4; +NȤ9PU_5l;+RJ#XaFh{;בvջCſCi{T? |PSR\FBNbP~͍{ Q%}83 "K Km41m0.ֻвT? +j0dIxerTE< +'$GVQWfV' +ؠ(;}M K*tXQM͒`$*j8lfNA|x~rѓm`D1%{DqQg0!,QIRg9O0 @DgKggBF!#zF"}Fu #josh/a+fEMrf@ٶ=\*L%N6ԨmKNqPՉP4 +jtP3(CD!]$PHCH]٦z)HLHEm%BZkAN!]W'շ`Qs}0=Wp$p\{& l6Ʀ!ԅe#ym5:B԰YZ+Xo̽% +cs^f37.ٰ 1wܡ-'!GZMYbFaG`A1U2i_HdE4Kn6Vzo뼯cCiܜʅH5/@aJ%EY-sB-:axBa 8P%X8 6~$ +E=J]kA[t 򦚜tql{&GIDP \yܺʉG`cRFCgApHiBlS&G +1sY1C"C+yDԼUdZ)3vTS.Npرxqm03=cSfE,yO?^>~F|Pce&4(#A6鍛aStqf>_u.jxwO8Rg^sS nb7v?(H') :k]6YTND9PLT`nũCTi}P +-ד'`%K NI^p\@yF3 8fx 1VEimWnȿriX8׿= "Lna*@>@5&*/0c_Z$P +F;k@0-)&? **)=zނ,a{ +e#5B3 L]:]*{*|i?h(y >GX$3%Pn<_D4_EIĀqFrbpc[f`lDa2S>O6#=yph@?Bu͊Jw[#6b ,>WV60Ns;P\Q$f #2;!-)d@x NtYJ^u? W$kpj$mr4 QӀT8Lw~ltpX, +ނ$,coY8o)ruzW1RD˝ڈѿ~'օX8r| + +!,//|rtˇ]ߨ}-- RK5Ptg0Yc3a##E 򵕓ɕO!m5[O[` p+d+ x|!PNpSN_RQ| C?* l\- _ukdϋF@j<pdq7უO|oDHn~~Ʀ;!t\?àpNzlR +BΩHl0y48SET1f8th}eA/#p9YG)Ȋ $Wϝ 'm +y^< B =%/ē3&:c(uI] fZ*T61 +9eC3meOv^D)D!-xQ:mt VV=+1L9%H|h{Qn@#C(;T,U<ʨxI&|puHG]>V,#@կL~Qr +V$bSnW$ L K-V.8-?k#$Ď̀`As>_B= gzLV=Zĕ +h]XJ#OSqqD} ʞR0 D08_MSƬK{,kKJ C?cs6oŠ[5x $Η Kvդy(pe'痊01:kHCRP徕4?mfW6q8 +J'w4%Rfㅌ)->xx٬L +=PYmSмѷwٯs\]B݀%dx.?\Ao_ޭ譥ǹzU{wh\Bqg)JA#<!&H''R[nZHg vhR-nQWfl9֑<쮒 [04ۗ`f2BLc|. +-iS^ i>ך  wfe¨8Ԅ -aQϨ˞aBB^[ݴ6!(a~LBgm"/? Q'6Pd tm̜R`8 y1L}8zAdc|*6{$pQ[X\egi~Rl Tތb-@x#,؉q04G"oYoE7)Bs.ɴ|0DU!IMͷIZ @OL ;*K +Ng^ NCH|(h_(⩫sy0TyNAvw̼pPz pzfœtN0AKO]ϞDJ%qkqxX>Lq]/!fO:b%$KֱӀ-z vgYƎU#*#a8nͧgUE53k6E0JԯH9i9؝Sr  ;/Qs"T(gb 3g{  P?y3Hn=-"b#c  f[Z@LZoS]G/Z?:N+NiK<&aff9|7<;̚6zn4t28J0F*i#B7{.G|ZM< +@42.33%m-o!j6 +ErpO)AFɆްƤYy,- +纣VLep/dw+¡mi{T{4ڋ(62ٛیlǡzey/?<{Xq;6{y>)\-IORˢYm,ZTWr=zt:T;HPa]AVQi}m9#9NtP;ogÂ,pW`DݎL*>+|T!8^D+ ;ʕ\("dg\l k2D}~ ;R4>Ɔ9p*Fut\"6 /Ų'/r"@Eu(T;j4WRKR&HZV pPZd2nJF0NH<&@i ._}G4JbQL<sYBJIJymcdsEw5zHp vWTmO' +'zuSxC8xǡǹU`M$R75뾅QJBg }Dng5#v;(eOk;.?ϳb o;)XNeŲ+:$^N6pF*)`Kos)L %'hHO2ԁs% g]Ofg@|8"nsFzOF(f_h2M:o_ʮ%S9IGmDrd +k/nZIC"QE~y7ZEn%ї1iy;Y6Q:3H +̽1͌I@N=IvG~=T*q5(cIb7Gv 5#}\IiL7٧!~0Qڦ+q4455$4;;CN#|FF/! ,Bs4Ud|A]RU*5t|v7<\.-}.Iąq*rG^Ck^nXoO[>;q +:F+kD i,y3[y\#Op 吝 ;:ɪA0MSP_ Vd'iNET'ԍP*QZkhWKT Ahib w ̍WE_.wkq,=_n[f2z94-5Nm2o41_uq^߯1w.-Rx#+ E9Ƚ(B  y⍦UuOȬpzdCɪq, c;tai22rhX WhNDP~[=xOC)סΐF!|u%A!6]S&Ůi dgM.v_4?8 W9E:v^Ɨ!#,B'H$h^%8{TuEL?CRm.븼T37q$\Ca֔<`bDs:˚n bKٝ?V5Xe("~&0qQtllu3ƖTqt& <`?>H4"YIpw[Tw*SdjaZx%9rY2u􉶁A'l~v uL72" +h|j?aEFӓ2uB LE$V!ʗ@"WRT }Q$Vs2e Kǽeo +~&0#h/P_ X|!^uӂ)@-I==u8JD +J !@8J[p D(r4Z7Xisk^+@Rb8bi{I,p9 .>Y:ּR!8cn Zx'$Z(i ]Zz|%&28 I_2}/}k/`[M,dc 6N&;w!MC:LMgP6Yic +/K$,a]Çq:-MN6LDq@*S1&)\w3uyŤH4- O!Ve_)uZ(3+OQ>'> dbDdo5,:k \Z0"Pz}u5KXpp^$YnΦ neK>$jYeXIiA'?(d-޽GfAQSz`u Zgq sI.g"9qߑÏ4qg_=pG?qlZ%Q2.l:S+u;pVpx۠u~n>%/%6(d/p~ +xQ۫V +A$dKgs~9s$TCP@:"0%KZ+>}Y )r,04da6TV[Ԋ꤯Gr&M*YiLt*{Ro L y\txkr}~{>&WQ>|#H> &o9rBhQ,/XI~,D/~84Cr);6̃ +Lv ,mmɺ%޶͝z2 s+h}lơ^!}ȲVx%rqvҐ+X,vS"w1"~ l 9O@jN؎]~>T% +[s9=]fB{Qi!Ay}lPِNпOZ2by= c*wFgR ҵ80P.W8E:vp.~QM>p-}CXOJy+]tDڇT2MVLB G,#(Q( ڱ38Y#1`V.qY%ǰ׬:¼֩5K_K.= +g׽ ]/$(da[ r +0234)mSyXlg 丶" SD9_Z8; >])WBˏ](Oa GB]N3dUVPE{So/da+*@ϻTj813j&?LBRqhI^b0!|/ o*Q6fVa1pЊ Vd)_9%v~K@ 8 ~Ce;#O \uBH܌Z^3V~@&]Bl`3ttv| .\ +)~NdH+֏ `ߋ6C#gES +O-IV(M5{w +Y|syš} h4N!>.G0mE}IqJDR8^PFmgmP oJ _FH' 6i8?RA՘@~e.G=ΧQZQI2<8G+a8T81(Ў}&7 QWu < J9 [n:ޓ:N[UǙA9KB3_ȿݛ5~}F6K=adF| bC8Uf侭x 0BQ|ǘDFWqy87H<_q.!hو>&Awˀ׌;#{Izku'M*w@{O3`a9]fKaq}gػ0u]G^n>a7.՞~$ ]ux>:BC̖G_·vb;?Wˊ_HW!rc *\-^A7q=mM 9\WQכ(k!o%N"ùG \[> +09k ߺ[+O,34x2nuC q0 1.<}_\ēC9 ney4AEÜϓ/8QܒYjQT5 +߮!&d'%ShLdԫ9 Xi@p=4!#jYO-4:LcSb h Z}Bσ8B hb;gY Qدfqf6qBa,3tV̎2 SkM1Z-+A `憻_RܮSR >kP71䞈Kc+bO4T"4a8Q` ++ ͅh徑2  IHUrx})tqgްo9 +.\_g(w ௶ Wqq4QQw]r ~s+(WocqLD:~oɆmSKǵz2VEΡէy(K2R+@krha \s?z25&ի˔<;|`J'}*apD7ͥl-4%n{[0C%cܔax$/ԅ#lf6cA^+xmIRK +y')r %00%/%?H,@=8Q6?z + d +O#fھ1 P?N?u4.*l3M*j%fq2=L!@ٜmXyxn.e&kbiI[&489g1` t +(Bٌm8KRI<I;̨fJ<pb(.dl+_RlKbE@lU6 .]lwk5l%_&^`S{0"(qឱ}O.{jH$rB%=SH(J_x; %ύA1<(:Agdŭ1~RH{1EL`f?}^kG{=4**%-* A +l1O}8fT8Z"T,{hTA~[g.M#,5Rz5BL/k6ز OqPU +DG{jA("=fl +e퐋aeY@%\(!&(WMǠsǿ@f}T-1m #qaE쩏|z`y`,}NGpƅ +5حU"f &l< +\ υ =MVf](CAq[]. ; njoQ5qYLetʙ O޲)GiU*ˡg]8&(/RNᭂ($^7.f<@C$U7\fFB̃uL`elS.8Xo7+VGpS-sB_EEZUhg& +X_O<%\y} MdG+}bcb8ep42?WJagfZ632vi4Ow$:5aqk<{nkcϱѥdL+or̹oŤ pd vV2p3Đveg8*fΔQe73zgz/J.!t"D+kXvǽ2Hʤ3Xƣ,;;I;y5_qyֶM uuz"]o%x&\ +#_iPzE;IUŧoPZRqoދ@0k)e05#طqM#(wGfG(D#Ap8+O/bu'o{]4KxK);L+ǻ/}UѡF`HzxmfF٭P`w=EtXGHZlF>G' QX^.D pHE~1a| S|[ifֿ:E4##pfx鄧f{e$ +$?ZˑGo!OɓQ{en"~ٝ$Uć="JesLֈ箈4c6 ?%W))b" bPp[G+DBsx!o'/!>7;Xj +C՜!T ^`C8n>#Ŀ>Rf + +/˲(^3pn,@,J M`Z@S֣l30-S,Z-hӉkа}rKҰ:PWP/QKDhVCӜYRxW/HÛmҹN}`9[1s~ͥ3) e%gB-dQ~*#giYI`0ؓ,=]@2zď1a]⁺T:AG?A$"i3' h,T(?@# ~?z[< B5 4W0'8E=CvyZ1NoLb{^L[^J ɯ$Sߚ6vͨTLAbvi# S{eG VSZ0~,4 %#cLetxCuO!'_̻7.@ nw=2S24,9(MxVώ>߀ˆ͈>VM ~ټq[UЭL!2BOñbGY -JؐU)T`zkX!qbj!nW,qM9#\X1ʫj0ˆ -8#_zYx\uWu L> ڰ +4Q+Dsmg<&%#?9LjZ %?x75()0YŬzr4㲶c}XbaO)Ӹup1h>]:} M]YUXwQ.P:XQ*dR|sYFxcmøsq =2rCkkQ.0b9\R4*O.Kț0} K}l( 3M +uQ`n(rQbc\|] Z3 *r-0`IIQq)ËGd8y3-J,1P΋\,cjhduW߬1SRU4-E~Mc% +Et*su^_b hx!`T%+z_}ox;-6zzu;Ud:/Sj'ۜhxStgA3Xza>yC1`.$;e*\Pjy.%'ISl +ǃϰc/mQ_Ն6%4Qul 1Z'W7>ƵӐGK6_hs]gkg݌}mS;eJʘ&L%Pl,<0|θibsi"%ptJ%)ȥ) ;я+|d; 175]#\KeDzHr.c @ī`=EAF0#͏&#$jVyijbteg̡犐_Q@62@u(^ցV 1T,勫JGH)0F z!vRƌ}p"yי&fq +"mX'LqKfoLW*/G?n7$j^tځ,[m<0xHW!NgF/G& qB!@y.@f}5V"hujwK´Oihyb-'<ĐXxtI(ħaz)Lf[p69ѧ%zVce׆WpIiNI͛ dz0.WI*C(]ؖx`#UN !\R)J\џ#CmC uK"d<W FoNM$b2D6VXƆOCMj'2"5_A [ÓB:P%ipB$t@ర*ґ6%H Y{!^  0=iZJIH@6ϋMR >Kw'Il up'Rgu1R +Bť9]DrU#iH 鷗Pl^JǺsJɩj="G$UCL[KD;.7r\v JM7+r9LÓzO#'ǭgI,I@w@) h)vz'FLw yNƟ;oW]{Xm= Y6zPڪvȢW bD&ړBSYx$䩕|x`-,hjU++퓙ː":Jpc +"NE!fE`j0脁 %T|p >LsX pCmR0y +'m zZ3 +S"Fa;@,O@AxoUɇarUj;NAc 08̵O"B`&+ +Q:3ꗳ4F]!wmYl U+ ǨN(he74qIIPB22jyU-2D6NG\/qvc췁gjAUSYn? mJ#iΧho9G;0;V:nN{h%3h$ƍ̙+٪5v_v |F]7sbPTӍÉڷJM  +˔GRQ"]BYAƷ?U +SឨriRܳhm$Q:VѨG4\|r4t8Ɯ` 'x,NLMFJB oWBM!n,?eN#(z)["MjX)z~+ ^k=oW9PSʥgZ]>U~ Ea0вaE-X?oKb'NEr0FL"sq4^ %r4Z8p +0\ 1}tkL#IJ <8Ws)*XJB}/f7p`iZ #T}99'qE]B9j4m/u5uog$PRm:HUɩ]3г ;<$.;K\ʹ!K8D\;bV&jeb dسe ZL,щ ^b =!h^r;yGC4AWɬl@V9B$f +[ {QiЧ^XHnPY5x86y,:( KFU[ XB멣R_}$kX +[m7b*z.9Mn `G\W,ޑOk}D$=kX +ڳ)}u ͝/ k, EDL@ruSh hq[ + =N4e[I>&-|}00zf+Șh GѴJ}g^bQga) nw{0 yg1ːxȻE * 6Sб99;7y TuNVxݙd8` +ZCnת r$.]=adbGVhqa)ǙՒSJwg˾+Pd+hg*f hu!; +eməlbe_Kg҈ޡ A۽#GT?H_lvjK}^P hdgmyt_Bƽg'}E`ho( +lb34 !˜ͻOv-gB/c3IQ_mPJ0a +_4޽P}[ +R姮0j~'~P͋~솷Oqf + +p#B{~ + ,Zהֽ<by 8dѲGNd2 +Ev7L>j[VjW.7|u$&koEw86?*iSlbuBOmRN{4JgNݟ+ij߸΍)Ҫ_K^C$W0l=ubZꎶ&h?̄mUe)1o#MsX/ wt/1}:J]vNj,-{!{@-mF^^}zݣֱB辻|I)x35`AʣP8NQNMz Ph8>QHO-&5AYBv +K(4 PX) t>kKLE$_/aE-Z` W8S07U ++ς`1m (=cj+L(C}̄%jP#AÑy^_!L4< nQr׆"]'RpXx.2Bhtp +׵=(AJ^x q2J+Ľ]&'|kmը,±ÏEO +_/ep7` jK8)זp~WӰcֺ Db&kY/ak7G %7]M+k.cB#܀@ k؂`eh"xAVN$=Iy˃(nSKÆ ̑8u5 [VF8x0t[AәNHB>W9V`o RԔvyXc[aE^0:onR_wC: 'gɄ%zJ@ڋK ]"D Fnb>J:OzP397T1+p5a7+')_9/<~D,Aw$BF{8U?a='fdm6["ql;i[,S̬)q< R|Dwy0ВmB襌Qn)lܥU/'YpD2J`mrsV]c7e}_Yjm)j:]C@οiu +0HyR;\Z%ԛ_a t5ulٹI + $Y)Hr%_=/8x,573As<6@3F\D<:h.;Mք+DՕtPҟW֞UpDZsK.7\9#|KكB`b;, ]f5e?hqUጉp46h(MP Ji:N;JN'M;9tb(b߅1m/.4I"!! ˃בɛ3[8_`j|?y:ǻ4Y4y^,/r}NWn,q?[ʔdԬoDн#i-`7_; v.DF3W,X҃DA{ !K$aɃd1ԥEɂydH_'LXB4,km@hMw#VHXࡃux7z FCojԐ6M ] IչTCc!ۆdP  +`\MH(E\!)ƐH0 =H d &Dq,Fc"9]cH@GD/ld҄"d2 \&T#H'I K6R\ɴ&@EBvTA3u@զ)Ev M*| + +En\O +l|(ĜG"Wfsh ߫z%#?Q4$G(# fX5w8R'>)|@ 2I؁'.vbgt\LRԔ7J).c^Q=MN~Iu3WY ?)N @ǭX~\S'&KgOrZ`6;n!>fAM&JeScrbAEXYKEzﲤ2x9=U?umE: FYJ';bc Ж^+_$Ycr~! ;6ñܓ+O%S)IF+mU=iyl$p7Y(\N1{ f6R+pk t#Dlz4z2T 2*5LDj؅ߚE۱BfPrdi@un@N<)ne.*ayhu#(Rd,1G,@B&Kd_jT{=pK!/'xBVQ9SoO}nB+H*ώ7I4 +s 0RICsDL wW@NҴrЮ8W`Rv &-}qm@*Hܟ$]쑃X_5Hr8~d]ij>W>#eSa‚#7`3B4W[g:/ɺ +*'y}ODoo"ψw6VsIca oi:\YV3_cWO"܇^Z2܎)֨$+kBK9huΞn>j4N0گddK&=y5GsB>3 O#J > A SE1?dkW8kT ೓%ؽEܸӍMoANg W+rWQu[6slR*V(̤X͆RY(q5 =_."v\l<ǹQ3g 5=^E=3b]Gi`Vڻ̈3׳ϘBaJܞehS#q=۞9 9( 3L^e8ӂ۵Bd/cO=@̛YI 4>l@JL퉀GkEuQ%b:o| endstream endobj 12 0 obj <>stream +}W)op!l:qvaC]:.oE4z[,Эfm Gҽ!L{/LlRNi\hu%Wu+#6g cZ{RG_)ԇMs,.#,(Ay3ڳ=O]iUFLvRA%H}k=P[DFkzzjF)Y/y.}A# +E^KЪYBfETտy¤ `txqC9l/ |.gWѠIϋ(:}w35}#9"ѠfQ剹ka+[E :v+vHCE #V + y r-T!{bݻ=ժ"m!$S6}գ]?yNnt\`J*eaM%7JpU]GTьњLHNGʇaa*ʇNoHN:K:S` 6?\O@#U)gC T.=<3w va$چ}M L]kCVmPM@6rCdx [sng4;@Y[㟃zp=LqXZxL`*ryCaͰcN8梶F 4ڨ 'tSv9tL/@j|i_3V\ѺfK c +jJ,8s9d%krVkb4LD< +QdusDtc?blq)ЬG3eRt$N80Mm0Y%ЕĘ%,]BCcylNCBЄsgjo21\+u9.a` ֝-_d]ZFtXtKpNm9Y1I: "eKɅM.N-^̝$ճn CDOե,d;kdR̫ҿg,sAUlD1XvA߯B|ŕT?[ih` }%AwnKLmN=Գ<[Tx=rJ`i>I5&N^@%>t-2ה!)'CD.* `qlJ?JjVRBU _\T(K`-EruPf- Mg"/^lƑCwPtaPbc;YtSoPdT)龀`wx7s[&Mj%=tS$ +4 RξKe3X _[9UcS^YrN5_P}z3~^fGV+͛h$a'?$C`w2}Yv͉{~EF ָd[H8g V<9DZ$Ij -xdu)*i㪙1[wXƵן 9>?}ƀiAU].wOn'HLrA2feDXjl)tK0MRJR:08.RƧZp +͆ą*eUH*㮖4Ҍ'RH5.qw[wqk(ܠPLUDg&F~zeSzӨVyTE{I5)y"J/_preTR.//GFs?ܒ1ϡ~LY;E?đNoQE'6V|O iF1h>dU5Eެu"^DVDliQ9z!bUU)|OeٕJq]tDn=u+3xL[YܼbU GvIzI$'CkP3ZL_!B[;b\Sq:?%Qԏ)BGH5~CL i0,Aݼ~QfO0qNDNyF$a T{W2Q:NuŝPYKBQST8Q)E(nY(&3US|~.VJZr$KH=o**"O}VO}%c_;BX'6ml-YR qjR!hoRT?ExT%\Jݝ4*$č:*ڊo<4Sm˩7|D.|D7N9;?B &V|B9tOCV:ejeQ֚1pWIŵy/>KH&OI~Nd\?R|6\Ej̈́c +2hXZސpqbAc3n᪷I$}{W1軽 ){Hs&0߇2 @ph@ @ DPXd6^<|xMxkG;_y ^f&c`&,UQ%+rЪ"ĻdFu@ՎLy qC^*cPd6 ٠=ӢC?X|ߌ+$h*x Y栩!SNP[->59m+eEbJ V$tI~CS]:tH6N ٪hDd-B-B]CrN  7[UI2L +LK$]Q +t9!! DT&**U Fdab_6,5DUT:XDNUo5TTI!Fݲ;fzLPFgJ#e(UqSG!aU)8h2֔O +cǙ\4ękɯX2d/ȴ!D,$4 0phQEL )11C4PGuhFj|s +=.s; kձ- *b(f:UDLyɪ̨%Ņr2E\Zˉߍ屨N,Q$W[PI0*)[ALI\J,uC]n+LVڼ8_NMS|PYTTs$Fe1>^"d:Ov\\Û <+13U] jWym6yOKVDiΨeObڳ%ELS^FܯLL={Q,$_e<2_1*"S$-.;BDĈ l$ aTI|V|jyJit 5PL1&9ъ "\< 34X4:͇mvH'#cTTdWDl Ff+GkPJ,r$ ց \{`=p`, kX00 ]0$HS(OhJN2"b(Pއ: "rJ$YdrQ;sI9$Uugi_D@2݌EqOWwLA4-mef3OGsP㜓8J!>~D=N"F}8ӥFfZIٹ}m5cG̔XivZZ;_7D1ݘX\_Ǻr23cQgI54Yùu$Q4_{}(zv~n'WqξVӊdsk~o)LgJ<4=^kwC}.=Hj~U,<4r!NhQsv'~ F)VNIW5ILĚQ͏R%"3?F..zFqQh}srz +]4ʭʼB'$d3O3J8>ȕ?='eb>~5^"/$QFc3]#~$9R4hl-}R{%]̣8MGNSF!Θt#4!4.II+^CKC24F!^yG9eN鑻qj-Y#)VL6/ћxe RE]t?fPXNU)Jbů+Jh.hLj=%n3}_autn501Cdk6PzE-[|/jGbs2}ia۫^☉{"W;Z2[cZԢ!KH˂cspMp'ΑWtڒȶ}Ҏa3jœ'! ī~[XjfP\qFi╒ Qщ U|OZ1^)ᨎUvBZfJL2O%.EUV_efU‘!۝vnFo Rdek#%S!/k$+*QWʾvJ_8;Q>[>mG +GZ\RJ;2N\ Ilmh TFg"$16Inh3Dі"GJJ QoD:4|[#aNW$!݄䏃*ۣ"WBը2OQ`| YY(+X.H|p}efygS&Qǹʢ#t,BhܾC4ue~uӞ٤;lq_NB}װF'*D"^*4T44>Z$Í y"RȋRA^L12|LFߐ"*DAImLqfiF΁YrK[v;$nXN':U84RS%nꎨӽGKtע*i:SituZϔhN|ŽR=*jcJT_uUƫZ URk#jR,Zd32mJYg"U1!YYIХZqkտO9C1Hb-h pn(@bPR_LAf:qZG܊Dzz jBK*^+&Z %\$\Vr02BB%%Df:٬x;:8+!:%YeDF ?jEo +g̚/vt5գIJXꢟլ$X +=\: g2HXs 1LG)P< b +zhvAgE왔ISM–%.ф>FLzp0LNf/AfgqLD}IcbWxAȢZ26~ĐI :Dac\h̥='lB q/h΃c[۝Gދ)4kt[$pҮ#^]E% _ %J}`},\* VLjA bQEcȉ疈`it"TgcdRRI(Zj]Wb=Dh%qRx>Oh&&!:n㪔7I? iX-41摃D;tJO9Fd'Kj6a3i *U("NQ9L 2KFA*Qۃ$m#24KѢu柗urHD5Z Ed[apitJK\$֚& z} t>4}?C wA3Dl=jtJ˄:y26Ri*6%LCQƕ(]1f*#W5!FCv `Ut΂ٽ䛙<ֹ:ɂ(JBSʧZڿG#w1fk"'MyH Y5_+ cS"^4`L#H*Lp4164 +IxB}g3VGz-(]Da֝Qj}2|d8J0Lt=ڙf΄vřG; +FqҐ.  }r,"I 47k&5qQFy\" jAUD>.H>ؑ7n:I+Z jxԮdds-jmfjB場1ihK%K*+#qBVh#$Ne+( {F.'kЫ LfE"!D k..%+pEZ!S +]'#x~c=kdTךjfv>I4%JexZsf b* &s1slgaEԊVtR+z~A~Ÿq{0+FVْ "O#eNuQO{RHs!$bw%X6etEth3a0rQֺZoQ]ZsuEAAWQoJi*A!Egƣޝ5!) +gqi0ԪxD*k}O~Oғ9URw,_w(3D/?DxVs,׼1lUiN ]"-KIE mN8RzP-qk4X'b ̩8>Ԏ*e 1.vd'8螴Hp&)JXjd(axVr"q"ܸ,^eL2:m[bө)UlM%CD*Ұ蝨HX1|i +YǡFm^-=k459 jt"%9^8KAԪiI'jڗ1U*A1KwJ(uu%}GIcMŦ3) LI$=Um}t8qW9W2up$4jJI#&`bM[>(22LRAȮjui&lф%I(3ڝ֍e4/}6 N6ܮ.dڰVӔ+m$˲%RJYId M_CYNIym5dek8Do"q,D\?GZb&mu"B9d\r2&rhT.pC +͸5dEWQi%qL$Neq,7[̏! YJx*GƍJZxKQ)!j$ĢgBE\))W: N+<ׂc/5f85tTIy0Ik"%sI?p/&!QiQI+1YV~r?t*MK".qQƾʙDU|ANDт.'kJ&Ţ!TMM]G1v7Qï*/i-|T)_'B3=J"#`Q7ЈjNO6/f:EEJ ?Ouc%wj zf}9[0Wnzq7.cZjk>AYRS5SHaɺlV:(NfvvӶ+V9Qkt"\kC4a&,M]JVy|UEWY.ef}ѷ q(@@TX E6CDp\}J I$CZ뢪&j44k&'?yg2OjL:՜ 61S쩋y3CCAH=٧s'ԓ:KB:!&Cr(pPf$ @IrFW ?!n"Bfxf%z+la/?i׉ R@ȏU0l*T(uYZ4^/}jI /-J܉}>P̊eؼ!V;tpYH@*|O&5Xw1wׅDBjL0o>Mz{m%l0z> vKх][@_%K..հ<@OC*a vi\u +CmxYF[E1VLi4x5P4% 6hTkz<u5a拍DPR G콷m^VTE$MOg+q(e/["15~-^4s@V¬= ;3r-VS0[-Ǚ߉J4,_dTtL# Ʋn $E6O b@3#` q}rN33&Djs@!n8[@(/X_p\lWb(ay, vL2 vVr굛?Y~Sx;x9Y%X~b0xHz|y(!yO_#Dw?c.G#$t:p?|eh*AN8k@蔨 @ʉinۣz/J +e f "|tn,T"B'rC*|#DsD 4$޹[=ywm7h7 R"FU5T6flmTp,C W/)Ù@{ŭoR9F>Y5*'_C&$U6ۿèʗC\=E q$H1OoϝCUF鳧s։ .;o!,B%{C1A/`b-_ֽJ~_ RS*<Qek8+9\Vή +KOW2ȵ8U?ͨh`N]>'|IimXâѲJ;>\] P$P*0BcL|>E=!kwU%j85p7F<٘#݅hCE.Jn@8?'Y8aaA̟TW g. 7M8w45^vo2).5ebV=>ę?){"噿!4>)E]_3P +_cJn"Q2O!7 $m+?Œ4?X貰ףR]t|A-5:AL_ 7/R,!.  ~}fb)?!'ֽ=JT2]V"8NVlt bkr,*?,JPhMcJ?a'ۚV_xB՗ 1䡁Tye@"Z{{/QB*_? >}:sO)8>BWT`n[rN࿤Еe CIQh[O !fчM!Az2 z8*w.Ȥ?LL7@D_ Mr 8@/f_~u+֍a^ÁKɩaӪtMZ>7} ZF,NW<JofD+E1ԉ10hazUO9ܙV- +]+ԞdQ[iFa7̓p*&AA$ =! +f '804(o8 +Gx,қ?77 ^\|6W'Mf:ݯVE4kp /ے4Dڒ{SSM.%Th K>ȍp>8K~C͡c/i +u^C5!/y%Y +zs/ +_ +W+1OC/r.OǯA~OKIEФ !*iL + ¤Kb,`ckp'LoKKe!qVv*iJ:n o`w) +K~hvL/`"zKжc=tgW|BHQP,5l</1ԇ<Ⱦ6Gc(\YmОk^BE1n^ʯ!=7I&+L[, +P6g0ШC14Ӳ/!J7^s +=`4m6gR%P/m"~B̑]Uv7O&?O+'3bsbu';/J\;z|'ޛ K硢n2]cPZ>rtvWvzȄ.bWAt/=!ׄ +,4m~B>V7g\N\Lڏ ֙P- ʀ6?r>2Jto#d%0" :ix(!l]&FYKyMY!~-cڇN4ܤ5aq@+NLzR)=|эXLJfth ? ?EaHH{.,3/ꆰ=w ]Vs[H߅»)/Ҕ +H{>mӅ:k[Ū.X߼  7߸;/FOr>8sJmK?_FF +P-:DLR-e¡@iIƮݣ>CI,Z3Aw+;Mcq1İ]%?|7l+AQ?%+-(t{Ņ_0>>\L[.?ѿΒT;2E p{ 2cU2;X?"XRp r/`ZcleGZ}_ْ>(rnK;߅/5L ZpF] K$pzk3TW}XZvkꢰ(M @ ߥ븮?V6#/|EJ"؉@-@G~]勚 -sB 1̴^eKwTBdND&/DHe.Hb)\{*8*y8mαFu]X_O5Kj3 -'jC3a+l&|U3ld|WxtB:"+Bn +kJamwJ [~*ɽSlko¥R7pt[=ILc *ў>|)V]k9;Jv/§T+(C S\E0_IᴴTA ~:){{*:{>RL']r.jݫ/X8!^1ŇRA6Ev  ٘0fn2MpJ _Kb)i]~~{E9|7 EqY<{\Ut3cC(0&s$YQ0ݮQJt0 HxQ^]mO~+T8ڟkBаv v6CaZq툌,<}u_'#7^H BG")mt_, DzE4vl]/+INŞȽб HyrhXo`~po ;<{:l_g;D&CDOKA8'=~3Jǯ#A%(U +ői h8K7Bg{4{Ƶ#c&"ʁg%~-jZN*qFe_ >iqڇ?sg_9E5Mr,+о+wCAD;]%Zsj(.fJ Psʠ$ AeO3mG(-FGb~t2. { h).DCe|z,~kbń?&@,F{U r}EB[M:G $TRukl+uYx~² Kx>wyh֒u~#'d(@u=z 9?O ЏQ ʿ[#0.s"e*6fZĽ(1XO+, f눾bvs{M\ +T Q~JZ=oQl!VH 9y7 +#ZG-[C=HN_Uya ?}IϱJu +{ۺ* ( J 9bؕNrzɂ-[@lϸ cr̝I?u@?h@U~(t.F!MrTq7VK$' n;b@dkOgt6ڤ?!ѣ67|RFTX,iqZ+*@nY{*g̋U҈knFĒ18Y_F# ECaJ(#Yi1 +"ƘEyVEU8´>x"3+L:E9*$sCޜw5O,^2?ԇ)_ % +>s@nҍ\c?dvۊdDRUP>/DdcU%fN؂#2]q,QzΤ +\ǿ Sݗtɮt/YtpJԠz,/8;iz$w,^o]c6rXiQ`cWs@qkYyI<jB}3*ٳ(1)$T楳JG眐?YĘOؖ 0olwt3n3? yCP{džl8;WvT؎ˣ-b=Q囈BZC;^-I[d,_=D/HuDW 8CcP Ou[KLQ9P/U=g ySF=ʥKQ `X'VEO;n,0R+ IK< 4'EXE@Gu"R +4?[ v㒼`sh%SH^1z#oQs]"^DԙO!H _ʋ(-a<u6/7D\ v@s|ɒ>b4zMbI Ueĵ9-iu`$x dzŭԊB0v47^R ;,`+2VaXՖe;yXuKeFls 0JYx[oY5_PţDplG&|;3#c 3*~,>D[2`7JU;I|"ϔ:rۄ%=!y`!&$dNDц#lO̟)h\;%:O`,79n1Q E| 3q&[<(sʜ %Dij Þe*&RܮrqI(']Txo8HЪ[riNN'}o7OHs~ڗU +Ek5) 7N +̉Yp3gڛb; xz@78^;<*VV&yݼ[SJyڇ\R IEvi4ԆFk94 mN{[孶g";+`I2P?I8k_7D 0|䘿@톤q@rD/BX»^+X-|;5(x'.{+%@p!{dJu}w좼 #e^hRb/P:Ԋ+#.^Rg+2e8ϔ]=BO`A#bWXH) ͒+g7jp.uGFxRr:rҶ?r1r_%RR*_ݾ:d/0/zoX!Q():֯'EXHIoD+.Nf-N˻F-6·y Z +H4E`;UO[K ##jp5e]$RG̀ $p*ip,E~Mo /p{^7v -NvrBq3Geq|p)ьMV:Gܼ5C 5i+I[PS-oUBRj6RļFVQ{Z#PYNȷ0*e32Q5Z"A@Hݫ8wLn3G WfQpLB8#☡&lg8>x W{e5\Hl?KXpj }0֏`^~8bl䍓($k$ur[5r [[8\3z,q4TA dvD-}@X+qW3:g WZz (1ފbkvkc|S`C{,XA$k4{9\#ɚyzqlRl_UIq+(tEjrJPE@S`#5\9bQfT!V UQq'M.|T 9"=г8o8I^ 5 +KOOL^&q&)de#NLMNUFg/K]]ˏfبw<ׇEg XV1upMNqZLaׯ;h\4auXrF^4Q8r.bȪIt\&O.@(J;ڠZEj ;I}e[`kؐi)H2) +,FyG1!i4sxL8GM^%Gu|9}~diNʨE9Jb n%|^oH;%|{[3:HX1#SS5pHm`yHC˖9EHyH;*R:?{Woe9V%r}t8E:5E6]X{䒄ɧ) f/{u *Λ^Yó*# Mvnz:?awN^ LUwj f "+I<FOHnwk2ksϧ9$1JAiVCi!8 kP݊ޚ!DU )# v/X"9Tr&ĴA#7y:$vn hH%]lt96R "65HN􈠹bz"9(bkP$$(=L =Mk.uq$) W ǃe .Ilf~ +&[|LSn"'GqؙKFS4]H l3IF%J|w$l3$'W_|OX($qI'3h|{K$ȪH:gΑb)xU(K*6!炶OJ`{j'әEJ4ĻiO2~'O*qv`l' ,ǔHpm9@E'ўqf;)` +..'A%N*=A)0 or~Li'7i6H%8W{SĔs46 +*M UM9;fS 5fIIQCVga#S{0YzEJKWo YקkPDv¾1I7r-N>#3=N2.P9Xc|%w]-VqZZ _v ?X~I#~t_wj;^ѪjOk+1@Iċ(%6+J&Brx$VŇٖ~PHۈ=Wq> k.D3R7vQަ:x# uNCXb2Y O8[I[NMi 0?Ek>)dm?`'K!rf~&}wStX.yLj,OR}Rb@7,#'|AI0j!j#:Ov[s!9zg? +H3%${joQ5ӀEt$C}_*]~@;-LLj 17۰M“P=/ =g i7D_#7ӝ$Zn#IR~@9_X1z\ $?5x`Tʬ3gئlG6vr\G3FӞ<=d̦:N?O4DbsZKF&<,AI; +lC3ZfpyP~.<0Ed $fV[/h#y2 Ѭ~/Ŷ41q Q-!:9&(4nDN{)?m+ G#Qm྿~;USpEqH5?6(H~J<5,?XhF/@v/U&M:%߼(j~L5>h.C ӀO7?Ęm5.Ýϳ !9=5")Qj)cׁ?OfM +cHHYm@M;J?o"%Wk,Cøߏ<kzvƜ^PF[|ۣG'D*5(}ak]23"~?`7ZRdB('п&A~+xؼժiȭ~? +Ϳ%yi) fߏS_l@LH鳻~?^2(u +'((~Dgs*Qmw޸u@jv#RpV*MPLVnݖު>hpD@ti +#[ʸZFҬI,v;"J ~ri yOL ?U(Ce{t%yRsD418Bŭ/=q/O}#)vT5q,8#%D|nApQؙVi +t SV{[0%mՒ!F)XS^I+Cl 9\-?֓M!9ČQw%oF^~F 3L1Rx +^Ğ~$ 6yPd)x%'a? Mj&m~=Q*~~䨻zf*nPz%P#ĊE1=횎9(-k%wb$"Ro.8!'vͅh\CMӨ'VZKuO?iS,nOIUmrCs~h4#%!2WIu$ExFaӌ?K!#\\)k2YGHJUr{M0f~~U.xǍoԓ$X?v?1|S\*QM$ 1jp9"_x\utgLc~ZN?>C |&Pi+P& 4P'd+uDŰuK2T ;+}!"F Y(C :4 A=|d"rw 5Q0[ZFPrlj'8%;.Dcv}ٕDɠW#4b$Tzxl.yq6RKg脡KF +ɦNz"4kI(jp`BmB. PC3)%J M}6%9.N84dltp8xLRG!Eԭ.y {7U p:xnA* kN~"}8d8.ZO80o)N?rrJn2 +t 3Nc:DpzfD(vod7!@o~`IµV" +8 ,`V2wF#B`zG +PupCmzN88j\ȸ9oԒ8M:29I0H|DLrBB̔G79ۜ +IJ"ɴ>% QiɅt4 ٥DwՉL쇜 bo + f,D~27vB#u3$cfHlLzQ:$,v$kcda_l*gӓu۷+G߳Cg 6M b!]f{ʣ>W3笯׉ƿ)^XrB>ajX4? L#WH?@-k3{ -`F^x;VaTaGZ!F`ҟrlxv$@1GI?1{tH"DRr@!=shC\ⲓdGS-$aES\/nY{HrxZMC*G<0;ٞsS]5s@W`ڟijFa='Ma٩?jMIJ`@J%/; %ҍtLjHf"/T75$()KNNY+ANu,o'|J!ń!]Khv;D3jH.v*5O"o8/|Dדd[)b +U0&p;0 +NÀDU$dOd2b -BPwNK`/!GI`v*RJHǎPHe{'Ėl /H-Dd aXPP KLjOK+yP6Ku o,!.4"gW/zic2AT BD߹\xG͠JX]lT@$ɞʩ te:hFKjEK+f` B-9(9O\}Nm Ge{`J_1D1n7sniHUA#P3[ռc7E-QHlS]9閼wK,\mP*79 m)Hcl n"w@ ,'AZ9d}ܐpFAG.n%?8@|;dػ;S*w&f ^Kjbٟג8jHR!,9Z:oI%w=\J@)cCTAB4"Vѽ #TT T=Q?|QK u)TGf%Soط-ӸݮT(驫)Ls:- yxX2;t)|X5&Hn{X0uq YRLDq;PT:pf.d +~+Kp]a]s"їT5ZEHibޣ}MP+=6 2papftoabDWY?R/,Uہ$ѩ* a11;sDL-AP,RDPsJD츁/qRA'oP WQN[A Lf%--bOJE(*c3Q04ajA8LSԱfɄ)bU1 NҙDQ&q 'Zv`:Sd+PUnܑa2B,L" +Aq%JDR9ZHԙT: "tLYFyqAX𿝩م{Ġ9WD:Lw1rdMsm܇Fi.a/168LŸ̪72>7ۅH>"Vx3u(9OZsӍ=ܿ,Q3tLp79Jwv`Dg o3t(Ωq#Q."ׁQtBpYlS^wxdݘv8m3@oҺı!6Sser:gG~"ShOYX6asm&N bwiatD8 +V3Hڙ&A}ꝩduth]Wa?0mZE3R`N{b8X#t MxB}JMDh;/@*=@%d)xXRxiڂ49G4S' +%Ha& qS"%B.hƈ'7M&_őj{cum#.`41}I4^ DRdE!70M.Dtcx>\Vu/ mP13j +NcL|iԹOEI.7mr1ط{}xiYn3Q;/QVvLX.P&[d@ç( +l+49ԯNֿĞE#ʀ+5hZx:?%|ińneZOɇBDep%!!*ЬLj"Ŧ_ )N^"3͙}3s&NfΔ.*%-39jt&Ƅ[0֦wʱ {8^,M:}&G52fޘ ^2l2;&]jۄ`+ǹv7xS' l:+Zف Xɲ,R 'r6 QE?$}çT>G| 2G616 +9V/7׻NL4uLx'"[d\TY@0`}>j'B+Ф)lQ>pjRF)V'aJ+HX߁t ~"rY)5GOG }oܧ9Ƅn4U}S]!]aTQ<5)3d&L.r3Sq)G7(10 P_KLQ'FUD3Q*yW"8wL5iAJ*2&SuA@\mq鐩 cWkdG $ +q-\m(0j{a2zR9 UѴ8n2H~tM*]2T$P;1#Mf,gOupX!e*rd*oLKN8RCsEsՠ.Ք**{'+P|H 1 +ZT# :vR@SĎA mT<`A _SLht(S?5!#G1ôALŢKY2[n"kՒ>{VUDj@LU^k%QS0z]c'~LU@\T( c*R!;tskt缮XCޒ*(A?9TJ,ZYfMDeC@!T+%+cV P0k .3^dWc**0YpzIHT݊X/([2X= +≩e.짘 +0(r Tτhx΄H,c8 `HJT@:b*yX8_ {1JSBW>a}w߀"e焩xx&a H"fB4=L ,ɬnHhH0Y'aF5 sS=AX SBb[Jha+LNC0 k2+c ۍa%S?+`*z2KV 7z +O~TրztN%:^' ϰO-bbSĶJ/U{щFKK5{BB9#/B/U`=jT ZT kA>TL ")hL2=ARq!ZةLWHyx>d˞ +w4(U,$:naE*[, $KY9s8sS1 +98MJa8/]X.픩H۹$ lyLյQ&iQ`jQ86LE9E}Ybg4TG / _h 3}dL29CkY K켸3Q3zd\$`ȏFuM1&`㺼h4,ASd1oi/t.ng„4*~Ǵq:_t G']aUNJ)}IV+5q7m7ؾEiPWxTj}3-Zu* >ْ(,PATR 헶kW1R38S9:T+SXuS#@lk_;IЛKp#'>WY=:˟#䛈5uE: .A)5KCL#jpa_6v$3TEԈ;Tl\r0b靊H5_d R!oT qn!t* S)bzlN5='/GDdAhѼlT?(x. d.x)?(Oܩb?@]u4.aSh@TF",S1M NW~*ŝD-?~-20.?N@SuRPpǼ2TA$A; TA;H!O5%-j}TdȐ?U+t{ܢoTTdTș ^T_Mڞ6*DY."SY+/(Zl8xSN4ymT C54\FyO68TTMP"OOU73O@unYS*b{i`IT/t1Ӄc@=-)┰626Z*~*Aj2޹^MT'YY.PjQU%@,Jۀ*UiL)Pud=j"W_i8:T5ûŞBQՙ/ Y\J@t/$S_^4PE%X\GURߓ>PM+ӂCZRf>TT5S(pTIF Jrϳ7sUmgU;<2BTI 'VTydӶ!m[CMDtY4IUPE>¡[_EsKtb +Z-փ U.gj|iT*2lLQU`.O[T]VZUybXHAWtϟlT1z0z5$@Ug1P/PŵV({@}@L}Da=Ho% T Ǚ$J }'0iv\n'!LSJӢ*OrM@0ԙAaK@6OxA`OkD +S͸ldOe I%ݣ@SbguWP%6WRɽ{aڼ4⧚yw(zw+Gd>fr@mJwPE8Rg*B3 P(wH x "T=f 4M T5!|)Y'X(.6`aչ +Z4dNNXXD20T!+3. U"(L{ UfeHն4(WD?9ĻfVUO B{#,bzA_n)J Ue'J/8!1Zj(6Tu5x4.yZ: %~Q’Pn{ǛB>T4:$x)+rÄf +>3O"8!w С꫸@JŇ?{xgr Lk8T ~1 *衩 +O P2U !U:l!DNhH##SuU!y^ٗ@ }x9wj4Y9TՂ=5 n|C +8*nG~t}p$:TNYEj|{Rvl Rp2=Ty|֐΂l8ڶ:'oAJ ̒R|F$u>nL5!=H"WIVXT18&OU8Jcψd + D$L5+.T88A,mZt}EmRMNm*0wQ*#dq|K)W>(n[x ++K3*:㖪 >P~-UI}bϕ/U'R +܋rR{^@tHٻ*ɒV['-UKdԎkxeӗmc*iY*_88XR̻@@9sN``SenN*in5f||0ekN*U:L#7ʪʌf3*UUhKb䯪۔YV J@>ݏٓ*ʋ|AZkH1Hэ LH))Rէ0壩)E&/M*DZ1}M/Bv3U}/;5䒥um0A=).YjdxYpB4L1*һڪJ#rcU SeRSFp1`#$VebU^-dUe b FXV}d,*ة#DVȃ<Kp(فcwڬju]ȠeUՍ[~uVuNPfUnƿdVŮnl8#ѿ_NǛIm`7ٔ҉VU6-- C&e{Q$kj[ :є3`gʌTY0]z{S)V#[ZU(qY,ߍ VJI9U1Wf B*z>FP*㻹r2*ZD_dMcq%WesUqj C_[UюE߭SFi@V yB)z-TV,򺡣U +99𱜗"]$%˜ GU)?șŬi2sLsmW +n1 98cn+U% + PԶFK߽zىwCWo}1sUX_Tx%O]qzBjaET%DGRx5۱Qs-,.*vf\UI`iaCA{+i04J0IC᪪LhZ WusU 9\cDqu/2 }@ڣU֜ !tKrUjG搫b$_h9PHۊªqRGJ6rMfT#Ũ +!DXn.oS:$jM1߉^X@qbª+C +U^cjq!XA3$Z,I.fUAAAt*vIYϜ:oJ3 Rey`^`o0/RnWul>`< k_y)QJ_D|V9MU­7B/+{z޲J5UoϲU4:J~U\ "u` @V5AYE`<- SIHmY!+d +hw!`U +86y>}PVEUg1VThvH <㯪\!USVL`Jն_ޛT *P|U}{Us-=Jž,z{tOa(kWCaUcFsb>umY Kӫj>E_Wmf .QO*R%ynCWuaZ]zU +_jFr U̓nS7m2G C1B=.eRp'{1jn7gS +$%e#4DCjo=X􇮊rUj UE쬿tUd' ҒˬsFU BBinGg`AY^U,P%!U37j"WxUEf)1#/ң/UQ un.2mywC_ۥC^UsC4^UZx1A7CszU0L^Np^UkW:\]U xR&S>6Gj'd7:L$Uueu)P>L^Z2(O0sڗU-ؐ8rۅ>kIS"{g/TRU_W5,gi|UDU/*xB'0z|6=c UiAXnMnCӫ""F +۫IUD/D(M~@Y>_]2BFU9{@UM.Ҍ?_OYn.F(F,Mt)*!hyyqWEc̰UA|/B~ثB1U1;Q/Ml īh{/Bӂ܈Gjd׿^թTH\%+<!= zU"?kh^UUF=]j{UZPHOJ}R׫ +6{U & HQuJRX))na (u*dx9l_׀Nj%pxwdJ.j R[zUECoQ`NKUz㫢V\ժ^{eb/y< '&qo,nU!g \U^2PBL*ug%D'*hFb0JTZU8O/ܛY"ROk2J㢍dUqnpPZ4;jHv1dzZU\hU'd`(UQ>7ko k(nGf,٢{{qjoNXmU;Ez5dq#_{رɆWE^/K2y sJ$M(#9N" x c^]uI0M56c)1"U"!,@Bw rQX#CU/V4&?5bꍣTU-`%t [#2 ̥)_Abї`<>H&4vs{wnYVQBjc' +ȿY59{Z͢a0L&SL_.|9qcEd<ݲ̛q@PZ-)n+ê]O)wj\a.K o ֙xcNZ`6(#Yj[-=/Mv= + Ht\B< =xؼPhNCJn^iqfyNf]L:`W. w=؟NlׅI볏;;#FԹ+Bz/"9"!b'8f頬(w,BK{u4(?;p,1K|p}-Mdo]+l GOJ=2MhZ 0PKM*.zFQ|U)o@jsӅ_@v`67TQzW!{4W?5K([+ BHz+ .ӾVu8pV5 hHwckдW +"ys1j|‡Tyۏb͂MEtwL^,`2wG3R'<`CzŨ Q6 G#.}^LeF]GOhyX + =)V|\;q24ͱl\Hl`OjVyENd>aS悹hrdPg7#]ؿ:!4..C^ׁW[042|{^!?o(s3/~8 ֣q.i2>tX7TZ=5U@PŢ>b֛_sc 7c5 `Vz@GB,F?=8)$*uP 0ݠŮzeX2PFe(ggzk!+:`z>48YdgٖZ{>gV^.D%訐40Mx.=*L^8}Z)M?9֨.1촖ciZ=$C-.`ط/pU w RQ;_E 'dem跆 +e$fpf"LHڠ2O6_n 0IAq>qe!Q%(V )B']%<*lMHLTU"j/CJaάF`la }zŠAMYzXx՜%[ i9-a%7.ȼxoQVҏ<2ueL;_GIbd6OrĺjC!|i>͇O/Cs:tጸnH Q{EN3_Ț6G72/[$\OكpsVLH%hY"cԡZLO$iߞ3y.n;w1lgBget8uAAXLc@n a2 V1p < AZ +PnB_,Ì* 3Kb \nķ6שQ`2qZ [-,aJɕ4U-h[Z&DXJY b (Pʡ{J&F{4s@4Oks zd- *px Bs,K;H]aLQ[\L zˢSۺ{v1x 7Fbْ_=3QI*TNF#)딡 + x׬jW✵޵>!2{U52+`_TqKa"EYGS c.<4Ɉ1CG+7P/cf2_H>'Ҭ96ǡ Rrad0,xu>JB4u %%luNK:Báa}C85R5TmWMpP(?Zn i"x!c޵M[}cLH!i?h`3T)CŮD2O9HJXf*eu,3iٴ 4͞l(4[J[H70<ٳ+iD< :擭IΎ?MKOX +^PGmݶ|ƩX]d2RIF2]|DP}SKx )b :}:gdOBF̂HRsm0 fBI^U7|'Sװ&f"8f'RN&Tu6 Dfx R+!2"ٍ)lkrBX {u`."&RbAb 1|^07[M0 @K,Xb +JLb +:7o%0Bbf*8F-ĸ!fppl[iw)7Ť5ʊ¢ɹE((GteDA A*w Ԝ0UA$}&0pQ +BC!ܬ2!>TPS(4FU&+&d8EHnD SVWv5jfC AU{$0LPkE]6RФ4Bb68ҠA6QHy>0fS~nquPFI Msf|S 2>wNrcFB?R*5BY) zG+DGV,r<]<8aYbyP?nqaN +Z/Ґ[/u"p'Eل]&i籙b"!d,,()e6 =xua7?D<~P%O,f!'+uT /eFy9@S R3yCCNiZ;H]w'»TDO\rN|UQt!ZlPXv3(%PfQE4B,>0B!bA"Hq!X yx19 +>3d  +2 ض!éZ$B5}4}]L+AXɰCewx:D8/JUt?W +MW ygfP3<Oꉉ5d>03<|吸1?w"s?[Dk-Lx_ +OK+x+,ZCelXᔄןօ·)!ps#\I'*ړVn |꺚;r!6{!bd{{Qcp``0| _&f  +B`#qV+XABfd jB턨̄?7&ϔ.y*Y. jjdln$eo;EZ!hҤYP}]!i(]ˏ}V%ZO`J0ziɣ.z0r)'tNvRXS.;JZ3yM+]P-g} +tos/¥Ru(hd{,..r('+]8鬗>UkWƳX.OZh%E'Aq{; +O &ӕ.«p)``hɿϐɮJ^Xv + y4OE +bc tX0Ǩ#p:\f-䋱JnaY}U[uƠxV-t*ͭ4QSRQޖ=z>EV_*gUDЋV}r8KevXr|+Pl-i)ȑwD22.uTG;4G#"t.HIz璵.]ĽHKI](@rD𥋨YmIbG?^c҅o}@q4^!FfՑ.~_`^|9zOR7 ſ,eźpazRUYؒ0Hc XB+; +&⪟tCS8,0ES.ؼ,Wq=\ߑ)\(F%MlO@:lȣ߁>px&$Wtqw aH |1]Lo .r9Ϊ#{tQl@etq1)kn(TE>4a0_XzD#~ L^):Q|sйtQ1("+*HR&MMQ-5F'XKFP6wvO.|`]6H{tjn)bRĕ.<ټtGާ oɈc"8?ղ `i:5JW$q%=)cV + Ȕ~c좓0t} oOʥ;Nw!H^|mk]lȝ*ap?VD' {[u a)}8 @ sy0$yutk Kudztqpk'RBa@'}hGy'D{M:GhlutO`8ĩt.u4tt%{]OZҩG{>} U vk C +L]H&T#hP?##j87]Щ` +t/!->/-o Y3_ǃOTj J +7?qh$,).@= OlϺ紓6Kܦ Iu1"] ?bT }Hq܈I8aƹc]:.J9>.&v`J$s kGbn)]!)[ob{<&3.`5%JMRO-.z.~!8Mu(O'.Jѻ t2-i^S6b.5,2>,&(p9׼&P2%%݄W0z*] ȘnB&h7Adhj\tAKA?嵅K^tt"xw/]_·?hSb{[>'Lj-nC{H_j< A`UZta.p~{"{7^;I$.&`jgg]lK f ~nB>Cbݴ1o._ȴ, +E6 a?{@l5K|7A]v\aw¤{?{] TVQwbor햿`H} DߺS&]$y9So2a@՛)U Cs/mdOvL8^rmXi݄b+ 0- %mGי&M$]hBq7RV*lqsMtQLXi|J .ڡP{H`]6EUʤP! fA4W +Mb\U3 UON%]t:҅+&,4 q.pMA3.#60]d -p }'.2"A)ajX<%Gv%EtkA4Ͽ!oQ V&'a%CO4;K]UWMH( lٷsBc #Ӆ:rg +@k_V.1*#6AgѬ|fbϞ/hThAv_6AAƄ8-*Fca.טKڬt1L-V)ūCN#&b  >\HM +Zt*P3/.=҅ks0H{'']$pOr-V1lBZ4p&> r?%/6 i:3i6!xTPE@ &r8棚Ed~sF3lct1u?.PN\QZJ2c2:1lB`)/ ڒ$lD sNaPp;0sM@8ʒ~DaD qMKM&P˓\`~V0rsJi: ?8J7 lPBt!j RQ̓.X&`(1ZO< },jQE]RWpչB];a4A4M0rUIcGH4h6L<`BW7/0hV/љA#4bV.!X5GR!RۤH +X/"|J'_k$-R'hTM9c$h%wxY~EP s",$H,.R^ +3p>}fE NeBJtϝsBXI|4-7'#.DK{/{ SuY&'3>he]iwUd81fjRaݣ{FRĬm-#(,Hy`KELoa$:˄0ȯvTWe)xY,R;gBY&d_tq8n) dyzߘ BS:g$]@#Yt|&!H9}|%t4ɵܓmDFP4)F\X"d+w.82<SH.xvںo;]Grݼ Cp a̩ڣp%DB~Kg. %U(ќ2GbQr szbҕ&|A٣ Q rV*]X&Rv/_6/f_vIJ.&eOKӬ|Bj]'b"bbBg.WUa8Y'UbC.87MEϛ:%/p_y Ƀ("fm,٤4)|d.U`{_HPDX]HW9Kw$ (aM!]?s@$B@"!lafXA> 3X|n ] {V\Aʬ \-(sebx1Z(c;tu:*(bE.atl^A㲢 ZrQ^0"&ûJ "7 xApbsrMR݆.o VEA535t!SaICgC/qu,1.'1݆G.,]&~y'.jSn໽> e%਱8K|A ]IiKxU4+WH+qq^i_u V袇>k\p%FCE(_,3zc!kįpmF 6V9UB`7/f'J +6 +] WQKVX3@>+ J2'Gs&5tq꒙";hkA)Ѝt;J95A[1,Ak#H9_!ܢuy tAML_RD!2oZv7mkUlh^'"8*D8h(`UNGC +] y?Du~ V!>єhG885nns׏aW袸2v5ϙ\([ ] CLO{$Ar;Հ. ٤B[_R;{§aS.tQ$c-t}aS9rOv*ta 4f1Qnu^=̻ kl*2t*݊< Й `ܠ$ +Vh:.ZoظCApj7Ïx\"-Y'2r6<`*B9_Bd/.#eO*K fO24Zv3A:8弴uF" =.<`].ʁOGH㔸h펡:PG]$3ecߪoֳAF C(Ajt%(?(,j7*ktb?Y]S +yݰ܈E"&(Qy7::1'y.7t?͵}qj:WeUpYԸM>ͦ]?B%oҨp zm+4d /`Fodڊe=xNDMz3M< ~CwbZQ ˵~zdl8# }vtjؖy)ێ.x6\RvGc2*M +"I +B[IW G@pcՖ{Gx?,.QbHZ^"\j{ټ. gJtj:>_Ƽ U8 øߞ1iY}_8Ŏ6,yf}@2rFN\Fb.tDHJČPپRH&o0Qg23 wS|&]r3A;x?Ug hYEpAJC +mnȼ|2i9tAl2}|+cjVcY9v}5\]Amk@|?svtAMr!jݣoAW$# z3(R>ֽߥ +v ;V`wX K4iAF@z2>ߏI] хreI񳜫`tgT3f.^JFgY}' N:G0WLo  V2KJ4X?B/s!O M#EsA a#a &toWUXbJb,.#.1}Y>rI.j 0Xv5/E9v T-.-6-ѶX kV: EaapآCQ0r⟆eY T2Ԃj3 #V"IxhówA*k -&ZЂg}gC`Xt8Q tڷtKv1Yb) E4dܰc .bq%T9#&EQV0, ,KxWC>߆uC_S + }._aνb+W D +o߮`%uK֕#a@U\1aU7V71߂aw[1mۊsV #b+Jʙ0Zq~C=cR?m ++ܚ̲b0b ,Ilzv}^wROVW]F +8U*bUUpU1(US7ì]X(⻞w +1h*ICeGo|Q~T%?7"R$\֗aO հTcXTWvTLa[wT :*H6ll + s512 +-p6Aepr[a4 b!"GPbĞ({(֑)^U1bv9g12.9KbRؒ8*Θy"Lc|I76apvVItLWˀgƾcm,ƥ0gS2(_`@`X3ar}}%2G 'l6T6,FŪ=Q1PL1CQ1{-#6Ѭexղxjw\V {iΗ5䷙@oP( 7OT2ӴpR{ؗYYdc!7G'4#Ą +0mj%T@sJa|BŊf ]qfhr63Jg׶& +,Pq~g}ng@Ј 8|1+DFhPj4B&f? ^4P l} Wb2klVF`+Pp>>Yg*P'T0@TWh(R~ ,T s:La^$ !qm "w$2P]bB= >OڬACSzz<:șUS)V51SLThcEa +B +[1s)Dj)a),R\]tr0hxJaQhF) a'E\֊EF +9D(CJR@ RX,HGav uH@AQD!jE Aqg‡f164 +tCO MD̦;xU2>{bТeКz*'"wVY7xO;rf 2`'OT9bhG'ag,'4'uGb 6sh7 HD1+ZBN\ކTr8q NkMQo|vqoX)mb:&"&M51i5Y&vI9DM VE͎6&j <&&ݶ,6hЄ Vu}Ml= CKMC9HB%,A.Q#PnIC8_VJ,!/-,iX%@ b6 !x4SZؔAGX*IgPc6Jj]Dè %:h=vZǥ9NlMN6T#Itj1Du`Z-ܒ8ԕZW3Gӫq$8 & X$b'N& 2]vn$xe e$\$IDEj3C1ˆf_[@D6"j-"NVG"B!RBM+'8D8! gȶ{d}W-rtW9 +n8lOClzU`3إ׋!X&!p "ei+n]G !ݶ֊BBWՅ=8O0{Zރ|qYz׋܏m1/ A1.3EB`qx;{{ɐy!삍;sg\dgB匋8^ӌX]b\dն.DBqM^!Z^U!ŸPN+F !DB BTD +իgăǍBMĸk%MSHC +Qߌs(k:^ (.>kN}(A>Ӥ>VN!SI֑{ICe^ $=gs||AaOs]2NE] +#2H^EMB3Q8@0&TR_S<4<5C40ÚVIz/=,~H!Ax_߁s3JI}KtcIÐv8\v`Z]nP0R^G2byvW뀿u({guSpW/B_0MLJ˯SH:W^,9~կK9:bC,cd0A{ˁ®u0^hK989,;%cO`.p.>HBȍҤ4qx^7"zpPpn ="U ÂsXi ݳ0 3۹x ⁑g>5PJen*t3 #U<Zϊ,z=h^x9xxxFa<* p +uEê5Z$wu񚄆C:yxhy {y} *ӧ 4! =3^}K-9h\ ՗ LĈXUkC(M>C :y ?gK텪KBؗZC3 d j9BmecJZQv ,υ>5\6Y$tvɸA\|paoނ?!ygrNy 1$0sl) +|+.U-48.L PX ƥgao5]YH +yJ,c~Zc~bAňL% _X`+^3uW@C]aQu/WǠ%fnBl + ?3r0~'j /\*gW~HbHBo7֝3$ > r .7e:B/SWSp#,=koY]#L{g-bpګW0E@\[-/.G~"iϽo? ]Zo~b e@$we|Eȶs (x" cdL`J0'?oYEL~H@vJ~e3"O f0ߔE`6Mt(6ط"-4OgTfrtEhYy"`-E"DA>J3>" `Ane}78a3tCCN3b/*ZUAQ2! !ppA>kWS~͂PDU gyvyJ,"o)w"$g@1 3~0g}2"?3?l>X}3??85 >y{tlf旌=x zC҃=4 ~y0bg :Nd~ 4 ne~o`$5s`˻.w2?vsӗQv[B\/`~t@g(F[9 Ks/W/vr099q`Le 4A8XPLဲphpЙ~Wj sOo8'칁:G Wm~@7h@k{w72t3U[itA3?KnUY"B k~ct6?nBtGǸ8tn~B7Jݞ\5qW$u+WDlկADYj~6>Gop. Jr4N4`= o!43U`왁Vi~+gP?"24P3Ȳ۲7gp\ Pu=K|~Gb ?G<2R8LQ3n#g0,%7Db,Y2 9p3j4ӏsQ; p3ke (Řd,vLga.;3v+g! TBk;.qQWC3~S~44҅ В: ~M30Ojmu50U5jS $hT~ȵͽT46/iS3XZ5Bc5Ԡ_v92`L2 (կytt.#63-_w ,y fs X?̬`,I*'&_ /PifYyg2hXLjDAh2%0cDd 瀵cPqWm scӬw `_ey;@/h1SO` + z\K<҃+$20֯ 2 pYz)e&b^ L8X FQ(~fsx^\|7Pnrp_ dD?,U|@L.8&h&%o.dܱ_=%QhI.= +U=$_#DHVMÝn?G~hKP|>"vx.~,^T{dP(0X\~jهCp5r1XV0!d5,@p~)``T+-tRZIr$  <`[xwqP@N>>J!~+g4 Y.`dC ~6~\؀[$wx8mi-p@67 g}(2$@$x/bÉ +[ ``uY_]`g] [ˬt'n~l7':ŵ1q"h3hu -P,Pz& Y^z,p6_# O~P]Տ +\l,0_GX&5b Zd% ,XC1W\ <+58.бc ܌\,@~)L/`&TcTێX%,+0(SZK;+G3{d?ѓ+`2 C} ,<O@ K%akWoMש/µυ.d.OZ.燇Fʗ)@rhlR9 +Hj8cP(vk e,Q֜Q2*M(0oA&aA!#ːv&+|K@ך{N`lK!N" M*u5,:3.-\@,n_%䢋SxzMC1R'Ƕ;=gt kX i0J@( $G %3Vi2Sx:۶'1xLԔ kMFC@;!3 QQmqறv`6[Gs'_/ЧH +i-YX"-BH2ԗC op}p;٧VZ  WW"3)C yϾ + +fZK@[.x`?%)~@,T'W~ :>u ѹ i> i8V`k"x/R&6B3x&+fI%=-4*M3'u [vAgL ɟp2w17tH};RL_SP(!{|Nt#`Lo@L𗦩vB!6IάXSҗBv$,6sEb1|2n;ҴㆼE;#,R}@[]E| +nGz PEe}$!*LR\;U +^C3&kpTQ6w5R괦DAqm.< ?/}P^{4ݰ@WH ̵PF(|% T3Z6ZlPB4u/U߫stF=8S9$`* ,d O$j/c63."m*^TQH[ߛV? Ҹ M e2A,`Wo!FrxP:}aoC5^HrZUKxBp(IFv ˆE!$\7VnLQ; dI=GBuPG&`rh\"Vp B>DGO"],oTWQ%ì#aڝ ҂:qޏ{GM^I084(ƛ_+ϓ{^耣0:(y<4s{"<4Q`:+͎&A_KPWca0R]ivDS 8^#2 蹨FhpےCI_ /ov7(D,o.K,@Yi#vp!z-4F*;\-MFZ'(tk4R4K! NIctE2n;T6$dMpQ޴8 G wOBK4<4МД̏[Ct|<+<hZPym?r<i?g8e{OnGd̶U6PaH`L既Q3.jFUjWeM|OA=rjƲjq>1*z1U3eaDŽ|v,nKTBN>yw@cA@Y=gW,6 @<h@*X^Ҵ y(6:$ҫ&mprt>H~ɞ{]bl4zNʪ.Fw*A$)A+S0 wG?ԥv8jLN@pM*DŽ8>j|eJR$K mpCh|y;UGb^1YXl(FU>4-H"-8,e4[jsj:هH`luUH\G$G84c6BʤnftٍY̧hu*+1 zW3:W1$81rX8gͿL{*˖DJ_ StoCg~gXMi_1E"Z=ؓݸɩ}5H9cCNg4IiFMOw^+R+~7ݔ杅4fcrwdw3菴n{?UY0鲒UŚZDw1s*)'fedIj&SM$P.JYw׻] 7Lj|kŻ_rFwfmδR^dOe1dg.nv3'E +e628]dT"O!q"ԑ u7 2).gȉM!#Cx2^oZ4OW 6#G"K~̰(T}U0v˭VM"՘4cv.|$wiᄐ;,w`?mjM, +벑u'.*nqSmGAs&K,zMEFfK1g^n|riM}7 +*E%j +VaNg#\(L&+ +ш] ox,T§UeȔUD8 2AʁbhV=-!TXĸZ t (&"^$bTɌI!s`XnxX3N3n*\V.PLC#u¡UmR0R&)y + ŪTBK'̂.,Ո'&aAV0¤4ahʝ@ |Tr/"PTK""sOËR#|Ā +H*jVb j3" a +E(JTD%P`SN|@(`&,JUp0Q a ,h,(&0``5 +A@@ <чHIhHk4r HYGQXb?##f[!ҜI'}Qf M $aad!$="%CEPPB5HT|-m 'y쟇sKHqeTa0˨!b*DHTL@jQ4 MW Du +ɊAGM >3#8S1 i,4U4RB + @ @k&Ő&vRC=^mC Vlp +&VQh&ܞp((PRLU^eIxlC$RFbKM> }{?|.ȔLއa^ha?3Ȭ`ly2P@A}5<ŠTp(V߅),Q`c}1Ԛ?S$<#a$LMM (: +PH +( 8z[2|:`I Փz]HNabRW3PQc᧷vfɿwnlC3<y"'祬T[c*|Vܭ]-ƠSIixFOAu߁Bf=.ҟ"FG0pWE7>stream +&j @b=_%YޯrAh%ɓc}QfKH_#I%A&[j@jufуtP,ECM)y^HYĵ x_9(*R$ lmf +[5ʡ) ^WkȽϚvMf$խ1!],EYOXx`{XحNe #{B ϚIuUEa =7~jZM\. J; {Dܞ#@yKOT`dzޡ#j|ع<5Ǡc~-!'w%@hi6PLiԲy:]B"3.]QC<]Ò?_ ?-GM3 A(,m xئ6 䋶W(a#5HX?9E΋6rj}io\"GH# MT>IiA, 8MĉY]M{ H {_JR'BBvQH;Wݴ#uV#|kf uٹ_ clxXw%݁긄[N;412}o>`]JǛ d!*YR/)TsEaDP߁! +E@}s IuhAdjl! }%_6(*`YH( +ƄD2z.::3s`C +mx[ 56K#i18ˡ-}Nb65kйqx[UEQP41@qm!S(Q&Kh']d2f_x2;(knGYuCENB +J@؁ƕ(K%kFqk0SB*|s8ڋ.J[qC?F)Xp h:5{ߗ}\`n0zNcVG~$x$AyܣEj+ġӟpU x~ΟIzη, ]2bA9T'2r*q0\"&R%3"xd  +)?F 9ez( QPbE72,$C2I15FIYM4{WDJH^*_i.nSe*=vTF@sf^K8H,KENX>S{4|;IۺXsM,0Ǿ$"r'"Mn-l*m?Z~@ŸBu@XQ v1.;*W٣?xK A4JJ2yetKR`:!ܾ@N. TrjdViz@,F8VxhQEYlp*k.TnFt]nn&a!aE-l9P~Nn+cu@i:IwP*@|=bK+>r̷]b_R{*7l:9Iz@jGs =k7 %,Y5\9@pj +vO-ggw &q+DmeIQ  u~cO\C +4[> OZCϒm1JWOc\T2l +>?&i\;A?~*PDʉp.3z .8B(?)G{5&zYڐbN`(CЂT ,H_ϧ &(q" n sҷ3_Ҽ +)/xEU. aqlZr-Hg0VV0U\ q^eE E|[ls%>i 4JNrѪ +0= Tfuhq̊WY9}0B'o `@1I$Y@j\)*b蠄I% ?1x5{_D0{H癁\'/@ρV=i} 2"'og30I 4}ow0qgQ[8TvzV?J~hzVpWoօ Zg]lK`D.68IFT×(ԁ-Xw5GaQכWr ᾏ]RQr,9~ItnoCpcNJu3}fGIMXdnk;eNE_}K>C.,FK؅$3 A#_[$}g 84OW(Jx&{l^}[&ިSk*? +J4hK{7H;g=E:rq +qn+k%?YF^1a;UOK= +e|R*C&\);j_Q>. /]sG܅45}4M;ը(s1u_E6NՑ&i\ ?=ϰq R(  eR |wHQů!׷4.U1w?x[nZuwAͮQg$B;RZ`-rA Y?W _zG[Лf A+= ̛l0a!.◌A͘ bG] 9j ڿDAZܑ#i- +ʘrcLശ̓@<3>4,݂P鐑nKfOÄ?eϋ $P.pFI ({(E1 +G?u?=R8v<@X'!.K$f._ay| R0lqa+; ٺ(ujߎ +b +oC9N@;7}5}+5{س&N\ +yl~ٺa~" }XSԟ,lV3aWK i&uatbU[˂0V >?aV|"+PS~~y +C}XnQ!1axCĚI-A{p.*Lh |2p= Ě5B,cD " 8NKd La0EܰP( _9@ +P;1$aoN ()a|}}zpa5 +Z[E0b{e3 +c @ V\bhc10 s +1|#-rK4˜( \1cup-1fK3VZX c%Ca:T s`XS]ƱE9vlcMcG53? ϱS #*d]r!kR ڱcXd{@62 0F,E)1Yj睬 @Yj);RYRl Ep\0DXԛ,XK˚ᖩ]Iu9.be =PiYhyYf0f2"`dxĿ@c^dXmFY*E™s83]˙Bg:5;sr.1r`= `=>S73'hff]s=h8] m97.\9F&a`y44g]-J.ZȋB(ybfAsUyX~>Y,hRRW(k$D]4N*h<H9[nv=Zb`Ai.M: z$vў$˅],QD40W;bv5C Ckhv!*.eyS4*`..bIsEfZh%PDo"Yge DK$؅gCchP:6b%#Q_GF'ȍ0hNl>BH -ttA\ 0I>/Z+EhcAW)+ڃO hj051"vh--vJIc -FmGhG;RH[]\ȑtI.$KZcb&!]\aHb774iG&-$M!ՏFS-Ir0qn" EUL#q .< .$v퐉Լk4?v5HB{71.>ڤ8vh h*.D27vqbFѢDq#hX͊]PvE{p9B ҐV"`s.6.,e4SY4x^yhZtJ-YMmtdEc1B-E> #4- E8EvƝ haѴ@ 9 vA bK6 )Z}]00Q&E{]ۢE%]4"ׅ٢ϐpL[P_e4˚Ѭ':7dF x&_s(J b:iklؕ6VҜ44ܥL>M;]q`rZޒ~%[Pq4`zZ 5S7RN,ES5j{`ojr%2b-Z5kGkj;*m톼5Ϸjkʹ;ǵ7sŮI  ^s]$]׀` ۇ@lKI|MQ]4/lgݰc8 X]$"d3]s軺\ou!fbyuAo^"jN\]U +6E;T(ՅxݘXzk̎ ]<DvNWp[hKBlp'+qgՒ;΂u}wW0Y1xօVql;=IZ..uR| xx"ptj9ނ޺` ?c#o]w <ޤ$D.N`EgYi[0bh['yr&0*OSN3>y3(#3s~w +!S +蕆b<+ +.#)Eu@G/ +x1b@E%uAg[o^T2:jƭ٫m]Zn :{m]15JoI(W*Ol d~E ~(ȣ ] Z8~#4ЀF|ia$&#6H^# oc_CG86k .28M|~r`3\(Iɣ:Gc']t=<اE5?t0&@z~;wA,-K U^ݡSI +']̕aXFx)A do\k=b_x~_Ͱ.06O"ZL{ +:%Z)X]JE6LӅ,b8>@ᇩ^I~#fe@me[h; +$='Ȕ~sR >Y ~:5.KJeӊ/?)i㊈ ~r: +~2C.6Z"f)b7b5NŁ.f죴~$HP4)__"Sfۿ,yˠBR_݂ex +*/Ztuz4"Ft.uʁ1A]T^. w89Ӆ]j0?"⊵ ZB@j~$EC$CEtqDI +6]hOm3]?ܚJ1!%Xiv) J.z?Etb?r'kVh 8]/M]ϒV~d4Ś'~X$0! NɭRM% F ?E"B bIb[08]lEwЎ"_k#g.ܧ=].BLƯ#NY0~LM(N#nƯ.,a ?O1VCz?:]uaKn5PHt͑mPdwPyX# C.N^M9.қ. 53 ..E_t@tkNJk.-tL`8],_gcgG~2MH~ }_9#$( V%ρ../B7  {Pt(Kۗ."(\1-`3CWbUi(]#8jN~WW(?ƦĄjbZ){ .k[PkJ#*rWN[8 pR~KRbPXʥ U-zMLŗ.ĂEWj}h/-HG _eHBEpga&B3? Q2]Bx.B+M2W_j|Q`Rtk:bgHIʁ@ iPű~he(|thZw ]G%# 磋V"2!EF$awP7lN֏aIàIf#ICczJgHJO$5]@kt!肱)D&(\49 +`?a8>CDt$4BB(_D_tI~Ab]d/tl,mJ[?E @dŀL}kӌ +]Ѕ]?,]ouP5E1< ]&I6IM q^?]_EJt8E !bXP.nit!ѡ1Z- t!x@~f.|)~Z9H,4`%1 룋w!]E`60} x߯хl!:j_~֫ *G08HC?hQ/cqi?F#c"Y)F(?GJ9PNntbG0ia.q]8!^ ˂@? bř.p9_ΊH!gY1~_9qQV?:Y0r3UO g2jw;@7# !utpjMi̱O`nM#sh5'.z7P~pu ?]p}γa]Hߓj(AΊ ]@ K +cb[V<肐tWޟ vbFoӘE8x:qU"%v хo9+K!#36.vEE_B~•M]@ *ept#5`1p7} eQdDdar`A$ OlJUpnG34X.?G}"s:IbAd~0f/F6b3r.܅FѲ7gO[ANntA4OJ\0)H:~ 8A``m^.- +T. 3|pk/q ;\`&dd }uuZGo#Mw^`{ .>[mmrt!Z.D +\"Re]@?{z-;c;\' H0AIة .J߾G?\[WPcP&ĄIwwh6*0i]ta-4CIlHt1 ?mS*t1Hb_8|ԉ:[#`| 3/6VY+UIk=҅U [Y,gt5*F*邶tLoOeg>Rt(- ϭXbhb О%' 6LH˚K %|&Ϥk?'AvAtWr?O)@\.wN*(冓ylgnȚ7K8GU pzP^DÚt1Jzh!,b3"Ǧ IlCS;Ds&]DdL;[^C-$I@s2 eD3%ӄsaEM9&bp&o Zn FڝMf15@a99**|iiuQ!-]D==!IO&>B~ŧ`p9['AfF,F$r 5o&Fg^4]65]4VU֪jhًX!S-DghI zLjUP./Y 57tREU)Ti_Ĉձ;%0]|DC(1]@& ̲0]lWB.bp\V.v}!4M6 }G߮w1Y5T1TR/, WkAIkrrn9`F2M6[t!dya&@\[5g 2;AhIu]qxt1lvGf?E$~H@9X>c/-!4]{Ar4]rt_H4]PT#1Y6 ( 4tq=cڰOo_ +li+RCp dtzyM&L]iᦋ^:OÂb^P.#kQܮ)tpK@*rt救m )g$[RʀMlJɲv׋S]otѮO[gPinUC*0'Q߾ 覕,+.N&4f+ KhS 3Z娅h~EU&Uo_@&X0 mpNDyc^~}S hGM3ŵ7$cj OHaap7^M+(zVwrL3&wt(], MoT \ӅAZ9\;WeBVBJHԝ.>Dvp^.!$( :t#)x&{)ak_HtJ. Nbx{=2Y0V0z@NQ]` tsy]_'rtq ?k}Aa+JE9}`66(o.4Yku)K2 +߾`+APRn04 yHN_+Zժ"-_/¹ U +]/T-qҡLO8C`at預}%Oy$8.OIU4 0"w(wP PrI>̰;6:~ K}gztAX, 8%鄷)5zۢKh0X8 mrGX/ SC㎂:5:]"qewVf.X1!=.R۔/plKXNPšws' |].y SO:*R=]n*rn%^+-KAъx$mSk7%_Ctͯ顾 X W)mNxP#ШE^" 1ݮ +ԈS/4YR}{I,/#M,1|D_ӅP]:5NA.@99rU@H_r؝\ ƱbH.@Y6MP.#n3Uʆ4[BE8O邖aզ|r*=]~ pbAAB +s C• ʧNg I//+mE_(_PtAN`6{Ht |@#Jϔ T-@|uugr &\ mvK;]Nҟu:f@'tS"v8㺟:v8vz< + +N9Ebb/X !Hlw;](_z#)rR͝ +s)0Z.P݊B)𦋛UTe鬺"6]ɬV.rY?`.߿pQLp0( t8}=R&_/ޓr]J|![h@BOR\.{)\/K[\6LߪP!LĴ_/d@PXV80¾~3%tDfء%R9Qj!`_`͌>5'_gKSQ9? {Ӆ꜏88s%5]+!f$tQ,P!|Pb[bg.ZXR3"^3LQb;c W$,%04Du)UܟőLq +#z2=MfO + t#_R8Ai Zt@r0XER>5yG鵭yw~<ϩ&vDrЩ.xZ-e +3o\omva*9Y#;41) +1l28nT'a[x,`*[rE?h7]E/ ˼`m~5httpmxVFVYlէ7]/ئ!+Şa"haJb b%QT+Fd] q-o]/9 ţ*Uv :ZPyE .ٸW!6]gHGXÿb$̦IȒ3&@lpqZao.T /ǍW 0ǮDm1S]݀Am0EQDqR=M ukTْ9/ f6M, NFdNƜ)3Ӵd3yv0Xha:đ50x` k[_NyRC(PB8]X~+'f[-I.X7#02* 9"%{?PDt3܂V ⦋Ps2+t1aASb 1&tʏQg 5UUyy"=WNo|)ao s^/VRR_t1E4S"TIA.sVnX@IsľB~fBero:c򸈟pYGuW+JGx:p\?S?FxTބ6lx/T1ߊkxaZׯ^,*F7s^`$7D `! 2 +3qWt D ;5c4 V$SJE=oooz5 TeZt ~=n/¦& s>$jPLP.PfoaONpam9b=JtVnMbL9]k! A󊛡|}].̵#JmN љPc9]tvY˴}[C>%|nyؗ)5o3t{Y>¥A˜E+(_ah:D9͎ x5EOӜ.\;"}&QNqH t3|_t1=֛J@iVؓӅhKS~Sl]<bv[pXz&OCQ޴stTmM|[>+PB2ݓ +Ŧy+G%h+#+ġI2›.؏R'σ}:gP[YE; ֞E~wpN+5.臼8|ݥ2 UC^ +ʄXAy^>\I%$.lpHZ#'*nڿ#Y98\Рv@ISzj/JXN_PӅJanPg+1]Y<68]0_ЛD⨈<`n(9dŨVuw)!aŔ-qYP/*m +,<^cF*y9[+l +fu%۳?$\U:[x &.x)Y -'+BsL= *?wkٹs}"CjX<.][yP.S\8ЂqǼtdaapծګxtQ|\Q#}/] ǝ؃ƪjĘ..z +9V@L^ _ + -KQL^c'BJ{K"*` \jCIЩ7x祋ipOB㥋0|S˥ @O+'ic?DI~ *c +L j9)V_CZ+]7@U+rb-;_fU+To@GiZ+ VԭZ9j&ooű{0ɋIҳ8cZi~idJ$4W).~NbO۰.|n<7Q <<:~t'IwҝtC-b"K؏(3y98%^˸D*P^# ] +F +8)Ujyy4bx X)/1TFLĎ:f`bh Dt 8 +J3``bC%͊*Xv9y}\7!t "*1Ռj峳x8ҋ'%eD< ƿ_|G +IlN[:8`R&jy iAŐAaB3US,"$IPtK/XVL"];n/Kң6JZ-!JTDCU|%EE˄IZ{AdEDÊ>T&WAV7 u0+DРb+TZL,%h +!ю +F +J,eM*J{-}fa&Nau,a[zO|g9)_eoK +o#DuryT<>~]5-El(=+^WIvIʚݓ>=wr2]aN{l$oow?nX-<*>JjMռŏ?z . +ަcb[iqu5z}4 g^:˦GevHwAKKjN {O e,Kj:J wNĿ.F-o9 i٣dH5IVs9`G{u<;m%HbPzܵU˱( nOl>5N=\=fIZёjTSu_`i})'{e)~0;CfIBT^=J(nvD S-)ݟc#tt,EE稓 ^_HU%%]Yt e"]EhWN'=]YO)(WSنQRS0M_6X`*~cB (uC1MӚVE˧ +vU/{jUzRK18nRR=Ch9JM Cp6NpC0.~]]Q=?{6s=ߧfӌN8p$a surٟw zi8uY{ycu! +i2ty9/>52t 7-Ao$󯓷Av@Rn\ubiɾ 'L;9bw R|:7  +3i7Tux\C3mD٬۶fqƵv]qe'@@̌󧪻uNGPNħÉa,t䮛92MֲԌC(8 47flFG/GVZ-25w^u&<1 =A=e9XP#xy!iIw[7' mv9:&L`W~͝v[n1(uv[Vw z$v5ueEME[GZ-E0/0$;J#/^wqҌ#09 w!r8]wm+Sn6fƉ9.A`fQ3祝e(" s[qnնVh" +t`9n88t9Z6MAOr^qnGk9YxD r8݉ƁIJf}# +VC)74,cպ ͕5Bg:*DZ6aiʦ=mq=$fYi޶?Kg:BUdo{,lE{JnXi;(X.O{$_sg>1DZee,#%$=$b)'洑w:5gj< o{,$1%XytDZ':bk/~-xeoiUReEE:MMyt :/8Pz.1; /tt9 6նsfW䎫?Op&?|7 ִi,vXM[;H6ٰVcƭ D"DqTHRMaQ,QP;ެ3syƩ7'NdAA?M{8ֽv2dj וeO{m4n[qiKqM{m(H{٘Yj}בVEVm9tHGpFg/5\'fԣw]AkJ]-*!؏uDhu0\ lŒ nfSr:D6[v6j#`eԃ Lcn;N<kC ,:Vb -pc_r6%mZAy$`D(i7y/?5KJr60Ƚjy餈 e2ةXW 6 nMWu֑=ǿ^W7y9j\ٌ@(Ou2[2xЬsf"'&nP1mnθل(Pe2vf,k[;7֌nYunR;dnGv0d5mB4Iݶz (?u +qt'4mSlD"pO9Y:tfmK;ns;?_tdM=:(״"0R 2]f[{_h=W]d ֲá=rǡZuĮ8ක?NI ǏMUvZP/>$?~'5K< vazIrZmaY0+ƞnm5(I]Byj-NSÕx.:M}(^80}N|Mm}aj8(Nb+yE2lXm8vDΆCq޴)7 7bB4-#9 Dž/D_k83]חf +.8oyeޗO׳^7ej,}r/:S,倴YglZ-VgA1 9w>nԟw]/7fv6vնo:~c5t:'#l םb"1MHs[iQ5ةbהw;nŭ(%MkNpJrsTDjUU RO$]OCmKjeNrժ,ޏ nryd_Gق^" +V7GsD+UK9|EqAáE7UFZUi^gl Hٸ[z8B gk5Mtm{2a9,c;)9si;^m[ ~9[JpI>`L/H:~A'ɂ]TYH2EȩvTeInsz_ey1d+ NN'=Lt4jSTA͈`J4,Ћ?N%ϔPZ0I3J=wy%5uT'o1ь嫭Ea2 Q[B͞y1K2ղ{ O'C5ace&gj> _"_eq囹NN٨Y6n@,s3ͲWj5ͲV\M t>I֠1ɟCg)Qeǝ;N +v:獛 un6ڬjmyNy'u MM+들y,ZFr@Ԍ{gII:Kׇ:-rYikes$?O6- "~"ROUۜ%j|Nj5?J~]@!V+USnkbאIW*ƪ_Zf,JEaҚ^'BMԚ6VE+f]2[rS]ㆊ)ct)Gj~вEdzx4>mSiB$k mk)|a?-{SH5Kxyea2Ip$uQDlŨ:Of I`4QbSO)c#mv8($m3AP (JCXbmA8Y9)9Fj$uUd)=].1[ZfESfx(Nuf?/6Xb-[96뼛6{ݪii#sq:3t|-2I54pajECb$vCش8A; #Un~yZG][7-d"yv{>ibou4M-UA"}ޮ Vۮ*D~ +POb˟A.4rR,7ulm=d{m׃(5eMbDv]k +vQ;nĢ.Mn%K0?C)R"C$] #o6)x ~RIMM* +J;hEI{AkgV$kQlWUTAP`K ?Ñ; dU,F܀e sHJqw-s3٠U ĻDrDy$ +kvȋ#}w_7w[mp o/~!mc:\I*m3ɛV{[IEqcl9Aw]moa;y|A0tL7޸sÑNÏIh` ~}9%f7\YϤ18J)H=r?cnki切_%vun{[v6z9\6~tq +yFS4lN!/-]EAMYc(BKԚ\ɜ zƏO\+.\'E'<)GZE)x~[yݺeSvp"(BEiIIQ"Ȣc$ seZU|9`YQ/1o/A$i41CvDIʝС+J,PSr..Ǖ .8"X*A_vRculjG],l4q˽4"pݶ}t׵Z.Yf!uF%[tR$d1M`K+meR=pPQ9I;ܗNr:l͝g ~vs֡ %5]OG6hѫL}Ql܀O[j\ IڏU)9:V̚ksQWP,I'l,vU&*X#!,S=fx99,Q$'@ȓ z-| #~4cZQ4'E=xB9&ϚNw `xrYɰ)-I7GU ߢn]Y6L{r8h I_{Y`W5yni om-J n't2;J(ur'5a頝y-djO ֟gwqpU0l4mP,9]jZEPŶ+%}! "'T#~coe[ +)3TVn@մsA9\G=kmC,S 6h8jq8:~?{$(5O:h3{^ ~ǥi3bxu24})][8Ai5U.LN<~x:8(b|9$QO,gЋ=:0Nj)5rAo:fУA=]Jh.~RҗcNz$r|7KP2tj (rmX3ժ(6P{B+ڢi<Spgf{M!Gۍ=[N+?d*,UK"GY v:]wf;@9{]mz!lГ=nݲqrv:t(7{^o{iڢjuPL?Q[ZC0?wK?iRE^ s :$i=M陃 ~^r6黎4E|S~vV{5Q-KZU;J; 2Bxr-),Ek%I=?( vyQE<٧]w. g-v-'?kߎ#wm>z?*$:&r=ަbzeͭI~^WŸMVϤ%o!:IUxbOe8]T=!5Y +ޕGMLMC7=׻բ)7e/Ioj-Y樗"zud(bSSb?q %MMh$'=1C7IRPL5Y7ɷH!i&]x[YK!I3.v0H4ٲ"}I1"kw|s~eK;]8C]*55d oiZ}k^uy~gt}i}wd.$9O9M{62MNu^4N$p;E$dMzݾe{zq{mZwq&mkȌv=d85C&qWV dۻ^߻].]뜗Quyz^9^{˾uyue^ܖ-<׻﮼w^<~{[q=u{]u\u{i~souwmk|w׮6.]߮}}k^sM@oesk|\w6N\;.N5r۽.^߼NLhyy^syywk~msyu[meq~yq;Zw^wwm[iy{{yK|:.}|}t_׽m۽\v{ww2Nx=m㶭;_mu}rmm{{圦u{kiiziq{iyY{ڦi\i{{Z{qs{q\~;k\}_=}}o7=O=Ou.< ^^idfٰa(셝',s?o7KL@,"me𣁹vu&.{\TF0^jZej!P>IOm331;UL2'M'}Ҕdb)J .hDm0uw3;$q̈^ݓff4t%¢Ab<&|DӸ)+#q"8r۷P43mpVnK7͑˒4M%<0qƎ%؏,)[LTʌ<*P =' +74GQWMS@Ӻ'oAѡ8JM4fY^/"42)<*D?O$kcrדGe4*yT  +&&>HU?ۣ*u4VTZ5*Zqgu#ͳ'0n3ۦuTE;ZXR+ 4GU01Ĥ_Րo2H\:ݧ'5R| +'&"ޣu >f'7tñ;Ů#:mWr8`dhp>,&P +u`B XЂp`&cu +E˗$y,6auşGma1zݝ$Ӎu2ueWu],X6C~=b ,`vԦ#8"b`' d̄b?d{tSCRnklhQA1O\/ p1d$=Se`P?:<{瓻3E0\9.8msd#`isa1w Uu{2vTͳd-P8Ţq(zp+Z@z_\UA0\};ydy@`d7h/xP1Bry/NH\2$(bqEDx!?(]m0d7p>馩۶r\u 0Au%K~ŊăHEc,㨏}8)񹟢 +2JNޟM~ i``bi HN׉5 J1 _Dێ?)_w~&mqXP hHY5L籽F'ˑ_Sm;p܍{9( 9tM=d\nhwWIrӶ?&&c9Άlc1 LsN1n7I!(B [)hT1ߤm6(*}HypziY,]zCG|^ŕETƵ!2%eBy*)_J!s=(8"e$=p_ZwY෧Ͼr($Kܿ> Wp +AzAXLU?隇# 즱ZjوٌYf#mY̪id>MPƤT`UEO1Q^GMԍ3< ezW鯓pep 5cuJmIz0!mz "=V`FPibPEà I)vgT(/*NhjY^붞r0fNRqR;y 1CEBb">Y~Aê&ϧi%atܓc p!aXqIq* yZ墨[ZPe_M#]!>#=ݺ>i)}i)7(J):D)$*L!XVO=c` `-a@H4჎p3.*}<۲ yqBI^в8nw^ZO#dV|lJ+( |p<'-=m]؟8yG +)cb$.uj~Ԍ?N4EPe0$7 :4(֡(H"qɟN{Ep)Idv~_DICńFK +~5 ER۾|x$I8,h Co7Ǐzf+P +C "`%zHq +Ա>kyY$=co[3 z9GAP!ɀ?$ !,ST׎B9J\<~%ePl7 F%])=Κc5[u":bJHB"$FF + ,#-Jbߣ4'uϥ6UMMq+5]98[B]?i%~&9sFz)>i2/Ѝ>T, Pzvҡzr.薁J4rG)=Mb[ے(l'][Kr&9]jZUy)'W2͡r Z iA6NGd /ɲ,N"(6e8m8VA7 ;)@R :M^u)VVӛ⋨bF%-&GxmW_P0Ѵ[s;Qz^DUlb&|_.~SA4fLiʠgX|x|Co%Ej3TOZ[=w9=p V%E}s=(ZS[{sSղfPRjQ6 8`F iD& 2B\,` +HnZ?IN˴N&:g +ќD1&^flBkZl%ī'4Rɱe)!I̅+ߕbo!&&"8bJ2(-^#X/OozUt|q9:<1d8ǒ]DdxjTuq!+aMm2ů|]WS&K~$nheO58dhEEIJ^t1/KR,J-)J!ZH\2am͟g5NLLT `!Q!%VcDu-.(y#_m:& f@|`Xu0O  Xx1v:ƸN7\NrEOeDZ6 ~#֊Cab(}3X\ S;.&E"e% +e!3\yD.#zpCE;wS㟀<p"Ɗ$~z&ne$dHAhmǹ^7S#Y^T*R#=ۥȁ !#e)N?7uV}QLnZ]ʹmi6px8!k' e_&б2PX\[Y Lc;IA+ߒb̎vfq:G).N֢rmCۺۂ,z.*+~AYr8HrP[,yT>U=yx]nZ^wYwus8GiB[eϦ5ʖ[:g=Ux-H(䨓denǽWz(WmWM(x@C3+9NX5LV4iٮEg"d\XBu q,\Vf:шD4ehݦ2a$^ء'r"b=P\C`i1$Vb|8Mt\R̾ZFuRro!Tŭ"CJǣjM0ʧh>jhE +-A4̄>`XhЬL((;>IIhT$$39VGUOtnDGeyY9cH(@K%${bMķc2O]GY#uc裡+Ywe8n8:ԣ5-iUIlv2rӴG-RCij{<}#_xܞ~o_VIG2$Imz$LE +[ kњz/V+fqmgK 3댜'E_De"}y릕]u[#$rOSTWOҋKd_Vkr F ?]$SrgIqC&[Dʦga%I 2e`G0QOɘ߃ l)$u\JSW<ƂKeN*F!XMYGS `4$( MmE*KH Q{|N)Kkږ7OIs,+סGOO]U=-{"QFQ˨B;8q'"tŪʆki)vO2?J hC/GލISM"B$IpiZwIJ8IY@Qq2%ÞWӓX-Z~H~YŲ8fr6"h:j]RcXu:zee%sZWݸ2خ{n?K `æiص?tm7jx]ʣ=p:ZP/Q{p٤YܣfwgTUM7!5O򃎣5Mt2z M|dU-kROӚؕ7˷tA0V1Y%Y%8R|"4  ؉rVeH`X?(Ul9Na 礷aD"c=!p!\xxMUt"MjOYOsyш&I뤘Mju ,7 (R#6be݉'B^/&!Nҡx_u"sn@t1?<8_,˞U.k}Ԉ`xu!!}bHm#nܚe.rQ2RfH~PbhU1AO2U5m?YsRn@ vu5; )OLAI 'B0a )~ oQ֤zݩedk CkJY'-ƉIid;7jIJyffCkI-+Z?EorD9.ŗӧ[5˒r'ÔV<>mkZ 9SY44/IFͫzx1 +LRIjWݛ4_K7.p>Nu"'6}' +ap' ep(D4BPP 8v@b+DfOQ`C/6ٳ-jC=C:Y [o6Q4_֥}bbJ,q c &^^@qyIeTZXH]X"FBAX&Pa +H`Є$t [P0$ a2xA hȠ h|ࡇ;mS/4G;,S6X$ď d Fp$E@3 +Vp1A W~P!( I lЀ4E-((=_o=HH +h Dh`+ M1! +WB3A c0$ )( +JP X %LU4gPt4U\ f.d b0&H a4 J` ^`(82:xĴĤ>gwUm:>p, \(8a a4 c %@, `4`XI{7->]{uy1A$`08 +Tx,\ +]Mh*,! +Qh fqc<|CKLL[dӦ~-f`<`5 +Z*L g0Cp* ?t# ,`haFdzy@)b(2xA `'@A e(| 50`$" "8`4d``M> A$ b#< RB@1d _xx \$"CG1h^+܊㐾O@@" gІ)P =,@! +MP T4c{~xmksȎӴR,PJ&@a +LH+T +Zp0a > < +J d@ +@`08tXiiY@\}(;b"%1,p +,AqЄ(0 [PA @'9 WnAeu Z %a ^1a W@&T +Px@&2@&:rĠIOqde"`[B`) e '$ L8p0 \*@0Q%nШ!}]=zXP|i}UqB Hh! Uxް/ +S̀'@AN,6HԠ1 -X iH^Y]||+$!t YH09ȁ c0 Kh*@=( +P p I2NJP)yYNJ"C!t04! @n@Xa +Mt@x1@zp@@!z 'g$w V7` Al.d! iX@'H Y(`440Hc*\LzWjZIl  +(#( JԂ"yt$Mr_9mrKD.֍0L$z`*P +CB2 t@6f``JBF\iyzvM4W3]g oKX@f0PM0 #!%:YX^*& yn=gٙV$$gQ\ @ "x`! V`B X3ja12"c 42+(*Rm(=w()yPh =A'H,&@"D0 H XFG ,h`\L\QהT,0rhQ0` 0@ &EP@DDD?h`!"S"҂X#ӯ0ܦe)"@K0- fB . A:0 @ $aG 2hfDR)]tSΈB1P$VZg6cdynugN-i$9dbߋVt8j +I`L"RgHT)DT+^6U|߹$ׯu ^TzZU75Qɗ]Q9[-ِk˴# tH4!}J55բzGMwd;̲ jʇ'ps3h1c_S M[x,~((i_9uvu!"o1U7r0TDhѢ"Co;+"%lOIrrC%Ń(ٯ'rcXW}1y&2ro* תereaZze z]3,QKj$_ GvU9)}&-R9ޥ(o,5U:gWWӛ$L[iJaď'a|Ġ"FKIȮYQ$): ^u('5øYҤ(~䨒a+'0bPYR`U(#fis.cL \OM+%1B\ؔz[`N<~acjӄ?/7 7*.~H`Ԛ-ētXDɍ(~%UٱV@|QQ>ZLp先J$.hYz\K깂ryP/9G 2|iQ*2f(@=ZLXcUZp~0(??o2xIɱbb4.@Đ1 ~B;em1hI=]<U8Oˎ~gϚv*>@painffKRDq洑[~Ů?{)h$^)R"fdjqO7O]wՔ6W6 +C f\|Ȍ>/{nٳ fr{Qǚa T@A*"ϧeٯ#2dݕH~ZJAc{<)#R튓h$A!Eԟ Dx`J~,v0( :X93e$f9XK1߯>ɮEaʪ]>=AIbi܎tMWI'#}?Ͳ;M.~j zH@#ѭ+Ћ=l_&,$$-ՉgUpdD=n Uߖ)^Xm': ]Ҥ~GM;BYFJJT(25ǯ˰.EM CFLBĪ1(,\ +p#EWh+Mg("6N`7P`9Nb#{C[Zo)Wݱ_I@)!1YXFԈD[@{Ig'=Gbj7#escV1-%uj$zcNWؔƌO쪀v Hq܆XT5 0 IbmϠD1^)#Z(c1';ZDhX%T=`>J] +G֊BåKqSZ>DJCJ1dfZibjSz\5&WUhgsڕc7˛7uU6<)ivWJ2HX&= y]7I}@lz4HR8P\-BN-)l3ZFrP !j)ܴo2ёaVP0BRExiB>z*oʈgb hXf`H)Lﭪq`EtD5VJPL_~лrQ[+I15YL/X%zU q9+E T̊2*^qRLR|"j( +cF5C=h\2-&=m$hR)qQQ*m*G bWc%͔>i>~B`! p@Y؀AbG$/HS%1*ȿ uT+V%T޴,|n8P`<ЬJGXLkڊWgG X>YeѯOrz" ,1R̎}N. ER"ɨJ%zSW7E,jiaAĐ",2afZ%`1B"DbUzJPHx|(B%z rH`IGȐA"FzÊR G ̌˄c%xp?pK #aH>Xb)R1 +_O"n8=RV~1yXH3^).U*];1 ؋"(T)FHUU|#-"/b*m,qsin"  5RͰw@(@/zF)phN&6h~Ba"6̈1,cLxt-eF-\fJP1ǎ-J})/HTSĞ&xE@@0)D~# 52>ZFX2"~@2cHbzͯ(M&>%A)P!SHdIxȍD@2DDP/0$E̘ JT)jӖSrYN>NT@Pi*(Y# 4 m8(nw6šb!c)%Qڲc=`&^jb +&lp9F[dUB<ɯh׆-XHIAEDEJO|u)!$E3&0$dAx`ZB$hF 7X9q2XÞ6RKpR<*TIف!.;^LD@` rb%#bTQ!:J aՠpqB[Nj2D +sԼ1Ar38R|u<+=z+$F8(;1Gd0<~*=KvԦ֥(kR(> +z +2BLhl49^e+VxHQR7/)npZ2F.O GK.<^NV q@KYzVJIWT/+R ɏԯ^N!V P\Lց# ]6 J"Z)T[᳋Je1.ɏB$%joYCxn.=ſ?X%dH!͋2)4ש*jY$yH#%E]D1`)%0'4L`*Z 0G⅊9RD'ϱ{ LW'ϫ:>oc_Pp19' ~ē{..U[@:7ZRC"^Bx`2Qozh A¢Sp:!dh"Ի|r-R 9T$njPoݖg"k>9[7r +=khJ,=jUP)zWG33(EGLI3f~^BIoT7ŕu*|&IQr;ZQv.AOR +tʖA/"WvגgJhHlDCI-Ti0E*$Ev@>(:41?:bKsv^/I9͓˦xv^=qR.E t۟s$a?eUXNZĢ)?ɜ _5&|ݪϊ9IAGZ3Jnܵy3h9=wd&K=Y5!ےےb@91-!%7|jO{z^e=-O.Qս,qУ6K$KbJrDvuJ;BT3O+y57^`at ?4 +f_t۩:)  +,_wrS>As"*p| H.IȐ)bʍTv_|D. ԂuRXP~exI)өwg]InYEaN9:L)CԞx}Oe-Qt[#ՃʫG 6< "w_1Lu,*"SB>EEo䊒]]/$9w$tr3VpIQY@)|Nj4'C`-V+np}ՌfhJ(;b9um(ȇ!šY^H NAwmmJ8Yi,s1fȎw[ݭ[P>~8آʶwemlnrOQ{VFϽuGL*=Wr}¿]z^M$}ZS:FΦt+銑Or8r܈?^*' Gu}q}s4EOSК%ɟnMva>[ݲk-VOTmd:1PH1uЪWy8dZ'4}rMT2nlQ @RDe9_+ #'MT8yZexSL~J^+$'jWyCTDdV̤>1eG^eKJL2kTH-LcwʝKA]mT.7A8exT|˼{%{bmD÷l;$'Y% XA0,p ]h)YvIl.,~V&E-gC 3 A vCv @ T +#>.>R&/HKJmG++ly<$?t*T.&,BXzቩ=/_ݻu="4ӣMs/KuR~BUh`RÉ #z@ Dx( _T^jbiY}_+VKK-HTR"&`(&~,Qۏ;jlYsIdx,A%0X@P@dp4wQdj1ܖ,ږ=SWf0h"O/%K'A$Y$<&(]+|uwS`:$kh,x=<+DG^c72^h@jI _9 [x + ӫxaE$)B +H@ > 3>@5c Z%,7On˷R^b +`Gj p;_5H)gc\y-v)W(UL֎%^L@sD ZޜŪw]qy~@ Ȁ2?&=f|hQ0ڃޑ'#N.{Ӌd6(B +壉! +Oh* 11#dNx$bpĊVhj11Qڥ| ,%<$lFz?hPA8@%JhG\D 3HbEń2ȋA'2R)؄YV +^t $ F#K&8Вď'aI&++=+8$b1M^2zIbH@C( +p|h4,"4#*B $ M,?^fo"7Z5,\v)@"G^$Pa:xB@Tx@H%b70az5=fEZP9<2:2X}?  Ȁ*A"h&>+!Xu+9J?c=#~: l$G$ T0?ߠRQ߉~fq +jZd1}i1X&6na \pHDj{uՙ+툲Z{e"TCP 0 h(я+|\ꛯh\iye?R ϓd{Oɥ"$h < J8@ȰI#XJTP? in^unG8,.A8Nǧ1=ryڬ#5PRj@r# +/3 XdnM2HҢl]ox$ڒ$13ӭvNٶ{Z?mr ͔w<յMC|ӾX~f9E*}޵b +kDfZh]QP9YʨpHˤYԾ =싪ݯqǎjuZnC0J9tџ\d7݃N1ɔ;Mi22LȸGtP>9dz:'(&t +um;cG7(4ry4W4&}@1K+z2+)E,vYw]@Lnh'`rw=}ϾZr2~uGtMgϩzPƔVn_m w^̺áؘZGmxxu/2 ).tNLILό#;Zƍu|G-K:ۧu%Xɓg'icCC)Nlrѣ%vhhNI:OʮԾ~bqe'3 hB` ǡj[V*6w~bTM&!v騟j,4i)2%M\uC4+zYðhm@6ѢH%MtY2U_q%M]ϭxVnU4.J[R('ӷ:ۺ~ gCF tC+߆)Ҁ†O͟'jY ^wWYSyvwc* n8 +Șu^i8, ]eƑL: /sM]wy[͸Y${I SjwMZ,Սq> CG*dxD>n}(:fKO> HXK\(h~]h +˨+ o\ZPK6SPl~c} G:P,r]"f'bg|~X h9DAm[vE&d.G\g]7\uı/YcVu"ܮyD]n#yΒ,i8Lmdz6S8PݗwX),Jer=uybɂwn4Xn yV},D3#Tˋ(uX0ڊZ'jq*8LwjZKcGOUվJ),˳Yک1GZ9^2|8A@NՕ~W[.877Ҍv_byf[m9ڦv62tu[W?U? a$~"=8Ң "^Ɓ 9խ+;}y~\׳xʚ)~#d8Iv\4cuv(N4Ʈ,JO9 cϫ'W yZJʅWMs㨛=nxiMz娫Xbn!<{=q飻 k+Lݧ뾪#Y/-{T 8xbdӽhj)4򫛟+-;̬JpV_v]_UEِiVr8뺠X-_tilpxQhikQ<XGS\ץ/J\wi&껲/4اꎦ9Y~XVt5u +{vՕ%M~bXǠO85l/_մ_%}yfN1AEKƪ=oNcdc ݙ #zDwuDxv?C#Xp^<{ q h#)SH-V%7s۹`vAj~e?pEmERJ:P`>T`,T!Ї][^81"Њ'-}5eyiuTnJ)RT%ᆍg$-`B3*L)N@G.]UC0m,G A .7II%EFe2oH 3B7?۳+X-zx$t('+n%IR4Gp$>H} /(,?'ѱ([B"XZ8U/]Iht=0E$q9&iIHAQʨLXER:4O봉"A3L􈁃%5ZLV-loW i )(n~"L,p~*U51CE ɯ^GMݴY ?kʺim.$:k^{3- ldOJ#mم 7PA>4O>= s J0"#Uԇ[S=fXr9EI++[hk]p" خEɈ +nCym30IFkC%6rrBP! @D6EKx2DV-ߣ(>pItce$%n;N:?Z !ۮ~̼ !,^X"zr ~ %dI`x&$5^ZT=CK8 + DrqB#䯐W.őgEbԞa[eu+=-[ BA|~=Ӕ3`D|7Q9ahe~r8"x>(6.Izm=2ib*xz^O#d%&C(MlEqk_Ew2|9Mղ. 2v((QW G/E˱~om5Զ!Ŵ)GLI~.g/W]d nV-b =ǣxeWp:eϣZ_76K|ES"M6VDqAnnznb7}o1UKx>" ;]Q)b"&eG c?Ir@EC`N+.IW0WiyW8d<"?j@BFq2./D^.'*=-볬e'getoݸTVq410^()ר>s-,SlYPVR^iRoYeGz ynr Oۊ8OYU] A6" :@Z}c~jݐ٣$Gu2e`)E~X7Ρأgg/HG俪{j. VhA=M]gr\?ː=_v~A r]4mykaZ4Az! ^xU-p0 Le@H=vPC&%ESÊ0$Cxa#fL&(>~6e J!Ƞ0HHhfHnjP`6JX0?EO΁0$$2($bȈVF7HX-$CI>!Cs7\P@)۶~(Ks庹4%IA*(1Sf)`T,%;PQ +B`~gA^`)"2k+ϰMt.ZVxW6^@Sj\ B%) ykkz,P5Ͳ I:<( #ED˞9 @dGt;$?Dkc^.^]kC?Y[nX@r_Az̬0#.`^NjUXu=.[eeUGH` #hD^8!=p'ɑ^oRh&GQPq;!~_I.-֋O> fȴB*/DBnhjzAQƌ2fTNo rzr4*v]܊=n)faL.C.=Iڳ +_:~c;B]L-BN:bN~P?TJ==eQ$sG)siyE:)ʡWB i5FYAp cM |*"@cG +-%6PFT9]&1"0&Ci\f}+RM! +> S-%u#Ȇ;qbph1 mf B-TR+!,|64 "J4]DO3gN-`إf +~U>,~`ǃ *tuME +t"xd?E봗uICH4FX;Pb+R$/j> A@D觺v~.kEɈeWЀ*dxVUELk-݆g]G ISX*"P_~IaxyiJj(A-.mzq4)~Y2+zȈ?p +y^VEUbrˆzaB2Cۆ!/~+>%E=ِ $i]Gn96g'spZW]5]PC(hfpȄPR"pP9XL=gQUգ%n6붑VŃ`\V>=L̴D`hEihIqqvp$2#@ ".1R"v4FWU}U};odn?rgr::Nvn8hGCI[S0vaE +h@aGo*Yj0)'܆iXG;zݕ=ar|QzDQ/r\鸛q.IQFk,1* Yv,j,eЈk&%3(=asMpZ\LnY"-иrButTG11dPX ~X\F} vm#`9r$&4A$Iwy/U:vfv-:&( 2*Ō;r>hfX&RI ^oAb^)u/eΕ*J"!~nh! ʍ,%a~YF1M_7BDC1&F~Xt7IM{N>i9C)-XkQK4cih"b9aK[Kz Y>Iooh1) M[t NCr:u9e"/ja}$c=UA 6qVVDܐQKИf$")|IA@C 5TY؃,{PeOL-u2+W0<{݌jȾc 3ZHqSrC4SR&eGp]=* +\lygUK.iTưHbI I+C왛 vNI4q,$U=chsa7 םj:$$B /GZh` OI &^0|D( ʎ,J܈4!…ӓŊI0HP+Վ@,g>וYD+ѧUAg闤5Y6uA6"o!H1Bb ZĮ)YNs^29vI +E,+G^]eȧkǍ ٴG(9`JRȤA +cdbyp!KV?p'(PgIpl}-DxqarQ?DYN….%]os^y5+]W: 0VisS4!CAX@9"Ɗ +(jIڠfG_]y,Amb?My.8# Pc $Ij)"jb %2GP8hBZ<ȃ\-yмh…R!^yMrUz'v! DȀd|,mR\;ᄍl@)M@=xiiQ47d@fp ҍ 4cNEC1T+&8P˖(l|=8>UM/[ח>Y1մ?XYB#tb:3Ϫj?+qҪG Qlw]$]>TEbRB[<0L$ z&b'ו~E0ױSh41׉i4lQ4Q<} aT)OHnS\F#!tǩѲG yižjpN W_ `W]H+$3Hb*ZbR L`LD"6ѯ](@+'zƝGn6'Rm3qN|ۖl.Ӛ<]/Th-'oX=kGvy(l V +fcF~8G+&WvA1D4bVEO]LN<k%Woʮ]y,F QUFQy$&F I[E _|/gfY^-V*dBt.C<;j"AlX;q>qyF)^R۽Yz]#7zZ_xDTDhP PӧdB0W¦G4dpB;;>-8utU9o,3̴7KΣAB$'O 楇+T0x6O٤Yѡ~88]?U\i;/XZ8Ve*ZWT: !H0\`y9ɷ>y?PLwSea _0a)Q" Z<!vPxHʂ]]W ,Aڛ>^M$ꁡ61b}?bP11zx{4GhcОEZ‡"Ё4C0'xU ( 乇qfLI #$6QoKgR\VԪ("?@FQ#DX ViH&40]/1։N}aq$1ZP1as"4R…j2Ԫ!75.N}ޥiud'ICmK3C}rN!|<Ѫ +WLb[к5ܗ&U +5p黬XQo:2|Ft7Nsu +ڴ21!c!3"ӢF +22V$nF*hh̸a2 +N+ꛏ뜗;*dZ&efRȰd *e29dL43Ni*V|5X-`fF@*Imʏ^m' +jcrё&p'EPDfL5am\.k1ɎpGnZeEfX:%/\ K`CeZO! +xGD#lxJS۪(.WˮqPݲ`seSNt/A帹,c9Z_uK/G_r}v{Ĥ y4YHZZSlc{*nO/,XcM:~5v)%G7'z>Zfywurl=MtĞ<% /Hr6'=Wq;b˸ EAiz8* Ƴ֓8>渇idF"!5*N#6ŭ 2A}fNG&P8VjzA#7ÜѪ\wJEQ`r9_IמǗ]UbYNA?=[w]bWvs;YiK޸pPS%[R9ԔD;VDi㓛V_>I Dծ/J%>3BIyn+m#b1ZSzF/ŏYV)Jђ!_'E~VuݲS(,fOɋy׍zU%{PXrm_:$ƣńĿ2I*ٍ?s%>DZweHG7]$kEp)PZ#_][u\]e8R'N0y}gORdn7M g],c%=G6ܲ"Xj*??Z\eGOˮdcrrU&ٛuRgH'!u+(7nt$'-׭cu!Ql].ɑ⧋eإ\Sw譝 4/VH BҺx HFh8X梩,Gh{ݫey$jez79az];+a8= 7f:Dru vwL)yRd@ޡv8pa=c45r%6 e=f"z(L V5:9w'5IzjQ)Xt)?j[#+#+(~cP_{Ch2/RRm?eȏU]r,:Qj\e)}1'MYfnl~ajՔW1-vLE哧$>.zۙ}5}s cbӽ]uQPjTԦO;⎋?KS˚2,{NeT- +vs}!f76#B%D &ge/`'BKTjNS<`P~]b Mkɒ +YYylQ?յPn-!<a>zM+vW|}}ݖHEM.9Oݬ叚y (\-s;:z[L8͠B,7mtF,d3t܎M25چv:hց-:V>(ÅB`\a<69Ř@rň+yGzк? #zپd;pt,c G* vE/=z7&"9ϲ&]<9z$daĔDYZg#{z[J#22f +jqne~ԲILi (w] vt&~e@9 U(59)8B&)&V@>Y>ITOO\r1A$=bUi=Nþ{2GwmI>WZZLw۠seԔ? \ǣiE[EK* +o$K%'q\-ϲ{ys`drgv@n*̖YwzWpB--EqSU/Oa7.1J _oliEusOOS&AW p4yIz g1GZXZFSs7G(ړ#)5Y/bUN=Bk^UiR(%N 6_?jǓ<ii>-O\V{EWWMؗ +vE)JѾ$oF C~ղ;Du"9K +DMk  PvÄ +/Z5ʳ@q@6oa%JMKz<[~޴"mt@(r1 5yrݶVXlߖ EIzW|qE6JFPsXDZ, -S.%IQH ]Eo ,)KxvZʠG\ٓ55Z~q&Pz4Z6DGjj[R*ڟeh]oQ|9n7ː]?=ySU/urDp[X&Y((:`*bђ)5t d)y%k̞Y0{RQҺ!{~Vte.'̪$cpۣ:)'~Ҥȣn8&I+sXuעԣ<Ο'{{Yy#yIV1Q( Pt>bOINק' KUjݶP/K\e?>tT. +rEQ'(UNF-  +7iPz߷ju** Ds_mc {c_ۓh3ޖ!x-bzjSx endstream endobj 14 0 obj <>stream +Nji==8ܯ/tl1<^+v=%j ~u֋-0q{Urq~-߇gG,; 7ZKM|8~xi\:4I;(_X̎pO!SͰ(=ûtAèƍ]IC3ݟד,Ur] E옥g@+fG)ijѽKt]wQz#t"Iش$x)„!bNvhQh4IyE%*:nqeߎGK-h(dY5MsɫmM91z],ݷniԌKvO y=XvǹdPױ\f=On:$s1LOj^vEu1$P J5ǭqhE4ygg3̨7dĦuY^W-7S+fS-j#v?ĢZcI/ŶخU7˙))EY/{rϰԢ'XJE7`ϪRSpG/Q><}!9%otJ>sJj-;>,=mMr$ןv} Ty֣(Mwq^ڵOO$\uUY@AA-bO^306밈^>BIHyJv;u|uIF/L@j%r"5rݶ>]S]lL&(R2>P]f7S{$l4&Sz1v S,Id/I4Mna cأmdyǕtDeKeliֱ/ժ/J$Y>~/sXK -`Z<1[K&G~,qik.`dXs?VjRqIʇ_쬷=jo4NH~hAb٘Djه)$.:G8SV\gLlKl)=ϻŐ6~L"9I _LRy0qͤJ .L)tzY9PĞ&M:0#~^z%U, +/b(0%zI~ԥ1~OqH~`s$٠&jד:n1̄ޣrWm z5gI1"[3L)Dzݐ8!Q^͚]|nq|! +˪hp8V([ҋX ?*H={sȳ"Bp  +c\fN &Qt-0TR#rӤVkDz RbQ#>pih8?MS=p[Z9LbVr*My>{Un+!VY>)4G5w}sc%x-HEy\;|Le iX=߇Uσ$!;qBD+ esr=.lfnn퓦:MW^xߍh#z@@=;tH^DOtF$ljS$DDUˆ KIb#6P"_A%Fĕ]ܮ`-Ev M,rm},kvMF,eEJw̑2R{Xy i>#mOs!>dL`Tt +c1-`4ǵGJFE䫀MDϫ=W =QE-ɮn(W fmkif JMˆsmuMێ?/C'r8rۊXDzN4fEs'[wDaYU2S⢘weۮxt|R#"}Rs99ڴViיz9&)R(1A-Ekch z"~QU6HlZ/P:Fg~^Wn?Ԧ-~"A)O:Z&ibɼ^t֟QMG>oW[ EkyrQZڟ~]錝NliT)OzڣIIWޖ2ۚ:7G^V_ZZ/ԊGp(-{s9ZLL@ #fX{TjXXD^,' !7\rÚjzؓF Lūe|xf;N^7FXQgeF&=wmGD췈EI>QT6þ$M 2((âwI$-#ЍۊuF +Ɉ=S/V# dRdR0"ӣMu{ +if$r+ ٬Sn6E @ғ_L=NBb,owv^ +nwn6ABRh~ObϓxI1 H*z|^!vP{f 8#'?bEjaNB R #%2&P U XFEsZ*(#R^/ӋH1R,%wsLb擢,m)C$g={X!Eed6c贊'r*0CL,ƢJ|x-ۯ퉇_=W@#`x)pk;탖$a0@ qIfKJgI!hXj`T^e&dJn[5eR(y_Db'j1b kQXE˔%:ŪF_z2*  : yNx ղU7Cr'#.GaV +AIIu̎MݽMq. +ҧ}1;}T:ɬR1k@Hje֩n-ζ2teAhNG2N#I,Ԯ*} +`^|{%WjWh7$IE +$V"ŀ즌B)V)T^v!EKU|>̞uS/~2xqa90^H#X=6=mJO yzԔrb@Tb+8r*8ܗ + @6l  +4>&͐ H@(p1eIaiL/V&L&!-~.?HP2V#&.ӻ"GShicz>0M 15j_,( [w]R +6 +Ӳ,|Y`P&26-ECzHD hV`cE$.Q2beLz{rF`!sR70uE=C̊t#:UE(9Ө>-=a8h@G6zX|BU b2dW`^L%_Jzֳ=t㇉m ;bT'=xQ/ċ%|ᒲuQJOŋUU)K$UR#>J{F%;I22ÅE ^|(1%h@ +-L5]ah03 wB<.*et ѥ42@ rG*W}=g)n@0,azZg4t\;sN3:2T$,R/S,VAF +*bL#lx!V;1f,G ɋM*~FL3Jcv/CI E*ѸH;\b*d0?atW4))B ?2kE-ĿYF/Z&\~ծ˃gbD%pvy C0bX@-^~C +?6Lg מnY&ԇpj~E|v d^^HAC21BX1Z,"*V^R"$%2!z(Cy*xO{BrY* R^8\'|&+jveR.!DEl}n]kf\+MӸF9VDlq^W dxn@VIA8蘴+կ +h2Ħ[@!kU.;#|1X$=1+6^*=g/}stB5$br15R  J)~u@/%9\O^J͹N>= +(0]&_L+^^tܗ + +X!;(%Y#l(bHe]ZZK>m\BgJݞ)yvVz;q> i1#E1("Yz?o!* bP|XKدg]Lp xy!ydH<.TtL|$!7-I#E ]Fհ o +茔+$,=Dn[vDYkٓ_(^~};FV;BV2!e/|f7P^vväF0J^.BX*\яa#X y7-vĮ5mqZU|9Ҡg 峋P3}sմ䄎Mh/\fvqvIj:IhD.T~EjIjQ6^)T ]@.!dlA +Hpxrr"*fN{NoIR"αa>3 Ħr, r*O jW̮3KoxN݃^GKS,| #U>{^pOKQcR)R|Z<_v[gҊG_|6\'*iiUeBCһy[ԑ @ Q.s>@hc[R[]}**܈x K(ߴM|Xe1ȓ6̡yԂ~E1@~Վ}U:?4m_]{u]0.ڴ⠸M:qvDL3I86e.6I& pOR4IO0I +7k@(0I& xMR0IL0I3c(8It& pLR0IO0I3c(8It& pLR0IO0I3c(8It& pLR0IO0I3c(8It& pLR0IO0I3c(8It& pLR0IO0I3c(8It& pLR0IO0I3c(8It& pLR0IO0I3c(8It& pLR0IO0I3c(8It& pLR0IO0I3clph' ɰ۬x9Ib [i } EOB'́=t)uf X+}t\ ]]e1B DwN(Mrؿmvƈc\e{ܷG6`owȣn]KKH`VAA>Umow'<*fg ~;FR1Al e":Ї%#Eʚ΢9jd^!i\exeSz0'0)-|iQ:8\ehz|E":KWc@oزJJOXG /)eC}Nl^µ|İ냀M`@~T]_ |9NT*.fUuڨNOg3#AͶA](Apa[vm&"BҝRG wDdV34DhЋ-$U؁ +*8?ۡ}K_RlCrdbF iN{[+(5 Iuk NFtDLqm-č7`\L1!=p}H|GO:Gb;oa<@NA-i.c ?BG](-uWāNIآ{Q*_`b%\s^ e@|6p}bهc~,c.E<10!餋A ݟu~;45! Q6* +d=T{j ) К6 %Q(iYew@Et|⑐l7gbvx7IR84\ˣ,l} +f#ݴ^_6.*vmL3<A"⧖E&D-`(Nb;[7<#Nc1ZO8;֜R0䎾.AvX"5=vJ8a2!FA1~D*otYB"'mf OM( ok etݝr5!P.14 +Q"K‰-<۫i6$&faC'F(Y68%~@u0%4Z8$+;Wd閻&,{)kH[ƌj" +}اD.-L]5H4Ə0JpJL .){p:'+L8EXtɺ,cÄAPa@ c a)}͟0 =B]Gx TV1T'`tk;r5ܺaϲek`ωa*hcv#:(ʇB!sU*eTQ(#)8_1E[>iŪ*и2aX_ cu[c&备ZrCEb+ ug +E/ YCOWp + չI2h"X÷m*nqп1lǓmݮlKҜj؀z ifP$>B,@ #:NdBkl >LU"J&?npb`p#;Ơ%HOcҮu@Qcr^FHC[^TACuLn-p)t GqVCk2uF&L!  +ۻC5~^F3fHЬN_~ȴEM'>u.KS=bt #nW @9m]pSB7n0S'%"= xE7 5wl rGFA}Ϡ0̭Ke /בQ8E {[TԂ"͆ډWkK +A~zB?ׄ3$Y7T,2Ow; +pG>6]b]tمj[`7Hy'tlv0!Md'q )x-CWl[HhCQsGX_Hh0$li +Im_FǪbm 1;,\dU mUfXAqW!31ҢpRD"q j=6s4@^z= 68;]W. +g2|^Jv +FR5-H_zG`ܼո;-`&QO㋕ަa/o&8NBpG~{yʃQV<& V+ +p?DVM7lڄ>YZD$"d^ :&I4oMӮ;9iW (yZ*U/9ƿ48"C*t⦉\trxp!ր9uӊ)i A2,`*,zK^w(0>[o(sMݡ(t%MVO!h'`">Cu84z [T.P^lvo" = 12ڟ*7D“ ^ݹ Pn29mjɩ}ƙxj}?\l+qF~nw<`ќ0!̭\ { 1aeǂӵr=})xdzHP<?G2F>.CguR!98;l-%"Te0E]esrcd{-KoD!F:˼]0/hu}iuN +~c=:1FdY$9C{KlJxoz[/c.:qQM5L%pa A.i栌aYeCXpPWwrtqq8-V5Sο8if%f<#EYVPJU7KʌڏD3K Dw'lw+vV>}x'a\9ș8g}cxDG]@HCׁ!Rk#BΗj80n' ;,1%˿ v&Ztn44fI/#c[!Ѻ-# +.2eIhrPD/d\2[ 9GL n wfw]v&߬`\ i 27QRYPHQm%йb6q8E2 |WoS~ƻC ; -`rHJݣb3O0rS zR;)^.tE*UjuĬ;3*8d v\؁?nd5<T; +UF{6X?ޘ(<"HHk Ƞ$\lwv#3cqgS1>9*\b'R2 Ƅ٭ +g>`a}2ؠ-7y@zV#ւ2 O+Z{$ ,8 EYAL6?:c<xGJKzHZ DZஜ&!gVǓ:,ǿ^+:q6%B) +AjEz7N8R~l$W_9a k?xeq(,ϣKZz?%tc""22Ӕ &<MFM14'=&U^c^z,d՗~Lj>ި゚ Վ?A?!rw|L kEL5 =y;pa+;5gPhuUt\2b&"똀F +)Q٪YM"*a?޶ᖼl0(mh15%Yepr*u OQۜz/c :s{ 1UlɐUTm 8V?_OviB_UVWr} OV692qC 6W|yW!a \ ɖ$%W8 aæ +3mڡv䠕;o {%@t//oR\b!5IJi,5wB!D]zFLvχB.󩿃X"EV =7CMfV `dys#(sxT3^Tk3ë'Q$؇D3XbFGZ=ݤ㢙Ӑ'86i|Fa +~H Ԙi ʚd|TV6>_@ +7{lKe{n@M ,yw_!O%d,UKK;Ӟt +kؕ^4hU՝ +P+*Ӝ .#J9~\-9mFQ˾;ǘUnȷR,N Pa +hdhEES۬6cos.ܨPyPlMe{B0P.d\򌞃O1Dl.M'K*I/bTXux_Bﰶ&kW!kc4ጔhhRYV +jċmfj]!́_` jI&}/g`<˴pj%&K$eH0Ol/WɲE-旱 #ZkEP6U۱}Խqɧ}Te7.6/خ^?&&q7"%bP,͸;nk ֎zzsrLer."NͱCee& s>!re3lc05Y.H׃- 41ۛz7 T dp1QKhsǸp1lu) R\Cm=e.BU;e!y=étIP +egm/y}<ސ,}f6%LEg/4{@Gdcqq[}HEiB;9Zŭ}YLijiy>Ѫ@Tgb, C&z{794JΪYO\\`½BR% K2I)m91,F<.2@@iM43 +>qV{] O:U'@>+)Mu('< H ;pމ)5J )w$(fNZ0S^x*Kp=hI{, s&8{o=6w~4243+zgNqx3vLI]==k:3)x&Mli>oq|/3*bxE[EBF4_; ф9CU>q+w.03Lվ +P!`糏~40Ǿ bEq.FKUmsviGt`$Tr ErP`˔Pm~"sOj'0t0 O6v̀`rEG'p}-OW%8 v[B4`428ee0587a8-8429-4bdb-860d-57a7b6d5b7caf6ed8fe7-0bee-421a-8846-8494a9dbd0d04ml10SVGFilter / : /XMLNode : (fxmlnode-nodenamvalu1t/ArrayeTurbulence;childrenresult(turb2attribute; ,stitchTilesnoSnumOctavbaseFrequency0.0,feCompositin(SourceGraphiininopeidAI__1idobjectw100%hxxyy/Def ;fractalNois44GaussianBlur12bstdDevifeOffseodddSpecularLightingPointLz(-z-5xy1ysConstant(Expone(1specOuyll-color:whsurfacelitarithmetkkk340411MergNodBevelShadow44-2yMorphologydilaradiu1.bbd-d252DisplacementMapxChannelSelecRy(Ays333bMatri434m0 0 1animtotofromadditiv(red5accumunonNbeg0restaralwayfillfreezecalcM(linea545cc8ccc8ccccccc1cccbCoolB14-5nD_66erErod664_(771R1 1;20 15;200 200; 15 20;1 1 removrepeatD(indefinsplidc50 5PixelPlay;20 20;Diffuse5yellow;green;blue;indigo;violet;red;oranDiazimu8elev6d1l5ularre0011102n2nred/$##$C K㴔&@P 10 01`2#fI=4_ +}V-. l%sa:`x 9,\Tj +Z6Mb]VdBs"H=t#R~&h#@tb%}<!T(4 +Rz') Lhʼ_b0Y- H)EiXszsoר~$ o:k6 (o)]J>SOaR:LI+cuǰ_n*"M/v7d6#/.KW,e5 UP2dڛ/"XY*e8GSm@Uܣ܄Elٽ n!K?vc+F޴߿, ǁ9(IEX?]K;\j;0TcvYHAeR8mrp7YhT"xoU wbNAՊ/3nAD`Lyc\Srn""#ن.&̲q0M6WI'ᙑHoGv3k\ibX"v^3@fkc!2ְ2%@nLīc&HѤRLTߪ|8J-E4-9v&PU0b7Y3\19 +(#Anjh![B+rё Õ)Q!Rt9|E(lȣEg ;ACPڊX(3`K&zaARČ ׄN'imE2jvcl*b] ^IO4Mf M#n#^;[7+F%rd4ܱ M@+F/n󰒨_MAR< + SInB6|e厕t;С D DAR14" +B>d^l;lH@HX3@DLcqd )ÛWmԤhqdcu^rL6s5|@2[@9 "uL|وՅI1tFCaPXYs/?I"ir2)!Ü ,w nF(g`E? } +Q>YT3Y6㠴:<'ym@|vx:L9o qowsC@h j3H\T3r88!M4J6>5#%yNXvC8`›;buDz>r9v:,}>@q،0y9-IDMZܖ@dSmJb_˕4x@?KENErQl-?vz` =KJq?##9 8•I<9$6=«ϳģ\*Y^Rv] m$AT?&@Bp B T ,EP4\cP4\ 4<  +`X@A!3TW5TޡЀ  +(H,P<` +  P 2PXh0* XUTݨ q01*G yɼ},W`ekե޻%r)R)1ɫxWzG.Fuc y܇|^vߏa .A 4 +(xBG@@`T`@k2qJ8 , +/Ӗ}> יH[ ,q+im[뭦|AWH,`X kb»#``(!:q!+iB &$. %!>BTQ!@4]DPwR"c<2JT͢dэv#A(>G57t Θ7vS]axX͇pV[JE[u\YyKՁ@ L8gF}皗iʊU1!>;Ӧ2֡Y5&]ڞ^T@IYˢ(Fa6 +QR^{Ed^Q|9Q,bMb`.IN@ t(F"[FI(HDGq@VJa[==(Fq(nirKAnq: 0.lM?[<ԒbgH` W5gfE$UJ+֙}$8tWUĢ/p.;X^LTYVM1 T.-ݦdlY e>UוH7hKpRt'sM)u[Z3=m:ZF5aqۤQR5wɶ1:\haQLu;#qqQ\܍Cnx0ef~08ʔ{3ܼ;M]ݭX[EB&D4CCdDBB=D6skjkk{jHg34ۡ3HW"Va*jb u9<ۺE<%fγ;ښ!b}O>k'n''vc5V&;OɳHU rHݏ݋oBu)nϛʦxv!11r+3ӊ5ʹrwꋼuWjV/EwZ5b{qv{c@@ @b&` H@P*D -̻ٔeq‹ȶ)OUTUQ2)1i̥]Nw==mMg?fj{k]YYYZYYZZZwߙtisY3ݖ22"rmޒ%Efnbvv&Svff&Rff&efLYz8 l cTTB 6xV_4Ķ:_лcdd<2#c*2.20pvNckbc. ؈H8xelͮl;ܽ,΀iSԺ.umπJhlz:掫E% ь@sh$\(:f:G(I2 P;* 4Dui4pP{?\罺 2O' |6LdbJj[q'ଳPm#k(@>,2h8!\;qXu2,Hڬ] r_糯&G=/vos:_K咡caݪUv~4{ "h|c JY^~AYbMMx!)p27pfV#n3}f"JjHrCC/:\3Paǧۯs{QQb3H =* pIi$ԦP7an7RtF"BZ"/UJX͘pZ :xֈ=Dfrcԧd  E oa)# ĥ U5ƣ$ed#tX&q=(HTܜ~ࡵ.fy$AYpo#pH8wml23鿰`Ɗ; JiBЫlpڊR&h߉d7*%->& Oքq*x`=-y@M4#QQVH^<4N0=,2BC56Q*%i%&慽":JyUEA{]lZj_]70u%>cI#SSwfuߎ|x#?V.9.6(I3Н3@}E{xNf>ɔP8)[W<\Dx ]uư$}֟ H+`&GJ"xߎHϹY$`w̞6pyS&}l/V{ryvj|i'5a|MsȺ[;lBxd ͂ί6e!J?(񤕶B'mll(rDĐZ{aEnh Jq(2 +P Glܻhw6\x;yʧ܌.ܲeAif.WR?3 +yyHv4DQ,?$K@/JhHnS9d:r5{bt+LsS +RerR;v&ǰ磔MN+n+^釷c/,| +Bכ^:?%/&.ukTzFBpݢhq=*U|1N_r'[+ +El#^1=E7~~2F>)Ci寻,z7m ~^ +=*O-ȉeBJAC 5OnQ+Rg .K@}E'CtNI%^'Чp7fҞ&b)/RtJT4/~5f4& ml0l@Ƚ,O압D<[R"E6k{ X"gln*ewNiWs2%wɑR}okb)8U퍉a9f - @%2'Qf~_:Ï)&ۄs̬::&~rN_^AAK"֓d~7u›}eHS FG+]zV62{mw_,t0\[(1EE5PdGЯ%AC;?Z)ωh#vyVd 61k_s +w3;,!/R{K\\[zm3QΗ,=X`IdV %J&&4w֨TA{AK!Dz[.zp QFmW`ImxjՂ: ݨ2QJ:sEHv[ߓqt#͏Y<bu +#y+bxM8#Zc~1Pjh-:P&ma+2ĺEShʽق*sϟpeVOUT 4PAA!5%gNgPp˗M͌W{mi ϴPE P*|@HMZRqĩ ̇UO7FVν=㙕ʪy7}Pi*^_4x'62Kp+?5{v/=n՗^iR,KkuS0a+QͬX" i?M +gw]7b!_ՙ*>*F0* p6 Pv }Xp'7*[l!s(՟R)̀Q#|GQMGbvlmc`XcYq,td$׆wTj}Nڍgx,9HvꬍS&G7;HON,Y,F~_h:cH, +7MPZ$9z؂6ۧTLlĪ1 0N:YԶf,[ڮs6l>X2 1Bqal-@91je;jeYQWQ(^JA5GmTW$cNV;:x޿O-ʽBx;wȻɺ2c$#Yq|g p9-Fs9#zohЌqr`W/#3$*glds rE[PBsh 4L1G[e b0:?+_&Q:H^d>+s ;DohB>K.CCH( <$E#+F*jx-nm|d,C1hk7oB~js>%.FZIpyfS`\axezW~kf )!ߊ LyPvT.h¹3*ћXk䔥(cL~0k>KUGP(JtV/FL]}}25hgWQ+ꔶX +. M)IJ5 ސFkR@>-GӽrDCwk: I m PPxSߔ6 ѹM܇+UϽUlsd)DXz{:'$$@*,6Er,=>  +jOH@g~a$a11qy$*ͷ#o>kňouqy/5Z, bG$>! O *c}"*-k-(pztqq\\|,yOuo + |"kJ7tY8ʿk UnkE*`U#_ HL4i[@I9FapOmm;AHd7JO)𿫩)X +Op}QQ&gڑ +v|nk]Lʓqʉ+x> 6C>SjZ_ +X)6~de{¦ڬЉkOhC¯3I׆, b 'eeaUpxFrFc+AWnO&FZz@j8S'F()^q4Zq3z$ +[7er, A||s>, &TuOcu̮BĆNCJZHf .@/ϵTލ{9|^_S-HiQ8/s[g5( \J/|3Wk៝+mm-<9c6d6 b+nڅ@vQ1#[9v5(QTq<P؉e>O:LjvnH ¬`x7'Qlw4ɻJR\սu.!H'&v "F-Dj \ŌWP$@ v0Oo`HHA3@|u8peϻ6=k8rn߿cn?X"ZYxrטlɒd@E- c> ;\+Z +M<)`H[$:p OƆxdbp ND[$[ '<쏒`;!c!FL5pjzDTǨ^Bئ7j̥n,q; 0d+JFMˊ_D LURT᥼Ñls"NT+j?Ԧ0 (%Dw?Dt 1ݬ`x;Y)R%1.4^k-:@"B"YOX!|1YhA=6<]Q&pk5v84J@Ic$2{ sv8l( 55ʼ52¡ +P]~am*#+)2"U wM*shkL't@+Q[i̡ }-!H/Ippᴿu7yg;̀Cyr;y2JIN8Cω{c6!:b<#`K4/p #|jb^!*l! 3 [L[VÙ LEpIe,2 <ȫ.+ː&ZX|JEpE ~cSx)iqrd4Fi=Wl>"uYKa"B\{Z9.+'ēu 8yeFC罘"d8sK"r8"5ZUdWpqVW{abn +41Oe('f܍cطEi(zޮ1"{e {U/'.EW\%QSdY +C٬U#:vT3 鯜U/yfAc8 h1uS,d;Qnxݞr3qJ.mk+sg~a`7 j264_@,Ԏdp=Ҥb'3 gVa"dߘYpB4=c}WcsS' +RU9}vWVfbg%5rG6=_VO<pEyz^s !h= jdG){`p;jBϱdžXKO/ )n+*KIڈZ|1ؚm*V* DF2vC!̢0VD,b#ȵ x?Q' + x$ =h tBQ1:Ve")Dl>@Phu;ծi#=bBFuϲSΤmc|>jşVw׏*ԉf״QF\"k:|:jL`?6!fKb}f)h"k0H=7Pm~=wx/Z".L[+@%tRYppJFEW/W!r_ +sR*UuΝ /[~eb}V6\El0i%oBkwV +ƘE͙F;_]fS]Kͪ(sϷ<CڥRL !FEX)wP6l=_qE=/BDq{~jbWphl0?`CNzO(N>8HDYav& x>3u@I"cSS-Rܘ,PF 1PpL {uE)K[{C9l6GQNN0^"T G^_ i+̐ ضx׆P ϦWˀ +@ -'fQ&C12ҕ܀sY@qK,tYLYf# PO6l:Q܉=Qĭ O{(1vыkeO\yMGM(rilK8`QFhr3LjeM )J1QDVhElz"oF̱J5S$7C'XNT3Tl_TGS d\űwX,D$v։p;3A?a1An8Bx7%JMBMEJժ y/O1 S#NA=>Y.-wӉud]/VçH6"S* U.W2TOR"j<|3b{ ]ȯ/ +NH1ScM myXopĒF֛Ѷ +K b\ gXL1MtO5`z]ҭzQ(weAgZ-z{2lAE}yr4K6p0%xt [oȥ-Ll.v&0 w=[S3R $l<J.շZam2x5wB9vA,.lY̎\=T4,Qae8j)y"y?b=܁cNŃtE0L!)ONHLYz>HzVqw +j`Gp1a=i6(P=w/ePOd*wQ[DeEgSHIvi!ϽN*&Y۰ZxE??8XϷJi~VZ4FNihrH3e!'&0kUΓpϞȀVjI SsOWiVq}XyMaH~;5%%'#cTU^Q9v+ pc;)`HE_aYUM\1mFw:VJ (Tod'z{c\^B&Dec(ߡ'z0z큪\8 ΌZ|t -HV?!'"7_Z_gBb*GX"JOc=Q78E¤ؾOw10; #6?i8II'~Yq 5eIP"M B>lo{^=_GkL.GNv=<7w8U+RqjB8΅7pJ\o +!:-h:CHN< {C)(0u Ȱ^è\̐* 0bcֽeq E)dﲷdϓJ(N_K-U^`uKXX,RBuKkr_y0p ¶z +}><}Yр:@6GH#OL{> t;/@ڍ)m?yPb?A> iy5;b}rE4\:܇JA[\XCIR#D5M!wj,kr*+buΔo3#lm |HK}ו-%ɂ?_۬DI uAr_!.]FU.υ?OEMlr`7.c}9W +7D{FulKW;?E2R;p d?>۔cAjGqCp-d#Le^'rRڤVXV df"Wu\y EzeFK;7ǵ2a "y$F8<3ϷwC*k~ ;bQJS66v'sn G- i'k 5kqU&:8p{` H&GmG_+UL=?k@(%Wau77 eV!ې|B\BP]um[.he}Ks:t8xEŤBMoּ\p|֣ M+q mգA<]FЇñ d<}$1D||(I6Ny)8)1@##EF)M}񴯥J)%g;y yJBg\;1]_t#%D"E/}&3y"Z z\L֚]>H<!Blo,VV9SV`m$ +積B!-<]-p Z?H[;PxWFt3a{1r394Hr ;Ŋ*a!}#EPfHXyp^*O N_\4CKc`5`K<&u +UHG\!XѨpl3DK7v_ ҐCt#nbsC2wcb|+s=ñI{M&G`c_.iDZMY +`3%6v$JIZ Hk_Z,$#(9Ҩ\r e=4?TkJw=[4tV|ȍfȋdGqsmƇ_WV2x=պy߸e1*|aZ.0Ȕ0σZkU ͋րV +,' +CtAd>qBi!u]fYչO;  DIܛ0 Pܙb<^AVtE=+xC|4$uLW: ǻ4$rD 426 +`鶘h` / z9$Rc 3G^p=T:)+eѩIvR% +u6P$$%ܪ9p;VGlgDDJ6$^Mv{v +B kz+r':tG$v}͢#pV싺~5/s2AqMCBCe.XNr`+Y'lnRbUd>w +s,pC/|s<^\9mEF *~i#}6wXr0;b`<+ OpSUm+TYGjq+K"0UuX׽(39"W@!M''ZKCi2kM +Zh O AeIKD DBz)ѐC6bI, O!q*PԫLy߲O5ɬ`X6U~.)S-trBIT N+jICluc9b)t{ }ИR:(ND SR4‘gRf|@bw +zvC{N $h05k:pȂ;g'4VfL@y֏g^7/9>[xz7g.e uhu L/ș.nf,L9XlqM4a2W)i}ȯGVl@WӘè%*3[.u;레 …>mCKTD$F1#*|_#([AS ) +#cDӎ}q=Yt][jWIYȄ/@NZdem3,[頡%nC._~eׄ)zIq뙇jixB",k %< Tq+;\)0v@].KCPPXaHl@8ݖe0VoR#1"InI-Nԧxł1 -3N-c]=.L:xk/H" ,ʩ3SCJ6jϲ{" A߱p8n,72+HoJL fAd[V}W~CW= +R:͘])s9@uj +e[m/sWRsڢF YS:଴X*#/(1{UPa fd3 {52&iXb{,Y7*u:)^?[B6 XctdSd8ȫˑ!KIja6ekSs =Z'& Ó1ێ9hN+R`gHƗۊo/d5> nsN*oh/O[FoZ^{b}Ed&! ~\s\DUԀߙFilL0,{7!f3xM{:q=K^Іp8T욖 Z@|ʀWm˶]S$?D@$2d[ #۷v=xv+)nꓸIH~WHbf4j~S.?6cB@uhwm5UVҌԮDRPve@\/AykSTZJ[NKZ(?!=Q(LvED%,^t!&&dSGumV_F_XЦEx /RQJE8@j>';G?R4M/w@:-b5V.hSy䯞&4Z-dEzd1D9?2?jʿcLX9Vn3l % ̑ \ +[gzrK+IcΣc/9^rUi[~4FG +d6Tlla&߿ 3[r׷O㳧&>uIt"PE2Rw!,q+s~ZUJ$> \]& գvd=3EǴ|PR.5L%=,>aĢ|JilVwqxda[D:`0RjM"Obaq3OBZL:,4(47)<4CYpmO#G%T[U]mH><'r+%ݚW", xЯb/CپV^4Z%[s\6|%kiEz­uMaהDZX,-'Xt,n_HN3=9ƺ?<USqˍ76XY"5;R2# Lv-nLcoEW6X9K)7)gJR@B@Z5,H)+\ ޙiPJR`Gq^N:]_D3QeD -aY{Rt6ayoaP?mJ%pmSPg +єl l-2oMp_+8?OVTGGmW1*[1bŶRwHc %Rj;8ū tiMv7hևخ;5 48X.nB2p/E֯FܰJceE +_*e [v~Wrt N6"^* P*HbQB06B>o<м |po+YO>0 o*Steh#7aף'V* a 6<91$(a`\Y3~X GÉ\t\O<{Dڑ4)@VDk~qQ>ݐ%2&T.@B։0b--Ig(E|dD#p5Ҩ,#4Gq:V&>U8WeA )VpVfD!?Y <9k؏)jn(ST-I`Q8##jTvE׸jATR|H FxEdEM8Li0"I%08HW8 Qeɉ$Z8ݲwdb4n3-'OuG{4HP0SOxP%Â;*!Rlk>=A|T6{鎽o%v]Nf3# +xtf4ds:Oǁ;̫[VkP?%3A1mt$PD±[þ5‹X [eN_Ռ;s;NfI?u;[\zSUJ{Z5b*WAaPQ foM(Pl2Cif]3kN$5k#%xέw;0f1hk +[qGEzH:AJgr x*po, WU0qB+ԫTĜmPVoGSV\ +1ΟB][ +$)/(Zfu)3mʏ8iI௨\yIuU:!Ԇ0tX־ni@OV +@4a.Ev0ޮRKͣHy8"^L#ڻGlvwdIJkGQ Qsc^/1!(ͥGjV!A2SR:yt p "2ȉb^9 + sPp!YT +}^߼tXIIE inPP0 ހw* Y_$HYOXkĭ\ +.NRO62H) +[(뀎k~o I"Av̏W176JS{@;bӫ]a FEr>RMQfZVԻnDyY{&$gT +mi}з{r+uh9w U,U\6DŘ񐅦Z(!a@Ȼ.oɕ Y w(vT"D$:vf'P)}NVzL| '0>*s l %C+6 DߩGD s/N/ +!wBw`inx`jNۙuǾ*Jj*C +'- &$ɆolXL8 R\d ѭUObUW|y +^6LznMiPJ/ieg֝^V!k3 LOCTY;^!Ƴk`~&otbMWzaP2ɦ~_=)j?#mԶ7+Fr ܵNwuʝ}%NJi,q +hQ ;>9$8ru^QbQpT=/TClV8:qkI)~5ܨud:wZ[> 'oTBC]ms0wl_sQiOܺtxێfО s`%lOBՇe0ǟKY1AE+3qy~"\'Z󦭫;= +On˅*&V$T5b4$G/1~aظDžqВ825c ]Tm66uL+3dlAFWoBHQ:*@c4ʮ|G4޹#^3{r'HqY*i`u{]V 5'']yf(7&ڣ8}aց>y'̨_6cKm'w%6qbpG uCLxžw㹂IQQNh,K}.ݫ=HcAdL"*O +PZQStC`zմ@`܏nVwux E~从&w#|ʻ^q YQOX"k=L|蚿xT 0󁠀P.AiCͰ=1/ svהy +tFt"q m.z'nczX6 VwY預µ9൜/R| O +$,gu;ji@aYp&1 +Tm5!o :Ibܢo7VpɤPG][^1Cj'ZF +k!ј22rUKkjg@n)R@&> \͍NQ>E_*8c s%e37kxKkqMm+XM+iu]d!\xb+qZl㈈f=uu]?MQeI%NIaoW"Y %J*-o_^#U T#hQ Jķl5H +-#ʖRHp;1p]F~@1BS&D-#DB0\3k %|^JHERRz>SpMCMA"/1w_:q[9J"0Sցx^=$Vj:grjHȏؐ$.rۂ:zc!m%\QoumyحE\Il]!ͼ8doEoZe JPr zR1Ӣ_mh[i4=-ZȠϒ^kȩ6{5Avȏ{LV{P5aAo`=P̜8T$A -4B4H&80ւcQP(YeBNK`.dW׫&T5t$Kl~)z.9c`XE;7k|ߺ~"OsqrC-,}GvC_'IaP.cQL +4{ K+AZ7?\mg#|ZH\dk+ :\(LTHDnvIQSN}.G|gL+ܨ5ZYiH j/ɇ'}%L" QuA G8;38 *frY%1U, ~iw"5#TC?uEr!ް鴨pTȎ\5 r9!sC8HXF3j6h R$漳so{K8ZJˆղrE=2Kvȣ!bʞtaɞ*a4ڪ8 *t +11߉plXql1K554B/V<܀k@W'J+eFvYQ=TL?TU+fwab)W %n%+2ߖȄx/1 xMq+:F^JfL +M "B@8^'' qZ?(2h虰B<<`g\yO| Yb ̽ԽS '=kl>,S !LRC 2s̡PwA_5, {,ܕd/ 1rraQ6omW7ZuO5\8egZzp $ yuL'XQ%mA +L)MuW*vĽ2~${Ԗ/RN} qAяw6k$q7:Vb_ + }ߒ+ͻFnJs|_QҫЯ|w$z7z@~V%Znz;)}C]!MnsX^Y.AD@A8{y4 Ug+$> yej +-SV`zdmA.=3n\H7P^ ҳ\/$}"Ԛ$hЈhܛf0nރX%b-0sfd p;˻OJ +>{!&=x Zn|h +I\jDy4!Oio Q6j G1&9@(V7I*S$kY~^>2HrC_9| .!SQȇR"w5V~(}]O_ +sn@=981>ipho7`%K7ao P_+t&7ӈG|}Ft0efmvQܳI9]\ IHX:6(eGBm9SK)n L +n9 hVMu,D$ja +I"\TdV&sc7(B/ v`_y#(0M%\C<[T&^g1̵axfFAp 2 gӳr -;$R) v'=2G\zxB7(RMBbG7ps1n]B}ٻ^#늿r':ɴ \Uƶy#f ;nL +`G98QAw(ACW4s +,D`à$cJ0 t"&Iz@# Ycm\9|o;o79/v{a"r n-mvgWou~ur_wy;Vo{c[o˱6랯~6[{uzs篱pOR7֖k{ks~|7{1ޝn3=)ଞ8'!j/VIx6]w8wͿ_=﫳}n睳_$Y]~ul{{q[믶<r99۱דnI_bpORwMD̯_n?|wfk%FrRB!CK c-Ѷ `uKQ25xa-kk,t43ok9o~7[5ߝw=ZY/7DrG5D<7YqϺۻ[{}W8.S"Ic +3q3%3L1IjmkLϵ%nTU:&jZkDZs%kM3&KE)eK?۳Řwn}νTm \E4ágj>4fd9S_g("$S'`ڦc{wur 0bn-;}<@Gd|yVcng{l;c@־Nd~Km6"&|@9#]Z`ìƶkZkh l$7s U$7kpcĕ()~m.9 xZZSQrJ\"U#kkd*y9pYںgI8Yn귙o/ƌ11wmw/g/ǁ,r0ck0)nT.vTr"媒)Fp,ckg56psbf[r\rr5[w{dsm#sws==\3sݳܵ{ܵ^|Ɵ͝:L%B'I Ժq.=@^KBxWpٜ*B0 +gO.KYT,)LJ᲋ Tyզ<5tU*pKA17qY.P_̉k9f@/Rl.1'J1I$ +LQp6EJ\Sk3*) Tձ&2I˕b6 ~qLa .l#*`..8Ig5դlq3*2 Tj<7gpN%֘.Tʳt,88Rs*qN%r/nI\ceX2] xLT,Y()SKq5a:RKQL3M5f=r|)ƾEu\(zjZ\͑=-[(YU\ik--W5Eb,k45&v%W[?Wڲf+J[>Xz~T\ͳ姢j`b tJ9؜!#]bLT|h5M訶nOE[fCX[-]jX5[͗YC}hdZ$Y뛵nB `ԕkOEUlTk^kK'g+XgirsQ.Ot{6s-~gsk7r;ޝ{3uȒMgcLGfo +x.Vв:Ҝ D +@Xz+!1HDc!.VP@L3&@XhQ'҅_P 0= +52#LiV(}]vw +Y:u;x84\0bK +=45L:fNyզ<*Uǎ; +9,@cA~&Q( V/L`NAg6m$fmtltۥtU+}G#>yNNixLV&9+2t@B"Qeޖ h(bUa<TuZzRLlH5+޹ 4dsBytC5:ѕ62ʣ +A:]bt1N۰6 ߗ h vxQ-,)B:OC" e' V5-"6VX f5, F!g?*uXr1Ha4~mrIYBJ]NE  ˃rI,vQH(.6 &3 +stFz+3gRp'o#$ o6eRYx`0䨑X܏e~q٥Ś8!P"-NH3-2JXʃ@炪 hÆ-M8.1Q2ʣ;@iN]tGg]Jt>.Y +`F:oä dY!̂YfCi2ʺ䀨-Tj:>`VPl^`ڀVP!P +TFpmsA -Q(o$x *svIS1KAmB5 Rc]tP0 & DCmd8q-ӥ2'0]*0`qZxawfm ̨z}$Vk.{ܯAvK !.1hnjz1C6 Q+]>|a< .J԰2a$P+3* N(L4cz.KRGΘ. %с6sZhɒ*6dhYM UCGWb&e -’ K6XboHh@!X +!2@B6ilm>(޶mLHcBxIi0Pi؀)@1)q!2:0n)^4.ZQj.jiÁ`e=ce͈Ge @v`3J'Ku,*ٽ(OulKad0dI5v6֢Q] +tBy`$#TFmdnz#Հ@IIUvȒh,5PA%P/Rm@A/i˦ + K3$/>DB}h 4ކNT/m2%Y8eձ8Zq*q32c:DFCdEcPɍ"Trڍ$rs+ȵϭmSp+SpLmhFaT֙jc 3Q)B% Byt`JYӮ3^ƲBt*D'ƙ(Sa>چ0 HcY0РF~tFd:lXH < (C#j1 BEx"h#x{0l}c❋YRB&+&VT!;Q(-сuOICtp){ N>E ^fPJ :#\eX3)) +/UGeqeCx[maBˆ/m1 mA[ rBPàaFS)<=dhP C%T{\zu#Ie$`$tB%"Ii_Ҿg!(96BaU)Nמ>C +IQ4f$:(2 :B*8L!bx2U-&1qE.*<H :2¼-Ҩ#mrai!D2y2sB٪KL.+9 ])@SE|(t]V?bFAg^ %DA=f .C jˌt l^f }@TV +@—_J/|~ x,>$UPTe0h,e47Դ MN(eL!SyP3<cϪ6`ϚaTTJY)P*ġ<:XY9xY R'Ba082e/||\Z^9&+i~tl6"v(I䊹{TTN ;LӋJ*46ڗo2&G_x,K"9>1gKyͩ]fzt}ߔqf\ :5{r\ +(5@:ӌb5Ü[|bwhN(?p:M?P?V(@m'$fiŜ}="ބwAtrO."k~u9$?1GHNVYˁJ `d aX *Cx75ݦ0w-uyu(g{E$eT1".1S˱}mh_T@ͯnT +"{d$ 3P*JRx/P\Q-$qqϨFJݦ-"Ĩi0b&d5T񄑞8 ^NG kfVxp|#0! s.YO:CT)^v),5xOXBipʸ^L]C/S(t-IiK Φ}TTh`={1xu1)Pcr0Š[} ,@ }H6WIɿߑ:րɣ FD|"Dk_r%($wd}`\e!y *dK.mCF%QMݢ +A|V(ւ#V߿ րeSto9yح}#ri&h8ʶ7(F\~ @T=,"LU2'xȹ*݇F?HlN/錀a}45$[x%1j<=DgUC`V2/,Oylޏcc޵e7EDK +2b<|fmrpw6moJm17䱒ɬzYWxΨxk0东yp9MDAnk<`mB4v +{3E:OΣ|'ھK WߑPa6i# +QŢ:/se@!RH +1řZY2 ;Bgtr +NW U7_;ݍuW|գRdSpP[a8,` fi9q6KuV%BEW^v5/xKo%n﷾qqNU4OhJ6%s-qq%c7.o  ⼴_rE:!nUvRi[ +h#?&-)pFYMVr"E+ $$+|na0=D[wOUD$6*jMH&]>]dĿ֨>9n%߉55]?c? Fſ9^%:Lrx;ln5R҉SIXZU4WT8 +t0oIW_Y|0{Q_cDܞMHS5E%\@]o&4ĹDXnw 0(}/]9eTUoB/˛"Ha[f3 ebne%Bw7iIP5XyTjQ"3fC0N2PMSW شplpH *"ɯƕ%ʥn#%57? Ȣ$WO@:%cA-E*D:6b31̘=2W [h;PJ ^YEZOбgV)"KH[9x#V;jJXn]B5Jmr/mk O(OCJGYs@l$ iRޜZl}L. Ejm6ai:[SEuU1Hq EŴ||j$g[$@ZYHB:Q +)]P Axla!Kӈ'# 6Z'l~5䢨0c4.|T7yz ?-mYz|0jP:MHq퍀WZ)A { + dPopTI5X u/ |BLk2e̬gYsE|<1 ^=;]\X2̥ge߹^Q!r@tςmEweQq1 +ail/3'2;^2ycԂ_Ƃwl%i|\?/ EbGk.bŚ 6趯jN}^8[B!v sDաJ@#Ԋs[]n#1397(_Uc)QH:g HoK1|?`Y!A&&!b鯏T *k$=p#gVh*z7'ƉR /`e"ik̲~h",A&C/? ;aȎ0$-_#MG^~bS>buW(5Oj_U/*'(byPOUo %g?B[/ r̚  ;g3=ar! W{Ջve@CkLgT&bEȁzjơ3|B9@Y@#{7g4g 7'`uo㕽}یsa8C:>=,cɸbE\ڏz86iFe %e '}MP(X 3slwZ*{n6Q`؜@nip/ׄƤxu@>ac  Jz+/E*aP9FGʟj"Fd,<)$7ذŀΙ%Slp8=Zr:ŻZz`I'ϋ)g'9ݛ7jL."껻{m}Yw_[z# nBd'vdyqۻuwƅ&zwXfﮟ%ՐFq>/864岀#7-cTs< +([/73aiهڠZ*!w.9^gb[~U9W:Tؒca!&xZ*5f>!8rzƭ].U : 2(W: r:V/[v)jp]XwfDc @ ~^׿ &ꫡսY1ZЈ)j lTuN?;y'\jX>b/MFA"m_jQ;27rCnpp3,ONLjw5r*ə/|q&) G]"o`{%Զ%Mzeb6qYeMh\LPZca(^ֵ>lk~hE 7v ᄖ1s>OޫEW&ŜG\A(cewcF%~[t')?)#"]E7r5#(+HZܣ;ߧn\tN,3?˙ +Pf22pxbɞI4dXJxC+y#SFŢ2W,^۽WVP/V*ִbD|֯tބ\ۀP&V {0^z|o4?}.E#EI_8$#!P7V#.:3R@`B{M${;tS}6Ů6}\bkfӗ%*HNheu"#'`IRc6+@F,#E"[࿰څ}"$? + J +TƠ4(}@Jj5*Twа u{'XC*xAaN:-(r^dޙc$ ᵥaՆ˜Xr24e%׍B/ZMP̣b~5u9bЄS&`=.92_{?.h4{hEʕ7{*NμU|8}\Bkwlj8/s) W˰᜼5W;#$Lze 7-U~h%+MQHneTIM)Kx>1[ScMoHѡ\PTs<ѕ$:͊K!ʎ2*VFDC˂,*c6o51AS pXX[V˱hC(2Kxn=<,8q-=cN1002|7,%bQ0)N~xJ6ĉD $Y +Fd|dr)0pA2L@T4>_ckfY%1ѴfbYD:,b*҄A/b_cYFd#?c@ 5Je%[/ɠhAّ$p8Fr]]l> :W*QylpN~@O.擐׊;Lr 8DҨMk%99Hq5 Fayxhi.ɰJ.dy1<ՠX$Բ/+gX`9 n62Ȇx!+|Ρ]<5z=zeXi}tתZNk2)}2|LԄ*ʸ# M C[)B +zV\?1hD< j^i9?"ɛ/q>K'6%u"uXa5 LWs1:'u/;_aV}_\uүVj݇l78\/oaVv2! K 燚?V22iP+<; Š|@m[!\Ё! 9@Xe}"YH"{yZсu.h W#E~=8{?zW*iY1x{v%v\6z-1Ԓ!|F}y[) iPGkˇ4t%tX"h0Ua\/*ޗ;qXv>;c t 3􏫂pͿL ऌMjF {:`уH7vR;˘ 7feDCfQ^1uPTЗjF&٧}-` @TSy+ЎC,PѕfWV&|_ p/9gqW2\k^(u v*3T6 vN >>M=U Lbq};Ȣ'!- S88P'OYMA +q.|\rQuZF_zKo@HW&l Ѳk0F@ m!MiyT'PyhC3͛0RM\ U[ + + *,4<_%gd(TI6fUxf7XJaP=\ni)mJĴc0:7\wtBKI3L*U#>* H#~$ ݌H>]^mϦ= :v[fm_C+҇eQx$3f )XP | ߟ%۱:]pWUp@gDE%\]%M pz]4H@d$&b]{'*4_lͨˍ)Ď_y5\?t.o͊'9~n{ Al{&۞_7CU~෰XJ Zfb/ȃ\_^,Xߖ*_uB@dF9@#HEX\tqE^'BUsҍE9DÖ>wUxjX)<RdP)l.!( +M[SPZ'7%їh.-Qied!ҬK-5ux T~u1"vVx.uy7;ǞT= j*F}T@@b2a`z^Iz1G t`  +&Hc\eYDC߮(hs_m[:Ҕb^ict/ ZcHf x7& 0#bbK[L ^{?Fb*kA(:CpHP* X$2ˬI + +j'd/1Yl|>mtHe5u+wcX($ (ub`Ǯ_U)<u %1Φ[ԑ&s]֛=7 Zxv1K~D*H vLI8ȶrF]S+ C<6+7ۓfljd2YY}M"j$b4|HCYNztۛkd٬{=%ByȦ +zw|֥j<1StJؒPl=:@ɝѠʇF@2K˸[s sȕȳr[),MJׅꏋȵ<Ȟ~"{N'w$= i㟰tF잮M/4n^2Qa;UxVooK ib(GReXȊc#8 ]:fB>]VNAȐy:@@U .%$ԯ{RB@3̱.IprpR\)!@T I3j`sXDc,`ׄ5Ma ȴ$h0hI8azZ~@R%<8L.ZY \.*Y-zLnk*qF~QӞmsceI!)4?|BNu5=Q[k8Vۆ]$DkRd!fԆ&;HWs)Bz^# S!YG;QOI qzu-)V gg6Յ˴ !NW!(ݒP+ݐLvA_ϹYUb+ DϜ{.pA滿`@#M*8^Ls^wRXGr+WgM&nuGmk෶PM4oхXG0j(OSw@@H=AX;FNWxcC Xwde$E,qBV:bdчVÿ1 |B'/-0?P>*[͸qsOt[*Uk4 +)I%5bZ"^zT3W?ߤf\mq&{bΐ-*K1U¥s$E!(yuȽOh!$$_q!;&63K&w0Yu&8>DjM ]P%ŞKޏ}BJk^"zuؖo|V$e '~x[D)c=xG!?gգv\,읪nf\ +/P8t(ZnSt +oʪ Bf:>h +P8 '~a,b,o}>Ŧk=BLlE,1J>vQQ>j|]oQ8!ɩ,nOI 'fnDx&)ě endstream endobj 15 0 obj <>stream +qך7MDVq5io#DxrH"ؘ?zr\M8Zf`gjc.Bpq4 M&"5*a7$¯hXWI$ EA(1֧^!ThERdq4\Jh+> Yf%tb`6a )K1-ȑyrЮr> .Џbs*Br8!FSVz]O1ge۠9x5%xJRL.4aU<@ŵp *_GYӁ@]r(F5Zܵb" ApGbpPJ^M3B>;jLgm. tn\k"Bݷ%sWl#V62c8Z"xݡV +(ڲCj܋iD?tY3sa|i⃰_itFL4j휛2&R'Q$fM@t+\d}Z2 QnSEFG[πI<{dȄrc#«.\D֐ʽO5( {L1 M3wБ[ߑIS 㽑gM#|TZ70Z%47ŐKSK890ȩw* 5/O2FQ1iC3eھ͈B%dRۓ,ϻǝZހN5% : J7㲸]uc.NزcӠzi/<dq8B +\N8Oz;3˹^-]#|"PbJUt8pJE~v +ORpGJ#zꨂ(WΗp0LIdquHt„ƽ &̡$MA!v Ff5.(JD\O؟ΐXD'9{ +JX*nuf +RCg:zFTrjIgv};Ǩ@XRIc(ĕDS{E s~ ۝@Gfe"E'S7vɕ]Ӥ8A/t:+4p]82B])Uxmmx-ڇ+~Μ ƟϺؐ +ܤ]s +fJa;lŋgNE:4eX%ZM%P2]Y],W v-N|CLL!_{)M=t(ZW=$$,\ Ƚp3>Զ)< <D1~z 篓J 42ׯԉĸ|GofQvAGb0,+EX0QRx!41H{\MQ/lO>C?(-zh;h5 +)86 +g+*Y?qne^#ұhLF 6ߍxJ糅GJOU +EƬRmmWzv" ܔ0y'ΌVñЬSGh@WРp(%h9Ak͇ܸ#H .=('I|avB`F/n$ kwCrO`)䟩}Md|g/p_N&8!9A`v3 N_Vhq nmF fuٶ~$K +WONLPnEP~+F`4^)籊=1n/ʪTVg[Yb2V!;p_i]mmOr!/*.a1nQShg4mE9W T4pRsWaF:\鼆ON͋˅H$()ȝnDY 5;ݬx@t F zj*-{v<*3NMnfnh ]D>x53FA6:$5(vLq6zӅ 8{'K}:~{:k-:pWu\/k'2۩u?őosf͝`G䜕9 %ἜT2ԉw`ZM_ +axlHU+`ϵv]ĿY1[ʙ%'33bb. Zs`V Lھ27Ur ?#I4 (Zg4q}f<&iA mJ(EQW\-dZPq~-^UGX<\Y}Y4(~1:D, +34uXyU0RPMă@Ptj m 2_]NVX^@d +|\bGH9Fz +gNT1$]&KW꿫`NB$ !q<m6_Y*S)|qHopmHxS7eOD|0nvNڦ&h!i'v3 "ZZ."d"tQ "ҥʵT! JMH]*E"X:̌as\l %=pc\]}g~9R C,nMHcNS Z'06> y`lg`U,P%ƂR'{'5d.^ *HuhP_ ]Gpٍ9 -Q+Z%HCSWOy˗z + ,!tsc(&z +9162( 9H*[.";Z9k{}*Z9Sz0OZΘe䲞7*[Y%~<}B&J&8 CV32Ky +˶h&aQ]r>/aζlPiI ˵Tce+f*{\6Z%@ ؄ 79?!w K-Sď(]Z6]eG2$9v! Hl /(z[N6zh3w%՜bm;H_X8U⼣%/4{ p{*Z9שU qO +2'yKdY$R£͉B xT;@VilHnyVCrr`A+y-\I0 t_Cm~18 7!H;h?2Xt^o͢^0>rsˑ|J,!#5q^ً=!6 -#VW]po6%AK\Ԕ̄M46K!xю'l^f_%T9]ЮR"U/<-Ϡ 3%qzY hړa,_!s+1H0;gGz.,Pˇ;NQZP#6")$7!91or&Bl]&'ޮՀ)M9.FɊQP0F '+ㄟlފsjx2Ji<{-HH[ *T$'Uh^_c|"j;7}W˱Oc_íŜp6d4n t6:~PŒ@ qY4ǢFu8e[fkjB^"AzD|TU +84:>В&]߅ *%u3 X;pjfUR]c>{XzM+ks*q KkidyOFi ߒey'S D.0Akpt:׮+(:6b!N!hʃmmDL'K逿evFKS{hvX +p#1(>ub#ݱcq`.5@*h l".hGm6'BH\ GS'#a[,O)X1a|B +A-3jV;oYJ-kwja,7hCj@x)XX 62,=pFb@ zJC<<+OGqbP0Ԧ-K*d(*g6>0H Hg2@DRe%(p)M‰ف`yh"\[j8EUvs(Z AV[ tBA@Qcl*XF$LxJgDېGچfj`2̓/WBҾɆ_ [#)F%p)%a8#Vϒ(PAʈ()%%Bf>#x$VG 'L%7hUI0pGIRp)ad%cP k&7THDPh d4`tT`0V1db qt0@P*%4=:TŬbFb ˰ ˰R{uD2,2L%`a!9DkB*A8r" SEh#((})4l D"zH 1PZ G˰C5U( Chmx42> i0A$2&  HÈ6L +4\) +@Ð.Ɉ + 6gbmP $E°d +'* :} +!h'"䥒G,c`U\Prec!l4@d`FHM%TZV2LV)!8 @<5z 6ODQl D¢8 +a(a`A!28 D"54%Ui-d> ɕNEt2 HCEfɑ:iV1j4)0bӊԡ9l-,!amaS":BA&2lȰ +8qaL86<Al ˌN*JPgcxSd'T + XZJI!jy:>d< Y ah DpTP8i +VV2lWڕ K)-7j#Bm>Tp'ƥi FTk[(R!Fr s <4<ҡNHG½^ +S'- IAi/ SB<$5")IT 'JJUx%3 )*hdA<"V =}(< {!RqNH>cVVFnH g&28Ts0\T>D2AQn oVVPya#a2Y\$"#ɒ$F|AЖ9l'%V$l"Dp +`a +hORq hrst$($ģ)(ft0 ӠU &* H + D)[8N)x Ie6Cp)x* @`(QzaRM:xT+PJDRJ;P6GA PMeX-dX :70 2L %aHd<@V(uxhx :6ɰa JF6Q%q #'b7u@YlTD!ܵZvdb@iH/ AF +QJ(AeZ-Mf 3 "%AEdujQkD`Ӌ1rJ f ˰QB8 `"0* VF2 pQ1TT"h#bc0ex(JC% +HZDQEwbCL2,V2<f xZi%30kpGM3"2:k@aD2 +@ 0@ă)HipP2(Qd'mh(@[J#@HͰR$*N%Ga*Tt<@HD "#ӈ6*'ш\ 1lIyieXqBRkJ(-hV01^HB[-oC^*Qb:PFbNdԂpIEPPNK2Laa"ƃXT)*@GK6> C:(CC\aKkIɬ0n +HY ea IOg!ֳdX@Hh#+<éåՆf[4Ֆ_!GM>J;Ï7vro|Nݻݷ +_~ jج zkjfs;6|o=|1ucW؛1~wzj|1cݵ^;u쌾/n?~Q?S[a4?˘n#]}lߪ{:ouߛ1yatLajf_GMY3> >>Uװ_c!}vywGav+vه߬~|.na.c^M]=o}П E}1j 9}UrT/~lByY wԸ?_>.e2t U:c*͆"7Ǎ]~nUݰ#]ؕk=+孮?}ۭ^=_Z5nK>tqac ?!|G|p2ǨES=Uțav>ovn}*k}vu/vS>C}fL׬ =aҕ>`u]`:Kq#p̘o3B߫"k>U|H}M^nVW7ša}Fw_U{ z{cC׸Zzk +?k ^3z .+IkqBrKb GQVFr\>aFNT^4X꒗%BV\h>NLY}8T1X:$|@84^J_Cj>C@CEhd@gd˼V#l%+ RyLhva$(,d#uZAo:Md : ! s LF#V*Au4 !ٲc[$hIE QlZt(hV!ROiI=-+M<MRe>[ą{(lfO&BvhlF@lɲB(XزESزC R(UeYBZ)@aVP^,+z..XBWHkeBTx9_m}/>~篟BvsϑsFMfVfnKVFo~|Y_sl_UB 7~sV-[2dSY5~`热=VO:.t ]a{=2s-Ng}Tsar;Cp̧3ft<‡!܌0wU 3鱿v3wԷjgG:ngOy{o>naیQws;3c`_ :G㘯.FՒS3>skƌ.BmDZlF7s2z?tM۷E9=+5=>엮a7wzjfQ#}սnv䄏5t|c{ѝ[{m됻~EnT^uͯ9w?ge5]_Ǝo +{CW|SU*Q=ovE1wwP5OU-|ՙw_7?ruׯ mWs×=[{;_+6=|S"t.|f긹y[[l}!TVe_޷wս#BOW7]Mcng7zB0wj]+3|__~>2;1+?_5t/{O3y]\UfBwuansno!/TuMU#z]d}0rƎ7Wy\ښէ\Q[g+ޣS=Hy.~BdȾ06?~5#T_p=ukΛ~]jη1z#;*tX;UGU1vy _{w#1{յ't&ܼfpa˪Α9F穤* _C]G~ [1%gkχϽ/5f|L122lJKDU!` }i:MXE1s/7۰a>F⏫>a+vow.͆!X=9W/_3Ԟ{:~ksꦻnS=LwHښ.C1BN~!|}o;F^^\UwTp{ LJSaƏ/*ԇzrԏ|coFί=\w|{awa;}19s~Ͻ"nVgU|0݋1v|wz^0`͂)E#Is08 ǃrhDj(:*EaP aA@A CA% !?7UMۋy ^`SMF9M;[0F=dGOGN@ȜF!}tI!`3Mt}tc0f#KuĀOE o ikC`0ū5h HE(IM9Fd)U1DOk'uYҷW(Jl'||ҎaUb?Co׻ qatѼ$>ae)6j rݨҮW槾yB& +X+ŹȭS۠$Y츨J-bz̧M_M\(wQ-zd)FŪѓQa?Wj^;@"& )wp/G'Xl/ӅF9"|߀Cyhtעs eEx,"WJ-ĥTP/M!n\2=Xj 8hc!%\w9YCqjZxw((cF0Ul +} ^獋T2I- ˲svfMnY.DS1bdwF?βYjW[[jwWf5O-`qg1,m\ y ~H~ӓ5ͦ6OF'Y mJ/u). .qJ >!Ec/PbzgXu)M][Mv5͆g@_ԹQҟfu"_1N9sˏzJCfҷwC. E[R utDgoҊr3v=:y-76,h"{o cA80ж HZ;, jEWI BO#b%aJمw6m~s, ܌7BWU*pN{YWGf ގɯ>$f4fgHONM@%x+bLz+3"4<oj]BNgvf VG'Nq0qp*A1]mP\;P@fHd1Iis\zƟ4T՛D!0|&9L%CrN2 7b?-+i ҍ j8ޒ9f2=2b4}K:cWy90lKR=oיI'v{lROG3+k?S61{I &S+0fxuFcST;cRMoO=R*肳0} + UL=%4ahF*rݓW?\P!0u oHԗNc x;hGO?*B+Шw]2YTɜWm*δ3o)_׻hm)6b*,O>|J(Y[jt!DE< X~HN !ċ'Eȑ@C6ЪTL+g FQzpZ ~/z̛zt(XN?"$3ђqDCJ1v"6].P xkTBQgfQʖ +ў8J#wf_qɓl2@ λdQuuj_ASYFaB4wzr96=TF) XLPѬ.Ig*bA*4o^WAC! s#\QٟCr@p{S{RѱM6fgnYn>LcQ8 N}?l;hҎKD˖ir."A@FA̋ʂdLln3!fMpK4Pb1d|RVI:7cL +u+QT(*& ha̠b, GT Nu]"|'hb 1*4✮s Amn%q,ءWBfIqyZך*VfU"Li=\=d' /e7QZ1):xxk% +,MIFؕDl}:uǶ!q2`Sb&YǃSr??~P.馊ijK DYs)!m69?.) Ex.wfrؑ´-HR YnӜ~\YbkR4G}鏌h?8]d-ε!iAg1U>sd($(vL5%"VI;hL17A1q~(Hi\1hX>pTp 1/WʍjͤC2jf1;kf +ڗ,kk Bo$ 4(>9ٳ0ؒ5sј.RP7(|IMXR\@;9%)}KPa' 7%J^:-Y_i Qô3{wk D e8hV$Rkȩ/vŎu4!*M ВS͔!4Ar2 9!C];_נYQڽx ɻu̫]>5 id*f ZD13ڇȡ s?02(8 (2Ы, B˭7/hyOddJŪ.ǔ.DrRo2]8ЉFwѣ=e;0ayQ%㪯&Y_i&h<bYI7u3 6rj|fؚq)YVs+3xZS/`#e%ek S76,D8KJ7li4p [uaAN?Ұlr0ZM;3!̪ٗ0 +ӗr+\WIdžy mnJEKoWB,bXaTap +Kq$/\! pc:eVVF`f-#E'7RGmjmpG3LH_%KἿ6({դ):%L$-,S'!!ip|M\:>?S:zH2i\mǰ,1(E}"simj,b8@JVi&>^KVA3Qdjj'Q5#ʸI1c ~UArrb*=>uw 3]ob]aHb(a[Z1K@Z&x݇k :"δOl'0dmteYż; rsIEjԻAYí˾b*}>3,\̇B %%]VGȼMa} , q4eHxF +pꤓYJjq-0nLƕ 4weЦ" +Pwpz3Ň9A\!x@M#./]AmG@7 T,u,;śdt,bmS&8C|pm0\2~$;, Dc0V i&?#9?LcBh\Ks +fv7ζ6{YV"Ho2%5pzYIrxlFZm C0/Ax-F(9ihGjrqւ&DS͍ Y$'jMiHNx r8$eL]G.aX<oE: tTiѸo`+yG2xeG!bV,+C=, SA5pIvdck8>6D u%&5I z7X,W߅J2m~IaPb<19I$FM*gcQ٪F}n=Vps֕p-2m^#*Hƴ_Z;&[D(Q`E~%/x+Re-zMK1s'gP( +@l#\ 95mS0 B^o07{psj"/d}MЀ[K[}%VPCP6<䦥NH9/Sj]{&nɼEBV`ߖF;K^{{^u YǮ" .hoEfHsI.3r& +23M~AlQokv_"_1K 9F9V7#LdS%ȸesj2~^'OL){ Ɠ"dM4'2w/i4d<7㙑!4rh0_%2Nh$q4S72ne)2wDHHf&?2~IEͦMAz uHO{b?~(uf2wv AO\ ⅛`w7phܔMc#;ΚldeW;E~1>QˣD~OxEz " Vm8e#>=$| &8G(W)>Ӣ5uke_BqlAjb"Q}ږ[|Sx+ߤmx9[>.m'(HˣPGD +#·: *p,߄?B4LU$1x[Ծ- +_F fN 0pn)f(\c&}ts4W޶g[-RQ?pyK%@2MC0'r̀vMz=M9K4VH-(4K$CjȲNgx{IJ ^1H } UPtwp/X # o$LG'냢1)#zЖL<mÏߧ=4ɤjm&vi?o«mج{hM)5]Tr l5kِ3mC:PJh +>B .nkn47[›Mۿ!錨zl44b3}z[Gm~p6ٙ,L&M_ 6ؗDLEP7GFX:%aqbz2J0H,5 M!B3OZjK낖] vPیi`;="|7Yzz !O-MD~dy>O GSLDDpzLp1L24[͉zU!A G|ߝ>OD.P).l9DM U<%V? +Pl]%i^y|5{ E}'tFCkdz)z:Nsj ϟ[d*X )Oa.AC έZQj̮RH>QyAR4K )NZE&YA9ڮ4yDTX2콡ćzVPC1CdUsWkٻ(ht]X@R<;͖b ^ _}u3AMu14#mj& q{{nO$hFt>H^~%޴~S#sϾ)+himn?$s2~L~Ե\Tq)?jInn:{/k6kTL<:X a7 +`Əb.:Eڦ]<9wLcv?ˡn㫛:h@ߜU%\A7*+3`_928I[VDdD>`ٰs*q++BZve&HVo/f ^)jE9_϶?STGP>Lo&W"Hm&5~u[Q0% eԱRLi;jE$, 01ds^)C[4x?ف-Z;h3.!. Oʪi1Ic5 0PdJa.ÈQоo f7IȼSS#Ah6Ή˼L +cJEY{) 62l XaSc%C=..un#*R9`Ha#Jm®&I^Cg<(1 Mx/q]K&l,GP{bAQnb -|pg+ OKYNDJ\C';&xwWm1o4l}E+)DB)y\"M  v0H92?IE{W(0<ͧ)H.I]b`^&[|O8I,h*ϯ~eOnķhjՈ2n5DR^m|:[Ѽy*8GCn0-֙ܩ`G>v*ZQ/>rbH;.XYRɐ(p8"=N$|@4έ$2Rݚ`$,X(2Y9nwI3Mdz,QZ+SqCnC!aXF mA8] Z0֪SR|,`Q +f5Y,:EտD~? +u4~MGHÛ>Ùퟯ[[Vi[Xiӯ~*ʇaAWK5>_}#@RYi2&ExDQmA֕zI- ͎P&"iJ6@ fZ"4 +7:QɸIeb9צ׆5rb|j,;hb%Vg. 曩bٷF)Yw,^ O|,v@Z mxWy}Ƀӑ6wDI[HW@@4 v|oAĬ[o +ÔKLE`+9Y:-'L5 +ϒ]~n/lV>lO;PI 'c&| +ly4p^0S)ȍK+{!crzH6c@PpM!;0mO!ht;v  hu%PwY%2!Y!L1^{$ .B1\ +]'=@1 +ZPT#Dw /|{0낫s -.v%>7!̈́KD'> ~N4.{}D<- Qe<)F LCPBֽH\-b|is$\!F\H lLuC(85*4} `:| +DcḀcK?I_"G[O1&3+ez4-Ol2[~A76jĻژ[Z 2 kK#MQcpN)[53Y>S%C4̔O`bXfbEZrȄ!K DU5Tl+"ؿ4 M58wuJFr#xL'cٲC]QPYNcw,qrBL|S"2,L  +wK>,@ @1r# )s-{o 69 %`?5i76sJ z .KzwNHdӵi6~{sɬ28J$n$. ѦAR ҠzY, ^>56|Q00F9 ("3 "'eõMfO.@/;@C3~vxk*ڨ൱tpҠߙ=17)ܨ*wʠ~h<;P&q1)w=E׺îD^M=E@Hfj>DD2U*ĭ{1 ,ek|̵nOi#-B:gcJs[@4ib j^-3^|İTz}w~"{ú-s^Wz>y/Q)|" +hdo#@X%V)-(1h,w[)mzVu>ˌ'XEƽĀ3xqx +K<!_~cLLTsF-us d%}v0~n$CcOXn?UMh7kHN1F7 QDb~}7hw˕ %C)@CxOe"##( pck'MhxAq= +21&IioR,n1g,W{=moꝙl4nmY#.yB冼3i/"t3tg|)AZFCǴB[M71["/Á@Ax<0p#lIvFl1a8wӌ:m$_g +g)y"cq>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX$6Ra!<<'!!!*'!!rrmPX()~> endstream endobj 25 0 obj <> endobj 33 0 obj [/View/Design] endobj 34 0 obj <>>> endobj 24 0 obj <> endobj 35 0 obj <> endobj 36 0 obj <>stream +H,mL[eǟmݢBȋ# 6ydbx!/-- ,-)֐haKVM:p:3E€@T2 Cع@e$'O9?J:B)}./P^n˹򝎶)%aoتũTҫ1| KbNg1ow$QġX=Z8Ɋ]ڕFT쎚:W]sۥk7%+5nDˮԹVӱxܞY%mk!SIt$"BJµcHI'1=AUs2JLgglRCfĝ{~dxaԻV(XA9m΂( >Vnkocx4ZA#S4#Xda{L,, ;$D,5XUM`z#3s$Sղ A4PcdjC?{~Q!0c:~r Noɋȃ[f%]T?v>+=}lYCUÑ}~ׁܓf4?=ZV.wy$Vm^T/ b*< ~^:_l.*@RNxa+j7nr &`,P΢=Ƕ8 6𛂇C2Ms6% pw5RCvm&=_eFW>8t# Gq!ay`NYLHyl9EKC~ipyO--?( X }uĄ)+@HŤ4Q+U2qo~g@> endobj 28 0 obj [/ICCBased 37 0 R] endobj 37 0 obj <>stream +Hb``2ptqre``+) +rwRR`?> v^~^*vD_)p%?@lZhdg"I`($>dCW@$ ]>faˀ% { *23J ---SR+KRs< +KRSj!ABPi5Zho@p2A!@riQdL0cR?1^: Sbj  O endstream endobj 26 0 obj [25 0 R] endobj 38 0 obj <> endobj xref +0 39 +0000000004 65535 f +0000000016 00000 n +0000000147 00000 n +0000039177 00000 n +0000000000 00000 f +0000039228 00000 n +0000000000 00000 f +0000000000 00000 f +0000043039 00000 n +0000043111 00000 n +0000043350 00000 n +0000044818 00000 n +0000110406 00000 n +0000175994 00000 n +0000241582 00000 n +0000307170 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000335331 00000 n +0000335144 00000 n +0000337589 00000 n +0000039662 00000 n +0000337191 00000 n +0000337078 00000 n +0000042564 00000 n +0000334570 00000 n +0000334618 00000 n +0000335215 00000 n +0000335246 00000 n +0000335662 00000 n +0000335971 00000 n +0000337226 00000 n +0000337614 00000 n +trailer <<069C06BEF91F480A87738A5FF061A876>]>> startxref 337803 %%EOF \ No newline at end of file diff --git a/docs/assets/cldk-light.ai b/docs/assets/cldk-light.ai new file mode 100644 index 00000000..1eb1e9d2 --- /dev/null +++ b/docs/assets/cldk-light.ai @@ -0,0 +1,1922 @@ +%PDF-1.6 % +1 0 obj <>/OCGs[25 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + application/pdf + + + cldk-light + + + 2025-02-01T18:33:43-05:00 + 2025-02-01T18:33:43-05:00 + 2025-02-01T18:33:43-05:00 + Adobe Illustrator 29.0 (Macintosh) + + + + 256 + 40 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAKAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A6c7eYfzL1y+htL+TTPKO nS+hzhryuHU+xHKo332UU2rnVgYezsUTKPHnmL3/AIfx9u+7zx8TW5CBLhwxNe/8fYjH/wCcfvKh UcL+/Vv2iWhIPyAiGUj2oz9Yw+39bYewMP8AOl9n6kTY/kb5ZtYp0+v37GYABllWPiQahqKlGP8A rVGV5PaPNIg8MNvK/wBLZDsTFEH1S382tEvtf8n+arTyzrF6+p6NqoYaTqE1fVjlX/dLkk17D6RS m4x1GPFq8Es2OPBkh9URyI7/AMeaMM8mnyjFM8UJ/ST9z0fOed0leu+aPL+gRJLrF/FZrJX0xIfj anXigqzU9hiqB0H8wvJmvXAttK1WKe5YErAweJ2p14rKqFvoxVkWKuxV2KoXVdRg0zS7zUp1ZoLG CS5lWMAuUiQuwUEqK0XapxVBeVPM9h5m0WLWLCOWK2mZ1VJwqyVjYqahGcdR44qm+KuxVj3lfzxp PmS/1aysYp45dGlWG6adUVWZmkUGPi7kisR6gYq7y9540nXta1fSLOKeO50WUw3TzKgRmWRo6xlX YkVjPUDFWQ4q7FXYq7FXYqw++/N38vLC9uLG71b07q1leCeP6vctxkjYqy1WIg0I7HFUx0Hz95P1 +b0NJ1SK4uCCRAeUUhA60SUIxp7DFU/xV2KuxV2KoLWtWttI0m71S5V3t7KJppVjALlUFSFDFRX6 cVUPK/mOy8x6Fba1YpLHa3XP00nCrIPTkaM8grOOqHviqN1C+t7Cwub+5JFvaRPPMQKkJGpdqDvs MVSryf5w0nzZpTanpglWBJWgdJ1CurqFYghWcfZcHY4qnUc0UoJjdXANCVIND9GKvOPyXuYrKw1L yxc0i1bTLyUywnYujUUSCvXdafKnjnRe0EDOcc8d4TiP7Px5ul7GkIxliP1xkWTeVPJ7eX7zVbg6 jPfDU5hN6c3SMgsdtzUnnuduma3W6/x4wHCI8Arbryc3S6PwTI8RlxF2reTm1DzZpvmEalPb/o9O Bs0/u5BVjvvty50bbcYcGv8ADwSw8IPH16j8dFy6PjzRycRHD0Y558uotU89+VNCsiJbyxvF1C94 7iKKMq9Gp0LKp/DxzYdmwOLS5sstoyjwjzJcPXSGTUY8cecZcR8no2c87l4j5C0my/MHzrr3mLXl F5a2UixWNo5rFxYuEBHcIidOhJrirM/M/wCT/lrVpLS40tE0G+tZlk+s2Max1RdyAi8FDVAKt298 VTjzj510jyfpcNxqLSXE8x9K1t0AM0zqBU/sqKV+I/2DFWLw/nNLaXNuvmXy3e6FZXTcYL6Xk6b7 /GDHERt1AqRirMPNnnDR/LOhtq98/OE0W3jjoWmdgSqp23ArXwxVgGq/mlfan5U1dNR8s32lWF9Y XUdlqLBpIWaSBxHzPpx8A5oFO4qfpxVO/wAj2Vfy3sWYgKJLgknYACVsVUZfzemuri6/w35cvNc0 +zcpPqER9OM8RU+mODl/lscVZR5O846R5r0r9IacWQo3p3NtIKSRSDfiwFR8iMVYH+Sf/KUee/8A mNj/AOTt1irvym/8mJ5+/wCY2T/qJmxVN7783FtPNuqeXBo011cWKA2v1ZzLLcyn0yI1i4DiAshY tyNApxVQ0z87LFru60/XdHutH1O3XlFZGs0kzGnGNBxib1H5fCKUPjirUH5yyQa5a6dr/l270S3v WCW13cMd+RoCyFEoASOVGNMVelYq7FXjP5caJo2qfmF56XU7C2vlivpTELmJJgpa5mrx5hqVpiqJ /OHyFoWm+Xj5m0O2j0rUdMmhctaARKytIsYoiUUMrspBAxVnGj+crJvIdp5o1WVYYTapNduNx6g+ BgoHdpNlH0Yqxg/nNei0Grf4T1D/AA91/SZIB4Vpz9PjTj786e+Kpv5o/M200nytYeZtOs/0rpd7 KsbOsnotGGB3IKPuGQqQab4qyXUdbsrLQZ9aZg9nDbNdBhtyQJzFP9btirDb3zRceZ/yi1jWZbH9 HrcWl0IYfV9aqICvPlwj6sDtTFUL+XvmbS/Lf5NabqupScYYvrISMfbkkN1NxjQdyf7emKp9pXnH Ur/yTf8AmTUdEFlDFazXNvYvP6jTxRRM/wAVYk4K9KDY7b/NVL9C85u/5ew675e8sAtJM8aaLZsF ApIUZ+UcQHap+DFWEfkb5l1mF57CDRJbqxv74yXOqI5EduWQbMvBq9B+0OuKvS/NX5eaTr15HqcU 82ma1CKR6laNwkNBQc/5qD3B96ZtNF2rkwRMCBPGf4ZcnA1XZ8MsuIExmOoYj5v0Hzz5b8uXesf4 zurlbQR0g9AKW9SRYxVzI38/hm10Op0uozRx+BEcV735X3Ou1eDPhxGfik15edd6ZWfkbzxe2UE8 vni7WO4jSRkSDiwDqGoHEtR165j5O0tNCRA08dj3/opvhoc8ognNLfy/ayTyj5F0Xyykr2vqXF/c /wC9V/cHnNJU1Ir2Fd6ffXNdru0smpoS2iOURyDm6TQwwXW8jzJ5sizXuY8a/IhotJ1vzN5cuT6V 9FMhiic0Z1haRHIHelVP04q9R8w+Z9D8vWsV1q90trDNIsMbNUks3sKmg6k9sVea+fpFk/OHybJM yvpzxxNbsTVDKZXNQen++6YqyP8AO/0P+Vban6nHnzt/Qr15/WErx9+HLFXnXnk3X+D/AMtxf1+q cR9a9T7PGkPp8q/8VcsVex+e/T/wPr/Ljx/R11StKV9FuP49MVYH5E+tf8qHvfqtfrH1bUPT49a1 k6e9OmKoT8q7f8xH8k2TaDeaTFYF5qR3EUzTB/Vbl6hTavh/k0xVkf5aeSdZ0DWtc1G9vrS5XU5O U0NkW4RzrIzkcWHw8fUIArtiqT/kn/ylHnv/AJjY/wDk7dYq78pv/Jiefv8AmNk/6iZsVa8pAH8/ fNFR0sjT77XFWvNqIPz98sEKKtZqzbdSDcgE/cMVb/5yNAHlrS3A+Nb34W7isTnY/RirK/zB8qea PMH1D9Ba7Lov1b1vrHpSSx+r6nDhX0mWvHg3XxxVR8g+T/Nmg3d3LrnmCXWYp41SGOWSZxGwapYC VmG48MVY3+U3/kxPP3/MbJ/1EzYqnH56anaWv5fXlpK4E9/JDFbR13YxzJKxp4BY98VYj5507UNO /InQrUqyFZLd7xD1VJVkko3yd1xVlFvpX5pXmgR2sd/oZ025tFiRRFPQwSR8QPD7BxVQ0P8ALe8g /KvVfLdzdwag920lzp01sS0YPBHiAYgf7tjrt44qwy5823Wpfk7o/l63blqt5erpLR1oxjhYOg8e jxL/AJ0xV6j5q0qDSPyr1HTIP7qy0t4VPjwjoW+ZO+KvDbfTvNK+TdD8yXlvHe+WNGuCkGnuTR0e 4d5ZJFH7LSn06n22p1Ve9a/q1hq/5aatqenuJLO60m7eJhtQeg4KkdipFCPHFUp/I3/yXNh/xluP +TzYqkn/ADjl/wAovqf/ADG/8ykxVkPnH8wryw1iDy55bs01TzBPu0bk+nCKchzoV347n4hQbnN1 oOy4zxnNmlwYh8z7v7HV6ztAwmMWIcWQ/YlOuaX+bnmXTJNF1O10q0sbtoxcXELSmRFSRZKgGR67 p4Zl6bNoNPMZIHJKUboGu6u5x8+LWZocEhARPv8A1o78yZtSs9K8veX9OvZLNtUvINPlvYqhxHQI aUIO5YE0PamUdkRhOeTNOIlwRMq8+bb2kZRhDHE1xSEbZZo+gRaXoCaNFczzIiSJ9amYNMTKzMW5 UHQvtmqz6o5MviEActhy2dhhwCGPgBJ8zzYR+X0Or+XvO2peT7jUH1HT47Nb21eWoKHmi8QCW419 TcA02r3zddqSx59NHUCPBMy4T9v6nV9nxnhzywmXFHhsfYmnnL8qdH8xaimr291NpOspQG9turcR RSy1U8gNuQYGn0Zzju0s0v8AJW1/SUOoeZdau/MU1uaxR3PIR1BBHIO8zMNunKmKsp86eR9H826d HaX/ADilt2L2l1CQJImIoaVqCDQVGKsVh/JmW7ubdvMvmS912ytW5QWMvJE22+MmSUnbqRQnFWYe bPJ+j+ZtDbSL5OEIo1vJHQNC6ghWTtsDSnhirDrf8mr46fPp2o+ar6/sPRkisrNgywxMyFY2dPVb 1BESGVfhFRirLPJHlNfLHlqHRGuRfLE0jGYx+mGErlqcOUnjTrirFZ/ybmtb24l8s+ZLzQbK7cvP Ywhmjqf5CskXGnatSMVZV5M8laX5UsJbazkluJrmT1ry7nblJLJ4nsMVSTSfywm0fzlca9putzQW N5O1xe6T6dVlZuZ4tIHHwq0hK1Q0xV1n+WEun+dp/Mmm61Na217Obm/0wR1WZmLMymQOvw8mJoVO Ko7SPIX6P8/ap5t+ver+koDB9S9LjwqYjy9TmeX9z/KOuKu1fyF+kPP2l+bfr3pfo2AQfUvS5c6G U8vU5jj/AH38p6Yq78x/IX+M9LtbH699Q+rT+v6npety+Bl405x0+144qy3FXYq8suvyX1n9O6pq 2mebrnS21S5luJY7aF0NJJGkCMyXCc+PPwxVFaR+Slimpxal5j1e68xXMBDRrclhHUGo5hnlZgKd OVPGuKs91nR9P1nS7jTNQiE1ndLwlQ7e4IPYqRUHxxV53H+S2pRQnToPOGox6E3wnTgDXgeq8xIE p/zzpir0Dy/oOnaDpFvpWnIUtLZSEDHkxJNWZj4sTXFWE6X+TVnYed/8RjUTJaJczXcGl+jxVJJQ eknqH7JofsdhirNfMej/AKZ0G/0n1vQ+vQPB63Hnw5inLjVa0+eKpb5a8l2mkeS4vK13KNRtVjmi mkKemJFnkeQjhyelPUp9r3xVJ/LX5ZXmieXNb8vDWjdadqsM0Vsr29GtmnRoywIlIfZgStFqR2ri qeeRvKv+FvLkGjfWvrnoNI3r+n6VfUcv9nk/SvjirHfLP5VXXlvXheaX5gnj0YzNNJoxj+B+SlQG kEgB47b8O2Kp35a8gaPoOsalq8Dy3F7qLsxlnIZo1dubopAFeTdSd9hmy1faeTPjjjNCMO7q4Om0 EMU5TG8pd7Js1rnMQ/Mnyvq2t6dZXGjSKmr6TcreWiuQFdk341b4a1AIrt45tuydZjwzkMn93OPC XXdo6WeWIMPrgbCb6Bc+Y5fLUM+r2yR656chltkIC81ZhGKhmA5KFrvmJqoYRmIxm8djf73I08sh xAzHr7mO+SvL/mp/M+oeavM0UVpe3MAs7eyhYOEiDKxLFWcfsD9o9+mbDtHVYBhjgwkyiDxEnvcP RafL4ssuUASIoAdzOs0jtXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FX/2Q== + + + + uuid:b2891fd6-ca8d-d44f-b7d0-a65111463fd6 + xmp.did:8c648965-5b4a-4a5f-9f3c-c3e570c2283f + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + uuid:a55cfc5e-3c08-8e41-8fb3-b4d570f1e48c + xmp.did:6b203221-a0f8-423b-b13d-979831625d90 + uuid:5D20892493BFDB11914A8590D31508C8 + default + + + + + saved + xmp.iid:6b203221-a0f8-423b-b13d-979831625d90 + 2025-01-31T12:56:43-05:00 + Adobe Illustrator 29.0 (Macintosh) + / + + + saved + xmp.iid:8c648965-5b4a-4a5f-9f3c-c3e570c2283f + 2025-02-01T17:07:01-05:00 + Adobe Illustrator 29.0 (Macintosh) + / + + + + Document + Print + AIRobin + False + False + 1 + + 1435.982675 + 213.739938 + Points + + + + + IBMPlexSans-Medm + IBM Plex Sans + Medium + Open Type + Version 3.005 + False + IBMPlexSans-Medium.otf + + + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + White + RGB + PROCESS + 242 + 243 + 249 + + + Black + RGB + PROCESS + 46 + 45 + 48 + + + CMYK Red + RGB + PROCESS + 186 + 32 + 48 + + + CMYK Yellow + RGB + PROCESS + 244 + 225 + 31 + + + CMYK Green + RGB + PROCESS + 39 + 138 + 71 + + + CMYK Cyan + RGB + PROCESS + 0 + 151 + 217 + + + CMYK Blue + RGB + PROCESS + 46 + 55 + 128 + + + CMYK Magenta + RGB + PROCESS + 185 + 0 + 119 + + + C=15 M=100 Y=90 K=10 + RGB + PROCESS + 156 + 39 + 54 + + + C=0 M=90 Y=85 K=0 + RGB + PROCESS + 189 + 62 + 60 + + + C=0 M=80 Y=95 K=0 + RGB + PROCESS + 193 + 84 + 53 + + + C=0 M=50 Y=100 K=0 + RGB + PROCESS + 210 + 142 + 46 + + + C=0 M=35 Y=85 K=0 + RGB + PROCESS + 220 + 171 + 74 + + + C=5 M=0 Y=90 K=0 + RGB + PROCESS + 236 + 222 + 68 + + + C=20 M=0 Y=100 K=0 + RGB + PROCESS + 211 + 208 + 46 + + + C=50 M=0 Y=100 K=0 + RGB + PROCESS + 157 + 181 + 60 + + + C=75 M=0 Y=100 K=0 + RGB + PROCESS + 106 + 159 + 67 + + + C=85 M=10 Y=100 K=10 + RGB + PROCESS + 77 + 133 + 65 + + + C=90 M=30 Y=95 K=30 + RGB + PROCESS + 58 + 99 + 63 + + + C=75 M=0 Y=75 K=0 + RGB + PROCESS + 104 + 162 + 105 + + + C=80 M=10 Y=45 K=0 + RGB + PROCESS + 87 + 153 + 148 + + + C=70 M=15 Y=0 K=0 + RGB + PROCESS + 102 + 162 + 213 + + + C=85 M=50 Y=0 K=0 + RGB + PROCESS + 68 + 112 + 174 + + + C=100 M=95 Y=5 K=0 + RGB + PROCESS + 45 + 60 + 128 + + + C=100 M=100 Y=25 K=25 + RGB + PROCESS + 45 + 51 + 93 + + + C=75 M=100 Y=0 K=0 + RGB + PROCESS + 87 + 50 + 126 + + + C=50 M=100 Y=0 K=0 + RGB + PROCESS + 122 + 42 + 123 + + + C=35 M=100 Y=35 K=10 + RGB + PROCESS + 133 + 41 + 91 + + + C=10 M=100 Y=50 K=0 + RGB + PROCESS + 174 + 31 + 84 + + + C=0 M=95 Y=20 K=0 + RGB + PROCESS + 187 + 42 + 111 + + + C=25 M=25 Y=40 K=0 + RGB + PROCESS + 189 + 178 + 156 + + + C=40 M=45 Y=50 K=5 + RGB + PROCESS + 150 + 133 + 120 + + + C=50 M=50 Y=60 K=25 + RGB + PROCESS + 113 + 103 + 90 + + + C=55 M=60 Y=65 K=40 + RGB + PROCESS + 92 + 80 + 72 + + + C=25 M=40 Y=65 K=0 + RGB + PROCESS + 181 + 151 + 106 + + + C=30 M=50 Y=75 K=10 + RGB + PROCESS + 157 + 123 + 82 + + + C=35 M=60 Y=80 K=25 + RGB + PROCESS + 129 + 95 + 67 + + + C=40 M=65 Y=90 K=35 + RGB + PROCESS + 111 + 81 + 56 + + + C=40 M=70 Y=100 K=50 + RGB + PROCESS + 94 + 67 + 47 + + + C=50 M=70 Y=80 K=70 + RGB + PROCESS + 67 + 54 + 49 + + + + + + Grays + 1 + + + + C=0 M=0 Y=0 K=100 + RGB + PROCESS + 46 + 45 + 48 + + + C=0 M=0 Y=0 K=90 + RGB + PROCESS + 69 + 69 + 72 + + + C=0 M=0 Y=0 K=80 + RGB + PROCESS + 89 + 90 + 94 + + + C=0 M=0 Y=0 K=70 + RGB + PROCESS + 110 + 111 + 115 + + + C=0 M=0 Y=0 K=60 + RGB + PROCESS + 130 + 131 + 136 + + + C=0 M=0 Y=0 K=50 + RGB + PROCESS + 149 + 151 + 156 + + + C=0 M=0 Y=0 K=40 + RGB + PROCESS + 169 + 170 + 176 + + + C=0 M=0 Y=0 K=30 + RGB + PROCESS + 188 + 189 + 195 + + + C=0 M=0 Y=0 K=20 + RGB + PROCESS + 206 + 207 + 214 + + + C=0 M=0 Y=0 K=10 + RGB + PROCESS + 224 + 225 + 232 + + + C=0 M=0 Y=0 K=5 + RGB + PROCESS + 233 + 234 + 241 + + + + + + Brights + 1 + + + + C=0 M=100 Y=100 K=0 + RGB + PROCESS + 186 + 32 + 48 + + + C=0 M=75 Y=100 K=0 + RGB + PROCESS + 196 + 94 + 48 + + + C=0 M=10 Y=95 K=0 + RGB + PROCESS + 237 + 210 + 53 + + + C=85 M=10 Y=100 K=0 + RGB + PROCESS + 82 + 142 + 68 + + + C=100 M=90 Y=0 K=0 + RGB + PROCESS + 43 + 64 + 135 + + + C=60 M=90 Y=0 K=0 + RGB + PROCESS + 110 + 63 + 133 + + + + + + + Adobe PDF library 17.00 + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 3 0 obj <> endobj 5 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/Thumb 30 0 R/TrimBox[0.0 0.0 1435.98 213.74]/Type/Page/PieceInfo<>>> endobj 27 0 obj <>stream +Hˊy_zz`qf0wόpkH߉y#'+/'ND>ysܿy~n)^Tr s8>nپ{ٞ˗=\7_.lOOo_~p?؞lO/qOˏ[GW^^[0?}߽}<}?wx-+ fSH/j=YUo7Ce~܅lz_N!5b!6;Wh0uX7ц}^6K0.ᓭah}Lk-X}Y1; m90`7Ki9y~A.[asi yHuvw~$RUeops+ϡ5&݆؋~(|X88=!K,.A:ȧ'b+*Y+(Q)\cNVCTSr\,ʙB-τ! &х\L Ӈ-4?+BW\0CCR Xy|%֡TF'?6 ~=KzY#C@feøgpx#oTNdR +qQKNJn6)YK&7ȸqKSyω ^Lh9@rf 걬f^ ػe4r9ERd +En'Z߆d3*XR1 S?,{B{ 99=&!Q +]kQKgj_62<$1ÿWéJ+ u AUzPzN $])U iR,cD% Cr#IՅJ$H(=>{2U)Vbżh!I (F7S qCA7Eۗ /uLfr%fqU TbCET&Pm)U +Ϝ1c + .gX v/Ñȱ))&&4+!,(B$PUWD%P] +9H˚^EJ˩R|3 ;R=JKJ7Y+hD\qr2"cY"U)BˑtROm9)TfXr>{t. +tgCmAz!X8"Kl4mP 5/k ǵj sUQT83T諈 mQ>"%uݽ+G|`*Y4lSݥsb:U9AcX2p c:{2 99@S <"CuoB$H_}d=~LD\>6i3uCuխ"$j<~'4EQ2(~O8%#Y%o ! ޾شy:O:{H 2{FO銩"L=tw->NįŹʷ.37jhMZwHwuvL-2E&4LYԟqёP)MtC:w!j ۏ_*UbD|bP_wq z`S"HpDTգM2HRa6P)O՞Y@wvh ++$Ek^Mb-x}U8Q{{ŀ bEJ'i:23B>4L\JfL^fuW**Vbj0 +ҤZuL'unנ7yt\0GeۈtJ$uӁƝ~X6E#)a]5z:~RymcA l7 |+tvk EI/%7zQHTfMC'z˒ٸZ)Rr*OZ@ @Y"Jz5+)'!Ku@r-ݟzM'OA̹1oj{#ۚ(ٴuD_,I= 'W! r1K`θW8o=ԫT <-^?sJ +u[U"51)zuq3/4i,Uف^˛.j &Hۼg;ټ[R3NN1Tg)WsR5j=ȧLT?3ͪ!K.Ѡ~fWhQDjRSkj2|kRqCn:RkJDrKl$Z_@묅#HP|z:L2@wn&7/?}R|sZVGW%~0%zOFO"YW]ɼ1tB7?e">' v_G˙P5b85(DD}1ǖZ)R*s!Ɲ DW@,'yHiWD3=`JewH]?0*MֺYZ6@MbP}8U4m_uyixڔ endstream endobj 30 0 obj <>stream +8;X]Qb8%r<#]*p4V$K\t%pHH52>fbr4_^K"%20]d)6MXLY-u[*Re<_D!gD1G5+##+ +GTCcZ1lq9bM,8X*#n1<\0JVm>`_B2]QR8JD+c#p?$&dOJ[rAY!ZHN&u0]S_L[F]G+ +H]oQB$j]Rp3HeE#M5=lB#)H#Rc*6OW9W0qK*cc18+u+_+J<>3RCuAW#ANWVA9F4'5S[b^_sYu3 +pIp.TamPAUBKcsL4j#h:l"9>3C<)`4S1Z[1dBukWCL7&A!<<'!!!*'!!s%sCCao~> endstream endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 29.0.1 %%For: (Rahul Krishna) () %%Title: (cldk-light.ai) %%CreationDate: 2/1/25 6:33 PM %%Canvassize: 16383 %%BoundingBox: 0 -214 1437 0 %%HiResBoundingBox: 0.000000000000909 -213.739937990305 1436.42578125 0 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 192 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 -213.739937990305 1435.98267476687 0 %AI3_TemplateBox: 306.5 -396.5 306.5 -396.5 %AI3_TileBox: 339.991337383435 -394.869968995153 1073.99133738344 181.130031004847 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 2 %AI24_LargeCanvasScale: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:24 4 %AI10_OpenToVie: -1135 509 0.5 0 8450 7744 1716 1053 90 0 0 6 58 0 0 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -1135 509 0.5 1716 1053 90 0 0 6 58 0 0 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %AI17_Begin_Content_if_version_gt:24 4 %AI17_Alternate_Content %AI17_End_Versioned_Content %%PageOrigin:0 -792 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 11 0 obj <>stream +%AI24_ZStandard_Data(/X\D +=@k0 Àda̹,hƏ۶j\P!51I)2ɿ"+R + w壌nbVauVEXQ fJBB +2 C0- bn(-NPA +%e!c;+m-ħN W>_Tt)XiiZuȔo=J!cwbj&PujCf7&Pv?{(T QIT rx5ņby.$˲ ,aX x)EbI& Yr(HVkbb|5P X9Wȶ2*ơ0Mb "rJ* +.ǒ,B +S2+LV{$,egm)Bh4G2qLI[ +22WwӁ$((D6lSk~} 0Q2>;dPV֒mMD?D]~2T8)o^KJE[Lf̛g;1atHy'"Sm!c$uܱq IB 2M6AbRRHQ$Krl^bI%h?ÖjPCJK4V3-IK^1ocY%I+wd*:BZ:%|6È ++K)n/.hP:-1S)EDU*ruBuH=ǁ$ʡ8CQH!v(r8I\yL666( q2e$(EdUjHOMn<JcK(b!ɱ>{]U:R)BCq!xvth }IʇrEdWm ,hQ Q$QId[=R("42C +UaDBHªĨ GYDDAΐB9=0;+Ǒ<^6m=zѠ\8-\rO/VU)Xqr^fB t#"a1x1=6y1h^J'1Ƙ >dl(3 a]"*Qeŋk dPPEQ( +K-F-.|QeY|S"P*Vq(HŢX +zi(\2I$̼t* DDC#r!wXb݌SYii\bfjn>D2I%T$5uz(*BicMK.1.9LH,R S%U9b,"bšɁC<:+O~wOWŽ-D6_ eQ.1S/OC.9#4"&*.D0AT @eQ J,D唳K1Ŭ*) .E,$ +URAŔRHY%I$9'd%8dA$A Q#I ))I&2 2FXHh Ģ ĐM1 Â!!4iȔ1H C2T{.2 ~s!NWs6!cFĔ!cD \`$@8DhP@`$X8Dh0b\& \`"@T`BDppXDp +"0hx`¡A   @!1l0adB☐82h +pP@&2pp +",!" 0P D \x0!P + 4xXlL`@`"0 E84L  4H4@`"@(0pxFhP!B*^3%C瞳55n 7O-&4hMplfRD "$"D, &` H@ 6`m$XT`BDxp0'8l&&HD( +X0`BPh@ +L`$0d a!0аѰH@A"!"@a!B ń +",bI;$_7=r`NCaa 2jgs.@$@8D,,6,8@B ‚ +<ЁI`1Ѡ@D8Dp&2 @`$X쨩GtKoZDyY^.#4{wweݺtHQf>1wf\K?'4wDwII2?w#{Zlr QJeҜ_\%PͿSB=eK޹/qɨ&<{%A*ĵ:hK;>2JW^t"Â>V9lbbtrU U|7e!!fݎt>te4 sh𠕹 s]̭*s!榳Nu~F>&5-4uEwÓUT<]3i+5Oxlvi窌+4gYwU\2ңFsv[I q$K#A[ɂG2@5h }5\xeB*۱2JfM24)U[fDS$ +%AL"ZU&!ݶ'*Y*ZfX)#IMi2k#MRqdR 2L$4P,Ɓb{Q3$h Z:I% mbQKH^)b'ūơWhᒿu91@Eax8P<9˥wWZWZhjkJiGU5:"9E3/)$zHdIݣ d]BJ)E!f$**ҿ/|"u-)hE<6GzWofz6U(w{{jD'oJt&?671tSv!4uћg;[R+5tv'2oWNgXw޳nٻvZ'os=LGg2ydiSy\ğdxԃk΢QZt|h=TxеۤV׭$=7oF,mjL?vl+ƾU?f_#|ٺS9槏O5ӦDV4yiEGxFw[Zt{v\rЮ3W|rNONFoVyyܽ|xC]<<\5qMk#fIiĬ3Zt愈{=j=\ װ"%Qצ:\\9"&yd版x2%U;;xIhUܼijӹGޣ>r+ԡ-U!Âɼ?ܣ"f).!޹D35;/h*>;h{xZSH#Y[G?wÃuwЌQ-ЙY{&13 :uh3FFi2S:dRi. -}ӨRc߮v%JsZ;&ro\Gcgnwh.mvg27>eKϜw}̌YV/+b?vQ1mv2Ϛ-5-\;7|T3e\ou3Juj3<5SjnDu9I_tLo^o^eӻj4l[l+:Z5;92ץ8޲-g?\V˳]]MszjD:%kU"X:[:<={}v!Enzt[*=,m_}z7nJf;ݩ|s{]63S5C,K<_ʟpW՛hGJ}Ytx.̦kΧ?[dfxH>7❴2bay+/ʷ.}L|]]:ze6eE赻ҘGtY;Mx<|(}'ј&w^LjzKf)Â1hGImyZeGk窼| [O^(]W~UHfw nX ,:+=*חYWguk7VtEwS "Â! @cX06ϡO&vJΎjձ}ţunV^L\B#C\߭S}XU|RcVIu*;JZL[Udn-ʰh}iwNS׺PjJǵD%{u(쐌񝅪VM!unYN7tO<𵮽ï >$74]uNU^}~wǨuJwкw=1*]:ګ^U2+.:݋x;W o*0Ewջ_%ui%ﶺR1,^U7-nTeC3//=ޓg*pcT]}TUڊvk{wjtVFԲT{]iXZSgJvpWlDzi^!Lu`vYܥ:0giUNwcu) ˷fYvʲ=ٍFgwK;Vg[םuuJVj՟]yVvHwBo꾺t% (Lpťczϒ-o_~)1}>:S-RmүkOViW+[quuKxrq)gWN뤼R᪝7z2TGz~QO,{nJγڽEQC#1˙x:[-SJ?O"]kف1}wIJD2j7H|Q 9{Df~UMr`6OĘ٧IjDK×Qoբͦf+#v51)I;|e &ݺ)"ؕ7X>ue,Wގ[T3D"|2gidfwzq5'~ ~QN)=-ᄈ*dJ=eSvlJz;A/jc>2D/"V4+*-b*.i +-Z4>_Xvs*-,hjY}f~hvE'F*MϿf˟=0 Cbf1Bd&I @(Ñ}>vD`D*Fx$9f !_2J<$$N&[j^樠{[ IU!I g3L[q9I2ܖ!wxȬܖX3fg4wındiLE֟1N28>]``yD n?/YkO&qsAk 3NAGJކO|3xͭd#$ZȬUuZ8=w N23=HZDp^?t9\_IlT+"N"RvN^R HHB2>cv]F +.vAH"8q!$TS2%urq}CFtF;iMf)bm@Nx0'¢, "dDwk1_dɈn#Ď,-^д#FhrV02gGFd#a@,#oF V<[7$pR QSNC|=NϬNQ4((vt :xakR98hC06X=LѴ-[( @Od9yb<0i /R3"%}^&AzX&/ƌ%JHN(5%&g< MnW^7>7CʞhC|k +&յȐ,0óQ,[}<3)3U,tE)-,JYFg lbV)JE x_!^ UH׸yEw,LTONSLڠPfdRR](e&M&eR('lN7&{H߻Mwb3|q0Q$H`^dRCQ@ߔCFnǮ5R+i *qvHH]AGHU8oBf-Fk Naȿl'L*8W 6E:*+NM*B:UEQeĉ*7ELSH 4NTAjPu õu3 30)S*y;B/iiNM# Ii*,600'v)9z RIaɔԨd+F| Ë Y`Ɏ7Jn:C!Z1j%-(DQ +vl#م( $*R0di|#[^M{_K6]ӻ+eWk v'D6F3P/}i#ppq"o2w/+1t*[N_a/N ~֭7P+t}F:_Nk6d[]WL W&w ")di.<n3!'5YY!A(&̆1OVdXŎX2#ZaNR† k+ R."of3[DyʚU [8jʵV%q1~ vIVYȤp=%*kAn3Naffb³(4FsX?i/m(DNħ:QBf!l2xH@'>  +mO \͎A]UrIo&jp +M6Tf]h `Ff*V(&ɻk٨0¼.u5^_kz5<,^)Ym6W6)]EȢ{1*c&YfP'UAԺa_RHo',v@6s)g5Q7_NUGtpr.X51OxT+K}՟!ir@I+sA Ɖ +'Z/ (EǷjJLUJ s)Ce5i/aԇoλòu9& +DʭL $3*Kg z=E| r==%٠k.qؘ #s%̚lf[p /LLo@yK(cdUJӡM?8דp94f23W֗)b-e2܂3%Ngg"Y].рr;@>( /#ͮ4[ɷJe>ڭj N2JNLD7ML[ #R솩/7b[yolgnSv Kh^8P%Fvk]3pBF]1co՟b_+x /oˊ r<  +ŲY?AlID_5v ʗc"5MTd>XN=vB(Z(Ym3WgzKR5pPJN*y }ՎPK[B-8u=X\+T @6ն5i@L6ڦZJ\WG@wzeIOruBՆԘ#xxz4ѫuIV v4#abA8ƫEa[#zȱ\G867^K\W#Vo݀SK&0 n9[s\['固m[&Bi W[ zoKՆV⚦ +tD6pǠ \qM}+px?zy4?ij]*i,x~dGѷ"%8<sZF\#5gtAp͉7~59f6\4f׬#6kܮʨk淭EkGWUzMfu8l܀MfP4Lk{$ljo&Mz3`34&}hǻik PSbb"w]: oeYJ.MH]r_j-oCGQ0R)?&zvA[`X+oU}?sulvKk7a GkHbf%wء^+/.A+pCBQ|6 \3 \ g4k[UC‘Iඐ/Ovtp-;V I`mqC=wĨ[ JX ߂,(`qoADC=_ +yC7|cM᰸AJ$▇gX_^&f{si {'ㇾ~PiM7.wm$ +|0:C"ʆtY>/>' K q}8j琐C]!V3ޑ[̡r:s(Jf/Ds( +wjS̡13b/g)^ ȧg);feC$k, Skw*a$,ǭ=K1N~Sye#1-z`:Cٖ9c-tQz8O/֤bztTd BsOp(0٠' b+񉃭U +X@>= lI9SzAĉw z_.Xɀa'*X!O.M`/\Bp]e_Db + \NJ%ٮ53Ԏ%.$d(n9ˣ^G:SL ^5{P㈫]TFI܇n@ĽhbbkTrRByq`Gl3xDTJJn4PKp Ȥ&hj 24$6 +X5s2BN^i\:YqN_s i^f+ };cfѯam, +Q.s_)`/U#3s1  ;Mv^rx#)Q5e2.E4X%ƭw7vbX'16hu7Pa!hWZfw5r^z!V'o1bC;iBr&\Vw!T5k^_xz.#BTHj cvXer/24L%9TA洹 x |H+SoJ18"/ H橇 'L2hDIE'=_8l?kʣP RM<=(R\ 0߶g3p\<]\K[J5"h^\@2 +x@`{-3{İ\UCgds=]5v3cTr滤FC#_nY`+^42CޙFlSiߜ&I `R%cQh<ZAy(zؗ+ tm.u]3Jhh4olKdH1Z] +js2i< ](~QGbTheIM}Qn:DP3vA67TbD +?ƮEoX,(>35KJ+>}$Tz|35˅z +~{!PaBrEaAӃb^X  ;ɸ)[\ޮ~Wqr(~^)O>5@/(nd6Q1fI% g)c틜R$&X9 aXjW |; -؀CB@zBiMW|jZe3-Ƕ 7đoRf`I;FYjE[ƀ<ӟ3,GZNnrdgĶ{y_"[ZGRf^ՇqG>w[t̀U`{4W?|.|n=i,X݈&'7FN膉3#ʾ s!/kCpdbDez]:0 ׬\Ķ +u'Qk@/E+$[~#zt/_9,WiPlVRu(p TeHUfUlSi (g`ܖ$&5WGG0ъ(v{aq~\13satY8 :R"=V?oN ה^Z-QܭxBӘwDp_%!3 ERWM*"Wy }IK{;8 M_ۡw13졜) Yu +i=R,s{e TZt`~l_=YzcXW_l8ת]+h{sb ׇj}x Wfsz;]{[ Oz\@s/ _ѽA/+ -8ZP% e +767f۩l7B/!E`t:RJ乙eq`HMλ[h֤\}ߊryE/S@fR!DG3 DG7Ґ&29gY|Ra{ܧ[2,p^#'^>k3a\V6 M.Qz's+ }D4`64-( ^=}NSm ;K-5R,ڄՕWiND4^Atf&h?, 2upT;ZDca=bT9nfZ  hJ ~,:hbU Z2Ed7A H:C?&LPþ>햐`OÆIif |-(L$nNs !E#[~lp>7(f" |аcӜ 5Ec*HPٗmwA ;pTTlkm +Tyx)c WjtC};t:YbW\v0ЌbS~, bEfsr=ذis8ѕ(g0CGi[.?uJg5ZqMIOIcL(5l =F%?+_ +|W5H<&Fi8+ob_wkp_O3GڒSelY W$5r!"nVtlxx *%7x]-6P/t?_}c?:SV [hO'xt]t퍎yW$?4LM +~5o鏷Ҙ][%+/tG:ږaܦUL)]PIוF7'P +Q]oiF 3I!DWIɽ{\x'Wr eJ.rf9Q f_gR8Na`hwM(܌χ̘o3آj7 *!xd?_R<#n.m؜oB1yr:=e"W;<?Gȷ ܢ|,+ YOReeA[2zyb{WjvR gĺqWR_ +%{uP*=ynM礻$LNjȵY7(ߨ<+q#?];ǣ +` o +J7ew/{|38N*t-9PiyL`7s'ly_ʟl$qT+J]kg]331W)nȀ+w{΃ +M-[A]s拾WmC`^?S]rf 69R&`\s׮2: +Y_zW&}&jhSQk-_嗐 % eI|ly=gqSj,9&O9A2萩|Nz8)p& fFJ2} -̔puPMj!Q}hHIai}F%ړIFX4Bz"16DQ-pxOU@ɽ>*ћUu$03 lm#jwܫ!AlDQR#O_ф&&@|~7Ёh_lU<<%l|6t{@Az>ĠD D,[^mբ!xk=57NƢ~l}ҷˀ 膕Se=Rv91̭z"@OfB?ɚgNL&& &̈6,o1b6yWhK MМ~]l̯M&t6e\EwF#oEE[9d! ep|qqiԤ;^fy5)K ,ϑI*q @6Jwy=ݐ)h\ xA;6k(0`N s1GLFKS$JDg6r.k)"9+ +bd7S;v%vF LJAM<<(]\:htUfiH'^&IBY| ;|)f +/%+4ټ31Wc"ǘH=k'C 6b +;"Em̖iEh|rꅭ[CP@ HƊ!2m -g,[tFt3nя +J@߳X Tqss +$H}@xM +ڋHK#} 4M{=r{?3q=b=bEq(U*ܨ\heznTz7~brpv ݊ EUL4QsڅwZZ:ʔ=ٞ'Q!Cldf"8'Z"{s&fCWQtI!cMYW;D*3\Dڗ\U7bLV +BYnj:JĈɤ'![C]oJȨ0BbBBC I~yZT-hL j 2ʰO!3B<+P!tg$^b3Tȗ95t9gC%WlR))+\|%Y&f(换Y2!" jك!~-A=_U{KxḴJp@n +RF;1[c9Ud!H_i~ {V T)aB r&wr y5MG{ۗkDgcVW /}"YHBu3zFgWKǀ+wJq y~NmB FUW jџVHBQS)vIGyhkR:%m$[S^2J,d6dIq1mMQ3@W!%Q@s!<XTa0oIws@ Ctb;c>i1jqmG״*ze/ОǒĽfѣYNGqa~}=)˜Bsi( =bNC |Ll2Ol֩D,mY'AF'yHy=N9+z| MLFr2[.(+X)=4Ng#t1}1pp5#yqGJw , bi> eQ6\qU(6a +2HұH}e_`G7B#|0Yy)E\8:J]ceL=H^T17:GP'dۅgڌG0ۓL`L,,3/iw9?}6sf*Y +X u~ +"0Sŝu*tOTGʸIJ֑.HRq@GB#QMסu^SMhV}Hg qe) 02>E Er n)KYx։"`~a,T}򌃅PKotAc$DaªKLMm +' +oQ3RaDI@6IaH15z 0h,mclWR?,([6a6  XܻA` |HȡV?Q rA ί A[J~W׶_yhly,JIw8;ةt3WH𑯥E)#s-zV_pc1֏kD q('>zLlo_eVUUF+3"|!s!ݟ1' ^JYr8AR[0+K\7-ɀru&\} +1Ein,Ԕo"ö_q_܀c;C;Qw^_nO*!%kw-M&M\x2'anRzarD &6/m_+3D20(S+O/GD)$R#İ8׈CpI3Ȯ 3q6N3g'N҉,!R㨝a2|{UwB`C-ߔw[+-T)!Rx|ȹ +WDX-b:/an$0׿gĐ V`gHSdRؐK>0900 pMp?jhDރ{L~YR;3㳉%#!J74JJI e|?E:)D]DƦ3xUgh9g, \ku{)wT(a0xe,h`2gub_'oۯB0zyHwfCb,5lh\ [e4=.pUw6wWl9xs? (6;wN{[hW!C9g +;{%$:vBx PiiI5HL&$ܲ^_K'G‰}DhNQ'0yeiOggZȘ%L-wguVnC' ywenu 0r6? I^Ʈ1@ 'uf NCj}B7o:J]PndfXRiw~J|r ;X47}YsB~ x l*lX?X'h_Bs{ Sh]sTȨxbAF|m8Sk36~{1 NK]:Fb! ʠdg3&gЪ#"{9wQ!?[Qi䳗HA +2ѲX&i7Ro+&XɎ- X'% +]Ht7MacFR/:%jdkV~n&IN+2Ud%vvo5>v(-0#>>fE#GHv.-f)(Kħ~d4^FT.DR +!lD[+(72\R:)ިT8呰&EL3g O$R@~ ATkW˴[$8\z&. y!I׬KbjxO"IOVD1q/$2_Ll_x}QN:*%Pŀ6H{"q:z?쫙+ښ@9R]< $>6mg}Y&6FˮkT>J:tڪd[$1̑I KUIh o. + +W4C oo\ %tAo +Y^lk Ɋ)u.s*2BwuMlFBӨw7AB3NŠ q + +> +S?dt -C"C6n}?1@Ձ,5R5\|Qpe$$`7!>o +w)lzSUp{-lYbqQr*(+ˮZB#CwzdXk^4iˏ@"I'">]wwI&{n.|[|ç|~1GY;|Q~%Ae9[Z E%r%?cd3g[LTg3.5SVƤxIɃL,FMR9?Y9%S +0ƿ^8֐z薚ajWjEҁUQbgcm^HX#4^] cŶ%x[i_}qu +zفA /WhLIc2qr6(0N O$Eun;!ąX"HRƕ_ %`XXR# +"?N\3T3 +Hs,Vk{Dʊ\pYc#gpRO_m~7J lSPX }jiӥ4c( DI~^ +ґ%-dB bBd&DboOYXrx ofgξ?RCټd&+5u L4[~b@f(o @c˹\̲De- 8sRObZemبqrvNc& ܧ[mPI,dj{IwGz^DFB|YN2Hzk =J pG@vZ~A&JA>/{Lfe  +˯LȞDRki@bꝸԧg83}6CF]'ʼn={U9.d58\XȠ/aAN{?do W?pv, Vn]yu\w2<2z?y3Oo$Apď(^tdiJN\: +/ӤiXj 00G8<1k 'eNJ U<DŽ"Kx!a0z*HpH[tu? &$+1 50m᧯;|nY6$ t<ҭ^F_qUm- Hc/6ÕZ/>Ui. i#At/nōG)ٙeMne.Gf3H211 0ӿ`"bH |rfvdigDO5[ˏ-[C`g@Fi @F.ǰ_d]j \`Κ;JrI#t`V lJLZx['fsyh*OchdELaVMfSVBԺE&OvXu[IVOJy+V$dJ۬D)tot;3/ Y-3>b۟4)>ڟ6nW[A85g v;跟PtHܕP陪ضO]h1! I[e)kd2-|rs}O=@3JL@/+7Bq4j1UʥxM|uVݮFlwm&/KW οpf|w&숍,Z=s)>SnZ +3#=wNhl]CVC@8TM(R#:bGDBXzfO_cCU*]%!Ov-Ej "I1 ǭpY0{@' F: lr+TM4 khhR]_q He o٢=A'9D0G Y@ꘄh6k AI +FAo,cA,?[C[,o < NT@@D;6x`sTXB|AbJ8%,:ɑ}$TI6@rj" +Q\U敶O`ŶR!x뢭7o4Nz]tg?Hj!izA͐JP/L)^lp"w&]f&oq R2$8@ +D8CHTQXW _1#UshZR`Å,鲴sZD+ UQDT`\ܥ5 w0·݇3)g^ihLCt\^KCґ{x xCEhu(p7k5P4 {APE/yKXpUJLL / m RxpѦEm)_|j01 +jC{D ]>_ !$}f{O7G* +?U%SƧjO5rHL"s{C;TnŦ$+$ׁh$4!~XS(#UɼB*7Rtt R.4{SuiJ*QӄYQƄG^O[\JgJ3xaRJB.T%ID;XKBQ|sTC7qVCe*.4^wgQ4E*5uy&4"eF! E(H75V%`Q5~D]ϫxyP};5'TQdX߈Bd[ׁ?):_!SqBLL…u0O g3vQ 9D3=M"*di3<17{q0T(WbMHNA}/BFSR3ZIfBe1$#iH)f'ҝ$|P}#pE7JAZ{|j  4+^Q|^#F)JVW׵qU(L.iC'A GO|G01y75'Bz/o2ѣ,>OV~{\L1D;0 FSi\n-v) Fy1`i]a<^n#Tmkab4\M-EAlI#ѦBe%)䨗=% SH53sӐ![X1 +6A@8X5;P9"U&qbhJ^1.(lI]re A < )'G"3-kG)]L.9&8qofxUe(q:A}x׷ܶr(9jL=dn( a|{B)rp(>k0r E(=Y lN",x!!5^Yv#AvLRDswwIPaW,jw +o$守;f$t| %# mI4;=(e29#27Hj6_L*TƆ1bCfplV}w1v8f2#'B:-!aLJ\Yڍ5}t{CAQtGF,0oܡeI&}j~Nr(M()WtHUc[GwIQfYhѸ]|%@nLwR)S&F#,j*ګ̗MS+]c̋L+C#K]c7`T#^I){fKRA2zSD#Q>ZD լFF4i!Z,;!;!SQܕTtÏp߰fsSP+{vQJ=`mq3v;)AB,yP$mO! +yb!~RV"TO1RPf]4s]4H䘈IH1@_yld$NP6۾L5;29Tuh]n4A$D-q*,N+.LXIU%z.QmTf\Ee(EU1 (L5L'Ȣ1ߚRbȄg$ZR[rT`.22(GHHE(}=H*#Lڒ*-Rڹ('F4'z\v^.uo֪&tPtU%832c1F㴇gdT%A"U*?BZVF3B!$8i*ə3R]f MTσ.Q2kʖ:"'r#w\~M *!4DidQjHd 9?%u bUF;]U_Vĩ5!p" tQl ;\CRDFQVYd猬igJOvj`a %2MqK>L(dGIM&a|&ĩeEy\ dg8HfoO䠂OBQr{XU'P:1YTRa8VLM9?jD!b샊)h˜u18Bᴨ5.FDp 2B^Eb'Q Nȁ>(s0!a@6P8J9ikkvP.A._w +ZKr`Ԩ:%)Wm:S XKڰf\AW!g5E6LqЇ"F{)E Ӫ;hHH?)2taW@R1LEME\#H(P݌{/͆4ܫZ,A N1I9V!ve%Ԉ}†C T;uWufJJĉglД'Z!} 9Mԫu`#0Ȁ4.XDHDh  8%,9I$@@@>..6( +0$\Pd2| p8` .@ >d Ll|   MBrrfH"g<*F/E:R2[d]7AhDM{Eg5-X@ uXe-^1uK-J2aO{JԘ^WYSx>ӯZ-1؟iGAĔDߪNxU~]~U_UezM²SP"KQ$ )a5DFWD.IU!R4xJ3ŊSABD‘!EP I[TBZSѡBK)4HJ$H`o +!N wI,k=3 Sb YRVhCWSQ/.â_̱ўvRR5jϾH2pK(܊ + +3.H*Q5K L(N-d{В'lM/P*2BI*}7;Ԉ ڜ$-f{)JRr`)_TD|Flُ(DN.| J C`r{Ft:pg%u2cI]VָjDu^(`;}uC5,KPUhEºJBU # +j:5-qM]tJQU*!` Tƒ~(7b+HMҬ:Et@2ԙr?Lk3Tn\l9:AGh*WO.p9pgB=n) +!:a̻^BlU)^g<0Q lZYQ`{ADrP T?પDF֢:.M Qwg"3EZ$J1GɦBzfY%TQ6!7.\I3w1}L5ɘB>_FW4/|D4SUhCx:";Q ih֚#m9Hє/ \7DM#HM+%5Y*4 c\QLEl24;pOq?VUt>9! I<;(.Da|8~wʫ7T((,%379.'WI8NI6)&mӫTXGkbV rDg.:0݃j:ﰊ'-ZE;j"R?[{B32r@tPOHyBתφܰCa>L؛SD"PBYtBO9|`Έ%MFv@}`ChFC~?$ùeeoyÿ0ooj[v -: I7nH0^;818i/eq"BMMH2 ;޷Uj#wQ|!9KbN'tfK'4I"ɚ$CEL$зGfZՊ)'e0{GlVؗI=E 8fi>]D`gdQ~ӊ /[nc;uOsRWTdϫDb;XBWrghƴ>eK %Q''fxܣh\"zE~LT: qIf3R&}ax^Π;%:_,}r_(Y*Q\BTbpTy5.>M1{0Ex'>1Ʃ%U1:x'ʓZMAaHlDiMy0""3Ss +0{I;c:Sc1æKp #1UCDj"GSiBN`<)y#9%l/)< ʗ⨨ƨPGֺ*A +c@HD`H8@0@lx9 @^ٳ}WR>O&qvd4isCNJń5UI5j]T-ϓ8[,vEF$|r&`;OKaWt"aDŽNO}X̀:΃3^ +c&OڲQYgHȉ\T9gdxX:Ph[Oؐr;"5nhwq | 6P"I' ލ`d" %X݅obaIĐ9`% CA,* \^{.gEV[#w)y$K7KX̞ڡH?$DB#QK0_0P$ kו"=5.NpF=K f%P%"KW+W9,ZCy╪sOǞrX8SnVxR8v\3g1~m+P*:6Uһ9[ $4+/qV 2C +* V{GhwʻDH +mHjq*Y'G!5! +u^(3Ӕ1)vPzqlDn\G'4c=bk +}!u'iJCA`kJ8SWuC) Q%L'X gW9#L-ePϪykJ- `n.$W1ܶ+!"A_, phPbve?U ?0Ы]?&Xjp7 ++7 )jE\e IȻs# uGK)ac3PCOF1W1V`gv¹w[ƾW{̝5OA'l!INf>|>o4QJ>!jLjqQ-dKTth/qnLW2RFjٷ e )U: ^A"rJtֱ>:WED^l4yQ_i3 !ŝ`/煫$eٺr¨e<~Bߕi(#71Ǩ,dk/(uOi&~@re˚vk(bUmޖgHXuomIe48X?8?le|އ,wrWHP/hFb9K_ͭ5*PR TAG{O&X-50HXWIbDSn^mlw}Є+%e)!j쭬*aQ)cxQ0MQvC@ʝI-Լ)٥U u!M!x}8o߅FW'WTpqcVS_\399CB z$f`K>$JĚ(l%#eNrBϓp=-X@iWPVw=}}Ar}:uo/)- aH)7/UǙAq KngRxx)gD3qߎp 1[wlW>S/*LKg0@T1GU t`(Os&4R9 +񗗦 CTtJYb?⧕YE~B9CP*F7D8%(:)wx0>> `hoGK{0Jum/Vlin䒌qe1\܇ ؆ı|_e@PgN-4@V=n?L𾠢IQ2Aʅ +)þ'仕/ؿ"yտk)(8frS,+<Ԝ"eZv. mۮvwSiվ76? 7|gP +gz˿`!h!ÒqYَң F)H؅z|ԊulfȌr'o3DBϽVu2&̼z7a$TfBM<6^JLt?p.n<oǥ 0哮18UN&uYtPy ED`*fq`_N=itS+)ȁQ(67b+=~.YphφvCKZWV` +>pvG /,*2Fh񹇩>e??/(Z| +S==%@{S ]C2Do +i3_e&&l '(#Z~X$5.첱H#i + Vhh߿rNnq!PԴ9%@kMM9O)FBsQ(A@H3SbsXn z´5^kXƊ{'pͩ +,23!~ܑ`U,0[%t 7i8M67 \Q;`WKqq-c]7Y.J`c_+ %o F|R\Y=>;/+'CMz + Qy<1m!%HxC%ȳp L@u +CTm ~AE`:$66E,zR<`əG`~MSb1wbg5 ù[q駙בBq pR`JT'zKkfRE_ (r>rrۇ Gr!3xXPbMPh“8-%u]EMs/-py [kノx ?wo"= 7#UVB#w;$y^JWʔ t@ي'7tDT e+/`L$p%*rX&+ +Ɉ1d;)`"(Vc儃 ]r'Q=!͐XmK+ gJ+,9TXK꺞=$ʴ 'C-H5#\Lô47]x&f2>rh+o;@7jux|So#L{}gӪ*ŌsK X~ mx5juD%5GiGM,*r# o +.8n Ax%g D~/d5K*]h&jb?~*t+tp,rT4mlla F l%d:(OA;'& f!gTGm gӵ4K\(| `΍U +p+uhm~Ƨ DVSᾊS"<` b[%M?{SD]r'*l*wvEH*:M@ Cz/k"ϯjd3K$OCwvE'ZXb^UO깶sx D ?M 0\V? +n*_$~M6RRMx4: zմ33&³TBܢoYzs25LjzP6SH0:Gxrto\(Eև".pg;; wn_IO0Ii *YyQ':FPBG2r>Dsft/ r℀)qx)P Rv@Mޙ3Ē&qm9 c ׷Hhe[=M!T>ҧ#&wQVl; x2'埇F\%S$7L DB(mVd `*!B„zLl.<|8P\GB{j!1M_]*F"jT@ޮ ƘtkUNX6=reb@U OҝuDAjD#v\,Bijĥ^:pM=H9DFS)X$&6]1:/&7-MlK7Qu묊lH +U^ +L w_ 30we)N]VK~BLKQPJ[i0؈1)TUIeDe_-mHk8qna@=zN\Weuϙ7:G̈39X @%v2åj V) #W2ޥVj!1''mKI)Jo)#=r_>+*D?x ~AX]ÐsNI TiEݛX7Wh}v;voОQԘ׀J0MPD_@PZB|=}zsrpfǑŽ`d 9h~ Q}|2gp+mhs6~݅uԆQn? +ׁd:22;M|E(>Z%FPWYf֮' [(nw}@6XI*X M(<e52^~GAZ0'4 +% bˤ lk+S'ܐf,K30=Ӻ3#<¤1 lf&#_@;s[ |ė˘|ς^ >'5:DHn?v֮H#nǶ`@-4o -g>`}|3GpY; 1NgUMÓ +ck<;[}lFݷn4C -&z9&%rwŕvqBHfQM8ݬW[JOF@\xĥ^l/]_zl]_UQ,r{pfvPwqp?%֣Vb4(7N}h]dm2oʓЃTc<; /f豃I3%]4D Zo1Vkj:-I뛩6_Y6ԕ +gGә p9&dU-(C0 ҅*Bvʈԉ5b Tb>rd>x/qa4G\C +9}l6:\ +R%ABj, 9DIm7ڳ*ZƩEW" +K U &at)% c ?! ]&;,1c 1"dOBFᚑ?ż a1/TwWUѾdſKn;۴goʋlCY9- 9P\0S)G+*[:RP0"hE%:<$*iSx;Ec& B=b|$ +.hDP@Ts}.ۏ mI1~^Efl*ِU4a 9aOcl "4[lT95Ya$3lmVC4Mc!҄U|Wf.4TyHd?nh;4rMVLt߽ES:hdmgK5de0i/o, ǯ#ӳ,l]'hQHG!hWps XF@ܮ7ZFvL`bE:} 4- g]~׀f{ʐ"ƝY?Rk^XM @΀l]†/ x6Éisx8@AvF'|K#/baS+h)xxMb9b +_@i">w##-M;ㅑ +󇙍y |K Q -I9u6URW|-\[W&V8~~d(ob= AN ~']h#lؔRL@эt)a&" +^F)w60NY}b J4$bGnI390ֲ*d S2D$ԅoDs^r>M0]/͇Mal\aPާ!+CeB +S@kpWԼ{rf,Fj~_?:uqeJஷ&Q4@ޚV 7XC[w-cmA]&w(01ϝW`V<KL0&8`cGEH*iν }2"$^\j +6ƦOI BKz][Z@96)=xJkf8zI9@ޞz|H _w(dZ +tʳɹTAD6fRׁkcQCh'pشlR~DA f6_&" Nj|J[&a.X#; +2SCzֶ##p(? +ƊeE@c23( ,VŸ́ο[)RL<9m@Gpq +=RQI +٨W2/(Hż/İ_/"B"? 5q5 HpVz_hl4`I$ޑ1fs868 BCo]-H ̵3~rc |`; )b@TNMbt(@P+m,Nd@[4Wcx./{wXXJ״(Y"R +q;,Jvg0]Ǝ~)l5OK}EGLSo Ejh@X6}Cۊ{[ 7i}žU^JA#g-KQ +Aue;#;.8W|}@ =}:nu 7"t*hp7DI)*obIaOs{nlUȄRИk *L^Yq)1$ gQIڞh6ek{YYVl +2b |lWayo9h7Rdj+?)KC1J U{G\` P 1̆hef]09v,HOP1)1J:fbd)+qYdm&l C:hSCgdDJAep=-^5ㄫIWJǼɑ` +CWE%2Pؖ-O_:r_ovy)VMla$VႰj= ;di!h pέ73p0.<ޕI~VR,3 .OLqy;,~&s#q_|d"ѓz[RX +2}y\My?:׀﷫ TUIgUnRr `Qby^1_#?t.Ot)JGyK@Dѯo)ܵ`yF(Q}HL4-J 2P&@ʦGF +ftOqe &碜yTD<9:QJmCs= =Oy<*>oB D 95nUk%]SkqG]?4..A:s=d(ܲ)!c< u\u\C;0=8VY`xq8-i\8e c,u2o)ď(ZjtNOidx FjnFfUn<;̞Wb%"(tџ86aC#i#~'n֔.G +ZM6%LUa]/#Ē}t\2[kDT pMdZ7dlŊ¹g+v0U2Y@]AFh-g/`rj&l"K5 +m'QN|8z˃r +76ꟕ%  +pUS?(׋_nj$*q! `a^Z/J"qeb@'xFP7R2ez6jiQˠmj>|cI̡MQq ew^ -  !w{YV(HedϤD@)o\gThUgz$ +I>J6K)LTfe\V ; +xaw3J`Ƀ@bF fU_[ +*EihEBM( mt)8ڭq+K;pB'dpKrZ@R#RR!ԃswiuZp qXm1Gp<{'Y O`=#UTgSuQ^XRG2ȦkET{UD'l% m&?"uRZQl 8'/gty;bUFea")OMh@œ_Lj}=\6^!ko됭VAu`iwr(qzF_W;<-(Fwݸ`Ǽ׬aS8Vbg)B +&$!"CtbDLngXkoa|q󱩘F +NɩD^_F dL[dQl_a@l63[ib66@siP@果 Q$eZr)DwiȄTGGdn-V.^&VMi QSn*@j`*xcQFa +? #a-}qSCv&%on}}NP7f!6|7{َW2FP3kQFl|Cvڏ/Mowp/KCV;3Kj>ú3H΍"?1x*a35[HuE;\@15R%ůJCD%{g#^›\>._)H57(:AN@9.ZTs dvHB0v@lD7sr>݂ I?KٝRFW{e<@%`*@0wvt _>s>H]Ћ$+8 ~]sP\EDKRۏ2gOyh 㑩4<]$z Qf^Γ@mݰHa#92 +Bz>RK"$)D,_ЯV•1eA%3#Ǹ* pBƪ /w!B/MYf*5a `T/@w>j +G~y48gï9 KZ* _0Nj+Ջ%=3%_L8V~ ϩRCO;K9H PYݺDC. ~TCNPmR¾WnyKRiJIC!Apm4_f +aD&."M컨 FZ'bPE$Lan_Y;,eeWEF)pͲ -u,PV6 GpyO%(p=I f!)=pwI8Hұ#$_^Drp帊WGxퟸ %s/+'u\*;pr +~"tyyoO"N-sJ nYEƭ-6 !AM TUrҾu#lrSd)!-"hW.E$#gI?\}7OZ \ i[B\&mIPYd%.2۶N 2 tC +}l~#U|ŽB %r8Irb;Xl\E[" @"W3lo l 90IFΛF +,~8K=jZ=q@B?~aP:á޺!Nq;+s/'`,oypx0nz!L1B6̈́C.=@Nr+0Li?!Ll)J Đ)mXv8Si +I2Wr4 m܉ A6Zfj Bʈ| +_r'iF#q:;0nVW]51n1f83dyY8%:MD5PI' 7D*%ȒuppUMdP8뿞a,G+%iN^VGq! _%qCplb^W~VOS@6_]X3Ő OLٴ\EJ)?Riqs: +>X/=yӿjá[ڪBNZt[ .v[IzW4"+<0  +D&%T+p8#`|C V7`?Dy\x< e@/9 h:`P R񼄂ډ2A]G{\bQpk%A (y6q5p9+6k0kqP3$X &N:) | @.90nh):aגI7Ϩ# IXQ/"G~|k},tFԠrws +8>:iKKJz>7; wq P1+X=oMB1_Xf\l>JPi.NާǐiנeFW7g׀ {]E6g]Pqfuk˻qYkwt?A3քɬA+,UlTMF:NNBm<ȠXSj1ZB &9JcXP1өA$ +P`)*kc֘ W0J_4LB #h8zhI)ń Br6ц} 9t2pҾQz['yo.m8ܛB+1+ ySQˠw`R%X^QWQo. (WC "ZX XoGuJo[9緔q-@J}hiEr}ROevB j@;P[ .7ud,mŠ +&B@A~ e\=/ ?+)<>gk;l%v@Zn!` +l  tP |=(1Tx([8:~PI& h66NV~ f xt7EUX2YD,:k lF_w,ܧПbQ ϬW qYgIr +àB,<tcD1hA>p*k Lq;1ӧF}SOTzTazK󇉊=^Vc=QBkimvv*V}3* +H.LMwF\fA +g-]e-4qa[H%pJ!"/QW5'Fb# 'GEʲ V02%Ք+PhqG忳`6ؾD0E047%&$)'i0@˄^ϣ5saVbymff  x^FE&8sjM-@P4&Y[+Y1 +?c oꚚ[^l&L蕛$@޲މzUAS  ]4K*rs})bDA%! 11B0`TNfAvNj\̈́i@y7h~‚VՀ V--l;do~ UDXO\(NE?`w^gIjUD u߮f71cS,Bԭ9", vOOru":y=lGnSwfw?66#bȻ_\sB|՜F3z?T1fE34?dT3HJO o`^9>^zɓQh۰.s94O[wn2RٱQDkmhh3=o]lPKt=K/6i>Ρm4 mxܡ +f{(k PXNv͹olp +ח0o!бBk~ 6@p@g3|=5^V7 ̓ۛ|I$Ot1@8`:BP YdP&yx! ǵSD$ՂL,l%$BU{rAqLpx%Ux*S ҃wkbeiq8Z[Yl981sӉT`+&B5{=rq2ys}Z[0 i^,ͳPbxG?oB%cᔀr%T -CmQ-iU-!Pe -z CRlV!p +B_Q^j%7paPfb&҃3jވDE!Rtް +9am;G|yv1A&)nch>[eK1}ҥ5pXAFEe˦fN>+C҈2 9v&:I zDGs3BA\ !"`D"oΒҐ- +C |Y1 kf ew$F2ݏ;'w=|ҍ'+|B1u}ͻ=ƙO69'jvWPmseAݘsŻjKd +P{U'l Y"'}ئtD0TN LrtD^gH2XHiК43ó"$>. 3 +:zuU'{ o# ǹ!Ts!xD69;\\ 0T K/C X2:4`䓁&Xƌ 3Ƞތ6sn(UǎHp@Nw:TPwLCЇ>R~KwxO垾7vVBс.VP56u +F +IKv?5ݼ']~e&*ӡZ[euct}6*٥?bp2X!bvF{{ikD^ ,C~ce4)D5}U;!3m!Zt>VL`5/I3O7w"TJu<.$K` K0gCݛXa {rIseKZ ̬~{HA\+C,U B ]z]I~ɰ78Q$z>*lK4Qf!LRe@`Ph*z8,ٲ'B~ j5v-U${sXCJn`!K:h7^6t9Hx4ntm}L?}UVZ]qD7Qm H8Cbn99[;9q| yIÃڄSRh(MpBCG)JcEO=٦ +@+-_(c(d ZI~8 0/%Y|~%ޘb*Th*!@LUf]\0w'ATu=6LI`uZfy<\M FlCB^3]CgJMMMn(xVh+( +d7\^l2$BǶ\2Œc+ XV&H|#wU0I pA'2jOB_֨X,҆.6| MoVc#q TW`'"!@pGw\A@q k+R#Z=B`zLWX7ZuPb331'}NwmܫVЦ\ Eba(Y:y/I(>j` bGaǠ򋸣;g2q}(L|H[͟ }@ ψe] |ޞ9Ys+tg9=]+Jh4< b Ll5]v__ ?/}wS]Hs)bΎPTӭÉطuJm Ef +ߖGP* ]ܬ H*qoLD]p}iiճ$x%oPs))GQfLg#ul<]. 40b" R!W3.h ?'W#|F4LC~;N` ĬOIJRwagH!d0N-O¸N PUiiŞn 7KcӬN -g){h߮t@5n?HPK{CHP}|ʏaP ۆ0[^x>v6miXW״P||Z [)&jjx<-\DCIwgm3\,gi.b͋w>P:~L1AW1hB)}aʾT1ї4)+ւU9fuѭXr]b` Zpp^9&g-EƖ Q" HArNN>Xl!Yr;N0l.qZUZ +rCA;)26GLېKFT-oBkÅan3X $U3al'v]IyQA PFyލ!?R6 fe bzȉr;"3W8v!'؃@>4V"-cA)d&8 j +hV3nF-S8(7MDHc}ĚөMgcExƉ +l ިEGzYg3\1GN:mG XДDgmW-΍J&%Q&QO`4M3o n4~(Ws`iB.O&,_2=li[?H%kC?1Y:*) +Vd&#(jvÑXSA\;َ$'e)vN1ϓ2UoZ\ aCZ sYK$ +HYA1$]򘁵iVu^Z #%;+!z'r][|7HZذ\+ sƒ& @`jPX6nW2?QD`1$TADm{M.;0-v3 UvA 7n("DBgi?u% g_Q`u;!Rؾa݋f{ݦQ4e +eN8oOni ʦ|:Z@w;^pGxV#cE~k7϶bCC ǒa]wShWw!7$!x+^ JTB7@?cDWPn<84u +03pO[2MNj? +Uc(>$fL :z$ĝV1 P$e&/gR& +fÛZ~Qh +ju| +H m(]ePV$N$ICaϽGԲ/K aܗav'@O;қH[KMIsA[,4.V-횭D4{oYTġ&>iQB(jRN0&I;EM'j`r5z +R2h(Jȕ_lܬ/;ˏa~DyNO +:?lu&> M(`^"BMGxÒ)(yPPٍB  {K4[e"ﮆH>?P [ԇ &3Qzյ~~ñ5RP\ȤB; ua6D+硇X[Mj5pDV̌sW+vKVB ^[k=Wzf}ow@3Rk +u5@N}LΦcqҾ,;{D2fRa +(| +&ϋ(T &oV +(TZb--(Ož ' +EˊN+ +[76O`` RPh9)TŊKL9.x*"-`+l0^JO+Lw[zBzc E*EPb\2cgT\z?TlO LGL99qmAhf+)ܢTF4DOz [?31UzW ۨV;x.1YE08OպtptUTZP?k +ɦRGUӗ/7LZ ­pRVO8=D +L ȽjP"a w5\.fmJ5o+F4% æF\E?} wSj%ܫ^&,`C1a-NJ-\X~bvHu.aGxlJm5$1NݗSnHU'p}XiEVF]I^Bz~O(1C yh/ݶ 'i) 6;j3w1'f%W_gR#mr{O|~Iȳ޻r!d:HZR __QugCPy݆&E%mꏾ;_e'5&scgq @W Ϩ#|%XNzҾd >d(%3҆C*TՉf=J "_K| h^Ȃ2"A&Y1@ޮ/`7|i&.k@JOh@y93LM t52Ha֫=J;QlxWv XDMc+dʋ#6sr;!w~iO5W䜾}>47WX&#"lYI,,a"O5^fo?Xi[<]ӮЀ8};};;8P!c3t4鑄:xπm~o彠~NN`VŊ0˭X1 |H^R-> я+pEFu\uWtL:.ntLX2N)4|*D1JqߙV0X967.s*m]Dl4tghsda%MsqulVn8%| +_hz-[gae烄ܫN5Ի:O˒9O/_U`1Dm,&Yiv%XXھ]sӌ0l+,מZtkƴ\N ]`2NmioK,R](!5gA`)Bv:I]dcuu_} KV6$t8*q9{*Y<$ vq[\ݠp=גܠ" S7B,/^BB: AǜU`"( *rS\@С)]\(G=T6\f֑f ?oFtV4lP Q؈.T v'u"P76h=NzrgЉA,Rq_C-F` nIDo`.,O*Gf<폈G̫nSS}͓)%B#A3^iE ^7X+AkWDhCP&J*㼸co9rу=l!у'mhѵqE=nc5"\-`YK 7ARAQ/KcߟA(=2hr(BH~4 ++hx,X)0Ո:c֖""BWugDIE^t_򈴙v#Ÿ0.e~aǴg<\L2;dD h81_2+]wzV# Dd]&.Iv}#??`(|`QbAcKI$|ɬTp +Od;nv!8F +A^ e(G{a +NR=u,sar a~~ lXG@}==idf>&@f P|%yX:*ͩ#cZ5t@ њP&-R{F|>ԅ|6s{W7>4y*;r*q߼3 `SWsC<ͫ3kkd-8 9s܁7|睬7_ϓw[mYsqx(kgt貳Ma`ovάCYzu>iètYh`5g|~g[>5u `2_a#Ü%T힚l䈚B@>;e(fSJ@|6 d kC,_(pRHttEǀOO~ıWV~7)'2>stream +RPk6N=Y>cEp& W28*i@by\;5$YD+CÓsjY61MŠɆG 00P|p"%H'_df$=kX~%RV= $',F>$(7Y:Ğ34VüEdMuR%,y_`k.POYE ~D<8jmP,N^y3}AH% jSV1g=U ;E&RqOuHw!pRʠ/C)쟞Cn@ԣ_HW>z4K.g)*_;"Z}bG/rƙ^QOsyl+7IյI<r +R\|^znH&< Zو@qOVjjnMRgy +-iײ~f*AU:3HyB-"t@XJ>BQ\~IOWc*3۹ډ;^iVB'i:1~џƃP:몑ͳ][~1N1s %H9 y)1 ”/2)s"F*I3"7}yL\xjtz␴Nf\Kln|AhE)zj݉ɔO[]>gX+d/=Os~`s%mss-tx@w% 8myqzuʳ +lqt ^grPVz-SwiED-Ny"!&mh.8d X %JGD(4aq<l!S `QPCn +EciNoOVYUUg N3b2#<\<([4CTW,v+K1Xλ!q~Jr@`HEWol oJFJ''q[ٜS=Q%\>e*} Y՘}u-/!Kk *ָrC|RI\6(yDIJW )l(R౾hդNqeoW.Q +_[_Z\PTi&9D$Y\D ʾwT7X'J^ ~7w8>ILWd<,ް&ƏI,[L2ͭx 쌺$,іH%m?Z6lJKqGKF{F)y1td:6I^L*Ok)tK0MRJR:08.{uGޣR:kQQhɩ4::-gJ4'>jTa oNoU1u +*U*)RƧZp +͆ą*eUH*㮖4Ҍ'RH5.qw[wqk(ܠPLUDg&F~zeSzӨVyTnسHLhQzF2 }/ȿwW~927;g׌1G|cRԥݡ,!tZ|r/"=ŷ{b1H3uA')fR$ bKHR XzO{J/ήTTK$rIK\cR|R<YJn=[O"ɲ$r} ~JxF+dXHz S3QbGL+?UGV<1B(oHB^)!%O4iz&Ή)ϨX<,A^*v7Sj}B&Jǩ{]6>"66^BljJh/BqBјu53%wIRJ֒#a\BD!~SQ>}]lzzC-QJ:icnbS +DK~v|{M$jƧ)ƣ**NNoT]GZYwrmEx7UVŶ^r{fTʛb>QVa>yi'e!ь?}h>! sL+D{>702J2^b]C'eiG弱~KFCP-*N4Zs!?avOKFbvY>m'<Kn>^77Lؚ O 725ƲENk +D+<B%b'_'2)D>~U"If1C~\p,-oH8 rLtp$>^=9}| @8 4  `"b(,2DVFaJBk5ã/DepWW]}u0 (d9hUs]@y#:jGVv[yġtZC1{(2lОi!v,uEo +{=5-4fIvֆL9@2l!4+_\$4Z=$aMyt!,g!8I(3d +M@Tuyu:K6D^ޤWlU%azzPT˰3)2G.tE*ҩd|3Q(VV5,M; n9J~ٰ&UQQHP@Tc9UPQC'M Ltb1A)TŅO=WE>3MIa 8s8q͢9K&L%6f!vm3 C4!e">&f3nhBoNSمVUc5cyx:}|AEq]eSLʟ)/YubdSX dI'cQUXHr`PU^S \]S2Y. ?ꮗVέ4S#"yq*3"I:c.oS}6Dxt^蹆7;xV4cfԮ*\a>mdŗ=i55ҜQ˞ĴgK.Ka֝Qj}2|d8J0Lt=ڙf΄vřG; +FqҐ.  }r4ԄC3F@CCD+ +4TsNL'̌`4M#WTWûQQB̪^e93(K^>A)Y^S(妷4|XV`pC#TF1"P +80aU°0dva P  y#aF5}s "D"OE(3LRe\{}kNAE4*XtE~D:b&>*]fFZ1tdH<59ɈN$-lۇ3]Z_hd֩NXkVCJTgؒ.QQ#R'L8crDәЄи"~''xM;.=R/uLt;)t7}N~W3dmOIdyUD -k4T*ꢫ1ŠwHQs/~]QoUDs FcRLWM) >wWR=))=>` iKO÷5&I$*~EҏMHzL88R=*RH[x%T*e ʗ`X%Ȉr墈 7 +7Ylgξx6e3I߿t_p[B e19(NHvU/&dҼ Q?dGLfRGچ$$4Q?f;rHu =$IZh.6O/T RV+^=cr 7<Oxb=Ʊ98`;vQs,J?B";JSWfGXw19MھFY%$DwX} ktO)*ȑ/JC +MCE2܈'"(Es(_Y+dd Y(BDԖ}gnX%T) +eGSKretSK#J(5U:#筜96?"k6aɪ:Us,=V$R Ѓn  pVZRU:_41.C4JX." + M*) '2ӑfG)Y i)*#2LQK."dT8cքa'7!GNR2"Uf%}.̓3F$9&fh#BH_]ZfwTY=4 zFנoLJyŤagRhDBJHH]&q=S8ZJ\8B&>JڃiuzīB OdQMWcbȿ$}u" ڰ1.k4GHCҞ6} l#ExFv5zX$pҮ#^]E% _ %J}`},\* ȵX-h2U,ʻxy 91~t,_?2 _D}Jl'*ZM|DiQCLyIBf&MU18X}͞ĜQ8ꄞyq,qcL(sN=Jeq) YL֌fZ-+fh%qRx>Oh&&!:n㪔i.>E&F}.N }dkB 9B^ iATBNh7E(yNrh3֐5 ^֑GՑJîF}B_F 2*HA!)K%c禑"RlErRD -h/ h"ҍ|q銤(9Ͱjj*:rMkd'ꐒpsU #:(@̈́uŒ'(&8,p*10QԂ+ߒz?8m5ȶZ1zsS1֑ܥ>k\bQ.tX&TlS0ܣj&2]=. [6>|+4jJ(*%ފ -&HKKWz\:%'-6yX34MԐ 9;rƘ!b{  p@pHVSZ&La̓yup|_HKmU!/ej$/B4Dg4C$dW 1;4Nץp$D䡴IDV(T>5ւU>|5\{9ikFZ}")hT`%4ERaSV(gLcHBK_<h:kAFD" "?ۏj L֖&֛sKVC<FY,"I 4oZIctQצ†ǠZPպ;Qyt6b-v N+hҊV}óo2+<^謱Uƫ~IB2d\dߦ(SETHqJXѠY|A\G)ZZĽe9(mLA"Z/(FȆE\ɢS +g$).jsCឺ Z?jB%}YH|š 0n +b9bQDO)|#$ +vԏRm_ku٥:\#$9DNFؓ+z~(i DZښ5A3D RαJR+ZiHEK( qYT[XErgKD<:O{RHs!$bw%X6etEth3a0rQֺZoQ]ZsuEAAWQoJi*A!Egƣޝ5!) +gqi0ԪxD*k}O~Oғ9URw,_w(3D/?DxVs,׼1lUiN ]"-KIE mN8RzP-qk4X'b ̩8>Ԏ*e 1.vd'8螴Hp&)JXjd(axVr"q"ܸ,^eL2:m[bө)UlM%CD*Ұ蝨HX1|i$*d>Qy\jd:Ԥ('jȫSkJӉx2.Q%Ai_T݊,E*Օ1BGT%4z: +ħ42%yT%^\ZYa }ZF҈=I-رXF)-o9+ġL1SԴrF#5kZvi [4avR"ʌvguc>*hpMM73694JIltɨRsB,~ebe:%Ֆא8ıxqqh 1, +V(gT8upɈrRha 1*4ls]ID=t1:y:̲nM3?hgiz+- O7*j---E` jesQ\p:.8^ ABH֘AQ%)$ͦɊ%)D!E&GLJÒKk\yr&Q!6zkr&Q8#IuȢc.UDSQhoi"tKZ >7hʗ2ĉLXT|54SӠ͋NQkd"O"DzXI]Z^}Y_.̕^n܍˘ZŚOdPV*}b$ T RX.>ݴLg+V9Qkt"\kC4aK44v)YRtbsTM]e袗YeDߪ Grfb7omRa/TN i9rrE0*3$_ iO!ЬQzrOPFV>1uTs,\LM.Q Uv!"eΩPO":6/! +!넘 Łœ2 !>r(pP DI$$9*MQhTX]L0Ǧ, Hg5\%feWG0siL c>g|,\㶬Yxx(T:It'd%Mu[} }r`A5.LW~@(vO,N `e܆QqV7:*Uڒ;PXfTNɔ0 A U]Jݓ3IS~^(e4-alj +>;+Y٦~@Q TvV+>4HpS^}@Pn-rI>,/ۇd1ݎ6 `tt܉$|T9e?|}UAtvT +!@L}hE}&Lɗ. ^"MMƯ(Dc!@:5ZC?7 +JzFOioo\6ɘjw7orR{6kr˘m#.6{ׅ/|{Kم}[T%/.OkS"-4ڟҐ] 9. :. _Fߧņo4053$ MvoFȮ? XX>|a$(?2EyUH7{mS2#?txs~%ThTRzN+1s-2kK5,]C0@?-9|ru?[{F?(=(Ew2څ` 6?wR b0:W'4:D/KRY7h $ Ox@cD 膜05 \3Z>*huh>vVۅ-ktg?p2z y:06JE%? /yETu8",kk^N .1$F1V}yyn^ƹ;zH;4I$ HpxKt߰< N855@ډfڣQ/~eC |tY{,KPT|FNFsxD 4IL$޹ғ[-4j74mn,]2uLRhiT~Tnl6jIy\Ppob ANXJʁ@R{U[Wp+ԀGoƙr'd o}$A^8n{V|NAN~p_F\@96Yߍ㍪t􏡪|F< NkdϿhB%ul̀EBL.`:o߳_2c^? R]5hep5]Wt. gxHdɜe W+2ZɪfT4I0N0H>Ⱦ*af$Y>\YSK]͆sP Y}i/iPib?g53{?8ޔJ]f``߹fX~5@SDX)__zKِ Cu|w:c_t } j^[7)k,0{c6Qd?$}=Jx3w"* n Dcd"yg=n_5j6 WٵOfGA"fSel܈Zi1vuRl+Fߺ8Pҏ/dB);*n0-igVPW}GZYAC-Vip'n'|O$ЖڬO[p^PJC[^?^ +<[_?rړYXM'(Y?fUG@PH +lfڌ(Y?@g {z 3۹Y>Y{:No非YP aNԚ;,u23'xw ++8׮@Ilk^PN: @=P0)Cf7p*p,JRk< l#ZLwkp?T=\QzY1>1"ϬbC䎜fh\mcI5 +%4f&D|>Y>$D|s5:3= ]uU~7J..DhRE"7 [W!wŠO pS=bԁs\8A|&o{\"\{Mc1:쯜+v +#gj|.C\ur;׏`sY/%m*>¹uDӔ]6!HA57XOIhPY@ɞxPŬJ@b8e@ׂ"J.cLC) aiV}l& KlyDT̩aU'&<.mEuv͢~Qa*p~8Mѳa_Y{7Ts$̟Lzՙ?LF<0j0)w=3?qEg,?h|BuW}g~,!>KҊ;> ub$Jng?Ē0Cq9t?Dʜ?.gk^(K1.Z?aI?+6|KNj_͡LR kZ$'݂99olNj9-_t`$Zo/Q}Қ=8ZFpetߒ+0o \2'0/JwWpEנx vN\j) +/eF'P"2ҡ TX}{*1{!)Z + UApjw>FËc!E±8Zk)r-X6u Fd1gg0ft^b**\#rM3 +Y{E -2Vi ;h)]@2^ %r<prղLJ,J}?Wu()e3<=0}|_5R/{-vc2 !?+Cy429!U1w;௅U#_sYYr꧛;BG B}57L[Ltaq_h1QH 3ྪ)H+p?E8Y3v~ĂKx-(yS&v]@_j2L֖~UJ@ FC[9β%wAcф3?dz"˛< =‹3:skb<%bAS)y9oDsf*T|}J1#ZdJ=[չ>?1׏~B=@٭HCIiP `@5>YxX} 43 P̣3QK}% G} 8Z G|Pߙ|؊R%s^ NM]޲ ה|vzu $<\{'We,HdGEoy CdnUw#E_?g C^h DJ,ƥSFM[ Tn-ЯfI8l8՟;95gJIE2WFb|m?D'_y3b|:Ѥ -_c%m4d9XL,kohvxluim|^${lAH-;%i;$5W"!󗕢&Ta޷j p _ nuIm?~6 +y#< LJ"QŠ_L5ǎʧ RhPg c"pcؓ7#9|9.Q|MwVlɏPE4-s@FגG=ji%zSC%,AKK&VP8X bk=GO5G1@V")_; u'I3f%:^<Gub~_ƠL?u_-%IaxɟS fSQ@$+.i.?#ɏ)k/.,WK!為YAPH䎯 axm&_-Cyʺ EΥwsN_{ I0&?%Y`bѱz^듡i9-HpV~O(XHѷ9-߉evexx;=Xg-0%_>ٝ4'*ӼSz76Vjsӻ$䷐xyh=K~@:b>q3Fӂ''pV;> jPmđO) T!kBAxÚ`B 1! Opik-Ack +(~K ڱߞmD`cl#iBK4O%Wa|Yb2&`o?i?BG4SS|FZ~?|q\ 7I0~ZX'j>E JL,D&F%u3KC+ {Xv1s/\R=W37zCkuI.|-Yk]‹zaƗ2t̔J `>d&1ϣXŪ9A#hWƝи;Ǫfglg>ZMuo*ŋ͑?ߑfS#x K`b-@DJDͮ~#$TG-PH;~;LzM>aqp{b.sK[x?X-rS]D˅_|MpAKK.y-z܌V3!١ +|{QU2D\XsyN(<pyt~[Msu<,-v6 Mn./a } Tl]>rA`;¯G< |". 4ƐUTf}]c޳~B|ņ!qA]k9Ik%/8SZ,`[&I x譤ĉNӧ >u2{{ +Ek j ~-ַ%ŒB6TEv=@ 5^>l紕J_Rc-]~vE?x"EY>{L|tgbx,Sh0JJIYQ4/w$yFfm!b07k2hiϮ@oV4uF3L ~,G3[)&ߡxD\sdT8H3!dreO x%Sz@ܙ$VL'Q3R-U#_&:_xRi)j)Yh7ObW}KRfr/ B!{unDD\u N|(w'N*;T"%i?YLA*b0"[>-qĄeorڼ>|]iW~2\̂a4?G?ٙM(VF&׽;# ~"4R9 UpnPICJImK)E󣛱W`%';>l\'tKZ +^UFmE1}yuOˈ8b]ƿ=Q"{QI(z4=bPXڷɨ{ʁ%o}+LJ.8TCRP* !)˞BZWt8ϸd0kݑՑe a:{SfwhW1o+ VuX̮ +ګbw@nUfMntF{;e#q2KZI4XJ1l^bd**}Ss )g6 \P4eYSttp,ER(^7prHr͜|3N勡m%yp҇z;=}eGyI|Eʂh{Wi3.xfK%o+wTmSJ\t*εl}iXq?xwKT0}v +F/ZH+{d!{L +otI<ev{uQ=|IGp{ߤSAظy@Ծ8*4X89=(9// -r`\}o"A'leKy{w @Sn9S8 *4k{I%c +==Z1oPbj jB,'mxՄ3H%7 ̴PWh/˜"+9hߗx :]s +H|/G$aa3( e!oS؁}t~V @q\!e?2ph={R?Yy  *{̹r}߭~V,LīavZP,ex zŲoJx~ף<;:“vPf~%S#ȝ'؉Ǩ%K? Vz*5Z-½h9BXO+ `)bts?YM^ +T8xZ=oQP VHޣ^P|倠\},H7`7SϷEȍu욎'RoiA{g%guUal`V*ϣs2?xww^D2Ds:s{Irr{١a3AC\dR##p_`Ӊ7bjҹDe J 8JWP$2\7ij[} p{{bZ vߓO(/}9a0 }@h#d2lOOw;|ɢ#Eg_hsRp/PDH ]lVa8ϕz~̝V~ 4AJ1:yᣎ.31\b&5RN5_,'R[ሇapRD3~4[fSr塇l3N5R +:]_7Z³(;|/04xFVONփ`H|X#~NPaYzh4չ3O#?HNi Q~oJDF'4盌v~͔:A!`dTU`(bhߒ=pNjD(*:q3#\ͼmFǸt8C.ޏIHK6qjDeE%Gkd# 'cL5:U0@UR,qI vp<*=qxzSM ̦⸆S㝨1݌> ާkqRהQ1$4-6%EqQ/zmUƥwvx9<1XGl34kX u} ^,8X<}{\q +&S,aq +*K^"{w TJ^]OO'Idf?dKkp#r| yxRt8?p(p.RW:~nTXN^H!]FFfF ;8%b8&ؤ>($]1f#ޔ F NVAMeV"n!:b?G!s!]iHR6{&7Bj`'W7J+fjAL Xص-,.Qls0F37tqZ4[4MF^JzlNmh)T +K*U ';nW8?Qew%Kńr%Fbow#Xon(d懈cZv#\Hl8%PgF"g#*x]A.tAD2Cqz%0M8yHmlv}35Q on2Ώ>(PͤU2!5!O%}9I҃Jyu(  !t" F~֨]p!o\D3GQ'WNЭ@8ڲppuá +5^ ug:[8FA(!`ThOJÿ\C5 "8F.֞mj[[Oq6:Fa3<4#\#:Sٙ.?p,kJQ5>XPlMe|ծWg 6kC.I',.4MQd΃|Dህ]4TCW%bd49'Ω8TvӸ|*<ϒ>āSq$xP48Q4~p8dxƙME;e+iEFC15X48i + 8 6_u-:a q3 \'*N4 J1^M3ҦG8Ӌqi8`흍 ?48R Ib䚴x8="B:49-)!Wւ!ZdC:EQP'G\d9!)F ?_MKx/(Q@~iɨ-( fÄ*nN$|oH\]wx{`tK1#R3yHAcaHHz`-sNy7:wV*?@:xIӎ0}rmhnppC:8om8sc]Ǹ8 7sNTVJE.|JƳU8wbuQ3u0(jшPHAe BU$x,ZVUU +ln6J*8 "%'T_5)|`IQJ ^fx6/xYL$tN;Ҕ#a1KЏSP*IBUO +`"mOײ3G^h˻ݞd~b O*?N2,ǃH3NqOOўVqqvR7b"Nt9!imyL,k'5iSjWXb})}jJm6tCb&þS͍RCbIIICnqF"0ٴo.WT }kSkr!CkDLAqprmK>2m:N.I`f,GCA;sFz56[]ZJ` ?SzHY듔! <骷oY.RPѪjTW=-s(݂6.^J7\c9~DOث>G?P(Q2!?HDDZG>'M?vSuz& QwnCXa뀕aяȠ$wC'A֝4ݛIa&E >.~!Yyei}]t>=& $se@72?9ߧ/+Y)4b/7!*/E(tُ[2!rCf?e0KPIzjr43&bߦ@/QɌH}c?L}JDL%]6`?e=-)Lؐ7GM“P=/=p=g iףD_7՝~TZj#I~@9_w{iE? )((m9:kC5~w ~ +qC'q?K@$ro(YH~9X~/v'U&MD*JǼ(5k> % GޏhrEc~x4FdYMb(7ؑy2v7L g HyGGblFǟ%7{'T=x.Q|όz)<br^\+CS~|ʛ_%.ScS2O63Ld3n3wFi .s>qfb%ViluC;qyڦ6z&_ 4O?6ӟ->K'L9Ogq)#gSIkY1ELQVn,3}eW3?8f0ZCkDZws',VS.qSJ$PSX dlv)i?U&ip>\bJw^A))6 R"2l;4pRrG'KNJTQZڣ~$~TcWx)èo{ #<„tAS}O.6`:,' \@@pZ0F2 9}'6V 5iV0P$@L* >Vh 4'aF@ ۢ%HhP'wVEԋKf1Zn{2aKNX˂{oA)8SsR@7DOE..$BN =:呐a顡 Lyd<ђtL1f27M8;Q{џNRdL4pA$l>ݶ786~s 2$#m@[_Bdd)/ic]EIC&ww(* n75hXFӊKQXYi!E3=u=RNie19x[oG*F7U#-ɹ8h.u.e„\.y&doմy`x!@:dVҿNr п + dpz0׋;EX~ΓMƓHGᄰ83թ"dFFrc +c6B' N*UypRAʸGbƍFB& , +Ѥ%Q,8E[܈J$:' >CINQG1;/ѻ.NpLO @GR/q"nUZGIG"?Ƀ$'^^^K9 ,4LYtr͉@IV.&H'v$J*o/PԉnW8c?N|0TH6cK=|ט!Eώ56C%;m؋j?I,࿞+Y٘{d}"e8.77e iH5:YL-$?gANt"B"ۿ쁰%DV;ȦyEHL@yBrADoҐ\P`Q;ة + ,sDVH4+ +THD$FsvG_!Yf8=DH_@yDY~wEuo=,mAtg T@bپQqoHtƻHVf$I5鋕6cA'X@tPD[y +B%=Kk0}3ic#=F |~ڹICRJ)Ɲ)TI%pخOUF%nJD*h`{ijHaIgH!RXF'tGk +eӆaM,`)(R(2X_KhA̩#7g)S:a<0scAAMxPRAWRacui/׻ L輴v`:aI◪n lΩ"͠@ +]0g%3SlLSǔ;v:Iy#GNMhk#v}יz noW$#AI((LJUtlS]Dv>z;qx©5i@$wx#lug:ׁ`Kap"{6Kr>q>rEXA!j, +O0ɓeL#4P~<^[Gύ <mf{PTo3ev]\6wSmbȇn< /5ʟeIUk<),Zo3%۰3 a.u#&M gs(zM4 $6f]ݙHivKfg5X#*[4h&XഷO| 4)vŇnYC\CiVc){_m-^h:Nqd,6JPR1C&ufaD!4q@4!8RVQ,.MDz1"*Mok""RCGYmk @JASZ/Vy}FM>XE@0ָ26t}q?w6Q+] ݝKU}8\,`Su rycp(K-DMyd<Ԍq[h=c?/I"YJf N S*z}fb 'p`2ÛPk: 6Q;\sIʄF|U9SSM(h`4=HF!)s&ƎL ӳ3)uTC;v<*_+ZN-!5deȗnR0QS9ћlVfk%$2ɌmNhO5|?O5 B=2E'Xh"[ӧ^Ʌe:q&b}O Mx}04W'VJPWJA(Jn˓HÖ>i{j2J qSGF􉌥R$/`k} +Zwd̒};Qω@Yl>h~.4:H`@Q# Iloz\':Ovv}ƀ'Sj?`#FS#ɍ?-p?3r# Su~Bٔ E\ T׋J!Ogr,*35GE(şhYE~]TUm S\'#j[)S`.@lR(x[T ֒LIs A kۄ$+Bau)2[du4=)fY yJU6S߄ge!j&Q,!tD=`6U(Q`\,m3(1 U2TͥSCoS*SGs81{AhJjuFi,:R[wgR'նgg"n?dRT .R9p\躲j*;1UM o:g +_ˢ"9 +\)Ŧ${Ӯ*jMGu1wTcN1M6g_ٙU[*eުA5+Bx *c$DŽ6"N%㠠1*kw VGU2 +T?"<<s̹BI/ޅB9e T6L^|1TRO0BѰr0Xu~ajY|hSbXG +tTd1ca ;RT_ػ!!V`U9_LuN :̊ܐgs{;#3@`*.k<|-z`|Ęɞ,D +>0՞yUsmrjpmd*LReSpGn(byLlNZ.Xۑ1iU.b OZ|TZטjz@İs'~S{mA@y|=UorzEi+ʵ=Zb|k8^>.)*ޗ7ORDS jTI9S)sǔ+T"~RT9EfӾ,@B~-3^vGkdUT(`*%/Rt2#ޛF2$4@c|24s.aN"+&u%pd8ki FNBը!Ⅹw5ۣ⡣Jd̺6TE㐐r"mF*mSxĈ4EsQu=z_ +h'!N/SMI/?c*='W$TvM +}T\gt9,pC.%_L%JЌQXLKc'3Ev:w1U];.ZL/IO1n&TSv^dSIUB?|> cd-@N{:yHjs[R29ܡ2qB~j LUЧ۬it{EF09d9qLR`sLurD3${LӀeGLr鹘J %OK5ςG<2쾘J٣̶օq\rCxLVwڙM1b߱ɜerL ԑR7C4Uツs['a.=.R/Ct݂/$(|dWO@(DJg*b?m[̃hy&酩BEzeVx bDNjHb[=6;7?0(,uŤLT%k"1XzXkGexab:L'3] S&$"J\#k-6!{,G䤹Rq~zҒA,Qp.[0Xl[WZz 5Z/U[j)}pݿTk^g5xSRIvw|bP@L^`*E@'&LIΦp]j&ҠNU'%:'cvqP \%tI< Lү7Ypx)tuTy8PSJ TRL5~KfN~bhHT0Gg=m@/ vC+xT[J7`~ll.U.lITcK(uC7Y҂8>2?'r:ǟ| +!>:z0Ouy\$(*d 0bi$p=؟ SӠ04,01wSq!p&LwupޭRT4 S1Ra%9I{1>]W.q43 +I_n@"-7IMk3B蒩ƋzE%o7*5D"Kw828NWDLUz$2 (QLaBT<7}Zi>TUI E356ē2U@|߾LE +]T&Ɇ[,v)S|}j"HfRY1nYoTf_T/_a6̭!S>%SI\aKd{d2C,ta*.]t.eBQۙVʁL%&7:j*Qh6wi1p  ht^_hf* L5Ke*s9:b 1SKyg*ǪѦތ\`?aLY +jhe9d4Qsi(d5ogzV+*C1peGg0Bb'M%[Z W5f~_}4hF} +o)Gp-̩1 +5}LZ0TA2:ՙ+>I/P !w-"︗kW1R (8S-qʶ6S&E@UFk abeZ\ҘT'[Yk4Z׼ҧRI,P m@՝*liMP5dݙT՟"__p8:T%λQ +TUӿI +@U>Pu&S:"{]TIoTioUpu LVU TiC*OC+5~&MfEũȴhOJ=T[1F@ u:AAQ~@UVH >SdR#T$mh"|O(-9kU`p_]oUE*sN*T-^,|JA> pݬ<٫O%)?*\0k**op9UPuV Ȁ"TcJk<WE0MwU;Nu'&kZ/M".}*"*J c:CUt!,CR*di;Me)g)1Qay *tE}S=* tRBACiS՗[J*$CնGh~ȇ LBq^d +UPAjT)+rÉU|53'MU3cA]Y;tl.q8TE֨PUǦǜvU{o!*ݏ)fP84SbeFS Q[^?jP'7[X IQfzV D%OW 0*@U*`OhQ `kU.vnhE*1Roh7rBPN)7`ܚ,=U $R + w3'5$)w)"$z- .[d PE?$JHK}Pnjkjy3zZapX`ҌTeݿok]–)UM>NҾaLC(?|TX.n%%9J-~mTdw,_BJ `R~௥ NT8j#ib3N^(U dX(qNѓ5-~]' +)Uϛ(UZx𓿧,)U>9R HJ:0K9(U9Q<`Sp{,أXRiFiVԎsǩ̒gBR5)Fܶ*J8)$(dC +Bc)Uqe)U쑕e~D#d#dR3_NY>(&39Dž[Y|(9rã*%,Q>_JlhOHɂ/?IiySkAdAR~n,)UgĄ uKsQ{kuTB?iyAJU)Ud_UAz 13W:mq"\IY%Ju;zOisRevOO+B:KlڰTa+UOs-T%h`Y rGr2s"^UYV9Ta&۪ +4WRUHD^Υ +A +EĺT=+wT6Kd$:>>:R[5_ݖ*vA X&!R%2wgɕ{}\,UtIE|Qp,U{Re*<]Tʸ{߂/_ܪR%'(P̍Lr{[>z*iYkǫ.7}c+ TaH[TA:oL"F+7*Uu8]>*6F p[(UVJvx|1ɬ|vQ*dR=A]*`4TQ[;,Jv&ڕJPbP*u"L?T1dvgTi=fD@6lE-T $G7220%#UDj҇HUW ÔMZL'ڡ:g]g/3kηek'5ީ!nJy̋+C'Mq~^KD3UP6n"h"6p6Ucۙ"PMU wvP {SU|]é`eZ-N~SSE+co˩hI8UE;[zo.) +7}`ohR~L7Uo0b|oRd~;,O#Eii)ϐÅOdL6aP!ѼbvԘTһ,Z|Y-RހvSN'BJ](-Zy[[iUR6D|kUיk߂2Dh(<FiSћ\2lUpPl J|r +6\˕rn l5' #\se⪞* 򆫒MGF*UEEkJ5?cm*Ϳ(_u*kzRGߪ4b|KnUrPe5G`[ ٤aK2u+P;kx*ιLu~2BX;* +IG,g"A*pSjKCǧ hU"t3+c@l}WAcU1o3BЉ<~ ae"_Wu!onU)( 8;ѝRrj,h[ܻ(JtY窢nU9-X `*:᪴vIgX~hRg HI2#5 +ۉ?UeܲW>Wu Xvi-oW^e'^SiK ﯺ4rU +CJ&h>ઊu-V<¡7O\KުR&7KYql*Fm*^rQ~pU()&gaEaؤBPZv+Uˎk4* kU햕|⢿48U{>F*Psy>E ^*}oɝ8 UVCUV &jSV V;h_/>DR.sIYTK o$  VB,D8:jgSg6# gx.; H$%R >V~9V0TY~Uj)U=OWU:3wSa!TXGN">m4~U~_7n* 7D#}p*NUVXՀy!<~j"R4+ %"$3X`v/ *~v^OA}U|if*sEZ*Cg!rUu:$p1WŦxa9ڐYzUu~W[q t`SWza @]0|bO wīpLWfɑrH2@khY]H(n~<ђr[!E+'Cg\҂sU;qc] ieYafֹ𪲫26VY\Z7W>+bD#(T)~ɅhwUWb`fPJe$:]z|">%9SzU`:h&wf]Pgzl*D +^UtvDӫ*p-C3-2.Ke |spƫV7hW%3)aLu^c 8E@5Y ΩQ&~LHee# Q ^Ul0>h'<Zzs:"l8 |ֻ9)ѼC UEN5g%_*6z%g3|UHѯF*fC'Dgj|6=c U!\X>M~jի@F 'ޫ'UD0.MuBY~_:.EB]X{@8̩q}*ٌ~U,76#Bz*ICGT>s<>Wɘa2zTޫ/r)'&NU~%8⧅wnDNW=^`jT%2슻!=\^ȏD IJ*X5*mS{(\O*\c"jLWS[){UhȥC-ICncRv{9V*|U,е*Ȟ`b$h4eNg8A҄ю+{Y|ׁ|ȕUTaUw1u1 {]U͜ቻMFʋ]U VU^=*cVUSeS'l J@YU  +!!Ȕ<0gp?$@RGgZV>yl*C!hUxgeiU +v + ZCcJb'UhC!5DSV*ڧJ Y -*to *O2qB: 7H + cY꼓%toy㿊ӧ_T@f +F&{gVN^FBe\M䐧=0@!B}l5zIݩ0%Q'QJ}So<А#9nu]6 +cۣk`q*1rAnQ BwU ,3tCUZ@gA'ʟ]Y.M*-Uʷ -2|悕 ˶olX;Rz{;v,<2˱lSme-ߚXd;:rŲh vss!u +@v8hwXJs]~`O±axO9oJLVjeaWub@yxYuH +1r I$ ݇-V5ҭ捲[fT= +HtX=PWxr^I7MI 1U/?f@'3A&{Ca{p3Wv_RYM2GqX"Dycfӊ{d% t2973 AAfawemrdӤXJf+-GQBᘤ#Ҕַf $srq)lPCv(%<OVm==,bUU +H檔x&x>e0|{t Z/bCt eUGA10\UO +Zl}w<\LZ-(ܷ}+ʼ+ٹF0e937Lc'I*hȁgTw1kruCzk eXz# u;ycXnx-EMArheuvnSeݬ2DUH-`=*eM +jaj&q,2 SEXrvX}+jĻ.bЗ^ti>2D4ͱ} A$\c`AjڇiEf.aHh!3fPԷ#Э\ؕ4CdA"\0!>!58ogt/B?Ysq@-G]"3ft nµZk݁B z) Dg,do:'|' dbT*ρȹd;2|N]ӶzHM J+tW/vk;VxNs5f~򖣘\#9cҺ VXࠐM߶JXt$kbr$Ar!o`ʣ^'t"xCѨ<*[~Ezgal +0lǃo13f[{hi:_D{P08}6'5;™ adV"@< ~0xo2Dχ12J^Dyx[-yqUbtƺ @ 5!Ed毚Q) sw?EP` P6G5ŲâXЮt+nVMyؒ#"mV$g F/)FA]9#[Ӎe*+sHXET՗S-gmV굡-w(k2v4PLR +`)Ls/RS]CzQNP grAYm{3 KAVkChU2uctDJ!Ⱦ%d $%:^}2_ +M97/>t=a-;)њS"\4- 3em޽h +EM@MzVϡV3 NZ_y ,|.Ց;vuj1j{u43 o%:L)Mʒ\-f1jü/K Ȣ:bLb-:m% ]bD@N,홓,+L +@?{qa! oۛ_шe}*6cwɚIiYj[W:F35.mXgL[ҖP*.wʨ,,.Q*텅 tkTV|Th5+8owuc k,I?Ɩpa`<Qa"bE.aØxxQ_㘣UU 5+ (4kANq2N:5}ݯ-eբExġ*vtPjFmpTAI*q%Sܓ0a!9@nӨË`P +qB iB$Ǽm}cLHDҖש)CgWny9Qˈ#xf"fuXrϤŴ)H(%qBK90IgvG B؊I^Jh%KĶDe#YdQ% dc6 EBwl_5I+.TbNm̘[Iۙ?[0 ^wU8{Q`iTG#$|B~ +%9 @ҮR%{zq"l.4GfxL122mf<:^ܦuÅ:> r[auh&v +{YCmN9RkBvݍT1SK982>"-CvK:pp(0d xCcÎ59<%ȬPffC$,X8Qk,@O!u8whVo `&*dm_AYE}/x2x k`nbo),Coa6b(dBE['Qa4l-H90$nDLa3X¢e؋X#tQE4qTk)( Fphq\]bSPbS0&։My3-X3ViU rCt> heT z!_O%0 %:ŎB3\kTe2a"zp`P +ASddQFP8%ju%10fS~nquPFI Msf|S 2>wNrcFB?R*5BY) zG+DGV,r<]<8aYbyP?nqaN +Z/Ґ[/u"p<˥t=ykf [˧I>#BakG–o~xJkx<<ԘZbdC2QBńp lT-!UYAC>>̙ W "a- +\5(t 'p_X2~,2JDt%4gx'kTJC9SͧJ\KS+܊s'07E$*$' uPby,9Xb%(9elXᔄןօ·)!pPdsQsp``0|_&f  +B`#i t#'."*Jr2] Xo +rB@ 擰~F@ZʥÌ-3]4`7U+XLoby,]= t4fU+b*HvV* REBq~;Q[[Be$ XZB4}Cъtb_^@`Sc_/z_O<@, tAS@LcrȨ.$tQn!6 +]UBxZ!&¨ +f a'hJ|Xpq?wUpYz26Heo;5ƸZ!PS(ZտCRYYEBxŸ}E(]6d’') (]Dat\NMФt{w);.@τ*_VI t1硦-[hoRuH(hĥ,.NrHI'+]8M>Ts+tƳ(KO7 +&'Abo;*Pw &.ƫp)`ϟdh^#+.JZv#(NilctpQw-|+wx#_. +1ŃunCLz[e[i' +-}ǵ|UϪHJ}4 4U-]F2&&c%Zx0)#QեXnUsPwhdG%/] /띶2Z:8t*#Y,!]v \Dq"."eݒ(~ +~ƽFݥzhB|,I[#/]P=҅n@qY}: u AUUebt/t Xb5;τBtPBS4)5]lyt )\(1B%ꦋz~ O$q:nhWڽzȞtƳP FBt: ]dsӅGC&t +tS=iLj/dТ&UWHRh tvCX ,0]8ܘDB/:0]Rnb]i; = +0:~ߧ"JW<SpǼO.{7O8$i`ݖѝ)(F)$7ngXɇAوbE;.af&ynN +.ec1,2] g`HB?BA/φ2]pA4*IΑ6xe(%NF*^7RB?#t9Y&Iz8"ڠ<'8q9XXʟEPxr +d=sق%)LouO5qt.:8NՒ=nÀ튗.Tʷ,}BȧгS{.S *s*'gcdZNb#]Hj ~Ր${P#Jpo(?\ aC=CN"kaI0"MGUQv~m8=2vp<l=(i_݄&+W: (-* UkG 3)LX%]B5n2T4sKtQtA!,;NH5]tm +*I0C-XqObwGf MhrGvʗ-lKƄ8XT 30qMp1uYZ4L[ʢWk 8 H|c']E%]`Rӎt1Rк[/Fؿ.?tx;a,Ӹh3)]4)S}M}~**\LыH.15`#i{`̦6ݴ-Ky!ϰ ]=Ζ ^CJX{4&Q{^$()F&7 +S{Q't1X|Tw;i _Xi:FyL3."qw!EjmD aQ=MP9`L6-KRPF-ax4lBDmf^xT b,Io6qi(+9 +DcEqTbyI`C5N 4I|63bG}(S 2Jԝ.T#cm4rkBI =1҅'jn_俠">Ij@$Gh-&Ū,@B05PAU-[αE#!4YIH:<0g`N^4-ɾҗr"2AmD:"h1,!YA7GBR$LK/Y +'#h`PbRAG^]= B4n'|N~{k.:Ӏ?sپ,H,j.ĝ*f|\EЋ26[">4#gth<KCe#.jz)%:,E^LСkTY*. twbfwtN { +A (1"] [԰D e2!zB ׋U L#DRx>} 3,ZE8E7{Rrd oѓtŅ.Ga6~qr#]? Q~;E9MI#]'#d7z.<(8Gͅ?(g`٨Eʻգ8^qy!.V,k(Vg.|хeb>0qtns9U"L>[;Po gж*,Dy.|Ů_OΩ^GSƤ? ^.L -V˂8IslXt tAcϋlFKyC$]|qt-r0=o .@|C\@N, ^3 'mXpo(JX]]#邓6w.AsHXy)748 4-rH?}CBp`q8_VC[]M.t+t' H .Ŷ@(#|a%c,'Uf8@+$lq  +qtQ #.NjdZy B=)L!-**5[ 7u + ]4-[OC@k&?f!r6/ׁ{aC*R-mrLt3$E}Bp`@B5G]T4C\ A|+U4 Ѕ7BeB _ +` + At4¹Y]O6 +]qokrܲ8">[0d%Fo]rF +Z4h͑\.d8[[b>O +`[+)Ѕ:k 6H,\!%rQ&\4=mY\R#Ƞ.?HTAA&]d ]A7kDKЅS$:p68K͉< 8-&"G2*[2ETBpUTS.> Shxf5 *`NB?~N &g)-^4xjθ JE)-6XrH] +PpL^Cˍ.͵0+˨("?O|㭛 (lhP{½a[fl:`ZXJ>20%~.cʨMC'٣ ᴒD}] +y솉V{DwK]\j=xL/ü W9W`BՌy\)tѓFJ6^ƼVE98C^ 8ŀmXR;@~| Ŋ\.r} ]tR辉b}c4hft!. 5gv};>hKT}`M3C=e'wD4H V; wSߌ0Yqc&uyp 磋݂LDn3~u,fDI0G.yugP>||ZvQGp,,cTW}`\E +BgG#o714A }P$3~V 咉擆&9W5f\.Xr/Kb*C*({UU,/,Vqd +- +[WR}s&UTb) *SSMEfR t&oKte&ga2԰;5ˎ +QqW3a펊6\ܠ Qya&Ca©8mXIf8an3SF VX1?bA?&6]'b:b'Vk+vrTОjpb{h,62CQ1tƊ451ac]lr,ڨӱ~^i7{cg'aIpZV-Gdv! :{s5*<2Y $;JV'x$ UN6dƅ([vKaAeGTY!LՆ2bk4k-[Ve-sT/.LH/kgABjn]l>Q!e~i{X/@ +HVBN>h <ԬPw e3 +4@8; p6km*xY!bqyѳh ,38A;"Ts(ÌW$ՠe *hIb?vѬY8*HgSY_µܕayPce2>33~HI+N1%`ڵViM8,TࠕPaT ؈8zAHN;@.P!?E)C=*XMנ-S#4>=usKq +Bo +gS)>BS)$*4c +qc +z0E +$_Q!s)NY8x0RhP<(\F) LݓB,M +JAH3#D!Rl l Rt(HG1BuxbQ sDmX5xQlECOuEv` +\B&Cy QCTCC1X`(P@ +ϛ'{ +AC+АPB#(9AQgEE·36iMo'ʆV~kMVC;OO'=|"=-q .K=!-Oҝy''';8TD;DC +) {ch{ӉÍ n'4:qGBщC#9h Fr!'.ņqm-;@B'&*7ah~v ķM(61ъdW`&pؚ0h0ѤMkITQS㌦檢D@3@hf Ʃ@7QhB"\3ahx&<ɡ&0@57LHCܜ +hCw&*7QӻB ZL ]&0[&xSp.PU&L2A1phX/U1&]hmaL Z~bbo-&~ __h| uz HK^bah?/vPC v кz'Kxhw:2ch!%XhY 8#.ju;Msv9Bk@ ю9[DMbYih.QwȒJРT˻"hHKfL3%kh_ ;K Z"ghx ( .""lnڙ0/]ĺĒaMC뮇v߈vn.AeEK-aQa-ҥ̩%`tZfBZtہ>Ҩ4JJ(U=WBvgiM1nL`xx4DӸ?%`hS“ KO$%A-(q~e%8!PR$6gj1.Mv;9 QT$ڔ&!dWmh{Kծ$:_NDD^qP/Xۛ$KH4YIw$t}r#Cp5"a5;EZY[HxZ"Lkħ?]H|Z 5ޮ% +$zZ0D^k Q-SGXԡl{(M6Aژl FEpTct ^ӥ]ū".6*tjRs[QmQDoK"')*:]w9ّㆋxD-%ƹnIĘ 톲ۖnln$bT!Kzzm{K7ȷӠog>oIp?FI"HI8`y\IR1Ix7+o7f%h7 *8)p"dm"g'J$p` q5IĽEg@_'l DjtmD`-"DVH"B!µDBw&DXKqD! gȍ{./!ss:DB9%8=m@OClyTC!tCd]|x.B\2[qXMh}y!ԍx!sT u!+$.t-·R_ԅ'B,q{,k+θh]rr^bPo0.9~ 8Ÿ6b;6ϘnuUqJSBHR@*>˒Yr1+W*슠R +&-CKI!~TFBs8Eo`" 1=|q#4Ǘ+xF;:. x _`'=A69|rSG&CU@冤\ir<60׭bnZ)2Wp\`sMs"d~(Sn͚BRٺɹB*뿝[ҷhP˦K@б@`;(Нxh8]WyXwIl +QLn9C∮-cs"<.D[ҷsQEit +qsF!Sht5:>B4 ]B=''#n$@EGڃ4Bd#B4E~=':!;Ljһ DdrIy{!X0qPB ;yY|B _:;%pk9|Ʒ9js9*9 +t699:y.tSnAtKՕAAqE$,IW+].t#+ A´LQR@`wR!uAwm&/!*%}C\8Ranf(>,gBC15{a|tƾ==:R]WTPQW.C>E\EIr몖%_0w=z% ie΀ADyjJh E4(x9gx`! Aց{Cf{i0ZF:G.*.VǭpR]L")#pv6Zp^;uPIQ! +gdu@]u:TbЩ@\w̯MLJǯSH:W^,$B9T~]կk9:bC"׉d0@{ˁ®t0.;K989,5%gCEêaˮp.>CHoBjқ5qX`"zw82b-800o0!oq,JP `7p(0ƮoEȎNv puBr9<׫5ۆo.mv\n*6R K6*wmΆ{.luur,jHOl8̖c6ej,gYa @˺51w5Ona Y +jVå C0cCRcQG *l|‚4hWӠka,O KkJųb}4j4 *¢Z g x/woX41hѠSF@ebS@x${.#"ɷ j`&oua|Z/}B^8Fx@Nԁ4}?1"~[CO~xB?ß;F4*g@Mwglo-g8nnf0~֧jhi%YSsH[1,fØ03aVw2xA*^S(  J]~a +!c0І]q 6*d SjD_ ~?^'¯Hb00"q0 įaҬ- 9e G% %A#H O-kc  K`&` WN/p_hžzI9)btpa  -ǿ vLo@8v6 ~i](..ܝ?|.lj.La gm\̸z F?K %"ۀ=-X Bi9 ZVU`PJ’y0-xa6.- ʂgAt5 ,1 _, )| BxJO=0c.UG,d8DX(,XX8ǯμ]aK +KW\A*xB;(~ ѽp@W >n"ӖVV$SN@R\AA\` :e\ +Kv#Ӹ@5k{~P29t2m[aB +|ao/)4y}!*/yI_':o&5Y=z+(䷂SLm#p߭:Zf?`%Ю`VHYA˛ddȬ_j+aاYNup?Sf3+bz=KǬNy DgVP?Pf٬k[嘨6h(+ +?H| ){yrc8~ZQ@Oo>)Tk*:+ӈBw"**#1>M:Ќ?)?F + +*T*x*02Uơ +:dTP*I_b0k$& +OOANaM7G5{QlB%KJ}P +cK +KH #}Z GQJ9 +Gaw +\?(Z}/Yb4DACV ?AуB+(%Ba +mPء?a?!E`8~ =m{JEG fNu/sN8 8&@oz_mcW&\&DQp L0 LdB 3 F;yK*~h5Z g۰$] L+~T mz0Z)◌,V'AcNDM¬I$h0~%A8@H¼ O >"/ΐgYVaH@6h]$ mO{ 0t$0= d1_*':ohi; ?a@P?ц=4WnTGXGwG!?7#D~7tjn+ȯ]mFַIg2bԂ8y2΀EaA-B]=.#Vϓ0H+S +k/)A #3i5,07AL"4ˀb~798@_2>G~0g~ |jlX}f~5D|rOo̯{0/z0i~y0ѓl'w<ȥx @ ~6߾A$@w9;/wPxZv@r\:x5xSU1?Ӂv9:)^9G&r@883c8Xppp58xbSRz]7Xv蹁#8!sD d^cu_6?C7<`j~N 7t|EȧuC7`GN5gmm~ @H7X7?*\KMޛ18S;a tXx4IۀAjʙ B66H55Hրk5D5К@MK#߉UA-R%LwE6,_* +πfPǙ y]g ߕ8,J p{hBg( h<`<3p~yәn]<3QtO?3%#]p|ԏf Q(hH1ޕfKP*2pA l@Y@fQ}wqZufU55Ͱ9ĭ=ud08m0XT?5{~永 ª~|߃E"0ߋMdd?28K22 Uc2`N`/dc,W@SZ0kLV%&?u֌ADl<sjolcpÍ\~y8hm \ܸ~%[-$ (VY?BE%owa+a0Wk֯S`e` dZ/'O=_p{/l~ 31mJwx1$lr.D][֏ akq.'֏ ~[@-x/@PqL d: Yc8GY>4A <C,#% ^h7K +^_8`Ь B++c_3Q,"7æH*8ر* [CKM{3jW@T +RЈDIJ pq^tsb?RN+Xg'O(8 `s;αx|tqJ``L0WM ࢤM`L1A0/AG%%pJp~}J0$%IhRKi9@_I$(" @kOF_d89SoYZw#.ucAE/EA C>v:]!!Ȳ1E*A eA bQm~T@@+|l{`@|zeF/T\S;@vZĮ_ta o@rM@4F s 8 @5nmsD60 x5j7LGhL4 LPe.K MIэ0TZ(E(u$ 1u_ |91 a_a`  +;뷿 < d\sx ʺ6-}lw{MpX%~]^ ծ\[@4z^?O[5oIghHf~^I?dR局wk9~7@PJBV?(*ncW8@(c*,0 [" 4.YS'L9XƁyc1dJ lt,`X`b=Gꀅ'lpɪ1F7v,){ăU?"_~߹R~ޒIV$>\'Wƃ0r٧ .C +d_!^>q+P6zU@ɘXt +,"S\VE$:<hP~L8Cw,`JtW@@Rss@+@QX7KRF#MuRLQmׄ 2 , @7yg;91-ws[ +) R'Ps^>8r<ޒ #EKz ^tn[I:89`$_7 Q~-H$]t9aVd8K@pߐHD~nT vLm/͡"[hcG Jb[vTztbO֑y3y4$i U`k:"x/R5<غ̀G]g> :yM OuBׂBU5KG:7 Vb&20v Gb۱aSRWG -_‘wU|qdj e\CjZ_@t#B i%O:PkDMih@VxDwd#-H, 8n/fQav `ć>4 dʯnfT)H0%urN ^z G# G{f>-xGȭlx 5=nR{ h?9*U^BzZnIZZX$yN s +HHfqf +`. S~r"{9慧C2Y,v +J)ejа`5\q㢀 %TZ0 Mmb"hl-+= W=cBIxӏ+&MD-D̔fZPluܺɭW^AOJ O mZw17td};^L_D)@C>>'v#hlƸ60p5MsV-&вbCCoe>.p@#f!v1,59r01Ӈa%=K%%}6#?Ypuu[ڸ@4rJ ϕqhFUT4{ +?x!C38T£tk<@+MjEm.<@''ܡ-7#> _pZ/h5vi@oD ykF}%KGL3FZ2(RC4StFXU:=EX,M'm5 71B(": Z|oPE2$'VOupid3D`~vHkxs4)㾰FU` 檏X*!^|Ƃ9bw"Blf tq/QH鮄`QOj!!_yJ>c)Q8 RH Q- ln'A`fe`˶Woֿ7gH#N>IDJN?.i2D(4C@m#@6dT.S?,\hŊONjȘz\c*_!X>>d><.AO(FC7ReqiG +w5ef#x|0v-?DN_#xkrɋyYG+o]eĞ:(= @8W`|: ~K!Sſ:L8uGv %NΑpQ P&G4RfbUɃ5VzBn.`\`!pz>IIСfl7=R2"c.KJn>h#@ƇXᄱ@q䍛u &u-;Z+MAl#Z,(4+R04KN,f/~8)YctE17f65$ߏ(Hyج5蒌GЅGBȐ +<9vwPIYI?pymCPo@ğb~`@a}w}_ڙX>G}6`ۖ#@@ +;й#Gi &m07?4US5B-]F>9N?e(+4D lR`pM*DŽ8>j|eJR$Q# op+\ddX4{'Yߘ$ ѧ~R)^2%qTytf6gbV4WNSд"\dod"I KVE#qA9lҌ٘ *Y2mf7.Vg]3zթTĈ&/UXsbh9=l.D8{voٯw5v]s?UG_ Xlէ:R~fT&ؕ3clDl=iseuztk%]):WOEz[ҷ3Lw 4OmYgYn>?1FҡicW:2JKrd݌`+Dq;b]Ѻo1,!1Ý#Ap}a2GI8.2'PI?1+KEW'KR3!j%araW:T.Ϻu\*zuߑZr:ӒPKy[=Őw|Ȟ_+i8tRyL?1#ĉPG.$Dʤ 1"'6% )xiѨ?_R0ڌx.I3âRU\-Z5tVc."+tm~存a1yoU3 5 +벑u'.*nqSmGAs&K,zM(؂REj͟THg)J0Ua&T   ÜF4P`GMWp'XO@) qAd&HŲѬzZ BT!qgQ<"^$bTɌI!s`XnxX3N3n*\V.PLC#u¡UmR0R&)y + ŪTBK'̂.,Ո'&aAV0¤4ahʝ@ |L9‰e(%@n9çEA_1zO{0DJp +E(JT0X  0PP dS*H0Q a ,h,(0`$$(`$d80M}D(-AiF/W* -0Hn`-i#4jB[1&nLDZ0y;iv!PP D&C8_! a&(D*"D§⫰6W=h|~D>䡩])-Lއa^ha?3Ȭ`ly2P@A}5<ŠTp(VPH008zZ4 ~ +8bI ^l0 `ߒ\.ۛyf vdMH'i ⢦<`[Qx M:l*%) 2*R:I zDušTiRN : A!{b:TS:STeR ew2 I)2w󨼸[GTń]_ DhёuX;:PD[)OS/`µtJ\rGՒ˾U0}Ǘ3=h%Jc*hyȄWv= JQ3-Ĕ=â'2߬i4\3ǰ¯0ľ%dQ>/6Q q%SI2R= K tq0 +FiȶYl> K|Q9'r-1];ze|bɷT>[]$*ϧ4FOHGɽd!!2žAÁ!|MϸjR +*=Mbd#~h tnTT,Bb0;&yE5dɝV& RQB6#2 TՅ/#@ÏK,(7]=F.AoH˱{JZR=B7P뜘itHokYuURk O=ؓ"NET-!h+ZJ2Z>, .|Zcؓ+34K) endstream endobj 13 0 obj <>stream +Ӌtz\t4 `Z]6|WS?jP͵Rh|r%F9f)+b`]lK}ZI8DXhh;}9HIя0B3 ަ+4oTݻEw>\]x |&;8Y(XK~gĠ?ɋ§g_m<4Лjkhg2\"; Z4[+FA1J^zPP' +*񍶚GSZK $}փ15DmAx-MAE@oP6J0YفC})[}"2*c +<8So7Z- GrHQj,SA62S{m^z"Z"s9@pGV\p"Os9!u,PX h%ai#+D{VzR>- x),U8 +Qfs3(I)bpé'XTiCXSUuxmm1#1R(6 =5bT%~ViZַ uY^$ +5"L}ߐDСiu?U8 g)3^s =X]OҭVVB WQ$!]U޺b!qrH;@ -qDE֑ *zJo#nǰw@P x% x%c5bTC8^>6p{(W@&NwN$t +S5A{0A]MP9gc7lAH,kEF09E +`hWJVSiTщLD/E.('T WW>)KT:EC)}:UkW%F~30K׉6"r%,U؁W<$d#z>6<$q  ^-t.lzCep sAРSfXz"54;"s 1H,25ze@34hpoqII_$*XY34@ +Kw]H$.hM@w 9uA]VQsW\?뱱@$8" L&+li$mPvTfjyb 8~[@9w=‰,d%71!u1?GP *c]cC-m2}E`) 5 04Uynpq9N ;nyeiPch˄uX$".QI75 Ltlߑl@X?a<ʮ}>e?4N<Ne^oEG% ȩS Q OӚt|`qJJ\YeHB] .أv+Zq8D+o)W. ̯ F Ԉ`Eb +g-(om".cDhGxctH<8!uwZp=N•@< @#>'&avT 2ZHCts d"ScJ2p{@c"z ~tz"Z5ݤ1q9Z7@ ̄GQLOj +X$x,J܂y%ZPQBo% Má@-H7jGaG| +-u-$MMN0Ɋ[!B!,a Sȡ +-GԻػdOiV[ D(&q6ׅz>D jZ1j⚕^X\OW22;v?–ԔQ3ZtUr$㝿vvAvkZq[d0{Noa랍=2HQC')aLaiy4 >s lz-;/,4L-:|))U_> 9[F,?,ٗd<-}<4ֆ:*Y>\:c8< j +_1aNb>er*I9Vs =kl1\Dz^BʀshO[Fu;*yXL +:\!X|@}Ec[+[Jco#IΗ<l4r+9r$qQr"m܂.TUfA0~?ou + 5`q~l"TQ?*J!7?J?i29eQ\lZ/16zpRSJC,=@`@%:NU='1G8cs@k"t +a`չ#P@o:o)aZilyP~#C7|^XpHABo8\삛h(|,Z0.FRp"2r5G P ~aS~IRprk@>ӾNg  +{B9[W ћ?Fb +#]`FK- +B2 qwZ,kR"'ю\ ++*49A.NWC+o6Oc$3/$<_Iu>vNP +MyWre(r0 8zWyOʹtaN +번y4 Ŋd{aIDVsd1Kì4doWU-E<+CHqrU.y* ¾&N.[S**ދ&pZ"U؇}m[ɈY -7{(ĺWWz:eN}$*']qq}It(>1v<*.\ +m6`)2^#R + [r2𕠰. BSHvI=$` ITICV|@?-aFװBGm-oS83 7]ɺZyvPjep{)sA8 ͔B}ŀ֯( gI :1߸wJAe*P"uw8 : ++ Dzg>,&@z?Pbʝ|GDxe9o W< Lؘ1ܚ<KJ%W@kO8BJFP 45`4!R <}yB 5V@ʗwVu˂\q 2b6hq lU +T |%?/~l al<E}zPu\^#3Zih%'4Bt<@bgzξi8D9g +p$91SmEtvbgǯtn_&Xi>$,RdǐKd̶_j`uYi;T +eLsa&Z[iv7";Z3P FO[ȇ`:Wن'3G؟.mcvŸ( ] +V&@3 QNS((uh3Gʿu ?=RSp#Z`rC [{Ò07wWX7 eEl]{"Fp o1b날*[]oƞ=,*{_=N.0aۺp⭋U~X}0k>,0M1T3]uXƀI)0-[BB.~a0IXa ;T0. o,U< ؇yG~ bǶA|݌AD;1g9mK !B`TE#9[ PA,A}x]e.Pz]dl&*)7L侮T3 UW{`9M`asavl-Úa +:vϤ@X{0H ~1;,-V"bs &pV&5~, y@,uo +C3bk%̆aWYx?rZb2ME姨uXzŮy/0&X {µrǘX"q,ib9;614&cw ,2Vgڱ.,튍ɾ̍S +>E-iN+ Ȟ{dڔ$ VYl8}F;M.Ҳsb]<ձXYم`֪Y _F'n33Kl_YcSd*Ylo6%Yx;΀d,CgT^9ϦqZ.=SCHf6hBMhJG Դ>q!dh NWRAar Zꁊ17]!ڦkVH)Ivp&цW`M}C480 :UAvh Ab0R4*6_hQl\{PbhNDK$v4.^xDԸhEh>1c4b{.[.Fn Q2z/sF6`4K69/Hh2.WjVT\-IBM=Z[baE/[U +A]6r6ZMp^Hhv KZc,!&1!im.N2iSi|cLRCƏu;\ɹט#ژ>koD Xsl1I?m)գ2]ֱ ]LbŶ ;Bg{ϳ -+6<(m aN.к$vڌvi; 8i˂]hFaJmMvQlu2k/n%6۲5x!c'0n+CnQr=s+綥7v Vմߎ.^|-YxxzKvy.moblg}}ۛ 7ŶpE!\yc + ] a'TG4ȁޕ30~]ȫGp?VpB_ipᯋx_ps]p`| +aymjׅuq0!n{#疸p>qUx%p] ř ƿ:y]hո\i(V'f܂3xzƭgblƉ]-m]| iˬq]dhM0Ќ{5Я |]8Qs⺘Mi<(ҙ7ηuLy~&J4u(.[U.Fpl.u1Nt6uY碻x],: ҉- -kY_!¥VsMw:@]⮋#7I]M.5ŪkVwd>&p]}u݅)5~ +va.ẫ\7]O\^ږi8!B\uA"N|̌<c[ b?؇nD9.^xؕ0UruKf>@f`Rj1r.$uA^.j&j2Ͳl.uG^.ELd='ٍN 8i[.4.BpuluЉ}ʱ5@"tm^huqZVFAY]iJvd7Ic^tu1"M^N`SƫMNwuWP-vXz +"8;; ]igy{Gr%8nsdNs˹v7uW:Y]?zErE;E u!yvWںP`6+&Y -ƚBdG(뽬`o{2.Ղ[g/u!N{.~ۋ:܃nغp;/ݭ޽now(_{ "/~]tf[Omr]_,\j}A176%ߛbLfO}7_ w>諦k>{`9QЅ}e_ߺ0M3r,@[\ͫ<ӂuIp:..BB84(.0kF6rQD̟/>BS}b1?dacw3X"GN4}хޗG{ _/Tg ٔ'y_=OOYG ~9hMwҭSHy~ƝtQ!渍Ï*]Z~}`^onX. +/_䃹(./tQS@߅l4 8 7]4khɺm5%le&REJG?|HsR'b6QIq +v%8Wt@)~>W`iA P =]SΊSl_0CWD~pa)yuESO..Z.taj=]颇<Gk .ŐB&~X9^Bkrkt=෰<]G +~w?E؟.ꢞʁ&MA]>]Ht} ?/N̬_~g?ͻFqSO𤕓\@C~NZDEGdwf~z5]WC O=jt?uSS%_!6] Um]rVh .ϐdq`= + ~>dyW~@D;|ElEi .//s1gAN_Zoyw:] YX(<?E""",EJhd~[9] "@_^":"$gW_~=]CCu ձ +!*so {/5nd^b7ItA 5u_tQzE~[:].tn_pno$tqO3Iovx$eNeF~E$8:t$_6a]03]hong$ Lg8<,.}JNA:Wxo2/XBaý.F^%N~.K(?NH51mE..Q,]xMc5.xaxcd"KqGLtіK/uI&wctRKK\)HT~s1MT~_ze~=l3a4Eci~Sp\olo4i~\. ئ (礦rA[߷+E4 5]`H$jcE(@L.PrWcbcf~eGΚߒRk@.y9 6lLD1TkP ӅܱEym~sxH@%.vs.h~ѣ?6WP[h8BXtkx <@tHot90)G ]-r8 p~sH 6W8ta(T^J9ktCʜTゥ.t_)]T"lH-](њ +LeaO E tI+]`Q[׈j/Mat1F?ƾ:'_ K6VrG?J/JB(II~L"u']L%+/%E8T_b;нW=߮T;o>io}u&ӯq~X*V@'!r(CtILbSlaV?^XK~R#҅4 Z.Pv|e [ɅR|W @oZ +z)WPuR0"~Ѭ߫Z?eL(yCP~B.d7Y.M*"~-WihG#]h~Q0}A)x`E餔lB.H18Mw8ejr㤋GƫH8Z?bn[z +fؙT>Ў~ + +.Э_X盏.&%#6FޣG~8SR( _f7"R[?gz1&Od ٯ|qC؏^:D|QߛBE.T]@ʔ<YC.JDFtAQ.ևQtk)L¬b?raKR ]L XدXr2t._A.Ah~8ef,P|W ]Ѕ#aOC lB<* ޱBq\I. z.y?z>.DBҹtJ UtI¯7t]CхV7G~k\A/&t?]Wh||Tl.կltoa~ŵ =eSs ?5]!•`emA?C˧X6hBK%s(#_$J7.Bz7P+? ?袏3u(_mlu;GI(m._D.<Rbta-Z袚t]l0v3.Gхq: iOڿ⪳<Et1l[]%yqm~KD] )LFyJGM$0 &d +;8.y0ɮTvQ|takc0>έ1f]g]I% ᣋU-2]dv;Yb~MyP#$S .KMU勑.ؓ Lj1L̼֫"E@7>;UKUb{G0aGV&4.x` Pt ?EL{ `~-Ea>O"]hJI=6^XC+.,gC?sLHdH!6^ROvwW@vHE`HhT擧( Vd|R'p(Ȏ2%]룪,VizP(D탓#+7ﳓ!%x|gM [$tAmTb%:tQ&aaȒ5oR"Z-?! f?jJJG-ɔK[4wMY;6w&]M$F(0Vk*Pj"UbykoQ" EXA'@m ?օ:: `BĘt 2>.C L˽'uka0]mf4"hi,0ueeb$j$?mL+e#kv0pp+t\^үtaQ4Mlz֎nUwLdi\MiMDbpDUdAtKCn^ם.ndM.>WV<.n lCf(W>ty/ |GAykm^d0]P \L6ktYαc?@\wBs2{8D4]K.EteOM;t:IAW p,n<*-5]H@dȓ45]0i5yubf})@.V##¾( ݒ4mh +wHa/x9qM/XMdttǚh).4~C +A' fħ M!k/a]tp"y)`ISmy7]̅e.LujD)Y-CȀMpzRa=@7ſY\\tP"~޾@2\5*GmH S+6]8`b2:G CȄ2+ MOWv$E"bD$o_hDJ2{cr@h{Ҵ}A5fmD}lӅh8o6 vzZ+9]O31 wJt1.lM(kBT*Q.lt9u%>],P+ yaĻ1hŶϙyqEqxW*$L[r.xqo,qj HSɇ/e(Ɉ6Cpza ,V>zc9󲫔/BR <]|$ ܏=]|$E./p^W^/)brBmBJ$ D=ӅqS^7e@U 26o\]n\rwFҊR0,--Dl랍|aD@taSI@'Qt۲"et!'m'\w< +NN@م3Y} +-i4/5P%а>ΩuW.gsR2 qJXLߴj @?7] ʨ~KtɳJHtn jXk DE-%K)5,nvOJ$@Mׇg򅥫WRVZk|m.=!@`Sjph@/{yߨ . 61E|Le9 74o" ;RRfؚW-FD3Qx&Htp#~rp_QX,o.y/e`>XJ.QjZ +hc đ|O⨫iomv)r[#;oJDt ) +Yl2b7]T'-2YbgȦ wЁ9xӅM867]hYWʯPOFGdӅ~-Ջ ttdVWFk%6۷g7]mMCW><"\(^ +Y0FRܕ I@${6jvR9] P-LQBcb/;DAp䏽.iW'Y%Yoc7Bg9s+`Vv875XF oMqg| €(Es Z`uNJ6]T@9\Yb-gN" +o2{x4d\Jb\+q`{qًOU9]7C<1.V*c0Dm;NV ^A8=8]A~ <,ȡQbŕN9]|{:.xa%-..3tɣ.UW|:Z|efqSoeȱX#邗.^M +LtO!Za8UGMn u',,?Z0wEe*|7h.?tAM5vbZ* ~c¥(UYǜe~+Y3kv{Mch&ٜ,:]]̀1 mFqwOȣrT#!ܴ.]7z-F3ezM%2̹^ lC@m 8iո֦M;6]tES 1\ŏQ{ 5!(y`%D + Ilk!7]tOavPM>B&Vl]Xkw қ.L+$~GGyң3]lf96$sB 16699X150V4 g+}3;7ʂó])tlɛ1]*b"v^t)Zұw.ʽV=?0/]PRmP&v‴퍿*O饋L ZZR.bs, E ~.]%ꗻ [x$seK;q y-UPdLƣ٪nxCZ%l19.ԮH\5{+ajТ6P7Q <<:~t'IwҝtC-b"K؏(3]98{8`(xbN*Gos_^e#d5SU 䦙%^˸D*P^# ] +F +8)Ujyy4bx X)/1TFLĎ:f`bh Dt 8 +J3``bC%͊*Xv9y}\7!t "*1Ռj峳x8ҋ'%eD< ƿ_|G +IlN[:8`R&jy iAŐAaB3US,"$IPtK/XVL"];n/Kң6JZ-!JTDCU|%EE˄IZ{AdEDÊ>T&WAV7 u0+DРb+TZL,%h +!ю +F +J,eM*J{-}fa&Nau,a[zO|g9)_eoK +o#DuryT<>~]5-El(=+^WIvIʚݓ>=wr2]aN{l$oow?nX-<*>JjMռŏ?z . +ަcb[iqu5z}4 g^:˦GevHwAKKjN {O e,Kj:J wNĿ.F-o9 i٣dH5IVs9`G{u<;m%HbPzܵU˱( nOl>5N=\=fIZёjTSu_`i})'{e)~0;CfIBT^=J(nvD S-)ݟc#tt,EE稓 ^_HU%%]Yt e"]EhWN'=]YO)(WSنQRS0M_6X`*~cB (uC1MӚVE˧ +vU/{jUzRK18nRR=Ch9JM Cp6NpC0.~]]Q=?{6s=ߧfӌN8p$a surٟw zi8uY{ycu! +i2ty9/>52t 7-Ao$󯓷Av@Rn\ubiɾ 'L;9bw R|:7  +3i7Tux\C3mD٬۶fqƵv]qe'@@̌󧪻uNGPNħÉa,t䮛92MֲԌC(8 47flFG/GVZ-25w^u&<1 =A=e9XP#xy!iIw[7' mv9:&L`W~͝v[n1(uv[Vw z$v5ueEME[GZ-E0/0$;J#/^wqҌ#09 w!r8]wm+Sn6fƉ9.A`fQ3祝e(" s[qnնVh" +t`9n88t9Z6MAOr^qnGk9YxD r8݉ƁIJf}# +VC)74,cպ ͕5Bg:*DZ6aiʦ=mq=$fYi޶?Kg:BUdo{,lE{JnXi;(X.O{$_sg>1DZee,#%$=$b)'洑w:5gj< o{,$1%XytDZ':bk/~-xeoiUReEE:MMyt :/8Pz.1; /tt9 6նsfW䎫?Op&?|7 ִi,vXM[;H6ٰVcƭ D"DqTHRMaQ,QP;ެ3syƩ7'NdAA?M{8ֽv2dj וeO{m4n[qiKqM{m(H{٘Yj}בVEVm9tHGpFg/5\'fԣw]AkJ]-*!؏uDhu0\ lŒ nfSr:D6[v6j#`eԃ Lcn;N<kC ,:Vb -pc_r6%mZAy$`D(i7y/?5KJr60Ƚjy餈 e2ةXW 6 nMWu֑=ǿ^W7y9j\ٌ@(Ou2[2xЬsf"'&nP1mnθل(Pe2vf,k[;7֌nYunR;dnGv0d5mB4Iݶz (?u +qt'4mSlD"pO9Y:tfmK;ns;?_tdM=:(״"0R 2]f[{_h=W]d ֲá=rǡZuĮ8ක?NI ǏMUvZP/>$?~'5K< vazIrZmaY0+ƞnm5(I]Byj-NSÕx.:M}(^80}N|Mm}aj8(Nb+yE2lXm8vDΆCq޴)7 7bB4-#9 Dž/D_k83]חf +.8oyeޗO׳^7ej,}r/:S,倴YglZ-VgA1 9w>nԟw]/7fv6vնo:~c5t:'#l םb"1MHs[iQ5ةbהw;nŭ(%MkNpJrsTDjUU RO$]OCmKjeNrժ,ޏ nryd_Gق^" +V7GsD+UK9|EqAáE7UFZUi^gl Hٸ[z8B gk5Mtm{2a9,c;)9si;^m[ ~9[JpI>`L/H:~A'ɂ]TYH2EȩvTeInsz_ey1d+ NN'=Lt4jSTA͈`J4,Ћ?N%ϔPZ0I3J=wy%5uT'o1ь嫭Ea2 Q[B͞y1K2ղ{ O'C5ace&gj> _"_eq囹NN٨Y6n@,s3ͲWj5ͲV\M t>I֠1ɟCg)Qeǝ;N +v:獛 un6ڬjmyNy'u MM+들y,ZFr@Ԍ{gII:Kׇ:-rYikes$?O6- "~"ROUۜ%j|Nj5?J~]@!V+USnkbאIW*ƪ_Zf,JEaҚ^'BMԚ6VE+f]2[rS]ㆊ)ct)Gj~вEdzx4>mSiB$k mk)|a?-{SH5Kxyea2Ip$uQDlŨ:Of I`4QbSO)c#mv8($m3AP (JCXbmA8Y9)9Fj$uUd)=].1[ZfESfx(Nuf?/6Xb-[96뼛6{ݪii#sq:3t|-2I54pajECb$vCش8A; #Un~yZG][7-d"yv{>ibou4M-UA"}ޮ Vۮ*D~ +POb˟A.4rR,7ulm=d{m׃(5eMbDv]k +vQ;nĢ.Mn%K0?C)R"C$] #o6)x ~RIMM* +J;hEI{AkgV$kQlWUTAP`K ?Ñ; dU,F܀e sHJqw-s3٠U ĻDrDy$ +kvȋ#}w_7w[mp o/~!mc:\I*m3ɛV{[IEqcl9Aw]moa;y|A0tL7޸sÑNÏIh` ~}9%f7\YϤ18J)H=r?cnki切_%vun{[v6z9\6~tq +yFS4lN!/-]EAMYc(BKԚ\ɜ zƏO\+.\'E'<)GZE)x~[yݺeSvp"(BEiIIQ"Ȣc$ seZU|9`YQ/1o/A$i41CvDIʝС+J,PSr..Ǖ .8"X*A_vRculjG],l4q˽4"pݶ}t׵Z.Yf!uF%[tR$d1M`K+meR=pPQ9I;ܗNr:l͝g ~vs֡ %5]OG6hѫL}Ql܀O[j\ IڏU)9:V̚ksQWP,I'l,vU&*X#!,S=fx99,Q$'@ȓ z-| #~4cZQ4'E=xB9&ϚNw `xrYɰ)-I7GU ߢn]Y6L{r8h I_{Y`W5yni om-J n't2;J(ur'5a頝y-djO ֟gwqpU0l4mP,9]jZEPŶ+%}! "'T#~coe[ +)3TVn@մsA9\G=kmC,S 6h8jq8:~?{$(5O:h3{^ ~ǥi3bxu24})][8Ai5U.LN<~x:8(b|9$QO,gЋ=:0Nj)5rAo:fУA=]Jh.~RҗcNz$r|7KP2tj (rmX3ժ(6P{B+ڢi<Spgf{M!Gۍ=[N+?d*,UK"GY v:]wf;@9{]mz!lГ=nݲqrv:t(7{^o{iڢjuPL?Q[ZC0?wK?iRE^ s :$i=M陃 ~^r6黎4E|S~vV{5Q-KZU;J; 2Bxr-),Ek%I=?( vyQE<٧]w. g-v-'?kߎ#wm>z?*$:&r=ަbzeͭI~^WŸMVϤ%o!:IUxbOe8]T=!5Y +ޕGMLMC7=׻բ)7e/Ioj-Y樗"zud(bSSb?q %MMh$'=1C7IRPL5Y7$"Itmf,$FT̸ء4 Bd8dFK}'qƈmk~}{scQ@f/tw6N{u~iyq=e~=Z&C}yLt<4}o|4;]y-$:- dn{<<^5"R:wi=ieyz#3]46/.]yTÑGڪ֧kUR!zNr,K-3Ɵdn9YYq6l& +{aÉ2R5, 4r[h`hdDx&%ED Q"2VZH"SL@@NGն3I IrǼ4er<1zXA45Rƒ ~C2EL+-vh1erL9>Yymz`^w2UIj'ʞKovM8&BѾ47-Ms7,8#|&ϨQ+Eov:'@sj0>d\RJ=FB^V(և*0+iA:rٗ~~begsjxGhq RG + +SVStX@1Dk>Mc>("ƌ +e*϶,DB^E(n 0F]侯ׅ".Jn) +!.IGKO~b1N^>hB>a{?5S7ljy ȸ9 u(`hҢȟG=O۩EE-V!ޖ-P jJQ]VW[ 7Q3ʹ͟1;fa";b*&[bqzţ^Gb \JR~5,bP1ђgMC_Ѽo/^7Iy;60&*=񣞨An +ԁP`3RB!uinIܱINZVq^&}Ut zsBńCyCͲQ;3y,* +meN|iUP(y$ N)PNӤ?9{]8U"ꁘQI"G ,8^ym0.UW9>'L4Ng%m'qt` xĠİF)|WzP4Ͳ&%)#n2٠7*V%(1-[I+㓬V]c|D)HBb~Uj "=jQ-i1gygc!{T,ԾnZů X;BerQ Ȅh2 B%箛O2A"YB4'Q);P0F *?1TrrYJqsJw%Ŀ>sE녉X҃ JW'iӛbEgeA{ 45nDZd%8)2^#+U{tEȊefoS kk;._TR1 kSqlaM߸ql/E=5e_> )ԎhAIHpYF5zAB-vY' c0&8 $\|~ENfE2' \"೟l`߮ie$ )R@-Zjq׍xm2`fV1Hev)r HHYaxʯӬD*~MvݧU_T&}V`mW3jmEnjMz.\&*'9NHFZCo %t̤F)T$V-VC4ΣG@ʦ亨>نj\| +K-(\jP:4(Kʊ_zy/R#-V,KnaF?jUxrkש]ݤv':iZVٳ)vMp喎YbO%F 4$><9$jqᇇUEzUS8=8^PAJV Der`_"P~m0v$!lN4"*MY)BmL`"%(vܲ-p*XZપr0>!qd/QTܛbH-Uq+s}Zv =+ڧ-Z~Bx~FK 3c%"4+g4ʎOuqeeR"IE!L!QUݯ>ot^iXv8:Rd +PR +^~&>Qr'->jv]v})m]dĶ(?EMoKZUۢ 4$o ԪPڞ$=):O$#5(4'߄$F|A 'IRۢf24uV~Z99^ˆGEeJYrj,?:#gIQyٲHfz޺i%cW1ɠ@Ӕ:b1SŪ"-䷕ھ7`QB{$ϣ;pɔٟ)noRP.QY{i@HpLf/ѡ&qS2f`q +8I4j`8aQVӪyє.E1 +nSrۢEzC%dua+S_R͓pR uSWUO˞|h2+#;NF\Dox>G?mZ]몄<.{ˑwvҔ=^)P8N]n ~MG՘zQ$X,T'wNI~YFOӴH, ~=,+a xf,Ng}(PzF .|Fɰ'Eq$ 5m_<߰yV..Di=ZԶ֤vzY⣨rY F}FU74ޯE%~ vO3><=l{獚)^}O<}*~11pԞ0\6o-Y]jUӧ iHMhMsC_?uU˚Ӵ$v8,gs _owIeɫ'*@b%;$5CDvb*@U/=t@ 1/*&.Jս,[A@Xv}þ9mxn+iOC/^:rSݶvSS?G\d4Iv:)xy /T-눍㣘fYwƁPAm_&t(v] l9KgǺi.%5b(g]H=cHRî#cjHfmi\Ԧ_ TĀX5C[Ԫ5)^wjq<⸒c,I%q"cRcξZu5o趙Yg$?{RˊVOћQGVM0s=OOۦ?olB4Ϻ䨧%Ϧ*^ٷ}y/{VA7JnCi\[UU HUIKr;,ǒCzt}T h$m8*f9௮fvkazPi^hie1ɰF .R(@'`u0c)r24qhmEk{r931jR4'K4Bpܫ+m#KCt@1b]Z{^mUI'h;Ͱˉd$Մ:;9~N4Wj۝$ߎC. YW&pr$b؏OvmcV.>u$J}4QTC-ʈJU 0[,~*ljNLqeGl5˧Eh]Ҍɑ̋6ьP7P)Mmy +GT$-z(y-O&yjr;5i~j=Yg?)`քGx:n jD$c{͚^gn~?5}e٬DCF!rdfn]qyfq"w] kiuvwDնB Ϟ8R,#oL,4M2&bSv8/`-_WSGWXn6=ce9f9N>ˮ@&njuLGԮɶpK5dn|@0%˾wq£i +)EvdCbW$!=VTBpG۸(4)M9.ţHa28V|$Pt97G 5uk]zb3>M.JVܰ?[Ut=Tj鹩myxz ㈗=罞ǣ*2N93<ݻ;WrLmrGUJ먷QԺXN EK1r]]h[O0L&IV_U>MIrp:V =<5K6팦ڲdɒUy}ߐ uΤ؊m;Zx'IYh~y,}V)~uM:fm6vI&nMjeT WC JjeeƣzeG~>Q8 Cz([yq>h)1q(zRL:g;LBV6= +.Kw"-+Ay+ɮ_0yƥ鿯Wu!u֭~ ?͋|,,#,-")Q*d^9yLB#ӇT=U&ҍ 7nɶ g%O(")Qb. +aGH0 +VIBͷ}w41H;n< kHi=ò> x^D.7!=,~^Ph 9nPcr[=[8x۳I*_QCOW>M_0T=7E-KZ'i9]xFuo3OWD@6-Z+09ɞf--b`^FHDF)h;fh⍦X.*`D F X +d`@ h0 D$q,j@DU/G҃ƥ64PHJL3v D&%  @ (p$AHL`@F >IOJ~T.m]ӌ;$ 2N. |F!X!GL +,).%=?Vvdz߿hzvq<0, `0C/! +Q0 r0 q1 +񟙅qSOQuM?0Vj%b"CǍ  d C`- LQXaZ0ކ#y鶭v$(<7P.h! +UB 1z"%Z!<˵ylPϳO@(LA +O~,`D D0.nP##F>a52£ Q>ɮIE v $h@xH\$f.b )I!qBOVBM5͗u|X:KX2P\^R9aY9V1%y-ǯD1 T$4! ]5 ! HX ^2hxN e3G5T< IȀ ( <0B01 f-\A eAJhBnp4` xbEJ=J[GC!%8&X +GxB/|a b' g %8! .A +JT1FIjz9/{o?M$"jph Yƀ" RhB5 H`X + +N@ h`1-01)*YU[(p H(! +NBİ*D! j8 $4A - 0 Ƞ8X, *VލAl"O^]aD^L  N,D WB*@aAA`+` +KBZ0 lc|PS|ٴc_FD@;-A h)4 +Sh)\ +:f9a *ZbXQd:Y^iJDv9x ^ PPB04A p" GH@h8 7X(;k$ ?$ebEI$AOxP0A Y^$`( C -#* +8P%&P*87a +TxB~.t PBT8Ma$Ƥb=mja(4 DP4D +U5 a؂" !OfpPX -VZZV-P<צ~_*HI  \,h! pC004! +Lp-T X@@XPP$ Jd y@4A&IWA4Ѳu# Iؠ +TЃ da*v@]S5 L›$Rt"D"̠@ `ˆ!t`NV#j% H[Yv: tEYEF",)P`XȂЄ%p anj.`X̰X +q& +zϝ(*Jk2T@BlP!; R 8(0?x Wkuj5%2kC2ZԠ- d@ P qD<h@$/XȬȔ`#'H,q0nF1xA j@P* JBfI]DCqtDPxv[UixqAy~\ܲ>_3pIUA0d՘^U{6oDKHHQšQh_׹~Yv>EyFGDɊoo@Iv\-؅ܶay^I +3V"1*ӊi +H6.GLkrRI'˗~5*SKښEnשX^Xv2tFo*cH#QH$Ot<_rj~]@!Z%銡vI/ۓeiR)#;P Amɀ!Bh0gxzi;Аbyz_RˎuU) h'li,=O7H|tga!$|uU7Ӳ#m߾9ٳ+,\b%[&,=*Y$Q9m_^9%aZSŝ$y5Ͳ6Ǖ Ťd+$2˞[lٽa(`Tf-7PFP>iYH *dw%${>/߇%`ИOH9ATq$9fxH"2yB"@mZ%->D,"3^&LJBV2@YhN"VxR+O+bQXjOOn8*8yyZ4#:jj'=!a#nC8ze8 Lc%d +̥2 JģD${znI>~DA&飥!z}d1Уht)q[  +IKFuY40\$Q'|g%Ft&?s +(JDCD}1}NhW54)_&9Q}R3~qL2KoQx,Ӳ#j  H"cJ/;n@r2 X^dw7Ő%ChcUawl1DR5PJHqLVD!g&5"^YkIϑpZͧnYGLKxZ>;^U!6eA~1*F_|%!gM-LB؁d3(QWʈ4JXCɎV U)Xa"bćpiERT +`,Ɓ#@ V.Ek$T'WMUU3'ٜv%v&M]xc x +C IhAq~$8.yMhE@4 WSKJ9<0&6TB`ZJߪ 7- ut$u#.T.^"ϪJ2(.-R +S{,~\m&Xe3QcE_6n{Jo|rR,jGM+ VIųbwx}ifB\)zŊ$lhB7"WST# *JX!QdP)A;LeOx "bJzvrJpJ"`HؕXfF3*vEl4X$A;@{&"6`Pt1" E:Rpyw$%~~!=~g]5U@U 7m4 [D;4+-Ҫ3*V+ӚU&s2CE$'~y0b드fyHnCK#?cEEp9DS@K=m*sH2R-0 i$?`ZX>|1$b |"V$=X cGlo|QX^R,T$jB=4-X2dl"m132X i9$\ď4e?C,t1XE̴ד*C_L*ҌW +KmNwL%$H+&5 +{>Qb"RU%_GȋJÿp6K=k)fH"EbhT3,P +УNjQl/\#MA+8`XFH" 3ax >Ө@$GKD tLy6u>EE!C Ǫ4R! ^y@рfLʤ(tAyC͸L&ϩyb-nD=и̘>*R^+J O yP>{ +THk"r#EĄ"  I3f|h|<|jڴ\ŷS*TZJ;JV>HzM0!$dGzey9b=۝Mq}HXJIu#m᳉9ر *\NkO&ڵ!C dN\L.>Vǰ\O. + hRv~)9ˎѫ ؀"@{-HX5(\L1QB'5op\L)N_o4ϪƠG +ɣ5*N>N̑b!:5 _FGO]>)>u)Z0 +Oh^B>!c"-[9M%+|NGhNJ)RTTMKt1\V"ѰKf#… -àDP+DV'Ur|U2ˊԂe,8e!+`SU)T"hduH<9eW VJ -zc"RyL>C, fIڛ&kw0q1FGOO:@ AAL +*u1J`V?IRHIg+Q XFɫ )EJ?lZZU*0`9ƥzhu%%j HgFZJxHBċQhC,`XF?=SHX4bN`7 -BDTrzחOE;"QMR̠B$| >v[N!վvWY +*EOcft5)ibK?mjZŞ$"JnG+jrN%(cZJNoV2EUDʎCZ,\--xH=?取*9^4 qXųȇEbfY?\_l~iNK嶘0<4?yrNbӫ'N1إ(Nvs$8# S +RX4œ'᫆Qvڄ[5YuPp#?')s~>BK{Fm?o4Rq͐>'n,Zsd'U:dv[r[rtR,('8T%Ŀ`T|OaOϫ~e?%z4fid vCAIRZȮUiGjOq:f ,,.gF싎Ct;UǠ6e"0q@``>Cnʧc2hND8I% 2EX1jK…4!ZN1^*Ϸl/^=Ep:,+-2LIq7Ǔ_)P<|H^/_%nkzPy(y'AYnT<+&Ev[[D~JMw\QbQU"6n8wM^qꊓ$o(R WQ@3.ϗ3~u|;s)_M/nOU=-C(BO$U6'E!-{sjϾ3GEA_,kfUskb,)Z5V-#*vGrגzfYIh9$V]ɱ*~_Iϛ$UnCN+*{9Y7ۦf?ɐjf76.X%+RH^{Pe-qŕۢʶmt=?鏡M`v!7oaR}5SrKrUYöB:D 8PFP~7}ݱ'GoJ-&z6b*tj~_zi *LWH?WnIc~t˿5iE*UEP7K˪4\GE,%!|H5AiYU__mTBB.V4]SzS+$?XѲIfaD=7s-b+ɞ]Hj]HWΧ$'NNnjz=);(Ifx}uH  UŪb%m46NqlMUP~GR, -"e0DX3+ ɳar 8NM"/XTG k]3͗e. ]nKu+"OG[tBuZ,M?z)jzcϪ蹷IJo~XWնZϫɑDOkJٔy%7]1I{?QG뗞W!$bO8o(i +ZS$15G<|+[v͢eЪimL9 +r=]ZjЛ?GӒL$ٟo'm'ec/9 uOU'GXĦؽx{ +iIo^_-_7f^JN>^k1ъ +@!9_#DE,[8=oYnl =3N&\"'>(R(,DZ$̪U2ۧp;vdd'OR oO)p֋{傤C튑"O}̊ԇux;7ȫlIT\pM +ezLC/Ns Q^?%I2f94jq§+M&'2`robw{dOWmrHvʹw߿uG|d$3+@+4 -"?<7 Ӄ"¥_T\?WޤõH a|`0h!vdJBaqGɔ~Iw_}e|E-ONBrEC R/><1E{W@H! 9X kE5>nuLd{ Mg%ӛKx&;^8a@0:qbዼX='a =ahU2!LzJH-@G0)Iv$\( E1hHq#YEN/^m}7q?tBc +`:/0W 0%lNL'`0.C|NGQ`=8@1Ij,XXcMѤI9ydסT_UnQD<4xA `d >T0``#pЄ` +4HW١N?ƛDY$xJG@<`-N(Ѓ cEEhBR0 @C91Ȁ D耫JyM-#!/YxU{ĆNnPBl91!@ Ѓ(0(U` ТT=iKxy]Y'vܳ%"@b; 8x .2@ ^P , >-,/P! )=-m> GӒ +E5@Rz` %~XRL1:P&Bځ~ 1pS|7O.1%{m)2t", l6FX"+@ l((N# [)q:Y;(X~L!B p.B;B$r!LAP(0@ сc,^Q-?qA|A*.p c@CdrJ0Tj=u; 3CPpV#7T^ ;8/{> |X8 0 p჋Q[-qC":Y~EQ\kyOLT\Q +`J8A0&a %<1<}RbK}566Gyl)Td^D<C #6iDkQC#Uu'66ߘO]$٢di>|8F>ET=$ \w$71P0Ld, FE  +%B$8p`*!EP[%9Q$TF!0$% Z G,`2NfPV+s>-럻wt6PF+ +" +5 +F,/SXdʼn5g 󧘂̩GDzH 2; cwܦ\f<".q)vqTt.[ @LԷVD?4,|' ]OdpD(J m̶֙u(6 c5U]>s%U{ϫȚ[ۅ '34T.Ouw~ +x@J HnbqzA˘LwԭITIZ4 OD[c$fFr5:vOպ ߞW.7v£~`hOy~w,<qTEoѻ_\^LZ!tL = +#'kCr>WUy)By~bT4+ׂ}Qu޷5߻TMSNm6^Bi"=LvB5{Љ=&ҳ~i62-Զq\FFP Ng:g_,SSDЄN!0ݿ ? zrhfFV.jä(bxEYc%%8α+("֍D,Qw⎾SBNƯh=N̟9UߘrMΫ7Yt8S贵MuOOE&r#x>ۅ p iqdG ;ٸq.q^ _g54y?=mzby(8e։MNY>z@#SNm^v)!\I}WW׹!j]M|΢I%7qpHLhgc<AEGl)ǝyA1IqIW-ׯ QՖ^aueSuA6QkT;[ tf +m9ˣݷF[QD#7N2'0N>]MkbyH⩪wR)ay6K;UӰ@6z_+KFr u2}kץGr:fӝ@Z?W\,l+-G۔Ff}a49DOG_Z4OK8d#ue's/?ϏzVOYSWtuWu$qo_!OlwMm4ѕFS~usEr"ZX)Y}ۚ^ ߮뫪]U02M6Jw]7:ʒmh*zݐE.MD}W&T4'`~&NxϮ隧H?}=&2*{םM%RI`QꊖE.ܳ xr܆c}*lξ-h +zߚiQ[7xۦh9e9bY$oɷZ{ pu +Eg~srш("09RE*J'WO Ժf[mPKz=k11ӌ\ Tq^~!chĦ)Fҧ)5hHqX5'iBrgIulInpy`.K&GˆGA;⒡RbUA议'ah Ӌg#A6nUM`0} +ŪĒٟfn;7 69^ S7uC-;u.th1~YJUI +̇ +*Ăk ur~KHQP j0)Mh?ӛ$u?n7$< <(_˷H]Gޟit6Q8ZB?ȔAc1pF+]IqԪM6mA0ۍOsT7EpROREP!fRbU2iQ)Zʞ_HßD  +vY`"6 PvemB@@XqmA#g06Ɓ PDh12) +C(w锜 K"X@ȰxE G $0n&i +W +2ӇLDzA.`"0|F1*KɌœv;jx8y<1"$tA8 %Ҋv! I@hWH!`,C6Xqň=. %)[AcFczFS t]$K LucK ɫE-n2аBH9J<-n$qߵd1) QFX`7KP4,)XVJ[ŏ qxT>t#_f[ܘ&֥CpݸYWr YkFLuUtIpqcThOӔ<&Jr:"Cv29 TǶRD"&%oQOM}Zf9^LO)~$DZ}HB>(nMN/Zry֥PE=*{%Y]h9mC6$ӡ6H^׀T>:i~Oҥlk,użX@`axONyTftzrZIƊ4.M2U-^, ~8aj Q$oG+*EU@~ŜYJ -*np4V``EBx>0h8XX 3+4\Hf^߀EˌK1cƌ)- ߳ @X&&˃X 2Vbť2 J +=-?J4V$G("8V!n`CR嵧e}u?̴dP,=j_7Λ=# E"9{em|"+*#31J4Mjr-˷h[=A@X;i[)u!FD1A8X\r]kroLOR<{Tn]һ,%1]]:>C%{Jp;,%d*bE,ы,%5RDfb-{eQInE +& C]7pRA>$B7mM/Ya[$#2I]Beaz2bzHʈ*]$CQyڟ9͘loeTI3D‡aenp'N-!mr] pAB1Vj%q~%p$QDU@oi}I0 4,[чL9[x!C#IH.P "Xh\. !~HI^kJlEdVGղ$#T׎pz8C ϊҴJ> a0!q +KEK/< 0C1/͐_I0eUeMO<&/~]f%B@.``P!˪J2VLNv_T3,=VHRF(~0Q vG$V=Q1rYt$-ǀf$}]N*j% J +Q*鳺T3.#DxQjnqQSC,U<< nܖͲoŐ/N0l^.'(c8Ppݥc΋;ϣ"v%J2*qn& =d(  "6XXQ!`X-?Iج#{(+%mC,)OEC'# 6b`D>|jp26I-EtZQTpHFJɾдlVV1Äe5Iꧩc2ULbf HءT׬!Rc9FH&jݽ4yAQ!K䠑DH`ߨQUGO#nNߺ#ꋮU~_&UJxFYSȳB$Ɵ寚%F L n~ +_v2v3?rI~q?O]vêw)yFK RΰT2RTHu'!)L!-y"qea;4V XPAMWQ>^G yZ>-K,LJ4?^LjXH]IQ[A6b5C١ׯ~:v +v&:=9U>=5* mh$8U=Zz=h|^9/MVm9n8k4,A cdILE0TLJp ̀iQhX&8%hew=Q/ѸFDm7IoےeZj֙mߣ$um٣瑺~}{; dÊ!\l̨?Gb.(F޳vުuHڣk=)שzZʖMٵ[>O=ha"jUV(*(1a>i( XE,˫j`QALn5à%pgGͱy9\Vd: q72vϫɑ䶞tU=0T&&Sg\,*&&>_o-VtSHKC:pFyo"U2pu\_1jEARS<"uԌ6ɿbFr2ꍐ1Az y^LjWˊZEgH4#j@K!*`wISԄ{f%85:qÉ?Q8 U;r2d8!C *&,`XFWP-V&Z5䦦ɱOѻ4mrTd4)cv\mi`5p黬XQo:2|Ft7Nsu +ڴ21!c!3"ӢF +22V$nF*hh̸a2 +N+ꛏ뜗;*dZ&efRȰ*b̐1d`18HXbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjbjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj𭳲8`)ylh +')?zu(PEG*o }@2tTmqE$;mzriay :r0*/D#Y}RX]U2xSpgo$7Eφd0(8>/im9JnH!9詜 q,#EaNA-1>bIqo1_ECcxoV q #s[_,=ceQ +S'ÖDlIȐ9[Ts>XL`z.ۊfaN!/ +ǛnkAbEUY:GO Ǐ>vuo +CTsTv&r~(RW=K,d @ϏjٖӁ3M"E]-=5( #$f ۢx߳(Tyo|FO'>kCj:Ūw/z6; W>\ SůKoC9áAO%vljKvqF.> 䇇_UcNX,ĖW|In/IU~[{Gd#jiMNi=lLGlci]7,=tع0ݴxhqyȱ6&4{Ǘ>#)s\ٔ\-rZN=o3L"~ZOnz0"ؒYCԣ894*[2r/|9AC%4ZUS&ܴG s;FJrY!+EOydُ'_{_#vUoee;9;lu]}۽dR/IxfA1O)nI GRS~LlZM鋎OnZ~)GbS&yU(}Z%-Į. (ŰkMYjE?fj[Q(EKkD~Y,rW]Yub.N墰='/r^7-Vǃg OB5b^}8'zd7isiՓ!tIEܦv~Ci`.~wmqu'J͞ c;-_=M'Kꮓ 4F0zuuO]{ pˊbuA?˪hEs=N=M.]{mUIdowRK;q">ֱ?0R"T^4Ԟ zБ\qׅD.v>˻$G꺋.z2brQOޡv:4ҼX!&EK-T"Qᐚc.u!ȓmbXDK X hauMr\8>Ge1#X1PGI2I{b%]w]H]jG d=칈%if.=)TŦ^+ng^(cNOl9$|޲$NGO#9#{ROd{L1FsCLL*D!Į-]jP2f*w]7Z6dM9^vO:uL5 2,7J^{N::u 2qjo /eJ *]z~V% vA_Vzr'\ =zO(>Nrלasg Oh]z\E/Ş7-QӡN8=){e!RB!MR,i)%q1T  )df?(Yӟm477r#h ?eh_nc0|s'] +acӚZfv:6Pdx&D CR1Uz.GPPV;܀ܟbWZOϜgqÑɰH-9e|߷jYe֠G:Uzp'a6>823)2X v]$]Gb,nulT@/A^nUq eHfJ!?~"Vuɱ,Girٗ-xw6Yf.USr\ƴ(j z3!~OSmgRE1 M"آ_wGMCIRMSV?\N;.6,M-k2 :}R(%KRK)eu܌c{یT".Ps햽\v-QY:O)ZB1K"w͋a.24%K*cfe=oDTnCNi ȇx@r6]ZWw[z"57صb5䧚[ dXt?˚$[wczPSgj=mE(`||Q(eq -R&K2Mjyu5}Q00TzXêiؓ5{Xef z' R?=qq.8gUr=8} RpAJ&%rW\jNji2!Wrle0fRSSz$ryo.(i,ofq?ijZk]znݒIʝEPԪ0[f/z$\B] oANg5X-3ծ-5꟢:)2ުe[ۦbT}=:RQv>s|,Qˢ؄]x\n~){.ŭ$KlZbS$W?06Ð2DnA8yIzN6dUƊ$bǾ9ҡ׫BIի``N"ߵ\m dMOU-9n=Õ Wժ*EGyV4l!yM#:rPZ\&Cޤ{*aAQWrW+S\27A[zZwrDwߚ$=n뻰=-kަY㎢}㸃ߧ$]2Cl!_'5crYoГ ZFcՊWrUE9n$GC$]I/G|I$zwP;mCXMˈMC +Ui4*jqmr:@A3q !#cD~ +^o#7 fv:0,O( +kۖuӬvMOŦ/Ͳ}4I5`.c(V}3>pױrn։;v2r)! D +$娚c߿Iу5BZ3bYr>= =tAu^6A>*V?ybu 0.m_=nT䶵"ZOO)q'U0{OcU-z~V1{fIEIZ`ut}Zgӕ@3 m俦ybH"Y㸛$ N=lA슚c]WS(:y>eMp%9ZQD-P#F@!#]?% w8m3_4,UuN'C,qqEP|~(@fEѪRTM;ɞz?(,?oA9ߪi*שX$eP|6Q|~mO> +W{[JൈUCrqLmKn:媥qzzTTӱdS{i4ajZ/'DUcmǭr>stream +R36/=jlh:b]箓9.CLq Z0t%4̋u׉fzk$>YstMT7[ KDDQscBXLڴn#YǓb+~[3IO$P\;OǞ4AVt_r]e"<02=>izGS=ǐ@-\*Vǡ睝 r0$c Ye)z]~?L;Om׮MmIjYdMn{'EۮcW,gNOe=fx6R`/C;B*ހZ>?K<=KrUfxBdEf3{ Ϸ=o{Ψڬ"z a:nc$#)PjY%0eiwmԔ7utOu:1gSD+PK$cKE6&B-")L`6T>;VʮG/K^˯#s,0ŊӈKmD.r=Io6nsp4l_gzו4gOS|qN l2 ؇U߯#,  +U1\5sm^I9J,]l7ieMAĢ&b0rZu˩6Uu?ZDXrcdBlNP-# u Irp3.RHĞ[dUY˓! IlGYm(GCg[mL%̦ab~Ve?C,T nïD64QMbO^8'G[ o7I_{v7E%RZtNjzۓ~y^J"}J4E.Km䲩MU> GŚ2V(/&,&OoanYBMRD_~WJvUp]z$,&2{4ϳ$!Ѳ5)2GHa5LQ) e7G_g #mj-a$BnÌ@!xncO!xu-ٽ6/ D-(#;I; OW!f p z)7U!J=;-X};%IϞR +nA˖UʪiiÅe Ƥׅ(=BKWޏcA O/VW-m ~Nso,\'RȄEp 5$fJnE,J!]jId0 +ˣt$'l~Ov]2 +hwsEM~eR!+"AbvIv]N/&*~ys$i/SԦ9v-;TBv`1Ro\6zb'I S]H7dPHgdN11}Dh 2Ӎ +j5?jVOH!O?,wEvt\'m 2LfZ[Kv<I¬F>dPvĬL->ݷ_WorS]o߫ :CWOWn)ڣ +ӂz*a=r?-CBbX7Mץm1ZfX5)|aa?IӯӳgˎWpjSV7:RF-ZG +,;` cdbZ?nETaV$)V#n9| fThPW/;t/ﯞ1 +ja*vCGOzf7Eo\)H$3dN$JO{~28 Ѳm,`^`xs z)² +S{M Ke<&=Or{%$"h]Kyųq +NC&|FخF :)zV(1HКʘ@5HT1`!&i-sH{N/B\^RɯZ7 +Qr,%Z'Y,%*]I&A`LaqQNz=aH>o)mհKKxv؎ya{RFD6,E:b-S +"}1ʟ˨D3L\0D\|&9.Tˎ_w|zW UD铟",z`BEZ3^+'%Q.z1;6*Jvr4KGx*H~ PSE$Jle"yZF:QH5:f\;&Pd*d%z"v\]eP,{$k) XƋO2 +XPzSȇ-9RLVG\kZ0{MQ'PZru(Ņ4 +Ƌ#lx!`lrWӫ)!?%QSFȉ9fzP0p_*`@Aذg$hL,Ѓ $VЈR7C0 !TDVF"'3XNf0U2ii'MR$WC7IOKj}1(5c5e 㓼VO֦+)1ǻMcJ2BN5DJKhq1zm~;c2bXmJ"8}'LFedr!R>&]ULV0Sa-O@> JdĥbER--_9]7U=x"*"ZFxrZF-\ӒF%z;4( j""}^@Ь|P{DIp96baeD +U Ģ*'PD].Ez2~=(YqD&^aB3hF!L A 8F;L\BXib(@;1n$ZHtԳ|t-$/F^61˿π+ɃaH '꿢*V. D"p-\U_S/<ˬo˶FzWfhLpU.GO?a2@BazUL-#(0!7`P\{ePBéf[فyyaB" !XahzXFzFJ  z "E=ɒ +e( bFHypDٕK}V˦wQҚqT7MXb"Cz].PF~a>jq[154RL <cVF.$4!Ԫm BH޲dVſQzhnuB*g VV)I{Z'cҊ6V*fˈ~nyJyV^5 +o`H<;ĬxDfDY~drх zא񒲃\HHG^V,(AJ Cpb-X]_1,]e:wzc8z1.&/IO 5W%{i?-I[G [JAHk3~ +mEWJ+Js @ A0s>>jc@@@ ^]}**y K(޴nMX312̩y:~K1@~ՎyU~Ք?4m_G8]. ڴp&jD"&$IO5$MR0$QiI4Iֆ5iI&>gRpL7 H7I&qoY&1maLr$O$|N0IJM1IƝDlI,sdi8P&9 t8nq&$\'Y$L23IIN3$#l$qmIf1mIV1aL }oRpL; H&)w'qYMbkaOr$C5$\M4I +ƛ$fIƛDd>jؓ3$h#dIbf;cIDf9e. kc m$'z~quI} ̏n̈p+H`}tD=I:N: + l!kBSBCW,r`cahP,Α.X8i@rar+xڃrpo͟QKVQP`.Wӥ+y+Д Ws'N^q=i#4 d"bD4g)"3N C=ujˈM8S3h< Gl= yzR% Qdoh/RLeK`Lq֒&Vu@_o5/*ET#Ut7Se?tq"˜‘+SäN:gXdԦ,2EњU/(qi'x,=Qh1l*@p *{>7cM!#Ќ0Ix +{i64җ`$Vuտ@=UaH +$Umʡ~xoCDfimd;AvH+6%K!pNѢLh߉SRnH_Q"4@_Id׿_%Ng//!214ЩIuOCI{:"fvsG'_yFtw} AZѓDq2EO# *GpRF0lR(t.GJ(0Hֹ'Ij`>y\"/z :3;'hS&$y d`t5tsYEw8OD=~G r.B's%w@yJĿ6$+$)_am1y2-SF@*/\D[9Q~Ny蠸i$:M?\ %A!YVX-TԸ0aުV/Zuogrb +M~J2.lQwDI^r?jȉ9C:`!H]W͓CV{v7aE:* -7[~GךR'I;+AXq,$ay-ɠ!UaCnx\ 2r%_d@ůa$gFrw"eCO .R +%VX՘#l]KoWWcmMَwJ׿q>u9whi +; v%ޘ*7(8I^0+PMn  kZR%vgi_Gm6UXI0"LʲG0BNj'Bo (erHx<IPH>bpxz -=\81ЀjSU6@餣DKarGB i`!cMd [D8qF]uCCjvLHL ۓyI +^2BVj#f^|?e5/0qVz@^2Y܇zp%z5Q17>+09}@yhGFaI#h,S}={ y͞Ngv؛gTK8x3;GK ~FHHaEo4(Q XBgYG36`mKJb?=Д,xO5&e3K"=Q%f_eG MW.ѣK1xpwa@GOu'?>䍞)r3:;4!6}M\HY +}=AhdnvТCs + R%" +*iOF!kΔm>W s(Uҷ&3(9]dU= fHC9Xv\f3aGN9)AvOgh<DŽhNd*F#FٓP:BQK ~XA`z)4'}"rb+ƫe; ߯a6 +izO) !Hk(A +K@.Yi;ژӥ ""`C`Dt]_vQz?S +X;Hܴ 0]c^b˦U=>E7]|""[j-2V>uY[&>LDp.Auʸu.AsS'J׆sBŋ_(+gK^*oP,QHx7ޱT0Y$ɩuY[F%iGŎكP:%Fڔ_vt x?:eg-c5 +^T ?|ANvi޾ =[_ef!R"<\{ &^c~Pɡl~D~5vTM;Pҽ.}[]('="fAvϷƴU ' la*ppIa\էwB ; r[z0OHgAO%w̘ONtڅ?-:(F@jwםZxF q T;Z .LDz^H72L! ^ + %N|o) `D9G 6=;#AyǾgt[ @$qƄ(vg ץU/6P[yeUYHjȩI\)Ca*kc`/sTj6W`NOgr= 䅏AeԠQѲo,1'mr,Nosc|/K(SBemR5XZ [QoaJ'ѪqL,tn~}B?kВ6 cZIKSW ̽Jv_ɨX$jGŰh/p~쁾(l"3Ceczhe7(GKy'2kWX`;sjGB#޶ ]&ۗykAd"Q@@9$~J>p%39h([0Ax"F\A>u u&7_N1ա"2Oѽd2rDn>| O\ aJղM +?ބu4$xˁ{hRhUTp)z4kCm p" .XBvQ&uM7<=v\x OU`^ d8KzE)B) ¬~Iu{jnT^<_[;ެ W!Nȝ` K匞d'Hh]#6JA/gთP`LFbT;<#_Bd8&_¢׆q1e0yTwrnJHM&q rt{'U$E#5]4gK:{:pF'U Jq1%rȅCh4<nW+ak~`#Zp)Į7m`p:zJ\]d{>v@#t|oڴt^pR`d6Hda<'}d>r g&MQ);SE!|ޤJpSþUQ2w|MF.1~qV{]KO:U'@>+)Mu('< H ;pމ)5J )w$(fNZ0S^x*Kp=hI{D, s&8{o=6w~4243+zgNqx3vLI]==k:3)x&Mli>oq|/3*bxE[EBF4_; ф9CU>/w.03Lվ +P!`糏~40Ǿ bEq.FKUmsviGt`$Tr ErP`˔Pm~"sOj'0t0 O6v̀`rEG'p}-OW%8 -!`422ee0587a8-8429-4bdb-860d-57a7b6d5b7caf6ed8fe7-0bee-421a-8846-8494a9dbd0d04ml10SVGFilter / : /XMLNode : (fxmlnode-nodenamvalu1t/ArrayeTurbulence;childrenresult(turb2attribute; ,stitchTilesnoSnumOctavbaseFrequency0.0,feCompositin(SourceGraphiininopeidAI__1idobjectw100%hxxyy/Def ;fractalNois44GaussianBlur12bstdDevifeOffseodddSpecularLightingPointLz(-z-5xy1ysConstant(Expone(1specOuyll-color:whsurfacelitarithmetkkk340411MergNodBevelShadow44-2yMorphologydilaradiu1.bbd-d252DisplacementMapxChannelSelecRy(Ays333bMatri434m0 0 1animtotofromadditiv(red5accumunonNbeg0restaralwayfillfreezecalcM(linea545cc8ccc8ccccccc1cccbCoolB14-5nD_66erErod664_(771R1 1;20 15;200 200; 15 20;1 1 removrepeatD(indefinsplidc50 5PixelPlay;20 20;Diffuse5yellow;green;blue;indigo;violet;red;oranDiazimu8elev6d1l5ularre0011102n2nred34##$C K㴤L@P 10 01`2#ff⨠$pwV`Ҕ=\lPE1_f +}w>9-ï3[\8#gD-1/fR[kRFIRl:J__%ȁ +0YY uoF$V,W=J!zJ$il0fL$Wl FeT+,?=e-Ew;3fNZ '5B̚g@J@ +K1qI~l ܊3<ՅLMpYxc* oF7U{㉈6w QeĔs;8ت;Qj_fQf(AERJQ7- rFhq cJRlm7W*N!.y?Re>hC9^[\]zi1vc+G~ ʌ[!NCb^0,_9 7Pу"alC IB,}7p,g-~e$ci1 8Rkt4 r8K:V !A&0%ώTZ#sJ9 0#K-1L8K2$KQ|X + yW 2/I=X e!U̇d$,bBgj+]G.BF?P+ @JTܒY4ыǓ$!8pEO^MUDtM@yFP{T89st"Ὠ`@)SriK38!B G,KxDUd#i|uE4D7]J!~)`QDW8;,2S&?M` lnQj K6Q| ¦b*ɍ[`ĺP130eHpx $>Y4Jꌲ?FRE~Qx@4FH#JA:mϸFNՔAIVb?Un I<"v`\ۦ};26JFHMݺj$7Re2rbİ׵Vy6]3j5X<-!;G +C1&kT>tzK $=tLF\c;O2VXJR:a&)ҁ (Wr?HNZ.bNt*~m}X@KOOCf L SIހ6ʠ2Raj"T C)Ed{}ArA_`i&qSlԴ:R-4YXj&9eZ~Ut df8|RouԥM]eHG.dΣB6Q(:@{K/R~EI; ʂU;Pj 8Y'ݧs6 6kI~)bMʟ!bJP䅭lAS@ ?wJO~?Fk7dxA&$(9m9ᠪEUX&dյbEA +z &yڊePSP 3$WjnE zTz9\a:W@()U:򾪏x;}e[GD.CCfWپl5^{! ?Y4t[ Brl ս,"!]?FP-"Ѡ3Kz]MκOn]SN0sM"F>YK/7֍ i+*ePeS|hVHCpl#MZjB-SX `Ju@ +d>O#}9Ԋ6b6YkILc[4KPbVl&1+զ2^@,lۡqvФ0dT:ggU^-8mEE"3 DLE`'q6藠CO&fҤol:nG.4,e9F04ӝ`! ݧQ%#G]0 +er}RCd]ty;yOEuȦm6\Bbj`3`ØTq8s1[ +Ԙ5CR3CU2`f'rM6>fO"~rU'>9I߿kё%“e4Jz57+nHkw~\ 4vF7(9t048c_۹SOua}7^Y1klE*mre%}/a p Vb182uk^R;ݎ++V)܆L@@B4s Nr$˨[f՘hwik{gTz^S%e-b(FQH:{QJyEQY(FaJ6Qb7M8Q$9Q9WL6.9 +Z_s]U^¹2һG\Rby1Rem[5X:.$zRtX{gu(:)+= +nI*iqrOxR궴&gztj: I@-ۥj.jmG;cu|k#*+ƅ(F1.(6gȑuvF:8a$!`pwݶE^03 {Z׼ޥP QVgq5su Uk HȄȀfh HHf7}bZvnMmmz{mXm7:x;t}UCJ>^6B\\<ڝ.g[׶]yv_[S#A4BLgnBd>r穞0y2); +"@.u^^Y{M.ŭcySٴ/1&3f]~|{ZU5^Y}0QŽhUBU|/6nOu ŸhpeR@ MRH B1B ,Ѐ +TxIL l"X +ۖlU]kxɲ8VEd[]BT^u1S'f{ +)MLKTܬz1&-vWKk@MtS̫fFLv2עQoUGbȮhg>"D+oHG(ىMy]ǥڛ?uZ/xhW6=QZU:Kzcu/S۟m '-:c3EkD&=$r4(IuFQ7j;ߌ/GڮR*[L76DYE]tr!r3IWN)s+WXme<]zi̜:pӘHxˈb8d7OwlxGt+P{{ĉ+# oU1Ĕnqs8oc#|fũٜz*SYYmUjBME^a΁wg|lti9w仵(Hs:;b:rRI؞2s2*@ *@ AEZr_Y E "d]"޵]uuS5?O^JֵBc;^DFq|fbT=ihӀC@_&amuwUէkUuWRMRCA5uwyxwgD'CnQ=YV5*vfdwݥU`lf(33󙙔yDECBWٔz?imgR^ӮjӞKE{[3iuZz3]bյ. ,,,-,,---L:nKn9m6oo"371;;)S;33)33s23 ,J=6K *~qoơ E*ҎG7J}f4ƦRgN/ TXYJH"&Ws5ڞĕkѮnAfŹӉt@~:-bFx |t`e(PnEu)QFk;w^_%-EKoLZ d[ lbQYy5]^ap JLL1aq3V +BމwD1[ 7O6Xl>%6pP4PoU$C &l4 2gODkEj5bO$ :,`: ?czZIrhGL[W+ZuԐ{Hgy.;  2~naݘ[jQ۔Ъ]CyL$ƋNitub1# oP uHc؏]7;}"G :3û! ے8 +g*BWά˭ab=.a6jM0}QbgC9o.qR +L)[YyNu7}&:]uaIfTZ qfChLjr?#A."X' sLXˀa'8S u::\xHŎVP0 L&_ Nx-y>\XT 2 +lq&]4*x6`@36R7 ?A BH*p.:K DߗW%H55p7@2OAe/МTf/ LhtH&oðF;}YLP& ,q=G퉋$m2 by)glp`Xomb;dZC|o tSpsK++_sZ<U{/+%JtN>տP3W}/H}YEHMid;\Y^E@Kk{Ihdq gꄑp{ʊ#Qw)&;CL>ldz; I͎ȭ?Q-("͔E|dݧ?' ހY'7 dЯ !z9ůʏTX7?jC|Jas)A~8sm/Se2ﴒ!* EBTyMeL:q0%uQp(Q^KX,e@v=^(|b꜅; IB(@Mh؞އqPeUnfA@D"> Hts3,rxNȩ2 Z+0 $mH=#/>fCynM?b~IT@VЅ +lG~-r"넡`9MtQ'ku ꓾fEEQ;J +?S'8dI #?uVSǿABdVYODzkrw8 pT<'gi]%d*(j<GT1G6ẖbđOrrB=ar:*iGmfƒBSC1v+0CjKX ٱ}ɚd/LWQ(ߗdn + `f)ieiIrUQڛ$q!K-""ȎA bA;DU9QAYqܭg  d@a)%kx~3i2$ƒnt +fnfV-ǭ!Jh"5cP3ݩl T0I@$Kh:$m5ҡ! mHa}Uh:X4Np4c|-{jkm +3vagĸ*؎ѝ# Jb $8V(,T+BA̠93xr6đ"ޭ'g_FsTjZCpNֵ/Fb:rfJk RzKϾ0sL-SEv^j'!/O @pV=2:axs84_#I"P;ilH#ӓl*Nx(2k l‚-/(Ey^L!\M(,RQg!k[&.>aS:>a,oߛB3GRgdoPj<:ZLX:?zB +k5 u +&%m0)P1SRql6H[D: *pП{c7pp4tN D@uƝGy:DP(iS0V T%9p$0X9fKd \ta ;O9 T};wy@ȣH?)USGH >6V, gyz:kd|#(]!Ho-1NJhXDOeLfD$pfO/|tïOhKX'1p:Z9/#*)iR TBE6M>@p`KFyupӿTdZH7@3/}1}$7S<)ňKk^X'(] Y`/bG8+`ԣۡ]IRgyrlԠ@P8pXN}J;S W}`8rJN;^s' + tc#q@=2Q[P{-zD |ck f ۂIDRpc>9edʫ7~=Qഞ% ~! #~f1.2uTlH3ofwmgg`%Ѩs.\pw-rc~#|]u-?Ξ"(Xáb*ᔹScql[d008~~GlrZs^  N@} }]IUp(N?c[ҧage|C h.;/#^L^@݃ѿwyx޸K:ޱ ->> E<ʇ1Ӳ~SK 5ج$ @ k `%))&RB;_0s6rcW]ڰux߫2]3͙*8LQgqchq /#$(<};9G1G0]^VʸLm/GE]l3v T=!dvb\VJ;6^<xl2|SHUOUلT ̆~9-nV=d/ WDC|t/ÿ ۪1tN gg4PG0x,ԧ*)6 + +.&T@o^ߑ16}$omTnMxY4¸{>K; l K`b]x,( &hf*[a00F!åb0PgzmAAx+7)~ҖLU=^qX7Z p c +X{%.4Y|dqCJ +"Ue (q'>a $,4&SCr6 =[Qfe#)({M r8z5D&)e¼ U_A2ۙ.d56uOT^#8P|D<M/g:Gᱥ`-9 lҡC8d W`E֕pu:?t͌#{;@ f=bԻy?i䇦_C#x#͐:=PC4XP=jb! +B..-*tҠOV 4-8',m /+P/64|Ҁ b &()iqrdUi1W8e6vYُL|{IjʙU"+,-5FKF1 ˕d29::gTtWfj`Vb/}aLXe)6ZYݎO}i¨dܙcط0bzcfW#1TKl«*B/Yie*W]`^dY^UN,WEt썇flwETa̓$uwb̠*@YhwʭtѭV]출MMYcnBYz @Ph~+ X4%Ⱥ>դ"o fE1jQszp1!"eNJkY^Ǿ-=~).Eުl[L2ĐUȔ_"I7T4씇UBȉE3i"Y .Y+DkୠN!7fI/zP 褢JdtLDSh>@qCB1P) 0 ݦi;XcGġ?x_m\SH蜚yv}0+1~3n<^6Z" :1a^ _+, wi[fMź{]~n0Gd]XGRqӮrL~,7fM-^a1=)=bWOUk®G"сf&N uCY`u&] +F\lh"łSyz%bwz<@JV- +j<BZtl}rJJ^)kCnXEqrTGq}!L10= :GչI*V\r˭+hwb此*GJ..<6NԤ4{-$HQ˛o,A߉1Ai#(mX37XlFWK~&~:%dKa2;5}>ǡS_h2H(P,Hڄ$Nb>5txR6+[1ղ8jJZ [bWM;]& o᫢(9U%[JD1 + 󄚙6(6)۳U2 u0iMi2A{\ERk *X^mZwXNt'K&@N0n7x%IhXy]Bk36\Eqtyśv|9mҊ@LTDd1"S(Gi] (/Qt,VbZk6:/9pmH]Ù,\şl-SyE w(`#F] +V4耉Lݕ(TJKvݠDR Rz'X6 2bop_V+!ep-6E Z%@L +ͧDg-a0N.cF$MTDd7)&P_'yg'De6ZlW)GLҸ;Ur4po #@t2?n0WG] u,%Ew!) - T+G3k1>xJ0Fl $mfs sr`g>])xcG۳A13s~g–TOf ìN(>ϡ%f:n"q6Ҷ1vJFa4\-Ԣ399/!o(LX4P"pJřS +R٥tsk~Vç\X@i_k՛ +7@b8KHN8gjXSgRb.S(z9,IXl#T$M/5e6(^$D]j(meCuk/ľa8"S.̥)`_#4rd ʉIA +Aa1B\gO"4nC9eժ4J^0Gt3KKFE{=yHU"%nv1򮥸3`\0,GUXhFHe3]!}.(ĄdCB/%M}0\^¹ Dk{1IzzYA՛WgDëļDbT@Q^UvA&Y$>g㶴cal,R|cWdNX9LH? 3?`_oi I.F'JXGXېjz=3!w{;7!_{Qm;Ԭ!]9%@`_2g gm(מd篏H Lթ=+fpԀݝZސ?};x}x%SN+P; .z4y+,S-7 EI(wrޏ_FWˀY,Oq(Um4Ũܨ,!$Vt:i%2;HG~/J$; mߖ~'q1̰Y\ +ޑf oŨ/pH."wi WwK1$*iCxXIV'$A:2z6+CppJW,.fB+$ e Z=A:YRrQ 4Om9/wyc͹-uO𮭁qWrtΩyaeC|uXF0 +v%YVLލ4,Ԍ8sab.QI8nCG\̋8%މ#x]Xe?:1C+q%;^Nȉ/T~:S)sɿX{ǠbΑV5ipE^DSLd GDK|BKG,nɢ\(IyC7yBguԞ!z0SIoO$OSThe% +{HPBjGbz 5g,Lهg|SY-F$ X~ E1n%ۅs"$vkPd +5y=TUa5o1a{KuU'\H S#L&NZy} Yя:THO Li> tW@ڛ9h?hc<. iI3,W}" 7#JqZ\XC}I#-M!iD!>k*bά!- J}הȄ-%I o_''Y"tV]PKFUV?JQQc3ww.j}9WQHLÍV0m@{ FurkiUʝ#fD:NȾ# Ѓ.pq-pڡ!GLcd#kJc^epG7Wun 8`3sh+:f˅Ⱥw/ 5^2'݅OWk Nh!m-V@?8 gfm"~HX5Gf>ƨOA=ojˠ0_6ҴBZO(Q ;dĄ%8_F*{T&לD;X&Ad'@#hxD(̀Z njς kq)U|V0"8p/ - + % ˡJ`>,<=W{EG4kWV M<_@ˬ2ې<GCqJ[ʳ`|# ?JQ +BU煾߮y 25GҊZ׉[+*n@u׃xx τGXc Ǽ,}$D|{>(httR0@aN}ɣܵM?4XL'p2}ϳ4CK xU-r!I\;12_8_ %kD"T/n5״&OX$]yLkăC"K6[gY<_& Z$ .ܩ]06wtA?!KB0$.]%ro1]b"~16$A18OWVD|OnUi &Ԩh{ei|&߼MR9umQ}y)k2о@Ğ@X<jϣ;&f<2XIÐB)I)Y.OZդT ԫ1(Lyﲎ8zbĬ"bXVR> RϧZtgBV GJU h38+՛{8X `-Gr:Qk?CRkB׌iD0=h %KC@Yef)7 +,Qyk?l>Aj~1%1}Ë,@-qvK~zR"m%7+`4wa~0 + ~)"ējŌQjXt4;Ns)op C[Aa*xg@q0daHYb#o-`gvJO~裠z5(vgO2͙ƬFqIW] ntXDD.쬷T4 5׻pFCr2$| CGHGHg>]끗5ֱv)NKˀw%e6fG( *a*#.dmɮFѺh HfV& 3L X\J3wv|q;vY1ȿ^ 0jrOေjB@ AArsbƱ.,㍱r~=̆q& '|w2̇l$X|)I(U?q +BeB__}Ao,&H`Q~,"U\ BP##LݓOMJ Y/)fxH +~[Yur~U7=iܕ='=TFTjavOqeA},-*k4,)e? g@ dDMr1%FWŶ{Ph݁|*VNvi6-$V(͜e'ҿЖR#<xK3t=v,[ySIzSƛ(5mqأ^:a`0|阃izEAnY1`yypUJ6\3G:̰b:$=ԉtD/9x~?Zi`%]wm) 1JAžiP L? !wlj޶FG/# @MIn=^ҡ}[+nq {MZ ŰkڥA5oM6Bi缭)Bt,v*Y_+U=5XUTW4J39~ZsaZUWSʦX, xd@2[Z_w$w_m`DE"Ս$7~"vNЦ3qJ\!ceP#5fhW4MҡIPʛVYi#No +j)zCZɻ=lJ*B8c+e%mp]|-۬gN4;?iz(o!gft\K δʖڕ"SS+v\eGkuxojIiqI '' +(ռߟȝ \`3 " 9 dbبNMݶڂcè6obha w1^rfU`׀N~5+db<_̣[D4vߘѰ '7P[= IhL*uZ6Ɋp['0zsd]Hg`ߌkY**z" 3ajMI&_)3p*RЋI@U /tO9]Z)- g'U.Kl1HBI)P1 U|̒^3?Ϟ.k&a:!(sKi@ɰ$T ~ժ**1r:*Z6a/dlZ ~Q8*$fy+4JMq&(u ]ksQuJmc߇E|tnJ[FXMI9! j3lxYWL-qGGجh3VJ"Q&2?2qosY/ޅ@,Jrk b @/rX)J֐[$ನgzFzBK0jDs|p.]k^S&NE֋eNo|>˾Zf"eVfp]aiS$X~SZdς +`pXE˗FZ8 +Lc1L K{UZl9ʼKRLe;F&ϔ;6kDULGz1EÜ@f=J![ m>[B3\L! +]"ت5u]XZ\-B!TUni>tG٠\_Ǿ[En[FnL qZVNg2m&5KׄvY:-CO#SY:EwIi*EkR[hm4ќ!Fe*nJ}bH{]=JGTB?~FR G*k76_Y-*9C2R,MgVyH]{iO)ɗͰ#g[&ʤ;K\\(Ji[ o&iOҬA9%"yN=ub-|ч$Z{X;9K9vޜN +dE1,ٙXvU Vmt .mO~Jx +=0+2\cnQnf c3rD,UĹ.GQAi/r@p"$g"vѰYWK⁖ +gY[9Ne׳150{>;+TZ 50eֻ9IWs clFN"?,qR>Dēfߜՙy k ?YlMB~_CFoiI2  Ʉp~3ٟ̐S Ⱦ"5U7WXn0tգcC):QdTIA2p~ olDR A󭃴qz!uP!ȥuai`N@ ~k7]ͤ]*(( %pcTP.2FLĘvI|}"u\*#Q7F,jb֎A }yt4^> y#ؒT'J#&R UAdF 3K 4e .vo.ږLj#9[NU4Q+ʤ92rۡP5+/@䔠-pV1?r|v8,OĊ\N@=t+Tv}YQc8l;}2w-.rN(}uQʠgvZی +50Ap~G[L!=Mur̬~f {-om/""۹e;fx>╃Lu|jU=m,>"os8*v_%D +췚 e;)0(: DǸJ\6YW\u16A)L +וY)dz<"ӭs +6LVʣ:Zc(X.5nz}@H5C& ":U%o2fB|b_"rΒU 1K U v+R^oH>˕n#];6QTHT D8%k1>A/Osa(@T(YɡtlyfHNJu~((ܣtf@{gN>\Ҙ> +A^:DRd3c KnFJMݚ\6QZ(6BNxk-v ;dY /%};|o~A&y)< Xye?NN8 #[ʇ!$z>29f@fFO><2|E{s ¸p݀Z:70c9ob΀fݱ]Zx99 F Cr~r3S~7[`wwH}?jv_|*t,7 e.*:-7:\,>8cUYU?`c$!z\+z*'RZ6lj/.-+3 HcW[8 +09 @HيcnpU+ZpE G4K,ajjR'\ѝTdTm]Ls5pB{'%4 'zs5G*](N'$ϣf++bV#p$1`>vri ?u ;3<.)J&@KiEKA,wAZ<CN7Kgbe֖ŧmi).dnA?q;-b(ܯbU[e>4lNWu)&ln1x ޡf(b]H_x}^̵HIO]w- z-Á~lN_ǟhe" PU+d^aО(BK*p9 U%n,d_=&/ri+ngL4䆺\g^5:U'6IiF}?*x-!z-I3ֺ9fce'|m2$tV# 8.aEɚbJ=4&HS~8>3 +ؼ-wZǻrRxF!ݕ@ao&;"$\lA f90`mQZr=YɌeeQ0Ѽp6{WWc{'㩦i~`3K.}("#絸QQ=ʺ!/3yS<qS;48X)8_i\$*3bt-=}b|Gpy8 Co3hhc,??J$,:+ .Ahih$ІiGGP.,s+B{{'zA,E$Q&{CEyaidV*0?Œ'wGc'g(GTF%6 +NJqvcA@0D.!Px1yG|^V4"!s*.譁n +Y}q3%.hLC>WX-g &pkK̏ NZ-*򋶌~-b%:Wq#o=BȝqCd\kacuEL5n'" FRAUBL?hP|}ȷU`oJ-V|6MZ9[Ls5PGqN;gT=:"(UPeA *fIf!%(kzVG|#S\xQX)8QIZ@҉4x z D֌{5 ,ďa?bAAy[ +҆Ta,zGb2FHD^=NO| mXv/Ak5s`&k9_@Gcy1;zHĵ+ kFL9²D`NHQjVPſXeNjGlg04I, W*61_?3`_/0iY_"PN9e?!rIUv!|E_ tev>Ʈ ww8 gCw֙PL,mkwgKkM%B+@+iApP]d Q<+l〤fjF宙&("HA\MM!kzPǬE%/Mq/g˰k pCujaӆ.%*[ 3 reF)*! (j ןN`kbrۉ%(8)cJMnr~TSĽ_oFyJ0T5B3=y! {u-VP{ KsEmֻ_ +b7U1dco1$+AUX xD@Qc TҸ8a}6F} +Xn],䨬-(&t+D*wKz 5p%@Ƒ-rmb%lU:B +TLk o9׈\D +3whTFVVDNa&bd f Blk^$-x ;H@ސS7%0lU5UsxaY[@̄m +\`6V%fGѾ&4{[R2 Ǡ2Sn@\`O} ԉ; l8*+btI}/1~m2H‡+ Jl ),wHeOZ:a\(lT"6kv}HS N }fZ|gL'-\DZ +$ fHj&}T!C ;3V y9Y%B*<;jC|MO`PIܟ)nq`EoX2ZT@$ĬI54FBBNd!o#u$ь49i)s‹߶%tA\ajţ%;Z \1e(à 20z/r9 ձ8]Wf8r868Hdݷͤp/n +Rx2#,!\Q jĪ́[b!i8+5 uגIQ7Uzo+۹1 \^Wx]s+ze\fKlLB~?4gL y~ics藰:P_>d'\y Yb>ly?pu{ۙM=㙰+ }-S pCY12exS76 C6p#X+_vo)}<^kc0lۂ7>V߰kp (bY1DSI%o " +/>:+,GH9 +s#7۴t Rfy 'IdzAp GloP`cpo冷Xq%@@YzehT0Vm1/Fp~`$ֶAKu(녤R +sFi=XDRxތ 12wy/2ZXG\x/~r0ݤ'o\ X0t<:wr Čh?^8rSC68ZrZQL AetMvg@l2I?ZasL'S4#oDsj8/> $eH)|r' +vqQ^Wf]7pz;v@YIڴ2yR{)XHc/ƒi{/Pg`f cY68*:+Q,zmr;-pC/#f#!ۥn-^{ 7Ý:4+Su%G Ѣ@ +2W&sM ( + U@T!VkFhK֓c`Z oX%Y}d{htnʼ֛VL 6 r PlZVnAMCvwD K[ّz#l.uQTu!&|MeVtA=^źA`rn:ɴ bx&RO-Y; 7n +^Slj:V+DA2dE[4]ҒTs{&03"@ ? zs/f5̱X;1W;sYkbb=Eoמ묵}|Ww3}Ōy_ߟ߷__k9s~w;EָBZsq뮱w3뿱}_oE[kknsη7=ߝ\\o_E7^E1csڋ_]n8E޷Ǘ3Zg=c5[oNԅ4]t\a%FUdz9A|kڶHӆT2@:\5v-ck-RRdk.dk 5Vebe\3{~\EllKov-OBIU@XMW +-И}b%C q#KPӈ{8_ P^nr|/kuw0/Wܱxuf3 4Z;'bywE9wS$IKɑ:.m̀墩ZL].\Xepe2%k:OS3Alq, F*_ W0?ijB$9m溙KYv%C! fͅ-%/ْNɚCq `-K=rF[C93Z]9g1wы_Qk[s"[k56r^s[{~wk9?6n9{uμݷ[sww{w}6v;֜cf7YEE3E>9/m9]y_}o;{˿bzwŬƚ珳9g,6^z|7ߘWn;-B6!~cC.8s ~y!EvCq' +(KP +TU2;s% -Hn9=KL?1w-E!xHX93IETöUsf56|LIJamblr,[Z5_vs'YmZ\YRPB(q8 T\D[Ry8ْ%?fs"Of6'RVgf\Cxs"ٚjZm6'DP6͉rŌ:l;j#/aB;ԓZ(Wd=5W|i +m8O[8KpUUJXiCspXDWapFLqj \U,]̥ٲʮg \-,gK5ٲkm񵥪gˮz1<2eyJYHfJb-Z[mU]k+[SеX -@YlQT }od{ƜPlm 4XKcAVM_+ +(J2@V->AV%a% +j [Ū`nMZ*̳Z 5Y pRSPPZmՖ,ȪgVrV5_U' `ꪒdCM.E߱Hy'Z4mT96'HMI%Q>O$ ru+QuA5nDPto8tv]'{!+PxX`+25.<9{DXmD5o|X WQ$,xq`*[<_t-n YxʢH TouE ?=*0TX da(kNu]gzrوFN؂h!u]ױpGVata:̪u@ `px[1TH聮#Y>Ћt'Tz]yۃ+]ip$KE+|l5@s-ҕM3<ϴ%0Tsm%D2Ʊ+JƝ$LĠ%Xr-TUkkH5y\rDZ:`Mɡ& fkJM9w3w~{w:} z=7cU @S)h +(@bԁ#M|IqRPhʹŋx 5V SzJOicBu!oŁ"cSzPl( e MYhmfBB^dŹ^qȦOEYh3gt"LMFLE(*3Q656Fu=Ba3os.yrCg|t72 0(QSm Y&eMŁ7͟l$_ 3Y-oM/_xՁď kí6GdEBqy. +5@0 + ب"HJ\j 9x$:_62 +0T^o[c]U (m؅ Ndlyq*; m&,zae&6 \ a V^f2DY$HI)c)c%*ȒN<{9jbŹ!Odn30lzipFdG1D:"ؚ۹EQ?Y$jcxM#%X;P⨭dYcd`DLMOlR{)Ia +Z!.XoC(C>Aڍn@VgfB@l9 +HLxWsqdU[^ {]k(IxޖJ#FLB$$Y:x6s8p%1Cd]&(`H90% +ɧQ$ѧiFn`іJ + +eye$SWBD2~chŹjY,tLeYpvt.Y !hJqrCa[j +PF|$EhBh!uRIiHY=k@@m + ݐ4h, Bkq@*1L2 I?Br#]&U',\ḿAStD m9 rt_]qY8;db{h4bI"V5H8=vaatކ Sve+ +tB~4iၱ+ +6cȠqǗ%F*QjVch >N8F6܂;!3Q1TWR|lT +%ZJ`QYV %87m)#G-NwLx8 +}.[FH`U:@],sϭ lBdRg@Rp]PW)ȳ%B*݀AV. +j <VsgAsR뉔@t6'88Um-0_0)φ"Xo: gX[[нQ!& :aք jo[,BbaMu=Vi&&n6וޖI^h7h ND|0J pU[MM VqY9B:kxL-ma]2-nZX cǽ +uDa#|ώAa +87|VZx6fG;TXM/ ^=  ܌a~2 -A"!MY.v3|@C,@#IVx]r,2 f1Ss!0V#% N] ]!.C .F7m@:pU)jAa:wL =y{ ^Zc |EKBוH2- HpN w$fItBR829\0b…I]s}e-1G|~'ų\QBcL!B`\ +@Q(A&+p8 A'5R𚗶ѝ2qeNοVC<0^F.8KoVu%0s‘"á޶ҸiTn6lX9LCauA*T ,2<108D@E|'SmIHhzz2H'XzxMcJd(`ކ#P Js0|rK`P {eO/ &AxF(5R.X]V Bd m  X kF@-* @ԲT.|4*ᓥd͘B@&{!#u \ um m$c}JJӑ*FۼM1Bm1Yf"o}"أp]T8$NqRũ +ihEYAiHpp҄w\HփSC0 H&_g]¤.:t;Pi2R=:>@E-0I8@4Y尵Ue(MrW:))t``fP|LN]rVi›qLo u#F\4 +Cm!_w "oqQ,kO<6vp!d \d3XW#Yd/؅bЅ2*҄2kyzZ6ކVf׸F FS8TݯJb{}q?ĊsQw!> vx#Pid$ ^Q/rh2P90j$'t0EZfxaD5ŠɺbPuGIlLXJZ9iZ*BcDiE!-)c!d1ijp|nO-`󺶣^s'FÚZhl8oS`KfZ&RI$ +(L{»Xu @@:o#iSD_7ZF&? +PzH@P k$f4<2,\m +BLj4`S'IV\ezҭ +uI#W:5XTHw"Vkt: /o:%zUAF4#WYh":ϧbqxxUTQUX)Tјd=TBwiJmH + + &4Si0n0s dxႹvj> (Er@4EHS -O#բ@BhbRB8!Bdٻ@ݢOB)ѽ.*Mh#Hٵ/Xu)Xz#ꢐz +l.`bXKßӍuLBQ._.:@ sGr4Ղ]L_eLK@HMDJFQcLKtL#y䔥pWZ*kB҂Зꁽ :ygJy]p^7e5PUJydD^y1"2"Fr/Ё|@S)@z:RH[ƪ6(iCLjdyBɌ,ETDъD (@DJB ]`g3cx0dm1v!؅FlaP y[ .lyrRЃ +80vҮ{J[P9c!LS5M5GA OI(ȠDtʏTJLsHHmD | ^Va@Cm|]JKs`Qv#A-/%t_pzAxx=αx[e `R"aʺ*d)C<geC2pY 7'aiHӌ YP)$B]u5ڰ 8Ȧom<8(u_4q-h׃xyLNqBu2xj*'ckB5L(bI(@LuEh@tPᴟyg湴8 IxBO9OdN(-9=}&$Hmif}HM2 B #860 ;!L8Lbx2Um$aAͣ3E@N̻0oK88bt +|jxmR* A!%Xaȳn@ W\G-%GWrFG +!G6:RCщk5ZjythDd-+3*4j}?T{JqHup|]B$YȪBP2" Q(diRSZMP:h͟ A!cuzL&=mL('c2Q682 +]4TduCEwLH +7oÞBpE{fOS<3S< +0ўi؝4tZv!wZ FI;FvҪPfq80bȫ*#/#$e&^6Dyژ$zG,Ё͚hHZf*UQ "2I!Hm ɗ040 p0@f|$0Z?UAhf SHTuV(H8<(&HHƑIaa B1PUmuKE"L\(: +`{8&qIf~AomCJL ׌AϟAM0@~zָX"'J m>B{SvlHE<VcdJ3Q@KrؘoV2W[ I  ֭ɼlϤ۶xecQT5H]lՍM)o_ZRJ{൩)r;ODwd4I$3 $һ`<bk;wBt4Fxat[,Q=ry 9)ܯ:hXjSkד כh?wYa|!;?`["-!Krc^=֠骭`\δID.m=22iP *kN:kz9Z+|JX0іpa; ۑ-6)Z!9H˨T}?n( oOuĞr2`OȦU_'!uBv>FyZ&H׆SrPrIБE}u\ށbC ܶ%gYSݑŕP, +G,B+9ho-T&V#4fbhȾA74c=4OZ&NT?L~ŷ y=k<8B'Af..QEIeoOv/IKLH,btOEaNj͍4Jhx?&X4tW<@qog]C2Eࣖ㙳Mw:8Mvcϐm, SЎlNIڔs-sqmLe{+B[_bwl pAV1}}#_a4-ֽcQLy̮9#BUld)d6i{Y.4ȭUFmRV+`$R&8k[ݜፁ2s1#{r*nG'MA(MppS3VgBuM0 +ӬW>?;'^ūLQ^ND͒ZN7F)LW0J:HB)3M{me3wYfczs!xZ\)LN=/̂ldL!sUtetΓf&ZQu} Idb5q󃯡?'L b]2?rĿVJ̻Ch_4jn:cj| 'e8~5 )Hi .*įIEUǿ%7 '@Y.R$ r{q€ SˉC:E}uM]+M\!Lj )4µHScJU#Q/Ŏl!j?-TYQAQALYP5(^"A!kQD ɀa-/|{6rkNJt J/7_z RMIޙO׺-w֡^q";OSf,@0t3ץOʤpP(c/”z8YFя*ХXfYGq7_*1q=# +&ƵWĪT6Iص<%!"|Ew^4)VԂ7bulUY2Q$Zeh:%6o\]-hX7F-kZ~r= .N'Zؙ|1aYgc+≜⸶KTuD*+p +Ⱥ7A9.1CK፤Z[Hp=}2D4㊭?VvM yGcIhb ?$rP ҳre6p/h"1xW\38i +%IBI!y 6n*W~:BA;"z⽏5PM Do~~,UWOw GL>hc {ϚheF@&k-S60N~99ޛaoF~i?Ùr( +g êd7=77³6X~+?'Cҍ#)dq&wM;!zM*ϸܩn=}TTe1Z |W' " M#ԉp&R$0:J6Vl"/+H6$hո!KLJ+I+ȀdX b#s{"BLx7Yv]ŌՖ8qF1[^#ƻd+Z@G5|P]g[luY6ɡw7Gm9 LppLkBzH}9pϻ +cwwƅNǻ6,3}ﮑ _ej<x,A@^ |ؚ,:QŻ>yaelLw]MapT7 +:-^Z:kƷ~ )! foH["3ʉ:qі6za +aE2sXRș{ղ[.f_; 3zev8Vs|".6Jf>qȯpQf$Dcu/G\;UcDf[6C˺2uk?;(\Z _Ft~_ЩH~ZrpJC2Q`m4@"qUK }arn -^vLIGPڡhp)zl޻v)TmCwE@n^nW8Ȭ<wL/'CnՂ3+6ꔩ_hS!p[lTg>Sc8Ye0ɱk%aNW -ow&Ӑ1Q$dRymlv_^IPY@Nq;%,qS[ȧbptRK]z] G7{%M\D"&Y;.{NfRi=FDv}>,E7Jq:]R$eƣKWSw膉(?KSIL3J?,奈tܻ`\@dS%"6z.8Z%,0J^iP`#3bBŅbvo"4 y5s$vFDkZQ^uս5KJ˵U ԺH'K5}T1imZ[?6Rc r>|${oT:U +XG7y)$1G*s,=vr97F{7TFRtJz@ +w ujeSm.^TP4 P +9ջ˥^bFfh⊀/AI3GKs1S@eрo=#P +SV?dܒT|ľa{ ?ٍ̐ӱZ/m<\a؄sJHN`` DJ3ݳ[Qj0݃P* +]?vCUrf3Jq1k )N;LAiu1=k|75̬M5(t[t (IpZʸ.K*+bz9PLQ}(zd˘+awY _ʆ;ke)wi2 0<:u&^yT稌,/+HBthV1}5xf(M{!+>y[3vJɬHJd|K2 1xXQK+v`O9%P?f7]@Hսb@ A]0`7-ЊU1Es#`\# JCL4PImU6Hk  _$NNY58U +|-Uu"*~VuC9*?ʮAb*./NiU$ wbe1ULVſmK/ ,GG62[pAϖzeAH/N~P8MEڞJE-r y';c@sMй+ivnur?DB6YR +y22x)>cˆoʰҼSõ~|b.Ю.6ɥ CKO UMm%q؜\Mo0l},"jXZ T鮊qg&ڐ?C17G{+ (VcW9fu ϩc,A9ɊCSx;=0 .R+j^ .r910dK0\ 9.wz)+gdɍDsKH17_FfH.vJ9b6M8EksbbK']"u͠n^֖7&NVgS^DUt箞1y&ǕMMWBBvEF^ 1HDPt[sgoblH-'k$QI[#vs~>a$=xb,lbɜL6;@&cD"CKRDX;h_fe.JOz|e 1GqYXAcJ U#A&HL`%J1ͫ?30˘AX lF~OP>#Bkmy"8썲#IB{tHpA}}˛g)>+Xmnvpn% =зM?ayV[tLsv8l^swV+aͶBR5(igd0\ SyUe9IV^}.vvUu@ey~SrɺIp0ggElX*!G!-N5LpvpڪvZ6@+XNjw5#SQsAR$ ݛ\":WS$ry䰕ûAIwSٌ=O ^ JȐ(\A+V55&TpkʊK H`?^`?Z *Rf-jSsll2w2'^uo*oQw=MㆼDAx7oO'Q@Ad$^osDf;Y]fs)_9waqJ͐)ʎx cV+~5eiFtfǐ͆7Y03*@(;~9= G@b- +/[YGfJaa#<:QڰePv:^8:%%)~Afw_v8w;ꮏE%$zq qCe+ 1QV6"WCҺGUn PGf5%b6cuqݤ5[` +f/҅QUW##R}ɽJ.?vO C(²,?Gʸƅ&uנL>b^@ 8Ii5{6f[/g\SU b3ek =#[ zvGd)f_&DSΐQoDק# 'CS>H5 f5)<:.` 6qlh:Pj@:LOO^ڔ9XDa.s&NRԁ&TYK)65q"fLF ԭщz4=oHhk[/Aƭ:Hmp@ +t30845nȦ6":Î"ܡEƆ%!6;WLҀG}_jHH신Lf>6#^3.Ljzm| a" +gYd$בil!8 &T9K}KIE_15&~(mN5c8΁nײ[9rq"i-:Q;PˡJU\e/=.G.JM%Ƕ7:|iZ)e{,1y 1:|Ih*-p{Jaz)0tbnQ1*X4?-^V1TӸ_G-8 +l? +У" +?f@!pA*G,sdTc|n.O2I8Z)y#ЈhE$[Q[hg,1-f;`9E2 + =4oѵ +{nY<E@L>!N.idcI *) r2*@3d 0ձeCUyX):ED/0US&A_:I"V6읋~55̗%u +#+* +X+:h5,$qzж.DžC} ͌Ey]_Tz.RZP:}%( M\O&dw9>poHF%FG>.jcNvZǀmqh=hU-|kMT7tp-*3OQI'9AOU + YL vm.&J!#S;B)ZS$ +;yI@0x>stream +(i%؏fxjBmמSږBDcY|\]Gx)(]Ms*xJ,zT6AKt 530TJfcfK(DK2IjJ$h7=Gls鏅zSqQo4n6@~rK,l&Y;/ PAA"vDJn u.Q\Z)x)bkb0!gAhi'bko+;(&ͩg|xnL8*~8=56֩<d4]o@*2;1 +cxT%^mdaT?Y +o +J0?_Q%5"mEH{~G80U>MrJ}^@{YZQsJl)Ck[< 9R"Ϙ,2btF/2MnvaU8A:FoLrAL%td 5D9'<7Ղ ҁc)S*ԡ [1Q?1s8ÔfS$K08`y"+' ZV4Ue=C+lu v1eK$mp'tx"ujK*E󸣒tⴖ<I7 + Ed%U  bT%1Zx;;#Z^Х,>d_ 7Y}!`HܬXx_i$C_'HW;kb-m4_ѷ!|XP9zhM|`9n$W+ل(_h3V> ] )g#)Ag4:})ih5?#r{2)E4E!cV߸/(z'}oEppϔ+WN\$0o ;0{3bo}A̐HBI:I @pcUx$q4z-1 )1,h*'yc9M{n~ttS@EHw!"NɔyR<ɵd BR2aN3s=r#!X{ܤ2ퟯfA'Rދ#Xf{5sNE].<>΋+!JnwL{sb|MeUUKt"C8pBNw#YN<6f h-{%N&΂rNqGy OP[+!~OO4gb0G4LtJA ~@5Qhz[_$-OJMɔN/ +gE>^XLו$)+%ϰL׭Y}Ċ4-!1Ypc!tpQhH?5V/3f[UEuW"PiCCMfG%]5z=(#)Bqj@KU4My Db.-O :/q)pV!$8.6){&wF +ak*ԴB^Y[EXf?a}biQ{]IpnҮxճ,y+/,s5!\DTUH(Ս%E7a e`ȇ`"%yVFWb _( $rv93?*7+[\7< Ou"$MOܓ+CH"Ij߇,-4mM\zZk,c:b~o]jQ!,Y40u{jPVQqDYax~?Vmc?zl+w܁$H +}ĮECA9SCڳc97yF3L%G%br$M3#U#T+p7>I\!B##+#38ar)Z-6 Rߋڈy}P`[PJ(⡯dux +DFJoҟOSV4B.PX݃')D K#[P.<#^Ez=t#zS$0Vɀ@\kŽOEUZUT,3*@Z'3B#iJT()CTI:!FZM3!1Iq +צZw5g/ӈvjӂo@nܤYuwwgl$D'l1Z)(%f9ZŻdƴ_Gk݄0,-/2ɍ+Lģ}0 ۀa-`P:9j‰;qhE+%@8%YƤf":no\ qY92gIf&~@_Ső(z*B4EfnD/`g@WR03+ thR5A9H(5[N4Kؤa Z6f.yuAYh+ot3LBPd38 =_ʠ/m݌`G}J@><]ҁ"x1(kY3b%KMWcZ'ޏU7 ;Wj +t1§Sv%:Sy +??znU>-)u*wd5@UG/^ZDʯ"QheTy~'PσPsSKqnfGByY:r9SWSR8͉I{1DWyT&m(>2@Jo$vwrrMa(k'aDί h]ϾM~>\yz qfg0XpxGz ]z ,hFʠEjx~]d뤜Fu)Q_ 21c_fRKǯ,PiV\{j1I!0 pWٯaina_Onu !5Dl ͱ,4øj|2hERA)Fvਆ2Eu=F~^M Hj[J٦ayS[ҤZǺ(VGL+ialRbš\U!8~?E,x)QoÅ NpA& +%߅!n}HXп +[CfYaEFod0.Ilyߓ3| ӂxRba^4yįdOQG0SpC^_y_/mrVOgcY|g5kų :Z2͈uc׹3܂tC-tk'CSGEgO %$K!y莽1(r7 C41q @1ҋE_q].R;T Àr-wnቪ+5 +h9R('{ZK|ʖp)*@e{CXFퟡ%w/4cnr!9) B7!8j1}pJ6ݘ),Y :9K 4;wrx݆yly NgeKq't2xnLeI|.;`qA~Bԃ1=.߼̻C\ANF]d }/l)oNuWl;%ՆJ*1m0][j+[)$Ii81T3ĝ\+i6ULOx92w+:@fy[H_tJ >V]H@X +)pPdr+ۄ wf`nXyp +Hzw$FOR4=ua)'xT²~LEAĴԾ1," vRf HtHo։1)D9s#o%PVE7M^V +pDވ"bs9.5$ <_ ~ƶCM8AI ue NZ5qP zq˜8AEP_(k@n\˧NJǞ?9˰8{.j}b׼P9aʒO1{0`SxuG~ڋvl7Cr!;;s""O jȜ a +=zGUfXTo^ޜ`C+;\f^/fi"'uDW@ )eGUiM5Cqh' +z?=E>VUZ_-Fu֍ {yBVft,DjSZoH_F}GRUu1F(ah4o⼤nQ :-mv0Nx9( /`BT&$ MO.})4ڿTLv4vaVL,(ի*g04({&lυ0WB~}'h0f"rLf |`cH:BV7}m*-h]rӄ 3򍝽&8@؍JY?"']C4 (Hdh#%M<Gwm:HxMih'@&y+pNO)Jeׂ8ňJ ݱ?=+%O^\|i`MC(FR-ڄ7x"J4s:-(Z%yLP<xcAI,`,D: @W4ů?#m2UARf:Pd cι1@lQ#GNFfMxƸ+!ʌ+xܵom 69a>`Oup67<*MBȫ! F~28aÃ#m;}W α׾Kpb+6fonT28 ߡZ^ʲN5g7=ܿĉ)2M+,l?ԓEd$4^VIHb#]0B-ol.RTn&(Jza('x?TiGZ +ׁ]Ξ,nq*5qZ'ZtY$_}O]UQývΡ+Ȝt*xP,N{)TDbAHXkNRjlTEHη|=1Qʚ'2O.bPZIvBj"^u29m<E- ~>kO xuU:.ϰ*eYzZt.DD~He fj_(a@ޕ""{4Jru5 +FD9px Q9eKpP] C;@8㜲hQq*%xْmCĝ&bx~2at ˆDS`z,Q^3h8橤,@Fמ{ͶLO‹hD6PhFtj~ dX srbB@(`š.|Ͱ4-F/|T % ]BR]jik +HڔKW H<%1 AX>mCŢ#E,//m@BJ 164dl8IN˥pqI', ҸZR>.š ;QVȴa*8҇C$ 82߶q+^x̏7ΰ k9B)hjneRneR06a6MfkBIeyI<6+Iʂt2H,*) d$&!$06*BiCS1X x@J9ɰޅI!Pt4 hI)A2K+3P. +(F$ڵ0f0` $!%GנRq.RdXSL <!mHt!Ky_>R݆͢R6 hf40˥M84A!ʼn6@:Z-b&x Y4]Cu]<6А·' ࢱ"( a&CG҈dpeZKCGhi-i3-iD $ +ę% ̈́J͂w4M@MXBUQ +ot I"v4N;ۈM+ mv55:F!dNƙU<>IJ@<`c0;n(y@(`ӑ_8 +9"Y$ +2K˰t(Y: βp!v!f<"(H\vM hNQ2.=Ԋ$A'!I +ycY/N1-b4b G#z$h zpk1@,@8hVSNhY8UU "ZnV&Z2) (8&  3Ī(8HA +> +)@2*Npt@(\XhXm( +NE@G 5CkN_"5 @NC' (F\F!5p11eاKסi( PXlK@64A(qa!ʤu+blJS57h2#v8HxzĄBgRI4ژmC5&hʤ( LP) +X"A B LT44#`\f1hkXTJ%tp"0fQ.J Iq]\@rVJdMa=vZhbq 8" GթB {mEҁ i  "2O%Q@eN?asa$DjB8qH 4bT!z7uUHa!b#v  JhtZdd0I(-LtR|T) Nl,fy + EŒaFPB'RhLD :b+nb812,2L2_GeX@C\(Qx4|2  ٺ$$ھHR\o>)<UC3"Dlplֱi,Ƣa,fGA1)1ȰbB4YbwX2U┗$0J64#I<^ J+Nn`%.%H*,($mcyˆHxā'' E!)$Q g".G* + + d6w@XX>B̈́iDRN2LVHG҄d7u tz[a`ajĎ C4 a$l02>,:vbfX"Yp@`, h2̡ʰeC V^2'4HYPA@3bIȳHj? C +Jf)=4ȡu + h%Lewa-S-ԠX#J %TST> Թ<<]TG5,4i!`$x4kdC4HْjZGKt^9ai&fZC`└6QX&q}c6QG~08Ab8+I%c*IXhd* l*٬^8`iYhYh^s'bɰʤf`*2D@cl!vY‚D|pa#-Hˁ.NNJ؀yYeCq%2 +M\ ]iA]8ZnDjm X݂&X2,2B0M3)ȸd\=>ѱْ ƗĽ'Aa8+hD`8p)\@>~a, +BԈVMXud ¨9 +Re1m0] J|P1(㑤8f; HLeX2,PG)TA X X*-pF"bN(^$ƠɰMi|d, @#2v@[9p؆Ի8P` +w#Zx8#Dp|9"db2ḭ(+TZև#v&ls ] +L! q+>HzQÁSYhlBQQDC'GrH,* ˰M8 $1E`TA:)t֊]2 @GGd5`6LABCoR(ɰ <6f!bAFRhD2<ٔTEt8+a1h`6a %NaeIu)[ J ܃SjCiKPi-BZ+pXS陰fHa2LfXN6Tr0P 'a *7j֎,h.i8"G,0,6f HH`2L?$Rdd!` i-Ra`8e4FB3"<}A0uF# q1qm Aa8p/֞>6 jǢ3 NnId|6)#aJ;B l4s!1c@'."&J $ӠsGbluB"063wP vqn ͰIIN" l怃1Z lP#BIPʹApnRL˥I ;V&L:Z p4BD C'",ѥ- . #EBJ FCx! ebՂl*TCJB2[UxG{ 0ʌ0,RD"bqB߄w`fd#%ë^"ٸAv2rq PFfnFC? gX#QEIcODʡxlm[dhz.,(0J .x$l +\B u.4E&vD< +6jH/䜞X@\A-x+;ü8=؄4tUH +MJA$@:QJ=qcd$ TF@j:H "JN)dPF$9 h+GT & eA846ip8=h8X !߃k=I3 !Y9RG{@YP|p!˥R#RPiK(u4`#5Ͱ:t@\ +U&1P|pO˥}D Bh;(@,zˈM 5ֳ .%EfA/"xNʁܞ:Z e4Z'=8P'lP|p{ALaƍ ,1 = mDyu^:v +a"JMI@A=6Ah,&òayɦѪ`>6XetB)\Lh,mmi9* 財$ fO>n$`2|l(NX +  +P)C L]Oӱi s|c>}}pӞ?u?e co|rB:TPrϻUz;r>G.e_<'Veǩ+ۧk ?)G~X[gsE;\oؾ __:d0\9|9y6'CcC9ce|rzTO~1Twj9jP=ۣF+UOm )a܎qfUQ-yJ.e[E9wnpS}9[B '_e]U.=N2O]|?tB]uTކpY?|+P>/W{P2CynB|lw~[ᆱ93G[%O0>:7}u&2rg칕_(꾎?K( +=×O%:{zBgS–P:\~ 5\S%F1~VϩrLVW%tt—3/=:r\Kȯ;{P˧paVgSF%tPs\}rNgȳeso=7;\n9]>=2PUa'B/giC)c~1 Um*fto(eP.#d(gJ>WwyB J69눡P_Y:|PjTֱPEJmq﻾o,TrYyjrUw~ +߆;F*R>Vn,OۿƇ/rܭ ܍۹΍+%|2\p7)??u~.wUN)c UdO{;v| lɓeė} UUFFn揬쾪Ovw'f+o!U)2א_d9'f %aÖUߐ~;Ζ鏡yTuغ2yWF#42}r7,ftq[edq> wʨS_n{9nmcF}k[e2:2{t^ gs׈*Q*DlXj߷n=ƇޏeTp{7;S=mرucGV]:0.s;ce*K)=N-eo݇>}vGm2>]^r#?K:ᜓ?cT܏/(W/F,TȼQn_u!Nw>q{R +͹,=Nʏ!㍮?VBd!7wS庺|snΕݽ:u>_O +oy?q}l.>R\Oƞs :_~o_;{JrJfR}F=;^9tpG(_Oɮ3׳n0s%㺌+Rn:}F[:G~ E,_ӧ?d[** +c?迻?Χr#oj/\oF!s_˸:Onqߣ_;>Ϯ~73ens9Wbˍ?%7TMG>_eC+wPFv t=aRqSx{G{r/dd{y}3d,猾>9|q8yyN'ye(*W9jT;UuS#|/wJ~P>K^:cr2JO]op.pur!ݭ?Ȼq]Xy(Uz\c/ns*j7{g[K'3+G}U%us~97*<}8d \,ze?ÝiOrސCޅ?WgVn_#?l~88]N݇\,|Jwy7~;ݹ?%.V:ƝQ꿔QDV*;G*{/odUV6e+%Թ/C%|ߩ>!&?a +1%,#熫o%w猻{ rlRˆ;*߰PdorΖua\V+aC~Wٓ_!ݻCzt^Rv࿾v6K_a/N>wY_V+w%dS`_^_z9Jק(9FrvRc! O U(uAbO__Qpn\}\~gnRW}ӥ>{]joU/K(}ʏͱF1F F-!WveweU6ܨڨ0Xϒ)E#H08 ǃbhDn(<,FqPQA@A "IH"%\gc@gD6-}ba<M# nY&N4?6eA +Щ|7`J!GI&%E\ *o|aFb~HM?] mvm&aծܒ/P6ggЏ?ّ*G$I\u ԗsPGw (Wg1jb>Bqk Wӛ1A2:Ao#쯁A'XЃ3{]0ڈ)$)uWnے됨Kd I#ߍoFSzӐ`LT&9J*=H.'DTq1<{bxP"ĆKqW80SU`U<3jfG {9}ޣ(0j%Tx*lڡ\@pgA<5(Rx=CmSǠq]_A5hmLǍMOْf)5FZeL֋rat69ݱq_8}E96+5Ovmz0G>oHv^Yn jI󨈲_6C]@V<4OeՎ&js̾xJ Z-MB@ R7b*1ʘD_J_է'Tq -ǎHxSTh1xD"!z=P۟=jMbeR̂ZEϲKH9\ +bf6G&R 7֙4>~fpup11Y}1*B$\1XJeEB3"@!Y(ʨgŅl5 SǺ߼%z?n HCkBpԣ[*=Aeto!'V4V.,㐤iM2lFfZdh lb͍g׾n>'q2M~tR\NgWcM1iWcs]R x%;i%(jV| 2>I!8AS9VIڤ' $D|?siή<&C˅!1aQĕ쟾+$qc S&I|ÆN=O=jc5#\E#q;- JWV@ S {YKĹ +"bQ2le; 1N֚F|u6a4j9l iY9e z]u#ghSj]vy)^M@F̬Sp1Ƽ +̸Bg1L/&NoH3~r.BǯF"R`+b1[kț٨ EqC EyIE:#>Ilc~-t`jp 8i5daTJTUmERkw e-l~j-ʏ+R^N`ߐ9>4 DRY9 Tzr. Ǔh;Q oz;,tfoe|/E6_"h%yga:;h +ZW,3vԇ!?><4BLxi7E(% q-@>{(FҺlڙFHGd~VUjYteխipև٥g?b~)K5-:Wa!o vAln~6 tKrQTXN )Ao!s;C<2[ Ц?5%Q5P9NF8lF@H,[4ҼLҘ,ty\LoA,h@D-b'#FtOGP+Ec95 8|Qg)ϾΣkɘ9ANlFCJi7ͷe!`DYꃯN'NI-뒂Wr7) FvY@ԡթ wȳ5lcJ2J; 7qV?^$!;'R,6t;Po=9=ul2֦x\y/C'BR)X__)cl\KΞMs[z9‡&h\`ҦC7g2dTUY&^! ,Y}05ms@xҤCGK.wCOtEbߗ C{8eJ}m7El%q\nP M3mv5f!zC]U'R4gP%t:A"Ԯ`1[Gg9bgG(qHV(ytteJtGT`{;h/4Q~ݚɊ݉Uu"_xZ0ֺI3L]-Utdx{r["ap )Rm-cnwjvTv "ijbfbmYI56B jdK nحWyBH3YhQ嚀 jυTKV iOK͊#n袎]AzG?.A5qM/L1A +UmbPđ隰Cbž>ԴJSlxك5u,dmËBDK;Y^xa_݅N12If=ox4k'p-ʒpp@1[.'O6#z@Q%r2Y02-H!Q <|hb>uPmD7XFC 2AW@}xnu0,?%&mLKX\ˋ(z[چ&*G|%fHB飲dX 3jf.*aGT83}#uU*sJ9Q] A֟-O +Ї>q(Aw~2JZބZYciuwB2)#tIuă)%Yե@зdN$*{Ǵ}j[Q#}3EmpuvibԖ8̉5mt! ÙB6GΡ|Oh,0]A‚\5!=(UdRŽ=v?E~xUHÙ*y{#K[Ĭi<Ĝ*8g#t<^7"54"14ʾ|a|_$)2^H]Z^dv` QLR17~I.Dz+3T,"f],QO}wҘi"g*cnC{*hOn҈9$i,QMtajν:1]w;O, +/(b-Co`!=%sq1Qػ1#ڿ%V–I 5R"=  &` +H[xWa'Ԫ 7ORz!v ;He :j-2cM>\' }̺=O:* +IU5IB㎧7 _*hxw6pvLni`-|_}݆oly];6+c[+瓙Ь_Hg bpF]`x x N<ŵ,/)CSJӢW,\|;`zHjޅl5˭ФHϕԽN}4nƧ*q%o,OvvJ⎻@P:aN3 %: <[//dMC~.r)H&53OQ;/3-}>zAÜpUPW-5ga,P(|_ wpfNCnV +10^o_=$5YK МxæGjHΝ8ٕOZXVcMw» ؃69k?.}*Mf;Pa%˓4I0j[+Cɀ[tCh̵U?VO:Nv ,븳C @cU|PvXss+m i'="`@`NgU$Ke3n4!5\GDڇf^dӑ! lv| +!2,b_fun6j,E!煃\ӫ{, Xd<.#*aNEЎ|ov:bciw3خ,ެΐ&.QOh9*䱺?c S#1u}2qG ,A/`Ϣ+m8G%m&d!&NiDTeMIvE ƜjΜT& + !H](tOvmIsi^:B=k8KD:/a;0F%=wV Ϝ/ޟL!(Jd'A0[F+ 'a Vh(N)hc }J_`gGE}U;ՅLMP>I ?j!}ٷf!lrj\24ķ6c]k1?Jl${Qf'œ1u*Ăة[.JȊˉ\kRGxHoO93qllKCC5p'F6aIڛrI_c%5`a &U7JURT{C~ψ ]W8(5bmV!+\^.O=ŊRFMr D?c"9] {0"wlᑶ0ۊFe[ i~ר^<_ky~6ofȴpŸ+K +BB``m\;ˈaώM@3ACFAqܿN,Y\ /XXD;p~8 +4[RE5T1:NR2ߝ p3]9y6FHzyrc "K(iҗD!EƜW1$IϜ'[V۫ØbaT'%\-܎֭"GÙːuhF x14BBV`+\XvzE[]>=nH +$?CWq+ú9gccٸ6~菕aIu!эB֔"XIN7N{۟jwJ< ΁n~E-JEuaxɻϣEkFhS-Lh˸h(6?+$G%BaCv59_ZT$ItmH 0tޮ/&9č +4 |kJTaIW)lQۡ$̹-fOb@c87!*"2S>od6ă]/1p~w++yBP##U8Z|zeUeS05>>51΋ cцjxrc 6bЍ}#Q03\t>q0`+1V}wPDIݾ؟mF$Kj̤t^"]ׯ%/m1ޔѴA3Vtɷ; KbYhd;Iz_kO,D?G~V={q%er`ڙ+.<|? U֭g>݆L-"cqs +;fAe^y=7G:;T`X8Zy>ik#&qTɕAqձ:ئW10# -A, B]܇8U4FݿB$@D?(^u" ݅iDMQCũx}+M/m+$%oNy= ϪgtwmMxz\U >B5*>-I?dLirP k-k ^HKB>?1x]'G$!4fC1pa\(*q7SW7[HE,ڄrٟa5V2o0U Lj4cAȕ5"(sg(i?> ;(74Pq@V꧛ZfT}$:<@QP˹`2LPvKb5|(l~0Fn="WC Dl 0Gt o@3<@"p_U/5 p ȱ%7Õp`] )CM'0@$,G+6p#>_)W.kűr\A\$T1_̰2xu 0A ڝP}o(axs1*Lբ!ٵ}-3(GAB_IX qݍ s.n=Zr=;lHEՍ4+~{Ys2(S8Q]'j(C[2ٟkSJ1G. QZzj*M! !G?S%2ƞ.ˎpC!pAAӄ +~^[aym'3fBwoz|W&d;wdʕ==Sr"$nQ3f.^w["^z㵕*?VW6푻 )/\UibxQ學:qK 2PEbf >/4m~~ OHX/0s(-&f!ށhu]tod? Ok>7 +un+RzXH}_W>m6(AJ#l.)1( hq ;|4hE&zǍa$|) /1Wu7YEdg?u5'EpUm# x*<{D<P9fs]j:;٤ xw(E*(鿑us^Zc pZ(bAGhn"b$LȊAw&q0EoT\h]ɸ=]).=H1f,3zCx|ע(ppأObARQ}r3|åvA С#C[D\ǛLO9D v{* nV~!DaRwd!!c끶g֙41ҳ<-,yxB`5NRm*K~c߁ֵ:vw"jFu$挬Q`G&-!0Dh(VY rP.Qd͎t#EfDagXcٳޕZc@i_K5@{ԪwAj˵#qqCBdmܽ c#u c,Up`' ~w[Nb endstream endobj 31 0 obj [/Indexed/DeviceRGB 255 32 0 R] endobj 32 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX$6Ra!<<'!!!*'!!rrmPX()~> endstream endobj 25 0 obj <> endobj 33 0 obj [/View/Design] endobj 34 0 obj <>>> endobj 24 0 obj <> endobj 35 0 obj <> endobj 36 0 obj <>stream +H,mL[eǟmݢBȋ# ᜼71@!/J +5$iêI0|uQ6cFQ$JVa;H ?9G^G([ + +^}h^`klN97lhFx>%1z' OAP1oO$QءZ8JUbkPܶꖺjS;jZ\Fi9P\n{sRr9.M5ڕj[r.ԬŽ&=JB)ɤBț:OH!D{1$}NйtWu;rzeL[b-0 CpN1Ϛ_c```#BkCr΁(o N=^Voocx4ZA#4#Xda}DqgMA]p +Ncnקr0RF=9qgXjY{[pSM2 #ş ɊƨD̐Ø1Q]B=gJF%~~dZY6WZ}>Oԋ=CKꫪ06  /^uV endstream endobj 29 0 obj <> endobj 28 0 obj [/ICCBased 37 0 R] endobj 37 0 obj <>stream +Hb``2ptqre``+) +rwRR`?> v^~^*vD_)p%?@lZhdg"I`($>dCW@$ ]>faˀ% { *23J ---SR+KRs< +KRSj!ABPi5Zho@p2A!@riQdL0cR?1^: Sbj  O endstream endobj 26 0 obj [25 0 R] endobj 38 0 obj <> endobj xref +0 39 +0000000004 65535 f +0000000016 00000 n +0000000147 00000 n +0000040618 00000 n +0000000000 00000 f +0000040669 00000 n +0000000000 00000 f +0000000000 00000 f +0000044476 00000 n +0000044548 00000 n +0000044787 00000 n +0000046262 00000 n +0000111850 00000 n +0000177438 00000 n +0000243026 00000 n +0000308614 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000336005 00000 n +0000335818 00000 n +0000338262 00000 n +0000041103 00000 n +0000337864 00000 n +0000337751 00000 n +0000044005 00000 n +0000335244 00000 n +0000335292 00000 n +0000335889 00000 n +0000335920 00000 n +0000336336 00000 n +0000336645 00000 n +0000337899 00000 n +0000338287 00000 n +trailer <<9D306F40FA354036B65D39AB77EB5114>]>> startxref 338477 %%EOF \ No newline at end of file diff --git a/docs/assets/cldk.png b/docs/assets/cldk.png deleted file mode 100644 index 01f4fe1f..00000000 Binary files a/docs/assets/cldk.png and /dev/null differ diff --git a/docs/assets/css/mkdocstrings.css b/docs/assets/css/mkdocstrings.css new file mode 100644 index 00000000..213840ff --- /dev/null +++ b/docs/assets/css/mkdocstrings.css @@ -0,0 +1,5 @@ +/* Indentation. */ +div.doc-contents:not(.first) { + padding-left: 25px; + border-left: .05rem solid var(--md-typeset-table-color); +} diff --git a/docs/assets/css/theme.css b/docs/assets/css/theme.css new file mode 100644 index 00000000..933156e0 --- /dev/null +++ b/docs/assets/css/theme.css @@ -0,0 +1,173 @@ +html { + overscroll-behavior-y: none; +} + +.md-typeset h5 { + text-transform: none; /* undo uppercasing of h5 applied by theme */ +} + +/* Branded header styles */ +.md-header, +.md-tabs { + background-image: url('../images/background.svg'); + background-size: cover; +} +.md-tabs { + background-position-y: -48px; /* exact height of .md-header on medium-width viewports */ +} +@media screen and (min-width: 1600px) { + .md-tabs { + background-position-y: -52.8px; /* exact height of .md-header on wide viewports */ + } +} +@media screen and (min-width: 2000px) { + .md-tabs { + background-position-y: -57.6px; /* exact height of .md-header on ultrawide viewports */ + } +} + +/* Nav styling */ +.md-nav__link { + align-items: center; +} +.md-nav__link svg { + height: 1em; +} +.md-nav__link:not(:hover, .md-nav__link--active) > svg { + color: var(--md-default-fg-color--light); /* slightly muted nav icons */ +} +@media screen and (min-width: 76.25em) { + .md-nav__item--section { + margin: 2em 0; + } +} + +/* smaller figcaptions */ +figcaption { + font-size: 0.8em; +} + +/* Disable interactivity styles on grid cards, which are not interactive */ +.md-typeset .grid.cards>ul>li:hover { + border: .05rem solid var(--md-default-fg-color--lightest); /* copy from base grid card styles */ + box-shadow: unset; +} + +/* hide math overflow */ +.md-typeset div.arithmatex { + overflow-y: hidden; +} + +/* Apply IBM branding colors on top of 'default' scheme */ +[data-md-color-scheme="default"] { + --md-primary-fg-color: #0F62FE; + --md-primary-fg-color--dark: #452485; + --md-primary-fg-color--light: #d4e3ff; + + --md-typeset-a-color: #0F62FE; /* manually set link color to indigo */ + + --md-mg-positive-color: #008e10; + --md-mg-negative-color: #ac0000; + + --md-mg-substitution-color: #008e10; + --md-mg-deletion-color: #ac0000; + --md-mg-insertion-color: #3e57d3; +} + +/* Apply IBM branding on top of 'slate' (dark) scheme */ +@media screen { + [data-md-color-scheme="slate"] { + --md-primary-fg-color: #0F62FE; + --md-primary-fg-color--dark: #332362; + --md-primary-fg-color--light: #835dcd; + + --md-typeset-a-color: #5f72ff; /* manually set link color to indigo */ + + --md-hue: 216; + + --md-default-fg-color: hsla(var(--md-hue), 25%, 95%, 1); + --md-default-fg-color--light: hsla(var(--md-hue), 25%, 90%, 0.62); + --md-default-fg-color--lighter: hsla(var(--md-hue), 25%, 90%, 0.32); + --md-default-fg-color--lightest: hsla(var(--md-hue), 25%, 90%, 0.12); + --md-default-bg-color: hsla(var(--md-hue), 7%, 13%, 1); + --md-default-bg-color--light: hsla(var(--md-hue), 7%, 13%, 0.54); + --md-default-bg-color--lighter: hsla(var(--md-hue), 7%, 13%, 0.26); + --md-default-bg-color--lightest: hsla(var(--md-hue), 7%, 13%, 0.07); + + --md-code-fg-color: hsla(var(--md-hue), 7%, 90%, 1); + --md-code-bg-color: hsla(var(--md-hue), 7%, 17%, 1); + --md-code-bg-color--light: hsla(var(--md-hue), 7%, 17%, 0.75); + --md-code-bg-color--lighter: hsla(var(--md-hue), 7%, 17%, 0.5); + + --md-footer-bg-color: hsla(var(--md-hue), 7%, 10%, 0.87); + --md-footer-bg-color--dark: hsla(var(--md-hue), 7%, 8%, 1); + + --md-mg-positive-color: #b6ffc4; + --md-mg-negative-color: #ffbcbf; + + --md-mg-substitution-color: #b6ffc4; + --md-mg-deletion-color: #ffbcbf; + --md-mg-insertion-color: #948aff; + } +} + +/* custom admonition type for FAQ */ +:root { + --md-admonition-icon--faq: url('data:image/svg+xml;charset=utf-8,'); + --md-tip-border-color: #0F62FE; + --md-tip-bg-color: #0F62FE; + --md-tip-text-color: #edf3ff; +} + +[data-md-color-scheme="dark"] { + --md-tip-text-color: var(--md-default-fg-color--lighter); +} + +.md-typeset .admonition.tip, +.md-typeset details.tip { + border-color: var(--md-tip-border-color); +} + +.md-typeset .tip > .admonition-title, +.md-typeset .tip > summary { + background-color: var(--md-tip-bg-color); + color: var(--md-tip-text-color); +} + +.md-typeset .tip > .admonition-title::before, +.md-typeset .tip > summary::before { + background-color: #edf3ff; + -webkit-mask-image: var(--md-admonition-icon--tip); + mask-image: var(--md-admonition-icon--tip); +} + +.md-typeset .admonition.faq, +.md-typeset details.faq { + border-color: var(--md-typeset-table-color); +} +.md-typeset .faq > .admonition-title, +.md-typeset .faq > summary { + background-color: var(--md-typeset-table-color--light); +} +.md-typeset .faq > .admonition-title::before, +.md-typeset .faq > summary::before { + background-color: var(--md-accent-fg-color); + -webkit-mask-image: var(--md-admonition-icon--faq); + mask-image: var(--md-admonition-icon--faq); +} +.mg-cell-color-positive { + color: var(--md-mg-positive-color); +} +.mg-cell-color-negative { + color: var(--md-mg-negative-color); +} + +.mg-color-substitution { + color: var(--md-mg-substitution-color); +} +.mg-color-deletion { + color: var(--md-mg-deletion-color); +} +.mg-color-insertion { + color: var(--md-mg-insertion-color); +} diff --git a/docs/assets/images/300-W.jpg b/docs/assets/images/300-W.jpg new file mode 100644 index 00000000..4fdab1d3 Binary files /dev/null and b/docs/assets/images/300-W.jpg differ diff --git a/docs/assets/images/CIFAR-10.jpg b/docs/assets/images/CIFAR-10.jpg new file mode 100644 index 00000000..dfe6c8ec Binary files /dev/null and b/docs/assets/images/CIFAR-10.jpg differ diff --git a/docs/assets/images/CNN-DailyMail.jpg b/docs/assets/images/CNN-DailyMail.jpg new file mode 100644 index 00000000..79e6d87a Binary files /dev/null and b/docs/assets/images/CNN-DailyMail.jpg differ diff --git a/docs/assets/images/COCO-transportation.jpeg b/docs/assets/images/COCO-transportation.jpeg new file mode 100644 index 00000000..57d15eb0 Binary files /dev/null and b/docs/assets/images/COCO-transportation.jpeg differ diff --git a/docs/assets/images/CoQA.jpg b/docs/assets/images/CoQA.jpg new file mode 100644 index 00000000..5c632fc9 Binary files /dev/null and b/docs/assets/images/CoQA.jpg differ diff --git a/docs/assets/images/KITTI-pointcloud.png b/docs/assets/images/KITTI-pointcloud.png new file mode 100644 index 00000000..9a0ffcbc Binary files /dev/null and b/docs/assets/images/KITTI-pointcloud.png differ diff --git a/docs/assets/images/LFW.jpg b/docs/assets/images/LFW.jpg new file mode 100644 index 00000000..b2c22681 Binary files /dev/null and b/docs/assets/images/LFW.jpg differ diff --git a/docs/assets/images/STS-benchmark.jpg b/docs/assets/images/STS-benchmark.jpg new file mode 100644 index 00000000..e3999b4f Binary files /dev/null and b/docs/assets/images/STS-benchmark.jpg differ diff --git a/docs/assets/images/activation-map.png b/docs/assets/images/activation-map.png new file mode 100644 index 00000000..378d4009 Binary files /dev/null and b/docs/assets/images/activation-map.png differ diff --git a/docs/assets/images/add-test-cases-light.gif b/docs/assets/images/add-test-cases-light.gif new file mode 100644 index 00000000..16f6f43d Binary files /dev/null and b/docs/assets/images/add-test-cases-light.gif differ diff --git a/docs/assets/images/add-test-cases.gif b/docs/assets/images/add-test-cases.gif new file mode 100644 index 00000000..fa02ab27 Binary files /dev/null and b/docs/assets/images/add-test-cases.gif differ diff --git a/docs/assets/images/automated-embeddings-extraction.gif b/docs/assets/images/automated-embeddings-extraction.gif new file mode 100644 index 00000000..d0d4cdd4 Binary files /dev/null and b/docs/assets/images/automated-embeddings-extraction.gif differ diff --git a/docs/assets/images/background.svg b/docs/assets/images/background.svg new file mode 100644 index 00000000..91c0ed12 --- /dev/null +++ b/docs/assets/images/background.svg @@ -0,0 +1,2039 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/assets/images/boundingbox-extraction-configuration-dark.gif b/docs/assets/images/boundingbox-extraction-configuration-dark.gif new file mode 100644 index 00000000..37c0f881 Binary files /dev/null and b/docs/assets/images/boundingbox-extraction-configuration-dark.gif differ diff --git a/docs/assets/images/boundingbox-extraction-configuration-light.gif b/docs/assets/images/boundingbox-extraction-configuration-light.gif new file mode 100644 index 00000000..514d0c29 Binary files /dev/null and b/docs/assets/images/boundingbox-extraction-configuration-light.gif differ diff --git a/docs/assets/images/card-background.png b/docs/assets/images/card-background.png new file mode 100644 index 00000000..c8739c67 Binary files /dev/null and b/docs/assets/images/card-background.png differ diff --git a/docs/assets/images/categorical-aggregation-options.png b/docs/assets/images/categorical-aggregation-options.png new file mode 100644 index 00000000..7f2a0b5e Binary files /dev/null and b/docs/assets/images/categorical-aggregation-options.png differ diff --git a/docs/assets/images/classification-dog.jpg b/docs/assets/images/classification-dog.jpg new file mode 100644 index 00000000..25a0b2e6 Binary files /dev/null and b/docs/assets/images/classification-dog.jpg differ diff --git a/docs/assets/images/coco-stuff-10k.jpg b/docs/assets/images/coco-stuff-10k.jpg new file mode 100644 index 00000000..f7c5ea7b Binary files /dev/null and b/docs/assets/images/coco-stuff-10k.jpg differ diff --git a/docs/assets/images/custom-fields-dark.gif b/docs/assets/images/custom-fields-dark.gif new file mode 100644 index 00000000..b2878c80 Binary files /dev/null and b/docs/assets/images/custom-fields-dark.gif differ diff --git a/docs/assets/images/custom-fields-light.gif b/docs/assets/images/custom-fields-light.gif new file mode 100644 index 00000000..616dfbf1 Binary files /dev/null and b/docs/assets/images/custom-fields-light.gif differ diff --git a/docs/assets/images/custom-metrics-dark.png b/docs/assets/images/custom-metrics-dark.png new file mode 100644 index 00000000..3c882b9a Binary files /dev/null and b/docs/assets/images/custom-metrics-dark.png differ diff --git a/docs/assets/images/custom-metrics-light.png b/docs/assets/images/custom-metrics-light.png new file mode 100644 index 00000000..e252f25c Binary files /dev/null and b/docs/assets/images/custom-metrics-light.png differ diff --git a/docs/assets/images/custom-metrics.png b/docs/assets/images/custom-metrics.png new file mode 100644 index 00000000..a986f2dd Binary files /dev/null and b/docs/assets/images/custom-metrics.png differ diff --git a/docs/assets/images/custom-queries-dark.gif b/docs/assets/images/custom-queries-dark.gif new file mode 100644 index 00000000..424b636e Binary files /dev/null and b/docs/assets/images/custom-queries-dark.gif differ diff --git a/docs/assets/images/custom-queries-light.gif b/docs/assets/images/custom-queries-light.gif new file mode 100644 index 00000000..4abdb0b8 Binary files /dev/null and b/docs/assets/images/custom-queries-light.gif differ diff --git a/docs/assets/images/detection-airplane.jpg b/docs/assets/images/detection-airplane.jpg new file mode 100644 index 00000000..61cfbedb Binary files /dev/null and b/docs/assets/images/detection-airplane.jpg differ diff --git a/docs/assets/images/edit-image-extraction-properties-dark.gif b/docs/assets/images/edit-image-extraction-properties-dark.gif new file mode 100644 index 00000000..ea903391 Binary files /dev/null and b/docs/assets/images/edit-image-extraction-properties-dark.gif differ diff --git a/docs/assets/images/edit-image-extraction-properties-light.gif b/docs/assets/images/edit-image-extraction-properties-light.gif new file mode 100644 index 00000000..c6f6a126 Binary files /dev/null and b/docs/assets/images/edit-image-extraction-properties-light.gif differ diff --git a/docs/assets/images/edit-text-extraction-properties-dark.gif b/docs/assets/images/edit-text-extraction-properties-dark.gif new file mode 100644 index 00000000..c8c44c64 Binary files /dev/null and b/docs/assets/images/edit-text-extraction-properties-dark.gif differ diff --git a/docs/assets/images/edit-text-extraction-properties-light.gif b/docs/assets/images/edit-text-extraction-properties-light.gif new file mode 100644 index 00000000..af1eab60 Binary files /dev/null and b/docs/assets/images/edit-text-extraction-properties-light.gif differ diff --git a/docs/assets/images/extraction-area.png b/docs/assets/images/extraction-area.png new file mode 100644 index 00000000..d1d1b69a Binary files /dev/null and b/docs/assets/images/extraction-area.png differ diff --git a/docs/assets/images/extraction-aspect-dark.gif b/docs/assets/images/extraction-aspect-dark.gif new file mode 100644 index 00000000..8af9a5c1 Binary files /dev/null and b/docs/assets/images/extraction-aspect-dark.gif differ diff --git a/docs/assets/images/extraction-aspect-light.gif b/docs/assets/images/extraction-aspect-light.gif new file mode 100644 index 00000000..d6e3416c Binary files /dev/null and b/docs/assets/images/extraction-aspect-light.gif differ diff --git a/docs/assets/images/extraction-brightness-dark.gif b/docs/assets/images/extraction-brightness-dark.gif new file mode 100644 index 00000000..5f4d4b44 Binary files /dev/null and b/docs/assets/images/extraction-brightness-dark.gif differ diff --git a/docs/assets/images/extraction-brightness-light.gif b/docs/assets/images/extraction-brightness-light.gif new file mode 100644 index 00000000..7665bbbd Binary files /dev/null and b/docs/assets/images/extraction-brightness-light.gif differ diff --git a/docs/assets/images/extraction-contrast-dark.gif b/docs/assets/images/extraction-contrast-dark.gif new file mode 100644 index 00000000..39e19f40 Binary files /dev/null and b/docs/assets/images/extraction-contrast-dark.gif differ diff --git a/docs/assets/images/extraction-contrast-light.gif b/docs/assets/images/extraction-contrast-light.gif new file mode 100644 index 00000000..442e0e1a Binary files /dev/null and b/docs/assets/images/extraction-contrast-light.gif differ diff --git a/docs/assets/images/extraction-entropy-dark.gif b/docs/assets/images/extraction-entropy-dark.gif new file mode 100644 index 00000000..dc82e74e Binary files /dev/null and b/docs/assets/images/extraction-entropy-dark.gif differ diff --git a/docs/assets/images/extraction-entropy-light.gif b/docs/assets/images/extraction-entropy-light.gif new file mode 100644 index 00000000..42bcb9a3 Binary files /dev/null and b/docs/assets/images/extraction-entropy-light.gif differ diff --git a/docs/assets/images/extraction-sharpness-dark.gif b/docs/assets/images/extraction-sharpness-dark.gif new file mode 100644 index 00000000..d1ce2d30 Binary files /dev/null and b/docs/assets/images/extraction-sharpness-dark.gif differ diff --git a/docs/assets/images/extraction-sharpness-light.gif b/docs/assets/images/extraction-sharpness-light.gif new file mode 100644 index 00000000..32d82c1c Binary files /dev/null and b/docs/assets/images/extraction-sharpness-light.gif differ diff --git a/docs/assets/images/extraction-symmetry-dark.gif b/docs/assets/images/extraction-symmetry-dark.gif new file mode 100644 index 00000000..251803ce Binary files /dev/null and b/docs/assets/images/extraction-symmetry-dark.gif differ diff --git a/docs/assets/images/extraction-symmetry-light.gif b/docs/assets/images/extraction-symmetry-light.gif new file mode 100644 index 00000000..c426bd48 Binary files /dev/null and b/docs/assets/images/extraction-symmetry-light.gif differ diff --git a/docs/assets/images/face-recognition.jpg b/docs/assets/images/face-recognition.jpg new file mode 100644 index 00000000..5f7d8c77 Binary files /dev/null and b/docs/assets/images/face-recognition.jpg differ diff --git a/docs/assets/images/fr11.jpg b/docs/assets/images/fr11.jpg new file mode 100644 index 00000000..111b1826 Binary files /dev/null and b/docs/assets/images/fr11.jpg differ diff --git a/docs/assets/images/gallery-audio-dark.png b/docs/assets/images/gallery-audio-dark.png new file mode 100644 index 00000000..778e2128 Binary files /dev/null and b/docs/assets/images/gallery-audio-dark.png differ diff --git a/docs/assets/images/gallery-audio-light.png b/docs/assets/images/gallery-audio-light.png new file mode 100644 index 00000000..6483feaa Binary files /dev/null and b/docs/assets/images/gallery-audio-light.png differ diff --git a/docs/assets/images/gallery-text-dark.png b/docs/assets/images/gallery-text-dark.png new file mode 100644 index 00000000..ff190393 Binary files /dev/null and b/docs/assets/images/gallery-text-dark.png differ diff --git a/docs/assets/images/gallery-text-light.png b/docs/assets/images/gallery-text-light.png new file mode 100644 index 00000000..f760e4a1 Binary files /dev/null and b/docs/assets/images/gallery-text-light.png differ diff --git a/docs/assets/images/gallery-view-dark.png b/docs/assets/images/gallery-view-dark.png new file mode 100644 index 00000000..b31c583e Binary files /dev/null and b/docs/assets/images/gallery-view-dark.png differ diff --git a/docs/assets/images/gallery-view-light.png b/docs/assets/images/gallery-view-light.png new file mode 100644 index 00000000..98152593 Binary files /dev/null and b/docs/assets/images/gallery-view-light.png differ diff --git a/docs/assets/images/hydrated-image-example-dark.png b/docs/assets/images/hydrated-image-example-dark.png new file mode 100644 index 00000000..802b215c Binary files /dev/null and b/docs/assets/images/hydrated-image-example-dark.png differ diff --git a/docs/assets/images/hydrated-image-example-light.png b/docs/assets/images/hydrated-image-example-light.png new file mode 100644 index 00000000..ca1e708b Binary files /dev/null and b/docs/assets/images/hydrated-image-example-light.png differ diff --git a/docs/assets/images/hydrated-text-example-dark.png b/docs/assets/images/hydrated-text-example-dark.png new file mode 100644 index 00000000..d38b88ed Binary files /dev/null and b/docs/assets/images/hydrated-text-example-dark.png differ diff --git a/docs/assets/images/hydrated-text-example-light.png b/docs/assets/images/hydrated-text-example-light.png new file mode 100644 index 00000000..60d9d2ca Binary files /dev/null and b/docs/assets/images/hydrated-text-example-light.png differ diff --git a/docs/assets/images/kolena-banner.png b/docs/assets/images/kolena-banner.png new file mode 100644 index 00000000..83eae6ec Binary files /dev/null and b/docs/assets/images/kolena-banner.png differ diff --git a/docs/assets/images/librispeech-workflow-example.png b/docs/assets/images/librispeech-workflow-example.png new file mode 100644 index 00000000..3382adc3 Binary files /dev/null and b/docs/assets/images/librispeech-workflow-example.png differ diff --git a/docs/assets/images/logo-white.svg b/docs/assets/images/logo-white.svg new file mode 100644 index 00000000..4a7eebe3 --- /dev/null +++ b/docs/assets/images/logo-white.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/assets/images/metric-groups-leaderboard-dark.gif b/docs/assets/images/metric-groups-leaderboard-dark.gif new file mode 100644 index 00000000..698c758a Binary files /dev/null and b/docs/assets/images/metric-groups-leaderboard-dark.gif differ diff --git a/docs/assets/images/metric-groups-leaderboard-light.gif b/docs/assets/images/metric-groups-leaderboard-light.gif new file mode 100644 index 00000000..88824cfd Binary files /dev/null and b/docs/assets/images/metric-groups-leaderboard-light.gif differ diff --git a/docs/assets/images/metrics-ap-ir-example-dark.svg b/docs/assets/images/metrics-ap-ir-example-dark.svg new file mode 100644 index 00000000..43a7de3f --- /dev/null +++ b/docs/assets/images/metrics-ap-ir-example-dark.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/images/metrics-ap-ir-example-light.svg b/docs/assets/images/metrics-ap-ir-example-light.svg new file mode 100644 index 00000000..d9adaaed --- /dev/null +++ b/docs/assets/images/metrics-ap-ir-example-light.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/images/metrics-ap-limitation2-dark.svg b/docs/assets/images/metrics-ap-limitation2-dark.svg new file mode 100644 index 00000000..b5849525 --- /dev/null +++ b/docs/assets/images/metrics-ap-limitation2-dark.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/images/metrics-ap-limitation2-light.svg b/docs/assets/images/metrics-ap-limitation2-light.svg new file mode 100644 index 00000000..6681da8f --- /dev/null +++ b/docs/assets/images/metrics-ap-limitation2-light.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/images/metrics-ap-limitation5-dark.svg b/docs/assets/images/metrics-ap-limitation5-dark.svg new file mode 100644 index 00000000..ff9e880f --- /dev/null +++ b/docs/assets/images/metrics-ap-limitation5-dark.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/images/metrics-ap-limitation5-light.svg b/docs/assets/images/metrics-ap-limitation5-light.svg new file mode 100644 index 00000000..96737803 --- /dev/null +++ b/docs/assets/images/metrics-ap-limitation5-light.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/images/metrics-ap-od-example-dark.svg b/docs/assets/images/metrics-ap-od-example-dark.svg new file mode 100644 index 00000000..95c7f308 --- /dev/null +++ b/docs/assets/images/metrics-ap-od-example-dark.svg @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-ap-od-example-light.svg b/docs/assets/images/metrics-ap-od-example-light.svg new file mode 100644 index 00000000..8e7656b7 --- /dev/null +++ b/docs/assets/images/metrics-ap-od-example-light.svg @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-ap-od-pr-11-dark.svg b/docs/assets/images/metrics-ap-od-pr-11-dark.svg new file mode 100644 index 00000000..23ffccba --- /dev/null +++ b/docs/assets/images/metrics-ap-od-pr-11-dark.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/images/metrics-ap-od-pr-11-light.svg b/docs/assets/images/metrics-ap-od-pr-11-light.svg new file mode 100644 index 00000000..34d94980 --- /dev/null +++ b/docs/assets/images/metrics-ap-od-pr-11-light.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/images/metrics-ap-od-pr-dark.svg b/docs/assets/images/metrics-ap-od-pr-dark.svg new file mode 100644 index 00000000..876f5f72 --- /dev/null +++ b/docs/assets/images/metrics-ap-od-pr-dark.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/images/metrics-ap-od-pr-interpolation-dark.svg b/docs/assets/images/metrics-ap-od-pr-interpolation-dark.svg new file mode 100644 index 00000000..20e75ba2 --- /dev/null +++ b/docs/assets/images/metrics-ap-od-pr-interpolation-dark.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/images/metrics-ap-od-pr-interpolation-light.svg b/docs/assets/images/metrics-ap-od-pr-interpolation-light.svg new file mode 100644 index 00000000..69fabedd --- /dev/null +++ b/docs/assets/images/metrics-ap-od-pr-interpolation-light.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/images/metrics-ap-od-pr-light.svg b/docs/assets/images/metrics-ap-od-pr-light.svg new file mode 100644 index 00000000..946353b6 --- /dev/null +++ b/docs/assets/images/metrics-ap-od-pr-light.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/images/metrics-bbox-legend-dark.svg b/docs/assets/images/metrics-bbox-legend-dark.svg new file mode 100644 index 00000000..30f2a1af --- /dev/null +++ b/docs/assets/images/metrics-bbox-legend-dark.svg @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-bbox-legend-gt-dark.svg b/docs/assets/images/metrics-bbox-legend-gt-dark.svg new file mode 100644 index 00000000..ad3e4be5 --- /dev/null +++ b/docs/assets/images/metrics-bbox-legend-gt-dark.svg @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-bbox-legend-gt-light.svg b/docs/assets/images/metrics-bbox-legend-gt-light.svg new file mode 100644 index 00000000..17f386e9 --- /dev/null +++ b/docs/assets/images/metrics-bbox-legend-gt-light.svg @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-bbox-legend-light.svg b/docs/assets/images/metrics-bbox-legend-light.svg new file mode 100644 index 00000000..9fa62dae --- /dev/null +++ b/docs/assets/images/metrics-bbox-legend-light.svg @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-bbox-legend-unmatched-dark.svg b/docs/assets/images/metrics-bbox-legend-unmatched-dark.svg new file mode 100644 index 00000000..5040dbbc --- /dev/null +++ b/docs/assets/images/metrics-bbox-legend-unmatched-dark.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/images/metrics-bbox-legend-unmatched-light.svg b/docs/assets/images/metrics-bbox-legend-unmatched-light.svg new file mode 100644 index 00000000..abb326d0 --- /dev/null +++ b/docs/assets/images/metrics-bbox-legend-unmatched-light.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/images/metrics-bert-computation-dark.svg b/docs/assets/images/metrics-bert-computation-dark.svg new file mode 100644 index 00000000..26bd9684 --- /dev/null +++ b/docs/assets/images/metrics-bert-computation-dark.svg @@ -0,0 +1,2907 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-bert-computation-light.svg b/docs/assets/images/metrics-bert-computation-light.svg new file mode 100644 index 00000000..65eb4579 --- /dev/null +++ b/docs/assets/images/metrics-bert-computation-light.svg @@ -0,0 +1,2848 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-bert-vector-space-dark.svg b/docs/assets/images/metrics-bert-vector-space-dark.svg new file mode 100644 index 00000000..54fbbe31 --- /dev/null +++ b/docs/assets/images/metrics-bert-vector-space-dark.svg @@ -0,0 +1,336 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-bert-vector-space-light.svg b/docs/assets/images/metrics-bert-vector-space-light.svg new file mode 100644 index 00000000..c0c3af19 --- /dev/null +++ b/docs/assets/images/metrics-bert-vector-space-light.svg @@ -0,0 +1,626 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-confusion-matrix-dark.png b/docs/assets/images/metrics-confusion-matrix-dark.png new file mode 100644 index 00000000..5bc0aef7 Binary files /dev/null and b/docs/assets/images/metrics-confusion-matrix-dark.png differ diff --git a/docs/assets/images/metrics-confusion-matrix-light.png b/docs/assets/images/metrics-confusion-matrix-light.png new file mode 100644 index 00000000..a9bedafb Binary files /dev/null and b/docs/assets/images/metrics-confusion-matrix-light.png differ diff --git a/docs/assets/images/metrics-confusion-matrix-normalized-dark.png b/docs/assets/images/metrics-confusion-matrix-normalized-dark.png new file mode 100644 index 00000000..3f6e73c4 Binary files /dev/null and b/docs/assets/images/metrics-confusion-matrix-normalized-dark.png differ diff --git a/docs/assets/images/metrics-confusion-matrix-normalized-light.png b/docs/assets/images/metrics-confusion-matrix-normalized-light.png new file mode 100644 index 00000000..83f42e24 Binary files /dev/null and b/docs/assets/images/metrics-confusion-matrix-normalized-light.png differ diff --git a/docs/assets/images/metrics-confusion-matrix-steps.gif b/docs/assets/images/metrics-confusion-matrix-steps.gif new file mode 100644 index 00000000..d83b3719 Binary files /dev/null and b/docs/assets/images/metrics-confusion-matrix-steps.gif differ diff --git a/docs/assets/images/metrics-der-example1.png b/docs/assets/images/metrics-der-example1.png new file mode 100644 index 00000000..93107124 Binary files /dev/null and b/docs/assets/images/metrics-der-example1.png differ diff --git a/docs/assets/images/metrics-der-example2.png b/docs/assets/images/metrics-der-example2.png new file mode 100644 index 00000000..68291416 Binary files /dev/null and b/docs/assets/images/metrics-der-example2.png differ diff --git a/docs/assets/images/metrics-fpr-dark.svg b/docs/assets/images/metrics-fpr-dark.svg new file mode 100644 index 00000000..817e2192 --- /dev/null +++ b/docs/assets/images/metrics-fpr-dark.svg @@ -0,0 +1,250 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-fpr-light.svg b/docs/assets/images/metrics-fpr-light.svg new file mode 100644 index 00000000..34e32e22 --- /dev/null +++ b/docs/assets/images/metrics-fpr-light.svg @@ -0,0 +1,247 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-iou-2dbbox-dark.svg b/docs/assets/images/metrics-iou-2dbbox-dark.svg new file mode 100644 index 00000000..f42243ae --- /dev/null +++ b/docs/assets/images/metrics-iou-2dbbox-dark.svg @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-iou-2dbbox-light.svg b/docs/assets/images/metrics-iou-2dbbox-light.svg new file mode 100644 index 00000000..d99e3478 --- /dev/null +++ b/docs/assets/images/metrics-iou-2dbbox-light.svg @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-iou-example1-dark.svg b/docs/assets/images/metrics-iou-example1-dark.svg new file mode 100644 index 00000000..8903dde3 --- /dev/null +++ b/docs/assets/images/metrics-iou-example1-dark.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-iou-example1-light.svg b/docs/assets/images/metrics-iou-example1-light.svg new file mode 100644 index 00000000..e1989a2a --- /dev/null +++ b/docs/assets/images/metrics-iou-example1-light.svg @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-iou-example2-dark.svg b/docs/assets/images/metrics-iou-example2-dark.svg new file mode 100644 index 00000000..e8644537 --- /dev/null +++ b/docs/assets/images/metrics-iou-example2-dark.svg @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-iou-example2-light.svg b/docs/assets/images/metrics-iou-example2-light.svg new file mode 100644 index 00000000..8461af40 --- /dev/null +++ b/docs/assets/images/metrics-iou-example2-light.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-iou-example3-dark.svg b/docs/assets/images/metrics-iou-example3-dark.svg new file mode 100644 index 00000000..2c7008b6 --- /dev/null +++ b/docs/assets/images/metrics-iou-example3-dark.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-iou-example3-light.svg b/docs/assets/images/metrics-iou-example3-light.svg new file mode 100644 index 00000000..914fcdc8 --- /dev/null +++ b/docs/assets/images/metrics-iou-example3-light.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-iou-seg-mask-results.png b/docs/assets/images/metrics-iou-seg-mask-results.png new file mode 100644 index 00000000..5479ad10 Binary files /dev/null and b/docs/assets/images/metrics-iou-seg-mask-results.png differ diff --git a/docs/assets/images/metrics-iou-seg-mask.png b/docs/assets/images/metrics-iou-seg-mask.png new file mode 100644 index 00000000..077941b3 Binary files /dev/null and b/docs/assets/images/metrics-iou-seg-mask.png differ diff --git a/docs/assets/images/metrics-matcher-example1-dark.svg b/docs/assets/images/metrics-matcher-example1-dark.svg new file mode 100644 index 00000000..d4004dad --- /dev/null +++ b/docs/assets/images/metrics-matcher-example1-dark.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-matcher-example1-light.svg b/docs/assets/images/metrics-matcher-example1-light.svg new file mode 100644 index 00000000..206e527e --- /dev/null +++ b/docs/assets/images/metrics-matcher-example1-light.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-matcher-example2-dark.svg b/docs/assets/images/metrics-matcher-example2-dark.svg new file mode 100644 index 00000000..4b3e1455 --- /dev/null +++ b/docs/assets/images/metrics-matcher-example2-dark.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-matcher-example2-light.svg b/docs/assets/images/metrics-matcher-example2-light.svg new file mode 100644 index 00000000..b5ae84ee --- /dev/null +++ b/docs/assets/images/metrics-matcher-example2-light.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-matcher-example3-dark.svg b/docs/assets/images/metrics-matcher-example3-dark.svg new file mode 100644 index 00000000..28e51ffb --- /dev/null +++ b/docs/assets/images/metrics-matcher-example3-dark.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-matcher-example3-light.svg b/docs/assets/images/metrics-matcher-example3-light.svg new file mode 100644 index 00000000..2a38d994 --- /dev/null +++ b/docs/assets/images/metrics-matcher-example3-light.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-matcher-example4-dark.svg b/docs/assets/images/metrics-matcher-example4-dark.svg new file mode 100644 index 00000000..5a9c7d0f --- /dev/null +++ b/docs/assets/images/metrics-matcher-example4-dark.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-matcher-example4-light.svg b/docs/assets/images/metrics-matcher-example4-light.svg new file mode 100644 index 00000000..79863c39 --- /dev/null +++ b/docs/assets/images/metrics-matcher-example4-light.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-matcher-greedy-matching-dark.svg b/docs/assets/images/metrics-matcher-greedy-matching-dark.svg new file mode 100644 index 00000000..722d3033 --- /dev/null +++ b/docs/assets/images/metrics-matcher-greedy-matching-dark.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-matcher-greedy-matching-light.svg b/docs/assets/images/metrics-matcher-greedy-matching-light.svg new file mode 100644 index 00000000..f195d0c1 --- /dev/null +++ b/docs/assets/images/metrics-matcher-greedy-matching-light.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-matcher-gt-order-dark.svg b/docs/assets/images/metrics-matcher-gt-order-dark.svg new file mode 100644 index 00000000..9cd6fa19 --- /dev/null +++ b/docs/assets/images/metrics-matcher-gt-order-dark.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-matcher-gt-order-light.svg b/docs/assets/images/metrics-matcher-gt-order-light.svg new file mode 100644 index 00000000..af5d1196 --- /dev/null +++ b/docs/assets/images/metrics-matcher-gt-order-light.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-matcher-oid-group-of.jpg b/docs/assets/images/metrics-matcher-oid-group-of.jpg new file mode 100644 index 00000000..516099a3 Binary files /dev/null and b/docs/assets/images/metrics-matcher-oid-group-of.jpg differ diff --git a/docs/assets/images/metrics-matcher-oid-non-exhaustive.jpg b/docs/assets/images/metrics-matcher-oid-non-exhaustive.jpg new file mode 100644 index 00000000..04108fdb Binary files /dev/null and b/docs/assets/images/metrics-matcher-oid-non-exhaustive.jpg differ diff --git a/docs/assets/images/metrics-prcurve-dark.png b/docs/assets/images/metrics-prcurve-dark.png new file mode 100644 index 00000000..4aa229f5 Binary files /dev/null and b/docs/assets/images/metrics-prcurve-dark.png differ diff --git a/docs/assets/images/metrics-prcurve-example-dark.png b/docs/assets/images/metrics-prcurve-example-dark.png new file mode 100644 index 00000000..6dfd246c Binary files /dev/null and b/docs/assets/images/metrics-prcurve-example-dark.png differ diff --git a/docs/assets/images/metrics-prcurve-example-light.png b/docs/assets/images/metrics-prcurve-example-light.png new file mode 100644 index 00000000..cfd2dc1f Binary files /dev/null and b/docs/assets/images/metrics-prcurve-example-light.png differ diff --git a/docs/assets/images/metrics-prcurve-example-multiclass-dark.png b/docs/assets/images/metrics-prcurve-example-multiclass-dark.png new file mode 100644 index 00000000..33a82758 Binary files /dev/null and b/docs/assets/images/metrics-prcurve-example-multiclass-dark.png differ diff --git a/docs/assets/images/metrics-prcurve-example-multiclass-light.png b/docs/assets/images/metrics-prcurve-example-multiclass-light.png new file mode 100644 index 00000000..19519724 Binary files /dev/null and b/docs/assets/images/metrics-prcurve-example-multiclass-light.png differ diff --git a/docs/assets/images/metrics-prcurve-light.png b/docs/assets/images/metrics-prcurve-light.png new file mode 100644 index 00000000..df2b0702 Binary files /dev/null and b/docs/assets/images/metrics-prcurve-light.png differ diff --git a/docs/assets/images/metrics-precision-dark.svg b/docs/assets/images/metrics-precision-dark.svg new file mode 100644 index 00000000..8142777b --- /dev/null +++ b/docs/assets/images/metrics-precision-dark.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-precision-light.svg b/docs/assets/images/metrics-precision-light.svg new file mode 100644 index 00000000..0d993abd --- /dev/null +++ b/docs/assets/images/metrics-precision-light.svg @@ -0,0 +1,285 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-recall-dark.svg b/docs/assets/images/metrics-recall-dark.svg new file mode 100644 index 00000000..76460b93 --- /dev/null +++ b/docs/assets/images/metrics-recall-dark.svg @@ -0,0 +1,262 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-recall-light.svg b/docs/assets/images/metrics-recall-light.svg new file mode 100644 index 00000000..40dabfee --- /dev/null +++ b/docs/assets/images/metrics-recall-light.svg @@ -0,0 +1,259 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-roccurve-example-dark.png b/docs/assets/images/metrics-roccurve-example-dark.png new file mode 100644 index 00000000..9ccc4918 Binary files /dev/null and b/docs/assets/images/metrics-roccurve-example-dark.png differ diff --git a/docs/assets/images/metrics-roccurve-example-light.png b/docs/assets/images/metrics-roccurve-example-light.png new file mode 100644 index 00000000..169d37e5 Binary files /dev/null and b/docs/assets/images/metrics-roccurve-example-light.png differ diff --git a/docs/assets/images/metrics-roccurve-example-multiclass-dark.png b/docs/assets/images/metrics-roccurve-example-multiclass-dark.png new file mode 100644 index 00000000..ea475367 Binary files /dev/null and b/docs/assets/images/metrics-roccurve-example-multiclass-dark.png differ diff --git a/docs/assets/images/metrics-roccurve-example-multiclass-light.png b/docs/assets/images/metrics-roccurve-example-multiclass-light.png new file mode 100644 index 00000000..6e4eb171 Binary files /dev/null and b/docs/assets/images/metrics-roccurve-example-multiclass-light.png differ diff --git a/docs/assets/images/metrics-specificity-dark.svg b/docs/assets/images/metrics-specificity-dark.svg new file mode 100644 index 00000000..4568339c --- /dev/null +++ b/docs/assets/images/metrics-specificity-dark.svg @@ -0,0 +1,290 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/metrics-specificity-light.svg b/docs/assets/images/metrics-specificity-light.svg new file mode 100644 index 00000000..5ee1833c --- /dev/null +++ b/docs/assets/images/metrics-specificity-light.svg @@ -0,0 +1,287 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/navigate-to-image-extraction-config-dark.gif b/docs/assets/images/navigate-to-image-extraction-config-dark.gif new file mode 100644 index 00000000..9490d9af Binary files /dev/null and b/docs/assets/images/navigate-to-image-extraction-config-dark.gif differ diff --git a/docs/assets/images/navigate-to-image-extraction-config-light.gif b/docs/assets/images/navigate-to-image-extraction-config-light.gif new file mode 100644 index 00000000..499069f7 Binary files /dev/null and b/docs/assets/images/navigate-to-image-extraction-config-light.gif differ diff --git a/docs/assets/images/navigate-to-text-extraction-config-dark.gif b/docs/assets/images/navigate-to-text-extraction-config-dark.gif new file mode 100644 index 00000000..eab9a777 Binary files /dev/null and b/docs/assets/images/navigate-to-text-extraction-config-dark.gif differ diff --git a/docs/assets/images/navigate-to-text-extraction-config-light.gif b/docs/assets/images/navigate-to-text-extraction-config-light.gif new file mode 100644 index 00000000..be47629e Binary files /dev/null and b/docs/assets/images/navigate-to-text-extraction-config-light.gif differ diff --git a/docs/assets/images/nesting-test-case-metrics-dark.jpg b/docs/assets/images/nesting-test-case-metrics-dark.jpg new file mode 100644 index 00000000..039f369c Binary files /dev/null and b/docs/assets/images/nesting-test-case-metrics-dark.jpg differ diff --git a/docs/assets/images/nesting-test-case-metrics-light.jpg b/docs/assets/images/nesting-test-case-metrics-light.jpg new file mode 100644 index 00000000..6130753a Binary files /dev/null and b/docs/assets/images/nesting-test-case-metrics-light.jpg differ diff --git a/docs/assets/images/numeric-aggregation-optins.png b/docs/assets/images/numeric-aggregation-optins.png new file mode 100644 index 00000000..a2985556 Binary files /dev/null and b/docs/assets/images/numeric-aggregation-optins.png differ diff --git a/docs/assets/images/prompt-extraction-access-dark.gif b/docs/assets/images/prompt-extraction-access-dark.gif new file mode 100644 index 00000000..fd2e5033 Binary files /dev/null and b/docs/assets/images/prompt-extraction-access-dark.gif differ diff --git a/docs/assets/images/prompt-extraction-access-light.gif b/docs/assets/images/prompt-extraction-access-light.gif new file mode 100644 index 00000000..ed684bd0 Binary files /dev/null and b/docs/assets/images/prompt-extraction-access-light.gif differ diff --git a/docs/assets/images/quality_standard_diagram_dark.jpeg b/docs/assets/images/quality_standard_diagram_dark.jpeg new file mode 100644 index 00000000..08ce081e Binary files /dev/null and b/docs/assets/images/quality_standard_diagram_dark.jpeg differ diff --git a/docs/assets/images/quality_standard_diagram_light.jpeg b/docs/assets/images/quality_standard_diagram_light.jpeg new file mode 100644 index 00000000..5f202a21 Binary files /dev/null and b/docs/assets/images/quality_standard_diagram_light.jpeg differ diff --git a/docs/assets/images/quickstart-compare-models-light.gif b/docs/assets/images/quickstart-compare-models-light.gif new file mode 100644 index 00000000..ea91ac1f Binary files /dev/null and b/docs/assets/images/quickstart-compare-models-light.gif differ diff --git a/docs/assets/images/quickstart-compare-models.gif b/docs/assets/images/quickstart-compare-models.gif new file mode 100644 index 00000000..3fc02e5c Binary files /dev/null and b/docs/assets/images/quickstart-compare-models.gif differ diff --git a/docs/assets/images/quickstart-configure-metrics-light.gif b/docs/assets/images/quickstart-configure-metrics-light.gif new file mode 100644 index 00000000..9bcb1255 Binary files /dev/null and b/docs/assets/images/quickstart-configure-metrics-light.gif differ diff --git a/docs/assets/images/quickstart-configure-metrics.gif b/docs/assets/images/quickstart-configure-metrics.gif new file mode 100644 index 00000000..4b7971a0 Binary files /dev/null and b/docs/assets/images/quickstart-configure-metrics.gif differ diff --git a/docs/assets/images/quickstart-create-test-cases.gif b/docs/assets/images/quickstart-create-test-cases.gif new file mode 100644 index 00000000..40578bcc Binary files /dev/null and b/docs/assets/images/quickstart-create-test-cases.gif differ diff --git a/docs/assets/images/quickstart-define-metrics.gif b/docs/assets/images/quickstart-define-metrics.gif new file mode 100644 index 00000000..543c5606 Binary files /dev/null and b/docs/assets/images/quickstart-define-metrics.gif differ diff --git a/docs/assets/images/quickstart-distribution-light.png b/docs/assets/images/quickstart-distribution-light.png new file mode 100644 index 00000000..48e3d957 Binary files /dev/null and b/docs/assets/images/quickstart-distribution-light.png differ diff --git a/docs/assets/images/quickstart-distribution.jpg b/docs/assets/images/quickstart-distribution.jpg new file mode 100644 index 00000000..9a4b5873 Binary files /dev/null and b/docs/assets/images/quickstart-distribution.jpg differ diff --git a/docs/assets/images/quickstart-otf-plotting-light.gif b/docs/assets/images/quickstart-otf-plotting-light.gif new file mode 100644 index 00000000..1cdc6528 Binary files /dev/null and b/docs/assets/images/quickstart-otf-plotting-light.gif differ diff --git a/docs/assets/images/quickstart-otf-plotting.gif b/docs/assets/images/quickstart-otf-plotting.gif new file mode 100644 index 00000000..3da0ca9b Binary files /dev/null and b/docs/assets/images/quickstart-otf-plotting.gif differ diff --git a/docs/assets/images/quickstart-upload-dataset-workflow-dark.gif b/docs/assets/images/quickstart-upload-dataset-workflow-dark.gif new file mode 100644 index 00000000..9ed62111 Binary files /dev/null and b/docs/assets/images/quickstart-upload-dataset-workflow-dark.gif differ diff --git a/docs/assets/images/quickstart-upload-dataset-workflow-light.gif b/docs/assets/images/quickstart-upload-dataset-workflow-light.gif new file mode 100644 index 00000000..02929c08 Binary files /dev/null and b/docs/assets/images/quickstart-upload-dataset-workflow-light.gif differ diff --git a/docs/assets/images/quickstart-upload-dataset-workflow.gif b/docs/assets/images/quickstart-upload-dataset-workflow.gif new file mode 100644 index 00000000..045a057d Binary files /dev/null and b/docs/assets/images/quickstart-upload-dataset-workflow.gif differ diff --git a/docs/assets/images/quickstart-upload-results-workflow-light.gif b/docs/assets/images/quickstart-upload-results-workflow-light.gif new file mode 100644 index 00000000..dc2c0cbe Binary files /dev/null and b/docs/assets/images/quickstart-upload-results-workflow-light.gif differ diff --git a/docs/assets/images/quickstart-upload-results-workflow.gif b/docs/assets/images/quickstart-upload-results-workflow.gif new file mode 100644 index 00000000..0c77ca84 Binary files /dev/null and b/docs/assets/images/quickstart-upload-results-workflow.gif differ diff --git a/docs/assets/images/select-image-extraction-properties-dark.gif b/docs/assets/images/select-image-extraction-properties-dark.gif new file mode 100644 index 00000000..7817147f Binary files /dev/null and b/docs/assets/images/select-image-extraction-properties-dark.gif differ diff --git a/docs/assets/images/select-image-extraction-properties-light.gif b/docs/assets/images/select-image-extraction-properties-light.gif new file mode 100644 index 00000000..56885a4a Binary files /dev/null and b/docs/assets/images/select-image-extraction-properties-light.gif differ diff --git a/docs/assets/images/select-text-extraction-properties-dark.gif b/docs/assets/images/select-text-extraction-properties-dark.gif new file mode 100644 index 00000000..707ac499 Binary files /dev/null and b/docs/assets/images/select-text-extraction-properties-dark.gif differ diff --git a/docs/assets/images/select-text-extraction-properties-light.gif b/docs/assets/images/select-text-extraction-properties-light.gif new file mode 100644 index 00000000..534c7d41 Binary files /dev/null and b/docs/assets/images/select-text-extraction-properties-light.gif differ diff --git a/docs/assets/images/speaker-diarization-example.png b/docs/assets/images/speaker-diarization-example.png new file mode 100644 index 00000000..09334eeb Binary files /dev/null and b/docs/assets/images/speaker-diarization-example.png differ diff --git a/docs/assets/images/statistical-significance-demo-dark.gif b/docs/assets/images/statistical-significance-demo-dark.gif new file mode 100644 index 00000000..c55fd3f5 Binary files /dev/null and b/docs/assets/images/statistical-significance-demo-dark.gif differ diff --git a/docs/assets/images/statistical-significance-demo-light.gif b/docs/assets/images/statistical-significance-demo-light.gif new file mode 100644 index 00000000..a542795f Binary files /dev/null and b/docs/assets/images/statistical-significance-demo-light.gif differ diff --git a/docs/assets/images/tabular-audio-dark.png b/docs/assets/images/tabular-audio-dark.png new file mode 100644 index 00000000..bb1832a0 Binary files /dev/null and b/docs/assets/images/tabular-audio-dark.png differ diff --git a/docs/assets/images/tabular-audio-light.png b/docs/assets/images/tabular-audio-light.png new file mode 100644 index 00000000..2eb93c7c Binary files /dev/null and b/docs/assets/images/tabular-audio-light.png differ diff --git a/docs/assets/images/tabular-text-dark.png b/docs/assets/images/tabular-text-dark.png new file mode 100644 index 00000000..fdd871ea Binary files /dev/null and b/docs/assets/images/tabular-text-dark.png differ diff --git a/docs/assets/images/tabular-text-light.png b/docs/assets/images/tabular-text-light.png new file mode 100644 index 00000000..51c6ecbf Binary files /dev/null and b/docs/assets/images/tabular-text-light.png differ diff --git a/docs/assets/images/task-metrics-binary-classification-light.gif b/docs/assets/images/task-metrics-binary-classification-light.gif new file mode 100644 index 00000000..2d25734f Binary files /dev/null and b/docs/assets/images/task-metrics-binary-classification-light.gif differ diff --git a/docs/assets/images/task-metrics-binary-classification.gif b/docs/assets/images/task-metrics-binary-classification.gif new file mode 100644 index 00000000..149a170b Binary files /dev/null and b/docs/assets/images/task-metrics-binary-classification.gif differ diff --git a/docs/assets/images/task-metrics-multiclass-classification-light.gif b/docs/assets/images/task-metrics-multiclass-classification-light.gif new file mode 100644 index 00000000..acb290bf Binary files /dev/null and b/docs/assets/images/task-metrics-multiclass-classification-light.gif differ diff --git a/docs/assets/images/task-metrics-multiclass-classification.gif b/docs/assets/images/task-metrics-multiclass-classification.gif new file mode 100644 index 00000000..1e70fb38 Binary files /dev/null and b/docs/assets/images/task-metrics-multiclass-classification.gif differ diff --git a/docs/assets/images/task-metrics-object-detection-light.gif b/docs/assets/images/task-metrics-object-detection-light.gif new file mode 100644 index 00000000..f2ba3a24 Binary files /dev/null and b/docs/assets/images/task-metrics-object-detection-light.gif differ diff --git a/docs/assets/images/task-metrics-object-detection.gif b/docs/assets/images/task-metrics-object-detection.gif new file mode 100644 index 00000000..66bbdb74 Binary files /dev/null and b/docs/assets/images/task-metrics-object-detection.gif differ diff --git a/docs/assets/images/task-metrics-regression-light.gif b/docs/assets/images/task-metrics-regression-light.gif new file mode 100644 index 00000000..6ac077de Binary files /dev/null and b/docs/assets/images/task-metrics-regression-light.gif differ diff --git a/docs/assets/images/task-metrics-regression.gif b/docs/assets/images/task-metrics-regression.gif new file mode 100644 index 00000000..4be34f85 Binary files /dev/null and b/docs/assets/images/task-metrics-regression.gif differ diff --git a/docs/assets/images/task-od-debugger-dark.png b/docs/assets/images/task-od-debugger-dark.png new file mode 100644 index 00000000..75052260 Binary files /dev/null and b/docs/assets/images/task-od-debugger-dark.png differ diff --git a/docs/assets/images/task-od-debugger-light.png b/docs/assets/images/task-od-debugger-light.png new file mode 100644 index 00000000..46214034 Binary files /dev/null and b/docs/assets/images/task-od-debugger-light.png differ diff --git a/docs/assets/images/task-od-evaluation-config-dark.gif b/docs/assets/images/task-od-evaluation-config-dark.gif new file mode 100644 index 00000000..2aac0efd Binary files /dev/null and b/docs/assets/images/task-od-evaluation-config-dark.gif differ diff --git a/docs/assets/images/task-od-evaluation-config-light.gif b/docs/assets/images/task-od-evaluation-config-light.gif new file mode 100644 index 00000000..1780cc2c Binary files /dev/null and b/docs/assets/images/task-od-evaluation-config-light.gif differ diff --git a/docs/assets/images/task-od-make-dataset-dark.gif b/docs/assets/images/task-od-make-dataset-dark.gif new file mode 100644 index 00000000..5237befa Binary files /dev/null and b/docs/assets/images/task-od-make-dataset-dark.gif differ diff --git a/docs/assets/images/task-od-make-dataset-light.gif b/docs/assets/images/task-od-make-dataset-light.gif new file mode 100644 index 00000000..40fa8d22 Binary files /dev/null and b/docs/assets/images/task-od-make-dataset-light.gif differ diff --git a/docs/assets/images/task-od-model-config-dark.png b/docs/assets/images/task-od-model-config-dark.png new file mode 100644 index 00000000..1787464c Binary files /dev/null and b/docs/assets/images/task-od-model-config-dark.png differ diff --git a/docs/assets/images/task-od-model-config-light.png b/docs/assets/images/task-od-model-config-light.png new file mode 100644 index 00000000..dfbbccfe Binary files /dev/null and b/docs/assets/images/task-od-model-config-light.png differ diff --git a/docs/assets/images/task-od-multiclass.png b/docs/assets/images/task-od-multiclass.png new file mode 100644 index 00000000..5c73573e Binary files /dev/null and b/docs/assets/images/task-od-multiclass.png differ diff --git a/docs/assets/images/task-od-prcurve-dark.png b/docs/assets/images/task-od-prcurve-dark.png new file mode 100644 index 00000000..a2d9263e Binary files /dev/null and b/docs/assets/images/task-od-prcurve-dark.png differ diff --git a/docs/assets/images/task-od-prcurve-light.png b/docs/assets/images/task-od-prcurve-light.png new file mode 100644 index 00000000..8d69cf88 Binary files /dev/null and b/docs/assets/images/task-od-prcurve-light.png differ diff --git a/docs/assets/images/task-od-qs-dark.gif b/docs/assets/images/task-od-qs-dark.gif new file mode 100644 index 00000000..9bbd18e6 Binary files /dev/null and b/docs/assets/images/task-od-qs-dark.gif differ diff --git a/docs/assets/images/task-od-qs-dark.png b/docs/assets/images/task-od-qs-dark.png new file mode 100644 index 00000000..8ecb66af Binary files /dev/null and b/docs/assets/images/task-od-qs-dark.png differ diff --git a/docs/assets/images/task-od-qs-light.gif b/docs/assets/images/task-od-qs-light.gif new file mode 100644 index 00000000..b67fdd09 Binary files /dev/null and b/docs/assets/images/task-od-qs-light.gif differ diff --git a/docs/assets/images/task-od-qs-light.png b/docs/assets/images/task-od-qs-light.png new file mode 100644 index 00000000..3de544ff Binary files /dev/null and b/docs/assets/images/task-od-qs-light.png differ diff --git a/docs/assets/images/task-od-upload-results-dark.gif b/docs/assets/images/task-od-upload-results-dark.gif new file mode 100644 index 00000000..f47036ec Binary files /dev/null and b/docs/assets/images/task-od-upload-results-dark.gif differ diff --git a/docs/assets/images/task-od-upload-results-light.gif b/docs/assets/images/task-od-upload-results-light.gif new file mode 100644 index 00000000..0c7c27c9 Binary files /dev/null and b/docs/assets/images/task-od-upload-results-light.gif differ diff --git a/docs/assets/images/test-case-diff-dark.png b/docs/assets/images/test-case-diff-dark.png new file mode 100644 index 00000000..d556ec55 Binary files /dev/null and b/docs/assets/images/test-case-diff-dark.png differ diff --git a/docs/assets/images/test-case-diff-light.png b/docs/assets/images/test-case-diff-light.png new file mode 100644 index 00000000..d66bbd06 Binary files /dev/null and b/docs/assets/images/test-case-diff-light.png differ diff --git a/docs/assets/images/thresholded-metrics-dark.gif b/docs/assets/images/thresholded-metrics-dark.gif new file mode 100644 index 00000000..a2cabe81 Binary files /dev/null and b/docs/assets/images/thresholded-metrics-dark.gif differ diff --git a/docs/assets/images/thresholded-metrics-light.gif b/docs/assets/images/thresholded-metrics-light.gif new file mode 100644 index 00000000..f5f1a2d2 Binary files /dev/null and b/docs/assets/images/thresholded-metrics-light.gif differ diff --git a/docs/assets/images/thresholded-plots-dark.gif b/docs/assets/images/thresholded-plots-dark.gif new file mode 100644 index 00000000..a4ed43ad Binary files /dev/null and b/docs/assets/images/thresholded-plots-dark.gif differ diff --git a/docs/assets/images/thresholded-plots-light.gif b/docs/assets/images/thresholded-plots-light.gif new file mode 100644 index 00000000..9b394116 Binary files /dev/null and b/docs/assets/images/thresholded-plots-light.gif differ diff --git a/docs/assets/images/upload-embeddings-enable.gif b/docs/assets/images/upload-embeddings-enable.gif new file mode 100644 index 00000000..cd4be828 Binary files /dev/null and b/docs/assets/images/upload-embeddings-enable.gif differ diff --git a/docs/assets/images/use-case-crossing-pedestrian.png b/docs/assets/images/use-case-crossing-pedestrian.png new file mode 100644 index 00000000..bb8a8289 Binary files /dev/null and b/docs/assets/images/use-case-crossing-pedestrian.png differ diff --git a/docs/assets/images/use-case-instance-segmentation.png b/docs/assets/images/use-case-instance-segmentation.png new file mode 100644 index 00000000..be4f025e Binary files /dev/null and b/docs/assets/images/use-case-instance-segmentation.png differ diff --git a/docs/assets/images/wordmark-violet.svg b/docs/assets/images/wordmark-violet.svg new file mode 100644 index 00000000..c6e6c3d7 --- /dev/null +++ b/docs/assets/images/wordmark-violet.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/images/wordmark-white.svg b/docs/assets/images/wordmark-white.svg new file mode 100644 index 00000000..bbf3a893 --- /dev/null +++ b/docs/assets/images/wordmark-white.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + diff --git a/docs/assets/javascript/mathjax.js b/docs/assets/javascript/mathjax.js new file mode 100644 index 00000000..9c507b37 --- /dev/null +++ b/docs/assets/javascript/mathjax.js @@ -0,0 +1,17 @@ +window.MathJax = { + tex: { + inlineMath: [["\\(", "\\)"]], + displayMath: [["\\[", "\\]"]], + processEscapes: true, + processEnvironments: true + }, + options: { + ignoreHtmlClass: ".*|", + processHtmlClass: "arithmatex", + enableMenu: false + } +}; + +document$.subscribe(() => { + MathJax.typesetPromise() +}) diff --git a/docs/assets/logo-light.ai b/docs/assets/logo-light.ai new file mode 100644 index 00000000..5f67e5ed --- /dev/null +++ b/docs/assets/logo-light.ai @@ -0,0 +1,2312 @@ +%PDF-1.6 % +1 0 obj <>/OCGs[28 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + application/pdf + + + logo-light + + + 2025-02-01T17:06:22-05:00 + 2025-02-01T17:06:22-05:00 + 2025-02-01T17:06:22-05:00 + Adobe Illustrator 29.0 (Macintosh) + + + + 256 + 40 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAKAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A7DKfMXnvW9Qt7LU5NJ8q 6XcfVXktqCe6mj2mUOrfY4saEnjQqeJNabIcGCIJHFkkL36fj8Fp3kfJr/lQnk//AJbNQ/5GQf8A VHH+VMndH7f1r4IR+l/lBoOlpcLZanqsP1lVVjFdCKjIwZH/AHSRhmXenOo3O1crn2hOVWI7eSRi AX6Tfax5Z8y2nlrVbyTVNO1UTPpGpTlfXR4yXe3mYtV6KRR6bkgAU2VyRjkgZxHCY8x094SCQaLN 8wWxK9d80eX9AiSXWL+KzWSvpiQ/G1OvFBVmp7DFUDoP5heTNeuBbaVqsU9ywJWBg8TtTrxWVULf RirIsVdirsVQuq6jBpml3mpTqzQWMElzKsYBcpEhdgoJUVou1TiqC8qeZ7DzNosWsWEcsVtMzqqT hVkrGxU1CM46jxxVN8VdirHvK/njSfMl/q1lYxTxy6NKsN006oqszNIoMfF3JFYj1AxV3l7zxpOv a1q+kWcU8dzosphunmVAjMsjR1jKuxIrGeoGKshxV2KuxV2KuxVh99+bv5eWF7cWN3q3p3VrK8E8 f1e5bjJGxVlqsRBoR2OKpjoPn7yfr83oaTqkVxcEEiA8opCB1okoRjT2GKp/irsVdirsVQWtatba RpN3qlyrvb2UTTSrGAXKoKkKGKiv04qoeV/Mdl5j0K21qxSWO1uufppOFWQenI0Z5BWcdUPfFUbq F9b2Fhc39ySLe0ieeYgVISNS7UHfYYqlXk/zhpPmzSm1PTBKsCStA6TqFdXUKxBCs4+y4OxxVOo5 opQTG6uAaEqQaH6MVYD+UbRabZan5XufTi1bSryX1Y1VkeWFuPC4+IDkG6Aj9nj4iuw1/qIyD6ZD 8BqxbbMm0Dy2dIv9YvDfT3f6WufrIhlP7uHanFBv40r/AChRT4d8XLm4xEUBwimcY1a2/wDLMl15 q07X11CeEWEMkL2CmsMgkrvSvwnf4tjXivTjhjmrGYUN+qmO9pH51uDqfmvyz5ds1ElzbXser3sn xUhgta05cVYfvakDfrSv2hl+mHDjnM8iOEfFjPcgM4zBbHiPkLSbL8wfOuveYteUXlrZSLFY2jms XFi4QEdwiJ06EmuKsz8z/k/5a1aS0uNLRNBvrWZZPrNjGsdUXcgIvBQ1QCrdvfFU484+ddI8n6XD cai0lxPMfStbdADNM6gVP7KilfiP9gxVi8P5zS2lzbr5l8t3uhWV03GC+l5Om+/xgxxEbdQKkYqz DzZ5w0fyzobavfPzhNFt446FpnYEqqdtwK18MVYBqv5pX2p+VNXTUfLN9pVhfWF1HZaiwaSFmkgc R8z6cfAOaBTuKn6cVTv8j2Vfy3sWYgKJLgknYACVsVUZfzemuri6/wAN+XLzXNPs3KT6hEfTjPEV Ppjg5f5bHFWUeTvOOkea9K/SGnFkKN6dzbSCkkUg34sBUfIjFWB/kn/ylHnv/mNj/wCTt1irvym/ 8mJ5+/5jZP8AqJmxVN7783FtPNuqeXBo011cWKA2v1ZzLLcyn0yI1i4DiAshYtyNApxVQ0z87LFr u60/XdHutH1O3XlFZGs0kzGnGNBxib1H5fCKUPjirUH5yyQa5a6dr/l270S3vWCW13cMd+RoCyFE oASOVGNMVelYq7FXjP5caJo2qfmF56XU7C2vlivpTELmJJgpa5mrx5hqVpiqJ/OHyFoWm+Xj5m0O 2j0rUdMmhctaARKytIsYoiUUMrspBAxVnGj+crJvIdp5o1WVYYTapNduNx6g+BgoHdpNlH0Yqxg/ nNei0Grf4T1D/D3X9JkgHhWnP0+NOPvzp74qm/mj8zbTSfK1h5m06z/Sul3sqxs6yei0YYHcgo+4 ZCpBpvirJdR1uystBn1pmD2cNs10GG3JAnMU/wBbtirDb3zRceZ/yi1jWZbH9HrcWl0IYfV9aqIC vPlwj6sDtTFUL+XvmbS/Lf5NabqupScYYvrISMfbkkN1NxjQdyf7emKp9pXnHUr/AMk3/mTUdEFl DFazXNvYvP6jTxRRM/xViTgr0oNjtv8ANVL9C85u/wCXsOu+XvLALSTPGmi2bBQKSFGflHEB2qfg xVhH5G+ZdZheewg0SW6sb++MlzqiORHblkGzLwavQftDrir1PzT5IsNekivEuJtN1i1V1tdUtG9O ZQyleLkULJ8XSoPUAipzJwak49quJ6FhKFsT81WH5geWPLNzqi+b3u1shEohayhDMHkSLeRmkao5 1qa1zKwSw5ZiPBV+ZYSEgLtNJvJvn67tTHJ53lVJAKmKxjicd9njkRx9ByoajED/AHf2p4Jd6f8A lnyfpHl1JzZ+pPd3TtJd39ywkuJWY8vjei9z4e/XKM2olk58h0HJnGICd5QyeNfkQ0Wk635m8uXJ 9K+imQxROaM6wtIjkDvSqn6cVeo+YfM+h+XrWK61e6W1hmkWGNmqSWb2FTQdSe2KvNfP0iyfnD5N kmZX0544mt2JqhlMrmoPT/fdMVZH+d/of8q21P1OPPnb+hXrz+sJXj78OWKvOvPJuv8AB/5bi/r9 U4j616n2eNIfT5V/4q5Yq9j89+n/AIH1/lx4/o66pWlK+i3H8emKsD8ifWv+VD3v1Wv1j6tqHp8e taydPenTFUJ+Vdv+Yj+SbJtBvNJisC81I7iKZpg/qty9QptXw/yaYqyP8tPJOs6BrWuaje31pcrq cnKaGyLcI51kZyOLD4ePqEAV2xVJ/wAk/wDlKPPf/MbH/wAnbrFXflN/5MTz9/zGyf8AUTNirXlI A/n75oqOlkaffa4q15tRB+fvlghRVrNWbbqQbkAn7hirf/ORoA8taW4Hxre/C3cVic7H6MVZX+YP lTzR5g+ofoLXZdF+ret9Y9KSWP1fU4cK+ky148G6+OKqPkHyf5s0G7u5dc8wS6zFPGqQxyyTOI2D VLASsw3HhirG/wApv/Jiefv+Y2T/AKiZsVTj89NTtLX8vry0lcCe/khito67sY5klY08Ase+KsR8 86dqGnfkToVqVZCslu94h6qkqySUb5O64qyi30r80rzQI7WO/wBDOm3NosSKIp6GCSPiB4fYOKqG h/lveQflXqvlu5u4NQe7aS506a2JaMHgjxAMQP8AdsddvHFWGXPm261L8ndH8vW7ctVvL1dJaOtG McLB0Hj0eJf86Yq9R81aVBpH5V6jpkH91ZaW8Knx4R0LfMnfFXhtvp3mlfJuh+ZLy3jvfLGjXBSD T3Jo6PcO8skij9lpT6dT7bU6qvetf1aw1f8ALTVtT09xJZ3Wk3bxMNqD0HBUjsVIoR44qlP5G/8A kubD/jLcf8nmxVJP+ccv+UX1P/mN/wCZSYqynzb58fTtTt/L+hWy6n5kuvs2xakcC8SwaYinb4uN R8O5I2rmYNLxRM5nhgPta5To0OaWeYtA/NPzBo8+kXz6HFa3XD1XhN2JAI5FkHHkGXqnhluHLgxy Ehx2PciUZEVsm35hXd/bado9lZXUtmNT1S1064uICFmWGbly9N6Hi3wjcZTpIgmRIvhiSmZ5J7Ya P9T0YaZ9eu7iiSJ9euJfUuv3hY8vUp1Xl8O21BlE8ly4qA8ujMDamJeTF8waH5vvfK2panJq9rJZ LqVldTsxlRRIIWQ8+R3PbkRtUULHMvUcE8YyRHCbo/e1wsGirecvyp0fzFqKavb3U2k6ylAb226t xFFLLVTyA25BgafRmA2pZpf5K2v6Sh1DzLrV35imtzWKO55COoII5B3mZht05UxVlPnTyPo/m3To 7S/5xS27F7S6hIEkTEUNK1BBoKjFWKw/kzLd3Nu3mXzJe67ZWrcoLGXkibbfGTJKTt1IoTirMPNn k/R/M2htpF8nCEUa3kjoGhdQQrJ22BpTwxVh1v8Ak1fHT59O1HzVfX9h6MkVlZsGWGJmQrGzp6re oIiQyr8IqMVZZ5I8pr5Y8tQ6I1yL5YmkYzGP0wwlctThyk8adcVYrP8Ak3Na3txL5Z8yXmg2V25e exhDNHU/yFZIuNO1akYqyryZ5K0vypYS21nJLcTXMnrXl3O3KSWTxPYYqkmk/lhNo/nK417Tdbmg sbydri90n06rKzczxaQOPhVpCVqhpirrP8sJdP8AO0/mTTdamtba9nNzf6YI6rMzFmZTIHX4eTE0 KnFUdpHkL9H+ftU82/XvV/SUBg+pelx4VMR5epzPL+5/lHXFXav5C/SHn7S/Nv170v0bAIPqXpcu dDKeXqcxx/vv5T0xV35j+Qv8Z6Xa2P176h9Wn9f1PS9bl8DLxpzjp9rxxVluKuxV5ZdfkvrP6d1T VtM83XOltqlzLcSx20LoaSSNIEZkuE58efhiqK0j8lLFNTi1LzHq915iuYCGjW5LCOoNRzDPKzAU 6cqeNcVZ7rOj6frOl3GmahEJrO6XhKh29wQexUioPjirzuP8ltSihOnQecNRj0JvhOnAGvA9V5iQ JT/nnTFXoHl/QdO0HSLfStOQpaWykIGPJiSaszHxYmuKsJ0v8mrOw87/AOIxqJktEuZruDS/R4qk koPST1D9k0P2OwxVmvmPR/0zoN/pPreh9egeD1uPPhzFOXGq1p88VS3y15LtNI8lxeVruUajarHN FNIU9MSLPI8hHDk9KepT7XviqT+WvyyvNE8ua35eGtG607VYZorZXt6NbNOjRlgRKQ+zAlaLUjtX FU88jeVf8LeXING+tfXPQaRvX9P0q+o5f7PJ+lfHFWO+WfyquvLevC80vzBPHoxmaaTRjH8D8lKg NIJADx234dsVZJofk3SdH1nVNYt2lmvdVcvM85RvTBdnKREKrKhLCoJP2V8Mvy6iU4iJ5RYiABtP coZMY/MHQNW1jRrdtHkRNU0y7i1GzSQDjJJAGolT8IJ5VFdq7GgNRlaTLGEjxfTIUwnEkbJjol15 jk8vR3GsWUcWt8JTJZQuBGWVm9NQ/KUDkoXfkeuVZYwE6ifT3pBNb80k8qaT5lufMt95n8xW6WNw 9uthp9hFIkvp24kMreoyghm5UoQ382w2y/PkgIDHA2LsnzYxBuyzHMNsdirsVdirsVdirsVdirsV dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf/Z + + + + uuid:73c4dd5a-2b96-904f-a09f-9fd76d5bb1a1 + xmp.did:6b203221-a0f8-423b-b13d-979831625d90 + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + uuid:7714bbb3-cb4b-9e4b-a7cc-ba1f08c54dbc + xmp.did:09a6dae5-d973-4c6c-9883-0fe9bfce3a2a + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + + + + saved + xmp.iid:6b203221-a0f8-423b-b13d-979831625d90 + 2025-01-31T12:56:43-05:00 + Adobe Illustrator 29.0 (Macintosh) + / + + + + Document + Print + AIRobin + False + True + 1 + + 1435.982675 + 213.739938 + Points + + + + + IBMPlexSans-Medm + IBM Plex Sans + Medium + Open Type + Version 3.005 + False + IBMPlexSans-Medium.otf + + + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + White + RGB + PROCESS + 242 + 243 + 249 + + + Black + RGB + PROCESS + 46 + 45 + 48 + + + CMYK Red + RGB + PROCESS + 186 + 32 + 48 + + + CMYK Yellow + RGB + PROCESS + 244 + 225 + 31 + + + CMYK Green + RGB + PROCESS + 39 + 138 + 71 + + + CMYK Cyan + RGB + PROCESS + 0 + 151 + 217 + + + CMYK Blue + RGB + PROCESS + 46 + 55 + 128 + + + CMYK Magenta + RGB + PROCESS + 185 + 0 + 119 + + + C=15 M=100 Y=90 K=10 + RGB + PROCESS + 156 + 39 + 54 + + + C=0 M=90 Y=85 K=0 + RGB + PROCESS + 189 + 62 + 60 + + + C=0 M=80 Y=95 K=0 + RGB + PROCESS + 193 + 84 + 53 + + + C=0 M=50 Y=100 K=0 + RGB + PROCESS + 210 + 142 + 46 + + + C=0 M=35 Y=85 K=0 + RGB + PROCESS + 220 + 171 + 74 + + + C=5 M=0 Y=90 K=0 + RGB + PROCESS + 236 + 222 + 68 + + + C=20 M=0 Y=100 K=0 + RGB + PROCESS + 211 + 208 + 46 + + + C=50 M=0 Y=100 K=0 + RGB + PROCESS + 157 + 181 + 60 + + + C=75 M=0 Y=100 K=0 + RGB + PROCESS + 106 + 159 + 67 + + + C=85 M=10 Y=100 K=10 + RGB + PROCESS + 77 + 133 + 65 + + + C=90 M=30 Y=95 K=30 + RGB + PROCESS + 58 + 99 + 63 + + + C=75 M=0 Y=75 K=0 + RGB + PROCESS + 104 + 162 + 105 + + + C=80 M=10 Y=45 K=0 + RGB + PROCESS + 87 + 153 + 148 + + + C=70 M=15 Y=0 K=0 + RGB + PROCESS + 102 + 162 + 213 + + + C=85 M=50 Y=0 K=0 + RGB + PROCESS + 68 + 112 + 174 + + + C=100 M=95 Y=5 K=0 + RGB + PROCESS + 45 + 60 + 128 + + + C=100 M=100 Y=25 K=25 + RGB + PROCESS + 45 + 51 + 93 + + + C=75 M=100 Y=0 K=0 + RGB + PROCESS + 87 + 50 + 126 + + + C=50 M=100 Y=0 K=0 + RGB + PROCESS + 122 + 42 + 123 + + + C=35 M=100 Y=35 K=10 + RGB + PROCESS + 133 + 41 + 91 + + + C=10 M=100 Y=50 K=0 + RGB + PROCESS + 174 + 31 + 84 + + + C=0 M=95 Y=20 K=0 + RGB + PROCESS + 187 + 42 + 111 + + + C=25 M=25 Y=40 K=0 + RGB + PROCESS + 189 + 178 + 156 + + + C=40 M=45 Y=50 K=5 + RGB + PROCESS + 150 + 133 + 120 + + + C=50 M=50 Y=60 K=25 + RGB + PROCESS + 113 + 103 + 90 + + + C=55 M=60 Y=65 K=40 + RGB + PROCESS + 92 + 80 + 72 + + + C=25 M=40 Y=65 K=0 + RGB + PROCESS + 181 + 151 + 106 + + + C=30 M=50 Y=75 K=10 + RGB + PROCESS + 157 + 123 + 82 + + + C=35 M=60 Y=80 K=25 + RGB + PROCESS + 129 + 95 + 67 + + + C=40 M=65 Y=90 K=35 + RGB + PROCESS + 111 + 81 + 56 + + + C=40 M=70 Y=100 K=50 + RGB + PROCESS + 94 + 67 + 47 + + + C=50 M=70 Y=80 K=70 + RGB + PROCESS + 67 + 54 + 49 + + + + + + Grays + 1 + + + + C=0 M=0 Y=0 K=100 + RGB + PROCESS + 46 + 45 + 48 + + + C=0 M=0 Y=0 K=90 + RGB + PROCESS + 69 + 69 + 72 + + + C=0 M=0 Y=0 K=80 + RGB + PROCESS + 89 + 90 + 94 + + + C=0 M=0 Y=0 K=70 + RGB + PROCESS + 110 + 111 + 115 + + + C=0 M=0 Y=0 K=60 + RGB + PROCESS + 130 + 131 + 136 + + + C=0 M=0 Y=0 K=50 + RGB + PROCESS + 149 + 151 + 156 + + + C=0 M=0 Y=0 K=40 + RGB + PROCESS + 169 + 170 + 176 + + + C=0 M=0 Y=0 K=30 + RGB + PROCESS + 188 + 189 + 195 + + + C=0 M=0 Y=0 K=20 + RGB + PROCESS + 206 + 207 + 214 + + + C=0 M=0 Y=0 K=10 + RGB + PROCESS + 224 + 225 + 232 + + + C=0 M=0 Y=0 K=5 + RGB + PROCESS + 233 + 234 + 241 + + + + + + Brights + 1 + + + + C=0 M=100 Y=100 K=0 + RGB + PROCESS + 186 + 32 + 48 + + + C=0 M=75 Y=100 K=0 + RGB + PROCESS + 196 + 94 + 48 + + + C=0 M=10 Y=95 K=0 + RGB + PROCESS + 237 + 210 + 53 + + + C=85 M=10 Y=100 K=0 + RGB + PROCESS + 82 + 142 + 68 + + + C=100 M=90 Y=0 K=0 + RGB + PROCESS + 43 + 64 + 135 + + + C=60 M=90 Y=0 K=0 + RGB + PROCESS + 110 + 63 + 133 + + + + + + + Adobe PDF library 17.00 + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 3 0 obj <> endobj 5 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text/ImageC/ImageI]/Properties<>/XObject<>>>/Thumb 36 0 R/TrimBox[0.0 0.0 1435.98 213.74]/Type/Page/PieceInfo<>>> endobj 30 0 obj <>stream +HtPMk0 Wcr?b;iSJevaq͒lv&O${ ~΂>H5R+ڵ1yz•}gS1W8i~@|fN$+ɦH1F+U@υ?51:_(އ|qws6U϶M5ژն3c Ť;w|E endstream endobj 31 0 obj <> endobj 36 0 obj <>stream +8;X]Qb7t.'#V1_+]gV2>->@*_5m2:Q:HHfdR2A2W>A\4V^0Fjh6+K[#7*P>K#%<pY7"B,:OTl]F`(C1''k@.8VIXGT;"WfrLCXBG)TW1mL>_;F56l-D9 +r/T5OG1.>]QqCh^PGSnh+.C+Xfb^Nb?X-6\kj_$1dLX4JB->N?;?mPojO>pY/-8D, +h5?O5d2tOGr$-=T6(5"57qNR*XOQo8gaQS1!!*'!!!!$!rrW7T?D(d~> endstream endobj 9 0 obj <> endobj 11 0 obj <> endobj 12 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 29.0.1 %%For: (Rahul Krishna) () %%Title: (logo-light.ai) %%CreationDate: 2/1/25 5:06 PM %%Canvassize: 16383 %%BoundingBox: 0 -214 1437 0 %%HiResBoundingBox: 0 -213.739937990305 1436.42578125 0 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 192 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 -213.739937990305 1435.98267476687 0 %AI3_TemplateBox: 306.5 -396.5 306.5 -396.5 %AI3_TileBox: 339.991337383435 -394.869968995153 1073.99133738344 181.130031004847 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 2 %AI24_LargeCanvasScale: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:24 4 %AI10_OpenToVie: -1135 509 0.5 0 8450 7744 1716 513 90 0 0 6 598 0 0 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -1135 509 0.5 1716 513 90 0 0 6 598 0 0 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %AI17_Begin_Content_if_version_gt:24 4 %AI17_Alternate_Content %AI17_End_Versioned_Content %%PageOrigin:0 -792 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 13 0 obj <>stream +%AI24_ZStandard_Data(/XN +=@k0 Àda̹,hƏ۶j\P!51I)2ɿ"+P + Fjޕ2:^uXUYbE욹"+ )7PhW4 ;LALU]T")5#G+ a#r(XE!)ȑ@$q2ؠƕZPhe +Waa %>M6a\P(IM,Q !$wP~dkT4C w4qZ՛z6lWG5ccDX@Hpx #Рf+u.o٩f"Q:KgCՎ)&!ꐩ|! dQ*M?]"{W7 "|0Ea[Lat:;<=[Xhxx<\PIE+ S.RbK.R((r(WTISJ!eI$IHl &TℒQ9F$%$$=**TFF"h`!AC60, ȆФ!S#0,3JwPVHv Ϲwt:]͵ڴ S.pA`bAq9p4dpQ!B b¡Fb &*ᡂ H4@4<,6pPd$ cB` +(TA@hF"b!b *XH`HxhpBD&  x`"F ,6Xوksdch7svfxIDà ` ӬA +hADpp`1P01`!a :` (8&8 +LDA LX + h`P & " D<<,$`& ` 6 (HDN2uȁÂhiLxLhҕzwl +Hu׮'k{R(UfsKDӟ34QS[QKSMt9&g':Ymj9)=>ϔӪc9޳̪(;6֛VO}(viK5Ն[s{4V̳jcu?YwUx\WxK~hohu0[Vv4{6wG=xF"ݭ#zbO̊vUYU ^jz{hFNCn%kx"Ua Fb(K#(ÌaTㇱa?q(@SPQ 3P(q3TP1HC$DIi)ð+$ttzCIc!eYD)2 RhỈg(Ç'{7wRb +ȣ@5Ì2bQ)ˑybx ɼ4eXS8KɑD*Z?!^^ iWM.)ϥՏeo.3YVhJ/|"u-)hE<6GzWofz6U(w{{jD'oJt&?671tSv!4uћg;[R+5tv'2oWNgXw޳nٻvZ'os=LGg2ydiSy\ğdxԃk΢QZt|h=TxеۤV׭$=7oF,mjL?vl+ƾU?f_#|ٺS9槏O5ӦDV4yiEGxFw[Zt{v\rЮ3W|rNONFoVyyܽ|xC]<<\5qMk#fIiĬ3Zt愈{=j=\ װ"%Qצ:\\9"&yd版x2%U;;xIhUܼijӹGޣ>r+ԡ-U!Âɼ?ܣ"f).!޹D35;/h*>;h{xZSH#Y[G?wÃuwЌQ-ЙY{&13 :uh3FFi2S:dRi. -}ӨRc߮v%JsZ;&ro\Gcgnwh.mvg27>eKϜw}̌YV/+۹.}y婚!%guyGM4u}xJ#T\Hig:R_&Y>.K.{h2-JEݕz=FԓXz6K G;Hj˃Z-;z^;W}cX0$jv_׈hG!:deB2;UŰ`Hu{0bX06gQ^iW=κ:[W+Ҭ㕞rm HÂ}}2StvP|+s;s;U,;-,-KϞ+2˨+}<{XxvٺsWzR}T{*CZxдVեU.q0DXL4,4XX@a/.Ktl%7-ly{Ky9יjZh~]{zz<7MýZ-ުk's5Ϩk\œK;JvE$\'坐Wdϼyw4He<󫇧̈l~}oeisSr-яp_ӱߒnRyR%/:eμU;]I{g\U۱E)^{蛅OV""]e^OT3FjЖ8{Df~UMr`6OĘ٧IjDK×Qoբͦf+#v51)I;|e &ݺ)"ؕ7X>ue,Wގ[T3D"|2gidfwzq5'~ ~QN)=-ᄈ*dJ=eSvlJz;A/jc>2D/"V4+*-b*.i +-Z4>_Xvs*-,hjY}f~hvE'F*MϿf˟=0 Cbf1BL$@(Ñ}>vD`B*Fx&9f !Kv㠒<2ܐ)+Hudd2F-ή9>vo۾DArBHUHFA cV"m56^/_3֮F9 gT&I+:[Ʊy1KsݨG@o#$&w/Fq~׿X-r~O_X._xT?"-8/HB-S6 ~a(0D}Q,A,h=>J[.`·ɾoXS1ζ}.Ų _H*z7hi /aRҾ&ڗj-Y9A#jYxb8ir*O/rꝆD Z|"ePd9eY^*?c uɖU(]UhbAV!smn~:N#h&"S$6tJ`CSq`@'+#/SpMN/m0hzk77"~p` +XH3 s!̒OF蠺yg zm-QAfg1dG$ʅ뙴1@S. %bR9SRqdD(جV9 +Ģ92Z37({p3*3s屋BTMuz(b ]YyI7DѰ\FimDlj:v'ȅչ3=F0ShBpI͊xyē[R/t3B,%UV`;<{.Ey5@ޔ7*yFfW0 vo.6:2S|`F1Sٺojg:+^iUh5sz@t7'Mr*w@zZi7LJBԵpd}GXU4Ds +]F&u' dDd7ҩ) bP ,w)daёNLԟaf*_M!&mMh]/k^nPad( E +{JMdHcsqd$sUh il+ Y4h邰ArOf|h7H:Bu^˕T =TMusȯGC> 5ިCK)JN5}Bt "Mk3p>3." ̓B/5>(p~">5 (] Nf0}p_Cwz6m7:٪4Ηϼ.,Ȅbڄ{/~vkjݒXp"p+xGRa(ͳ&46p]mͼN8mroy=7h΍7)-5.:?[ptHr9U\6guҀm~2y) (CgY<#՝$,-.7fq3'hyx˪Iٖ<-/ !`YJiM$lR؏7RkV==W?q.6@)'<tJޚWXP!As7낶;!("0N`$v; yfe7x~iv@ vC/]H\tnO;Ga~+bxTE}(g0iT#dw3ۢ=4WW){;7D<]6F$:~LQd!,艐{(ˍ't\+JF0wpT6Ӗ3 L8dCi)`r-[?YIJC 5|׭w1҂$D 3Pvo~> +8Y˺,Ac ˽Y8ex&DUR *⥛ti˥J>,3y*Yo G-O\= }9 V0kUX])@yƾ9ɕZ=4R{ HP# Bx9ݖAvZ~ÚqQ0=+|qgqf{2 rccHajLMrE7Dq&gl7f\Kw<nuYnT>Ck=y֒',U-0ax}FPu+Si,n0z|av8WֻV=7њy}:PfDEkPj\]dc*;C(t2pK8R}S}_Dmw(:(r6 Ǣ CG&^:@NJῤvqϭEj$Pm\Z͎k D:@M[kf L 7SD&}){EceN1mjM1>f9pNQnҸzYMU;z-BMMCO5a2襽t^rUoSfB=i9@=mЩpB=d'|$yoAFbuz %,"׺F + +\R([o3PBEZ.Z +1P2(|_ +\.gjћq$C>WG2sspo-\k8.I`9&k+Y$I]NC_z#ÐUϕl!:P$s$IqY1D`F89ε[PC_/P7Դuˆ^R'̰lFg暘!5m!ZBǫv^-'GwŮf|ep 7qnX|áB0sX9_-#sHܨ85s4BF/bA ZЗ9lg@$sѾ,iC p*d߀\p t>=%z<0c%2zŪB"Ѵ0yQr@E.;)'Sb`< Y|=u $IP-%F܈']u#͙O^Hz*Oi`cb7U/JN\Nv˿qOg]Iz9q9P1g_ .Ƹ<xO]y\kSV6o`NHuivK0C o4$d6_惄;ڕ<ڹq31'BF^QZY?=15/zĐ"~Dud Sh(v.@)9//.AfRsuX PBf&ݒG)zYޚe˘wI4n㖙Ezz1!{œ{HK +4VTLn5^W6Ks 8Lǡ` @l?# ]EB/э +&76_hP}9$<|uJRN(u([zWۋ +;f]dn5%x;gF6Eǹ|וc3]<1&R{nq)C'`2qk"U(}"U(\ 'H _a€> " eʸp$ȻShК"nY!L 7,]/d 8JE #P*=fZ\?5eۗV:ܥXC3oW,|(ιNzAJ{2m6[wکeW~ h.;NT?aceR ]ˀPYUHCzQg 5uDI?I9@HZߢ<ջh뼖VGc^f ^??u tŮLOi c_$ɀߜ&<\"& Kut'FPҸI9▚8B(o+_ΉYdKZWoG]u0{ X5Qx؅1c9o$Q.۳i R%IWyޛ) F,"~D'՛AfU}x[doH+wnT?bZQ"n*ڿd$$&qus82`!2-5}{_+Mǿc1{ǜ &lu=pr $T+ '3A,.`mki8dhؘƾi1AiR%L+F l*)p/޹#kKDGIj,cHې9+$4,9P#! + j:IA!/jd +h(x/k`&D^j+d#0Tn`rLjGNu-|LJWqGX0%!Ѱ?W fb8v۴Ӝu|zE4Ie{ᣧEG>!ФdϬ#spX*dq&(]ʩ,/X!@&2 H9-}0'د,&Y1Xd5}P{ң*:ƥ/Sr!"l#kEl=hxcDc͎WjtK}~ʙY6b CV[v0Ќ"S~9ܪ<">qr=Xܫ(g`CG'NZƖI`RƟJV iښPp$&qT8ZDZu>+RMGs(Lkth?\Uh40Q/§Fm-+mI&gdWBS!k6b!A$Q:@N z7TqE'BwGىdI" hyǕAӝtv~3 jXm(T\\op(k"k$؀cϱGY6l+nwg0g  C!C]1Wt 1M{.]bEV >* \C{͋z-@tYzmYHr;N Uv؏ #Zm\یߣoTRz %JJowU;nbFCN&|eY14}/rYƞ E}Zz-"m %9b]~/C^,5kǣ^^6QćJ7kX=dķ&X E?CgfSlo踘y%ѡDD }XaZT`h64s k7X1Xy}br*ѥ>IWS&ۄej- v]iqAD6{i}k=$1x(aPayR +|F6o.pL߾kB@*RϘ1x?J^7ˤ?Ԑ. ⩴ښ!K3xVr%mf;#֍i &qd(X F _įWwsiɵ}MM~{_+JY@W#Qi_&Kۘ0ldttGBJLMW ̮ %BL0.",!y2sўl4 7cG8G,,c(7 K(#j?xS(r-n_4wr͵36:*p+ϟݚ7K:޹H,s+ V& X~'g/_tЭ +1\6i",<>p)Z&#ilF ;Q +hi\H7,ͤs? +"cIB27">YC!Xa+U- r[h5If|6GW,&]:Ib 2"^pû k7!y".Rdq2Q ||qy80jRSj8MEt#bjr1cb[э9i۩7J\VMͻ$H #1 ʋg?r G s{µ@%\oOwg}><+BXÊ +>L4c'8f,BEJ8M :@kُMn'n`#6#M23Fh9ϴHΉ0hPQ;o +q?̺v]{OMs}nOWĹ9Z3SjG?m|)sypReK:Poe pLdИcL =iÅ .O8:""CT7֖i5 `|rZRVYL@+؏*AbEph3] X-2BuFL6m'  +HTs + +Hn*AM +jDHz~<(ܥ{8=J?ob="BC1@ڨaigy7(zXr<8*nҢ*R0aTFw`x”v$LTEщq h;CrmTa=EZp-ꏇ;: +6(j.A-ՅE ĖT;5oV`3"m(0;L ~(\8^k'm_A1ꣂWA3`x$-;~ăo1BWF;8ARB ~ @cYE8wi!55e^bsY9=5L EѾd,Zĥ=CژYzq_~tZ)5$ !0`ޕ'3Ղc2~{TsBI?l&gh ͪyz#㱚a[ +k|]^+Fy8x:n)'2 dpK~[$fJ2@Oc ~qm3cϞؕցϧ/t IwiVpi 6Nuqoxb -:m'Rp˴q"thyKS3!(/y0`6В*V 9*0}QS]e> n}k + A[BޔW8kC3Y (E#iK^LK+ hpͽ:kϐx8$lN19J(-s. .ɀD3\:}dھP FmGm<0uyM +^q`=44qT{YmtӃRFP_RuOc +eN>BJ5lM0\t4C4"z0ixt5!JU* +Gd1H̰s~hpᭊyaʈXIR*S"j?8;Z G#OvHsӵHKځ"#"cƧTX,&Lk"9J [SxPq>$L!DTTN#($ϨVB^Țհdk=Y)K0ǰIvlkLx$fe ǸR=o/ ik:X\2ݖ *}32NOc ɛptZ}dX XggKğ.xeg_ސ#LTǀFH!Qgl)דflfF %]XՉy^I&;ʵ`iꙇVJ "-AkM 4,ҜdY<ƲMtu -ӓxL9֯g*CFO$S_T1% 7w9}Ygwd=|u;/ۙ7#݌L+<74X} U ŹOҢ]~nSfB{:FV:A̰]쩼epg]Hݑ2Y5H1(f]\cP6y d8T|;t޶ΜT*(#Ƀ썁=En!L G( !qO4[RtRJג@\l>ǂC3-@Xm|;Jo,/O&$hԦ@!Daj56u_ Lt6 ,Tվ`Ӕl6tÂ){A: < +rW@!, 9pv~fK*##6{!+S񀏟|Pų4A]{*Eb<1ZZ47NBϖ!n'OAo±ƺ߱:؍J6rfџg-H*[㭐W 2Z1Ju;_Me /QAiL TwO?ڂS,QD`+ʋ)[Zi(zrȗK*yp ѢmC&JV)[DEzarsSn 1F +1(2!> .%4Y|$=GIz +Q1m\ڈC|EA9կ俌F򩐬M=LyBKGkJßyj,]tB,¹]k@dlI&w a6U$6}5 Q7owlUV+; +L,6 H%&&q䀙>?#&x+ @FpI!2Ր!:džL#\Q,o߮-sw~\/[NwL#5>|25ɢ]QOlFi,O@Θ IϘQU#B#gNu+I - Z'A--)Kcck>PU'Ts3woE?'ѐѾ>/d&ngFxisHѶc>&!}H3?fB{{iy1DMO^S~+;rgċiaT&\ĎpgnˢVQ*|vEf[)H;q9mJ?DhAX : քV3ؽн(Iyw:Mpqk6^k*A2쇫 g*4f)ǽ$HҕPȫޔ0*Vm&p:19}PϵpE#[1 CX8_6Ȩ17' ysǭhM@px<ÿsUBw7g7] + <>=_H~P8Ӏ[O[eo FfQFdky8f4,\pp/KKTe_)%VP rzXI=7w cCn86}hAH}Ė4'}?/-91$IeL::lӿ,DaTzuLp=*g2jz?e&7J+/7ÔP]95IQO r[q͑4o˂J$tF>QC7 HRE O9fleϯ0u?v2Bʻ]7DJ jie=&Wr˨ݤd>@FZb麒Kyo HC-wzGn<1S=`6A@Ahc5|Z94#B[IxVTB y7x%lCT,cdNO 7& Ϻ8hQK֯z~%Ņ6pf4#3D͈b G]v |X`sk3GB!#w"/tr"go&ym+x&s}N9~pQEmlLcD%kv丿4aJAu_BvY/:lrmJi%ȮH &i?V.J"k?[:Qbz~ylĞ2E,P Nı-aӳ8 I@`8. 0%l'kjR]::飮EM.5]a р4*AZgbG֦]J!G. Ҙ-8Ҁ3w47s+R4!9e*V\xsX9KC$/l]yU+=/"OsR1%xVD><'gD^ȥ',PF ׍.TM-X =Fɔ_>p)_HS)`ȡV}%[Loa"gRs>Cc!㉐>ͲQBncI4teE 'Kd6c1lٚD&V'_|и{1 "&1Z !&bi0O8|VQþپV&P:OZ*GgaǣpF?qV l5hhʟdA,$9:)FUE2}b 6U$v|CYMKh \&:;vM1̋N}-Ԩbרxք_u.42;g K UDŽz[ . c?@0TC]'W)o3@F#SlR$ J2о? ?ow)ltS_uۺ4l8 BƗs"& ;m Y(fAxkh;ti"=л1Gwll7N^]|ć'xz׆>ut{!&K_ʘ9&5^iKHKk bPf&%36W:@?7a3jIA oj 71VY5H3v.-G. )_{^[Kk[;ӭ"O釉]JV=vJF>^z+aɳ$~VBUfu9l~ɝ^{U00 n5D_{GX%|3ĸ +'{QFЇ`v`"?jtX*Ċꊄ@>ܯ7aMl pe< o/|v!īP_Dž)Gsg( "?2?)?½ =wI'Bv3=*|zPd}8f) `@ eE߯ 2DhAA?n;i~c*w,^AN .݊fɚtu{3lf"6,L֟xdY=_NBos)'pRyvCȵ܊Nx *K,hBqo-Ǜ^+YE*,DAVťLZhŹ]Hb?U,~q+[10ƋN|"nj-0+LTJ[]@HoG@ +<,D@C =^SøG>Ab!ڳ{0@ĢYQFgW>Fdz ٬D-j91)Gסq ÀVJV5[f GMd邌tUշEUϨh!U t bD)b+4S +-y5rM DYV5{ T$uoS&!ȁ=B`i+TۃUZ>,J-uj,$8e."wlUӘ)@n\DB~5WMp;ur"뢱Qa/C"("r`f$yt .Hȼ]$ {ryA@yDV ^aA,v\?(etr8_+'Ac41qzPISzܜJ`Q߇/^a֐uW#J1{E h?'zHɶ^R~,p&Hm.V +NR`H@3l`!BJtBMۚy[tq=z#r ,[[ob]Ǵb$^ᕖx_u(u (a4UEa8H9Eo2~/ζ㪏;8Џ7Z$C2"%c$Z_ƍn$OSvE8fyja7I80:4QIDžVkQ9>Yv>f=4 dǣ/x?ҡJnwkE'(@e}Eضpr;sH2jX\U%R1_pFviܮaB[&[n-@¡XZ0$Ni͠$gy bUx;aH㋈qWCbl~:Ɯΰmک|ZxY=J9銯cЙahՄd4)VYuBk3 MR"4^u"z!~KovY]vdЎ4::Sta4 u xH%-aI$1-73dLXyKƒ֕άډgoWr٘g-_5f@3(3,in`08AQ@}k@*]QF{5u1"B`r4v-+\eY=J%rG![eC +-\Aç\Tg/h֕ҢѶ8lu'{f`}~e +&fN;\^(X= Yq۫zNujbl\!XJB9 U[sv H?OpxJ!s*03ܛۨݨ]mTGj1oUu8+:!4N&r̍$_AG̅4m#Y|MV QcPGet}K-Z"0־1淛^'6:dQT0CI#vС쁱~V{ \M( +KEG? +b8JoBsPg&~Ëebݾс+M~ eWullp4* +6|]@%2*^:qᎊLl\ pA` `m5<߸yDEvYFZŠv3I"&s&L[dTL:)-gf(L3rFM3`%`*&9 -KnljRiCBXсZQ@lMII"y4]z$cEh:/M$>F68u8 ^/"oje_Zhoeo8챖Qؐ>v +#IJ? :")i$1΂1.o;b08O >?mBfV˩ p-MhoJo BZvNQ=ݎ=&1"R*=wET,%&-6%i +06QIJ";INzX q:Y=-Nϱ1Gno` +VC9oq1{Lxָb>WM$J)vþ]"ت8*^axR) (4E%( 50I8ķ% VOvM_jlN+Uw^^8nޱJ@ԋQ.P_߈d2|iXׂJwՄȲg*4e״iU,1_|7$Ӳ⎓QKK) (Zf5X{@lÈ\9D@%xEHsKhZwI!\l1 fG#En5*Rf}  @W~R|ƊRnU,CEOPj9R&l9Lf 9s>Gf ˖(#*5g|(tk2= $nH&֭#RV{'0TWu?Hߪ)nBXts'QX" +'޺KL|ZVVU9Ma}TroadR4MISj\UwA+[Z/mZ‹ ?[R9K;; l~o"w&]f&oq R2$8@ +C87 ="Q36^ZG}vb^,~ŌTMʣjIQk0il2TPpDQ-2s!sSԃh:vxy];3 q-^{9/IG5!NACoͣLji8bߜ״B'<.iUP׵J!V܊9b$5pbxZR*dJYժU38: 8$C7uGvъW(6cHC!%q?3lH젦AJq8*v0\A1jFd>|Ud`if11,gD^sx4 XԑVlnF|LŪ\"LL&u0˫xɨ~@[)O$@7.zaUpp3D9R1?̘T*2JNQU^jj?q^ª93RY Q8TPlf_BA0-ajU)13% /#j3K9`E-|U*(_# 6t|7$cTD"U|=UDdCqb#̫g*,TgO=!1^^hRU[: +T`dHOg\byTh~ЄH.gEbEoOFT% +dHYi5HMe֙>L+DCNdEryk$?mEr+!)$EH+ P#$R`- FQ1Z ex%n|iEc,h^ʪFLH%PsGЈdXJ4"XUx2X5Gu!'> zCYhZrgSEa|# +Mnr\܇Z>O#|L! w" +Q33 p ?52؉F5~8̈́4upBoNpR\U[7!9X* YcHSNILIh1' UBbL"GĐI>#ux#HwAmytTȺ*kUp'[dDxFy׏p*5Z]_^j<VU3 `%N_'>D& MFIɄGQNૄe,9񮱷tOb_*H>7g2xSBfb|?<ùiEH9͉  +Ӝ|mj,bE(Ʊw_y(Bت{rT !N!{sFMAgκf8S,gẠY͜"B#ʼ!/BɊe +2GIr9}E<:(XUIFZĜ딍*sHMɅBؗJfsEq߿@HYD;P|(rri5 ׾;0u(0r5nRд)0\1/0u*/-ۋE2ڇ!a1U?"\*kqFrnzrOD5b,* j\ n6 '}y_+.W;-j$"RJCQcvȳqX%hu +f'9 +Ab2`3dugnj]4E$msicE^3 b1kp{_CED$H-Ӑ"URӹ*\ +`đHI[US04!<xSa %Fuدd OF6ER&t {/f}^AVL-TmD}AP/fDBm>;~95&h@4;YlȾN?܌>#M|1PIhBrG|QZ|~6WѼ{j"'<V3359fʌ 괬#1K3+qpei7 ybl""ƨE +K@[INJӗBa,P^ۥJ73Zk.K Zϔ } y=k>+zf>G*P.:2ERy*KYn^˫ZrF!UD~F(drȴ1C=N㔉@ yܥiCS9IA-U}ܒ%uQH7+4QIXLex Ehq%n'9!ʥT6}NTO_e!9ToYW%GIeEv򡗄QO%3QZtJN>jnRp(R@$1h"2_6w +* )aЋV +7#w"F)DF}塥vĔm%Wvi,|<Ɋ9(kh+KMI1VK}"W )ȹGw@)-^A{oT:b?,vo(Uf+B9#Ü*H74fn:Kl䁰Uea)D4cH5heYy yKQY&I3]d[vpR:maOK%I/v'L'fW9'f#91#su+ELzeCC +Y}(ܓ*ŌB)Dz'E1.# +32IGCjXBw bR&m`Ei\xSJ#Xu.[;Wi/qt@kv:B(qC32`WRIPe*!A +qW#OVS4KVI.&LBAVCQ9(EBn̆Jx[(57$1Fv6V=IT*xBJp[vɶen#2dxBRdYxFzJ֤bU>B*-%-8)qc(5LIǢFz!!K]=՞[{JRR25]be5DeKBRxP ;.&τAZEV 4(5OhucyƺOOUH*#ڝAۍ/@YšL8F{|h W6 !f"#(I,2gsFX3zw5Vw_0}At폦tȸ?Eow#䤦Ny`TS0>\2 "QT3f3_·'rPAvsrɧtP(=,G*sZE(PT,*?t`0b+&&{T5`vPX1 AE4ãItpZT_ h X#s!"Er(M'Au\9T^A0CVQ l( +A`lrȴ`JDH5;W^ ˯;%9ijTW٫~UD6DP)RvG5 QL^t$ Phph pA +Dd d2A +&pA6@ >P DAJ&!993q$N3g#"H r-uPbf&轢׀h , "+nE_!9"C&,IrO*2kJOЇ1uB6b_kX%31# 4(R[u ʏدҢ⫢ +SIXv +Jw)"!5&C3u𲝈ߨ +tHQ%I*D +f#rSiXq*HTS82D!);xx~kJH4t*:]h~pi7X M\!9N:Eq'z!!TvRS !+SXJӪwbth7%eXԵQ96Nj\FIn%[TAAcwI%rx $B5ܩ%L}ZJ@X(iC{@wSUlS;eP T^,k + #X%uB@VPt05=xHLY:uhNQ^f"Ӫz@ +xnthUbMHXWI(ad[VM%"XPp= +BA5"aCx2eB{TlI)ZPH:SGimM P:MB#G'(M4j`<XR-E?D'ly׋_ @-*2A52,& +M7K4rWp1C,r/h4Ca\U(ZTե!n7,BdFHZ)&(tQ]O,+|'4L VK'D(4!!P9nCz\ZLd "fHb9VuXB5~66J?ffYՔ*{H1JY}$B"BB~H^)B +5&dEө#yx+TU6f,Kmj&h|cNW2Ŋ8:B%CU+h"^"crGJp1\7>#|IL?nl11Xd5YSPd4LZ1;ED`/M +8i(cav,ͧK<L,oZE]cRml)UbN*UlyHlKbRT ͘קwI454d ,{"6-KDϠޏJ't!".lFʤ1 ϫ#4uTR%O?%_E=Q(: +Rn*E٧);Yx'F8*FDyC V: #( m2h; cU0FDdfjRf/pg5Ywj6|t~6drd F*b<_MD"j"M L#%o$#ĕ W%C4'aPR#ǨPGֺ*A +c@HD`H8@0@lx9 tޠ!p˞IR4|rm{ڑ80AZ%O:7UߣݶX>Ʃ`Qo,6:CXQ"}(5R:J1{˯wj98 Ԫeu4hRF=f]wD{WM$ BRnCWT: `=92!87APS2FɝI*׋c&rѠi]pu^75Pp;IS +ʅ^cV +~qFb}J_*a:<˾d:n)zV[Sj)^swH%qᶥ^  een0oGZ{+ /^e5RQ DXaHQ[-*[@HGޝaHN>_M  E~2rI;ν#2#gyzo3=Djʯ }kK-)ϯg`/>d b@j*HA5ρ_zon=fK&4]Щ{{Lii(|MCO M"X> ch^w+<0" N?#v$SgXdފt@s }e:~_xvU)gZp=:D|@I=b$ǤS Ca~3:w QH4fbT"?~"0,XSjgR1 +>& +7`?,AI{ŃaAYӎG{;ZSq7P +k{!,gHct#d+"L>6$M*:sbhΦi2( qCeL" R.|VN>!߭|\Twî]KF4mg^/, %ֲsp|lvcp0H|rMY8R`?\EA LzL<bNȉE+]64vd0Nў@.KVtku`3Cf<~3%~WA ضθ0aۿ #2[Ґm +Yt bWbcsqPDx38.)tyr4y"ߤKM†;OM(%ҨmP7+k|xt¿졭HO_IFjxx%GѬξ[)?y/v/TV?V1RY2̾=-*軤zZ|yL*~X1q=l)0Ye0 +Vb4QW*|Na"1. _K8W>_N"g~ +VAYr,/:Wq׎?1 w"tlUOЙ67Bk<?t&MG`hM ++ڂ< DT\wAR*TiU@{6<ZҺ='JKU(h}#=Naa4U/TUw5WG=LI/yAЖВSaLa(Y +ޓ +/g T|{WHr-66P`[8Eú'aw?DmfEȴNP^xE$$ͨ?BCDG E&sr Q)z_Snjwyr5eNN5rF!H *BB{Mb_w64Z2Vk@\<FhNT`&WIdb%|,q/;E_NiŸ\df_=#i-+8e&v{J/S8!ĕb+;9'O>{P(֠Ps!X\W<\K+ L:gzy.->*:'v\u.83/W_ttt +hNo /19WG߰:݄^U^oh٭IXU0v tE21o wUw/hfgH86^H]TJ<q~(&KQkjaj (,zf&jEk7]nw|F1 5 TwohgLE c4@0~nIEw4t%|UxZ!0x(/H0-|e0B瓲RϢ8yQh])<1j2Sh nymcw(AZ.AS^Po `SŰvoKOonx^ ȕ- ζ!),2gѓbKΤM>+h"q㣓O\8b 7&څkEi/y*j{m) Lؒ^t\k 5rS'qRB%W\V<1X@$J(]ycd"?&+EU析+Œ01e]PXMFa=%a/R{`Ow㭪>8 +jRX~8~tO]^ŖC@b'h[ +R/\\r &N cmj3IRs1J$&eM3a( uު١ +YSfeI +&zp/ Evxsm[l-tQs\qR%;^ؒk3 !33v؄+T )k{4IA5('Hu8;m,lj[ZGN8kTtXalΡB|^JPd% UeȤ=Zo$\DY^/bqͼ37cuSfnF՘_$}#2Q#c*1gڻ;VUT(f[hB`Ll++P#*9ZMmƧ8j/d՞WaxS8wq0+nhm8c0$x!YlTB3V) 7Wf\EcYҤid e \(5Mg+!;IGyz96HX=_7 9:j9蜮}]mBk|^vnlTք\Ckt3> Z +URG[@^3D*n%٫6n&l;T`SG.GVA-i"jpO{A_1~~U#3\%%6~+. 8)4zjTϵH Zij8`I! D/Q p+V8$1|Pn*nx#YЫA1y,5e}2ԛQfȤmVӃ&@PE*Y<0L}44@(j>Liuvpa>%sJ4~I"M(\Pqblϋ:ӱ6"=Rɖm'3;Am;'L|HgX,jMΜ!49 lhvOxEG+i J>1!d̾b۩HƓ9)<4b*YZ&aXh} Bir c@T 58&cbvÁb<ړU Q}nR7BAWv1 {Xu +V+rX|" +Z헭P# >d%5'.סtmJE!2OƢx&8$$y~謆(64)Ҏy0!uqnQlb[\0\gUdCRRejbQ\Md܍ӥ.Kw$w h2`\`7g=lfF,?HZH*93x1.UH@Ja.uxR3 98iCXJbOAV}HY!pwD_A\Q![ zDt7<;pMZJs.ĊjD볃T H+~c +tT\,m +w"5P}0󝓃>5;v( Ak_fe#7NOR93p]hmHFkC=F{.C%6rQ$ԑi$l/B*!n76v=_Eq4.*/OR!WNJfhBpNNGA,# W< + ʇ-=YT(Ad]&=]x`^[:i(7cGH \d'dd֝q& `330'ݙ#|FjL4? ]{grLy]d=A! +ErɰvE4tD?Zmxi>Y=!]w:ĿlLVhe \c3 uZn1@@&i6-8-tVӌSB2jfV22#.exiw\cvfK-M\%3K%.!#OAqC"lKH!|Sy4SDL)9|P̗ /%RHzaZV/mQ]MZLJT8g|l@OT5<4+S,1ܶ^ +noe(pdHO~'@< +6|YܴNlDL +:ߴ6:f[eAH#,؜^AKkISJ;qin/Tد?lŷ;`^ReiwMʩ +"οkI2BB5Ys KFy1h ڦPvb;Q +@aæd*gf$n|.wOi,׀3Q0JᨸwcP:!S@= +pSLa]e̩~-U!3]z/! Wm.|#znȇxᏄl>lZ` >І],]U߭Bt^(Ÿߓ3 $g1Rˮ +%PwE0·`ִO8!֐: +Ko#m60Fqq~X`J1 ;*:GFdVIs쓁!;'b RS8$16P}JMZ#<*ʑOxSZO6qCN"C`GZEax%rWPMΥJ"%1\+B;e \ J jh442KNwR{Wz2qw'YWҫY+E^W0V/. ,@af`ȵdl&tMlJgYD Vh,G>W%WpJmV@F xGA"@,~ѕ( %=~~B1I@!%ƨa@=׻Bc{x$Kp$1SıQYXz jAZؽeq˕oIHwjCZicp% {几)+x-w}޻|R姷@oݠVaQ(w38;2vKa3IGxZc-:Bngx[(25VC[#=V*dL䆨W]>3m ,V'X҈R| b+qI@q#Ϯ+7uGSF!NMQyLBh6$~ +t`B&rt^\=TaʊND0&L%?e8tHe@#)[=޻' `WAKcP/"4;4{g^ΡD"gV^ IEXRRTrp=݃>/f!yg6DC.0ۀ7^p{`AwxQNYQh1S'KY5B'{TTn3ac=%`Yp@@{:#C$Wz| *4Lmʨ'\MP0HG>]L _Vz,,!@կƶl)}<^!znGN*lb Y +WkeGf@!K{>^ @^sndpL wP|%@dЀ8MA_wyreaE3-@Cⓠ +|=,ے 'DRc*lR9ֹ$p}]-Nb|O:rc뎊Cʎ"&sybKQz=<}ȃ\z忔o%~uKV3BEx,d +nQʍ 2q*W6%?7R0]v+K($5=,T>λ"1яRj=<X)}YW)׵c.f@e'>ȉuX+쒞j\;Xxuvq ֙)&C Ha ;lBls߁a}ıȒӞ37g|iqNa.ۨLe{)&Hu($P(t'Y I|֦_2Dq9ig:'dO#J'ܗK5K5P>đqdz mGWq_Ԁjjk0rNp>7L IQjB%z#kqBQ䚟N +Q¸JYgo Ί3 +Jl?vU)$6'oii53*n,_vUpKB\|8}K%V"m vț +P)Yeϵ0(vį #RA>={VH<" O}B,.nKQ[:IHLvscۀG H1zjeM<A]aŗђϲ劫x@/3hHmp1b91J_bsE9/ض;Gr= _LL_zPsvoK@3>nBʝ7m#_^n#{YlRE8^+hsL)%~DqR0,#w~J#3\0Rf.w5r77,w#a̸,!FƩ 9MY+8qt9RHgjUn)a2x!(]K%Ǧk%b'f8(VΕ>CX1Pb +*4Bk?xӐ{'T3idYQ0l?e,vAx^?ls`.Hh3iҪ,-Jf! P=9|9#˛RO 4:,DpDNymEFmbR +Y{[l nNcD0z甌ݡ`'i1@q08x]&XeS=ͅf ٶ;Nȇ:|T0% #br;8Z{ .M ;w4RwJNe ':7$cZN&cb +`)تL+NKO27 N"?-JK!KF&:"(x8r&sl1E`Opaĵ6tmJ[JuS9GRWr0 +/nXIQx7h%Ҏ/'70i-y;w3HuOo1[ A<ٓv'*xh0b7F 1X4b ʧ^~ܜ|lxо+8{Y5YR$֕GrnLLiY{Ti!@xBs4/Q*)~@U:&*;SY.ބ q}* ,r^F2uO [^G:#@%SU4K $=,w0$[Zۚ#-gyzU6Vt' 2*\449yӇ_clVRJY.+E9 4 TkZ# XNIcV> l萬1Dz+p{I-]F k6WMS)vڳ!'kTI~N$%b>\ +By CpWfcUx|>"eCK']HE YE4 :Pu$9v1M\E2 M0H'C:D x֠Lg%O]1Lx]OY2xޛ,*UUEĥF tAֈ^4e%YIlPMJf/&_ ~8{sFLe uL֫o 2bpheFəQxZ!I$Jd~/b̎)4"'/ 19ƽUA@4V,h~ r~i2 T > +~zp_ Q+S>G̣|T8~ _X}/кWq@ŞVӮǠ ȇ^^,yx( +Dve~~N8O"?u~^ʩW}@XJ?n'ʯpIDvrjXJ5^ߨtS̛]RJ+TH + kK2S#2qq%xl@d%0MMeEI ښjJ;Z`s^C3A J@94;tXB~W:3@Ԉ88pO,M?M7!DYJ1dhwt`2t)Ut3Qa_ZS9]͍1 jKX"sL_2?/Y8K`25f͓*ׂ +l MƀknMyFVR6.eicI].9vNq.eH`R(.44$٘`c¡lLfL/)>58.k4Zc þR]YlHO,Fi?,`2tY5::Lr-2$f +3\Vw樝M4.g,+B-2gFMAo|\H%W_hIe$@9#O{"(AS Mrg0 yNc%7OA&%{Gpv.U::{=L3HEm/ 6=dػLel%׌keU{EK+bgɽVgf4vE|-EˣrpjfȭU4{z\i;T_[9ITȒ@<PI35Jܸ ݆. Hp+}Àp緑RJm0̼c-V@P +krNRX@9V11 +YJOh{KD!JAq@]=hU"A=賐z* +OHT ̀ڢ `?Nuo#coVT@5 +3M(%xqYNAl.<[9=g~5l.#"v P$P-fnYPsJ1@ +C%$$/JJ5uE(p2v3h)60v@l/f.ڬgǚݐ͒&bщ_[`;=E0"򞿃he>m=.jh~f}b3ԇB?KzS=_Wxb y#'A 0>Pt/Xxa*ޡ{[fc!ni>5+|§jKh?> ^:?LT$!xpܷZKkS7PQQF:DpdjkT4z5CREh8k/kK ۲G2-K%T +iyᎊ<.49A=*R5.emꀑᰨ(Yd\:@; +.{dE~7'"/)0%I,L9M!"X&zf *l35[uH6*2AT3louDB0-͚ZiGϊtDWYOx~TԌݢd`7!WfBd}&NS$v(_`ȠYRO +*aА`Ս1agr:7 Q K]?ށ qws bxªh'U#RK:$ ˓[B8屮ZNDb%V+8탑}^G;!C=F{%rfr5#c琚L#f~*ʁS=a+׻n>(o6 H^Yd,S i[Λ;_LVZ] +Y髕(\;]l;o688F82U5(kp|2(f]`\۽m K,]t ?&|: `Z"PCG̈W?"ەf>F| Ap_蛺8Uė~I.[?@''2mJ?s?"WN8džfY yQk NӨ`F*ݬh&G}!}6zfIP)x ?K=y2S~~e3iM&4vb] +=4;0jh m`ͻ+ v靮Ұxņvo+L/ɎMtI $'z_b0}s!˅,O_(<Ǹc) jL,,Lϖlh=wB@xLQJG% <Ʃ95_ +eqO-L,6l~^YډD*i^ vZsM{Yi4v/CYH1q@#X7!mng1pJ@9?F*OݡA](4n2D=lx!v``t6CscTl/(/0b(3U1 +Aęo5oDx}TƢ)ToX%Kk8 Qօu{F\ {ZuhD<_GGUV`fxF8-kY"||3kq2g䡅ԯV .D!XcQ =R7zP/oa2#"괎M΄y̷?5ѽbMd@"Nhho˶3R2*\W4欵Pj6BvZwC5T`O[:(ԑN9.iϽ +?p$] ߩ}~4,TyqZVs7]\ӸY"2{U2t̏u{J'[~tqֶZ#< Q1vmr²>RZݎ8p, E#"cej 3'ܕ}ioa7& #W13a+X[rJu,&Y 8w/1EVo&6N'[\aIY,t8e1:KF'o)2zbo#lHʅu̽vF]EM=ijs<}5")#&߽P=W"4x g@9㇀P=H\ CSyƃdoq{)KO4 @\Tݢ~=FQjRGZ$0d.h:QDžۏ9<IO' vA['YJ,Z&Oeu漘M U˗R~iOy9ɯPLxs^_{yhg>p86䭴K… /zcJu +!PmA>hbɠtlxO,T /M"urۄWI SIT$="SAyv#I9 .V`x|" 7aygm +bid~!fN>EyS5;tt#]G>F^@lzИҺ>L' z5\HU9nLݏ?T5[%2t=ժ6چcT,J>PlS +SaYBr'ZL `Bep:"O3$e,DFhM Y {yxx|=e=7`ir"k .pK*%!,\e0@RPq,Ec dPoF hN7*OcGO$V?8 pC;wsrA!C _{Ig)t I|ڀ;ƧrO; +iA@ dk~+t(Kz#Ind.2 rXBPE]P_-䲺1wO>RvEYY ql8a]1;۴5zf"!2}"TQl+&}ؚN̗@'~r;m*: u%y% +dzMDHB0i^9ֲ%- fVD?=Q .ҕ!*M.$ d؛VMHbi(A=%rbI3^&)2 0{edVW\O=lٓD!?ZDB~H˹lx!% %4/uR$<?if L>q>|+8(Hy6$!QwB1[B?˝8>_nu$jAgumB)F)Z&8!룔[^1'rԞlƖ/S^s2ɆA$?ezTzYS֬bp^>]ioD1 uy 4FZm *E3..SZһ BBA*麞Y$0yM:WBA< &#s|!!sXuVƮ!ֳ&}K&I7Iov&7o o܇wr0 ; 8ڵ)Y J`-DX!0 +[ &+ +a:1]řF{>_m6U+h"0 hNi,]$TYDsA +50XuG ݣcKEY3{UFm`~{8>@EN\W-K>DJ gIJPZ>oOZlL{L~N%4Fqy\m./愈ʩ.1gG(FVD:6h{Յ"3 Lo#Ta(d׮]nhMN7&OX4ʹYovhDGՒ7XW磨sȀ|3&:V 6L.WUrVr1)^ҫ }TT4хy+PM#\T! Xk'aSCbVާ$%;۰³h2 + '{a\{VA(lv*bbimN~Uf4oW~`(ǽ@$L>~\0m_-/tc;趴 S,qkZL( >APf-sw55c.C}!f$; .?O4B;r(?&S혠+z4EwwCe_[ XhkAIV*G{3AV\,a.1}pJ-88FsT|"c[I}(Mbd 9g 'l',EO,pY}6INobs*- yr#emȥE#*7°G,{י0{(WJAxbԉ3k揢W$-lXM9bdzM +cIJaPL x0SY(,a7ޫN + (pb"ybu*D j&;@ݙ{{NH* Z~Eku!E|\׳(P:`)l0 c EILZhn]( [ +2''޴Ӆe>-;CUaףztP`R䏸SR2ڙIì+(MAJ=Dsy??̂X)(.rodRJ{~P@ʺsIhB"ZCI,&y5˚|8Q"p+Hf9woYz7 vwA8X3/({B Ͳ wq̻roTZO<@|CTw=L1Oݑ%XJroNiugQ/"Uw0y0\Yf47RCMJ:шaݧY4ՙ ;q. am3w;Z܎`uk[s0Kľ]":yі'X{I!9O%VE"4p wKUink COVb`p?Bº}pUJKa TK?rVb R Hc=0''MB8LBWq0[*hÜ !T/cg&B2*;^/jUwժx1%&+<2ZB.JkgM!TjhYjR冉BPZ ^J HB $p[ J$,KŬ R mň^1aT׈/nyJX ]{Z{KZÄepl(&ѩ<Dݿt[;$zpԭZQ0$ * +?s+2ml#1T8*EC/8֣9@,|}bӡߞ癧D:cooڊXVAGZ `[KSL%mQi™$2FI} dN/K=M+KQ" %fq(!;Oqrv -@B&B^ک?ƞO(2X;;V +K<}[<ecPK͒ mZ,i.p8 +حRgU Me+,|Ђ{թƙz^P~yY 3 +0ME$"K4kCK۷kNuqmSn͘6c ,tQש- X sP*ϳ %Ӄ1F,,EN'ky?lRW.cKO׼asRJc^&dntgXE<4gxOe>?~pbU;y3GZ2TQpaS 3TVThw_OT]Q'!y?蘳 +L5uaPYp +K:tC,:rl`y_thΊ 6eꛁ4.Zө^ZN :1(E9TB0=nCkl-h"CeIȬym꛸` +@y2Ż$Yh$47{fs++sKy8xʔHmDIew !Y?z0 7"z :v6mCD,kA:A2:Ɵ]!qO-`BB@+g 2( Y!M-%4ys ͍4=lB 9Bt!F_vdXs!.#c,xs' 7ɍd1؟D"qu 3b``"~tHZ̏qSxY)ɪф3"d2 }~7& W.+A}]a?h HE]f'];"=|3r,e|ߪOM*FQ( hd Q (GͧQg RdXD\tJ<밟K6cnD&Ÿ̏B1 3GIfbl(@?#KfrnCj?bĜȵ~5Ɏ~/b 8?V,vVul4?ġ/ +Nl.h_! aT@ H1;rb`O8l^T B겇eN71L=BqYn!l<׏AhO8ǟ=e}'TJy/p!?q-3Ԉ%RɟN@1Gz4eW\O!^"?/Ϗ $gxS'7\)B9=~jbe҅L4!Mv;r•h;SլH4lKk$ TLF؈>jҾf5Ԧ*=e>{5*!FZ +83TUicO%>\"ـ4 +PY]Ffy Uv}eQ \ؔ,}g;p+y_nM>k.>ϒey]v) 2יs>p7Un@9LiètYh`5g|~g[>5u `2_a#Ü%T힚l䈚B@>;e(fSJ@|6 d kC,_(pRHttEǀOO~ıWV~7)'2>stream +Pk6N=Y>cEp& W28*i@by\;5$YD+CÓsjY61MBG0S|Ap")H#_ed(=kr~=RU=|X',FkkIP7:Ğ09VôEdMuR%_d=y`+.PTE0H<8j-PNֳ^&H%(jS%V1Vzve=&Rq[u$F> /&R쟞H^@ҴWW>$)-_'wDDĖ^ԙI8Ng%WloTk 6+y1JR41rܐ6LFax@pxk5wܦHl;ҳ[ "ҮeAUb+tf3k[D萁`|ߣK<-njUfs/w.+Z_.s9N*=*uc̣?ɍ txU#g[>qccJrSbxX)_e&S9DT*Г;6g@Eon."!i̭~[D=2lS $4/պ)8}52Vɠ_zoaJγF3q[Ӆ%J@dq/RE/zS>g.zA.KY#Z %1 +0=[DBLڀ'ZǓ]p.+ &J'M!7'I Pi0y|3(*}Cv̋ȣ%,کˋhoҔZ!9]xcd-FxADfdG:;RyxP,z3,"hxTk9gŞ١#j +L"b{ɤEYA>)C% )%7pY5%g;\*/`pV^_z7^zإͦS&7]-MÅ0X qS=m9<:Z{OIR%")BP]mLO5Yd[Kw$A +uI2[Y-;Kڪ9~ +mؔb@ 2_%%Sb +fu4mIJ;q?k)tK0MRJR:08.ꎨӽGKtע*i:SituZϔhN|ŽR=*jcJT_uUƫZ UROƃ U(ʸ>U"]-i|UOץ +k] M'.Dq.PAӡR5y' M&4Q6%ݰgTў'"e*_O%=?rdn4w--)cǤũKCYC|_Dzbsay9o5Ĭbf<#::ejeQ֚1pWIŵy/>KH&OI~Nd\?R|6\Ej̈́c +2hXZސpqbAc3n᪷I$}{W1軽 ){Hs&0߇2 @ph@ @ DPXd6^<|xMxkG;_y ^f&c`&,UQ%+rЪ"ĻdFu@ՎLy qC^*cPd6 ٠=ӢC?X|ߌ+zj%AS[h̒0M r" +e$jiC\)+" -hVB5Hh"{HBdBYΠCqP.fVD'"Kmh+tm\UPIتJ oaUgR %%d\B%TOS -9 f 2QQQhUխjX?0 cMEw@saMT!Ց"rzO1H_13c2:S*)K-E := + {PH}f)L#5q$ q&Es+L44K42mK! bC$ ,!(fTQ1*(hB2D|Lg,Q(фߜB: k?HZtu,c+DN?S^*$3j"Cqi-'N|7Ǣ":D,^mB%Ƨl2! +'q*e\<$]/Cw0[=hFDhT~g:5MA5fSQEJuě\Ƨlx>qs ov&hTu5]U:~}T \?/zjv_kZ9=iϖ\JR+MS#dW!ed4s&+B#Nw\޶#FDf`4};-h-֝֯fJn[,uT/c]Gga_ӱk[ŤѬ܊:߃h|`ITQhO⨝}-,;W$SV!~RJ9Δ3})>yhzt\j{LQоɲf<{pų)(1H辆ӏJG4~.!̩D?ԏpBe$J}4!mhG ;d2Ӈ*>6'!1ۑDLk!IBs!~5·\aKMNiDlx4ͱ1G۱e\eQp!4n!W2s?ºil6Ҹ/a'!ҾkXx"NQ/Ed}U*Wh~V-FX<)E) /C +]X>&#KoBU Ԥs&8p#,ϥJIU-;jZ{7,CU*M\QE7ԏFrb4ڸلV&TαX65bS㤬k#qUYMElFM=L*B2$R15+ TZ07n75:g(ƴImC;nc9 HLJ*BK 9L't:@[H14_CR/7PZ-WhIU|TT S+c*\.4QBFFH$؞LG22sGg%U"Ȩ2G-MQY_Ԏ.|z9IPW]${t4d +<b !"S|%vjyRf4A^Ί?3)/>-K\%J)  )}"!ulOha"*^r(iƦ! ϞCJYU3d4: +30S00Č@DQ Kzl(ъF״&"j8nO[MEQ[Grc^2sYhGպСbA4RISOpo8˫tM0`Z0lsX"_ID )cT+Lz+6 t ..]Qs锘KZӷ!bA4SC'OHs:c13P!'ZmNi0]1Oq^~FJ#-UֆDy4 +ѸE¢1 OQ\eD&rh\:_ +VnYp3|3:W'YE^ZI(xS>X RWh.""&rLp12SI# $ˣkdcWdLQ}iӔB|I N>FB"fZ 1 "U/Q|Lq_"sCP~,lcy6 "jdmi2i){<+a5jEk/490Is6߬5:AGqm,lx U[Gg#.bGޠ_鴂&hEp7<&Q+Xj4+$CEm2U*)Jd 4ϵ|D"E _Ƥ$,b,1\nlXez9X,:QpHxFj^\67C&T2G'y㖬 é/E:B`IXY){ZG]5A#MDk=bhR AY +;oI\ "tXQ(TĊR_g5LU$w$HHS\'=Q4B"F{iJPe1|QFA'+8YD*N&:: ,Jk:ޥ;WZY7(XĪyvϩRI\tjkj+[(n(B'+/U$u*6RŦT"8$K" މԞFxBqEW yEF#MMjr®h={1jA+3!q*jZeLJ}Эh]R1J]]I)nj#D}DQXASL|JC!SIOUn9N\UΕ-u%FgHU+i$3Ԃe4mKhK3JM+l9R#֫iFEh'%hw?Z7G+rdZ.N:ts2qR"RT +vH )jQ8eJʕ +A!l!$d=N UbLlꚬH\R98AHbZoߚdYЩ4:,E*gUm9!oE 3"q+^,:R5A4uڙ(BGQh IsS|)C (@EWC#:> ڼ(ƚK)+2$B>Aױ{tu%l\qݸiUDe'F rNJMpN!%QZ8MtHj%(FL'˥8>Zv:DD Khik_)E'f;GdU.zE_F0p$gk&F{xv +8j,VBEd͐.7#-j_Һ?Cɐֺ " 'DOޙ edSSN5'Ȼb4{bPeP"R_ $oNP8OQX}B +œ2 !>r(pP DI$$9,R`ШV, "&6Ha(Bkh5TB ӌƊ }rO gY`biLh)K0muj=Hr&1>p8>K=Z.7vIkܸ"UG\ɿeK@[#WbyDFO͛Vbzy>v![XPjo[)T|a_oV?M a@R ,1ww| 1aBH\Œ(|!Y^Xl7bm/}I Hb~!VW9pIUBqv0L9&_F"EX7%>,*B|j$o*828Hno/ z1ΐVP-mwQ*ʍ1G\;jmJz;^| +cϖ $4J djca@i*!/v 6)2\2;]>| ZQaVGk6?B]`aV MgWI"*ܑF0M/V ~"JxP[Vcqe/@Wt "ajHb +~k[<ͳV;3W^zB3d.bk}m2ә0߉Z4,\p2*ht,% nH!/bf1,>` 9@֌l." fHL} T !j+|+ [/ +~d(;fE5 zLVu`|mrԋJ~`^󉬩X&eW)Y\~bIXf ]ݼsw(<'恟qwyH>("|LT}٨(><.ŪB-bٗ~(%`.o-EI,250 OƮIqi'/ ,ݿ\,EMKڿ" +WؿwGHm1zCcw{;UGUy賑3ֈ#Q<b_;^!J(CZ1G] tgdֽ~;k/<'Pk;9\ά؃)ɒ9ꯖWȉe8U?̨h`6=)ab|&J}TX"I} Y^Th ~' ԣkfBp )㹕WsͰBk,Fй9R!@,xcUu7Ǿ?)) WԄPJoU+RfXGa0h+?9PץlZ"Hz4?fDTfA ӉDz`߿+)kԀ{Gm"(Bk1g1FCDJ]+6ظb.V $u q1:_[Ʉn7RvT`$[h3ڏj2[J-~oN*8?On(I-Y1b?༠vog5(~7x:'~6 +)NP~"6(p A!7Pb~=UӁ ϞU:gsq|ʳ uX;=8"ȡÜ55v٭Y`efNtsu}J]1$ǘS ,ۏ%pC?ҬL٘󈨘SØ?O My ]F ڊETp8g?þo_1;0HPwcǙ? 3y7`ԔaR{jkg~ *NjY~6Yt)R.U)|XB|旤w|Ā=HS9 +%ar][~:99\*8ֶ,,Q4b\N*~R4d=} Wl>@4C h5@֘HN˷sr O؜sZk61 I.0W}'8.Y_L:a5{p >k/ %3NW`@e$O`^LnCAqN5 L 'SD _lscLwN{Ee0C1x ^ Ez?a`T!* Fca~ER +T +PJ}pT3b~OrCR(}ZCcq4[SZlfb~Va̼h5CUTFƛf"U[-yDb~NД!sđ/K~"5kt"Ik̟S?J1N8 :-6%BabzhxQUV/ՙc1'Bqg8ϒB89-c'}ڋa'D%ӹ~`]>pNjƤE5r3,3&(_aˎSia~鐹_H7~-Ǵ-WAlG %G:~SEcN2Q.GZPt_G"861c.v,*H 4mha>`$8?*7}Ue\% ;602+wbS+e$Jbxh?j]۫e s,80X`^7؃!B-QSfx(}_u{a"1k"_ +̻?8Z%dB~eWއ)@ie$xsBkc>>v_ 8FӑO7w4 jknx8b+f:}U/RW~컓kqo^g~QZQd LFe;j?E--' R/։rͣ e[9"JƢ 9g~gE'7yzgtұ a'g]yKxSł,;R$>rT UN"cF(ʝɔQ{淸s}2~c_r`{8[?3T),j}ۓӠ@]Ik +(s }@T} 'eif +:sG?f !K|3?nq->ӿ3'K2ye)w~dc0F](Hx"Ny&B"}BX41oɎ> Dq#T#?BGrF2tANe;$K AYKn[_͒pp ?wrj^2vDdƍb!(Nfi*uIC2 Z:8KhwsĽt s\:htؒIƋh[F2b̍%SzVK換K>Y2ULD/- 7)Dq/ >6z^Ï,;j}ɏb TŭDRwΫ3Of,K~!v7.t< x&,?ȍA~7Z%ZJ*@?Jͦ)HV*;]1]~(FS^Jw]UYȗCu3҃3yB:$\:䋊&cxw'ziZۃ1pK8{*U +m35 +(ʲyۘYC|X[_~Vw1.NӐ=Z8 P,c7=:6>2F2iJ4j#dL4~@(ŏiHd[Kտ~,ڏn4a~ +ND|4S=|-эXLJf0;V4AJ ߱b _0${. 7:gnb78t][HtŒ/e ).|rM܅/&cGU+X'zs4_F ';=q =wU/R}iL WPU4#s #KͦF +՗FgYkz[# j (];@-hGH$,6Z1vW(v4*|\ ?4]9|#LA~?%+t[4ĉ _E0=\L[.B?% g.CCfq2DeE?Py3\/yXZcl\|oM^ |/|sn[wօ_C5ґyd>EF]Hi!2gT!WEx@A&tU<}- CQׂs7Jf_qd`YL.v[IO|d+dl; ߋ>%JYW)֔:Z,oQ J +%mz<&j%}<6i+:*=12r[?{x휋~#DJ9, }*=RQ0F +Xa̕ē +o{i_;RkI\CČan7d5FoӢ]5Ɂ߬? iPglS5+vY f%'R MC12Ή`>X9q&$ʑFgCLWٗٽ N0J&ȁ39IH!7L8N+7$gr/7Z6FLuQSS=,#nĮTnP__2B ܈\5 2 ܃|PwN)Uv(F7lEJ陮0UA`Di%}Z e-0<hgYy}&d ęhj'43#Q3'PoMT{w2:G/<ߋb$ tUCpfź/{NcE2lVjQicM{dd5J3oQ')5888KcV\p TF#BRF=Dqqm`+## (rLt08|c|$:RW갘] W|o̚<`0wFN-di bbUTF (gc U/SLmJ{ܹ%hʲZ(~50X*?2Q +n^9?f轝C$/J1 +wz)ˎіίAg\>̰ $KxV價^ +ڶ)U8k7BҰ,~p Cap<#u_?KW +B>G>,x#z4vj]?+Io=˱q J}q4{Ƶ#cފ"ʁg5nb%jYN qg;/J o"iG=sg_9E"5dQWr,6о/wADu%:.ff_JPIfPA>o3mC(/ަM$-ٓ + ѣC4h).DCex ؏z,Rkb} ?~&@,vU8s [DXW!ӯ촠Y3-@=e ޔxGy`?77#`%\*О##=>.$>UaCD\:?}ODe +7yU (U =9ؗNrz L?@lgwc;Kf@?Hg }]'*~n8po,4F&9:Ԗ7'}iO"5D ĝb'DP1D/+:E Y=,hy,HDX٧Ȉ>Vb)mL'kL=[ +62[rh>Lie 8Krc;KVUY#,[/2SQd!D3}>A)8FYnkno>5N]-҂ +ÇZKvg==ꪌjUG dj<#zed8uz߻-L-1.Zq:XC9?!fz8NɤGFxᲿ2ԛoZ#դs щ +[hA. 8-q~HdA5ngc} +xr[=ہBZDe^:YpdzE 肬^G¯|?z 33Nz)p)\xaߔס'_t)wl;P,0úH0SB͉#5(A[g8fdhhNWJj RC!Jaj#^8l d +kksM٩}Kr~ y>< ׆ w;ʖ8Bvgk? >FYR7I+C;~^pL둬2R& ].pC8~|@@c7@eBel|u` _mY'gЃwkU_,uĶ9c?$OՆĚoNxy9 X

l&R-r5*:}W8alw%U:!)62(ʬEBtRCBB8mLn@(NnV$0e 4CXuuAnkg[Xn](NE!4`f6moh^hihOFh/2- R.T@!ϋOv6:s[~q8>VWKru #J- DF̵@)up,q:ƺqc qjn& {iթ;](;[gGp@-$>gԃ?0as+ + +/HH+UlH"N!~Ӌ3?Sn-O1]?J!sB"!- #~="LK"io#qp۷Ak멈#cYճ*TsP#a$ Z+K未< "K YM5pI̊8L[ +aE}4 ؙV\k>}494p4&mUpEJN2&jS~5>` Ɠ'𢡟m^$IU?"uwv)GbtVU ʅ +jE=۞?eSgǏ*Ѥwɻ=P/@T٭ZӹdX!dg }=op!EjϽ=)r$!}3CFbYNb)8jp'RԔ<1m +*M BMS}=(৚=qKJa\si*/]NA>:B>왂7&ږB}dhkk%t$]CXڇ@w>$|-?j + emIu+w5~ ')CyUo߲B?]U?z:[Pm\nB3rTW}~fP.eCƑhc?: tя@}N37vL 6Sև+â͑A1?I!O"K3?;i"7%~L=}R5Ri ].BH&MJ=2?}zL I")nd~rO_VhS49Y/5i%4_nBT ^vP2F ~ry^s*bs6~vk6ѱBӏwmBP>7!=0~mnjj{b?y:C (3X ?h⟀n:>Jst$gx6( l`u M7G<ím^5**$_ +VQi&Di %Qj ļg}R^aQ!Qbsu|KjDQ\TVh;N`~WI ,dm Qs+3;0_`aNL\U/y/PTajA|'J;i2-?Գ +[2zŬC1&Qzn#5dod@3$bY?KoNJk?zB]Q-Ry +6Vԧ7J]'Ǧ42eQ/~m9gff$!q\ps}2Č)J2)C1; r w4Mmn?L,Sh*_m,?_)[ݟ)|Or= H>FS:FϦ׈+߳b6s,FMiY 2gY4gʮfq`Jֈ@;AOX4/]PW*ZAKIbMM86PS2Ӽ5lA7ܫM2. |?Ĕ^=&Ki[.~wRSlJ)EdvhN -*Sb?xMtOg[޴et$V#^)QBIP2p,a CsX/$iH$)%9\ӇHW}>ΣFGC|IǮ@SxOQқ7>n?5AFy `!.\bm0tXN*2&y4Tf ϣduCFj.UeuXK GigK\.<B B)9 ~)j\̘g +cr_zD̗Gz?5+gƠx<14dfJ@,ڍ?2ߜ + ~bϻgGw-=r > $ڲ +=J6:AV# S)1X*^GUKaM!֯f14Jn,gaEɯv'M %>0Q\ cb~($o\w퇬4OHFBRM*rh*_'emF>X@? %&TCd/ 74w.|#U~όZ>ZO-G,~YOk7E~q sɑpL4PF4Jp4[sY9긟v[jhx@QBHhRb-O9+/|#% x͙Q2ݙ?h^-\{[%*kF)X'w}+!L4hfbא@*NҚF(<ʌ8Ⰴn8fO[: |)yCXO)( '*_8ZNQW [vt)'cJOxP™WjQ:X9Iڔ]3T5^%a |a Q+Q +jTc7g~gOOu?aBtiᄙئ]d>ß]FU)r6K"!Q(%\e"$f𳨈?lq-BMi%CXCv 8!_P ,eLODM6 +]L5De_DLLHW}|)%x%%cdotqv?ѝ9Ɋ&i"MH}VQmEۿ=+roql7$gdHjG_NHLRb_.$֋‡zMQTn0jаX?Q#!2±2ҔCfd#{{ucr&wϷ R.To$Fi#[s!pb<]\ NT Gr]:Mgުi +CtA;Za7.#iw#: : 'G'C? aqfSE +'Ȍ5 +-lz#%؝OTrE'X'/7q#3rPMXJ$qIK*q8XqF-0y=$HuN }̝qc v^ @yw_]&'4N%:'$a +_D bym8%ؓH/D~9 uIN2rXh8#\Q&}?-,G\L?"M49N4%&It1H\!q/4$:C0>f1qzH!yJ!.;!h*iY45}!Źt0iiH>7#S9۟go竆T KU-&Pl@iJ zAC ,;\ffaىK5nȟhHޘMAT!p&AVC精/vJ7 pеB(M$Xgy4TDbD"|-0ZDR^#P&BtVt>մ!RRO%H+V8&()t1Zo;1,*,4Hɑu{ ~{w.;]H8JΒNH_"b#ar!ZUܗ:RI-dK1n3p{BH#{'Ó8HKEC%>ywd`iM8{瓭HuHpҡh"!K9+;K ۰"sީ͇Ug"j(^_"AME +:71UcBEE%dl_V{'ؑ+t2):~Je٣aڟZK྇XKSctD ' SPH{Oy&Ά*Z943HQ³lԋk\Pb`Yk&9zvWՀHl6g'܍wZ1pxq_wңczIfkm;q ?l4&<'7A$ǠO_wuzx.Jw2}h!.J寿ālT`$ޖ{X"iۂ*#yp}ߣ(HQ +wHy]j< +mNT$h" h? /J"^{*/a'x)gfFzgs"*'DS;SړJ](J"T$xD){T x|.<`Rܟ*hR/I9auTF"[!$Vb'ξZqkQSN (TW=&6O@@kXӟfLC}hDZtXg#+uZ2dBo6z{cI !KNT95Hv[;K|Ot;zU-tUKgKQNz*W,Uj-u+CRJ(o68Ǽp<[]]b5 C[ҚbݒY%Z@eg".wVV[ڒ$sHݒu[-)b۠^{A0f ୴Cb %gR }E(Jɒ؊ߙz܀ ֚XӴcl),8–8^%zoVNժ4P-dZN[q_KNR^K)pwR%0xkޒ8x ~za[{7hJ)eԦ*߷z%)-GLt변KToHt7+Mn\-5rl-i%+gۻ -IP䮚fg(<Zm%sain?-_B밄cr XR僈@q+;P:g.ܰ-]LÒL$W(pt RD ӈGxL`pXb+D(\$|Аљ3Ԑ’Te}ϐBTNlDg ÚYSR3QPd& +SG*KoJR" txaEaKz`5*̥t^wAԙyiDt /UBq9*S)BEA&VawJLcw-gf٘D[)w\t|G"22=2IG̫63=@\(7H /kyG. +#Q456n+Qh٦xhPER!ubOlgp̨Oؙr2VxlӠ:duED@)/7.A34b%<)qΤKI{#|P|w&%%SknI%*1ӊ םIGtk:( D:m=d54.Q3}$J}*(BX<`'˒Gi2.x2Lky0LZ86#f캸Bmmvܑx24_jI?˒!!myR4XfJPagV]FL6^A4QJb!i;Ilʻ4h3_ϰjƱFUiLio"hR6ݲ@ޭ&Rz=Q ;Z6tf5x>XY + m@- 5c2mA5MQ *̈́8B?h)hCp Y$k9\ +bDT՛&TDDrʵlD_0} *`qO)dm2-mW10ӻ;#qXh+L-ѧ@yѨ9 I\ڣץ6S-Μ@W<ԁo 3Qk!4;L19)z薎c2 +i=Q9{*rD!~pȕDn9|.P[)Tɘy&Qz4q1 A~^E#4Zkzz (,e<+‹ JesOL= +UEO_ uPM!6%Ŋ$P+H=AthJuFޣFARpOu6Oڏ%*54G(ˍFOE4[gOGx/)') Bѫ+(h?XTgV}-jJQ k?тu#|5t}'o$T!OGնR ]Zm٤P·@:҃%#hfGo2K9V _I*.Vi!4"SdnC\L:{m&7P 2M XfQb&)6eΩK7⿧Q^9:]IoT(!LQ)qbzRjT`+:Xt240Τ4J7"OmDj_A48WA\$r4ue/PU vDwec +!( +%)`ht EEr0(RMI]7Ucc\uթy% cSBa+mϾ3㫶TU,ˑ1a!N6ڌ6zVxLEۯJu(S8t.0S5" +!zhKzdQ; &bG?q* THADo)"$ҎHeb]KVI~S5sێM6HV6UN%jS"$vOpp;RSm*+ÂP6 V! JMx2aSAɿKE☺+̀ˉqIK zH!T&C^٦R_QEll >A?(HUW9 +)-µT +]Gp6lStVWm!23֦;Yl*MdmgtsPRP0,I0YTmwTv>XCe'ݦBch-s`f#^nݺjSqA=ݦ¸6&] /"M\߱_ָM ]TIEHiT +rMhSؓ|M.Q+k=ge7PmS0ՕX;fzu'T _)f Y,M\1M%aoJ*"z(Ҹǯu^lMj:Y?c[ 6?hGܡ`S=ik*UVY­>G YSyܳ4U" ṬQQYYn^v3S+SQ*f/IT"-5\j\N@Y4 +T$7r^Whd4UqC,TKN-h*R(M5ps3" 'Mb0v 9)M];{4U/.4TkˡyM }]>SeZ guwWohf%3UTOd0ԙJmŐi 6SԐYcKg*GTBb۵vٙ9W):H0ZR,'$~!5u4.ԣ@SpMv;֠тTޓr* M54L%|1m5P&fV {K;ӽ +>*S\ǧ{ +%G(~T#k|k)^{.p|]ST/)FSoJ*R{9B2rR)W⟩EHr|=yc3͒5 }Y Z>f*4.06&]ɃQ2UK^9d*G7d*Ihl .d hj]ÎLEWL 49$S!JT#*p` ׂQC SjGCGɘu}mF!!SDpT5RLډi{*s=^dO C^%S_~TzN8H5Kx1< +%RPCŹ*rX^$\JJ@*i/Nf>FSu;bرw> ]j_ ,{b*x!-M,)'~4yS wYb*ʚe9$mgJXSkMtWS>8Tғ2(kL\r% S dU0(G4b| 8!}(T9Z6u-طe*sCen㜅@JO-ʷY`rTs) +s~ i3fыI +ʎ*7s1X0^K jIxd}1Gma %S +ҹE +3!Fcžc%9ˠ_aB#n!i N\z\L%z=_ԏ0O_HLQȮ,L3te-P0 $^0U~D>ӷHlM Sʬ3$=Lň68c0Ք{lvnZa3P(X@I[ R!J6LDbXvT;חR1$`0^ZD}a@L/յ{ۀ^A|V޿oP*'EI]]ؒB#XƖPT]n L'p|R{Ke~0U5O*B#u?LB")xWa }t`*. 5czHP0UZùa*2HT}z ?/%BA+aiXJmacToCLJ-[h5bJ4sc}F4\hL-):f:S݀REZ:o$g4%SHKpn2UjD~qd*1pί"lIdP4jÄއ驀y8o|t>Afj '#Sm`'ke(})L\Mؓ 2UY!Sb8E ̤b:*SޔZ) +_"l[C"}J#T d*iXM&2U\])Sz.3'z cYJAM4xotLUfmL9Ec@1Ar70S6ST-3hOj dT; stFg5N#bݗ.TUM͑4U)"T $˜tTrMu|Yi\.+P/.knW4Uhw=cq;MP5oH 69~5*8nwAU:! T+]FPz. &AՇ4j B!6Tv5d@tetTUX!dE"ZR4D(fHP6RTsF^*> YMC@UQA&=1JXBsp2ݶ@^3PI^I +D{ wAҳ"PupQ"4pΧxHؘ.;vUg2#u@V`AFHVPWP܏m%P5^@1N`BqOT9XgjVXLT[.O5{`PTLiD.?nH&5OEj~|І~*"H˗TВVş + VU/1T2OrwџÑp ם*PJȓTcZ O*߉ S +UgՀ (B:z$Ƴq/_4}Pu ):XTێWpb$99a!j@03TEg 11T!۪BFT p՟<`BGPW-?c2H'*$>ԑ&j9Y}yK@2Tm{韌X*|(˾y$E6`QU:pCyJyEdw2.C~*r+_>T`JṂIF!;Q! =C(7h PQW3SRP +83ԕL϶k~LjCUTqm+=U~lz)iPg6=]q*r~2,bUC +p?%Vơj4ŻPKU% uh~uՐ4Ui'k@TYt`[#9`P2(&%M ;P":kVVtb#&:0x/*ENएrS +fʭx*ϒYPU@"Pyw1xRC"=סʚ"HRP + +zyI6 blUTMrԉ6&7VSETeY *B  +d\[>RUmIpdjI&iVjajHR^AI$A;ʶ(\gP%U=@[R;*-Pa:=Q,TAB#EvTͶ:iLRڸs**~8qRhM֕*>5h|v)(&U3SIT῎gH+lI^,ƵHvs.H5Frg /18t P6*חLٳY%SrhRcufa /1eF1AJуT!@nb* 4O  E$Y)zGVxX{ڢK;R=򡑪8 E\>k8%Uա%ɤ5&HU-e.lR4;*Δ=Ç/JU ︌rVRT"o_+F(OJY@v*)UZDJA匣6&6㔪[R;O쏊*m=Y ݢuRR'x@ ?{zΒR.%~@NPC4Ru1uϳ: +ǂ=mQ%e;oAF+ jEJL:pZ,ip&p+Ubm4S:BB6T 9ƑR5HWfMRY ^q@:G4M6B&U0 sB`8#x\Ň3-7<*Y5]Pqʆĉd,J7˹?ʑA$귑 ̒R~FLlP4GVWM%ST8REUg=z'Bʕ$|њ%YT \é6G-Uftt^"TMF K0R4ѢJU"Vzɝ@)w)*.[>w ++Ye sKvhZPHs%.UA\0D@ZDKs|gKU`$x(I*Mc,U_%pmjoj;,U".sw\ERE4^R UV³5ɻJUڡW-IRuʉ)UIz Qd*ǻ7Vvrӗ:@J~%Jfn͔*h|RU%ìiceR*aid73=^YgbA&ԕF3Muȏ%ӫ΢djR]T %%[_'#ICfwIskL nnV +Bu@yt##S2RJ&}8Tui#T%#~ݧ?|ܨBTГ7EU(o}EUØyQk\a*qUA_=:oU=EXt3RU\#o5TbxP* &:FvorJ,U,4U%L%:ؕwUUO}·7WZUXJU%X(%*1Tn٪>{覬xзFǰ}1XUEݵaUn4_kUiy^4v~jhGT'Ue>uyrPִRj̬VU6⪂-XG8X"͎tT^~r)v۠# [k~ yqq~%eU% ~x]UOq6a0:@ke<w턿#ݪv_m!b@zJ r ylUQ]U=A*emU5U)-t XQc2nXjX 7Y"O6JV@_(,TUmyRY;CTqU%e \&H{6IU4.Fybj*_߮ZVAѭ}4˪B?"/o*S#䨶&L-wjT-SOvП*2dҬ UigFJUhy8ɑVUNڍUewbYU|*b6qVeT̠gU;'5HUA9] Y˪g/K(]3:UeUkB//K4%J#xU!=Uϳ4` TPK-΁mYU2 +B]᯷쳪qwU Ь*ߛ>ÖMg$/ƗzV 1)E h7et"Dȭ52٢UſJV!!eCɷVu-H*~Ah3aDvX.=nm%V w +(hȅ\)7ưV39q;U0 _(ꩮ>`  o*t~aZUD_ĸ&TӬc;ؖU'uJ#׹V%_Fi +_|VɸUM*,QW^ wR[:L'#E˱1ުTŷ) p6)T+z7᪶k[0t|:p~\-RJ72GqU&qUHpU/;ro⪂CmW|5&=eRu*:VSr9و- +¸C J{ȋQmg4X准*uO*;R8cW\U-{3pU7!ޠiavuZv5FݽDٰK#W;dXWnU#;z̵-*er~C:'=}v}ંjfK|]n!GWub}p6Yt^ M:; DE@a8@X8\XؾF㪲۹\nYͧ(.KW> .x$ssUb;5gA\,GgU/6ҚRZJw'o5t,yQxgMcT ӑ,CX5cT)5S%܉BXe9Qa̐@jª6Ei`U޾`J%K$%Z9E$!A``*$B$HHvF9xi32 x>첓DR*uoIa~ٯcϞshho Cj_lhHuWº;[_գtU3}7U[BLu<߯;P-3~MWuU}vpJ1y\eށU  +( E`/*_"J2SUf g!CjaZcBQE%w8 m\Tpd8^IQ_LT[ ~ySqx" UAѫRN{U^oz#-p6mT_ P 3Wõ LhD5({Ug%vX^_>BzW?q" +_U{N ׫C+zUl6 ŨW%\Wwzj@^0xUjԅp'*IiyG*teFy*gL4_18.Տ-)2QDB^zbQ>tlUii;--8Wű7U-Vvif* + lc5U9ʫusyU"F4B\X{Wu٨wU.x IXjƚ +5TFcޥ'bS3Wa= hrW1j&]ܵU`qҫNpUUNgGJ$<‹9=ӫq="s"T7:<_gouvUb;SKq`dPo[U96zpS^ӊebeT[V6 z@NeH U㓁v3q077#2*F#Hg+Ý;9 b^UTsVbW}6WjXbV8d{@~FaƇ~n3Ai_u胯 +O٨ֻ<^*Q^op*|r_OIҴX(U#R$tܕDʜ*>]rS`S1"G,4D|DKk;ˣ#.XxU&WHkXH*Y(j!}BIoK^UZ܁C*~ZxFzUJUXr1P,î۫;UUMUӫJ6պE>*ܔ^eM HWUM/;AUİ3_U}ӤxǏH^"@SMkhK*$.Z R 4zU9EݿW6/z\*8Ԓt:6-nבcUOW] &FOS4~Ī+Mh+鏺iwȇ\YUO!VQ:}xSӰUdĺhUL=`UEcRCT!{yUiF2D2VwVs52YV%`\U7{=#ŁV5:nlBVXßiU +ͅ@[d!#*,5)U] +űoפU'h#WZU<9Pj&B-Ja$*@MZ$_볪$z0 OZ6$:I[C4UhU߬R}ĐҪBwqq N|,PB$,K@yD0;6;Y2Oǩ=8}E4jQ``mwfte/WDyc$J*^_&^/ٝ^ S"+\uR|Uq1 0VeiڬN0=#GdZ-t'\%!O"2C<_ͯ}1ttB寑UXRѤ҂Pm|+!:R cg.Xl{M199#5ܿjβ3_!;\6uVIEͱ#WZ,&0l71:g=~Yw d֋n~=ތ$d˔hѩVܑQ{\)VtM.'ʈ[U[nj9is/!DAB}xhU,j([5?oLMUۣ$MGu7,>+mtzCĽaSav q2d=0w=?I ; ~eUO z_ s48!BN7f?ȹGVr +Bw{a)SSNs>pDaK !Z}pWQ6޶*-A0Mϫdr4E TIJ="M)i}k@2'i` MΆU:9_h7.~[R<s.dv]@._m.QEi[4iJkPWj{W~A")9D\xIXu-UX$X`w^YaŤՂ}ۇȿP) yš[n) +1y[3sä+K>v$Pꀉj~Fu7Xv q}!-[W8Ra:r9!b +.>6@P!ZE(_'01_W1K[$*}VHYg7)a9U*OTPD8[4a;0Fmb9'o"L2UE>.nUط F" }E#M$ ILPI΅>F}xVh6\0يvR1hE}Qn?=ʅ]I;ā IAv* nOR^|FQbI*<Dr4%?-1cFGnʁ.Ƙ(\J('@tFRLVs2n~M&f@8荀K!Q(sg5m;?ZB7yb+x`;Wc,o99e<3&`U_0]0  +dmKqhEK&f/=Lt,@`!Z<r6 +{ O`y]#پFMf%ZDj̳?>&K|h!SЏY eHygY%&.O&ji50gzQ+0 ܰ^]@>hsDQ|PS,<,jN_ YNa׻ˁ-:2/ҶiIb<pa]?{ahaT^L!d/ao85M]RN8o[JZ\}1xf^r&-_kHEl?/ 4wq-505߱p.X=#{K(d6VPkXE/#~_7VpIKꌭp[bKP JbX"cաZ/۴[yS,˻}M3!Nֲ9]A)REcـ1SZp݋foP   me=n5> +, @%Iz·R{m_WG3HPZÔ4+,ղm6[P,Z#k.$r,PBΡ{ޕ'F=rО9ɲd=Hq#бm0|9Z^% 7)>_p?!zN)s]SPRa_V-w[Gm-M &q aםO5@+arZ2=F`R +6j+j= v + <@'4휐& /Dr{Ko7Ƅ H$mA+~ꌝ2:tv%閑Ii8kF!bNjV%LZLP'$_$OPʚį~fW| 9䥄]Dl/-AT1EV_eLQO6i0P$zUR)K%fԶ_͌)<#zYEqϊ'E|YN.H~%9 @ҮR%{yq"l.4GfxL122mf<:^ܦuÅ:> r[auh&v +{YCmN9RkBvݍT1SK982>"-CvK:pp(0d xCcÎ59<%ȬPffC$,X8Qk,@O!u8whVo `&*dm_AYE}/x2x k`nbo),Coa6b(dBE['Qa4l-H90$nDLa3X¢e؋X#tQE4qTk)( Fphq\]bSPbS0&։My3-X3h :\xk A]D+1|} >0^|@Y1Qӊ eEaQ\"#2 T BR;jN tIB EDH> +qd(WXjn uz*a()vz]* уR2"T$7"DŽ)Q+Q yaSSK +3!p~PQŪ=UZbc5".`)hÑ%!BʋxM𙆹07xw2H:g8|o30ÔeOJYmHt3RدBJ=o>_y&:Zfy2W1;PBq sUxՊ,~z/H,z҉ʇպ'o-&84ty[!*~g1#9_~\xӦZ5_xᅷ-[6ChL%͌4AH枊HA%:˰\ޱ8J#& ."M: nĚs +IHwc]DhaMXjufp-A8Up/|}rU+++O~,}xM(uuo}^ʍ1!\nFUD0(!IɂHI9 î +* +/FiT,g>x sQYKSy?cH&J@ .m"(^glwJ B +J9QEm:h4i;(]ޝk~ -36Uf@p҂+]yda-Z[bT8F*Zq){+KARIJ0q&O;. +,`MdIиێ +z *\aJ}8Xl'W+%%|҅p.H:< +m_Zb$,]0c] ]&ȗbB},Fr>Ft EPs^5ݩ*L51|:&eH)KkW+/E_r7m{ĥ]P3i4TCUi{ҐJ .-j$W9HXXDL .ax ϡOr 5>|O8|BQn7kL'hƻÂqk۱IRcA.|PFSXhKJli\yg]NX+[8j5mEEbR,Jڮtqa|l|FYɷ$1?L=4,| p8P3W',C$ :!_c"|›ܧ e;NFѶ5KDy=uT3܏ŏ VLR2|B{z +} !e)o=g Iv]5Ѐ~]+)E|C(SG9 2@lsݺ'pΚ8m:mY]Pj@avKt*f[i}t +׎x~y٩Ck`O9w312Z- EIm 1KP}.s?jHu=%]7zMi!Z'TMq5Uts@I9ߙYmM._.tqz~ T(3Q 쾿4%MpJ +N(V蠀)]P-ȱP@Z& ()]!)@ /-q +GT&-E\JJ.7[P+]tYx9BpvlP +]wj wdZ۟w"J4b/15gz`+o ~Y`K3Mp`9)M rJd +B `7UXh_c |MvnB1 :+q|{PK#?LH.VwXE.^χH}&b[ڗ.4Lz^jH&Z Uرt1˥_վ(%濓/YMpgw]5*WGl& Nwm:Z}Ecrޔ.r-*=Y' p-!}45K!NcIrc 9濐T7Qw4ޅثઓ}Jػ G&JME&]\rq(#߂רj CpqUkeUD K8h6/ +nBҕ+UOD*ֵ֙&.tp7AV*`iFK( + Hp$]pڮL H@]6EP!GԿt1]ûU3.CD:~< +UVf#6M>-BRB9bA] g Wp >V|kT!@hm%(P(&]8MtQtG9 7=KN&6hFkaWLijIA HJ[oG=OA'k~1]1Ij}"z/]ÚI"";>q޲ސ ܄ ݓEEp'}҅䉦R+ +69)džt&;M`k_FaKO@b6 jV0t1ݗtIe4#;W6Bfcb,*&mtq-BYeū@t|R$1œ.ꢒ.0riGi)h-R_UDgI@Hf[Kԑ.PIǟDOp[ Eii\.Z>&>_ŏ +r.Ev$bJ֘]Y4l=0fSnĖg؄.g܋F /! {|a +=\W/aKթD``,Wg>ם4/O`4Ea#)A %NHƑ6}X5 EBuR/_P`$5JFۣ |T4JbUP XTM (y֠ ª\U-WXMʐcͬ$$E30 F?/Fd_{Kd9Š M"sty¬ R! +]FťmtO4O0(1#h/UӮ! +POu7@U'`5kiuBչl_qf$5]Gxhq3a|>rL`E N`@-etjg|Ap~42ϑBGXBP5goQ I[CrZ&P5y*Fyn +jQHW;13TѻG`'= ~M C~ p.BjJ2Rd=t!ŁY&z)O<>˄oo a-n"]"@=)9o{N7ITBI0t8A.쟉(颁‚&^ґ.{=HuMc#] ]q0l"cE`8Gc+5vX[uB[1puA8`]ptDȭ](3Rqh[ XP"~!BB8[G8J/-ή&H`BZvZ^GxHb[ {e>0ޒ1֓*c3vtP68 8dtVE'e2ļ&qWM-\RЅs?I.ѭ a5lSp]TCq@=w0} TXO6|9t^&:D>tQ!8\AF0_.ja*G CU.נ D*ng›J2ӄZrČ :ATNKܬ\'.859PnYTdX-E7a.9Y#Fk ]P 4HB2y1o'PXUp۔_BQEDx$upy9XPA(D.ڞ,.dV$*d x ].Ѕvb Pֵoj%Bʊ){8TIDrBt#x]I-JQ"* )vBƄ )jz4<~ghX' +jIW?ԑTTaA .jHT(Q!_8U.ez2id7oҀ_x}䒢N y +i3U.vNu-螛?~֘;̩bWD*BA Er->f>]uxwJqUbbw 0Fӧ?0)U† 㠄.0˸B+ca! Vt8ai*.>P h0~м.e+#|*.#[BCЋZ.O(Գ]˙BqRMc'ȍ JӅ"ζZ +.jl. !ygƆbqE m7]z(L;vZ.^Kt!R!D!r=\.ċVv@pf?az ٍqL%r 9/_\l"BN>A!9G'ލ \{Tvt!J\D͒wGCх&ybDӷRAWFFp7ʲ@rkB)0)-i$UEF _ +`х'o^emt`ͭn4I@U4u~et@#]{%tVI5uIE#r~)CȩݎӔ~bҬ[fFps~ ?hDv8:&&$Qncw:1l%8a?9?nsZ`A!3reJ\i'хS3{Z/atR<5C OgXᢔ^|,g.L[ X(8^Z&]!F +e{N'rM3Mc?Nw˕4EzS6k4(^utް-6]0H-\qz?GƱ]eT&EtѡI +хpZIgI .PpwԼvD+=%.r{|]lY<aHZ+\g0 ji.?Yq%tA/c^C]Co/GwiCBIabE6,)f_KK} ?bE.^FzI.N +:o _)`Ltdt>1g`43S|] 3Ah;x4%}>hYE!k޲r^@};"RoUdVUһ)oլ81f:x>~Eu-q 81+ >0 "V!`wóG fAɀx>ߏ]?хrDIQctwT3f@JFݺ}&a#q+7Ň K]$$k>΅ aEDŽ&o 0BClY\#.'S:} YV5H.H +\xa^05;p51p-.O-NӶtiJ 0jQau<ʰpŭEGT Cej= 44gѰgu8C*s"Z)"g1b k4gq0͢=5eڷ + ]c) p' AJ]Y4d0: ; TŢNK.U,bvL,H2 ,OaX AՃNz"$ klrm}ř X$+nn kWd7W^^)pWzrJ}Z(v+" s+hHruWt߰@qSJm%0߶=ۊVAb+[ aZC][ !< ++R5+ʲ"wdmF", -+Աdya+2WA]ŝ\‚mKH&bPUAqU+U7 +nRE% +x)B}=8)TdV-pAGobTIWfhRq-LO akXè쨰w5èaho viq8)l??܆4iv/030@Il_ biUh##6cbub1x()vr`U6b'GY K8/g6b)c9CgQMc^cK68ņ*Ǣ +9_.{.=vv krAj@1Wb#cՐNdexGPd}Oa\ȍe ٨TpTHҬ,D[m(9*QLֲe,Zݲ=GKﲘȄ4F\}&T+ZN2 Tdu,fyP1ÜLz  +zP6c,]O@s, ԁc(nMκ llF*gJ=Kl<Ϻ2P?l;#B?'2xAM*P ZFȈQ B*f3`j?kuS8~:n5(\]g +:V Y&3s>n'D˝rꄊSVh`ʋ]{o +-P8لB Z K Fڠ*T# +rS2ީt B>>BS@)X)9,40|6#4ŪBB#=97 S\J2PK!KJÉ#SBeb=)Ҥ𭤈H43RMA  Ek~(( 4_G(Z+E+>2!LچUY( N8dZGPn%,d24ߛEޡ1 +9H50uh ͡ +E YWT(91 y +50(D0}+̡eeG7eM2Ue‘D!D B[cޅ+qЦƄ'&1(Znal0'0pI%˗PމD%bh7z ? bhwz Y mhyvC-C{;^eo/&/ᛕc9bhV4m -кv X#MoE4T,֜ +q,, D + JڽK(򧏆.dhX4c]¼e0%wF+"f졝 #Z?%JK,4zhh'Z&.X6"]Z͜ZFG[%L-a+E#xI KRs%dwHTX@^c4V}MJ8Si6%<ɠ{ \1$YARԲZ(q0jYBRk%*zOlsҴn'SۑEMBoMibL&!}60 V$PJ,DDQ' I$X$NG¸L'70DWYc @.XS$U ϴpH|Z!skمGn)!_eO]COZ@'HFu_܏ز9uČEJ96G"la##l^wB{ ֭.vdK#@([Ͳab8ĚȂ {#}6Tnq#F,׈SܪݙF mM4ЈF-:#>1#hVk6!f# F9AyD ;ڈK@mZG;A@_| A =]Ze[*Bm"J(5ULVEd(p}"­uّ9nwɍ@KD܂Q"jܡIDpn(mv+MxH"FEyKڶ{|; v&o]&D oO paD$tǕD` +ߎHߎDw1*~2vmV3N/.Яܚ-By!pvH"Np ;VpmpNWDH[4q$h8uH_IF"BdŁ$""\+N$DIqg@Gtrܸ2w?C$CPCι!& Hq4ĖgKe1[qB A'0DŇ)Zq-B /ĵ-.e[܄VܗB݈.߮8gNe+PbкJ2\B@|(I] Q/hxq.bθ'- ƹꌋ5..+ (6B@Sjg 13NYk#ƽc3q!y!f\Ww!8/T)e^_, 㚼B|zPB@q +*u`b2Q +G.n)^=S^8 +!2M!0R@3q|qhɊrxdKڮɝ'7u o9TYnH +{˕/cs*榕B(sU6W4*B@28&Qެ)^!圭N!ҹ۹I+}{. +N!*l +tӍ݉3ЕL!q7[~ĦN!s:.ڲޛ8>O!J:!}1UF~7gt2FX(Ds(In}Ry2R=!ITtKIѡ=`HH#D>"DLQtws#.x. OtL&w߹7k7U*t +!"{3Z9 j|k>[ 8럃9nr̟@g㠣.B8D_A]]ı]@\WK‚8t)=A\!+MW:8q} Lt aIui+u S8Sr˝@4.-D_Ỳi]p}uDq>(-@xR WGP`Lð.0D@~}a?bx?ꇢ:@i~k1lw|!e^w\t~ݦ>`RR>̕.! Ixֽ|ar ,>s]S͡wG`졃.u5KE]~b=SQTU$jYu1>}g|Noé ;_}xP X;~{L䁖PDsȁpb# {C+}`(;j޿!v%isHۡjahu!$:gWluC^xF&XUx+Ce:n!6 :|{a::ttXtp:tH:puB"tjAUPQ#9$L{H0s +)и(JWBÊRSrp9T9v +a38Ԉ&D9̡&YXU:! }+áN `08 + vxR-ס vxG;aV h'P ^'$7/= nsQS>.mbن_nWϵrqja.Up$hárlw2̆['\W,˲kĆl)l;&`\Px[ïlcxwZ֐`,a5\:T s:<>/5<&uAB +ϧ!,x{NV~5 zݽR4f;OT<i G-Fà+,`r&Y0\2xYE{ +O0#bͯ _5TPd෎'4s<O3hhA~y4twMr3XflC'n}f&\eh??Gez3ܘ!b; +3f~'W_25eh2PɰE60z7?z m1? icB0FhaXI1X~!$H !bx00 @!\V Rxd_0X=`:D܂!6F`0~n- _~~᤼ V쫧/\IΝ.^R^.F >+ +<} "/!^p`w lhï0Gy2B s¦ ipV,mlό  .[`gHoj%^1-Ip +xA@j2ծÏ`Zm]No}R"8+(tuV@!gV.=+iFcDS}t++(~(XS~zy8UUxU(YUadP~ Cu*TTx>*,*|cPa HMW<o*?bk +EK3"VyBKJW),F + B#/r14>(^8DAA­F &9@~/VP8J PB?!>Ѓp>#r =ڔ{BG ƺ0:_:!p8V "3pM&& +m¯M&MM4a4`3A<`dBfZ &%%~.UPurT 0a/N$0 EP|E"8 QEv)%ˉ &e(6/"¨!BN§g@D4?(ʯ0R'!^pg3c^9h!00Q:΄PAB`B}6- ,_&S~= B+ +BOD_Gf>jyY `?A̔E hπnVrt?:qAU)d~}`@:>(>X>9g~5#,k~A|Al™_=`J3^``'OxK@@,< |m}Hر)/߁wy6w_ہCفV:xi^c~+l0:8sP9X50R]93?9Lqpq0f8xCqcjpx~G7xc7mscy4Cs2 5 +l~C7yoٝ6 +O=%n*cnl~51A@=6?n~o~4 l󳱖繁7?[cp~a]7tv6'h? +ma; 3A6?lj~kx]lc jPj5?ۛK% F  DlB J*$Bl~4T̏3 6 z<5:+1Xvx~?cNϏ6#E)πk߾`qiQJW?_/rO$/3E?ѯ~g?%X>э?8ig _an_͠h=BPF T xr_/xf93|ݐxfpC~fJW% B8|@2K Kc%8Td 4RZ3V3ǸS?Wo͵zT?XM̀j*as܉4'z`<q>0~kPq~x3b=VDd! 1 Wu epTee@b2_t X81֯:S`2(֘K&YM8GkDlyD;w7gX?hc&7*er1L15q:&~[B$ Q ~jp'K 1H0 [` ֬_ C //ȴ~I_Ou^ N +dbڼ3/cHZ] =@\gs)O.+.8dz[^")W $pthA .,p |,h@x l,pY [;A +(н(&~VHO0PpJAA"@~'E ra?&8wc'e2~#`@#EIg|cha_Ps 4؏RK K` %HJr3ٓ`Ѥr\ӌs (HPDD!AXמB9`0psrG]"x"`K_&#}t^CCe!0c(TV@ʂ A7Dׯ%,  s? hf׽~j&ޒ<0:/t}cr,`4o,ǡ~PT p,jQUY`fӯ Eh\N~3drc 4(Xbc z 9ROU?b,so,X R \ $ +c]~D?sa%|=I|nO>v).a +O0]'^Կ,C! }V>l14:XE2 + ?Hux +Ѡq=,6XYV鮀3HVnF.GP1ڮ dYdRG$od%vZ 4ZsbZ~?R @IN漒}X'px%G0ۗ^$ upvs=&|7In܍OZHs˜2F pʙ&!1# #ܨ4> _CE&Ǝ@v1$i6(6:pWC;0Ğr#yPÓѭUĥH2_ڔCܬjDiW!$teRM]!8 lQ+x 섀ۀ+Y)CbBdg_J@uYK-.`:N%aq)~@<*u W~Y t}>' )gй5 7i>I*t-E^jx@Ou/x'T|t.1ꀅ%k^YTMu. #o@fpk!L`e`&cæ \!Z#@ʸ6PXo F VJtqX *рN- F[Xpݺ_&¶@`|$iɔ_ݰR`K6"^N|e=PiGl 8}ZT[W | $ '$fkzrݤrx2 7sT,:uIDŽBɧ!W82<M՛[)=*E>u [v,AP %3Itcn4 vrbS||NG8ٮqmPK`DjZM"e ņ|\,!X{}MIG B(IcX6j:sFaQ#cQ ÈK{JJ8n7}md-F 궴qi"N5@-+FcL0iHW9|lO/#8+B8fq PGKyVJ'Ֆ\x3ONCZnF|(hA7^ jx|cނP:32 +yqJ f5dP!hp/"WdAM?tu +z9(* (Yd)O $jobv3QDu: m*nDTeHO̭ߛݟ| %g(r d-ʭ"i,:H)rGlrg(\~X< "n`W?Ԑ1Ɔ T>ؿz'4sC(|||x\EP·n N3 +5kF\a3A [h,ѿ Gƽ3OK󲲏W޺ { &>o#+C=/tQ:zZ!>qt&<Cu!p:+&ARKG#@A=L@iYdŪ j892#\(9Ls#B|rӓ|CAo{7dD,8]H}F2Qw c#@+8ہ74EMZ(7 w|YVFXp?NuIQ19iL?lV#`iX^"qR9!b2n#x;8mjH QhYk%+ +p!ys0O! Px%J0Rљ8d}(BE>? 12Á(3|8l8'-GvsGdD_)Mw`o4hJk[P* @}rPUv) 9-Tz $R +hpM*DŽ8>j|eJR$K ppDrbDLپ.:gAn~cn$&DJQ zɴ;ƗǹSu$ɚڜUņb[\O;MC"$҂rXYK#z6ׯ}T V'1,aZqDr䈳I3fc.LflFݸXu|VR#ʛWfcủ-cHpbx,BHSWTb?۽eޡ׌uϹ:TE^~IJ6hbU6Je͚Q`WlL}qHϚUR -ӉvA֧\=GmIʇj26Ghc?g)^bEdz'qS'j,?sI#Jg#ZQFcWlHsV4n'\+Z-F1%d6fcrwdw3菴n{?UY0鲒UŚZDw1s*)'fedIj&SM$P.JYw׻] #Vŵ]n9#;RKSNgZj)/bk23UO7ٓ"k2 ^G.2R*t'f~Đ8ȅHZ3FĦ!e<7-T +_#%p?ifXYr V|Nyjv_^1Ud~beT-ᄐ;,w`?mj7Fa]6_e[eԭ n;c΄yɕER(؂REj͟THg)J0Ua&T   ÜF4P`GMWp'XO@) qAd&HŲѬzZ BT!qgQL0DH((BdpfBf݊7TTf;,\GGC QQ( 1ڤaLR&L%UP BO!\TIYO4L„PaIi&Д;/=, Tr/"PTK""sOËR#|Ā +H*jVb j3" a +E(JTD%P`SN|@(`&,JUp0Q a ,h,(&0``5 +A@@ <чHIhHk4r bbz(i ,1Bma0PGVLɮS+QmV5LNDtH&T4d0PWi'BHB+{D/J453'dj<*UZ*>B5N?ꗐ">>P3˨da4QC0T8&d!ԢP7Li65A|gGq b A,X8h 0i"U!ܡp1""@ 5&L!9T)LPzچ0%3!40%BMB&#:=#M=rQP?*v x˒ن,*ITcC)`K>|~D>䡩])-&`I9¼ ~;fYQ*VِP!]ekx^Q­i+PH008zZ4 ~ +8bI Hpe{qb?(J +ff{Ln~C$yr1{Ic .`F[OaSRlAZEjŚЩKm!%鸃*M6tD9jV| +8-3E^G@PPx6W'$=M!ȂJe7qͦ=&.5b?84/{ )baںrMKjط +@PG._zC(iU В@J#=nf=)Ƣ tPIf4̻Ag]9Үuzr%sbCX9zRu;Δؑ"+w_h DI WSu{& ‡L&+le%HG ;;rF;#w& nȕfm(~mJS`uTx.U?&e) >!q=& \`nRfӣ?hz1ZΟTXtfVlXV@ԞLNUsbi +I #O:=64vŏ`>X}29*ʻ(['%K~ MW0`*G2|7:|򅋆_aE?pQж0)j`&1cFW'ס҇'[JMSөW endstream endobj 15 0 obj <>stream +9EnXʶčlZz ٯӓ~A.;p˸5mh ^ Vؒσ}M ۑ 6p緋>S:7夓;-UF*_F'7aO0ҳ-Y3[ny]"֜^Qvu8W<JvY&ӄ6yd2nTZG %,M^P}]2\CBHjܠo6uO=q!J R)t4 +TB^eA;ȌL82쫁:EHɰ0Lg=tSFAܖ:a\e7۪ckpEWjP/"?֬̃<5!Fp{@"%AMґ{hƮ9d'8Wp}٦Z7+-2hQ0wd'"1_ Ց7v@\,;A8`K/Sj'%9/qAQIJF!Bxn\6)0n5 3v2mr~.xo_-fzaD + +=Ɔ!3X,Fo&?4eYz.iKXzX PR:֥ޡqM".Ex R53a 6^ 3M2z\-|@$2sh:, 5U!Sk t$/G+:ЋUy+ +Zm4%hJ& AH p~֕W3A:Nev,EA?YC|Mj,GÐP]kLAX#lV"G#bZ+{U jyr-2ٜ6tU=j( I/t^<>!eo1GW#"xU1(1u~4 "1A +z~㪼h/jDHF}ڀka]R1e:ʉZ} `](Xڌ &q6OO(OQ(\ PeW3柴o'U +'G؁ KK[) ^ g;>tKxJIܦYe@B] fأ+ZqvqL}rFÇ\XH_UgQĊ'2[P|!$LE 4ZC:h#*TiI!8 ĈVIZ:p8q SaHhEJ#!6ҍ S֙X3BVq `wCL[)ת&I*0$xe&Ҍ?(d"x"VY*r gV*F,aP>u5.V!D>8D"4Fv1+'gbY*M`=3)iEe [bĄB2q^B CfLgs}]s(FY5z55q (xE-"P}-lI*5=Za.͠^@W$GrPzl9Ύ,7h +sY+oUk ϹNSp@: 5k$ <(K5ӗ ]d/ FvVVyG]܁˦أRo^ +q&//8?秋Ҹ^G[ú Bs3IDJڇK Rq,g\GA]-l[+>){ C~ 2_2ng aP:`Fh8m +&x`9̧^^W@%3V:@k6u [> w_f$=+Op!Z~!;a=I.2t\H& ^ L~ߏZ~ݑB;>h %܏-@ٚ=G|d䧔بqBP곌aܝ6 Z+h{JJxDAiܡו7{p !Ҍ1\ $i:; NƆYj笼PЫB92pKY}ec 1C@޼rh(]f^buYh nQ{A/pd|ħőܡ`28P &0^1 `HeYu~olq_(J +&+'RO!N-܋' !$ޅً | z6&L 9CdÀ̐Q3.mtPbVZ*4i-@(56B3KǬ?Yvnf +#Kfa=EzKE;%Vε,~|lYܮ=).Þ@C9܃pqr>K֏`Y+)OZ] UJv_vOL•PJ-թ AqE\s2,8f!hdNh =WRbة"{уNY>ɧ3 U'.j[lHHΘAH;_vF{"M76# S)J) +-9TJPH +Y($UFHPxe-X@%T`\ W#S`Hن&(tPw0:7*ܛR9Nx?ZQ?UIC~@?J1$Y ÍǗsh߶[ T߶"f$55[WcQC籠\>SV.~E[xB,@bv(0\L_ž".L8|I@Yz=ǎ&}1lɘ0r?u37>vN/h[yN]lػ@A#}-ʘDUL൶҄r;oDvf"A +Cϧ/ +Ot5/Nf ?e\? #PMg"V QBI׍QZgD-򏒖?~zOǶ8N?@"ŷ.%a j8.ٯ\{ Kk0ʰ!> ٺL='Vߔ%b EA9V ;h$&ξ{-{]=lvq]aaں<k U~X0k>L² 3>;Qu֠(ZVa*[OF.~a0-QXazUd6ߖU؋< l~F>e 1GAtAlA69H`Öug袑цrX`(G & +gyDA>FU.2WS(. k[vTX}]+! FEwݴ&Ġ.̰M%jTzÂ6RaL+= Ebo|aO b +Jt)[rbo!BALL1,ڮO1kPGMKl6abH;S?[Hqu1BŲƺ+Ժ'Nfvm=]2.?ǠaǦU='Ob{BV\)y[q좘EW ̳ +]2VdʀNvMURiuʶ.އcelmb--S4l,v7. ʄ.XfTeeeT2{}1;ye @\ħḙ"šA][iGmV}~f[fQEq @v1^:JYYCx& >vAg'ԟ` .[1A# m ashÕ] ͝Qs^M +yd{04g]X.Z + yV҂f;T살 l-ho IRD Tt@h쮠ރeo9c(4؃chXGC4ϥE(*$ a3=;mhP` z=Kv/N Ab0.R4"V?WhqlLCPBhDK$v4*DԘh޶EhҾ0c4b([-FK n,vQysF6`K4vYV4cWʯVFhD!-,v?"/[E I.F;r6Z1h8GXHHrI[ Kc,Ґ4Ĕ.B44i LZ-H!-ɏ:\0f - >qOGS#ME;ͫTpSwlm m.(uڢţ 1 K?ˬEP&h 0F H6Z R-?7ъ17PUdҘIVǾ.&&J^hDtEE]6&]bESEkڇH..be4˜ꍶB_ЌfmIhfi.a*#%mveҕ!eVErsz..'\-,Ӏ]/j PԚQcRK-hAjjsն.zGPVԮ56Z"kj֤֮O_֔ŵ5˷Fqw:؏kf sMC];v#^^ "v词H`sN-: ۴m9Ŷ+c:!\!v^l{قټ.npy вhv贕;pY]bͫYa1᝶ J[/E&`ӆnڶ6aMmɶKG۬HPIo{X-YX PVr*37q< *}.b[XUNq2)wӐ7o_>`۠X [&bE|;[a7 A9K]Tp\.#=D-5 nOgb;(juf`꭛ξ b< L]{pjK' ⏅K vSY7RU.pz >\ qqn#׉Xb.j87%)8뺸Ve/c– qh548 3NqI^c3n7(i3Ơ{]HWf(k +\uK[i_t[hby'tZttA0+I#)FEx]og +@ gF. +< yo/~ +~/]Ol՘O]#nvt[K~xA%!J37.Z8Ɉ~brᙆ\}.[yv *sÏ_ $&%]PDgki|wkIt"4홼Ӵ~BTVӗ.~R3] _~WM&Gt1Ygu~5ECR.~Li'"jJt'״VCE5iO$!MC"#  bgŭ8o+ |OINu!Δ~NdîEDrQgt!WTW> ~a];Yg'f |ʋ?]hu:]9]8)tާ y0,ie373\'75tr=1 颷NOsFOy~ +~bЏg?]4ꢖʁmKA]>]8tHH?NNcAN~n>ٽT p`SOyJE.@O!KGJ G:ӅtIg.ҫ!  +\4eևbhy(Yb{ +.U[Aq1yqyUdSx b;%t,ORc䃟Y!&ol~W1{0\Ce]e-߳~h[]Bb1=z[ sR A< _&z `>]<]@:]DAMe+2;]jB;]DG0d*ˣ <ww(U.":V#"ta"_&I$C0 GߤlO +}P;QNi`? ^O )tO#v F;F~";:'z.J8]d*rߔlE#eNt1.$ɯ#?YM#?ςB G~{g 'Z>.Am8Ӆ9j +*JFo#]~sV뷤 *(~H +(ElV~<}ICE]/E*-Ah }/J,}U~:֯dYE9Nݤ|ׯm~QM[?WNpI6S..p`oK5X(風~|t21,BY? E.~ +ە]<3 3r/ ]LYC袧c!`BTNnڿs] 0 1$ +OR.t^M"Be ]S`: +]q.8,B; 9R +.U%R&˜~vڇ._EKtELmrQQbX.kt~: +RҨGt1zBģ=7`?u~_stX4"hf.r\_utun>7bt C ^?m.(c[~хw<=}pG% +\>u_?E)$lЀC:6_XEɑ.A ">.g]1`M?x ]GqQ +M{.Їt~tLH2yњI Vt]4'_E k9ҧs=6~jw3\㛅:Rvȟ::c@ 2Y"F «It*o].nW `=G/4EgHP4>Ijv.ڿ'a¢\]a;x3K{DUƌulMnt0~۟)FK4Dkʲd0W.fPJwPfwqX+P QWV~:vXBK}1ᰈmyt|GI]fp*BG%3=C&NTx񬚹G.R̐brUxst<䪷1BS d.Jj!J.3='t)$\)bt]| ɷ=,Mlt2G.f9҇q)9fK26آ2eTx +&޿%%GʸS x/q:MJ`LgQr$G }ߊ*romO{8$lfG qˋeۚ|-]k{Rm] 꺠l]LOe4W:xx(m"iO0ք%]Hv3G޹ƱP1|uni|6{ [e'U]:uh@k⋶%ۀL'Ht\o?패*_t!pLԱT<(n`f.O_ YhJXT%Jpb4l"kOB/٫kEH?Hʄќ}%"]cu WLi9kh,1g5O"/ZRFHJ;%IM;4"Dp$]J.cSl\d+A2K^FU<;֍Hd dF.QEbK/"1=("!ɑtqJI̐tcAf) %]ppCX;UOkà0dٚt[V&E}vp$ #&dJRѭ Òd뽦M̬;&#pnM+Zߵ (5_¨>$+r+Z2u΃BX1!7]y1O&+zGŁ S!^ٓ +߉B5ft?.63{  4]XHVc5]6t +8P;*\\ h`./Wh(c[@k=c&[Mea|2AMiM$t8~D^dA|KCv^ם.6dM .>WVf=."Cf(W53,vL$ +VeR/4±]t:!yt!ͭ Y5ixZ[ +"X/g'tK|.ޯ{݆߾VkKO 6rn_4?Aѥkkb"Fl\5(/#>Z}ml Y| v-pE ^ $׷/^K!쎛\no[㵯LtJV~`b0Ҧ 9 +\DD.7]­JK{|H^ݴ&fqE|ECmڊy p +׼n!`X taUP]/e Sʬ2n6]4 +>^=@%}))ɀM#ʤnj5Q"+MἍH^M (蹵VXs?M#NI2ܥX7梬 RDN kp,]$S/ 1\ !D} /E=6JN7vTgl-U4|.>1 +mJBgHd|5=KUVD|D?W=(<&i$z9/!r1'|.Vyĝg:R^pt]Q >ȓ]4x@5] Z#¡/]㵯+QO@|a\貨.;MopخՅ>LwB AJEF/t%9:][9P-.ܪZ %%q}dc@zB=]QJ,xb,VƁhZmĭZ,+;]G݂y=]~z,=/.\8}#{@;ҟ/h㪱cԴu6YT.US@o?]l,ɘ5c7hTͶ|y/F</{;Ɩ6P/[P0囯`Ӆ*4=_ +O"R@5d颭_Q@t@B~tD%at"Mٞ.A~i2}2A/~A׾EAP*0ˬ n <:>%-7-WR]-c=]̣$-Xks/Τ>sTo+KVV y71R >HHNyȏVF56(P_RZ.zt{#*| LuԒ&y۳&9ƗSoWz]xO0 T ,OOX81-o Zts&a\Tk9<]ըJ_?*_#}TĂNdl6hE +)˶Ck2du8J0ЪwR=]@q9y٪/,R <]6 ջ=]h$E//p^WN*/)brBlˢJt% >챍=E5pS^7eBU (6?l\]n\rwF +R,,-DlN7d RV.ಎI-Wi(б;]EUk:]Lq-Nۉrb:]z(d StAp + +4F BbSnwuX_7vm^9&--Zhʅ@U:.Te%tֲJhyj ԣHqsRe9w ?'" 8U4֑"xu2ǫ QDOH4]8KsIt1x8*KOc&@@d @'_@F}Le֜I4Th$Fu\eW] |/Qީ l`_tQ*r(o0b/"xb<.T,Favp-tv@M8=%p5X0p@0|h*+Yݝrnu9]|KS6].4tɣ]/t |fq/9ƧtQe1X#邗.NMjL taOZa9QG.Rn%u,$`?Ib0yTn`ě.?tb(MkT颗ZKUv~s˂(ԩds9-4Y3kvC{I{`&٬,:]]̀ el8YO~BqT=!J@hZN.~-ɬe:gӅj6a̹Z@C 46]wnt8jE&;6]p"H)NtqItŏZ/Qw 5 (y`%=6_Wkp2Y?$] )-j:%-8!-G(f?މ4싘Ӆ%^U3+lJ[мt3X, 7seO X+p& ;k.kEE_,sJ(_GۈvYt<ZKBth1(_*Pu EuT*_A.ј9]̳; +Q~DGXq^tQ gjENУBwz8ݛHY+jsdaNqWLEܦ vq/nAԗu..4lo\Sm )|[gqW P +e7 +r#MxjW*RJ*^WC/ +o?d2cQ2ڡKj; + da8]M\!l%;$Ahp䐠QO&nGZ?zXpNˡսq@(ujςL,sZN՗h2@V E|ae-yXp8avuBZMr槓ʦ9!C+~B/=DM8eevaGG_ewJ4~57Q <<:~t'IwҝtC-b"K؏(3Y980-R[ #pxQ[BŜ@)TϿ FjxU7e1ٯE[FA|?M3K㱽qTF@ OqS<~{Lq')&h` QmR/^b7-t8y bLɍ ֋׉ +p$fBņJlTs2nB 0DT=Tb7b/ggqOJʈx,؞"upLT,"cN!-".-x5gXE*4 I +Nw 0D "^hDpv(~_>?G%mZB> +ԫ n=k)!I+KLH Ń^$GɊV k}N*fMn:`VA3 VXKbC )T).1XʞT[$4rE6LZ#:1X.f$}& sS]%9ޖrUF +F"x|jxԪyU(Fr3'"G !+$JoVT{D#lujqY /xF~~D]H8LZ.!szyu>':JZ1IN3'=i1fP?.XzȜ@^=SN2< t*D<{=~"]ƕ",RʿE-c*"Q n_y c̺!\2"E0QnnVH'Y%"B שEx ^ܵ'ŏ%)\iX"1 Kp +RK̒Ŀ]H'ӠB-?=KR"x^,O*BͿokph5U2eP mN]!\rSӫ^5MϾ[Dy +ǏͮHq +_^: +ӿVvnWϼ?nN`f@y kNu%!:2h)RM{E$x ixM O@+QB"nc.ӸJ2(I1vY Z-{s\,jnI;EgCRz^Stē<%^zW\8W] +fc6CWN1F*u.# VO.BE  Kl79^.0=tŊBe$w2У!N`v_0ܦdJCIIPj' 'ILF|Zx?_)Rmd^-Uuы5Cxţ}0 +fQ0{W E^5'}bz8{ݫeœnqIޠhESz.zZf yT@} +h%W.G?y\n.'r)M#B0 .x^UEInښ\M-Jf_w,(E$W"eel8 +&UѮjfK~|%#զWt䲭oI=G.˫MZ8Z #mn.}u*-U+jRi)ϮuM/G4tBE<'ŝ ioA4?&BYt!4 eϳ ?(iE]4[sӲGɐj3v-%H-}s46xE!v)/KĢ4kcw=RQܞt'C} ?j +zz̒#ÿ.RO6Rav>)̒V%~)n{Q w3TH5MbQZſSv?OGU YVQ'?>(=-K*JZSѳ$K(E)kջ$Ozny䦪M폖!KԦ"]co)Wmqʿh*X ӻu飂T~87wyezge# +r99G'=9ԪxŜfXeGꩇ`uׅ붥VcDoq2:5r:%wek?<Yv8s]vD?ɋg$_MC9I;^-픦 i=w Oh։;>e9\NsղdN˿']no $GbYmIpGM×NJJM_qH=Q0:Ԭsr@- ŷα6v rl#u!C=>'9bS} -iRdk+fQꓡioc nV abUmITƄ@.P(Pc5=苖O1Y^Ԫ"&e?bqݤ.z~)rxd菠 a>J +fWjbQza\۫8ލ37ӱGc(b?ZVx8 `iƙ9 8r/`;9sr[ټoy8l)9{< T|ߧbl: @e`y0C;y tQ6Lc;Y 2Q Q`9yn ۻs7dnC7'Tr4ss9$ppA:rSm*UϛݶC y1olMݶdd.va"0~st9-:.b("L2tY'܀9Zc))Ez"r@X@BKњ\cxZݠh7=2Uku^>"5 MXr[z3d(50 Ai5Q1\lAn: 0?:8yLc7_oe*e.U4*MA樏4HEo;VL +D9x<؇ut Y5mW렛lgӏiMSʇ騚jd:X54W[99942Npt>M|7.p;9HdͪepשNn]}gjHUek;Y fٹ 熃n6t_gi;ny͉*fI{ۛe*v:2ǩqn'yz?MߗmGsyn d` =AȒ_R';c7.tp3i E-K;A3~aNO2\19(:II#XǑ:xZsen*zlƁ=탖$}J] qÏ{/~"l.zO8wq.I0]MS9Ӊ7.8䎳?>Kq;z8p/GB*fefr^}je:@n6[ +nY1,BQI_'o"퀤Vͳ}'@4Nvr8)<t8!n@>f+9SWnֹfڦÉpYm2\k5vNOUw/v硜ÉOifY]7se,gCoeudQpwin͸ٌ (T_ZehMIkr[=M;V뤝MheyGc7#{ z(shFz'EZ- 9CyG"nNPsZuL&qjM;37(ƣ}_]܎ͱ5l#vP\}H/|,cc;-.YG2KPIzH2Ū#R3Ni#{nujնyޠnYi1Hb,JLZM=eoSNuޯ0ֲ_ZʂҪ(ZP'`uN/b$juᇇ_qk] Wcv@R_,Agrm=m:WᬝM~!ni)gfYqv:בm$ +sa5 [;E6E/=X8v6:Yg8S7oO@9j"y;pN,[:@*tQNoz?MsM2Bv689Rt#12Ϭ5728Zj'PĚujb.c7 ܀]wZƇa/Rc(sq%7=+qcgd(]lC;KH=SOjPANӽ-vD;\ Kk1<-ŏIv7KԪ XSnF厃7MŢ"[{_+  +a;WNs$?efDrS(nYi"V>[W֊j EvG5cy^sٸ)KYNr80G,K;Wb<r"tFʜBRֶ6Pݶjqմкj[޸8,9f6NΦ܀ (N't@ ;qb4yLC Gb?Yvv8t ؇ <_S B MNn}=$yާ=n8ZM?:I~6똛w W\t f^S+*K`A/wާ_ZQ;ܯKÒy'?ȣc~Kݶ5֬w?'DfjCn6nq1ɮ:OYoGt?kp/EZP8)nX55ANy8Y::w`4yRl!Gd =~lOR䲶(7RUb(su^L9>Qif᨝Κu Ȫqh;p AAJ]fJ玓-lLC1Crҋ $;7s17sRYNG,;;Y,<MCҺh{q2׵6a}4q<߭{;0d$fմg+~R8hnk7-ݶҌ +-L3Q?q1 6#(~Gr\^kցN̨G֔ZUNCGHRіajل_W-yzמ9=(r6DlN洛Ms,:\oC3H=s[,*2PZ~в:,׉<>8r2"Fy1O֡GKY2 JO&ri6{qbZUM{ҳ?IzGK~N#6( +nC*zNşG .9dDEz=jNuV&޴< uQݴ!7(`EpZM74Z+9wpehۍ@6t 9T {L4܀[ouץBr6Z&z}945ZMK5-2vzqH{ q +f{\3uS}햕nEW|Zͦt m<ᗓ!(=yLlNG2> m6wy^o.Xr=uֹ0AZ ᎻpUϽ9ZGlMK҅۴8 I"Pn=:()_ zjؕl`{UIAvdSytmܚȯ4[#{?yM T"AHٓNS$u?5]3zQo+(g1je޴BIQ'E${rh]| )oKqZl~9BhIjKCYV܀ؕ7M;_nC9V^-GR7$تAeym9ɫj_;InuxQIMc>H=i[u OPzI(!h{_i*v8E12ő]YD }$ϛ; osԸn P>d.sNeY2ENMܠcx,[;q Q(75dK:Y֞v8ogݲTݦ vܦ"~`j|imٝBQ~뎋-rNiۦfوEW r Dud:pǽۖv6ov8Țf{ux"hrzڟnHflqT98&-sOI"8{i| QiEba"8e.Id(?zL7semC{\mC]g)w[q-m5)~ROϝۡA՛ f_)B}I9N, +BIkxpj9|;崸`.=9`V=2jQׅVԮ5[&{]yqƣ,+& w]urǹ&edQDpMa6n84Ð:"Vq:Q 7 i!Vfe&Hٰڦ#q즉 i)Sn@ni[Fr@ _҉jYqfn/:7(\q8ujXt,/g'{nAUV-sղYx_u<9ߧjYiqsDZٴZ6]yxtÐA֬{ z/N.Hޗv:gだ 9 "i^OiK1@jpk,meOKs#6*qr\.?#8\jb\ߴaBI]f nX'EqԊ"h]INܴ^+xM媽fHnz\{ZUKrE'uvS r,=˂ZvGϺNUR١wz[Sױz-lF>D^fʼnX A_>O;QR6͟oګikfY76봝}xbAAr6}Lݶé?^ oc7lcmnIt8jt(NGRAp>o;; Ec$G涚<8Zyfb[u̽Dl ٸZd<_:ⲡ|mlm?Ͷ7fM,7:^u=JU܌fSsc Tѱ7GPj$Ib#uw%6G0)R!zB+wC/G}kSŮ)=_*2%v܊[QJ'?B CՒbIMzUYE5 p;:V7nEn.zWTVsd⦃!C`oiӤٌq)]p;jre(gr8Yv:)Sr6fv:ڶf~y^S(BQۊPI=QC1޶m5mCx莻.=Ҍru݆RU\G,A)'8Y縼K66|Nd+ۖfܛgJmj1v];+(EsL|rl/CP|:u_בX5tN.%HEKdSˎ4лNAbrW?qO{ș4 iԦzKPh>Y֡J) z4aUgz6J.kzWfwy)nE+*ROcNW[dF÷X5=)bde*dOjp6L6}A1ɿeE"ǹMS;Q;tQl܀YfekZe&s<}Ac?9S!ŗf;)Mw[9tj74֓}mY4xMk;c;N:QV'IXnC䀨G8ГtE=>u0T3N][岤/4UT- 6I~H7KQmZZS [-E0=x1E0*W v9 KԘ!-)yjj~P3'AB$rWTĮ!?.6TU$rYb%5N5%%lvQjSW̺d) a!@ )SS egMi>}ۦӄI֠bUQS~Z9Ij8ltM˞9]?dȓ>IꢈnيQ)tld@֭$y! +iX5ŦR/Gx?PpP ;IfAP փbq,r8'gSr6׍t'IN)Rz\c\66_$mϛ2P0;Ug^mZr6my7mUNG8t0g<=$v[efjirԊ.I솰iqnv@F.r򎋵?nZE=} 2Dij[J1D]]5L#UĖ?g)\iYnzz8ocɯUQlk˚48w܈E]> +t]Ky`~>RD"H]%iUG虇ߪmvS,(JOTwѠ` ((U"2bI֢~߯I32,jME驗$~(#w W/ ].[N~OxS LvS*Z͕u2EP)򓒢6EEǨI洗2TEr.^.S c^I{ipcȋ߇[n;C WBY$=8J]]+9\ qET!ZF2YZْi➗{h E$Ym! + +kL]C4?J8mGH*>1c\W*Rї8{ r:)v8#U=/y1,tL;A/<<nS7(\Cw,nKjrٟ(5l*WijY9.ßa-s:VE9Rrt5k XɿHX< H%Ol٪YVWM UF:BT;X{?_=sr|=N'EQYH2KOʑ'ZNC3 z#1GNir$hN.{jsUM9Z͟5Y7&(;aSZoE6${lm^qoS <G,u14˶$#RLgw{7܀Ni熃r8%{(^o}3{]-zYʟjmq& qt/~JIPj&ughK;f?Dej5i> S(&'8#q2JQjZŷ]<*he:jZ_wzە we6ȅL[SYGKz~P2.,yԳOQe1d7 6\=hRZDk [O~*#G;|~T$ݥIt_M8zMq7:F-ʚ[F.qכ"zQ1I+JRgCtGĞ(2ˬIqz?n7CRk^6/-+nzw-%ESnʢ_MWZ }Q/E:PĦv]Ű:KTAOI(QQOzcH^oX ['}2&k&oIE +I622X +IJqCi@*ɖ 9pȌu NxYvx=8Ǥ{-^Z:R!m}'w}'=i8~N2]z6_5{Zw]缌ڮs:{﾿]߽}|}<.~ m^mym~w嵼:}z빬ۻnۺۻM;˸}˸˼wn5_㻽vqv}׸M{^2]w|ޖܶ=]]k^m\iZqZmy{y[q[s^ew[kqyw\~f흷se۶oy훮u{oq㝧ڮq2~}~׼߶o>[w\;ukeڦu微ky]}z[o[q<4㨗cwB Y3,V5UeۂUմxU4IϷY99"qcPD =1-,-K7^mU<7մ>]yTÑGڪ֧kUR!zNr,K-3Ɵdn9YYq6l& +{aÉ2R5, 4r[h`hdDx&%ED Q"2VZH"SL@@NGն3I IrǼ4er<1zXA45Rƒ ~C2EL+-vh1erL9>Yymz`^w2UIj'ʞKovM8&BѾ47-Ms7,8#|&ϨQ+Eov:'@sj0>d\RJ=FB^V(և*0+iA:rٗ~~begsjxGhq RG + +SVStX@1Dk>Mc>("ƌ +e*϶,DB^E(n 0F]侯ׅ".Jn) +!.IGKO~b1N^>hB>a{?5S7ljy ȸ9 u(`hҢȟG=O۩EE-V!ޖ-P jJQ]VW[ 7Q3ʹ͟1;fa";b*&[bqzţ^Gb \JR~5,bP1ђgMC_Ѽo/^7Iy;60&*=񣞨An +ԁP`3RB!uinIܱINZVq^&}Ut zsBńCyCͲQ;3y,* +meN|iUP(y$ N)PNӤ?9{]8U"ꁘQI"G ,8^ym0.UW9>'L4Ng%m'qt` xĠİF)|WzP4Ͳ&%)#n2٠7*V%(1-[I+㓬V]c|D)HBb~Uj "=jQ-i1gygc!{T,ԾnZů X;BerQ Ȅh2 B%箛O2A"YB4'Q);P0F *?1TrrYJqsJw%Ŀ>sE녉X҃ JW'iӛbEgeA{ 45nDZd%8)2^#+U{tEȊefoS kk;._TR1 kSqlaM߸ql/E=5e_> )ԎhAIHpYF5zAB-vY' c0&8 $\|~ENfE2' \"೟l`߮ie$ )R@-Zjq׍xm2`fV1Hev)r HHYaxʯӬD*~MvݧU_T&}V`mW3jmEnjMz.\&*'9NHFZCo %t̤F)T$V-VC4ΣG@ʦ亨>نj\| +K-(\jP:4(Kʊ_zy/R#-V,KnaF?jUxrkש]ݤv':iZVٳ)vMp喎YbO%F 4$><9$jqᇇUEzUS8=8^PAJV Der`_"P~m0v$!lN4"*MY)BmL`"%(vܲ-p*XZપr0>!qd/QTܛbH-Uq+s}Zv =+ڧ-Z~Bx~FK 3c%"4+g4ʎOuqeeR"IE!L!QUݯ>ot^iXv8:Rd +PR +^~&>Qr'->jv]v})m]dĶ(?EMoKZUۢ 4$o ԪPڞ$=):O$#5(4'߄$F|A 'IRۢf24uV~Z99^ˆGEeJYrj,?:#gIQyٲHfz޺i%cW1ɠ@Ӕ:b1SŪ"-䷕ھ7`QB{$ϣ;pɔٟ)noRP.QY{i@HpLf/ѡ&qS2f`q +8I4j`8aQVӪyє.E1 +nSrۢEzC%dua+S_R͓pR uSWUO˞|h2+#;NF\Dox>G?mZ]몄<.{ˑwvҔ=^)P8N]n ~MG՘zQ$X,T'wNI~YFOӴH, ~=,+a xf,Ng}(PzF .|Fɰ'Eq$ 5m_<߰yV..Di=ZԶ֤vzY⣨rY F}FU74ޯE%~ vO3><=l{獚)^}O<}*~11pԞ0\6o-Y]jUӧ iHMhMsC_?uU˚Ӵ$v8,gs _owIeɫ'*@b%;$5CDvb*@U/=t@ 1/*&.Jս,[A@Xv}þ9mxn+iOC/^:rSݶvSS?G\d4Iv:)xy /T-눍㣘fYwƁPAm_&t(v] l9KgǺi.%5b(g]H=cHRî#cjHfmi\Ԧ_ TĀX5C[Ԫ5)^wjq<⸒c,I%q"cRcξZu5o趙Yg$?{RˊVOћQGVM0s=OOۦ?olB4Ϻ䨧%Ϧ*^ٷ}y/{VA7JnCi\[UU HUIKr;,ǒCzt}T h$m8*f9௮fvkazPi^hie1ɰF .R(@'`u0c)r24qhmEk{r931jR4'K4Bpܫ+m#KCt@1b]Z{^mUI'h;Ͱˉd$Մ:;9~N4Wj۝$ߎC. YW&pr$b؏OvmcV.>u$J}4QTC-ʈJU 0[,~*ljNLqeGl5˧Eh]Ҍɑ̋6ьP7P)Mmy +GT$-z(y-O&yjr;5i~j=Yg?)`քGx:n jD$c{͚^gn~?5}e٬DCF!rdfn]qyfq"w] kiuvwDնB Ϟ8R,#oL,4M2&bSv8/`-_WSGWXn6=ce9f9N>ˮ@&njuLGԮɶpK5dn|@0%˾wq£i +)EvdCbW$!=VTBpG۸(4)M9.ţHa28V|$Pt97G 5uk]zb3>M.JVܰ?[Ut=Tj鹩myxz ㈗=罞ǣ*2N93<ݻ;WrLmrGUJ먷QԺXN EK1r]]h[O0L&IV_U>MIrp:V =<5K6팦ڲdɒUy}ߐ uΤ؊m;Zx'IYh~y,}V)~uM:fm6vI&nMjeT WC JjeeƣzeG~>Q8 Cz([yq>h)1q(zRL:g;LBV6= +.Kw"-+Ay+ɮ_0yƥ鿯Wu!u֭~ ?͋|,,#,-")Q*d^9yLB#ӇT=U&ҍ 7nɶ g%O(")Qb. +aGH0 +VIBͷ}w41H;n< kHi=ò> x^D.7!=,~^Ph 9nPcr[=[8x۳I*_QCOW>M_0T=7E-KZ'i9]xFuo3OWD@6-Z+09ɞf--b`^FHDF)h;fh⍦X.*`D F X +d`@ h0 D$q,j@DU/G҃ƥ64PHJL3v D&%  @ (p$AHL`@F >IOJ~T.m]ӌ;$ 2N. |F!X!GL +,).%=?Vvdz߿hzvq<0, `0C/! +Q0 r0 q1 +񟙅qSOQuM?0Vj%b"CǍ  d C`- LQXaZ0ކ#y鶭v$(<7P.h! +UB 1z"%Z!<˵ylPϳO@(LA +O~,`D D0.nP##F>a52£ Q>ɮIE v $h@xH\$f.b )I!qBOVBM5͗u|X:KX2P\^R9aY9V1%y-ǯD1 T$4! ]5 ! HX ^2hxN e3G5T< IȀ ( <0B01 f-\A eAJhBnp4` xbEJ=J[GC!%8&X +GxB/|a b' g %8! .A +JT1FIjz9/{o?M$"jph Yƀ" RhB5 H`X + +N@ h`1-01)*YU[(p H(! +NBİ*D! j8 $4A - 0 Ƞ8X, *VލAl"O^]aD^L  N,D WB*@aAA`+` +KBZ0 lc|PS|ٴc_FD@;-A h)4 +Sh)\ +:f9a *ZbXQd:Y^iJDv9x ^ PPB04A p" GH@h8 7X(;k$ ?$ebEI$AOxP0A Y^$`( C -#* +8P%&P*87a +TxB~.t PBT8Ma$Ƥb=mja(4 DP4D +U5 a؂" !OfpPX -VZZV-P<צ~_*HI  \,h! pC004! +Lp-T X@@XPP$ Jd y@4A&IWA4Ѳu# Iؠ +TЃ da*v@]S5 L›$Rt"D"̠@ `ˆ!t`NV#j% H[Yv: tEYEF",)P`XȂЄ%p anj.`X̰X +q& +zϝ(*Jk2T@BlP!; R 8(0?x Wkuj5%2kC2ZԠ- d@ P qD<h@$/XȬȔ`#'H,q0nF1xA j@P* JBfI]DCqtDPxv[UixqAy~\ܲ>_3pIUA0d՘^U{6oDKHHQšQh_׹~Yv>EyFGDɊoo@Iv\-؅ܶay^I +3V"1*ӊi +H6.GLkrRI'˗~5*SKښEnשX^Xv2tFo*cH#QH$Ot<_rj~]@!Z%銡vI/ۓeiR)#;P Amɀ!Bh0gxzi;Аbyz_RˎuU) h'li,=O7H|tga!$|uU7Ӳ#m߾9ٳ+,\b%[&,=*Y$Q9m_^9%aZSŝ$y5Ͳ6Ǖ Ťd+$2˞[lٽa(`Tf-7PFP>iYH *dw%${>/߇%`ИOH9ATq$9fxH"2yB"@mZ%->D,"3^&LJBV2@YhN"VxR+O+bQXjOOn8*8yyZ4#:jj'=!a#nC8ze8 Lc%d +̥2 JģD${znI>~DA&飥!z}d1Уht)q[  +IKFuY40\$Q'|g%Ft&?s +(JDCD}1}NhW54)_&9Q}R3~qL2KoQx,Ӳ#j  H"cJ/;n@r2 X^dw7Ő%ChcUawl1DR5PJHqLVD!g&5"^YkIϑpZͧnYGLKxZ>;^U!6eA~1*F_|%!gM-LB؁d3(QWʈ4JXCɎV U)Xa"bćpiERT +`,Ɓ#@ V.Ek$T'WMUU3'ٜv%v&M]xc x +C IhAq~$8.yMhE@4 WSKJ9<0&6TB`ZJߪ 7- ut$u#.T.^"ϪJ2(.-R +S{,~\m&Xe3QcE_6n{Jo|rR,jGM+ VIųbwx}ifB\)zŊ$lhB7"WST# *JX!QdP)A;LeOx "bJzvrJpJ"`HؕXfF3*vEl4X$A;@{&"6`Pt1" E:Rpyw$%~~!=~g]5U@U 7m4 [D;4+-Ҫ3*V+ӚU&s2CE$'~y0b드fyHnCK#?cEEp9DS@K=m*sH2R-0 i$?`ZX>|1$b |"V$=X cGlo|QX^R,T$jB=4-X2dl"m132X i9$\ď4e?C,t1XE̴ד*C_L*ҌW +KmNwL%$H+&5 +{>Qb"RU%_GȋJÿp6K=k)fH"EbhT3,P +УNjQl/\#MA+8`XFH" 3ax >Ө@$GKD tLy6u>EE!C Ǫ4R! ^y@рfLʤ(tAyC͸L&ϩyb-nD=и̘>*R^+J O yP>{ +THk"r#EĄ"  I3f|h|<|jڴ\ŷS*TZJ;JV>HzM0!$dGzey9b=۝Mq}HXJIu#m᳉9ر *\NkO&ڵ!C dN\L.>Vǰ\O. + hRv~)9ˎѫ ؀"@{-HX5(\L1QB'5op\L)N_o4ϪƠG +ɣ5*N>N̑b!:5 _FGO]>)>u)Z0 +Oh^B>!c"-[9M%+|NGhNJ)RTTMKt1\V"ѰKf#… -àDP+DV'Ur|U2ˊԂe,8e!+`SU)T"hduH<9eW VJ -zc"RyL>C, fIڛ&kw0q1FGOO:@ AAL +*u1J`V?IRHIg+Q XFɫ <VU*4 +)Xq)k'vs vIҙbRbf+E яr}dCK1 !CE哻hjȡ"?fz>3 _!ݺSH!]#DUbqVJS~:A<(:b `J1Oz)!l /X%.S{z._Ahyrُe nY%Y{~P#cU)}S\+B K,KdQ0N1MYH=L\>P`1X$O㐛 Q);N`4DREpIBL+VnZ#jp!`HSŪ-[KWON+(=KJr*B DuRaJ!צt˟x-h!T^=J^IPOFIdcVA-*z]%WCerհ N]S:ſW~k{fy$ɛ>UD(L% _]ߎfW}˺ƓhUOn "9Г7IMb8渶IgH~^aڳ/ JBfpB4gnn V*նȚgLe5Cvi-֔/I4ws hCt ]h~j$ӡxB\y|׮VѴ$:Iu[3I AN'B]}SQĪ#V5).v/ޞbkۮf9W=f׍YOڿn jbmi5u<3PHNz>Q9yd.ۧnoy8|-tCdόt@ @F럨IO]|g>5hivt}xKOB +[O<} CˣeӱYسcc}֭##({zJոrA;6HVeR g%)Vf^ p^:J`&N_>1̢Mbf\Za$gRmܿݛdJrJ'm-lRn] E1ó]E/b,BR0MdRK!zt{~z:,ܺuW]7.u;(<2!qyyklwwcӍb8$ +(ql" +xʭ=wo$Q^9D.k:}L~{^&K~-5n趩Wi¸vޠ٣=*>BBpa<eXT"R=i&Pr8LH j<B`jR|Xq2yA2_pWh;b__QdSe9'P%r1`"ԋOLyU맨?0$Ϧo{Y,ʯBcNlJ CʏR;xH;".X h4}HWZZ2hA6$ 0FL4>`|4icqZ~$QTc32Oj%C` (G + +&K`%;dV Ug,dY/׶I5 Fy +&| (Y,8 DB ,0?GiZ竻gDj]!^CSf9Y&:Ɏ!&2DN~@+P3?NjXp"/VI؂ij~Ol';5jLȅ(Rx@ @hLE (!"J"8HQ RE\HyӋW[ߍw+"!XD 0'L` [ X>L/c$,/%*QpO^Ōp$ ` ( - xH*`, @P@JH4`K*gy*WtkXu?BGpx V9`XS4oR&vu(.W[ ^.Y  4!X`<-Uv&|7>4<(ґ0q@ ~ +`-`)A|pA ("At`12 $:b^SdE %ŃxcDaۥh@j`>P0 +L +B ,!(U&z!d%E^j'8aɮDG`*H( K)B Ef #EAnJjKFB=oѴ$BQya(?@!9XB V`Av`~ &02 jl@' +` "JaV|J\NV( +S)1:p,0z`I!(`SJx PBt  pG)nנtTO\G3ow bh"j +( h+ZL`;' f b#Z u,Vr@z@h4 I@$<$0A4Cd|?oɎvrݛ^ AbT.M|QxBP)!Dp  =>S&V<2@+W+ΏIb.CTL/5N8`) v $a 4BЃ(A?*(QB=:&j0AF+*&EIf[nɅ#O F؂PB ` *L@X pJxOɡ$,:_ ՞#CBȀ |Lh/r/c1 A^ :IJuf&̲0.X`4 ~ > K2YY1_$Gl(уL@b:B֠!\ C %` Q`@&!(hbf0{Ѳf>oLyՈ9: $ + Z$$RBz,1 @1;,ԂX֑aLfh`@PA2,A'0 X Et _Q!\Y#GNցl`%>"\Z&wb]}N3ÌPp<U 'պ$6K랏2qpL&%\tࢇ#FbdF`F'*VKܳH>Go߅_lG-ZS/9d%NP(x dD/GXEC O ~$F_䫔R|EzMͣ.jx${J.> AP*0HEMZTb@Hur]"> nmM7|S,Ih:2`Z{DN;O1fݝRAXh|\1~iy42&ukAdr}S&іD&nsζA.n÷Kl+MhS=3)/wU[GV_'z 4BjڐUFUCJPX&ʥ`a_Tm~t>v4UԬrͮxPZȡeF?%qtoI'oL m6$`Eƅ?BSٗ&1<@144SLk;ټFˣi0X"_sXII/b3κsgʟeu#Gk?QKŝ{}=Ժ;on:'~NՃ77vrjSd} ::mmSS|O1vv$d2HdzfN6nK\,C?j_>+r M2Z.%?_6tM$6|xj>Q˪dx~cǟpWYpP@@ƬOalȥr-3dֱ^~!(Pl:Oh"٫,N'OHZW(hbɯn+y\:R!#&uDC7[}q'@^PEz$Gp\DFBDkWXF]T]PMUւ"]b[ז8`Ȝn8*ׁb0O|?Q=Cp|bxE!zjۚ$u5ʹ =(_<0'[vu8:q诫'}p?Z@Mv &wsfI\Wfm#H=XᄂJaPG/SqK/S5uuxɳc!|)Z^$G1tϧϯhvV:QȍS DdӵOWھXz;xTJaxXN4,7m8(71rr]LszuƑt'P f<3l6ߺq_X,Mw#Ť&1їME5n]\㺞SOY$)Hyʞ4߾BU*&KD=kMJ*/NW>eI0QULCn.7,ΖOϝ$=ig.&9FI2-+}|ڧqKCu1veQ"@}ax^G?Q,JR +ŰP.,~mG,|PtVO[Lot.G]=-;Q{LMk[(]9z! qb1B`شFqcE ٫CH}mx^֖o\a2U>]]U}iqW:q%]FSMitє_\iaf/Uw4ò2ߧS8޳+,i)R*lvEugDATR&XEe l܇-䘣i߾*o :޷&GZ =&)Z}{YX'k0Eއn7atB?A號8¸\4"$:@7LFN=jc<:â8~Ʃٖf})(T'xd(#ELk4):.=Ur\WqHm}}qBkDZV<>iUoQ\5î)KWUr[WJ,)7lX=˶ i#EQ`J!<GtD +t=2,8@ ̥۶IB䕂 @ E,D cwsG  (@"Qt!|R2ebݤxĎ@NO+ 4D#eGꅫ"txB&G2K𐡄 4D\1"K=캣FW4$O~Khd{IV@И2*]W1~x%2SXCjaDF|ˣL-'!4,'-R·zR&k˯2Izw:Y =jm'$4 xD=i/VRkeE#4F\"=% *#!%7&u\7ndcU`n9AS q>].Bn۵-V$,IdUu1_G -$Oɯv6yPlLN8VMSe.ŞYU bYSMD$ msQ$q]s)mܚ94êQu/JZ1_2hE[;ą#)dv},:LFTpJmAH0_S* cm^U +&"z մ-Z" &l!j1GDMc+#4\%.pq&H@vLc ,`BĊL,!CL@@ 0 $~Ң*^8TDTX 1-( ϸRu)>+*WW*D\.uG~L_yiH(, +C ,ĕGܘDU%Z4%ϼᐝLC,3ñHA vIEԓmSoYNSӣzʧ #{.1VGEibO/[*i\vއui08x4EGQgn8zI`W%,Z{}[mХ砶 t(M1<5`*N_$t8uxiZ'Kutݴm1/3X9S-<){2Y+-m?"" jvsLsqx.yZyI[QJQ#1);RF^)OOgH,?,SH^O6M-/(/=ĦwG1'EGi[4G*``P.!AF`(0< V@  + WD7F3p2R-G1c +x  &sBfQ‚1)|r4 &!A@< FFLB5Aj!$ HB< /(DbLݶ@Do]+ͥ/ Or jWPA܎6K *`)ف"nX{; j$KIX^Y}nvѲ»'p׍ Tb(Ii_[ di}ؖɈLoׁP4AfX)"BX4( `_%%=۱&'ZrZd5y/wC&p(Tl Jcf 1~puRL=rq,-ۯ*牛}(" Eb^>Uڮ31IdL8BKA#zQ AXpi^}g0CR9Gx!t[ETC 4f1u[֣x vUV̆qKM1 cttɨ MIמ-UH)įUR"fjrs +gb05PZ-`'N)"ic<"LK+IQ_5`N>7… +"#XX#h P;Rh)2q0i(yT5p}N3:5[j QajY,aA6܉#Cam\5?\P,BhZ y\wfIQiP"[|a=slLä.M4Vba;S?dPDko,R #..Z$WKBpD1ځ["xUQd B?յs/\(";IfׅӺ颅FG E4ÅD&$=@)b9U? ("u-9pY-\"dazc%C@D."O G Mk $!D 4\q\ + 0jB+y'+v;8tOvsA;uH☂a]'++R@0;B<>}{5U4̪T tI96Lku==M5<9ۯ%zٗNݴPvIB5J^;`Q^̲cQf)F$8L\3)A {mjbpwiESz>؈U!IdJ2Kn[ A#4I "I{Yб6ӵn|1@)^(hWQ/fؑ# /[}Q # + 4 +:K$=ɲ^+{DMdԲ vMrJ1-D\4NBVT.BT?`YI<,.C>5u\;nlͦ<:$/|-6EI<8ISȔB&}bU#ǵ(̃0^bZ[\=qԔŐD?KO'en1$Ƌ ۟b'Xv2N.\w)2};p󨩈]ImmJs '@ +"a 1VTHD!/VgO=6^'v(5cnXNOs(rȈZ1iơ`X@a U! vGjzG̊}7:dCF+,'ЩyVVWY􈎓V>Me$Z8sM\oe;)T'EG몏$=Zw/M}ePT9h$Q5XDA7yTQӺH[`HkߗIR>QzgfGCSB/ LEGϓ;/E׮]]{ђ3,R];IH +Sf?jޣr\u؎k9&>=qApe1D`+U$OzQB=O˒? Dp#eb<(͏$-q(&?ag%i39 G>uv+>1BݦN|Oa{aOcx #J)}BrbdbED%5 ;Nn'@>Z`'WKUDNp:'N `K0GF*BX!AS2 \`3`fZT&~= DZٝ}Lǰ45foUA/G6qPӓ1*6J>D&dy͌B+L"܆,Q K5ńE WR=jZm祚z_}=Шq]eug/+Q3lE ZA"B>]&_=$qz6=y M   8hƩXxgig^7vϾYw 5\2%9> }bdN 4/=\XYzdzy&z$PT5E4մƁ`\䲤OS߁xժ1/{Vк֡ A@I7cy'bm* VF([ Kz L9\ѢI +CZU캪/D-e J4q4jr$']U յˆsCĠ9BF.>&@'}ۦHL/\`)W=W̮'AnP%={5cM-`!z#dL~^B=䲢VE8 0ˆ)$ D#Y}RX]U2xSpgo$7Eφd0(8>/im9JnH!9詜 q,#EaNA-1>bIqo1_ECcxoV q #s[_,=ceQ +S'ÖDlIȐ9[Ts>XL`z.ۊfaN!/ +ǛnkAbEUY:GO Ǐ>vuo +CTsTv&r~(RW=K,d @ϏjٖӁ3M"E]-=5( #$f ۢx߳(Tyo|FO'>kCj:Ūw/z6; W>\ SůKoC9áAO%vljKvqF.> 䇇_UcNX,ĖW|In/IU~[{Gd#jiMNi=lLGlci]7,=tع0ݴxhqyȱ6&4{Ǘ>#)s\ٔ\-rZN=o3L"~ZOnz0"ؒYCԣ894*[2r/|9AC%4ZUS&ܴG s;FJrY!+EOydُ'_{_#vUoee;9;lu]}۽dR/IxfA1O)nI GRS~LlZM鋎OnZ~)GbS&yU(}Z%-Į. (ŰkMYjE?fj[Q(EKkD~Y,rW]Yub.N墰='/r^7-Vǃg OB5b^}8'zd7isiՓ!tIEܦv~Ci`.~wmqu'J͞ c;-_=M'Kꮓ 4F0zuuO]{ pˊbuA?˪hEs=N=M.]{mUIdowRK;q">ֱ?0R"T^4Ԟ zБ\qׅD.v>˻$G꺋.z2brQOޡv:4ҼX!&EK-T"Qᐚc.u!ȓmbXDK X hauMr\8>Ge1#X1PGI2I{b%]w]H]jG d=칈%if.=)TŦ^+ng^(cNOl9$|޲$NGO#9#{ROd{L1FsCLL*D!Į-]jP2f*w]7Z6dM9^vO:uL5 2,7J^{N::u 2qjo /eJ *]z~V% vA_Vzr'\ =zO(>Nrלasg Oh]z\E/Ş7-QӡN8=){e!RB!MR,i)%q1T  )df?(Yӟm477r#h ?eh_nc0|s'] +acӚZfv:6Pdx&D CR1Uz.GPPV;܀ܟbWZOϜgqÑɰH-9e|߷jYe֠G:Uzp'a6>823)2X v]$]Gb,nulT@/A^nUq eHfJ!?~"Vuɱ,Girٗ-xw6Yf.USr\ƴ(j z3!~OSmgRE1 M"آ_wGMCIRMSV?\N;.6,M-k2 :}R(%KRK)eu܌c{یT".Ps햽\v-QY:O)ZB1K"w͋a.24%K*cfe=oDTnCNi ȇx@r6]ZWw[z"57صb5䧚[ dXt?˚$[wczPSgj=mE(`||Q(eq -R&K2Mjyu5}Q00TzXêiؓ5{Xef z' R?=qq.8gUr=8} RpAJ&%rW\jNji2!Wrle0fRSSz$ryo.(i,ofq?ijZk]znݒIʝEPԪ0[f/z$\B] oANg5X-3ծ-5꟢:)2ުe[ۦbT}=:RQv>s|,Qˢ؄]x\n~){.ŭ$KlZbS$W?06Ð2DnA8yIzN6dUƊ$bǾ9ҡ׫BIի``N"ߵ\m dMOU-9n=Õ Wժ*EGyV4l!yM#:rPZ\&Cޤ{*aAQWrW+S\27A[zZwrDwߚ$=n뻰=-kަY㎢}㸃ߧ$]2Cl!_'5crYoГ ZFcՊWrUE9n$GC$]I/G|I$zwP;mCXMˈMC +Ui4*jqmr:@A3q !#cD~ +^o#7 fv:0,O( +kۖuӬvMOŦ/Ͳ}4I5`.c(V}3>pױrn։;v2r)! D +$娚c߿Iу5BZ3bYr>= =tAu^6A>*V?ybu 0.m_=nT䶵"ZOO)q'U0{OcU-z~V1{fIEIZ`ut}Zgӕ@3 m俦ybH"Y㸛$ N=lA슚c]WS(:y>eMp%9ZQD-P#F@!#]?% w8m3_4,UuN'C,qqEP|~(@fEѪRTM;ɞz?(,?oA9ߪi*שX$eP|6Q|~mO> +W{[JൈUCrqLmKn:媥qzzTTӱdS{i4ajZ/'DUcmǭr>stream +Lq Z0t%4̋u׉fzk$>YstMT7[ KDDQscBXLڴn#YǓb+~[3IO$P\;OǞ4AVt_r]e"<02=>izGS=ǐ@-\*Vǡ睝 r0$c Ye)z]~?L;Om׮MmIjYdMn{'EۮcW,gNOe=fx6R`/C;B*ހZ>?K<=KrUfxBdEf3{ Ϸ=o{Ψڬ"z a:nc$#)PjY%0eiwmԔ7utOu:1gSD+PK$cKE6&B-")L`6T>;VʮG/K^˯#s,0ŊӈKmD.r=Io6nsp4l_gzו4gOS|qN l2 ؇U߯#,  +U1\5sm^I9J,]l7ieMAĢ&b0rZu˩6Uu?ZDXrcdBlNP-# u Irp3.RHĞ[dUY˓! IlGYm(GCg[mL%̦ab~Ve?C,T nïD64QMbO^8'G[ o7I_{v7E%RZtNjzۓ~y^J"}J4E.Km䲩MU> GŚ2V(/&,&OoanYBMRD_~WJvUp]z$,&2{4ϳ$!Ѳ5)2GHa5LQ) e7G_g #mj-a$BnÌ@!xncO!xu-ٽ6/ D-(#;I; OW!f p z)7U!J=;-X};%IϞR +nA˖UʪiiÅe Ƥׅ(=BKWޏcA O/VW-m ~Nso,\'RȄEp 5$fJnE,J!]jId0 +ˣt$'l~Ov]2 +hwsEM~eR!+"AbvIv]N/&*~ys$i/SԦ9v-;TBv`1Ro\6zb'I S]H7dPHgdN11}Dh 2Ӎ +j5?jVOH!O?,wEvt\'m 2LfZ[Kv<I¬F>dPvĬL->ݷ_WorS]o߫ :CWOWn)ڣ +ӂz*a=r?-CBbX7Mץm1ZfX5)|aa?IӯӳgˎWpjSV7:RF-ZG +,;` cdbZ?nETaV$)V#n9| fThPW/;t/ﯞ1 +ja*vCGOzf7Eo\)H$3dN$JO{~28 Ѳm,`^`xs z)² +S{M Ke<&=Or{%$"h]Kyųq +NC&|FخF :)zV(1HКʘ@5HT1`!&i-sH{N/B\^RɯZ7 +Qr,%Z'Y,%*]I&A`LaqQNz=aH>o)mհKKxv؎ya{RFD6,E:b-S +"}1ʟ˨D3L\0D\|&9.Tˎ_w|zW UD铟",z`BEZ3^+'%Q.z1;6*Jvr4KGx*H~ PSE$Jle"yZF:QH5:f\;&Pd*d%z"v\]eP,{$k) XƋO2 +XPzSȇ-9RLVG\kZ0{MQ'PZru(Ņ4 +Ƌ#lx!`lrWӫ)!?%QSFȉ9fzP0p_*`@Aذg$hL,Ѓ $VЈR7C0 !TDVF"'3XNf0U2ii'MR$WC7IOKj}1(5c5e 㓼VO֦+)1ǻMcJ2BN5DJKhq1zm~;c2bXmJ"8}'LFedr!R>&]ULV0Sa-O@> JdĥbER--_9]7U=x"*"ZFxrZF-\ӒF%z;4( j""}^@Ь|P{DIp96baeD +U Ģ*'PD].Ez2~=(YqD&^aB3hF!L A 8F;L\BXib(@;1n$ZHtԳ|t-$/F^61˿π+ɃaH '꿢*V. D"p-\U_S/<ˬo˶FzWfhLpU.GO?a2@BazUL-#(0!7`P\{ePBéf[فyyaB" !XahzXFzFJ  z "E=ɒ +e( bFHypDٕK}V˦wQҚqT7MXb"Cz].PF~a>jq[154RL <cVF.$4!Ԫm BH޲dVſQzhnuB*g VV)I{Z'cҊ6V*fˈ~nyJyV^5 +o`H<;ĬxDfDY~drх zא񒲃\HHG^V,(AJ Cpb-X]_1,]e:wzc8z1.&/IO 5W%{i?-I[G [JAHk3~ +mEWJ+JsX H A0s>@jc@@@ __}**x 9K(޴~OLhs32,<<~K8 ?Ej?3jj- \Wj>ԦmU.j:{\'L; &)g'qoYMb$+Ú$3C5I85IJƝ$f7Ȭ60'9 `'yLj&A$%M$.L"4I sd5I.df|&5 IF6IDfj&Y$M2$IL5$#4$1eIDf5eI5aL eǤpL7 &)oMgYLb$ Ø$3C3IxeI +ƛ$b836Ұ& hMMbi&A$L$.N"2I,sdeIdb<&1 IF6Ixn&b\&Y$L2$IN3$(#d_%ukXט?1#­D"U~';=ϓ*0P~J &^Q .V6ęJZL;Lr࿏:Clɽ0eSm`'*Vlg[Fro^ATRnDt}W|j ӓ6P k}:jˈMP3h<{4ͨ#zPh%.YdoH/ L\GKj`LJx^0oͷ 0duR* [0 TҸ|aM^{bP/3`,g`s TRڢ(hzv ׷4hCO ^:1 o  +s[ԤJOMX8VF:#-҅p`ƣ>sðJLs%9,s}5RtSAXRQ@d;{9ԁ OҷMTPEL+ [ k>Kȯ6eKipLPSHp/1Q"R쀀bM J׳_%i//!214йIuOI{:"&v0_Ua֛aFtwm L_YꢸD^ "dBG#(.GVڮ6"m/R,qG +P35DsoICO1 i/te +!)ֈT}AϨ.$;NAD*"S'{Ilͽ71u }N9Wr-#ṯ 9``/ B_~rl1FP<):="`㠝VZ-#(-~*ن%@{l5T$)}\6 %4 Q(kY_w^t|Kbx7g6I}D B7ӢA06ySDf #[_];+*u^&ɂ|G1F0#Cp-/:͉ +#3 \rO1]nX-XlUl;`.0U;%Fz,GzD^YQFHwm!t};H@62<¼_Oل;Gcn&(,R~Qru (iF-q->[&4MZKb1@Va^ =@uCh ̒XGb=HrSyrWD=4K&mx9 q.ʺ%has0%+SE&Q.m{$%qyl%"ʋAV^Ejj> +|I慯 ++.54( wr@S@ C2`ҌDFpPU  +x$\=2&W7·wp*yU&5!& XIu&+Nw;䛐iɞj5CHwI +G͉9'XM! l Q>TCzP( [C\F#nƽ +VbQժ9rtֿGeHY&ʲ4&mP7t\I"648U4 ,T՝F8sca*f iɪJ8X:_P:UG&IZ:v!Do+v4-V_Z[sƯ䱓` +Йq kIrѐE,̷$*֠o_.ۣ]5G8K^jQ@:K7v >pݡ0OmBl-xNS @dsgi 2NXl[/b, +aN~l:5M37E\ +~">t*v4>RБH\FbZ/5FsNˀF@Guu5Ln|Ӗgۯ7)ez^s)v1ʧ 2ΣֻRaSrVvDOPySSƝ%Ł^' *=')`L*_EЕn[؟`="kԪr |6!+Fg,VDR i2H9M7Qf; jWبy CcUN?6% <,U.ٓCJԀ4Ws}OSmik..e?`xTXf[Yw `ݳ޶ +5Ҳ(Q`7<!LN5m>f9 ge04FUwS]ʰYv9o|N>#<\`f?62Փys5k2xv5~Ձ@uYx%{4vl)uRƹ|ǸzU7X98!\+Uq{ 64`ƂӽR +arC8x.;G AH7\ >#hfca_ +K,A% +vэ Y {߇JaŮP=7+BQku +:]O +M|bs}dXqg>msR]Y,âv>CQM0^B'p=*Ҝ  r +EX`/p99s[VU\߂wVM$ &9.Rd2WuI{S@ gZ[a.h˘05u'/+~zHhB,:V`H$ +EFe@FGiaI["/,Αl@|RXH |z{00o x!"u58Gt38BrƅBGCbDկˆxo aBjNuL3nBI'#w /1&aM@bJdz-^j;垯2%#9D&-q"]7긖ϒi`1sh9 +p]6n y15ʒN/ q*&0B1,bP'i޻G/W҄3Bsf߸K; `,w߆+Í}@bu3#{M괩t"U@b'Cp8օhw8Cv|-_1`SSѵD^?( iHѮsiŇh\bih%rqϦp<&%E*U" `t"L,vVYT7&GCǀ΋l3'  +*"X5L²詧NmzJaTPS/A/BTh=# Z>iG4)&XeşӅË5HeQ0,8`Go)dօ- h8Ze~[(@c˴ c&+U8Z܉8GgPG_ (jkfurS 01r- +U#M~PgԈcDv<@@es q3(#hɐ믨wCР^c؍&P,^H@XHbE@g3Μ_ٷ +F; `K &y!)x(ciLn53tj (brU ]͘ N-y"IY8ָc1D _TdZ]f;<]9SlaKH7X6E+Q?);/* u|ayEpԡ-[i*$r5IC5AKEH Ho7ccXdꆗ+ )\5%PEFtze\bpMh I7k8K\0V4P0 `N~L¢l ?$:%_=?sԊ N Z +L2=bH2pCtM 0aF1rd#XoO SHcS"s?94[G@dz`ҌzAgvH!8@c YYY<7nL2rΘËegaKnaݡh1C>@߶Ǝ +rqī ^(Q_PјJ6%̍gV߰7ִ6ѷ%R $ +:8ʅ<S :~#:^$xV Q~ +ؖct;bc,*|mH%X䵾l ϘjQN{ 1'd603 τ4ZEԘѡ'bpEAB/\:RM \{lLSm|2 Zӯh9ħ 0qʷs55 NKޔ^͞㬃}T@c&LJR@"NESCJC"<<kPxJ,Hi!@ܛhFΓ)~iqV{][O:U'@>+)Mu('< H ;pމ)5J )w$(fNZ0S^x*Kp=hI{<, s&8{o=6w~4243+zgNqx3vLI]==k:3)x&Mli>oq|/3*bxE[EBF4_; ф9CU>%/w.03Lվ +P!`糏~40Ǿ bEq.FKUmsviGt`$Tr ErP`˔Pm~"sOj'0t0 O6v̀`rEG'p}-OW%8 -!`42ee0587a8-8429-4bdb-860d-57a7b6d5b7caf6ed8fe7-0bee-421a-8846-8494a9dbd0d04ml10SVGFilter / : /XMLNode : (fxmlnode-nodenamvalu1t/ArrayeTurbulence;childrenresult(turb2attribute; ,stitchTilesnoSnumOctavbaseFrequency0.0,feCompositin(SourceGraphiininopeidAI__1idobjectw100%hxxyy/Def ;fractalNois44GaussianBlur12bstdDevifeOffseodddSpecularLightingPointLz(-z-5xy1ysConstant(Expone(1specOuyll-color:whsurfacelitarithmetkkk340411MergNodBevelShadow44-2yMorphologydilaradiu1.bbd-d252DisplacementMapxChannelSelecRy(Ays333bMatri434m0 0 1animtotofromadditiv(red5accumunonNbeg0restaralwayfillfreezecalcM(linea545cc8ccc8ccccccc1cccbCoolB14-5nD_66erErod664_(771R1 1;20 15;200 200; 15 20;1 1 removrepeatD(indefinsplidc50 5PixelPlay;20 20;Diffuse5yellow;green;blue;indigo;violet;red;oranDiazimu8elev6d1l5ularre0011102n2nred34##$C K㴤L@P 10 01`2#fv⨠$pwV`Ҕ=\lPE1_f +}w>9-ï3[\8#gD-1/fR[kRFIRl:J__%ȁ +0YY uoF$V,W=J!zJ$il0fL$Wl FeT+,?=e-Ew;3fNZ '5B̚g@J@ +K1qI~l ܊3<ՅLMpYxc* oF7U{㉈6w QeĔs;8ت;Qj_fQf(AERJQ7- rFhq cJRlm7W*N!.y?Re>hC9^[\]zi1vc+G~ ʌ[!NCb^0,_9 7Pу"alC IB,}7p,g-~e$ci1 8Rkt4 r8K:V !A&0%ώTZ#sJ9 0#K-1L8K2$KQ|X + yW 2/I=X e!U̇d$,bBgj+]G.BF?P+ @JTܒY4ыǓ$!8pEO^MUDtM@yFP{T89st"Ὠ`@)SriK38!B G,KxDUd#i|uE4D7]J!~)`QDW8;,2S&?M` lnQj K6Q| ¦b*ɍ[`ĺP130eHpx $>Y4Jꌲ?FRE~Qx@4FH#JA:mϸFNՔAIVb?Un I<"v`\ۦ};26JFHMݺj$7Re2rbİ׵Vy6]3j5X<-!;G +C1&kT>tzK $=tLF\c;O2VXJR:a&)ҁ (Wr?HNZ.bNt*~m}X@KOOCf L SIހ6ʠ2Raj"T C)Ed{}ArA_`i&qSlԴ:R-4YXj&9eZ~Ut df8|RouԥM]eHG.dΣB6Q(:@{K/R~EI; ʂU;Pj 8Y'ݧs6 6kI~)bMʟ!bJP䅭lAS@ ?wJO~?Fk7dxA&$(9m9ᠪEUX&dյbEA +z &yڊePSP 3$WjnE zTz9\a:W@()U:򾪏x;}e[GD.CCfWپl5^{! ?Y4t[ Brl ս,"!]?FP-"Ѡ3Kz]MκOn]SN0sM"F>YK/7֍ i+*ePeS|hVHCpl#MZjB-SX `Ju@ +d>O#}9Ԋ6b6YkILc[4KPbVl&1+զ2^@,lۡqvФ0dT:ggU^-8mEE"3 DLE`'q6WCO&fҤol:nG.4,e9F04ӝ`! ݧQ%#G]0 +er}RCd]ty;yOEuȦm6\Bbj`3`ØTq8s1[ +Ԙ5CR3CU2`f'rM6>fO"~rU'>9I߿kё%“eTJ17+nH@#!K:򓊏mƒ4X; :qФlfʑU3g\ݙ|e=.8Hg(h/HXBt8#&JTk1Cog ~&YVLq.H;HT +24棷Agg@,NMZmDYZA;-tތXֈPxc8? Ĕ{LrO&|!3RLeug0o1i  Vtg0H]ۅyP6udBxYEUlAMԖH%*dK}9ȌbmG)& HtYm茄tٌ^"H !p봓<{[,UqPZQ6ug >;x<YQ7sKuv8〷t9!a ySsqG ЍI.9y|Đ&v%M쒼pvK|EV,!H~~}0HMH?G=u;A۾m>^?Ƒy#8/%'^-Ȧڢľ+i.\TTxe9lْ[~T:@z$n>;FGrAp+xdysHm{W'gG%TvB-MDH ڃ +"~B00*H8@ +AB/(YhcP4T +Tp w@ +Lp ( hU w0`aB` +B +"@(0<@ T*Ƭ7n47L8z"K + 5< X1jC**n8cȣ̆d^>F HR)uRl|ݒM sUU+#MuDj#Ժa=HU͙Y)IղҊu&),i >*N87UKp%-#{%e)-UֶUS%?B'AK)wHY︪জt W*nw)nKkrMG˨&3r4 +Ҽ].}9F[G6b\8bbsV1>\ng$<. _1ˡq LG8wݶE^03 {Z׼ޥP QVgq5su Uk HȄȀfh HHf7}bZvnMmmz{mXm7:x;t}UCJ>^6B\\<ڝ.g[׶]yv_[S#A4BLgnBd>r穞0y2); +"@.u^^Y{M.ŭcySٴ/1&3f]~|{ZU5^Y}0QŽhUBU|/6nOu ŸhpeR@ MRH B1B ,Ѐ +TxIL l"X +ۖlU]kxɲ8VEd[]BT^u1S'f{ +)MLKTܬz1&-vWKk@MtS̫fFLv2עQoUGbȮhg>"D+oHG(ىMy]ǥڛ?uZ/xhW6=QZU:Kzcu/S۟m '-:c3EkD&=$r4(IuFQ7j;ߌ/GڮR*[L76323Oh[x{3TUOU=--\K{U~{~Hyyo{3NKoY_qZZZZYeZZwIV1wٞ5m)#!"-YQd&fgg2ejgff"effnRffEzpzz>=VAE!/nޠogECMlm^mu,q ;FƳ9ؔLfWcାkC#32"#"#g46!6^꒰_؈X˶s+ sh$\(:d:G(I2 P; (5҆y9.p':q +h ^(~t9vv,{rwQ'fU;[@Z} +b艡rơo(MFMT)Mq#eA$pckOombc袙PxɌ"Uqà9Rd 9GM@ X\1zu}PhRy H TUrg0hRXN3i`E(3֑F8/\瑵 M}Nb8rxԥ: Ub8"'ID?M3=@5J2ddK;k( J:$Rae)_g"V\h{WEN'|L(NL -|'Aҁ>h<@9|ե&"*F N%Nzxe,12imV.m/hEqfty9%63HW{h(n@H3M[^Ej1S2wT*_{xX\ju rN'"Lnw8@L{L8Uyu貧CrR'Ч S%|B /uka襇[6;῾TX'ݐ ^m15mK@W(]3I 82ńUX9(`y':b CPܝۃ8n->s2pbܞA|&3CW /2Lʜ= ֐DoM)6}P#V?_m1b35T7+G +NrDiv?r(v1>fqi ZHio.AW|n:q)~ Ș*%|A͐"u(7G5"bFfidEB 6v-dAe#V8 ^vkmU2nN\!s *8]^kݷo[';Qaq_-u`E=>"s~*[<[ъoE?; ow S9ޢzH"LG!?qLPOPuĴ}P@ȬUrt羓 cW?,VF\uM J)5 yarC|^vGW/{J{> R0hw%qqݷު}$Wgh0K~" /Bg!#zd镩t8c~LdDڏn5Vn*jB1skJҢXI<t,MI8czpMGr]lvHhپ?`t87[:(Uv/7MP)ce2t {z|rPR e};61i_B#PkxKj{bG@eDa5NNzm ׷R1s+2kSP//@|Po:lS1>2[!ac>cH>u΢&' C>Y$2όV/dehHC тc1*ט8 Z%coNê{.EDw3,Hu[?NT!:ہ 6{ >P9΅dXhpyd5_:>ܒå NE #&;X{`E(a& >n#z +O@}yUDz[Sc )@{3t #- ]6"* +Lk&o]OW.i6 kXٗ~eC|hPM{3jQP˽y;GD1+簤9ne;9M.JOz+R? x)|FtYN&ٗULzFR4D&'Ўhw>^ &[ d8쫵 F7Zt$[ 1uQXMc؞A'T)".=C>q-}8#= ur@fבQHE u3[6ȧ>bT3[2U&N+R/tZh.LHkx]Ƥ SXE g؉r/J+<,گjQ+R $aY5+BZP|m1 +fH{^YD(Ԅ}UV^o +K$ÙtH77cI1*x1B +,_KZP,{ڠ50"J@؆#a=c6A,fD5 1/aE ] v'+>Xq "Z(N +ӤKu2lXm|>\oVTTm 9uL0Sl1u4p(Da D&wΉP +OsbzU^KK¯#zhPp Hj I#ydk)F*--ԣFoJ+goʯs}ff*<(7?W {`" 3LEpۗI20t%K5)B}I6OPo+ f_&*w]'Q%m/誽ʈJQ"R!"B CQU UzXhN +VRfG9F*Z-C/<Ml6=alr*F[/R3 5ӝ +ܭ@x#dx~H Ce@7ިF6%tX@i뤟,xv^d,q&IvUblf*P,xތ4FWuHX`G39saavFr9RN0{l$@RjՉB"]P+D J99'GmC+zb/~Vݱed? Hd]i@h$جO<1(l>-G s9t=p>5Am=a[CF$P>Lmel֪u[Esh$2> hT'5Eaּ_uE҇M 5Cyɲӹ1}Wd>u7$m>z/iq&[Ro,^We/8B-汋Ɯ\gNAn+c#9k* |z-/vh]7([Xv (UfPawW7FHprc` ;+:i{W׭M)1|Q+Lw)\ꤱZVyo.;ѓSP`(n@Ṇ߃PblYyX w(إ5NA>Sg5&(RKBQN Tj!#7?GlCs?O$ y3{hnƆ4:=iɦqǎBX,&, +R^ڄzm"ujV9B[>`,4s$}!UxFf*񾡣.p:ti3'$_ޮVP简nlYJ?oCEtР2 +7(>~c +Gܭ>)O紐 @Zhy$K6ce@XЙo aXL3 9.hD&I2?@gs <ӞQ0.^5uccɢpO7uII]@$eJdZ [ϚlF$ Haͷ>ЙH7Ix/żPq +>Xu2ž&%)`@U,^dT +vh)دYW-?+MU@U|td?B +3'|@rӉy19ȓP v luEIқ*S&_M=_ +Iѕ@-u暇+GF +5ϏQI(ߧc>+P<}F(D5} bHwpѥ 1\gLБȁ)@^ߵ;؜3،`O|7f`KCS0`&/b٢"J' dˀA?{߂ }&+^J^p jCs' xWZ1 xI`BrO"'Iy0_sŎS\acl5ϴ[D欜Y%>!U yzNfnhTۊUVݮ] I}Dօu$5?*Tma(}cF4B? ?AcNjb,v\h,\)¸hߪj&Ynb X7 Vgەnk%QV R,8Eؘx'P"K+vHYmբЭ6qi +c>QH16 +S:,WY2fODEԸM|b %{w~B\_Nhaӛvr$ѾS~ Gc| >O's`&|zصPwP2_IZtP@r4Sq`JョZpz +l@f60' vӕM1 :vtO=[3( 8Wp&lYɿH4hm60yZ2n6n~̑SCyFB 9Oċ@u( +Ta)1,uaI]J7IPݍ!kg5|+a΅$ɚP).`zc$V0*Ad{6U>u/%B8/>2xoÒ6BE ZÜ ,\6 ~m"AO)޵ ~f|V6;{Y};I#9\5B)GЛY-4{$O&13O?QqXJSa<@5IC}K9dd_דľ_090;|P%Rb揺a^\.ZN}<@l +rT/mԊd[6W"KLH-=D/R$|%x@D!M?IgaXTYjpF4JKK!LHD 5^edEsfY>nK;=6B,E 7vE=0zU&fbOntY{O5 3rs~ua/ѹWFc^J͊~u#ZH Fk%sp&[?F.Q{YAvH؍iȄ^:#bG ݩ +W밃WهW2R +#RwMgR2=ՒzPr+.Y8kt Z*FCPʍBk?HL#\y)xK:ᰃ8z$8IRSmG@q',# E00iFK[ +)_G2q!r[J<pxCM"6$n ؉hikZ:|BA S;:(# g> GyՌ/ S2=.xU'M&>i* eh!eϒUե1r軝Kx_7;Q So}*)2.ÉÑ:-kN"IL~c7ҢʒE7 IBv[XwHD#533 RBȍ)%$^V =xnRo +^֛cRf"H&fdpܶI ؾzh_kT5^~.huϪ)516sz{=s%4kU&J ԾG`T'g-AV9bMԉ;2o=" rnɤ?F64=ZFwtz]禙6?֞O"lʻ\H{PC5*3}2]x>~№Nb _P㜽pyf?S֞}ކ~K܇/ENg&Ity5[#=ud`rC^#^$H%9nس|5d5ӹ?"d_l'KZ:g "ꁌj%6 F-{O]}T~I{9wEjŌҋ%DXYZM؆licKh-/eQl_ `+Nwe&O"xa߷Q4hj~ײ{ҡj i^ sM%"4bX-妛Ƌ{=5Zh 96N~UySlligMRf򞅀%QrGj4c-'A#v{~̔$ZR$ ɞʧ)054xSΧt{4=ozyc +e=gR.e32ԣ4P@y$XAnf0tB-|\7Yh"Zy<NJC ,K1H ˗teбR_'Ȥ€tRHlL^*&.4%Y|~dkDԣ]@& +9 J%o#M+C6| LLXeGmriKaBIQo9| ^y9OD "-|,P9Ѱ -^b_g# '=b"آjPȰt ss QT}A}n%!1Lܴd* ɣ.ۑkq4j<}wi9B@{ Zu^i횷+SCxd+uȑ򸮢fZTw=W1aL~u8˨hp[GR1YO4IWS‘vIhJ'Pߗ? C~g7I!ugV$2 NkD2۪H#':{M;_zkgJ$C0<6?DzcZ 1eB7?l\C>8ub,=H-}%p9i xSm1KXx(j #\rrYwj }T\/;9IMevWY)ECȱ@LC z|Ϊ,o %)d\W~웴gJCBe*I|!y@ q~ xɠO=mSX"?eL$DW_P6_)7':.X5)WmD&YS!x#ˌ))jgHe6ٶ_sP_F-ŮiY hNI;ka J_t `',7e?eŵADP~kc#sR;/RZuԶUu^ YsgKCH$y@r)^Qk +l+gO3%6 hCb$ ictA^jEdoWWNm?VEYFPkrAƹWA8`ab{ ec_Y.%iq&cЯIO D CP! +Qbw6t #a+ٜia +~ VHOu@DPBzH% *H3PИzP gd>  -Cʷ 9tğ|\ApdTCߥx9 Xsokn xWRfsapP ޭ"2Myܖz:hkƀdol :T + =!\ 4yi'oh;C;.;.{* +$,0wN,6l"2+7lg:`pRw'*|< x!VLwKR'K1鮬 .T&T btne)Z + 52Bd=?jXФj` (қkwİbiA5,UǨ+!W +xS&]YsCu:kD^٭Vf!W RQߢF2YS:p6X D*@FԴ/Sb~Ulg Und7 {ٟ&iHbY{. m)u:h:S^I|03Lz;#m7iW?1aKIja7eRsfW=& ×19'Yt΁]y?& +W^d5:h} k,CO(oP/O#$*IZܜǾ +m5l+L\Yxs\UtXYF%(rilI\3Lrg𣕛:Pr=ѥ}Fcd8T웖 Z@ʀ/qm;@i42Adn44lJؓ%WA&ĪP] ]]fٴn-$}ۚ"D7bסeZRcI XU%I%|EL4s3U0wUuE8qlezk qG $É +LGr<H]0@+I +^H>ϿLy'b{ m:~2AMP52[cv}E+:>? +%iȪi764fy@8?ƫT 1"Z&\A+ȗ_`:i{Y$Iv[XAǎ=]~FoA˅.L*l ],9Jq=lnnqi_|$Q.\! +dOPB{,\ɉ, կ !?Sx "H@&m~-8v?ka&+Yp3E*gVuQLI[ v d/GPB.ƣher&+a\LUɅf$ZS_)Gq]'b}MUܽ󘳴cĬI^"e^eP݀aFrj( bLW7# :1́!Q#]u^y5 V +CW=:?¯EF44) GP: +PFd*4:HKGH鈉R"\ZX :mhF{ELޥ!)_@IP"7F>"a!H)\mGn)ȗ'\E@I:/L|#Y!nĢ&(fЗI7K* )?7-(J0y8"I`-Pd:Af(?9NSb7mɤ6TeML#L/7 \sDN gs#Wkgyi^q:DetCQLE[˩_ک,f+E1?+ kJw-mA%H;]9Au \-XHgH"U*}3Hd72)nr X&:4ktjrkA7й•XVGBR8 )Qð-0[tL8`x<1AW`vjL̢͒1$:SsJsU, Vj9x9Kzb玖 äڿ'<+o\Q4iEq&M_zX VAؗݸ|E=' P{qU~Zn@5^ѼLɨfG ĄiL4vr_n7"uI¡ +쥉"3,7МT8hS!hB蠒OEb`GϞ"*b4)*Qh(HY3YnqO2/@ +&)K.b/îMN}`%©&ܗv)tFIqK^>]V/x @i߀lVIl Ֆb543sRI$}(ƚz/1u)QoW̝֦!ο(yH?8Gk& :ˎI O$#Joѹ5$pe() G"`y'\ +4ӿA'MP MĠکg8!gw +UNGy[(v Zz:*4Ȏ3{OC#Ctsi$:TbYQZ̊(̔.<"lD\4cgC8ȗN @?ԩ/G後L3ݎ-8 c#oׇVPP)êh`oޗU~9>VM!̶Ї-C>~"^W% zfZK\s[  7׮q:5T!̺gְ:"FJI"-b[ I^c#^9X_^0*P"s.2V:WrٿnUB~PNtȪek|E8nM +UGsi(T}ɤp]"q<;_ #2ݪ*.I?`+`#j[4m5i<;ƉRS G׽ T3dP "SUb&c*'6%",YI~4]E,`7"#\y1Mj= ceID%H]6!s^4DIw˦n. 뤄KZ釂=X|oNMGiv?$( k}fEg)+䥃O$ KVx=;6`rVi>ѭen3(Q׻b`CUh ['ZZZ'F\YÄW-MP$*FA&y)< Xye?NN8 #[ʇ!$z>29f@fFO><2|E{s ¸p݀Z:70c9ob΀fݱ]Zx99 F Cr~r3S~7[`wwH}?jv_|*t,7 e.*:-7:\,>8cUYU?`c$!z\+z*'RZ6lj/.-+3 HcW[8 +09 @HيcnpU+ZpE G4K,ajjR'\ѝTdTm]Ls5pB{'%4 'zs5G*](N'$ϣf++bV#p$1`>vri ?u ;3<.)J&@KiEKA,wAZ<CN7Kgbe֖ŧmi).dnA?q;-b(ܯbU[e>4lNWu)&ln1x ޡf(b]H_x}^̵HIO]w- z-Á~lN_ǟhe" PU+d^aО(BK*p9 U%n,d_=&/rcLxy "ӝ$؆'-=dAD +J[@֠h(z<մ`0܏lwu1zE۾eCdd37*?TGY>eF;O@wÑQcD.unW 3苁,ؕ,q:MvMli p7i](ch%-],!'p%|mLS5Đ_Vi6| 2d bY/袤),V-P ;nhءNlu9ZcA|f">Y(X%E3),`MlTn;$R%'0eL5SOjJr/^(O f_Fh'/aOcjj$0 4#pλСzPaV J0fl-Dz% 49Uq~ C4 a rBJ8l~ӦըC˭ńXsH7.p^D&Bμ8EMLж- +zUGh@ yyAR9- A[+Za|P*ר0 += ء"̜T܄_ZHw͋0xaGiB(r斓-b|<^wjw/l4k pM˸yR*7ѕ1(Wēsou Y +P$ BwxTƵs h )v8µ:q 'Wb\1)2%f/SPi]sSAiq48.B CPkY' CR8]f͎O~ <{oRk 𤾥>ZpC+^WI>^CWB@?r(}|g*p1@?/4DhSr@rGm J5);-.w KF +Bv55P(S q,<=m2Q1? 4Eb;[x۶5(<+X-xs9dG<+ EwAҝF/T0: Znf\6C {%!"\ ǡ-.nto;½8gp<a2>aWpeܛnS;+T|PCf spnd w+-/ bm`~l݀&>X͡x[NJVp N^9\,+Fh*p#XQ DsSpU|egicZo ~goDS~)/Dݭm;q/_9 S`n b'G`Eݬ5t"FrfÍ/^AA7ɕok.inJ벛R߯(U[Wn-By^gE`NaA[/Ň)gþ1^ancn;X^,/A L/<qT(> +q+>Kt킔]fJ- U;_0̓B==se\Pa4#5ܼ͠kZ*`]כ=7F.E?^++`KOd- ƛGGnAN2pᒘG!5~J{cGKNK8}6>@sH U&\+̾bDysh@ GgrĽ 0~@._D..5+`pYp1ߎ6+3@{\4Q&/Y +Qx}/+{iEx7^3;;`eTJ ,la, 7&GE?@'{%ʞEMrwHe@~,bC#s$Dy ekρ~S'fe`$ZTHP;£bUD#zɾEakh%abZݖ7BqF~d{(E:Me^KA$\gf \P?KnARl!}+)aIYVvFgwޑ9Rs7Jo,y">I]5 +2֚GAFe߻\{ћ?^17YBnOzb#}XRQ +mlNN4Bָ| u>EjV+DA2dE[4]ҒTs{&03"@ @ zs/f5̱X;1W;sYkbb=Eoמ묵}|Ww3}Ōy_ߟ߷__k9s~w;EָBZsq뮱w3뿱}_oE[kknsη7=ߝ\\o_E7^E1csڋ_]n8E޷Ǘ3Zg=1X_׶Ub=^1:sgw9M. mT%4TCޫ7:zc|grxͩ2sPN+ĨʖlTqVC/5?UrMQqڐTHgۃkelEC +lͅv-1JLR=[k9c^Qߜ/c}(m\( +pt\E3󜱯Td(֒!n$cI7 j1 ۾Rw[c_oEs-1t;l!\t[kuDQ8y3~3$i 9Rإ0\45Z ˅벹 Ը 2@dMij0<-.E;!h[;MM5T11\7sp58s)KזԮd(6֬дeE"[2Yr4.̶e WȂpp(R 5s9[gg_1w/^9\^raB.3ckFBkH/IjJOy^T 9b2[#cww?wI0-yj0iN1[54-q gdIf&Zbąd I\k䩁'[ӘAFBk[\5ҵpk #Qں\g\1s5wyY\!oՙs޽Y\?5楻޼o#6r߃y1yۈ;`ۘs,7?cWg-.✳Exŭ9㭵y9aEn5z柃\z7Ƚ:g[|߭޻ܿƻ߽}wߋzkﱋ[x3b߬ȉ\"[sg6rq.΁/7(;{˿bzbYcY\?3|/c=rso+fa~7!1r!s9?{ɼCp~";!"^!?wE|gQoX_!_CDќ5Xs9x9֐ y!{kA!^k |_y{qƜ6B EPƯ!>\C?u~5^3|̸ kqb9=6\=Ż゙=5Ǝ6F؁uZaJ) .UX ʺzG"YdY*|h@G7!F6 A 8(У37.F#ɗ#A_x1', h +l9 +MR {[i1~tW|>S +20k ΟTH +ם ([R7d(ok%oR[y*ޝg +7ٞ%&sUUP;ɖ"אq$c$WX٢fha۪U g^$v%հ6 ZdB-/ 6EC-b,WX +q [(!8 *.Y- DF@Ý]H1(kdU[SY62`IWKTS5!DAzJO)=mL.dq88BdlzJOJr 8 mmLHVы8w+R4 m&ALNQ4V Ԉ@E|&Fކg6R(l&G~̓)=3ϖ`D3?Yl;.àh4l$=m&_g T:Q.0(; haBbc[yL>TF&Y^|^$(-Qm.%o9C.\{N_6FPz8j$zi8ƵKca54+4孰:Aa-6ͷ9>RH0.:ŔP6F!R4V QIiKm!gd5U&_Fm#qL2j3 遌-9NeCyg̈́%1Co;,C ކAKaP>A6=jRL&91 ?q 0e,0e,dZYr1ԉqU!GS87d m&M/ nq`而<&HGD[vx;#j'WmϴiD{GJ,r"kL=Hiq<B́6Uj0Ct=@ 9,4@a4b\+m•y'H ,LV5V! oCtj.jATck % R cdЈI(u$|XGfn$fX V{,K҄6SSt_"} S"02b$t%4$4`-,RIA 2Ͻ 8VdJb=r@o 8W 1,."%Kd0D-RI֕R1N.сw4,b UZMԈ$MX-_ )mV!g ȗQ QQ(Q| sM8.H``<1>I&4)BXH0CNb$" 8ڤR5}K"<s`M90t0m9g@\Q 1!+\'4bGYp]Lu"B,'S܁y>_u@{ eY۲u;uPJ`q61(z@]Lm(ҠkMpG`Ӫ G35'., 4aP~lEẚP!"<0vue?aLt1ȱZ% +Uj G (=[pq|4dF֒6*4jP/4cj6AAdpAkQ,6ԠTz&ܘ-şw` G@"E!`6,JV1W2q<M#SC H*u?W *"šyADHeװ0EA!B'j6,hBJ`=Ά$5w#GCSK56F3\TmZ! k !p y8*{a7B'šaY8VmE(2[,V*DӤR2KsCM_4!x OF #jib*27x6CQgz-UEM Ac츷XẎH>loٱT1H; LcaEO>*UφLhp' +Ekbp_7;0O&1Pb24d %|.#rOhhD=6i ++" \.AAlR2fj.>*B/b$ݩ +5݅xHw &y_GNI:s~")(uMd*"Z]^ + P"s, +aպ  VXD|M3J2܇*0E 0UN)G6:oC}P} hcPH7c󺲟4Y>@iNiΜ,NH +G& F {[P\4`>/S%ϯxV+Jhvw,i2$Bl sÞ"2A( +VpuA*T ,2<108D@E|'SmIHhzz2H'XzxMcJd(`ކ#P Js0|rK`P {eO/ &AxF(5R.X]V Bd m  X kF@-* @ԲT.|4*ᓥd͘B@&{!#u \ um m$c}JJӑ*FۼM1Bm1Yf"o}"أp]T8$NqRũ +ihEYAiHpp҄w\HփSC0 H&_g]¤.:t;Pi2R=:>@E-0I8@4Y尵Ue(MrW:))t``fP|LN]rVi›qLo u#F\4 +Cm!_w "oqQ,kO<6vp!d \d3XW#Yd/؅bЅ2*҄2kyzZ6ކVf׸F FS8TݯJb{}q?ĊsQw!> vx#Pid$ ^Q/rh2P90j$'t0EZfxaD5ŠɺbPuGIlLXJZ9iZ*BcDiE!-)c!d1ijp|nO-`󺶣^s'FÚZhl8oS`KfZ&RI$ +(L{»Xu @@:o#iSD_7ZF&? +PzH@P k$f4<2,\m +BLj4`S'IV\ezҭ +uI#W:5XTHw"Vkt: /o:%zUAF4#WYh":ϧbqxxUTQUX)Tјd=TBwiJmH + + &4Si0n0s dxႹvj> (Er@4EHS -O#բ@BhbRB8!Bdٻ@ݢOB)ѽ.*Mh#Hٵ/Xu)Xz#ꢐz +l.`bXKßӍuLBQ._.:@ sGr4Ղ]L_eLK@HMDJFQcLKtL#y䔥pWZ*kB҂Зꁽ :ygJy]p^7e5PUJydD^y1"2"Fr/Ё|@S)@z:RH[ƪ6(iCLjdyBɌ,ETDъD (@DJB ]`g3cx0dm1v!؅FlaP y[ .lyrRЃ +80vҮ{J[P9c!LS5M5GA OI(ȠDtʏTJLsHHmD | ^Va@Cm|]JKs`Qv#A-/%t_pzAxx=αx[e `R"aʺ*d)C<geC2pY 7'aiHӌ YP)$B]u5ڰ 8Ȧom<8(u_4q-h׃xyLNqBu2xj*'ckB5L(bI(@LuEh@tPᴟyg湴8 IxBO9OdN(-9=}&$Hmif}HM2 B #860 ;!L8Lbx2Um$aAͣ3E@N̻0oK88bt +|jxmR* A!%Xaȳn@ W\G-%GWrFG +!G6:RCщk5ZjythDd-+3*4j}?T{JqHup|]B$YȪBP2" Q(diRSZMP:h͟ A!cuzL&=mL('c2Q682 +]4TduCEwLH +7oÞBpE{fOS<3S< +0ўi؝4tZv!wZ FI;FvҪPfq80bȫ*#/#$e&^6Dyژ$zG,Ё͚hHZf*UQ "2I!Hm ɗ040 p0@f|$0UP>sj֊Ta.[bUԙwÎzmbl.H f&:O!~͸H렧-j)NN^*C$*MNAU?<),>pҌXMWmD(t5 Nrޣ#߂l{7l _T>v] /H]ͦh GaFE(eA;LPqZ!1abϤxHʾ*µ7<׾f(yƄ䕫-)BxigL9[e脴ݲ3Bߦo~}4gc!62\%0" K TG_snYS!=yϭ+C mFNB%)ku'EX +SgRMx?|/R(r}ۂqoMrAsaU8Y,Z t!A<4vS_mſ.yH>)k\h*R}Ctd ,bݳ_UA,㳎\`/SA@M1bKN, +K=j4]0aavvhFPx}Իe͍D>ͤ-Zl:xzRbg갨ø/="& Z + JT305\["/!+`V{yi>PXq%x[4CWh`GS1#g(ط9|DD ߫uGٹ@!7Oz54 ))-~㩏xk ƙP1/2=x6Ф=ռh76`-Ӹ$/ѧ=OXqHcN +?n$|NcF0pyCNt\hVKWk oɵ: HCj^! +.eD + %社٦,b&cZn(cO>a]gݤgL5*gO"Vh%ʻ"Ȝ ʹFB=|C wrtL)+֫2M˪?iLN8Y"#P[q>W2!3Y2f$_6^l! +hr̡Lhs*m7Ua%gJ;)Egp(Y5Y͜zbԢ̴.`o)lLܞ:#@J&˼Uxx$c )>SP(ish3ypٙ(DxVa0L)Q001Pټ`$O n!}yOdnܐKcNW9 O+1{+)>Ng+ `/Oh J^"re +Pa:EyW:Wd_2_~%:uzkgPخ +ȭ^@9-!1czQ0HT##pR#t6;%\bg"PG*g'}֋NX'^U[R ia\I!@\s|î)HamV6%aQ 3L'Uʤƛ$L8 ˁܟPڴ [~=jnr4c}gy gnPƿe 4pm77iI;v5g $\% V_%)8TȌ\F$72Bi߈/}K,'єGǿj0EA8< +f^?xv%~MSoJ+O[EPDY E6Ҳc Y&`aYfnab'YZY/+BւΏOG&3v$#^qL!XNL\rrM3_^3 z49eFa#nCƤLE)WRo^)Q",k a:rX 81IpWU{1<䊉8v @@Z J0q^C$,;t݋fϟj݊h.㢨qS(e]QT`",/A&ĢˏF0#[6T&6UoRr`{JB#JV)YYջ7DFz Y9#VUrzDMPj){3lqK]\'\Tuuz!+mG$/cڈpʠX`͡4C&#?6sP{k!^730-M\,MqpR_d4@qvI?1؃\='z} &M`]u[1Mem.Q[_ }F'pÊ/&R8 36k6VD/T\$a,UL >LH:p{"67\Y;<]ČAaKqn:zf#ݱdo[~ؕ(]gZnԚL\}Q⻫ђAfp2H6H\;ֻw1Fs,3ﮅ ʪ/8zxlA>m | *,z'Ļ~°Hw:N+ߒph5?0pZ%|3ZoXkH Yu .%&ѱWjfx+~0 #<[jqˆ{o܊%ྭe@e9#5bՒqWԉB.KNWsr}PVX4)tpϯP0OƚLcWu_}+AcLYF<]7+ʺZV?Cla//F!HWa~݇ep,RpyqLKn@<U&P  ݆Yjv'^XIэpFytSvX+m-5vS}9ᆵ]J{9#3ۛ1dZ^]iWu-S}l*%FCb0(R;'Wy'o:k!% Ѻrd2](^nU6CL!gSc(p$4HC;FiSbPɳO{2{B<2hЅ7J +蒦<79]t%pՃ(b (ŦK[t$R=NFE6|?".SE*ѥ)I:G7/OWѽ )wOSVˡ``(@"KDR< ] +mJk}TW#7d +Ks#t810*4,t(VSbĪנ{iK^ksbj0 'Y'p,K4w4oxݶF?(9 }J[eT +RZc8TJ^2},!%&x9eq6 4b@sηm ۋT)]O2&UDzaݸrh*!duX`N,6G"HJ]lSE\8Ǵ4H/3BY)Sn_ØOomHɸׁ|Dmvw0ޏ'{n_4f0]&ȠN1Gk5Ye:nbdB)6&G*LD3*yd䙡.bL72^wnhӪ +)WĮLM읣')~8`yepo\J.¬TX( ӱEe-Uzgվx\uɎ?䌥''`>~RLyR2+#O8KևƂl"GOZpT-eH{_we \KOeD H!W#ܘUYC`8$fvY_#'# J0ԋU~{x?*)/AZ +s\u:%( u`$2 .‹x?P:%xyneWМ0P1Qś_-gĂWc'Z;9f#z,!y*A U` $@_~uE(6fyÃԑ/rPv#ͨcG^>i, +Ašhg+AMGR["Ht3u52"{#R2L 6!jpPVn#:A 8&J%.&7MP,;9+Z]ڪ9P؋\[ՠ7j,: +7 譏sQSE׉H!~縬ZrK:9J `%Z +Z4Vp +N #|~=@p`@M4%iqɎ/{S(BIJQ^>i;ּ䭩^fMH~b$y鍥Cr&J['7:a KXaB񛵐?hRT26JdjwU +qDcf(Y?#zKS} U a5S~rƯaH9-,4 '!^Cmj =rehC4P'X@%k"{OtqErÍQG %3:)yZ^*/Z؝Dب +5: R{Z˨r~"r R/(vJjtÅߧP%bf"otp1؀.k\ս9OgCHD ?2rel +):)%5! w +j3)@'Km``V$}a>WzF<]g7.VRAQ*~ݲಐ3a&(WìJC2Ѧ + ;6IᬖYl.~qZtc,[\7 5k"C|] I1Q:t~`"P!$exd})zBN;_|m#4ڍfinZٕIfzŔ{xL쥮n8*Fr0 IJЋ #_*s,w\KɗGߜ|bC&v<5/#P4ݏݶb ТyvH @dRMdstA-}Dyv0k#/MR RS~T߃܉e}rDT̘ +HLn<wp'-l탋N!wmԤsE ה*h#J5קy +CCj̬d h^_ط[1"+2xl~hCS]D)IȗiQB񟇊_q^uFbc[NU=T԰C[Dw C=EwxL+n;nӼm;I֒t˴^Ņ{4t.xGb+t n1 Y+ךGPtCպDVGzεxj +5ni@~7e; N&'y#17YgVlE©v]0PE{It&[^l*dӏ(>U%C̋zy0eWBG͊-l>$}G3e +܏1PhEhPf*'AN, V1P&}N>@zFT)ԗ64XB DCLb!r';)y5@]hnae$fi˷%I7"QpVnVC#*ma!_5KIfL8<ԉSר20!LBs] <' endstream endobj 17 0 obj <>stream +'-# ĖD: E9VƗRP:`FT2+Ux ÃR9j%iA>k<[g@.4 ЗP5qe(O3)# ڔҔuci`=j6= OD&쏅ʩuYgh RMTn@6K'dJM6pR) @AhؐDn Dwz-[PP):kO$p*4'b۠𫕏}$&[g>|GxhoLX#Z?hZ] I[|я'˜}!%ыcnxT2p.{r(X=Cnsp`(Pb DLeK{DiGƻDKsJj=He Y\ܝYQ TpjC ڡkꅩ<8F:͘-2D|Ndt,F<2Mv#?&ZlL,%qdKD: ٪tњPj5KH$BL CS zOODJGL1?7 c#*{*Ģ .Q?E1 9RÔZLtp@a"# RvZ8݃)Z,n!=C:^0e +Hnɴ:h#:gVKZ*1)8%)N}(GRG2qJYnce&'WUAiSۇSݗZ FFS281 pk0A U'ge[.lRzb9_8^H,>+cq 覤v P(=QĨDcM4+zGHX>+m:8LqP6++ٍ6QW4׸`hI)]Ȼm +"E;hϞkѺx:DQF݂p|ޟ !ؤ4}%dG~ГZSt1-d/T3,Z@xADPׄb2.2ҜM}ZSR? R5/i\9wN|=+U*&waF Ḏn8T 1r,M>ݯN·v TCRoHfhwI#hpFv"Ǎpl㚣3ĐzC] wJi~x IW|O˄9],XF<݃Nus0"i ~5OO?$ PK⚧%>ggeyf"^6Rg3,ߞ-E515Ӭ1J,?݌7Vj}J>R'U5FVE& eV > ._Bf{wv\˱gV(޳q +,DLwmHRMh]Ӳr O2(ִ¯lֹPWWcE7Ѿc}JjDf)Yf=P޺w zp]ih7u(RAcF9@paZ؀w[eiH hҺb5lGɊ؁H* ^CpAT=QSѫFoGN3>o3sF3H|%F%br$fFU#T+p7>I\!B݊##+#38ar).rR+vڈ5y}QQJ`⑬L{xz"4rk []΁u0{z'P(D ʙ[C-d@32]yzOA%z$dTiZ ֮S~xE* [ΔX+2eA c5a sT2HFt#X-BM3gҹ$ Ծ O!Q#5 ЅI/(>o' IfOe@CpAٸBSr Œi~px!5x a PZ^(;6;dMh qCG*1|!HvG$?|Z$t,#>f] +WM@-}7BA6qgnhzdsʼnFU]&w#G^ +ߪ KZ Y#P|Q Ϯ# +ե0gD篯R%CKħ埃WOrE ?|:ٕ6%:x@@)FF1C:I"ˮv"6G?w3n8qb u>OJEĆOBH@@} dwhx ײEgD˖ lK5*2!\ 9Ԝta݅ r_ #:SV0 [~^mZR1Tܵw/ uYT/ ŧI_/EEĬo-'PσTsڧV6"@BtrNHňdW'LŸ(h+<cAMd wRw-ʧJ=p "+6M%rQ_:w\U!IKc,}qUKCh̴V}hwZȾjiܒ;p'7yԞ&Xt@} Į$v4c"S*;Q.+sڄN#2qS`p&e?A!b qA,9UHY @;h,oфrXpxTC vнhSͅ<Gۿ@ШR1,S.߸… [DLܮzoK)5EF%nܐh_mGH(u[ [x[^ $[桙jPF.aMD}o$I3QinɅ(z)3ZC늿sAGpdRLBjT Vtx H/$j6Hu *zlcBoARR. +4LUT}nH_X/H͘eubޥd^! ũII5~duږ3BRgbnz$󉨻nbZ!=Tsv<' u-]$3sDK]#߼Trh)?%j#{~`mpSM&*j\xӉ!8ʙas{=;ةnCO`=z43oFP|ϐz-WHfB3[Q棱/Qg(xygX\TFkbBq9!U +Γ~ + $Ϫc^^N>,i%G:@sAndv DXT?^W;P$O6P + +(P6ĝ:VSq=]4l%=`H]ԬU^6zSbV5 +UN1:] eF0wwDh^4=k,pX\sߘ*PM#V"!u f2A3T(>co;7P'Ǧ8/{_94mj7 ,h] )z頳 q- +82.~l +O7{ص(V:lO,EB$ r(N8~0J-i76<.,R17a(z}q)x?VHvh\Z +]X͞HK/98jb8hRmZXv`a؃'C axd!;WWQ4t,,huBHJSݔZB`%1f6Y#$dSc='1DZ*Ó!,0Xɇ)!>L@N>gvb+kgiit\NC GD \; 2/ j/`:5hl2d@bT~lJ(.ۘ NyE`BCOH@/q̯_UDTɻ8c0~4PHO 2 Gh?T5J&)QBn AE+  OxRnH=X6Zk F6S\^7H/x?/ƪLͼ~Lyxh]<>vf-#Ix, 1 k@+vwR )]@`X$mH!c I511 9ah`amxI~A"Wh ;kC?4xh=F; QJqy!J?<+!&VLVDJ\݈_~1qyl;*+(K4BM1 " oi?{&QF}a%$Ikhu_&.^6S&?n;0zx+ߌ'! Hi4zDSRzCa.3%yJu"/40yh#-õEbX' h2pDh)W$*SdIMPmԘUiw0 oP2\D,q*lXG5Blyb|tvF[vUFk4 6!\PɸIw8 +Uf. W uoXrrkX#bkTσ)}$eHg݉ݡi9JuRPvwS|-7&5_{LtڰJ^m0NF\֥dnyixgkC1B!Ī'L=wjM!`4X=58-'BLKz^ʹL@Z?ŘݡAjCHv{ZS7^VrAU*ƫƫB6`F|@..*Ybs`J-ɓFR/#jgB1 }fzwhbZ򅆞d9_Yx xL9NiҒ(+=qDCd?v +-ӄrQODi1fg'A7L$a~ECP%EaO (wѼ΀Uo;LƘyb+mxr$Q:T=tg )߆+=F3t1ltw?ڌg&%#Up?2ݱ-W"4*Eo .|y+wr=@Eא-Slvi4iW,(W/ZFFD&턮gJ#?)ʟ+Grן0 6-||8mK:w~bLOWU 8L(/s"{K/S֨OH#Ab ͘ݭwuS> Oώ/TWWI#)=?Z3 M,P.YW}⡚A~jſ\Y-ֺ`#'Nׇ +*:}w"v +vfKxpQP~(h pwŐ VH)]C ɕR_9АgL4$}H*z>Y_5P&M' 2*]W.i"!-79;iBVr87 (BdQ[{JZm ы\&l/Ib|Kv$,k!GoyϦAZl&דZ!Wm%:pR%R8;vcnIOC}?3WzA-We%׃)}wS7!U!IB|g|^BpHwa1RӇg,$wK᫳#$!vIܝ|& A[Duw6$,Rto!a.H;"UX*"7_nwe %zw$!9҄{/'~$zQ/BE{V]o~)H,ڝMXmH2bH88תe<ɟ Ca˻txm]!ݥT@,OGP0}&}'9M:Õ䝷fƅ;._qbrewJˀCʃ61o䢡ԠI4lQ|Tƶ%D+&JR$Q2B?QˊVyU>7B U% ;} gFCR6ѐLߝ92dS +H8`lG~rd!9y/^+Q D}oUrFm"Pb;p߹~IM Dl=IVu^ Y`!b,0p9,ئ_x;O!M.Ǡq=uA~Ay]iEK-4R-Hp+ĉpW&﷓w0N}݂Eκw}~QyiiE]]_tX$j9(pвHU~w'zbK3>x՝Y9y!+? D"V| +V\ X*:eDTVL@@HVq-'kP,@*T+z!7uܡe̱RhYD`r9)(:P@i!X^W jy&%PZέVq[9>H_Z #yV*S_ +XfrKL@@``%K> `*8GdDR8) qjRh9W Q$2JTls,-:Αh9bj"-r.I 5)ǒjRX +$ԯRGrAn%:`f@V}`/в/`jY&h@ cU,hY&XVq."V +tP [ +tVK>K>@9KVX &g  @ Gw m@GCU1zNJ1GcUT5O6j(JvcZ;[B4]k9ޝN j)B''l`nQ N!z_7kt8|WҬdrC ` WO3$r7W4hh#`,D'n.y+@wwCwh,ߴQlrnJ.%eIj`5 {crƕ_n#1O“9&l ֋^z`'C/>"(2XSfF +TqVT$RsjP?1ى H"/3{l+n'Oj< xry;4)L]tDhi4VRX9zw5Tv^BQ9U=maȚYI1^?{Mm4wd\/&~!w K$у=5՝dh +l`B e84*k b}a#I{}pD nB:)Q2Ȩ +XD(wA2 e "]B]|wwJBuhlFI.w2Ub& q0en)QKg=L9\ƢfOԡra/3  RtIË,itjß +BR( |u +OJ >נ,%M QgQ:PY`$vסR$keU-3MH34]l4tH*Ôlc  +dl XL2V@@"&FQ0 +BAA  Y +尔e[ =P/(\[[Cj +SA9|& I̗VCVQHpu^UHkbtȗp(Щ^ΣNaKݗ℧i?v!zo(6d%5I6f3W54RY m90sGt/EZdadc }+rj^b*b4/t +wlVT!u]NΦ8+Z? A<>ܥeI6$I=j#՘2>@mNj8*̴qGd6ڿGC+o3+kE{G~>"kQӇEUb惐sj(P1,JmV6@#^`zB,pF֯i +vFt2`Qtbl5qmOѲue x_+Cq`^Dөfy!7 |RGH +F A/[OԸƖKSOA1cf| +/4BH~//zX-=J& n8tJ"L]+7ӗ'fšSc kƙiH#na5'׻l0ݗdK(Z>}'}xLV)GKؐ[ J8GE@(#a n `{zCro>R8WC'D>oNOY.Guu`Fb^W|QruGw$! u%ze%̷}L]@noghҝ兩MB j~M$vR͛ɦotS > +|BQ`b t8֓V k1tc_6v>5z -lIA.-~e\#s$ɂYvq @P50+3&zFPtR>2U`\4=jòϟ932|j`WP;hJ~t@_d7o(T',pd">; 0g˓4F+skTd>&% hRD_r =#y@#2Od 5ƹsj)/ /|^6lM+;;;1)eh YAb"(K>0`ڠL4 + QJ+/91N( W8Ö!"GUbbXw.PNt,L(w;j]$ +.4Գq^Q{N1Ɩ04L j|b_<#Qk{528FV}LƸ,v%V0 +'JʆCWn 8>@hTq7FKEnldއЀ08goҋ)ʼ-fX5r{D{*2CHܹb)Ɲ3c;lF3eY77Bqpȸe80%szFlGff^c9M112fHLӕ!=5ǵtqV! ߄2jtF}x* Fq\6Vc!d<ѬV#s4m[ Ȣa67 H){֟=ST GT-̶+& !,}F] ~ZX`rb<~ 0qD3}lFV # 㣧]}I~qcPBh;!+^%Lpʫ7zo%rggm7 3*R*sRg'@x5qK(ĔOɜ%,x|\‹ʁ?) UZCn\5a#Eu5q%֧] F5F= $lDŝa `Xu=NK3 @Qjd'E읆ھ)exkB +͵alj1kh[t.t"( m_|\ P3-Sm~;;7'w!>ذ a&]5Si? L064#:# .MxpBAA`)b_!&^gecYxBqAj~%S -xQ́<{[k_Z".f_곶4,d}z"ΉޚRwNH(=+h%e=rCuAHdz`s1:IJ^|3m# a\Q +ݓdfW-!Rݧc9 +c7nq7ޜD㌘3b8iJP̦r=w{74/E~x,@0Нp6avDk">ƊZzF5*Y/jmյ>Nk[ED+[S\u1Htrh37IiB?* +.~-VjVHDw&AtJ# + S>X4jkthzU@m\gQL (\ٯ-Kx墛 ɓ~~ͅƺiLUL &rC*?wIä́SK#EJXf,KH5.}W^jW.yN~r$LʸOJ]UyVpFnni9x}RI;ׇԦ߇V "p484Nk[1ju' n +.o0\axAAQWAV42D z5",Ϭ/n*&YFr 2ѾCo52WIFd݀{X6rY%k(ю|[ɬ(2Ay۷e!IQ讬q8cV'WN/1ut 'T@7?jL0' %6~mrG% h܎PK֪n;=~µ+ :Pq4eGBRS=w?%DzZpUs/3vwEQ2k6G9PpiYmh3.iY%pdO+7 3>c5х0}e@EH2E"P7\HC/${$6(Q/eއ)&ѡ$ǃո*[̉ Ӕn# /+ BLPȅR}Nu{KuEN%qy#j[0_sڄWM$z?QO31uC-(?A/ +j(+R9)6>FDQy{V n=אd'j 'b7΂o,lzC); Ytkc9lv/|F'0 +0R-8ܝW3Hw/!֎jͤѩFh8$Q4 f ˕~C?綋3w/ O[L%٠phE +ho IlٝYN(=D71`\d,c蟷N>ڐ,0=2y3nd) &i^.u.D3 сFq#Jri?Tr𒤽ib\ZF4[vHC~!Xh6ƿ`lPiA٣{`id]z=(roӀ efʩZ=EZOvE`{N\iE;o\1s +VH¦“S[~[I`m9uL[nz r *;)X7Z)xMS: :ܧE[ lBF-|m+$P;xD µ9ELo>3SDoa W2rmr]KTJD9_Fmž jؗ89ZǨp[y(`heZf&wcg̅1u{Boss4eM.$⒀D]Zze}|@8 ldʡs`Xj@ߖ¥oHB.8=' 47qn(XrU8vL ,rdr"$PfK/NxF?,ro@=FIo4)k2WXZ(BlD|T4@ bt̺Qpǻ7}u25 PvԘ+ók$'ubvK~,k :]x.C16J!e, >ؙƾܩQ<k淈8<ciEi5.U+DG$1Q0$6OYLb# w(N $W'TQI +Do2sWep "oZo<0raSZ,I|l6qDVc2`fdYM]늦:oY#9qNޏ= amCEwc3M off28MvtHm`iltid}ٚsQi#nc2| \+RV PZ"J]~Kf!;` 9j;mAzC)&Hktp߹ߕAnٹy<TfP^BqP6&k=*Ӻ~{FJ$k|^v#WcjCU\qK#5.`sIFMz,P,@=!3fB >yGodi iƐ$Vץ!b›p4{97ԉ@+=%vux7W!h%6zFlGDh %WFU*1Pb4&e<$9XR>O3#+2IoB. +7^~t4`LRۨ9{VĺKq8yAӾmgWIww߈mpw RY$ff&G'vRܺh)?%4NQ9JCw{4_s$@CId݇Tĩ;17k+[FX\}]`JUqfl=Mrzws?C婢; h{InKU5P-ڦE mM%-+p$rpxBd &yJȎ|[=p$ + fF&&Aj)yn?s>('r`ZG6K2gRs_Am|lsw&X5!=WiPH!fϱQ}L#_0ortԫ8 aǏH#͑,3{RE8X11P p`=NYYɱ`@lk[}?.mV{GFBVvF +VCvègMO`XFx #~9 uXΗeqx`XQr\,s%;CCF9Ͱh뎝Q N:;QE8:2ĶGSg(l3M3uϪsRvkV&&Ȕ0ڹM i^WW:’~[ksLjCj +jh?BW~Wyqk"I[:iL$&5 gJRȯVso&J&ttJv +͎=]foyN?TG8sFj!:$ݢrN"؛@5~ "Aɫڏ -3f[6ÛsQTYfv x|^[X U#ڂ쾥^{JF% rGqK(CJ0ijZ9!s 0 + \H :B-c0 un2-+@$:@ @X$:^(@ 3,yrN^ɹ,yP qIZ + XrM`0& hK^*L\-VZ`:~k9W99WD E2P":6P$)DojB-αD"c  ZݤB! 1@9AAAA!@A!` $+ɈFG{k,H2HLc|' ŏXz&"mB T[bUȐ`ڵX.}($*ʘ_@ۮ`FwPSk=Խ}*8bh +E, + XLdZEen& )b3*#ũ8 ?MU⠃U*ѫȻKԯ<9W80Y΋tw@sŬI +!hVn=w#qPbp2n4_ #9[ǭu6* cÏ^mDwu~lD_]ʢDoeнz{5Sk-W Od$+3H;b5W`O鳴˸mcU +3;Is\J2R96WmKtS$N]BM q[)JTurL-dAY,%zuu@$`dVo{%XVjm~Dq!q_^\x\.qAq琧)z1Di̪sƲX㰕:ﳆ +F@cW;fXȟDdתűjφZB*hP$)^/c *ba3[P\G"/ 8=4{}?Qs z<,R{Z]'!vk0+ѾB7DFa>@j1,1gWyJxkj?`=姭ԍLZ~~-˥R;,N[f8ljh\@D6]S%%iB~k"ȉ(i-%8U|eFHIxӡp!xenÈ\yKL#sM5ݟs̈m3rN"Zh +i*9vNʍt69*^7y=H&s9GeoT|_ 2yy)HxCO!&+!9g ڵ5',B)_^:rPl5*jPlx7uQ`& 7 c2 f!VQ  (,:ñd"gc9-x}vzY5E6" cl`QA!@GAaD9 +њJ\+@5^6sv_,Ck BWf\׳Йl}:؏iÜϔYPG3'U$dD Ic2m]FjmͰsj? +t#}ċ"I1ώbs{T!!_ARjp+_d0]u?ַ[ƌ0̥kBiƮ9lM**ʑ[N0q2h-tkʻ1f?L&작O{~5MOso[&!NxkEZ˓he=d(EH+*ĸh{W?s^aB{xPZG/#8iennƶ0<B4."HR"tsizU2S>Q@O- ؊>r50*QQ4>t +um^)̸(߻. {U-lq(oP1UM~TSM]uɶWпImrYkZ떴ԏ@s=~h o0{\b2XVn.AR/)?7Bg{eCTʘ=' OΒMn1jZ'rܠҴN@Cϐw,(5C{ UR@UcD(VHQ߿HN+PQK]CH_#?F +LQβ ̟f-0ToRAgOUbpOC*_]A2-b2U˶Wc WSC=gQhd/)=,"% %SPdHqHMqa%r*ʉ?#Dg4 ^r3 +qBd|0$$ B  B  BvuoN/h{,2rNKۯ~1/VNz6B=צ?{V?>p +pwlABS"ҷB`#n# t#JAF"gU{r@~XfwP"#FNw &JlpPVaZwhT<b7a\!pg~:Am#8Y53Uuq#]<"6yo^1䨆 CJNuf~,j!0"eIPѯ$ Y4`i3@o|JGͪ*Ɨa(h9_HOA}Í EDx@qr +Cx[U-Mʙel=GU%*" 3PETZ/vg3ʬ`RFn` XTϩ櫞heĜF +PuA4+~O}s1 +95P z LX`b S +SXcffL`BB}YZgYXcZX`WbZg[YfYeYfZfYbY[fL`ZF@!ØS AC  AC@   +0B bE@lvj~0/Fڮ֌M]ۖQû8#?ftU7$>{4l)=B,4o{{9<2o'S)ENIAh/ P͍./?.?:™,Y*չ 9*ڶ~H O^_E̘}P88nJ.H)ZT|BF|dIޒc49bȽM`r^.nnCE'h$^B.3獑)N"0fJʙY͵JE)4c2Ј퇿Qɘ(W4.V%z=&ɡ +Ul!H),/#_hgDfTs1B !V `XZx%{\!Y]Ig[4Fbvy: +M@Bz1\$͊9_TT9룽eLr=]Ď)wi +g +|nv?SN8B_X%h?{g=N&dfi'- '+C64S`N[Nl Y5^%*״5\4ahv&A$LZfV`ZfXbZfWcfZgZfXfZcX`ZfD@!B s̹@ BA!@!H !HA0UKb\ߊ:@BMwKTwM=-twD萤z:A/jƂ* +I5+:#"dA*Nm֑^?G%MOqΜR9+HJd#!eөsU9p>UzIMNv1ڌ"IO&zR[O)[VX(p)VM$a¶ω3.9 :@cQ%%U_G n6LH.)qii/OT)g,IJ Sn*$Ν թuOX*:=%ۊSB(U"CPDeZDI%kn՘%7oyAF +,QSTk&P5ea+PaN*TAHiM2]/$Q<ت]㡠踅ʻ2APB-QEA;kstb.#aAۣ81q?w[fJhv +M+ tO*s \-(VxoPLf`tޛ<ZP_E7v\19+i:Nr7)$I`kPa@hZw*{OUB@n:X0emI,6]Ԩ kB c@ ABAAAAB(c2 +ccsZӒ!r+n20`579k0-THon)ii2!<ihQXJ?sr> C_;QxޅG2%9tɭf/("#9x\1\GiLu|Zq(>D[ynz}b3TQ֞(v +4/iFAQQ3Dfz vץSl+LϿ3.Zi0_;,t t\FҊM"N9Î:7&c6E>fglkBdrd4V{1>"嫒 +*/,_:Һ\Tae&l0Ǹ%N 1 +@ Sؘ.gBJ!xS ynjыd\ZE407P&GKuSZbSgЂD-"y`N./b#χ-†yI2,N|Eo!E2< :F\9+޴;z/T-+ F~">`,P,121< 3p$Mr<P%K<"].jmgzKh\ψ-0>dn>mSK}9. Y)* !E䆠XzIw'|4\2av;;SS!%F^$]OǢj=)42 #9DBV4^<'h ZܤˇUZAc(x%]OLݾ=#LF@?qU`@aơ@^7&Y5w*W3 wEt9Za˟QD+?K/ +iDZy.{dݥF9!SذxDZ@-ʇ{cg&vs5wfR9Tub/Fc$)2H=dK;NGio +C? +FGMM=4PB)۔w8O.,)距u1K-9, 'c_ܚUP ,fl*ʀt,q^W/Q+i + 7WdǔXp9/?RH +0UmRW!~SBhLs6ȎPOl]@ȏRCT'= ?谟^Mɳ=rÎy_ +yl UnC(x}y+܄ =?LL݀?1G7_Q S*13oTu:|y@/Y (a)wOe-#ܢ(/mhd)YOgYfff[g[fP[ZV`BQ9窶H0 +  B A(p$Ƙ~ 64&MY쏻 |BR&<㯰',1U-zRz jՀ8'Dwׯx(n[1{6NЁ=`H^p0mxz^#Wi=3:F(/Hm3.d9O 1xpHozl\SUj2*znc4+ixMsa^~&!'_(t7ς.[0kq# VO*NЈ$GIQ!n3Qp ˟?9rc.<ƣ 0^d ӝ(f& Ǥa淨Pm +cG%"rj'5y#ay;LNGۭ@Z-|Nb(8pT?@Cp*?*L2FHt]= (PБ}-kK$ M 蜇㏎:gb1B{E#3%`vsR&LxM`(:DP(I3)|PMF=Xn0 `X8F$E14<_A;S{r8rĘxkENp ?`a ]c!4XX߱ށͩC$&NwRK0?A-6>il|F`(6z+qAQprZ1ΤCnOٷ2G GĭaVYP ~8:mw'(ws?#L +;YV$v'7vÑpF +Sh!yCV:DtL+NI3~+<'h=43Ũ.*q<XûpbDZJ.\;u߫M 9)ûN0^&S SVŤg7'dnBd%K!.pdd^)pvsT w1JcTM 1.X0'n״=0GBl(LIŨhk=^8aMMՋP|!lWscKx +w(aƠRd?w(nder{HC-ΆC2v{ +(6M,7gbTn %r%>[ 8Q̜j- @R*RiNY4n '39w\kﵜǨWB!D!@ bA!!h!HAB(D;OF s+bC0ͱ9R$&B:L'x.{%1QG*M]QRNU.չA*DMmK#yz`7RCAGr1͗\VFXO_.ܵmѤ {Rz ^x ȌMbea3Ğ$ ۘ20( D`F`/=E5ސVzԵBŋX $.Va#&'?c' " +TVUT0fZZJK޿<:o<:G:kb&x7u˰۩B:o̲ b'p6'_n4Jy+C5IKJlO)R% h}F@xl+MtR-SHe|o.WγOPqc-;Xj Oɪ\">pPΖVaTd!(Cl5:n 5d_hE&)Dl P&jj5 HŚi)8iLL{xoKlZؐѷ2U{[8Wp-حzYxB +4R}L'AXOòc 3Z͍82ț[A#&\nsRÎk +3!:u -d;T"b\bM@*FEđ.wf]ڟijp`T%~+A+wT7[FQ M qn݄j{y^^9lyG'26Y2ll̺lL23@wkտ4׾Mɯ\kѓC 44 mφλ{uO.Mр+J8q#פ!7&M0]hLVzc(;&f@`q RTwŶqX:9սk{b1ߌxa^N 3cHaՔ{Gp T/L4sDCaD1B GD6?aR.VL`!p^0tXit~.ʌ rSD +тfjg~41Q,E0P4xD ^L+>Ap[ Ȁ;}" O4F _{@T÷At9Lh!u! VA9; +%lQ)޵v#E(pqM}C-T R@EJaۗ%t#02C{6hX&p8NuTb&yށM(>`[Q{ŷzsYgݐAlf<ي9uT$P .k +H[gZZZg9!B1`B!`GG!@$Xw|@0T2-Ǥt?Kh^T)uo)Y#{#Ӎ\(/^yH`0|9 8&g{폎$nخ.-${% +ˈdWǍIIN (*R(=_/#9>N@E6*bJ2 H >e%QnIRUtU]ZgfUaZfffBbʬ0 0C8 B B  cQڕ]Lz;ɶ[xqxʺ !Fd՘TKQd $s(>@XJO9܃S(EGo.f,k Wr:L,)-3-%# +qp( ElµZ殄yDI?nQ Jv:o3!mLTu Q4GHB?-()t*멺̓)jqcQ WȐ.1 -mі߯ ԂJ9'Zqo`l" A+U)&1Z\UMKc2TOB!Tf86 &*ڑ0!R&l +fnS6gԌ~oSBX}M7*3w_5Nkp-nể 7qZɞ??Aڀ\ &ų(X? 66D}roo +m$(^EjDbP@%$eU ή7djrbDe#UkT*b,lJҼAcA5<JhH)XvڸI^(\H^Q1HU[eFb(c(,kaTemQ8q,)SqfT51L1$XF UY\^P wƖKho6(I}FNbZ3vv:]Jn>4&}QqQK n!H]/]a[DY2=tD4gZXcX`[UbJJfX[ZQZZdf!b1!:0!@A $ 0tIY5] PDk[P6Oډ4 ʤ}. \p7paֲHס$Br2b58lJq\gF8W? e`/NVՎDT^`BUjV9uunt=aHh&uV^WSB0Ǭgd(=r^MTc/Mc5":e`+Ǹ:aPSCc+x:cԱ +|9o`RԈd VjQo@cZD@n70e?"Ѝ@S|@D;yjjPA6jv +%j Њ$`GA{6GoemihTep ASzDM}q`N97Uk@\M<)'34Bܒ;bς$"Ug'a;Z쇸6%t~[v&Bv((aNتM JeyBsL"q+ ,!tYXX`ZfYUZ[fWcZeZgZgYfffffZ3wB ER=(A 0B $  B @LԨlCL<ޛ#8P zءƠSED ނ( l7?43(6<0Cxיt_G2ZU`jp8a'v D|TQ*z`Rr'$8oN?;qSnE ̪#bXiߔDxPFj܄_5P8HҲ"P Ab!K +HՀWe5ZʨUA DXzDM. )FQD,YP'"j Rx1H !ZN̟6뷥? G +r](d*ǎkԟwrK,8!"/)b:_4":0.H  j}-B?Kt@Z>d5:V k7AőB?&fRU[qg;Ί65!6%j'-П[, 6mE]Xs ⡣߼UESU>v*!V-`dJ[BO+xGEjLm +B ;/mĽ׀(v_!91ojREwrkw(F`[RRPVlǂ#!dD f 2'J+ ̘  ['_w@0e#U,]`j$/yT~*y Y3=$|yoY{y ~ퟫ>а;;l%M ř07FyPzqw[Ӄ +>?q8U O>c@R8)X#-NJۖ /b&oZȤNRkB!\dus!yJ68"mK *`Yxr+ ,}j9̭>}a:AWyx&&- ;SvGn +`CXnxn j io7t3U#]pADrhO]ql(9h$D#?"è'&`k)Gȫte٣bOCOa@ u`hW~8Je̴"{ +T"W_0Vb'rqo欟1i5d)7=kZpyU'R#TUBx̐?R k,C P t3]r!ٓv4ڥ/;_*yr$p,e)$qzTD;D<0Шfql1=7 +="c˃_}mw:);%YbkeP-mhQF6f@%V6ZwʶNAXژF&2ٜK>*E#xhf ZREsƉ6ߺ~D ‰2zme}kƦ+FĀ\#g! qN=hdN܃Meݵ`K +Rh7")$Y=@9_!hE?UiT +qr0!3*@NKS*#&$xȩ$_jIU0-yv y%uQj}#I'`V 2G:քlP*9rTMo1IjRuD7GGxK;#Ln7Nuq5EW v!(AL7Wö ˶Uc (]WƢֹp/l_NSEr#p +ugmQy=ՏVW/|"42Av;#7٩_f̝ZKY0 QIXεj=VVtec\ փGD.|pWSi> Z*W& OE8ج gU3OX%qMVt6}+]!Zw8@N t?1\w,yf&l~ɋ/{w]]uf+Ί bPLQapu|Z[ZggffgggfggMQƏ T0AC, $匌drj\jD怌L~LJ%}'#P-IȐHɡ0BA/RHk9?49)xSYRH r.UX6ȩ6iP9Tj9@!P r]8iS0uޅB:o]IM ܢP;Iaٟ@YgYdZ[K-ADŐ5|]Eˬ㏴?I9. h&bGdTa'w%$TȑM>0 D WG sLW?q᏷}A[NB}lN 'V?U>>:khD.a~# KqTI5IvOB& |8ՋYԏӷǔq9F&ItHqRr{>s.q7A%XjG +pj R5PT +fgfg[gXdYd[fS!DP C` !a0=2yLr瀏"D@9UU!58iNURZVMk p3]6ivlr*&H S D2$0iLS~}e`M*9 +٣!sN8U̬霾=npM$y$M%?n`2gdZ58KGc:*TY cdC BЙ:̈́ Oh@9If*&Х"sirܗ4.K+TU2cccQտx5 oEaz \a$B1Fj@)AAF@!@Aa(}ӋEГKu.g7 fD&Lz 3鏰?l#6c!0&-R h0TkJ ~2TW, v) 4l J_TDJ۬`e3·Nu2 Pm47 + 1499R~ 3֦:`[3ɋuϗLq< F +̋t~8$wojNyrE2߀yIvx7U:\`,}υYӎZbB +9ռtKh9*(HȺrh +4X*4 +DMyj`=, -) 8S.aM/+p@gٵ_SFkBYL{T Z!:HmOUFn :jI!H-7%PTzRq:fԕCx{cdNVx# <9a-T`Bt3:jy={F.>L*yiW f܃ZH#&y*5>IX3 ΢ +jRt#oN SK,'4Ap^2Ԧà + H: fF+g<j*'c.QMwAX T0K<ϹĕHp`\M'˧޳T'>Wed[&]sb7j9*U$)e {-uی>s4~^#Ybn`5lw}rFZm/%Xj:ixih4qҩM xh0N~RAǭs .DÔR- ΢H$T[XT x|,A<ՇJTw2 +#%Nu& +G<& 0j!UA5FfNHE ]aQ>^] "KB{z[4>JTglׁ#YMTz L¦|25+2v3dk34CTa*NX+CDKY+^dg81:$#(ٲS0Z r)podu9UD-~33=%2D%ɵHA5J?(#\1#P:ru)2ci&5ӧI\q!RF@p!@!@A4{~#?&nb Jtl XH!SBO2Y ya| )0#~b/>P(uAќ +ae\6nO1o 9UCdY +R%SjR{e[n`Z4T/4" +&>[Z}XΏ%#T*#8d weNCV$^惿' +# j<_8 D,$Ғ &[T_Vqi=vUq*O`A^<O1rr0y4XelB<0Yh!X2q$:~,T+%ZllGz3 Z(:e~ٲ?vxdP bIdĝT% #MYL5H_n> g/ъ2XC?D"6,Kl ;on#]Hr& ]AP>/c㳅gm1-%7qH|cx!(MUy.<Ĺtf`uK,k1B5>d+ȅXUvpBzStvj|>S%m9I'M6*ch%鯦aF-q;ґo=>=޵KDfE_bCFČ/0@5Ջw=]3d @^wMU4'ZcI|`9kdbMUfq0KBR6iR3"?@F ހ^ ɽ1w;3Uuew>{qADRېü, qW(c\?ʙLV:MiqӐC1Gxh.Pt𲈂Ѩ!$)B !F):@0A!HAAaˌQ$brNi]OrDSm)P=҅: +y;[HR;`^!ktM:8̫La}L$ z4wݙZo:9ފ3eR}C~:%nV n_IQ[!IvPe +ύYԘK{D?xgN*9 ͉P1 v#X!6 wbHm+1D111VBTQyظ]aHZQ,[Q 6!GTSߙ[;+82ٞU󊘈U_Nwa dxC($BHw?te )dqĵV!ЧQ\~uQͶ4>Xpdk"?LH1:>C\' +:Ȣn5 +4 +x.އF c>aTCWnOw&!wq'(}g䒓Aŏ LV{6~Icѥ9Xw~lsg\&T9z]-Y%N IqGpŊH90Y1S2AӁsS=œ b}ˍηTt["}'K@N>D礌˵p:n/E M\u=WC` +he\x@{nj (Eofb>P%?QJUOSd juf: }0&,BDZWfZemHɿsn"̇Tk +CءST #xl7lE"7Qrv "=JP"():.X 1z7 +CtgYL1UPy4ia<)JzEu}Ctl>ͱ,-#|SBT̙oCJ&KD2+dݷau9> ЎąEcTSQ !Ӎt񻿇@\ai~qFZ*5"ReXoM}גt-$=Ľcގh93U."|TЖnLK~D*b|m"VS iujWM Pjp+8|J&1XTi2q[gXV45Fj%tcoyVO4`EO5 +FRޡW pWسz"0"ozLn`'6t^q?_;ro]u~+OO=Ve촺H$Lufan~CYQ_PC+hnQA xRbiϥʺNZ u_C1"d]10*$oB~R/?B0Gz({@z_=^~|8JC.Q L!LҘŸi["ɨ066cnz$)>=POM:Es_A|\(%[[/ro)%IMUU H)#i)/Pׄnn7a^_@د꧟#mqT B!)HA   +$AB0Bp '\B + +H@1֘D BS\|%j4-ЖaV}QJjÊXE?8@T9& +8\D%tQbJ~`xӬj~4]&bCnܹ%eMa3t3O*m_tz&&zѕm^%_|BS qr^30qCS)knt٤43ThAɹ0Y,գTBS=⣭zBy6,eWO|Ci&#U5n5gmP5Mx_kcय़;\rCR !n >tIab C`Nz3M7Ԗ H^Aɐtw}ʌkjDT*q>^SUԎ`Xq7vg4.=)5Dudr tZl'V͌0R&f*#ucBTxٵ pGGO믆J (‹RiP'm,ꤣ>&9hbH'rsN ҽe/zr/2^`AJQfP'2Ehn~lˇ6W(ЂЪńw˝d9T8]G 5α'fZD&_]JL>Fo #25N#I9jTˌx<ŪћE i›pDW +P9nLV_̽>woMӇ<^~ύ#|?c}kj{? pBmG)>]fA";. +,_x?83fujmwAddgZ[eZeYg[gfZf[fZV[ZfXdZaF@!Rt@PAN!@~!@( [~:೨ICS p@7hX`MjZ!#Ff4 `؍84U +A6^pSq_\WlhTH0`@y`hY6UTE44MU@YC(39鮏yC9 bum$(1;_OZ[0( 5fphTD.HYZA*d;f;_b@pPC#z+T}1)L!MOgbj!eXCm95}pOVJ^LcT+ϋ] ;z 2s!!v! FU~k@uWa}?J,McĨ$I0OpTv>ͮ`mYWr =X9@I :V}|)dn))mM?3 iyE}WlmhHP +{tT MhO iȼ 61w"z74ըf,e2//T1}$f}bo&,F +F-Rh9d+74Va G - 7nTBۤujh OjCPU;gt =NjʭtUdm2ÐԤpWkhd 8(A{tNP!ag~ZTBB}eZgYaXgZZgZZ4F@B *2@@A A@0  a $XBTTCIJPDNޗPL <00n[׏䦺F4R˩&ۍb>$mRX$:8{tcu_P B#¢14*j,5}Z|敗w$ 1{K 1RQ+ӿnJ!V26l nf/s[k.&Ѻ 9Dϼ,X$r^$S&F +ř#D:x5os̏"ѳFoK290O„VDUPޘ߼ޙS)/U8dN5 P Ҳr+VLAj1pn"h`m][+Ϙ̈T_D`B%+$tГMXsTw 6fs 19@fFB7&{K]OȜ=M\L fU% UXh 1UR#4 16LQ E^*7D%+O^:Tf ')$KAum ,ה-c:f +=X3O6Gx?K4Rx^Ӎm݂Ѩ +s@vpDſiB:Qx+MmE*M^G`la'9fQTgTJa5=*k?2^S7zMP%R%g?=)ڗ(섳2`]ΈFw0!ɧtexqKaO;DMAo1^@vrŀZho8?h*NF΋0#T.#G!&MIbӨ&`8s%]szKF)[@.IN%:I0̕TGj5rL狉[>p(%t Iє/ 3(X(n IEsB%̤(23ʎ~G%Z:J@Tءp +5RMu)ވܗR gEm QUL"~Y 7!_/`*aA#gZfZfZfZZffZfZYaZgZ^{" ch  ( C B $B Bt1ӥ:'VS34Qf?Y+4j#rUU"愻_\a M:G(b{]:(6Jo?I.BA:m~7A]@O'cuho9T}󜎽f +SrF`5zih/*0RU"9]V4'?LH@_ ; VH%>rVo`7A:²/<_`PCH)o~bt>^WlA,. j*ܘv\kXvҩ-=f ގJM-ޠдGl}Em.@&@(-NvE8HRJ_ T U$$RBW.SA>ڨ +V@BYqkQ7)ˊ`:Wo g=10?td'^@; +s(a|Жv6L,%bgRuNK*J`*ZǹӰAk&O@n +{fәA-SE<вU&~,0A3eӏ؃<Ȅw0 ]9T'h?Yϻ}ds-3:PЧҡt +`hÒa wd!XNsw_?z;11?'4*2 ?ZQ5O!3FOu+,x]@7YO Xp39QkV~Aqep`#lӧh6M>ۃ**d TnO>ـt=^];NBle҄/\f㝘SEU.uIb'.1 / ZDx a0lP*L%5tt<,'~7f[nR8 P?k?LgTgLdnȈ+ܘmye d )"摰.lCIZi'vbS'vpE+.1U92{)수RqF*+p{$|,E%ɴ=2mawUU9Xc +BN"M% Li Dpc6QuIz= Q$vB!!B@ !@!H!@AA\}}:Mʯ/D>V)?+Øc.УVw@)Sq!n. 8ذt%שVT?JӒg%l斧RñWJ߂' 1JUW&չk iS*WjV9T9/LH>#ʜ^]1'}Q2szLl4!YznPpqܮd:}DťٰtXSe4rIOo@a@!̂ +k0z V|R1Y"- SZpG%,0:R]F5@f/Md"R@ ȢK3 oGV:mU4%+8U4"amtL+u'N>Ph NMB+I̓4 +j;GOm ^ɿ:.,7!=b"NlP4vT=oK>$! p>oth'9 Z1U&I3FwD|lZ@L@[S :$Hr1W:#@rN)9>TPލ e{pda8!s'")QF=)CTY`iAz$eb u k T|m)o@>5[=LZB%kĊhEI%G![2Qdd@奰F꧌Cyҏ}zT E!YJe2qjd5^b:Ҝݪ(28[4^tbm?"otxΙKڥz*ǻ%J–)$K}>yB& HDf2F'':tAUd">ᎡU7~DjX% +kT KTPO*VA("[tw¡n~<8͟^&]1<)c&֯.:Wkq:}E|l43d/t;5Q:! ^j1賄w*~)Xb 8pꙺcM0~fϐ&By&OT.)gNqOoNЙҋƾ6eK0h|gV`UbX`V^ZYbZcYZ[ !D@!c@0!HN !@ab\!daIgꍮ/*f;j+BtvWC- y"bH]}+wQ؇sBF6:3fG|U +8c5Yy6oʭ:YI9!+S9_N_}-x1 Q}hJl8s洦7ޒ 3C +IGv|ԱAL_B̫p(ѐ.XC6VN\b~:PکsϠ]% _R I7̭p\Rt@S[1UPwQ"IXjztS Ϊ3 ҵ:2d V|vAZj1slXJ% Oտڰ6iǃD@.tV9Ƿ%&,A+ +X%^"`hŀ]XaYiufLA[Kb*;H(V^bo:#Sg42JghۏB+ +^{ + U̦4 é|_?Q7^J,M) _%s#0)te1E`pq?@]khEb:2gçD][FE +Hѫ{K&n6aIA + +AH@!D B@8b!@A!@AA g+$+"``)H($\Zb#4ʲF\H6tnu_ ]axvP C7e+6{;lB$״(ɧ#i&,(HuvJ=M)?꯬` VQ"t[b6 4}2J4F3&~ߝ7 +\T(D^; Asb~'o1feA3 zCl%()U%9hO SЅ;]v#231ymbнpZ81Q.+__BLҥ +Y}eҨ0'`hC/N,pD-\[Ts2DB.-SONYytGpH9jDQ z:%*brQ +`Hh2T_7yrsYз FNU^.M)b bAkMc ~ 6 r Z0aFs"!-|!"19A؄s0 j~fFem劎 vo|T A3d+줙bKu `>mz + 5?ަrԬ23ıYJЉV{~5Ur'Lu\A +>f~_I'@o.+Jn? ]*y,ղ E%bEc8~΃z{0Dx(0!ZwRST; m;+:.,n>v@b=zY*%]k9#`Om1)G hRx Mtw.0U::(ji ԙ*}3ZPx#:|% + ;|0~! Z ZrVLiӅ?j0>N$n)^ .1`Kj /x꺊Q'~u wڟc("yiF]sEQҍF +\@Z>Xl ~ݠ DhR#z`>GHR&uT`$Js?29V\| q-}dL_q #IhtHZn@Pv )bKm5? +{\C3`tg&84}2TD 0w:/tt?\"Sl l5ktC!QVi6eoc`GA1L()[g; W`0 +t^Z`ԙ> +pL{0'NFrJ9V8~`Pq)q +J($m$9eGFk&pOZ ToY;d{"opb|IZ~zwuspnllllmmmnnoppqqvЂ4 +Sڻ~`D*  *4>HR[fpy_U~ɥ]9 $,:FQ\gs~ݣbfz缒g<(3>JU`lwIxwڧtA +*7CNYen{ҦyM/s@%0;GQ]it~Ġ{V+Tݡd)4@KUbmxʭsT1 af "-9FR_kxĮiR;!WQυ>'2=GQ[eoyƼUC2!-Bv + "%(+.0/-,+*)(%! +4t j(nbd[kh* wH3sf\_I;@0'4,iӟ}ZqzEOn$d#uC}==zaw21:McM0:wzaNTBifDr +`A !v@        0 ` ҵ3lqܙ-K4mB٫4ǶiUĄ- 1 +7Er6#:n^ԇƖް[;7n`JA#h~ޢ`Xk$a Jb1.Ց؋bnJ-.L, Ќo.1ɝFߺ`"?ne<Ψmq6P ,34͡5R!U9ƅtz09ЂR\/QC xƣͬ!g9/RMMD{j% 4a]Xv53QPh#@tFoґfToUJ TbCGlBU;HoGN>fj>"lZlY{Qjk<\02Bؤ`s>q +dž8©S?"XFw'4a0Yg$7D+MCS't0FoX ZsUiD/ Wyܺ'mCFn+łEt}v"HkX:8J5oԞҗB"*4eT%Fh4xV~8hW `BO0MyX{s% M|OQGUcTS\6H_¢OV1+ `@-F=/JFA hHfy ǮBAj3tTy QU<8v)v:'- 7u Qe*3R'gG݋g;}'8/ |:c:ƦtRES AM\ktvBoNv *Vm+CYu'r-0G7!*.*Ћ%Ĺ]I C|Τ|?խ%4L'$b_!3d\an]Q8'PMpgsc0w/2I^Ю}㣅9[0:QCRT O" R&;g]-p_ LOi[|}+qls8=<2{[Z;n~ ֻlRu ,|UQ %HU$H$5}!=) u?/vl'aZ]vdLhc oϭ&ÔSP !#d8=Q6Z_.Q"܂*6P2bi; 2kAqx8E0 +)O9z0[@8Y@Vw(%[rT}/0S(gɊ ++DUQj'ZB4GAUW)-S|F hFCь˃"h] +,MlEWT k7#Rm +XA @ bA!@!@!@!@AA4IVs 0@F> ܡQ5>d`JFBiiEG ўWJS2Op"e֭ÝC +>rADt26.-V-fED 0D`}-;:)jߋ? UvqiMٓM8EA+C_S*0Zx +Jftsr/.y稴ݙDl3eK0jjd6lI^m'"Oŷ<.Fbc+[8~mp]r0yJ:ey@{X[wB >Fr<|Rvu dKV*1\o/WX5}+`T 2X f >'IȜpFF3/׌Ht<9d џx1?w,pc)/x>TZn1m ^0g_sqh(s6Z. +Sy GUWn2mVi"] + ++U-Rq2Jf5׮ωcD4OYvRj^Ni471P$9n$fXBWcu-vbMcm+2ɉ0'AI +rGi\y1clNXM-磅,.uVe"MYPGc**{h~^hha [.s<%$w,RHAG (Q[\c$ }Q-p횝9ؒTJU^HHHzw:`1 L ,r^Gj#w-( +``d 5} !Yȧ)v%Q]+PPB#1ǡSH68%̀˦xб5G&^߹W),ѱ~Teb\`&C7;yF_[Xѷ9akUƸ*j:W7\1h@f ^kzh ᯘ;]T4dPl[V7It +-sH +obycJV#oLtl%R%7IWWUSQC,-?RXVTRM8" #\潒g< ?pԩ~S&năCKe-O T}^ h.n#RVj]RfCmY(Xr,W"/(.(VH6,d3"A +)- y e ]H!qz N.c\{D_vflQBqnC|lIvdܣPp]+ճWjQ6Ⱦ^e;Ae^%ClR=tE8c8*>+s>f >ʻEٲ$ZmXGX<"  >5N1 KW +\ }N ~<ҁEl +<zݖJԓ"˹Փ$xZdq(/ K>;O)hΓf*3a8̔a/_URW4േ%T/Õ (͒&rm6uMU)K5YgdFO]ɨՕp Y#mO 2Ȫd2N݁ ,k9uj@Z-s_5A v{4^ajr\]4!1,,ʗC˲0l'yQ4:Xן qrA^=`l&t&q +Wو1^doKptЊ86eHԛͥVerLlY s(i8x')5 ++Bms pjJV' yyM\h%R/G/eAjӳ&ˆ/􊺪dgYvH"fI=F.\|<%~aimz%s^-L~1-N\kZ8Gs""kNЄGW5!lZ'*dk!l|^^&>yPjV*>{;CK8K8H@rAqoVG~!jI`]G @&. iE"1%Na3js7TDDbHv@8sbƙDQ@9KBj +D`r[ Kկ,SF5\sm&PQheB>֛Bh6@o:Fڬoa]W-Ycga6"@ڸQה0;Zws 9mH1ƴd01@L?dN U. +~[ S lMieү8EϦRy2:d̴2H/f1 _)E糤"U k51ΤɁEקv(*t#`D2G M|Bm27h1 XTPVb_d7 cjnn-i=s0ƙ1fPM,OW4RG։Ut)m* hښ><4Gt<_(F. ^*pxi;")L6ߨYNW`x7?)PҮ#9GR迸uYf2vj0{[y_*,\RރOP8x0dvnk(bɩ7+8izSr,ً@aXtySݸڎWu_~#t)]"ݛv\5ʱ_}B ,{,yo7 u{z/%u.tCck}9#C]UFQHSLS| >P3cW :-B?7=.9gmqFP@\N|aR$`M$OO&:^ 6L-mA[b|'[^@8w\G0;]`=6mˬoZ0AS1KY`L֢>^l]Gd3COZ^^^VK?+' \ʑ g̅+-ZHd+3 3,sqZc`b\}Q!7FS}͓m:D>8Lu(oBD}ב21y 0Oi>*S3; 9M3 +f̏ d"$ì~tQ\3ߙ]- e7:tlsL.rZ Ç"O%{dT-8u(oYDT+'zƑ7ᨥs6QIXוqfVXAQ<?#$~SB>J%e6~W)L%g,+ՈL]WߕU]}~삥躁jg>7z}0߈grC9 d]F +6XsoS7f% ]KEFϏ~?\q{5TZ -ڤ>.4TIQád@ æ<MqTLEF3TpP0;ywt6|DdFՊoY_}6aeե#$Jl믖Т4I~eH/`;8Ae$ݑxkZOr< &Yե_ct2;E$F֬ EURZq%TcaYmVeX)Llӧ¡gGf[uDw2Ib ,iK:J9qjt.*IкxIޅylDQ +5=.K=Nb{ Ss؈~9<@y#4]5`#ܚX@"tOl;-r&r( i{T?{tILW7u1C̘2*U#81ɴũO*U$ckzIh+-\G@:9laaOX^p+bmToPw8hf΁C@Xr8c5Avht?)y`&] թz/ݰ jF Fi@ȼAJ%{ZJϮhkz51Y2h:W$5 ĐÓ @c8CIx[ հ Bd hg}IOT• +C OW4)*pEB +s3#+AV~7th֏Tjfsl ,c9MѬCy9feſ2aքMl(Bf_£IGR(Rh,>B`FD+o8B HUf2Uhd/0͙T$@3 s #/[=ix,_TgCW8F]5JE{-IY+ +HciBn7֐bȈ`LPZ뎁.:M(@RL|LNy숹 M E}2v[Z*qz2l(Z _ڷ\K `o/3[ +`@! q]gRv6%Z`1$o n=C4 +VuJE׏Мhӵ{mrQ$SuD +'l.!BJ!ިá>:vTRg T5p"'i" jxݒjRaCeeo8Dc{}/dք5#RSɏ +RLMP=pf2QF2KS셠x.[hl m%tK4%ûXZ_ydSxؔ I Z]nP,HiY1*u/]dž%@`T&du[B/P{&#(\ FaWFPm* baT4_Sȅps _D 7C- +m mybj&"FPhc syC/G2V#R]&I[2qƍ-";%"  +^ KN, +CՎl +):w\&'1uABc봦7asZϊD'kZ/l۝`!^ГUEzyDMﺅO@nש{#Ovݷ`2 2X~ÜvP*9Wuɪ^7 7NdwŶt`L7 "*29:񾸧vh\PC7,! Ȕ  &-4;@EKPU[`ekpu{Ǣӣ "$'*-/258:>@ABDEFGǨBIR!"I +pH@XA#:Xመ~Nxـ #0fc6>al̆:`l '<†lŢԂ"k Ȇ(0Bl ؘ! +1a6qdl`CʆlB6QFl‡lFPp٘P 8 +Q6pRP6k ~6`lS?p)4J'h&vy H,\ +y vV.HC RO* u0#xMXjR:CC_:p܅S!c4)ghoCڧ6!fbB$Y\.z:IJKMN endstream endobj 18 0 obj <>stream +OQRSUVWYZ[\^_`bcdfghjklnopqstut +=iƽy\>sٱ[).OۓKBqoс܄ 0SvʵXqz+AWhtOX 3\ !RW=x6z Y"kf-J+Ed yr{R +{@gfDM" < @?GY 7zF>9sS l*6[QsknwF_A,E'$-=t +!/aF֡B 23CH A B   + B 0V(S &P6ê 4LI%8rY()d(0U`8G3TCQeefAD$ls``W{@; պ{PFfGdd kJV=, E}C"aljAF2'%iq5m]IBwz(Cż"G&;9b !L2Ht|RS{u +6\*@AˏO䑋2 Sa!J$f7hPe+L?CyuIgL@UI32AijE .Q^NHT cds5{batWbdgGN! 9zP}BTJɟrD;8TE9N:#%TT+᲏֚ϣ\@d蘵Q4Q"=u-uD `!${r̈r^O!īI+Y~׹ .B0QЀ;"ҳs޲/BgD=P UJf^u4HQ]2B(Jy ͊D T+^̱Gu($͌LEZ +\*1ߞb +>Bp>c9B> +;3,RO>IQjP4oiSYQthcυq44,ŗ9H0(1Z(Ezг@Ckբ*PeS׭GTjrwuLxS,y98~q^.&%p~|Ֆ@n +6PЄφ <94/*$ + ްT/ʉODU B So>bnwnf\7SJӘ8/1%x +r+ke_YR8LF?9}2TD +XaAPZ=@      B   §0XVI(2hmm6FZPk lj*( +V/ yo{Fʢ~sb;KY 89ܰ( a%ɮ2h&]tj8 +EYJXhLy_/MT(޳`E?ѢFaǓ 4X75!;rH:HK?\I'5v:"*4gZpQI~5 t&[DSvűyހS<|*=n UhăBZّ[ &\5U<\ҁD5r%+h:#ugJ}@XQ!zh$Y)jJ60Yǡ=P3KtAH)%釼,>*O!Hc^%')t'a ̇UJe.4rX/zetn^ }ԵO%pAu&18Z bO"t3J#;0{d/Ҿ?4.}Cڮ5h@A=KAB3ze9aS|LzVGH+CII?N|FM1u5 fjZy)a`?y +)h&po ɺx:!j}~bj/vagh)AAg0!Au:^EKy\u.[Gfd6f!@CX֍5[C^ȺZQv5]XtmYNdP߶ +dZSzͨkD޳?Tt.eB(DWRM adEz&^k;QL p?幤4o_exSh[,|K OqG,)p= <)Hw[q8'-}hw%<<Thd%ޔn84Sr3dtj)&Э/EF9P'r08Atŀ:j_s>TD I410#RPX*'*쳄4 Rb[vZӉMX勬'8tT; 1&_"o91eYbVqY +v (IHuɪF87.=@݉*qCcԆ<><]r'm+)"uIL0O0^IF: +i )K] =c,ԑ}.aFN @7׉h} ^ՖSξӀZps Y⳰``]fMjU&Q#'mNOfMD6+6+Gz$:^x%NbB/JDbV=#=3lgiG W bkAL YvNєu)-$~A6fBv_|'ihĮe\9?^Ƣͦ)P0e 8z;^^ jk*ɄEx#Fd%9#*9"0nV(ӓZB!T,j1SaGn*1+ щ_]GHdˆ9 h[KRVDh3CBpb1 A)~h.V|bGJ>NQ;Y:ˑMJb'6$K3L,*&"< | whsj=me"nap]G*:50Z.=-&+*((((-S<)+$=1F7O O>9XF&aM t]}emu|+˫3hoy܁@M₆~pZ( UD4$& +   )/rR 8Ab +De7@  AA!@AAAA:שlvzzHh +ywa=𤛤/q\OQ\2[AP3^82UoRAj4]oB +TYI. xD-3[:I <A7ؕ5D$Zg}'r PX A!}?gw$D$0w|4m#@}wUbET͓ɡ*‚5?tM;'||T'1S/PGpȮn&ta;tn2ݺ%J1]qz0Tf +{p3B:`y|ټF?=f ]>XX}>62F.@O;)~O o5➯&D4#DpGHiթ3u0e{ RT{1;4lL>fD  !aECX؊qݔ;o9k#DcX!B n-ah!Sji @*҆+gդrk81#d0sB3&[b;ܕ3F9)[:qlU>*|/˨~o$0(1l(jV!+~`@cTVMzԬ>d f}N\K I'ը; +IDXtm+bGm1cٜ`\NJT$sg7BlHJ#[d>@6 Ḋ40 W]K,]U]pEBv‘isUI6z@e3ltla,zDqxMEg39 +HjȾqXJs>q]F1<4`kPyР'zqgqզ0NS"9 ͢B=rJ5ᨍus /S`i!@ rptF=Dq09E>_AO#.c>{A<~iqXx %2O$e\Dn%q7P+O +3bE Vc+톶Mj&HS͜ o23Wȳ\}coy-A]k_b`p9LZ!I\/+3fE2"wc4g13T+3N~![߀m$ !XkFCL1NcBQU,9v*sn;a!veHJu 9X>+<]?z" [De\7c+S !v6 o 5o!$jRpGzrT4>Řo'}!nJ,y lFeܞd D˅%V" ǔ/t㛃.?s\#DZDeT*y27R pVC1>CGQ\`LR:GTd"F{c:ڨRF0 h( h5O[f_j+'VI4Wȕqf^&gb$ ջ[T" 2 !* + + 8|4uO*X0 mrm: +4Ԫ_=888- Ͷl8Ne K + )F/]cV +E4z&zX9 BxݱF'$$" +}]( uy1gd I]­yW5#EuDͱ8+' 8> : +3ڱ0%))!'!$'",ӛ)^";g +L?>]hU/^ +h*4[;$g4`-эGAіY i^|G=Qṑi@t ̹x_@ 6+ղkH) P#441% Y N9ȭt6{qOG LG22K3{OS>ےQ (3OEo-e406UD< +Q 0g68ɩ'<ٸ8eAC՘\# gE`:{<ޕ5x(a^wbbLom<^(@ڪu Dז0M;pPD$a>RZc( J*l#1֬@WQI+= ¯zkD9Npr)642hSN"leʴk!4R!m6y&@NwQ"]?GKc-LR9XĨrfkCFo#SjEJŏWK ^*UPCL )_j&&!0ctI6? ͗fn=FX߹I…׋3mMV`uتju%YɨM_'j#?(cwFb\ r)D[b +j ]3)joT j70lv  ^ yEIh +9J耢hJqMpD/5nBB Q^OmYj3(d`4 #zaHt@0I}X ӐE\2$e2"O|.*F?GvZ!rB ,o[  +. yyzX'M i ٻ1ehjovŚ6M<%rf/CsKFS3(1 d]$4AR_xjҚd.*ospqWχ}pRNkz]|ĀWj㘦%JZLfi$MbK9]C(Y2jIjҨVZLLD>ahʨN7}Y؟&!v,`ۉ>, K3f,4mJ_ʒ?~9t/>fۇ=fX:?(D7ܬ|\Iʧϓ~|k-Q% h1` +$2Pp``# ", %ڗغ蹘UJ[/EZE2QVjխʨGagjp4; ѡK*5Xd#m=[[:s2 ,kmu?tIDaE} +ǡʄ4wiFKFpǷhi`% PhFu^' _%PxCo<$k#.Vsvp*ˉX!/ ߊS$Y4!+ ++ dZ=/t-d3V3NX%y(Z5yzNgʈ{eTF5nH1NjxqƱITԞK%S .yfA:`UAb,]Rewߺ+Y)yzsƨG;68Vٺͻ*gDzfmYrV3M("/99=<\QYƈ>yJTUuUƬX"HCbFsEƆ +u@J]J\2F3cjɀs_8}ib+W$oQ{4Ғ")됀io> ];7~CG(KF5E,+dukו6yˆa=qjU)5kï5$eNWC1n.@-h Fz ׬spWLǧ$$IF"S44I:@8 A 0  1 0CB9-(9jv?}Ϸd`,~ YEP1j +ۃ?NM {=84<)FpZrtb +  } = +teDaU /4o +϶ Nn)) + vɣ%굖^G@RN8ց栺'G0INa*e8 tmH{w8; +晎q Ñ$jTTY +.3)#j®l?4J)>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX$6Ra!<<'!!!*'!!rrmPX()~> endstream endobj 35 0 obj <>stream +H׋B9`e9:bGilk]:Zhw/ ddNj5b)tm5ҎiLfB@;Je(ڹҔvI Mhi˘VTAHe)[_=nRJRnӺX]r`I[qzd]HEq_q .gꆻԭ"6+Pٛ&۶HՅ{a]P0m7ҥ#lwܵ~BjJdlŨ[q%Xwؼb9w|E +w ]~oweO(V5stӃMc fTKO^ǝN:m\yvE [YԟҤ' u{G8PH:=DBd| <9yTEѶL’n6U]%Q_E"־ f( +GT4+!)0dT6f4+D*HR >D_J3Bte--TR/?*"_ 26S*qW Kg"lY6j53PGdf|_;My !;t 1H̡@i- M}NJfƝlϐp,-1醰aK#f͝p1c]?w)0e"x p@ŝC@>;Etp/aF]p'm'^-Ew.nxO)nU4"=GD+joYr|! r;U͊ĽY3nffVsZqxq%ԁ{f +Ppl!%{wtPͪjq/N&=e pOv- +n (EFnV~/[J$Ku +6;UI^r/!^ZƽPt#P0^Þq @qG صj}ý蜻S-\7PoϢq/p7 <>w jvYrrA?J D d;R{QrqG#$Ĉ\ژn6U|䣹1iU:+yL;upd6^TO@>*45=c]pBcx'T@FcbS~҅e[&{m lDZ2) +8䪄XwC|0wJ +iDŽ2W&HҘw{_na?r#q{ˊ>6 e0HjKqcmjpBT.%]_z㌣HMLHg&EFD.Ȉ^k`ݸ9eBQos}z ']%u<&-%J<.|XcͯXܔ-n}"G2jvE[P-4s. ߽oϸ:*1ǃOݍeDV%D0wh.Ӯ5I\8T3n 7̓FAHf$UG<"Z<坛u}Hs\|lOnH+n//sU's׽%XW(}zmni6^éۺ:r>.5o~9b$ZE׍*ey֚nf{e,8/bP9(ڸ>إьRHaf2S22ZZr6w{KO'UG>MFGg/>_n_QV$}gǽe 1em@02yW[^^}_G( 2NTf;^V:F)}$د +8?NE, + +ҖR۟ozMȷLf7n94G6mqcuE_8G$+v9ܨ^qm!3n`#Yaš;Nn*[TKϮӣ+ 쨶'PZjyc鲉2-Q-y43 N;Љ>Ix|T:gm^_IN6"8>0 &A_7t#dN&, &{vvkȉ1-x]-r`㎝R9M'vJM׍vF2IabLIJ&@ ` ]$.lq $Αҕf~E[1;3L|ǎmVevY;U4/%|9e:w֯nd'ׇhp.{ftYS#wzVUihVr\״0>g;Ėle%[` +؅TX?U!;[ޡ=L؅->vtkۧ2=`YfGKgM_e?`}o{_]vȸ`~Ny.3%Br[bxn5#v}s&T&܅aN1æ3c7ɳK t(rEC&sv +9Na;*e}Df&Dz]*%pj43;IYڥ.CMfƽe'ʣ&7ywQ%`QyNa86&2SD6Q]lD>נSvHr(uj"-Kש]$#ZWi7uB+u;Lf +v?׋Z`n$:P4 m 4QJ҄l + 0{,m1hOgOw- 0^wDN⊝;L}a'A@gfoى<-v@*eI@̅@WT 0CL!7v k;J*d&y :W9; +h)w}ޕgCFg!dsUs:njymzP_A061u<*U9Y%;x y<]bM^s;srv}Ls~^cV։Ĕ1g񼶉0gk;M9[ ;Bb`͛ΛZ,cvk̥Vr#Hswvks90\Ǝy-9^O9rL3;E9^);Í}vk#3CLΎyyF9 +vk1!U`zql|< +|s&~9oMU +9`cvR+v^gIߩ+,"9c w<-G's C +SLNc0\: +65m"IÅ[v~dcH->GO{%k$_?;n +6+bv OԿ.5]sVifÿj͏m2;f޲㠽]j +|Lz!SbZhh_4M`?d´sV#|` aǐق0@AwCʹ6dUS; >; /&Ӧw~~]Wo73vSA1qUtb_ˏ_om2肝]F_qzk+N%cN]ACW3,73]xÎ! RLNc])P0g¼%#H34o1mg DP򍯖cH`@c *voխgՋ3f6Kv VH7; &pt$eǐ@71; lq(JdwM Mu!ӥzћ9m79n+@Nkȁ}2v"BV{Ni&b0w<_OiR`>;k#;ٙPBHN!aT|-X;c41@ +h:q#̑VwH[G#u,|zOع0@cC;T,6CU +/dW)\Fyv4gl쮼 ](>hc#di듽!)!02ǖ;#ƍCvc7!"##A6as"N?fCHM(~[Efk9aq~~g7!;9८x˫A\9iBAd0jXӪIRyv+jg!% ;M}D 1;)kX愝&7 +D ;){j"jX&d諛 +տI14;)ȴmh79tSap*(A햗!7,5oR7[BS*?Rړ;PQ7jba)IU_@np ~br;=A@K=ub'z}K4~FtvDQưVyώjF@t%jGUJvTk7/c7"kgka՚U%;dv C%$}-bGpq"{D5+^*-vTHpy*~`v +S}Hz7;-M-H +Hz\q-rj{ p'M{jka쬶o2vTHOjMH?`vܵ;w7a čI8uiX4@%&J+qseS\e|O0Ѩ+ՂG螲0~Lщ ) SHT6B=ax85Dcv +J;pep԰dנ`} soB;ƎA34y1dn4fC;pN)}ݻ !`tfWPpvм#sj(ւR A]oCvJH`-"yiA!048,@!0߁&-1"YA;EҭO͚Kp ;F$#ǠŲv N ITcD2z; pId1"=<uD5"٘% uGi *Ű"F#؄]#ƒ{, 95հE3vPS)lFa爰hϩL9"$EdR4fp|"nI)L%GG?[R29 oq;ZvLJSܠƳ[^p=,/WhʎI*#;c$v7H9ScRGíx|{="*3aW$ҧzS|îI="}B^o &cw%zSkz?;H?}CX-;H/GcxvM/J䍰GvtwkYd n9@-έe{ϩ:`EnӗrlqrE"5rk ;779fg;csS""ԠMQsz +}1kvHZ̒ӧ:dUCƱszv ^߯$`Wf.v]:쾬A ;DnKί($37젾c4$D6+vP*=`'~ ԗ# ܊$#vS$Z{.bc#vn/ojÁs͎A |ޘ3v;ȳDZ^ݼބ x%>nsvK N ;Ji!XDޢľd'4a ;JfmQÌNQ"(9;D30U"vC3(skxn*xPD>v[ ixcWt/vxEUggt{1g7%jfgts +Z5;K +?נagt&vTZ`{^`'JvT(Cvȶl7p .%nK^5åSбRRHR@#8 +*-^b2ӑ8Ot:ͣ+r:Vjd\t2Z3t\:u^5t4Y[CGJϺB,g;UD[ :XZ+шf#s`):8i_L`i2]җlDOheod8KN{d7Ru(4KfGoS*G'KWOhKzG3%LC vnɕ} +.Eiz@}ut>;}+st7Gt+hC ɡLdY&J:!e.q?A竐 G GռG竔^WtBjϲu>^v;NHMiDA竚#:"5W@dFL\:addvp脕$~Q:#5OKzXtjy}QtHjLctƊZޙR8G&m+JUtJjLn7+l ;׶)!ε|3tJ cR!mEksR퍗M>@Ǭ _RDxK)Ԣvm}*RMÆfqˑC:g-DyQ!:)U7FZ.n7NJ5׎IkbPT3nϥ?CGX7:T+.7ʭȷhGtXk܄iʁT ocVojuJYn-n'ڴQj[;St\hO:m E(:/Ue +L-TKr1j.y)J6:0U҆S"o?SG۔f~8ʛjI8:nE}\c{Y]ViVǝȗeVљkmh"guNMpӷѡkJYÉCOY?mS^j9q:7%m0m+б s7?tns7`kK&NNID rt 6::fl7[ȓSB&-t .:=%m@wrH6Z nq=e<:~ a_ak^Bɑ3:\ ;uîWF'C"Pt}c4tm/?D/E4ȱW + 5M AQ\m.z~)B ꅀ.5MVoaU_'N.]CZ4[]]j^NV^U{LJ"r:!~ nW[ kB/bҹ0ЫW{iF졗pimjЍC|}^zK{ty`Z蕡a.#fׇf1ɴj~XEJ&7nq^#zK7i7Ȳ>Ix X ޺݌'sR}Yߧ6_;a&OAYeU`OsXs_Нt\΢НVI/jOO[Ngjk*NSͩoMy_*~ỿwuS30Π:][ g0!zE+8qn1Xct@Ee#ǭC5EjȁCa2y zษ4'D˻QYtUߠͪ@h1}hv.DDstc}~h^]1C 3Mɡgɯ =WOC4 G7hf~}bh1!eB:X⣊@wg^'nѓB>(2]^q(m@z972NG^( N=®R=Ȇs }n?wA2w4\DWcAbpz>$JQE=q iCn5z> )8g_oECX~}("Ѕ[@qst稩Oѝ4xD ]}8XBW-mkO0=$y|4 oTEa:g!-AJCE HEn$x]qޝ|7?\_=s'C*7V8-5zr=s2E艳U za:o]mNǩDݒ_GuDG/6)z섥>3xwPulhye'xv` `ɩ~s=Ի)s*RNe>9)z$ٓe|ϓsJo\*L{|pih~ ӟs=}5|)oT/-u~~Wu7eL7chЛ%` zCޔ1{3E!mޛ}0i7c(d:Izt2 Iټ7K `-YoNoƐ`-R WztAoj ɬ7@'7M>ztr7@'WdnЛU A#! ɱ6M>BYoNGC7@'UoNV zSd)ڠ7)`$:YF ! I( zD a`-Ao#!,ztAnjLzt 7z{j>B IoNZ#!4ȍki`YE Y &W#zy٢79 +`/7@'_* +` =:ߢ7% +`y+׋rFq$,fЄ!p2Rt_Iv%^w{խ[*JӲ7pu +%%{O{)`dppi7:$ +,&S`0a6E \}RXy p'9hcMN:.Tw-i Qo؛Ŝ>SO~=.imW/392 < uUdmvkdf&wN^EؽVdou +Tv^Y#Qbor] r؛kOaT,`"-.ICTޜ.7Uըg&3up nD{s"NO[QGDCi>J5>VGF7G:NRpcٛ%ԩ cP#ٛcT LCޜj?Q1q|n؛rboEQwajGo7U5QA7V`oߟK%i +%,7o^D\ֆ ꮪꩺ ~H-uyø{sX\Z8VSuL]qf"Vo0K nL-aC`23Iʌ6Vʵ" +EABKxum}w&9='9s&VV]Qx7 ;21"B]"7z]QĻ95tAˮ]bXWv)l;;ys@K@ ]yME]Brdؕhbx9M7^8Kz.^o(29k!B^ ˎ@rSbsȮoa->[c,`!0:bˮo>@ފ;m$FpG:7 y)9n8bW] kS;caA8v1 +SЁ]FrcAvrˮFa>]F#3bC 0omJﱋQ vdrb^rh"6k87! }0 7 AsL5oa_އ sήzPow (5u8nεýMK.ľ=eDlj;öY桮ї?zDjJ2.ՂMzWGsh`ɖGv윥eDl$m7aWznUN#]ci[`ŽXrX"b}=SɜVBhvAĺxu/uU&.kfȻԔa'fT03fWi2e%q ({uz3lz\Z!ה+B2:l#6V[Ld%kDiNW۝{O>ǗyQKpjy薵87dG`Pa܎3=U6Mt~EʘTƙuPhp=gݗJ +"Ǿݨ"yՍ ^2̊Kv0TJ5b{}jnЌ#ov. euRs#vfX,瞽]R#U~`":%tO)0srZInՌ=KCQvn"eף]\=o3{)ؗzNnQ5c6oL|>6X_e3:tH>xu] 7ګ1*f7m ˽w7;NƮʸcdfm1vNIgˮW3vf$h7GA;pFME/]#+f->7[)4~ɉҪDZco쑖Ԛbvf| ;O >t |dY=dd' Y{q7іi֛62Sv<7U}Iu}}Hmœ8 ,a XJ>'v5*SgY`iNJ>0wϞM]{8˥s\gC\ץ:g .cg ٷ:;vƢ]TګKQuWNXжLspbg f, +9/{6aqn(50< ;_}[b%yۜcj;N$ &ybG2opd9er,XΎR;UM:-R,v/ox +~iw ԑc& +I]Yw~rIݼ b{7HvQҍ°+qc79;I KRC ew󖗠dZ3;םrB7 vR?R=e$n,um +IR6Nu\=v?0lmvZugkv$"l9预bZ4gmЅ0/sؙc1|c稭>gGZhcх`sԗt7/Bl60KsXCZ4cX%2H:N(vNt =77XovKsʎQo̩K3gD[zLBvnj3#OD99:0k6e1jҧ_Z8h0- $̛M8Ld2$Abv1 iOJX?CH77F.8' $B{;c=)e?7P.g7~HRv& U?hvTD}v?Wa!Q)8o+v 0Pcv?W#*vFPVfkT!q)U9d%Ek*<.:DFG6JwԎsKc9'n;L lwj_t_jiңɼ JѮto7:2NgA6负=Q}է$&(H9nJ9#%&(WvEyy֠{W, &,ѯ(?3ybgȼ NVS̓z+*"&,vM;|(3:̛>;,u#ȼ 軭zc{xijdބE!Eڧ~`{5f06X̛S҇>1^I+ 'y~T̹<*2(HMX@Bg2e_VL&&,U1 +@@V R lIz %"F1?H=,ɡQ׫%@O2_xWIM,fZ$v%M2iob +bVIR@{Kld1y]HJhob}m&'Shob}rF`РLJ^EV +ee&JĴ,lW[Xti>k &ꫪ{s]8~5)TC2Fʛii +SͩE3PL tcxkQ+[; ?Y" ʹypoPǔI+BQLK$+^|MGy3-y|5H;DnEy3-+PGͻJy3-!{pSa)oO]#eVfZfyT)s(oeIW鼹3*~IfZ5~2ݤE"7rBWh 5APLK$+Ē%HlAJQL)q^/Xᒉ]6[b7q^!+IĻrHAʛi!+4;kw5 E)oP/R.I_SK@%ݖ_ +SL%q^!vʗ7#q^MHuu<ʹ| ΫЁ=R.Ë"Ջʹ'+Jvm2ʹ|"+t*M|(PPޘBW["v]vlq^ᜯk[K;(o _-KWF_S/] ͈%P[UeyT.t .5݄~W.b 7v;akZ#E_k=dk5?CV" q`ؿƈknwwIāF^e~kB *nBV->:btW\==QZ,MN$+gmva?=xwQ$o^b 3Jj?3bt'ZftI,]q^Tb@Ci꼻rL-7_SdlL" q`H)AoT,ޖ6~cɛoJH2Β(X!z.# wg@!q(Xw);ySø~}<QH˕r`'O.5ޤ`nBD.*_=W=QHd? y3xwQ$o'q*Fvdq.*jo"FJ>`]TɛO*RX48F7^;o)l:҆d}wϛ%QX{jEEfE0·YEEԚf+s޴xXd k{wQ߼3pMBOMщ?d]T3oֶqщ?d.*7xx<:񇬯ÎcMC6"~y3#ޜf~c-oVȪщ/n|^y6ċKGf9>zQM{3|ΘG=|ymXbxَK޼48;e֣y9/ O]1qG=n5uȎ9y/ӗjG=,!nwe'zfKf}0oī21[zQYFUyb+Ƭ"^)Y|~ ƌU/ԔxB7w0ʛG56GY`~ ʛG=l.Y:'o$o.-&G=)ߘț 7f6}"oZtGoͩTT:fY>Q>oХ7Kq咃d%yQysD!j~ ʛ޻zϛ l(2GI 2 fOy3#KJPfgލTp|gֆG&H5 +MG<>OԿYH5y|d9?B+ne#nڙ޻j͛ uͱ2x:v&z7Ry"in:>q&y7RypUG͝w'(7: ZC%!nz/lô7F?y<;ׂZZimϛxv/{nimϛgh'ξVgJ%am9[ታgxR g{D9fƳogK^MGgG' ޽TaG#zxǻ*!Gnۣ/G7XNyOSXL(o{Kѣ%fK CGGc[3O7Ãw3`BqۣȣZXON7!z7S82-~9qPۿ|OGuf< }[ԺpIHqDA.s|;^W3/Kdwܻ~O]M"/j棇"vSDBWt9IlsG1ST[>z.D^l#pOF`6R.㪀=%lqC7$dG-uޔq3OWP"/DrfR:M9U~()ɠ 4a7ӗ(F9d){Äѳ972_~F ZyCj+-Ez(9tKe芺yAjß7צ wKJs "E)ě5uy?ϛ¢4UFn:oidV2}5BEy;Ovmm5ς5*3mhQQ!ZKF=Bŗ2RFʉfwuuP,^ZW:%.L{t]#ul,^Bj'&J]!NNKzQ +-"JJWA˞+\/[Pji*/oKtm1:ҵB 82vP_%KZoStKlT]fu'caJzQG.2GrW-.ֻ1 pw,{.ކ;-8Rv 9zpiF;.ynŖ*h:6dr5t&wܸrğZHtzskqj[?9zZ)E.Z ؍#t-u)8}گ " `PKDg-at$x) OB-:ˁͷѕcP4]lIZP]h;ŶP2}{zCdi*Ҁ3z[qjVv1gjN)uñ\S֖FQ]}Z}"wZkҨ%:\N7=] 5>M,JFGR8כ:ݡ?JA +7wm|# Ǎ{5N7tw7mtxeu8E%uH0thZ:e:]#lǠ f:x5L9E z6F9RyowmdǟR kGzi8*y4ZG'N!5 Ztޠ T[lRBg@)ТFAP:~[t`Qs2wvLi|F'@$-p;;4Q 1mܧp!MG<ר}.*)m HGA M$M8 hTdavlw9$ uvJ]@<7ʉ8G8ݽ3‰VFM];|rtDD?p bwL貉y]7qa+tD!2Q7^wF fhm@WK^ ad2QX ccYt>7:T^:o"|rճy.G> }bKNclU"D ž+8UJ*E+z(t}^>bʾDHN`9:?:`w] k1ꈒm]2L SCtmDxft]гteD)~g%,OU9/ufl7[1FKctQD):3:?J@$i$E h"VS_IPtU \3=*du"'3XXه5; +>-t-v8nS )r*Esf*!G/ȚF@߼naeѨ3HWhj:7`'Z2j&VAIUZ&zR:8@]SKԨ5JGSF{,:4,ïGbqtVgH:v3?_׫v/ k\zk +moU:YMD:/Z5`tVhtNÐT67tB°C7)SKT񠯴9(r* +|VGgIIY%d| ߚ endstream endobj 33 0 obj [/Indexed 32 0 R 69 41 0 R] endobj 40 0 obj <>/Filter/FlateDecode/Height 1172/Intent/AbsoluteColorimetric/Length 28005/Name/X/Subtype/Image/Type/XObject/Width 1136>>stream +H׋[MˮɩC̙#yrJ %Ԕqub0if4 &gCQҶkvkk{kI$D=z&v]z>xT~^#G=&plи&O + ݤ<;3z0Ө[tufw:Nqm½͟J?O]z=rXNxQBjwkF^AY:!^Uܾ7K\my !`Qv}_tߖh'@]%/D\F43$h.TCLPB?((h0"AHYQoGM]2o+AٷYJ=xUnLGtqQUJXym1Ż% bJ)Q8-Iٴy$Il3IF.WDg+8Kq8Дu6ICc?$lVN+ O|*X8 eT.i*zfӳ&aATӁ1%Z݆G'0ps,,Z㈊-J=,Ix빺(zWK/*TF$,irWٝz{2DK4.m"LB$,1\b$晈2$ A2ZFAx&[@ ݕAP6!|꜆NJk|F#散DHk5!pHEJ)QOI"x=+]Dԗ] +:EDJ +`v]F]:ԋ#FXHLC:=*o \mqZi2Wm5 "*GWRSGI82ѥx[GdžǫX*ѵQpq&>Au.F-XVp7Mޛ #ތFVD#jug ɒ Rjh{GeBd;pH-:Bp4"&$`]:!FDŽJm5)8{1‰U +:#D\W\ta!!tA'ˆb OhC/A烈q" .O [ B "2fG5]bR2‘q:Ddՙk*r!ٞG炈Lv+u7(]hTB/Mt*\lnx:,E[]ِHI6=kj/>WADf> U.fy.,рt<$HbN)Хנ,ߥ!2܃Sm5Nɰt[M@KID=7cDrjԘ!`mxkF8cCg>EK@2vKz;ޚ#p)DGI}^eo^sMS Y'^)Ce8/*hͼrPM:)'b%^e&_X(lȌg8i)OѭVEmq(X.uAIO ?oĮaЉ2oĸg6oٵȉp+9wKTnrvi)Pb䓈:gl^'ٽ??ņf# 82fƝ{O{_noz1sJstc6l]Ë7u8uƂ[)xT"ko52& Ԉէ!3OZ[C&E/Y}/f }G_~諬̅۠[ Q ! Ԡgb~A3]3{GbFz }#jh =ˤ ~ݽ4q^1۔FRWbބQu +!d E&R P.*/bZ(/_ыVvs}|DwklOz;Z}tbm/@]BZLw5g,Tm8yrC#cg?EW?FsoFzo]ko>vБ!؟ ,NF'_t-"b H2YsN@.vT n|#EsfЙyVxN}[ѵa;ёУRc17}$q:1 +Iԓ|FW"PvOy+ꉴЅFe:%<šlt^Y_N#z]`hqsq#=O[jp <IA ^B`î <ʛSdi:aE7!]QrD!NK:\A`џ>tTTЬ%*A *BsrtR~Ln/IY-q ]Iya$Lï'Y[$s]K +q|N_9N;uGڇɃ +Tjv9<8Z)ٷ-Fd_;{Uj)Y;Ԥ +׋oqF:7&asKƄ`Ĺm",L`eFw#3d@ UPMӹq+KseI;[ZG=. |`Q2-9 v3>yu$#KՒ#uX>,v_謱ՍeGKΘ)M`ϑMJWS57Bx +v䖂 >v^A+ٽ^1{ىPx d+9m6t;.bv3Ε\y?n Zf|-2? ZzN ׭to]++ej W[Ez i̯c9ǍftU$*a',fLnq[h>]\ߵ}XM蛸]4E[qIhcX2$\%}Nۃq3;I)ք:)pgq-e7PA/%pP8d'pAv f2Y$QtL$Q״]v)jE$5a*H{:]w..2v *I"P :!PׂVq. Ac = ZWrfX\wJ1[&{,s_\=ΐ%IaX\.Cnd==/aW2Cn6f 2veyP2z=,bXCWCw2DP"Dz/뵟!!svey/ .C*C\veyR +}!5k ;G7_|_͢٧Lu[&uMFz.؇1^ fwH!;G6'.U|}#W}Q볿Yw_Lў%fagHmǮѥ'^9Tj3g6䆭fgHBfpkHzyw >5x| ؖ}LCn1v"f uk>Wu̽tkY\9hmfF_ӣƄ>&սMJfwȌ/k[R 1TsBX]!*7!32+]u{N;{%&ό&s7ΐY  S+t℅cgTF`gTm7ge?* 8a~[׸nv%+ +EK|h_qj5\&蹚]$$KD5CL]=M:Ź^*lt;!d׀4]/?]yQDv[IJagHL®h]Ycq}v8Ȅi,(Cِ \d@$ͱ!B3 4av R*d) 7 8c5OɿC26 v P+$y U ;1_ڐC1 8??n仄X$! k.;a W {pv"]!q +k,;F.6G".NXԙ]GI;C]LbWOvB$:GOx edxv"P vY{~T]c3}2 ;FAj̿-a*!kegK \au+ӲaOvƝ1agC~@Ŏq}TWgz&<ڈ]Uc2;CxD+#\Tv1h|> UIzW;vDpʝa7jW}ßN vĮPQcHQٍ?GF}dWꆨwgH܍ۡJ#5 ؑb3<ǮP Q8nۡJ'|J + l8)1Ë +Uz&v<UĮԪ ײ+3LfWw,cHvZ6RLDz3r3bWw[fa%;SF6|)XaBhDc"En؝:18vx +^@;F[Ff%ݩ #.egJE]j1"0 7C(N)4bu +U[VfeSf&,g + AϮP*ޑn؋!}Nz'Pv+TMF;c١ 54"vPb +US{-bp34] MET& 1avD)E]o Oۀ# +a[uy؄٩"Y J`+UI&g<BUD}?)a3Ӆc~N$BUD})v& N%؄٩"3|ʮPQx~!&T]M6;Udb} +U~vX aةڜ2$vRgWjwa8.g KE"&gWF;[q;]ˆ&,OflCLgv"D~@<;Ebl^gЄإ",gW("?vkBէn ?gʜElǮPp?;E;lbj̄{*:x*8N9&ZheAY(ER\FJ4j6¬$ +rgP%0F leHR 'P+-JMp|=޻w3e o~M/v$ 2a)lpK)IS i;T@iW ՝$e oC~[iPYuΨ+1)#dޮS^u +$6Dń:n+1]:޲~:G"ڈ:֖6<\RgxKSLmH'ԑOVTgx;Iw^S@ô%Liyu#e= oG(u +h2miu! gcD; o)΂:5B_SxÌ5X` NjӦ(S g][d0|b YFIu^9 }&הVu +*>Mb : ',PRQEu + +m qM[PTg( 8}\?m@vݨm۔!zn#u +.ƻ]+PL˲ц2%.3 u +A߹ء d:`2EJHRpryUg5l1&uAME5Qpu3ׁ{ꨰ6O-bc1`!u +Ņ dMDMckD< uP%pPk5"|NۍƨiǮ+Dӹtv +l8Lvs*e85u]#–; 1nd׈uLm).ֲkDڞG&v}PXyc9;ōC5"L'PTۖ|@Vy;Gh"6S[]R#JIy66Fv!5ϩy!25ϩ\F&vKTJnJF_vUd J_9"7h5šu+Gb nc #p=N1. eTv`YnqR~,4xB}1n-Ne#2g8v-n*KȷpbǸ8om3 7#1)a8צ8;H$JGs+ƽs+="Qzx ;Cjת@V7dYsjNGTօ::m5y?wRZG]9i@:k¯Gg35Ҧ/DAt<{u=+"Lui|GtW= ?!.%}gPg V Di2:.yM?Ngs@z趙=NgM"t>"72k><"N\kDxD%޴+Ĕ_jg*seBS g2[nC } \Z|fyZ>pe#}wK-t@I*':#Sf;Є݉fo4:#Q|bF'4U"ęd?i%5tBsr!*gC]@tF-! E$;rDv/Ģ3V*+:%hbeoGS:l"t:/D4u$1zftHss"!9_#1M//I_P1M5{8tP0:lJdYv+p:%Q+!>A'%K +xNǍ9Rɶ2,>5NjY[Yb*tx:eR2g*:+YJg{#::hkBG%hFQm~j)].+ڛ/Ӓ%8QӫL86,g>k9#'6C%U+YNkA3խOByĂ*lt^+ZpB|9L+ʪF)~rBID&SJWсj=Mщt>RғĖI*Er.|nGmEϵGG0N~,T]љ-^ptj26y#SJOOx"(ߪy! cLEǶC} 뱍n@']йm!_ +QΣdH)k:MDWNF4 Um̊86; $fI1i6{9 7P5NGEkLkOpa3*Xo3aqO kJo;!;\sڽDO[;̏A N^ݷ3Ů]SQzz #i5t.=M9VW)Y߁)5nB| =Z^- @O$ s]NwBOβv~0,H/+v,md9wv<(=Nͅ.|]=19'ѥ Yt Uc^z&!Orn=^ugBM{p2cFh9|Dntx[ϥCψeĂK5y nDJd?ڙX4>y֛;ը׶P^Ϡ;OvS)?@f%IMϜ9o^A['nEx+ܟe.5e\CRSNIIM2t0͐䁷 %Rt cnnn'QѺ14[2Ʀ2ttuO&&4yIɺ)2uSuӦM˚(OO9}y/,}c;>[z Q9}[Tb߅ˢe }mgEu}"ZD-6")(zD,C/Gh!'DWȁ>%FtU>;"oM/GQD/D W>}A䓰wЕ!j|Qn Q +A'(P8wCXPC"_T܁>j5y/'st"}.X͖y5"CѷBз$z@ +G7Cv&}%?QjGsaSDu8=}ov[ETwv(8Ho"ρ 9/EtY iC.BI5 bDs ٚ]3"c mB7V4H趑&(Bl0Zѥ#2']R. .@W Z.+GlrY4M>qH?EW^ku=eZ暮< Z)( +OV$Je %),ct[IiQd`kdLs]zs\$\+ CBO=#J.Lj9BcԃDu8B'ԣDD]~'[=oNCa" TOhc\NDy)U#Fh|z"TU=m7Ue@o +uo)܀>OQ~j]/SԪ^.ӽ3/^.Zۡ/|rxQzY {gWWsw%#|8#YTD=#:?("իF(]\zqEGFt6<%"ktnl~zgUz?|("B{NE##DBɜ]yR={ěVLNQh Rٙ!wW +$% [~L?9T:+K2/S^?~pu#kzQW7Lz%[AjLQ/ N,,wFnpj(ɟU{[_] yc';{ShnW?*\uoͽE=~Crg겲;>yKRR[ˑլ[Jܻ՛R 6fB➰UfYKs;43S]Uz~pЛj QTo{Z}?4ͻa_ޔo{~h7|Ooi7 +ޛ2 p0r077C`O%Ao֨[ # #Cf^IoGoAo֩ # #S #Sf^ȣ7̢7<7#x!0202Ao6zP K #zS>VF # #f^Jo0Ao6]J}/7|IoAo6o #M#zE}/777rЛGz9zy٪> #.V qzFAn EojWA?z4٦2 #Fn7 rћZ|p`$02EoWQHDWsqV.;RcjM(w#QnCS  (ln!mKv] Ee0 Re][WB9~}Ϟ/<{l#-g`f_N؛N؛'Ҡ'{I/ 'Zlu48{I_dz7prUWHNNao89bo+A? ',f@ do89tA{@] 7p2boTWHa 'g7e7O+ '7k7 < '#,iu48d${( -u4bK,Yu4pRp2bo+e ' /&O-VWHyN] ^^e/bKfMjX LfT^Y叼y7 ݛAofV~?c!E4Ʀ>y{#{T]>`swW?iޠ)75@cQ4ᚠjBwQLyuE(;`_UO95q(`M4;w=1ooLh]r_bUtS3~>E۪Ba>>_S~pt]j"~_߳(L&{L]c~z9gGU,'Q9(H{G_`C<~{T(>iVqK7ƸΥhʾYt^TW$ݐv]30@AaoqzVwDѮ֠|=%( ִ8n :ife~7Ev=9(&{\]aY/. +vrsP؛+3wQi:*أtGu +{6gqPg{|{U[u.V+tz{GM,P$P=@5o'|kq-Дd0h7pCbkˍTׅ)Z6^?Uf7/+ZKldu_n]bu/u؛_H^U)h΃ {qZ\)?LKNQAdo^TWu 2HUטZ.F'hQeIYߛc޷8@CC=o.UWBdoV+qE~>ƨSC+]ՙ9~E}^nS$Cԝp)lў:R8EzsCTy]eUgu*|Kpc-VPw }ձpѽԢ;]PlM-CV'82Q޼Tԯ>Q7{p1@.tMu7u1doov}"9T:;:NLuE,ժ~f"873XͨBŁnPWÃެRW&HRX)Фbu7)b͗hN4:ޔTXFV]Jt%r$-;{fEjTUiv: ޴YhQ{dWpYٛ ,B{C}4:ޔεawVG7qS CMR#I؛LS tor7L8xT @T,ƘP!xod`o~s +뭾fZĸGjR i{ӱڢ0=wX -}oJ*-cT>D/VVh{sE_|bZMUh{sEVitTqf„JYJ"eʎF +-r$-`@," +<Im٤@He IcD6VA$=%$$w̝y[-At2=-aa.e&t75hL6u}T 5=K5h*9ONySQo(GA# :0fX[+sA~QrJ(: :oD> 5VYidMkN +9V6!~:;7>VtFvyRGV 6J~ރ3m#/y<. 䰋I|Ki cF"dYΏB - fu&GdVgo؋";0qGF=ܸ}lOݲӄ 1k{7}{ֱ}GԫS3$/Sw)mc3\Z+u;N$ >d"܄ +n^yܙ=w؞e ?[f' ^ZV"Q2)G"o)~^w=iubU6RI0J1=w\8IbOf$pA#OHX Af<~+H7X+DQ?^WT|_PvQzy J1[r$(]̎7PDDKqdvYX"|S/XZ r=bKp]o ^^+Ad#K,d=qۃIEknj635dMb 8 vhE?S}&aŶE~cN{ c *`NWش! cn}#|oɊ+cvSW +ߣlz'ؗZ M;"L%ngg{fFo'QuJ3vJ4I6rR~{|\B=b稈Sw]{덾}7>|dxvڴO9T룍)7}@u2IOTя٥h eרSy+8ϞM|0] gPj,.;;FHͼ.Z_gqa-jV+65e7e&w6}F)S>,x vE$nDvL*^aJW\س{|%l¯_1aaak)`+Þ%'˙ +.!Ÿi-u>:cunؤ "þ5 TTvF'.bo;]C+7POi*Z(;E3޾: v[Wj}KCQaq iY|$oik!(N=v4=:eU YP΅ikl1;D[¿ivXڞT\D״p֚]1͠؈dU!@n!Mc_N PnvT_ :.BԮ=  bhQ߽,WZR"YTY7v%A7acv o),]t`=m>Cjcc>ʩ)rþ#G0m~shv"[>CvF5˅Go&Ǟ8/F#4fwhV UPltؾb_ԡ1uQ\R?u)uuuH]ݡ]]Id'|) ub2$/e CnTi$ 8Qp/G MQ [EՌ}Q@34Ͱr + k>s mk_Rs+ƏqS 'u<]uWPdfHeԕ|D&vօg#T) ZKe3q;CAH4;B:hn}R" #g89TG +Y±V%$7;C@Un.*uEl>9ȥldה lEQ".U;`x^ U-`W TecJ 銯̾;^+qr51%^x ^j$nhĮB7ĩ5eT-`n`Mo jcW4VegT/EnJ rbW!q2-p1;F"SbhlAT 9Ř KǔIbWbX&K`%|֔|Jy U +AB_!ѸOjb֞{H e +AD Uj!M,Dh_>G='  +Q /D %vbCbv( b1 U!E͈'Q? zbLT #FM P2! +ED--Pr{noT(\%YA":6&@$#U v8xj-慩eyC^LX6piL+9Nj"dfkIB!q[^ +!L\^s~]ַ߸Iec(PiH7#겴_ʟT>:X3T(D];fO +ߟon{#JQHAP|߿yqWZ.o>{ؑCuTRU1\nmeU+KV,/,_t 32Ôk7CE1r%&!ƳT7\GE` уIlMIFˈ +c:I%@Fsr=kuJ,g}eH Y#"o׋eqae]( ǶՌpi CdΘȸ( +6HP:FMeD04LtF*]RXV%vv{<:̵qƧ1xBkݧJg»C*q/1$Rw3iS Rؽɗy%Bd yHb MA+IȺɚsBbvoe>1$ j=5+b(vofb^IҚcLoKJ M\O+iHM&_ b^9MkB M\M+in$g#U0,7b^N1Lqwf&_JyNyq3Uݛ|H+7$eu~0>ؽɗļ^3z bE/˥ļz؈dLqb5?K-1dψi,b&_FJ1$bK<`{/J 8(0*0ٽɗ*b^I|H4 +0^ٽɗy%c#/&o*y%w?/MP_gvo򥒘W+OEҥZ)ME+Y'ܘv$]R?voe1dl~K9Kzݛ|G+Y#ZHT+|7aؽɗ^ļy"sc5̊LR]sN>#5ّzuzon!^s}3RsJ]G검3JK.$~M鿉;z8dhef {s-uG{B(-vfhx7%ۉ; ?ڙ5BwXQ fq7mG`u%yo*Nw3!lljmTW 'vhaR]I,%?͟o;i{Fk:8Օb;1O;m' =UO-N[HOL6i'g.VgH*|o~N|ŁgFbA]J$Za7/v1-ptTkibXU?}Ձ[gʹ홫% +}Y )ȧ;xV.% +Y *jՇkg0GЧ!Э3EUnVkאQ+ˑOgag> L]LjQu+ȧsb"PO XOO >Ucྙj>n%Rӗ}{pTp@ސGk<;TF"LсR +hE +LQPQ)XZASA" ,B <7 ,s{}fY3s"(:RMhA?\3:S.Nx5[cf礼G3ql$1)-LΘQ^ql.V~vg4f"$_m@DZ,SZHJ13YB{_RIi$yxPvd*e:dk$3"yz0VLmZdkHΨ<=<1Nщly8ߖZcfsB/Ⱦ~ErB~SA@LJG'u$t_"y~ 5I;<:]\#9~t#߉xu13zR9dSig 4q~O_Y̜"ɯ,t({*9i'WҌMf;ՅLt(;J9!f,I5Śf@D3b ey WqNGDz/h|!Ch'fj*.ש\v3dxLј;I3Jׅ,t.y`^<&ќ&fv/_WGJ\ 2 A+3JU?NRK`PMV$f*.NJ(t6Hq),9DTCG*_7fd5T fcɯW+-UuA:ꈯ xvy<$2.z ټTìvݮl: ;XMtW\)7ۡZ\dȸF+mY]t˗E-wtG@tfuT#*anS|:u;S^!j%M%Z\NiQQNj H)kYTJ- +zu:%A] }D50+Q25 r&P=:>50KCqE>k)+ wKNOJJas:-2RK)/'jC}#^bν5_,:~FZly+ ap?ݥ8΂ {B7Mw7++nN]Z>gӲ=IMmuиOH`v2jU*",ܧIZ>mIYW/aU+0|b팿NNnXˈowyI6"^P^'va԰H"-eR_PDׁB{bQι4-0N9JC^Ր /87 j( Ɋpt!@ sL6QPgb>RYS1b1 +.y(FFE^oha]1L 8 t#}+is<=!~F7J.qeFZPeykv}vGGTH fo-N*-A7jܸ\_5g{kJ&gnڼTdrdΝ;&*z87}y݈Nsn(+r:cwQvqvG7Mܬru=u@cNyCnDTt>|P +݈WK1)C\]K\ȘoU_~9 Q+bkڣc2G/ő.DRtRIcčCbXZΒM%׎qkDv:?I^NXp34t )bOQ⅋ +o5f`̿nC0g}7toJ#e0@tDawN[k0 Emƣ"&[e0XYx{]VН5qDX?Fo7~]We0:x@!Atc^.$`,rxIE!i0/920zQdː3ݗ-2 +*MơWt_M*;`LHq4BJr-&O`LP-_YBdt]M`LsutR6jt-c?D/-%&dDWj4 cRϠ7Rt2j]cR:;Ӡ݃gm}d +<^udl@uKm_tZ^q$˺eƤC]ĵt˺i- p9n-BwuXtѯ;.Wt Fjp1cƌE/uqO1Ǖ@2tW93n5z.+%0B7;UBwXHbKtqGME;`,4_@WB7EmFWXK;dϛdOn 0e%N/,ؒ,n2%J8.1 tva鰎<3F @Ub6hG@ ylkN'0.LAc9bѱD ?1jItZܽz1C륿_3DڷYѹSeuڈN,.Sw7;c3,fN͘J˵.ܶvEd "ꍎ(תp21nWe tBՖV(1)WT6t>)mUVQ 16E +Et:9 +pEc o9e+6 MVeE\{G1f + 8؍ht49 {:ck-ۈ%JZp913 ZMFǒ_ й3عש7.J,Ř5ϩM(qplb6jȁ,Mہ$/\% r)R[AAA)/l{F!byy|?~ߞ'!Y:0VZbu?Iwoj6-IU>P*RuQ)}F&ybRݽѽl2R,~oF[0_;PWȹQw`SGηP'/joZ b>stream +[g[g[f[f[fZgZgZgZgZfZfZfZfZeZeZeZeZeZdZdZcZcYgYfYfYfYfYfYeYeYeYdYdYdYbYaYaY`XfXeXdXdXcXcXcXbX`X^WcWbVfVdV`V`V^VVUbUbUaU]QZP[O]L`JJHfBB}} endstream endobj 42 0 obj <>stream +Hb``2ptqre``+) +rwRR`?> v^~^*vD_)p%?@lZhdg"I`($>dCW@$ ]>faˀ% { *23J ---SR+KRs< +KRSj!ABPi5Zho@p2A!@riQdL0cR?1^: Sbj  O endstream endobj 28 0 obj <> endobj 43 0 obj [/View/Design] endobj 44 0 obj <>>> endobj 27 0 obj <> endobj 45 0 obj <> endobj 46 0 obj <>stream +H,mL[eǟ޻r[Ԓ{/0)s8':dKBIA^D;Mdaդs s1l(F D%+Cj;H ?9GIPJ*z9cv[g5嘭i 1 3 T= ՑF Jlթݞ,Ww.iikZ[]CsC[Yvm'lrYۚ,9C͵rCsZmmwٜNs&m xJ2)!RBCH:LҗIz5ơy=W^1(ɡdֿU Xb9p ja Ar+ttZc"8,3Y׌r<őq6FтZi(lD̐#1ѿ_B<3c 20:`v}f>G\ +'A v ]t>STtx Bs:pbфGOT*fK=n} 튯C .畐p! uTTt6'K7D_!C?@p$<ˀ* 3g1cgm#{!i^CHHB㲯Vϊ<&RPExp?]3eIi.O Vs7o6բw:ŏgWƃE풛Տ,!q|ʑ,98?GHXR60R2[i9p!2zsvv> endobj 37 0 obj [/ICCBased 42 0 R] endobj 29 0 obj [28 0 R] endobj 47 0 obj <> endobj xref +0 48 +0000000004 65535 f +0000000016 00000 n +0000000147 00000 n +0000039884 00000 n +0000000000 00000 f +0000039935 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000041244 00000 n +0000000000 00000 f +0000041317 00000 n +0000041579 00000 n +0000043038 00000 n +0000108626 00000 n +0000174214 00000 n +0000239802 00000 n +0000305390 00000 n +0000370978 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000437657 00000 n +0000437470 00000 n +0000439552 00000 n +0000040430 00000 n +0000040720 00000 n +0000436812 00000 n +0000408509 00000 n +0000439404 00000 n +0000384545 00000 n +0000040782 00000 n +0000439517 00000 n +0000383971 00000 n +0000384019 00000 n +0000408553 00000 n +0000436847 00000 n +0000437107 00000 n +0000437541 00000 n +0000437572 00000 n +0000437988 00000 n +0000438297 00000 n +0000439577 00000 n +trailer <<912412AD9D64414AA7D4EE659073366D>]>> startxref 439767 %%EOF \ No newline at end of file diff --git a/docs/contribute.md b/docs/contribute.md deleted file mode 100644 index b64eedeb..00000000 --- a/docs/contribute.md +++ /dev/null @@ -1,26 +0,0 @@ -# Contributing to Codellm-DevKit - -You can report issues or open a pull request (PR) to suggest changes. - -## Reporting an issue - -To report an issue, or to suggest an idea for a change that you haven't -had time to write-up yet: -1. [Review existing issues](https://github.com/IBM/codellm-devkit/issues) to see if a similar issue has been opened or discussed. -2. [Open an -issue](https://github.com/IBM/codellm-devkit/issues/new). Be sure to include any helpful information, such as your Kubernetes environment details, error messages, or logs that you might have. - - -## Suggesting a change - -To suggest a change to this repository, [submit a pull request](https://github.com/IBM/codellm-devkit/pulls) with the complete set of changes that you want to suggest. Before creating a PR, make sure that your changes pass all of the tests. - -The test suite can be executed with the following command in the top-level folder: -``` -pytest -``` - -Also, please make sure that your changes pass static checks such as code styles by executing the following command: -``` -pre-commit run --all-files -``` diff --git a/docs/core-concepts/index.md b/docs/core-concepts/index.md new file mode 100644 index 00000000..312d3eec --- /dev/null +++ b/docs/core-concepts/index.md @@ -0,0 +1,8 @@ +--- +title: "Core Concepts" +icon: cldk/area-of-interest-20 +hide: + - toc +--- + +To be updated. \ No newline at end of file diff --git a/docs/css/index.css b/docs/css/index.css deleted file mode 100644 index 197ebef0..00000000 --- a/docs/css/index.css +++ /dev/null @@ -1,9 +0,0 @@ -html,body { - font-family: 'IBM Plex Sans', 'Helvetica Neue', Arial, sans-serif; - background: var(--cds-background, #ffffff); -} - -#mainview { - margin-top: 4rem; - height: calc(100% - 4rem); -} diff --git a/docs/examples/java/notebook/code_summarization.ipynb b/docs/examples/java/notebook/code_summarization.ipynb deleted file mode 100644 index 48a3ee2f..00000000 --- a/docs/examples/java/notebook/code_summarization.ipynb +++ /dev/null @@ -1,426 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "59d05bbe28e62687", - "metadata": { - "collapsed": false - }, - "source": [ - "# Using CLDK to explain Java methods\n", - "\n", - "In this tutorial, we will use CLDK to explain or generate code summary for a Java method. You'll explore some of the benefits of using CLDK to perform quick and easy program analysis and build an LLM-based code summarizer. By the end of this tutorial, you will have implemented such a tool and generated code summary for a Java method.\n", - "\n", - "Specifically, you will learn how to perform the following tasks on a Java application to create LLM prompts for code summarization:\n", - "\n", - "1. Create a new instance of the CLDK class.\n", - "2. Create an analysis object for the target Java application.\n", - "3. Iterate over all files in the application.\n", - "4. Iterate over all classes in a file.\n", - "5. Initialize treesitter utils for the class content.\n", - "6. Iterate over all methods in a class.\n", - "7. Get the code body of a method.\n", - "8. Sanitize the class for prompting the LLM.\n", - "\n", - "We will write a couple of helper methods to (1) format the LLM instruction for summarizing a given target method and (2) prompt the LLM via Ollama. We will then use CLDK to go through an application and generate the summary for the target method." - ] - }, - { - "cell_type": "markdown", - "id": "92896c8ce12b0e9e", - "metadata": { - "collapsed": false - }, - "source": [ - "## Prequisites\n", - "\n", - "Before we get started, let's make sure you have the following installed:\n", - "\n", - "1. Python 3.11 or later (you can use [pyenv](https://github.com/pyenv/pyenv) to install Python)\n", - "2. Java 11 or later (you can use [SDKMAN!](https://sdkman.io) to instal Java)\n", - "3. Ollama 0.3.4 or later (you can get Ollama here: [Ollama download](https://ollama.com/download))\n", - "\n", - "We will use Ollama to spin up a local [Granite code model](https://ollama.com/library/granite-code), which will serve as our LLM for this turorial." - ] - }, - { - "cell_type": "markdown", - "id": "bfeb1e1227191e3b", - "metadata": { - "collapsed": false - }, - "source": [ - "### Download Granite code model\n", - "\n", - "After starting the Ollama server, please download the latest version of the Granite code 8b-instruct model by running the following command. There are other Granite code models available, but for this tutorial, we will use Granite code 8b-instruct. If you prefer to use a different Granite code model, you can replace `8b-instruct` with the tag of another version (see [Granite code tags](https://ollama.com/library/granite-code/tags))." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "627e7184", - "metadata": {}, - "outputs": [], - "source": [ - "%%bash\n", - "ollama pull granite-code:8b-instruct" - ] - }, - { - "cell_type": "markdown", - "id": "8cc1ca5b", - "metadata": {}, - "source": [ - " Let's make sure the model is downloaded by running the following command:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6ff900382e86a18e", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "%%bash\n", - "ollama run granite-code:8b-instruct \\\"Write a python function to print 'Hello, World!'" - ] - }, - { - "cell_type": "markdown", - "id": "531205b489bbec73", - "metadata": { - "collapsed": false - }, - "source": [ - "### Install Ollama Python SDK" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e2a749932a800c9d", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "pip install ollama" - ] - }, - { - "cell_type": "markdown", - "id": "6f42dbd286b3f7a6", - "metadata": { - "collapsed": false - }, - "source": [ - "### Install CLDK\n", - "CLDK is avaliable at https://github.com/IBM/codellm-devkit. You can install it by running the following command:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "327e212f20a489d6", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "pip install git+https://github.com/IBM/codellm-devkit.git" - ] - }, - { - "cell_type": "markdown", - "id": "dd8ec5b9c837898f", - "metadata": { - "collapsed": false - }, - "source": [ - "### Step 1: Get the sample Java application\n", - "For this tutorial, we will use [Apache Commons CLI](https://github.com/apache/commons-cli) as the sample Java application. You can download the source code to a temporary directory by running the following command:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c196e58b3ce90c34", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "%%bash\n", - "wget https://github.com/apache/commons-cli/archive/refs/tags/rel/commons-cli-1.7.0.zip -O /tmp/commons-cli-1.7.0.zip && unzip -o /tmp/commons-cli-1.7.0.zip -d /tmp" - ] - }, - { - "cell_type": "markdown", - "id": "44e875e7ce6db504", - "metadata": { - "collapsed": false - }, - "source": [ - "The project will now be extracted to `/tmp/commons-cli-rel-commons-cli-1.7.0`.\n", - "" - ] - }, - { - "cell_type": "markdown", - "id": "6ad70b81e8957fc0", - "metadata": { - "collapsed": false - }, - "source": [ - "## Generate code summary\n", - "\n", - "Code summarization or code explanation is the task of converting code written in a programming language to natural language. It has several benefits, such as understanding code without looking at its intrinsic details, documenting code for better maintenance, etc. To perform code summarization, one needs to understand the basic details of code implementation, and use that knowledge to generate the summary using various AI-based approaches. In this tutorial, we will use LLMs, specifically Granite code 8b-instruct. We will show how a developer can easily use CLDK to analyze code by calling various APIs without having to implement such analyses." - ] - }, - { - "cell_type": "markdown", - "id": "15555404790e1411", - "metadata": { - "collapsed": false - }, - "source": [ - "Step 1: Add the neccessary imports" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8e8e5de7e5c68020", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "import ollama\n", - "from cldk import CLDK\n", - "from cldk.analysis import AnalysisLevel" - ] - }, - { - "cell_type": "markdown", - "id": "ffc4ee9a6d27acc2", - "metadata": { - "collapsed": false - }, - "source": [ - "Step 2: Define a function for creating the LLM prompt, which instructs the LLM to summarize a Java method and includes relevant code for the task." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9e23523c71636727", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "def format_inst(code, focal_method, focal_class, language):\n", - " \"\"\"\n", - " Format the instruction for the given focal method and class.\n", - " \"\"\"\n", - " inst = f\"Question: Can you write a brief summary for the method `{focal_method}` in the class `{focal_class}` below?\\n\"\n", - "\n", - " inst += \"\\n\"\n", - " inst += f\"```{language}\\n\"\n", - " inst += code\n", - " inst += \"```\" if code.endswith(\"\\n\") else \"\\n```\"\n", - " inst += \"\\n\"\n", - " return inst" - ] - }, - { - "cell_type": "markdown", - "id": "a4e9cb4e4f00b25c", - "metadata": { - "collapsed": false - }, - "source": [] - }, - { - "cell_type": "markdown", - "id": "dd8439be222b5caa", - "metadata": { - "collapsed": false - }, - "source": [ - "Step 3: Define a function to call the LLM (in this case, Granite code 8b-instruct) using Ollama." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "62807e0cbf985ae6", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "def prompt_ollama(message: str, model_id: str = \"granite-code:8b-instruct\") -> str:\n", - " \"\"\"Prompt local model on Ollama\"\"\"\n", - " response_object = ollama.generate(model=model_id, prompt=message, options={\"temperature\":0.2})\n", - " return response_object[\"response\"]" - ] - }, - { - "cell_type": "markdown", - "id": "1022e86e38e12767", - "metadata": { - "collapsed": false - }, - "source": [ - "Step 4: Create an instance of CLDK and provide the programming language of the source code." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a2c8bbe4e3244f60", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Create an instance of CLDK for Java analysis\n", - "cldk = CLDK(language=\"java\")" - ] - }, - { - "cell_type": "markdown", - "id": "23dd4a6e5d5cb0c5", - "metadata": { - "collapsed": false - }, - "source": [ - "Step 5: Select the analysis engine and analysis level. CLDK uses different analysis engines---[CodeAnalyzer](https://github.com/IBM/codenet-minerva-code-analyzer) (built over [WALA](https://github.com/wala/WALA) and [JavaParser](https://github.com/javaparser/javaparser)), [Treesitter](https://tree-sitter.github.io/tree-sitter/), and [CodeQL](https://codeql.github.com/) (future)---with CodeAnalyzer being the default analysis engine. CLDK supports different analysis levels: (1) symbol table, (2) call graph, (3) program dependency graph, and (4) system dependency graph. The analysis level can be selected using the `AnalysisLevel` enumerated type. For this example, we select the symbol-table analysis level, with CodeAnalyzer as the default analysis engine." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "fdd09f5e77d4a68a", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Create an analysis object for the Java application\n", - "analysis = cldk.analysis(project_path=\"/tmp/commons-cli-rel-commons-cli-1.7.0\", analysis_level=AnalysisLevel.symbol_table)" - ] - }, - { - "cell_type": "markdown", - "id": "f148325e92781e13", - "metadata": { - "collapsed": false - }, - "source": [ - "Step 6: Iterate over all the class files and create the prompt. In this case, we want to provide a sanitized Java class in the prompt, containing only the relevant information for summarizing the target method. To illustrate, consider the floowing class:\n", - "\n", - "```java\n", - "package com.ibm.org;\n", - "import A.B.C.D;\n", - "...\n", - "public class Foo {\n", - " // code comment\n", - " public void bar(){ \n", - " int a;\n", - " a = baz();\n", - " // do something\n", - " }\n", - " private int baz()\n", - " {\n", - " // do something\n", - " }\n", - " public String dummy (String a)\n", - " {\n", - " // do somthing\n", - " } \n", - "```\n", - "Let's say we want to generate a summary for method `bar`. To understand what it does, we add the callees of this method in the prompt, which in this case includes `baz`. We remove the other methods, imports, comments, etc. All of this can be achieved with a single call to CLDK's `sanitize_focal_class` API. In this process, we also use Treesitter to analyze the code. After creating the sanitized code, we call the previously defined `format_inst` method to create the LLM prompt and pass the prompt to `prompt_ollama` to generate the method summary." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "462ef7dceae367ad", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# For simplicity, we run the code summarization on a single class and method (this filter can be removed to run this code over the entire application)\n", - "target_class = \"org.apache.commons.cli.GnuParser\"\n", - "target_method = \"flatten(Options, String[], boolean)\"\n", - "\n", - "# Iterate over all classes in the application\n", - "for class_name in analysis.get_classes():\n", - " if class_name == target_class:\n", - " class_file_path = analysis.get_java_file(qualified_class_name=class_name)\n", - "\n", - " # Read code for the class\n", - " with open(class_file_path, \"r\") as f:\n", - " code_body = f.read()\n", - "\n", - " # Initialize treesitter utils for the class file content\n", - " tree_sitter_utils = cldk.tree_sitter_utils(source_code=code_body)\n", - " \n", - " # Iterate over all methods in class\n", - " for method in analysis.get_methods_in_class(qualified_class_name=class_name):\n", - " if method == target_method:\n", - " \n", - " # Get all the method details\n", - " method_details = analysis.get_method(qualified_class_name=class_name,\n", - " qualified_method_name=method)\n", - " \n", - " # Sanitize the class for analysis with respect to the target method\n", - " sanitized_class = tree_sitter_utils.sanitize_focal_class(method_details.declaration)\n", - " \n", - " # Format the instruction for the given target method and class\n", - " instruction = format_inst(\n", - " code=sanitized_class,\n", - " focal_method=method_details.declaration,\n", - " focal_class=class_name.split(\".\")[-1],\n", - " language=\"java\"\n", - " )\n", - " \n", - " print(f\"Instruction:\\n{instruction}\\n\")\n", - " print(f\"Generating code summary ...\\n\")\n", - " \n", - " # Prompt the local model on Ollama\n", - " llm_output = prompt_ollama(message=instruction)\n", - " \n", - " # Print the LLM output\n", - " print(f\"LLM Output:\\n{llm_output}\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/examples/java/notebook/generate_unit_tests.ipynb b/docs/examples/java/notebook/generate_unit_tests.ipynb deleted file mode 100644 index 57cb7b06..00000000 --- a/docs/examples/java/notebook/generate_unit_tests.ipynb +++ /dev/null @@ -1,373 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "428dbbfa206f5417", - "metadata": { - "collapsed": false - }, - "source": [ - "# Using CLDK to generate JUnit tests\n", - "\n", - "In this tutorial, we will use CLDK to implement a simple unit test generator for Java. You'll explore some of the benefits of using CLDK to perform quick and easy program analysis and build an LLM-based test generator. By the end of this tutorial, you will have implemented such a tool and generated a JUnit test case for a Java application.\n", - "\n", - "Specifically, you will learn how to perform the following tasks on the application under test to create LLM prompts for test generation:\n", - "\n", - "1. Create a new instance of the CLDK class.\n", - "2. Create an analysis object for the Java application under test.\n", - "3. Iterate over all files in the application.\n", - "4. Iterate over all classes in a file.\n", - "5. Iterate over all methods in a class.\n", - "6. Get the code body of a method.\n", - "7. Get the constructors of a class.\n", - "\n", - "\n", - "We will write a couple of helper methods to (1) format the LLM instruction for generating test cases for a given focal method (i.e., method under test) and (2) prompt the LLM via Ollama. We will then use CLDK to go through an application and generate unit test cases for the target method." - ] - }, - { - "cell_type": "markdown", - "id": "f619a9379b9dd006", - "metadata": { - "collapsed": false - }, - "source": [ - "## Prequisites\n", - "\n", - "Before we get started, let's make sure you have the following installed:\n", - "\n", - "1. Python 3.11 or later (you can use [pyenv](https://github.com/pyenv/pyenv) to install Python)\n", - "2. Java 11 or later (you can use [SDKMAN!](https://sdkman.io) to instal Java)\n", - "3. Ollama 0.3.4 or later (you can get Ollama here: [Ollama download](https://ollama.com/download))\n", - "\n", - "We will use Ollama to spin up a local [Granite code model](https://ollama.com/library/granite-code), which will serve as our LLM for this turorial." - ] - }, - { - "cell_type": "markdown", - "id": "3485879a7733bcba", - "metadata": { - "collapsed": false - }, - "source": [ - "### Download Granite code model\n", - "\n", - "After starting the Ollama server, please download the latest version of the Granite code 8b-instruct model by running the following command. There are other Granite code models available, but for this tutorial, we will use Granite code 8b-instruct. If you prefer to use a different Granite code model, you can replace `8b-instruct` with the tag of another version (see [Granite code tags](https://ollama.com/library/granite-code/tags))." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "670f2b23", - "metadata": {}, - "outputs": [], - "source": [ - "%%bash\n", - "ollama pull granite-code:8b-instruct" - ] - }, - { - "cell_type": "markdown", - "id": "02d5bbfa", - "metadata": {}, - "source": [ - " Let's make sure the model is downloaded by running the following command:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e3410ce4d0afa788", - "metadata": { - "ExecuteTime": { - "end_time": "2024-08-28T23:49:03.488152Z", - "start_time": "2024-08-28T23:49:03.424389Z" - }, - "collapsed": false - }, - "outputs": [], - "source": [ - "%%bash\n", - "ollama run granite-code:8b-instruct \\\"Write a python function to print 'Hello, World!'\\\"" - ] - }, - { - "cell_type": "markdown", - "id": "d8c0224c3c4ecf4d", - "metadata": { - "collapsed": false - }, - "source": [ - "### Install Ollama Python SDK" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5539b5251aee5642", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "pip install ollama" - ] - }, - { - "cell_type": "markdown", - "id": "cea573e625257581", - "metadata": { - "collapsed": false - }, - "source": [ - "### Install CLDK\n", - "CLDK is avaliable at https://github.com/IBM/codellm-devkit. You can install it by running the following command:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "eeb38b312427329d", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "pip install git+https://github.com/IBM/codellm-devkit.git" - ] - }, - { - "cell_type": "markdown", - "id": "ca7682c71d844b68", - "metadata": { - "collapsed": false - }, - "source": [ - "### Get the sample Java application\n", - "For this tutorial, we will use [Apache Commons CLI](https://github.com/apache/commons-cli) as the Java application under test. You can download the source code to a temporary directory by running the following command:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a4d08ca64b9dbccb", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "%%bash\n", - "wget https://github.com/apache/commons-cli/archive/refs/tags/rel/commons-cli-1.7.0.zip -O /tmp/commons-cli-1.7.0.zip && unzip -o /tmp/commons-cli-1.7.0.zip -d /tmp" - ] - }, - { - "cell_type": "markdown", - "id": "51d30f3eb726afc0", - "metadata": { - "collapsed": false - }, - "source": [ - "The project will be extracted to `/tmp/commons-cli-rel-commons-cli-1.7.0`.\n", - "" - ] - }, - { - "cell_type": "markdown", - "id": "98e69eb0bccedfc9", - "metadata": { - "collapsed": false - }, - "source": [ - "## Build a JUnit test generator using CLDK and Granite Code Model\n", - "\n", - "Now that we have all the prerequisites installed, let's start building a JUnit test generator using CLDK and the Granite Code Instruct Model.\n", - "\n", - "Generating unit tests for code is a tedious task and developers often have to put in significant effort in writing good test cases. There are various tools available for automated test generation, such as EvoSuite, which uses evolutionary algorithms to generate unit test cases for Java. However, the generated test cases are not natural and often developers do not prefer to add them to their test suites. LLMs, having been trained with developer-written code, have a better affinity towards generating more natural code---code that is more readable, comprehensible, and maintainable. In this excercise, we will show how we can leverage LLMs to generate test cases with the help of CLDK. \n", - "\n", - "For simplicity, we will cover certain aspects of test generation and provide some context information to the LLM to help it create usable test cases. In this exercise, we will generate a unit test for a non-private method from a Java class and provide the focal method body and the signature of all the constructors of the class so that LLM can understand how to create an object of the focal class during the setup phase of the tests.\n", - "\n", - "\n", - "Step 1: Import the required modules." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b3d2498ae092fcc", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "import ollama\n", - "from cldk import CLDK\n", - "from cldk.analysis import AnalysisLevel" - ] - }, - { - "cell_type": "markdown", - "id": "67eb24b29826d730", - "metadata": { - "collapsed": false - }, - "source": [ - "Step 2: Define a function for creating the LLM prompt, which instructs the LLM to generate unit tests cases and includes signatures of relevant constructors and the body of the focal method." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d7bc9bbaa917df24", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "def format_inst(focal_method_body, focal_method, focal_class, constructor_signatures, language):\n", - " \"\"\"\n", - " Format the LLM instruction for the given focal method and class.\n", - " \"\"\"\n", - " inst = f\"Question: Can you generate junit tests with @Test annotation for the method `{focal_method}` in the class `{focal_class}` below. Only generate the test and no description.\\n\"\n", - " inst += 'Use the constructor signatures to form the object if the method is not static. Generate the code under ``` code block.'\n", - " inst += \"\\n\"\n", - " inst += f\"```{language}\\n\"\n", - " inst += f\"public class {focal_class} \" + \"{\\n\"\n", - " inst += f\"{constructor_signatures}\\n\"\n", - " inst += f\"{focal_method_body} \\n\" \n", - " inst += \"}\"\n", - " inst += \"```\\n\"\n", - " inst += \"Answer:\\n\"\n", - " return inst" - ] - }, - { - "cell_type": "markdown", - "id": "ae9ceb150f5efa92", - "metadata": { - "collapsed": false - }, - "source": [ - "Step 3: Define a function to call the LLM (in this case, Granite code 8b-instruct) using Ollama." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "52634feae7374599", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "def prompt_ollama(message: str, model_id: str = \"granite-code:8b-instruct\") -> str:\n", - " \"\"\"Prompt local model on Ollama\"\"\"\n", - " response_object = ollama.generate(model=model_id, prompt=message, options={\"temperature\":0.2})\n", - " return response_object[\"response\"]" - ] - }, - { - "cell_type": "markdown", - "id": "308c3325116b87d4", - "metadata": { - "collapsed": false - }, - "source": [ - "Step 4: Collect the relevant information for the focal method and prompt the LLM. To do this, we go through all the classes in the application, and for each class, we collect the signatures of its constructors. If a class has no constructors, we add the signature of the default constructor. Then, we go through each non-private method of the class and formulate the prompt using the constructor and the method information. Finally, we use the prompt to call LLM to generate test cases and get the LLM response." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "65c9558e4de65a52", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Create an instance of CLDK for Java analysis\n", - "cldk = CLDK(language=\"java\")\n", - "\n", - "# Create an analysis object for the Java application. Provide the application path.\n", - "analysis = cldk.analysis(project_path=\"/tmp/commons-cli-rel-commons-cli-1.7.0\", analysis_level=AnalysisLevel.symbol_table)\n", - "\n", - "# For simplicity, we run the test generation on a single focal class and method (this filter can be removed to run this code over the entire application)\n", - "focal_class = \"org.apache.commons.cli.GnuParser\"\n", - "focal_method = \"flatten(Options, String[], boolean)\"\n", - "\n", - "# Go through all the classes in the application\n", - "for class_name in analysis.get_classes():\n", - "\n", - " if class_name == focal_class:\n", - " class_details = analysis.get_class(qualified_class_name=class_name)\n", - " focal_class_name = class_name.split(\".\")[-1]\n", - "\n", - " # Generate test cases for non-interface and non-abstract classes\n", - " if not class_details.is_interface and \"abstract\" not in class_details.modifiers:\n", - " \n", - " # Get all constructor signatures\n", - " constructor_signatures = \"\"\n", - " \n", - " for method in analysis.get_methods_in_class(qualified_class_name=class_name):\n", - " method_details = analysis.get_method(qualified_class_name=class_name, qualified_method_name=method)\n", - " \n", - " if method_details.is_constructor:\n", - " constructor_signatures += method_details.signature + '\\n'\n", - " \n", - " # If no constructor present, then add the signature of the default constructor\n", - " if constructor_signatures == \"\":\n", - " constructor_signatures = f\"public {focal_class_name}() \" + \"{}\"\n", - " \n", - " # Go through all the methods in the class\n", - " for method in analysis.get_methods_in_class(qualified_class_name=class_name):\n", - " \n", - " if method == focal_method:\n", - " # Get the method details\n", - " method_details = analysis.get_method(qualified_class_name=class_name, qualified_method_name=method)\n", - " \n", - " # Generate test cases for non-private methods\n", - " if \"private\" not in method_details.modifiers and not method_details.is_constructor:\n", - " \n", - " # Gather all the information needed for the prompt, which are focal method body, focal method name, focal class name, and constructor signature\n", - " prompt = format_inst(\n", - " focal_method_body=method_details.declaration+method_details.code,\n", - " focal_method=method.split(\"(\")[0],\n", - " focal_class=focal_class_name,\n", - " constructor_signatures=constructor_signatures,\n", - " language=\"java\"\n", - " )\n", - " \n", - " # Print the instruction\n", - " print(f\"Instruction:\\n{prompt}\\n\")\n", - " print(f\"Generating test case ...\\n\")\n", - " \n", - " # Prompt the local model on Ollama\n", - " llm_output = prompt_ollama(message=prompt)\n", - " \n", - " # Print the LLM output\n", - " print(f\"LLM Output:\\n{llm_output}\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/examples/java/notebook/validating_code_translation.ipynb b/docs/examples/java/notebook/validating_code_translation.ipynb deleted file mode 100644 index 9abc5d8f..00000000 --- a/docs/examples/java/notebook/validating_code_translation.ipynb +++ /dev/null @@ -1,353 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "fcac940432e10687", - "metadata": { - "collapsed": false - }, - "source": [ - "# Using CLDK to validate code translation\n", - "\n", - "In this tutorial, we will use CLDK to translate code and check properties of the translated code. You'll explore some of the benefits of using CLDK to perform quick and easy program analysis for this task. By the end of this tutorial, you will have implemented a simple Java-to-Python code translator that also performs light-weight property checking on the translated code.\n", - "\n", - "Specifically, you will learn how to perform the following tasks on a Java application to create LLM prompts for code translation and checking the translated code:\n", - "\n", - "1. Create a new instance of the CLDK class.\n", - "2. Create an analysis object for the target Java application.\n", - "3. Iterate over all files in the application.\n", - "4. Iterate over all classes in a file.\n", - "5. Sanitize the class for prompting the LLM.\n", - "6. Create treesitter-based Java and Python analysis objects\n", - "\n", - "We will write a couple of helper methods to (1) format the LLM instruction for translating a Java class to Python and (2) prompt the LLM via Ollama. We will then use CLDK to analyze code and get context information for translating code and also checking properties of the translated code." - ] - }, - { - "cell_type": "markdown", - "id": "e9411e761b32fcbc", - "metadata": { - "collapsed": false - }, - "source": [ - "## Prequisites\n", - "\n", - "Before we get started, let's make sure you have the following installed:\n", - "\n", - "1. Python 3.11 or later (you can use [pyenv](https://github.com/pyenv/pyenv) to install Python)\n", - "2. Java 11 or later (you can use [SDKMAN!](https://sdkman.io) to instal Java)\n", - "3. Ollama 0.3.4 or later (you can get Ollama here: [Ollama download](https://ollama.com/download))\n", - "\n", - "We will use Ollama to spin up a local [Granite code model](https://ollama.com/library/granite-code), which will serve as our LLM for this turorial." - ] - }, - { - "cell_type": "markdown", - "id": "5c7c3ccb", - "metadata": {}, - "source": [ - "### Download Granite code model\n", - "\n", - "After starting the Ollama server, please download the latest version of the Granite code 8b-instruct model by running the following command. There are other Granite code models available, but for this tutorial, we will use Granite code 8b-instruct. If you prefer to use a different Granite code model, you can replace `8b-instruct` with the tag of another version (see [Granite code tags](https://ollama.com/library/granite-code/tags))." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "db17a05f", - "metadata": {}, - "outputs": [], - "source": [ - "%%bash\n", - "ollama pull granite-code:8b-instruct" - ] - }, - { - "cell_type": "markdown", - "id": "930b603c7eb3cd55", - "metadata": { - "collapsed": false - }, - "source": [ - " Let's make sure the model is downloaded by running the following command:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "635bb847107749f8", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "%%bash\n", - "ollama run granite-code:8b-instruct \\\"Write a python function to print 'Hello, World!'" - ] - }, - { - "cell_type": "markdown", - "id": "a6015cb7728debca", - "metadata": { - "collapsed": false - }, - "source": [ - "### Install Ollama Python SDK" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9dceb297bbab0ab3", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "pip install ollama" - ] - }, - { - "cell_type": "markdown", - "id": "e06325ad56287f0b", - "metadata": { - "collapsed": false - }, - "source": [ - "### Install CLDK\n", - "CLDK is avaliable at https://github.com/IBM/codellm-devkit. You can install it by running the following command:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d6dc34436d0f2d15", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "pip install git+https://github.com/IBM/codellm-devkit.git" - ] - }, - { - "cell_type": "markdown", - "id": "6e4ef425987e53ed", - "metadata": { - "collapsed": false - }, - "source": [ - "### Get the sample Java application\n", - "For this tutorial, we will use [Apache Commons CLI](https://github.com/apache/commons-cli) as the Java application under test. You can download the source code to a temporary directory by running the following command:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "98ddaf361bb8c025", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "%%bash\n", - "wget https://github.com/apache/commons-cli/archive/refs/tags/rel/commons-cli-1.7.0.zip -O /tmp/commons-cli-1.7.0.zip && unzip -o /tmp/commons-cli-1.7.0.zip -d /tmp" - ] - }, - { - "cell_type": "markdown", - "id": "7a963481d3c7d083", - "metadata": { - "collapsed": false - }, - "source": [ - "The project will now be extracted to `/tmp/commons-cli-rel-commons-cli-1.7.0`.\n", - "" - ] - }, - { - "cell_type": "markdown", - "id": "47af1410ab0a3b4d", - "metadata": { - "collapsed": false - }, - "source": [ - "## Translate Jave code to Python and build a light-weight property checker (for translation validation)\n", - "Code translation aims to convert source code from one programming language to another. Given the promising abilities of large language models (LLMs) in code synthesis, researchers are exploring their potential to automate code translation. In our recent work, [presented at ICSE'24](https://dl.acm.org/doi/10.1145/3597503.3639226), we found that LLM-based code translation is very promising. In this example, we will walk through the steps of translating a Java class to Python and checking various properties of translated code (e.g., number of methods, number of fields, formal arguments, etc.) as a simple form of translation validation.\n", - "\n", - "Step 1: Import the required modules" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "47a78f61a53b2b55", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "from cldk.analysis.python.treesitter import PythonSitter\n", - "from cldk.analysis.java.treesitter import JavaSitter\n", - "import ollama\n", - "from cldk import CLDK\n", - "from cldk.analysis import AnalysisLevel" - ] - }, - { - "cell_type": "markdown", - "id": "c6d2f67e1a17cf1", - "metadata": { - "collapsed": false - }, - "source": [ - "Step 2: Define a function for creating the LLM prompt, which instructs the LLM to translate a Java class to Python and includes the body of the Java class after removing all the comments and import statements." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "dc1ec56e92e90c15", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "def format_inst(code, focal_class, language):\n", - " \"\"\"\n", - " Format the instruction for the given focal method and class.\n", - " \"\"\"\n", - " inst = f\"Question: Can you translate the Java class `{focal_class}` below to Python and generate under code block (```)?\\n\"\n", - "\n", - " inst += \"\\n\"\n", - " inst += f\"```{language}\\n\"\n", - " inst += code\n", - " inst += \"```\" if code.endswith(\"\\n\") else \"\\n```\"\n", - " inst += \"\\n\"\n", - " return inst" - ] - }, - { - "cell_type": "markdown", - "id": "1239041c3315e5e5", - "metadata": { - "collapsed": false - }, - "source": [ - "Step 3: Define a function to call the LLM (in this case, Granite code 8b-instruct) using Ollama." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1c86224032a6eb70", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "def prompt_ollama(message: str, model_id: str = \"granite-code:8b-instruct\") -> str:\n", - " \"\"\"Prompt local model on Ollama\"\"\"\n", - " response_object = ollama.generate(model=model_id, prompt=message)\n", - " return response_object[\"response\"]" - ] - }, - { - "cell_type": "markdown", - "id": "518efea0d8c4d307", - "metadata": { - "collapsed": false - }, - "source": [ - "Step 4: Translate a class of the Java application to Python and check for two properties of the translated code: number of translated method and number of translated fields. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "fe3be3de6790f7b3", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Create an instance of CLDK for Java analysis\n", - "cldk = CLDK(language=\"java\")\n", - "\n", - "# Create an analysis object for the Java application, providing the application path\n", - "analysis = cldk.analysis(project_path=\"/tmp/commons-cli-rel-commons-cli-1.7.0\", analysis_level=AnalysisLevel.symbol_table)\n", - "\n", - "# For simplicity, we run the code translation on a single class(this filter can be removed to run this code over the entire application)\n", - "target_class = \"org.apache.commons.cli.GnuParser\"\n", - "\n", - "# Go through all the classes in the application\n", - "for class_name in analysis.get_classes():\n", - " \n", - " if class_name == target_class:\n", - " # Get the location of the Java class\n", - " class_path = analysis.get_java_file(qualified_class_name=class_name)\n", - " \n", - " # Read the file content\n", - " if not class_path:\n", - " class_body = \"\"\n", - " with open(class_path, \"r\", encoding=\"utf-8\", errors=\"ignore\") as f:\n", - " class_body = f.read()\n", - " \n", - " # Sanitize the file content by removing comments\n", - " sanitized_class = JavaSitter().remove_all_comments(source_code=class_body)\n", - "\n", - " # Create prompt for translating sanitized Java class to Python\n", - " inst = format_inst(code=sanitized_class, language=\"java\", focal_class=class_name.split(\".\")[-1])\n", - "\n", - " print(f\"Instruction:\\n{inst}\\n\")\n", - " print(f\"Translating Java code to Python . . .\\n\")\n", - "\n", - " # Prompt the local model on Ollama\n", - " translated_code = prompt_ollama(message=inst)\n", - " \n", - " # Print translated code\n", - " print(f\"Translated Python code: {translated_code}\\n\")\n", - "\n", - " # Create python sitter instance for analyzing translated Python code\n", - " py_cldk = PythonSitter()\n", - "\n", - " # Compute methods, function, and field counts for translated code\n", - " all_methods = py_cldk.get_all_methods(module=translated_code)\n", - " all_functions = py_cldk.get_all_functions(module=translated_code)\n", - " all_fields = py_cldk.get_all_fields(module=translated_code)\n", - " \n", - " # Check counts against method and field counts for Java code\n", - " if len(all_methods) + len(all_functions) != len(analysis.get_methods_in_class(qualified_class_name=class_name)):\n", - " print(f'Number of translated method not matching in class {class_name}')\n", - " else:\n", - " print(f'Number of translated method in class {class_name} is {len(all_methods)}')\n", - " if all_fields is not None:\n", - " if len(all_fields) != len(analysis.get_class(qualified_class_name=class_name).field_declarations):\n", - " print(f'Number of translated field not matching in class {class_name}')\n", - " else:\n", - " print(f'Number of translated fields in class {class_name} is {len(all_fields)}')\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/examples/java/python/code_summarization.py b/docs/examples/java/python/code_summarization.py deleted file mode 100644 index bc00eda6..00000000 --- a/docs/examples/java/python/code_summarization.py +++ /dev/null @@ -1,66 +0,0 @@ -import os -from pathlib import Path -import ollama -from cldk import CLDK - - -def format_inst(code, focal_method, focal_class, language): - """ - Format the instruction for the given focal method and class. - """ - inst = f"Question: Can you write a brief summary for the method `{focal_method}` in the class `{focal_class}` below?\n" - - inst += "\n" - inst += f"```{language}\n" - inst += code - inst += "```" if code.endswith("\n") else "\n```" - inst += "\n" - return inst - - -def prompt_ollama(message: str, model_id: str = "granite-code:8b-instruct") -> str: - """Prompt local model on Ollama""" - response_object = ollama.generate(model=model_id, prompt=message) - return response_object["response"] - - -if __name__ == "__main__": - # (1) Create a new instance of the CLDK class - cldk = CLDK(language="java") - - # (2) Create an analysis object over the java application - analysis = cldk.analysis(project_path="JAVA_APP_PATH") - - # (3) Iterate over all the files in the project - for file_path, class_file in analysis.get_symbol_table().items(): - class_file_path = Path(file_path).absolute().resolve() - # (4) Iterate over all the classes in the file - for type_name, type_declaration in class_file.type_declarations.items(): - # (5) Iterate over all the methods in the class - for method in type_declaration.callable_declarations.values(): - # (6) Get code body of the method - code_body = class_file_path.read_text() - - # (7) Initialize the treesitter utils for the class file content - tree_sitter_utils = cldk.tree_sitter_utils(source_code=code_body) - - # (8) Sanitize the class for analysis - sanitized_class = tree_sitter_utils.sanitize_focal_class(method.declaration) - - # (9) Format the instruction for the given focal method and class - instruction = format_inst( - code=sanitized_class, - focal_method=method.declaration, - focal_class=type_name, - language="java" - ) - - # (10) Prompt the local model on Ollama - llm_output = prompt_ollama( - message=instruction, - model_id="granite-code:20b-instruct", - ) - - # (11) Print the instruction and LLM output - print(f"Instruction:\n{instruction}") - print(f"LLM Output:\n{llm_output}") \ No newline at end of file diff --git a/docs/examples/python/code_summarization.ipynb b/docs/examples/python/code_summarization.ipynb deleted file mode 100644 index 29cd7437..00000000 --- a/docs/examples/python/code_summarization.ipynb +++ /dev/null @@ -1,35 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "initial_id", - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/examples/python/generate_unit_tests.ipynb b/docs/examples/python/generate_unit_tests.ipynb deleted file mode 100644 index 29cd7437..00000000 --- a/docs/examples/python/generate_unit_tests.ipynb +++ /dev/null @@ -1,35 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "initial_id", - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/examples/python/validating_code_translation.ipynb b/docs/examples/python/validating_code_translation.ipynb deleted file mode 100644 index 29cd7437..00000000 --- a/docs/examples/python/validating_code_translation.ipynb +++ /dev/null @@ -1,35 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "initial_id", - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 00000000..56578797 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,139 @@ +--- +icon: cldk/layers-20 +hide: + - toc +--- + +![CLDK](./assets/images/cldk-light.png#only-light) +![CLDK](./assets/images/cldk-dark.png#only-dark) + + +--- + +[Codellm-Devkit](https://cldk.info) (aka. CLDK) is a multilingual program analysis framework that bridges the gap between traditional static analysis tools and Large Language Models (LLMs) specialized for code (CodeLLMs). CLDK simplifies multi-language code analysis by providing a unified Python library that integrates outputs from various analysis tools and prepares them for effective use by CodeLLMs. + +CLDK streamlines the process of transforming raw code into actionable insights, enabling robust analysis pipelines and seamless integration with tools like WALA, Tree-sitter, LLVM, and CodeQL. + +--- + +# :cldk-layers-20: Developer Guide + +Get started with Codellm-Devkit: + +
+ +- [:cldk-flame-16: Quickstart](quickstart.md) + + --- + + Run through an example to quickly set up CLDK and perform multilingual code analysis. + +- [:cldk-developer-16: Installing `cldk`](installing.md) + + --- + + Install and initialize the `cldk` Python package to start analyzing your codebases. + +- [:cldk-area-of-interest-16: Core Concepts](core-concepts/index.md) + + --- + + Explore the key components of CLDK—including data models and analysis backends—that simplify code analysis workflows. + +- [:cldk-manual-16: API Reference](reference/index.md) + + --- + + Developer-focused, detailed API reference documentation for `cldk`. + +
+--- + +--- + +# :cldk-learning-20: Use Cases + +Learn how to leverage CLDK for various code analysis tasks: + +
+ +- [:cldk-test-suite-16: Java Unit Test Generation](usecases/java/unit_test.md) + + --- + + Understand how to use CLDK to generate unit tests for Java projects. + +- [:cldk-text-summarization-16: Summarize Python Projects](usecases/python/explain.md) + + --- + + Learn how to summarize Python projects using CLDK. + +
+--- + +# :cldk-rocket-20: Advanced Topics + +Dive deeper into advanced topics + +
+ +- [:cldk-rocket-16: Extending CLDK](advanced/extending.md) + + --- + + Learn how to extend CLDK to a new language. + +- [:cldk-workflow-16: Adding a New Analysis Backend](advanced/adding_backend.md) + + --- + + Learn how to add a new analysis backend to CLDK. + +
+--- + +## Why Codellm-Devkit? + +!!! tip inline "TL;DR" + + CLDK unifies traditional program analysis tools with CodeLLMs, streamlining multi-language code analysis into a single, cohesive framework. + +Current code analysis often involves juggling multiple disjointed tools and workflows. With Codellm-Devkit, you can: + +- **Unified**: Integrate various analysis tools and CodeLLMs into one cohesive framework. +- **Extensible**: Easily add support for new tools and evolving LLM platforms. +- **Streamlined**: Simplify the transformation of raw code into structured, actionable insights. + +By providing a consistent and extensible interface, CLDK reduces friction and accelerates the development of robust analysis pipelines. + +--- + +## Contact + +For any questions, feedback, or suggestions, please contact the authors: + +| Name | Email | +| -------------- | ---------------------------------------- | +| Rahul Krishna | [i.m.ralk@gmail.com](mailto:imralk+oss@gmail.com) | +| Rangeet Pan | [rangeet.pan@ibm.com](mailto:rangeet.pan@gmail.com) | +| Saurabh Sihna | [sinhas@us.ibm.com](mailto:sinhas@us.ibm.com) | \ No newline at end of file diff --git a/docs/installing.md b/docs/installing.md new file mode 100644 index 00000000..46ba2a27 --- /dev/null +++ b/docs/installing.md @@ -0,0 +1,276 @@ +--- +icon: cldk/developer-16 +hide: + - toc +--- + +# :cldk-developer-16: Installing `cldk` + +[`CLDK`](https://github.com/IBM/codellm-devkit) is a Python SDK [hosted on PyPI](https://pypi.org/project/cldk/) and can be installed using your preferred Python package manager. + +## Installation + +The Python SDK can be installed directly from +[PyPI](https://pypi.org/project/cldk/) using any Python package manager such as [pip](https://pypi.org/project/pip/), [poetry](https://python-poetry.org/), or [uv](https://docs.astral.sh/uv/): + +=== "`pip`" + + ```shell + pip install cldk + ``` + +=== "`poetry`" + + ```shell + poetry add cldk + ``` + +=== "`uv`" + + ```shell + uv add cldk + ``` + +## Programming Language Specific Dependencies + + +`CLDK` supports program analysis for multiple languages and requires additional dependencies to support specific languages. The following table lists the additional dependencies required for each language: + +=== "Python Analysis" + + For Python analysis as well as to use the CLDK Python SDK, you will need to install the Python programming language with version 3.11 or later. We recommend using a package manager like [pyenv](https://github.com/pyenv/pyenv) to install and manage Python dependencies. + +=== "Java Analysis" + + For Java analysis, CLDK relies on a companion project called [`codeanalyzer`](https://github.com/ibm/codenet-minerva-code-analyzer). `codeanalyzer` is a java project and you will therefore need to install the Java Development Kit (JDK) with java version 11 or later. + + You can use a package manager like [SDKMAN](https://sdkman.io/) to install the JDK. First, install SDKMAN by running the following command: + + - To install `SDKMan`, open your terminal and enter the following command and follow the instructions to complete the installation: + + ```bash + curl -s "https://get.sdkman.io" | bash + ``` + + - Open a new terminal or source the SDKMan! scripts: + + ```bash + source "$HOME/.sdkman/bin/sdkman-init.sh" + ``` + + Next, install java 11 or later using SDKMAN: + + - You can list all available java versions with: + + ```bash + sdk list java | grep sem + ``` + + You should see something like this: + ```bash + Semeru | | 21.0.5 | sem | | 21.0.5-sem + | | 17.0.13 | sem | | 17.0.13-sem + | | 11.0.25 | sem | | 11.0.25-sem + | | 8.0.432 | sem | | 8.0.432-sem + ``` + + - Install Java 11 or above (we'll go with `11.0.25-sem`): + + ```bash + sdk install java 11.0.25-sem + ``` + + - Set Java 11 as the current (or default) Java version: + + ```bash + sdk use java 11.0.25-sem + # If want to default to java 11 for all sessions, use the following command instead: + # sdk default java 11.0.25-sem + ``` + + - Verify the installation: + + ```bash + java -version + ``` + + This should output the version of the installed Java. + + ```bash + openjdk 11.0.25 2024-10-15 + IBM Semeru Runtime Open Edition 11.0.25.0 (build 11.0.25+9) + Eclipse OpenJ9 VM 11.0.25.0 (build openj9-0.48.0, JRE 11 Linux amd64-64-Bit Compressed References 20241107_1233 (JIT enabled, AOT enabled) + OpenJ9 - 1d5831436e + OMR - d10a4d553 + JCL - edded3f65c based on jdk-11.0.25+9) + ``` + + Finally, to enable building Java projects automatically, you will need to install the `maven` build tool. You can install `maven` using a package manager like `SDKMAN`: + + - Install Maven: + + ```bash + sdk install maven + ``` + + - Make sure `mvn` command is available in the `PATH`. If `mvn` is not in your path, add the following to your `~/.zshrc`, `~/.bashrc` or `~/.bash_profile` file: + + ```bash + export PATH="$HOME/.sdkman/candidates/maven/current/bin:$PATH" + ``` + Then, source the file to apply the changes: + + ```bash + source ~/.zshrc # or ~/.bashrc or ~/.bash_profile + ``` + + - Verify the installation: + + ```bash + mvn -version + ``` + This should output the version of the installed Maven. + + +=== "C/C++ Analysis" + + CLDK uses LLVM and Clang Python bindings to analyze C/C++ code. The project requires specific versions: + + - libclang >= 18.1.1 + - clang >= 17.0.6 + + You can install LLVM and Clang using various package managers depending on your operating system. + + === "macOS" + + - Install LLVM 18 using Homebrew + ```shell + brew install llvm@18 + ``` + + - Add LLVM to your PATH (add this to your ~/.zshrc or ~/.bash_profile) + ```shell + export PATH="/usr/local/opt/llvm@18/bin:$PATH" + export LDFLAGS="-L/usr/local/opt/llvm@18/lib" + export CPPFLAGS="-I/usr/local/opt/llvm@18/include" + ``` + + - Verify installation + ```shell + clang --version + ``` + This should output the version of the installed LLVM and Clang. + ```shell + Apple clang version 18.1.1 + Target: x86_64-apple-darwin21.6.0 + Thread model: posix + InstalledDir: /usr/local/opt/llvm@18/bin + ``` + + === "Ubuntu/Debian" + + - Add LLVM repository and install required packages + ```shell + wget https://apt.llvm.org/llvm.sh + chmod +x llvm.sh + sudo ./llvm.sh 18 + sudo apt-get install llvm-18 llvm-18-dev clang-18 libclang-18-dev + ``` + + - Create symlinks (optional but recommended) + ```shell + sudo ln -s /usr/bin/clang-18 /usr/bin/clang + sudo ln -s /usr/bin/llvm-config-18 /usr/bin/llvm-config + ``` + + - Verify installation + ```shell + clang --version + ``` + This should output the version of the installed LLVM and Clang. + ```shell + Ubuntu clang version 18.1.1 + Target: x86_64-pc-linux-gnu + Thread model: posix + InstalledDir: /usr/bin + ``` + + === "Red Hat-based Systems (Fedora/CentOS/RHEL)" + + - Install LLVM 18 and development packages + ```shell + # On Fedora + sudo dnf install llvm18 llvm18-devel clang18 clang18-devel + + # On CentOS/RHEL (if needed) + sudo yum install epel-release + sudo yum install llvm18 llvm18-devel clang18 clang18-devel + ``` + + - Create symlinks (optional but recommended) + ```shell + sudo ln -s /usr/bin/clang-18 /usr/bin/clang + sudo ln -s /usr/bin/llvm-config-18 /usr/bin/llvm-config + ``` + + - Verify installation + ```shell + clang --version + ``` + This should output the version of the installed LLVM and Clang. + ```shell + clang version 18.1.8 (Fedora 18.1.8-5.fc41) + Target: x86_64-redhat-linux-gnu + Thread model: posix + InstalledDir: /usr/bin + Configuration file: /etc/clang18/x86_64-redhat-linux-gnu-clang.cfg + ``` + + +## Additional Development Tools + +Some operating systems may require additional development tools: + +=== "macOS" + + - Make sure you have the Xcode Command Line Tools installed. You can install them using the following command: + + ```shell + xcode-select --install + ``` + + - Additionally, you may need to install the following packages using Homebrew: + + ```shell + brew install openssl readline sqlite3 xz zlib tcl-tk libffi + ``` + +=== "Ubuntu/Debian" + + - Install the required development tools using the following command: + + ```shell + sudo apt-get install build-essential python3-dev libssl-dev zlib1g-dev \ + libbz2-dev libreadline-dev libsqlite3-dev curl git \ + libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev + ``` + +=== "Red Hat-based Systems (Fedora/CentOS/RHEL)" + + - Install the required development tools using the following command: + + ```shell + sudo dnf group install c-development development-tools gcc make \ + patch zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel\ + openssl-devel tk-devel libffi-devel xz-devel + ``` + + + +## Supported Python Versions + +`CLDK` is compatible with Python versions 3.11 and later. The following table lists the supported Python versions and the corresponding `CLDK` versions: + +| :fontawesome-brands-python: Python Version | :cldk-logo-white: Compatible `cldk` Versions | +|-------------------------------------------------------------------|--------------------------------------------| +| 3.11 | ≥0.4.0 | diff --git a/docs/layouts/custom.yml b/docs/layouts/custom.yml new file mode 100644 index 00000000..f64aa1c3 --- /dev/null +++ b/docs/layouts/custom.yml @@ -0,0 +1,63 @@ +definitions: + - &page_title_with_site_name "{{ page.title }} - {{ config.site_name }}" + - &page_description "{% if (page.meta is defined and page.meta.description is defined) %}{{ page.meta.description }}{% else %}{{ config.site_description }}{% endif %}" + - &font_family "DM Sans" + - &color "white" + +tags: # adapted from mkdocs-material-insiders layouts/default.yml + og:type: website + og:title: *page_title_with_site_name + og:description: *page_description + og:image: "{{ image.url }}" + og:image:type: "{{ image.type }}" + og:image:width: "{{ image.width }}" + og:image:height: "{{ image.height }}" + og:url: "{{ page.canonical_url }}" + twitter:card: summary_large_image + twitter:title: *page_title_with_site_name + twitter:description: *page_description + twitter:image: "{{ image.url }}" + +size: { width: 1200, height: 630 } +layers: + - background: + color: "#452485" # darkened primary + - background: + image: docs/assets/images/card-background.png + + # + # the following blocks are adapted from mkdocs-material-insiders layouts/default.yml + # + + # Logo + - size: { width: 144, height: 144 } + offset: { x: 992, y: 64 } + icon: { value: cldk/logo-white, color: white } + + # Site name + - size: { width: 832, height: 42 } + offset: { x: 64, y: 64 } + typography: + content: "{{ config.site_name }}" + color: *color + font: { family: *font_family, style: Bold } + + # Page title + - size: { width: 832, height: 310 } + offset: { x: 62, y: 160 } + typography: + content: "{{ page.title | striptags }}" # strip out any HTML tags, e.g. + align: start + color: *color + line: { amount: 3, height: 1.25 } + font: { family: *font_family, style: Bold } + + # Page description + - size: { width: 832, height: 66 } + offset: { x: 64, y: 512 } + typography: + content: *page_description + align: start + color: *color + line: { amount: 2, height: 1.5 } + font: { family: Inter, style: Regular } diff --git a/docs/overrides/.icons/cldk/age-estimation-16.svg b/docs/overrides/.icons/cldk/age-estimation-16.svg new file mode 100644 index 00000000..207acda8 --- /dev/null +++ b/docs/overrides/.icons/cldk/age-estimation-16.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/age-estimation-20.svg b/docs/overrides/.icons/cldk/age-estimation-20.svg new file mode 100644 index 00000000..8a74d807 --- /dev/null +++ b/docs/overrides/.icons/cldk/age-estimation-20.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/apple-logo.svg b/docs/overrides/.icons/cldk/apple-logo.svg new file mode 100644 index 00000000..60ba0378 --- /dev/null +++ b/docs/overrides/.icons/cldk/apple-logo.svg @@ -0,0 +1,17 @@ + + + + + + + + + + \ No newline at end of file diff --git a/docs/overrides/.icons/cldk/archive-16.svg b/docs/overrides/.icons/cldk/archive-16.svg new file mode 100644 index 00000000..22cac405 --- /dev/null +++ b/docs/overrides/.icons/cldk/archive-16.svg @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/archive-20.svg b/docs/overrides/.icons/cldk/archive-20.svg new file mode 100644 index 00000000..1fa8cd76 --- /dev/null +++ b/docs/overrides/.icons/cldk/archive-20.svg @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/area-of-interest-16.svg b/docs/overrides/.icons/cldk/area-of-interest-16.svg new file mode 100644 index 00000000..e0d9b17f --- /dev/null +++ b/docs/overrides/.icons/cldk/area-of-interest-16.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/area-of-interest-20.svg b/docs/overrides/.icons/cldk/area-of-interest-20.svg new file mode 100644 index 00000000..45b70871 --- /dev/null +++ b/docs/overrides/.icons/cldk/area-of-interest-20.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/audio-workflow-16.svg b/docs/overrides/.icons/cldk/audio-workflow-16.svg new file mode 100644 index 00000000..32074964 --- /dev/null +++ b/docs/overrides/.icons/cldk/audio-workflow-16.svg @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/audio-workflow-20.svg b/docs/overrides/.icons/cldk/audio-workflow-20.svg new file mode 100644 index 00000000..acf045d3 --- /dev/null +++ b/docs/overrides/.icons/cldk/audio-workflow-20.svg @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/bulk-16.svg b/docs/overrides/.icons/cldk/bulk-16.svg new file mode 100644 index 00000000..dc5f8d5d --- /dev/null +++ b/docs/overrides/.icons/cldk/bulk-16.svg @@ -0,0 +1,3 @@ + + + diff --git a/docs/overrides/.icons/cldk/bulk-20.svg b/docs/overrides/.icons/cldk/bulk-20.svg new file mode 100644 index 00000000..abd61c10 --- /dev/null +++ b/docs/overrides/.icons/cldk/bulk-20.svg @@ -0,0 +1,3 @@ + + + diff --git a/docs/overrides/.icons/cldk/chat-16.svg b/docs/overrides/.icons/cldk/chat-16.svg new file mode 100644 index 00000000..0199c7da --- /dev/null +++ b/docs/overrides/.icons/cldk/chat-16.svg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/chat-20.svg b/docs/overrides/.icons/cldk/chat-20.svg new file mode 100644 index 00000000..d9bac8e1 --- /dev/null +++ b/docs/overrides/.icons/cldk/chat-20.svg @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/classification-16.svg b/docs/overrides/.icons/cldk/classification-16.svg new file mode 100644 index 00000000..1a46a16d --- /dev/null +++ b/docs/overrides/.icons/cldk/classification-16.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/classification-20.svg b/docs/overrides/.icons/cldk/classification-20.svg new file mode 100644 index 00000000..1d12a0e5 --- /dev/null +++ b/docs/overrides/.icons/cldk/classification-20.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/cloud-16.svg b/docs/overrides/.icons/cldk/cloud-16.svg new file mode 100644 index 00000000..ab9b5ceb --- /dev/null +++ b/docs/overrides/.icons/cldk/cloud-16.svg @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/cloud-20.svg b/docs/overrides/.icons/cldk/cloud-20.svg new file mode 100644 index 00000000..d54f91ea --- /dev/null +++ b/docs/overrides/.icons/cldk/cloud-20.svg @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/comparison-16.svg b/docs/overrides/.icons/cldk/comparison-16.svg new file mode 100644 index 00000000..d39fe3b7 --- /dev/null +++ b/docs/overrides/.icons/cldk/comparison-16.svg @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/comparison-20.svg b/docs/overrides/.icons/cldk/comparison-20.svg new file mode 100644 index 00000000..b23455a5 --- /dev/null +++ b/docs/overrides/.icons/cldk/comparison-20.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/cube-16.svg b/docs/overrides/.icons/cldk/cube-16.svg new file mode 100644 index 00000000..7c89b850 --- /dev/null +++ b/docs/overrides/.icons/cldk/cube-16.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/cube-20.svg b/docs/overrides/.icons/cldk/cube-20.svg new file mode 100644 index 00000000..db08d68c --- /dev/null +++ b/docs/overrides/.icons/cldk/cube-20.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/dark-mode-16.svg b/docs/overrides/.icons/cldk/dark-mode-16.svg new file mode 100644 index 00000000..6ab8a7e2 --- /dev/null +++ b/docs/overrides/.icons/cldk/dark-mode-16.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/docs/overrides/.icons/cldk/dark-mode-20.svg b/docs/overrides/.icons/cldk/dark-mode-20.svg new file mode 100644 index 00000000..f32aeec3 --- /dev/null +++ b/docs/overrides/.icons/cldk/dark-mode-20.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/docs/overrides/.icons/cldk/dataset-16.svg b/docs/overrides/.icons/cldk/dataset-16.svg new file mode 100644 index 00000000..0e686119 --- /dev/null +++ b/docs/overrides/.icons/cldk/dataset-16.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/dataset-20.svg b/docs/overrides/.icons/cldk/dataset-20.svg new file mode 100644 index 00000000..bb1f6f90 --- /dev/null +++ b/docs/overrides/.icons/cldk/dataset-20.svg @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/debian-svgrepo-com.svg b/docs/overrides/.icons/cldk/debian-svgrepo-com.svg new file mode 100644 index 00000000..d59f64ec --- /dev/null +++ b/docs/overrides/.icons/cldk/debian-svgrepo-com.svg @@ -0,0 +1,6 @@ + + + +debian + + \ No newline at end of file diff --git a/docs/overrides/.icons/cldk/detection-16.svg b/docs/overrides/.icons/cldk/detection-16.svg new file mode 100644 index 00000000..e4d0926a --- /dev/null +++ b/docs/overrides/.icons/cldk/detection-16.svg @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/detection-20.svg b/docs/overrides/.icons/cldk/detection-20.svg new file mode 100644 index 00000000..6b1a8a0a --- /dev/null +++ b/docs/overrides/.icons/cldk/detection-20.svg @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/developer-16.svg b/docs/overrides/.icons/cldk/developer-16.svg new file mode 100644 index 00000000..dfc99f2e --- /dev/null +++ b/docs/overrides/.icons/cldk/developer-16.svg @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/developer-20.svg b/docs/overrides/.icons/cldk/developer-20.svg new file mode 100644 index 00000000..643ea7c9 --- /dev/null +++ b/docs/overrides/.icons/cldk/developer-20.svg @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/diagram-tree-16.svg b/docs/overrides/.icons/cldk/diagram-tree-16.svg new file mode 100644 index 00000000..6cc342a4 --- /dev/null +++ b/docs/overrides/.icons/cldk/diagram-tree-16.svg @@ -0,0 +1,8 @@ + + + + + + + diff --git a/docs/overrides/.icons/cldk/diagram-tree-20.svg b/docs/overrides/.icons/cldk/diagram-tree-20.svg new file mode 100644 index 00000000..b3a908fc --- /dev/null +++ b/docs/overrides/.icons/cldk/diagram-tree-20.svg @@ -0,0 +1,8 @@ + + + + + + + diff --git a/docs/overrides/.icons/cldk/diarization-workflow-16.svg b/docs/overrides/.icons/cldk/diarization-workflow-16.svg new file mode 100644 index 00000000..0199c7da --- /dev/null +++ b/docs/overrides/.icons/cldk/diarization-workflow-16.svg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/diarization-workflow-20.svg b/docs/overrides/.icons/cldk/diarization-workflow-20.svg new file mode 100644 index 00000000..d9bac8e1 --- /dev/null +++ b/docs/overrides/.icons/cldk/diarization-workflow-20.svg @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/drive-time-16.svg b/docs/overrides/.icons/cldk/drive-time-16.svg new file mode 100644 index 00000000..75d6669d --- /dev/null +++ b/docs/overrides/.icons/cldk/drive-time-16.svg @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/drive-time-20.svg b/docs/overrides/.icons/cldk/drive-time-20.svg new file mode 100644 index 00000000..fd0c48a8 --- /dev/null +++ b/docs/overrides/.icons/cldk/drive-time-20.svg @@ -0,0 +1,18 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/external-link-16.svg b/docs/overrides/.icons/cldk/external-link-16.svg new file mode 100644 index 00000000..1f025723 --- /dev/null +++ b/docs/overrides/.icons/cldk/external-link-16.svg @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/external-link-20.svg b/docs/overrides/.icons/cldk/external-link-20.svg new file mode 100644 index 00000000..e815bd0b --- /dev/null +++ b/docs/overrides/.icons/cldk/external-link-20.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/fedora-svgrepo-com.svg b/docs/overrides/.icons/cldk/fedora-svgrepo-com.svg new file mode 100644 index 00000000..e278ee08 --- /dev/null +++ b/docs/overrides/.icons/cldk/fedora-svgrepo-com.svg @@ -0,0 +1,35 @@ + + + + Clarity Icon + This is shape (source) for Clarity vector icon theme for gtk + + + + Clarity Icon + This is shape (source) for Clarity vector icon theme for gtk + + + Jakub Jankiewicz + + + + + Jakub Jankiewicz + + + 2010 + image/svg+xml + + + + + + + \ No newline at end of file diff --git a/docs/overrides/.icons/cldk/flag-16.svg b/docs/overrides/.icons/cldk/flag-16.svg new file mode 100644 index 00000000..eff41c7a --- /dev/null +++ b/docs/overrides/.icons/cldk/flag-16.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/flag-20.svg b/docs/overrides/.icons/cldk/flag-20.svg new file mode 100644 index 00000000..fa5f7ffc --- /dev/null +++ b/docs/overrides/.icons/cldk/flag-20.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/flame-16.svg b/docs/overrides/.icons/cldk/flame-16.svg new file mode 100644 index 00000000..b979cc92 --- /dev/null +++ b/docs/overrides/.icons/cldk/flame-16.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/flame-20.svg b/docs/overrides/.icons/cldk/flame-20.svg new file mode 100644 index 00000000..be9a9398 --- /dev/null +++ b/docs/overrides/.icons/cldk/flame-20.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/fr-16.svg b/docs/overrides/.icons/cldk/fr-16.svg new file mode 100644 index 00000000..27edbf6e --- /dev/null +++ b/docs/overrides/.icons/cldk/fr-16.svg @@ -0,0 +1,25 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/fr-20.svg b/docs/overrides/.icons/cldk/fr-20.svg new file mode 100644 index 00000000..1b2cb42c --- /dev/null +++ b/docs/overrides/.icons/cldk/fr-20.svg @@ -0,0 +1,26 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/globe-network-16.svg b/docs/overrides/.icons/cldk/globe-network-16.svg new file mode 100644 index 00000000..a68683e4 --- /dev/null +++ b/docs/overrides/.icons/cldk/globe-network-16.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/globe-network-20.svg b/docs/overrides/.icons/cldk/globe-network-20.svg new file mode 100644 index 00000000..f81d65c2 --- /dev/null +++ b/docs/overrides/.icons/cldk/globe-network-20.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/heatmap-16.svg b/docs/overrides/.icons/cldk/heatmap-16.svg new file mode 100644 index 00000000..5d633ac1 --- /dev/null +++ b/docs/overrides/.icons/cldk/heatmap-16.svg @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/heatmap-20.svg b/docs/overrides/.icons/cldk/heatmap-20.svg new file mode 100644 index 00000000..2121a49c --- /dev/null +++ b/docs/overrides/.icons/cldk/heatmap-20.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/help-16.svg b/docs/overrides/.icons/cldk/help-16.svg new file mode 100644 index 00000000..a6aa9d00 --- /dev/null +++ b/docs/overrides/.icons/cldk/help-16.svg @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/help-20.svg b/docs/overrides/.icons/cldk/help-20.svg new file mode 100644 index 00000000..a287ea31 --- /dev/null +++ b/docs/overrides/.icons/cldk/help-20.svg @@ -0,0 +1,12 @@ + + + + + + diff --git a/docs/overrides/.icons/cldk/keypoint-detection-16.svg b/docs/overrides/.icons/cldk/keypoint-detection-16.svg new file mode 100644 index 00000000..7ea3d654 --- /dev/null +++ b/docs/overrides/.icons/cldk/keypoint-detection-16.svg @@ -0,0 +1,18 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/keypoint-detection-20.svg b/docs/overrides/.icons/cldk/keypoint-detection-20.svg new file mode 100644 index 00000000..7580754b --- /dev/null +++ b/docs/overrides/.icons/cldk/keypoint-detection-20.svg @@ -0,0 +1,18 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/lab-test-16.svg b/docs/overrides/.icons/cldk/lab-test-16.svg new file mode 100644 index 00000000..faffc278 --- /dev/null +++ b/docs/overrides/.icons/cldk/lab-test-16.svg @@ -0,0 +1,9 @@ + + + + pt-icon-lab-test-small + Created with Sketch. + + + + diff --git a/docs/overrides/.icons/cldk/lab-test-20.svg b/docs/overrides/.icons/cldk/lab-test-20.svg new file mode 100644 index 00000000..ca007b2b --- /dev/null +++ b/docs/overrides/.icons/cldk/lab-test-20.svg @@ -0,0 +1,8 @@ + + + pt-icon-lab-test + Created with Sketch. + + + + diff --git a/docs/overrides/.icons/cldk/layers-16.svg b/docs/overrides/.icons/cldk/layers-16.svg new file mode 100644 index 00000000..9ca542f5 --- /dev/null +++ b/docs/overrides/.icons/cldk/layers-16.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/layers-20.svg b/docs/overrides/.icons/cldk/layers-20.svg new file mode 100644 index 00000000..7ac79e63 --- /dev/null +++ b/docs/overrides/.icons/cldk/layers-20.svg @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/learning-16.svg b/docs/overrides/.icons/cldk/learning-16.svg new file mode 100644 index 00000000..ae8aa998 --- /dev/null +++ b/docs/overrides/.icons/cldk/learning-16.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/learning-20.svg b/docs/overrides/.icons/cldk/learning-20.svg new file mode 100644 index 00000000..44f6d28f --- /dev/null +++ b/docs/overrides/.icons/cldk/learning-20.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/light-mode-16.svg b/docs/overrides/.icons/cldk/light-mode-16.svg new file mode 100644 index 00000000..6f33c39d --- /dev/null +++ b/docs/overrides/.icons/cldk/light-mode-16.svg @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/light-mode-20.svg b/docs/overrides/.icons/cldk/light-mode-20.svg new file mode 100644 index 00000000..5d4e7993 --- /dev/null +++ b/docs/overrides/.icons/cldk/light-mode-20.svg @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/linux-svgrepo-com.svg b/docs/overrides/.icons/cldk/linux-svgrepo-com.svg new file mode 100644 index 00000000..82845f45 --- /dev/null +++ b/docs/overrides/.icons/cldk/linux-svgrepo-com.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/docs/overrides/.icons/cldk/logo-white.svg b/docs/overrides/.icons/cldk/logo-white.svg new file mode 100644 index 00000000..4a7eebe3 --- /dev/null +++ b/docs/overrides/.icons/cldk/logo-white.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/manual-16.svg b/docs/overrides/.icons/cldk/manual-16.svg new file mode 100644 index 00000000..8f3ec8f6 --- /dev/null +++ b/docs/overrides/.icons/cldk/manual-16.svg @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/manual-20.svg b/docs/overrides/.icons/cldk/manual-20.svg new file mode 100644 index 00000000..bfbb98f7 --- /dev/null +++ b/docs/overrides/.icons/cldk/manual-20.svg @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/media-16.svg b/docs/overrides/.icons/cldk/media-16.svg new file mode 100644 index 00000000..577757af --- /dev/null +++ b/docs/overrides/.icons/cldk/media-16.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/media-20.svg b/docs/overrides/.icons/cldk/media-20.svg new file mode 100644 index 00000000..292f8706 --- /dev/null +++ b/docs/overrides/.icons/cldk/media-20.svg @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/metrics-glossary-16.svg b/docs/overrides/.icons/cldk/metrics-glossary-16.svg new file mode 100644 index 00000000..1ca6f4d4 --- /dev/null +++ b/docs/overrides/.icons/cldk/metrics-glossary-16.svg @@ -0,0 +1,28 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/metrics-glossary-20.svg b/docs/overrides/.icons/cldk/metrics-glossary-20.svg new file mode 100644 index 00000000..6f3ca0cb --- /dev/null +++ b/docs/overrides/.icons/cldk/metrics-glossary-20.svg @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/model-16.svg b/docs/overrides/.icons/cldk/model-16.svg new file mode 100644 index 00000000..40990345 --- /dev/null +++ b/docs/overrides/.icons/cldk/model-16.svg @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/model-20.svg b/docs/overrides/.icons/cldk/model-20.svg new file mode 100644 index 00000000..6be0cdf5 --- /dev/null +++ b/docs/overrides/.icons/cldk/model-20.svg @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/music-16.svg b/docs/overrides/.icons/cldk/music-16.svg new file mode 100644 index 00000000..ea95bd8a --- /dev/null +++ b/docs/overrides/.icons/cldk/music-16.svg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/music-20.svg b/docs/overrides/.icons/cldk/music-20.svg new file mode 100644 index 00000000..c696a00b --- /dev/null +++ b/docs/overrides/.icons/cldk/music-20.svg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/organization-16.svg b/docs/overrides/.icons/cldk/organization-16.svg new file mode 100644 index 00000000..213f732a --- /dev/null +++ b/docs/overrides/.icons/cldk/organization-16.svg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/organization-20.svg b/docs/overrides/.icons/cldk/organization-20.svg new file mode 100644 index 00000000..b587bcf7 --- /dev/null +++ b/docs/overrides/.icons/cldk/organization-20.svg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/paragraph-16.svg b/docs/overrides/.icons/cldk/paragraph-16.svg new file mode 100644 index 00000000..f6f2aa31 --- /dev/null +++ b/docs/overrides/.icons/cldk/paragraph-16.svg @@ -0,0 +1,9 @@ + + + +Artboard +Created with Sketch. + + diff --git a/docs/overrides/.icons/cldk/paragraph-20.svg b/docs/overrides/.icons/cldk/paragraph-20.svg new file mode 100644 index 00000000..bcd58e9b --- /dev/null +++ b/docs/overrides/.icons/cldk/paragraph-20.svg @@ -0,0 +1,9 @@ + + + +Artboard 2 +Created with Sketch. + + diff --git a/docs/overrides/.icons/cldk/polygon-16.svg b/docs/overrides/.icons/cldk/polygon-16.svg new file mode 100644 index 00000000..1779a0b4 --- /dev/null +++ b/docs/overrides/.icons/cldk/polygon-16.svg @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/polygon-20.svg b/docs/overrides/.icons/cldk/polygon-20.svg new file mode 100644 index 00000000..02e78e7f --- /dev/null +++ b/docs/overrides/.icons/cldk/polygon-20.svg @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/properties-16.svg b/docs/overrides/.icons/cldk/properties-16.svg new file mode 100644 index 00000000..9ffb0bf1 --- /dev/null +++ b/docs/overrides/.icons/cldk/properties-16.svg @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/properties-20.svg b/docs/overrides/.icons/cldk/properties-20.svg new file mode 100644 index 00000000..e9f171e7 --- /dev/null +++ b/docs/overrides/.icons/cldk/properties-20.svg @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/quality-standard-16.svg b/docs/overrides/.icons/cldk/quality-standard-16.svg new file mode 100644 index 00000000..96c1bd8d --- /dev/null +++ b/docs/overrides/.icons/cldk/quality-standard-16.svg @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/quality-standard-20.svg b/docs/overrides/.icons/cldk/quality-standard-20.svg new file mode 100644 index 00000000..e2f57349 --- /dev/null +++ b/docs/overrides/.icons/cldk/quality-standard-20.svg @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/redhat-svgrepo-com.svg b/docs/overrides/.icons/cldk/redhat-svgrepo-com.svg new file mode 100644 index 00000000..5f6a39ad --- /dev/null +++ b/docs/overrides/.icons/cldk/redhat-svgrepo-com.svg @@ -0,0 +1,6 @@ + + + +redhat + + \ No newline at end of file diff --git a/docs/overrides/.icons/cldk/results-16.svg b/docs/overrides/.icons/cldk/results-16.svg new file mode 100644 index 00000000..1960fef4 --- /dev/null +++ b/docs/overrides/.icons/cldk/results-16.svg @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/results-20.svg b/docs/overrides/.icons/cldk/results-20.svg new file mode 100644 index 00000000..b5c2747f --- /dev/null +++ b/docs/overrides/.icons/cldk/results-20.svg @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/rocket-16.svg b/docs/overrides/.icons/cldk/rocket-16.svg new file mode 100644 index 00000000..c894d8d8 --- /dev/null +++ b/docs/overrides/.icons/cldk/rocket-16.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/rocket-20.svg b/docs/overrides/.icons/cldk/rocket-20.svg new file mode 100644 index 00000000..ea24a2b5 --- /dev/null +++ b/docs/overrides/.icons/cldk/rocket-20.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/search-around-16.svg b/docs/overrides/.icons/cldk/search-around-16.svg new file mode 100644 index 00000000..b62f9828 --- /dev/null +++ b/docs/overrides/.icons/cldk/search-around-16.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/search-around-20.svg b/docs/overrides/.icons/cldk/search-around-20.svg new file mode 100644 index 00000000..a0ebca06 --- /dev/null +++ b/docs/overrides/.icons/cldk/search-around-20.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/studio-16.svg b/docs/overrides/.icons/cldk/studio-16.svg new file mode 100644 index 00000000..c29750d5 --- /dev/null +++ b/docs/overrides/.icons/cldk/studio-16.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/studio-20.svg b/docs/overrides/.icons/cldk/studio-20.svg new file mode 100644 index 00000000..b07a6f33 --- /dev/null +++ b/docs/overrides/.icons/cldk/studio-20.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/take-action-16.svg b/docs/overrides/.icons/cldk/take-action-16.svg new file mode 100644 index 00000000..c29f0f7c --- /dev/null +++ b/docs/overrides/.icons/cldk/take-action-16.svg @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/take-action-20.svg b/docs/overrides/.icons/cldk/take-action-20.svg new file mode 100644 index 00000000..ec7e5840 --- /dev/null +++ b/docs/overrides/.icons/cldk/take-action-20.svg @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/test-suite-16.svg b/docs/overrides/.icons/cldk/test-suite-16.svg new file mode 100644 index 00000000..4ddca9a4 --- /dev/null +++ b/docs/overrides/.icons/cldk/test-suite-16.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/test-suite-20.svg b/docs/overrides/.icons/cldk/test-suite-20.svg new file mode 100644 index 00000000..ce92fe16 --- /dev/null +++ b/docs/overrides/.icons/cldk/test-suite-20.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/text-summarization-16.svg b/docs/overrides/.icons/cldk/text-summarization-16.svg new file mode 100644 index 00000000..8d6307b2 --- /dev/null +++ b/docs/overrides/.icons/cldk/text-summarization-16.svg @@ -0,0 +1,7 @@ + + + array-string + + + + diff --git a/docs/overrides/.icons/cldk/text-summarization-20.svg b/docs/overrides/.icons/cldk/text-summarization-20.svg new file mode 100644 index 00000000..b1bcbfdf --- /dev/null +++ b/docs/overrides/.icons/cldk/text-summarization-20.svg @@ -0,0 +1,7 @@ + + + array-string + + + + diff --git a/docs/overrides/.icons/cldk/ubuntu-svgrepo-com.svg b/docs/overrides/.icons/cldk/ubuntu-svgrepo-com.svg new file mode 100644 index 00000000..b607f7d8 --- /dev/null +++ b/docs/overrides/.icons/cldk/ubuntu-svgrepo-com.svg @@ -0,0 +1,6 @@ + + + +ubuntu + + \ No newline at end of file diff --git a/docs/overrides/.icons/cldk/video-16.svg b/docs/overrides/.icons/cldk/video-16.svg new file mode 100644 index 00000000..5638baff --- /dev/null +++ b/docs/overrides/.icons/cldk/video-16.svg @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/video-20.svg b/docs/overrides/.icons/cldk/video-20.svg new file mode 100644 index 00000000..9f6fc9d7 --- /dev/null +++ b/docs/overrides/.icons/cldk/video-20.svg @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/warning-sign-16.svg b/docs/overrides/.icons/cldk/warning-sign-16.svg new file mode 100644 index 00000000..0a50b917 --- /dev/null +++ b/docs/overrides/.icons/cldk/warning-sign-16.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/warning-sign-20.svg b/docs/overrides/.icons/cldk/warning-sign-20.svg new file mode 100644 index 00000000..9dd039fe --- /dev/null +++ b/docs/overrides/.icons/cldk/warning-sign-20.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/widget-16.svg b/docs/overrides/.icons/cldk/widget-16.svg new file mode 100644 index 00000000..52851fa4 --- /dev/null +++ b/docs/overrides/.icons/cldk/widget-16.svg @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/widget-20.svg b/docs/overrides/.icons/cldk/widget-20.svg new file mode 100644 index 00000000..b329aede --- /dev/null +++ b/docs/overrides/.icons/cldk/widget-20.svg @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/windows-logo.svg b/docs/overrides/.icons/cldk/windows-logo.svg new file mode 100644 index 00000000..0f34fa96 --- /dev/null +++ b/docs/overrides/.icons/cldk/windows-logo.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/docs/overrides/.icons/cldk/workflow-16.svg b/docs/overrides/.icons/cldk/workflow-16.svg new file mode 100644 index 00000000..564cdd7c --- /dev/null +++ b/docs/overrides/.icons/cldk/workflow-16.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/docs/overrides/.icons/cldk/workflow-20.svg b/docs/overrides/.icons/cldk/workflow-20.svg new file mode 100644 index 00000000..e49c645a --- /dev/null +++ b/docs/overrides/.icons/cldk/workflow-20.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/docs/overrides/main.html b/docs/overrides/main.html new file mode 100644 index 00000000..7f611a97 --- /dev/null +++ b/docs/overrides/main.html @@ -0,0 +1,32 @@ +{% extends "base.html" %} + +{% block htmltitle %} +{{ page.title | striptags }}{% if (page.meta is defined and page.meta.description is defined) %}: {{ page.meta.description }}{% endif %} · {{ config.site_name }} +{% endblock %} + +{% block extrahead %} +{{ super() }} + +{% endblock %} diff --git a/docs/publications.md b/docs/publications.md deleted file mode 100644 index 4f25e759..00000000 --- a/docs/publications.md +++ /dev/null @@ -1,4 +0,0 @@ -### Publication (papers and blogs related to CLDK) -1. Krishna, Rahul, Rangeet Pan, Raju Pavuluri, Srikanth Tamilselvam, Maja Vukovic, and Saurabh Sinha. "[Codellm-Devkit: A Framework for Contextualizing Code LLMs with Program Analysis Insights.](https://arxiv.org/pdf/2410.13007)" arXiv preprint arXiv:2410.13007 (2024). -2. Pan, Rangeet, Myeongsoo Kim, Rahul Krishna, Raju Pavuluri, and Saurabh Sinha. "[Multi-language Unit Test Generation using LLMs.](https://arxiv.org/abs/2409.03093)" arXiv preprint arXiv:2409.03093 (2024). -3. Pan, Rangeet, Rahul Krishna, Raju Pavuluri, Saurabh Sinha, and Maja Vukovic., "[Simplify your Code LLM solutions using CodeLLM Dev Kit (CLDK).](https://www.linkedin.com/pulse/simplify-your-code-llm-solutions-using-codellm-dev-kit-rangeet-pan-vnnpe/?trackingId=kZ3U6d8GSDCs8S1oApXZgg%3D%3D)", Blog. \ No newline at end of file diff --git a/docs/quickstart.md b/docs/quickstart.md new file mode 100644 index 00000000..38122f0b --- /dev/null +++ b/docs/quickstart.md @@ -0,0 +1,224 @@ +--- +icon: cldk/flame-20 +hide: + - toc +--- +# :cldk-flame-20: Quickstart + +Build code analysis pipelines with LLMs in minutes. + +In this quickstart guide, we will use the [Apache Commons CLI](https://commons.apache.org/proper/commons-cli/) example +codebase to demonstrate code analysis pipeline creation using CLDK, with both local LLM inference and automated code processing. + +??? note "Installing CLDK and Ollama" + + This quickstart guide requires CLDK and Ollama. Follow these instructions to set up your environment: + + First, install CLDK and Ollama Python SDK: + + === "`pip`" + + ```shell + pip install cldk ollama + ``` + + === "`poetry`" + ```shell + poetry add cldk ollama + ``` + + === "`uv`" + ```shell + poetry add cldk ollama + ``` + + Then, install Ollama: + + === "Linux/WSL" + + Run the following command: + + ```shell + curl -fsSL https://ollama.com/install.sh | sh + ``` + + === "macOS" + + Run the following command: + + ```shell + curl -fsSL https://ollama.com/install.sh | sh + ``` + + Or, download the installer from [here](https://ollama.com/download/Ollama-darwin.zip). + + +## Step 1: Set Up Ollama Server + +Model inference with CLDK starts with a local LLM server. We'll use Ollama to host and run the models. + +=== "Linux/WSL" + * Check if the Ollama server is running: + ```shell + sudo systemctl status ollama + ``` + + * If not running, start it: + ```shell + sudo systemctl start ollama + ``` + +=== "macOS" + On macOS, Ollama runs automatically after installation. + + You can check the status with: + ```shell + launchctl list | grep "ollama" + ``` + + +## Step 2: Pull the code LLM. + +* Let's use the Granite 8b-instruct model for this tutorial: + ```shell + ollama pull granite-code:8b-instruct + ``` + +* Verify the installation: + ```shell + ollama run granite-code:8b-instruct 'Write a function to print hello world in python' + ``` + + You should see a response like: + ```shell + ❯ ollama run granite-code:8b-instruct 'Write a function to print hello world in python' + ```python + def say_hello(): + print("Hello World!") + ``` + ``` + + +## Step 3: Download Sample Codebase + +We'll use Apache Commons CLI as our example Java project: + +```shell +wget https://github.com/apache/commons-cli/archive/refs/tags/rel/commons-cli-1.7.0.zip -O commons-cli-1.7.0.zip && unzip commons-cli-1.7.0.zip +``` + +Let's set the project path for future reference: +```shell +export JAVA_APP_PATH=/path/to/commons-cli-1.7.0 +``` + +??? note "About the Sample Project" + Apache Commons CLI provides an API for parsing command line options. It's a well-structured Java project that demonstrates various object-oriented patterns, making it ideal for code analysis experiments. + +## Step 3: Create Analysis Pipeline + +??? tip "What should I expect?" + In about 40 lines of code, we will use CLDK to build a code summarization pipeline that leverages LLMs to generate summaries for a real world Java project! Without CLDK, this would require multiple tools and a much more complex setup. + +Let's build a pipeline that analyzes Java methods using LLMs. Create a new file `code_summarization.py`: + +```python title="code_summarization.py" linenums="1" hl_lines="7 10 12-17 24-25 27-28 39" +import ollama +from cldk import CLDK +from pathlib import Path +import os + +# Create CLDK object, specify language as Java. +cldk = CLDK(language="java") # (1)! + +# Create analysis object +analysis = cldk.analysis(project_path=os.getenv("JAVA_APP_PATH")) # (2)! + +# Iterate over files +for file_path, class_file in analysis.get_symbol_table().items(): + # Iterate over classes + for type_name, type_declaration in class_file.type_declarations.items(): + # Iterate over methods + for method in type_declaration.callable_declarations.values(): # (3)! + # Skip constructors + if method.is_constructor: + continue + # Get code body + code_body = Path(file_path).absolute().resolve().read_text() + + # Initialize treesitter + tree_sitter_utils = cldk.tree_sitter_utils(source_code=code_body) # (4)! + + # Sanitize class + sanitized_class = tree_sitter_utils.sanitize_focal_class(method.declaration) # (5)! + + # Format instruction + instruction = ( + f"Question: Can you write a brief summary for the method " + f"`{method.declaration}` in the class `{type_name}` below?\n\n" + f"```java\n{sanitized_class}```\n" + ) + + # Prompt Ollama + summary = ollama.generate( + model="granite-code:8b-instruct", # (6)! + prompt=instruction).get("response") + + # Print output + print(f"\nMethod: {method.declaration}") + print(f"Summary: {summary}") +``` + + +1. Create a new instance of the CLDK class +2. Create an `analysis` instance for the Java project. This object will be used to obtain all the analysis artifacts from the java project. +3. In a nested loop, we can quickly iterate over the methods in the project and extract the code body. +4. CLDK comes with a number of treesitter based utilities that can be used to extract and manipulate code snippets. +5. We use the `sanitize_focal_class()` method to extract the focal class for the method and sanitize any unwanted code in just one line of code. +6. We use the `granite-code:8b-instruct` model in this example. Try a different model from [Ollama model library](https://ollama.com/library). +--- + +### Running `code_summarization.py` + +Save the file as `code_summarization.py` and run it: +```shell +python code_summarization.py +``` + +You'll see output like: +``` +Method: parse +Summary: This method parses command line arguments using the specified Options object... + +Method: validateOption +Summary: Validates if an option meets the required criteria including checking... + +... +``` + +## Step 5: Customize Analysis + +The pipeline can be customized in several ways: + +=== "Change Model" + Try different Granite model sizes: + ```python + summary = ollama.generate( + model="granite-code:34b-instruct", # Larger model! + prompt=instruction).get("response") + ``` + +=== "Modify Prompt" + Adjust the task to generate a unit test: + ```python + def format_inst(code, focal_method, focal_class): + return (f"Generate a complete unit test case using junit4 for the method `{focal_method}`...\n\n" + f"```java\n{code}```\n") + ``` + + +## Next Steps + +- Explore different analysis tasks like code repair, translation, test generation, and more... +- Create richer prompts with more analysis artifacts that CLDK provides. +- Implement batch processing for larger projects, or use the CLDK SDK to build custom analysis pipelines. diff --git a/docs/reference/index.md b/docs/reference/index.md new file mode 100644 index 00000000..e7c2e22b --- /dev/null +++ b/docs/reference/index.md @@ -0,0 +1,8 @@ +--- +title: "API Reference" +icon: cldk/manual-20 +hide: + - toc +--- + +To be updated. \ No newline at end of file diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css deleted file mode 100644 index d3e3b34d..00000000 --- a/docs/stylesheets/extra.css +++ /dev/null @@ -1,5 +0,0 @@ -:root { - --md-primary-fg-color: #0f62fe; - --md-primary-fg-color--light: #4589ff; - --md-primary-fg-color--dark: #002d9c; - } \ No newline at end of file diff --git a/docs/walkthrough.md b/docs/walkthrough.md deleted file mode 100644 index c032a249..00000000 --- a/docs/walkthrough.md +++ /dev/null @@ -1,179 +0,0 @@ -## Quick Start: Example Walkthrough - -In this section, we will walk through a simple example to demonstrate how to use CLDK. We will: - -* Set up a local ollama server to interact with CodeLLMs -* Build a simple code summarization pipeline for a Java and a Python application. - -### Prerequisites - -Before we begin, make sure you have the following prerequisites installed: - - * Python 3.11 or later - * Ollama v0.3.4 or later - -### Step 1: Set up an Ollama server - -If don't already have ollama, please download and install it from here: [Ollama](https://ollama.com/download). - -Once you have ollama, start the server and make sure it is running. - -If you're on MacOS, Linux, or WSL, you can check to make sure the server is running by running the following command: - -```bash -sudo systemctl status ollama -``` - -You should see an output similar to the following: - -```bash -➜ sudo systemctl status ollama -● ollama.service - Ollama Service - Loaded: loaded (/etc/systemd/system/ollama.service; enabled; preset: enabled) - Active: active (running) since Sat 2024-08-10 20:39:56 EDT; 17s ago - Main PID: 23069 (ollama) - Tasks: 19 (limit: 76802) - Memory: 1.2G (peak: 1.2G) - CPU: 6.745s - CGroup: /system.slice/ollama.service - └─23069 /usr/local/bin/ollama serve -``` - -If not, you may have to start the server manually. You can do this by running the following command: - -```bash -sudo systemctl start ollama -``` - -#### Pull the latest version of Granite 8b instruct model from ollama - -To pull the latest version of the Granite 8b instruct model from ollama, run the following command: - -```bash -ollama pull granite-code:8b-instruct -``` - -Check to make sure the model was successfully pulled by running the following command: - -```bash -ollama run granite-code:8b-instruct 'Write a function to print hello world in python' -``` - -The output should be similar to the following: - -``` -➜ ollama run granite-code:8b-instruct 'Write a function to print hello world in python' - -def say_hello(): - print("Hello World!") -``` - -### Step 2: Install CLDK - -You may install the latest version of CLDK from [PyPi](https://pypi.org/project/cldk/): - -```python -pip install cldk -``` - -Once CLDK is installed, you can import it into your Python code: - -```python -from cldk import CLDK -``` - -### Step 3: Build a code summarization pipeline - -Now that we have set up the ollama server and installed CLDK, we can build a simple code summarization pipeline for a Java application. - -1. Let's download a sample Java (apache-commons-cli): - - * Download and unzip the sample Java application: - ```bash - wget https://github.com/apache/commons-cli/archive/refs/tags/rel/commons-cli-1.7.0.zip -O commons-cli-1.7.0.zip && unzip commons-cli-1.7.0.zip - ``` - * Record the path to the sample Java application: - ```bash - export JAVA_APP_PATH=/path/to/commons-cli-1.7.0 - ``` - -Below is a simple code summarization pipeline for a Java application using CLDK. It does the following things: - -* Creates a new instance of the CLDK class (see comment `# (1)`) -* Creates an analysis object over the Java application (see comment `# (2)`) -* Iterates over all the files in the project (see comment `# (3)`) -* Iterates over all the classes in the file (see comment `# (4)`) -* Iterates over all the methods in the class (see comment `# (5)`) -* Gets the code body of the method (see comment `# (6)`) -* Initializes the treesitter utils for the class file content (see comment `# (7)`) -* Sanitizes the class for analysis (see comment `# (8)`) -* Formats the instruction for the given focal method and class (see comment `# (9)`) -* Prompts the local model on Ollama (see comment `# (10)`) -* Prints the instruction and LLM output (see comment `# (11)`) - -```python -# code_summarization_for_java.py - -from cldk import CLDK - - -def format_inst(code, focal_method, focal_class): - """ - Format the instruction for the given focal method and class. - """ - inst = f"Question: Can you write a brief summary for the method `{focal_method}` in the class `{focal_class}` below?\n" - - inst += "\n" - inst += f"```{language}\n" - inst += code - inst += "```" if code.endswith("\n") else "\n```" - inst += "\n" - return inst - -def prompt_ollama(message: str, model_id: str = "granite-code:8b-instruct") -> str: - """Prompt local model on Ollama""" - response_object = ollama.generate(model=model_id, prompt=message) - return response_object["response"] - - -if __name__ == "__main__": - # (1) Create a new instance of the CLDK class - cldk = CLDK(language="java") - - # (2) Create an analysis object over the java application - analysis = cldk.analysis(project_path=os.getenv("JAVA_APP_PATH")) - - # (3) Iterate over all the files in the project - for file_path, class_file in analysis.get_symbol_table().items(): - class_file_path = Path(file_path).absolute().resolve() - # (4) Iterate over all the classes in the file - for type_name, type_declaration in class_file.type_declarations.items(): - # (5) Iterate over all the methods in the class - for method in type_declaration.callable_declarations.values(): - - # (6) Get code body of the method - code_body = class_file_path.read_text() - - # (7) Initialize the treesitter utils for the class file content - tree_sitter_utils = cldk.tree_sitter_utils(source_code=code_body) - - # (8) Sanitize the class for analysis - sanitized_class = tree_sitter_utils.sanitize_focal_class(method.declaration) - - # (9) Format the instruction for the given focal method and class - instruction = format_inst( - code=sanitized_class, - focal_method=method.declaration, - focal_class=type_name, - ) - - # (10) Prompt the local model on Ollama - llm_output = prompt_ollama( - message=instruction, - model_id="granite-code:20b-instruct", - ) - - # (11) Print the instruction and LLM output - print(f"Instruction:\n{instruction}") - print(f"LLM Output:\n{llm_output}") -``` \ No newline at end of file diff --git a/mkdocs.insiders.yml b/mkdocs.insiders.yml new file mode 100644 index 00000000..84a5f9f0 --- /dev/null +++ b/mkdocs.insiders.yml @@ -0,0 +1,61 @@ +INHERIT: mkdocs.yml + +strict: false # allows for missing pages in git-committers (i.e. new or moved pages) +watch: + - cldk + - mkdocs.yml + +theme: + palette: + # Palette toggle for automatic mode + - media: "(prefers-color-scheme)" + toggle: + icon: material/brightness-auto + + # Palette toggle for light mode + - media: "(prefers-color-scheme: light)" + scheme: default + toggle: + icon: material/brightness-7 + + # Palette toggle for dark mode + - media: "(prefers-color-scheme: dark)" + scheme: slate + toggle: + icon: material/brightness-4 + features: + # copied from mkdocs.yml -- ensure that these are kept in sync + - announce.dismiss + - content.action.edit + - content.code.copy + - content.tabs.link + - navigation.indexes + - navigation.footer + - navigation.sections + - search.highlight + - search.suggest + - toc.follow + + # insider-only features + - navigation.path # breadcrumbs + - content.tooltips + +extra: + status: + new: Experimental + +plugins: + social: + cache_dir: .cache/plugin/social/insiders + cards_layout: custom + cards_layout_dir: docs/layouts + typeset: + git-committers: + repository: IBM/codellm-devkit + branch: trunk + mkdocstrings: + handlers: + python: + options: + show_symbol_type_heading: true + show_symbol_type_toc: true diff --git a/mkdocs.yaml b/mkdocs.yaml deleted file mode 100644 index 2ed48cc8..00000000 --- a/mkdocs.yaml +++ /dev/null @@ -1,82 +0,0 @@ -# Config for MkDocs -# To build: -# 1. Ensure you have MkDocs and friends: `pip install -e ".[docs]"` -# 2. `mkdocs serve` to view site locally with live refresh -# 3. `mkdocs build` to build the static site. -# In the future, a GitHub action should do this. - -site_name: CodeLLM-Devkit -repo_url: https://github.com/IBM/codellm-devkit -repo_name: IBM/codellm-devkit -# edit_uri: docs/ -# site_url: https://ibm.github.io/cldk/ - -# This unusual configuration of docs/site directories -# is due to GitHub not presenting /site/ as an option -# when selecting the dir for Pages. -# docs_dir: docs -site_dir: _site - -copyright: Copyright © 2024 IBM - -theme: - name: material - font: - text: IBM Plex Sans - code: IBM Plex Mono - icon: - repo: fontawesome/brands/github - features: # see https://squidfunk.github.io/mkdocs-material/setup/ - - search.highlight - - search.suggest - - navigation.sections - - navigation.path - - navigation.footer - - navigation.indexes - - navigation.top - - toc.follow - - toc.integrate - - navigation.tabs - - content.action.edit - logo: assets/cldk.png - palette: - - primary: custom -nav: - - Home: README.md - - Walkthrough: walkthrough.md - - API Reference: api_reference.md - - Publications: publications.md - - Contribute: contribute.md - -# Define some IBM colors -extra_css: - - stylesheets/extra.css - -plugins: -- search -- mkdocstrings: # see https://mkdocstrings.github.io/python/usage/ - handlers: - python: - options: - allow_inspection: true - show_source: true - show_bases: true - show_symbol_type_toc: true - show_submodules: false - show_root_toc_entry: true - docstring_section_style: table - inherited_members: false - summary: true - docstring_style: google - show_if_no_docstring: false - show_labels: true - heading_level: 3 - show_symbol_type_heading: true - show_signature: true - show_signature_annotations: true - members_order: source - -markdown_extensions: - - admonition - - toc: - toc_depth: 3 diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 00000000..e9b84f25 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,141 @@ +site_name: Codellm-Devkit +site_description: A library for streamlined code analysis insights for CodeLLM development and deployment. +repo_url: https://github.com/IBM/codellm-devkit +repo_name: IBM/codellm-devkit +strict: false +copyright: Copyright © 2024-2025 IBM + +nav: + - Home: + - Home: index.md + - Quick Start: quickstart.md + - Installation: installing.md + - Core Concepts: core-concepts/index.md + +theme: + name: material + logo: assets/images/logo-white.svg + favicon: assets/images/favicon.png + custom_dir: docs/overrides + font: + text: IBM Plex Sans + code: IBM Plex Mono + palette: + # Palette toggle for automatic mode + - media: "(prefers-color-scheme)" + toggle: + icon: material/brightness-auto + + # Palette toggle for light mode + - media: "(prefers-color-scheme: light)" + scheme: default + toggle: + icon: material/brightness-7 + + # Palette toggle for dark mode + - media: "(prefers-color-scheme: dark)" + scheme: slate + toggle: + icon: material/brightness-4 + features: + - announce.dismiss + - content.code.copy + - content.code.prettify + - content.code.annotate + - content.tabs.link + - navigation.indexes + - navigation.footer + - navigation.sections + - navigation.tabs + - navigation.tabs.sticky + - search.highlight + - search.suggest + - toc.follow + +markdown_extensions: + - admonition # callouts + - footnotes + - pymdownx.details + - pymdownx.highlight: + anchor_linenums: true + line_spans: __span + pygments_lang_class: true + - pymdownx.inlinehilite + - pymdownx.snippets: + check_paths: true + - pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format + - pymdownx.tabbed: + alternate_style: true + slugify: !!python/object/apply:pymdownx.slugs.slugify # NOTE: insiders only + kwds: + case: lower + - toc: + permalink: "#" + - attr_list + - md_in_html + - pymdownx.emoji: + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg + options: + custom_icons: + - docs/overrides/.icons + - pymdownx.arithmatex: + generic: true + +watch: + - cldk + +extra_css: + - assets/css/theme.css + - assets/css/mkdocstrings.css + +extra_javascript: + - assets/javascript/mathjax.js + - https://polyfill.io/v3/polyfill.min.js?features=es6 + - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js + +plugins: + social: # render social media cards for copy+paste + cache_dir: .cache/plugin/social/free + search: + lang: en + git-revision-date-localized: + mkdocstrings: + handlers: + python: + module: cldk + import: + - https://docs.python.org/3/objects.inv + - https://docs.scipy.org/doc/numpy/objects.inv + options: + docstring_style: sphinx + merge_init_into_class: true + members_order: source # sort members in the order they are defined + show_docstring_attributes: true + show_root_toc_entry: false + show_source: false + +extra: + generator: false + social: + - icon: fontawesome/brands/twitter + link: https://twitter.com/IBM + name: IBM on Twitter + - icon: fontawesome/brands/linkedin + link: https://www.linkedin.com/company/IBM + name: IBM on LinkedIn + - icon: fontawesome/brands/python + link: https://pypi.org/project/cldk + - icon: fontawesome/brands/github + link: https://github.com/IBM/codellm-devkit + name: CLDK on GitHub + - icon: cldk/logo-white + link: https://ibm.github.io/codellm-devkit + name: The CLDK Library + dd_rum: + client_token: !ENV [ DD_RUM_CLIENT_TOKEN, blank ] + application_id: !ENV [ DD_RUM_APPLICATION_ID, blank ] diff --git a/poetry.lock b/poetry.lock index 40ce2bef..bce7ec4b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -13,22 +13,23 @@ files = [ [[package]] name = "anyio" -version = "4.6.2.post1" +version = "4.8.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.9" files = [ - {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, - {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, + {file = "anyio-4.8.0-py3-none-any.whl", hash = "sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a"}, + {file = "anyio-4.8.0.tar.gz", hash = "sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a"}, ] [package.dependencies] idna = ">=2.8" sniffio = ">=1.1" +typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} [package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21)"] trio = ["trio (>=0.26.1)"] [[package]] @@ -120,32 +121,29 @@ test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock [[package]] name = "astroid" -version = "3.3.5" +version = "3.3.8" description = "An abstract syntax tree for Python with inference support." optional = false python-versions = ">=3.9.0" files = [ - {file = "astroid-3.3.5-py3-none-any.whl", hash = "sha256:a9d1c946ada25098d790e079ba2a1b112157278f3fb7e718ae6a9252f5835dc8"}, - {file = "astroid-3.3.5.tar.gz", hash = "sha256:5cfc40ae9f68311075d27ef68a4841bdc5cc7f6cf86671b49f00607d30188e2d"}, + {file = "astroid-3.3.8-py3-none-any.whl", hash = "sha256:187ccc0c248bfbba564826c26f070494f7bc964fd286b6d9fff4420e55de828c"}, + {file = "astroid-3.3.8.tar.gz", hash = "sha256:a88c7994f914a4ea8572fac479459f4955eeccc877be3f2d959a33273b0cf40b"}, ] [[package]] name = "asttokens" -version = "2.4.1" +version = "3.0.0" description = "Annotate AST trees with source code positions" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, - {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, + {file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2"}, + {file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7"}, ] -[package.dependencies] -six = ">=1.12.0" - [package.extras] -astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] -test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] +astroid = ["astroid (>=2,<4)"] +test = ["astroid (>=2,<4)", "pytest", "pytest-cov", "pytest-xdist"] [[package]] name = "async-lru" @@ -160,50 +158,51 @@ files = [ [[package]] name = "attrs" -version = "24.2.0" +version = "25.1.0" description = "Classes Without Boilerplate" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, + {file = "attrs-25.1.0-py3-none-any.whl", hash = "sha256:c75a69e28a550a7e93789579c22aa26b0f5b83b75dc4e08fe092980051e1090a"}, + {file = "attrs-25.1.0.tar.gz", hash = "sha256:1c97078a80c814273a76b2a298a932eb681c87415c11dee0a6921de7f1b02c3e"}, ] [package.extras] benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] [[package]] name = "babel" -version = "2.16.0" +version = "2.17.0" description = "Internationalization utilities" optional = false python-versions = ">=3.8" files = [ - {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, - {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, + {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, + {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, ] [package.extras] -dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] +dev = ["backports.zoneinfo", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata"] [[package]] name = "beautifulsoup4" -version = "4.12.3" +version = "4.13.3" description = "Screen-scraping library" optional = false -python-versions = ">=3.6.0" +python-versions = ">=3.7.0" files = [ - {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, - {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, + {file = "beautifulsoup4-4.13.3-py3-none-any.whl", hash = "sha256:99045d7d3f08f91f0d656bc9b7efbae189426cd913d830294a15eefa0ea4df16"}, + {file = "beautifulsoup4-4.13.3.tar.gz", hash = "sha256:1bd32405dacc920b42b83ba01644747ed77456a65760e285fbc47633ceddaf8b"}, ] [package.dependencies] soupsieve = ">1.2" +typing-extensions = ">=4.0.0" [package.extras] cchardet = ["cchardet"] @@ -268,20 +267,62 @@ files = [ ] [package.dependencies] +tinycss2 = {version = ">=1.1.0,<1.5", optional = true, markers = "extra == \"css\""} webencodings = "*" [package.extras] css = ["tinycss2 (>=1.1.0,<1.5)"] +[[package]] +name = "cairocffi" +version = "1.7.1" +description = "cffi-based cairo bindings for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "cairocffi-1.7.1-py3-none-any.whl", hash = "sha256:9803a0e11f6c962f3b0ae2ec8ba6ae45e957a146a004697a1ac1bbf16b073b3f"}, + {file = "cairocffi-1.7.1.tar.gz", hash = "sha256:2e48ee864884ec4a3a34bfa8c9ab9999f688286eb714a15a43ec9d068c36557b"}, +] + +[package.dependencies] +cffi = ">=1.1.0" + +[package.extras] +doc = ["sphinx", "sphinx_rtd_theme"] +test = ["numpy", "pikepdf", "pytest", "ruff"] +xcb = ["xcffib (>=1.4.0)"] + +[[package]] +name = "cairosvg" +version = "2.7.1" +description = "A Simple SVG Converter based on Cairo" +optional = false +python-versions = ">=3.5" +files = [ + {file = "CairoSVG-2.7.1-py3-none-any.whl", hash = "sha256:8a5222d4e6c3f86f1f7046b63246877a63b49923a1cd202184c3a634ef546b3b"}, + {file = "CairoSVG-2.7.1.tar.gz", hash = "sha256:432531d72347291b9a9ebfb6777026b607563fd8719c46ee742db0aef7271ba0"}, +] + +[package.dependencies] +cairocffi = "*" +cssselect2 = "*" +defusedxml = "*" +pillow = "*" +tinycss2 = "*" + +[package.extras] +doc = ["sphinx", "sphinx-rtd-theme"] +test = ["flake8", "isort", "pytest"] + [[package]] name = "certifi" -version = "2024.8.30" +version = "2025.1.31" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, + {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, + {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, ] [[package]] @@ -365,127 +406,114 @@ pycparser = "*" [[package]] name = "charset-normalizer" -version = "3.4.0" +version = "3.4.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false -python-versions = ">=3.7.0" +python-versions = ">=3.7" files = [ - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, - {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, - {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"}, + {file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"}, + {file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"}, ] [[package]] name = "click" -version = "8.1.7" +version = "8.1.8" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" files = [ - {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, - {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, + {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, + {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, ] [package.dependencies] @@ -521,111 +549,130 @@ test = ["pytest"] [[package]] name = "coverage" -version = "7.6.4" +version = "7.6.10" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.9" files = [ - {file = "coverage-7.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f8ae553cba74085db385d489c7a792ad66f7f9ba2ee85bfa508aeb84cf0ba07"}, - {file = "coverage-7.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8165b796df0bd42e10527a3f493c592ba494f16ef3c8b531288e3d0d72c1f6f0"}, - {file = "coverage-7.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c8b95bf47db6d19096a5e052ffca0a05f335bc63cef281a6e8fe864d450a72"}, - {file = "coverage-7.6.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ed9281d1b52628e81393f5eaee24a45cbd64965f41857559c2b7ff19385df51"}, - {file = "coverage-7.6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0809082ee480bb8f7416507538243c8863ac74fd8a5d2485c46f0f7499f2b491"}, - {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d541423cdd416b78626b55f123412fcf979d22a2c39fce251b350de38c15c15b"}, - {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:58809e238a8a12a625c70450b48e8767cff9eb67c62e6154a642b21ddf79baea"}, - {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c9b8e184898ed014884ca84c70562b4a82cbc63b044d366fedc68bc2b2f3394a"}, - {file = "coverage-7.6.4-cp310-cp310-win32.whl", hash = "sha256:6bd818b7ea14bc6e1f06e241e8234508b21edf1b242d49831831a9450e2f35fa"}, - {file = "coverage-7.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:06babbb8f4e74b063dbaeb74ad68dfce9186c595a15f11f5d5683f748fa1d172"}, - {file = "coverage-7.6.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:73d2b73584446e66ee633eaad1a56aad577c077f46c35ca3283cd687b7715b0b"}, - {file = "coverage-7.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:51b44306032045b383a7a8a2c13878de375117946d68dcb54308111f39775a25"}, - {file = "coverage-7.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b3fb02fe73bed561fa12d279a417b432e5b50fe03e8d663d61b3d5990f29546"}, - {file = "coverage-7.6.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed8fe9189d2beb6edc14d3ad19800626e1d9f2d975e436f84e19efb7fa19469b"}, - {file = "coverage-7.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b369ead6527d025a0fe7bd3864e46dbee3aa8f652d48df6174f8d0bac9e26e0e"}, - {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ade3ca1e5f0ff46b678b66201f7ff477e8fa11fb537f3b55c3f0568fbfe6e718"}, - {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:27fb4a050aaf18772db513091c9c13f6cb94ed40eacdef8dad8411d92d9992db"}, - {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4f704f0998911abf728a7783799444fcbbe8261c4a6c166f667937ae6a8aa522"}, - {file = "coverage-7.6.4-cp311-cp311-win32.whl", hash = "sha256:29155cd511ee058e260db648b6182c419422a0d2e9a4fa44501898cf918866cf"}, - {file = "coverage-7.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:8902dd6a30173d4ef09954bfcb24b5d7b5190cf14a43170e386979651e09ba19"}, - {file = "coverage-7.6.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:12394842a3a8affa3ba62b0d4ab7e9e210c5e366fbac3e8b2a68636fb19892c2"}, - {file = "coverage-7.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2b6b4c83d8e8ea79f27ab80778c19bc037759aea298da4b56621f4474ffeb117"}, - {file = "coverage-7.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d5b8007f81b88696d06f7df0cb9af0d3b835fe0c8dbf489bad70b45f0e45613"}, - {file = "coverage-7.6.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b57b768feb866f44eeed9f46975f3d6406380275c5ddfe22f531a2bf187eda27"}, - {file = "coverage-7.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5915fcdec0e54ee229926868e9b08586376cae1f5faa9bbaf8faf3561b393d52"}, - {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0b58c672d14f16ed92a48db984612f5ce3836ae7d72cdd161001cc54512571f2"}, - {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2fdef0d83a2d08d69b1f2210a93c416d54e14d9eb398f6ab2f0a209433db19e1"}, - {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8cf717ee42012be8c0cb205dbbf18ffa9003c4cbf4ad078db47b95e10748eec5"}, - {file = "coverage-7.6.4-cp312-cp312-win32.whl", hash = "sha256:7bb92c539a624cf86296dd0c68cd5cc286c9eef2d0c3b8b192b604ce9de20a17"}, - {file = "coverage-7.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:1032e178b76a4e2b5b32e19d0fd0abbce4b58e77a1ca695820d10e491fa32b08"}, - {file = "coverage-7.6.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:023bf8ee3ec6d35af9c1c6ccc1d18fa69afa1cb29eaac57cb064dbb262a517f9"}, - {file = "coverage-7.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0ac3d42cb51c4b12df9c5f0dd2f13a4f24f01943627120ec4d293c9181219ba"}, - {file = "coverage-7.6.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8fe4984b431f8621ca53d9380901f62bfb54ff759a1348cd140490ada7b693c"}, - {file = "coverage-7.6.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5fbd612f8a091954a0c8dd4c0b571b973487277d26476f8480bfa4b2a65b5d06"}, - {file = "coverage-7.6.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dacbc52de979f2823a819571f2e3a350a7e36b8cb7484cdb1e289bceaf35305f"}, - {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dab4d16dfef34b185032580e2f2f89253d302facba093d5fa9dbe04f569c4f4b"}, - {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:862264b12ebb65ad8d863d51f17758b1684560b66ab02770d4f0baf2ff75da21"}, - {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5beb1ee382ad32afe424097de57134175fea3faf847b9af002cc7895be4e2a5a"}, - {file = "coverage-7.6.4-cp313-cp313-win32.whl", hash = "sha256:bf20494da9653f6410213424f5f8ad0ed885e01f7e8e59811f572bdb20b8972e"}, - {file = "coverage-7.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:182e6cd5c040cec0a1c8d415a87b67ed01193ed9ad458ee427741c7d8513d963"}, - {file = "coverage-7.6.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a181e99301a0ae128493a24cfe5cfb5b488c4e0bf2f8702091473d033494d04f"}, - {file = "coverage-7.6.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:df57bdbeffe694e7842092c5e2e0bc80fff7f43379d465f932ef36f027179806"}, - {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bcd1069e710600e8e4cf27f65c90c7843fa8edfb4520fb0ccb88894cad08b11"}, - {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99b41d18e6b2a48ba949418db48159d7a2e81c5cc290fc934b7d2380515bd0e3"}, - {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6b1e54712ba3474f34b7ef7a41e65bd9037ad47916ccb1cc78769bae324c01a"}, - {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53d202fd109416ce011578f321460795abfe10bb901b883cafd9b3ef851bacfc"}, - {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:c48167910a8f644671de9f2083a23630fbf7a1cb70ce939440cd3328e0919f70"}, - {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cc8ff50b50ce532de2fa7a7daae9dd12f0a699bfcd47f20945364e5c31799fef"}, - {file = "coverage-7.6.4-cp313-cp313t-win32.whl", hash = "sha256:b8d3a03d9bfcaf5b0141d07a88456bb6a4c3ce55c080712fec8418ef3610230e"}, - {file = "coverage-7.6.4-cp313-cp313t-win_amd64.whl", hash = "sha256:f3ddf056d3ebcf6ce47bdaf56142af51bb7fad09e4af310241e9db7a3a8022e1"}, - {file = "coverage-7.6.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9cb7fa111d21a6b55cbf633039f7bc2749e74932e3aa7cb7333f675a58a58bf3"}, - {file = "coverage-7.6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:11a223a14e91a4693d2d0755c7a043db43d96a7450b4f356d506c2562c48642c"}, - {file = "coverage-7.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a413a096c4cbac202433c850ee43fa326d2e871b24554da8327b01632673a076"}, - {file = "coverage-7.6.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00a1d69c112ff5149cabe60d2e2ee948752c975d95f1e1096742e6077affd376"}, - {file = "coverage-7.6.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f76846299ba5c54d12c91d776d9605ae33f8ae2b9d1d3c3703cf2db1a67f2c0"}, - {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fe439416eb6380de434886b00c859304338f8b19f6f54811984f3420a2e03858"}, - {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:0294ca37f1ba500667b1aef631e48d875ced93ad5e06fa665a3295bdd1d95111"}, - {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6f01ba56b1c0e9d149f9ac85a2f999724895229eb36bd997b61e62999e9b0901"}, - {file = "coverage-7.6.4-cp39-cp39-win32.whl", hash = "sha256:bc66f0bf1d7730a17430a50163bb264ba9ded56739112368ba985ddaa9c3bd09"}, - {file = "coverage-7.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:c481b47f6b5845064c65a7bc78bc0860e635a9b055af0df46fdf1c58cebf8e8f"}, - {file = "coverage-7.6.4-pp39.pp310-none-any.whl", hash = "sha256:3c65d37f3a9ebb703e710befdc489a38683a5b152242664b973a7b7b22348a4e"}, - {file = "coverage-7.6.4.tar.gz", hash = "sha256:29fc0f17b1d3fea332f8001d4558f8214af7f1d87a345f3a133c901d60347c73"}, + {file = "coverage-7.6.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5c912978f7fbf47ef99cec50c4401340436d200d41d714c7a4766f377c5b7b78"}, + {file = "coverage-7.6.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a01ec4af7dfeb96ff0078ad9a48810bb0cc8abcb0115180c6013a6b26237626c"}, + {file = "coverage-7.6.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3b204c11e2b2d883946fe1d97f89403aa1811df28ce0447439178cc7463448a"}, + {file = "coverage-7.6.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32ee6d8491fcfc82652a37109f69dee9a830e9379166cb73c16d8dc5c2915165"}, + {file = "coverage-7.6.10-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675cefc4c06e3b4c876b85bfb7c59c5e2218167bbd4da5075cbe3b5790a28988"}, + {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f4f620668dbc6f5e909a0946a877310fb3d57aea8198bde792aae369ee1c23b5"}, + {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:4eea95ef275de7abaef630c9b2c002ffbc01918b726a39f5a4353916ec72d2f3"}, + {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e2f0280519e42b0a17550072861e0bc8a80a0870de260f9796157d3fca2733c5"}, + {file = "coverage-7.6.10-cp310-cp310-win32.whl", hash = "sha256:bc67deb76bc3717f22e765ab3e07ee9c7a5e26b9019ca19a3b063d9f4b874244"}, + {file = "coverage-7.6.10-cp310-cp310-win_amd64.whl", hash = "sha256:0f460286cb94036455e703c66988851d970fdfd8acc2a1122ab7f4f904e4029e"}, + {file = "coverage-7.6.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ea3c8f04b3e4af80e17bab607c386a830ffc2fb88a5484e1df756478cf70d1d3"}, + {file = "coverage-7.6.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:507a20fc863cae1d5720797761b42d2d87a04b3e5aeb682ef3b7332e90598f43"}, + {file = "coverage-7.6.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d37a84878285b903c0fe21ac8794c6dab58150e9359f1aaebbeddd6412d53132"}, + {file = "coverage-7.6.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a534738b47b0de1995f85f582d983d94031dffb48ab86c95bdf88dc62212142f"}, + {file = "coverage-7.6.10-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d7a2bf79378d8fb8afaa994f91bfd8215134f8631d27eba3e0e2c13546ce994"}, + {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6713ba4b4ebc330f3def51df1d5d38fad60b66720948112f114968feb52d3f99"}, + {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab32947f481f7e8c763fa2c92fd9f44eeb143e7610c4ca9ecd6a36adab4081bd"}, + {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7bbd8c8f1b115b892e34ba66a097b915d3871db7ce0e6b9901f462ff3a975377"}, + {file = "coverage-7.6.10-cp311-cp311-win32.whl", hash = "sha256:299e91b274c5c9cdb64cbdf1b3e4a8fe538a7a86acdd08fae52301b28ba297f8"}, + {file = "coverage-7.6.10-cp311-cp311-win_amd64.whl", hash = "sha256:489a01f94aa581dbd961f306e37d75d4ba16104bbfa2b0edb21d29b73be83609"}, + {file = "coverage-7.6.10-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:27c6e64726b307782fa5cbe531e7647aee385a29b2107cd87ba7c0105a5d3853"}, + {file = "coverage-7.6.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c56e097019e72c373bae32d946ecf9858fda841e48d82df7e81c63ac25554078"}, + {file = "coverage-7.6.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7827a5bc7bdb197b9e066cdf650b2887597ad124dd99777332776f7b7c7d0d0"}, + {file = "coverage-7.6.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:204a8238afe787323a8b47d8be4df89772d5c1e4651b9ffa808552bdf20e1d50"}, + {file = "coverage-7.6.10-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67926f51821b8e9deb6426ff3164870976fe414d033ad90ea75e7ed0c2e5022"}, + {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e78b270eadb5702938c3dbe9367f878249b5ef9a2fcc5360ac7bff694310d17b"}, + {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:714f942b9c15c3a7a5fe6876ce30af831c2ad4ce902410b7466b662358c852c0"}, + {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:abb02e2f5a3187b2ac4cd46b8ced85a0858230b577ccb2c62c81482ca7d18852"}, + {file = "coverage-7.6.10-cp312-cp312-win32.whl", hash = "sha256:55b201b97286cf61f5e76063f9e2a1d8d2972fc2fcfd2c1272530172fd28c359"}, + {file = "coverage-7.6.10-cp312-cp312-win_amd64.whl", hash = "sha256:e4ae5ac5e0d1e4edfc9b4b57b4cbecd5bc266a6915c500f358817a8496739247"}, + {file = "coverage-7.6.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:05fca8ba6a87aabdd2d30d0b6c838b50510b56cdcfc604d40760dae7153b73d9"}, + {file = "coverage-7.6.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9e80eba8801c386f72e0712a0453431259c45c3249f0009aff537a517b52942b"}, + {file = "coverage-7.6.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a372c89c939d57abe09e08c0578c1d212e7a678135d53aa16eec4430adc5e690"}, + {file = "coverage-7.6.10-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ec22b5e7fe7a0fa8509181c4aac1db48f3dd4d3a566131b313d1efc102892c18"}, + {file = "coverage-7.6.10-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26bcf5c4df41cad1b19c84af71c22cbc9ea9a547fc973f1f2cc9a290002c8b3c"}, + {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e4630c26b6084c9b3cb53b15bd488f30ceb50b73c35c5ad7871b869cb7365fd"}, + {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2396e8116db77789f819d2bc8a7e200232b7a282c66e0ae2d2cd84581a89757e"}, + {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79109c70cc0882e4d2d002fe69a24aa504dec0cc17169b3c7f41a1d341a73694"}, + {file = "coverage-7.6.10-cp313-cp313-win32.whl", hash = "sha256:9e1747bab246d6ff2c4f28b4d186b205adced9f7bd9dc362051cc37c4a0c7bd6"}, + {file = "coverage-7.6.10-cp313-cp313-win_amd64.whl", hash = "sha256:254f1a3b1eef5f7ed23ef265eaa89c65c8c5b6b257327c149db1ca9d4a35f25e"}, + {file = "coverage-7.6.10-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2ccf240eb719789cedbb9fd1338055de2761088202a9a0b73032857e53f612fe"}, + {file = "coverage-7.6.10-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0c807ca74d5a5e64427c8805de15b9ca140bba13572d6d74e262f46f50b13273"}, + {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bcfa46d7709b5a7ffe089075799b902020b62e7ee56ebaed2f4bdac04c508d8"}, + {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e0de1e902669dccbf80b0415fb6b43d27edca2fbd48c74da378923b05316098"}, + {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f7b444c42bbc533aaae6b5a2166fd1a797cdb5eb58ee51a92bee1eb94a1e1cb"}, + {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b330368cb99ef72fcd2dc3ed260adf67b31499584dc8a20225e85bfe6f6cfed0"}, + {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9a7cfb50515f87f7ed30bc882f68812fd98bc2852957df69f3003d22a2aa0abf"}, + {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f93531882a5f68c28090f901b1d135de61b56331bba82028489bc51bdd818d2"}, + {file = "coverage-7.6.10-cp313-cp313t-win32.whl", hash = "sha256:89d76815a26197c858f53c7f6a656686ec392b25991f9e409bcef020cd532312"}, + {file = "coverage-7.6.10-cp313-cp313t-win_amd64.whl", hash = "sha256:54a5f0f43950a36312155dae55c505a76cd7f2b12d26abeebbe7a0b36dbc868d"}, + {file = "coverage-7.6.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:656c82b8a0ead8bba147de9a89bda95064874c91a3ed43a00e687f23cc19d53a"}, + {file = "coverage-7.6.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ccc2b70a7ed475c68ceb548bf69cec1e27305c1c2606a5eb7c3afff56a1b3b27"}, + {file = "coverage-7.6.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5e37dc41d57ceba70956fa2fc5b63c26dba863c946ace9705f8eca99daecdc4"}, + {file = "coverage-7.6.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0aa9692b4fdd83a4647eeb7db46410ea1322b5ed94cd1715ef09d1d5922ba87f"}, + {file = "coverage-7.6.10-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa744da1820678b475e4ba3dfd994c321c5b13381d1041fe9c608620e6676e25"}, + {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c0b1818063dc9e9d838c09e3a473c1422f517889436dd980f5d721899e66f315"}, + {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:59af35558ba08b758aec4d56182b222976330ef8d2feacbb93964f576a7e7a90"}, + {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7ed2f37cfce1ce101e6dffdfd1c99e729dd2ffc291d02d3e2d0af8b53d13840d"}, + {file = "coverage-7.6.10-cp39-cp39-win32.whl", hash = "sha256:4bcc276261505d82f0ad426870c3b12cb177752834a633e737ec5ee79bbdff18"}, + {file = "coverage-7.6.10-cp39-cp39-win_amd64.whl", hash = "sha256:457574f4599d2b00f7f637a0700a6422243b3565509457b2dbd3f50703e11f59"}, + {file = "coverage-7.6.10-pp39.pp310-none-any.whl", hash = "sha256:fd34e7b3405f0cc7ab03d54a334c17a9e802897580d964bd8c2001f4b9fd488f"}, + {file = "coverage-7.6.10.tar.gz", hash = "sha256:7fb105327c8f8f0682e29843e2ff96af9dcbe5bab8eeb4b398c6a33a16d80a23"}, ] [package.extras] toml = ["tomli"] +[[package]] +name = "cssselect2" +version = "0.7.0" +description = "CSS selectors for Python ElementTree" +optional = false +python-versions = ">=3.7" +files = [ + {file = "cssselect2-0.7.0-py3-none-any.whl", hash = "sha256:fd23a65bfd444595913f02fc71f6b286c29261e354c41d722ca7a261a49b5969"}, + {file = "cssselect2-0.7.0.tar.gz", hash = "sha256:1ccd984dab89fc68955043aca4e1b03e0cf29cad9880f6e28e3ba7a74b14aa5a"}, +] + +[package.dependencies] +tinycss2 = "*" +webencodings = "*" + +[package.extras] +doc = ["sphinx", "sphinx_rtd_theme"] +test = ["flake8", "isort", "pytest"] + [[package]] name = "debugpy" -version = "1.8.8" +version = "1.8.12" description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" files = [ - {file = "debugpy-1.8.8-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:e59b1607c51b71545cb3496876544f7186a7a27c00b436a62f285603cc68d1c6"}, - {file = "debugpy-1.8.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6531d952b565b7cb2fbd1ef5df3d333cf160b44f37547a4e7cf73666aca5d8d"}, - {file = "debugpy-1.8.8-cp310-cp310-win32.whl", hash = "sha256:b01f4a5e5c5fb1d34f4ccba99a20ed01eabc45a4684f4948b5db17a319dfb23f"}, - {file = "debugpy-1.8.8-cp310-cp310-win_amd64.whl", hash = "sha256:535f4fb1c024ddca5913bb0eb17880c8f24ba28aa2c225059db145ee557035e9"}, - {file = "debugpy-1.8.8-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:c399023146e40ae373753a58d1be0a98bf6397fadc737b97ad612886b53df318"}, - {file = "debugpy-1.8.8-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09cc7b162586ea2171eea055985da2702b0723f6f907a423c9b2da5996ad67ba"}, - {file = "debugpy-1.8.8-cp311-cp311-win32.whl", hash = "sha256:eea8821d998ebeb02f0625dd0d76839ddde8cbf8152ebbe289dd7acf2cdc6b98"}, - {file = "debugpy-1.8.8-cp311-cp311-win_amd64.whl", hash = "sha256:d4483836da2a533f4b1454dffc9f668096ac0433de855f0c22cdce8c9f7e10c4"}, - {file = "debugpy-1.8.8-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:0cc94186340be87b9ac5a707184ec8f36547fb66636d1029ff4f1cc020e53996"}, - {file = "debugpy-1.8.8-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64674e95916e53c2e9540a056e5f489e0ad4872645399d778f7c598eacb7b7f9"}, - {file = "debugpy-1.8.8-cp312-cp312-win32.whl", hash = "sha256:5c6e885dbf12015aed73770f29dec7023cb310d0dc2ba8bfbeb5c8e43f80edc9"}, - {file = "debugpy-1.8.8-cp312-cp312-win_amd64.whl", hash = "sha256:19ffbd84e757a6ca0113574d1bf5a2298b3947320a3e9d7d8dc3377f02d9f864"}, - {file = "debugpy-1.8.8-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:705cd123a773d184860ed8dae99becd879dfec361098edbefb5fc0d3683eb804"}, - {file = "debugpy-1.8.8-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:890fd16803f50aa9cb1a9b9b25b5ec321656dd6b78157c74283de241993d086f"}, - {file = "debugpy-1.8.8-cp313-cp313-win32.whl", hash = "sha256:90244598214bbe704aa47556ec591d2f9869ff9e042e301a2859c57106649add"}, - {file = "debugpy-1.8.8-cp313-cp313-win_amd64.whl", hash = "sha256:4b93e4832fd4a759a0c465c967214ed0c8a6e8914bced63a28ddb0dd8c5f078b"}, - {file = "debugpy-1.8.8-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:143ef07940aeb8e7316de48f5ed9447644da5203726fca378f3a6952a50a9eae"}, - {file = "debugpy-1.8.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f95651bdcbfd3b27a408869a53fbefcc2bcae13b694daee5f1365b1b83a00113"}, - {file = "debugpy-1.8.8-cp38-cp38-win32.whl", hash = "sha256:26b461123a030e82602a750fb24d7801776aa81cd78404e54ab60e8b5fecdad5"}, - {file = "debugpy-1.8.8-cp38-cp38-win_amd64.whl", hash = "sha256:f3cbf1833e644a3100eadb6120f25be8a532035e8245584c4f7532937edc652a"}, - {file = "debugpy-1.8.8-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:53709d4ec586b525724819dc6af1a7703502f7e06f34ded7157f7b1f963bb854"}, - {file = "debugpy-1.8.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a9c013077a3a0000e83d97cf9cc9328d2b0bbb31f56b0e99ea3662d29d7a6a2"}, - {file = "debugpy-1.8.8-cp39-cp39-win32.whl", hash = "sha256:ffe94dd5e9a6739a75f0b85316dc185560db3e97afa6b215628d1b6a17561cb2"}, - {file = "debugpy-1.8.8-cp39-cp39-win_amd64.whl", hash = "sha256:5c0e5a38c7f9b481bf31277d2f74d2109292179081f11108e668195ef926c0f9"}, - {file = "debugpy-1.8.8-py2.py3-none-any.whl", hash = "sha256:ec684553aba5b4066d4de510859922419febc710df7bba04fe9e7ef3de15d34f"}, - {file = "debugpy-1.8.8.zip", hash = "sha256:e6355385db85cbd666be703a96ab7351bc9e6c61d694893206f8001e22aee091"}, + {file = "debugpy-1.8.12-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:a2ba7ffe58efeae5b8fad1165357edfe01464f9aef25e814e891ec690e7dd82a"}, + {file = "debugpy-1.8.12-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbbd4149c4fc5e7d508ece083e78c17442ee13b0e69bfa6bd63003e486770f45"}, + {file = "debugpy-1.8.12-cp310-cp310-win32.whl", hash = "sha256:b202f591204023b3ce62ff9a47baa555dc00bb092219abf5caf0e3718ac20e7c"}, + {file = "debugpy-1.8.12-cp310-cp310-win_amd64.whl", hash = "sha256:9649eced17a98ce816756ce50433b2dd85dfa7bc92ceb60579d68c053f98dff9"}, + {file = "debugpy-1.8.12-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:36f4829839ef0afdfdd208bb54f4c3d0eea86106d719811681a8627ae2e53dd5"}, + {file = "debugpy-1.8.12-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a28ed481d530e3138553be60991d2d61103ce6da254e51547b79549675f539b7"}, + {file = "debugpy-1.8.12-cp311-cp311-win32.whl", hash = "sha256:4ad9a94d8f5c9b954e0e3b137cc64ef3f579d0df3c3698fe9c3734ee397e4abb"}, + {file = "debugpy-1.8.12-cp311-cp311-win_amd64.whl", hash = "sha256:4703575b78dd697b294f8c65588dc86874ed787b7348c65da70cfc885efdf1e1"}, + {file = "debugpy-1.8.12-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:7e94b643b19e8feb5215fa508aee531387494bf668b2eca27fa769ea11d9f498"}, + {file = "debugpy-1.8.12-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:086b32e233e89a2740c1615c2f775c34ae951508b28b308681dbbb87bba97d06"}, + {file = "debugpy-1.8.12-cp312-cp312-win32.whl", hash = "sha256:2ae5df899732a6051b49ea2632a9ea67f929604fd2b036613a9f12bc3163b92d"}, + {file = "debugpy-1.8.12-cp312-cp312-win_amd64.whl", hash = "sha256:39dfbb6fa09f12fae32639e3286112fc35ae976114f1f3d37375f3130a820969"}, + {file = "debugpy-1.8.12-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:696d8ae4dff4cbd06bf6b10d671e088b66669f110c7c4e18a44c43cf75ce966f"}, + {file = "debugpy-1.8.12-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:898fba72b81a654e74412a67c7e0a81e89723cfe2a3ea6fcd3feaa3395138ca9"}, + {file = "debugpy-1.8.12-cp313-cp313-win32.whl", hash = "sha256:22a11c493c70413a01ed03f01c3c3a2fc4478fc6ee186e340487b2edcd6f4180"}, + {file = "debugpy-1.8.12-cp313-cp313-win_amd64.whl", hash = "sha256:fdb3c6d342825ea10b90e43d7f20f01535a72b3a1997850c0c3cefa5c27a4a2c"}, + {file = "debugpy-1.8.12-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:b0232cd42506d0c94f9328aaf0d1d0785f90f87ae72d9759df7e5051be039738"}, + {file = "debugpy-1.8.12-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9af40506a59450f1315168d47a970db1a65aaab5df3833ac389d2899a5d63b3f"}, + {file = "debugpy-1.8.12-cp38-cp38-win32.whl", hash = "sha256:5cc45235fefac57f52680902b7d197fb2f3650112379a6fa9aa1b1c1d3ed3f02"}, + {file = "debugpy-1.8.12-cp38-cp38-win_amd64.whl", hash = "sha256:557cc55b51ab2f3371e238804ffc8510b6ef087673303890f57a24195d096e61"}, + {file = "debugpy-1.8.12-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:b5c6c967d02fee30e157ab5227706f965d5c37679c687b1e7bbc5d9e7128bd41"}, + {file = "debugpy-1.8.12-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88a77f422f31f170c4b7e9ca58eae2a6c8e04da54121900651dfa8e66c29901a"}, + {file = "debugpy-1.8.12-cp39-cp39-win32.whl", hash = "sha256:a4042edef80364239f5b7b5764e55fd3ffd40c32cf6753da9bda4ff0ac466018"}, + {file = "debugpy-1.8.12-cp39-cp39-win_amd64.whl", hash = "sha256:f30b03b0f27608a0b26c75f0bb8a880c752c0e0b01090551b9d87c7d783e2069"}, + {file = "debugpy-1.8.12-py2.py3-none-any.whl", hash = "sha256:274b6a2040349b5c9864e475284bce5bb062e63dce368a394b8cc865ae3b00c6"}, + {file = "debugpy-1.8.12.tar.gz", hash = "sha256:646530b04f45c830ceae8e491ca1c9320a2d2f0efea3141487c82130aba70dce"}, ] [[package]] @@ -667,13 +714,13 @@ profile = ["gprof2dot (>=2022.7.29)"] [[package]] name = "executing" -version = "2.1.0" +version = "2.2.0" description = "Get the currently executing AST node of a frame, and other information" optional = false python-versions = ">=3.8" files = [ - {file = "executing-2.1.0-py2.py3-none-any.whl", hash = "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf"}, - {file = "executing-2.1.0.tar.gz", hash = "sha256:8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab"}, + {file = "executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa"}, + {file = "executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755"}, ] [package.extras] @@ -681,13 +728,13 @@ tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipyth [[package]] name = "fastjsonschema" -version = "2.20.0" +version = "2.21.1" description = "Fastest Python implementation of JSON schema" optional = false python-versions = "*" files = [ - {file = "fastjsonschema-2.20.0-py3-none-any.whl", hash = "sha256:5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a"}, - {file = "fastjsonschema-2.20.0.tar.gz", hash = "sha256:3d48fc5300ee96f5d116f10fe6f28d938e6008f59a6a025c2649475b87f76a23"}, + {file = "fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667"}, + {file = "fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4"}, ] [package.extras] @@ -737,6 +784,52 @@ python-dateutil = ">=2.8.1" [package.extras] dev = ["flake8", "markdown", "twine", "wheel"] +[[package]] +name = "gitdb" +version = "4.0.12" +description = "Git Object Database" +optional = false +python-versions = ">=3.7" +files = [ + {file = "gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf"}, + {file = "gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571"}, +] + +[package.dependencies] +smmap = ">=3.0.1,<6" + +[[package]] +name = "gitpython" +version = "3.1.44" +description = "GitPython is a Python library used to interact with Git repositories" +optional = false +python-versions = ">=3.7" +files = [ + {file = "GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110"}, + {file = "gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269"}, +] + +[package.dependencies] +gitdb = ">=4.0.1,<5" + +[package.extras] +doc = ["sphinx (>=7.1.2,<7.2)", "sphinx-autodoc-typehints", "sphinx_rtd_theme"] +test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest (>=7.3.1)", "pytest-cov", "pytest-instafail", "pytest-mock", "pytest-sugar", "typing-extensions"] + +[[package]] +name = "griffe" +version = "1.5.6" +description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." +optional = false +python-versions = ">=3.9" +files = [ + {file = "griffe-1.5.6-py3-none-any.whl", hash = "sha256:b2a3afe497c6c1f952e54a23095ecc09435016293e77af8478ed65df1022a394"}, + {file = "griffe-1.5.6.tar.gz", hash = "sha256:181f6666d5aceb6cd6e2da5a2b646cfb431e47a0da1fda283845734b67e10944"}, +] + +[package.dependencies] +colorama = ">=0.4" + [[package]] name = "h11" version = "0.14.0" @@ -750,13 +843,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.6" +version = "1.0.7" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, - {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, + {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, + {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, ] [package.dependencies] @@ -771,13 +864,13 @@ trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" -version = "0.27.2" +version = "0.28.1" description = "The next generation HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, - {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, + {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, + {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, ] [package.dependencies] @@ -785,7 +878,6 @@ anyio = "*" certifi = "*" httpcore = "==1.*" idna = "*" -sniffio = "*" [package.extras] brotli = ["brotli", "brotlicffi"] @@ -854,13 +946,13 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio [[package]] name = "ipython" -version = "8.29.0" +version = "8.32.0" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.10" files = [ - {file = "ipython-8.29.0-py3-none-any.whl", hash = "sha256:0188a1bd83267192123ccea7f4a8ed0a78910535dbaa3f37671dca76ebd429c8"}, - {file = "ipython-8.29.0.tar.gz", hash = "sha256:40b60e15b22591450eef73e40a027cf77bd652e757523eebc5bd7c7c498290eb"}, + {file = "ipython-8.32.0-py3-none-any.whl", hash = "sha256:cae85b0c61eff1fc48b0a8002de5958b6528fa9c8defb1894da63f42613708aa"}, + {file = "ipython-8.32.0.tar.gz", hash = "sha256:be2c91895b0b9ea7ba49d33b23e2040c352b33eb6a519cca7ce6e0c743444251"}, ] [package.dependencies] @@ -869,16 +961,16 @@ decorator = "*" jedi = ">=0.16" matplotlib-inline = "*" pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} -prompt-toolkit = ">=3.0.41,<3.1.0" +prompt_toolkit = ">=3.0.41,<3.1.0" pygments = ">=2.4.0" -stack-data = "*" +stack_data = "*" traitlets = ">=5.13.0" -typing-extensions = {version = ">=4.6", markers = "python_version < \"3.12\""} +typing_extensions = {version = ">=4.6", markers = "python_version < \"3.12\""} [package.extras] all = ["ipython[black,doc,kernel,matplotlib,nbconvert,nbformat,notebook,parallel,qtconsole]", "ipython[test,test-extra]"] black = ["black"] -doc = ["docrepr", "exceptiongroup", "intersphinx-registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli", "typing-extensions"] +doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli", "typing_extensions"] kernel = ["ipykernel"] matplotlib = ["matplotlib"] nbconvert = ["nbconvert"] @@ -926,17 +1018,18 @@ arrow = ">=0.15.0" [[package]] name = "isort" -version = "5.13.2" +version = "6.0.0" description = "A Python utility / library to sort Python imports." optional = false -python-versions = ">=3.8.0" +python-versions = ">=3.9.0" files = [ - {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, - {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, + {file = "isort-6.0.0-py3-none-any.whl", hash = "sha256:567954102bb47bb12e0fae62606570faacddd441e45683968c8d1734fb1af892"}, + {file = "isort-6.0.0.tar.gz", hash = "sha256:75d9d8a1438a9432a7d7b54f2d3b45cad9a4a0fdba43617d9873379704a8bdf1"}, ] [package.extras] -colors = ["colorama (>=0.4.6)"] +colors = ["colorama"] +plugins = ["setuptools"] [[package]] name = "jedi" @@ -959,13 +1052,13 @@ testing = ["Django", "attrs", "colorama", "docopt", "pytest (<9.0.0)"] [[package]] name = "jinja2" -version = "3.1.4" +version = "3.1.5" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, + {file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"}, + {file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"}, ] [package.dependencies] @@ -976,13 +1069,13 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "json5" -version = "0.9.28" +version = "0.10.0" description = "A Python implementation of the JSON5 data format." optional = false python-versions = ">=3.8.0" files = [ - {file = "json5-0.9.28-py3-none-any.whl", hash = "sha256:29c56f1accdd8bc2e037321237662034a7e07921e2b7223281a5ce2c46f0c4df"}, - {file = "json5-0.9.28.tar.gz", hash = "sha256:1f82f36e615bc5b42f1bbd49dbc94b12563c56408c6ffa06414ea310890e9a6e"}, + {file = "json5-0.10.0-py3-none-any.whl", hash = "sha256:19b23410220a7271e8377f81ba8aacba2fdd56947fbb137ee5977cbe1f5e8dfa"}, + {file = "json5-0.10.0.tar.gz", hash = "sha256:e66941c8f0a02026943c52c2eb34ebeb2a6f819a0be05920a6f5243cd30fd559"}, ] [package.extras] @@ -1129,17 +1222,18 @@ test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout" [[package]] name = "jupyter-events" -version = "0.10.0" +version = "0.12.0" description = "Jupyter Event System library" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "jupyter_events-0.10.0-py3-none-any.whl", hash = "sha256:4b72130875e59d57716d327ea70d3ebc3af1944d3717e5a498b8a06c6c159960"}, - {file = "jupyter_events-0.10.0.tar.gz", hash = "sha256:670b8229d3cc882ec782144ed22e0d29e1c2d639263f92ca8383e66682845e22"}, + {file = "jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb"}, + {file = "jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b"}, ] [package.dependencies] jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]} +packaging = "*" python-json-logger = ">=2.0.4" pyyaml = ">=5.3" referencing = "*" @@ -1149,7 +1243,7 @@ traitlets = ">=5.3" [package.extras] cli = ["click", "rich"] -docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"] +docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme (>=0.16)", "sphinx (>=8)", "sphinxcontrib-spelling"] test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"] [[package]] @@ -1168,13 +1262,13 @@ jupyter-server = ">=1.1.2" [[package]] name = "jupyter-server" -version = "2.14.2" +version = "2.15.0" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "jupyter_server-2.14.2-py3-none-any.whl", hash = "sha256:47ff506127c2f7851a17bf4713434208fc490955d0e8632e95014a9a9afbeefd"}, - {file = "jupyter_server-2.14.2.tar.gz", hash = "sha256:66095021aa9638ced276c248b1d81862e4c50f292d575920bbe960de1c56b12b"}, + {file = "jupyter_server-2.15.0-py3-none-any.whl", hash = "sha256:872d989becf83517012ee669f09604aa4a28097c0bd90b2f424310156c2cdae3"}, + {file = "jupyter_server-2.15.0.tar.gz", hash = "sha256:9d446b8697b4f7337a1b7cdcac40778babdd93ba614b6d68ab1c0c918f1c4084"}, ] [package.dependencies] @@ -1183,7 +1277,7 @@ argon2-cffi = ">=21.1" jinja2 = ">=3.0.3" jupyter-client = ">=7.4.4" jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -jupyter-events = ">=0.9.0" +jupyter-events = ">=0.11.0" jupyter-server-terminals = ">=0.4.4" nbconvert = ">=6.4.4" nbformat = ">=5.3.0" @@ -1223,13 +1317,13 @@ test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (> [[package]] name = "jupyterlab" -version = "4.3.0" +version = "4.3.5" description = "JupyterLab computational environment" optional = false python-versions = ">=3.8" files = [ - {file = "jupyterlab-4.3.0-py3-none-any.whl", hash = "sha256:f67e1095ad61ae04349024f0b40345062ab108a0c6998d9810fec6a3c1a70cd5"}, - {file = "jupyterlab-4.3.0.tar.gz", hash = "sha256:7c6835cbf8df0af0ec8a39332e85ff11693fb9a468205343b4fc0bfbc74817e5"}, + {file = "jupyterlab-4.3.5-py3-none-any.whl", hash = "sha256:571bbdee20e4c5321ab5195bc41cf92a75a5cff886be5e57ce78dfa37a5e9fdb"}, + {file = "jupyterlab-4.3.5.tar.gz", hash = "sha256:c779bf72ced007d7d29d5bcef128e7fdda96ea69299e19b04a43635a7d641f9d"}, ] [package.dependencies] @@ -1243,7 +1337,7 @@ jupyter-server = ">=2.4.0,<3" jupyterlab-server = ">=2.27.1,<3" notebook-shim = ">=0.2" packaging = "*" -setuptools = ">=40.1.0" +setuptools = ">=40.8.0" tornado = ">=6.2.0" traitlets = "*" @@ -1459,13 +1553,13 @@ files = [ [[package]] name = "mistune" -version = "3.0.2" +version = "3.1.1" description = "A sane and fast Markdown parser with useful plugins and renderers" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"}, - {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"}, + {file = "mistune-3.1.1-py3-none-any.whl", hash = "sha256:02106ac2aa4f66e769debbfa028509a275069dcffce0dfa578edd7b991ee700a"}, + {file = "mistune-3.1.1.tar.gz", hash = "sha256:e0740d635f515119f7d1feb6f9b192ee60f0cc649f80a8f944f905706a21654c"}, ] [[package]] @@ -1500,13 +1594,13 @@ min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-imp [[package]] name = "mkdocs-autorefs" -version = "1.2.0" +version = "1.3.0" description = "Automatically link across pages in MkDocs." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "mkdocs_autorefs-1.2.0-py3-none-any.whl", hash = "sha256:d588754ae89bd0ced0c70c06f58566a4ee43471eeeee5202427da7de9ef85a2f"}, - {file = "mkdocs_autorefs-1.2.0.tar.gz", hash = "sha256:a86b93abff653521bda71cf3fc5596342b7a23982093915cb74273f67522190f"}, + {file = "mkdocs_autorefs-1.3.0-py3-none-any.whl", hash = "sha256:d180f9778a04e78b7134e31418f238bba56f56d6a8af97873946ff661befffb3"}, + {file = "mkdocs_autorefs-1.3.0.tar.gz", hash = "sha256:6867764c099ace9025d6ac24fd07b85a98335fbd30107ef01053697c8f46db61"}, ] [package.dependencies] @@ -1530,15 +1624,79 @@ mergedeep = ">=1.3.4" platformdirs = ">=2.2.0" pyyaml = ">=5.1" +[[package]] +name = "mkdocs-git-revision-date-localized-plugin" +version = "1.3.0" +description = "Mkdocs plugin that enables displaying the localized date of the last git modification of a markdown file." +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocs_git_revision_date_localized_plugin-1.3.0-py3-none-any.whl", hash = "sha256:c99377ee119372d57a9e47cff4e68f04cce634a74831c06bc89b33e456e840a1"}, + {file = "mkdocs_git_revision_date_localized_plugin-1.3.0.tar.gz", hash = "sha256:439e2f14582204050a664c258861c325064d97cdc848c541e48bb034a6c4d0cb"}, +] + +[package.dependencies] +babel = ">=2.7.0" +GitPython = "*" +mkdocs = ">=1.0" +pytz = "*" + +[package.extras] +all = ["GitPython", "babel (>=2.7.0)", "click", "codecov", "mkdocs (>=1.0)", "mkdocs-gen-files", "mkdocs-git-authors-plugin", "mkdocs-material", "mkdocs-static-i18n", "pytest", "pytest-cov", "pytz"] +base = ["GitPython", "babel (>=2.7.0)", "mkdocs (>=1.0)", "pytz"] +dev = ["click", "codecov", "mkdocs-gen-files", "mkdocs-git-authors-plugin", "mkdocs-material", "mkdocs-static-i18n", "pytest", "pytest-cov"] + +[[package]] +name = "mkdocs-material" +version = "9.6.2" +description = "Documentation that simply works" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocs_material-9.6.2-py3-none-any.whl", hash = "sha256:71d90dbd63b393ad11a4d90151dfe3dcbfcd802c0f29ce80bebd9bbac6abc753"}, + {file = "mkdocs_material-9.6.2.tar.gz", hash = "sha256:a3de1c5d4c745f10afa78b1a02f917b9dce0808fb206adc0f5bb48b58c1ca21f"}, +] + +[package.dependencies] +babel = ">=2.10,<3.0" +cairosvg = {version = ">=2.6,<3.0", optional = true, markers = "extra == \"imaging\""} +colorama = ">=0.4,<1.0" +jinja2 = ">=3.0,<4.0" +markdown = ">=3.2,<4.0" +mkdocs = ">=1.6,<2.0" +mkdocs-material-extensions = ">=1.3,<2.0" +paginate = ">=0.5,<1.0" +pillow = {version = ">=10.2,<11.0", optional = true, markers = "extra == \"imaging\""} +pygments = ">=2.16,<3.0" +pymdown-extensions = ">=10.2,<11.0" +regex = ">=2022.4" +requests = ">=2.26,<3.0" + +[package.extras] +git = ["mkdocs-git-committers-plugin-2 (>=1.1,<3)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] +imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] +recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] + +[[package]] +name = "mkdocs-material-extensions" +version = "1.3.1" +description = "Extension pack for Python Markdown and MkDocs Material." +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, + {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, +] + [[package]] name = "mkdocstrings" -version = "0.26.1" +version = "0.27.0" description = "Automatic documentation from sources, for MkDocs." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "mkdocstrings-0.26.1-py3-none-any.whl", hash = "sha256:29738bfb72b4608e8e55cc50fb8a54f325dc7ebd2014e4e3881a49892d5983cf"}, - {file = "mkdocstrings-0.26.1.tar.gz", hash = "sha256:bb8b8854d6713d5348ad05b069a09f3b79edbc6a0f33a34c6821141adb03fe33"}, + {file = "mkdocstrings-0.27.0-py3-none-any.whl", hash = "sha256:6ceaa7ea830770959b55a16203ac63da24badd71325b96af950e59fd37366332"}, + {file = "mkdocstrings-0.27.0.tar.gz", hash = "sha256:16adca6d6b0a1f9e0c07ff0b02ced8e16f228a9d65a37c063ec4c14d7b76a657"}, ] [package.dependencies] @@ -1556,6 +1714,22 @@ crystal = ["mkdocstrings-crystal (>=0.3.4)"] python = ["mkdocstrings-python (>=0.5.2)"] python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] +[[package]] +name = "mkdocstrings-python" +version = "1.13.0" +description = "A Python handler for mkdocstrings." +optional = false +python-versions = ">=3.9" +files = [ + {file = "mkdocstrings_python-1.13.0-py3-none-any.whl", hash = "sha256:b88bbb207bab4086434743849f8e796788b373bd32e7bfefbf8560ac45d88f97"}, + {file = "mkdocstrings_python-1.13.0.tar.gz", hash = "sha256:2dbd5757e8375b9720e81db16f52f1856bf59905428fd7ef88005d1370e2f64c"}, +] + +[package.dependencies] +griffe = ">=0.49" +mkdocs-autorefs = ">=1.2" +mkdocstrings = ">=0.26" + [[package]] name = "mypy-extensions" version = "1.0.0" @@ -1569,13 +1743,13 @@ files = [ [[package]] name = "nbclient" -version = "0.10.0" +version = "0.10.2" description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." optional = false -python-versions = ">=3.8.0" +python-versions = ">=3.9.0" files = [ - {file = "nbclient-0.10.0-py3-none-any.whl", hash = "sha256:f13e3529332a1f1f81d82a53210322476a168bb7090a0289c795fe9cc11c9d3f"}, - {file = "nbclient-0.10.0.tar.gz", hash = "sha256:4b3f1b7dba531e498449c4db4f53da339c91d449dc11e9af3a43b4eb5c5abb09"}, + {file = "nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d"}, + {file = "nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193"}, ] [package.dependencies] @@ -1586,23 +1760,23 @@ traitlets = ">=5.4" [package.extras] dev = ["pre-commit"] -docs = ["autodoc-traits", "mock", "moto", "myst-parser", "nbclient[test]", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling"] -test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"] +docs = ["autodoc-traits", "flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "mock", "moto", "myst-parser", "nbconvert (>=7.1.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling", "testpath", "xmltodict"] +test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.1.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"] [[package]] name = "nbconvert" -version = "7.16.4" +version = "7.16.6" description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." optional = false python-versions = ">=3.8" files = [ - {file = "nbconvert-7.16.4-py3-none-any.whl", hash = "sha256:05873c620fe520b6322bf8a5ad562692343fe3452abda5765c7a34b7d1aa3eb3"}, - {file = "nbconvert-7.16.4.tar.gz", hash = "sha256:86ca91ba266b0a448dc96fa6c5b9d98affabde2867b363258703536807f9f7f4"}, + {file = "nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b"}, + {file = "nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582"}, ] [package.dependencies] beautifulsoup4 = "*" -bleach = "!=5.0.0" +bleach = {version = "!=5.0.0", extras = ["css"]} defusedxml = "*" jinja2 = ">=3.0" jupyter-core = ">=4.7" @@ -1614,7 +1788,6 @@ nbformat = ">=5.7" packaging = "*" pandocfilters = ">=1.4.1" pygments = ">=2.4.1" -tinycss2 = "*" traitlets = ">=5.1" [package.extras] @@ -1679,26 +1852,26 @@ test = ["pytest (>=7.2)", "pytest-cov (>=4.0)"] [[package]] name = "notebook" -version = "7.0.7" +version = "7.3.2" description = "Jupyter Notebook - A web-based notebook environment for interactive computing" optional = false python-versions = ">=3.8" files = [ - {file = "notebook-7.0.7-py3-none-any.whl", hash = "sha256:289b606d7e173f75a18beb1406ef411b43f97f7a9c55ba03efa3622905a62346"}, - {file = "notebook-7.0.7.tar.gz", hash = "sha256:3bcff00c17b3ac142ef5f436d50637d936b274cfa0b41f6ac0175363de9b4e09"}, + {file = "notebook-7.3.2-py3-none-any.whl", hash = "sha256:e5f85fc59b69d3618d73cf27544418193ff8e8058d5bf61d315ce4f473556288"}, + {file = "notebook-7.3.2.tar.gz", hash = "sha256:705e83a1785f45b383bf3ee13cb76680b92d24f56fb0c7d2136fe1d850cd3ca8"}, ] [package.dependencies] jupyter-server = ">=2.4.0,<3" -jupyterlab = ">=4.0.2,<5" -jupyterlab-server = ">=2.22.1,<3" +jupyterlab = ">=4.3.4,<4.4" +jupyterlab-server = ">=2.27.1,<3" notebook-shim = ">=0.2,<0.3" tornado = ">=6.2.0" [package.extras] dev = ["hatch", "pre-commit"] docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.22.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] +test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] [[package]] name = "notebook-shim" @@ -1719,66 +1892,66 @@ test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync" [[package]] name = "numpy" -version = "2.1.3" +version = "2.2.2" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.10" files = [ - {file = "numpy-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c894b4305373b9c5576d7a12b473702afdf48ce5369c074ba304cc5ad8730dff"}, - {file = "numpy-2.1.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b47fbb433d3260adcd51eb54f92a2ffbc90a4595f8970ee00e064c644ac788f5"}, - {file = "numpy-2.1.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:825656d0743699c529c5943554d223c021ff0494ff1442152ce887ef4f7561a1"}, - {file = "numpy-2.1.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:6a4825252fcc430a182ac4dee5a505053d262c807f8a924603d411f6718b88fd"}, - {file = "numpy-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e711e02f49e176a01d0349d82cb5f05ba4db7d5e7e0defd026328e5cfb3226d3"}, - {file = "numpy-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78574ac2d1a4a02421f25da9559850d59457bac82f2b8d7a44fe83a64f770098"}, - {file = "numpy-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c7662f0e3673fe4e832fe07b65c50342ea27d989f92c80355658c7f888fcc83c"}, - {file = "numpy-2.1.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fa2d1337dc61c8dc417fbccf20f6d1e139896a30721b7f1e832b2bb6ef4eb6c4"}, - {file = "numpy-2.1.3-cp310-cp310-win32.whl", hash = "sha256:72dcc4a35a8515d83e76b58fdf8113a5c969ccd505c8a946759b24e3182d1f23"}, - {file = "numpy-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:ecc76a9ba2911d8d37ac01de72834d8849e55473457558e12995f4cd53e778e0"}, - {file = "numpy-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4d1167c53b93f1f5d8a139a742b3c6f4d429b54e74e6b57d0eff40045187b15d"}, - {file = "numpy-2.1.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c80e4a09b3d95b4e1cac08643f1152fa71a0a821a2d4277334c88d54b2219a41"}, - {file = "numpy-2.1.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:576a1c1d25e9e02ed7fa5477f30a127fe56debd53b8d2c89d5578f9857d03ca9"}, - {file = "numpy-2.1.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:973faafebaae4c0aaa1a1ca1ce02434554d67e628b8d805e61f874b84e136b09"}, - {file = "numpy-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:762479be47a4863e261a840e8e01608d124ee1361e48b96916f38b119cfda04a"}, - {file = "numpy-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc6f24b3d1ecc1eebfbf5d6051faa49af40b03be1aaa781ebdadcbc090b4539b"}, - {file = "numpy-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:17ee83a1f4fef3c94d16dc1802b998668b5419362c8a4f4e8a491de1b41cc3ee"}, - {file = "numpy-2.1.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:15cb89f39fa6d0bdfb600ea24b250e5f1a3df23f901f51c8debaa6a5d122b2f0"}, - {file = "numpy-2.1.3-cp311-cp311-win32.whl", hash = "sha256:d9beb777a78c331580705326d2367488d5bc473b49a9bc3036c154832520aca9"}, - {file = "numpy-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:d89dd2b6da69c4fff5e39c28a382199ddedc3a5be5390115608345dec660b9e2"}, - {file = "numpy-2.1.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f55ba01150f52b1027829b50d70ef1dafd9821ea82905b63936668403c3b471e"}, - {file = "numpy-2.1.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:13138eadd4f4da03074851a698ffa7e405f41a0845a6b1ad135b81596e4e9958"}, - {file = "numpy-2.1.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a6b46587b14b888e95e4a24d7b13ae91fa22386c199ee7b418f449032b2fa3b8"}, - {file = "numpy-2.1.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:0fa14563cc46422e99daef53d725d0c326e99e468a9320a240affffe87852564"}, - {file = "numpy-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8637dcd2caa676e475503d1f8fdb327bc495554e10838019651b76d17b98e512"}, - {file = "numpy-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2312b2aa89e1f43ecea6da6ea9a810d06aae08321609d8dc0d0eda6d946a541b"}, - {file = "numpy-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a38c19106902bb19351b83802531fea19dee18e5b37b36454f27f11ff956f7fc"}, - {file = "numpy-2.1.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:02135ade8b8a84011cbb67dc44e07c58f28575cf9ecf8ab304e51c05528c19f0"}, - {file = "numpy-2.1.3-cp312-cp312-win32.whl", hash = "sha256:e6988e90fcf617da2b5c78902fe8e668361b43b4fe26dbf2d7b0f8034d4cafb9"}, - {file = "numpy-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:0d30c543f02e84e92c4b1f415b7c6b5326cbe45ee7882b6b77db7195fb971e3a"}, - {file = "numpy-2.1.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96fe52fcdb9345b7cd82ecd34547fca4321f7656d500eca497eb7ea5a926692f"}, - {file = "numpy-2.1.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f653490b33e9c3a4c1c01d41bc2aef08f9475af51146e4a7710c450cf9761598"}, - {file = "numpy-2.1.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:dc258a761a16daa791081d026f0ed4399b582712e6fc887a95af09df10c5ca57"}, - {file = "numpy-2.1.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:016d0f6f5e77b0f0d45d77387ffa4bb89816b57c835580c3ce8e099ef830befe"}, - {file = "numpy-2.1.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c181ba05ce8299c7aa3125c27b9c2167bca4a4445b7ce73d5febc411ca692e43"}, - {file = "numpy-2.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5641516794ca9e5f8a4d17bb45446998c6554704d888f86df9b200e66bdcce56"}, - {file = "numpy-2.1.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ea4dedd6e394a9c180b33c2c872b92f7ce0f8e7ad93e9585312b0c5a04777a4a"}, - {file = "numpy-2.1.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b0df3635b9c8ef48bd3be5f862cf71b0a4716fa0e702155c45067c6b711ddcef"}, - {file = "numpy-2.1.3-cp313-cp313-win32.whl", hash = "sha256:50ca6aba6e163363f132b5c101ba078b8cbd3fa92c7865fd7d4d62d9779ac29f"}, - {file = "numpy-2.1.3-cp313-cp313-win_amd64.whl", hash = "sha256:747641635d3d44bcb380d950679462fae44f54b131be347d5ec2bce47d3df9ed"}, - {file = "numpy-2.1.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:996bb9399059c5b82f76b53ff8bb686069c05acc94656bb259b1d63d04a9506f"}, - {file = "numpy-2.1.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:45966d859916ad02b779706bb43b954281db43e185015df6eb3323120188f9e4"}, - {file = "numpy-2.1.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:baed7e8d7481bfe0874b566850cb0b85243e982388b7b23348c6db2ee2b2ae8e"}, - {file = "numpy-2.1.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:a9f7f672a3388133335589cfca93ed468509cb7b93ba3105fce780d04a6576a0"}, - {file = "numpy-2.1.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7aac50327da5d208db2eec22eb11e491e3fe13d22653dce51b0f4109101b408"}, - {file = "numpy-2.1.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4394bc0dbd074b7f9b52024832d16e019decebf86caf909d94f6b3f77a8ee3b6"}, - {file = "numpy-2.1.3-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:50d18c4358a0a8a53f12a8ba9d772ab2d460321e6a93d6064fc22443d189853f"}, - {file = "numpy-2.1.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:14e253bd43fc6b37af4921b10f6add6925878a42a0c5fe83daee390bca80bc17"}, - {file = "numpy-2.1.3-cp313-cp313t-win32.whl", hash = "sha256:08788d27a5fd867a663f6fc753fd7c3ad7e92747efc73c53bca2f19f8bc06f48"}, - {file = "numpy-2.1.3-cp313-cp313t-win_amd64.whl", hash = "sha256:2564fbdf2b99b3f815f2107c1bbc93e2de8ee655a69c261363a1172a79a257d4"}, - {file = "numpy-2.1.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4f2015dfe437dfebbfce7c85c7b53d81ba49e71ba7eadbf1df40c915af75979f"}, - {file = "numpy-2.1.3-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:3522b0dfe983a575e6a9ab3a4a4dfe156c3e428468ff08ce582b9bb6bd1d71d4"}, - {file = "numpy-2.1.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c006b607a865b07cd981ccb218a04fc86b600411d83d6fc261357f1c0966755d"}, - {file = "numpy-2.1.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e14e26956e6f1696070788252dcdff11b4aca4c3e8bd166e0df1bb8f315a67cb"}, - {file = "numpy-2.1.3.tar.gz", hash = "sha256:aa08e04e08aaf974d4458def539dece0d28146d866a39da5639596f4921fd761"}, + {file = "numpy-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7079129b64cb78bdc8d611d1fd7e8002c0a2565da6a47c4df8062349fee90e3e"}, + {file = "numpy-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2ec6c689c61df613b783aeb21f945c4cbe6c51c28cb70aae8430577ab39f163e"}, + {file = "numpy-2.2.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:40c7ff5da22cd391944a28c6a9c638a5eef77fcf71d6e3a79e1d9d9e82752715"}, + {file = "numpy-2.2.2-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:995f9e8181723852ca458e22de5d9b7d3ba4da3f11cc1cb113f093b271d7965a"}, + {file = "numpy-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b78ea78450fd96a498f50ee096f69c75379af5138f7881a51355ab0e11286c97"}, + {file = "numpy-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3fbe72d347fbc59f94124125e73fc4976a06927ebc503ec5afbfb35f193cd957"}, + {file = "numpy-2.2.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8e6da5cffbbe571f93588f562ed130ea63ee206d12851b60819512dd3e1ba50d"}, + {file = "numpy-2.2.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:09d6a2032faf25e8d0cadde7fd6145118ac55d2740132c1d845f98721b5ebcfd"}, + {file = "numpy-2.2.2-cp310-cp310-win32.whl", hash = "sha256:159ff6ee4c4a36a23fe01b7c3d07bd8c14cc433d9720f977fcd52c13c0098160"}, + {file = "numpy-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:64bd6e1762cd7f0986a740fee4dff927b9ec2c5e4d9a28d056eb17d332158014"}, + {file = "numpy-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:642199e98af1bd2b6aeb8ecf726972d238c9877b0f6e8221ee5ab945ec8a2189"}, + {file = "numpy-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6d9fc9d812c81e6168b6d405bf00b8d6739a7f72ef22a9214c4241e0dc70b323"}, + {file = "numpy-2.2.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:c7d1fd447e33ee20c1f33f2c8e6634211124a9aabde3c617687d8b739aa69eac"}, + {file = "numpy-2.2.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:451e854cfae0febe723077bd0cf0a4302a5d84ff25f0bfece8f29206c7bed02e"}, + {file = "numpy-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd249bc894af67cbd8bad2c22e7cbcd46cf87ddfca1f1289d1e7e54868cc785c"}, + {file = "numpy-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02935e2c3c0c6cbe9c7955a8efa8908dd4221d7755644c59d1bba28b94fd334f"}, + {file = "numpy-2.2.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a972cec723e0563aa0823ee2ab1df0cb196ed0778f173b381c871a03719d4826"}, + {file = "numpy-2.2.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d6d6a0910c3b4368d89dde073e630882cdb266755565155bc33520283b2d9df8"}, + {file = "numpy-2.2.2-cp311-cp311-win32.whl", hash = "sha256:860fd59990c37c3ef913c3ae390b3929d005243acca1a86facb0773e2d8d9e50"}, + {file = "numpy-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:da1eeb460ecce8d5b8608826595c777728cdf28ce7b5a5a8c8ac8d949beadcf2"}, + {file = "numpy-2.2.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ac9bea18d6d58a995fac1b2cb4488e17eceeac413af014b1dd26170b766d8467"}, + {file = "numpy-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:23ae9f0c2d889b7b2d88a3791f6c09e2ef827c2446f1c4a3e3e76328ee4afd9a"}, + {file = "numpy-2.2.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3074634ea4d6df66be04f6728ee1d173cfded75d002c75fac79503a880bf3825"}, + {file = "numpy-2.2.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:8ec0636d3f7d68520afc6ac2dc4b8341ddb725039de042faf0e311599f54eb37"}, + {file = "numpy-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ffbb1acd69fdf8e89dd60ef6182ca90a743620957afb7066385a7bbe88dc748"}, + {file = "numpy-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0349b025e15ea9d05c3d63f9657707a4e1d471128a3b1d876c095f328f8ff7f0"}, + {file = "numpy-2.2.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:463247edcee4a5537841d5350bc87fe8e92d7dd0e8c71c995d2c6eecb8208278"}, + {file = "numpy-2.2.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9dd47ff0cb2a656ad69c38da850df3454da88ee9a6fde0ba79acceee0e79daba"}, + {file = "numpy-2.2.2-cp312-cp312-win32.whl", hash = "sha256:4525b88c11906d5ab1b0ec1f290996c0020dd318af8b49acaa46f198b1ffc283"}, + {file = "numpy-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:5acea83b801e98541619af398cc0109ff48016955cc0818f478ee9ef1c5c3dcb"}, + {file = "numpy-2.2.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b208cfd4f5fe34e1535c08983a1a6803fdbc7a1e86cf13dd0c61de0b51a0aadc"}, + {file = "numpy-2.2.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d0bbe7dd86dca64854f4b6ce2ea5c60b51e36dfd597300057cf473d3615f2369"}, + {file = "numpy-2.2.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:22ea3bb552ade325530e72a0c557cdf2dea8914d3a5e1fecf58fa5dbcc6f43cd"}, + {file = "numpy-2.2.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:128c41c085cab8a85dc29e66ed88c05613dccf6bc28b3866cd16050a2f5448be"}, + {file = "numpy-2.2.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:250c16b277e3b809ac20d1f590716597481061b514223c7badb7a0f9993c7f84"}, + {file = "numpy-2.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0c8854b09bc4de7b041148d8550d3bd712b5c21ff6a8ed308085f190235d7ff"}, + {file = "numpy-2.2.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b6fb9c32a91ec32a689ec6410def76443e3c750e7cfc3fb2206b985ffb2b85f0"}, + {file = "numpy-2.2.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:57b4012e04cc12b78590a334907e01b3a85efb2107df2b8733ff1ed05fce71de"}, + {file = "numpy-2.2.2-cp313-cp313-win32.whl", hash = "sha256:4dbd80e453bd34bd003b16bd802fac70ad76bd463f81f0c518d1245b1c55e3d9"}, + {file = "numpy-2.2.2-cp313-cp313-win_amd64.whl", hash = "sha256:5a8c863ceacae696aff37d1fd636121f1a512117652e5dfb86031c8d84836369"}, + {file = "numpy-2.2.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b3482cb7b3325faa5f6bc179649406058253d91ceda359c104dac0ad320e1391"}, + {file = "numpy-2.2.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:9491100aba630910489c1d0158034e1c9a6546f0b1340f716d522dc103788e39"}, + {file = "numpy-2.2.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:41184c416143defa34cc8eb9d070b0a5ba4f13a0fa96a709e20584638254b317"}, + {file = "numpy-2.2.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:7dca87ca328f5ea7dafc907c5ec100d187911f94825f8700caac0b3f4c384b49"}, + {file = "numpy-2.2.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bc61b307655d1a7f9f4b043628b9f2b721e80839914ede634e3d485913e1fb2"}, + {file = "numpy-2.2.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fad446ad0bc886855ddf5909cbf8cb5d0faa637aaa6277fb4b19ade134ab3c7"}, + {file = "numpy-2.2.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:149d1113ac15005652e8d0d3f6fd599360e1a708a4f98e43c9c77834a28238cb"}, + {file = "numpy-2.2.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:106397dbbb1896f99e044efc90360d098b3335060375c26aa89c0d8a97c5f648"}, + {file = "numpy-2.2.2-cp313-cp313t-win32.whl", hash = "sha256:0eec19f8af947a61e968d5429f0bd92fec46d92b0008d0a6685b40d6adf8a4f4"}, + {file = "numpy-2.2.2-cp313-cp313t-win_amd64.whl", hash = "sha256:97b974d3ba0fb4612b77ed35d7627490e8e3dff56ab41454d9e8b23448940576"}, + {file = "numpy-2.2.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b0531f0b0e07643eb089df4c509d30d72c9ef40defa53e41363eca8a8cc61495"}, + {file = "numpy-2.2.2-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:e9e82dcb3f2ebbc8cb5ce1102d5f1c5ed236bf8a11730fb45ba82e2841ec21df"}, + {file = "numpy-2.2.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0d4142eb40ca6f94539e4db929410f2a46052a0fe7a2c1c59f6179c39938d2a"}, + {file = "numpy-2.2.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:356ca982c188acbfa6af0d694284d8cf20e95b1c3d0aefa8929376fea9146f60"}, + {file = "numpy-2.2.2.tar.gz", hash = "sha256:ed6906f61834d687738d25988ae117683705636936cc605be0bb208b23df4d8f"}, ] [[package]] @@ -1803,6 +1976,21 @@ files = [ {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, ] +[[package]] +name = "paginate" +version = "0.5.7" +description = "Divides large result sets into pages for easier browsing" +optional = false +python-versions = "*" +files = [ + {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, + {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, +] + +[package.extras] +dev = ["pytest", "tox"] +lint = ["black"] + [[package]] name = "pandas" version = "2.2.3" @@ -1939,6 +2127,103 @@ files = [ [package.dependencies] ptyprocess = ">=0.5" +[[package]] +name = "pillow" +version = "10.4.0" +description = "Python Imaging Library (Fork)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e"}, + {file = "pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc"}, + {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e"}, + {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46"}, + {file = "pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984"}, + {file = "pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141"}, + {file = "pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1"}, + {file = "pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c"}, + {file = "pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319"}, + {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d"}, + {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696"}, + {file = "pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496"}, + {file = "pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91"}, + {file = "pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22"}, + {file = "pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94"}, + {file = "pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a"}, + {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b"}, + {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9"}, + {file = "pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42"}, + {file = "pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a"}, + {file = "pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9"}, + {file = "pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3"}, + {file = "pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc"}, + {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a"}, + {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309"}, + {file = "pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060"}, + {file = "pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea"}, + {file = "pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d"}, + {file = "pillow-10.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736"}, + {file = "pillow-10.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd"}, + {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84"}, + {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0"}, + {file = "pillow-10.4.0-cp38-cp38-win32.whl", hash = "sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e"}, + {file = "pillow-10.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab"}, + {file = "pillow-10.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d"}, + {file = "pillow-10.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c"}, + {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1"}, + {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df"}, + {file = "pillow-10.4.0-cp39-cp39-win32.whl", hash = "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef"}, + {file = "pillow-10.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5"}, + {file = "pillow-10.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3"}, + {file = "pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06"}, +] + +[package.extras] +docs = ["furo", "olefile", "sphinx (>=7.3)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"] +fpx = ["olefile"] +mic = ["olefile"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] +typing = ["typing-extensions"] +xmp = ["defusedxml"] + [[package]] name = "platformdirs" version = "4.3.6" @@ -1972,13 +2257,13 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "prometheus-client" -version = "0.21.0" +version = "0.21.1" description = "Python client for the Prometheus monitoring system." optional = false python-versions = ">=3.8" files = [ - {file = "prometheus_client-0.21.0-py3-none-any.whl", hash = "sha256:4fa6b4dd0ac16d58bb587c04b1caae65b8c5043e85f778f42f5f632f6af2e166"}, - {file = "prometheus_client-0.21.0.tar.gz", hash = "sha256:96c83c606b71ff2b0a433c98889d275f51ffec6c5e267de37c7a2b5c9aa9233e"}, + {file = "prometheus_client-0.21.1-py3-none-any.whl", hash = "sha256:594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301"}, + {file = "prometheus_client-0.21.1.tar.gz", hash = "sha256:252505a722ac04b0456be05c05f75f45d760c2911ffc45f2a06bcaed9f3ae3fb"}, ] [package.extras] @@ -1986,13 +2271,13 @@ twisted = ["twisted"] [[package]] name = "prompt-toolkit" -version = "3.0.48" +version = "3.0.50" description = "Library for building powerful interactive command lines in Python" optional = false -python-versions = ">=3.7.0" +python-versions = ">=3.8.0" files = [ - {file = "prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e"}, - {file = "prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90"}, + {file = "prompt_toolkit-3.0.50-py3-none-any.whl", hash = "sha256:9b6427eb19e479d98acff65196a307c555eb567989e6d88ebbb1b509d9779198"}, + {file = "prompt_toolkit-3.0.50.tar.gz", hash = "sha256:544748f3860a2623ca5cd6d2795e7a14f3d0e1c3c9728359013f79877fc89bab"}, ] [package.dependencies] @@ -2000,32 +2285,32 @@ wcwidth = "*" [[package]] name = "psutil" -version = "6.1.0" +version = "6.1.1" description = "Cross-platform lib for process and system monitoring in Python." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "psutil-6.1.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ff34df86226c0227c52f38b919213157588a678d049688eded74c76c8ba4a5d0"}, - {file = "psutil-6.1.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:c0e0c00aa18ca2d3b2b991643b799a15fc8f0563d2ebb6040f64ce8dc027b942"}, - {file = "psutil-6.1.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:000d1d1ebd634b4efb383f4034437384e44a6d455260aaee2eca1e9c1b55f047"}, - {file = "psutil-6.1.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:5cd2bcdc75b452ba2e10f0e8ecc0b57b827dd5d7aaffbc6821b2a9a242823a76"}, - {file = "psutil-6.1.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:045f00a43c737f960d273a83973b2511430d61f283a44c96bf13a6e829ba8fdc"}, - {file = "psutil-6.1.0-cp27-none-win32.whl", hash = "sha256:9118f27452b70bb1d9ab3198c1f626c2499384935aaf55388211ad982611407e"}, - {file = "psutil-6.1.0-cp27-none-win_amd64.whl", hash = "sha256:a8506f6119cff7015678e2bce904a4da21025cc70ad283a53b099e7620061d85"}, - {file = "psutil-6.1.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6e2dcd475ce8b80522e51d923d10c7871e45f20918e027ab682f94f1c6351688"}, - {file = "psutil-6.1.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:0895b8414afafc526712c498bd9de2b063deaac4021a3b3c34566283464aff8e"}, - {file = "psutil-6.1.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9dcbfce5d89f1d1f2546a2090f4fcf87c7f669d1d90aacb7d7582addece9fb38"}, - {file = "psutil-6.1.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:498c6979f9c6637ebc3a73b3f87f9eb1ec24e1ce53a7c5173b8508981614a90b"}, - {file = "psutil-6.1.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d905186d647b16755a800e7263d43df08b790d709d575105d419f8b6ef65423a"}, - {file = "psutil-6.1.0-cp36-cp36m-win32.whl", hash = "sha256:6d3fbbc8d23fcdcb500d2c9f94e07b1342df8ed71b948a2649b5cb060a7c94ca"}, - {file = "psutil-6.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1209036fbd0421afde505a4879dee3b2fd7b1e14fee81c0069807adcbbcca747"}, - {file = "psutil-6.1.0-cp37-abi3-win32.whl", hash = "sha256:1ad45a1f5d0b608253b11508f80940985d1d0c8f6111b5cb637533a0e6ddc13e"}, - {file = "psutil-6.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:a8fb3752b491d246034fa4d279ff076501588ce8cbcdbb62c32fd7a377d996be"}, - {file = "psutil-6.1.0.tar.gz", hash = "sha256:353815f59a7f64cdaca1c0307ee13558a0512f6db064e92fe833784f08539c7a"}, -] - -[package.extras] -dev = ["black", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest-cov", "requests", "rstcheck", "ruff", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "wheel"] + {file = "psutil-6.1.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:9ccc4316f24409159897799b83004cb1e24f9819b0dcf9c0b68bdcb6cefee6a8"}, + {file = "psutil-6.1.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ca9609c77ea3b8481ab005da74ed894035936223422dc591d6772b147421f777"}, + {file = "psutil-6.1.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:8df0178ba8a9e5bc84fed9cfa61d54601b371fbec5c8eebad27575f1e105c0d4"}, + {file = "psutil-6.1.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:1924e659d6c19c647e763e78670a05dbb7feaf44a0e9c94bf9e14dfc6ba50468"}, + {file = "psutil-6.1.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:018aeae2af92d943fdf1da6b58665124897cfc94faa2ca92098838f83e1b1bca"}, + {file = "psutil-6.1.1-cp27-none-win32.whl", hash = "sha256:6d4281f5bbca041e2292be3380ec56a9413b790579b8e593b1784499d0005dac"}, + {file = "psutil-6.1.1-cp27-none-win_amd64.whl", hash = "sha256:c777eb75bb33c47377c9af68f30e9f11bc78e0f07fbf907be4a5d70b2fe5f030"}, + {file = "psutil-6.1.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:fc0ed7fe2231a444fc219b9c42d0376e0a9a1a72f16c5cfa0f68d19f1a0663e8"}, + {file = "psutil-6.1.1-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:0bdd4eab935276290ad3cb718e9809412895ca6b5b334f5a9111ee6d9aff9377"}, + {file = "psutil-6.1.1-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6e06c20c05fe95a3d7302d74e7097756d4ba1247975ad6905441ae1b5b66003"}, + {file = "psutil-6.1.1-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97f7cb9921fbec4904f522d972f0c0e1f4fabbdd4e0287813b21215074a0f160"}, + {file = "psutil-6.1.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33431e84fee02bc84ea36d9e2c4a6d395d479c9dd9bba2376c1f6ee8f3a4e0b3"}, + {file = "psutil-6.1.1-cp36-cp36m-win32.whl", hash = "sha256:384636b1a64b47814437d1173be1427a7c83681b17a450bfc309a1953e329603"}, + {file = "psutil-6.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8be07491f6ebe1a693f17d4f11e69d0dc1811fa082736500f649f79df7735303"}, + {file = "psutil-6.1.1-cp37-abi3-win32.whl", hash = "sha256:eaa912e0b11848c4d9279a93d7e2783df352b082f40111e078388701fd479e53"}, + {file = "psutil-6.1.1-cp37-abi3-win_amd64.whl", hash = "sha256:f35cfccb065fff93529d2afb4a2e89e363fe63ca1e4a5da22b603a85833c2649"}, + {file = "psutil-6.1.1.tar.gz", hash = "sha256:cf8496728c18f2d0b45198f06895be52f36611711746b7f30c464b422b50e2f5"}, +] + +[package.extras] +dev = ["abi3audit", "black", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest-cov", "requests", "rstcheck", "ruff", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "vulture", "wheel"] test = ["pytest", "pytest-xdist", "setuptools"] [[package]] @@ -2055,51 +2340,54 @@ tests = ["pytest"] [[package]] name = "pyarrow" -version = "17.0.0" +version = "19.0.0" description = "Python library for Apache Arrow" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "pyarrow-17.0.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:a5c8b238d47e48812ee577ee20c9a2779e6a5904f1708ae240f53ecbee7c9f07"}, - {file = "pyarrow-17.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:db023dc4c6cae1015de9e198d41250688383c3f9af8f565370ab2b4cb5f62655"}, - {file = "pyarrow-17.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da1e060b3876faa11cee287839f9cc7cdc00649f475714b8680a05fd9071d545"}, - {file = "pyarrow-17.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75c06d4624c0ad6674364bb46ef38c3132768139ddec1c56582dbac54f2663e2"}, - {file = "pyarrow-17.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:fa3c246cc58cb5a4a5cb407a18f193354ea47dd0648194e6265bd24177982fe8"}, - {file = "pyarrow-17.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:f7ae2de664e0b158d1607699a16a488de3d008ba99b3a7aa5de1cbc13574d047"}, - {file = "pyarrow-17.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:5984f416552eea15fd9cee03da53542bf4cddaef5afecefb9aa8d1010c335087"}, - {file = "pyarrow-17.0.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:1c8856e2ef09eb87ecf937104aacfa0708f22dfeb039c363ec99735190ffb977"}, - {file = "pyarrow-17.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2e19f569567efcbbd42084e87f948778eb371d308e137a0f97afe19bb860ccb3"}, - {file = "pyarrow-17.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b244dc8e08a23b3e352899a006a26ae7b4d0da7bb636872fa8f5884e70acf15"}, - {file = "pyarrow-17.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b72e87fe3e1db343995562f7fff8aee354b55ee83d13afba65400c178ab2597"}, - {file = "pyarrow-17.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:dc5c31c37409dfbc5d014047817cb4ccd8c1ea25d19576acf1a001fe07f5b420"}, - {file = "pyarrow-17.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:e3343cb1e88bc2ea605986d4b94948716edc7a8d14afd4e2c097232f729758b4"}, - {file = "pyarrow-17.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:a27532c38f3de9eb3e90ecab63dfda948a8ca859a66e3a47f5f42d1e403c4d03"}, - {file = "pyarrow-17.0.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:9b8a823cea605221e61f34859dcc03207e52e409ccf6354634143e23af7c8d22"}, - {file = "pyarrow-17.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1e70de6cb5790a50b01d2b686d54aaf73da01266850b05e3af2a1bc89e16053"}, - {file = "pyarrow-17.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0071ce35788c6f9077ff9ecba4858108eebe2ea5a3f7cf2cf55ebc1dbc6ee24a"}, - {file = "pyarrow-17.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:757074882f844411fcca735e39aae74248a1531367a7c80799b4266390ae51cc"}, - {file = "pyarrow-17.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:9ba11c4f16976e89146781a83833df7f82077cdab7dc6232c897789343f7891a"}, - {file = "pyarrow-17.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b0c6ac301093b42d34410b187bba560b17c0330f64907bfa4f7f7f2444b0cf9b"}, - {file = "pyarrow-17.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:392bc9feabc647338e6c89267635e111d71edad5fcffba204425a7c8d13610d7"}, - {file = "pyarrow-17.0.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:af5ff82a04b2171415f1410cff7ebb79861afc5dae50be73ce06d6e870615204"}, - {file = "pyarrow-17.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:edca18eaca89cd6382dfbcff3dd2d87633433043650c07375d095cd3517561d8"}, - {file = "pyarrow-17.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c7916bff914ac5d4a8fe25b7a25e432ff921e72f6f2b7547d1e325c1ad9d155"}, - {file = "pyarrow-17.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f553ca691b9e94b202ff741bdd40f6ccb70cdd5fbf65c187af132f1317de6145"}, - {file = "pyarrow-17.0.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:0cdb0e627c86c373205a2f94a510ac4376fdc523f8bb36beab2e7f204416163c"}, - {file = "pyarrow-17.0.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:d7d192305d9d8bc9082d10f361fc70a73590a4c65cf31c3e6926cd72b76bc35c"}, - {file = "pyarrow-17.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:02dae06ce212d8b3244dd3e7d12d9c4d3046945a5933d28026598e9dbbda1fca"}, - {file = "pyarrow-17.0.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:13d7a460b412f31e4c0efa1148e1d29bdf18ad1411eb6757d38f8fbdcc8645fb"}, - {file = "pyarrow-17.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9b564a51fbccfab5a04a80453e5ac6c9954a9c5ef2890d1bcf63741909c3f8df"}, - {file = "pyarrow-17.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32503827abbc5aadedfa235f5ece8c4f8f8b0a3cf01066bc8d29de7539532687"}, - {file = "pyarrow-17.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a155acc7f154b9ffcc85497509bcd0d43efb80d6f733b0dc3bb14e281f131c8b"}, - {file = "pyarrow-17.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:dec8d129254d0188a49f8a1fc99e0560dc1b85f60af729f47de4046015f9b0a5"}, - {file = "pyarrow-17.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:a48ddf5c3c6a6c505904545c25a4ae13646ae1f8ba703c4df4a1bfe4f4006bda"}, - {file = "pyarrow-17.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:42bf93249a083aca230ba7e2786c5f673507fa97bbd9725a1e2754715151a204"}, - {file = "pyarrow-17.0.0.tar.gz", hash = "sha256:4beca9521ed2c0921c1023e68d097d0299b62c362639ea315572a58f3f50fd28"}, -] - -[package.dependencies] -numpy = ">=1.16.6" + {file = "pyarrow-19.0.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:c318eda14f6627966997a7d8c374a87d084a94e4e38e9abbe97395c215830e0c"}, + {file = "pyarrow-19.0.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:62ef8360ff256e960f57ce0299090fb86423afed5e46f18f1225f960e05aae3d"}, + {file = "pyarrow-19.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2795064647add0f16563e57e3d294dbfc067b723f0fd82ecd80af56dad15f503"}, + {file = "pyarrow-19.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a218670b26fb1bc74796458d97bcab072765f9b524f95b2fccad70158feb8b17"}, + {file = "pyarrow-19.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:66732e39eaa2247996a6b04c8aa33e3503d351831424cdf8d2e9a0582ac54b34"}, + {file = "pyarrow-19.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:e675a3ad4732b92d72e4d24009707e923cab76b0d088e5054914f11a797ebe44"}, + {file = "pyarrow-19.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:f094742275586cdd6b1a03655ccff3b24b2610c3af76f810356c4c71d24a2a6c"}, + {file = "pyarrow-19.0.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:8e3a839bf36ec03b4315dc924d36dcde5444a50066f1c10f8290293c0427b46a"}, + {file = "pyarrow-19.0.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:ce42275097512d9e4e4a39aade58ef2b3798a93aa3026566b7892177c266f735"}, + {file = "pyarrow-19.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9348a0137568c45601b031a8d118275069435f151cbb77e6a08a27e8125f59d4"}, + {file = "pyarrow-19.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a0144a712d990d60f7f42b7a31f0acaccf4c1e43e957f7b1ad58150d6f639c1"}, + {file = "pyarrow-19.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2a1a109dfda558eb011e5f6385837daffd920d54ca00669f7a11132d0b1e6042"}, + {file = "pyarrow-19.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:be686bf625aa7b9bada18defb3a3ea3981c1099697239788ff111d87f04cd263"}, + {file = "pyarrow-19.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:239ca66d9a05844bdf5af128861af525e14df3c9591bcc05bac25918e650d3a2"}, + {file = "pyarrow-19.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:a7bbe7109ab6198688b7079cbad5a8c22de4d47c4880d8e4847520a83b0d1b68"}, + {file = "pyarrow-19.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:4624c89d6f777c580e8732c27bb8e77fd1433b89707f17c04af7635dd9638351"}, + {file = "pyarrow-19.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b6d3ce4288793350dc2d08d1e184fd70631ea22a4ff9ea5c4ff182130249d9b"}, + {file = "pyarrow-19.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:450a7d27e840e4d9a384b5c77199d489b401529e75a3b7a3799d4cd7957f2f9c"}, + {file = "pyarrow-19.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a08e2a8a039a3f72afb67a6668180f09fddaa38fe0d21f13212b4aba4b5d2451"}, + {file = "pyarrow-19.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f43f5aef2a13d4d56adadae5720d1fed4c1356c993eda8b59dace4b5983843c1"}, + {file = "pyarrow-19.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:2f672f5364b2d7829ef7c94be199bb88bf5661dd485e21d2d37de12ccb78a136"}, + {file = "pyarrow-19.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:cf3bf0ce511b833f7bc5f5bb3127ba731e97222023a444b7359f3a22e2a3b463"}, + {file = "pyarrow-19.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:4d8b0c0de0a73df1f1bf439af1b60f273d719d70648e898bc077547649bb8352"}, + {file = "pyarrow-19.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92aff08e23d281c69835e4a47b80569242a504095ef6a6223c1f6bb8883431d"}, + {file = "pyarrow-19.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3b78eff5968a1889a0f3bc81ca57e1e19b75f664d9c61a42a604bf9d8402aae"}, + {file = "pyarrow-19.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:b34d3bde38eba66190b215bae441646330f8e9da05c29e4b5dd3e41bde701098"}, + {file = "pyarrow-19.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5418d4d0fab3a0ed497bad21d17a7973aad336d66ad4932a3f5f7480d4ca0c04"}, + {file = "pyarrow-19.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:e82c3d5e44e969c217827b780ed8faf7ac4c53f934ae9238872e749fa531f7c9"}, + {file = "pyarrow-19.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:f208c3b58a6df3b239e0bb130e13bc7487ed14f39a9ff357b6415e3f6339b560"}, + {file = "pyarrow-19.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:c751c1c93955b7a84c06794df46f1cec93e18610dcd5ab7d08e89a81df70a849"}, + {file = "pyarrow-19.0.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b903afaa5df66d50fc38672ad095806443b05f202c792694f3a604ead7c6ea6e"}, + {file = "pyarrow-19.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a22a4bc0937856263df8b94f2f2781b33dd7f876f787ed746608e06902d691a5"}, + {file = "pyarrow-19.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:5e8a28b918e2e878c918f6d89137386c06fe577cd08d73a6be8dafb317dc2d73"}, + {file = "pyarrow-19.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:29cd86c8001a94f768f79440bf83fee23963af5e7bc68ce3a7e5f120e17edf89"}, + {file = "pyarrow-19.0.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:c0423393e4a07ff6fea08feb44153302dd261d0551cc3b538ea7a5dc853af43a"}, + {file = "pyarrow-19.0.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:718947fb6d82409013a74b176bf93e0f49ef952d8a2ecd068fecd192a97885b7"}, + {file = "pyarrow-19.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c1c162c4660e0978411a4761f91113dde8da3433683efa473501254563dcbe8"}, + {file = "pyarrow-19.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c73268cf557e688efb60f1ccbc7376f7e18cd8e2acae9e663e98b194c40c1a2d"}, + {file = "pyarrow-19.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:edfe6d3916e915ada9acc4e48f6dafca7efdbad2e6283db6fd9385a1b23055f1"}, + {file = "pyarrow-19.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:da410b70a7ab8eb524112f037a7a35da7128b33d484f7671a264a4c224ac131d"}, + {file = "pyarrow-19.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:597360ffc71fc8cceea1aec1fb60cb510571a744fffc87db33d551d5de919bec"}, + {file = "pyarrow-19.0.0.tar.gz", hash = "sha256:8d47c691765cf497aaeed4954d226568563f1b3b74ff61139f2d77876717084b"}, +] [package.extras] test = ["cffi", "hypothesis", "pandas", "pytest", "pytz"] @@ -2128,22 +2416,19 @@ files = [ [[package]] name = "pydantic" -version = "2.9.2" +version = "2.10.6" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, - {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, + {file = "pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584"}, + {file = "pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.23.4" -typing-extensions = [ - {version = ">=4.12.2", markers = "python_version >= \"3.13\""}, - {version = ">=4.6.1", markers = "python_version < \"3.13\""}, -] +pydantic-core = "2.27.2" +typing-extensions = ">=4.12.2" [package.extras] email = ["email-validator (>=2.0.0)"] @@ -2151,100 +2436,111 @@ timezone = ["tzdata"] [[package]] name = "pydantic-core" -version = "2.23.4" +version = "2.27.2" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, - {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, - {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, - {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, - {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, - {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, - {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, - {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, - {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, - {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, - {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, - {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, - {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, - {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, - {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, - {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, - {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, - {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, - {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, - {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, - {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, - {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, - {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, - {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, - {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, - {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, - {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, - {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, - {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, - {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, - {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, - {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, - {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, - {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, - {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, - {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, - {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, + {file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"}, + {file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af"}, + {file = "pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4"}, + {file = "pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0"}, + {file = "pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b"}, + {file = "pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b"}, + {file = "pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b"}, + {file = "pydantic_core-2.27.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506"}, + {file = "pydantic_core-2.27.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da"}, + {file = "pydantic_core-2.27.2-cp38-cp38-win32.whl", hash = "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b"}, + {file = "pydantic_core-2.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad"}, + {file = "pydantic_core-2.27.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993"}, + {file = "pydantic_core-2.27.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96"}, + {file = "pydantic_core-2.27.2-cp39-cp39-win32.whl", hash = "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e"}, + {file = "pydantic_core-2.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35"}, + {file = "pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39"}, ] [package.dependencies] @@ -2263,13 +2559,13 @@ files = [ [[package]] name = "pygments" -version = "2.18.0" +version = "2.19.1" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" files = [ - {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, - {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, + {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, + {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, ] [package.extras] @@ -2277,23 +2573,23 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pylint" -version = "3.3.1" +version = "3.3.4" description = "python code static checker" optional = false python-versions = ">=3.9.0" files = [ - {file = "pylint-3.3.1-py3-none-any.whl", hash = "sha256:2f846a466dd023513240bc140ad2dd73bfc080a5d85a710afdb728c420a5a2b9"}, - {file = "pylint-3.3.1.tar.gz", hash = "sha256:9f3dcc87b1203e612b78d91a896407787e708b3f189b5fa0b307712d49ff0c6e"}, + {file = "pylint-3.3.4-py3-none-any.whl", hash = "sha256:289e6a1eb27b453b08436478391a48cd53bb0efb824873f949e709350f3de018"}, + {file = "pylint-3.3.4.tar.gz", hash = "sha256:74ae7a38b177e69a9b525d0794bd8183820bfa7eb68cc1bee6e8ed22a42be4ce"}, ] [package.dependencies] -astroid = ">=3.3.4,<=3.4.0-dev0" +astroid = ">=3.3.8,<=3.4.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = [ {version = ">=0.3.7", markers = "python_version >= \"3.12\""}, {version = ">=0.3.6", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, ] -isort = ">=4.2.5,<5.13.0 || >5.13.0,<6" +isort = ">=4.2.5,<5.13.0 || >5.13.0,<7" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" tomlkit = ">=0.10.1" @@ -2304,13 +2600,13 @@ testutils = ["gitpython (>3)"] [[package]] name = "pymdown-extensions" -version = "10.12" +version = "10.14.3" description = "Extension pack for Python Markdown." optional = false python-versions = ">=3.8" files = [ - {file = "pymdown_extensions-10.12-py3-none-any.whl", hash = "sha256:49f81412242d3527b8b4967b990df395c89563043bc51a3d2d7d500e52123b77"}, - {file = "pymdown_extensions-10.12.tar.gz", hash = "sha256:b0ee1e0b2bef1071a47891ab17003bfe5bf824a398e13f49f8ed653b699369a7"}, + {file = "pymdown_extensions-10.14.3-py3-none-any.whl", hash = "sha256:05e0bee73d64b9c71a4ae17c72abc2f700e8bc8403755a00580b49a4e9f189e9"}, + {file = "pymdown_extensions-10.14.3.tar.gz", hash = "sha256:41e576ce3f5d650be59e900e4ceff231e0aed2a88cf30acaee41e02f063a061b"}, ] [package.dependencies] @@ -2318,7 +2614,7 @@ markdown = ">=3.6" pyyaml = "*" [package.extras] -extra = ["pygments (>=2.12)"] +extra = ["pygments (>=2.19.1)"] [[package]] name = "pytest" @@ -2389,24 +2685,27 @@ six = ">=1.5" [[package]] name = "python-json-logger" -version = "2.0.7" -description = "A python library adding a json log formatter" +version = "3.2.1" +description = "JSON Log Formatter for the Python Logging Package" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"}, - {file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"}, + {file = "python_json_logger-3.2.1-py3-none-any.whl", hash = "sha256:cdc17047eb5374bd311e748b42f99d71223f3b0e186f4206cc5d52aefe85b090"}, + {file = "python_json_logger-3.2.1.tar.gz", hash = "sha256:8eb0554ea17cb75b05d2848bc14fb02fbdbd9d6972120781b974380bfa162008"}, ] +[package.extras] +dev = ["backports.zoneinfo", "black", "build", "freezegun", "mdx_truly_sane_lists", "mike", "mkdocs", "mkdocs-awesome-pages-plugin", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-material (>=8.5)", "mkdocstrings[python]", "msgspec", "msgspec-python313-pre", "mypy", "orjson", "pylint", "pytest", "tzdata", "validate-pyproject[all]"] + [[package]] name = "pytz" -version = "2024.2" +version = "2025.1" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, - {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, + {file = "pytz-2025.1-py2.py3-none-any.whl", hash = "sha256:89dd22dca55b46eac6eda23b2d72721bf1bdfef212645d81513ef5d03038de57"}, + {file = "pytz-2025.1.tar.gz", hash = "sha256:c2db42be2a2518b28e65f9207c4d05e6ff547d1efa4086469ef855e4ab70178e"}, ] [[package]] @@ -2438,17 +2737,18 @@ files = [ [[package]] name = "pywinpty" -version = "2.0.14" +version = "2.0.15" description = "Pseudo terminal support for Windows from Python." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "pywinpty-2.0.14-cp310-none-win_amd64.whl", hash = "sha256:0b149c2918c7974f575ba79f5a4aad58bd859a52fa9eb1296cc22aa412aa411f"}, - {file = "pywinpty-2.0.14-cp311-none-win_amd64.whl", hash = "sha256:cf2a43ac7065b3e0dc8510f8c1f13a75fb8fde805efa3b8cff7599a1ef497bc7"}, - {file = "pywinpty-2.0.14-cp312-none-win_amd64.whl", hash = "sha256:55dad362ef3e9408ade68fd173e4f9032b3ce08f68cfe7eacb2c263ea1179737"}, - {file = "pywinpty-2.0.14-cp313-none-win_amd64.whl", hash = "sha256:074fb988a56ec79ca90ed03a896d40707131897cefb8f76f926e3834227f2819"}, - {file = "pywinpty-2.0.14-cp39-none-win_amd64.whl", hash = "sha256:5725fd56f73c0531ec218663bd8c8ff5acc43c78962fab28564871b5fce053fd"}, - {file = "pywinpty-2.0.14.tar.gz", hash = "sha256:18bd9529e4a5daf2d9719aa17788ba6013e594ae94c5a0c27e83df3278b0660e"}, + {file = "pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e"}, + {file = "pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca"}, + {file = "pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc"}, + {file = "pywinpty-2.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:ab5920877dd632c124b4ed17bc6dd6ef3b9f86cd492b963ffdb1a67b85b0f408"}, + {file = "pywinpty-2.0.15-cp313-cp313t-win_amd64.whl", hash = "sha256:a4560ad8c01e537708d2790dbe7da7d986791de805d89dd0d3697ca59e9e4901"}, + {file = "pywinpty-2.0.15-cp39-cp39-win_amd64.whl", hash = "sha256:d261cd88fcd358cfb48a7ca0700db3e1c088c9c10403c9ebc0d8a8b57aa6a117"}, + {file = "pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2"}, ] [[package]] @@ -2529,120 +2829,120 @@ pyyaml = "*" [[package]] name = "pyzmq" -version = "26.2.0" +version = "26.2.1" description = "Python bindings for 0MQ" optional = false python-versions = ">=3.7" files = [ - {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:ddf33d97d2f52d89f6e6e7ae66ee35a4d9ca6f36eda89c24591b0c40205a3629"}, - {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dacd995031a01d16eec825bf30802fceb2c3791ef24bcce48fa98ce40918c27b"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89289a5ee32ef6c439086184529ae060c741334b8970a6855ec0b6ad3ff28764"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5506f06d7dc6ecf1efacb4a013b1f05071bb24b76350832c96449f4a2d95091c"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ea039387c10202ce304af74def5021e9adc6297067f3441d348d2b633e8166a"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a2224fa4a4c2ee872886ed00a571f5e967c85e078e8e8c2530a2fb01b3309b88"}, - {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:28ad5233e9c3b52d76196c696e362508959741e1a005fb8fa03b51aea156088f"}, - {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1c17211bc037c7d88e85ed8b7d8f7e52db6dc8eca5590d162717c654550f7282"}, - {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b8f86dd868d41bea9a5f873ee13bf5551c94cf6bc51baebc6f85075971fe6eea"}, - {file = "pyzmq-26.2.0-cp310-cp310-win32.whl", hash = "sha256:46a446c212e58456b23af260f3d9fb785054f3e3653dbf7279d8f2b5546b21c2"}, - {file = "pyzmq-26.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:49d34ab71db5a9c292a7644ce74190b1dd5a3475612eefb1f8be1d6961441971"}, - {file = "pyzmq-26.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:bfa832bfa540e5b5c27dcf5de5d82ebc431b82c453a43d141afb1e5d2de025fa"}, - {file = "pyzmq-26.2.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:8f7e66c7113c684c2b3f1c83cdd3376103ee0ce4c49ff80a648643e57fb22218"}, - {file = "pyzmq-26.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3a495b30fc91db2db25120df5847d9833af237546fd59170701acd816ccc01c4"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77eb0968da535cba0470a5165468b2cac7772cfb569977cff92e240f57e31bef"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ace4f71f1900a548f48407fc9be59c6ba9d9aaf658c2eea6cf2779e72f9f317"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92a78853d7280bffb93df0a4a6a2498cba10ee793cc8076ef797ef2f74d107cf"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:689c5d781014956a4a6de61d74ba97b23547e431e9e7d64f27d4922ba96e9d6e"}, - {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0aca98bc423eb7d153214b2df397c6421ba6373d3397b26c057af3c904452e37"}, - {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f3496d76b89d9429a656293744ceca4d2ac2a10ae59b84c1da9b5165f429ad3"}, - {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5c2b3bfd4b9689919db068ac6c9911f3fcb231c39f7dd30e3138be94896d18e6"}, - {file = "pyzmq-26.2.0-cp311-cp311-win32.whl", hash = "sha256:eac5174677da084abf378739dbf4ad245661635f1600edd1221f150b165343f4"}, - {file = "pyzmq-26.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:5a509df7d0a83a4b178d0f937ef14286659225ef4e8812e05580776c70e155d5"}, - {file = "pyzmq-26.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0e6091b157d48cbe37bd67233318dbb53e1e6327d6fc3bb284afd585d141003"}, - {file = "pyzmq-26.2.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:ded0fc7d90fe93ae0b18059930086c51e640cdd3baebdc783a695c77f123dcd9"}, - {file = "pyzmq-26.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17bf5a931c7f6618023cdacc7081f3f266aecb68ca692adac015c383a134ca52"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55cf66647e49d4621a7e20c8d13511ef1fe1efbbccf670811864452487007e08"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4661c88db4a9e0f958c8abc2b97472e23061f0bc737f6f6179d7a27024e1faa5"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea7f69de383cb47522c9c208aec6dd17697db7875a4674c4af3f8cfdac0bdeae"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:7f98f6dfa8b8ccaf39163ce872bddacca38f6a67289116c8937a02e30bbe9711"}, - {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e3e0210287329272539eea617830a6a28161fbbd8a3271bf4150ae3e58c5d0e6"}, - {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6b274e0762c33c7471f1a7471d1a2085b1a35eba5cdc48d2ae319f28b6fc4de3"}, - {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:29c6a4635eef69d68a00321e12a7d2559fe2dfccfa8efae3ffb8e91cd0b36a8b"}, - {file = "pyzmq-26.2.0-cp312-cp312-win32.whl", hash = "sha256:989d842dc06dc59feea09e58c74ca3e1678c812a4a8a2a419046d711031f69c7"}, - {file = "pyzmq-26.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a50625acdc7801bc6f74698c5c583a491c61d73c6b7ea4dee3901bb99adb27a"}, - {file = "pyzmq-26.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:4d29ab8592b6ad12ebbf92ac2ed2bedcfd1cec192d8e559e2e099f648570e19b"}, - {file = "pyzmq-26.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9dd8cd1aeb00775f527ec60022004d030ddc51d783d056e3e23e74e623e33726"}, - {file = "pyzmq-26.2.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:28c812d9757fe8acecc910c9ac9dafd2ce968c00f9e619db09e9f8f54c3a68a3"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d80b1dd99c1942f74ed608ddb38b181b87476c6a966a88a950c7dee118fdf50"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c997098cc65e3208eca09303630e84d42718620e83b733d0fd69543a9cab9cb"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ad1bc8d1b7a18497dda9600b12dc193c577beb391beae5cd2349184db40f187"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bea2acdd8ea4275e1278350ced63da0b166421928276c7c8e3f9729d7402a57b"}, - {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:23f4aad749d13698f3f7b64aad34f5fc02d6f20f05999eebc96b89b01262fb18"}, - {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a4f96f0d88accc3dbe4a9025f785ba830f968e21e3e2c6321ccdfc9aef755115"}, - {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ced65e5a985398827cc9276b93ef6dfabe0273c23de8c7931339d7e141c2818e"}, - {file = "pyzmq-26.2.0-cp313-cp313-win32.whl", hash = "sha256:31507f7b47cc1ead1f6e86927f8ebb196a0bab043f6345ce070f412a59bf87b5"}, - {file = "pyzmq-26.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:70fc7fcf0410d16ebdda9b26cbd8bf8d803d220a7f3522e060a69a9c87bf7bad"}, - {file = "pyzmq-26.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:c3789bd5768ab5618ebf09cef6ec2b35fed88709b104351748a63045f0ff9797"}, - {file = "pyzmq-26.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:034da5fc55d9f8da09015d368f519478a52675e558c989bfcb5cf6d4e16a7d2a"}, - {file = "pyzmq-26.2.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c92d73464b886931308ccc45b2744e5968cbaade0b1d6aeb40d8ab537765f5bc"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:794a4562dcb374f7dbbfb3f51d28fb40123b5a2abadee7b4091f93054909add5"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aee22939bb6075e7afededabad1a56a905da0b3c4e3e0c45e75810ebe3a52672"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ae90ff9dad33a1cfe947d2c40cb9cb5e600d759ac4f0fd22616ce6540f72797"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:43a47408ac52647dfabbc66a25b05b6a61700b5165807e3fbd40063fcaf46386"}, - {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:25bf2374a2a8433633c65ccb9553350d5e17e60c8eb4de4d92cc6bd60f01d306"}, - {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:007137c9ac9ad5ea21e6ad97d3489af654381324d5d3ba614c323f60dab8fae6"}, - {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:470d4a4f6d48fb34e92d768b4e8a5cc3780db0d69107abf1cd7ff734b9766eb0"}, - {file = "pyzmq-26.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3b55a4229ce5da9497dd0452b914556ae58e96a4381bb6f59f1305dfd7e53fc8"}, - {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9cb3a6460cdea8fe8194a76de8895707e61ded10ad0be97188cc8463ffa7e3a8"}, - {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8ab5cad923cc95c87bffee098a27856c859bd5d0af31bd346035aa816b081fe1"}, - {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ed69074a610fad1c2fda66180e7b2edd4d31c53f2d1872bc2d1211563904cd9"}, - {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:cccba051221b916a4f5e538997c45d7d136a5646442b1231b916d0164067ea27"}, - {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:0eaa83fc4c1e271c24eaf8fb083cbccef8fde77ec8cd45f3c35a9a123e6da097"}, - {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9edda2df81daa129b25a39b86cb57dfdfe16f7ec15b42b19bfac503360d27a93"}, - {file = "pyzmq-26.2.0-cp37-cp37m-win32.whl", hash = "sha256:ea0eb6af8a17fa272f7b98d7bebfab7836a0d62738e16ba380f440fceca2d951"}, - {file = "pyzmq-26.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4ff9dc6bc1664bb9eec25cd17506ef6672d506115095411e237d571e92a58231"}, - {file = "pyzmq-26.2.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2eb7735ee73ca1b0d71e0e67c3739c689067f055c764f73aac4cc8ecf958ee3f"}, - {file = "pyzmq-26.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a534f43bc738181aa7cbbaf48e3eca62c76453a40a746ab95d4b27b1111a7d2"}, - {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:aedd5dd8692635813368e558a05266b995d3d020b23e49581ddd5bbe197a8ab6"}, - {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8be4700cd8bb02cc454f630dcdf7cfa99de96788b80c51b60fe2fe1dac480289"}, - {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fcc03fa4997c447dce58264e93b5aa2d57714fbe0f06c07b7785ae131512732"}, - {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:402b190912935d3db15b03e8f7485812db350d271b284ded2b80d2e5704be780"}, - {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8685fa9c25ff00f550c1fec650430c4b71e4e48e8d852f7ddcf2e48308038640"}, - {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:76589c020680778f06b7e0b193f4b6dd66d470234a16e1df90329f5e14a171cd"}, - {file = "pyzmq-26.2.0-cp38-cp38-win32.whl", hash = "sha256:8423c1877d72c041f2c263b1ec6e34360448decfb323fa8b94e85883043ef988"}, - {file = "pyzmq-26.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:76589f2cd6b77b5bdea4fca5992dc1c23389d68b18ccc26a53680ba2dc80ff2f"}, - {file = "pyzmq-26.2.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:b1d464cb8d72bfc1a3adc53305a63a8e0cac6bc8c5a07e8ca190ab8d3faa43c2"}, - {file = "pyzmq-26.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4da04c48873a6abdd71811c5e163bd656ee1b957971db7f35140a2d573f6949c"}, - {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d049df610ac811dcffdc147153b414147428567fbbc8be43bb8885f04db39d98"}, - {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05590cdbc6b902101d0e65d6a4780af14dc22914cc6ab995d99b85af45362cc9"}, - {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c811cfcd6a9bf680236c40c6f617187515269ab2912f3d7e8c0174898e2519db"}, - {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6835dd60355593de10350394242b5757fbbd88b25287314316f266e24c61d073"}, - {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc6bee759a6bddea5db78d7dcd609397449cb2d2d6587f48f3ca613b19410cfc"}, - {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c530e1eecd036ecc83c3407f77bb86feb79916d4a33d11394b8234f3bd35b940"}, - {file = "pyzmq-26.2.0-cp39-cp39-win32.whl", hash = "sha256:367b4f689786fca726ef7a6c5ba606958b145b9340a5e4808132cc65759abd44"}, - {file = "pyzmq-26.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:e6fa2e3e683f34aea77de8112f6483803c96a44fd726d7358b9888ae5bb394ec"}, - {file = "pyzmq-26.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:7445be39143a8aa4faec43b076e06944b8f9d0701b669df4af200531b21e40bb"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:706e794564bec25819d21a41c31d4df2d48e1cc4b061e8d345d7fb4dd3e94072"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b435f2753621cd36e7c1762156815e21c985c72b19135dac43a7f4f31d28dd1"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:160c7e0a5eb178011e72892f99f918c04a131f36056d10d9c1afb223fc952c2d"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c4a71d5d6e7b28a47a394c0471b7e77a0661e2d651e7ae91e0cab0a587859ca"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:90412f2db8c02a3864cbfc67db0e3dcdbda336acf1c469526d3e869394fe001c"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2ea4ad4e6a12e454de05f2949d4beddb52460f3de7c8b9d5c46fbb7d7222e02c"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fc4f7a173a5609631bb0c42c23d12c49df3966f89f496a51d3eb0ec81f4519d6"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:878206a45202247781472a2d99df12a176fef806ca175799e1c6ad263510d57c"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17c412bad2eb9468e876f556eb4ee910e62d721d2c7a53c7fa31e643d35352e6"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:0d987a3ae5a71c6226b203cfd298720e0086c7fe7c74f35fa8edddfbd6597eed"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:39887ac397ff35b7b775db7201095fc6310a35fdbae85bac4523f7eb3b840e20"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fdb5b3e311d4d4b0eb8b3e8b4d1b0a512713ad7e6a68791d0923d1aec433d919"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:226af7dcb51fdb0109f0016449b357e182ea0ceb6b47dfb5999d569e5db161d5"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bed0e799e6120b9c32756203fb9dfe8ca2fb8467fed830c34c877e25638c3fc"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:29c7947c594e105cb9e6c466bace8532dc1ca02d498684128b339799f5248277"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cdeabcff45d1c219636ee2e54d852262e5c2e085d6cb476d938aee8d921356b3"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35cffef589bcdc587d06f9149f8d5e9e8859920a071df5a2671de2213bef592a"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18c8dc3b7468d8b4bdf60ce9d7141897da103c7a4690157b32b60acb45e333e6"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7133d0a1677aec369d67dd78520d3fa96dd7f3dcec99d66c1762870e5ea1a50a"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6a96179a24b14fa6428cbfc08641c779a53f8fcec43644030328f44034c7f1f4"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4f78c88905461a9203eac9faac157a2a0dbba84a0fd09fd29315db27be40af9f"}, - {file = "pyzmq-26.2.0.tar.gz", hash = "sha256:070672c258581c8e4f640b5159297580a9974b026043bd4ab0470be9ed324f1f"}, + {file = "pyzmq-26.2.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:f39d1227e8256d19899d953e6e19ed2ccb689102e6d85e024da5acf410f301eb"}, + {file = "pyzmq-26.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a23948554c692df95daed595fdd3b76b420a4939d7a8a28d6d7dea9711878641"}, + {file = "pyzmq-26.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95f5728b367a042df146cec4340d75359ec6237beebf4a8f5cf74657c65b9257"}, + {file = "pyzmq-26.2.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95f7b01b3f275504011cf4cf21c6b885c8d627ce0867a7e83af1382ebab7b3ff"}, + {file = "pyzmq-26.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80a00370a2ef2159c310e662c7c0f2d030f437f35f478bb8b2f70abd07e26b24"}, + {file = "pyzmq-26.2.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:8531ed35dfd1dd2af95f5d02afd6545e8650eedbf8c3d244a554cf47d8924459"}, + {file = "pyzmq-26.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cdb69710e462a38e6039cf17259d328f86383a06c20482cc154327968712273c"}, + {file = "pyzmq-26.2.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e7eeaef81530d0b74ad0d29eec9997f1c9230c2f27242b8d17e0ee67662c8f6e"}, + {file = "pyzmq-26.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:361edfa350e3be1f987e592e834594422338d7174364763b7d3de5b0995b16f3"}, + {file = "pyzmq-26.2.1-cp310-cp310-win32.whl", hash = "sha256:637536c07d2fb6a354988b2dd1d00d02eb5dd443f4bbee021ba30881af1c28aa"}, + {file = "pyzmq-26.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:45fad32448fd214fbe60030aa92f97e64a7140b624290834cc9b27b3a11f9473"}, + {file = "pyzmq-26.2.1-cp310-cp310-win_arm64.whl", hash = "sha256:d9da0289d8201c8a29fd158aaa0dfe2f2e14a181fd45e2dc1fbf969a62c1d594"}, + {file = "pyzmq-26.2.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:c059883840e634a21c5b31d9b9a0e2b48f991b94d60a811092bc37992715146a"}, + {file = "pyzmq-26.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ed038a921df836d2f538e509a59cb638df3e70ca0fcd70d0bf389dfcdf784d2a"}, + {file = "pyzmq-26.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9027a7fcf690f1a3635dc9e55e38a0d6602dbbc0548935d08d46d2e7ec91f454"}, + {file = "pyzmq-26.2.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6d75fcb00a1537f8b0c0bb05322bc7e35966148ffc3e0362f0369e44a4a1de99"}, + {file = "pyzmq-26.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0019cc804ac667fb8c8eaecdb66e6d4a68acf2e155d5c7d6381a5645bd93ae4"}, + {file = "pyzmq-26.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:f19dae58b616ac56b96f2e2290f2d18730a898a171f447f491cc059b073ca1fa"}, + {file = "pyzmq-26.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f5eeeb82feec1fc5cbafa5ee9022e87ffdb3a8c48afa035b356fcd20fc7f533f"}, + {file = "pyzmq-26.2.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:000760e374d6f9d1a3478a42ed0c98604de68c9e94507e5452951e598ebecfba"}, + {file = "pyzmq-26.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:817fcd3344d2a0b28622722b98500ae9c8bfee0f825b8450932ff19c0b15bebd"}, + {file = "pyzmq-26.2.1-cp311-cp311-win32.whl", hash = "sha256:88812b3b257f80444a986b3596e5ea5c4d4ed4276d2b85c153a6fbc5ca457ae7"}, + {file = "pyzmq-26.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:ef29630fde6022471d287c15c0a2484aba188adbfb978702624ba7a54ddfa6c1"}, + {file = "pyzmq-26.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:f32718ee37c07932cc336096dc7403525301fd626349b6eff8470fe0f996d8d7"}, + {file = "pyzmq-26.2.1-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:a6549ecb0041dafa55b5932dcbb6c68293e0bd5980b5b99f5ebb05f9a3b8a8f3"}, + {file = "pyzmq-26.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0250c94561f388db51fd0213cdccbd0b9ef50fd3c57ce1ac937bf3034d92d72e"}, + {file = "pyzmq-26.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36ee4297d9e4b34b5dc1dd7ab5d5ea2cbba8511517ef44104d2915a917a56dc8"}, + {file = "pyzmq-26.2.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c2a9cb17fd83b7a3a3009901aca828feaf20aa2451a8a487b035455a86549c09"}, + {file = "pyzmq-26.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:786dd8a81b969c2081b31b17b326d3a499ddd1856e06d6d79ad41011a25148da"}, + {file = "pyzmq-26.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:2d88ba221a07fc2c5581565f1d0fe8038c15711ae79b80d9462e080a1ac30435"}, + {file = "pyzmq-26.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1c84c1297ff9f1cd2440da4d57237cb74be21fdfe7d01a10810acba04e79371a"}, + {file = "pyzmq-26.2.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:46d4ebafc27081a7f73a0f151d0c38d4291656aa134344ec1f3d0199ebfbb6d4"}, + {file = "pyzmq-26.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:91e2bfb8e9a29f709d51b208dd5f441dc98eb412c8fe75c24ea464734ccdb48e"}, + {file = "pyzmq-26.2.1-cp312-cp312-win32.whl", hash = "sha256:4a98898fdce380c51cc3e38ebc9aa33ae1e078193f4dc641c047f88b8c690c9a"}, + {file = "pyzmq-26.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:a0741edbd0adfe5f30bba6c5223b78c131b5aa4a00a223d631e5ef36e26e6d13"}, + {file = "pyzmq-26.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:e5e33b1491555843ba98d5209439500556ef55b6ab635f3a01148545498355e5"}, + {file = "pyzmq-26.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:099b56ef464bc355b14381f13355542e452619abb4c1e57a534b15a106bf8e23"}, + {file = "pyzmq-26.2.1-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:651726f37fcbce9f8dd2a6dab0f024807929780621890a4dc0c75432636871be"}, + {file = "pyzmq-26.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57dd4d91b38fa4348e237a9388b4423b24ce9c1695bbd4ba5a3eada491e09399"}, + {file = "pyzmq-26.2.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d51a7bfe01a48e1064131f3416a5439872c533d756396be2b39e3977b41430f9"}, + {file = "pyzmq-26.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7154d228502e18f30f150b7ce94f0789d6b689f75261b623f0fdc1eec642aab"}, + {file = "pyzmq-26.2.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:f1f31661a80cc46aba381bed475a9135b213ba23ca7ff6797251af31510920ce"}, + {file = "pyzmq-26.2.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:290c96f479504439b6129a94cefd67a174b68ace8a8e3f551b2239a64cfa131a"}, + {file = "pyzmq-26.2.1-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:f2c307fbe86e18ab3c885b7e01de942145f539165c3360e2af0f094dd440acd9"}, + {file = "pyzmq-26.2.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:b314268e716487bfb86fcd6f84ebbe3e5bec5fac75fdf42bc7d90fdb33f618ad"}, + {file = "pyzmq-26.2.1-cp313-cp313-win32.whl", hash = "sha256:edb550616f567cd5603b53bb52a5f842c0171b78852e6fc7e392b02c2a1504bb"}, + {file = "pyzmq-26.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:100a826a029c8ef3d77a1d4c97cbd6e867057b5806a7276f2bac1179f893d3bf"}, + {file = "pyzmq-26.2.1-cp313-cp313-win_arm64.whl", hash = "sha256:6991ee6c43e0480deb1b45d0c7c2bac124a6540cba7db4c36345e8e092da47ce"}, + {file = "pyzmq-26.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:25e720dba5b3a3bb2ad0ad5d33440babd1b03438a7a5220511d0c8fa677e102e"}, + {file = "pyzmq-26.2.1-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:9ec6abfb701437142ce9544bd6a236addaf803a32628d2260eb3dbd9a60e2891"}, + {file = "pyzmq-26.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e1eb9d2bfdf5b4e21165b553a81b2c3bd5be06eeddcc4e08e9692156d21f1f6"}, + {file = "pyzmq-26.2.1-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:90dc731d8e3e91bcd456aa7407d2eba7ac6f7860e89f3766baabb521f2c1de4a"}, + {file = "pyzmq-26.2.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b6a93d684278ad865fc0b9e89fe33f6ea72d36da0e842143891278ff7fd89c3"}, + {file = "pyzmq-26.2.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:c1bb37849e2294d519117dd99b613c5177934e5c04a5bb05dd573fa42026567e"}, + {file = "pyzmq-26.2.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:632a09c6d8af17b678d84df442e9c3ad8e4949c109e48a72f805b22506c4afa7"}, + {file = "pyzmq-26.2.1-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:fc409c18884eaf9ddde516d53af4f2db64a8bc7d81b1a0c274b8aa4e929958e8"}, + {file = "pyzmq-26.2.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:17f88622b848805d3f6427ce1ad5a2aa3cf61f12a97e684dab2979802024d460"}, + {file = "pyzmq-26.2.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3ef584f13820d2629326fe20cc04069c21c5557d84c26e277cfa6235e523b10f"}, + {file = "pyzmq-26.2.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:160194d1034902937359c26ccfa4e276abffc94937e73add99d9471e9f555dd6"}, + {file = "pyzmq-26.2.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:574b285150afdbf0a0424dddf7ef9a0d183988eb8d22feacb7160f7515e032cb"}, + {file = "pyzmq-26.2.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44dba28c34ce527cf687156c81f82bf1e51f047838d5964f6840fd87dfecf9fe"}, + {file = "pyzmq-26.2.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9fbdb90b85c7624c304f72ec7854659a3bd901e1c0ffb2363163779181edeb68"}, + {file = "pyzmq-26.2.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a7ad34a2921e8f76716dc7205c9bf46a53817e22b9eec2e8a3e08ee4f4a72468"}, + {file = "pyzmq-26.2.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:866c12b7c90dd3a86983df7855c6f12f9407c8684db6aa3890fc8027462bda82"}, + {file = "pyzmq-26.2.1-cp37-cp37m-win32.whl", hash = "sha256:eeb37f65350d5c5870517f02f8bbb2ac0fbec7b416c0f4875219fef305a89a45"}, + {file = "pyzmq-26.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4eb3197f694dfb0ee6af29ef14a35f30ae94ff67c02076eef8125e2d98963cd0"}, + {file = "pyzmq-26.2.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:36d4e7307db7c847fe37413f333027d31c11d5e6b3bacbb5022661ac635942ba"}, + {file = "pyzmq-26.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1c6ae0e95d0a4b0cfe30f648a18e764352d5415279bdf34424decb33e79935b8"}, + {file = "pyzmq-26.2.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5b4fc44f5360784cc02392f14235049665caaf7c0fe0b04d313e763d3338e463"}, + {file = "pyzmq-26.2.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:51431f6b2750eb9b9d2b2952d3cc9b15d0215e1b8f37b7a3239744d9b487325d"}, + {file = "pyzmq-26.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bdbc78ae2065042de48a65f1421b8af6b76a0386bb487b41955818c3c1ce7bed"}, + {file = "pyzmq-26.2.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d14f50d61a89b0925e4d97a0beba6053eb98c426c5815d949a43544f05a0c7ec"}, + {file = "pyzmq-26.2.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:004837cb958988c75d8042f5dac19a881f3d9b3b75b2f574055e22573745f841"}, + {file = "pyzmq-26.2.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0b2007f28ce1b8acebdf4812c1aab997a22e57d6a73b5f318b708ef9bcabbe95"}, + {file = "pyzmq-26.2.1-cp38-cp38-win32.whl", hash = "sha256:269c14904da971cb5f013100d1aaedb27c0a246728c341d5d61ddd03f463f2f3"}, + {file = "pyzmq-26.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:31fff709fef3b991cfe7189d2cfe0c413a1d0e82800a182cfa0c2e3668cd450f"}, + {file = "pyzmq-26.2.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:a4bffcadfd40660f26d1b3315a6029fd4f8f5bf31a74160b151f5c577b2dc81b"}, + {file = "pyzmq-26.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e76ad4729c2f1cf74b6eb1bdd05f6aba6175999340bd51e6caee49a435a13bf5"}, + {file = "pyzmq-26.2.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8b0f5bab40a16e708e78a0c6ee2425d27e1a5d8135c7a203b4e977cee37eb4aa"}, + {file = "pyzmq-26.2.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e8e47050412f0ad3a9b2287779758073cbf10e460d9f345002d4779e43bb0136"}, + {file = "pyzmq-26.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f18ce33f422d119b13c1363ed4cce245b342b2c5cbbb76753eabf6aa6f69c7d"}, + {file = "pyzmq-26.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ceb0d78b7ef106708a7e2c2914afe68efffc0051dc6a731b0dbacd8b4aee6d68"}, + {file = "pyzmq-26.2.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ebdd96bd637fd426d60e86a29ec14b8c1ab64b8d972f6a020baf08a30d1cf46"}, + {file = "pyzmq-26.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:03719e424150c6395b9513f53a5faadcc1ce4b92abdf68987f55900462ac7eec"}, + {file = "pyzmq-26.2.1-cp39-cp39-win32.whl", hash = "sha256:ef5479fac31df4b304e96400fc67ff08231873ee3537544aa08c30f9d22fce38"}, + {file = "pyzmq-26.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:f92a002462154c176dac63a8f1f6582ab56eb394ef4914d65a9417f5d9fde218"}, + {file = "pyzmq-26.2.1-cp39-cp39-win_arm64.whl", hash = "sha256:1fd4b3efc6f62199886440d5e27dd3ccbcb98dfddf330e7396f1ff421bfbb3c2"}, + {file = "pyzmq-26.2.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:380816d298aed32b1a97b4973a4865ef3be402a2e760204509b52b6de79d755d"}, + {file = "pyzmq-26.2.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97cbb368fd0debdbeb6ba5966aa28e9a1ae3396c7386d15569a6ca4be4572b99"}, + {file = "pyzmq-26.2.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf7b5942c6b0dafcc2823ddd9154f419147e24f8df5b41ca8ea40a6db90615c"}, + {file = "pyzmq-26.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3fe6e28a8856aea808715f7a4fc11f682b9d29cac5d6262dd8fe4f98edc12d53"}, + {file = "pyzmq-26.2.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:bd8fdee945b877aa3bffc6a5a8816deb048dab0544f9df3731ecd0e54d8c84c9"}, + {file = "pyzmq-26.2.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ee7152f32c88e0e1b5b17beb9f0e2b14454235795ef68c0c120b6d3d23d12833"}, + {file = "pyzmq-26.2.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:baa1da72aecf6a490b51fba7a51f1ce298a1e0e86d0daef8265c8f8f9848eb77"}, + {file = "pyzmq-26.2.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:49135bb327fca159262d8fd14aa1f4a919fe071b04ed08db4c7c37d2f0647162"}, + {file = "pyzmq-26.2.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8bacc1a10c150d58e8a9ee2b2037a70f8d903107e0f0b6e079bf494f2d09c091"}, + {file = "pyzmq-26.2.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:09dac387ce62d69bec3f06d51610ca1d660e7849eb45f68e38e7f5cf1f49cbcb"}, + {file = "pyzmq-26.2.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:70b3a46ecd9296e725ccafc17d732bfc3cdab850b54bd913f843a0a54dfb2c04"}, + {file = "pyzmq-26.2.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:59660e15c797a3b7a571c39f8e0b62a1f385f98ae277dfe95ca7eaf05b5a0f12"}, + {file = "pyzmq-26.2.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0f50db737d688e96ad2a083ad2b453e22865e7e19c7f17d17df416e91ddf67eb"}, + {file = "pyzmq-26.2.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a003200b6cd64e89b5725ff7e284a93ab24fd54bbac8b4fa46b1ed57be693c27"}, + {file = "pyzmq-26.2.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:f9ba5def063243793dec6603ad1392f735255cbc7202a3a484c14f99ec290705"}, + {file = "pyzmq-26.2.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1238c2448c58b9c8d6565579393148414a42488a5f916b3f322742e561f6ae0d"}, + {file = "pyzmq-26.2.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8eddb3784aed95d07065bcf94d07e8c04024fdb6b2386f08c197dfe6b3528fda"}, + {file = "pyzmq-26.2.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f0f19c2097fffb1d5b07893d75c9ee693e9cbc809235cf3f2267f0ef6b015f24"}, + {file = "pyzmq-26.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0995fd3530f2e89d6b69a2202e340bbada3191014352af978fa795cb7a446331"}, + {file = "pyzmq-26.2.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:7c6160fe513654e65665332740f63de29ce0d165e053c0c14a161fa60dd0da01"}, + {file = "pyzmq-26.2.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:8ec8e3aea6146b761d6c57fcf8f81fcb19f187afecc19bf1701a48db9617a217"}, + {file = "pyzmq-26.2.1.tar.gz", hash = "sha256:17d72a74e5e9ff3829deb72897a175333d3ef5b5413948cae3cf7ebf0b02ecca"}, ] [package.dependencies] @@ -2650,18 +2950,122 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "referencing" -version = "0.35.1" +version = "0.36.2" description = "JSON Referencing + Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, - {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, + {file = "referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0"}, + {file = "referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa"}, ] [package.dependencies] attrs = ">=22.2.0" rpds-py = ">=0.7.0" +typing-extensions = {version = ">=4.4.0", markers = "python_version < \"3.13\""} + +[[package]] +name = "regex" +version = "2024.11.6" +description = "Alternative regular expression module, to replace re." +optional = false +python-versions = ">=3.8" +files = [ + {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91"}, + {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0"}, + {file = "regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62"}, + {file = "regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e"}, + {file = "regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45"}, + {file = "regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9"}, + {file = "regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad"}, + {file = "regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54"}, + {file = "regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d"}, + {file = "regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff"}, + {file = "regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3a51ccc315653ba012774efca4f23d1d2a8a8f278a6072e29c7147eee7da446b"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ad182d02e40de7459b73155deb8996bbd8e96852267879396fb274e8700190e3"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba9b72e5643641b7d41fa1f6d5abda2c9a263ae835b917348fc3c928182ad467"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40291b1b89ca6ad8d3f2b82782cc33807f1406cf68c8d440861da6304d8ffbbd"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdf58d0e516ee426a48f7b2c03a332a4114420716d55769ff7108c37a09951bf"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a36fdf2af13c2b14738f6e973aba563623cb77d753bbbd8d414d18bfaa3105dd"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1cee317bfc014c2419a76bcc87f071405e3966da434e03e13beb45f8aced1a6"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50153825ee016b91549962f970d6a4442fa106832e14c918acd1c8e479916c4f"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea1bfda2f7162605f6e8178223576856b3d791109f15ea99a9f95c16a7636fb5"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:df951c5f4a1b1910f1a99ff42c473ff60f8225baa1cdd3539fe2819d9543e9df"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:072623554418a9911446278f16ecb398fb3b540147a7828c06e2011fa531e773"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f654882311409afb1d780b940234208a252322c24a93b442ca714d119e68086c"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:89d75e7293d2b3e674db7d4d9b1bee7f8f3d1609428e293771d1a962617150cc"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:f65557897fc977a44ab205ea871b690adaef6b9da6afda4790a2484b04293a5f"}, + {file = "regex-2024.11.6-cp38-cp38-win32.whl", hash = "sha256:6f44ec28b1f858c98d3036ad5d7d0bfc568bdd7a74f9c24e25f41ef1ebfd81a4"}, + {file = "regex-2024.11.6-cp38-cp38-win_amd64.whl", hash = "sha256:bb8f74f2f10dbf13a0be8de623ba4f9491faf58c24064f32b65679b021ed0001"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5704e174f8ccab2026bd2f1ab6c510345ae8eac818b613d7d73e785f1310f839"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:220902c3c5cc6af55d4fe19ead504de80eb91f786dc102fbd74894b1551f095e"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7e351589da0850c125f1600a4c4ba3c722efefe16b297de54300f08d734fbf"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5056b185ca113c88e18223183aa1a50e66507769c9640a6ff75859619d73957b"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e34b51b650b23ed3354b5a07aab37034d9f923db2a40519139af34f485f77d0"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5670bce7b200273eee1840ef307bfa07cda90b38ae56e9a6ebcc9f50da9c469b"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08986dce1339bc932923e7d1232ce9881499a0e02925f7402fb7c982515419ef"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93c0b12d3d3bc25af4ebbf38f9ee780a487e8bf6954c115b9f015822d3bb8e48"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:764e71f22ab3b305e7f4c21f1a97e1526a25ebdd22513e251cf376760213da13"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f056bf21105c2515c32372bbc057f43eb02aae2fda61052e2f7622c801f0b4e2"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:69ab78f848845569401469da20df3e081e6b5a11cb086de3eed1d48f5ed57c95"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:86fddba590aad9208e2fa8b43b4c098bb0ec74f15718bb6a704e3c63e2cef3e9"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:684d7a212682996d21ca12ef3c17353c021fe9de6049e19ac8481ec35574a70f"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a03e02f48cd1abbd9f3b7e3586d97c8f7a9721c436f51a5245b3b9483044480b"}, + {file = "regex-2024.11.6-cp39-cp39-win32.whl", hash = "sha256:41758407fc32d5c3c5de163888068cfee69cb4c2be844e7ac517a52770f9af57"}, + {file = "regex-2024.11.6-cp39-cp39-win_amd64.whl", hash = "sha256:b2837718570f95dd41675328e111345f9b7095d821bac435aac173ac80b19983"}, + {file = "regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519"}, +] [[package]] name = "requests" @@ -2711,13 +3115,13 @@ files = [ [[package]] name = "rich" -version = "13.7.1" +version = "13.9.4" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false -python-versions = ">=3.7.0" +python-versions = ">=3.8.0" files = [ - {file = "rich-13.7.1-py3-none-any.whl", hash = "sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222"}, - {file = "rich-13.7.1.tar.gz", hash = "sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432"}, + {file = "rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90"}, + {file = "rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098"}, ] [package.dependencies] @@ -2729,101 +3133,114 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "rpds-py" -version = "0.21.0" +version = "0.22.3" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.9" files = [ - {file = "rpds_py-0.21.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a017f813f24b9df929674d0332a374d40d7f0162b326562daae8066b502d0590"}, - {file = "rpds_py-0.21.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:20cc1ed0bcc86d8e1a7e968cce15be45178fd16e2ff656a243145e0b439bd250"}, - {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad116dda078d0bc4886cb7840e19811562acdc7a8e296ea6ec37e70326c1b41c"}, - {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:808f1ac7cf3b44f81c9475475ceb221f982ef548e44e024ad5f9e7060649540e"}, - {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de552f4a1916e520f2703ec474d2b4d3f86d41f353e7680b597512ffe7eac5d0"}, - {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:efec946f331349dfc4ae9d0e034c263ddde19414fe5128580f512619abed05f1"}, - {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b80b4690bbff51a034bfde9c9f6bf9357f0a8c61f548942b80f7b66356508bf5"}, - {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:085ed25baac88953d4283e5b5bd094b155075bb40d07c29c4f073e10623f9f2e"}, - {file = "rpds_py-0.21.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:daa8efac2a1273eed2354397a51216ae1e198ecbce9036fba4e7610b308b6153"}, - {file = "rpds_py-0.21.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:95a5bad1ac8a5c77b4e658671642e4af3707f095d2b78a1fdd08af0dfb647624"}, - {file = "rpds_py-0.21.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3e53861b29a13d5b70116ea4230b5f0f3547b2c222c5daa090eb7c9c82d7f664"}, - {file = "rpds_py-0.21.0-cp310-none-win32.whl", hash = "sha256:ea3a6ac4d74820c98fcc9da4a57847ad2cc36475a8bd9683f32ab6d47a2bd682"}, - {file = "rpds_py-0.21.0-cp310-none-win_amd64.whl", hash = "sha256:b8f107395f2f1d151181880b69a2869c69e87ec079c49c0016ab96860b6acbe5"}, - {file = "rpds_py-0.21.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5555db3e618a77034954b9dc547eae94166391a98eb867905ec8fcbce1308d95"}, - {file = "rpds_py-0.21.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:97ef67d9bbc3e15584c2f3c74bcf064af36336c10d2e21a2131e123ce0f924c9"}, - {file = "rpds_py-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ab2c2a26d2f69cdf833174f4d9d86118edc781ad9a8fa13970b527bf8236027"}, - {file = "rpds_py-0.21.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4e8921a259f54bfbc755c5bbd60c82bb2339ae0324163f32868f63f0ebb873d9"}, - {file = "rpds_py-0.21.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a7ff941004d74d55a47f916afc38494bd1cfd4b53c482b77c03147c91ac0ac3"}, - {file = "rpds_py-0.21.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5145282a7cd2ac16ea0dc46b82167754d5e103a05614b724457cffe614f25bd8"}, - {file = "rpds_py-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de609a6f1b682f70bb7163da745ee815d8f230d97276db049ab447767466a09d"}, - {file = "rpds_py-0.21.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40c91c6e34cf016fa8e6b59d75e3dbe354830777fcfd74c58b279dceb7975b75"}, - {file = "rpds_py-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d2132377f9deef0c4db89e65e8bb28644ff75a18df5293e132a8d67748397b9f"}, - {file = "rpds_py-0.21.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0a9e0759e7be10109645a9fddaaad0619d58c9bf30a3f248a2ea57a7c417173a"}, - {file = "rpds_py-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9e20da3957bdf7824afdd4b6eeb29510e83e026473e04952dca565170cd1ecc8"}, - {file = "rpds_py-0.21.0-cp311-none-win32.whl", hash = "sha256:f71009b0d5e94c0e86533c0b27ed7cacc1239cb51c178fd239c3cfefefb0400a"}, - {file = "rpds_py-0.21.0-cp311-none-win_amd64.whl", hash = "sha256:e168afe6bf6ab7ab46c8c375606298784ecbe3ba31c0980b7dcbb9631dcba97e"}, - {file = "rpds_py-0.21.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:30b912c965b2aa76ba5168fd610087bad7fcde47f0a8367ee8f1876086ee6d1d"}, - {file = "rpds_py-0.21.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ca9989d5d9b1b300bc18e1801c67b9f6d2c66b8fd9621b36072ed1df2c977f72"}, - {file = "rpds_py-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f54e7106f0001244a5f4cf810ba8d3f9c542e2730821b16e969d6887b664266"}, - {file = "rpds_py-0.21.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fed5dfefdf384d6fe975cc026886aece4f292feaf69d0eeb716cfd3c5a4dd8be"}, - {file = "rpds_py-0.21.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:590ef88db231c9c1eece44dcfefd7515d8bf0d986d64d0caf06a81998a9e8cab"}, - {file = "rpds_py-0.21.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f983e4c2f603c95dde63df633eec42955508eefd8d0f0e6d236d31a044c882d7"}, - {file = "rpds_py-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b229ce052ddf1a01c67d68166c19cb004fb3612424921b81c46e7ea7ccf7c3bf"}, - {file = "rpds_py-0.21.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ebf64e281a06c904a7636781d2e973d1f0926a5b8b480ac658dc0f556e7779f4"}, - {file = "rpds_py-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:998a8080c4495e4f72132f3d66ff91f5997d799e86cec6ee05342f8f3cda7dca"}, - {file = "rpds_py-0.21.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:98486337f7b4f3c324ab402e83453e25bb844f44418c066623db88e4c56b7c7b"}, - {file = "rpds_py-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a78d8b634c9df7f8d175451cfeac3810a702ccb85f98ec95797fa98b942cea11"}, - {file = "rpds_py-0.21.0-cp312-none-win32.whl", hash = "sha256:a58ce66847711c4aa2ecfcfaff04cb0327f907fead8945ffc47d9407f41ff952"}, - {file = "rpds_py-0.21.0-cp312-none-win_amd64.whl", hash = "sha256:e860f065cc4ea6f256d6f411aba4b1251255366e48e972f8a347cf88077b24fd"}, - {file = "rpds_py-0.21.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ee4eafd77cc98d355a0d02f263efc0d3ae3ce4a7c24740010a8b4012bbb24937"}, - {file = "rpds_py-0.21.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:688c93b77e468d72579351a84b95f976bd7b3e84aa6686be6497045ba84be560"}, - {file = "rpds_py-0.21.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c38dbf31c57032667dd5a2f0568ccde66e868e8f78d5a0d27dcc56d70f3fcd3b"}, - {file = "rpds_py-0.21.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2d6129137f43f7fa02d41542ffff4871d4aefa724a5fe38e2c31a4e0fd343fb0"}, - {file = "rpds_py-0.21.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:520ed8b99b0bf86a176271f6fe23024323862ac674b1ce5b02a72bfeff3fff44"}, - {file = "rpds_py-0.21.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaeb25ccfb9b9014a10eaf70904ebf3f79faaa8e60e99e19eef9f478651b9b74"}, - {file = "rpds_py-0.21.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af04ac89c738e0f0f1b913918024c3eab6e3ace989518ea838807177d38a2e94"}, - {file = "rpds_py-0.21.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b9b76e2afd585803c53c5b29e992ecd183f68285b62fe2668383a18e74abe7a3"}, - {file = "rpds_py-0.21.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5afb5efde74c54724e1a01118c6e5c15e54e642c42a1ba588ab1f03544ac8c7a"}, - {file = "rpds_py-0.21.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:52c041802a6efa625ea18027a0723676a778869481d16803481ef6cc02ea8cb3"}, - {file = "rpds_py-0.21.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ee1e4fc267b437bb89990b2f2abf6c25765b89b72dd4a11e21934df449e0c976"}, - {file = "rpds_py-0.21.0-cp313-none-win32.whl", hash = "sha256:0c025820b78817db6a76413fff6866790786c38f95ea3f3d3c93dbb73b632202"}, - {file = "rpds_py-0.21.0-cp313-none-win_amd64.whl", hash = "sha256:320c808df533695326610a1b6a0a6e98f033e49de55d7dc36a13c8a30cfa756e"}, - {file = "rpds_py-0.21.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:2c51d99c30091f72a3c5d126fad26236c3f75716b8b5e5cf8effb18889ced928"}, - {file = "rpds_py-0.21.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cbd7504a10b0955ea287114f003b7ad62330c9e65ba012c6223dba646f6ffd05"}, - {file = "rpds_py-0.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6dcc4949be728ede49e6244eabd04064336012b37f5c2200e8ec8eb2988b209c"}, - {file = "rpds_py-0.21.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f414da5c51bf350e4b7960644617c130140423882305f7574b6cf65a3081cecb"}, - {file = "rpds_py-0.21.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9afe42102b40007f588666bc7de82451e10c6788f6f70984629db193849dced1"}, - {file = "rpds_py-0.21.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b929c2bb6e29ab31f12a1117c39f7e6d6450419ab7464a4ea9b0b417174f044"}, - {file = "rpds_py-0.21.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8404b3717da03cbf773a1d275d01fec84ea007754ed380f63dfc24fb76ce4592"}, - {file = "rpds_py-0.21.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e12bb09678f38b7597b8346983d2323a6482dcd59e423d9448108c1be37cac9d"}, - {file = "rpds_py-0.21.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:58a0e345be4b18e6b8501d3b0aa540dad90caeed814c515e5206bb2ec26736fd"}, - {file = "rpds_py-0.21.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:c3761f62fcfccf0864cc4665b6e7c3f0c626f0380b41b8bd1ce322103fa3ef87"}, - {file = "rpds_py-0.21.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c2b2f71c6ad6c2e4fc9ed9401080badd1469fa9889657ec3abea42a3d6b2e1ed"}, - {file = "rpds_py-0.21.0-cp39-none-win32.whl", hash = "sha256:b21747f79f360e790525e6f6438c7569ddbfb1b3197b9e65043f25c3c9b489d8"}, - {file = "rpds_py-0.21.0-cp39-none-win_amd64.whl", hash = "sha256:0626238a43152918f9e72ede9a3b6ccc9e299adc8ade0d67c5e142d564c9a83d"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6b4ef7725386dc0762857097f6b7266a6cdd62bfd209664da6712cb26acef035"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:6bc0e697d4d79ab1aacbf20ee5f0df80359ecf55db33ff41481cf3e24f206919"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da52d62a96e61c1c444f3998c434e8b263c384f6d68aca8274d2e08d1906325c"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:98e4fe5db40db87ce1c65031463a760ec7906ab230ad2249b4572c2fc3ef1f9f"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30bdc973f10d28e0337f71d202ff29345320f8bc49a31c90e6c257e1ccef4333"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:faa5e8496c530f9c71f2b4e1c49758b06e5f4055e17144906245c99fa6d45356"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32eb88c30b6a4f0605508023b7141d043a79b14acb3b969aa0b4f99b25bc7d4a"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a89a8ce9e4e75aeb7fa5d8ad0f3fecdee813802592f4f46a15754dcb2fd6b061"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:241e6c125568493f553c3d0fdbb38c74babf54b45cef86439d4cd97ff8feb34d"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:3b766a9f57663396e4f34f5140b3595b233a7b146e94777b97a8413a1da1be18"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:af4a644bf890f56e41e74be7d34e9511e4954894d544ec6b8efe1e21a1a8da6c"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3e30a69a706e8ea20444b98a49f386c17b26f860aa9245329bab0851ed100677"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:031819f906bb146561af051c7cef4ba2003d28cff07efacef59da973ff7969ba"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b876f2bc27ab5954e2fd88890c071bd0ed18b9c50f6ec3de3c50a5ece612f7a6"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc5695c321e518d9f03b7ea6abb5ea3af4567766f9852ad1560f501b17588c7b"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b4de1da871b5c0fd5537b26a6fc6814c3cc05cabe0c941db6e9044ffbb12f04a"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:878f6fea96621fda5303a2867887686d7a198d9e0f8a40be100a63f5d60c88c9"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8eeec67590e94189f434c6d11c426892e396ae59e4801d17a93ac96b8c02a6c"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ff2eba7f6c0cb523d7e9cff0903f2fe1feff8f0b2ceb6bd71c0e20a4dcee271"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a429b99337062877d7875e4ff1a51fe788424d522bd64a8c0a20ef3021fdb6ed"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:d167e4dbbdac48bd58893c7e446684ad5d425b407f9336e04ab52e8b9194e2ed"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:4eb2de8a147ffe0626bfdc275fc6563aa7bf4b6db59cf0d44f0ccd6ca625a24e"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e78868e98f34f34a88e23ee9ccaeeec460e4eaf6db16d51d7a9b883e5e785a5e"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4991ca61656e3160cdaca4851151fd3f4a92e9eba5c7a530ab030d6aee96ec89"}, - {file = "rpds_py-0.21.0.tar.gz", hash = "sha256:ed6378c9d66d0de903763e7706383d60c33829581f0adff47b6535f1802fa6db"}, + {file = "rpds_py-0.22.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:6c7b99ca52c2c1752b544e310101b98a659b720b21db00e65edca34483259967"}, + {file = "rpds_py-0.22.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:be2eb3f2495ba669d2a985f9b426c1797b7d48d6963899276d22f23e33d47e37"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70eb60b3ae9245ddea20f8a4190bd79c705a22f8028aaf8bbdebe4716c3fab24"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4041711832360a9b75cfb11b25a6a97c8fb49c07b8bd43d0d02b45d0b499a4ff"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64607d4cbf1b7e3c3c8a14948b99345eda0e161b852e122c6bb71aab6d1d798c"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e69b0a0e2537f26d73b4e43ad7bc8c8efb39621639b4434b76a3de50c6966e"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc27863442d388870c1809a87507727b799c8460573cfbb6dc0eeaef5a11b5ec"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e79dd39f1e8c3504be0607e5fc6e86bb60fe3584bec8b782578c3b0fde8d932c"}, + {file = "rpds_py-0.22.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e0fa2d4ec53dc51cf7d3bb22e0aa0143966119f42a0c3e4998293a3dd2856b09"}, + {file = "rpds_py-0.22.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fda7cb070f442bf80b642cd56483b5548e43d366fe3f39b98e67cce780cded00"}, + {file = "rpds_py-0.22.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cff63a0272fcd259dcc3be1657b07c929c466b067ceb1c20060e8d10af56f5bf"}, + {file = "rpds_py-0.22.3-cp310-cp310-win32.whl", hash = "sha256:9bd7228827ec7bb817089e2eb301d907c0d9827a9e558f22f762bb690b131652"}, + {file = "rpds_py-0.22.3-cp310-cp310-win_amd64.whl", hash = "sha256:9beeb01d8c190d7581a4d59522cd3d4b6887040dcfc744af99aa59fef3e041a8"}, + {file = "rpds_py-0.22.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d20cfb4e099748ea39e6f7b16c91ab057989712d31761d3300d43134e26e165f"}, + {file = "rpds_py-0.22.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:68049202f67380ff9aa52f12e92b1c30115f32e6895cd7198fa2a7961621fc5a"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb4f868f712b2dd4bcc538b0a0c1f63a2b1d584c925e69a224d759e7070a12d5"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bc51abd01f08117283c5ebf64844a35144a0843ff7b2983e0648e4d3d9f10dbb"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f3cec041684de9a4684b1572fe28c7267410e02450f4561700ca5a3bc6695a2"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7ef9d9da710be50ff6809fed8f1963fecdfecc8b86656cadfca3bc24289414b0"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59f4a79c19232a5774aee369a0c296712ad0e77f24e62cad53160312b1c1eaa1"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a60bce91f81ddaac922a40bbb571a12c1070cb20ebd6d49c48e0b101d87300d"}, + {file = "rpds_py-0.22.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e89391e6d60251560f0a8f4bd32137b077a80d9b7dbe6d5cab1cd80d2746f648"}, + {file = "rpds_py-0.22.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e3fb866d9932a3d7d0c82da76d816996d1667c44891bd861a0f97ba27e84fc74"}, + {file = "rpds_py-0.22.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1352ae4f7c717ae8cba93421a63373e582d19d55d2ee2cbb184344c82d2ae55a"}, + {file = "rpds_py-0.22.3-cp311-cp311-win32.whl", hash = "sha256:b0b4136a252cadfa1adb705bb81524eee47d9f6aab4f2ee4fa1e9d3cd4581f64"}, + {file = "rpds_py-0.22.3-cp311-cp311-win_amd64.whl", hash = "sha256:8bd7c8cfc0b8247c8799080fbff54e0b9619e17cdfeb0478ba7295d43f635d7c"}, + {file = "rpds_py-0.22.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:27e98004595899949bd7a7b34e91fa7c44d7a97c40fcaf1d874168bb652ec67e"}, + {file = "rpds_py-0.22.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1978d0021e943aae58b9b0b196fb4895a25cc53d3956b8e35e0b7682eefb6d56"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:655ca44a831ecb238d124e0402d98f6212ac527a0ba6c55ca26f616604e60a45"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:feea821ee2a9273771bae61194004ee2fc33f8ec7db08117ef9147d4bbcbca8e"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22bebe05a9ffc70ebfa127efbc429bc26ec9e9b4ee4d15a740033efda515cf3d"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3af6e48651c4e0d2d166dc1b033b7042ea3f871504b6805ba5f4fe31581d8d38"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67ba3c290821343c192f7eae1d8fd5999ca2dc99994114643e2f2d3e6138b15"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:02fbb9c288ae08bcb34fb41d516d5eeb0455ac35b5512d03181d755d80810059"}, + {file = "rpds_py-0.22.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f56a6b404f74ab372da986d240e2e002769a7d7102cc73eb238a4f72eec5284e"}, + {file = "rpds_py-0.22.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0a0461200769ab3b9ab7e513f6013b7a97fdeee41c29b9db343f3c5a8e2b9e61"}, + {file = "rpds_py-0.22.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8633e471c6207a039eff6aa116e35f69f3156b3989ea3e2d755f7bc41754a4a7"}, + {file = "rpds_py-0.22.3-cp312-cp312-win32.whl", hash = "sha256:593eba61ba0c3baae5bc9be2f5232430453fb4432048de28399ca7376de9c627"}, + {file = "rpds_py-0.22.3-cp312-cp312-win_amd64.whl", hash = "sha256:d115bffdd417c6d806ea9069237a4ae02f513b778e3789a359bc5856e0404cc4"}, + {file = "rpds_py-0.22.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ea7433ce7e4bfc3a85654aeb6747babe3f66eaf9a1d0c1e7a4435bbdf27fea84"}, + {file = "rpds_py-0.22.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6dd9412824c4ce1aca56c47b0991e65bebb7ac3f4edccfd3f156150c96a7bf25"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20070c65396f7373f5df4005862fa162db5d25d56150bddd0b3e8214e8ef45b4"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0b09865a9abc0ddff4e50b5ef65467cd94176bf1e0004184eb915cbc10fc05c5"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3453e8d41fe5f17d1f8e9c383a7473cd46a63661628ec58e07777c2fff7196dc"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5d36399a1b96e1a5fdc91e0522544580dbebeb1f77f27b2b0ab25559e103b8b"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009de23c9c9ee54bf11303a966edf4d9087cd43a6003672e6aa7def643d06518"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1aef18820ef3e4587ebe8b3bc9ba6e55892a6d7b93bac6d29d9f631a3b4befbd"}, + {file = "rpds_py-0.22.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f60bd8423be1d9d833f230fdbccf8f57af322d96bcad6599e5a771b151398eb2"}, + {file = "rpds_py-0.22.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:62d9cfcf4948683a18a9aff0ab7e1474d407b7bab2ca03116109f8464698ab16"}, + {file = "rpds_py-0.22.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9253fc214112405f0afa7db88739294295f0e08466987f1d70e29930262b4c8f"}, + {file = "rpds_py-0.22.3-cp313-cp313-win32.whl", hash = "sha256:fb0ba113b4983beac1a2eb16faffd76cb41e176bf58c4afe3e14b9c681f702de"}, + {file = "rpds_py-0.22.3-cp313-cp313-win_amd64.whl", hash = "sha256:c58e2339def52ef6b71b8f36d13c3688ea23fa093353f3a4fee2556e62086ec9"}, + {file = "rpds_py-0.22.3-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:f82a116a1d03628a8ace4859556fb39fd1424c933341a08ea3ed6de1edb0283b"}, + {file = "rpds_py-0.22.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3dfcbc95bd7992b16f3f7ba05af8a64ca694331bd24f9157b49dadeeb287493b"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59259dc58e57b10e7e18ce02c311804c10c5a793e6568f8af4dead03264584d1"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5725dd9cc02068996d4438d397e255dcb1df776b7ceea3b9cb972bdb11260a83"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99b37292234e61325e7a5bb9689e55e48c3f5f603af88b1642666277a81f1fbd"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:27b1d3b3915a99208fee9ab092b8184c420f2905b7d7feb4aeb5e4a9c509b8a1"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f612463ac081803f243ff13cccc648578e2279295048f2a8d5eb430af2bae6e3"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f73d3fef726b3243a811121de45193c0ca75f6407fe66f3f4e183c983573e130"}, + {file = "rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3f21f0495edea7fdbaaa87e633a8689cd285f8f4af5c869f27bc8074638ad69c"}, + {file = "rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1e9663daaf7a63ceccbbb8e3808fe90415b0757e2abddbfc2e06c857bf8c5e2b"}, + {file = "rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a76e42402542b1fae59798fab64432b2d015ab9d0c8c47ba7addddbaf7952333"}, + {file = "rpds_py-0.22.3-cp313-cp313t-win32.whl", hash = "sha256:69803198097467ee7282750acb507fba35ca22cc3b85f16cf45fb01cb9097730"}, + {file = "rpds_py-0.22.3-cp313-cp313t-win_amd64.whl", hash = "sha256:f5cf2a0c2bdadf3791b5c205d55a37a54025c6e18a71c71f82bb536cf9a454bf"}, + {file = "rpds_py-0.22.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:378753b4a4de2a7b34063d6f95ae81bfa7b15f2c1a04a9518e8644e81807ebea"}, + {file = "rpds_py-0.22.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3445e07bf2e8ecfeef6ef67ac83de670358abf2996916039b16a218e3d95e97e"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b2513ba235829860b13faa931f3b6846548021846ac808455301c23a101689d"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eaf16ae9ae519a0e237a0f528fd9f0197b9bb70f40263ee57ae53c2b8d48aeb3"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:583f6a1993ca3369e0f80ba99d796d8e6b1a3a2a442dd4e1a79e652116413091"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4617e1915a539a0d9a9567795023de41a87106522ff83fbfaf1f6baf8e85437e"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c150c7a61ed4a4f4955a96626574e9baf1adf772c2fb61ef6a5027e52803543"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2fa4331c200c2521512595253f5bb70858b90f750d39b8cbfd67465f8d1b596d"}, + {file = "rpds_py-0.22.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:214b7a953d73b5e87f0ebece4a32a5bd83c60a3ecc9d4ec8f1dca968a2d91e99"}, + {file = "rpds_py-0.22.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f47ad3d5f3258bd7058d2d506852217865afefe6153a36eb4b6928758041d831"}, + {file = "rpds_py-0.22.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f276b245347e6e36526cbd4a266a417796fc531ddf391e43574cf6466c492520"}, + {file = "rpds_py-0.22.3-cp39-cp39-win32.whl", hash = "sha256:bbb232860e3d03d544bc03ac57855cd82ddf19c7a07651a7c0fdb95e9efea8b9"}, + {file = "rpds_py-0.22.3-cp39-cp39-win_amd64.whl", hash = "sha256:cfbc454a2880389dbb9b5b398e50d439e2e58669160f27b60e5eca11f68ae17c"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d48424e39c2611ee1b84ad0f44fb3b2b53d473e65de061e3f460fc0be5f1939d"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:24e8abb5878e250f2eb0d7859a8e561846f98910326d06c0d51381fed59357bd"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b232061ca880db21fa14defe219840ad9b74b6158adb52ddf0e87bead9e8493"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac0a03221cdb5058ce0167ecc92a8c89e8d0decdc9e99a2ec23380793c4dcb96"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb0c341fa71df5a4595f9501df4ac5abfb5a09580081dffbd1ddd4654e6e9123"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf9db5488121b596dbfc6718c76092fda77b703c1f7533a226a5a9f65248f8ad"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8db6b5b2d4491ad5b6bdc2bc7c017eec108acbf4e6785f42a9eb0ba234f4c9"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b3d504047aba448d70cf6fa22e06cb09f7cbd761939fdd47604f5e007675c24e"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:e61b02c3f7a1e0b75e20c3978f7135fd13cb6cf551bf4a6d29b999a88830a338"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:e35ba67d65d49080e8e5a1dd40101fccdd9798adb9b050ff670b7d74fa41c566"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:26fd7cac7dd51011a245f29a2cc6489c4608b5a8ce8d75661bb4a1066c52dfbe"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:177c7c0fce2855833819c98e43c262007f42ce86651ffbb84f37883308cb0e7d"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bb47271f60660803ad11f4c61b42242b8c1312a31c98c578f79ef9387bbde21c"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:70fb28128acbfd264eda9bf47015537ba3fe86e40d046eb2963d75024be4d055"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44d61b4b7d0c2c9ac019c314e52d7cbda0ae31078aabd0f22e583af3e0d79723"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f0e260eaf54380380ac3808aa4ebe2d8ca28b9087cf411649f96bad6900c728"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b25bc607423935079e05619d7de556c91fb6adeae9d5f80868dde3468657994b"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fb6116dfb8d1925cbdb52595560584db42a7f664617a1f7d7f6e32f138cdf37d"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a63cbdd98acef6570c62b92a1e43266f9e8b21e699c363c0fef13bd530799c11"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2b8f60e1b739a74bab7e01fcbe3dddd4657ec685caa04681df9d562ef15b625f"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2e8b55d8517a2fda8d95cb45d62a5a8bbf9dd0ad39c5b25c8833efea07b880ca"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:2de29005e11637e7a2361fa151f780ff8eb2543a0da1413bb951e9f14b699ef3"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:666ecce376999bf619756a24ce15bb14c5bfaf04bf00abc7e663ce17c3f34fe7"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5246b14ca64a8675e0a7161f7af68fe3e910e6b90542b4bfb5439ba752191df6"}, + {file = "rpds_py-0.22.3.tar.gz", hash = "sha256:e32fee8ab45d3c2db6da19a5323bc3362237c8b653c70194414b892fd06a080d"}, ] [[package]] @@ -2844,33 +3261,44 @@ win32 = ["pywin32"] [[package]] name = "setuptools" -version = "75.4.0" +version = "75.8.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.9" files = [ - {file = "setuptools-75.4.0-py3-none-any.whl", hash = "sha256:b3c5d862f98500b06ffdf7cc4499b48c46c317d8d56cb30b5c8bce4d88f5c216"}, - {file = "setuptools-75.4.0.tar.gz", hash = "sha256:1dc484f5cf56fd3fe7216d7b8df820802e7246cfb534a1db2aa64f14fcb9cdcb"}, + {file = "setuptools-75.8.0-py3-none-any.whl", hash = "sha256:e3982f444617239225d675215d51f6ba05f845d4eec313da4418fdbb56fb27e3"}, + {file = "setuptools-75.8.0.tar.gz", hash = "sha256:c5afc8f407c626b8313a86e10311dd3f661c6cd9c09d4bf8c15c0e11f9f2b0e6"}, ] [package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.7.0)"] -core = ["importlib-metadata (>=6)", "jaraco.collections", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.8.0)"] +core = ["importlib_metadata (>=6)", "jaraco.collections", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (>=1.12,<1.14)", "pytest-mypy"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib_metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.14.*)", "pytest-mypy"] [[package]] name = "six" -version = "1.16.0" +version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, +] + +[[package]] +name = "smmap" +version = "5.0.2" +description = "A pure Python implementation of a sliding window memory map manager" +optional = false +python-versions = ">=3.7" files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, + {file = "smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e"}, + {file = "smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5"}, ] [[package]] @@ -2977,22 +3405,22 @@ files = [ [[package]] name = "tornado" -version = "6.4.1" +version = "6.4.2" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." optional = false python-versions = ">=3.8" files = [ - {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, - {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698"}, - {file = "tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d"}, - {file = "tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7"}, - {file = "tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9"}, + {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1"}, + {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803"}, + {file = "tornado-6.4.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a017d239bd1bb0919f72af256a970624241f070496635784d9bf0db640d3fec"}, + {file = "tornado-6.4.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c36e62ce8f63409301537222faffcef7dfc5284f27eec227389f2ad11b09d946"}, + {file = "tornado-6.4.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca9eb02196e789c9cb5c3c7c0f04fb447dc2adffd95265b2c7223a8a615ccbf"}, + {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:304463bd0772442ff4d0f5149c6f1c2135a1fae045adf070821c6cdc76980634"}, + {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:c82c46813ba483a385ab2a99caeaedf92585a1f90defb5693351fa7e4ea0bf73"}, + {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:932d195ca9015956fa502c6b56af9eb06106140d844a335590c1ec7f5277d10c"}, + {file = "tornado-6.4.2-cp38-abi3-win32.whl", hash = "sha256:2876cef82e6c5978fde1e0d5b1f919d756968d5b4282418f3146b79b58556482"}, + {file = "tornado-6.4.2-cp38-abi3-win_amd64.whl", hash = "sha256:908b71bf3ff37d81073356a5fadcc660eb10c1476ee6e2725588626ce7e5ca38"}, + {file = "tornado-6.4.2.tar.gz", hash = "sha256:92bad5b4746e9879fd7bf1eb21dce4e3fc5128d71601f80005afa39237ad620b"}, ] [[package]] @@ -3012,231 +3440,155 @@ test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0, [[package]] name = "tree-sitter" -version = "0.23.0" +version = "0.24.0" description = "Python bindings to the Tree-sitter parsing library" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" files = [ - {file = "tree-sitter-0.23.0.tar.gz", hash = "sha256:4c0d186f262a6b186e155a327150064abbf02b5659f7bc580eb965374025f2c2"}, - {file = "tree_sitter-0.23.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5f6cb46166e9fe82542cad780afb7edf5fab30b75e85a61579dd0bf7afaa134"}, - {file = "tree_sitter-0.23.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1a5adee1065f25d1d85cdb78d9d8e96aa211e840b3b700b35a52e4574a949748"}, - {file = "tree_sitter-0.23.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d34291c42feef2d4d51c3cb87055c2430c5802f6cfca1c5d8ae07619a2bf7958"}, - {file = "tree_sitter-0.23.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7200107a042e2518808718dc6290033be698cd37f766af51832e3bacfbe2a275"}, - {file = "tree_sitter-0.23.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f8d8a867de53a0ab6793aa43f35df7b98dc237ec18ac7ee6e9f8507dc21a13b0"}, - {file = "tree_sitter-0.23.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d90bba4d92c4a4163d81a91a392af18910cc1ab6fef0b4e0d5c084808a3ca15e"}, - {file = "tree_sitter-0.23.0-cp310-cp310-win_amd64.whl", hash = "sha256:0766af549741c6b79440cec1d2ddfcf4688a416b82fbe2f0e7c1d9b0b35fe2db"}, - {file = "tree_sitter-0.23.0-cp310-cp310-win_arm64.whl", hash = "sha256:2e5cc4596b4705f8aedec14580126f3a7a28b2341990b84f34435a6dba5ad373"}, - {file = "tree_sitter-0.23.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:81dc39e0281ec4318d59fe87d85b45143ffeb87b8dde5b841db17d68ac647cd8"}, - {file = "tree_sitter-0.23.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c01ab28d6e0afd670c4920b104aa3867f98327493d8ca6fc56376d28cd7bc148"}, - {file = "tree_sitter-0.23.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9b2e3c27fee3db2c975eceff32d2135cb237cabaa266b7dfd51bdcb67e2919e"}, - {file = "tree_sitter-0.23.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d81093c6e751b6a9042ea427efb92ae1ab93acaa6c748234d856630b616d8ed5"}, - {file = "tree_sitter-0.23.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:81ef25f8be8776b97196ca0627de1a66279bdf8ac69460a5dd658617414a8d58"}, - {file = "tree_sitter-0.23.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2c7617149fc541fb6296b620329fde7cf961dd375ae11f2418b52108110e65b2"}, - {file = "tree_sitter-0.23.0-cp311-cp311-win_amd64.whl", hash = "sha256:6ecd7385c8851e3a7c9ed78bcad080c5535ac99534a67ba2392829c45f8c1b42"}, - {file = "tree_sitter-0.23.0-cp311-cp311-win_arm64.whl", hash = "sha256:42bcb535047bc9a2dbd1f421cce0857ca5e28387e5add6757072c8c3b7fa796a"}, - {file = "tree_sitter-0.23.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b40e3c961fe1df761b62869a4fcb3949e00906633420684df6d7ba503869b854"}, - {file = "tree_sitter-0.23.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3df65a4cd2e2d091097ae84a3f96828c0906c698684fdc1f7985b5a452d1045e"}, - {file = "tree_sitter-0.23.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e62f810b7c4d65e1901dae3aea432c8de32ce7a35d63296f70cc99e84d1986d2"}, - {file = "tree_sitter-0.23.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaf21159e0f07fe6307e096b81a92afcf5deb0ce95655d29b065d5a6c41f78b3"}, - {file = "tree_sitter-0.23.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2a0e26f59749e748accba04cf48287c463d2ff803156586d1d797c1b786f14ab"}, - {file = "tree_sitter-0.23.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c7b873dbc077eb295df921e47a82197b87a0d27275534ffb063cea5ec6ee0f5e"}, - {file = "tree_sitter-0.23.0-cp312-cp312-win_amd64.whl", hash = "sha256:13eb219538cf3b24228aba891c8ab029490c821d8dc3bc8bc45e06a2cdc78ec5"}, - {file = "tree_sitter-0.23.0-cp312-cp312-win_arm64.whl", hash = "sha256:9ce17115a637793cf7313bfb336519b1803a263f3b1174faa259e52d7a778665"}, - {file = "tree_sitter-0.23.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:747a8895cbd02e21d7e9980643853a79b98b2a1c93f990439091e242142c90d4"}, - {file = "tree_sitter-0.23.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3302349ae0c78a38b71aec8fc4353388bbae6960d38ed190e4382208c0218805"}, - {file = "tree_sitter-0.23.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f45ea0d5ce34c4836f73b3643680b384eebf23517a5194651419ac9c625ee75"}, - {file = "tree_sitter-0.23.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:912b49c0a9152e5dbb064d60a962a5f012d97be387aa38adb13c6e970043870b"}, - {file = "tree_sitter-0.23.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2840e7ce7de7ee72af7a70333da263622dc4630d92ddb2e661c68054c479459d"}, - {file = "tree_sitter-0.23.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:117d5e10d60cda830f0f5d88beaf45205a3c33439fce3a95da4a3448a483a4f9"}, - {file = "tree_sitter-0.23.0-cp39-cp39-win_amd64.whl", hash = "sha256:eff050b68930c2dfc0c521961612310615540e3999cce76123ea0a363772efc2"}, - {file = "tree_sitter-0.23.0-cp39-cp39-win_arm64.whl", hash = "sha256:cbf71655813da4b210a72437ad7b7da4ab8788acfdde8c6b35f68877c61fae4a"}, -] - -[package.extras] -docs = ["sphinx (>=7.3,<8.0)", "sphinx-book-theme"] -tests = ["tree-sitter-html", "tree-sitter-javascript", "tree-sitter-json", "tree-sitter-python", "tree-sitter-rust"] + {file = "tree-sitter-0.24.0.tar.gz", hash = "sha256:abd95af65ca2f4f7eca356343391ed669e764f37748b5352946f00f7fc78e734"}, + {file = "tree_sitter-0.24.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f3f00feff1fc47a8e4863561b8da8f5e023d382dd31ed3e43cd11d4cae445445"}, + {file = "tree_sitter-0.24.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f9691be48d98c49ef8f498460278884c666b44129222ed6217477dffad5d4831"}, + {file = "tree_sitter-0.24.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:098a81df9f89cf254d92c1cd0660a838593f85d7505b28249216661d87adde4a"}, + {file = "tree_sitter-0.24.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b26bf9e958da6eb7e74a081aab9d9c7d05f9baeaa830dbb67481898fd16f1f5"}, + {file = "tree_sitter-0.24.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2a84ff87a2f2a008867a1064aba510ab3bd608e3e0cd6e8fef0379efee266c73"}, + {file = "tree_sitter-0.24.0-cp310-cp310-win_amd64.whl", hash = "sha256:c012e4c345c57a95d92ab5a890c637aaa51ab3b7ff25ed7069834b1087361c95"}, + {file = "tree_sitter-0.24.0-cp310-cp310-win_arm64.whl", hash = "sha256:033506c1bc2ba7bd559b23a6bdbeaf1127cee3c68a094b82396718596dfe98bc"}, + {file = "tree_sitter-0.24.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:de0fb7c18c6068cacff46250c0a0473e8fc74d673e3e86555f131c2c1346fb13"}, + {file = "tree_sitter-0.24.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a7c9c89666dea2ce2b2bf98e75f429d2876c569fab966afefdcd71974c6d8538"}, + {file = "tree_sitter-0.24.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ddb113e6b8b3e3b199695b1492a47d87d06c538e63050823d90ef13cac585fd"}, + {file = "tree_sitter-0.24.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01ea01a7003b88b92f7f875da6ba9d5d741e0c84bb1bd92c503c0eecd0ee6409"}, + {file = "tree_sitter-0.24.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:464fa5b2cac63608915a9de8a6efd67a4da1929e603ea86abaeae2cb1fe89921"}, + {file = "tree_sitter-0.24.0-cp311-cp311-win_amd64.whl", hash = "sha256:3b1f3cbd9700e1fba0be2e7d801527e37c49fc02dc140714669144ef6ab58dce"}, + {file = "tree_sitter-0.24.0-cp311-cp311-win_arm64.whl", hash = "sha256:f3f08a2ca9f600b3758792ba2406971665ffbad810847398d180c48cee174ee2"}, + {file = "tree_sitter-0.24.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:14beeff5f11e223c37be7d5d119819880601a80d0399abe8c738ae2288804afc"}, + {file = "tree_sitter-0.24.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:26a5b130f70d5925d67b47db314da209063664585a2fd36fa69e0717738efaf4"}, + {file = "tree_sitter-0.24.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fc5c3c26d83c9d0ecb4fc4304fba35f034b7761d35286b936c1db1217558b4e"}, + {file = "tree_sitter-0.24.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:772e1bd8c0931c866b848d0369b32218ac97c24b04790ec4b0e409901945dd8e"}, + {file = "tree_sitter-0.24.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:24a8dd03b0d6b8812425f3b84d2f4763322684e38baf74e5bb766128b5633dc7"}, + {file = "tree_sitter-0.24.0-cp312-cp312-win_amd64.whl", hash = "sha256:f9e8b1605ab60ed43803100f067eed71b0b0e6c1fb9860a262727dbfbbb74751"}, + {file = "tree_sitter-0.24.0-cp312-cp312-win_arm64.whl", hash = "sha256:f733a83d8355fc95561582b66bbea92ffd365c5d7a665bc9ebd25e049c2b2abb"}, + {file = "tree_sitter-0.24.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0d4a6416ed421c4210f0ca405a4834d5ccfbb8ad6692d4d74f7773ef68f92071"}, + {file = "tree_sitter-0.24.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e0992d483677e71d5c5d37f30dfb2e3afec2f932a9c53eec4fca13869b788c6c"}, + {file = "tree_sitter-0.24.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57277a12fbcefb1c8b206186068d456c600dbfbc3fd6c76968ee22614c5cd5ad"}, + {file = "tree_sitter-0.24.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d25fa22766d63f73716c6fec1a31ee5cf904aa429484256bd5fdf5259051ed74"}, + {file = "tree_sitter-0.24.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7d5d9537507e1c8c5fa9935b34f320bfec4114d675e028f3ad94f11cf9db37b9"}, + {file = "tree_sitter-0.24.0-cp313-cp313-win_amd64.whl", hash = "sha256:f58bb4956917715ec4d5a28681829a8dad5c342cafd4aea269f9132a83ca9b34"}, + {file = "tree_sitter-0.24.0-cp313-cp313-win_arm64.whl", hash = "sha256:23641bd25dcd4bb0b6fa91b8fb3f46cc9f1c9f475efe4d536d3f1f688d1b84c8"}, +] + +[package.extras] +docs = ["sphinx (>=8.1,<9.0)", "sphinx-book-theme"] +tests = ["tree-sitter-html (>=0.23.2)", "tree-sitter-javascript (>=0.23.1)", "tree-sitter-json (>=0.24.8)", "tree-sitter-python (>=0.23.6)", "tree-sitter-rust (>=0.23.2)"] [[package]] name = "tree-sitter-c" -version = "0.23.1" +version = "0.23.4" description = "C grammar for tree-sitter" optional = false python-versions = ">=3.9" files = [ - {file = "tree_sitter_c-0.23.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:1e9088a4811a6884ba35d819944af4f4a9ff0bdf606222b83be0a18a9e30eb24"}, - {file = "tree_sitter_c-0.23.1-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:98ed3a5950f03bbec77d99ce16f062f41b831dece003db4e9d86e81330904048"}, - {file = "tree_sitter_c-0.23.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9222ca046dcad6f3afa863193e0510df9a128d01b25d3203aa89decf181aebc"}, - {file = "tree_sitter_c-0.23.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91a643f4ccaa6412c9a95a5e8b232ad7bf29a02134b76c4cd73920bcd4eb7f3e"}, - {file = "tree_sitter_c-0.23.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0cee7af19cb7e34ff3b56f8050109e162bb1247a0923e7d12387fa3a72fa8efa"}, - {file = "tree_sitter_c-0.23.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:22d4c6e460f58e66f160c093bdf62859a8366c4abeef71b946153d38008087e5"}, - {file = "tree_sitter_c-0.23.1-cp39-abi3-win_amd64.whl", hash = "sha256:439714cad386405a0a4878a297e4a4f6c032893986144d6383b7ba864e2e5120"}, - {file = "tree_sitter_c-0.23.1-cp39-abi3-win_arm64.whl", hash = "sha256:35005a9307de9d37f2e9a3aa969869d81c541ca3b00e70e9275af39a0452dfb2"}, - {file = "tree_sitter_c-0.23.1.tar.gz", hash = "sha256:815a4f5eccc7e6762fdfbf689122227b1f3bb3134338ae2593c06b61071f9583"}, + {file = "tree_sitter_c-0.23.4-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2c92c0571b36b6da06f8882f34151dc11e67a493e9101cc0026a16da27709c05"}, + {file = "tree_sitter_c-0.23.4-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:98c285a23bf4fb6fb34140d6ea0f0d25d0a93e0d93692f9dffe3db6d1fe08534"}, + {file = "tree_sitter_c-0.23.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e42a3519825ca59c91b2b7aec08dd3c89e02690c7b315d54a1e1743f9be3f15"}, + {file = "tree_sitter_c-0.23.4-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c15c7588c3d95872328019073a8d5eaf7c2691b4d4ef0393a0168399b2ad2356"}, + {file = "tree_sitter_c-0.23.4-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:013403e74765d74e523f380f9df8f3d99e9fe94132a3fc0c8b29cba538a7b2bf"}, + {file = "tree_sitter_c-0.23.4-cp39-abi3-win_amd64.whl", hash = "sha256:a4d7bdeaca8f1da72352a945853f56aa5d34e7bc22569ec5bda5d7c1a04e5b0f"}, + {file = "tree_sitter_c-0.23.4-cp39-abi3-win_arm64.whl", hash = "sha256:edd36e12cc79b8b5bbc81fc336ff7d2577d0fe16afd18163c9aff7ae3ff69e15"}, + {file = "tree_sitter_c-0.23.4.tar.gz", hash = "sha256:9215c7888dd019038f162ea5646178f6e129cd2b49fc506d14becf5e426121d7"}, ] [package.extras] -core = ["tree-sitter (>=0.21,<1.0)"] +core = ["tree-sitter (>=0.22,<1.0)"] [[package]] name = "tree-sitter-go" -version = "0.23.1" +version = "0.23.4" description = "Go grammar for tree-sitter" optional = false python-versions = ">=3.9" files = [ - {file = "tree_sitter_go-0.23.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:011f045a33f74b5a5eefc9ac9d0658a12b1356dab61f848839b3f7013dc5d868"}, - {file = "tree_sitter_go-0.23.1-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:83dbcfb7e2b02df1ea55d344fe6429e3708f87f787dd5d78950968a95a85e732"}, - {file = "tree_sitter_go-0.23.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12e78ed3079f56585a27e5dbd7b0cd26de48ad2c8aa12029bb656e0c5a8893bf"}, - {file = "tree_sitter_go-0.23.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9bcd754a83e5f7463a2ed0a5e88474651beb82b637ff69fee90941690694c398"}, - {file = "tree_sitter_go-0.23.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c40748fa7508eef72a21a3f6072b8254ab41442c0d40f3ac122de65a2435c7b4"}, - {file = "tree_sitter_go-0.23.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3e971144421af39e298bb3fff9ae164897c6ebf9d126371835e15b145399891b"}, - {file = "tree_sitter_go-0.23.1-cp39-abi3-win_amd64.whl", hash = "sha256:e1d5c9312d69b00f9be60c65ba2f9357c36040dd28ed7fe11ae473b1c2ee048c"}, - {file = "tree_sitter_go-0.23.1.tar.gz", hash = "sha256:a413bfb3d77a47fd84618e01849a6b4b35f794d694493c0b58dbb4a5da82f916"}, + {file = "tree_sitter_go-0.23.4-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c9320f87a05cd47fa0f627b9329bbc09b7ed90de8fe4f5882aed318d6e19962d"}, + {file = "tree_sitter_go-0.23.4-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:914e63d16b36ab0e4f52b031e574b82d17d0bbfecca138ae83e887a1cf5b71ac"}, + {file = "tree_sitter_go-0.23.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:330ecbb38d6ea4ef41eba2d473056889705e64f6a51c2fb613de05b1bcb5ba22"}, + {file = "tree_sitter_go-0.23.4-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd14d23056ae980debfccc0db67d0a168da03792ca2968b1b5dd58ce288084e7"}, + {file = "tree_sitter_go-0.23.4-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:c3b40912487fdb78c4028860dd79493a521ffca0104f209849823358db3618a0"}, + {file = "tree_sitter_go-0.23.4-cp39-abi3-win_amd64.whl", hash = "sha256:ae4b231cad2ef76401d33617879cda6321c4d0853f7fd98cb5654c50a218effb"}, + {file = "tree_sitter_go-0.23.4-cp39-abi3-win_arm64.whl", hash = "sha256:2ac907362a3c347145dc1da0858248546500a323de90d2cb76d2a3fdbfc8da25"}, + {file = "tree_sitter_go-0.23.4.tar.gz", hash = "sha256:0ebff99820657066bec21690623a14c74d9e57a903f95f0837be112ddadf1a52"}, ] [package.extras] -core = ["tree-sitter (>=0.21,<1.0)"] +core = ["tree-sitter (>=0.22,<1.0)"] [[package]] name = "tree-sitter-java" -version = "0.23.2" +version = "0.23.5" description = "Java grammar for tree-sitter" optional = false python-versions = ">=3.9" files = [ - {file = "tree_sitter_java-0.23.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:43e3582b735a496f1fc014d775588a4b3ed62105e61e499db04684a39e4a0a20"}, - {file = "tree_sitter_java-0.23.2-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:18c4d3cd04831cabc75973345eeba25f40e3cd34a7715f694a007493c86b14c3"}, - {file = "tree_sitter_java-0.23.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb0bf0c5105d3cccb59c0ca2fe91362393f671e1090a352d901e6ced2e99cd4b"}, - {file = "tree_sitter_java-0.23.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5437d8d65ea6b0a475426cc391ce8e642ed7198d22953be7c0e142b6a43c9ec"}, - {file = "tree_sitter_java-0.23.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0e0cb669e23da890a02daa03d0f5deba890cd6613b4ea34473d174c7b002b8df"}, - {file = "tree_sitter_java-0.23.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:00c56dc90e2258dda7c1ed13c96c16553576106460dffb135ca6fd82f51175d0"}, - {file = "tree_sitter_java-0.23.2-cp38-abi3-win_amd64.whl", hash = "sha256:949705d38ed496f14dd66bf76f2ec6fdd21387d011849c36c79477b4fabd46dd"}, - {file = "tree_sitter_java-0.23.2.tar.gz", hash = "sha256:f9969e75c79e5ab449ef5e2f9ae666b04a9266ba4d5d3127a0c1303926549406"}, + {file = "tree_sitter_java-0.23.5-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:355ce0308672d6f7013ec913dee4a0613666f4cda9044a7824240d17f38209df"}, + {file = "tree_sitter_java-0.23.5-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:24acd59c4720dedad80d548fe4237e43ef2b7a4e94c8549b0ca6e4c4d7bf6e69"}, + {file = "tree_sitter_java-0.23.5-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9401e7271f0b333df39fc8a8336a0caf1b891d9a2b89ddee99fae66b794fc5b7"}, + {file = "tree_sitter_java-0.23.5-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:370b204b9500b847f6d0c5ad584045831cee69e9a3e4d878535d39e4a7e4c4f1"}, + {file = "tree_sitter_java-0.23.5-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:aae84449e330363b55b14a2af0585e4e0dae75eb64ea509b7e5b0e1de536846a"}, + {file = "tree_sitter_java-0.23.5-cp39-abi3-win_amd64.whl", hash = "sha256:1ee45e790f8d31d416bc84a09dac2e2c6bc343e89b8a2e1d550513498eedfde7"}, + {file = "tree_sitter_java-0.23.5-cp39-abi3-win_arm64.whl", hash = "sha256:402efe136104c5603b429dc26c7e75ae14faaca54cfd319ecc41c8f2534750f4"}, + {file = "tree_sitter_java-0.23.5.tar.gz", hash = "sha256:f5cd57b8f1270a7f0438878750d02ccc79421d45cca65ff284f1527e9ef02e38"}, ] [package.extras] -core = ["tree-sitter (>=0.21,<1.0)"] +core = ["tree-sitter (>=0.22,<1.0)"] [[package]] name = "tree-sitter-javascript" -version = "0.23.0" -description = "Javascript grammar for tree-sitter" +version = "0.23.1" +description = "JavaScript grammar for tree-sitter" optional = false python-versions = ">=3.9" files = [ - {file = "tree_sitter_javascript-0.23.0-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:4fba9cd25d7a896b7a93f570a62190d19c21e9800201e7bea32b83a76f2c17f7"}, - {file = "tree_sitter_javascript-0.23.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:8b655de77f9001af9d7a2fab8147f58b4f29d26e2b939a3d15d25545190b48f8"}, - {file = "tree_sitter_javascript-0.23.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c52ec4d9a75c3c577d3f92d4e94da8dc9e365ead38ab895d4c26ec9984e0ade"}, - {file = "tree_sitter_javascript-0.23.0-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62b87827af5678000ff0d4d77e18d7c843ecc894eded570f1b5014be0258cf4a"}, - {file = "tree_sitter_javascript-0.23.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:7f37cfe2b580fbc91ed078618919f97ee78f9defd6e0f25682b1eb4747e5c0bc"}, - {file = "tree_sitter_javascript-0.23.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:c27f4276b8cc307544b25de25884cd1f352563dea3867d24af22b83851fb7490"}, - {file = "tree_sitter_javascript-0.23.0-cp38-abi3-win_amd64.whl", hash = "sha256:13fb1b451d1856cd29bb2829d3376df371dcbe6d15708233630de6b8ecab7006"}, - {file = "tree_sitter_javascript-0.23.0.tar.gz", hash = "sha256:f6cb999f0e5a37b8a08f28e1906ed6f3de03c8eaa49012cdadce40bd479cf3c1"}, + {file = "tree_sitter_javascript-0.23.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6ca583dad4bd79d3053c310b9f7208cd597fd85f9947e4ab2294658bb5c11e35"}, + {file = "tree_sitter_javascript-0.23.1-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:94100e491a6a247aa4d14caf61230c171b6376c863039b6d9cd71255c2d815ec"}, + {file = "tree_sitter_javascript-0.23.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a6bc1055b061c5055ec58f39ee9b2e9efb8e6e0ae970838af74da0afb811f0a"}, + {file = "tree_sitter_javascript-0.23.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:056dc04fb6b24293f8c5fec43c14e7e16ba2075b3009c643abf8c85edc4c7c3c"}, + {file = "tree_sitter_javascript-0.23.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a11ca1c0f736da42967586b568dff8a465ee148a986c15ebdc9382806e0ce871"}, + {file = "tree_sitter_javascript-0.23.1-cp39-abi3-win_amd64.whl", hash = "sha256:041fa22b34250ea6eb313d33104d5303f79504cb259d374d691e38bbdc49145b"}, + {file = "tree_sitter_javascript-0.23.1-cp39-abi3-win_arm64.whl", hash = "sha256:eb28130cd2fb30d702d614cbf61ef44d1c7f6869e7d864a9cc17111e370be8f7"}, + {file = "tree_sitter_javascript-0.23.1.tar.gz", hash = "sha256:b2059ce8b150162cda05a457ca3920450adbf915119c04b8c67b5241cd7fcfed"}, ] [package.extras] -core = ["tree-sitter (>=0.21,<1.0)"] - -[[package]] -name = "tree-sitter-languages" -version = "1.10.2" -description = "Binary Python wheels for all tree sitter languages." -optional = false -python-versions = "*" -files = [ - {file = "tree_sitter_languages-1.10.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5580348f0b20233b1d5431fa178ccd3d07423ca4a3275df02a44608fd72344b9"}, - {file = "tree_sitter_languages-1.10.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:103c7466644486b1e9e03850df46fc6aa12f13ca636c74f173270276220ac80b"}, - {file = "tree_sitter_languages-1.10.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d13db84511c6f1a7dc40383b66deafa74dabd8b877e3d65ab253f3719eccafd6"}, - {file = "tree_sitter_languages-1.10.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57adfa32be7e465b54aa72f915f6c78a2b66b227df4f656b5d4fbd1ca7a92b3f"}, - {file = "tree_sitter_languages-1.10.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c6385e033e460ceb8f33f3f940335f422ef2b763700a04f0089391a68b56153"}, - {file = "tree_sitter_languages-1.10.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dfa3f38cc5381c5aba01dd7494f59b8a9050e82ff6e06e1233e3a0cbae297e3c"}, - {file = "tree_sitter_languages-1.10.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9f195155acf47f8bc5de7cee46ecd07b2f5697f007ba89435b51ef4c0b953ea5"}, - {file = "tree_sitter_languages-1.10.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2de330e2ac6d7426ca025a3ec0f10d5640c3682c1d0c7702e812dcfb44b58120"}, - {file = "tree_sitter_languages-1.10.2-cp310-cp310-win32.whl", hash = "sha256:c9731cf745f135d9770eeba9bb4e2ff4dabc107b5ae9b8211e919f6b9100ea6d"}, - {file = "tree_sitter_languages-1.10.2-cp310-cp310-win_amd64.whl", hash = "sha256:6dd75851c41d0c3c4987a9b7692d90fa8848706c23115669d8224ffd6571e357"}, - {file = "tree_sitter_languages-1.10.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7eb7d7542b2091c875fe52719209631fca36f8c10fa66970d2c576ae6a1b8289"}, - {file = "tree_sitter_languages-1.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6b41bcb00974b1c8a1800c7f1bb476a1d15a0463e760ee24872f2d53b08ee424"}, - {file = "tree_sitter_languages-1.10.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f370cd7845c6c81df05680d5bd96db8a99d32b56f4728c5d05978911130a853"}, - {file = "tree_sitter_languages-1.10.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a1dc195c88ef4c72607e112a809a69190e096a2e5ebc6201548b3e05fdd169ad"}, - {file = "tree_sitter_languages-1.10.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ae34ac314a7170be24998a0f994c1ac80761d8d4bd126af27ee53a023d3b849"}, - {file = "tree_sitter_languages-1.10.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:01b5742d5f5bd675489486b582bd482215880b26dde042c067f8265a6e925d9c"}, - {file = "tree_sitter_languages-1.10.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ab1cbc46244d34fd16f21edaa20231b2a57f09f092a06ee3d469f3117e6eb954"}, - {file = "tree_sitter_languages-1.10.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0b1149e7467a4e92b8a70e6005fe762f880f493cf811fc003554b29f04f5e7c8"}, - {file = "tree_sitter_languages-1.10.2-cp311-cp311-win32.whl", hash = "sha256:049276343962f4696390ee555acc2c1a65873270c66a6cbe5cb0bca83bcdf3c6"}, - {file = "tree_sitter_languages-1.10.2-cp311-cp311-win_amd64.whl", hash = "sha256:7f3fdd468a577f04db3b63454d939e26e360229b53c80361920aa1ebf2cd7491"}, - {file = "tree_sitter_languages-1.10.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c0f4c8b2734c45859edc7fcaaeaab97a074114111b5ba51ab4ec7ed52104763c"}, - {file = "tree_sitter_languages-1.10.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:eecd3c1244ac3425b7a82ba9125b4ddb45d953bbe61de114c0334fd89b7fe782"}, - {file = "tree_sitter_languages-1.10.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15db3c8510bc39a80147ee7421bf4782c15c09581c1dc2237ea89cefbd95b846"}, - {file = "tree_sitter_languages-1.10.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92c6487a6feea683154d3e06e6db68c30e0ae749a7ce4ce90b9e4e46b78c85c7"}, - {file = "tree_sitter_languages-1.10.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2f1cd1d1bdd65332f9c2b67d49dcf148cf1ded752851d159ac3e5ee4f4d260"}, - {file = "tree_sitter_languages-1.10.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:976c8039165b8e12f17a01ddee9f4e23ec6e352b165ad29b44d2bf04e2fbe77e"}, - {file = "tree_sitter_languages-1.10.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:dafbbdf16bf668a580902e1620f4baa1913e79438abcce721a50647564c687b9"}, - {file = "tree_sitter_languages-1.10.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1aeabd3d60d6d276b73cd8f3739d595b1299d123cc079a317f1a5b3c5461e2ca"}, - {file = "tree_sitter_languages-1.10.2-cp312-cp312-win32.whl", hash = "sha256:fab8ee641914098e8933b87ea3d657bea4dd00723c1ee7038b847b12eeeef4f5"}, - {file = "tree_sitter_languages-1.10.2-cp312-cp312-win_amd64.whl", hash = "sha256:5e606430d736367e5787fa5a7a0c5a1ec9b85eded0b3596bbc0d83532a40810b"}, - {file = "tree_sitter_languages-1.10.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:838d5b48a7ed7a17658721952c77fda4570d2a069f933502653b17e15a9c39c9"}, - {file = "tree_sitter_languages-1.10.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:987b3c71b1d278c2889e018ee77b8ee05c384e2e3334dec798f8b611c4ab2d1e"}, - {file = "tree_sitter_languages-1.10.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faa00abcb2c819027df58472da055d22fa7dfcb77c77413d8500c32ebe24d38b"}, - {file = "tree_sitter_languages-1.10.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e102fbbf02322d9201a86a814e79a9734ac80679fdb9682144479044f401a73"}, - {file = "tree_sitter_languages-1.10.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8f0b87cf1a7b03174ba18dfd81582be82bfed26803aebfe222bd20e444aba003"}, - {file = "tree_sitter_languages-1.10.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c0f1b9af9cb67f0b942b020da9fdd000aad5e92f2383ae0ba7a330b318d31912"}, - {file = "tree_sitter_languages-1.10.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5a4076c921f7a4d31e643843de7dfe040b65b63a238a5aa8d31d93aabe6572aa"}, - {file = "tree_sitter_languages-1.10.2-cp37-cp37m-win32.whl", hash = "sha256:fa6391a3a5d83d32db80815161237b67d70576f090ce5f38339206e917a6f8bd"}, - {file = "tree_sitter_languages-1.10.2-cp37-cp37m-win_amd64.whl", hash = "sha256:55649d3f254585a064121513627cf9788c1cfdadbc5f097f33d5ba750685a4c0"}, - {file = "tree_sitter_languages-1.10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6f85d1edaa2d22d80d4ea5b6d12b95cf3644017b6c227d0d42854439e02e8893"}, - {file = "tree_sitter_languages-1.10.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d78feed4a764ef3141cb54bf00fe94d514d8b6e26e09423e23b4c616fcb7938c"}, - {file = "tree_sitter_languages-1.10.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da1aca27531f9dd5308637d76643372856f0f65d0d28677d1bcf4211e8ed1ad0"}, - {file = "tree_sitter_languages-1.10.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1031ea440dafb72237437d754eff8940153a3b051e3d18932ac25e75ce060a15"}, - {file = "tree_sitter_languages-1.10.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99d3249beaef2c9fe558ecc9a97853c260433a849dcc68266d9770d196c2e102"}, - {file = "tree_sitter_languages-1.10.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:59a4450f262a55148fb7e68681522f0c2a2f6b7d89666312a2b32708d8f416e1"}, - {file = "tree_sitter_languages-1.10.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ce74eab0e430370d5e15a96b6c6205f93405c177a8b2e71e1526643b2fb9bab1"}, - {file = "tree_sitter_languages-1.10.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9b4dd2b6b3d24c85dffe33d6c343448869eaf4f41c19ddba662eb5d65d8808f4"}, - {file = "tree_sitter_languages-1.10.2-cp38-cp38-win32.whl", hash = "sha256:92d734fb968fe3927a7596d9f0459f81a8fa7b07e16569476b28e27d0d753348"}, - {file = "tree_sitter_languages-1.10.2-cp38-cp38-win_amd64.whl", hash = "sha256:46a13f7d38f2eeb75f7cf127d1201346093748c270d686131f0cbc50e42870a1"}, - {file = "tree_sitter_languages-1.10.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f8c6a936ae99fdd8857e91f86c11c2f5e507ff30631d141d98132bb7ab2c8638"}, - {file = "tree_sitter_languages-1.10.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c283a61423f49cdfa7b5a5dfbb39221e3bd126fca33479cd80749d4d7a6b7349"}, - {file = "tree_sitter_languages-1.10.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76e60be6bdcff923386a54a5edcb6ff33fc38ab0118636a762024fa2bc98de55"}, - {file = "tree_sitter_languages-1.10.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c00069f9575bd831eabcce2cdfab158dde1ed151e7e5614c2d985ff7d78a7de1"}, - {file = "tree_sitter_languages-1.10.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:475ff53203d8a43ccb19bb322fa2fb200d764001cc037793f1fadd714bb343da"}, - {file = "tree_sitter_languages-1.10.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:26fe7c9c412e4141dea87ea4b3592fd12e385465b5bdab106b0d5125754d4f60"}, - {file = "tree_sitter_languages-1.10.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8fed27319957458340f24fe14daad467cd45021da034eef583519f83113a8c5e"}, - {file = "tree_sitter_languages-1.10.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3657a491a7f96cc75a3568ddd062d25f3be82b6a942c68801a7b226ff7130181"}, - {file = "tree_sitter_languages-1.10.2-cp39-cp39-win32.whl", hash = "sha256:33f7d584d01a7a3c893072f34cfc64ec031f3cfe57eebc32da2f8ac046e101a7"}, - {file = "tree_sitter_languages-1.10.2-cp39-cp39-win_amd64.whl", hash = "sha256:1b944af3ee729fa70fc8ae82224a9ff597cdb63addea084e0ea2fa2b0ec39bb7"}, -] - -[package.dependencies] -tree-sitter = "*" +core = ["tree-sitter (>=0.22,<1.0)"] [[package]] name = "tree-sitter-python" -version = "0.23.2" +version = "0.23.6" description = "Python grammar for tree-sitter" optional = false python-versions = ">=3.9" files = [ - {file = "tree_sitter_python-0.23.2-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:64d733c029db4356aeecd4b2160e793066490f07a9ce549b53aa8100d49d6083"}, - {file = "tree_sitter_python-0.23.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:c7a75736b0b8704c7e1eb7edeff8c8d1dc17832de76a65ae375fd59c01b2fc84"}, - {file = "tree_sitter_python-0.23.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba8ddaf42ad390bda21c25f243b60f906a4c681b450400f689481f0e2b914028"}, - {file = "tree_sitter_python-0.23.2-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc14405a4e83c110939aafdf21b0c7814a1534e2e6a22599bc2f6b44abc72fdd"}, - {file = "tree_sitter_python-0.23.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d09c4d6074825c707414bc10c1e90dc5764281cc080bfb7a0ab7c04d0610dbca"}, - {file = "tree_sitter_python-0.23.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3ee327eaa85b61ea34f878c46fd55a8b1bcbc21d9683782b4f2e7ae9bb23ea51"}, - {file = "tree_sitter_python-0.23.2-cp39-abi3-win_amd64.whl", hash = "sha256:a427c3e5b107febd9f0bfc8df4d91854bda110192d50d741d135f6d37b28fcbd"}, - {file = "tree_sitter_python-0.23.2.tar.gz", hash = "sha256:da6abb90a8061d70651f170403e19aed1db4e6e5bcf4b9396245421899c94070"}, + {file = "tree_sitter_python-0.23.6-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:28fbec8f74eeb2b30292d97715e60fac9ccf8a8091ce19b9d93e9b580ed280fb"}, + {file = "tree_sitter_python-0.23.6-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:680b710051b144fedf61c95197db0094f2245e82551bf7f0c501356333571f7a"}, + {file = "tree_sitter_python-0.23.6-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a9dcef55507b6567207e8ee0a6b053d0688019b47ff7f26edc1764b7f4dc0a4"}, + {file = "tree_sitter_python-0.23.6-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29dacdc0cd2f64e55e61d96c6906533ebb2791972bec988450c46cce60092f5d"}, + {file = "tree_sitter_python-0.23.6-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7e048733c36f564b379831689006801feb267d8194f9e793fbb395ef1723335d"}, + {file = "tree_sitter_python-0.23.6-cp39-abi3-win_amd64.whl", hash = "sha256:a24027248399fb41594b696f929f9956828ae7cc85596d9f775e6c239cd0c2be"}, + {file = "tree_sitter_python-0.23.6-cp39-abi3-win_arm64.whl", hash = "sha256:71334371bd73d5fe080aed39fbff49ed8efb9506edebe16795b0c7567ed6a272"}, + {file = "tree_sitter_python-0.23.6.tar.gz", hash = "sha256:354bfa0a2f9217431764a631516f85173e9711af2c13dbd796a8815acfe505d9"}, ] [package.extras] -core = ["tree-sitter (>=0.21,<1.0)"] +core = ["tree-sitter (>=0.22,<1.0)"] [[package]] name = "types-python-dateutil" -version = "2.9.0.20241003" +version = "2.9.0.20241206" description = "Typing stubs for python-dateutil" optional = false python-versions = ">=3.8" files = [ - {file = "types-python-dateutil-2.9.0.20241003.tar.gz", hash = "sha256:58cb85449b2a56d6684e41aeefb4c4280631246a0da1a719bdbe6f3fb0317446"}, - {file = "types_python_dateutil-2.9.0.20241003-py3-none-any.whl", hash = "sha256:250e1d8e80e7bbc3a6c99b907762711d1a1cdd00e978ad39cb5940f6f0a87f3d"}, + {file = "types_python_dateutil-2.9.0.20241206-py3-none-any.whl", hash = "sha256:e248a4bc70a486d3e3ec84d0dc30eec3a5f979d6e7ee4123ae043eedbb987f53"}, + {file = "types_python_dateutil-2.9.0.20241206.tar.gz", hash = "sha256:18f493414c26ffba692a72369fea7a154c502646301ebfe3d56a04b3767284cb"}, ] [[package]] @@ -3252,13 +3604,13 @@ files = [ [[package]] name = "tzdata" -version = "2024.2" +version = "2025.1" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, - {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, + {file = "tzdata-2025.1-py2.py3-none-any.whl", hash = "sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639"}, + {file = "tzdata-2025.1.tar.gz", hash = "sha256:24894909e88cdb28bd1636c6887801df64cb485bd593f2fd83ef29075a81d694"}, ] [[package]] @@ -3277,13 +3629,13 @@ dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake [[package]] name = "urllib3" -version = "2.2.3" +version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, + {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, + {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, ] [package.extras] @@ -3407,4 +3759,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = ">=3.11" -content-hash = "c4a5abeea039e19305c3981a9327477312ee04f6fc92086d3a48d00bd56b939f" +content-hash = "d131ab08a6fc30e2eaf7ddd4251725cdec8095affe329342e38aa137038cf10b" diff --git a/poetry.toml b/poetry.toml new file mode 100644 index 00000000..ab1033bd --- /dev/null +++ b/poetry.toml @@ -0,0 +1,2 @@ +[virtualenvs] +in-project = true diff --git a/pyproject.toml b/pyproject.toml index 6acc8892..c4ce280d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,13 +1,13 @@ [tool.poetry] name = "cldk" version = "0.4.0" -description = "codellm-devkit: A python library for seamless integration with LLMs." +description = "The official Python SDK for Codellm-Devkit." authors = ["Rahul Krishna ", "Rangeet Pan ", "Saurabh Sinhas ", "Raju Pavuluri "] license = "Apache 2.0" readme = "README.md" -homepage = "https://github.com/IBM/codellm-devkit" -repository = "https://github.com/IBM/codellm-devkit" +homepage = "https://codellm-devkit.info" +repository = "https://github.com/codellm-devkit/python-sdk" keywords = ["ibm", "llm", "large language models", "code analyzer", "syntax tree"] classifiers = [ "Development Status :: 4 - Beta", @@ -32,18 +32,18 @@ python = ">=3.11" pydantic = "^2.6.1" pandas = "^2.2.0" networkx = "^3.3" -pyarrow = "17.0.0" -tree-sitter-languages = "^1.10.2" -tree-sitter = "0.23.0" -rich = "13.7.1" +pyarrow = "19.0.0" +tree-sitter = "0.24.0" +rich = "13.9.4" wget = "3.2" requests = "^2.31.0" -tree-sitter-java = "0.23.2" -tree-sitter-c = "0.23.1" -tree-sitter-go = "0.23.1" -tree-sitter-python = "0.23.2" -tree-sitter-javascript = "0.23.0" +tree-sitter-java = "0.23.5" +tree-sitter-c = "0.23.4" +tree-sitter-go = "0.23.4" +tree-sitter-python = "0.23.6" +tree-sitter-javascript = "0.23.1" # Test dependencies +mkdocs-material = {extras = ["imaging"], version = "^9.6.2"} [tool.poetry.group.dev.dependencies] toml = "^0.10.2" @@ -56,9 +56,16 @@ black = "^24.4.2" coverage = "^7.5.3" jupyter = "^1.0.0" -# Documentation -mkdocs = "1.6.1" -mkdocstrings = "0.26.1" + + +[tool.poetry.group.doc.dependencies] +mkdocs-material = "^9.6.1" +mkdocs-autorefs = "^1.3.0" +mkdocs-get-deps = "^0.2.0" +mkdocs-material-extensions = "^1.3.1" +mkdocstrings = "^0.28.0" +mkdocstrings-python = "^1.13.0" +mkdocs-git-revision-date-localized-plugin = "^1.3.0" [build-system] requires = ["poetry-core"] diff --git a/site/404.html b/site/404.html new file mode 100644 index 00000000..20af42af --- /dev/null +++ b/site/404.html @@ -0,0 +1,530 @@ + + + + + + + + + + + + + + + + + + + + · CodeLLM-Devkit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ +

404 - Not found

+ +
+
+ + + + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/site/CNAME b/site/CNAME new file mode 100644 index 00000000..2b93fcbb --- /dev/null +++ b/site/CNAME @@ -0,0 +1 @@ +cldk.dev \ No newline at end of file diff --git a/site/assets/_mkdocstrings.css b/site/assets/_mkdocstrings.css new file mode 100644 index 00000000..b500381b --- /dev/null +++ b/site/assets/_mkdocstrings.css @@ -0,0 +1,143 @@ + +/* Avoid breaking parameter names, etc. in table cells. */ +.doc-contents td code { + word-break: normal !important; +} + +/* No line break before first paragraph of descriptions. */ +.doc-md-description, +.doc-md-description>p:first-child { + display: inline; +} + +/* Max width for docstring sections tables. */ +.doc .md-typeset__table, +.doc .md-typeset__table table { + display: table !important; + width: 100%; +} + +.doc .md-typeset__table tr { + display: table-row; +} + +/* Defaults in Spacy table style. */ +.doc-param-default { + float: right; +} + +/* Parameter headings must be inline, not blocks. */ +.doc-heading-parameter { + display: inline; +} + +/* Prefer space on the right, not the left of parameter permalinks. */ +.doc-heading-parameter .headerlink { + margin-left: 0 !important; + margin-right: 0.2rem; +} + +/* Backward-compatibility: docstring section titles in bold. */ +.doc-section-title { + font-weight: bold; +} + +/* Symbols in Navigation and ToC. */ +:root, :host, +[data-md-color-scheme="default"] { + --doc-symbol-parameter-fg-color: #df50af; + --doc-symbol-attribute-fg-color: #953800; + --doc-symbol-function-fg-color: #8250df; + --doc-symbol-method-fg-color: #8250df; + --doc-symbol-class-fg-color: #0550ae; + --doc-symbol-module-fg-color: #5cad0f; + + --doc-symbol-parameter-bg-color: #df50af1a; + --doc-symbol-attribute-bg-color: #9538001a; + --doc-symbol-function-bg-color: #8250df1a; + --doc-symbol-method-bg-color: #8250df1a; + --doc-symbol-class-bg-color: #0550ae1a; + --doc-symbol-module-bg-color: #5cad0f1a; +} + +[data-md-color-scheme="slate"] { + --doc-symbol-parameter-fg-color: #ffa8cc; + --doc-symbol-attribute-fg-color: #ffa657; + --doc-symbol-function-fg-color: #d2a8ff; + --doc-symbol-method-fg-color: #d2a8ff; + --doc-symbol-class-fg-color: #79c0ff; + --doc-symbol-module-fg-color: #baff79; + + --doc-symbol-parameter-bg-color: #ffa8cc1a; + --doc-symbol-attribute-bg-color: #ffa6571a; + --doc-symbol-function-bg-color: #d2a8ff1a; + --doc-symbol-method-bg-color: #d2a8ff1a; + --doc-symbol-class-bg-color: #79c0ff1a; + --doc-symbol-module-bg-color: #baff791a; +} + +code.doc-symbol { + border-radius: .1rem; + font-size: .85em; + padding: 0 .3em; + font-weight: bold; +} + +code.doc-symbol-parameter { + color: var(--doc-symbol-parameter-fg-color); + background-color: var(--doc-symbol-parameter-bg-color); +} + +code.doc-symbol-parameter::after { + content: "param"; +} + +code.doc-symbol-attribute { + color: var(--doc-symbol-attribute-fg-color); + background-color: var(--doc-symbol-attribute-bg-color); +} + +code.doc-symbol-attribute::after { + content: "attr"; +} + +code.doc-symbol-function { + color: var(--doc-symbol-function-fg-color); + background-color: var(--doc-symbol-function-bg-color); +} + +code.doc-symbol-function::after { + content: "func"; +} + +code.doc-symbol-method { + color: var(--doc-symbol-method-fg-color); + background-color: var(--doc-symbol-method-bg-color); +} + +code.doc-symbol-method::after { + content: "meth"; +} + +code.doc-symbol-class { + color: var(--doc-symbol-class-fg-color); + background-color: var(--doc-symbol-class-bg-color); +} + +code.doc-symbol-class::after { + content: "class"; +} + +code.doc-symbol-module { + color: var(--doc-symbol-module-fg-color); + background-color: var(--doc-symbol-module-bg-color); +} + +code.doc-symbol-module::after { + content: "mod"; +} + +.doc-signature .autorefs { + color: inherit; + border-bottom: 1px dotted currentcolor; +} diff --git a/site/assets/cldk-dark.ai b/site/assets/cldk-dark.ai new file mode 100644 index 00000000..6a99523f --- /dev/null +++ b/site/assets/cldk-dark.ai @@ -0,0 +1,1915 @@ +%PDF-1.6 % +1 0 obj <>/OCGs[25 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + application/pdf + + + cldk-dark + + + 2025-02-01T18:13:06-05:00 + 2025-02-01T18:13:06-05:00 + 2025-02-01T18:13:05-05:00 + Adobe Illustrator 29.0 (Macintosh) + + + + 256 + 40 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAKAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A6c7eYfzL1y+htL+TTPKO nS+hzhryuHU+xHKo332UU2rnVgYezsUTKPHnmL3/AIfx9u+7zx8TW5CBLhwxNe/8fYjH/wCcfvKh UcL+/Vv2iWhIPyAiGUj2oz9Yw+39bYewMP8AOl9n6kTY/kb5ZtYp0+v37GYABllWPiQahqKlGP8A rVGV5PaPNIg8MNvK/wBLZDsTFEH1S382tEvtf8n+arTyzrF6+p6NqoYaTqE1fVjlX/dLkk17D6RS m4x1GPFq8Es2OPBkh9URyI7/AMeaMM8mnyjFM8UJ/ST9z0fOed0oXd/Z2ihrmVYwfsg9T8gN8VUr TWNMu34W86u56KaqT8gwGKozFXYq7FVlxMsEEk7glIkZ2A60UVNMVUtPvob61W5iDKjEgBwAdjTs TiqIxV2KoOw1W3vZbiKJXVrZgrlgACSSNqE/y4q6z1W3u7m4t41cPbMVkLAAEgkbUJ8MVRmKuxV2 KuxV2KpdL5i0eKV4pLjjJGxVxwc0Kmh6Liqtaatp123C3nV37JurfcwBxVF4q7FXYq7FVO6uEtre SdwSkSlmC9aDwrTFVljexXtqlzEGWOStA1AfhJXsT4YqqzSpDC8r/YjUu1PBRU4qh9N1K31C3M8A YKGKEMKEEAHsT44qiVZW+yQflirzf8l7mKysNS8sXNItW0y8lMsJ2Lo1FEgr13Wnyp450XtBAznH PHeE4j+z8ebpexpCMZYj9cZFk3lTye3l+81W4Ooz3w1OYTenN0jILHbc1J57nbpmt1uv8eMBwiPA K268nN0uj8EyPEZcRdq3k5tQ82ab5hGpT2/6PTgbNP7uQVY777cudG23GHBr/DwSw8IPH16j8dFy 6PjzRycRHD0Y558uotU89+VNCsiJbyxvF1C947iKKMq9Gp0LKp/DxzYdmwOLS5sstoyjwjzJcPXS GTUY8cecZcR8no2c87li+k28Wsand3l2PUjiIWKM/ZoSafcBiqZ33lyxuDG8AFpKjA84gBsPYUFf fFUTqWp2+nQK8xLs3wxoKcmI+7FUAvmVo3QX1lLaRSGiStUj6dlxVMdQ1G2sbU3EpqvRAu5YnoBi qUXGvSz6fcCaxlgilhkWKY1ZSSp412FK4qivKxA0WInYBnqf9kcVWt5iaR5PqVlJdQxGjzLsu38u xriqP03UrfULf1oaiho6N1U+BxVKfLH+92q/8ZR/xJ8Vd5f/AOOzq3/GU/8AE2xVES+YRHqE9l9W Z3iH7vgeTO223Gm3WvXtiq2DzPEZJIbu2ktp0FVi+0WPZRsu57Yq0vmUpdRw3dnJapKaJI58dtwQ P14qneKuxVjWi2ttPrGqieJJQsrcQ6hqVdulcVX+Y9JtILP69aoLeaBlNY/hBBIHQbVBOKprbalE dJjv7hgq+mGkPv0NPpxVAHzLL6f1j9HzfU/9/wDt40p0+nFUTfa5Hb2EN9DH9YglYAkNxIrX2PhT FUdNdRRWj3RNY1QyV8RSv44qlkt8995dublovRDxvxXlyqBtWtFxVT0e+gsvLUFxMaKvOgHVj6jU AxVGW+pTy6XLezWvpKsbOkRapdVUnf4RSuKqNpqROjrd2djuWIFrEad6E7L/AAxVK/Kt7cqWiS1a SKaWrzg/ClR3FD+vFXeavy80nXryPU4p5tM1qEUj1K0bhIaCg5/zUHuD70zaaLtXJgiYECeM/wAM uTgars+GWXECYzHUMR836D558t+XLvWP8Z3VytoI6QegFLepIsYq5kb+fwza6HU6XUZo4/AiOK97 8r7nXavBnw4jPxSa8vOu9MrPyN54vbKCeXzxdrHcRpIyJBxYB1DUDiWo69cx8naWmhIgaeOx7/0U 3w0OeUQTmlv5ftZJ5R8i6L5ZSV7X1Li/uf8Aeq/uDzmkqakV7Cu9Pvrmu13aWTU0JbRHKI5BzdJo YYLreR5k82RZr3MY15UK291fWT/DKrDip6kKSD/DFU+vL61s41kuJBGrMFBPicVSTVyG8x6aWIMJ ClD25cj/AGYqjfNHD9Cz8qVqnH58x/DFUm1X1P0bovq/3dP3lelPh41/2OKsk1bj+i7utKejJ/xE 0xVKdK9T/Ccvp/b4TUp174qp6AmsnS4jaSW6w1bZ1YtXka1piqM0TS7m0ubqaWWNxOassVaBwSeh +eKofyx/vdqv/GUf8SfFXeX/APjs6t/xlP8AxNsVa0//AJS2+/4xH9ceKu1AD/Ftjt1iBP8Aw+Ku 85/7xQHuJdj/ALE4qmGsaffXfo/Vbprbhy58Sw5VpT7JHSmKrdI03ULSSRrq8a5VgAqszGhr/lE4 qgvL/wDx2dW/4yn/AIm2KonzVPHHo8kbGjzMqoO5owY/gMVS7VYZofKlpHQghkMg8AwZv1kYqjkt 9ektFjWW19B4woHF/sFafqxVba6LKug3Fk8izGQs8LJuvQFf+GGKpY+oSTeW7azQ1nklFuR3opqP 1qMVT6/t1t9AmgT7MUBUfQvXFWKpDfjTbW9kRZbG2chIT3BclmI/1vhxVll3cRXOiXE8JrHJbyFT /sDt9GKqHlX/AI4sX+s//EjiqF8mf7wz/wDGX/jUYqk/nH8wryw1iDy55bs01TzBPu0bk+nCKchz oV347n4hQbnN1oOy4zxnNmlwYh8z7v7HV6ztAwmMWIcWQ/YlOuaX+bnmXTJNF1O10q0sbtoxcXEL SmRFSRZKgGR67p4Zl6bNoNPMZIHJKUboGu6u5x8+LWZocEhARPv/AFo78yZtSs9K8veX9OvZLNtU vINPlvYqhxHQIaUIO5YE0PamUdkRhOeTNOIlwRMq8+bb2kZRhDHE1xSEbZZo+gRaXoCaNFczzIiS J9amYNMTKzMW5UHQvtmqz6o5MviEActhy2dhhwCGPgBJ8zzYR+X0Or+XvO2peT7jUH1HT47Nb21e WoKHmi8QCW419TcA02r3zddqSx59NHUCPBMy4T9v6nV9nxnhzywmXFHhsfYzfUtAtryYXCO1vcj/ AHanenSo8c5x3ahB5Yj9dZr25kvWT7IetPpqWOKo/U9KttQhEctVZDWOReqnFUAvlppHQ317LdxR mqRNUD6d2xVMdQ062vrU28oovVCuxUjoRiqWp5alMLQzX8ssXErFGahVJFFJHI14+G2Kpjpenixs ltS/qhSxLU415GvSpxVL38ttHK7WN7LaRSGrxLUj6KFcVTDTdMg0+JkjLOznlJI5qWOKoW30JrbU nu4LpkilYvLb02Ymu1a9i3hiro9CaHVHvYLlo0lfnLBTZiakitR3Phiqrb6T6Orz6h6vL114+lxp T7P7Vf8AJ8MVdcaT62rwah6vH0F4+lxrX7X7Vf8AK8MVdrWk/pOBIvV9Lg3Llx5V2I8V8cVTDFXY qkMnlm5+tT3EGovAZ3Z2VFI+0SaEhxWlcVVLfyxEJ1nvbiS8dd1D1p9NSxP34qm1zbQ3MDwTLyjc UYYqkw8szKphXUZltDt6Pt4VrT8MVTe0tIbS3S3hFI0G1dz4knFUsg8tRxap9d9YmMO0iQcaAFve vb5Yqmd7bfWbSa35cPVUrypWlfbbFVGx0yO30xbCRvWjAZWJHGodielT44qhrLQ5LWyurP60ZIZ1 ZUBTdCwIr9rfFUVpVh9QsktvU9TiSedOPU16VOKoOx0CSyu/Ugu3FtyLG2psaim5r/DFUB5a8gaP oOsalq8Dy3F7qLsxlnIZo1dubopAFeTdSd9hmy1faeTPjjjNCMO7q4Om0EMU5TG8pd7Js1rnMQ/M nyvq2t6dZXGjSKmr6TcreWiuQFdk341b4a1AIrt45tuydZjwzkMn93OPCXXdo6WeWIMPrgbCb6Bc +Y5fLUM+r2yR656chltkIC81ZhGKhmA5KFrvmJqoYRmIxm8djf73I08shxAzHr7mO+SvL/mp/M+o eavM0UVpe3MAs7eyhYOEiDKxLFWcfsD9o9+mbDtHVYBhjgwkyiDxEnvcPRafL4ssuUASIoAdzOs0 jtXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX/9k= + + + + uuid:fd716809-8c1e-ef48-9082-36ce5ee30e1e + xmp.did:35424d6d-4124-4535-8cd3-921de37f79c1 + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + uuid:70581454-1635-7c4f-bcef-799d4260f20c + xmp.did:6b203221-a0f8-423b-b13d-979831625d90 + uuid:5D20892493BFDB11914A8590D31508C8 + default + + + + + saved + xmp.iid:6b203221-a0f8-423b-b13d-979831625d90 + 2025-01-31T12:56:43-05:00 + Adobe Illustrator 29.0 (Macintosh) + / + + + saved + xmp.iid:35424d6d-4124-4535-8cd3-921de37f79c1 + 2025-02-01T16:09:07-05:00 + Adobe Illustrator 29.0 (Macintosh) + / + + + + Document + Print + AIRobin + False + False + 1 + + 1435.982675 + 213.739938 + Points + + + + + IBMPlexSans-Medm + IBM Plex Sans + Medium + Open Type + Version 3.005 + False + IBMPlexSans-Medium.otf + + + + + + Cyan + Magenta + Yellow + + + + + + Default Swatch Group + 0 + + + + White + RGB + PROCESS + 242 + 243 + 249 + + + Black + RGB + PROCESS + 46 + 45 + 48 + + + CMYK Red + RGB + PROCESS + 186 + 32 + 48 + + + CMYK Yellow + RGB + PROCESS + 244 + 225 + 31 + + + CMYK Green + RGB + PROCESS + 39 + 138 + 71 + + + CMYK Cyan + RGB + PROCESS + 0 + 151 + 217 + + + CMYK Blue + RGB + PROCESS + 46 + 55 + 128 + + + CMYK Magenta + RGB + PROCESS + 185 + 0 + 119 + + + C=15 M=100 Y=90 K=10 + RGB + PROCESS + 156 + 39 + 54 + + + C=0 M=90 Y=85 K=0 + RGB + PROCESS + 189 + 62 + 60 + + + C=0 M=80 Y=95 K=0 + RGB + PROCESS + 193 + 84 + 53 + + + C=0 M=50 Y=100 K=0 + RGB + PROCESS + 210 + 142 + 46 + + + C=0 M=35 Y=85 K=0 + RGB + PROCESS + 220 + 171 + 74 + + + C=5 M=0 Y=90 K=0 + RGB + PROCESS + 236 + 222 + 68 + + + C=20 M=0 Y=100 K=0 + RGB + PROCESS + 211 + 208 + 46 + + + C=50 M=0 Y=100 K=0 + RGB + PROCESS + 157 + 181 + 60 + + + C=75 M=0 Y=100 K=0 + RGB + PROCESS + 106 + 159 + 67 + + + C=85 M=10 Y=100 K=10 + RGB + PROCESS + 77 + 133 + 65 + + + C=90 M=30 Y=95 K=30 + RGB + PROCESS + 58 + 99 + 63 + + + C=75 M=0 Y=75 K=0 + RGB + PROCESS + 104 + 162 + 105 + + + C=80 M=10 Y=45 K=0 + RGB + PROCESS + 87 + 153 + 148 + + + C=70 M=15 Y=0 K=0 + RGB + PROCESS + 102 + 162 + 213 + + + C=85 M=50 Y=0 K=0 + RGB + PROCESS + 68 + 112 + 174 + + + C=100 M=95 Y=5 K=0 + RGB + PROCESS + 45 + 60 + 128 + + + C=100 M=100 Y=25 K=25 + RGB + PROCESS + 45 + 51 + 93 + + + C=75 M=100 Y=0 K=0 + RGB + PROCESS + 87 + 50 + 126 + + + C=50 M=100 Y=0 K=0 + RGB + PROCESS + 122 + 42 + 123 + + + C=35 M=100 Y=35 K=10 + RGB + PROCESS + 133 + 41 + 91 + + + C=10 M=100 Y=50 K=0 + RGB + PROCESS + 174 + 31 + 84 + + + C=0 M=95 Y=20 K=0 + RGB + PROCESS + 187 + 42 + 111 + + + C=25 M=25 Y=40 K=0 + RGB + PROCESS + 189 + 178 + 156 + + + C=40 M=45 Y=50 K=5 + RGB + PROCESS + 150 + 133 + 120 + + + C=50 M=50 Y=60 K=25 + RGB + PROCESS + 113 + 103 + 90 + + + C=55 M=60 Y=65 K=40 + RGB + PROCESS + 92 + 80 + 72 + + + C=25 M=40 Y=65 K=0 + RGB + PROCESS + 181 + 151 + 106 + + + C=30 M=50 Y=75 K=10 + RGB + PROCESS + 157 + 123 + 82 + + + C=35 M=60 Y=80 K=25 + RGB + PROCESS + 129 + 95 + 67 + + + C=40 M=65 Y=90 K=35 + RGB + PROCESS + 111 + 81 + 56 + + + C=40 M=70 Y=100 K=50 + RGB + PROCESS + 94 + 67 + 47 + + + C=50 M=70 Y=80 K=70 + RGB + PROCESS + 67 + 54 + 49 + + + + + + Grays + 1 + + + + C=0 M=0 Y=0 K=100 + RGB + PROCESS + 46 + 45 + 48 + + + C=0 M=0 Y=0 K=90 + RGB + PROCESS + 69 + 69 + 72 + + + C=0 M=0 Y=0 K=80 + RGB + PROCESS + 89 + 90 + 94 + + + C=0 M=0 Y=0 K=70 + RGB + PROCESS + 110 + 111 + 115 + + + C=0 M=0 Y=0 K=60 + RGB + PROCESS + 130 + 131 + 136 + + + C=0 M=0 Y=0 K=50 + RGB + PROCESS + 149 + 151 + 156 + + + C=0 M=0 Y=0 K=40 + RGB + PROCESS + 169 + 170 + 176 + + + C=0 M=0 Y=0 K=30 + RGB + PROCESS + 188 + 189 + 195 + + + C=0 M=0 Y=0 K=20 + RGB + PROCESS + 206 + 207 + 214 + + + C=0 M=0 Y=0 K=10 + RGB + PROCESS + 224 + 225 + 232 + + + C=0 M=0 Y=0 K=5 + RGB + PROCESS + 233 + 234 + 241 + + + + + + Brights + 1 + + + + C=0 M=100 Y=100 K=0 + RGB + PROCESS + 186 + 32 + 48 + + + C=0 M=75 Y=100 K=0 + RGB + PROCESS + 196 + 94 + 48 + + + C=0 M=10 Y=95 K=0 + RGB + PROCESS + 237 + 210 + 53 + + + C=85 M=10 Y=100 K=0 + RGB + PROCESS + 82 + 142 + 68 + + + C=100 M=90 Y=0 K=0 + RGB + PROCESS + 43 + 64 + 135 + + + C=60 M=90 Y=0 K=0 + RGB + PROCESS + 110 + 63 + 133 + + + + + + + Adobe PDF library 17.00 + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 3 0 obj <> endobj 5 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/Thumb 30 0 R/TrimBox[0.0 0.0 1435.98 213.74]/Type/Page/PieceInfo<>>> endobj 27 0 obj <>stream +HݎI)r}5,BBB1hDZkDVi8q"˖v|[#s//~7?~?\߱_[mi{~u|}^?^~xno_t(wζc1j8ۯ7}MحLj޽V!u _) yn.kqXc.~s`M|)hl]2͵|-w}_` r80ԣ#^(sAa]QSFkg7lcqxr&07KHw?4]7{@>`u9&pUY{%vʱ~shv=ZmnqE`Sc ?OcMqtCrVY\:(] +dnr*Y+(Q)\;cN^*w 崂5Y՝ӎZr CM ~-,Ae\A~x3tH?ã(UщMC\O4x-Ȑ/Yr0.ț Ljr2Sa>.jvh#Q0rN;tIleEr3Klz~3yK.`ezBBIA(-vh `gɤ*XR1 S?,{l= Оw| nEBokQ`j62<$aG|G)S'>V=F]gUiG1@HfSfK'RS,cD%;9F N;e$H(=>{2U*b^`$WpY&l!U D +n:&3w**T**{63'u0 փ(tbݽH%4qoOoY +ICFW.*RWEQrj&ߧζLENTO"b&?qz꿂F''#]>ѡ*X ]zj)H2٣ulV;"m R A;k`,害U&Y;gy\cأA_O"6E8y72R) ʜsJ+&7CR=JeAu%ECk\efH )*lCIHJ[T헵UV(V*@vUN$__"%uݽ+G|*hYi=*trdP06Xu te. +s*xB:z+IEƿzhD\16i3uC 5"b$jCA0u՞><,jRqNw`j[W$;"QRϏcfPU/ +63liPsY2V7EJNE/ǓP +[PIpEn딀Lxӳ(4i,U9^fț.j9LPȷFfcLgnI8i;R-_-YKը3 0#2QQ4,D]EEzͲՄekRqGn5X"9ph>فau$TF`=z&a7n&7/?}R|wZVGW%~0%ztEx,Nܠ,Ѥw*r3ͨ; `=ZB9^@_!髧0J$ؾ )yRjtBTmz˽VW"X lGC/QTs0 @*=A|yc + l3o03D#r}N*?(.o3k8kq*jQp!4J%Dc-ߵR6TTB!;!:L_ݯXSOVѯB׉f1{(U_$aT$suG#`mp-iJ۾T8 endstream endobj 30 0 obj <>stream +8;X]Q_%FU.#]/IE>qoAM5P.<)B4O;)1\]>9`50E878RahkgfD&&k0RXPa#!k_+5Hd +$gQ7Q5FP8Q%#(%e\2^h_NP!MSYC9d+UP83X(+Rja9sVQ0I[d4%AhecnDVHs(Fkaeo +Z#bs::5QKV6\B?^-k=p\qU2XQr, +QUnOFRA@rDIMbtNk,f"<3GHnd;qbQoaa+_!Aap\$>/ZrkFCH^5#;E0qW"=BYO\a%0 +Z.&DonH^[cML=EnU\-`O;=dU7DUq"TG' endstream endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 29.0.1 %%For: (Rahul Krishna) () %%Title: (cldk-dark.ai) %%CreationDate: 2/1/25 6:13 PM %%Canvassize: 16383 %%BoundingBox: -1 -214 1437 0 %%HiResBoundingBox: -0.000000000001819 -213.739937990305 1436.42578125 0 %%DocumentProcessColors: Cyan Magenta Yellow %AI5_FileFormat 14.0 %AI12_BuildNumber: 192 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 -213.739937990305 1435.98267476687 0 %AI3_TemplateBox: 306.5 -396.5 306.5 -396.5 %AI3_TileBox: 339.991337383435 -394.869968995153 1073.99133738344 181.130031004847 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 2 %AI24_LargeCanvasScale: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:24 4 %AI10_OpenToVie: -961 463 0.5 0 8624 7790 1716 1053 90 0 0 6 58 0 0 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -961 463 0.5 1716 1053 90 0 0 6 58 0 0 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %AI17_Begin_Content_if_version_gt:24 4 %AI17_Alternate_Content %AI17_End_Versioned_Content %%PageOrigin:0 -792 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 11 0 obj <>stream +%AI24_ZStandard_Data(/X +=@k0 Àda̹,hƏ۶j\P!5QJ)2ɿ"+L + 7 1d(Iv=dJDCƦ7XCƮ"jfl  0 ".0 *\`̶u]-LU:Z{/2O2\SWUL֏k׃XC&vk!sKzf#;=d,Vl{GX 2LT:$L2TUUU˖yEB4T"PCf%!s[TҼ!3B!y;٥2&H!b3leuvhQ@DIdQ=$QHA +RXXEq)VXA ++,Kr,bЦQRRH![YYr)xqÈi4l. )h!NFUF&ëV( vakvR*):-UtQzkmon&첊Gv܁Gzqȑʱ#rDQdAQQPE7Qeŋk dHPEQ( +K-F-\.,ʲH*Tq(HŢX +ZI$GjfOJJ. *&"'GO_N9;;K 5""*; #b& +tVZ^>157D2I%T$􊚪z(Zb%%wLIEBa\y]*""9#(H8=uб*TQD]MEAd"(\b)WgwKN~~y8ʗ+NhF2uȁVaHͲpdz]wΦLU2IWϰ`@0eUFʌJ얪I?k7 ct>te먹7v?2ktz*Cuk:Xe~T4)ѷgc2DTۓu+M,JTc7z6w<#F ćLK" Qm.i;#-ia(eF-(faHC$CI=쁉 =k, [ZH*l ,ʕ554Fr&TbqCQ5eɍpUJ,<[R=y +ݱT+əZxȘCYn١2X>FxtC榇 +N/wh:0Dq$@cm@Wd9C#1 eg$B1Pŗ)QbPBɁjd EZa"4DA+, rzUNOj鬴]ʹE՞P CAaz(WYnRHSIDx%jPWM S9#aԂ W-j$7/ZhjMѱ\He^;^<$=422Dkڕ!"f,bj +PY\v=$={?ɬ4uo"%L'UjS͈S$J(G"Vxt* 2tZy)i)Mhז!#:\[aMP*S 2쎊ɂ +9+tUQ +(0CIφB]Y剞:Uz{$5yM,=[BU\)*\k-zNtUE<_ZzzVޥu,ozյU:.!>i^myGyjڥ(f._g%2=x΢tflڭ#.{&2ݯTxlxU$Xeh%ޭkgB\{ zl4WӶ6V;u*u}^m=ΞɯM^9ɾGso/mJGo?B-';poN˸Tcw~mShM-\ۃgjz6+>X)L{tg۩[xllj٪oxq )͜ppϚ}D?XYND[9n/q֡ZZtޙ6msINjwToKkM|,PwizG\u.ձ]Fr +SͺgrimdAL%#=fdwxGwkT35߼zνWO& QF'Kq{|!WBJ-ow<ڮ{3E5'%^]u)lo_4uыZF{ҿb.jޤThuGeJ=UݥVӧ^ݎ[i3TەQGtJwy-ZB2CVxxn.Tռ*OEīW cxfzz(wTXU쯼pf)u;x^鳓zC5ş{O==y=OΨKNCg^6jwZy{ "2CaOiM١4x KO,MXJ{cgwMo.ڵUڝAT4W9yW13VTe'igg_+fy-2lЇVb^ o[yZg-1,Rۢa֙aWlk5=7Z') mkJ[KcmNg;k[>\ee9]gO+ތ02(hggϫlDrfx;Y k|dxvwjlݷeEںF/z&K.BiY}?(V2,v2OifiםnjyKҾ1-TO5Ո{Xt*~/Q:Cۥb./"oKj3]Tܳ赛p󮻽Rј>իvV{TkMcTuI몫xKSosQ +]%#J*W>V5B]VU-UuaY7:Z5}U>[*CXv/-;VgWOJ۫v?z_m^L]w[W*z5*N.VShU8",&,,`0ꕎi+ $ޭUʵ)޹Jx|,(I)W]zyܟDnZi_mgըJ?W½dK?]utM[2E\Cfݻ9Q&W~ʌmoUiOs g-xVMڍh_-#~i_RjYzq)ݢSvj$߱uE\NM1}zB;-=gDR+S߁ytMkzV榴zʌ1iQw`m73M|"=;0]J},L3%*oV7ΫE4fYk>Y^M,} Zě"Z;?-:ve֊O]C"/NfDjgu|;ȷTcVvݷku{P׺>ku޺oͥ>N%- o}gyǪL zW<7#M8"NV>x="=Jv̆p.x\6dHDvi2YM5,:E4˵ҝM;UyϒY{Y.ztMXcْrmgs|dhynޮ?ߟ7ʳ1Z)Օ\oz)RuIߊ_SxE?eR=T4ۛ[׮iU:pv+q/+ +yveeY6Z婞ΌKEuR<$[)Ѵ*YgZј]6w%9񇙹eXG 11;hϟШp"Zf1RL$@(}>vBfB*Gt8f 0 3 OA꟭`UoTę@>qC#H-w{VU +K;=@}23QIEI?D @?TgCO)Ȼ' YOpS3dxUS1yrSRC΁ p*U8x,׫6ԮjIiODٴYk01b9`vS+ +zQRzI +1점ʮodZ-(4ln +˸/Մrx㾟h_F +k Eĥvs)b>@beshe@+ͻqͨZlˈ8c=jNž]Ok#h(<^2'Q1(g##:m#MaS #"kovs #B( Fw +kbjkutYJR iUt]Z7&0_nj9ЍS#h7b[7ׇMjS˼BbZpF +eyy=C嚄I3s.Mh2q+Z32C|MȎbבETtllv[<3MB+uE#SOͿ) lSѐWXŐnxa<έ8\ WHv9}I.L`N0QuWCWd|R%@`[LX 0] S:IH~(G*"5;Qip;Q$C=Z9%YxI(= RB;N3зm*Je$TLyAi2 K Ԧ.D@Cԩ$rt~Nu9A%\05slZ8߳ji[v| fOi_VR5 '@)Ʒcq0e'80ll>$% a*׏`ݙe{GWps)5VEog _ +Gvõ?!t?rgIqX\W3ݸUegP. 1mvݭWU+Ӻ_7IF5tFM-LbYƕQH`qc~n5"Pär2݅iHjx1\eK'h&+M*(<8zu9 VQ7$|Gr%v::M5P8s׈gԼD.@3\[3m#sU&ɐHq@ܨl:f*P"_}*Ye0k @<i2"1H[kl1%FaD3C)Nj_˯.#Z6,1['.⎫W8jJLq'v%T).S ~idRUEEI)bBWTd؍.bQӭ3OL|M-:&Vm[-P>t*Y8<j:ϒ +v>G'ӅGINt΃gH9Y$4'gi2"l&jԤHiS `73CsSiȨ`:*eaaPui]+^$yEW9,l}ڨö9HC9.bmSC}I&R]-f'{[۰jÖH,s$J E s[jo/4jY,9Ok8O1ZT+~՝!z.wg菧3T(zU=dr/˚CǷE䊖n% @ex=60tSYdHʻar/nD[?*K2 zo r{q )=Ke m5(qΏ1EH%mA + `h-+n@5t9VP)ާW=" [aÈtb`Kc$tmROy+Sտ/hlBψ3[B/~PGG]I8ESz6 wBm;kҖ]Sx ^(6`]ikț }}Pp4۵DVRW:Qũc"p ID9j~j\=Ի#I%*C*u2)]P0  Z_im4wq\"߄ZpT;ϷC_ ^%:ῷ6rϾ2\647!5ynf\3Z Zd4("R̾,D]KIbԘ-V;^R/$?D$8Bjg-G?›+# V#Ҍjfa/7ͨ60튑.1ʮUF3JUgNj?@Y;~/7®G 75΁B? jco-sqS;eqT{@kc +[Wz#:նjE$^tt]=쀸ޞ? gjf>իENPVRF82ZOQ>X#r +\ 6%·"H^Son) U4ƌ<[I\'̭]U{zUmBi/61 jK׮W{Ŭeto`1)\xM}Tǽr~Mcy4?i/jB ]%j,x~cG9ѿȚ$Zlw=sMVZ-vM5'47Ƹkl tZ\s,ZGEɮ¶Xc8m״kޤ1Ii2,lU͑`3fc +c6D;Ä\(Qx$?Ì݄>%jfJ/RyzKD +[[j"1ɷNխd\Un݄-w$4VW/M@l[bkdqYw+Y \SPgf.կ`w +7 \`HkIC6 dn !>ǼDn +G p$рw ~[+z gj~ {[$8;`6\oA}q0 pJM&5w,.98a|exnLԬsW"0"joz|j!npxo7| -w u(nQZddC6RyBِuga/mj/P+w~-F7wCPZ̆}aM\F7l%!R9tJ4>s 8s)B{c/gM Z9tx@t)sHоYA0(`!ɕrMU١X!dͩp$[ٿr 6r#t`hA9ǾJ qmy}}bUe_uZ u u5,{Ջ4 ]-+ӮSxbKBp9ҿ?0'=`ua_px6Vk"xW9uw9;6+c#ݧңdw^poC2U~#̝-<4 +GE%wQ>T)#Naf}qTzfQXQVtq9=S ">]$gU{@4j^|Zl_ /Gߓ"Tw\ +k]*_ej<(f4O OCD&'`2}a~jcjm= pļxr=onn<" eeCpb]ٻfnLlaPH=߫kS~Vr׋a +- + 8HEcA2ZPZ?˅S4b1DF] X)3ZHƈ1Ь6 kMHGzޜPߚQe w&vD&ǭG=Nb'13hPBBhKCRurWz1$oθ1w2;5XRpgVrBJj߾& 5૚-_CUx1fy(  g0ʽy sR=i \,JF6pXpHUU1X6 +Ngfu%g\)7v=8N `vQaId~*ɬp:ɍt(Hу7gBH{J٠oݯڽÛ{֍nj[jU s EBZmbBbQPON02j0ExCȪZR><6} $w3D>. +?C`t;pHhJ[33h~I~%C$S +1teF owkQ0~w#D ]hn?}VN|ktVzdA(m> $%Ff`٤qZah6ib}O%ULEV>e T=fKr– +9CX:uE%auc޶]PuHd|eXXX_s +9uubvpM%摤en);z''1̴I)}Q" ++, Rڧq۱⍳\݋BʭX!Sך؁"Y!ÎO /4 xQ@rъ t#PAG=Z5\ekdVgK3Jf|(B =7 +J^a+47i8Z2rHr ?JfE:NQ{~;@|/cS]_Q@l&2lWh[t'4$vŔ%y*cY_NRV2r-5yxIk`$6xIN})+BU2\<<ΩF;$ɫrd~M+2ZrG䵼ϿoQ] pwc +H[|чS<&vHJ>b5PEUBW!ӽf9f6ErܜA$yYcV +:oOs&!1W{ETXQK]xҤGXpnB6 Bح!\|jމg{Ա̙2I-W[Rċ̑˂/VAsPlL%([@x<.2(6-j.Td:z\Eøu7&MxwH#[Hc9Clds* ZɌ9ENtM04fRd,GcF +~X!#)0}L7CߨgLSʈƨ-TiIMit^{%BٜH*h7[+@:mnA0S4@Ns{bhsz+B9ذt>SsZ%KQ!,TSH=Q +߬or *ek B;N r ¥*woUEoX>VXn/\FpA.>캱d ꍡO&c^C(Wd&cv߱}参N6ɼd~R=qkHƫwBHHevgbOzAz_OR=̈R)? "u-RC*}TN&0QimBa9n-U\N\|A`YAdAM{@vKͪEpeR\jvbaUR㹏3EPxqUU;|g.iz8dӂ9ioH"R[E(< 4iK^E,(ץa-ތgO0ꔶ ' 4A|.^;O<18Vh#)2]O%S,{1I6XyS^ +sX@#2{mym|0e/M؋76w= l*Ikԫ /  {3d$PᭌںmЯV[~*d8ĝ%C([I0h%΀7[^7 ;xTeǒ(A|_X_$3?l͕Y <#)5` v'/u4nSYV֥bϘυT,s(YrEmMA^NK3Xc{* `@nDuhZ2\?k}2hDn4ڐd\H̳)䱍Ѓ[8 +DI3l[M#E:+!?6*dDݜ3t<$Zg[.p@'ަ*n$~>m2Qz:dG%QD2 .qg'@tX]oHWKf/mwhe%ٺM=ܠ:{j~r>]*Jqk'gK} +7ݔxsM: +<3t-sJiB1y-ψ U r׼ 魗hX&FwFq* ~J)D*̮RyPz/%4<ׇ6#9{t4N箔^}R7P] k@7 =߿ mّ wC&.7\p +.rֺ:縼ŸXrF +}^6ˋ懘{_c: 1!zIP邆335!m,x׳ Ǣ?uYVB +Ks!ФUGQ +"(i-&4Lh) VkdJS!jqdd9 HЙ#djlQ1tɭ]$"v#S5 +G`IR{ %| }ڊ5u!->me>1_'Tp.k~tIr%93Շ_o$h+.xC3p jB#&lcSխJ%om2hfPQGV\~y4N|#RA^M)޷7h(2 + AAzipp6&l.E .нQu]+t2@0ze{2mϲ0PGR{ +()lԯF7 w~Dӡ .넗=9vцrgy ʟ,s:*Q3>5rP\^4'b qE6A!kyܗ9G|z9y?Pjs"atޮol/: + _t#Е0$x̃!^, . ybr}8 ~~^Si+- +)4ï]a2~ǭ,m@uY{h-1v,0p)yywQ-O0J[?7.\}p̈grv(-›nЄ(|8hr265̶wl8P:P7u`(ˬFy*D+y"SLIHTЌxshiǁ a"P5hJ˟ܢ| OBdИ*!RȞWrj vRb?faWr <)~ :&f'\pZ ; [f$Z_xf7 +wG3$ó/P "+aj-"]r4WXb`:WA+ր+b(^W_#($(yuG *K;LBЗŭڬ;fhm)+V3_?F_!PGyԺ/Rm)uۗL@b!'^CqpV)soa4U--җEkN^8=9?&iJ%4/12l6]%n˒D8Xog^yeЇ!3<+R:(Pu ӶO62>J[l0]"R`< 3Y.hky nl4m,OuJY=0nnh!&+B?v}n=7ua$p%3Ml>Dv_x+ҍC=cGݖ9_&~ m:V{SRLlESح%$D&(_ce}bgP 4a29+S4VLjS>=,onFwםQ렑 {l9,oՎ? G)IW~zj ~ى>SNБȎ>每U# >$]vw3q^,ՠX `yi;C"LlcPC)]-Yzs"@HRܺ;ϰ;)I^eG^_/OXHI߉JG!(1g^[/&ȕp2W/䊓3b0qD~`?]{Dfrҭ̳[Fn_ؕsd܊x־9#*=dt +ފD\,Տ3e?GMD4~Bebz̻y4-P:tG@Vi*_(s~><\*l`vB7/f mj*x5 *}|b|iFFa`D:.6nzLn!91 +0,amusB퀸)|3ű'y&1PԸ"ϣRiH'!ռz+YJlR9iAdJf731Ø:/Jo P Pȍ9{%~3aЬ䓄dTlfˢ~<#+G R}rʪU8uB)6w]n"p+ %,a( bI ?Xl41-w,~FuX r|JkU(LQ+!QnWi+穠i>aѾ,BK*:Qэ +I-b)u;z7G_2.gHLYhn^V3-lE ~Qm`n(oIa \m/= TQ +x%*2VQ pvhD"V.݋p P=`d^XF@ϰ$d#aJe1FbZ"VMGނ&+YwC,s@p@:LEjs۬ݳ2`Ԍ)KvL`)G +Vwz4EB+owdD@h 0qCSjye+] Ώ@a"jOG)ԁN!]>ƫQY8[#b!n +FVadC~ 9Hhz8QF"_#"bjsTg娸fāF\ SK&KKD!OILl%bF`cN k$VA2=uѨ".:zDtmXS e;T Z-?)')in$1PQLh ydW1G8zT8Qu0@Wc`-'ʤ꼺^ T&m2FʜBBSW e&CpMqPmYA5h.#mN+IpOfkT E N k")d&;'x&$]ek!NTpuMdŒF;oEt5Ө$鰀{yᬩJ296$fx}wY-LM{ ѽw7s@G=Ȍ#|y3@t@팊D~Ƹ9X%SSnWN船bލ4?::D]8e[a\+qT|hVUkZ#w|axyh׉w>\ZeSQ +1t~?ّdc^CGw_cmpV7o$:$=o.޸@y0jg3,#(&Պ76j2&m&ăSP<U07*wUqrk}8hVװ@t,1A5?=jhPäۇA~YfX}ͼ8^U,^esgqJ uhǸW~͸j^cEFr"; ɖl3l=fYfCXxYc5$Жs5e;QR)IK(*;)㓰)DLɦ +KZy$&,g>DGpZ|X[<O Zp)RI<\J, yS$s\Ӑ}CIۂ\F#h)[qQ0&PR疞CX +A/҄oyxy.KmDČ6S|^П"-hIrD?Ԭn87Dڮ[`\Ky˕aJ¦{/4 w1byDl+%27D>UGqӆُH$S-J<=(E=CaA_;WLT)()yB^&=YSp0T#4!$'xFc=:d)KZ勵O`"ȹQ*8'@N `>]ؙ]:LOFE/G d4hki`g1@mTcWF?? (VJO{<rVky +Ba~=u[hN~/:)<&QjnFI5ߛB+nl2[4XҬ؅R-n=IG0WH"O~B~hxmw?6"RO;"n"L:X j[@(#4Lr(f1ld!dCh? +@/hc˰0{hGgOk)*` +Ͱe)BR},)JiaCL\V[sId54yh ykn`Z{`![f6ad|s4T4a4}RBe%U)ӭpAUvı +"&*b{2d7y?24qg<$V#IƑ4N.UDaׇ ʃ5& Q)Iܛ?ibRő_x $@ы1>|1MjIDDs3R ;ҝoh T4l6ɻ&9RHƭ ~GKP!? V)Oq)А +\KIpFݿQbSJ.#?yGlWe%؉co01ZPM"mkxe,T+Gmf-[mU +4sf@|1>rpjR̴0U=PD=5∡ +zpNx8B mwr DC $ش!_Clg76쩩Y3 [~RX<H6|ܡ]5 Hu +~!{U3{Y`} ZDnh4E9ǣyj-]yTQ|Ei $'@ׄÙp/-XHȓ0o /LKfhW:ޙ9<] +-$I$E&`_q bTJT8؉c{ZsXe n`<3D'PU$rb+^pN ]۬Ux$ YƽYkƃ.MDž3q|} +TboR˱_ GR{7@IR_عJFzxVA`-%뗉ctn>*n(,U1)D%,L$ %R |AnЧN4}_Ʋ}`~yh"h2 + +2OjP(06JI~އsR++)+yM,hH^˘<q5MBu\-BSN2CЌp3 ,JG{bqD:IJ&l.(UM{٘znC~уy?AW{޵W]CW,`xU2-ύگ0M̂; pW-)l8>_DMNaKoW9]fݪ gN{z/k?XNVHm"ϊ52K Ac #mQ* -K0pݢ* 0F\sM-v ΣY +y8]j}K1n{:gX7p ㄌ[c?v 4a^dA#֑Oa=0mZWhFVv-*<*PG)/TXM'g-m qk9)%(?mtޯ W+liFN["6{OV\'XF5t|tmDDӇj^܋- {nlDlM<,y8]@pDAPHn3X_ϽB>o^NiiH9'ꨟiX'~@% >OcLGvu&X;'~vą%dC)-/CTSB8T-A=AzPA(鍃|ٷev *B6/_G F d_'L˨&|PgAseF6ͼ:mH~/SHLވVBK6CjW~Ī$ZxO1G5C{h %612 (kJ,D=8َq{_'`Ӗa((n}q Э LW-\8s Y}#LIDsE+Q2XŶMDjDʅ@[N>IK+&!{ Pou g4OHC,[0ׄ+27ħT0-G+`% G'iw -| =%4sS LN?nꂽ覻ݼhkȽ0$h8tpN1EhWJx3q;5v;d:HYd&xx.anJZ߳i*A%\-K֠Vgi,&Ia@ВGd$'ŽZK`)(NȌ?Eͧ +|\ꀥ?刘; #YGxEpcܒ(ⱚwR Qw#vr)bf&vlQBVpWrqr m7K)c ))CҦu]Ňf?]S/}ZaCsgox1ʐeGPq:xU BFY^`jĬFϏ*XIBz{,^?&xXvO) WSrΓ1M3vZsEa8q$+j2bYbZ}2sSO#6EힴFDש +P¥ű!!yzZ蝉$hDm"w&]f&oq R2$8@ +>3kxCf/G#DԄpž9_%LiOx,-\ӪJk CDsTkIkr2;APE/yKXpUJLL / m RxpѦEKTKUPTF;pm&oHt 3SE߫.{Ɇ>FW'N78UX* ϞZ5>U{Cb >73 `ځwc-65t &X('0θD \$Ċ$RDJRɐӤkr!ޛʬ3}NWR&,=Ȋ2&8H~ڊ"VB>S +)H Wr*9FH' 'Z"cRc*VqJ8rXѼU$(RK6掠ɰ,05 +i(B!Ed,k9#BO|^XݩѴ8yo":F"2|dNG +ChDxg*f.&g3N0!1h&ID#m~t"f/W +媂U  )ŲPYCrHbJjF9Lc2<"d$M#,DonȣBU)h\kO;!]"&Bwŋ6k~4Wj\V!Ei%mh#(qB?F<&&2Dh4POM&9$5цLeEQd9ӲK+x Nܛ8i bU2}wvP<=ޮ-- +o.$oj&7 +C*_m`0ؔ\H(Ԍ}dv97yQDW ED \̇r.'Vp:A]r +N!Y:J/Q&% MbC^ C[X,}9H'X#B N̥ⁱVg$熭'D&2yFɄ%Ad2!tpN\3qVmqDkF+D!mh>/%B}M=?NYe +}Wab4|%21V8՟_v{]4E$msicE^3 b1kp{_CED$H-Ӑ"URӹ*\ +`đHI[US04!<xSa %Fuدd OF6ER&t {/f}^AVL-TmD}AP/fDBm>;~95&h@4;YlȾN?܌>#M|1PIhBrG|QZ|~6WѼ{j"'<V3359fʌ 괬#1K3+qpei7 ybl""ƨE +K@[INJӗBa,P^ۥJ73ZdvAp3%a9O^\Ӫ|$y^I#jn{\i3y|ʝOaBCJOg +˧΢$LTޭsֺWVĤhEU) +2mЄEn8e"(Hw)n}NRpPKU$a9EI]"䠦fT/$2>5}t{CAQtGF,0oܡeI&}j~Nr(M()WtHUc[GwIQfYhѸ]|%@nLwR)S&F#,j*ګ̗M,FWxV R<4N],xqVDҴ@4:>hᴲ0rP5Ƽ0N1R 5v +FgdEO>S|+Pcug #g,IIhJ#_:XfzG!(ϻ:`,Lu ;A`6%|{"n=G |JrT\2U>YEM~ɢH&(Ʊbh`̡GU&:oU 1`TLA>dBdj±ɗH^&$;IP+&)`>+/2B\b18\rW3:;&A({ce%F#(C~rFjCu&~FX'T4am@X"\h(YLC]hhh"Ȧ!vbц/QBGLl "\.!-!OmDF `b7s-n(-" sBєŞ.נ=y8J3͌FA7%L{8SD03E]SVBDMa!1AyFg +C ʸ^U% +Y&t4#ZY2s9lΊfaqUI2 C>*Z%PURa~H$0T[gmsR1b7)8 CHYTM +M'A +}*a͸уC/&C+jlE&"VRڿAUwBmѐL5Rԯev!AAb"EQ5&^L% iHW%XA c1ړsBJL%9[. Qw`,͔ؠ)OX -0\  lP`H ,!d 44 6p)\4|`@)!%@ 2A(A@đD:1ΜyT_8Njt 1eAɺnњ5j^Z' BiēlP`LN OLo7>IZC(_Y;9^?+VD Um8xf80%%&qNX/JlQdzyJOZEhR(kHHW Um/ ] Q^ +iQqE1QE+1M[5GWP9,xݒh¹DW{K 8-8î"1Z.+Oİ+ʪYMĥUe8V=xsauK?Q"_DQ$OJTML9\䜌NSBeK%ar.՘4sWqT)?e}~LAD3U&J9tgC.CQbfy) i>F4qMB uH492ԏܴr,^RÚB8 ̥ET&CwcEPI*.NӝR;ăAGy|zcj O"hR2srx㤚Y`yb:JxEx&f b(Gt=8遐x.bUt&"9e'4+#g) De$t 70:-dyl ;TFÄ)'h=N- +%Ewa8Pс-~3k?p^ ldd7MI99Ha1`J:TsyAba8[V}~{;~W#ޚ cpmjR_X< Fnؔ,lrFRY$R#c*3 _St:A4[:yLL*hMT&:,b"aDt=6ӪVN=,{(؋`IVB +y_ʝq.iP~F,%qBEr1Q.D%H5yuz:pJdGq? +ESAMSQԔ(4eǼ# hс;QЂ>h +CbLF%H+ỸT K"{MW!ll:AQO 29QX1DD&" ?5&s7Q+!ʓ0|(Z[GElՏP[oٵ۹H z?smÞ1 ICJd֧֡ P,B@]0|t>|?95j10);>耺?&m)A50G8. gkw~RX %/F`փeXz4h!dT8XRXHa0S) :e6=`i83^QyI{[ae_^X*hixaE:fy lqBX!4c){uF& +]\L iOV#p#xigp_7YE9E$c=\dᧈT(P;bڙ(xCA|1V'чpA hiն udlw?gI4aj_lKkPg=%aɔ8}lXQױo7 +bmU`rZa҃ #H~|hEWTf6O 3FEBȽV_Oue .Lz7 T6eq΃#irM;pxXl E'-7s16wK8rľ|5B1b'OgrޕVhxլ529n]t;][Ǐ1;4oHuT-V6'584/|֐yk^2"0 +ӲU韺LL<.6.~I(Ӱj mx?]p=ȭgJ"Ŗ0>;Hap4:!X"6Tk5;W N~<{ICߡ%PaG`Y2 +F~儔/ߕA!&`|{e-r6q:PP82*w*':DfE/(NQZZE$0zRy, + w,e&.H X,`)[_d(Sd!09i&{.jFqTinm0SQ#Cҝ#Q|_f,4r7,Id^ I8r椅Jl&yukwFwt*]gc%SN+EW D<+>Cޓ\7?Z5IF[nb'cj. nT߻i4:o^!= U6s>3LL,Sn s +ABb _Vi6=$rn${Sb.O, +nnB+a)VwNuC}gu>J|ƌNQSgvŅ{jE%&=jQ!L!|s+"[Nyƃ倶?z fuq]#۞'ިHfI]UrG@_,lcK\"Nd- +*7M8rq! ~w1E]4"cƸ s^V;g!g&}df0LBL(e%t? fЏchz7Y2JuxcN+)L39:ʛ  *C%1_N`d'S>2^FhW)oCSWhlH’ ^[_<PGc<1.|e4,$P 3ɘ#712,fM!''u)H"e=v۰H dvH˔$hhQT& +(?=!.CKZIY=;=3'%Qk&1%u=7qM3 ŌMC[EoAy`QrasMcE._c!×d@ˈ?u{Q13aS(P GйzVM1,|Sɑb\J x5D} 㔳?xd&ؘpcJ|$EL<#Q~Tƃ >XMJ)M3Knhv@EIM_&layגT͘mLxVLS a:YӢWNZ1{KHG'/wO5zF–mtFUѳJ`9b' Cﶮlt+S@%їR*nrɑ">[7WPXˈ^9%n&plbIZA |)yU=#T Ds޵iUHNjŎ tKUZ9$Jd[PQ :Zѷf< +PjS{-1G  ^9|Dk QZEFU mSJwN +].r+M =[Bymb[ S%~qd9UXYf';<u_ȁ]Q7kxr*< +f.==:Hp +&H)"s~꾚6uD 5S[yP?lK)؄sGXA~tHuQz$*(DDGC'th`W5[3y6T"FQ"BN-X".Ոn税B͒%yosHPVt"bn*´_&X'\QRqL"xA zŻ37&dzQs߲F2¶=?V( >,,a< +0pow8(ċ8r"\7)r:uHܾ0ه" +ZYN$tR$ARN͵h6; ^y>C d okvgvM ǠQ'<EH+W4 V!_#ﭳoߑYרHr92b*Om%D`ol )Z9Ir1'T8-\3W[ +1NڥUY]nZ7B_`Yby#{"XPauUVgrȲ|q! +v +T#es}"j'(PBkmJW J@0ʢObQl&k&)|i'鼸ڐ:dq*>WMTŀ3J?$K*݃<\7~fGr;QuxwN)/F{%vAk;g8R.R+͋h19j:k#WRs!a aK!+Rw݁#hI(O)V5EeiϪQ:A dfm5/ؽ^i 縯|ZX"BTg{jlrگ[r+1y),!4F&ypb݋!083'YJSdlC4&߯ }z0HIJ%f8ߨLZSKMԮOHKSw0.{ˮG7aaVcO(O7:t|f O={ofU .4; +NȤ9PU_5l;+RJ#XaFh{;בvջCſCi{T? |PSR\FBNbP~͍{ Q%}83 "K Km41m0.ֻвT? +j0dIxerTE< +'$GVQWfV' +ؠ(;}M K*tXQM͒`$*j8lfNA|x~rѓm`D1%{DqQg0!,QIRg9O0 @DgKggBF!#zF"}Fu #josh/a+fEMrf@ٶ=\*L%N6ԨmKNqPՉP4 +jtP3(CD!]$PHCH]٦z)HLHEm%BZkAN!]W'շ`Qs}0=Wp$p\{& l6Ʀ!ԅe#ym5:B԰YZ+Xo̽% +cs^f37.ٰ 1wܡ-'!GZMYbFaG`A1U2i_HdE4Kn6Vzo뼯cCiܜʅH5/@aJ%EY-sB-:axBa 8P%X8 6~$ +E=J]kA[t 򦚜tql{&GIDP \yܺʉG`cRFCgApHiBlS&G +1sY1C"C+yDԼUdZ)3vTS.Npرxqm03=cSfE,yO?^>~F|Pce&4(#A6鍛aStqf>_u.jxwO8Rg^sS nb7v?(H') :k]6YTND9PLT`nũCTi}P +-ד'`%K NI^p\@yF3 8fx 1VEimWnȿriX8׿= "Lna*@>@5&*/0c_Z$P +F;k@0-)&? **)=zނ,a{ +e#5B3 L]:]*{*|i?h(y >GX$3%Pn<_D4_EIĀqFrbpc[f`lDa2S>O6#=yph@?Bu͊Jw[#6b ,>WV60Ns;P\Q$f #2;!-)d@x NtYJ^u? W$kpj$mr4 QӀT8Lw~ltpX, +ނ$,coY8o)ruzW1RD˝ڈѿ~'օX8r| + +!,//|rtˇ]ߨ}-- RK5Ptg0Yc3a##E 򵕓ɕO!m5[O[` p+d+ x|!PNpSN_RQ| C?* l\- _ukdϋF@j<pdq7უO|oDHn~~Ʀ;!t\?àpNzlR +BΩHl0y48SET1f8th}eA/#p9YG)Ȋ $Wϝ 'm +y^< B =%/ē3&:c(uI] fZ*T61 +9eC3meOv^D)D!-xQ:mt VV=+1L9%H|h{Qn@#C(;T,U<ʨxI&|puHG]>V,#@կL~Qr +V$bSnW$ L K-V.8-?k#$Ď̀`As>_B= gzLV=Zĕ +h]XJ#OSqqD} ʞR0 D08_MSƬK{,kKJ C?cs6oŠ[5x $Η Kvդy(pe'痊01:kHCRP徕4?mfW6q8 +J'w4%Rfㅌ)->xx٬L +=PYmSмѷwٯs\]B݀%dx.?\Ao_ޭ譥ǹzU{wh\Bqg)JA#<!&H''R[nZHg vhR-nQWfl9֑<쮒 [04ۗ`f2BLc|. +-iS^ i>ך  wfe¨8Ԅ -aQϨ˞aBB^[ݴ6!(a~LBgm"/? Q'6Pd tm̜R`8 y1L}8zAdc|*6{$pQ[X\egi~Rl Tތb-@x#,؉q04G"oYoE7)Bs.ɴ|0DU!IMͷIZ @OL ;*K +Ng^ NCH|(h_(⩫sy0TyNAvw̼pPz pzfœtN0AKO]ϞDJ%qkqxX>Lq]/!fO:b%$KֱӀ-z vgYƎU#*#a8nͧgUE53k6E0JԯH9i9؝Sr  ;/Qs"T(gb 3g{  P?y3Hn=-"b#c  f[Z@LZoS]G/Z?:N+NiK<&aff9|7<;̚6zn4t28J0F*i#B7{.G|ZM< +@42.33%m-o!j6 +ErpO)AFɆްƤYy,- +纣VLep/dw+¡mi{T{4ڋ(62ٛیlǡzey/?<{Xq;6{y>)\-IORˢYm,ZTWr=zt:T;HPa]AVQi}m9#9NtP;ogÂ,pW`DݎL*>+|T!8^D+ ;ʕ\("dg\l k2D}~ ;R4>Ɔ9p*Fut\"6 /Ų'/r"@Eu(T;j4WRKR&HZV pPZd2nJF0NH<&@i ._}G4JbQL<sYBJIJymcdsEw5zHp vWTmO' +'zuSxC8xǡǹU`M$R75뾅QJBg }Dng5#v;(eOk;.?ϳb o;)XNeŲ+:$^N6pF*)`Kos)L %'hHO2ԁs% g]Ofg@|8"nsFzOF(f_h2M:o_ʮ%S9IGmDrd +k/nZIC"QE~y7ZEn%ї1iy;Y6Q:3H +̽1͌I@N=IvG~=T*q5(cIb7Gv 5#}\IiL7٧!~0Qڦ+q4455$4;;CN#|FF/! ,Bs4Ud|A]RU*5t|v7<\.-}.Iąq*rG^Ck^nXoO[>;q +:F+kD i,y3[y\#Op 吝 ;:ɪA0MSP_ Vd'iNET'ԍP*QZkhWKT Ahib w ̍WE_.wkq,=_n[f2z94-5Nm2o41_uq^߯1w.-Rx#+ E9Ƚ(B  y⍦UuOȬpzdCɪq, c;tai22rhX WhNDP~[=xOC)סΐF!|u%A!6]S&Ůi dgM.v_4?8 W9E:v^Ɨ!#,B'H$h^%8{TuEL?CRm.븼T37q$\Ca֔<`bDs:˚n bKٝ?V5Xe("~&0qQtllu3ƖTqt& <`?>H4"YIpw[Tw*SdjaZx%9rY2u􉶁A'l~v uL72" +h|j?aEFӓ2uB LE$V!ʗ@"WRT }Q$Vs2e Kǽeo +~&0#h/P_ X|!^uӂ)@-I==u8JD +J !@8J[p D(r4Z7Xisk^+@Rb8bi{I,p9 .>Y:ּR!8cn Zx'$Z(i ]Zz|%&28 I_2}/}k/`[M,dc 6N&;w!MC:LMgP6Yic +/K$,a]Çq:-MN6LDq@*S1&)\w3uyŤH4- O!Ve_)uZ(3+OQ>'> dbDdo5,:k \Z0"Pz}u5KXpp^$YnΦ neK>$jYeXIiA'?(d-޽GfAQSz`u Zgq sI.g"9qߑÏ4qg_=pG?qlZ%Q2.l:S+u;pVpx۠u~n>%/%6(d/p~ +xQ۫V +A$dKgs~9s$TCP@:"0%KZ+>}Y )r,04da6TV[Ԋ꤯Gr&M*YiLt*{Ro L y\txkr}~{>&WQ>|#H> &o9rBhQ,/XI~,D/~84Cr);6̃ +Lv ,mmɺ%޶͝z2 s+h}lơ^!}ȲVx%rqvҐ+X,vS"w1"~ l 9O@jN؎]~>T% +[s9=]fB{Qi!Ay}lPِNпOZ2by= c*wFgR ҵ80P.W8E:vp.~QM>p-}CXOJy+]tDڇT2MVLB G,#(Q( ڱ38Y#1`V.qY%ǰ׬:¼֩5K_K.= +g׽ ]/$(da[ r +0234)mSyXlg 丶" SD9_Z8; >])WBˏ](Oa GB]N3dUVPE{So/da+*@ϻTj813j&?LBRqhI^b0!|/ o*Q6fVa1pЊ Vd)_9%v~K@ 8 ~Ce;#O \uBH܌Z^3V~@&]Bl`3ttv| .\ +)~NdH+֏ `ߋ6C#gES +O-IV(M5{w +Y|syš} h4N!>.G0mE}IqJDR8^PFmgmP oJ _FH' 6i8?RA՘@~e.G=ΧQZQI2<8G+a8T81(Ў}&7 QWu < J9 [n:ޓ:N[UǙA9KB3_ȿݛ5~}F6K=adF| bC8Uf侭x 0BQ|ǘDFWqy87H<_q.!hو>&Awˀ׌;#{Izku'M*w@{O3`a9]fKaq}gػ0u]G^n>a7.՞~$ ]ux>:BC̖G_·vb;?Wˊ_HW!rc *\-^A7q=mM 9\WQכ(k!o%N"ùG \[> +09k ߺ[+O,34x2nuC q0 1.<}_\ēC9 ney4AEÜϓ/8QܒYjQT5 +߮!&d'%ShLdԫ9 Xi@p=4!#jYO-4:LcSb h Z}Bσ8B hb;gY Qدfqf6qBa,3tV̎2 SkM1Z-+A `憻_RܮSR >kP71䞈Kc+bO4T"4a8Q` ++ ͅh徑2  IHUrx})tqgްo9 +.\_g(w ௶ Wqq4QQw]r ~s+(WocqLD:~oɆmSKǵz2VEΡէy(K2R+@krha \s?z25&ի˔<;|`J'}*apD7ͥl-4%n{[0C%cܔax$/ԅ#lf6cA^+xmIRK +y')r %00%/%?H,@=8Q6?z + d +O#fھ1 P?N?u4.*l3M*j%fq2=L!@ٜmXyxn.e&kbiI[&489g1` t +(Bٌm8KRI<I;̨fJ<pb(.dl+_RlKbE@lU6 .]lwk5l%_&^`S{0"(qឱ}O.{jH$rB%=SH(J_x; %ύA1<(:Agdŭ1~RH{1EL`f?}^kG{=4**%-* A +l1O}8fT8Z"T,{hTA~[g.M#,5Rz5BL/k6ز OqPU +DG{jA("=fl +e퐋aeY@%\(!&(WMǠsǿ@f}T-1m #qaE쩏|z`y`,}NGpƅ +5حU"f &l< +\ υ =MVf](CAq[]. ; njoQ5qYLetʙ O޲)GiU*ˡg]8&(/RNᭂ($^7.f<@C$U7\fFB̃uL`elS.8Xo7+VGpS-sB_EEZUhg& +X_O<%\y} MdG+}bcb8ep42?WJagfZ632vi4Ow$:5aqk<{nkcϱѥdL+or̹oŤ pd vV2p3Đveg8*fΔQe73zgz/J.!t"D+kXvǽ2Hʤ3Xƣ,;;I;y5_qyֶM uuz"]o%x&\ +#_iPzE;IUŧoPZRqoދ@0k)e05#طqM#(wGfG(D#Ap8+O/bu'o{]4KxK);L+ǻ/}UѡF`HzxmfF٭P`w=EtXGHZlF>G' QX^.D pHE~1a| S|[ifֿ:E4##pfx鄧f{e$ +$?ZˑGo!OɓQ{en"~ٝ$Uć="JesLֈ箈4c6 ?%W))b" bPp[G+DBsx!o'/!>7;Xj +C՜!T ^`C8n>#Ŀ>Rf + +/˲(^3pn,@,J M`Z@S֣l30-S,Z-hӉkа}rKҰ:PWP/QKDhVCӜYRxW/HÛmҹN}`9[1s~ͥ3) e%gB-dQ~*#giYI`0ؓ,=]@2zď1a]⁺T:AG?A$"i3' h,T(?@# ~?z[< B5 4W0'8E=CvyZ1NoLb{^L[^J ɯ$Sߚ6vͨTLAbvi# S{eG VSZ0~,4 %#cLetxCuO!'_̻7.@ nw=2S24,9(MxVώ>߀ˆ͈>VM ~ټq[UЭL!2BOñbGY -JؐU)T`zkX!qbj!nW,qM9#\X1ʫj0ˆ -8#_zYx\uWu L> ڰ +4Q+Dsmg<&%#?9LjZ %?x75()0YŬzr4㲶c}XbaO)Ӹup1h>]:} M]YUXwQ.P:XQ*dR|sYFxcmøsq =2rCkkQ.0b9\R4*O.Kț0} K}l( 3M +uQ`n(rQbc\|] Z3 *r-0`IIQq)ËGd8y3-J,1P΋\,cjhduW߬1SRU4-E~Mc% +Et*su^_b hx!`T%+z_}ox;-6zzu;Ud:/Sj'ۜhxStgA3Xza>yC1`.$;e*\Pjy.%'ISl +ǃϰc/mQ_Ն6%4Qul 1Z'W7>ƵӐGK6_hs]gkg݌}mS;eJʘ&L%Pl,<0|θibsi"%ptJ%)ȥ) ;я+|d; 175]#\KeDzHr.c @ī`=EAF0#͏&#$jVyijbteg̡犐_Q@62@u(^ցV 1T,勫JGH)0F z!vRƌ}p"yי&fq +"mX'LqKfoLW*/G?n7$j^tځ,[m<0xHW!NgF/G& qB!@y.@f}5V"hujwK´Oihyb-'<ĐXxtI(ħaz)Lf[p69ѧ%zVce׆WpIiNI͛ dz0.WI*C(]ؖx`#UN !\R)J\џ#CmC uK"d<W FoNM$b2D6VXƆOCMj'2"5_A [ÓB:P%ipB$t@ర*ґ6%H Y{!^  0=iZJIH@6ϋMR >Kw'Il up'Rgu1R +Bť9]DrU#iH 鷗Pl^JǺsJɩj="G$UCL[KD;.7r\v JM7+r9LÓzO#'ǭgI,I@w@) h)vz'FLw yNƟ;oW]{Xm= Y6zPڪvȢW bD&ړBSYx$䩕|x`-,hjU++퓙ː":Jpc +"NE!fE`j0脁 %T|p >LsX pCmR0y +'m zZ3 +S"Fa;@,O@AxoUɇarUj;NAc 08̵O"B`&+ +Q:3ꗳ4F]!wmYl U+ ǨN(he74qIIPB22jyU-2D6NG\/qvc췁gjAUSYn? mJ#iΧho9G;0;V:nN{h%3h$ƍ̙+٪5v_v |F]7sbPTӍÉڷJM  +˔GRQ"]BYAƷ?U +SឨriRܳhm$Q:VѨG4\|r4t8Ɯ` 'x,NLMFJB oWBM!n,?eN#(z)["MjX)z~+ ^k=oW9PSʥgZ]>U~ Ea0вaE-X?oKb'NEr0FL"sq4^ %r4Z8p +0\ 1}tkL#IJ <8Ws)*XJB}/f7p`iZ #T}99'qE]B9j4m/u5uog$PRm:HUɩ]3г ;<$.;K\ʹ!K8D\;bV&jeb dسe ZL,щ ^b =!h^r;yGC4AWɬl@V9B$f +[ {QiЧ^XHnPY5x86y,:( KFU[ XB멣R_}$kX +[m7b*z.9Mn `G\W,ޑOk}D$=kX +ڳ)}u ͝/ k, EDL@ruSh hq[ + =N4e[I>&-|}00zf+Șh GѴJ}g^bQga) nw{0 yg1ːxȻE * 6Sб99;7y TuNVxݙd8` +ZCnת r$.]=adbGVhqa)ǙՒSJwg˾+Pd+hg*f hu!; +eməlbe_Kg҈ޡ A۽#GT?H_lvjK}^P hdgmyt_Bƽg'}E`ho( +lb34 !˜ͻOv-gB/c3IQ_mPJ0a +_4޽P}[ +R姮0j~'~P͋~솷Oqf + +p#B{~ + ,Zהֽ<by 8dѲGNd2 +Ev7L>j[VjW.7|u$&koEw86?*iSlbuBOmRN{4JgNݟ+ij߸΍)Ҫ_K^C$W0l=ubZꎶ&h?̄mUe)1o#MsX/ wt/1}:J]vNj,-{!{@-mF^^}zݣֱB辻|I)x35`AʣP8NQNMz Ph8>QHO-&5AYBv +K(4 PX) t>kKLE$_/aE-Z` W8S07U ++ς`1m (=cj+L(C}̄%jP#AÑy^_!L4< nQr׆"]'RpXx.2Bhtp +׵=(AJ^x q2J+Ľ]&'|kmը,±ÏEO +_/ep7` jK8)זp~WӰcֺ Db&kY/ak7G %7]M+k.cB#܀@ k؂`eh"xAVN$=Iy˃(nSKÆ ̑8u5 [VF8x0t[AәNHB>W9V`o RԔvyXc[aE^0:onR_wC: 'gɄ%zJ@ڋK ]"D Fnb>J:OzP397T1+p5a7+')_9/<~D,Aw$BF{8U?a='fdm6["ql;i[,S̬)q< R|Dwy0ВmB襌Qn)lܥU/'YpD2J`mrsV]c7e}_Yjm)j:]C@οiu +0HyR;\Z%ԛ_a t5ulٹI + $Y)Hr%_=/8x,573As<6@3F\D<:h.;Mք+DՕtPҟW֞UpDZsK.7\9#|KكB`b;, ]f5e?hqUጉp46h(MP Ji:N;JN'M;9tb(b߅1m/.4I"!! ˃בɛ3[8_`j|?y:ǻ4Y4y^,/r}NWn,q?[ʔdԬoDн#i-`7_; v.DF3W,X҃DA{ !K$aɃd1ԥEɂydH_'LXB4,km@hMw#VHXࡃux7z FCojԐ6M ] IչTCc!ۆdP  +`\MH(E\!)ƐH0 =H d &Dq,Fc"9]cH@GD/ld҄"d2 \&T#H'I K6R\ɴ&@EBvTA3u@զ)Ev M*| + +En\O +l|(ĜG"Wfsh ߫z%#?Q4$G(# fX5w8R'>)|@ 2I؁'.vbgt\LRԔ7J).c^Q=MN~Iu3WY ?)N @ǭX~\S'&KgOrZ`6;n!>fAM&JeScrbAEXYKEzﲤ2x9=U?umE: FYJ';bc Ж^+_$Ycr~! ;6ñܓ+O%S)IF+mU=iyl$p7Y(\N1{ f6R+pk t#Dlz4z2T 2*5LDj؅ߚE۱BfPrdi@un@N<)ne.*ayhu#(Rd,1G,@B&Kd_jT{=pK!/'xBVQ9SoO}nB+H*ώ7I4 +s 0RICsDL wW@NҴrЮ8W`Rv &-}qm@*Hܟ$]쑃X_5Hr8~d]ij>W>#eSa‚#7`3B4W[g:/ɺ +*'y}ODoo"ψw6VsIca oi:\YV3_cWO"܇^Z2܎)֨$+kBK9huΞn>j4N0گddK&=y5GsB>3 O#J > A SE1?dkW8kT ೓%ؽEܸӍMoANg W+rWQu[6slR*V(̤X͆RY(q5 =_."v\l<ǹQ3g 5=^E=3b]Gi`Vڻ̈3׳ϘBaJܞehS#q=۞9 9( 3L^e8ӂ۵Bd/cO=@̛YI 4>l@JL퉀GkEuQ%b:o| endstream endobj 12 0 obj <>stream +}W)op!l:qvaC]:.oE4z[,Эfm Gҽ!L{/LlRNi\hu%Wu+#6g cZ{RG_)ԇMs,.#,(Ay3ڳ=O]iUFLvRA%H}k=P[DFkzzjF)Y/y.}A# +E^KЪYBfETտy¤ `txqC9l/ |.gWѠIϋ(:}w35}#9"ѠfQ剹ka+[E :v+vHCE #V + y r-T!{bݻ=ժ"m!$S6}գ]?yNnt\`J*eaM%7JpU]GTьњLHNGʇaa*ʇNoHN:K:S` 6?\O@#U)gC T.=<3w va$چ}M L]kCVmPM@6rCdx [sng4;@Y[㟃zp=LqXZxL`*ryCaͰcN8梶F 4ڨ 'tSv9tL/@j|i_3V\ѺfK c +jJ,8s9d%krVkb4LD< +QdusDtc?blq)ЬG3eRt$N80Mm0Y%ЕĘ%,]BCcylNCBЄsgjo21\+u9.a` ֝-_d]ZFtXtKpNm9Y1I: "eKɅM.N-^̝$ճn CDOե,d;kdR̫ҿg,sAUlD1XvA߯B|ŕT?[ih` }%AwnKLmN=Գ<[Tx=rJ`i>I5&N^@%>t-2ה!)'CD.* `qlJ?JjVRBU _\T(K`-EruPf- Mg"/^lƑCwPtaPbc;YtSoPdT)龀`wx7s[&Mj%=tS$ +4 RξKe3X _[9UcS^YrN5_P}z3~^fGV+͛h$a'?$C`w2}Yv͉{~EF ָd[H8g V<9DZ$Ij -xdu)*i㪙1[wXƵן 9>?}ƀiAU].wOn'HLrA2feDXjl)tK0MRJR:08.RƧZp +͆ą*eUH*㮖4Ҍ'RH5.qw[wqk(ܠPLUDg&F~zeSzӨVyTE{I5)y"J/_preTR.//GFs?ܒ1ϡ~LY;E?đNoQE'6V|O iF1h>dU5Eެu"^DVDliQ9z!bUU)|OeٕJq]tDn=u+3xL[YܼbU GvIzI$'CkP3ZL_!B[;b\Sq:?%Qԏ)BGH5~CL i0,Aݼ~QfO0qNDNyF$a T{W2Q:NuŝPYKBQST8Q)E(nY(&3US|~.VJZr$KH=o**"O}VO}%c_;BX'6ml-YR qjR!hoRT?ExT%\Jݝ4*$č:*ڊo<4Sm˩7|D.|D7N9;?B &V|B9tOCV:ejeQ֚1pWIŵy/>KH&OI~Nd\?R|6\Ej̈́c +2hXZސpqbAc3n᪷I$}{W1軽 ){Hs&0߇2 @ph@ @ DPXd6^<|xMxkG;_y ^f&c`&,UQ%+rЪ"ĻdFu@ՎLy qC^*cPd6 ٠=ӢC?X|ߌ+$h*x Y栩!SNP[->59m+eEbJ V$tI~CS]:tH6N ٪hDd-B-B]CrN  7[UI2L +LK$]Q +t9!! DT&**U Fdab_6,5DUT:XDNUo5TTI!Fݲ;fzLPFgJ#e(UqSG!aU)8h2֔O +cǙ\4ękɯX2d/ȴ!D,$4 0phQEL )11C4PGuhFj|s +=.s; kձ- *b(f:UDLyɪ̨%Ņr2E\Zˉߍ屨N,Q$W[PI0*)[ALI\J,uC]n+LVڼ8_NMS|PYTTs$Fe1>^"d:Ov\\Û <+13U] jWym6yOKVDiΨeObڳ%ELS^FܯLL={Q,$_e<2_1*"S$-.;BDĈ l$ aTI|V|jyJit 5PL1&9ъ "\< 34X4:͇mvH'#cTTdWDl Ff+GkPJ,r$ ց \{`=p`, kX00 ]0$HS(OhJN2"b(Pއ: "rJ$YdrQ;sI9$Uugi_D@2݌EqOWwLA4-mef3OGsP㜓8J!>~D=N"F}8ӥFfZIٹ}m5cG̔XivZZ;_7D1ݘX\_Ǻr23cQgI54Yùu$Q4_{}(zv~n'WqξVӊdsk~o)LgJ<4=^kwC}.=Hj~U,<4r!NhQsv'~ F)VNIW5ILĚQ͏R%"3?F..zFqQh}srz +]4ʭʼB'$d3O3J8>ȕ?='eb>~5^"/$QFc3]#~$9R4hl-}R{%]̣8MGNSF!Θt#4!4.II+^CKC24F!^yG9eN鑻qj-Y#)VL6/ћxe RE]t?fPXNU)Jbů+Jh.hLj=%n3}_autn501Cdk6PzE-[|/jGbs2}ia۫^☉{"W;Z2[cZԢ!KH˂cspMp'ΑWtڒȶ}Ҏa3jœ'! ī~[XjfP\qFi╒ Qщ U|OZ1^)ᨎUvBZfJL2O%.EUV_efU‘!۝vnFo Rdek#%S!/k$+*QWʾvJ_8;Q>[>mG +GZ\RJ;2N\ Ilmh TFg"$16Inh3Dі"GJJ QoD:4|[#aNW$!݄䏃*ۣ"WBը2OQ`| YY(+X.H|p}efygS&Qǹʢ#t,BhܾC4ue~uӞ٤;lq_NB}װF'*D"^*4T44>Z$Í y"RȋRA^L12|LFߐ"*DAImLqfiF΁YrK[v;$nXN':U84RS%nꎨӽGKtע*i:SituZϔhN|ŽR=*jcJT_uUƫZ URk#jR,Zd32mJYg"U1!YYIХZqkտO9C1Hb-h pn(@bPR_LAf:qZG܊Dzz jBK*^+&Z %\$\Vr02BB%%Df:٬x;:8+!:%YeDF ?jEo +g̚/vt5գIJXꢟլ$X +=\: g2HXs 1LG)P< b +zhvAgE왔ISM–%.ф>FLzp0LNf/AfgqLD}IcbWxAȢZ26~ĐI :Dac\h̥='lB q/h΃c[۝Gދ)4kt[$pҮ#^]E% _ %J}`},\* VLjA bQEcȉ疈`it"TgcdRRI(Zj]Wb=Dh%qRx>Oh&&!:n㪔7I? iX-41摃D;tJO9Fd'Kj6a3i *U("NQ9L 2KFA*Qۃ$m#24KѢu柗urHD5Z Ed[apitJK\$֚& z} t>4}?C wA3Dl=jtJ˄:y26Ri*6%LCQƕ(]1f*#W5!FCv `Ut΂ٽ䛙<ֹ:ɂ(JBSʧZڿG#w1fk"'MyH Y5_+ cS"^4`L#H*Lp4164 +IxB}g3VGz-(]Da֝Qj}2|d8J0Lt=ڙf΄vřG; +FqҐ.  }r,"I 47k&5qQFy\" jAUD>.H>ؑ7n:I+Z jxԮdds-jmfjB場1ihK%K*+#qBVh#$Ne+( {F.'kЫ LfE"!D k..%+pEZ!S +]'#x~c=kdTךjfv>I4%JexZsf b* &s1slgaEԊVtR+z~A~Ÿq{0+FVْ "O#eNuQO{RHs!$bw%X6etEth3a0rQֺZoQ]ZsuEAAWQoJi*A!Egƣޝ5!) +gqi0ԪxD*k}O~Oғ9URw,_w(3D/?DxVs,׼1lUiN ]"-KIE mN8RzP-qk4X'b ̩8>Ԏ*e 1.vd'8螴Hp&)JXjd(axVr"q"ܸ,^eL2:m[bө)UlM%CD*Ұ蝨HX1|i +YǡFm^-=k459 jt"%9^8KAԪiI'jڗ1U*A1KwJ(uu%}GIcMŦ3) LI$=Um}t8qW9W2up$4jJI#&`bM[>(22LRAȮjui&lф%I(3ڝ֍e4/}6 N6ܮ.dڰVӔ+m$˲%RJYId M_CYNIym5dek8Do"q,D\?GZb&mu"B9d\r2&rhT.pC +͸5dEWQi%qL$Neq,7[̏! YJx*GƍJZxKQ)!j$ĢgBE\))W: N+<ׂc/5f85tTIy0Ik"%sI?p/&!QiQI+1YV~r?t*MK".qQƾʙDU|ANDт.'kJ&Ţ!TMM]G1v7Qï*/i-|T)_'B3=J"#`Q7ЈjNO6/f:EEJ ?Ouc%wj zf}9[0Wnzq7.cZjk>AYRS5SHaɺlV:(NfvvӶ+V9Qkt"\kC4a&,M]JVy|UEWY.ef}ѷ q(@@TX E6CDp\}J I$CZ뢪&j44k&'?yg2OjL:՜ 61S쩋y3CCAH=٧s'ԓ:KB:!&Cr(pPf$ @IrFW ?!n"Bfxf%z+la/?i׉ R@ȏU0l*T(uYZ4^/}jI /-J܉}>P̊eؼ!V;tpYH@*|O&5Xw1wׅDBjL0o>Mz{m%l0z> vKх][@_%K..հ<@OC*a vi\u +CmxYF[E1VLi4x5P4% 6hTkz<u5a拍DPR G콷m^VTE$MOg+q(e/["15~-^4s@V¬= ;3r-VS0[-Ǚ߉J4,_dTtL# Ʋn $E6O b@3#` q}rN33&Djs@!n8[@(/X_p\lWb(ay, vL2 vVr굛?Y~Sx;x9Y%X~b0xHz|y(!yO_#Dw?c.G#$t:p?|eh*AN8k@蔨 @ʉinۣz/J +e f "|tn,T"B'rC*|#DsD 4$޹[=ywm7h7 R"FU5T6flmTp,C W/)Ù@{ŭoR9F>Y5*'_C&$U6ۿèʗC\=E q$H1OoϝCUF鳧s։ .;o!,B%{C1A/`b-_ֽJ~_ RS*<Qek8+9\Vή +KOW2ȵ8U?ͨh`N]>'|IimXâѲJ;>\] P$P*0BcL|>E=!kwU%j85p7F<٘#݅hCE.Jn@8?'Y8aaA̟TW g. 7M8w45^vo2).5ebV=>ę?){"噿!4>)E]_3P +_cJn"Q2O!7 $m+?Œ4?X貰ףR]t|A-5:AL_ 7/R,!.  ~}fb)?!'ֽ=JT2]V"8NVlt bkr,*?,JPhMcJ?a'ۚV_xB՗ 1䡁Tye@"Z{{/QB*_? >}:sO)8>BWT`n[rN࿤Еe CIQh[O !fчM!Az2 z8*w.Ȥ?LL7@D_ Mr 8@/f_~u+֍a^ÁKɩaӪtMZ>7} ZF,NW<JofD+E1ԉ10hazUO9ܙV- +]+ԞdQ[iFa7̓p*&AA$ =! +f '804(o8 +Gx,қ?77 ^\|6W'Mf:ݯVE4kp /ے4Dڒ{SSM.%Th K>ȍp>8K~C͡c/i +u^C5!/y%Y +zs/ +_ +W+1OC/r.OǯA~OKIEФ !*iL + ¤Kb,`ckp'LoKKe!qVv*iJ:n o`w) +K~hvL/`"zKжc=tgW|BHQP,5l</1ԇ<Ⱦ6Gc(\YmОk^BE1n^ʯ!=7I&+L[, +P6g0ШC14Ӳ/!J7^s +=`4m6gR%P/m"~B̑]Uv7O&?O+'3bsbu';/J\;z|'ޛ K硢n2]cPZ>rtvWvzȄ.bWAt/=!ׄ +,4m~B>V7g\N\Lڏ ֙P- ʀ6?r>2Jto#d%0" :ix(!l]&FYKyMY!~-cڇN4ܤ5aq@+NLzR)=|эXLJfth ? ?EaHH{.,3/ꆰ=w ]Vs[H߅»)/Ҕ +H{>mӅ:k[Ū.X߼  7߸;/FOr>8sJmK?_FF +P-:DLR-e¡@iIƮݣ>CI,Z3Aw+;Mcq1İ]%?|7l+AQ?%+-(t{Ņ_0>>\L[.?ѿΒT;2E p{ 2cU2;X?"XRp r/`ZcleGZ}_ْ>(rnK;߅/5L ZpF] K$pzk3TW}XZvkꢰ(M @ ߥ븮?V6#/|EJ"؉@-@G~]勚 -sB 1̴^eKwTBdND&/DHe.Hb)\{*8*y8mαFu]X_O5Kj3 -'jC3a+l&|U3ld|WxtB:"+Bn +kJamwJ [~*ɽSlko¥R7pt[=ILc *ў>|)V]k9;Jv/§T+(C S\E0_IᴴTA ~:){{*:{>RL']r.jݫ/X8!^1ŇRA6Ev  ٘0fn2MpJ _Kb)i]~~{E9|7 EqY<{\Ut3cC(0&s$YQ0ݮQJt0 HxQ^]mO~+T8ڟkBаv v6CaZq툌,<}u_'#7^H BG")mt_, DzE4vl]/+INŞȽб HyrhXo`~po ;<{:l_g;D&CDOKA8'=~3Jǯ#A%(U +ői h8K7Bg{4{Ƶ#c&"ʁg%~-jZN*qFe_ >iqڇ?sg_9E5Mr,+о+wCAD;]%Zsj(.fJ Psʠ$ AeO3mG(-FGb~t2. { h).DCe|z,~kbń?&@,F{U r}EB[M:G $TRukl+uYx~² Kx>wyh֒u~#'d(@u=z 9?O ЏQ ʿ[#0.s"e*6fZĽ(1XO+, f눾bvs{M\ +T Q~JZ=oQl!VH 9y7 +#ZG-[C=HN_Uya ?}IϱJu +{ۺ* ( J 9bؕNrzɂ-[@lϸ cr̝I?u@?h@U~(t.F!MrTq7VK$' n;b@dkOgt6ڤ?!ѣ67|RFTX,iqZ+*@nY{*g̋U҈knFĒ18Y_F# ECaJ(#Yi1 +"ƘEyVEU8´>x"3+L:E9*$sCޜw5O,^2?ԇ)_ % +>s@nҍ\c?dvۊdDRUP>/DdcU%fN؂#2]q,QzΤ +\ǿ Sݗtɮt/YtpJԠz,/8;iz$w,^o]c6rXiQ`cWs@qkYyI<jB}3*ٳ(1)$T楳JG眐?YĘOؖ 0olwt3n3? yCP{džl8;WvT؎ˣ-b=Q囈BZC;^-I[d,_=D/HuDW 8CcP Ou[KLQ9P/U=g ySF=ʥKQ `X'VEO;n,0R+ IK< 4'EXE@Gu"R +4?[ v㒼`sh%SH^1z#oQs]"^DԙO!H _ʋ(-a<u6/7D\ v@s|ɒ>b4zMbI Ueĵ9-iu`$x dzŭԊB0v47^R ;,`+2VaXՖe;yXuKeFls 0JYx[oY5_PţDplG&|;3#c 3*~,>D[2`7JU;I|"ϔ:rۄ%=!y`!&$dNDц#lO̟)h\;%:O`,79n1Q E| 3q&[<(sʜ %Dij Þe*&RܮrqI(']Txo8HЪ[riNN'}o7OHs~ڗU +Ek5) 7N +̉Yp3gڛb; xz@78^;<*VV&yݼ[SJyڇ\R IEvi4ԆFk94 mN{[孶g";+`I2P?I8k_7D 0|䘿@톤q@rD/BX»^+X-|;5(x'.{+%@p!{dJu}w좼 #e^hRb/P:Ԋ+#.^Rg+2e8ϔ]=BO`A#bWXH) ͒+g7jp.uGFxRr:rҶ?r1r_%RR*_ݾ:d/0/zoX!Q():֯'EXHIoD+.Nf-N˻F-6·y Z +H4E`;UO[K ##jp5e]$RG̀ $p*ip,E~Mo /p{^7v -NvrBq3Geq|p)ьMV:Gܼ5C 5i+I[PS-oUBRj6RļFVQ{Z#PYNȷ0*e32Q5Z"A@Hݫ8wLn3G WfQpLB8#☡&lg8>x W{e5\Hl?KXpj }0֏`^~8bl䍓($k$ur[5r [[8\3z,q4TA dvD-}@X+qW3:g WZz (1ފbkvkc|S`C{,XA$k4{9\#ɚyzqlRl_UIq+(tEjrJPE@S`#5\9bQfT!V UQq'M.|T 9"=г8o8I^ 5 +KOOL^&q&)de#NLMNUFg/K]]ˏfبw<ׇEg XV1upMNqZLaׯ;h\4auXrF^4Q8r.bȪIt\&O.@(J;ڠZEj ;I}e[`kؐi)H2) +,FyG1!i4sxL8GM^%Gu|9}~diNʨE9Jb n%|^oH;%|{[3:HX1#SS5pHm`yHC˖9EHyH;*R:?{Woe9V%r}t8E:5E6]X{䒄ɧ) f/{u *Λ^Yó*# Mvnz:?awN^ LUwj f "+I<FOHnwk2ksϧ9$1JAiVCi!8 kP݊ޚ!DU )# v/X"9Tr&ĴA#7y:$vn hH%]lt96R "65HN􈠹bz"9(bkP$$(=L =Mk.uq$) W ǃe .Ilf~ +&[|LSn"'GqؙKFS4]H l3IF%J|w$l3$'W_|OX($qI'3h|{K$ȪH:gΑb)xU(K*6!炶OJ`{j'әEJ4ĻiO2~'O*qv`l' ,ǔHpm9@E'ўqf;)` +..'A%N*=A)0 or~Li'7i6H%8W{SĔs46 +*M UM9;fS 5fIIQCVga#S{0YzEJKWo YקkPDv¾1I7r-N>#3=N2.P9Xc|%w]-VqZZ _v ?X~I#~t_wj;^ѪjOk+1@Iċ(%6+J&Brx$VŇٖ~PHۈ=Wq> k.D3R7vQަ:x# uNCXb2Y O8[I[NMi 0?Ek>)dm?`'K!rf~&}wStX.yLj,OR}Rb@7,#'|AI0j!j#:Ov[s!9zg? +H3%${joQ5ӀEt$C}_*]~@;-LLj 17۰M“P=/ =g i7D_#7ӝ$Zn#IR~@9_X1z\ $?5x`Tʬ3gئlG6vr\G3FӞ<=d̦:N?O4DbsZKF&<,AI; +lC3ZfpyP~.<0Ed $fV[/h#y2 Ѭ~/Ŷ41q Q-!:9&(4nDN{)?m+ G#Qm྿~;USpEqH5?6(H~J<5,?XhF/@v/U&M:%߼(j~L5>h.C ӀO7?Ęm5.Ýϳ !9=5")Qj)cׁ?OfM +cHHYm@M;J?o"%Wk,Cøߏ<kzvƜ^PF[|ۣG'D*5(}ak]23"~?`7ZRdB('п&A~+xؼժiȭ~? +Ϳ%yi) fߏS_l@LH鳻~?^2(u +'((~Dgs*Qmw޸u@jv#RpV*MPLVnݖު>hpD@ti +#[ʸZFҬI,v;"J ~ri yOL ?U(Ce{t%yRsD418Bŭ/=q/O}#)vT5q,8#%D|nApQؙVi +t SV{[0%mՒ!F)XS^I+Cl 9\-?֓M!9ČQw%oF^~F 3L1Rx +^Ğ~$ 6yPd)x%'a? Mj&m~=Q*~~䨻zf*nPz%P#ĊE1=횎9(-k%wb$"Ro.8!'vͅh\CMӨ'VZKuO?iS,nOIUmrCs~h4#%!2WIu$ExFaӌ?K!#\\)k2YGHJUr{M0f~~U.xǍoԓ$X?v?1|S\*QM$ 1jp9"_x\utgLc~ZN?>C |&Pi+P& 4P'd+uDŰuK2T ;+}!"F Y(C :4 A=|d"rw 5Q0[ZFPrlj'8%;.Dcv}ٕDɠW#4b$Tzxl.yq6RKg脡KF +ɦNz"4kI(jp`BmB. PC3)%J M}6%9.N84dltp8xLRG!Eԭ.y {7U p:xnA* kN~"}8d8.ZO80o)N?rrJn2 +t 3Nc:DpzfD(vod7!@o~`IµV" +8 ,`V2wF#B`zG +PupCmzN88j\ȸ9oԒ8M:29I0H|DLrBB̔G79ۜ +IJ"ɴ>% QiɅt4 ٥DwՉL쇜 bo + f,D~27vB#u3$cfHlLzQ:$,v$kcda_l*gӓu۷+G߳Cg 6M b!]f{ʣ>W3笯׉ƿ)^XrB>ajX4? L#WH?@-k3{ -`F^x;VaTaGZ!F`ҟrlxv$@1GI?1{tH"DRr@!=shC\ⲓdGS-$aES\/nY{HrxZMC*G<0;ٞsS]5s@W`ڟijFa='Ma٩?jMIJ`@J%/; %ҍtLjHf"/T75$()KNNY+ANu,o'|J!ń!]Khv;D3jH.v*5O"o8/|Dדd[)b +U0&p;0 +NÀDU$dOd2b -BPwNK`/!GI`v*RJHǎPHe{'Ėl /H-Dd aXPP KLjOK+yP6Ku o,!.4"gW/zic2AT BD߹\xG͠JX]lT@$ɞʩ te:hFKjEK+f` B-9(9O\}Nm Ge{`J_1D1n7sniHUA#P3[ռc7E-QHlS]9閼wK,\mP*79 m)Hcl n"w@ ,'AZ9d}ܐpFAG.n%?8@|;dػ;S*w&f ^Kjbٟג8jHR!,9Z:oI%w=\J@)cCTAB4"Vѽ #TT T=Q?|QK u)TGf%Soط-ӸݮT(驫)Ls:- yxX2;t)|X5&Hn{X0uq YRLDq;PT:pf.d +~+Kp]a]s"їT5ZEHibޣ}MP+=6 2papftoabDWY?R/,Uہ$ѩ* a11;sDL-AP,RDPsJD츁/qRA'oP WQN[A Lf%--bOJE(*c3Q04ajA8LSԱfɄ)bU1 NҙDQ&q 'Zv`:Sd+PUnܑa2B,L" +Aq%JDR9ZHԙT: "tLYFyqAX𿝩م{Ġ9WD:Lw1rdMsm܇Fi.a/168LŸ̪72>7ۅH>"Vx3u(9OZsӍ=ܿ,Q3tLp79Jwv`Dg o3t(Ωq#Q."ׁQtBpYlS^wxdݘv8m3@oҺı!6Sser:gG~"ShOYX6asm&N bwiatD8 +V3Hڙ&A}ꝩduth]Wa?0mZE3R`N{b8X#t MxB}JMDh;/@*=@%d)xXRxiڂ49G4S' +%Ha& qS"%B.hƈ'7M&_őj{cum#.`41}I4^ DRdE!70M.Dtcx>\Vu/ mP13j +NcL|iԹOEI.7mr1ط{}xiYn3Q;/QVvLX.P&[d@ç( +l+49ԯNֿĞE#ʀ+5hZx:?%|ińneZOɇBDep%!!*ЬLj"Ŧ_ )N^"3͙}3s&NfΔ.*%-39jt&Ƅ[0֦wʱ {8^,M:}&G52fޘ ^2l2;&]jۄ`+ǹv7xS' l:+Zف Xɲ,R 'r6 QE?$}çT>G| 2G616 +9V/7׻NL4uLx'"[d\TY@0`}>j'B+Ф)lQ>pjRF)V'aJ+HX߁t ~"rY)5GOG }oܧ9Ƅn4U}S]!]aTQ<5)3d&L.r3Sq)G7(10 P_KLQ'FUD3Q*yW"8wL5iAJ*2&SuA@\mq鐩 cWkdG $ +q-\m(0j{a2zR9 UѴ8n2H~tM*]2T$P;1#Mf,gOupX!e*rd*oLKN8RCsEsՠ.Ք**{'+P|H 1 +ZT# :vR@SĎA mT<`A _SLht(S?5!#G1ôALŢKY2[n"kՒ>{VUDj@LU^k%QS0z]c'~LU@\T( c*R!;tskt缮XCޒ*(A?9TJ,ZYfMDeC@!T+%+cV P0k .3^dWc**0YpzIHT݊X/([2X= +≩e.짘 +0(r Tτhx΄H,c8 `HJT@:b*yX8_ {1JSBW>a}w߀"e焩xx&a H"fB4=L ,ɬnHhH0Y'aF5 sS=AX SBb[Jha+LNC0 k2+c ۍa%S?+`*z2KV 7z +O~TրztN%:^' ϰO-bbSĶJ/U{щFKK5{BB9#/B/U`=jT ZT kA>TL ")hL2=ARq!ZةLWHyx>d˞ +w4(U,$:naE*[, $KY9s8sS1 +98MJa8/]X.픩H۹$ lyLյQ&iQ`jQ86LE9E}Ybg4TG / _h 3}dL29CkY K켸3Q3zd\$`ȏFuM1&`㺼h4,ASd1oi/t.ng„4*~Ǵq:_t G']aUNJ)}IV+5q7m7ؾEiPWxTj}3-Zu* >ْ(,PATR 헶kW1R38S9:T+SXuS#@lk_;IЛKp#'>WY=:˟#䛈5uE: .A)5KCL#jpa_6v$3TEԈ;Tl\r0b靊H5_d R!oT qn!t* S)bzlN5='/GDdAhѼlT?(x. d.x)?(Oܩb?@]u4.aSh@TF",S1M NW~*ŝD-?~-20.?N@SuRPpǼ2TA$A; TA;H!O5%-j}TdȐ?U+t{ܢoTTdTș ^T_Mڞ6*DY."SY+/(Zl8xSN4ymT C54\FyO68TTMP"OOU73O@unYS*b{i`IT/t1Ӄc@=-)┰626Z*~*Aj2޹^MT'YY.PjQU%@,Jۀ*UiL)Pud=j"W_i8:T5ûŞBQՙ/ Y\J@t/$S_^4PE%X\GURߓ>PM+ӂCZRf>TT5S(pTIF Jrϳ7sUmgU;<2BTI 'VTydӶ!m[CMDtY4IUPE>¡[_EsKtb +Z-փ U.gj|iT*2lLQU`.O[T]VZUybXHAWtϟlT1z0z5$@Ug1P/PŵV({@}@L}Da=Ho% T Ǚ$J }'0iv\n'!LSJӢ*OrM@0ԙAaK@6OxA`OkD +S͸ldOe I%ݣ@SbguWP%6WRɽ{aڼ4⧚yw(zw+Gd>fr@mJwPE8Rg*B3 P(wH x "T=f 4M T5!|)Y'X(.6`aչ +Z4dNNXXD20T!+3. U"(L{ UfeHն4(WD?9ĻfVUO B{#,bzA_n)J Ue'J/8!1Zj(6Tu5x4.yZ: %~Q’Pn{ǛB>T4:$x)+rÄf +>3O"8!w С꫸@JŇ?{xgr Lk8T ~1 *衩 +O P2U !U:l!DNhH##SuU!y^ٗ@ }x9wj4Y9TՂ=5 n|C +8*nG~t}p$:TNYEj|{Rvl Rp2=Ty|֐΂l8ڶ:'oAJ ̒R|F$u>nL5!=H"WIVXT18&OU8Jcψd + D$L5+.T88A,mZt}EmRMNm*0wQ*#dq|K)W>(n[x ++K3*:㖪 >P~-UI}bϕ/U'R +܋rR{^@tHٻ*ɒV['-UKdԎkxeӗmc*iY*_88XR̻@@9sN``SenN*in5f||0ekN*U:L#7ʪʌf3*UUhKb䯪۔YV J@>ݏٓ*ʋ|AZkH1Hэ LH))Rէ0壩)E&/M*DZ1}M/Bv3U}/;5䒥um0A=).YjdxYpB4L1*һڪJ#rcU SeRSFp1`#$VebU^-dUe b FXV}d,*ة#DVȃ<Kp(فcwڬju]ȠeUՍ[~uVuNPfUnƿdVŮnl8#ѿ_NǛIm`7ٔ҉VU6-- C&e{Q$kj[ :є3`gʌTY0]z{S)V#[ZU(qY,ߍ VJI9U1Wf B*z>FP*㻹r2*ZD_dMcq%WesUqj C_[UюE߭SFi@V yB)z-TV,򺡣U +99𱜗"]$%˜ GU)?șŬi2sLsmW +n1 98cn+U% + PԶFK߽zىwCWo}1sUX_Tx%O]qzBjaET%DGRx5۱Qs-,.*vf\UI`iaCA{+i04J0IC᪪LhZ WusU 9\cDqu/2 }@ڣU֜ !tKrUjG搫b$_h9PHۊªqRGJ6rMfT#Ũ +!DXn.oS:$jM1߉^X@qbª+C +U^cjq!XA3$Z,I.fUAAAt*vIYϜ:oJ3 Rey`^`o0/RnWul>`< k_y)QJ_D|V9MU­7B/+{z޲J5UoϲU4:J~U\ "u` @V5AYE`<- SIHmY!+d +hw!`U +86y>}PVEUg1VThvH <㯪\!USVL`Jն_ޛT *P|U}{Us-=Jž,z{tOa(kWCaUcFsb>umY Kӫj>E_Wmf .QO*R%ynCWuaZ]zU +_jFr U̓nS7m2G C1B=.eRp'{1jn7gS +$%e#4DCjo=X􇮊rUj UE쬿tUd' ҒˬsFU BBinGg`AY^U,P%!U37j"WxUEf)1#/ң/UQ un.2mywC_ۥC^UsC4^UZx1A7CszU0L^Np^UkW:\]U xR&S>6Gj'd7:L$Uueu)P>L^Z2(O0sڗU-ؐ8rۅ>kIS"{g/TRU_W5,gi|UDU/*xB'0z|6=c UiAXnMnCӫ""F +۫IUD/D(M~@Y>_]2BFU9{@UM.Ҍ?_OYn.F(F,Mt)*!hyyqWEc̰UA|/B~ثB1U1;Q/Ml īh{/Bӂ܈Gjd׿^թTH\%+<!= zU"?kh^UUF=]j{UZPHOJ}R׫ +6{U & HQuJRX))na (u*dx9l_׀Nj%pxwdJ.j R[zUECoQ`NKUz㫢V\ժ^{eb/y< '&qo,nU!g \U^2PBL*ug%D'*hFb0JTZU8O/ܛY"ROk2J㢍dUqnpPZ4;jHv1dzZU\hU'd`(UQ>7ko k(nGf,٢{{qjoNXmU;Ez5dq#_{رɆWE^/K2y sJ$M(#9N" x c^]uI0M56c)1"U"!,@Bw rQX#CU/V4&?5bꍣTU-`%t [#2 ̥)_Abї`<>H&4vs{wnYVQBjc' +ȿY59{Z͢a0L&SL_.|9qcEd<ݲ̛q@PZ-)n+ê]O)wj\a.K o ֙xcNZ`6(#Yj[-=/Mv= + Ht\B< =xؼPhNCJn^iqfyNf]L:`W. w=؟NlׅI볏;;#FԹ+Bz/"9"!b'8f頬(w,BK{u4(?;p,1K|p}-Mdo]+l GOJ=2MhZ 0PKM*.zFQ|U)o@jsӅ_@v`67TQzW!{4W?5K([+ BHz+ .ӾVu8pV5 hHwckдW +"ys1j|‡Tyۏb͂MEtwL^,`2wG3R'<`CzŨ Q6 G#.}^LeF]GOhyX + =)V|\;q24ͱl\Hl`OjVyENd>aS悹hrdPg7#]ؿ:!4..C^ׁW[042|{^!?o(s3/~8 ֣q.i2>tX7TZ=5U@PŢ>b֛_sc 7c5 `Vz@GB,F?=8)$*uP 0ݠŮzeX2PFe(ggzk!+:`z>48YdgٖZ{>gV^.D%訐40Mx.=*L^8}Z)M?9֨.1촖ciZ=$C-.`ط/pU w RQ;_E 'dem跆 +e$fpf"LHڠ2O6_n 0IAq>qe!Q%(V )B']%<*lMHLTU"j/CJaάF`la }zŠAMYzXx՜%[ i9-a%7.ȼxoQVҏ<2ueL;_GIbd6OrĺjC!|i>͇O/Cs:tጸnH Q{EN3_Ț6G72/[$\OكpsVLH%hY"cԡZLO$iߞ3y.n;w1lgBget8uAAXLc@n a2 V1p < AZ +PnB_,Ì* 3Kb \nķ6שQ`2qZ [-,aJɕ4U-h[Z&DXJY b (Pʡ{J&F{4s@4Oks zd- *px Bs,K;H]aLQ[\L zˢSۺ{v1x 7Fbْ_=3QI*TNF#)딡 + x׬jW✵޵>!2{U52+`_TqKa"EYGS c.<4Ɉ1CG+7P/cf2_H>'Ҭ96ǡ Rrad0,xu>JB4u %%luNK:Báa}C85R5TmWMpP(?Zn i"x!c޵M[}cLH!i?h`3T)CŮD2O9HJXf*eu,3iٴ 4͞l(4[J[H70<ٳ+iD< :擭IΎ?MKOX +^PGmݶ|ƩX]d2RIF2]|DP}SKx )b :}:gdOBF̂HRsm0 fBI^U7|'Sװ&f"8f'RN&Tu6 Dfx R+!2"ٍ)lkrBX {u`."&RbAb 1|^07[M0 @K,Xb +JLb +:7o%0Bbf*8F-ĸ!fppl[iw)7Ť5ʊ¢ɹE((GteDA A*w Ԝ0UA$}&0pQ +BC!ܬ2!>TPS(4FU&+&d8EHnD SVWv5jfC AU{$0LPkE]6RФ4Bb68ҠA6QHy>0fS~nquPFI Msf|S 2>wNrcFB?R*5BY) zG+DGV,r<]<8aYbyP?nqaN +Z/Ґ[/u"p'Eل]&i籙b"!d,,()e6 =xua7?D<~P%O,f!'+uT /eFy9@S R3yCCNiZ;H]w'»TDO\rN|UQt!ZlPXv3(%PfQE4B,>0B!bA"Hq!X yx19 +>3d  +2 ض!éZ$B5}4}]L+AXɰCewx:D8/JUt?W +MW ygfP3<Oꉉ5d>03<|吸1?w"s?[Dk-Lx_ +OK+x+,ZCelXᔄןօ·)!ps#\I'*ړVn |꺚;r!6{!bd{{Qcp``0| _&f  +B`#qV+XABfd jB턨̄?7&ϔ.y*Y. jjdln$eo;EZ!hҤYP}]!i(]ˏ}V%ZO`J0ziɣ.z0r)'tNvRXS.;JZ3yM+]P-g} +tos/¥Ru(hd{,..r('+]8鬗>UkWƳX.OZh%E'Aq{; +O &ӕ.«p)``hɿϐɮJ^Xv + y4OE +bc tX0Ǩ#p:\f-䋱JnaY}U[uƠxV-t*ͭ4QSRQޖ=z>EV_*gUDЋV}r8KevXr|+Pl-i)ȑwD22.uTG;4G#"t.HIz璵.]ĽHKI](@rD𥋨YmIbG?^c҅o}@q4^!FfՑ.~_`^|9zOR7 ſ,eźpazRUYؒ0Hc XB+; +&⪟tCS8,0ES.ؼ,Wq=\ߑ)\(F%MlO@:lȣ߁>px&$Wtqw aH |1]Lo .r9Ϊ#{tQl@etq1)kn(TE>4a0_XzD#~ L^):Q|sйtQ1("+*HR&MMQ-5F'XKFP6wvO.|`]6H{tjn)bRĕ.<ټtGާ oɈc"8?ղ `i:5JW$q%=)cV + Ȕ~c좓0t} oOʥ;Nw!H^|mk]lȝ*ap?VD' {[u a)}8 @ sy0$yutk Kudztqpk'RBa@'}hGy'D{M:GhlutO`8ĩt.u4tt%{]OZҩG{>} U vk C +L]H&T#hP?##j87]Щ` +t/!->/-o Y3_ǃOTj J +7?qh$,).@= OlϺ紓6Kܦ Iu1"] ?bT }Hq܈I8aƹc]:.J9>.&v`J$s kGbn)]!)[ob{<&3.`5%JMRO-.z.~!8Mu(O'.Jѻ t2-i^S6b.5,2>,&(p9׼&P2%%݄W0z*] ȘnB&h7Adhj\tAKA?嵅K^tt"xw/]_·?hSb{[>'Lj-nC{H_j< A`UZta.p~{"{7^;I$.&`jgg]lK f ~nB>Cbݴ1o._ȴ, +E6 a?{@l5K|7A]v\aw¤{?{] TVQwbor햿`H} DߺS&]$y9So2a@՛)U Cs/mdOvL8^rmXi݄b+ 0- %mGי&M$]hBq7RV*lqsMtQLXi|J .ڡP{H`]6EUʤP! fA4W +Mb\U3 UON%]t:҅+&,4 q.pMA3.#60]d -p }'.2"A)ajX<%Gv%EtkA4Ͽ!oQ V&'a%CO4;K]UWMH( lٷsBc #Ӆ:rg +@k_V.1*#6AgѬ|fbϞ/hThAv_6AAƄ8-*Fca.טKڬt1L-V)ūCN#&b  >\HM +Zt*P3/.=҅ks0H{'']$pOr-V1lBZ4p&> r?%/6 i:3i6!xTPE@ &r8棚Ed~sF3lct1u?.PN\QZJ2c2:1lB`)/ ڒ$lD sNaPp;0sM@8ʒ~DaD qMKM&P˓\`~V0rsJi: ?8J7 lPBt!j RQ̓.X&`(1ZO< },jQE]RWpչB];a4A4M0rUIcGH4h6L<`BW7/0hV/љA#4bV.!X5GR!RۤH +X/"|J'_k$-R'hTM9c$h%wxY~EP s",$H,.R^ +3p>}fE NeBJtϝsBXI|4-7'#.DK{/{ SuY&'3>he]iwUd81fjRaݣ{FRĬm-#(,Hy`KELoa$:˄0ȯvTWe)xY,R;gBY&d_tq8n) dyzߘ BS:g$]@#Yt|&!H9}|%t4ɵܓmDFP4)F\X"d+w.82<SH.xvںo;]Grݼ Cp a̩ڣp%DB~Kg. %U(ќ2GbQr szbҕ&|A٣ Q rV*]X&Rv/_6/f_vIJ.&eOKӬ|Bj]'b"bbBg.WUa8Y'UbC.87MEϛ:%/p_y Ƀ("fm,٤4)|d.U`{_HPDX]HW9Kw$ (aM!]?s@$B@"!lafXA> 3X|n ] {V\Aʬ \-(sebx1Z(c;tu:*(bE.atl^A㲢 ZrQ^0"&ûJ "7 xApbsrMR݆.o VEA535t!SaICgC/qu,1.'1݆G.,]&~y'.jSn໽> e%਱8K|A ]IiKxU4+WH+qq^i_u V袇>k\p%FCE(_,3zc!kįpmF 6V9UB`7/f'J +6 +] WQKVX3@>+ J2'Gs&5tq꒙";hkA)Ѝt;J95A[1,Ak#H9_!ܢuy tAML_RD!2oZv7mkUlh^'"8*D8h(`UNGC +] y?Du~ V!>єhG885nns׏aW袸2v5ϙ\([ ] CLO{$Ar;Հ. ٤B[_R;{§aS.tQ$c-t}aS9rOv*ta 4f1Qnu^=̻ kl*2t*݊< Й `ܠ$ +Vh:.ZoظCApj7Ïx\"-Y'2r6<`*B9_Bd/.#eO*K fO24Zv3A:8弴uF" =.<`].ʁOGH㔸h펡:PG]$3ecߪoֳAF C(Ajt%(?(,j7*ktb?Y]S +yݰ܈E"&(Qy7::1'y.7t?͵}qj:WeUpYԸM>ͦ]?B%oҨp zm+4d /`Fodڊe=xNDMz3M< ~CwbZQ ˵~zdl8# }vtjؖy)ێ.x6\RvGc2*M +"I +B[IW G@pcՖ{Gx?,.QbHZ^"\j{ټ. gJtj:>_Ƽ U8 øߞ1iY}_8Ŏ6,yf}@2rFN\Fb.tDHJČPپRH&o0Qg23 wS|&]r3A;x?Ug hYEpAJC +mnȼ|2i9tAl2}|+cjVcY9v}5\]Amk@|?svtAMr!jݣoAW$# z3(R>ֽߥ +v ;V`wX K4iAF@z2>ߏI] хreI񳜫`tgT3f.^JFgY}' N:G0WLo  V2KJ4X?B/s!O M#EsA a#a &toWUXbJb,.#.1}Y>rI.j 0Xv5/E9v T-.-6-ѶX kV: EaapآCQ0r⟆eY T2Ԃj3 #V"IxhówA*k -&ZЂg}gC`Xt8Q tڷtKv1Yb) E4dܰc .bq%T9#&EQV0, ,KxWC>߆uC_S + }._aνb+W D +o߮`%uK֕#a@U\1aU7V71߂aw[1mۊsV #b+Jʙ0Zq~C=cR?m ++ܚ̲b0b ,Ilzv}^wROVW]F +8U*bUUpU1(US7ì]X(⻞w +1h*ICeGo|Q~T%?7"R$\֗aO հTcXTWvTLa[wT :*H6ll + s512 +-p6Aepr[a4 b!"GPbĞ({(֑)^U1bv9g12.9KbRؒ8*Θy"Lc|I76apvVItLWˀgƾcm,ƥ0gS2(_`@`X3ar}}%2G 'l6T6,FŪ=Q1PL1CQ1{-#6Ѭexղxjw\V {iΗ5䷙@oP( 7OT2ӴpR{ؗYYdc!7G'4#Ą +0mj%T@sJa|BŊf ]qfhr63Jg׶& +,Pq~g}ng@Ј 8|1+DFhPj4B&f? ^4P l} Wb2klVF`+Pp>>Yg*P'T0@TWh(R~ ,T s:La^$ !qm "w$2P]bB= >OڬACSzz<:șUS)V51SLThcEa +B +[1s)Dj)a),R\]tr0hxJaQhF) a'E\֊EF +9D(CJR@ RX,HGav uH@AQD!jE Aqg‡f164 +tCO MD̦;xU2>{bТeКz*'"wVY7xO;rf 2`'OT9bhG'ag,'4'uGb 6sh7 HD1+ZBN\ކTr8q NkMQo|vqoX)mb:&"&M51i5Y&vI9DM VE͎6&j <&&ݶ,6hЄ Vu}Ml= CKMC9HB%,A.Q#PnIC8_VJ,!/-,iX%@ b6 !x4SZؔAGX*IgPc6Jj]Dè %:h=vZǥ9NlMN6T#Itj1Du`Z-ܒ8ԕZW3Gӫq$8 & X$b'N& 2]vn$xe e$\$IDEj3C1ˆf_[@D6"j-"NVG"B!RBM+'8D8! gȶ{d}W-rtW9 +n8lOClzU`3إ׋!X&!p "ei+n]G !ݶ֊BBWՅ=8O0{Zރ|qYz׋܏m1/ A1.3EB`qx;{{ɐy!삍;sg\dgB匋8^ӌX]b\dն.DBqM^!Z^U!ŸPN+F !DB BTD +իgăǍBMĸk%MSHC +Qߌs(k:^ (.>kN}(A>Ӥ>VN!SI֑{ICe^ $=gs||AaOs]2NE] +#2H^EMB3Q8@0&TR_S<4<5C40ÚVIz/=,~H!Ax_߁s3JI}KtcIÐv8\v`Z]nP0R^G2byvW뀿u({guSpW/B_0MLJ˯SH:W^,9~կK9:bC,cd0A{ˁ®u0^hK989,;%cO`.p.>HBȍҤ4qx^7"zpPpn ="U ÂsXi ݳ0 3۹x ⁑g>5PJen*t3 #U<Zϊ,z=h^x9xxxFa<* p +uEê5Z$wu񚄆C:yxhy {y} *ӧ 4! =3^}K-9h\ ՗ LĈXUkC(M>C :y ?gK텪KBؗZC3 d j9BmecJZQv ,υ>5\6Y$tvɸA\|paoނ?!ygrNy 1$0sl) +|+.U-48.L PX ƥgao5]YH +yJ,c~Zc~bAňL% _X`+^3uW@C]aQu/WǠ%fnBl + ?3r0~'j /\*gW~HbHBo7֝3$ > r .7e:B/SWSp#,=koY]#L{g-bpګW0E@\[-/.G~"iϽo? ]Zo~b e@$we|Eȶs (x" cdL`J0'?oYEL~H@vJ~e3"O f0ߔE`6Mt(6ط"-4OgTfrtEhYy"`-E"DA>J3>" `Ane}78a3tCCN3b/*ZUAQ2! !ppA>kWS~͂PDU gyvyJ,"o)w"$g@1 3~0g}2"?3?l>X}3??85 >y{tlf旌=x zC҃=4 ~y0bg :Nd~ 4 ne~o`$5s`˻.w2?vsӗQv[B\/`~t@g(F[9 Ks/W/vr099q`Le 4A8XPLဲphpЙ~Wj sOo8'칁:G Wm~@7h@k{w72t3U[itA3?KnUY"B k~ct6?nBtGǸ8tn~B7Jݞ\5qW$u+WDlկADYj~6>Gop. Jr4N4`= o!43U`왁Vi~+gP?"24P3Ȳ۲7gp\ Pu=K|~Gb ?G<2R8LQ3n#g0,%7Db,Y2 9p3j4ӏsQ; p3ke (Řd,vLga.;3v+g! TBk;.qQWC3~S~44҅ В: ~M30Ojmu50U5jS $hT~ȵͽT46/iS3XZ5Bc5Ԡ_v92`L2 (կytt.#63-_w ,y fs X?̬`,I*'&_ /PifYyg2hXLjDAh2%0cDd 瀵cPqWm scӬw `_ey;@/h1SO` + z\K<҃+$20֯ 2 pYz)e&b^ L8X FQ(~fsx^\|7Pnrp_ dD?,U|@L.8&h&%o.dܱ_=%QhI.= +U=$_#DHVMÝn?G~hKP|>"vx.~,^T{dP(0X\~jهCp5r1XV0!d5,@p~)``T+-tRZIr$  <`[xwqP@N>>J!~+g4 Y.`dC ~6~\؀[$wx8mi-p@67 g}(2$@$x/bÉ +[ ``uY_]`g] [ˬt'n~l7':ŵ1q"h3hu -P,Pz& Y^z,p6_# O~P]Տ +\l,0_GX&5b Zd% ,XC1W\ <+58.бc ܌\,@~)L/`&TcTێX%,+0(SZK;+G3{d?ѓ+`2 C} ,<O@ K%akWoMש/µυ.d.OZ.燇Fʗ)@rhlR9 +Hj8cP(vk e,Q֜Q2*M(0oA&aA!#ːv&+|K@ך{N`lK!N" M*u5,:3.-\@,n_%䢋SxzMC1R'Ƕ;=gt kX i0J@( $G %3Vi2Sx:۶'1xLԔ kMFC@;!3 QQmqறv`6[Gs'_/ЧH +i-YX"-BH2ԗC op}p;٧VZ  WW"3)C yϾ + +fZK@[.x`?%)~@,T'W~ :>u ѹ i> i8V`k"x/R&6B3x&+fI%=-4*M3'u [vAgL ɟp2w17tH};RL_SP(!{|Nt#`Lo@L𗦩vB!6IάXSҗBv$,6sEb1|2n;ҴㆼE;#,R}@[]E| +nGz PEe}$!*LR\;U +^C3&kpTQ6w5R괦DAqm.< ?/}P^{4ݰ@WH ̵PF(|% T3Z6ZlPB4u/U߫stF=8S9$`* ,d O$j/c63."m*^TQH[ߛV? Ҹ M e2A,`Wo!FrxP:}aoC5^HrZUKxBp(IFv ˆE!$\7VnLQ; dI=GBuPG&`rh\"Vp B>DGO"],oTWQ%ì#aڝ ҂:qޏ{GM^I084(ƛ_+ϓ{^耣0:(y<4s{"<4Q`:+͎&A_KPWca0R]ivDS 8^#2 蹨FhpےCI_ /ov7(D,o.K,@Yi#vp!z-4F*;\-MFZ'(tk4R4K! NIctE2n;T6$dMpQ޴8 G wOBK4<4МД̏[Ct|<+<hZPym?r<i?g8e{OnGd̶U6PaH`L既Q3.jFUjWeM|OA=rjƲjq>1*z1U3eaDŽ|v,nKTBN>yw@cA@Y=gW,6 @<h@*X^Ҵ y(6:$ҫ&mprt>H~ɞ{]bl4zNʪ.Fw*A$)A+S0 wG?ԥv8jLN@pM*DŽ8>j|eJR$K mpCh|y;UGb^1YXl(FU>4-H"-8,e4[jsj:هH`luUH\G$G84c6BʤnftٍY̧hu*+1 zW3:W1$81rX8gͿL{*˖DJ_ StoCg~gXMi_1E"Z=ؓݸɩ}5H9cCNg4IiFMOw^+R+~7ݔ杅4fcrwdw3菴n{?UY0鲒UŚZDw1s*)'fedIj&SM$P.JYw׻] 7Lj|kŻ_rFwfmδR^dOe1dg.nv3'E +e628]dT"O!q"ԑ u7 2).gȉM!#Cx2^oZ4OW 6#G"K~̰(T}U0v˭VM"՘4cv.|$wiᄐ;,w`?mjM, +벑u'.*nqSmGAs&K,zMEFfK1g^n|riM}7 +*E%j +VaNg#\(L&+ +ш] ox,T§UeȔUD8 2AʁbhV=-!TXĸZ t (&"^$bTɌI!s`XnxX3N3n*\V.PLC#u¡UmR0R&)y + ŪTBK'̂.,Ո'&aAV0¤4ahʝ@ |Tr/"PTK""sOËR#|Ā +H*jVb j3" a +E(JTD%P`SN|@(`&,JUp0Q a ,h,(&0``5 +A@@ <чHIhHk4r HYGQXb?##f[!ҜI'}Qf M $aad!$="%CEPPB5HT|-m 'y쟇sKHqeTa0˨!b*DHTL@jQ4 MW Du +ɊAGM >3#8S1 i,4U4RB + @ @k&Ő&vRC=^mC Vlp +&VQh&ܞp((PRLU^eIxlC$RFbKM> }{?|.ȔLއa^ha?3Ȭ`ly2P@A}5<ŠTp(V߅),Q`c}1Ԛ?S$<#a$LMM (: +PH +( 8z[2|:`I Փz]HNabRW3PQc᧷vfɿwnlC3<y"'祬T[c*|Vܭ]-ƠSIixFOAu߁Bf=.ҟ"FG0pWE7>stream +&j @b=_%YޯrAh%ɓc}QfKH_#I%A&[j@jufуtP,ECM)y^HYĵ x_9(*R$ lmf +[5ʡ) ^WkȽϚvMf$խ1!],EYOXx`{XحNe #{B ϚIuUEa =7~jZM\. J; {Dܞ#@yKOT`dzޡ#j|ع<5Ǡc~-!'w%@hi6PLiԲy:]B"3.]QC<]Ò?_ ?-GM3 A(,m xئ6 䋶W(a#5HX?9E΋6rj}io\"GH# MT>IiA, 8MĉY]M{ H {_JR'BBvQH;Wݴ#uV#|kf uٹ_ clxXw%݁긄[N;412}o>`]JǛ d!*YR/)TsEaDP߁! +E@}s IuhAdjl! }%_6(*`YH( +ƄD2z.::3s`C +mx[ 56K#i18ˡ-}Nb65kйqx[UEQP41@qm!S(Q&Kh']d2f_x2;(knGYuCENB +J@؁ƕ(K%kFqk0SB*|s8ڋ.J[qC?F)Xp h:5{ߗ}\`n0zNcVG~$x$AyܣEj+ġӟpU x~ΟIzη, ]2bA9T'2r*q0\"&R%3"xd  +)?F 9ez( QPbE72,$C2I15FIYM4{WDJH^*_i.nSe*=vTF@sf^K8H,KENX>S{4|;IۺXsM,0Ǿ$"r'"Mn-l*m?Z~@ŸBu@XQ v1.;*W٣?xK A4JJ2yetKR`:!ܾ@N. TrjdViz@,F8VxhQEYlp*k.TnFt]nn&a!aE-l9P~Nn+cu@i:IwP*@|=bK+>r̷]b_R{*7l:9Iz@jGs =k7 %,Y5\9@pj +vO-ggw &q+DmeIQ  u~cO\C +4[> OZCϒm1JWOc\T2l +>?&i\;A?~*PDʉp.3z .8B(?)G{5&zYڐbN`(CЂT ,H_ϧ &(q" n sҷ3_Ҽ +)/xEU. aqlZr-Hg0VV0U\ q^eE E|[ls%>i 4JNrѪ +0= Tfuhq̊WY9}0B'o `@1I$Y@j\)*b蠄I% ?1x5{_D0{H癁\'/@ρV=i} 2"'og30I 4}ow0qgQ[8TvzV?J~hzVpWoօ Zg]lK`D.68IFT×(ԁ-Xw5GaQכWr ᾏ]RQr,9~ItnoCpcNJu3}fGIMXdnk;eNE_}K>C.,FK؅$3 A#_[$}g 84OW(Jx&{l^}[&ިSk*? +J4hK{7H;g=E:rq +qn+k%?YF^1a;UOK= +e|R*C&\);j_Q>. /]sG܅45}4M;ը(s1u_E6NՑ&i\ ?=ϰq R(  eR |wHQů!׷4.U1w?x[nZuwAͮQg$B;RZ`-rA Y?W _zG[Лf A+= ̛l0a!.◌A͘ bG] 9j ڿDAZܑ#i- +ʘrcLശ̓@<3>4,݂P鐑nKfOÄ?eϋ $P.pFI ({(E1 +G?u?=R8v<@X'!.K$f._ay| R0lqa+; ٺ(ujߎ +b +oC9N@;7}5}+5{س&N\ +yl~ٺa~" }XSԟ,lV3aWK i&uatbU[˂0V >?aV|"+PS~~y +C}XnQ!1axCĚI-A{p.*Lh |2p= Ě5B,cD " 8NKd La0EܰP( _9@ +P;1$aoN ()a|}}zpa5 +Z[E0b{e3 +c @ V\bhc10 s +1|#-rK4˜( \1cup-1fK3VZX c%Ca:T s`XS]ƱE9vlcMcG53? ϱS #*d]r!kR ڱcXd{@62 0F,E)1Yj睬 @Yj);RYRl Ep\0DXԛ,XK˚ᖩ]Iu9.be =PiYhyYf0f2"`dxĿ@c^dXmFY*E™s83]˙Bg:5;sr.1r`= `=>S73'hff]s=h8] m97.\9F&a`y44g]-J.ZȋB(ybfAsUyX~>Y,hRRW(k$D]4N*h<H9[nv=Zb`Ai.M: z$vў$˅],QD40W;bv5C Ckhv!*.eyS4*`..bIsEfZh%PDo"Yge DK$؅gCchP:6b%#Q_GF'ȍ0hNl>BH -ttA\ 0I>/Z+EhcAW)+ڃO hj051"vh--vJIc -FmGhG;RH[]\ȑtI.$KZcb&!]\aHb774iG&-$M!ՏFS-Ir0qn" EUL#q .< .$v퐉Լk4?v5HB{71.>ڤ8vh h*.D27vqbFѢDq#hX͊]PvE{p9B ҐV"`s.6.,e4SY4x^yhZtJ-YMmtdEc1B-E> #4- E8EvƝ haѴ@ 9 vA bK6 )Z}]00Q&E{]ۢE%]4"ׅ٢ϐpL[P_e4˚Ѭ':7dF x&_s(J b:iklؕ6VҜ44ܥL>M;]q`rZޒ~%[Pq4`zZ 5S7RN,ES5j{`ojr%2b-Z5kGkj;*m톼5Ϸjkʹ;ǵ7sŮI  ^s]$]׀` ۇ@lKI|MQ]4/lgݰc8 X]$"d3]s軺\ou!fbyuAo^"jN\]U +6E;T(ՅxݘXzk̎ ]<DvNWp[hKBlp'+qgՒ;΂u}wW0Y1xօVql;=IZ..uR| xx"ptj9ނ޺` ?c#o]w <ޤ$D.N`EgYi[0bh['yr&0*OSN3>y3(#3s~w +!S +蕆b<+ +.#)Eu@G/ +x1b@E%uAg[o^T2:jƭ٫m]Zn :{m]15JoI(W*Ol d~E ~(ȣ ] Z8~#4ЀF|ia$&#6H^# oc_CG86k .28M|~r`3\(Iɣ:Gc']t=<اE5?t0&@z~;wA,-K U^ݡSI +']̕aXFx)A do\k=b_x~_Ͱ.06O"ZL{ +:%Z)X]JE6LӅ,b8>@ᇩ^I~#fe@me[h; +$='Ȕ~sR >Y ~:5.KJeӊ/?)i㊈ ~r: +~2C.6Z"f)b7b5NŁ.f죴~$HP4)__"Sfۿ,yˠBR_݂ex +*/Ztuz4"Ft.uʁ1A]T^. w89Ӆ]j0?"⊵ ZB@j~$EC$CEtqDI +6]hOm3]?ܚJ1!%Xiv) J.z?Etb?r'kVh 8]/M]ϒV~d4Ś'~X$0! NɭRM% F ?E"B bIb[08]lEwЎ"_k#g.ܧ=].BLƯ#NY0~LM(N#nƯ.,a ?O1VCz?:]uaKn5PHt͑mPdwPyX# C.N^M9.қ. 53 ..E_t@tkNJk.-tL`8],_gcgG~2MH~ }_9#$( V%ρ../B7  {Pt(Kۗ."(\1-`3CWbUi(]#8jN~WW(?ƦĄjbZ){ .k[PkJ#*rWN[8 pR~KRbPXʥ U-zMLŗ.ĂEWj}h/-HG _eHBEpga&B3? Q2]Bx.B+M2W_j|Q`Rtk:bgHIʁ@ iPű~he(|thZw ]G%# 磋V"2!EF$awP7lN֏aIàIf#ICczJgHJO$5]@kt!肱)D&(\49 +`?a8>CDt$4BB(_D_tI~Ab]d/tl,mJ[?E @dŀL}kӌ +]Ѕ]?,]ouP5E1< ]&I6IM q^?]_EJt8E !bXP.nit!ѡ1Z- t!x@~f.|)~Z9H,4`%1 룋w!]E`60} x߯хl!:j_~֫ *G08HC?hQ/cqi?F#c"Y)F(?GJ9PNntbG0ia.q]8!^ ˂@? bř.p9_ΊH!gY1~_9qQV?:Y0r3UO g2jw;@7# !utpjMi̱O`nM#sh5'.z7P~pu ?]p}γa]Hߓj(AΊ ]@ K +cb[V<肐tWޟ vbFoӘE8x:qU"%v хo9+K!#36.vEE_B~•M]@ *ept#5`1p7} eQdDdar`A$ OlJUpnG34X.?G}"s:IbAd~0f/F6b3r.܅FѲ7gO[ANntA4OJ\0)H:~ 8A``m^.- +T. 3|pk/q ;\`&dd }uuZGo#Mw^`{ .>[mmrt!Z.D +\"Re]@?{z-;c;\' H0AIة .J߾G?\[WPcP&ĄIwwh6*0i]ta-4CIlHt1 ?mS*t1Hb_8|ԉ:[#`| 3/6VY+UIk=҅U [Y,gt5*F*邶tLoOeg>Rt(- ϭXbhb О%' 6LH˚K %|&Ϥk?'AvAtWr?O)@\.wN*(冓ylgnȚ7K8GU pzP^DÚt1Jzh!,b3"Ǧ IlCS;Ds&]DdL;[^C-$I@s2 eD3%ӄsaEM9&bp&o Zn FڝMf15@a99**|iiuQ!-]D==!IO&>B~ŧ`p9['AfF,F$r 5o&Fg^4]65]4VU֪jhًX!S-DghI zLjUP./Y 57tREU)Ti_Ĉձ;%0]|DC(1]@& ̲0]lWB.bp\V.v}!4M6 }G߮w1Y5T1TR/, WkAIkrrn9`F2M6[t!dya&@\[5g 2;AhIu]qxt1lvGf?E$~H@9X>c/-!4]{Ar4]rt_H4]PT#1Y6 ( 4tq=cڰOo_ +li+RCp dtzyM&L]iᦋ^:OÂb^P.#kQܮ)tpK@*rt救m )g$[RʀMlJɲv׋S]otѮO[gPinUC*0'Q߾ 覕,+.N&4f+ KhS 3Z娅h~EU&Uo_@&X0 mpNDyc^~}S hGM3ŵ7$cj OHaap7^M+(zVwrL3&wt(], MoT \ӅAZ9\;WeBVBJHԝ.>Dvp^.!$( :t#)x&{)ak_HtJ. Nbx{=2Y0V0z@NQ]` tsy]_'rtq ?k}Aa+JE9}`66(o.4Yku)K2 +߾`+APRn04 yHN_+Zժ"-_/¹ U +]/T-qҡLO8C`at預}%Oy$8.OIU4 0"w(wP PrI>̰;6:~ K}gztAX, 8%鄷)5zۢKh0X8 mrGX/ SC㎂:5:]"qewVf.X1!=.R۔/plKXNPšws' |].y SO:*R=]n*rn%^+-KAъx$mSk7%_Ctͯ顾 X W)mNxP#ШE^" 1ݮ +ԈS/4YR}{I,/#M,1|D_ӅP]:5NA.@99rU@H_r؝\ ƱbH.@Y6MP.#n3Uʆ4[BE8O邖aզ|r*=]~ pbAAB +s C• ʧNg I//+mE_(_PtAN`6{Ht |@#Jϔ T-@|uugr &\ mvK;]Nҟu:f@'tS"v8㺟:v8vz< + +N9Ebb/X !Hlw;](_z#)rR͝ +s)0Z.P݊B)𦋛UTe鬺"6]ɬV.rY?`.߿pQLp0( t8}=R&_/ޓr]J|![h@BOR\.{)\/K[\6LߪP!LĴ_/d@PXV80¾~3%tDfء%R9Qj!`_`͌>5'_gKSQ9? {Ӆ꜏88s%5]+!f$tQ,P!|Pb[bg.ZXR3"^3LQb;c W$,%04Du)UܟőLq +#z2=MfO + t#_R8Ai Zt@r0XER>5yG鵭yw~<ϩ&vDrЩ.xZ-e +3o\omva*9Y#;41) +1l28nT'a[x,`*[rE?h7]E/ ˼`m~5httpmxVFVYlէ7]/ئ!+Şa"haJb b%QT+Fd] q-o]/9 ţ*Uv :ZPyE .ٸW!6]gHGXÿb$̦IȒ3&@lpqZao.T /ǍW 0ǮDm1S]݀Am0EQDqR=M ukTْ9/ f6M, NFdNƜ)3Ӵd3yv0Xha:đ50x` k[_NyRC(PB8]X~+'f[-I.X7#02* 9"%{?PDt3܂V ⦋Ps2+t1aASb 1&tʏQg 5UUyy"=WNo|)ao s^/VRR_t1E4S"TIA.sVnX@IsľB~fBero:c򸈟pYGuW+JGx:p\?S?FxTބ6lx/T1ߊkxaZׯ^,*F7s^`$7D `! 2 +3qWt D ;5c4 V$SJE=oooz5 TeZt ~=n/¦& s>$jPLP.PfoaONpam9b=JtVnMbL9]k! A󊛡|}].̵#JmN љPc9]tvY˴}[C>%|nyؗ)5o3t{Y>¥A˜E+(_ah:D9͎ x5EOӜ.\;"}&QNqH t3|_t1=֛J@iVؓӅhKS~Sl]<bv[pXz&OCQ޴stTmM|[>+PB2ݓ +Ŧy+G%h+#+ġI2›.؏R'σ}:gP[YE; ֞E~wpN+5.臼8|ݥ2 UC^ +ʄXAy^>\I%$.lpHZ#'*nڿ#Y98\Рv@ISzj/JXN_PӅJanPg+1]Y<68]0_ЛD⨈<`n(9dŨVuw)!aŔ-qYP/*m +,<^cF*y9[+l +fu%۳?$\U:[x &.x)Y -'+BsL= *?wkٹs}"CjX<.][yP.S\8ЂqǼtdaapծګxtQ|\Q#}/] ǝ؃ƪjĘ..z +9V@L^ _ + -KQL^c'BJ{K"*` \jCIЩ7x祋ipOB㥋0|S˥ @O+'ic?DI~ *c +L j9)V_CZ+]7@U+rb-;_fU+To@GiZ+ VԭZ9j&ooű{0ɋIҳ8cZi~idJ$4W).~NbO۰.|n<7Q <<:~t'IwҝtC-b"K؏(3y98%^˸D*P^# ] +F +8)Ujyy4bx X)/1TFLĎ:f`bh Dt 8 +J3``bC%͊*Xv9y}\7!t "*1Ռj峳x8ҋ'%eD< ƿ_|G +IlN[:8`R&jy iAŐAaB3US,"$IPtK/XVL"];n/Kң6JZ-!JTDCU|%EE˄IZ{AdEDÊ>T&WAV7 u0+DРb+TZL,%h +!ю +F +J,eM*J{-}fa&Nau,a[zO|g9)_eoK +o#DuryT<>~]5-El(=+^WIvIʚݓ>=wr2]aN{l$oow?nX-<*>JjMռŏ?z . +ަcb[iqu5z}4 g^:˦GevHwAKKjN {O e,Kj:J wNĿ.F-o9 i٣dH5IVs9`G{u<;m%HbPzܵU˱( nOl>5N=\=fIZёjTSu_`i})'{e)~0;CfIBT^=J(nvD S-)ݟc#tt,EE稓 ^_HU%%]Yt e"]EhWN'=]YO)(WSنQRS0M_6X`*~cB (uC1MӚVE˧ +vU/{jUzRK18nRR=Ch9JM Cp6NpC0.~]]Q=?{6s=ߧfӌN8p$a surٟw zi8uY{ycu! +i2ty9/>52t 7-Ao$󯓷Av@Rn\ubiɾ 'L;9bw R|:7  +3i7Tux\C3mD٬۶fqƵv]qe'@@̌󧪻uNGPNħÉa,t䮛92MֲԌC(8 47flFG/GVZ-25w^u&<1 =A=e9XP#xy!iIw[7' mv9:&L`W~͝v[n1(uv[Vw z$v5ueEME[GZ-E0/0$;J#/^wqҌ#09 w!r8]wm+Sn6fƉ9.A`fQ3祝e(" s[qnնVh" +t`9n88t9Z6MAOr^qnGk9YxD r8݉ƁIJf}# +VC)74,cպ ͕5Bg:*DZ6aiʦ=mq=$fYi޶?Kg:BUdo{,lE{JnXi;(X.O{$_sg>1DZee,#%$=$b)'洑w:5gj< o{,$1%XytDZ':bk/~-xeoiUReEE:MMyt :/8Pz.1; /tt9 6նsfW䎫?Op&?|7 ִi,vXM[;H6ٰVcƭ D"DqTHRMaQ,QP;ެ3syƩ7'NdAA?M{8ֽv2dj וeO{m4n[qiKqM{m(H{٘Yj}בVEVm9tHGpFg/5\'fԣw]AkJ]-*!؏uDhu0\ lŒ nfSr:D6[v6j#`eԃ Lcn;N<kC ,:Vb -pc_r6%mZAy$`D(i7y/?5KJr60Ƚjy餈 e2ةXW 6 nMWu֑=ǿ^W7y9j\ٌ@(Ou2[2xЬsf"'&nP1mnθل(Pe2vf,k[;7֌nYunR;dnGv0d5mB4Iݶz (?u +qt'4mSlD"pO9Y:tfmK;ns;?_tdM=:(״"0R 2]f[{_h=W]d ֲá=rǡZuĮ8ක?NI ǏMUvZP/>$?~'5K< vazIrZmaY0+ƞnm5(I]Byj-NSÕx.:M}(^80}N|Mm}aj8(Nb+yE2lXm8vDΆCq޴)7 7bB4-#9 Dž/D_k83]חf +.8oyeޗO׳^7ej,}r/:S,倴YglZ-VgA1 9w>nԟw]/7fv6vնo:~c5t:'#l םb"1MHs[iQ5ةbהw;nŭ(%MkNpJrsTDjUU RO$]OCmKjeNrժ,ޏ nryd_Gق^" +V7GsD+UK9|EqAáE7UFZUi^gl Hٸ[z8B gk5Mtm{2a9,c;)9si;^m[ ~9[JpI>`L/H:~A'ɂ]TYH2EȩvTeInsz_ey1d+ NN'=Lt4jSTA͈`J4,Ћ?N%ϔPZ0I3J=wy%5uT'o1ь嫭Ea2 Q[B͞y1K2ղ{ O'C5ace&gj> _"_eq囹NN٨Y6n@,s3ͲWj5ͲV\M t>I֠1ɟCg)Qeǝ;N +v:獛 un6ڬjmyNy'u MM+들y,ZFr@Ԍ{gII:Kׇ:-rYikes$?O6- "~"ROUۜ%j|Nj5?J~]@!V+USnkbאIW*ƪ_Zf,JEaҚ^'BMԚ6VE+f]2[rS]ㆊ)ct)Gj~вEdzx4>mSiB$k mk)|a?-{SH5Kxyea2Ip$uQDlŨ:Of I`4QbSO)c#mv8($m3AP (JCXbmA8Y9)9Fj$uUd)=].1[ZfESfx(Nuf?/6Xb-[96뼛6{ݪii#sq:3t|-2I54pajECb$vCش8A; #Un~yZG][7-d"yv{>ibou4M-UA"}ޮ Vۮ*D~ +POb˟A.4rR,7ulm=d{m׃(5eMbDv]k +vQ;nĢ.Mn%K0?C)R"C$] #o6)x ~RIMM* +J;hEI{AkgV$kQlWUTAP`K ?Ñ; dU,F܀e sHJqw-s3٠U ĻDrDy$ +kvȋ#}w_7w[mp o/~!mc:\I*m3ɛV{[IEqcl9Aw]moa;y|A0tL7޸sÑNÏIh` ~}9%f7\YϤ18J)H=r?cnki切_%vun{[v6z9\6~tq +yFS4lN!/-]EAMYc(BKԚ\ɜ zƏO\+.\'E'<)GZE)x~[yݺeSvp"(BEiIIQ"Ȣc$ seZU|9`YQ/1o/A$i41CvDIʝС+J,PSr..Ǖ .8"X*A_vRculjG],l4q˽4"pݶ}t׵Z.Yf!uF%[tR$d1M`K+meR=pPQ9I;ܗNr:l͝g ~vs֡ %5]OG6hѫL}Ql܀O[j\ IڏU)9:V̚ksQWP,I'l,vU&*X#!,S=fx99,Q$'@ȓ z-| #~4cZQ4'E=xB9&ϚNw `xrYɰ)-I7GU ߢn]Y6L{r8h I_{Y`W5yni om-J n't2;J(ur'5a頝y-djO ֟gwqpU0l4mP,9]jZEPŶ+%}! "'T#~coe[ +)3TVn@մsA9\G=kmC,S 6h8jq8:~?{$(5O:h3{^ ~ǥi3bxu24})][8Ai5U.LN<~x:8(b|9$QO,gЋ=:0Nj)5rAo:fУA=]Jh.~RҗcNz$r|7KP2tj (rmX3ժ(6P{B+ڢi<Spgf{M!Gۍ=[N+?d*,UK"GY v:]wf;@9{]mz!lГ=nݲqrv:t(7{^o{iڢjuPL?Q[ZC0?wK?iRE^ s :$i=M陃 ~^r6黎4E|S~vV{5Q-KZU;J; 2Bxr-),Ek%I=?( vyQE<٧]w. g-v-'?kߎ#wm>z?*$:&r=ަbzeͭI~^WŸMVϤ%o!:IUxbOe8]T=!5Y +ޕGMLMC7=׻բ)7e/Ioj-Y樗"zud(bSSb?q %MMh$'=1C7IRPL5Y7ɷH!i&]x[YK!I3.v0H4ٲ"}I1"kw|s~eK;]8C]*55d oiZ}k^uy~gt}i}wd.$9O9M{62MNu^4N$p;E$dMzݾe{zq{mZwq&mkȌv=d85C&qWV dۻ^߻].]뜗Quyz^9^{˾uyue^ܖ-<׻﮼w^<~{[q=u{]u\u{i~souwmk|w׮6.]߮}}k^sM@oesk|\w6N\;.N5r۽.^߼NLhyy^syywk~msyu[meq~yq;Zw^wwm[iy{{yK|:.}|}t_׽m۽\v{ww2Nx=m㶭;_mu}rmm{{圦u{kiiziq{iyY{ڦi\i{{Z{qs{q\~;k\}_=}}o7=O=Ou.< ^^idfٰa(셝',s?o7KL@,"me𣁹vu&.{\TF0^jZej!P>IOm331;UL2'M'}Ҕdb)J .hDm0uw3;$q̈^ݓff4t%¢Ab<&|DӸ)+#q"8r۷P43mpVnK7͑˒4M%<0qƎ%؏,)[LTʌ<*P =' +74GQWMS@Ӻ'oAѡ8JM4fY^/"42)<*D?O$kcrדGe4*yT  +&&>HU?ۣ*u4VTZ5*Zqgu#ͳ'0n3ۦuTE;ZXR+ 4GU01Ĥ_Րo2H\:ݧ'5R| +'&"ޣu >f'7tñ;Ů#:mWr8`dhp>,&P +u`B XЂp`&cu +E˗$y,6auşGma1zݝ$Ӎu2ueWu],X6C~=b ,`vԦ#8"b`' d̄b?d{tSCRnklhQA1O\/ p1d$=Se`P?:<{瓻3E0\9.8msd#`isa1w Uu{2vTͳd-P8Ţq(zp+Z@z_\UA0\};ydy@`d7h/xP1Bry/NH\2$(bqEDx!?(]m0d7p>馩۶r\u 0Au%K~ŊăHEc,㨏}8)񹟢 +2JNޟM~ i``bi HN׉5 J1 _Dێ?)_w~&mqXP hHY5L籽F'ˑ_Sm;p܍{9( 9tM=d\nhwWIrӶ?&&c9Άlc1 LsN1n7I!(B [)hT1ߤm6(*}HypziY,]zCG|^ŕETƵ!2%eBy*)_J!s=(8"e$=p_ZwY෧Ͼr($Kܿ> Wp +AzAXLU?隇# 즱ZjوٌYf#mY̪id>MPƤT`UEO1Q^GMԍ3< ezW鯓pep 5cuJmIz0!mz "=V`FPibPEà I)vgT(/*NhjY^붞r0fNRqR;y 1CEBb">Y~Aê&ϧi%atܓc p!aXqIq* yZ墨[ZPe_M#]!>#=ݺ>i)}i)7(J):D)$*L!XVO=c` `-a@H4჎p3.*}<۲ yqBI^в8nw^ZO#dV|lJ+( |p<'-=m]؟8yG +)cb$.uj~Ԍ?N4EPe0$7 :4(֡(H"qɟN{Ep)Idv~_DICńFK +~5 ER۾|x$I8,h Co7Ǐzf+P +C "`%zHq +Ա>kyY$=co[3 z9GAP!ɀ?$ !,ST׎B9J\<~%ePl7 F%])=Κc5[u":bJHB"$FF + ,#-Jbߣ4'uϥ6UMMq+5]98[B]?i%~&9sFz)>i2/Ѝ>T, Pzvҡzr.薁J4rG)=Mb[ے(l'][Kr&9]jZUy)'W2͡r Z iA6NGd /ɲ,N"(6e8m8VA7 ;)@R :M^u)VVӛ⋨bF%-&GxmW_P0Ѵ[s;Qz^DUlb&|_.~SA4fLiʠgX|x|Co%Ej3TOZ[=w9=p V%E}s=(ZS[{sSղfPRjQ6 8`F iD& 2B\,` +HnZ?IN˴N&:g +ќD1&^flBkZl%ī'4Rɱe)!I̅+ߕbo!&&"8bJ2(-^#X/OozUt|q9:<1d8ǒ]DdxjTuq!+aMm2ů|]WS&K~$nheO58dhEEIJ^t1/KR,J-)J!ZH\2am͟g5NLLT `!Q!%VcDu-.(y#_m:& f@|`Xu0O  Xx1v:ƸN7\NrEOeDZ6 ~#֊Cab(}3X\ S;.&E"e% +e!3\yD.#zpCE;wS㟀<p"Ɗ$~z&ne$dHAhmǹ^7S#Y^T*R#=ۥȁ !#e)N?7uV}QLnZ]ʹmi6px8!k' e_&б2PX\[Y Lc;IA+ߒb̎vfq:G).N֢rmCۺۂ,z.*+~AYr8HrP[,yT>U=yx]nZ^wYwus8GiB[eϦ5ʖ[:g=Ux-H(䨓denǽWz(WmWM(x@C3+9NX5LV4iٮEg"d\XBu q,\Vf:шD4ehݦ2a$^ء'r"b=P\C`i1$Vb|8Mt\R̾ZFuRro!Tŭ"CJǣjM0ʧh>jhE +-A4̄>`XhЬL((;>IIhT$$39VGUOtnDGeyY9cH(@K%${bMķc2O]GY#uc裡+Ywe8n8:ԣ5-iUIlv2rӴG-RCij{<}#_xܞ~o_VIG2$Imz$LE +[ kњz/V+fqmgK 3댜'E_De"}y릕]u[#$rOSTWOҋKd_Vkr F ?]$SrgIqC&[Dʦga%I 2e`G0QOɘ߃ l)$u\JSW<ƂKeN*F!XMYGS `4$( MmE*KH Q{|N)Kkږ7OIs,+סGOO]U=-{"QFQ˨B;8q'"tŪʆki)vO2?J hC/GލISM"B$IpiZwIJ8IY@Qq2%ÞWӓX-Z~H~YŲ8fr6"h:j]RcXu:zee%sZWݸ2خ{n?K `æiص?tm7jx]ʣ=p:ZP/Q{p٤YܣfwgTUM7!5O򃎣5Mt2z M|dU-kROӚؕ7˷tA0V1Y%Y%8R|"4  ؉rVeH`X?(Ul9Na 礷aD"c=!p!\xxMUt"MjOYOsyш&I뤘Mju ,7 (R#6be݉'B^/&!Nҡx_u"sn@t1?<8_,˞U.k}Ԉ`xu!!}bHm#nܚe.rQ2RfH~PbhU1AO2U5m?YsRn@ vu5; )OLAI 'B0a )~ oQ֤zݩedk CkJY'-ƉIid;7jIJyffCkI-+Z?EorD9.ŗӧ[5˒r'ÔV<>mkZ 9SY44/IFͫzx1 +LRIjWݛ4_K7.p>Nu"'6}' +ap' ep(D4BPP 8v@b+DfOQ`C/6ٳ-jC=C:Y [o6Q4_֥}bbJ,q c &^^@qyIeTZXH]X"FBAX&Pa +H`Є$t [P0$ a2xA hȠ h|ࡇ;mS/4G;,S6X$ď d Fp$E@3 +Vp1A W~P!( I lЀ4E-((=_o=HH +h Dh`+ M1! +WB3A c0$ )( +JP X %LU4gPt4U\ f.d b0&H a4 J` ^`(82:xĴĤ>gwUm:>p, \(8a a4 c %@, `4`XI{7->]{uy1A$`08 +Tx,\ +]Mh*,! +Qh fqc<|CKLL[dӦ~-f`<`5 +Z*L g0Cp* ?t# ,`haFdzy@)b(2xA `'@A e(| 50`$" "8`4d``M> A$ b#< RB@1d _xx \$"CG1h^+܊㐾O@@" gІ)P =,@! +MP T4c{~xmksȎӴR,PJ&@a +LH+T +Zp0a > < +J d@ +@`08tXiiY@\}(;b"%1,p +,AqЄ(0 [PA @'9 WnAeu Z %a ^1a W@&T +Px@&2@&:rĠIOqde"`[B`) e '$ L8p0 \*@0Q%nШ!}]=zXP|i}UqB Hh! Uxް/ +S̀'@AN,6HԠ1 -X iH^Y]||+$!t YH09ȁ c0 Kh*@=( +P p I2NJP)yYNJ"C!t04! @n@Xa +Mt@x1@zp@@!z 'g$w V7` Al.d! iX@'H Y(`440Hc*\LzWjZIl  +(#( JԂ"yt$Mr_9mrKD.֍0L$z`*P +CB2 t@6f``JBF\iyzvM4W3]g oKX@f0PM0 #!%:YX^*& yn=gٙV$$gQ\ @ "x`! V`B X3ja12"c 42+(*Rm(=w()yPh =A'H,&@"D0 H XFG ,h`\L\QהT,0rhQ0` 0@ &EP@DDD?h`!"S"҂X#ӯ0ܦe)"@K0- fB . A:0 @ $aG 2hfDR)]tSΈB1P$VZg6cdynugN-i$9dbߋVt8j +I`L"RgHT)DT+^6U|߹$ׯu ^TzZU75Qɗ]Q9[-ِk˴# tH4!}J55բzGMwd;̲ jʇ'ps3h1c_S M[x,~((i_9uvu!"o1U7r0TDhѢ"Co;+"%lOIrrC%Ń(ٯ'rcXW}1y&2ro* תereaZze z]3,QKj$_ GvU9)}&-R9ޥ(o,5U:gWWӛ$L[iJaď'a|Ġ"FKIȮYQ$): ^u('5øYҤ(~䨒a+'0bPYR`U(#fis.cL \OM+%1B\ؔz[`N<~acjӄ?/7 7*.~H`Ԛ-ētXDɍ(~%UٱV@|QQ>ZLp先J$.hYz\K깂ryP/9G 2|iQ*2f(@=ZLXcUZp~0(??o2xIɱbb4.@Đ1 ~B;em1hI=]<U8Oˎ~gϚv*>@painffKRDq洑[~Ů?{)h$^)R"fdjqO7O]wՔ6W6 +C f\|Ȍ>/{nٳ fr{Qǚa T@A*"ϧeٯ#2dݕH~ZJAc{<)#R튓h$A!Eԟ Dx`J~,v0( :X93e$f9XK1߯>ɮEaʪ]>=AIbi܎tMWI'#}?Ͳ;M.~j zH@#ѭ+Ћ=l_&,$$-ՉgUpdD=n Uߖ)^Xm': ]Ҥ~GM;BYFJJT(25ǯ˰.EM CFLBĪ1(,\ +p#EWh+Mg("6N`7P`9Nb#{C[Zo)Wݱ_I@)!1YXFԈD[@{Ig'=Gbj7#escV1-%uj$zcNWؔƌO쪀v Hq܆XT5 0 IbmϠD1^)#Z(c1';ZDhX%T=`>J] +G֊BåKqSZ>DJCJ1dfZibjSz\5&WUhgsڕc7˛7uU6<)ivWJ2HX&= y]7I}@lz4HR8P\-BN-)l3ZFrP !j)ܴo2ёaVP0BRExiB>z*oʈgb hXf`H)Lﭪq`EtD5VJPL_~лrQ[+I15YL/X%zU q9+E T̊2*^qRLR|"j( +cF5C=h\2-&=m$hR)qQQ*m*G bWc%͔>i>~B`! p@Y؀AbG$/HS%1*ȿ uT+V%T޴,|n8P`<ЬJGXLkڊWgG X>YeѯOrz" ,1R̎}N. ER"ɨJ%zSW7E,jiaAĐ",2afZ%`1B"DbUzJPHx|(B%z rH`IGȐA"FzÊR G ̌˄c%xp?pK #aH>Xb)R1 +_O"n8=RV~1yXH3^).U*];1 ؋"(T)FHUU|#-"/b*m,qsin"  5RͰw@(@/zF)phN&6h~Ba"6̈1,cLxt-eF-\fJP1ǎ-J})/HTSĞ&xE@@0)D~# 52>ZFX2"~@2cHbzͯ(M&>%A)P!SHdIxȍD@2DDP/0$E̘ JT)jӖSrYN>NT@Pi*(Y# 4 m8(nw6šb!c)%Qڲc=`&^jb +&lp9F[dUB<ɯh׆-XHIAEDEJO|u)!$E3&0$dAx`ZB$hF 7X9q2XÞ6RKpR<*TIف!.;^LD@` rb%#bTQ!:J aՠpqB[Nj2D +sԼ1Ar38R|u<+=z+$F8(;1Gd0<~*=KvԦ֥(kR(> +z +2BLhl49^e+VxHQR7/)npZ2F.O GK.<^NV q@KYzVJIWT/+R ɏԯ^N!V P\Lց# ]6 J"Z)T[᳋Je1.ɏB$%joYCxn.=ſ?X%dH!͋2)4ש*jY$yH#%E]D1`)%0'4L`*Z 0G⅊9RD'ϱ{ LW'ϫ:>oc_Pp19' ~ē{..U[@:7ZRC"^Bx`2Qozh A¢Sp:!dh"Ի|r-R 9T$njPoݖg"k>9[7r +=khJ,=jUP)zWG33(EGLI3f~^BIoT7ŕu*|&IQr;ZQv.AOR +tʖA/"WvגgJhHlDCI-Ti0E*$Ev@>(:41?:bKsv^/I9͓˦xv^=qR.E t۟s$a?eUXNZĢ)?ɜ _5&|ݪϊ9IAGZ3Jnܵy3h9=wd&K=Y5!ےےb@91-!%7|jO{z^e=-O.Qս,qУ6K$KbJrDvuJ;BT3O+y57^`at ?4 +f_t۩:)  +,_wrS>As"*p| H.IȐ)bʍTv_|D. ԂuRXP~exI)өwg]InYEaN9:L)CԞx}Oe-Qt[#ՃʫG 6< "w_1Lu,*"SB>EEo䊒]]/$9w$tr3VpIQY@)|Nj4'C`-V+np}ՌfhJ(;b9um(ȇ!šY^H NAwmmJ8Yi,s1fȎw[ݭ[P>~8آʶwemlnrOQ{VFϽuGL*=Wr}¿]z^M$}ZS:FΦt+銑Or8r܈?^*' Gu}q}s4EOSК%ɟnMva>[ݲk-VOTmd:1PH1uЪWy8dZ'4}rMT2nlQ @RDe9_+ #'MT8yZexSL~J^+$'jWyCTDdV̤>1eG^eKJL2kTH-LcwʝKA]mT.7A8exT|˼{%{bmD÷l;$'Y% XA0,p ]h)YvIl.,~V&E-gC 3 A vCv @ T +#>.>R&/HKJmG++ly<$?t*T.&,BXzቩ=/_ݻu="4ӣMs/KuR~BUh`RÉ #z@ Dx( _T^jbiY}_+VKK-HTR"&`(&~,Qۏ;jlYsIdx,A%0X@P@dp4wQdj1ܖ,ږ=SWf0h"O/%K'A$Y$<&(]+|uwS`:$kh,x=<+DG^c72^h@jI _9 [x + ӫxaE$)B +H@ > 3>@5c Z%,7On˷R^b +`Gj p;_5H)gc\y-v)W(UL֎%^L@sD ZޜŪw]qy~@ Ȁ2?&=f|hQ0ڃޑ'#N.{Ӌd6(B +壉! +Oh* 11#dNx$bpĊVhj11Qڥ| ,%<$lFz?hPA8@%JhG\D 3HbEń2ȋA'2R)؄YV +^t $ F#K&8Вď'aI&++=+8$b1M^2zIbH@C( +p|h4,"4#*B $ M,?^fo"7Z5,\v)@"G^$Pa:xB@Tx@H%b70az5=fEZP9<2:2X}?  Ȁ*A"h&>+!Xu+9J?c=#~: l$G$ T0?ߠRQ߉~fq +jZd1}i1X&6na \pHDj{uՙ+툲Z{e"TCP 0 h(я+|\ꛯh\iye?R ϓd{Oɥ"$h < J8@ȰI#XJTP? in^unG8,.A8Nǧ1=ryڬ#5PRj@r# +/3 XdnM2HҢl]ox$ڒ$13ӭvNٶ{Z?mr ͔w<յMC|ӾX~f9E*}޵b +kDfZh]QP9YʨpHˤYԾ =싪ݯqǎjuZnC0J9tџ\d7݃N1ɔ;Mi22LȸGtP>9dz:'(&t +um;cG7(4ry4W4&}@1K+z2+)E,vYw]@Lnh'`rw=}ϾZr2~uGtMgϩzPƔVn_m w^̺áؘZGmxxu/2 ).tNLILό#;Zƍu|G-K:ۧu%Xɓg'icCC)Nlrѣ%vhhNI:OʮԾ~bqe'3 hB` ǡj[V*6w~bTM&!v騟j,4i)2%M\uC4+zYðhm@6ѢH%MtY2U_q%M]ϭxVnU4.J[R('ӷ:ۺ~ gCF tC+߆)Ҁ†O͟'jY ^wWYSyvwc* n8 +Șu^i8, ]eƑL: /sM]wy[͸Y${I SjwMZ,Սq> CG*dxD>n}(:fKO> HXK\(h~]h +˨+ o\ZPK6SPl~c} G:P,r]"f'bg|~X h9DAm[vE&d.G\g]7\uı/YcVu"ܮyD]n#yΒ,i8Lmdz6S8PݗwX),Jer=uybɂwn4Xn yV},D3#Tˋ(uX0ڊZ'jq*8LwjZKcGOUվJ),˳Yک1GZ9^2|8A@NՕ~W[.877Ҍv_byf[m9ڦv62tu[W?U? a$~"=8Ң "^Ɓ 9խ+;}y~\׳xʚ)~#d8Iv\4cuv(N4Ʈ,JO9 cϫ'W yZJʅWMs㨛=nxiMz娫Xbn!<{=q飻 k+Lݧ뾪#Y/-{T 8xbdӽhj)4򫛟+-;̬JpV_v]_UEِiVr8뺠X-_tilpxQhikQ<XGS\ץ/J\wi&껲/4اꎦ9Y~XVt5u +{vՕ%M~bXǠO85l/_մ_%}yfN1AEKƪ=oNcdc ݙ #zDwuDxv?C#Xp^<{ q h#)SH-V%7s۹`vAj~e?pEmERJ:P`>T`,T!Ї][^81"Њ'-}5eyiuTnJ)RT%ᆍg$-`B3*L)N@G.]UC0m,G A .7II%EFe2oH 3B7?۳+X-zx$t('+n%IR4Gp$>H} /(,?'ѱ([B"XZ8U/]Iht=0E$q9&iIHAQʨLXER:4O봉"A3L􈁃%5ZLV-loW i )(n~"L,p~*U51CE ɯ^GMݴY ?kʺim.$:k^{3- ldOJ#mم 7PA>4O>= s J0"#Uԇ[S=fXr9EI++[hk]p" خEɈ +nCym30IFkC%6rrBP! @D6EKx2DV-ߣ(>pItce$%n;N:?Z !ۮ~̼ !,^X"zr ~ %dI`x&$5^ZT=CK8 + DrqB#䯐W.őgEbԞa[eu+=-[ BA|~=Ӕ3`D|7Q9ahe~r8"x>(6.Izm=2ib*xz^O#d%&C(MlEqk_Ew2|9Mղ. 2v((QW G/E˱~om5Զ!Ŵ)GLI~.g/W]d nV-b =ǣxeWp:eϣZ_76K|ES"M6VDqAnnznb7}o1UKx>" ;]Q)b"&eG c?Ir@EC`N+.IW0WiyW8d<"?j@BFq2./D^.'*=-볬e'getoݸTVq410^()ר>s-,SlYPVR^iRoYeGz ynr Oۊ8OYU] A6" :@Z}c~jݐ٣$Gu2e`)E~X7Ρأgg/HG俪{j. VhA=M]gr\?ː=_v~A r]4mykaZ4Az! ^xU-p0 Le@H=vPC&%ESÊ0$Cxa#fL&(>~6e J!Ƞ0HHhfHnjP`6JX0?EO΁0$$2($bȈVF7HX-$CI>!Cs7\P@)۶~(Ks庹4%IA*(1Sf)`T,%;PQ +B`~gA^`)"2k+ϰMt.ZVxW6^@Sj\ B%) ykkz,P5Ͳ I:<( #ED˞9 @dGt;$?Dkc^.^]kC?Y[nX@r_Az̬0#.`^NjUXu=.[eeUGH` #hD^8!=p'ɑ^oRh&GQPq;!~_I.-֋O> fȴB*/DBnhjzAQƌ2fTNo rzr4*v]܊=n)faL.C.=Iڳ +_:~c;B]L-BN:bN~P?TJ==eQ$sG)siyE:)ʡWB i5FYAp cM |*"@cG +-%6PFT9]&1"0&Ci\f}+RM! +> S-%u#Ȇ;qbph1 mf B-TR+!,|64 "J4]DO3gN-`إf +~U>,~`ǃ *tuME +t"xd?E봗uICH4FX;Pb+R$/j> A@D觺v~.kEɈeWЀ*dxVUELk-݆g]G ISX*"P_~IaxyiJj(A-.mzq4)~Y2+zȈ?p +y^VEUbrˆzaB2Cۆ!/~+>%E=ِ $i]Gn96g'spZW]5]PC(hfpȄPR"pP9XL=gQUգ%n6붑VŃ`\V>=L̴D`hEihIqqvp$2#@ ".1R"v4FWU}U};odn?rgr::Nvn8hGCI[S0vaE +h@aGo*Yj0)'܆iXG;zݕ=ar|QzDQ/r\鸛q.IQFk,1* Yv,j,eЈk&%3(=asMpZ\LnY"-иrButTG11dPX ~X\F} vm#`9r$&4A$Iwy/U:vfv-:&( 2*Ō;r>hfX&RI ^oAb^)u/eΕ*J"!~nh! ʍ,%a~YF1M_7BDC1&F~Xt7IM{N>i9C)-XkQK4cih"b9aK[Kz Y>Iooh1) M[t NCr:u9e"/ja}$c=UA 6qVVDܐQKИf$")|IA@C 5TY؃,{PeOL-u2+W0<{݌jȾc 3ZHqSrC4SR&eGp]=* +\lygUK.iTưHbI I+C왛 vNI4q,$U=chsa7 םj:$$B /GZh` OI &^0|D( ʎ,J܈4!…ӓŊI0HP+Վ@,g>וYD+ѧUAg闤5Y6uA6"o!H1Bb ZĮ)YNs^29vI +E,+G^]eȧkǍ ٴG(9`JRȤA +cdbyp!KV?p'(PgIpl}-DxqarQ?DYN….%]os^y5+]W: 0VisS4!CAX@9"Ɗ +(jIڠfG_]y,Amb?My.8# Pc $Ij)"jb %2GP8hBZ<ȃ\-yмh…R!^yMrUz'v! DȀd|,mR\;ᄍl@)M@=xiiQ47d@fp ҍ 4cNEC1T+&8P˖(l|=8>UM/[ח>Y1մ?XYB#tb:3Ϫj?+qҪG Qlw]$]>TEbRB[<0L$ z&b'ו~E0ױSh41׉i4lQ4Q<} aT)OHnS\F#!tǩѲG yižjpN W_ `W]H+$3Hb*ZbR L`LD"6ѯ](@+'zƝGn6'Rm3qN|ۖl.Ӛ<]/Th-'oX=kGvy(l V +fcF~8G+&WvA1D4bVEO]LN<k%Woʮ]y,F QUFQy$&F I[E _|/gfY^-V*dBt.C<;j"AlX;q>qyF)^R۽Yz]#7zZ_xDTDhP PӧdB0W¦G4dpB;;>-8utU9o,3̴7KΣAB$'O 楇+T0x6O٤Yѡ~88]?U\i;/XZ8Ve*ZWT: !H0\`y9ɷ>y?PLwSea _0a)Q" Z<!vPxHʂ]]W ,Aڛ>^M$ꁡ61b}?bP11zx{4GhcОEZ‡"Ё4C0'xU ( 乇qfLI #$6QoKgR\VԪ("?@FQ#DX ViH&40]/1։N}aq$1ZP1as"4R…j2Ԫ!75.N}ޥiud'ICmK3C}rN!|<Ѫ +WLb[к5ܗ&U +5p黬XQo:2|Ft7Nsu +ڴ21!c!3"ӢF +22V$nF*hh̸a2 +N+ꛏ뜗;*dZ&efRȰd *e29dL43Ni*V|5X-`fF@*Imʏ^m' +jcrё&p'EPDfL5am\.k1ɎpGnZeEfX:%/\ K`CeZO! +xGD#lxJS۪(.WˮqPݲ`seSNt/A帹,c9Z_uK/G_r}v{Ĥ y4YHZZSlc{*nO/,XcM:~5v)%G7'z>Zfywurl=MtĞ<% /Hr6'=Wq;b˸ EAiz8* Ƴ֓8>渇idF"!5*N#6ŭ 2A}fNG&P8VjzA#7ÜѪ\wJEQ`r9_IמǗ]UbYNA?=[w]bWvs;YiK޸pPS%[R9ԔD;VDi㓛V_>I Dծ/J%>3BIyn+m#b1ZSzF/ŏYV)Jђ!_'E~VuݲS(,fOɋy׍zU%{PXrm_:$ƣńĿ2I*ٍ?s%>DZweHG7]$kEp)PZ#_][u\]e8R'N0y}gORdn7M g],c%=G6ܲ"Xj*??Z\eGOˮdcrrU&ٛuRgH'!u+(7nt$'-׭cu!Ql].ɑ⧋eإ\Sw譝 4/VH BҺx HFh8X梩,Gh{ݫey$jez79az];+a8= 7f:Dru vwL)yRd@ޡv8pa=c45r%6 e=f"z(L V5:9w'5IzjQ)Xt)?j[#+#+(~cP_{Ch2/RRm?eȏU]r,:Qj\e)}1'MYfnl~ajՔW1-vLE哧$>.zۙ}5}s cbӽ]uQPjTԦO;⎋?KS˚2,{NeT- +vs}!f76#B%D &ge/`'BKTjNS<`P~]b Mkɒ +YYylQ?յPn-!<a>zM+vW|}}ݖHEM.9Oݬ叚y (\-s;:z[L8͠B,7mtF,d3t܎M25چv:hց-:V>(ÅB`\a<69Ř@rň+yGzк? #zپd;pt,c G* vE/=z7&"9ϲ&]<9z$daĔDYZg#{z[J#22f +jqne~ԲILi (w] vt&~e@9 U(59)8B&)&V@>Y>ITOO\r1A$=bUi=Nþ{2GwmI>WZZLw۠seԔ? \ǣiE[EK* +o$K%'q\-ϲ{ys`drgv@n*̖YwzWpB--EqSU/Oa7.1J _oliEusOOS&AW p4yIz g1GZXZFSs7G(ړ#)5Y/bUN=Bk^UiR(%N 6_?jǓ<ii>-O\V{EWWMؗ +vE)JѾ$oF C~ղ;Du"9K +DMk  PvÄ +/Z5ʳ@q@6oa%JMKz<[~޴"mt@(r1 5yrݶVXlߖ EIzW|qE6JFPsXDZ, -S.%IQH ]Eo ,)KxvZʠG\ٓ55Z~q&Pz4Z6DGjj[R*ڟeh]oQ|9n7ː]?=ySU/urDp[X&Y((:`*bђ)5t d)y%k̞Y0{RQҺ!{~Vte.'̪$cpۣ:)'~Ҥȣn8&I+sXuעԣ<Ο'{{Yy#yIV1Q( Pt>bOINק' KUjݶP/K\e?>tT. +rEQ'(UNF-  +7iPz߷ju** Ds_mc {c_ۓh3ޖ!x-bzjSx endstream endobj 14 0 obj <>stream +Nji==8ܯ/tl1<^+v=%j ~u֋-0q{Urq~-߇gG,; 7ZKM|8~xi\:4I;(_X̎pO!SͰ(=ûtAèƍ]IC3ݟד,Ur] E옥g@+fG)ijѽKt]wQz#t"Iش$x)„!bNvhQh4IyE%*:nqeߎGK-h(dY5MsɫmM91z],ݷniԌKvO y=XvǹdPױ\f=On:$s1LOj^vEu1$P J5ǭqhE4ygg3̨7dĦuY^W-7S+fS-j#v?ĢZcI/ŶخU7˙))EY/{rϰԢ'XJE7`ϪRSpG/Q><}!9%otJ>sJj-;>,=mMr$ןv} Ty֣(Mwq^ڵOO$\uUY@AA-bO^306밈^>BIHyJv;u|uIF/L@j%r"5rݶ>]S]lL&(R2>P]f7S{$l4&Sz1v S,Id/I4Mna cأmdyǕtDeKeliֱ/ժ/J$Y>~/sXK -`Z<1[K&G~,qik.`dXs?VjRqIʇ_쬷=jo4NH~hAb٘Djه)$.:G8SV\gLlKl)=ϻŐ6~L"9I _LRy0qͤJ .L)tzY9PĞ&M:0#~^z%U, +/b(0%zI~ԥ1~OqH~`s$٠&jד:n1̄ޣrWm z5gI1"[3L)Dzݐ8!Q^͚]|nq|! +˪hp8V([ҋX ?*H={sȳ"Bp  +c\fN &Qt-0TR#rӤVkDz RbQ#>pih8?MS=p[Z9LbVr*My>{Un+!VY>)4G5w}sc%x-HEy\;|Le iX=߇Uσ$!;qBD+ esr=.lfnn퓦:MW^xߍh#z@@=;tH^DOtF$ljS$DDUˆ KIb#6P"_A%Fĕ]ܮ`-Ev M,rm},kvMF,eEJw̑2R{Xy i>#mOs!>dL`Tt +c1-`4ǵGJFE䫀MDϫ=W =QE-ɮn(W fmkif JMˆsmuMێ?/C'r8rۊXDzN4fEs'[wDaYU2S⢘weۮxt|R#"}Rs99ڴViיz9&)R(1A-Ekch z"~QU6HlZ/P:Fg~^Wn?Ԧ-~"A)O:Z&ibɼ^t֟QMG>oW[ EkyrQZڟ~]錝NliT)OzڣIIWޖ2ۚ:7G^V_ZZ/ԊGp(-{s9ZLL@ #fX{TjXXD^,' !7\rÚjzؓF Lūe|xf;N^7FXQgeF&=wmGD췈EI>QT6þ$M 2((âwI$-#ЍۊuF +Ɉ=S/V# dRdR0"ӣMu{ +if$r+ ٬Sn6E @ғ_L=NBb,owv^ +nwn6ABRh~ObϓxI1 H*z|^!vP{f 8#'?bEjaNB R #%2&P U XFEsZ*(#R^/ӋH1R,%wsLb擢,m)C$g={X!Eed6c贊'r*0CL,ƢJ|x-ۯ퉇_=W@#`x)pk;탖$a0@ qIfKJgI!hXj`T^e&dJn[5eR(y_Db'j1b kQXE˔%:ŪF_z2*  : yNx ղU7Cr'#.GaV +AIIu̎MݽMq. +ҧ}1;}T:ɬR1k@Hje֩n-ζ2teAhNG2N#I,Ԯ*} +`^|{%WjWh7$IE +$V"ŀ즌B)V)T^v!EKU|>̞uS/~2xqa90^H#X=6=mJO yzԔrb@Tb+8r*8ܗ + @6l  +4>&͐ H@(p1eIaiL/V&L&!-~.?HP2V#&.ӻ"GShicz>0M 15j_,( [w]R +6 +Ӳ,|Y`P&26-ECzHD hV`cE$.Q2beLz{rF`!sR70uE=C̊t#:UE(9Ө>-=a8h@G6zX|BU b2dW`^L%_Jzֳ=t㇉m ;bT'=xQ/ċ%|ᒲuQJOŋUU)K$UR#>J{F%;I22ÅE ^|(1%h@ +-L5]ah03 wB<.*et ѥ42@ rG*W}=g)n@0,azZg4t\;sN3:2T$,R/S,VAF +*bL#lx!V;1f,G ɋM*~FL3Jcv/CI E*ѸH;\b*d0?atW4))B ?2kE-ĿYF/Z&\~ծ˃gbD%pvy C0bX@-^~C +?6Lg מnY&ԇpj~E|v d^^HAC21BX1Z,"*V^R"$%2!z(Cy*xO{BrY* R^8\'|&+jveR.!DEl}n]kf\+MӸF9VDlq^W dxn@VIA8蘴+կ +h2Ħ[@!kU.;#|1X$=1+6^*=g/}stB5$br15R  J)~u@/%9\O^J͹N>= +(0]&_L+^^tܗ + +X!;(%Y#l(bHe]ZZK>m\BgJݞ)yvVz;q> i1#E1("Yz?o!* bP|XKدg]Lp xy!ydH<.TtL|$!7-I#E ]Fհ o +茔+$,=Dn[vDYkٓ_(^~};FV;BV2!e/|f7P^vväF0J^.BX*\яa#X y7-vĮ5mqZU|9Ҡg 峋P3}sմ䄎Mh/\fvqvIj:IhD.T~EjIjQ6^)T ]@.!dlA +Hpxrr"*fN{NoIR"αa>3 Ħr, r*O jW̮3KoxN݃^GKS,| #U>{^pOKQcR)R|Z<_v[gҊG_|6\'*iiUeBCһy[ԑ @ Q.s>@hc[R[]}**܈x K(ߴM|Xe1ȓ6̡yԂ~E1@~Վ}U:?4m_]{u]0.ڴ⠸M:qvDL3I86e.6I& pOR4IO0I +7k@(0I& xMR0IL0I3c(8It& pLR0IO0I3c(8It& pLR0IO0I3c(8It& pLR0IO0I3c(8It& pLR0IO0I3c(8It& pLR0IO0I3c(8It& pLR0IO0I3c(8It& pLR0IO0I3c(8It& pLR0IO0I3c(8It& pLR0IO0I3clph' ɰ۬x9Ib [i } EOB'́=t)uf X+}t\ ]]e1B DwN(Mrؿmvƈc\e{ܷG6`owȣn]KKH`VAA>Umow'<*fg ~;FR1Al e":Ї%#Eʚ΢9jd^!i\exeSz0'0)-|iQ:8\ehz|E":KWc@oزJJOXG /)eC}Nl^µ|İ냀M`@~T]_ |9NT*.fUuڨNOg3#AͶA](Apa[vm&"BҝRG wDdV34DhЋ-$U؁ +*8?ۡ}K_RlCrdbF iN{[+(5 Iuk NFtDLqm-č7`\L1!=p}H|GO:Gb;oa<@NA-i.c ?BG](-uWāNIآ{Q*_`b%\s^ e@|6p}bهc~,c.E<10!餋A ݟu~;45! Q6* +d=T{j ) К6 %Q(iYew@Et|⑐l7gbvx7IR84\ˣ,l} +f#ݴ^_6.*vmL3<A"⧖E&D-`(Nb;[7<#Nc1ZO8;֜R0䎾.AvX"5=vJ8a2!FA1~D*otYB"'mf OM( ok etݝr5!P.14 +Q"K‰-<۫i6$&faC'F(Y68%~@u0%4Z8$+;Wd閻&,{)kH[ƌj" +}اD.-L]5H4Ə0JpJL .){p:'+L8EXtɺ,cÄAPa@ c a)}͟0 =B]Gx TV1T'`tk;r5ܺaϲek`ωa*hcv#:(ʇB!sU*eTQ(#)8_1E[>iŪ*и2aX_ cu[c&备ZrCEb+ ug +E/ YCOWp + չI2h"X÷m*nqп1lǓmݮlKҜj؀z ifP$>B,@ #:NdBkl >LU"J&?npb`p#;Ơ%HOcҮu@Qcr^FHC[^TACuLn-p)t GqVCk2uF&L!  +ۻC5~^F3fHЬN_~ȴEM'>u.KS=bt #nW @9m]pSB7n0S'%"= xE7 5wl rGFA}Ϡ0̭Ke /בQ8E {[TԂ"͆ډWkK +A~zB?ׄ3$Y7T,2Ow; +pG>6]b]tمj[`7Hy'tlv0!Md'q )x-CWl[HhCQsGX_Hh0$li +Im_FǪbm 1;,\dU mUfXAqW!31ҢpRD"q j=6s4@^z= 68;]W. +g2|^Jv +FR5-H_zG`ܼո;-`&QO㋕ަa/o&8NBpG~{yʃQV<& V+ +p?DVM7lڄ>YZD$"d^ :&I4oMӮ;9iW (yZ*U/9ƿ48"C*t⦉\trxp!ր9uӊ)i A2,`*,zK^w(0>[o(sMݡ(t%MVO!h'`">Cu84z [T.P^lvo" = 12ڟ*7D“ ^ݹ Pn29mjɩ}ƙxj}?\l+qF~nw<`ќ0!̭\ { 1aeǂӵr=})xdzHP<?G2F>.CguR!98;l-%"Te0E]esrcd{-KoD!F:˼]0/hu}iuN +~c=:1FdY$9C{KlJxoz[/c.:qQM5L%pa A.i栌aYeCXpPWwrtqq8-V5Sο8if%f<#EYVPJU7KʌڏD3K Dw'lw+vV>}x'a\9ș8g}cxDG]@HCׁ!Rk#BΗj80n' ;,1%˿ v&Ztn44fI/#c[!Ѻ-# +.2eIhrPD/d\2[ 9GL n wfw]v&߬`\ i 27QRYPHQm%йb6q8E2 |WoS~ƻC ; -`rHJݣb3O0rS zR;)^.tE*UjuĬ;3*8d v\؁?nd5<T; +UF{6X?ޘ(<"HHk Ƞ$\lwv#3cqgS1>9*\b'R2 Ƅ٭ +g>`a}2ؠ-7y@zV#ւ2 O+Z{$ ,8 EYAL6?:c<xGJKzHZ DZஜ&!gVǓ:,ǿ^+:q6%B) +AjEz7N8R~l$W_9a k?xeq(,ϣKZz?%tc""22Ӕ &<MFM14'=&U^c^z,d՗~Lj>ި゚ Վ?A?!rw|L kEL5 =y;pa+;5gPhuUt\2b&"똀F +)Q٪YM"*a?޶ᖼl0(mh15%Yepr*u OQۜz/c :s{ 1UlɐUTm 8V?_OviB_UVWr} OV692qC 6W|yW!a \ ɖ$%W8 aæ +3mڡv䠕;o {%@t//oR\b!5IJi,5wB!D]zFLvχB.󩿃X"EV =7CMfV `dys#(sxT3^Tk3ë'Q$؇D3XbFGZ=ݤ㢙Ӑ'86i|Fa +~H Ԙi ʚd|TV6>_@ +7{lKe{n@M ,yw_!O%d,UKK;Ӟt +kؕ^4hU՝ +P+*Ӝ .#J9~\-9mFQ˾;ǘUnȷR,N Pa +hdhEES۬6cos.ܨPyPlMe{B0P.d\򌞃O1Dl.M'K*I/bTXux_Bﰶ&kW!kc4ጔhhRYV +jċmfj]!́_` jI&}/g`<˴pj%&K$eH0Ol/WɲE-旱 #ZkEP6U۱}Խqɧ}Te7.6/خ^?&&q7"%bP,͸;nk ֎zzsrLer."NͱCee& s>!re3lc05Y.H׃- 41ۛz7 T dp1QKhsǸp1lu) R\Cm=e.BU;e!y=étIP +egm/y}<ސ,}f6%LEg/4{@Gdcqq[}HEiB;9Zŭ}YLijiy>Ѫ@Tgb, C&z{794JΪYO\\`½BR% K2I)m91,F<.2@@iM43 +>qV{] O:U'@>+)Mu('< H ;pމ)5J )w$(fNZ0S^x*Kp=hI{, s&8{o=6w~4243+zgNqx3vLI]==k:3)x&Mli>oq|/3*bxE[EBF4_; ф9CU>q+w.03Lվ +P!`糏~40Ǿ bEq.FKUmsviGt`$Tr ErP`˔Pm~"sOj'0t0 O6v̀`rEG'p}-OW%8 v[B4`428ee0587a8-8429-4bdb-860d-57a7b6d5b7caf6ed8fe7-0bee-421a-8846-8494a9dbd0d04ml10SVGFilter / : /XMLNode : (fxmlnode-nodenamvalu1t/ArrayeTurbulence;childrenresult(turb2attribute; ,stitchTilesnoSnumOctavbaseFrequency0.0,feCompositin(SourceGraphiininopeidAI__1idobjectw100%hxxyy/Def ;fractalNois44GaussianBlur12bstdDevifeOffseodddSpecularLightingPointLz(-z-5xy1ysConstant(Expone(1specOuyll-color:whsurfacelitarithmetkkk340411MergNodBevelShadow44-2yMorphologydilaradiu1.bbd-d252DisplacementMapxChannelSelecRy(Ays333bMatri434m0 0 1animtotofromadditiv(red5accumunonNbeg0restaralwayfillfreezecalcM(linea545cc8ccc8ccccccc1cccbCoolB14-5nD_66erErod664_(771R1 1;20 15;200 200; 15 20;1 1 removrepeatD(indefinsplidc50 5PixelPlay;20 20;Diffuse5yellow;green;blue;indigo;violet;red;oranDiazimu8elev6d1l5ularre0011102n2nred/$##$C K㴔&@P 10 01`2#fI=4_ +}V-. l%sa:`x 9,\Tj +Z6Mb]VdBs"H=t#R~&h#@tb%}<!T(4 +Rz') Lhʼ_b0Y- H)EiXszsoר~$ o:k6 (o)]J>SOaR:LI+cuǰ_n*"M/v7d6#/.KW,e5 UP2dڛ/"XY*e8GSm@Uܣ܄Elٽ n!K?vc+F޴߿, ǁ9(IEX?]K;\j;0TcvYHAeR8mrp7YhT"xoU wbNAՊ/3nAD`Lyc\Srn""#ن.&̲q0M6WI'ᙑHoGv3k\ibX"v^3@fkc!2ְ2%@nLīc&HѤRLTߪ|8J-E4-9v&PU0b7Y3\19 +(#Anjh![B+rё Õ)Q!Rt9|E(lȣEg ;ACPڊX(3`K&zaARČ ׄN'imE2jvcl*b] ^IO4Mf M#n#^;[7+F%rd4ܱ M@+F/n󰒨_MAR< + SInB6|e厕t;С D DAR14" +B>d^l;lH@HX3@DLcqd )ÛWmԤhqdcu^rL6s5|@2[@9 "uL|وՅI1tFCaPXYs/?I"ir2)!Ü ,w nF(g`E? } +Q>YT3Y6㠴:<'ym@|vx:L9o qowsC@h j3H\T3r88!M4J6>5#%yNXvC8`›;buDz>r9v:,}>@q،0y9-IDMZܖ@dSmJb_˕4x@?KENErQl-?vz` =KJq?##9 8•I<9$6=«ϳģ\*Y^Rv] m$AT?&@Bp B T ,EP4\cP4\ 4<  +`X@A!3TW5TޡЀ  +(H,P<` +  P 2PXh0* XUTݨ q01*G yɼ},W`ekե޻%r)R)1ɫxWzG.Fuc y܇|^vߏa .A 4 +(xBG@@`T`@k2qJ8 , +/Ӗ}> יH[ ,q+im[뭦|AWH,`X kb»#``(!:q!+iB &$. %!>BTQ!@4]DPwR"c<2JT͢dэv#A(>G57t Θ7vS]axX͇pV[JE[u\YyKՁ@ L8gF}皗iʊU1!>;Ӧ2֡Y5&]ڞ^T@IYˢ(Fa6 +QR^{Ed^Q|9Q,bMb`.IN@ t(F"[FI(HDGq@VJa[==(Fq(nirKAnq: 0.lM?[<ԒbgH` W5gfE$UJ+֙}$8tWUĢ/p.;X^LTYVM1 T.-ݦdlY e>UוH7hKpRt'sM)u[Z3=m:ZF5aqۤQR5wɶ1:\haQLu;#qqQ\܍Cnx0ef~08ʔ{3ܼ;M]ݭX[EB&D4CCdDBB=D6skjkk{jHg34ۡ3HW"Va*jb u9<ۺE<%fγ;ښ!b}O>k'n''vc5V&;OɳHU rHݏ݋oBu)nϛʦxv!11r+3ӊ5ʹrwꋼuWjV/EwZ5b{qv{c@@ @b&` H@P*D -̻ٔeq‹ȶ)OUTUQ2)1i̥]Nw==mMg?fj{k]YYYZYYZZZwߙtisY3ݖ22"rmޒ%Efnbvv&Svff&Rff&efLYz8 l cTTB 6xV_4Ķ:_лcdd<2#c*2.20pvNckbc. ؈H8xelͮl;ܽ,΀iSԺ.umπJhlz:掫E% ь@sh$\(:f:G(I2 P;* 4Dui4pP{?\罺 2O' |6LdbJj[q'ଳPm#k(@>,2h8!\;qXu2,Hڬ] r_糯&G=/vos:_K咡caݪUv~4{ "h|c JY^~AYbMMx!)p27pfV#n3}f"JjHrCC/:\3Paǧۯs{QQb3H =* pIi$ԦP7an7RtF"BZ"/UJX͘pZ :xֈ=Dfrcԧd  E oa)# ĥ U5ƣ$ed#tX&q=(HTܜ~ࡵ.fy$AYpo#pH8wml23鿰`Ɗ; JiBЫlpڊR&h߉d7*%->& Oքq*x`=-y@M4#QQVH^<4N0=,2BC56Q*%i%&慽":JyUEA{]lZj_]70u%>cI#SSwfuߎ|x#?V.9.6(I3Н3@}E{xNf>ɔP8)[W<\Dx ]uư$}֟ H+`&GJ"xߎHϹY$`w̞6pyS&}l/V{ryvj|i'5a|MsȺ[;lBxd ͂ί6e!J?(񤕶B'mll(rDĐZ{aEnh Jq(2 +P Glܻhw6\x;yʧ܌.ܲeAif.WR?3 +yyHv4DQ,?$K@/JhHnS9d:r5{bt+LsS +RerR;v&ǰ磔MN+n+^釷c/,| +Bכ^:?%/&.ukTzFBpݢhq=*U|1N_r'[+ +El#^1=E7~~2F>)Ci寻,z7m ~^ +=*O-ȉeBJAC 5OnQ+Rg .K@}E'CtNI%^'Чp7fҞ&b)/RtJT4/~5f4& ml0l@Ƚ,O압D<[R"E6k{ X"gln*ewNiWs2%wɑR}okb)8U퍉a9f - @%2'Qf~_:Ï)&ۄs̬::&~rN_^AAK"֓d~7u›}eHS FG+]zV62{mw_,t0\[(1EE5PdGЯ%AC;?Z)ωh#vyVd 61k_s +w3;,!/R{K\\[zm3QΗ,=X`IdV %J&&4w֨TA{AK!Dz[.zp QFmW`ImxjՂ: ݨ2QJ:sEHv[ߓqt#͏Y<bu +#y+bxM8#Zc~1Pjh-:P&ma+2ĺEShʽق*sϟpeVOUT 4PAA!5%gNgPp˗M͌W{mi ϴPE P*|@HMZRqĩ ̇UO7FVν=㙕ʪy7}Pi*^_4x'62Kp+?5{v/=n՗^iR,KkuS0a+QͬX" i?M +gw]7b!_ՙ*>*F0* p6 Pv }Xp'7*[l!s(՟R)̀Q#|GQMGbvlmc`XcYq,td$׆wTj}Nڍgx,9HvꬍS&G7;HON,Y,F~_h:cH, +7MPZ$9z؂6ۧTLlĪ1 0N:YԶf,[ڮs6l>X2 1Bqal-@91je;jeYQWQ(^JA5GmTW$cNV;:x޿O-ʽBx;wȻɺ2c$#Yq|g p9-Fs9#zohЌqr`W/#3$*glds rE[PBsh 4L1G[e b0:?+_&Q:H^d>+s ;DohB>K.CCH( <$E#+F*jx-nm|d,C1hk7oB~js>%.FZIpyfS`\axezW~kf )!ߊ LyPvT.h¹3*ћXk䔥(cL~0k>KUGP(JtV/FL]}}25hgWQ+ꔶX +. M)IJ5 ސFkR@>-GӽrDCwk: I m PPxSߔ6 ѹM܇+UϽUlsd)DXz{:'$$@*,6Er,=>  +jOH@g~a$a11qy$*ͷ#o>kňouqy/5Z, bG$>! O *c}"*-k-(pztqq\\|,yOuo + |"kJ7tY8ʿk UnkE*`U#_ HL4i[@I9FapOmm;AHd7JO)𿫩)X +Op}QQ&gڑ +v|nk]Lʓqʉ+x> 6C>SjZ_ +X)6~de{¦ڬЉkOhC¯3I׆, b 'eeaUpxFrFc+AWnO&FZz@j8S'F()^q4Zq3z$ +[7er, A||s>, &TuOcu̮BĆNCJZHf .@/ϵTލ{9|^_S-HiQ8/s[g5( \J/|3Wk៝+mm-<9c6d6 b+nڅ@vQ1#[9v5(QTq<P؉e>O:LjvnH ¬`x7'Qlw4ɻJR\սu.!H'&v "F-Dj \ŌWP$@ v0Oo`HHA3@|u8peϻ6=k8rn߿cn?X"ZYxrטlɒd@E- c> ;\+Z +M<)`H[$:p OƆxdbp ND[$[ '<쏒`;!c!FL5pjzDTǨ^Bئ7j̥n,q; 0d+JFMˊ_D LURT᥼Ñls"NT+j?Ԧ0 (%Dw?Dt 1ݬ`x;Y)R%1.4^k-:@"B"YOX!|1YhA=6<]Q&pk5v84J@Ic$2{ sv8l( 55ʼ52¡ +P]~am*#+)2"U wM*shkL't@+Q[i̡ }-!H/Ippᴿu7yg;̀Cyr;y2JIN8Cω{c6!:b<#`K4/p #|jb^!*l! 3 [L[VÙ LEpIe,2 <ȫ.+ː&ZX|JEpE ~cSx)iqrd4Fi=Wl>"uYKa"B\{Z9.+'ēu 8yeFC罘"d8sK"r8"5ZUdWpqVW{abn +41Oe('f܍cطEi(zޮ1"{e {U/'.EW\%QSdY +C٬U#:vT3 鯜U/yfAc8 h1uS,d;Qnxݞr3qJ.mk+sg~a`7 j264_@,Ԏdp=Ҥb'3 gVa"dߘYpB4=c}WcsS' +RU9}vWVfbg%5rG6=_VO<pEyz^s !h= jdG){`p;jBϱdžXKO/ )n+*KIڈZ|1ؚm*V* DF2vC!̢0VD,b#ȵ x?Q' + x$ =h tBQ1:Ve")Dl>@Phu;ծi#=bBFuϲSΤmc|>jşVw׏*ԉf״QF\"k:|:jL`?6!fKb}f)h"k0H=7Pm~=wx/Z".L[+@%tRYppJFEW/W!r_ +sR*UuΝ /[~eb}V6\El0i%oBkwV +ƘE͙F;_]fS]Kͪ(sϷ<CڥRL !FEX)wP6l=_qE=/BDq{~jbWphl0?`CNzO(N>8HDYav& x>3u@I"cSS-Rܘ,PF 1PpL {uE)K[{C9l6GQNN0^"T G^_ i+̐ ضx׆P ϦWˀ +@ -'fQ&C12ҕ܀sY@qK,tYLYf# PO6l:Q܉=Qĭ O{(1vыkeO\yMGM(rilK8`QFhr3LjeM )J1QDVhElz"oF̱J5S$7C'XNT3Tl_TGS d\űwX,D$v։p;3A?a1An8Bx7%JMBMEJժ y/O1 S#NA=>Y.-wӉud]/VçH6"S* U.W2TOR"j<|3b{ ]ȯ/ +NH1ScM myXopĒF֛Ѷ +K b\ gXL1MtO5`z]ҭzQ(weAgZ-z{2lAE}yr4K6p0%xt [oȥ-Ll.v&0 w=[S3R $l<J.շZam2x5wB9vA,.lY̎\=T4,Qae8j)y"y?b=܁cNŃtE0L!)ONHLYz>HzVqw +j`Gp1a=i6(P=w/ePOd*wQ[DeEgSHIvi!ϽN*&Y۰ZxE??8XϷJi~VZ4FNihrH3e!'&0kUΓpϞȀVjI SsOWiVq}XyMaH~;5%%'#cTU^Q9v+ pc;)`HE_aYUM\1mFw:VJ (Tod'z{c\^B&Dec(ߡ'z0z큪\8 ΌZ|t -HV?!'"7_Z_gBb*GX"JOc=Q78E¤ؾOw10; #6?i8II'~Yq 5eIP"M B>lo{^=_GkL.GNv=<7w8U+RqjB8΅7pJ\o +!:-h:CHN< {C)(0u Ȱ^è\̐* 0bcֽeq E)dﲷdϓJ(N_K-U^`uKXX,RBuKkr_y0p ¶z +}><}Yр:@6GH#OL{> t;/@ڍ)m?yPb?A> iy5;b}rE4\:܇JA[\XCIR#D5M!wj,kr*+buΔo3#lm |HK}ו-%ɂ?_۬DI uAr_!.]FU.υ?OEMlr`7.c}9W +7D{FulKW;?E2R;p d?>۔cAjGqCp-d#Le^'rRڤVXV df"Wu\y EzeFK;7ǵ2a "y$F8<3ϷwC*k~ ;bQJS66v'sn G- i'k 5kqU&:8p{` H&GmG_+UL=?k@(%Wau77 eV!ې|B\BP]um[.he}Ks:t8xEŤBMoּ\p|֣ M+q mգA<]FЇñ d<}$1D||(I6Ny)8)1@##EF)M}񴯥J)%g;y yJBg\;1]_t#%D"E/}&3y"Z z\L֚]>H<!Blo,VV9SV`m$ +積B!-<]-p Z?H[;PxWFt3a{1r394Hr ;Ŋ*a!}#EPfHXyp^*O N_\4CKc`5`K<&u +UHG\!XѨpl3DK7v_ ҐCt#nbsC2wcb|+s=ñI{M&G`c_.iDZMY +`3%6v$JIZ Hk_Z,$#(9Ҩ\r e=4?TkJw=[4tV|ȍfȋdGqsmƇ_WV2x=պy߸e1*|aZ.0Ȕ0σZkU ͋րV +,' +CtAd>qBi!u]fYչO;  DIܛ0 Pܙb<^AVtE=+xC|4$uLW: ǻ4$rD 426 +`鶘h` / z9$Rc 3G^p=T:)+eѩIvR% +u6P$$%ܪ9p;VGlgDDJ6$^Mv{v +B kz+r':tG$v}͢#pV싺~5/s2AqMCBCe.XNr`+Y'lnRbUd>w +s,pC/|s<^\9mEF *~i#}6wXr0;b`<+ OpSUm+TYGjq+K"0UuX׽(39"W@!M''ZKCi2kM +Zh O AeIKD DBz)ѐC6bI, O!q*PԫLy߲O5ɬ`X6U~.)S-trBIT N+jICluc9b)t{ }ИR:(ND SR4‘gRf|@bw +zvC{N $h05k:pȂ;g'4VfL@y֏g^7/9>[xz7g.e uhu L/ș.nf,L9XlqM4a2W)i}ȯGVl@WӘè%*3[.u;레 …>mCKTD$F1#*|_#([AS ) +#cDӎ}q=Yt][jWIYȄ/@NZdem3,[頡%nC._~eׄ)zIq뙇jixB",k %< Tq+;\)0v@].KCPPXaHl@8ݖe0VoR#1"InI-Nԧxł1 -3N-c]=.L:xk/H" ,ʩ3SCJ6jϲ{" A߱p8n,72+HoJL fAd[V}W~CW= +R:͘])s9@uj +e[m/sWRsڢF YS:଴X*#/(1{UPa fd3 {52&iXb{,Y7*u:)^?[B6 XctdSd8ȫˑ!KIja6ekSs =Z'& Ó1ێ9hN+R`gHƗۊo/d5> nsN*oh/O[FoZ^{b}Ed&! ~\s\DUԀߙFilL0,{7!f3xM{:q=K^Іp8T욖 Z@|ʀWm˶]S$?D@$2d[ #۷v=xv+)nꓸIH~WHbf4j~S.?6cB@uhwm5UVҌԮDRPve@\/AykSTZJ[NKZ(?!=Q(LvED%,^t!&&dSGumV_F_XЦEx /RQJE8@j>';G?R4M/w@:-b5V.hSy䯞&4Z-dEzd1D9?2?jʿcLX9Vn3l % ̑ \ +[gzrK+IcΣc/9^rUi[~4FG +d6Tlla&߿ 3[r׷O㳧&>uIt"PE2Rw!,q+s~ZUJ$> \]& գvd=3EǴ|PR.5L%=,>aĢ|JilVwqxda[D:`0RjM"Obaq3OBZL:,4(47)<4CYpmO#G%T[U]mH><'r+%ݚW", xЯb/CپV^4Z%[s\6|%kiEz­uMaהDZX,-'Xt,n_HN3=9ƺ?<USqˍ76XY"5;R2# Lv-nLcoEW6X9K)7)gJR@B@Z5,H)+\ ޙiPJR`Gq^N:]_D3QeD -aY{Rt6ayoaP?mJ%pmSPg +єl l-2oMp_+8?OVTGGmW1*[1bŶRwHc %Rj;8ū tiMv7hևخ;5 48X.nB2p/E֯FܰJceE +_*e [v~Wrt N6"^* P*HbQB06B>o<м |po+YO>0 o*Steh#7aף'V* a 6<91$(a`\Y3~X GÉ\t\O<{Dڑ4)@VDk~qQ>ݐ%2&T.@B։0b--Ig(E|dD#p5Ҩ,#4Gq:V&>U8WeA )VpVfD!?Y <9k؏)jn(ST-I`Q8##jTvE׸jATR|H FxEdEM8Li0"I%08HW8 Qeɉ$Z8ݲwdb4n3-'OuG{4HP0SOxP%Â;*!Rlk>=A|T6{鎽o%v]Nf3# +xtf4ds:Oǁ;̫[VkP?%3A1mt$PD±[þ5‹X [eN_Ռ;s;NfI?u;[\zSUJ{Z5b*WAaPQ foM(Pl2Cif]3kN$5k#%xέw;0f1hk +[qGEzH:AJgr x*po, WU0qB+ԫTĜmPVoGSV\ +1ΟB][ +$)/(Zfu)3mʏ8iI௨\yIuU:!Ԇ0tX־ni@OV +@4a.Ev0ޮRKͣHy8"^L#ڻGlvwdIJkGQ Qsc^/1!(ͥGjV!A2SR:yt p "2ȉb^9 + sPp!YT +}^߼tXIIE inPP0 ހw* Y_$HYOXkĭ\ +.NRO62H) +[(뀎k~o I"Av̏W176JS{@;bӫ]a FEr>RMQfZVԻnDyY{&$gT +mi}з{r+uh9w U,U\6DŘ񐅦Z(!a@Ȼ.oɕ Y w(vT"D$:vf'P)}NVzL| '0>*s l %C+6 DߩGD s/N/ +!wBw`inx`jNۙuǾ*Jj*C +'- &$ɆolXL8 R\d ѭUObUW|y +^6LznMiPJ/ieg֝^V!k3 LOCTY;^!Ƴk`~&otbMWzaP2ɦ~_=)j?#mԶ7+Fr ܵNwuʝ}%NJi,q +hQ ;>9$8ru^QbQpT=/TClV8:qkI)~5ܨud:wZ[> 'oTBC]ms0wl_sQiOܺtxێfО s`%lOBՇe0ǟKY1AE+3qy~"\'Z󦭫;= +On˅*&V$T5b4$G/1~aظDžqВ825c ]Tm66uL+3dlAFWoBHQ:*@c4ʮ|G4޹#^3{r'HqY*i`u{]V 5'']yf(7&ڣ8}aց>y'̨_6cKm'w%6qbpG uCLxžw㹂IQQNh,K}.ݫ=HcAdL"*O +PZQStC`zմ@`܏nVwux E~从&w#|ʻ^q YQOX"k=L|蚿xT 0󁠀P.AiCͰ=1/ svהy +tFt"q m.z'nczX6 VwY預µ9൜/R| O +$,gu;ji@aYp&1 +Tm5!o :Ibܢo7VpɤPG][^1Cj'ZF +k!ј22rUKkjg@n)R@&> \͍NQ>E_*8c s%e37kxKkqMm+XM+iu]d!\xb+qZl㈈f=uu]?MQeI%NIaoW"Y %J*-o_^#U T#hQ Jķl5H +-#ʖRHp;1p]F~@1BS&D-#DB0\3k %|^JHERRz>SpMCMA"/1w_:q[9J"0Sցx^=$Vj:grjHȏؐ$.rۂ:zc!m%\QoumyحE\Il]!ͼ8doEoZe JPr zR1Ӣ_mh[i4=-ZȠϒ^kȩ6{5Avȏ{LV{P5aAo`=P̜8T$A -4B4H&80ւcQP(YeBNK`.dW׫&T5t$Kl~)z.9c`XE;7k|ߺ~"OsqrC-,}GvC_'IaP.cQL +4{ K+AZ7?\mg#|ZH\dk+ :\(LTHDnvIQSN}.G|gL+ܨ5ZYiH j/ɇ'}%L" QuA G8;38 *frY%1U, ~iw"5#TC?uEr!ް鴨pTȎ\5 r9!sC8HXF3j6h R$漳so{K8ZJˆղrE=2Kvȣ!bʞtaɞ*a4ڪ8 *t +11߉plXql1K554B/V<܀k@W'J+eFvYQ=TL?TU+fwab)W %n%+2ߖȄx/1 xMq+:F^JfL +M "B@8^'' qZ?(2h虰B<<`g\yO| Yb ̽ԽS '=kl>,S !LRC 2s̡PwA_5, {,ܕd/ 1rraQ6omW7ZuO5\8egZzp $ yuL'XQ%mA +L)MuW*vĽ2~${Ԗ/RN} qAяw6k$q7:Vb_ + }ߒ+ͻFnJs|_QҫЯ|w$z7z@~V%Znz;)}C]!MnsX^Y.AD@A8{y4 Ug+$> yej +-SV`zdmA.=3n\H7P^ ҳ\/$}"Ԛ$hЈhܛf0nރX%b-0sfd p;˻OJ +>{!&=x Zn|h +I\jDy4!Oio Q6j G1&9@(V7I*S$kY~^>2HrC_9| .!SQȇR"w5V~(}]O_ +sn@=981>ipho7`%K7ao P_+t&7ӈG|}Ft0efmvQܳI9]\ IHX:6(eGBm9SK)n L +n9 hVMu,D$ja +I"\TdV&sc7(B/ v`_y#(0M%\C<[T&^g1̵axfFAp 2 gӳr -;$R) v'=2G\zxB7(RMBbG7ps1n]B}ٻ^#늿r':ɴ \Uƶy#f ;nL +`G98QAw(ACW4s +,D`à$cJ0 t"&Iz@# Ycm\9|o;o79/v{a"r n-mvgWou~ur_wy;Vo{c[o˱6랯~6[{uzs篱pOR7֖k{ks~|7{1ޝn3=)ଞ8'!j/VIx6]w8wͿ_=﫳}n睳_$Y]~ul{{q[믶<r99۱דnI_bpORwMD̯_n?|wfk%FrRB!CK c-Ѷ `uKQ25xa-kk,t43ok9o~7[5ߝw=ZY/7DrG5D<7YqϺۻ[{}W8.S"Ic +3q3%3L1IjmkLϵ%nTU:&jZkDZs%kM3&KE)eK?۳Řwn}νTm \E4ágj>4fd9S_g("$S'`ڦc{wur 0bn-;}<@Gd|yVcng{l;c@־Nd~Km6"&|@9#]Z`ìƶkZkh l$7s U$7kpcĕ()~m.9 xZZSQrJ\"U#kkd*y9pYںgI8Yn귙o/ƌ11wmw/g/ǁ,r0ck0)nT.vTr"媒)Fp,ckg56psbf[r\rr5[w{dsm#sws==\3sݳܵ{ܵ^|Ɵ͝:L%B'I Ժq.=@^KBxWpٜ*B0 +gO.KYT,)LJ᲋ Tyզ<5tU*pKA17qY.P_̉k9f@/Rl.1'J1I$ +LQp6EJ\Sk3*) Tձ&2I˕b6 ~qLa .l#*`..8Ig5դlq3*2 Tj<7gpN%֘.Tʳt,88Rs*qN%r/nI\ceX2] xLT,Y()SKq5a:RKQL3M5f=r|)ƾEu\(zjZ\͑=-[(YU\ik--W5Eb,k45&v%W[?Wڲf+J[>Xz~T\ͳ姢j`b tJ9؜!#]bLT|h5M訶nOE[fCX[-]jX5[͗YC}hdZ$Y뛵nB `ԕkOEUlTk^kK'g+XgirsQ.Ot{6s-~gsk7r;ޝ{3uȒMgcLGfo +x.Vв:Ҝ D +@Xz+!1HDc!.VP@L3&@XhQ'҅_P 0= +52#LiV(}]vw +Y:u;x84\0bK +=45L:fNyզ<*Uǎ; +9,@cA~&Q( V/L`NAg6m$fmtltۥtU+}G#>yNNixLV&9+2t@B"Qeޖ h(bUa<TuZzRLlH5+޹ 4dsBytC5:ѕ62ʣ +A:]bt1N۰6 ߗ h vxQ-,)B:OC" e' V5-"6VX f5, F!g?*uXr1Ha4~mrIYBJ]NE  ˃rI,vQH(.6 &3 +stFz+3gRp'o#$ o6eRYx`0䨑X܏e~q٥Ś8!P"-NH3-2JXʃ@炪 hÆ-M8.1Q2ʣ;@iN]tGg]Jt>.Y +`F:oä dY!̂YfCi2ʺ䀨-Tj:>`VPl^`ڀVP!P +TFpmsA -Q(o$x *svIS1KAmB5 Rc]tP0 & DCmd8q-ӥ2'0]*0`qZxawfm ̨z}$Vk.{ܯAvK !.1hnjz1C6 Q+]>|a< .J԰2a$P+3* N(L4cz.KRGΘ. %с6sZhɒ*6dhYM UCGWb&e -’ K6XboHh@!X +!2@B6ilm>(޶mLHcBxIi0Pi؀)@1)q!2:0n)^4.ZQj.jiÁ`e=ce͈Ge @v`3J'Ku,*ٽ(OulKad0dI5v6֢Q] +tBy`$#TFmdnz#Հ@IIUvȒh,5PA%P/Rm@A/i˦ + K3$/>DB}h 4ކNT/m2%Y8eձ8Zq*q32c:DFCdEcPɍ"Trڍ$rs+ȵϭmSp+SpLmhFaT֙jc 3Q)B% Byt`JYӮ3^ƲBt*D'ƙ(Sa>چ0 HcY0РF~tFd:lXH < (C#j1 BEx"h#x{0l}c❋YRB&+&VT!;Q(-сuOICtp){ N>E ^fPJ :#\eX3)) +/UGeqeCx[maBˆ/m1 mA[ rBPàaFS)<=dhP C%T{\zu#Ie$`$tB%"Ii_Ҿg!(96BaU)Nמ>C +IQ4f$:(2 :B*8L!bx2U-&1qE.*<H :2¼-Ҩ#mrai!D2y2sB٪KL.+9 ])@SE|(t]V?bFAg^ %DA=f .C jˌt l^f }@TV +@—_J/|~ x,>$UPTe0h,e47Դ MN(eL!SyP3<cϪ6`ϚaTTJY)P*ġ<:XY9xY R'Ba082e/||\Z^9&+i~tl6"v(I䊹{TTN ;LӋJ*46ڗo2&G_x,K"9>1gKyͩ]fzt}ߔqf\ :5{r\ +(5@:ӌb5Ü[|bwhN(?p:M?P?V(@m'$fiŜ}="ބwAtrO."k~u9$?1GHNVYˁJ `d aX *Cx75ݦ0w-uyu(g{E$eT1".1S˱}mh_T@ͯnT +"{d$ 3P*JRx/P\Q-$qqϨFJݦ-"Ĩi0b&d5T񄑞8 ^NG kfVxp|#0! s.YO:CT)^v),5xOXBipʸ^L]C/S(t-IiK Φ}TTh`={1xu1)Pcr0Š[} ,@ }H6WIɿߑ:րɣ FD|"Dk_r%($wd}`\e!y *dK.mCF%QMݢ +A|V(ւ#V߿ րeSto9yح}#ri&h8ʶ7(F\~ @T=,"LU2'xȹ*݇F?HlN/錀a}45$[x%1j<=DgUC`V2/,Oylޏcc޵e7EDK +2b<|fmrpw6moJm17䱒ɬzYWxΨxk0东yp9MDAnk<`mB4v +{3E:OΣ|'ھK WߑPa6i# +QŢ:/se@!RH +1řZY2 ;Bgtr +NW U7_;ݍuW|գRdSpP[a8,` fi9q6KuV%BEW^v5/xKo%n﷾qqNU4OhJ6%s-qq%c7.o  ⼴_rE:!nUvRi[ +h#?&-)pFYMVr"E+ $$+|na0=D[wOUD$6*jMH&]>]dĿ֨>9n%߉55]?c? Fſ9^%:Lrx;ln5R҉SIXZU4WT8 +t0oIW_Y|0{Q_cDܞMHS5E%\@]o&4ĹDXnw 0(}/]9eTUoB/˛"Ha[f3 ebne%Bw7iIP5XyTjQ"3fC0N2PMSW شplpH *"ɯƕ%ʥn#%57? Ȣ$WO@:%cA-E*D:6b31̘=2W [h;PJ ^YEZOбgV)"KH[9x#V;jJXn]B5Jmr/mk O(OCJGYs@l$ iRޜZl}L. Ejm6ai:[SEuU1Hq EŴ||j$g[$@ZYHB:Q +)]P Axla!Kӈ'# 6Z'l~5䢨0c4.|T7yz ?-mYz|0jP:MHq퍀WZ)A { + dPopTI5X u/ |BLk2e̬gYsE|<1 ^=;]\X2̥ge߹^Q!r@tςmEweQq1 +ail/3'2;^2ycԂ_Ƃwl%i|\?/ EbGk.bŚ 6趯jN}^8[B!v sDաJ@#Ԋs[]n#1397(_Uc)QH:g HoK1|?`Y!A&&!b鯏T *k$=p#gVh*z7'ƉR /`e"ik̲~h",A&C/? ;aȎ0$-_#MG^~bS>buW(5Oj_U/*'(byPOUo %g?B[/ r̚  ;g3=ar! W{Ջve@CkLgT&bEȁzjơ3|B9@Y@#{7g4g 7'`uo㕽}یsa8C:>=,cɸbE\ڏz86iFe %e '}MP(X 3slwZ*{n6Q`؜@nip/ׄƤxu@>ac  Jz+/E*aP9FGʟj"Fd,<)$7ذŀΙ%Slp8=Zr:ŻZz`I'ϋ)g'9ݛ7jL."껻{m}Yw_[z# nBd'vdyqۻuwƅ&zwXfﮟ%ՐFq>/864岀#7-cTs< +([/73aiهڠZ*!w.9^gb[~U9W:Tؒca!&xZ*5f>!8rzƭ].U : 2(W: r:V/[v)jp]XwfDc @ ~^׿ &ꫡսY1ZЈ)j lTuN?;y'\jX>b/MFA"m_jQ;27rCnpp3,ONLjw5r*ə/|q&) G]"o`{%Զ%Mzeb6qYeMh\LPZca(^ֵ>lk~hE 7v ᄖ1s>OޫEW&ŜG\A(cewcF%~[t')?)#"]E7r5#(+HZܣ;ߧn\tN,3?˙ +Pf22pxbɞI4dXJxC+y#SFŢ2W,^۽WVP/V*ִbD|֯tބ\ۀP&V {0^z|o4?}.E#EI_8$#!P7V#.:3R@`B{M${;tS}6Ů6}\bkfӗ%*HNheu"#'`IRc6+@F,#E"[࿰څ}"$? + J +TƠ4(}@Jj5*Twа u{'XC*xAaN:-(r^dޙc$ ᵥaՆ˜Xr24e%׍B/ZMP̣b~5u9bЄS&`=.92_{?.h4{hEʕ7{*NμU|8}\Bkwlj8/s) W˰᜼5W;#$Lze 7-U~h%+MQHneTIM)Kx>1[ScMoHѡ\PTs<ѕ$:͊K!ʎ2*VFDC˂,*c6o51AS pXX[V˱hC(2Kxn=<,8q-=cN1002|7,%bQ0)N~xJ6ĉD $Y +Fd|dr)0pA2L@T4>_ckfY%1ѴfbYD:,b*҄A/b_cYFd#?c@ 5Je%[/ɠhAّ$p8Fr]]l> :W*QylpN~@O.擐׊;Lr 8DҨMk%99Hq5 Fayxhi.ɰJ.dy1<ՠX$Բ/+gX`9 n62Ȇx!+|Ρ]<5z=zeXi}tתZNk2)}2|LԄ*ʸ# M C[)B +zV\?1hD< j^i9?"ɛ/q>K'6%u"uXa5 LWs1:'u/;_aV}_\uүVj݇l78\/oaVv2! K 燚?V22iP+<; Š|@m[!\Ё! 9@Xe}"YH"{yZсu.h W#E~=8{?zW*iY1x{v%v\6z-1Ԓ!|F}y[) iPGkˇ4t%tX"h0Ua\/*ޗ;qXv>;c t 3􏫂pͿL ऌMjF {:`уH7vR;˘ 7feDCfQ^1uPTЗjF&٧}-` @TSy+ЎC,PѕfWV&|_ p/9gqW2\k^(u v*3T6 vN >>M=U Lbq};Ȣ'!- S88P'OYMA +q.|\rQuZF_zKo@HW&l Ѳk0F@ m!MiyT'PyhC3͛0RM\ U[ + + *,4<_%gd(TI6fUxf7XJaP=\ni)mJĴc0:7\wtBKI3L*U#>* H#~$ ݌H>]^mϦ= :v[fm_C+҇eQx$3f )XP | ߟ%۱:]pWUp@gDE%\]%M pz]4H@d$&b]{'*4_lͨˍ)Ď_y5\?t.o͊'9~n{ Al{&۞_7CU~෰XJ Zfb/ȃ\_^,Xߖ*_uB@dF9@#HEX\tqE^'BUsҍE9DÖ>wUxjX)<RdP)l.!( +M[SPZ'7%їh.-Qied!ҬK-5ux T~u1"vVx.uy7;ǞT= j*F}T@@b2a`z^Iz1G t`  +&Hc\eYDC߮(hs_m[:Ҕb^ict/ ZcHf x7& 0#bbK[L ^{?Fb*kA(:CpHP* X$2ˬI + +j'd/1Yl|>mtHe5u+wcX($ (ub`Ǯ_U)<u %1Φ[ԑ&s]֛=7 Zxv1K~D*H vLI8ȶrF]S+ C<6+7ۓfljd2YY}M"j$b4|HCYNztۛkd٬{=%ByȦ +zw|֥j<1StJؒPl=:@ɝѠʇF@2K˸[s sȕȳr[),MJׅꏋȵ<Ȟ~"{N'w$= i㟰tF잮M/4n^2Qa;UxVooK ib(GReXȊc#8 ]:fB>]VNAȐy:@@U .%$ԯ{RB@3̱.IprpR\)!@T I3j`sXDc,`ׄ5Ma ȴ$h0hI8azZ~@R%<8L.ZY \.*Y-zLnk*qF~QӞmsceI!)4?|BNu5=Q[k8Vۆ]$DkRd!fԆ&;HWs)Bz^# S!YG;QOI qzu-)V gg6Յ˴ !NW!(ݒP+ݐLvA_ϹYUb+ DϜ{.pA滿`@#M*8^Ls^wRXGr+WgM&nuGmk෶PM4oхXG0j(OSw@@H=AX;FNWxcC Xwde$E,qBV:bdчVÿ1 |B'/-0?P>*[͸qsOt[*Uk4 +)I%5bZ"^zT3W?ߤf\mq&{bΐ-*K1U¥s$E!(yuȽOh!$$_q!;&63K&w0Yu&8>DjM ]P%ŞKޏ}BJk^"zuؖo|V$e '~x[D)c=xG!?gգv\,읪nf\ +/P8t(ZnSt +oʪ Bf:>h +P8 '~a,b,o}>Ŧk=BLlE,1J>vQQ>j|]oQ8!ɩ,nOI 'fnDx&)ě endstream endobj 15 0 obj <>stream +qך7MDVq5io#DxrH"ؘ?zr\M8Zf`gjc.Bpq4 M&"5*a7$¯hXWI$ EA(1֧^!ThERdq4\Jh+> Yf%tb`6a )K1-ȑyrЮr> .Џbs*Br8!FSVz]O1ge۠9x5%xJRL.4aU<@ŵp *_GYӁ@]r(F5Zܵb" ApGbpPJ^M3B>;jLgm. tn\k"Bݷ%sWl#V62c8Z"xݡV +(ڲCj܋iD?tY3sa|i⃰_itFL4j휛2&R'Q$fM@t+\d}Z2 QnSEFG[πI<{dȄrc#«.\D֐ʽO5( {L1 M3wБ[ߑIS 㽑gM#|TZ70Z%47ŐKSK890ȩw* 5/O2FQ1iC3eھ͈B%dRۓ,ϻǝZހN5% : J7㲸]uc.NزcӠzi/<dq8B +\N8Oz;3˹^-]#|"PbJUt8pJE~v +ORpGJ#zꨂ(WΗp0LIdquHt„ƽ &̡$MA!v Ff5.(JD\O؟ΐXD'9{ +JX*nuf +RCg:zFTrjIgv};Ǩ@XRIc(ĕDS{E s~ ۝@Gfe"E'S7vɕ]Ӥ8A/t:+4p]82B])Uxmmx-ڇ+~Μ ƟϺؐ +ܤ]s +fJa;lŋgNE:4eX%ZM%P2]Y],W v-N|CLL!_{)M=t(ZW=$$,\ Ƚp3>Զ)< <D1~z 篓J 42ׯԉĸ|GofQvAGb0,+EX0QRx!41H{\MQ/lO>C?(-zh;h5 +)86 +g+*Y?qne^#ұhLF 6ߍxJ糅GJOU +EƬRmmWzv" ܔ0y'ΌVñЬSGh@WРp(%h9Ak͇ܸ#H .=('I|avB`F/n$ kwCrO`)䟩}Md|g/p_N&8!9A`v3 N_Vhq nmF fuٶ~$K +WONLPnEP~+F`4^)籊=1n/ʪTVg[Yb2V!;p_i]mmOr!/*.a1nQShg4mE9W T4pRsWaF:\鼆ON͋˅H$()ȝnDY 5;ݬx@t F zj*-{v<*3NMnfnh ]D>x53FA6:$5(vLq6zӅ 8{'K}:~{:k-:pWu\/k'2۩u?őosf͝`G䜕9 %ἜT2ԉw`ZM_ +axlHU+`ϵv]ĿY1[ʙ%'33bb. Zs`V Lھ27Ur ?#I4 (Zg4q}f<&iA mJ(EQW\-dZPq~-^UGX<\Y}Y4(~1:D, +34uXyU0RPMă@Ptj m 2_]NVX^@d +|\bGH9Fz +gNT1$]&KW꿫`NB$ !q<m6_Y*S)|qHopmHxS7eOD|0nvNڦ&h!i'v3 "ZZ."d"tQ "ҥʵT! JMH]*E"X:̌as\l %=pc\]}g~9R C,nMHcNS Z'06> y`lg`U,P%ƂR'{'5d.^ *HuhP_ ]Gpٍ9 -Q+Z%HCSWOy˗z + ,!tsc(&z +9162( 9H*[.";Z9k{}*Z9Sz0OZΘe䲞7*[Y%~<}B&J&8 CV32Ky +˶h&aQ]r>/aζlPiI ˵Tce+f*{\6Z%@ ؄ 79?!w K-Sď(]Z6]eG2$9v! Hl /(z[N6zh3w%՜bm;H_X8U⼣%/4{ p{*Z9שU qO +2'yKdY$R£͉B xT;@VilHnyVCrr`A+y-\I0 t_Cm~18 7!H;h?2Xt^o͢^0>rsˑ|J,!#5q^ً=!6 -#VW]po6%AK\Ԕ̄M46K!xю'l^f_%T9]ЮR"U/<-Ϡ 3%qzY hړa,_!s+1H0;gGz.,Pˇ;NQZP#6")$7!91or&Bl]&'ޮՀ)M9.FɊQP0F '+ㄟlފsjx2Ji<{-HH[ *T$'Uh^_c|"j;7}W˱Oc_íŜp6d4n t6:~PŒ@ qY4ǢFu8e[fkjB^"AzD|TU +84:>В&]߅ *%u3 X;pjfUR]c>{XzM+ks*q KkidyOFi ߒey'S D.0Akpt:׮+(:6b!N!hʃmmDL'K逿evFKS{hvX +p#1(>ub#ݱcq`.5@*h l".hGm6'BH\ GS'#a[,O)X1a|B +A-3jV;oYJ-kwja,7hCj@x)XX 62,=pFb@ zJC<<+OGqbP0Ԧ-K*d(*g6>0H Hg2@DRe%(p)M‰ف`yh"\[j8EUvs(Z AV[ tBA@Qcl*XF$LxJgDېGچfj`2̓/WBҾɆ_ [#)F%p)%a8#Vϒ(PAʈ()%%Bf>#x$VG 'L%7hUI0pGIRp)ad%cP k&7THDPh d4`tT`0V1db qt0@P*%4=:TŬbFb ˰ ˰R{uD2,2L%`a!9DkB*A8r" SEh#((})4l D"zH 1PZ G˰C5U( Chmx42> i0A$2&  HÈ6L +4\) +@Ð.Ɉ + 6gbmP $E°d +'* :} +!h'"䥒G,c`U\Prec!l4@d`FHM%TZV2LV)!8 @<5z 6ODQl D¢8 +a(a`A!28 D"54%Ui-d> ɕNEt2 HCEfɑ:iV1j4)0bӊԡ9l-,!amaS":BA&2lȰ +8qaL86<Al ˌN*JPgcxSd'T + XZJI!jy:>d< Y ah DpTP8i +VV2lWڕ K)-7j#Bm>Tp'ƥi FTk[(R!Fr s <4<ҡNHG½^ +S'- IAi/ SB<$5")IT 'JJUx%3 )*hdA<"V =}(< {!RqNH>cVVFnH g&28Ts0\T>D2AQn oVVPya#a2Y\$"#ɒ$F|AЖ9l'%V$l"Dp +`a +hORq hrst$($ģ)(ft0 ӠU &* H + D)[8N)x Ie6Cp)x* @`(QzaRM:xT+PJDRJ;P6GA PMeX-dX :70 2L %aHd<@V(uxhx :6ɰa JF6Q%q #'b7u@YlTD!ܵZvdb@iH/ AF +QJ(AeZ-Mf 3 "%AEdujQkD`Ӌ1rJ f ˰QB8 `"0* VF2 pQ1TT"h#bc0ex(JC% +HZDQEwbCL2,V2<f xZi%30kpGM3"2:k@aD2 +@ 0@ă)HipP2(Qd'mh(@[J#@HͰR$*N%Ga*Tt<@HD "#ӈ6*'ш\ 1lIyieXqBRkJ(-hV01^HB[-oC^*Qb:PFbNdԂpIEPPNK2Laa"ƃXT)*@GK6> C:(CC\aKkIɬ0n +HY ea IOg!ֳdX@Hh#+<éåՆf[4Ֆ_!GM>J;Ï7vro|Nݻݷ +_~ jج zkjfs;6|o=|1ucW؛1~wzj|1cݵ^;u쌾/n?~Q?S[a4?˘n#]}lߪ{:ouߛ1yatLajf_GMY3> >>Uװ_c!}vywGav+vه߬~|.na.c^M]=o}П E}1j 9}UrT/~lByY wԸ?_>.e2t U:c*͆"7Ǎ]~nUݰ#]ؕk=+孮?}ۭ^=_Z5nK>tqac ?!|G|p2ǨES=Uțav>ovn}*k}vu/vS>C}fL׬ =aҕ>`u]`:Kq#p̘o3B߫"k>U|H}M^nVW7ša}Fw_U{ z{cC׸Zzk +?k ^3z .+IkqBrKb GQVFr\>aFNT^4X꒗%BV\h>NLY}8T1X:$|@84^J_Cj>C@CEhd@gd˼V#l%+ RyLhva$(,d#uZAo:Md : ! s LF#V*Au4 !ٲc[$hIE QlZt(hV!ROiI=-+M<MRe>[ą{(lfO&BvhlF@lɲB(XزESزC R(UeYBZ)@aVP^,+z..XBWHkeBTx9_m}/>~篟BvsϑsFMfVfnKVFo~|Y_sl_UB 7~sV-[2dSY5~`热=VO:.t ]a{=2s-Ng}Tsar;Cp̧3ft<‡!܌0wU 3鱿v3wԷjgG:ngOy{o>naیQws;3c`_ :G㘯.FՒS3>skƌ.BmDZlF7s2z?tM۷E9=+5=>엮a7wzjfQ#}սnv䄏5t|c{ѝ[{m됻~EnT^uͯ9w?ge5]_Ǝo +{CW|SU*Q=ovE1wwP5OU-|ՙw_7?ruׯ mWs×=[{;_+6=|S"t.|f긹y[[l}!TVe_޷wս#BOW7]Mcng7zB0wj]+3|__~>2;1+?_5t/{O3y]\UfBwuansno!/TuMU#z]d}0rƎ7Wy\ښէ\Q[g+ޣS=Hy.~BdȾ06?~5#T_p=ukΛ~]jη1z#;*tX;UGU1vy _{w#1{յ't&ܼfpa˪Α9F穤* _C]G~ [1%gkχϽ/5f|L122lJKDU!` }i:MXE1s/7۰a>F⏫>a+vow.͆!X=9W/_3Ԟ{:~ksꦻnS=LwHښ.C1BN~!|}o;F^^\UwTp{ LJSaƏ/*ԇzrԏ|coFί=\w|{awa;}19s~Ͻ"nVgU|0݋1v|wz^0`͂)E#Is08 ǃrhDj(:*EaP aA@A CA% !?7UMۋy ^`SMF9M;[0F=dGOGN@ȜF!}tI!`3Mt}tc0f#KuĀOE o ikC`0ū5h HE(IM9Fd)U1DOk'uYҷW(Jl'||ҎaUb?Co׻ qatѼ$>ae)6j rݨҮW槾yB& +X+ŹȭS۠$Y츨J-bz̧M_M\(wQ-zd)FŪѓQa?Wj^;@"& )wp/G'Xl/ӅF9"|߀Cyhtעs eEx,"WJ-ĥTP/M!n\2=Xj 8hc!%\w9YCqjZxw((cF0Ul +} ^獋T2I- ˲svfMnY.DS1bdwF?βYjW[[jwWf5O-`qg1,m\ y ~H~ӓ5ͦ6OF'Y mJ/u). .qJ >!Ec/PbzgXu)M][Mv5͆g@_ԹQҟfu"_1N9sˏzJCfҷwC. E[R utDgoҊr3v=:y-76,h"{o cA80ж HZ;, jEWI BO#b%aJمw6m~s, ܌7BWU*pN{YWGf ގɯ>$f4fgHONM@%x+bLz+3"4<oj]BNgvf VG'Nq0qp*A1]mP\;P@fHd1Iis\zƟ4T՛D!0|&9L%CrN2 7b?-+i ҍ j8ޒ9f2=2b4}K:cWy90lKR=oיI'v{lROG3+k?S61{I &S+0fxuFcST;cRMoO=R*肳0} + UL=%4ahF*rݓW?\P!0u oHԗNc x;hGO?*B+Шw]2YTɜWm*δ3o)_׻hm)6b*,O>|J(Y[jt!DE< X~HN !ċ'Eȑ@C6ЪTL+g FQzpZ ~/z̛zt(XN?"$3ђqDCJ1v"6].P xkTBQgfQʖ +ў8J#wf_qɓl2@ λdQuuj_ASYFaB4wzr96=TF) XLPѬ.Ig*bA*4o^WAC! s#\QٟCr@p{S{RѱM6fgnYn>LcQ8 N}?l;hҎKD˖ir."A@FA̋ʂdLln3!fMpK4Pb1d|RVI:7cL +u+QT(*& ha̠b, GT Nu]"|'hb 1*4✮s Amn%q,ءWBfIqyZך*VfU"Li=\=d' /e7QZ1):xxk% +,MIFؕDl}:uǶ!q2`Sb&YǃSr??~P.馊ijK DYs)!m69?.) Ex.wfrؑ´-HR YnӜ~\YbkR4G}鏌h?8]d-ε!iAg1U>sd($(vL5%"VI;hL17A1q~(Hi\1hX>pTp 1/WʍjͤC2jf1;kf +ڗ,kk Bo$ 4(>9ٳ0ؒ5sј.RP7(|IMXR\@;9%)}KPa' 7%J^:-Y_i Qô3{wk D e8hV$Rkȩ/vŎu4!*M ВS͔!4Ar2 9!C];_נYQڽx ɻu̫]>5 id*f ZD13ڇȡ s?02(8 (2Ы, B˭7/hyOddJŪ.ǔ.DrRo2]8ЉFwѣ=e;0ayQ%㪯&Y_i&h<bYI7u3 6rj|fؚq)YVs+3xZS/`#e%ek S76,D8KJ7li4p [uaAN?Ұlr0ZM;3!̪ٗ0 +ӗr+\WIdžy mnJEKoWB,bXaTap +Kq$/\! pc:eVVF`f-#E'7RGmjmpG3LH_%KἿ6({դ):%L$-,S'!!ip|M\:>?S:zH2i\mǰ,1(E}"simj,b8@JVi&>^KVA3Qdjj'Q5#ʸI1c ~UArrb*=>uw 3]ob]aHb(a[Z1K@Z&x݇k :"δOl'0dmteYż; rsIEjԻAYí˾b*}>3,\̇B %%]VGȼMa} , q4eHxF +pꤓYJjq-0nLƕ 4weЦ" +Pwpz3Ň9A\!x@M#./]AmG@7 T,u,;śdt,bmS&8C|pm0\2~$;, Dc0V i&?#9?LcBh\Ks +fv7ζ6{YV"Ho2%5pzYIrxlFZm C0/Ax-F(9ihGjrqւ&DS͍ Y$'jMiHNx r8$eL]G.aX<oE: tTiѸo`+yG2xeG!bV,+C=, SA5pIvdck8>6D u%&5I z7X,W߅J2m~IaPb<19I$FM*gcQ٪F}n=Vps֕p-2m^#*Hƴ_Z;&[D(Q`E~%/x+Re-zMK1s'gP( +@l#\ 95mS0 B^o07{psj"/d}MЀ[K[}%VPCP6<䦥NH9/Sj]{&nɼEBV`ߖF;K^{{^u YǮ" .hoEfHsI.3r& +23M~AlQokv_"_1K 9F9V7#LdS%ȸesj2~^'OL){ Ɠ"dM4'2w/i4d<7㙑!4rh0_%2Nh$q4S72ne)2wDHHf&?2~IEͦMAz uHO{b?~(uf2wv AO\ ⅛`w7phܔMc#;ΚldeW;E~1>QˣD~OxEz " Vm8e#>=$| &8G(W)>Ӣ5uke_BqlAjb"Q}ږ[|Sx+ߤmx9[>.m'(HˣPGD +#·: *p,߄?B4LU$1x[Ծ- +_F fN 0pn)f(\c&}ts4W޶g[-RQ?pyK%@2MC0'r̀vMz=M9K4VH-(4K$CjȲNgx{IJ ^1H } UPtwp/X # o$LG'냢1)#zЖL<mÏߧ=4ɤjm&vi?o«mج{hM)5]Tr l5kِ3mC:PJh +>B .nkn47[›Mۿ!錨zl44b3}z[Gm~p6ٙ,L&M_ 6ؗDLEP7GFX:%aqbz2J0H,5 M!B3OZjK낖] vPیi`;="|7Yzz !O-MD~dy>O GSLDDpzLp1L24[͉zU!A G|ߝ>OD.P).l9DM U<%V? +Pl]%i^y|5{ E}'tFCkdz)z:Nsj ϟ[d*X )Oa.AC έZQj̮RH>QyAR4K )NZE&YA9ڮ4yDTX2콡ćzVPC1CdUsWkٻ(ht]X@R<;͖b ^ _}u3AMu14#mj& q{{nO$hFt>H^~%޴~S#sϾ)+himn?$s2~L~Ե\Tq)?jInn:{/k6kTL<:X a7 +`Əb.:Eڦ]<9wLcv?ˡn㫛:h@ߜU%\A7*+3`_928I[VDdD>`ٰs*q++BZve&HVo/f ^)jE9_϶?STGP>Lo&W"Hm&5~u[Q0% eԱRLi;jE$, 01ds^)C[4x?ف-Z;h3.!. Oʪi1Ic5 0PdJa.ÈQоo f7IȼSS#Ah6Ή˼L +cJEY{) 62l XaSc%C=..un#*R9`Ha#Jm®&I^Cg<(1 Mx/q]K&l,GP{bAQnb -|pg+ OKYNDJ\C';&xwWm1o4l}E+)DB)y\"M  v0H92?IE{W(0<ͧ)H.I]b`^&[|O8I,h*ϯ~eOnķhjՈ2n5DR^m|:[Ѽy*8GCn0-֙ܩ`G>v*ZQ/>rbH;.XYRɐ(p8"=N$|@4έ$2Rݚ`$,X(2Y9nwI3Mdz,QZ+SqCnC!aXF mA8] Z0֪SR|,`Q +f5Y,:EտD~? +u4~MGHÛ>Ùퟯ[[Vi[Xiӯ~*ʇaAWK5>_}#@RYi2&ExDQmA֕zI- ͎P&"iJ6@ fZ"4 +7:QɸIeb9צ׆5rb|j,;hb%Vg. 曩bٷF)Yw,^ O|,v@Z mxWy}Ƀӑ6wDI[HW@@4 v|oAĬ[o +ÔKLE`+9Y:-'L5 +ϒ]~n/lV>lO;PI 'c&| +ly4p^0S)ȍK+{!crzH6c@PpM!;0mO!ht;v  hu%PwY%2!Y!L1^{$ .B1\ +]'=@1 +ZPT#Dw /|{0낫s -.v%>7!̈́KD'> ~N4.{}D<- Qe<)F LCPBֽH\-b|is$\!F\H lLuC(85*4} `:| +DcḀcK?I_"G[O1&3+ez4-Ol2[~A76jĻژ[Z 2 kK#MQcpN)[53Y>S%C4̔O`bXfbEZrȄ!K DU5Tl+"ؿ4 M58wuJFr#xL'cٲC]QPYNcw,qrBL|S"2,L  +wK>,@ @1r# )s-{o 69 %`?5i76sJ z .KzwNHdӵi6~{sɬ28J$n$. ѦAR ҠzY, ^>56|Q00F9 ("3 "'eõMfO.@/;@C3~vxk*ڨ൱tpҠߙ=17)ܨ*wʠ~h<;P&q1)w=E׺îD^M=E@Hfj>DD2U*ĭ{1 ,ek|̵nOi#-B:gcJs[@4ib j^-3^|İTz}w~"{ú-s^Wz>y/Q)|" +hdo#@X%V)-(1h,w[)mzVu>ˌ'XEƽĀ3xqx +K<!_~cLLTsF-us d%}v0~n$CcOXn?UMh7kHN1F7 QDb~}7hw˕ %C)@CxOe"##( pck'MhxAq= +21&IioR,n1g,W{=moꝙl4nmY#.yB冼3i/"t3tg|)AZFCǴB[M71["/Á@Ax<0p#lIvFl1a8wӌ:m$_g +g)y"cq>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX$6Ra!<<'!!!*'!!rrmPX()~> endstream endobj 25 0 obj <> endobj 33 0 obj [/View/Design] endobj 34 0 obj <>>> endobj 24 0 obj <> endobj 35 0 obj <> endobj 36 0 obj <>stream +H,mL[eǟmݢBȋ# 6ydbx!/-- ,-)֐haKVM:p:3E€@T2 Cع@e$'O9?J:B)}./P^n˹򝎶)%aoتũTҫ1| KbNg1ow$QġX=Z8Ɋ]ڕFT쎚:W]sۥk7%+5nDˮԹVӱxܞY%mk!SIt$"BJµcHI'1=AUs2JLgglRCfĝ{~dxaԻV(XA9m΂( >Vnkocx4ZA#S4#Xda{L,, ;$D,5XUM`z#3s$Sղ A4PcdjC?{~Q!0c:~r Noɋȃ[f%]T?v>+=}lYCUÑ}~ׁܓf4?=ZV.wy$Vm^T/ b*< ~^:_l.*@RNxa+j7nr &`,P΢=Ƕ8 6𛂇C2Ms6% pw5RCvm&=_eFW>8t# Gq!ay`NYLHyl9EKC~ipyO--?( X }uĄ)+@HŤ4Q+U2qo~g@> endobj 28 0 obj [/ICCBased 37 0 R] endobj 37 0 obj <>stream +Hb``2ptqre``+) +rwRR`?> v^~^*vD_)p%?@lZhdg"I`($>dCW@$ ]>faˀ% { *23J ---SR+KRs< +KRSj!ABPi5Zho@p2A!@riQdL0cR?1^: Sbj  O endstream endobj 26 0 obj [25 0 R] endobj 38 0 obj <> endobj xref +0 39 +0000000004 65535 f +0000000016 00000 n +0000000147 00000 n +0000039177 00000 n +0000000000 00000 f +0000039228 00000 n +0000000000 00000 f +0000000000 00000 f +0000043039 00000 n +0000043111 00000 n +0000043350 00000 n +0000044818 00000 n +0000110406 00000 n +0000175994 00000 n +0000241582 00000 n +0000307170 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000335331 00000 n +0000335144 00000 n +0000337589 00000 n +0000039662 00000 n +0000337191 00000 n +0000337078 00000 n +0000042564 00000 n +0000334570 00000 n +0000334618 00000 n +0000335215 00000 n +0000335246 00000 n +0000335662 00000 n +0000335971 00000 n +0000337226 00000 n +0000337614 00000 n +trailer <<069C06BEF91F480A87738A5FF061A876>]>> startxref 337803 %%EOF \ No newline at end of file diff --git a/site/assets/cldk-light.ai b/site/assets/cldk-light.ai new file mode 100644 index 00000000..1eb1e9d2 --- /dev/null +++ b/site/assets/cldk-light.ai @@ -0,0 +1,1922 @@ +%PDF-1.6 % +1 0 obj <>/OCGs[25 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + application/pdf + + + cldk-light + + + 2025-02-01T18:33:43-05:00 + 2025-02-01T18:33:43-05:00 + 2025-02-01T18:33:43-05:00 + Adobe Illustrator 29.0 (Macintosh) + + + + 256 + 40 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAKAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A6c7eYfzL1y+htL+TTPKO nS+hzhryuHU+xHKo332UU2rnVgYezsUTKPHnmL3/AIfx9u+7zx8TW5CBLhwxNe/8fYjH/wCcfvKh UcL+/Vv2iWhIPyAiGUj2oz9Yw+39bYewMP8AOl9n6kTY/kb5ZtYp0+v37GYABllWPiQahqKlGP8A rVGV5PaPNIg8MNvK/wBLZDsTFEH1S382tEvtf8n+arTyzrF6+p6NqoYaTqE1fVjlX/dLkk17D6RS m4x1GPFq8Es2OPBkh9URyI7/AMeaMM8mnyjFM8UJ/ST9z0fOed0leu+aPL+gRJLrF/FZrJX0xIfj anXigqzU9hiqB0H8wvJmvXAttK1WKe5YErAweJ2p14rKqFvoxVkWKuxV2KoXVdRg0zS7zUp1ZoLG CS5lWMAuUiQuwUEqK0XapxVBeVPM9h5m0WLWLCOWK2mZ1VJwqyVjYqahGcdR44qm+KuxVj3lfzxp PmS/1aysYp45dGlWG6adUVWZmkUGPi7kisR6gYq7y9540nXta1fSLOKeO50WUw3TzKgRmWRo6xlX YkVjPUDFWQ4q7FXYq7FXYqw++/N38vLC9uLG71b07q1leCeP6vctxkjYqy1WIg0I7HFUx0Hz95P1 +b0NJ1SK4uCCRAeUUhA60SUIxp7DFU/xV2KuxV2KoLWtWttI0m71S5V3t7KJppVjALlUFSFDFRX6 cVUPK/mOy8x6Fba1YpLHa3XP00nCrIPTkaM8grOOqHviqN1C+t7Cwub+5JFvaRPPMQKkJGpdqDvs MVSryf5w0nzZpTanpglWBJWgdJ1CurqFYghWcfZcHY4qnUc0UoJjdXANCVIND9GKvOPyXuYrKw1L yxc0i1bTLyUywnYujUUSCvXdafKnjnRe0EDOcc8d4TiP7Px5ul7GkIxliP1xkWTeVPJ7eX7zVbg6 jPfDU5hN6c3SMgsdtzUnnuduma3W6/x4wHCI8Arbryc3S6PwTI8RlxF2reTm1DzZpvmEalPb/o9O Bs0/u5BVjvvty50bbcYcGv8ADwSw8IPH16j8dFy6PjzRycRHD0Y558uotU89+VNCsiJbyxvF1C94 7iKKMq9Gp0LKp/DxzYdmwOLS5sstoyjwjzJcPXSGTUY8cecZcR8no2c87l4j5C0my/MHzrr3mLXl F5a2UixWNo5rFxYuEBHcIidOhJrirM/M/wCT/lrVpLS40tE0G+tZlk+s2Max1RdyAi8FDVAKt298 VTjzj510jyfpcNxqLSXE8x9K1t0AM0zqBU/sqKV+I/2DFWLw/nNLaXNuvmXy3e6FZXTcYL6Xk6b7 /GDHERt1AqRirMPNnnDR/LOhtq98/OE0W3jjoWmdgSqp23ArXwxVgGq/mlfan5U1dNR8s32lWF9Y XUdlqLBpIWaSBxHzPpx8A5oFO4qfpxVO/wAj2Vfy3sWYgKJLgknYACVsVUZfzemuri6/w35cvNc0 +zcpPqER9OM8RU+mODl/lscVZR5O846R5r0r9IacWQo3p3NtIKSRSDfiwFR8iMVYH+Sf/KUee/8A mNj/AOTt1irvym/8mJ5+/wCY2T/qJmxVN7783FtPNuqeXBo011cWKA2v1ZzLLcyn0yI1i4DiAshY tyNApxVQ0z87LFru60/XdHutH1O3XlFZGs0kzGnGNBxib1H5fCKUPjirUH5yyQa5a6dr/l270S3v WCW13cMd+RoCyFEoASOVGNMVelYq7FXjP5caJo2qfmF56XU7C2vlivpTELmJJgpa5mrx5hqVpiqJ /OHyFoWm+Xj5m0O2j0rUdMmhctaARKytIsYoiUUMrspBAxVnGj+crJvIdp5o1WVYYTapNduNx6g+ BgoHdpNlH0Yqxg/nNei0Grf4T1D/AA91/SZIB4Vpz9PjTj786e+Kpv5o/M200nytYeZtOs/0rpd7 KsbOsnotGGB3IKPuGQqQab4qyXUdbsrLQZ9aZg9nDbNdBhtyQJzFP9btirDb3zRceZ/yi1jWZbH9 HrcWl0IYfV9aqICvPlwj6sDtTFUL+XvmbS/Lf5NabqupScYYvrISMfbkkN1NxjQdyf7emKp9pXnH Ur/yTf8AmTUdEFlDFazXNvYvP6jTxRRM/wAVYk4K9KDY7b/NVL9C85u/5ew675e8sAtJM8aaLZsF ApIUZ+UcQHap+DFWEfkb5l1mF57CDRJbqxv74yXOqI5EduWQbMvBq9B+0OuKvS/NX5eaTr15HqcU 82ma1CKR6laNwkNBQc/5qD3B96ZtNF2rkwRMCBPGf4ZcnA1XZ8MsuIExmOoYj5v0Hzz5b8uXesf4 zurlbQR0g9AKW9SRYxVzI38/hm10Op0uozRx+BEcV735X3Ou1eDPhxGfik15edd6ZWfkbzxe2UE8 vni7WO4jSRkSDiwDqGoHEtR165j5O0tNCRA08dj3/opvhoc8ognNLfy/ayTyj5F0Xyykr2vqXF/c /wC9V/cHnNJU1Ir2Fd6ffXNdru0smpoS2iOURyDm6TQwwXW8jzJ5sizXuY8a/IhotJ1vzN5cuT6V 9FMhiic0Z1haRHIHelVP04q9R8w+Z9D8vWsV1q90trDNIsMbNUks3sKmg6k9sVea+fpFk/OHybJM yvpzxxNbsTVDKZXNQen++6YqyP8AO/0P+Vban6nHnzt/Qr15/WErx9+HLFXnXnk3X+D/AMtxf1+q cR9a9T7PGkPp8q/8VcsVex+e/T/wPr/Ljx/R11StKV9FuP49MVYH5E+tf8qHvfqtfrH1bUPT49a1 k6e9OmKoT8q7f8xH8k2TaDeaTFYF5qR3EUzTB/Vbl6hTavh/k0xVkf5aeSdZ0DWtc1G9vrS5XU5O U0NkW4RzrIzkcWHw8fUIArtiqT/kn/ylHnv/AJjY/wDk7dYq78pv/Jiefv8AmNk/6iZsVa8pAH8/ fNFR0sjT77XFWvNqIPz98sEKKtZqzbdSDcgE/cMVb/5yNAHlrS3A+Nb34W7isTnY/RirK/zB8qea PMH1D9Ba7Lov1b1vrHpSSx+r6nDhX0mWvHg3XxxVR8g+T/Nmg3d3LrnmCXWYp41SGOWSZxGwapYC VmG48MVY3+U3/kxPP3/MbJ/1EzYqnH56anaWv5fXlpK4E9/JDFbR13YxzJKxp4BY98VYj5507UNO /InQrUqyFZLd7xD1VJVkko3yd1xVlFvpX5pXmgR2sd/oZ025tFiRRFPQwSR8QPD7BxVQ0P8ALe8g /KvVfLdzdwag920lzp01sS0YPBHiAYgf7tjrt44qwy5823Wpfk7o/l63blqt5erpLR1oxjhYOg8e jxL/AJ0xV6j5q0qDSPyr1HTIP7qy0t4VPjwjoW+ZO+KvDbfTvNK+TdD8yXlvHe+WNGuCkGnuTR0e 4d5ZJFH7LSn06n22p1Ve9a/q1hq/5aatqenuJLO60m7eJhtQeg4KkdipFCPHFUp/I3/yXNh/xluP +TzYqkn/ADjl/wAovqf/ADG/8ykxVkPnH8wryw1iDy55bs01TzBPu0bk+nCKchzoV347n4hQbnN1 oOy4zxnNmlwYh8z7v7HV6ztAwmMWIcWQ/YlOuaX+bnmXTJNF1O10q0sbtoxcXELSmRFSRZKgGR67 p4Zl6bNoNPMZIHJKUboGu6u5x8+LWZocEhARPv8A1o78yZtSs9K8veX9OvZLNtUvINPlvYqhxHQI aUIO5YE0PamUdkRhOeTNOIlwRMq8+bb2kZRhDHE1xSEbZZo+gRaXoCaNFczzIiSJ9amYNMTKzMW5 UHQvtmqz6o5MviEActhy2dhhwCGPgBJ8zzYR+X0Or+XvO2peT7jUH1HT47Nb21eWoKHmi8QCW419 TcA02r3zddqSx59NHUCPBMy4T9v6nV9nxnhzywmXFHhsfYmnnL8qdH8xaimr291NpOspQG9turcR RSy1U8gNuQYGn0Zzju0s0v8AJW1/SUOoeZdau/MU1uaxR3PIR1BBHIO8zMNunKmKsp86eR9H826d HaX/ADilt2L2l1CQJImIoaVqCDQVGKsVh/JmW7ubdvMvmS912ytW5QWMvJE22+MmSUnbqRQnFWYe bPJ+j+ZtDbSL5OEIo1vJHQNC6ghWTtsDSnhirDrf8mr46fPp2o+ar6/sPRkisrNgywxMyFY2dPVb 1BESGVfhFRirLPJHlNfLHlqHRGuRfLE0jGYx+mGErlqcOUnjTrirFZ/ybmtb24l8s+ZLzQbK7cvP Ywhmjqf5CskXGnatSMVZV5M8laX5UsJbazkluJrmT1ry7nblJLJ4nsMVSTSfywm0fzlca9putzQW N5O1xe6T6dVlZuZ4tIHHwq0hK1Q0xV1n+WEun+dp/Mmm61Na217Obm/0wR1WZmLMymQOvw8mJoVO Ko7SPIX6P8/ap5t+ver+koDB9S9LjwqYjy9TmeX9z/KOuKu1fyF+kPP2l+bfr3pfo2AQfUvS5c6G U8vU5jj/AH38p6Yq78x/IX+M9LtbH699Q+rT+v6npety+Bl405x0+144qy3FXYq8suvyX1n9O6pq 2mebrnS21S5luJY7aF0NJJGkCMyXCc+PPwxVFaR+Slimpxal5j1e68xXMBDRrclhHUGo5hnlZgKd OVPGuKs91nR9P1nS7jTNQiE1ndLwlQ7e4IPYqRUHxxV53H+S2pRQnToPOGox6E3wnTgDXgeq8xIE p/zzpir0Dy/oOnaDpFvpWnIUtLZSEDHkxJNWZj4sTXFWE6X+TVnYed/8RjUTJaJczXcGl+jxVJJQ eknqH7JofsdhirNfMej/AKZ0G/0n1vQ+vQPB63Hnw5inLjVa0+eKpb5a8l2mkeS4vK13KNRtVjmi mkKemJFnkeQjhyelPUp9r3xVJ/LX5ZXmieXNb8vDWjdadqsM0Vsr29GtmnRoywIlIfZgStFqR2ri qeeRvKv+FvLkGjfWvrnoNI3r+n6VfUcv9nk/SvjirHfLP5VXXlvXheaX5gnj0YzNNJoxj+B+SlQG kEgB47b8O2Kp35a8gaPoOsalq8Dy3F7qLsxlnIZo1dubopAFeTdSd9hmy1faeTPjjjNCMO7q4Om0 EMU5TG8pd7Js1rnMQ/Mnyvq2t6dZXGjSKmr6TcreWiuQFdk341b4a1AIrt45tuydZjwzkMn93OPC XXdo6WeWIMPrgbCb6Bc+Y5fLUM+r2yR656chltkIC81ZhGKhmA5KFrvmJqoYRmIxm8djf73I08sh xAzHr7mO+SvL/mp/M+oeavM0UVpe3MAs7eyhYOEiDKxLFWcfsD9o9+mbDtHVYBhjgwkyiDxEnvcP RafL4ssuUASIoAdzOs0jtXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FX/2Q== + + + + uuid:b2891fd6-ca8d-d44f-b7d0-a65111463fd6 + xmp.did:8c648965-5b4a-4a5f-9f3c-c3e570c2283f + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + uuid:a55cfc5e-3c08-8e41-8fb3-b4d570f1e48c + xmp.did:6b203221-a0f8-423b-b13d-979831625d90 + uuid:5D20892493BFDB11914A8590D31508C8 + default + + + + + saved + xmp.iid:6b203221-a0f8-423b-b13d-979831625d90 + 2025-01-31T12:56:43-05:00 + Adobe Illustrator 29.0 (Macintosh) + / + + + saved + xmp.iid:8c648965-5b4a-4a5f-9f3c-c3e570c2283f + 2025-02-01T17:07:01-05:00 + Adobe Illustrator 29.0 (Macintosh) + / + + + + Document + Print + AIRobin + False + False + 1 + + 1435.982675 + 213.739938 + Points + + + + + IBMPlexSans-Medm + IBM Plex Sans + Medium + Open Type + Version 3.005 + False + IBMPlexSans-Medium.otf + + + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + White + RGB + PROCESS + 242 + 243 + 249 + + + Black + RGB + PROCESS + 46 + 45 + 48 + + + CMYK Red + RGB + PROCESS + 186 + 32 + 48 + + + CMYK Yellow + RGB + PROCESS + 244 + 225 + 31 + + + CMYK Green + RGB + PROCESS + 39 + 138 + 71 + + + CMYK Cyan + RGB + PROCESS + 0 + 151 + 217 + + + CMYK Blue + RGB + PROCESS + 46 + 55 + 128 + + + CMYK Magenta + RGB + PROCESS + 185 + 0 + 119 + + + C=15 M=100 Y=90 K=10 + RGB + PROCESS + 156 + 39 + 54 + + + C=0 M=90 Y=85 K=0 + RGB + PROCESS + 189 + 62 + 60 + + + C=0 M=80 Y=95 K=0 + RGB + PROCESS + 193 + 84 + 53 + + + C=0 M=50 Y=100 K=0 + RGB + PROCESS + 210 + 142 + 46 + + + C=0 M=35 Y=85 K=0 + RGB + PROCESS + 220 + 171 + 74 + + + C=5 M=0 Y=90 K=0 + RGB + PROCESS + 236 + 222 + 68 + + + C=20 M=0 Y=100 K=0 + RGB + PROCESS + 211 + 208 + 46 + + + C=50 M=0 Y=100 K=0 + RGB + PROCESS + 157 + 181 + 60 + + + C=75 M=0 Y=100 K=0 + RGB + PROCESS + 106 + 159 + 67 + + + C=85 M=10 Y=100 K=10 + RGB + PROCESS + 77 + 133 + 65 + + + C=90 M=30 Y=95 K=30 + RGB + PROCESS + 58 + 99 + 63 + + + C=75 M=0 Y=75 K=0 + RGB + PROCESS + 104 + 162 + 105 + + + C=80 M=10 Y=45 K=0 + RGB + PROCESS + 87 + 153 + 148 + + + C=70 M=15 Y=0 K=0 + RGB + PROCESS + 102 + 162 + 213 + + + C=85 M=50 Y=0 K=0 + RGB + PROCESS + 68 + 112 + 174 + + + C=100 M=95 Y=5 K=0 + RGB + PROCESS + 45 + 60 + 128 + + + C=100 M=100 Y=25 K=25 + RGB + PROCESS + 45 + 51 + 93 + + + C=75 M=100 Y=0 K=0 + RGB + PROCESS + 87 + 50 + 126 + + + C=50 M=100 Y=0 K=0 + RGB + PROCESS + 122 + 42 + 123 + + + C=35 M=100 Y=35 K=10 + RGB + PROCESS + 133 + 41 + 91 + + + C=10 M=100 Y=50 K=0 + RGB + PROCESS + 174 + 31 + 84 + + + C=0 M=95 Y=20 K=0 + RGB + PROCESS + 187 + 42 + 111 + + + C=25 M=25 Y=40 K=0 + RGB + PROCESS + 189 + 178 + 156 + + + C=40 M=45 Y=50 K=5 + RGB + PROCESS + 150 + 133 + 120 + + + C=50 M=50 Y=60 K=25 + RGB + PROCESS + 113 + 103 + 90 + + + C=55 M=60 Y=65 K=40 + RGB + PROCESS + 92 + 80 + 72 + + + C=25 M=40 Y=65 K=0 + RGB + PROCESS + 181 + 151 + 106 + + + C=30 M=50 Y=75 K=10 + RGB + PROCESS + 157 + 123 + 82 + + + C=35 M=60 Y=80 K=25 + RGB + PROCESS + 129 + 95 + 67 + + + C=40 M=65 Y=90 K=35 + RGB + PROCESS + 111 + 81 + 56 + + + C=40 M=70 Y=100 K=50 + RGB + PROCESS + 94 + 67 + 47 + + + C=50 M=70 Y=80 K=70 + RGB + PROCESS + 67 + 54 + 49 + + + + + + Grays + 1 + + + + C=0 M=0 Y=0 K=100 + RGB + PROCESS + 46 + 45 + 48 + + + C=0 M=0 Y=0 K=90 + RGB + PROCESS + 69 + 69 + 72 + + + C=0 M=0 Y=0 K=80 + RGB + PROCESS + 89 + 90 + 94 + + + C=0 M=0 Y=0 K=70 + RGB + PROCESS + 110 + 111 + 115 + + + C=0 M=0 Y=0 K=60 + RGB + PROCESS + 130 + 131 + 136 + + + C=0 M=0 Y=0 K=50 + RGB + PROCESS + 149 + 151 + 156 + + + C=0 M=0 Y=0 K=40 + RGB + PROCESS + 169 + 170 + 176 + + + C=0 M=0 Y=0 K=30 + RGB + PROCESS + 188 + 189 + 195 + + + C=0 M=0 Y=0 K=20 + RGB + PROCESS + 206 + 207 + 214 + + + C=0 M=0 Y=0 K=10 + RGB + PROCESS + 224 + 225 + 232 + + + C=0 M=0 Y=0 K=5 + RGB + PROCESS + 233 + 234 + 241 + + + + + + Brights + 1 + + + + C=0 M=100 Y=100 K=0 + RGB + PROCESS + 186 + 32 + 48 + + + C=0 M=75 Y=100 K=0 + RGB + PROCESS + 196 + 94 + 48 + + + C=0 M=10 Y=95 K=0 + RGB + PROCESS + 237 + 210 + 53 + + + C=85 M=10 Y=100 K=0 + RGB + PROCESS + 82 + 142 + 68 + + + C=100 M=90 Y=0 K=0 + RGB + PROCESS + 43 + 64 + 135 + + + C=60 M=90 Y=0 K=0 + RGB + PROCESS + 110 + 63 + 133 + + + + + + + Adobe PDF library 17.00 + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 3 0 obj <> endobj 5 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/Thumb 30 0 R/TrimBox[0.0 0.0 1435.98 213.74]/Type/Page/PieceInfo<>>> endobj 27 0 obj <>stream +Hˊy_zz`qf0wόpkH߉y#'+/'ND>ysܿy~n)^Tr s8>nپ{ٞ˗=\7_.lOOo_~p?؞lO/qOˏ[GW^^[0?}߽}<}?wx-+ fSH/j=YUo7Ce~܅lz_N!5b!6;Wh0uX7ц}^6K0.ᓭah}Lk-X}Y1; m90`7Ki9y~A.[asi yHuvw~$RUeops+ϡ5&݆؋~(|X88=!K,.A:ȧ'b+*Y+(Q)\cNVCTSr\,ʙB-τ! &х\L Ӈ-4?+BW\0CCR Xy|%֡TF'?6 ~=KzY#C@feøgpx#oTNdR +qQKNJn6)YK&7ȸqKSyω ^Lh9@rf 걬f^ ػe4r9ERd +En'Z߆d3*XR1 S?,{B{ 99=&!Q +]kQKgj_62<$1ÿWéJ+ u AUzPzN $])U iR,cD% Cr#IՅJ$H(=>{2U)Vbżh!I (F7S qCA7Eۗ /uLfr%fqU TbCET&Pm)U +Ϝ1c + .gX v/Ñȱ))&&4+!,(B$PUWD%P] +9H˚^EJ˩R|3 ;R=JKJ7Y+hD\qr2"cY"U)BˑtROm9)TfXr>{t. +tgCmAz!X8"Kl4mP 5/k ǵj sUQT83T諈 mQ>"%uݽ+G|`*Y4lSݥsb:U9AcX2p c:{2 99@S <"CuoB$H_}d=~LD\>6i3uCuխ"$j<~'4EQ2(~O8%#Y%o ! ޾شy:O:{H 2{FO銩"L=tw->NįŹʷ.37jhMZwHwuvL-2E&4LYԟqёP)MtC:w!j ۏ_*UbD|bP_wq z`S"HpDTգM2HRa6P)O՞Y@wvh ++$Ek^Mb-x}U8Q{{ŀ bEJ'i:23B>4L\JfL^fuW**Vbj0 +ҤZuL'unנ7yt\0GeۈtJ$uӁƝ~X6E#)a]5z:~RymcA l7 |+tvk EI/%7zQHTfMC'z˒ٸZ)Rr*OZ@ @Y"Jz5+)'!Ku@r-ݟzM'OA̹1oj{#ۚ(ٴuD_,I= 'W! r1K`θW8o=ԫT <-^?sJ +u[U"51)zuq3/4i,Uف^˛.j &Hۼg;ټ[R3NN1Tg)WsR5j=ȧLT?3ͪ!K.Ѡ~fWhQDjRSkj2|kRqCn:RkJDrKl$Z_@묅#HP|z:L2@wn&7/?}R|sZVGW%~0%zOFO"YW]ɼ1tB7?e">' v_G˙P5b85(DD}1ǖZ)R*s!Ɲ DW@,'yHiWD3=`JewH]?0*MֺYZ6@MbP}8U4m_uyixڔ endstream endobj 30 0 obj <>stream +8;X]Qb8%r<#]*p4V$K\t%pHH52>fbr4_^K"%20]d)6MXLY-u[*Re<_D!gD1G5+##+ +GTCcZ1lq9bM,8X*#n1<\0JVm>`_B2]QR8JD+c#p?$&dOJ[rAY!ZHN&u0]S_L[F]G+ +H]oQB$j]Rp3HeE#M5=lB#)H#Rc*6OW9W0qK*cc18+u+_+J<>3RCuAW#ANWVA9F4'5S[b^_sYu3 +pIp.TamPAUBKcsL4j#h:l"9>3C<)`4S1Z[1dBukWCL7&A!<<'!!!*'!!s%sCCao~> endstream endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 29.0.1 %%For: (Rahul Krishna) () %%Title: (cldk-light.ai) %%CreationDate: 2/1/25 6:33 PM %%Canvassize: 16383 %%BoundingBox: 0 -214 1437 0 %%HiResBoundingBox: 0.000000000000909 -213.739937990305 1436.42578125 0 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 192 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 -213.739937990305 1435.98267476687 0 %AI3_TemplateBox: 306.5 -396.5 306.5 -396.5 %AI3_TileBox: 339.991337383435 -394.869968995153 1073.99133738344 181.130031004847 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 2 %AI24_LargeCanvasScale: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:24 4 %AI10_OpenToVie: -1135 509 0.5 0 8450 7744 1716 1053 90 0 0 6 58 0 0 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -1135 509 0.5 1716 1053 90 0 0 6 58 0 0 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %AI17_Begin_Content_if_version_gt:24 4 %AI17_Alternate_Content %AI17_End_Versioned_Content %%PageOrigin:0 -792 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 11 0 obj <>stream +%AI24_ZStandard_Data(/X\D +=@k0 Àda̹,hƏ۶j\P!51I)2ɿ"+R + w壌nbVauVEXQ fJBB +2 C0- bn(-NPA +%e!c;+m-ħN W>_Tt)XiiZuȔo=J!cwbj&PujCf7&Pv?{(T QIT rx5ņby.$˲ ,aX x)EbI& Yr(HVkbb|5P X9Wȶ2*ơ0Mb "rJ* +.ǒ,B +S2+LV{$,egm)Bh4G2qLI[ +22WwӁ$((D6lSk~} 0Q2>;dPV֒mMD?D]~2T8)o^KJE[Lf̛g;1atHy'"Sm!c$uܱq IB 2M6AbRRHQ$Krl^bI%h?ÖjPCJK4V3-IK^1ocY%I+wd*:BZ:%|6È ++K)n/.hP:-1S)EDU*ruBuH=ǁ$ʡ8CQH!v(r8I\yL666( q2e$(EdUjHOMn<JcK(b!ɱ>{]U:R)BCq!xvth }IʇrEdWm ,hQ Q$QId[=R("42C +UaDBHªĨ GYDDAΐB9=0;+Ǒ<^6m=zѠ\8-\rO/VU)Xqr^fB t#"a1x1=6y1h^J'1Ƙ >dl(3 a]"*Qeŋk dPPEQ( +K-F-.|QeY|S"P*Vq(HŢX +zi(\2I$̼t* DDC#r!wXb݌SYii\bfjn>D2I%T$5uz(*BicMK.1.9LH,R S%U9b,"bšɁC<:+O~wOWŽ-D6_ eQ.1S/OC.9#4"&*.D0AT @eQ J,D唳K1Ŭ*) .E,$ +URAŔRHY%I$9'd%8dA$A Q#I ))I&2 2FXHh Ģ ĐM1 Â!!4iȔ1H C2T{.2 ~s!NWs6!cFĔ!cD \`$@8DhP@`$X8Dh0b\& \`"@T`BDppXDp +"0hx`¡A   @!1l0adB☐82h +pP@&2pp +",!" 0P D \x0!P + 4xXlL`@`"0 E84L  4H4@`"@(0pxFhP!B*^3%C瞳55n 7O-&4hMplfRD "$"D, &` H@ 6`m$XT`BDxp0'8l&&HD( +X0`BPh@ +L`$0d a!0аѰH@A"!"@a!B ń +",bI;$_7=r`NCaa 2jgs.@$@8D,,6,8@B ‚ +<ЁI`1Ѡ@D8Dp&2 @`$X쨩GtKoZDyY^.#4{wweݺtHQf>1wf\K?'4wDwII2?w#{Zlr QJeҜ_\%PͿSB=eK޹/qɨ&<{%A*ĵ:hK;>2JW^t"Â>V9lbbtrU U|7e!!fݎt>te4 sh𠕹 s]̭*s!榳Nu~F>&5-4uEwÓUT<]3i+5Oxlvi窌+4gYwU\2ңFsv[I q$K#A[ɂG2@5h }5\xeB*۱2JfM24)U[fDS$ +%AL"ZU&!ݶ'*Y*ZfX)#IMi2k#MRqdR 2L$4P,Ɓb{Q3$h Z:I% mbQKH^)b'ūơWhᒿu91@Eax8P<9˥wWZWZhjkJiGU5:"9E3/)$zHdIݣ d]BJ)E!f$**ҿ/|"u-)hE<6GzWofz6U(w{{jD'oJt&?671tSv!4uћg;[R+5tv'2oWNgXw޳nٻvZ'os=LGg2ydiSy\ğdxԃk΢QZt|h=TxеۤV׭$=7oF,mjL?vl+ƾU?f_#|ٺS9槏O5ӦDV4yiEGxFw[Zt{v\rЮ3W|rNONFoVyyܽ|xC]<<\5qMk#fIiĬ3Zt愈{=j=\ װ"%Qצ:\\9"&yd版x2%U;;xIhUܼijӹGޣ>r+ԡ-U!Âɼ?ܣ"f).!޹D35;/h*>;h{xZSH#Y[G?wÃuwЌQ-ЙY{&13 :uh3FFi2S:dRi. -}ӨRc߮v%JsZ;&ro\Gcgnwh.mvg27>eKϜw}̌YV/+b?vQ1mv2Ϛ-5-\;7|T3e\ou3Juj3<5SjnDu9I_tLo^o^eӻj4l[l+:Z5;92ץ8޲-g?\V˳]]MszjD:%kU"X:[:<={}v!Enzt[*=,m_}z7nJf;ݩ|s{]63S5C,K<_ʟpW՛hGJ}Ytx.̦kΧ?[dfxH>7❴2bay+/ʷ.}L|]]:ze6eE赻ҘGtY;Mx<|(}'ј&w^LjzKf)Â1hGImyZeGk窼| [O^(]W~UHfw nX ,:+=*חYWguk7VtEwS "Â! @cX06ϡO&vJΎjձ}ţunV^L\B#C\߭S}XU|RcVIu*;JZL[Udn-ʰh}iwNS׺PjJǵD%{u(쐌񝅪VM!unYN7tO<𵮽ï >$74]uNU^}~wǨuJwкw=1*]:ګ^U2+.:݋x;W o*0Ewջ_%ui%ﶺR1,^U7-nTeC3//=ޓg*pcT]}TUڊvk{wjtVFԲT{]iXZSgJvpWlDzi^!Lu`vYܥ:0giUNwcu) ˷fYvʲ=ٍFgwK;Vg[םuuJVj՟]yVvHwBo꾺t% (Lpťczϒ-o_~)1}>:S-RmүkOViW+[quuKxrq)gWN뤼R᪝7z2TGz~QO,{nJγڽEQC#1˙x:[-SJ?O"]kف1}wIJD2j7H|Q 9{Df~UMr`6OĘ٧IjDK×Qoբͦf+#v51)I;|e &ݺ)"ؕ7X>ue,Wގ[T3D"|2gidfwzq5'~ ~QN)=-ᄈ*dJ=eSvlJz;A/jc>2D/"V4+*-b*.i +-Z4>_Xvs*-,hjY}f~hvE'F*MϿf˟=0 Cbf1Bd&I @(Ñ}>vD`D*Fx$9f !_2J<$$N&[j^樠{[ IU!I g3L[q9I2ܖ!wxȬܖX3fg4wındiLE֟1N28>]``yD n?/YkO&qsAk 3NAGJކO|3xͭd#$ZȬUuZ8=w N23=HZDp^?t9\_IlT+"N"RvN^R HHB2>cv]F +.vAH"8q!$TS2%urq}CFtF;iMf)bm@Nx0'¢, "dDwk1_dɈn#Ď,-^д#FhrV02gGFd#a@,#oF V<[7$pR QSNC|=NϬNQ4((vt :xakR98hC06X=LѴ-[( @Od9yb<0i /R3"%}^&AzX&/ƌ%JHN(5%&g< MnW^7>7CʞhC|k +&յȐ,0óQ,[}<3)3U,tE)-,JYFg lbV)JE x_!^ UH׸yEw,LTONSLڠPfdRR](e&M&eR('lN7&{H߻Mwb3|q0Q$H`^dRCQ@ߔCFnǮ5R+i *qvHH]AGHU8oBf-Fk Naȿl'L*8W 6E:*+NM*B:UEQeĉ*7ELSH 4NTAjPu õu3 30)S*y;B/iiNM# Ii*,600'v)9z RIaɔԨd+F| Ë Y`Ɏ7Jn:C!Z1j%-(DQ +vl#م( $*R0di|#[^M{_K6]ӻ+eWk v'D6F3P/}i#ppq"o2w/+1t*[N_a/N ~֭7P+t}F:_Nk6d[]WL W&w ")di.<n3!'5YY!A(&̆1OVdXŎX2#ZaNR† k+ R."of3[DyʚU [8jʵV%q1~ vIVYȤp=%*kAn3Naffb³(4FsX?i/m(DNħ:QBf!l2xH@'>  +mO \͎A]UrIo&jp +M6Tf]h `Ff*V(&ɻk٨0¼.u5^_kz5<,^)Ym6W6)]EȢ{1*c&YfP'UAԺa_RHo',v@6s)g5Q7_NUGtpr.X51OxT+K}՟!ir@I+sA Ɖ +'Z/ (EǷjJLUJ s)Ce5i/aԇoλòu9& +DʭL $3*Kg z=E| r==%٠k.qؘ #s%̚lf[p /LLo@yK(cdUJӡM?8דp94f23W֗)b-e2܂3%Ngg"Y].рr;@>( /#ͮ4[ɷJe>ڭj N2JNLD7ML[ #R솩/7b[yolgnSv Kh^8P%Fvk]3pBF]1co՟b_+x /oˊ r<  +ŲY?AlID_5v ʗc"5MTd>XN=vB(Z(Ym3WgzKR5pPJN*y }ՎPK[B-8u=X\+T @6ն5i@L6ڦZJ\WG@wzeIOruBՆԘ#xxz4ѫuIV v4#abA8ƫEa[#zȱ\G867^K\W#Vo݀SK&0 n9[s\['固m[&Bi W[ zoKՆV⚦ +tD6pǠ \qM}+px?zy4?ij]*i,x~dGѷ"%8<sZF\#5gtAp͉7~59f6\4f׬#6kܮʨk淭EkGWUzMfu8l܀MfP4Lk{$ljo&Mz3`34&}hǻik PSbb"w]: oeYJ.MH]r_j-oCGQ0R)?&zvA[`X+oU}?sulvKk7a GkHbf%wء^+/.A+pCBQ|6 \3 \ g4k[UC‘Iඐ/Ovtp-;V I`mqC=wĨ[ JX ߂,(`qoADC=_ +yC7|cM᰸AJ$▇gX_^&f{si {'ㇾ~PiM7.wm$ +|0:C"ʆtY>/>' K q}8j琐C]!V3ޑ[̡r:s(Jf/Ds( +wjS̡13b/g)^ ȧg);feC$k, Skw*a$,ǭ=K1N~Sye#1-z`:Cٖ9c-tQz8O/֤bztTd BsOp(0٠' b+񉃭U +X@>= lI9SzAĉw z_.Xɀa'*X!O.M`/\Bp]e_Db + \NJ%ٮ53Ԏ%.$d(n9ˣ^G:SL ^5{P㈫]TFI܇n@ĽhbbkTrRByq`Gl3xDTJJn4PKp Ȥ&hj 24$6 +X5s2BN^i\:YqN_s i^f+ };cfѯam, +Q.s_)`/U#3s1  ;Mv^rx#)Q5e2.E4X%ƭw7vbX'16hu7Pa!hWZfw5r^z!V'o1bC;iBr&\Vw!T5k^_xz.#BTHj cvXer/24L%9TA洹 x |H+SoJ18"/ H橇 'L2hDIE'=_8l?kʣP RM<=(R\ 0߶g3p\<]\K[J5"h^\@2 +x@`{-3{İ\UCgds=]5v3cTr滤FC#_nY`+^42CޙFlSiߜ&I `R%cQh<ZAy(zؗ+ tm.u]3Jhh4olKdH1Z] +js2i< ](~QGbTheIM}Qn:DP3vA67TbD +?ƮEoX,(>35KJ+>}$Tz|35˅z +~{!PaBrEaAӃb^X  ;ɸ)[\ޮ~Wqr(~^)O>5@/(nd6Q1fI% g)c틜R$&X9 aXjW |; -؀CB@zBiMW|jZe3-Ƕ 7đoRf`I;FYjE[ƀ<ӟ3,GZNnrdgĶ{y_"[ZGRf^ՇqG>w[t̀U`{4W?|.|n=i,X݈&'7FN膉3#ʾ s!/kCpdbDez]:0 ׬\Ķ +u'Qk@/E+$[~#zt/_9,WiPlVRu(p TeHUfUlSi (g`ܖ$&5WGG0ъ(v{aq~\13satY8 :R"=V?oN ה^Z-QܭxBӘwDp_%!3 ERWM*"Wy }IK{;8 M_ۡw13졜) Yu +i=R,s{e TZt`~l_=YzcXW_l8ת]+h{sb ׇj}x Wfsz;]{[ Oz\@s/ _ѽA/+ -8ZP% e +767f۩l7B/!E`t:RJ乙eq`HMλ[h֤\}ߊryE/S@fR!DG3 DG7Ґ&29gY|Ra{ܧ[2,p^#'^>k3a\V6 M.Qz's+ }D4`64-( ^=}NSm ;K-5R,ڄՕWiND4^Atf&h?, 2upT;ZDca=bT9nfZ  hJ ~,:hbU Z2Ed7A H:C?&LPþ>햐`OÆIif |-(L$nNs !E#[~lp>7(f" |аcӜ 5Ec*HPٗmwA ;pTTlkm +Tyx)c WjtC};t:YbW\v0ЌbS~, bEfsr=ذis8ѕ(g0CGi[.?uJg5ZqMIOIcL(5l =F%?+_ +|W5H<&Fi8+ob_wkp_O3GڒSelY W$5r!"nVtlxx *%7x]-6P/t?_}c?:SV [hO'xt]t퍎yW$?4LM +~5o鏷Ҙ][%+/tG:ږaܦUL)]PIוF7'P +Q]oiF 3I!DWIɽ{\x'Wr eJ.rf9Q f_gR8Na`hwM(܌χ̘o3آj7 *!xd?_R<#n.m؜oB1yr:=e"W;<?Gȷ ܢ|,+ YOReeA[2zyb{WjvR gĺqWR_ +%{uP*=ynM礻$LNjȵY7(ߨ<+q#?];ǣ +` o +J7ew/{|38N*t-9PiyL`7s'ly_ʟl$qT+J]kg]331W)nȀ+w{΃ +M-[A]s拾WmC`^?S]rf 69R&`\s׮2: +Y_zW&}&jhSQk-_嗐 % eI|ly=gqSj,9&O9A2萩|Nz8)p& fFJ2} -̔puPMj!Q}hHIai}F%ړIFX4Bz"16DQ-pxOU@ɽ>*ћUu$03 lm#jwܫ!AlDQR#O_ф&&@|~7Ёh_lU<<%l|6t{@Az>ĠD D,[^mբ!xk=57NƢ~l}ҷˀ 膕Se=Rv91̭z"@OfB?ɚgNL&& &̈6,o1b6yWhK MМ~]l̯M&t6e\EwF#oEE[9d! ep|qqiԤ;^fy5)K ,ϑI*q @6Jwy=ݐ)h\ xA;6k(0`N s1GLFKS$JDg6r.k)"9+ +bd7S;v%vF LJAM<<(]\:htUfiH'^&IBY| ;|)f +/%+4ټ31Wc"ǘH=k'C 6b +;"Em̖iEh|rꅭ[CP@ HƊ!2m -g,[tFt3nя +J@߳X Tqss +$H}@xM +ڋHK#} 4M{=r{?3q=b=bEq(U*ܨ\heznTz7~brpv ݊ EUL4QsڅwZZ:ʔ=ٞ'Q!Cldf"8'Z"{s&fCWQtI!cMYW;D*3\Dڗ\U7bLV +BYnj:JĈɤ'![C]oJȨ0BbBBC I~yZT-hL j 2ʰO!3B<+P!tg$^b3Tȗ95t9gC%WlR))+\|%Y&f(换Y2!" jك!~-A=_U{KxḴJp@n +RF;1[c9Ud!H_i~ {V T)aB r&wr y5MG{ۗkDgcVW /}"YHBu3zFgWKǀ+wJq y~NmB FUW jџVHBQS)vIGyhkR:%m$[S^2J,d6dIq1mMQ3@W!%Q@s!<XTa0oIws@ Ctb;c>i1jqmG״*ze/ОǒĽfѣYNGqa~}=)˜Bsi( =bNC |Ll2Ol֩D,mY'AF'yHy=N9+z| MLFr2[.(+X)=4Ng#t1}1pp5#yqGJw , bi> eQ6\qU(6a +2HұH}e_`G7B#|0Yy)E\8:J]ceL=H^T17:GP'dۅgڌG0ۓL`L,,3/iw9?}6sf*Y +X u~ +"0Sŝu*tOTGʸIJ֑.HRq@GB#QMסu^SMhV}Hg qe) 02>E Er n)KYx։"`~a,T}򌃅PKotAc$DaªKLMm +' +oQ3RaDI@6IaH15z 0h,mclWR?,([6a6  XܻA` |HȡV?Q rA ί A[J~W׶_yhly,JIw8;ةt3WH𑯥E)#s-zV_pc1֏kD q('>zLlo_eVUUF+3"|!s!ݟ1' ^JYr8AR[0+K\7-ɀru&\} +1Ein,Ԕo"ö_q_܀c;C;Qw^_nO*!%kw-M&M\x2'anRzarD &6/m_+3D20(S+O/GD)$R#İ8׈CpI3Ȯ 3q6N3g'N҉,!R㨝a2|{UwB`C-ߔw[+-T)!Rx|ȹ +WDX-b:/an$0׿gĐ V`gHSdRؐK>0900 pMp?jhDރ{L~YR;3㳉%#!J74JJI e|?E:)D]DƦ3xUgh9g, \ku{)wT(a0xe,h`2gub_'oۯB0zyHwfCb,5lh\ [e4=.pUw6wWl9xs? (6;wN{[hW!C9g +;{%$:vBx PiiI5HL&$ܲ^_K'G‰}DhNQ'0yeiOggZȘ%L-wguVnC' ywenu 0r6? I^Ʈ1@ 'uf NCj}B7o:J]PndfXRiw~J|r ;X47}YsB~ x l*lX?X'h_Bs{ Sh]sTȨxbAF|m8Sk36~{1 NK]:Fb! ʠdg3&gЪ#"{9wQ!?[Qi䳗HA +2ѲX&i7Ro+&XɎ- X'% +]Ht7MacFR/:%jdkV~n&IN+2Ud%vvo5>v(-0#>>fE#GHv.-f)(Kħ~d4^FT.DR +!lD[+(72\R:)ިT8呰&EL3g O$R@~ ATkW˴[$8\z&. y!I׬KbjxO"IOVD1q/$2_Ll_x}QN:*%Pŀ6H{"q:z?쫙+ښ@9R]< $>6mg}Y&6FˮkT>J:tڪd[$1̑I KUIh o. + +W4C oo\ %tAo +Y^lk Ɋ)u.s*2BwuMlFBӨw7AB3NŠ q + +> +S?dt -C"C6n}?1@Ձ,5R5\|Qpe$$`7!>o +w)lzSUp{-lYbqQr*(+ˮZB#CwzdXk^4iˏ@"I'">]wwI&{n.|[|ç|~1GY;|Q~%Ae9[Z E%r%?cd3g[LTg3.5SVƤxIɃL,FMR9?Y9%S +0ƿ^8֐z薚ajWjEҁUQbgcm^HX#4^] cŶ%x[i_}qu +zفA /WhLIc2qr6(0N O$Eun;!ąX"HRƕ_ %`XXR# +"?N\3T3 +Hs,Vk{Dʊ\pYc#gpRO_m~7J lSPX }jiӥ4c( DI~^ +ґ%-dB bBd&DboOYXrx ofgξ?RCټd&+5u L4[~b@f(o @c˹\̲De- 8sRObZemبqrvNc& ܧ[mPI,dj{IwGz^DFB|YN2Hzk =J pG@vZ~A&JA>/{Lfe  +˯LȞDRki@bꝸԧg83}6CF]'ʼn={U9.d58\XȠ/aAN{?do W?pv, Vn]yu\w2<2z?y3Oo$Apď(^tdiJN\: +/ӤiXj 00G8<1k 'eNJ U<DŽ"Kx!a0z*HpH[tu? &$+1 50m᧯;|nY6$ t<ҭ^F_qUm- Hc/6ÕZ/>Ui. i#At/nōG)ٙeMne.Gf3H211 0ӿ`"bH |rfvdigDO5[ˏ-[C`g@Fi @F.ǰ_d]j \`Κ;JrI#t`V lJLZx['fsyh*OchdELaVMfSVBԺE&OvXu[IVOJy+V$dJ۬D)tot;3/ Y-3>b۟4)>ڟ6nW[A85g v;跟PtHܕP陪ضO]h1! I[e)kd2-|rs}O=@3JL@/+7Bq4j1UʥxM|uVݮFlwm&/KW οpf|w&숍,Z=s)>SnZ +3#=wNhl]CVC@8TM(R#:bGDBXzfO_cCU*]%!Ov-Ej "I1 ǭpY0{@' F: lr+TM4 khhR]_q He o٢=A'9D0G Y@ꘄh6k AI +FAo,cA,?[C[,o < NT@@D;6x`sTXB|AbJ8%,:ɑ}$TI6@rj" +Q\U敶O`ŶR!x뢭7o4Nz]tg?Hj!izA͐JP/L)^lp"w&]f&oq R2$8@ +D8CHTQXW _1#UshZR`Å,鲴sZD+ UQDT`\ܥ5 w0·݇3)g^ihLCt\^KCґ{x xCEhu(p7k5P4 {APE/yKXpUJLL / m RxpѦEm)_|j01 +jC{D ]>_ !$}f{O7G* +?U%SƧjO5rHL"s{C;TnŦ$+$ׁh$4!~XS(#UɼB*7Rtt R.4{SuiJ*QӄYQƄG^O[\JgJ3xaRJB.T%ID;XKBQ|sTC7qVCe*.4^wgQ4E*5uy&4"eF! E(H75V%`Q5~D]ϫxyP};5'TQdX߈Bd[ׁ?):_!SqBLL…u0O g3vQ 9D3=M"*di3<17{q0T(WbMHNA}/BFSR3ZIfBe1$#iH)f'ҝ$|P}#pE7JAZ{|j  4+^Q|^#F)JVW׵qU(L.iC'A GO|G01y75'Bz/o2ѣ,>OV~{\L1D;0 FSi\n-v) Fy1`i]a<^n#Tmkab4\M-EAlI#ѦBe%)䨗=% SH53sӐ![X1 +6A@8X5;P9"U&qbhJ^1.(lI]re A < )'G"3-kG)]L.9&8qofxUe(q:A}x׷ܶr(9jL=dn( a|{B)rp(>k0r E(=Y lN",x!!5^Yv#AvLRDswwIPaW,jw +o$守;f$t| %# mI4;=(e29#27Hj6_L*TƆ1bCfplV}w1v8f2#'B:-!aLJ\Yڍ5}t{CAQtGF,0oܡeI&}j~Nr(M()WtHUc[GwIQfYhѸ]|%@nLwR)S&F#,j*ګ̗MS+]c̋L+C#K]c7`T#^I){fKRA2zSD#Q>ZD լFF4i!Z,;!;!SQܕTtÏp߰fsSP+{vQJ=`mq3v;)AB,yP$mO! +yb!~RV"TO1RPf]4s]4H䘈IH1@_yld$NP6۾L5;29Tuh]n4A$D-q*,N+.LXIU%z.QmTf\Ee(EU1 (L5L'Ȣ1ߚRbȄg$ZR[rT`.22(GHHE(}=H*#Lڒ*-Rڹ('F4'z\v^.uo֪&tPtU%832c1F㴇gdT%A"U*?BZVF3B!$8i*ə3R]f MTσ.Q2kʖ:"'r#w\~M *!4DidQjHd 9?%u bUF;]U_Vĩ5!p" tQl ;\CRDFQVYd猬igJOvj`a %2MqK>L(dGIM&a|&ĩeEy\ dg8HfoO䠂OBQr{XU'P:1YTRa8VLM9?jD!b샊)h˜u18Bᴨ5.FDp 2B^Eb'Q Nȁ>(s0!a@6P8J9ikkvP.A._w +ZKr`Ԩ:%)Wm:S XKڰf\AW!g5E6LqЇ"F{)E Ӫ;hHH?)2taW@R1LEME\#H(P݌{/͆4ܫZ,A N1I9V!ve%Ԉ}†C T;uWufJJĉglД'Z!} 9Mԫu`#0Ȁ4.XDHDh  8%,9I$@@@>..6( +0$\Pd2| p8` .@ >d Ll|   MBrrfH"g<*F/E:R2[d]7AhDM{Eg5-X@ uXe-^1uK-J2aO{JԘ^WYSx>ӯZ-1؟iGAĔDߪNxU~]~U_UezM²SP"KQ$ )a5DFWD.IU!R4xJ3ŊSABD‘!EP I[TBZSѡBK)4HJ$H`o +!N wI,k=3 Sb YRVhCWSQ/.â_̱ўvRR5jϾH2pK(܊ + +3.H*Q5K L(N-d{В'lM/P*2BI*}7;Ԉ ڜ$-f{)JRr`)_TD|Flُ(DN.| J C`r{Ft:pg%u2cI]VָjDu^(`;}uC5,KPUhEºJBU # +j:5-qM]tJQU*!` Tƒ~(7b+HMҬ:Et@2ԙr?Lk3Tn\l9:AGh*WO.p9pgB=n) +!:a̻^BlU)^g<0Q lZYQ`{ADrP T?પDF֢:.M Qwg"3EZ$J1GɦBzfY%TQ6!7.\I3w1}L5ɘB>_FW4/|D4SUhCx:";Q ih֚#m9Hє/ \7DM#HM+%5Y*4 c\QLEl24;pOq?VUt>9! I<;(.Da|8~wʫ7T((,%379.'WI8NI6)&mӫTXGkbV rDg.:0݃j:ﰊ'-ZE;j"R?[{B32r@tPOHyBתφܰCa>L؛SD"PBYtBO9|`Έ%MFv@}`ChFC~?$ùeeoyÿ0ooj[v -: I7nH0^;818i/eq"BMMH2 ;޷Uj#wQ|!9KbN'tfK'4I"ɚ$CEL$зGfZՊ)'e0{GlVؗI=E 8fi>]D`gdQ~ӊ /[nc;uOsRWTdϫDb;XBWrghƴ>eK %Q''fxܣh\"zE~LT: qIf3R&}ax^Π;%:_,}r_(Y*Q\BTbpTy5.>M1{0Ex'>1Ʃ%U1:x'ʓZMAaHlDiMy0""3Ss +0{I;c:Sc1æKp #1UCDj"GSiBN`<)y#9%l/)< ʗ⨨ƨPGֺ*A +c@HD`H8@0@lx9 @^ٳ}WR>O&qvd4isCNJń5UI5j]T-ϓ8[,vEF$|r&`;OKaWt"aDŽNO}X̀:΃3^ +c&OڲQYgHȉ\T9gdxX:Ph[Oؐr;"5nhwq | 6P"I' ލ`d" %X݅obaIĐ9`% CA,* \^{.gEV[#w)y$K7KX̞ڡH?$DB#QK0_0P$ kו"=5.NpF=K f%P%"KW+W9,ZCy╪sOǞrX8SnVxR8v\3g1~m+P*:6Uһ9[ $4+/qV 2C +* V{GhwʻDH +mHjq*Y'G!5! +u^(3Ӕ1)vPzqlDn\G'4c=bk +}!u'iJCA`kJ8SWuC) Q%L'X gW9#L-ePϪykJ- `n.$W1ܶ+!"A_, phPbve?U ?0Ы]?&Xjp7 ++7 )jE\e IȻs# uGK)ac3PCOF1W1V`gv¹w[ƾW{̝5OA'l!INf>|>o4QJ>!jLjqQ-dKTth/qnLW2RFjٷ e )U: ^A"rJtֱ>:WED^l4yQ_i3 !ŝ`/煫$eٺr¨e<~Bߕi(#71Ǩ,dk/(uOi&~@re˚vk(bUmޖgHXuomIe48X?8?le|އ,wrWHP/hFb9K_ͭ5*PR TAG{O&X-50HXWIbDSn^mlw}Є+%e)!j쭬*aQ)cxQ0MQvC@ʝI-Լ)٥U u!M!x}8o߅FW'WTpqcVS_\399CB z$f`K>$JĚ(l%#eNrBϓp=-X@iWPVw=}}Ar}:uo/)- aH)7/UǙAq KngRxx)gD3qߎp 1[wlW>S/*LKg0@T1GU t`(Os&4R9 +񗗦 CTtJYb?⧕YE~B9CP*F7D8%(:)wx0>> `hoGK{0Jum/Vlin䒌qe1\܇ ؆ı|_e@PgN-4@V=n?L𾠢IQ2Aʅ +)þ'仕/ؿ"yտk)(8frS,+<Ԝ"eZv. mۮvwSiվ76? 7|gP +gz˿`!h!ÒqYَң F)H؅z|ԊulfȌr'o3DBϽVu2&̼z7a$TfBM<6^JLt?p.n<oǥ 0哮18UN&uYtPy ED`*fq`_N=itS+)ȁQ(67b+=~.YphφvCKZWV` +>pvG /,*2Fh񹇩>e??/(Z| +S==%@{S ]C2Do +i3_e&&l '(#Z~X$5.첱H#i + Vhh߿rNnq!PԴ9%@kMM9O)FBsQ(A@H3SbsXn z´5^kXƊ{'pͩ +,23!~ܑ`U,0[%t 7i8M67 \Q;`WKqq-c]7Y.J`c_+ %o F|R\Y=>;/+'CMz + Qy<1m!%HxC%ȳp L@u +CTm ~AE`:$66E,zR<`əG`~MSb1wbg5 ù[q駙בBq pR`JT'zKkfRE_ (r>rrۇ Gr!3xXPbMPh“8-%u]EMs/-py [kノx ?wo"= 7#UVB#w;$y^JWʔ t@ي'7tDT e+/`L$p%*rX&+ +Ɉ1d;)`"(Vc儃 ]r'Q=!͐XmK+ gJ+,9TXK꺞=$ʴ 'C-H5#\Lô47]x&f2>rh+o;@7jux|So#L{}gӪ*ŌsK X~ mx5juD%5GiGM,*r# o +.8n Ax%g D~/d5K*]h&jb?~*t+tp,rT4mlla F l%d:(OA;'& f!gTGm gӵ4K\(| `΍U +p+uhm~Ƨ DVSᾊS"<` b[%M?{SD]r'*l*wvEH*:M@ Cz/k"ϯjd3K$OCwvE'ZXb^UO깶sx D ?M 0\V? +n*_$~M6RRMx4: zմ33&³TBܢoYzs25LjzP6SH0:Gxrto\(Eև".pg;; wn_IO0Ii *YyQ':FPBG2r>Dsft/ r℀)qx)P Rv@Mޙ3Ē&qm9 c ׷Hhe[=M!T>ҧ#&wQVl; x2'埇F\%S$7L DB(mVd `*!B„zLl.<|8P\GB{j!1M_]*F"jT@ޮ ƘtkUNX6=reb@U OҝuDAjD#v\,Bijĥ^:pM=H9DFS)X$&6]1:/&7-MlK7Qu묊lH +U^ +L w_ 30we)N]VK~BLKQPJ[i0؈1)TUIeDe_-mHk8qna@=zN\Weuϙ7:G̈39X @%v2åj V) #W2ޥVj!1''mKI)Jo)#=r_>+*D?x ~AX]ÐsNI TiEݛX7Wh}v;voОQԘ׀J0MPD_@PZB|=}zsrpfǑŽ`d 9h~ Q}|2gp+mhs6~݅uԆQn? +ׁd:22;M|E(>Z%FPWYf֮' [(nw}@6XI*X M(<e52^~GAZ0'4 +% bˤ lk+S'ܐf,K30=Ӻ3#<¤1 lf&#_@;s[ |ė˘|ς^ >'5:DHn?v֮H#nǶ`@-4o -g>`}|3GpY; 1NgUMÓ +ck<;[}lFݷn4C -&z9&%rwŕvqBHfQM8ݬW[JOF@\xĥ^l/]_zl]_UQ,r{pfvPwqp?%֣Vb4(7N}h]dm2oʓЃTc<; /f豃I3%]4D Zo1Vkj:-I뛩6_Y6ԕ +gGә p9&dU-(C0 ҅*Bvʈԉ5b Tb>rd>x/qa4G\C +9}l6:\ +R%ABj, 9DIm7ڳ*ZƩEW" +K U &at)% c ?! ]&;,1c 1"dOBFᚑ?ż a1/TwWUѾdſKn;۴goʋlCY9- 9P\0S)G+*[:RP0"hE%:<$*iSx;Ec& B=b|$ +.hDP@Ts}.ۏ mI1~^Efl*ِU4a 9aOcl "4[lT95Ya$3lmVC4Mc!҄U|Wf.4TyHd?nh;4rMVLt߽ES:hdmgK5de0i/o, ǯ#ӳ,l]'hQHG!hWps XF@ܮ7ZFvL`bE:} 4- g]~׀f{ʐ"ƝY?Rk^XM @΀l]†/ x6Éisx8@AvF'|K#/baS+h)xxMb9b +_@i">w##-M;ㅑ +󇙍y |K Q -I9u6URW|-\[W&V8~~d(ob= AN ~']h#lؔRL@эt)a&" +^F)w60NY}b J4$bGnI390ֲ*d S2D$ԅoDs^r>M0]/͇Mal\aPާ!+CeB +S@kpWԼ{rf,Fj~_?:uqeJஷ&Q4@ޚV 7XC[w-cmA]&w(01ϝW`V<KL0&8`cGEH*iν }2"$^\j +6ƦOI BKz][Z@96)=xJkf8zI9@ޞz|H _w(dZ +tʳɹTAD6fRׁkcQCh'pشlR~DA f6_&" Nj|J[&a.X#; +2SCzֶ##p(? +ƊeE@c23( ,VŸ́ο[)RL<9m@Gpq +=RQI +٨W2/(Hż/İ_/"B"? 5q5 HpVz_hl4`I$ޑ1fs868 BCo]-H ̵3~rc |`; )b@TNMbt(@P+m,Nd@[4Wcx./{wXXJ״(Y"R +q;,Jvg0]Ǝ~)l5OK}EGLSo Ejh@X6}Cۊ{[ 7i}žU^JA#g-KQ +Aue;#;.8W|}@ =}:nu 7"t*hp7DI)*obIaOs{nlUȄRИk *L^Yq)1$ gQIڞh6ek{YYVl +2b |lWayo9h7Rdj+?)KC1J U{G\` P 1̆hef]09v,HOP1)1J:fbd)+qYdm&l C:hSCgdDJAep=-^5ㄫIWJǼɑ` +CWE%2Pؖ-O_:r_ovy)VMla$VႰj= ;di!h pέ73p0.<ޕI~VR,3 .OLqy;,~&s#q_|d"ѓz[RX +2}y\My?:׀﷫ TUIgUnRr `Qby^1_#?t.Ot)JGyK@Dѯo)ܵ`yF(Q}HL4-J 2P&@ʦGF +ftOqe &碜yTD<9:QJmCs= =Oy<*>oB D 95nUk%]SkqG]?4..A:s=d(ܲ)!c< u\u\C;0=8VY`xq8-i\8e c,u2o)ď(ZjtNOidx FjnFfUn<;̞Wb%"(tџ86aC#i#~'n֔.G +ZM6%LUa]/#Ē}t\2[kDT pMdZ7dlŊ¹g+v0U2Y@]AFh-g/`rj&l"K5 +m'QN|8z˃r +76ꟕ%  +pUS?(׋_nj$*q! `a^Z/J"qeb@'xFP7R2ez6jiQˠmj>|cI̡MQq ew^ -  !w{YV(HedϤD@)o\gThUgz$ +I>J6K)LTfe\V ; +xaw3J`Ƀ@bF fU_[ +*EihEBM( mt)8ڭq+K;pB'dpKrZ@R#RR!ԃswiuZp qXm1Gp<{'Y O`=#UTgSuQ^XRG2ȦkET{UD'l% m&?"uRZQl 8'/gty;bUFea")OMh@œ_Lj}=\6^!ko됭VAu`iwr(qzF_W;<-(Fwݸ`Ǽ׬aS8Vbg)B +&$!"CtbDLngXkoa|q󱩘F +NɩD^_F dL[dQl_a@l63[ib66@siP@果 Q$eZr)DwiȄTGGdn-V.^&VMi QSn*@j`*xcQFa +? #a-}qSCv&%on}}NP7f!6|7{َW2FP3kQFl|Cvڏ/Mowp/KCV;3Kj>ú3H΍"?1x*a35[HuE;\@15R%ůJCD%{g#^›\>._)H57(:AN@9.ZTs dvHB0v@lD7sr>݂ I?KٝRFW{e<@%`*@0wvt _>s>H]Ћ$+8 ~]sP\EDKRۏ2gOyh 㑩4<]$z Qf^Γ@mݰHa#92 +Bz>RK"$)D,_ЯV•1eA%3#Ǹ* pBƪ /w!B/MYf*5a `T/@w>j +G~y48gï9 KZ* _0Nj+Ջ%=3%_L8V~ ϩRCO;K9H PYݺDC. ~TCNPmR¾WnyKRiJIC!Apm4_f +aD&."M컨 FZ'bPE$Lan_Y;,eeWEF)pͲ -u,PV6 GpyO%(p=I f!)=pwI8Hұ#$_^Drp帊WGxퟸ %s/+'u\*;pr +~"tyyoO"N-sJ nYEƭ-6 !AM TUrҾu#lrSd)!-"hW.E$#gI?\}7OZ \ i[B\&mIPYd%.2۶N 2 tC +}l~#U|ŽB %r8Irb;Xl\E[" @"W3lo l 90IFΛF +,~8K=jZ=q@B?~aP:á޺!Nq;+s/'`,oypx0nz!L1B6̈́C.=@Nr+0Li?!Ll)J Đ)mXv8Si +I2Wr4 m܉ A6Zfj Bʈ| +_r'iF#q:;0nVW]51n1f83dyY8%:MD5PI' 7D*%ȒuppUMdP8뿞a,G+%iN^VGq! _%qCplb^W~VOS@6_]X3Ő OLٴ\EJ)?Riqs: +>X/=yӿjá[ڪBNZt[ .v[IzW4"+<0  +D&%T+p8#`|C V7`?Dy\x< e@/9 h:`P R񼄂ډ2A]G{\bQpk%A (y6q5p9+6k0kqP3$X &N:) | @.90nh):aגI7Ϩ# IXQ/"G~|k},tFԠrws +8>:iKKJz>7; wq P1+X=oMB1_Xf\l>JPi.NާǐiנeFW7g׀ {]E6g]Pqfuk˻qYkwt?A3քɬA+,UlTMF:NNBm<ȠXSj1ZB &9JcXP1өA$ +P`)*kc֘ W0J_4LB #h8zhI)ń Br6ц} 9t2pҾQz['yo.m8ܛB+1+ ySQˠw`R%X^QWQo. (WC "ZX XoGuJo[9緔q-@J}hiEr}ROevB j@;P[ .7ud,mŠ +&B@A~ e\=/ ?+)<>gk;l%v@Zn!` +l  tP |=(1Tx([8:~PI& h66NV~ f xt7EUX2YD,:k lF_w,ܧПbQ ϬW qYgIr +àB,<tcD1hA>p*k Lq;1ӧF}SOTzTazK󇉊=^Vc=QBkimvv*V}3* +H.LMwF\fA +g-]e-4qa[H%pJ!"/QW5'Fb# 'GEʲ V02%Ք+PhqG忳`6ؾD0E047%&$)'i0@˄^ϣ5saVbymff  x^FE&8sjM-@P4&Y[+Y1 +?c oꚚ[^l&L蕛$@޲މzUAS  ]4K*rs})bDA%! 11B0`TNfAvNj\̈́i@y7h~‚VՀ V--l;do~ UDXO\(NE?`w^gIjUD u߮f71cS,Bԭ9", vOOru":y=lGnSwfw?66#bȻ_\sB|՜F3z?T1fE34?dT3HJO o`^9>^zɓQh۰.s94O[wn2RٱQDkmhh3=o]lPKt=K/6i>Ρm4 mxܡ +f{(k PXNv͹olp +ח0o!бBk~ 6@p@g3|=5^V7 ̓ۛ|I$Ot1@8`:BP YdP&yx! ǵSD$ՂL,l%$BU{rAqLpx%Ux*S ҃wkbeiq8Z[Yl981sӉT`+&B5{=rq2ys}Z[0 i^,ͳPbxG?oB%cᔀr%T -CmQ-iU-!Pe -z CRlV!p +B_Q^j%7paPfb&҃3jވDE!Rtް +9am;G|yv1A&)nch>[eK1}ҥ5pXAFEe˦fN>+C҈2 9v&:I zDGs3BA\ !"`D"oΒҐ- +C |Y1 kf ew$F2ݏ;'w=|ҍ'+|B1u}ͻ=ƙO69'jvWPmseAݘsŻjKd +P{U'l Y"'}ئtD0TN LrtD^gH2XHiК43ó"$>. 3 +:zuU'{ o# ǹ!Ts!xD69;\\ 0T K/C X2:4`䓁&Xƌ 3Ƞތ6sn(UǎHp@Nw:TPwLCЇ>R~KwxO垾7vVBс.VP56u +F +IKv?5ݼ']~e&*ӡZ[euct}6*٥?bp2X!bvF{{ikD^ ,C~ce4)D5}U;!3m!Zt>VL`5/I3O7w"TJu<.$K` K0gCݛXa {rIseKZ ̬~{HA\+C,U B ]z]I~ɰ78Q$z>*lK4Qf!LRe@`Ph*z8,ٲ'B~ j5v-U${sXCJn`!K:h7^6t9Hx4ntm}L?}UVZ]qD7Qm H8Cbn99[;9q| yIÃڄSRh(MpBCG)JcEO=٦ +@+-_(c(d ZI~8 0/%Y|~%ޘb*Th*!@LUf]\0w'ATu=6LI`uZfy<\M FlCB^3]CgJMMMn(xVh+( +d7\^l2$BǶ\2Œc+ XV&H|#wU0I pA'2jOB_֨X,҆.6| MoVc#q TW`'"!@pGw\A@q k+R#Z=B`zLWX7ZuPb331'}NwmܫVЦ\ Eba(Y:y/I(>j` bGaǠ򋸣;g2q}(L|H[͟ }@ ψe] |ޞ9Ys+tg9=]+Jh4< b Ll5]v__ ?/}wS]Hs)bΎPTӭÉطuJm Ef +ߖGP* ]ܬ H*qoLD]p}iiճ$x%oPs))GQfLg#ul<]. 40b" R!W3.h ?'W#|F4LC~;N` ĬOIJRwagH!d0N-O¸N PUiiŞn 7KcӬN -g){h߮t@5n?HPK{CHP}|ʏaP ۆ0[^x>v6miXW״P||Z [)&jjx<-\DCIwgm3\,gi.b͋w>P:~L1AW1hB)}aʾT1ї4)+ւU9fuѭXr]b` Zpp^9&g-EƖ Q" HArNN>Xl!Yr;N0l.qZUZ +rCA;)26GLېKFT-oBkÅan3X $U3al'v]IyQA PFyލ!?R6 fe bzȉr;"3W8v!'؃@>4V"-cA)d&8 j +hV3nF-S8(7MDHc}ĚөMgcExƉ +l ިEGzYg3\1GN:mG XДDgmW-΍J&%Q&QO`4M3o n4~(Ws`iB.O&,_2=li[?H%kC?1Y:*) +Vd&#(jvÑXSA\;َ$'e)vN1ϓ2UoZ\ aCZ sYK$ +HYA1$]򘁵iVu^Z #%;+!z'r][|7HZذ\+ sƒ& @`jPX6nW2?QD`1$TADm{M.;0-v3 UvA 7n("DBgi?u% g_Q`u;!Rؾa݋f{ݦQ4e +eN8oOni ʦ|:Z@w;^pGxV#cE~k7϶bCC ǒa]wShWw!7$!x+^ JTB7@?cDWPn<84u +03pO[2MNj? +Uc(>$fL :z$ĝV1 P$e&/gR& +fÛZ~Qh +ju| +H m(]ePV$N$ICaϽGԲ/K aܗav'@O;қH[KMIsA[,4.V-횭D4{oYTġ&>iQB(jRN0&I;EM'j`r5z +R2h(Jȕ_lܬ/;ˏa~DyNO +:?lu&> M(`^"BMGxÒ)(yPPٍB  {K4[e"ﮆH>?P [ԇ &3Qzյ~~ñ5RP\ȤB; ua6D+硇X[Mj5pDV̌sW+vKVB ^[k=Wzf}ow@3Rk +u5@N}LΦcqҾ,;{D2fRa +(| +&ϋ(T &oV +(TZb--(Ož ' +EˊN+ +[76O`` RPh9)TŊKL9.x*"-`+l0^JO+Lw[zBzc E*EPb\2cgT\z?TlO LGL99qmAhf+)ܢTF4DOz [?31UzW ۨV;x.1YE08OպtptUTZP?k +ɦRGUӗ/7LZ ­pRVO8=D +L ȽjP"a w5\.fmJ5o+F4% æF\E?} wSj%ܫ^&,`C1a-NJ-\X~bvHu.aGxlJm5$1NݗSnHU'p}XiEVF]I^Bz~O(1C yh/ݶ 'i) 6;j3w1'f%W_gR#mr{O|~Iȳ޻r!d:HZR __QugCPy݆&E%mꏾ;_e'5&scgq @W Ϩ#|%XNzҾd >d(%3҆C*TՉf=J "_K| h^Ȃ2"A&Y1@ޮ/`7|i&.k@JOh@y93LM t52Ha֫=J;QlxWv XDMc+dʋ#6sr;!w~iO5W䜾}>47WX&#"lYI,,a"O5^fo?Xi[<]ӮЀ8};};;8P!c3t4鑄:xπm~o彠~NN`VŊ0˭X1 |H^R-> я+pEFu\uWtL:.ntLX2N)4|*D1JqߙV0X967.s*m]Dl4tghsda%MsqulVn8%| +_hz-[gae烄ܫN5Ի:O˒9O/_U`1Dm,&Yiv%XXھ]sӌ0l+,מZtkƴ\N ]`2NmioK,R](!5gA`)Bv:I]dcuu_} KV6$t8*q9{*Y<$ vq[\ݠp=גܠ" S7B,/^BB: AǜU`"( *rS\@С)]\(G=T6\f֑f ?oFtV4lP Q؈.T v'u"P76h=NzrgЉA,Rq_C-F` nIDo`.,O*Gf<폈G̫nSS}͓)%B#A3^iE ^7X+AkWDhCP&J*㼸co9rу=l!у'mhѵqE=nc5"\-`YK 7ARAQ/KcߟA(=2hr(BH~4 ++hx,X)0Ո:c֖""BWugDIE^t_򈴙v#Ÿ0.e~aǴg<\L2;dD h81_2+]wzV# Dd]&.Iv}#??`(|`QbAcKI$|ɬTp +Od;nv!8F +A^ e(G{a +NR=u,sar a~~ lXG@}==idf>&@f P|%yX:*ͩ#cZ5t@ њP&-R{F|>ԅ|6s{W7>4y*;r*q߼3 `SWsC<ͫ3kkd-8 9s܁7|睬7_ϓw[mYsqx(kgt貳Ma`ovάCYzu>iètYh`5g|~g[>5u `2_a#Ü%T힚l䈚B@>;e(fSJ@|6 d kC,_(pRHttEǀOO~ıWV~7)'2>stream +RPk6N=Y>cEp& W28*i@by\;5$YD+CÓsjY61MŠɆG 00P|p"%H'_df$=kX~%RV= $',F>$(7Y:Ğ34VüEdMuR%,y_`k.POYE ~D<8jmP,N^y3}AH% jSV1g=U ;E&RqOuHw!pRʠ/C)쟞Cn@ԣ_HW>z4K.g)*_;"Z}bG/rƙ^QOsyl+7IյI<r +R\|^znH&< Zو@qOVjjnMRgy +-iײ~f*AU:3HyB-"t@XJ>BQ\~IOWc*3۹ډ;^iVB'i:1~џƃP:몑ͳ][~1N1s %H9 y)1 ”/2)s"F*I3"7}yL\xjtz␴Nf\Kln|AhE)zj݉ɔO[]>gX+d/=Os~`s%mss-tx@w% 8myqzuʳ +lqt ^grPVz-SwiED-Ny"!&mh.8d X %JGD(4aq<l!S `QPCn +EciNoOVYUUg N3b2#<\<([4CTW,v+K1Xλ!q~Jr@`HEWol oJFJ''q[ٜS=Q%\>e*} Y՘}u-/!Kk *ָrC|RI\6(yDIJW )l(R౾hդNqeoW.Q +_[_Z\PTi&9D$Y\D ʾwT7X'J^ ~7w8>ILWd<,ް&ƏI,[L2ͭx 쌺$,іH%m?Z6lJKqGKF{F)y1td:6I^L*Ok)tK0MRJR:08.{uGޣR:kQQhɩ4::-gJ4'>jTa oNoU1u +*U*)RƧZp +͆ą*eUH*㮖4Ҍ'RH5.qw[wqk(ܠPLUDg&F~zeSzӨVyTnسHLhQzF2 }/ȿwW~927;g׌1G|cRԥݡ,!tZ|r/"=ŷ{b1H3uA')fR$ bKHR XzO{J/ήTTK$rIK\cR|R<YJn=[O"ɲ$r} ~JxF+dXHz S3QbGL+?UGV<1B(oHB^)!%O4iz&Ή)ϨX<,A^*v7Sj}B&Jǩ{]6>"66^BljJh/BqBјu53%wIRJ֒#a\BD!~SQ>}]lzzC-QJ:icnbS +DK~v|{M$jƧ)ƣ**NNoT]GZYwrmEx7UVŶ^r{fTʛb>QVa>yi'e!ь?}h>! sL+D{>702J2^b]C'eiG弱~KFCP-*N4Zs!?avOKFbvY>m'<Kn>^77Lؚ O 725ƲENk +D+<B%b'_'2)D>~U"If1C~\p,-oH8 rLtp$>^=9}| @8 4  `"b(,2DVFaJBk5ã/DepWW]}u0 (d9hUs]@y#:jGVv[yġtZC1{(2lОi!v,uEo +{=5-4fIvֆL9@2l!4+_\$4Z=$aMyt!,g!8I(3d +M@Tuyu:K6D^ޤWlU%azzPT˰3)2G.tE*ҩd|3Q(VV5,M; n9J~ٰ&UQQHP@Tc9UPQC'M Ltb1A)TŅO=WE>3MIa 8s8q͢9K&L%6f!vm3 C4!e">&f3nhBoNSمVUc5cyx:}|AEq]eSLʟ)/YubdSX dI'cQUXHr`PU^S \]S2Y. ?ꮗVέ4S#"yq*3"I:c.oS}6Dxt^蹆7;xV4cfԮ*\a>mdŗ=i55ҜQ˞ĴgK.Ka֝Qj}2|d8J0Lt=ڙf΄vřG; +FqҐ.  }r4ԄC3F@CCD+ +4TsNL'̌`4M#WTWûQQB̪^e93(K^>A)Y^S(妷4|XV`pC#TF1"P +80aU°0dva P  y#aF5}s "D"OE(3LRe\{}kNAE4*XtE~D:b&>*]fFZ1tdH<59ɈN$-lۇ3]Z_hd֩NXkVCJTgؒ.QQ#R'L8crDәЄи"~''xM;.=R/uLt;)t7}N~W3dmOIdyUD -k4T*ꢫ1ŠwHQs/~]QoUDs FcRLWM) >wWR=))=>` iKO÷5&I$*~EҏMHzL88R=*RH[x%T*e ʗ`X%Ȉr墈 7 +7Ylgξx6e3I߿t_p[B e19(NHvU/&dҼ Q?dGLfRGچ$$4Q?f;rHu =$IZh.6O/T RV+^=cr 7<Oxb=Ʊ98`;vQs,J?B";JSWfGXw19MھFY%$DwX} ktO)*ȑ/JC +MCE2܈'"(Es(_Y+dd Y(BDԖ}gnX%T) +eGSKretSK#J(5U:#筜96?"k6aɪ:Us,=V$R Ѓn  pVZRU:_41.C4JX." + M*) '2ӑfG)Y i)*#2LQK."dT8cքa'7!GNR2"Uf%}.̓3F$9&fh#BH_]ZfwTY=4 zFנoLJyŤagRhDBJHH]&q=S8ZJ\8B&>JڃiuzīB OdQMWcbȿ$}u" ڰ1.k4GHCҞ6} l#ExFv5zX$pҮ#^]E% _ %J}`},\* ȵX-h2U,ʻxy 91~t,_?2 _D}Jl'*ZM|DiQCLyIBf&MU18X}͞ĜQ8ꄞyq,qcL(sN=Jeq) YL֌fZ-+fh%qRx>Oh&&!:n㪔i.>E&F}.N }dkB 9B^ iATBNh7E(yNrh3֐5 ^֑GՑJîF}B_F 2*HA!)K%c禑"RlErRD -h/ h"ҍ|q銤(9Ͱjj*:rMkd'ꐒpsU #:(@̈́uŒ'(&8,p*10QԂ+ߒz?8m5ȶZ1zsS1֑ܥ>k\bQ.tX&TlS0ܣj&2]=. [6>|+4jJ(*%ފ -&HKKWz\:%'-6yX34MԐ 9;rƘ!b{  p@pHVSZ&La̓yup|_HKmU!/ej$/B4Dg4C$dW 1;4Nץp$D䡴IDV(T>5ւU>|5\{9ikFZ}")hT`%4ERaSV(gLcHBK_<h:kAFD" "?ۏj L֖&֛sKVC<FY,"I 4oZIctQצ†ǠZPպ;Qyt6b-v N+hҊV}óo2+<^謱Uƫ~IB2d\dߦ(SETHqJXѠY|A\G)ZZĽe9(mLA"Z/(FȆE\ɢS +g$).jsCឺ Z?jB%}YH|š 0n +b9bQDO)|#$ +vԏRm_ku٥:\#$9DNFؓ+z~(i DZښ5A3D RαJR+ZiHEK( qYT[XErgKD<:O{RHs!$bw%X6etEth3a0rQֺZoQ]ZsuEAAWQoJi*A!Egƣޝ5!) +gqi0ԪxD*k}O~Oғ9URw,_w(3D/?DxVs,׼1lUiN ]"-KIE mN8RzP-qk4X'b ̩8>Ԏ*e 1.vd'8螴Hp&)JXjd(axVr"q"ܸ,^eL2:m[bө)UlM%CD*Ұ蝨HX1|i$*d>Qy\jd:Ԥ('jȫSkJӉx2.Q%Ai_T݊,E*Օ1BGT%4z: +ħ42%yT%^\ZYa }ZF҈=I-رXF)-o9+ġL1SԴrF#5kZvi [4avR"ʌvguc>*hpMM73694JIltɨRsB,~ebe:%Ֆא8ıxqqh 1, +V(gT8upɈrRha 1*4ls]ID=t1:y:̲nM3?hgiz+- O7*j---E` jesQ\p:.8^ ABH֘AQ%)$ͦɊ%)D!E&GLJÒKk\yr&Q!6zkr&Q8#IuȢc.UDSQhoi"tKZ >7hʗ2ĉLXT|54SӠ͋NQkd"O"DzXI]Z^}Y_.̕^n܍˘ZŚOdPV*}b$ T RX.>ݴLg+V9Qkt"\kC4aK44v)YRtbsTM]e袗YeDߪ Grfb7omRa/TN i9rrE0*3$_ iO!ЬQzrOPFV>1uTs,\LM.Q Uv!"eΩPO":6/! +!넘 Łœ2 !>r(pP DI$$9*MQhTX]L0Ǧ, Hg5\%feWG0siL c>g|,\㶬Yxx(T:It'd%Mu[} }r`A5.LW~@(vO,N `e܆QqV7:*Uڒ;PXfTNɔ0 A U]Jݓ3IS~^(e4-alj +>;+Y٦~@Q TvV+>4HpS^}@Pn-rI>,/ۇd1ݎ6 `tt܉$|T9e?|}UAtvT +!@L}hE}&Lɗ. ^"MMƯ(Dc!@:5ZC?7 +JzFOioo\6ɘjw7orR{6kr˘m#.6{ׅ/|{Kم}[T%/.OkS"-4ڟҐ] 9. :. _Fߧņo4053$ MvoFȮ? XX>|a$(?2EyUH7{mS2#?txs~%ThTRzN+1s-2kK5,]C0@?-9|ru?[{F?(=(Ew2څ` 6?wR b0:W'4:D/KRY7h $ Ox@cD 膜05 \3Z>*huh>vVۅ-ktg?p2z y:06JE%? /yETu8",kk^N .1$F1V}yyn^ƹ;zH;4I$ HpxKt߰< N855@ډfڣQ/~eC |tY{,KPT|FNFsxD 4IL$޹ғ[-4j74mn,]2uLRhiT~Tnl6jIy\Ppob ANXJʁ@R{U[Wp+ԀGoƙr'd o}$A^8n{V|NAN~p_F\@96Yߍ㍪t􏡪|F< NkdϿhB%ul̀EBL.`:o߳_2c^? R]5hep5]Wt. gxHdɜe W+2ZɪfT4I0N0H>Ⱦ*af$Y>\YSK]͆sP Y}i/iPib?g53{?8ޔJ]f``߹fX~5@SDX)__zKِ Cu|w:c_t } j^[7)k,0{c6Qd?$}=Jx3w"* n Dcd"yg=n_5j6 WٵOfGA"fSel܈Zi1vuRl+Fߺ8Pҏ/dB);*n0-igVPW}GZYAC-Vip'n'|O$ЖڬO[p^PJC[^?^ +<[_?rړYXM'(Y?fUG@PH +lfڌ(Y?@g {z 3۹Y>Y{:No非YP aNԚ;,u23'xw ++8׮@Ilk^PN: @=P0)Cf7p*p,JRk< l#ZLwkp?T=\QzY1>1"ϬbC䎜fh\mcI5 +%4f&D|>Y>$D|s5:3= ]uU~7J..DhRE"7 [W!wŠO pS=bԁs\8A|&o{\"\{Mc1:쯜+v +#gj|.C\ur;׏`sY/%m*>¹uDӔ]6!HA57XOIhPY@ɞxPŬJ@b8e@ׂ"J.cLC) aiV}l& KlyDT̩aU'&<.mEuv͢~Qa*p~8Mѳa_Y{7Ts$̟Lzՙ?LF<0j0)w=3?qEg,?h|BuW}g~,!>KҊ;> ub$Jng?Ē0Cq9t?Dʜ?.gk^(K1.Z?aI?+6|KNj_͡LR kZ$'݂99olNj9-_t`$Zo/Q}Қ=8ZFpetߒ+0o \2'0/JwWpEנx vN\j) +/eF'P"2ҡ TX}{*1{!)Z + UApjw>FËc!E±8Zk)r-X6u Fd1gg0ft^b**\#rM3 +Y{E -2Vi ;h)]@2^ %r<prղLJ,J}?Wu()e3<=0}|_5R/{-vc2 !?+Cy429!U1w;௅U#_sYYr꧛;BG B}57L[Ltaq_h1QH 3ྪ)H+p?E8Y3v~ĂKx-(yS&v]@_j2L֖~UJ@ FC[9β%wAcф3?dz"˛< =‹3:skb<%bAS)y9oDsf*T|}J1#ZdJ=[չ>?1׏~B=@٭HCIiP `@5>YxX} 43 P̣3QK}% G} 8Z G|Pߙ|؊R%s^ NM]޲ ה|vzu $<\{'We,HdGEoy CdnUw#E_?g C^h DJ,ƥSFM[ Tn-ЯfI8l8՟;95gJIE2WFb|m?D'_y3b|:Ѥ -_c%m4d9XL,kohvxluim|^${lAH-;%i;$5W"!󗕢&Ta޷j p _ nuIm?~6 +y#< LJ"QŠ_L5ǎʧ RhPg c"pcؓ7#9|9.Q|MwVlɏPE4-s@FגG=ji%zSC%,AKK&VP8X bk=GO5G1@V")_; u'I3f%:^<Gub~_ƠL?u_-%IaxɟS fSQ@$+.i.?#ɏ)k/.,WK!為YAPH䎯 axm&_-Cyʺ EΥwsN_{ I0&?%Y`bѱz^듡i9-HpV~O(XHѷ9-߉evexx;=Xg-0%_>ٝ4'*ӼSz76Vjsӻ$䷐xyh=K~@:b>q3Fӂ''pV;> jPmđO) T!kBAxÚ`B 1! Opik-Ack +(~K ڱߞmD`cl#iBK4O%Wa|Yb2&`o?i?BG4SS|FZ~?|q\ 7I0~ZX'j>E JL,D&F%u3KC+ {Xv1s/\R=W37zCkuI.|-Yk]‹zaƗ2t̔J `>d&1ϣXŪ9A#hWƝи;Ǫfglg>ZMuo*ŋ͑?ߑfS#x K`b-@DJDͮ~#$TG-PH;~;LzM>aqp{b.sK[x?X-rS]D˅_|MpAKK.y-z܌V3!١ +|{QU2D\XsyN(<pyt~[Msu<,-v6 Mn./a } Tl]>rA`;¯G< |". 4ƐUTf}]c޳~B|ņ!qA]k9Ik%/8SZ,`[&I x譤ĉNӧ >u2{{ +Ek j ~-ַ%ŒB6TEv=@ 5^>l紕J_Rc-]~vE?x"EY>{L|tgbx,Sh0JJIYQ4/w$yFfm!b07k2hiϮ@oV4uF3L ~,G3[)&ߡxD\sdT8H3!dreO x%Sz@ܙ$VL'Q3R-U#_&:_xRi)j)Yh7ObW}KRfr/ B!{unDD\u N|(w'N*;T"%i?YLA*b0"[>-qĄeorڼ>|]iW~2\̂a4?G?ٙM(VF&׽;# ~"4R9 UpnPICJImK)E󣛱W`%';>l\'tKZ +^UFmE1}yuOˈ8b]ƿ=Q"{QI(z4=bPXڷɨ{ʁ%o}+LJ.8TCRP* !)˞BZWt8ϸd0kݑՑe a:{SfwhW1o+ VuX̮ +ګbw@nUfMntF{;e#q2KZI4XJ1l^bd**}Ss )g6 \P4eYSttp,ER(^7prHr͜|3N勡m%yp҇z;=}eGyI|Eʂh{Wi3.xfK%o+wTmSJ\t*εl}iXq?xwKT0}v +F/ZH+{d!{L +otI<ev{uQ=|IGp{ߤSAظy@Ծ8*4X89=(9// -r`\}o"A'leKy{w @Sn9S8 *4k{I%c +==Z1oPbj jB,'mxՄ3H%7 ̴PWh/˜"+9hߗx :]s +H|/G$aa3( e!oS؁}t~V @q\!e?2ph={R?Yy  *{̹r}߭~V,LīavZP,ex zŲoJx~ף<;:“vPf~%S#ȝ'؉Ǩ%K? Vz*5Z-½h9BXO+ `)bts?YM^ +T8xZ=oQP VHޣ^P|倠\},H7`7SϷEȍu욎'RoiA{g%guUal`V*ϣs2?xww^D2Ds:s{Irr{١a3AC\dR##p_`Ӊ7bjҹDe J 8JWP$2\7ij[} p{{bZ vߓO(/}9a0 }@h#d2lOOw;|ɢ#Eg_hsRp/PDH ]lVa8ϕz~̝V~ 4AJ1:yᣎ.31\b&5RN5_,'R[ሇapRD3~4[fSr塇l3N5R +:]_7Z³(;|/04xFVONփ`H|X#~NPaYzh4չ3O#?HNi Q~oJDF'4盌v~͔:A!`dTU`(bhߒ=pNjD(*:q3#\ͼmFǸt8C.ޏIHK6qjDeE%Gkd# 'cL5:U0@UR,qI vp<*=qxzSM ̦⸆S㝨1݌> ާkqRהQ1$4-6%EqQ/zmUƥwvx9<1XGl34kX u} ^,8X<}{\q +&S,aq +*K^"{w TJ^]OO'Idf?dKkp#r| yxRt8?p(p.RW:~nTXN^H!]FFfF ;8%b8&ؤ>($]1f#ޔ F NVAMeV"n!:b?G!s!]iHR6{&7Bj`'W7J+fjAL Xص-,.Qls0F37tqZ4[4MF^JzlNmh)T +K*U ';nW8?Qew%Kńr%Fbow#Xon(d懈cZv#\Hl8%PgF"g#*x]A.tAD2Cqz%0M8yHmlv}35Q on2Ώ>(PͤU2!5!O%}9I҃Jyu(  !t" F~֨]p!o\D3GQ'WNЭ@8ڲppuá +5^ ug:[8FA(!`ThOJÿ\C5 "8F.֞mj[[Oq6:Fa3<4#\#:Sٙ.?p,kJQ5>XPlMe|ծWg 6kC.I',.4MQd΃|Dህ]4TCW%bd49'Ω8TvӸ|*<ϒ>āSq$xP48Q4~p8dxƙME;e+iEFC15X48i + 8 6_u-:a q3 \'*N4 J1^M3ҦG8Ӌqi8`흍 ?48R Ib䚴x8="B:49-)!Wւ!ZdC:EQP'G\d9!)F ?_MKx/(Q@~iɨ-( fÄ*nN$|oH\]wx{`tK1#R3yHAcaHHz`-sNy7:wV*?@:xIӎ0}rmhnppC:8om8sc]Ǹ8 7sNTVJE.|JƳU8wbuQ3u0(jшPHAe BU$x,ZVUU +ln6J*8 "%'T_5)|`IQJ ^fx6/xYL$tN;Ҕ#a1KЏSP*IBUO +`"mOײ3G^h˻ݞd~b O*?N2,ǃH3NqOOўVqqvR7b"Nt9!imyL,k'5iSjWXb})}jJm6tCb&þS͍RCbIIICnqF"0ٴo.WT }kSkr!CkDLAqprmK>2m:N.I`f,GCA;sFz56[]ZJ` ?SzHY듔! <骷oY.RPѪjTW=-s(݂6.^J7\c9~DOث>G?P(Q2!?HDDZG>'M?vSuz& QwnCXa뀕aяȠ$wC'A֝4ݛIa&E >.~!Yyei}]t>=& $se@72?9ߧ/+Y)4b/7!*/E(tُ[2!rCf?e0KPIzjr43&bߦ@/QɌH}c?L}JDL%]6`?e=-)Lؐ7GM“P=/=p=g iףD_7՝~TZj#I~@9_w{iE? )((m9:kC5~w ~ +qC'q?K@$ro(YH~9X~/v'U&MD*JǼ(5k> % GޏhrEc~x4FdYMb(7ؑy2v7L g HyGGblFǟ%7{'T=x.Q|όz)<br^\+CS~|ʛ_%.ScS2O63Ld3n3wFi .s>qfb%ViluC;qyڦ6z&_ 4O?6ӟ->K'L9Ogq)#gSIkY1ELQVn,3}eW3?8f0ZCkDZws',VS.qSJ$PSX dlv)i?U&ip>\bJw^A))6 R"2l;4pRrG'KNJTQZڣ~$~TcWx)èo{ #<„tAS}O.6`:,' \@@pZ0F2 9}'6V 5iV0P$@L* >Vh 4'aF@ ۢ%HhP'wVEԋKf1Zn{2aKNX˂{oA)8SsR@7DOE..$BN =:呐a顡 Lyd<ђtL1f27M8;Q{џNRdL4pA$l>ݶ786~s 2$#m@[_Bdd)/ic]EIC&ww(* n75hXFӊKQXYi!E3=u=RNie19x[oG*F7U#-ɹ8h.u.e„\.y&doմy`x!@:dVҿNr п + dpz0׋;EX~ΓMƓHGᄰ83թ"dFFrc +c6B' N*UypRAʸGbƍFB& , +Ѥ%Q,8E[܈J$:' >CINQG1;/ѻ.NpLO @GR/q"nUZGIG"?Ƀ$'^^^K9 ,4LYtr͉@IV.&H'v$J*o/PԉnW8c?N|0TH6cK=|ט!Eώ56C%;m؋j?I,࿞+Y٘{d}"e8.77e iH5:YL-$?gANt"B"ۿ쁰%DV;ȦyEHL@yBrADoҐ\P`Q;ة + ,sDVH4+ +THD$FsvG_!Yf8=DH_@yDY~wEuo=,mAtg T@bپQqoHtƻHVf$I5鋕6cA'X@tPD[y +B%=Kk0}3ic#=F |~ڹICRJ)Ɲ)TI%pخOUF%nJD*h`{ijHaIgH!RXF'tGk +eӆaM,`)(R(2X_KhA̩#7g)S:a<0scAAMxPRAWRacui/׻ L輴v`:aI◪n lΩ"͠@ +]0g%3SlLSǔ;v:Iy#GNMhk#v}יz noW$#AI((LJUtlS]Dv>z;qx©5i@$wx#lug:ׁ`Kap"{6Kr>q>rEXA!j, +O0ɓeL#4P~<^[Gύ <mf{PTo3ev]\6wSmbȇn< /5ʟeIUk<),Zo3%۰3 a.u#&M gs(zM4 $6f]ݙHivKfg5X#*[4h&XഷO| 4)vŇnYC\CiVc){_m-^h:Nqd,6JPR1C&ufaD!4q@4!8RVQ,.MDz1"*Mok""RCGYmk @JASZ/Vy}FM>XE@0ָ26t}q?w6Q+] ݝKU}8\,`Su rycp(K-DMyd<Ԍq[h=c?/I"YJf N S*z}fb 'p`2ÛPk: 6Q;\sIʄF|U9SSM(h`4=HF!)s&ƎL ӳ3)uTC;v<*_+ZN-!5deȗnR0QS9ћlVfk%$2ɌmNhO5|?O5 B=2E'Xh"[ӧ^Ʌe:q&b}O Mx}04W'VJPWJA(Jn˓HÖ>i{j2J qSGF􉌥R$/`k} +Zwd̒};Qω@Yl>h~.4:H`@Q# Iloz\':Ovv}ƀ'Sj?`#FS#ɍ?-p?3r# Su~Bٔ E\ T׋J!Ogr,*35GE(şhYE~]TUm S\'#j[)S`.@lR(x[T ֒LIs A kۄ$+Bau)2[du4=)fY yJU6S߄ge!j&Q,!tD=`6U(Q`\,m3(1 U2TͥSCoS*SGs81{AhJjuFi,:R[wgR'նgg"n?dRT .R9p\躲j*;1UM o:g +_ˢ"9 +\)Ŧ${Ӯ*jMGu1wTcN1M6g_ٙU[*eުA5+Bx *c$DŽ6"N%㠠1*kw VGU2 +T?"<<s̹BI/ޅB9e T6L^|1TRO0BѰr0Xu~ajY|hSbXG +tTd1ca ;RT_ػ!!V`U9_LuN :̊ܐgs{;#3@`*.k<|-z`|Ęɞ,D +>0՞yUsmrjpmd*LReSpGn(byLlNZ.Xۑ1iU.b OZ|TZטjz@İs'~S{mA@y|=UorzEi+ʵ=Zb|k8^>.)*ޗ7ORDS jTI9S)sǔ+T"~RT9EfӾ,@B~-3^vGkdUT(`*%/Rt2#ޛF2$4@c|24s.aN"+&u%pd8ki FNBը!Ⅹw5ۣ⡣Jd̺6TE㐐r"mF*mSxĈ4EsQu=z_ +h'!N/SMI/?c*='W$TvM +}T\gt9,pC.%_L%JЌQXLKc'3Ev:w1U];.ZL/IO1n&TSv^dSIUB?|> cd-@N{:yHjs[R29ܡ2qB~j LUЧ۬it{EF09d9qLR`sLurD3${LӀeGLr鹘J %OK5ςG<2쾘J٣̶օq\rCxLVwڙM1b߱ɜerL ԑR7C4Uツs['a.=.R/Ct݂/$(|dWO@(DJg*b?m[̃hy&酩BEzeVx bDNjHb[=6;7?0(,uŤLT%k"1XzXkGexab:L'3] S&$"J\#k-6!{,G䤹Rq~zҒA,Qp.[0Xl[WZz 5Z/U[j)}pݿTk^g5xSRIvw|bP@L^`*E@'&LIΦp]j&ҠNU'%:'cvqP \%tI< Lү7Ypx)tuTy8PSJ TRL5~KfN~bhHT0Gg=m@/ vC+xT[J7`~ll.U.lITcK(uC7Y҂8>2?'r:ǟ| +!>:z0Ouy\$(*d 0bi$p=؟ SӠ04,01wSq!p&LwupޭRT4 S1Ra%9I{1>]W.q43 +I_n@"-7IMk3B蒩ƋzE%o7*5D"Kw828NWDLUz$2 (QLaBT<7}Zi>TUI E356ē2U@|߾LE +]T&Ɇ[,v)S|}j"HfRY1nYoTf_T/_a6̭!S>%SI\aKd{d2C,ta*.]t.eBQۙVʁL%&7:j*Qh6wi1p  ht^_hf* L5Ke*s9:b 1SKyg*ǪѦތ\`?aLY +jhe9d4Qsi(d5ogzV+*C1peGg0Bb'M%[Z W5f~_}4hF} +o)Gp-̩1 +5}LZ0TA2:ՙ+>I/P !w-"︗kW1R (8S-qʶ6S&E@UFk abeZ\ҘT'[Yk4Z׼ҧRI,P m@՝*liMP5dݙT՟"__p8:T%λQ +TUӿI +@U>Pu&S:"{]TIoTioUpu LVU TiC*OC+5~&MfEũȴhOJ=T[1F@ u:AAQ~@UVH >SdR#T$mh"|O(-9kU`p_]oUE*sN*T-^,|JA> pݬ<٫O%)?*\0k**op9UPuV Ȁ"TcJk<WE0MwU;Nu'&kZ/M".}*"*J c:CUt!,CR*di;Me)g)1Qay *tE}S=* tRBACiS՗[J*$CնGh~ȇ LBq^d +UPAjT)+rÉU|53'MU3cA]Y;tl.q8TE֨PUǦǜvU{o!*ݏ)fP84SbeFS Q[^?jP'7[X IQfzV D%OW 0*@U*`OhQ `kU.vnhE*1Roh7rBPN)7`ܚ,=U $R + w3'5$)w)"$z- .[d PE?$JHK}Pnjkjy3zZapX`ҌTeݿok]–)UM>NҾaLC(?|TX.n%%9J-~mTdw,_BJ `R~௥ NT8j#ib3N^(U dX(qNѓ5-~]' +)Uϛ(UZx𓿧,)U>9R HJ:0K9(U9Q<`Sp{,أXRiFiVԎsǩ̒gBR5)Fܶ*J8)$(dC +Bc)Uqe)U쑕e~D#d#dR3_NY>(&39Dž[Y|(9rã*%,Q>_JlhOHɂ/?IiySkAdAR~n,)UgĄ uKsQ{kuTB?iyAJU)Ud_UAz 13W:mq"\IY%Ju;zOisRevOO+B:KlڰTa+UOs-T%h`Y rGr2s"^UYV9Ta&۪ +4WRUHD^Υ +A +EĺT=+wT6Kd$:>>:R[5_ݖ*vA X&!R%2wgɕ{}\,UtIE|Qp,U{Re*<]Tʸ{߂/_ܪR%'(P̍Lr{[>z*iYkǫ.7}c+ TaH[TA:oL"F+7*Uu8]>*6F p[(UVJvx|1ɬ|vQ*dR=A]*`4TQ[;,Jv&ڕJPbP*u"L?T1dvgTi=fD@6lE-T $G7220%#UDj҇HUW ÔMZL'ڡ:g]g/3kηek'5ީ!nJy̋+C'Mq~^KD3UP6n"h"6p6Ucۙ"PMU wvP {SU|]é`eZ-N~SSE+co˩hI8UE;[zo.) +7}`ohR~L7Uo0b|oRd~;,O#Eii)ϐÅOdL6aP!ѼbvԘTһ,Z|Y-RހvSN'BJ](-Zy[[iUR6D|kUיk߂2Dh(<FiSћ\2lUpPl J|r +6\˕rn l5' #\se⪞* 򆫒MGF*UEEkJ5?cm*Ϳ(_u*kzRGߪ4b|KnUrPe5G`[ ٤aK2u+P;kx*ιLu~2BX;* +IG,g"A*pSjKCǧ hU"t3+c@l}WAcU1o3BЉ<~ ae"_Wu!onU)( 8;ѝRrj,h[ܻ(JtY窢nU9-X `*:᪴vIgX~hRg HI2#5 +ۉ?UeܲW>Wu Xvi-oW^e'^SiK ﯺ4rU +CJ&h>ઊu-V<¡7O\KުR&7KYql*Fm*^rQ~pU()&gaEaؤBPZv+Uˎk4* kU햕|⢿48U{>F*Psy>E ^*}oɝ8 UVCUV &jSV V;h_/>DR.sIYTK o$  VB,D8:jgSg6# gx.; H$%R >V~9V0TY~Uj)U=OWU:3wSa!TXGN">m4~U~_7n* 7D#}p*NUVXՀy!<~j"R4+ %"$3X`v/ *~v^OA}U|if*sEZ*Cg!rUu:$p1WŦxa9ڐYzUu~W[q t`SWza @]0|bO wīpLWfɑrH2@khY]H(n~<ђr[!E+'Cg\҂sU;qc] ieYafֹ𪲫26VY\Z7W>+bD#(T)~ɅhwUWb`fPJe$:]z|">%9SzU`:h&wf]Pgzl*D +^UtvDӫ*p-C3-2.Ke |spƫV7hW%3)aLu^c 8E@5Y ΩQ&~LHee# Q ^Ul0>h'<Zzs:"l8 |ֻ9)ѼC UEN5g%_*6z%g3|UHѯF*fC'Dgj|6=c U!\X>M~jի@F 'ޫ'UD0.MuBY~_:.EB]X{@8̩q}*ٌ~U,76#Bz*ICGT>s<>Wɘa2zTޫ/r)'&NU~%8⧅wnDNW=^`jT%2슻!=\^ȏD IJ*X5*mS{(\O*\c"jLWS[){UhȥC-ICncRv{9V*|U,е*Ȟ`b$h4eNg8A҄ю+{Y|ׁ|ȕUTaUw1u1 {]U͜ቻMFʋ]U VU^=*cVUSeS'l J@YU  +!!Ȕ<0gp?$@RGgZV>yl*C!hUxgeiU +v + ZCcJb'UhC!5DSV*ڧJ Y -*to *O2qB: 7H + cY꼓%toy㿊ӧ_T@f +F&{gVN^FBe\M䐧=0@!B}l5zIݩ0%Q'QJ}So<А#9nu]6 +cۣk`q*1rAnQ BwU ,3tCUZ@gA'ʟ]Y.M*-Uʷ -2|悕 ˶olX;Rz{;v,<2˱lSme-ߚXd;:rŲh vss!u +@v8hwXJs]~`O±axO9oJLVjeaWub@yxYuH +1r I$ ݇-V5ҭ捲[fT= +HtX=PWxr^I7MI 1U/?f@'3A&{Ca{p3Wv_RYM2GqX"Dycfӊ{d% t2973 AAfawemrdӤXJf+-GQBᘤ#Ҕַf $srq)lPCv(%<OVm==,bUU +H檔x&x>e0|{t Z/bCt eUGA10\UO +Zl}w<\LZ-(ܷ}+ʼ+ٹF0e937Lc'I*hȁgTw1kruCzk eXz# u;ycXnx-EMArheuvnSeݬ2DUH-`=*eM +jaj&q,2 SEXrvX}+jĻ.bЗ^ti>2D4ͱ} A$\c`AjڇiEf.aHh!3fPԷ#Э\ؕ4CdA"\0!>!58ogt/B?Ysq@-G]"3ft nµZk݁B z) Dg,do:'|' dbT*ρȹd;2|N]ӶzHM J+tW/vk;VxNs5f~򖣘\#9cҺ VXࠐM߶JXt$kbr$Ar!o`ʣ^'t"xCѨ<*[~Ezgal +0lǃo13f[{hi:_D{P08}6'5;™ adV"@< ~0xo2Dχ12J^Dyx[-yqUbtƺ @ 5!Ed毚Q) sw?EP` P6G5ŲâXЮt+nVMyؒ#"mV$g F/)FA]9#[Ӎe*+sHXET՗S-gmV굡-w(k2v4PLR +`)Ls/RS]CzQNP grAYm{3 KAVkChU2uctDJ!Ⱦ%d $%:^}2_ +M97/>t=a-;)њS"\4- 3em޽h +EM@MzVϡV3 NZ_y ,|.Ց;vuj1j{u43 o%:L)Mʒ\-f1jü/K Ȣ:bLb-:m% ]bD@N,홓,+L +@?{qa! oۛ_шe}*6cwɚIiYj[W:F35.mXgL[ҖP*.wʨ,,.Q*텅 tkTV|Th5+8owuc k,I?Ɩpa`<Qa"bE.aØxxQ_㘣UU 5+ (4kANq2N:5}ݯ-eբExġ*vtPjFmpTAI*q%Sܓ0a!9@nӨË`P +qB iB$Ǽm}cLHDҖש)CgWny9Qˈ#xf"fuXrϤŴ)H(%qBK90IgvG B؊I^Jh%KĶDe#YdQ% dc6 EBwl_5I+.TbNm̘[Iۙ?[0 ^wU8{Q`iTG#$|B~ +%9 @ҮR%{zq"l.4GfxL122mf<:^ܦuÅ:> r[auh&v +{YCmN9RkBvݍT1SK982>"-CvK:pp(0d xCcÎ59<%ȬPffC$,X8Qk,@O!u8whVo `&*dm_AYE}/x2x k`nbo),Coa6b(dBE['Qa4l-H90$nDLa3X¢e؋X#tQE4qTk)( Fphq\]bSPbS0&։My3-X3ViU rCt> heT z!_O%0 %:ŎB3\kTe2a"zp`P +ASddQFP8%ju%10fS~nquPFI Msf|S 2>wNrcFB?R*5BY) zG+DGV,r<]<8aYbyP?nqaN +Z/Ґ[/u"p<˥t=ykf [˧I>#BakG–o~xJkx<<ԘZbdC2QBńp lT-!UYAC>>̙ W "a- +\5(t 'p_X2~,2JDt%4gx'kTJC9SͧJ\KS+܊s'07E$*$' uPby,9Xb%(9elXᔄןօ·)!pPdsQsp``0|_&f  +B`#i t#'."*Jr2] Xo +rB@ 擰~F@ZʥÌ-3]4`7U+XLoby,]= t4fU+b*HvV* REBq~;Q[[Be$ XZB4}Cъtb_^@`Sc_/z_O<@, tAS@LcrȨ.$tQn!6 +]UBxZ!&¨ +f a'hJ|Xpq?wUpYz26Heo;5ƸZ!PS(ZտCRYYEBxŸ}E(]6d’') (]Dat\NMФt{w);.@τ*_VI t1硦-[hoRuH(hĥ,.NrHI'+]8M>Ts+tƳ(KO7 +&'Abo;*Pw &.ƫp)`ϟdh^#+.JZv#(NilctpQw-|+wx#_. +1ŃunCLz[e[i' +-}ǵ|UϪHJ}4 4U-]F2&&c%Zx0)#QեXnUsPwhdG%/] /띶2Z:8t*#Y,!]v \Dq"."eݒ(~ +~ƽFݥzhB|,I[#/]P=҅n@qY}: u AUUebt/t Xb5;τBtPBS4)5]lyt )\(1B%ꦋz~ O$q:nhWڽzȞtƳP FBt: ]dsӅGC&t +tS=iLj/dТ&UWHRh tvCX ,0]8ܘDB/:0]Rnb]i; = +0:~ߧ"JW<SpǼO.{7O8$i`ݖѝ)(F)$7ngXɇAوbE;.af&ynN +.ec1,2] g`HB?BA/φ2]pA4*IΑ6xe(%NF*^7RB?#t9Y&Iz8"ڠ<'8q9XXʟEPxr +d=sق%)LouO5qt.:8NՒ=nÀ튗.Tʷ,}BȧгS{.S *s*'gcdZNb#]Hj ~Ր${P#Jpo(?\ aC=CN"kaI0"MGUQv~m8=2vp<l=(i_݄&+W: (-* UkG 3)LX%]B5n2T4sKtQtA!,;NH5]tm +*I0C-XqObwGf MhrGvʗ-lKƄ8XT 30qMp1uYZ4L[ʢWk 8 H|c']E%]`Rӎt1Rк[/Fؿ.?tx;a,Ӹh3)]4)S}M}~**\LыH.15`#i{`̦6ݴ-Ky!ϰ ]=Ζ ^CJX{4&Q{^$()F&7 +S{Q't1X|Tw;i _Xi:FyL3."qw!EjmD aQ=MP9`L6-KRPF-ax4lBDmf^xT b,Io6qi(+9 +DcEqTbyI`C5N 4I|63bG}(S 2Jԝ.T#cm4rkBI =1҅'jn_俠">Ij@$Gh-&Ū,@B05PAU-[αE#!4YIH:<0g`N^4-ɾҗr"2AmD:"h1,!YA7GBR$LK/Y +'#h`PbRAG^]= B4n'|N~{k.:Ӏ?sپ,H,j.ĝ*f|\EЋ26[">4#gth<KCe#.jz)%:,E^LСkTY*. twbfwtN { +A (1"] [԰D e2!zB ׋U L#DRx>} 3,ZE8E7{Rrd oѓtŅ.Ga6~qr#]? Q~;E9MI#]'#d7z.<(8Gͅ?(g`٨Eʻգ8^qy!.V,k(Vg.|хeb>0qtns9U"L>[;Po gж*,Dy.|Ů_OΩ^GSƤ? ^.L -V˂8IslXt tAcϋlFKyC$]|qt-r0=o .@|C\@N, ^3 'mXpo(JX]]#邓6w.AsHXy)748 4-rH?}CBp`q8_VC[]M.t+t' H .Ŷ@(#|a%c,'Uf8@+$lq  +qtQ #.NjdZy B=)L!-**5[ 7u + ]4-[OC@k&?f!r6/ׁ{aC*R-mrLt3$E}Bp`@B5G]T4C\ A|+U4 Ѕ7BeB _ +` + At4¹Y]O6 +]qokrܲ8">[0d%Fo]rF +Z4h͑\.d8[[b>O +`[+)Ѕ:k 6H,\!%rQ&\4=mY\R#Ƞ.?HTAA&]d ]A7kDKЅS$:p68K͉< 8-&"G2*[2ETBpUTS.> Shxf5 *`NB?~N &g)-^4xjθ JE)-6XrH] +PpL^Cˍ.͵0+˨("?O|㭛 (lhP{½a[fl:`ZXJ>20%~.cʨMC'٣ ᴒD}] +y솉V{DwK]\j=xL/ü W9W`BՌy\)tѓFJ6^ƼVE98C^ 8ŀmXR;@~| Ŋ\.r} ]tR辉b}c4hft!. 5gv};>hKT}`M3C=e'wD4H V; wSߌ0Yqc&uyp 磋݂LDn3~u,fDI0G.yugP>||ZvQGp,,cTW}`\E +BgG#o714A }P$3~V 咉擆&9W5f\.Xr/Kb*C*({UU,/,Vqd +- +[WR}s&UTb) *SSMEfR t&oKte&ga2԰;5ˎ +QqW3a펊6\ܠ Qya&Ca©8mXIf8an3SF VX1?bA?&6]'b:b'Vk+vrTОjpb{h,62CQ1tƊ451ac]lr,ڨӱ~^i7{cg'aIpZV-Gdv! :{s5*<2Y $;JV'x$ UN6dƅ([vKaAeGTY!LՆ2bk4k-[Ve-sT/.LH/kgABjn]l>Q!e~i{X/@ +HVBN>h <ԬPw e3 +4@8; p6km*xY!bqyѳh ,38A;"Ts(ÌW$ՠe *hIb?vѬY8*HgSY_µܕayPce2>33~HI+N1%`ڵViM8,TࠕPaT ؈8zAHN;@.P!?E)C=*XMנ-S#4>=usKq +Bo +gS)>BS)$*4c +qc +z0E +$_Q!s)NY8x0RhP<(\F) LݓB,M +JAH3#D!Rl l Rt(HG1BuxbQ sDmX5xQlECOuEv` +\B&Cy QCTCC1X`(P@ +ϛ'{ +AC+АPB#(9AQgEE·36iMo'ʆV~kMVC;OO'=|"=-q .K=!-Oҝy''';8TD;DC +) {ch{ӉÍ n'4:qGBщC#9h Fr!'.ņqm-;@B'&*7ah~v ķM(61ъdW`&pؚ0h0ѤMkITQS㌦檢D@3@hf Ʃ@7QhB"\3ahx&<ɡ&0@57LHCܜ +hCw&*7QӻB ZL ]&0[&xSp.PU&L2A1phX/U1&]hmaL Z~bbo-&~ __h| uz HK^bah?/vPC v кz'Kxhw:2ch!%XhY 8#.ju;Msv9Bk@ ю9[DMbYih.QwȒJРT˻"hHKfL3%kh_ ;K Z"ghx ( .""lnڙ0/]ĺĒaMC뮇v߈vn.AeEK-aQa-ҥ̩%`tZfBZtہ>Ҩ4JJ(U=WBvgiM1nL`xx4DӸ?%`hS“ KO$%A-(q~e%8!PR$6gj1.Mv;9 QT$ڔ&!dWmh{Kծ$:_NDD^qP/Xۛ$KH4YIw$t}r#Cp5"a5;EZY[HxZ"Lkħ?]H|Z 5ޮ% +$zZ0D^k Q-SGXԡl{(M6Aژl FEpTct ^ӥ]ū".6*tjRs[QmQDoK"')*:]w9ّㆋxD-%ƹnIĘ 톲ۖnln$bT!Kzzm{K7ȷӠog>oIp?FI"HI8`y\IR1Ix7+o7f%h7 *8)p"dm"g'J$p` q5IĽEg@_'l DjtmD`-"DVH"B!µDBw&DXKqD! gȍ{./!ss:DB9%8=m@OClyTC!tCd]|x.B\2[qXMh}y!ԍx!sT u!+$.t-·R_ԅ'B,q{,k+θh]rr^bPo0.9~ 8Ÿ6b;6ϘnuUqJSBHR@*>˒Yr1+W*슠R +&-CKI!~TFBs8Eo`" 1=|q#4Ǘ+xF;:. x _`'=A69|rSG&CU@冤\ir<60׭bnZ)2Wp\`sMs"d~(Sn͚BRٺɹB*뿝[ҷhP˦K@б@`;(Нxh8]WyXwIl +QLn9C∮-cs"<.D[ҷsQEit +qsF!Sht5:>B4 ]B=''#n$@EGڃ4Bd#B4E~=':!;Ljһ DdrIy{!X0qPB ;yY|B _:;%pk9|Ʒ9js9*9 +t699:y.tSnAtKՕAAqE$,IW+].t#+ A´LQR@`wR!uAwm&/!*%}C\8Ranf(>,gBC15{a|tƾ==:R]WTPQW.C>E\EIr몖%_0w=z% ie΀ADyjJh E4(x9gx`! Aց{Cf{i0ZF:G.*.VǭpR]L")#pv6Zp^;uPIQ! +gdu@]u:TbЩ@\w̯MLJǯSH:W^,$B9T~]կk9:bC"׉d0@{ˁ®t0.;K989,5%gCEêaˮp.>CHoBjқ5qX`"zw82b-800o0!oq,JP `7p(0ƮoEȎNv puBr9<׫5ۆo.mv\n*6R K6*wmΆ{.luur,jHOl8̖c6ej,gYa @˺51w5Ona Y +jVå C0cCRcQG *l|‚4hWӠka,O KkJųb}4j4 *¢Z g x/woX41hѠSF@ebS@x${.#"ɷ j`&oua|Z/}B^8Fx@Nԁ4}?1"~[CO~xB?ß;F4*g@Mwglo-g8nnf0~֧jhi%YSsH[1,fØ03aVw2xA*^S(  J]~a +!c0І]q 6*d SjD_ ~?^'¯Hb00"q0 įaҬ- 9e G% %A#H O-kc  K`&` WN/p_hžzI9)btpa  -ǿ vLo@8v6 ~i](..ܝ?|.lj.La gm\̸z F?K %"ۀ=-X Bi9 ZVU`PJ’y0-xa6.- ʂgAt5 ,1 _, )| BxJO=0c.UG,d8DX(,XX8ǯμ]aK +KW\A*xB;(~ ѽp@W >n"ӖVV$SN@R\AA\` :e\ +Kv#Ӹ@5k{~P29t2m[aB +|ao/)4y}!*/yI_':o&5Y=z+(䷂SLm#p߭:Zf?`%Ю`VHYA˛ddȬ_j+aاYNup?Sf3+bz=KǬNy DgVP?Pf٬k[嘨6h(+ +?H| ){yrc8~ZQ@Oo>)Tk*:+ӈBw"**#1>M:Ќ?)?F + +*T*x*02Uơ +:dTP*I_b0k$& +OOANaM7G5{QlB%KJ}P +cK +KH #}Z GQJ9 +Gaw +\?(Z}/Yb4DACV ?AуB+(%Ba +mPء?a?!E`8~ =m{JEG fNu/sN8 8&@oz_mcW&\&DQp L0 LdB 3 F;yK*~h5Z g۰$] L+~T mz0Z)◌,V'AcNDM¬I$h0~%A8@H¼ O >"/ΐgYVaH@6h]$ mO{ 0t$0= d1_*':ohi; ?a@P?ц=4WnTGXGwG!?7#D~7tjn+ȯ]mFַIg2bԂ8y2΀EaA-B]=.#Vϓ0H+S +k/)A #3i5,07AL"4ˀb~798@_2>G~0g~ |jlX}f~5D|rOo̯{0/z0i~y0ѓl'w<ȥx @ ~6߾A$@w9;/wPxZv@r\:x5xSU1?Ӂv9:)^9G&r@883c8Xppp58xbSRz]7Xv蹁#8!sD d^cu_6?C7<`j~N 7t|EȧuC7`GN5gmm~ @H7X7?*\KMޛ18S;a tXx4IۀAjʙ B66H55Hրk5D5К@MK#߉UA-R%LwE6,_* +πfPǙ y]g ߕ8,J p{hBg( h<`<3p~yәn]<3QtO?3%#]p|ԏf Q(hH1ޕfKP*2pA l@Y@fQ}wqZufU55Ͱ9ĭ=ud08m0XT?5{~永 ª~|߃E"0ߋMdd?28K22 Uc2`N`/dc,W@SZ0kLV%&?u֌ADl<sjolcpÍ\~y8hm \ܸ~%[-$ (VY?BE%owa+a0Wk֯S`e` dZ/'O=_p{/l~ 31mJwx1$lr.D][֏ akq.'֏ ~[@-x/@PqL d: Yc8GY>4A <C,#% ^h7K +^_8`Ь B++c_3Q,"7æH*8ر* [CKM{3jW@T +RЈDIJ pq^tsb?RN+Xg'O(8 `s;αx|tqJ``L0WM ࢤM`L1A0/AG%%pJp~}J0$%IhRKi9@_I$(" @kOF_d89SoYZw#.ucAE/EA C>v:]!!Ȳ1E*A eA bQm~T@@+|l{`@|zeF/T\S;@vZĮ_ta o@rM@4F s 8 @5nmsD60 x5j7LGhL4 LPe.K MIэ0TZ(E(u$ 1u_ |91 a_a`  +;뷿 < d\sx ʺ6-}lw{MpX%~]^ ծ\[@4z^?O[5oIghHf~^I?dR局wk9~7@PJBV?(*ncW8@(c*,0 [" 4.YS'L9XƁyc1dJ lt,`X`b=Gꀅ'lpɪ1F7v,){ăU?"_~߹R~ޒIV$>\'Wƃ0r٧ .C +d_!^>q+P6zU@ɘXt +,"S\VE$:<hP~L8Cw,`JtW@@Rss@+@QX7KRF#MuRLQmׄ 2 , @7yg;91-ws[ +) R'Ps^>8r<ޒ #EKz ^tn[I:89`$_7 Q~-H$]t9aVd8K@pߐHD~nT vLm/͡"[hcG Jb[vTztbO֑y3y4$i U`k:"x/R5<غ̀G]g> :yM OuBׂBU5KG:7 Vb&20v Gb۱aSRWG -_‘wU|qdj e\CjZ_@t#B i%O:PkDMih@VxDwd#-H, 8n/fQav `ć>4 dʯnfT)H0%urN ^z G# G{f>-xGȭlx 5=nR{ h?9*U^BzZnIZZX$yN s +HHfqf +`. S~r"{9慧C2Y,v +J)ejа`5\q㢀 %TZ0 Mmb"hl-+= W=cBIxӏ+&MD-D̔fZPluܺɭW^AOJ O mZw17td};^L_D)@C>>'v#hlƸ60p5MsV-&вbCCoe>.p@#f!v1,59r01Ӈa%=K%%}6#?Ypuu[ڸ@4rJ ϕqhFUT4{ +?x!C38T£tk<@+MjEm.<@''ܡ-7#> _pZ/h5vi@oD ykF}%KGL3FZ2(RC4StFXU:=EX,M'm5 71B(": Z|oPE2$'VOupid3D`~vHkxs4)㾰FU` 檏X*!^|Ƃ9bw"Blf tq/QH鮄`QOj!!_yJ>c)Q8 RH Q- ln'A`fe`˶Woֿ7gH#N>IDJN?.i2D(4C@m#@6dT.S?,\hŊONjȘz\c*_!X>>d><.AO(FC7ReqiG +w5ef#x|0v-?DN_#xkrɋyYG+o]eĞ:(= @8W`|: ~K!Sſ:L8uGv %NΑpQ P&G4RfbUɃ5VzBn.`\`!pz>IIСfl7=R2"c.KJn>h#@ƇXᄱ@q䍛u &u-;Z+MAl#Z,(4+R04KN,f/~8)YctE17f65$ߏ(Hyج5蒌GЅGBȐ +<9vwPIYI?pymCPo@ğb~`@a}w}_ڙX>G}6`ۖ#@@ +;й#Gi &m07?4US5B-]F>9N?e(+4D lR`pM*DŽ8>j|eJR$Q# op+\ddX4{'Yߘ$ ѧ~R)^2%qTytf6gbV4WNSд"\dod"I KVE#qA9lҌ٘ *Y2mf7.Vg]3zթTĈ&/UXsbh9=l.D8{voٯw5v]s?UG_ Xlէ:R~fT&ؕ3clDl=iseuztk%]):WOEz[ҷ3Lw 4OmYgYn>?1FҡicW:2JKrd݌`+Dq;b]Ѻo1,!1Ý#Ap}a2GI8.2'PI?1+KEW'KR3!j%araW:T.Ϻu\*zuߑZr:ӒPKy[=Őw|Ȟ_+i8tRyL?1#ĉPG.$Dʤ 1"'6% )xiѨ?_R0ڌx.I3âRU\-Z5tVc."+tm~存a1yoU3 5 +벑u'.*nqSmGAs&K,zM(؂REj͟THg)J0Ua&T   ÜF4P`GMWp'XO@) qAd&HŲѬzZ BT!qgQ<"^$bTɌI!s`XnxX3N3n*\V.PLC#u¡UmR0R&)y + ŪTBK'̂.,Ո'&aAV0¤4ahʝ@ |L9‰e(%@n9çEA_1zO{0DJp +E(JT0X  0PP dS*H0Q a ,h,(0`$$(`$d80M}D(-AiF/W* -0Hn`-i#4jB[1&nLDZ0y;iv!PP D&C8_! a&(D*"D§⫰6W=h|~D>䡩])-Lއa^ha?3Ȭ`ly2P@A}5<ŠTp(VPH008zZ4 ~ +8bI ^l0 `ߒ\.ۛyf vdMH'i ⢦<`[Qx M:l*%) 2*R:I zDušTiRN : A!{b:TS:STeR ew2 I)2w󨼸[GTń]_ DhёuX;:PD[)OS/`µtJ\rGՒ˾U0}Ǘ3=h%Jc*hyȄWv= JQ3-Ĕ=â'2߬i4\3ǰ¯0ľ%dQ>/6Q q%SI2R= K tq0 +FiȶYl> K|Q9'r-1];ze|bɷT>[]$*ϧ4FOHGɽd!!2žAÁ!|MϸjR +*=Mbd#~h tnTT,Bb0;&yE5dɝV& RQB6#2 TՅ/#@ÏK,(7]=F.AoH˱{JZR=B7P뜘itHokYuURk O=ؓ"NET-!h+ZJ2Z>, .|Zcؓ+34K) endstream endobj 13 0 obj <>stream +Ӌtz\t4 `Z]6|WS?jP͵Rh|r%F9f)+b`]lK}ZI8DXhh;}9HIя0B3 ަ+4oTݻEw>\]x |&;8Y(XK~gĠ?ɋ§g_m<4Лjkhg2\"; Z4[+FA1J^zPP' +*񍶚GSZK $}փ15DmAx-MAE@oP6J0YفC})[}"2*c +<8So7Z- GrHQj,SA62S{m^z"Z"s9@pGV\p"Os9!u,PX h%ai#+D{VzR>- x),U8 +Qfs3(I)bpé'XTiCXSUuxmm1#1R(6 =5bT%~ViZַ uY^$ +5"L}ߐDСiu?U8 g)3^s =X]OҭVVB WQ$!]U޺b!qrH;@ -qDE֑ *zJo#nǰw@P x% x%c5bTC8^>6p{(W@&NwN$t +S5A{0A]MP9gc7lAH,kEF09E +`hWJVSiTщLD/E.('T WW>)KT:EC)}:UkW%F~30K׉6"r%,U؁W<$d#z>6<$q  ^-t.lzCep sAРSfXz"54;"s 1H,25ze@34hpoqII_$*XY34@ +Kw]H$.hM@w 9uA]VQsW\?뱱@$8" L&+li$mPvTfjyb 8~[@9w=‰,d%71!u1?GP *c]cC-m2}E`) 5 04Uynpq9N ;nyeiPch˄uX$".QI75 Ltlߑl@X?a<ʮ}>e?4N<Ne^oEG% ȩS Q OӚt|`qJJ\YeHB] .أv+Zq8D+o)W. ̯ F Ԉ`Eb +g-(om".cDhGxctH<8!uwZp=N•@< @#>'&avT 2ZHCts d"ScJ2p{@c"z ~tz"Z5ݤ1q9Z7@ ̄GQLOj +X$x,J܂y%ZPQBo% Má@-H7jGaG| +-u-$MMN0Ɋ[!B!,a Sȡ +-GԻػdOiV[ D(&q6ׅz>D jZ1j⚕^X\OW22;v?–ԔQ3ZtUr$㝿vvAvkZq[d0{Noa랍=2HQC')aLaiy4 >s lz-;/,4L-:|))U_> 9[F,?,ٗd<-}<4ֆ:*Y>\:c8< j +_1aNb>er*I9Vs =kl1\Dz^BʀshO[Fu;*yXL +:\!X|@}Ec[+[Jco#IΗ<l4r+9r$qQr"m܂.TUfA0~?ou + 5`q~l"TQ?*J!7?J?i29eQ\lZ/16zpRSJC,=@`@%:NU='1G8cs@k"t +a`չ#P@o:o)aZilyP~#C7|^XpHABo8\삛h(|,Z0.FRp"2r5G P ~aS~IRprk@>ӾNg  +{B9[W ћ?Fb +#]`FK- +B2 qwZ,kR"'ю\ ++*49A.NWC+o6Oc$3/$<_Iu>vNP +MyWre(r0 8zWyOʹtaN +번y4 Ŋd{aIDVsd1Kì4doWU-E<+CHqrU.y* ¾&N.[S**ދ&pZ"U؇}m[ɈY -7{(ĺWWz:eN}$*']qq}It(>1v<*.\ +m6`)2^#R + [r2𕠰. BSHvI=$` ITICV|@?-aFװBGm-oS83 7]ɺZyvPjep{)sA8 ͔B}ŀ֯( gI :1߸wJAe*P"uw8 : ++ Dzg>,&@z?Pbʝ|GDxe9o W< Lؘ1ܚ<KJ%W@kO8BJFP 45`4!R <}yB 5V@ʗwVu˂\q 2b6hq lU +T |%?/~l al<E}zPu\^#3Zih%'4Bt<@bgzξi8D9g +p$91SmEtvbgǯtn_&Xi>$,RdǐKd̶_j`uYi;T +eLsa&Z[iv7";Z3P FO[ȇ`:Wن'3G؟.mcvŸ( ] +V&@3 QNS((uh3Gʿu ?=RSp#Z`rC [{Ò07wWX7 eEl]{"Fp o1b날*[]oƞ=,*{_=N.0aۺp⭋U~X}0k>,0M1T3]uXƀI)0-[BB.~a0IXa ;T0. o,U< ؇yG~ bǶA|݌AD;1g9mK !B`TE#9[ PA,A}x]e.Pz]dl&*)7L侮T3 UW{`9M`asavl-Úa +:vϤ@X{0H ~1;,-V"bs &pV&5~, y@,uo +C3bk%̆aWYx?rZb2ME姨uXzŮy/0&X {µrǘX"q,ib9;614&cw ,2Vgڱ.,튍ɾ̍S +>E-iN+ Ȟ{dڔ$ VYl8}F;M.Ҳsb]<ձXYم`֪Y _F'n33Kl_YcSd*Ylo6%Yx;΀d,CgT^9ϦqZ.=SCHf6hBMhJG Դ>q!dh NWRAar Zꁊ17]!ڦkVH)Ivp&цW`M}C480 :UAvh Ab0R4*6_hQl\{PbhNDK$v4.^xDԸhEh>1c4b{.[.Fn Q2z/sF6`4K69/Hh2.WjVT\-IBM=Z[baE/[U +A]6r6ZMp^Hhv KZc,!&1!im.N2iSi|cLRCƏu;\ɹט#ژ>koD Xsl1I?m)գ2]ֱ ]LbŶ ;Bg{ϳ -+6<(m aN.к$vڌvi; 8i˂]hFaJmMvQlu2k/n%6۲5x!c'0n+CnQr=s+綥7v Vմߎ.^|-YxxzKvy.moblg}}ۛ 7ŶpE!\yc + ] a'TG4ȁޕ30~]ȫGp?VpB_ipᯋx_ps]p`| +aymjׅuq0!n{#疸p>qUx%p] ř ƿ:y]hո\i(V'f܂3xzƭgblƉ]-m]| iˬq]dhM0Ќ{5Я |]8Qs⺘Mi<(ҙ7ηuLy~&J4u(.[U.Fpl.u1Nt6uY碻x],: ҉- -kY_!¥VsMw:@]⮋#7I]M.5ŪkVwd>&p]}u݅)5~ +va.ẫ\7]O\^ږi8!B\uA"N|̌<c[ b?؇nD9.^xؕ0UruKf>@f`Rj1r.$uA^.j&j2Ͳl.uG^.ELd='ٍN 8i[.4.BpuluЉ}ʱ5@"tm^huqZVFAY]iJvd7Ic^tu1"M^N`SƫMNwuWP-vXz +"8;; ]igy{Gr%8nsdNs˹v7uW:Y]?zErE;E u!yvWںP`6+&Y -ƚBdG(뽬`o{2.Ղ[g/u!N{.~ۋ:܃nغp;/ݭ޽now(_{ "/~]tf[Omr]_,\j}A176%ߛbLfO}7_ w>諦k>{`9QЅ}e_ߺ0M3r,@[\ͫ<ӂuIp:..BB84(.0kF6rQD̟/>BS}b1?dacw3X"GN4}хޗG{ _/Tg ٔ'y_=OOYG ~9hMwҭSHy~ƝtQ!渍Ï*]Z~}`^onX. +/_䃹(./tQS@߅l4 8 7]4khɺm5%le&REJG?|HsR'b6QIq +v%8Wt@)~>W`iA P =]SΊSl_0CWD~pa)yuESO..Z.taj=]颇<Gk .ŐB&~X9^Bkrkt=෰<]G +~w?E؟.ꢞʁ&MA]>]Ht} ?/N̬_~g?ͻFqSO𤕓\@C~NZDEGdwf~z5]WC O=jt?uSS%_!6] Um]rVh .ϐdq`= + ~>dyW~@D;|ElEi .//s1gAN_Zoyw:] YX(<?E""",EJhd~[9] "@_^":"$gW_~=]CCu ձ +!*so {/5nd^b7ItA 5u_tQzE~[:].tn_pno$tqO3Iovx$eNeF~E$8:t$_6a]03]hong$ Lg8<,.}JNA:Wxo2/XBaý.F^%N~.K(?NH51mE..Q,]xMc5.xaxcd"KqGLtіK/uI&wctRKK\)HT~s1MT~_ze~=l3a4Eci~Sp\olo4i~\. ئ (礦rA[߷+E4 5]`H$jcE(@L.PrWcbcf~eGΚߒRk@.y9 6lLD1TkP ӅܱEym~sxH@%.vs.h~ѣ?6WP[h8BXtkx <@tHot90)G ]-r8 p~sH 6W8ta(T^J9ktCʜTゥ.t_)]T"lH-](њ +LeaO E tI+]`Q[׈j/Mat1F?ƾ:'_ K6VrG?J/JB(II~L"u']L%+/%E8T_b;нW=߮T;o>io}u&ӯq~X*V@'!r(CtILbSlaV?^XK~R#҅4 Z.Pv|e [ɅR|W @oZ +z)WPuR0"~Ѭ߫Z?eL(yCP~B.d7Y.M*"~-WihG#]h~Q0}A)x`E餔lB.H18Mw8ejr㤋GƫH8Z?bn[z +fؙT>Ў~ + +.Э_X盏.&%#6FޣG~8SR( _f7"R[?gz1&Od ٯ|qC؏^:D|QߛBE.T]@ʔ<YC.JDFtAQ.ևQtk)L¬b?raKR ]L XدXr2t._A.Ah~8ef,P|W ]Ѕ#aOC lB<* ޱBq\I. z.y?z>.DBҹtJ UtI¯7t]CхV7G~k\A/&t?]Wh||Tl.կltoa~ŵ =eSs ?5]!•`emA?C˧X6hBK%s(#_$J7.Bz7P+? ?袏3u(_mlu;GI(m._D.<Rbta-Z袚t]l0v3.Gхq: iOڿ⪳<Et1l[]%yqm~KD] )LFyJGM$0 &d +;8.y0ɮTvQ|takc0>έ1f]g]I% ᣋU-2]dv;Yb~MyP#$S .KMU勑.ؓ Lj1L̼֫"E@7>;UKUb{G0aGV&4.x` Pt ?EL{ `~-Ea>O"]hJI=6^XC+.,gC?sLHdH!6^ROvwW@vHE`HhT擧( Vd|R'p(Ȏ2%]룪,VizP(D탓#+7ﳓ!%x|gM [$tAmTb%:tQ&aaȒ5oR"Z-?! f?jJJG-ɔK[4wMY;6w&]M$F(0Vk*Pj"UbykoQ" EXA'@m ?օ:: `BĘt 2>.C L˽'uka0]mf4"hi,0ueeb$j$?mL+e#kv0pp+t\^үtaQ4Mlz֎nUwLdi\MiMDbpDUdAtKCn^ם.ndM.>WV<.n lCf(W>ty/ |GAykm^d0]P \L6ktYαc?@\wBs2{8D4]K.EteOM;t:IAW p,n<*-5]H@dȓ45]0i5yubf})@.V##¾( ݒ4mh +wHa/x9qM/XMdttǚh).4~C +A' fħ M!k/a]tp"y)`ISmy7]̅e.LujD)Y-CȀMpzRa=@7ſY\\tP"~޾@2\5*GmH S+6]8`b2:G CȄ2+ MOWv$E"bD$o_hDJ2{cr@h{Ҵ}A5fmD}lӅh8o6 vzZ+9]O31 wJt1.lM(kBT*Q.lt9u%>],P+ yaĻ1hŶϙyqEqxW*$L[r.xqo,qj HSɇ/e(Ɉ6Cpza ,V>zc9󲫔/BR <]|$ ܏=]|$E./p^W^/)brBmBJ$ D=ӅqS^7e@U 26o\]n\rwFҊR0,--Dl랍|aD@taSI@'Qt۲"et!'m'\w< +NN@م3Y} +-i4/5P%а>ΩuW.gsR2 qJXLߴj @?7] ʨ~KtɳJHtn jXk DE-%K)5,nvOJ$@Mׇg򅥫WRVZk|m.=!@`Sjph@/{yߨ . 61E|Le9 74o" ;RRfؚW-FD3Qx&Htp#~rp_QX,o.y/e`>XJ.QjZ +hc đ|O⨫iomv)r[#;oJDt ) +Yl2b7]T'-2YbgȦ wЁ9xӅM867]hYWʯPOFGdӅ~-Ջ ttdVWFk%6۷g7]mMCW><"\(^ +Y0FRܕ I@${6jvR9] P-LQBcb/;DAp䏽.iW'Y%Yoc7Bg9s+`Vv875XF oMqg| €(Es Z`uNJ6]T@9\Yb-gN" +o2{x4d\Jb\+q`{qًOU9]7C<1.V*c0Dm;NV ^A8=8]A~ <,ȡQbŕN9]|{:.xa%-..3tɣ.UW|:Z|efqSoeȱX#邗.^M +LtO!Za8UGMn u',,?Z0wEe*|7h.?tAM5vbZ* ~c¥(UYǜe~+Y3kv{Mch&ٜ,:]]̀1 mFqwOȣrT#!ܴ.]7z-F3ezM%2̹^ lC@m 8iո֦M;6]tES 1\ŏQ{ 5!(y`%D + Ilk!7]tOavPM>B&Vl]Xkw қ.L+$~GGyң3]lf96$sB 16699X150V4 g+}3;7ʂó])tlɛ1]*b"v^t)Zұw.ʽV=?0/]PRmP&v‴퍿*O饋L ZZR.bs, E ~.]%ꗻ [x$seK;q y-UPdLƣ٪nxCZ%l19.ԮH\5{+ajТ6P7Q <<:~t'IwҝtC-b"K؏(3]98{8`(xbN*Gos_^e#d5SU 䦙%^˸D*P^# ] +F +8)Ujyy4bx X)/1TFLĎ:f`bh Dt 8 +J3``bC%͊*Xv9y}\7!t "*1Ռj峳x8ҋ'%eD< ƿ_|G +IlN[:8`R&jy iAŐAaB3US,"$IPtK/XVL"];n/Kң6JZ-!JTDCU|%EE˄IZ{AdEDÊ>T&WAV7 u0+DРb+TZL,%h +!ю +F +J,eM*J{-}fa&Nau,a[zO|g9)_eoK +o#DuryT<>~]5-El(=+^WIvIʚݓ>=wr2]aN{l$oow?nX-<*>JjMռŏ?z . +ަcb[iqu5z}4 g^:˦GevHwAKKjN {O e,Kj:J wNĿ.F-o9 i٣dH5IVs9`G{u<;m%HbPzܵU˱( nOl>5N=\=fIZёjTSu_`i})'{e)~0;CfIBT^=J(nvD S-)ݟc#tt,EE稓 ^_HU%%]Yt e"]EhWN'=]YO)(WSنQRS0M_6X`*~cB (uC1MӚVE˧ +vU/{jUzRK18nRR=Ch9JM Cp6NpC0.~]]Q=?{6s=ߧfӌN8p$a surٟw zi8uY{ycu! +i2ty9/>52t 7-Ao$󯓷Av@Rn\ubiɾ 'L;9bw R|:7  +3i7Tux\C3mD٬۶fqƵv]qe'@@̌󧪻uNGPNħÉa,t䮛92MֲԌC(8 47flFG/GVZ-25w^u&<1 =A=e9XP#xy!iIw[7' mv9:&L`W~͝v[n1(uv[Vw z$v5ueEME[GZ-E0/0$;J#/^wqҌ#09 w!r8]wm+Sn6fƉ9.A`fQ3祝e(" s[qnնVh" +t`9n88t9Z6MAOr^qnGk9YxD r8݉ƁIJf}# +VC)74,cպ ͕5Bg:*DZ6aiʦ=mq=$fYi޶?Kg:BUdo{,lE{JnXi;(X.O{$_sg>1DZee,#%$=$b)'洑w:5gj< o{,$1%XytDZ':bk/~-xeoiUReEE:MMyt :/8Pz.1; /tt9 6նsfW䎫?Op&?|7 ִi,vXM[;H6ٰVcƭ D"DqTHRMaQ,QP;ެ3syƩ7'NdAA?M{8ֽv2dj וeO{m4n[qiKqM{m(H{٘Yj}בVEVm9tHGpFg/5\'fԣw]AkJ]-*!؏uDhu0\ lŒ nfSr:D6[v6j#`eԃ Lcn;N<kC ,:Vb -pc_r6%mZAy$`D(i7y/?5KJr60Ƚjy餈 e2ةXW 6 nMWu֑=ǿ^W7y9j\ٌ@(Ou2[2xЬsf"'&nP1mnθل(Pe2vf,k[;7֌nYunR;dnGv0d5mB4Iݶz (?u +qt'4mSlD"pO9Y:tfmK;ns;?_tdM=:(״"0R 2]f[{_h=W]d ֲá=rǡZuĮ8ක?NI ǏMUvZP/>$?~'5K< vazIrZmaY0+ƞnm5(I]Byj-NSÕx.:M}(^80}N|Mm}aj8(Nb+yE2lXm8vDΆCq޴)7 7bB4-#9 Dž/D_k83]חf +.8oyeޗO׳^7ej,}r/:S,倴YglZ-VgA1 9w>nԟw]/7fv6vնo:~c5t:'#l םb"1MHs[iQ5ةbהw;nŭ(%MkNpJrsTDjUU RO$]OCmKjeNrժ,ޏ nryd_Gق^" +V7GsD+UK9|EqAáE7UFZUi^gl Hٸ[z8B gk5Mtm{2a9,c;)9si;^m[ ~9[JpI>`L/H:~A'ɂ]TYH2EȩvTeInsz_ey1d+ NN'=Lt4jSTA͈`J4,Ћ?N%ϔPZ0I3J=wy%5uT'o1ь嫭Ea2 Q[B͞y1K2ղ{ O'C5ace&gj> _"_eq囹NN٨Y6n@,s3ͲWj5ͲV\M t>I֠1ɟCg)Qeǝ;N +v:獛 un6ڬjmyNy'u MM+들y,ZFr@Ԍ{gII:Kׇ:-rYikes$?O6- "~"ROUۜ%j|Nj5?J~]@!V+USnkbאIW*ƪ_Zf,JEaҚ^'BMԚ6VE+f]2[rS]ㆊ)ct)Gj~вEdzx4>mSiB$k mk)|a?-{SH5Kxyea2Ip$uQDlŨ:Of I`4QbSO)c#mv8($m3AP (JCXbmA8Y9)9Fj$uUd)=].1[ZfESfx(Nuf?/6Xb-[96뼛6{ݪii#sq:3t|-2I54pajECb$vCش8A; #Un~yZG][7-d"yv{>ibou4M-UA"}ޮ Vۮ*D~ +POb˟A.4rR,7ulm=d{m׃(5eMbDv]k +vQ;nĢ.Mn%K0?C)R"C$] #o6)x ~RIMM* +J;hEI{AkgV$kQlWUTAP`K ?Ñ; dU,F܀e sHJqw-s3٠U ĻDrDy$ +kvȋ#}w_7w[mp o/~!mc:\I*m3ɛV{[IEqcl9Aw]moa;y|A0tL7޸sÑNÏIh` ~}9%f7\YϤ18J)H=r?cnki切_%vun{[v6z9\6~tq +yFS4lN!/-]EAMYc(BKԚ\ɜ zƏO\+.\'E'<)GZE)x~[yݺeSvp"(BEiIIQ"Ȣc$ seZU|9`YQ/1o/A$i41CvDIʝС+J,PSr..Ǖ .8"X*A_vRculjG],l4q˽4"pݶ}t׵Z.Yf!uF%[tR$d1M`K+meR=pPQ9I;ܗNr:l͝g ~vs֡ %5]OG6hѫL}Ql܀O[j\ IڏU)9:V̚ksQWP,I'l,vU&*X#!,S=fx99,Q$'@ȓ z-| #~4cZQ4'E=xB9&ϚNw `xrYɰ)-I7GU ߢn]Y6L{r8h I_{Y`W5yni om-J n't2;J(ur'5a頝y-djO ֟gwqpU0l4mP,9]jZEPŶ+%}! "'T#~coe[ +)3TVn@մsA9\G=kmC,S 6h8jq8:~?{$(5O:h3{^ ~ǥi3bxu24})][8Ai5U.LN<~x:8(b|9$QO,gЋ=:0Nj)5rAo:fУA=]Jh.~RҗcNz$r|7KP2tj (rmX3ժ(6P{B+ڢi<Spgf{M!Gۍ=[N+?d*,UK"GY v:]wf;@9{]mz!lГ=nݲqrv:t(7{^o{iڢjuPL?Q[ZC0?wK?iRE^ s :$i=M陃 ~^r6黎4E|S~vV{5Q-KZU;J; 2Bxr-),Ek%I=?( vyQE<٧]w. g-v-'?kߎ#wm>z?*$:&r=ަbzeͭI~^WŸMVϤ%o!:IUxbOe8]T=!5Y +ޕGMLMC7=׻բ)7e/Ioj-Y樗"zud(bSSb?q %MMh$'=1C7IRPL5Y7$"Itmf,$FT̸ء4 Bd8dFK}'qƈmk~}{scQ@f/tw6N{u~iyq=e~=Z&C}yLt<4}o|4;]y-$:- dn{<<^5"R:wi=ieyz#3]46/.]yTÑGڪ֧kUR!zNr,K-3Ɵdn9YYq6l& +{aÉ2R5, 4r[h`hdDx&%ED Q"2VZH"SL@@NGն3I IrǼ4er<1zXA45Rƒ ~C2EL+-vh1erL9>Yymz`^w2UIj'ʞKovM8&BѾ47-Ms7,8#|&ϨQ+Eov:'@sj0>d\RJ=FB^V(և*0+iA:rٗ~~begsjxGhq RG + +SVStX@1Dk>Mc>("ƌ +e*϶,DB^E(n 0F]侯ׅ".Jn) +!.IGKO~b1N^>hB>a{?5S7ljy ȸ9 u(`hҢȟG=O۩EE-V!ޖ-P jJQ]VW[ 7Q3ʹ͟1;fa";b*&[bqzţ^Gb \JR~5,bP1ђgMC_Ѽo/^7Iy;60&*=񣞨An +ԁP`3RB!uinIܱINZVq^&}Ut zsBńCyCͲQ;3y,* +meN|iUP(y$ N)PNӤ?9{]8U"ꁘQI"G ,8^ym0.UW9>'L4Ng%m'qt` xĠİF)|WzP4Ͳ&%)#n2٠7*V%(1-[I+㓬V]c|D)HBb~Uj "=jQ-i1gygc!{T,ԾnZů X;BerQ Ȅh2 B%箛O2A"YB4'Q);P0F *?1TrrYJqsJw%Ŀ>sE녉X҃ JW'iӛbEgeA{ 45nDZd%8)2^#+U{tEȊefoS kk;._TR1 kSqlaM߸ql/E=5e_> )ԎhAIHpYF5zAB-vY' c0&8 $\|~ENfE2' \"೟l`߮ie$ )R@-Zjq׍xm2`fV1Hev)r HHYaxʯӬD*~MvݧU_T&}V`mW3jmEnjMz.\&*'9NHFZCo %t̤F)T$V-VC4ΣG@ʦ亨>نj\| +K-(\jP:4(Kʊ_zy/R#-V,KnaF?jUxrkש]ݤv':iZVٳ)vMp喎YbO%F 4$><9$jqᇇUEzUS8=8^PAJV Der`_"P~m0v$!lN4"*MY)BmL`"%(vܲ-p*XZપr0>!qd/QTܛbH-Uq+s}Zv =+ڧ-Z~Bx~FK 3c%"4+g4ʎOuqeeR"IE!L!QUݯ>ot^iXv8:Rd +PR +^~&>Qr'->jv]v})m]dĶ(?EMoKZUۢ 4$o ԪPڞ$=):O$#5(4'߄$F|A 'IRۢf24uV~Z99^ˆGEeJYrj,?:#gIQyٲHfz޺i%cW1ɠ@Ӕ:b1SŪ"-䷕ھ7`QB{$ϣ;pɔٟ)noRP.QY{i@HpLf/ѡ&qS2f`q +8I4j`8aQVӪyє.E1 +nSrۢEzC%dua+S_R͓pR uSWUO˞|h2+#;NF\Dox>G?mZ]몄<.{ˑwvҔ=^)P8N]n ~MG՘zQ$X,T'wNI~YFOӴH, ~=,+a xf,Ng}(PzF .|Fɰ'Eq$ 5m_<߰yV..Di=ZԶ֤vzY⣨rY F}FU74ޯE%~ vO3><=l{獚)^}O<}*~11pԞ0\6o-Y]jUӧ iHMhMsC_?uU˚Ӵ$v8,gs _owIeɫ'*@b%;$5CDvb*@U/=t@ 1/*&.Jս,[A@Xv}þ9mxn+iOC/^:rSݶvSS?G\d4Iv:)xy /T-눍㣘fYwƁPAm_&t(v] l9KgǺi.%5b(g]H=cHRî#cjHfmi\Ԧ_ TĀX5C[Ԫ5)^wjq<⸒c,I%q"cRcξZu5o趙Yg$?{RˊVOћQGVM0s=OOۦ?olB4Ϻ䨧%Ϧ*^ٷ}y/{VA7JnCi\[UU HUIKr;,ǒCzt}T h$m8*f9௮fvkazPi^hie1ɰF .R(@'`u0c)r24qhmEk{r931jR4'K4Bpܫ+m#KCt@1b]Z{^mUI'h;Ͱˉd$Մ:;9~N4Wj۝$ߎC. YW&pr$b؏OvmcV.>u$J}4QTC-ʈJU 0[,~*ljNLqeGl5˧Eh]Ҍɑ̋6ьP7P)Mmy +GT$-z(y-O&yjr;5i~j=Yg?)`քGx:n jD$c{͚^gn~?5}e٬DCF!rdfn]qyfq"w] kiuvwDնB Ϟ8R,#oL,4M2&bSv8/`-_WSGWXn6=ce9f9N>ˮ@&njuLGԮɶpK5dn|@0%˾wq£i +)EvdCbW$!=VTBpG۸(4)M9.ţHa28V|$Pt97G 5uk]zb3>M.JVܰ?[Ut=Tj鹩myxz ㈗=罞ǣ*2N93<ݻ;WrLmrGUJ먷QԺXN EK1r]]h[O0L&IV_U>MIrp:V =<5K6팦ڲdɒUy}ߐ uΤ؊m;Zx'IYh~y,}V)~uM:fm6vI&nMjeT WC JjeeƣzeG~>Q8 Cz([yq>h)1q(zRL:g;LBV6= +.Kw"-+Ay+ɮ_0yƥ鿯Wu!u֭~ ?͋|,,#,-")Q*d^9yLB#ӇT=U&ҍ 7nɶ g%O(")Qb. +aGH0 +VIBͷ}w41H;n< kHi=ò> x^D.7!=,~^Ph 9nPcr[=[8x۳I*_QCOW>M_0T=7E-KZ'i9]xFuo3OWD@6-Z+09ɞf--b`^FHDF)h;fh⍦X.*`D F X +d`@ h0 D$q,j@DU/G҃ƥ64PHJL3v D&%  @ (p$AHL`@F >IOJ~T.m]ӌ;$ 2N. |F!X!GL +,).%=?Vvdz߿hzvq<0, `0C/! +Q0 r0 q1 +񟙅qSOQuM?0Vj%b"CǍ  d C`- LQXaZ0ކ#y鶭v$(<7P.h! +UB 1z"%Z!<˵ylPϳO@(LA +O~,`D D0.nP##F>a52£ Q>ɮIE v $h@xH\$f.b )I!qBOVBM5͗u|X:KX2P\^R9aY9V1%y-ǯD1 T$4! ]5 ! HX ^2hxN e3G5T< IȀ ( <0B01 f-\A eAJhBnp4` xbEJ=J[GC!%8&X +GxB/|a b' g %8! .A +JT1FIjz9/{o?M$"jph Yƀ" RhB5 H`X + +N@ h`1-01)*YU[(p H(! +NBİ*D! j8 $4A - 0 Ƞ8X, *VލAl"O^]aD^L  N,D WB*@aAA`+` +KBZ0 lc|PS|ٴc_FD@;-A h)4 +Sh)\ +:f9a *ZbXQd:Y^iJDv9x ^ PPB04A p" GH@h8 7X(;k$ ?$ebEI$AOxP0A Y^$`( C -#* +8P%&P*87a +TxB~.t PBT8Ma$Ƥb=mja(4 DP4D +U5 a؂" !OfpPX -VZZV-P<צ~_*HI  \,h! pC004! +Lp-T X@@XPP$ Jd y@4A&IWA4Ѳu# Iؠ +TЃ da*v@]S5 L›$Rt"D"̠@ `ˆ!t`NV#j% H[Yv: tEYEF",)P`XȂЄ%p anj.`X̰X +q& +zϝ(*Jk2T@BlP!; R 8(0?x Wkuj5%2kC2ZԠ- d@ P qD<h@$/XȬȔ`#'H,q0nF1xA j@P* JBfI]DCqtDPxv[UixqAy~\ܲ>_3pIUA0d՘^U{6oDKHHQšQh_׹~Yv>EyFGDɊoo@Iv\-؅ܶay^I +3V"1*ӊi +H6.GLkrRI'˗~5*SKښEnשX^Xv2tFo*cH#QH$Ot<_rj~]@!Z%銡vI/ۓeiR)#;P Amɀ!Bh0gxzi;Аbyz_RˎuU) h'li,=O7H|tga!$|uU7Ӳ#m߾9ٳ+,\b%[&,=*Y$Q9m_^9%aZSŝ$y5Ͳ6Ǖ Ťd+$2˞[lٽa(`Tf-7PFP>iYH *dw%${>/߇%`ИOH9ATq$9fxH"2yB"@mZ%->D,"3^&LJBV2@YhN"VxR+O+bQXjOOn8*8yyZ4#:jj'=!a#nC8ze8 Lc%d +̥2 JģD${znI>~DA&飥!z}d1Уht)q[  +IKFuY40\$Q'|g%Ft&?s +(JDCD}1}NhW54)_&9Q}R3~qL2KoQx,Ӳ#j  H"cJ/;n@r2 X^dw7Ő%ChcUawl1DR5PJHqLVD!g&5"^YkIϑpZͧnYGLKxZ>;^U!6eA~1*F_|%!gM-LB؁d3(QWʈ4JXCɎV U)Xa"bćpiERT +`,Ɓ#@ V.Ek$T'WMUU3'ٜv%v&M]xc x +C IhAq~$8.yMhE@4 WSKJ9<0&6TB`ZJߪ 7- ut$u#.T.^"ϪJ2(.-R +S{,~\m&Xe3QcE_6n{Jo|rR,jGM+ VIųbwx}ifB\)zŊ$lhB7"WST# *JX!QdP)A;LeOx "bJzvrJpJ"`HؕXfF3*vEl4X$A;@{&"6`Pt1" E:Rpyw$%~~!=~g]5U@U 7m4 [D;4+-Ҫ3*V+ӚU&s2CE$'~y0b드fyHnCK#?cEEp9DS@K=m*sH2R-0 i$?`ZX>|1$b |"V$=X cGlo|QX^R,T$jB=4-X2dl"m132X i9$\ď4e?C,t1XE̴ד*C_L*ҌW +KmNwL%$H+&5 +{>Qb"RU%_GȋJÿp6K=k)fH"EbhT3,P +УNjQl/\#MA+8`XFH" 3ax >Ө@$GKD tLy6u>EE!C Ǫ4R! ^y@рfLʤ(tAyC͸L&ϩyb-nD=и̘>*R^+J O yP>{ +THk"r#EĄ"  I3f|h|<|jڴ\ŷS*TZJ;JV>HzM0!$dGzey9b=۝Mq}HXJIu#m᳉9ر *\NkO&ڵ!C dN\L.>Vǰ\O. + hRv~)9ˎѫ ؀"@{-HX5(\L1QB'5op\L)N_o4ϪƠG +ɣ5*N>N̑b!:5 _FGO]>)>u)Z0 +Oh^B>!c"-[9M%+|NGhNJ)RTTMKt1\V"ѰKf#… -àDP+DV'Ur|U2ˊԂe,8e!+`SU)T"hduH<9eW VJ -zc"RyL>C, fIڛ&kw0q1FGOO:@ AAL +*u1J`V?IRHIg+Q XFɫ )EJ?lZZU*0`9ƥzhu%%j HgFZJxHBċQhC,`XF?=SHX4bN`7 -BDTrzחOE;"QMR̠B$| >v[N!վvWY +*EOcft5)ibK?mjZŞ$"JnG+jrN%(cZJNoV2EUDʎCZ,\--xH=?取*9^4 qXųȇEbfY?\_l~iNK嶘0<4?yrNbӫ'N1إ(Nvs$8# S +RX4œ'᫆Qvڄ[5YuPp#?')s~>BK{Fm?o4Rq͐>'n,Zsd'U:dv[r[rtR,('8T%Ŀ`T|OaOϫ~e?%z4fid vCAIRZȮUiGjOq:f ,,.gF싎Ct;UǠ6e"0q@``>Cnʧc2hND8I% 2EX1jK…4!ZN1^*Ϸl/^=Ep:,+-2LIq7Ǔ_)P<|H^/_%nkzPy(y'AYnT<+&Ev[[D~JMw\QbQU"6n8wM^qꊓ$o(R WQ@3.ϗ3~u|;s)_M/nOU=-C(BO$U6'E!-{sjϾ3GEA_,kfUskb,)Z5V-#*vGrגzfYIh9$V]ɱ*~_Iϛ$UnCN+*{9Y7ۦf?ɐjf76.X%+RH^{Pe-qŕۢʶmt=?鏡M`v!7oaR}5SrKrUYöB:D 8PFP~7}ݱ'GoJ-&z6b*tj~_zi *LWH?WnIc~t˿5iE*UEP7K˪4\GE,%!|H5AiYU__mTBB.V4]SzS+$?XѲIfaD=7s-b+ɞ]Hj]HWΧ$'NNnjz=);(Ifx}uH  UŪb%m46NqlMUP~GR, -"e0DX3+ ɳar 8NM"/XTG k]3͗e. ]nKu+"OG[tBuZ,M?z)jzcϪ蹷IJo~XWնZϫɑDOkJٔy%7]1I{?QG뗞W!$bO8o(i +ZS$15G<|+[v͢eЪimL9 +r=]ZjЛ?GӒL$ٟo'm'ec/9 uOU'GXĦؽx{ +iIo^_-_7f^JN>^k1ъ +@!9_#DE,[8=oYnl =3N&\"'>(R(,DZ$̪U2ۧp;vdd'OR oO)p֋{傤C튑"O}̊ԇux;7ȫlIT\pM +ezLC/Ns Q^?%I2f94jq§+M&'2`robw{dOWmrHvʹw߿uG|d$3+@+4 -"?<7 Ӄ"¥_T\?WޤõH a|`0h!vdJBaqGɔ~Iw_}e|E-ONBrEC R/><1E{W@H! 9X kE5>nuLd{ Mg%ӛKx&;^8a@0:qbዼX='a =ahU2!LzJH-@G0)Iv$\( E1hHq#YEN/^m}7q?tBc +`:/0W 0%lNL'`0.C|NGQ`=8@1Ij,XXcMѤI9ydסT_UnQD<4xA `d >T0``#pЄ` +4HW١N?ƛDY$xJG@<`-N(Ѓ cEEhBR0 @C91Ȁ D耫JyM-#!/YxU{ĆNnPBl91!@ Ѓ(0(U` ТT=iKxy]Y'vܳ%"@b; 8x .2@ ^P , >-,/P! )=-m> GӒ +E5@Rz` %~XRL1:P&Bځ~ 1pS|7O.1%{m)2t", l6FX"+@ l((N# [)q:Y;(X~L!B p.B;B$r!LAP(0@ сc,^Q-?qA|A*.p c@CdrJ0Tj=u; 3CPpV#7T^ ;8/{> |X8 0 p჋Q[-qC":Y~EQ\kyOLT\Q +`J8A0&a %<1<}RbK}566Gyl)Td^D<C #6iDkQC#Uu'66ߘO]$٢di>|8F>ET=$ \w$71P0Ld, FE  +%B$8p`*!EP[%9Q$TF!0$% Z G,`2NfPV+s>-럻wt6PF+ +" +5 +F,/SXdʼn5g 󧘂̩GDzH 2; cwܦ\f<".q)vqTt.[ @LԷVD?4,|' ]OdpD(J m̶֙u(6 c5U]>s%U{ϫȚ[ۅ '34T.Ouw~ +x@J HnbqzA˘LwԭITIZ4 OD[c$fFr5:vOպ ߞW.7v£~`hOy~w,<qTEoѻ_\^LZ!tL = +#'kCr>WUy)By~bT4+ׂ}Qu޷5߻TMSNm6^Bi"=LvB5{Љ=&ҳ~i62-Զq\FFP Ng:g_,SSDЄN!0ݿ ? zrhfFV.jä(bxEYc%%8α+("֍D,Qw⎾SBNƯh=N̟9UߘrMΫ7Yt8S贵MuOOE&r#x>ۅ p iqdG ;ٸq.q^ _g54y?=mzby(8e։MNY>z@#SNm^v)!\I}WW׹!j]M|΢I%7qpHLhgc<AEGl)ǝyA1IqIW-ׯ QՖ^aueSuA6QkT;[ tf +m9ˣݷF[QD#7N2'0N>]MkbyH⩪wR)ay6K;UӰ@6z_+KFr u2}kץGr:fӝ@Z?W\,l+-G۔Ff}a49DOG_Z4OK8d#ue's/?ϏzVOYSWtuWu$qo_!OlwMm4ѕFS~usEr"ZX)Y}ۚ^ ߮뫪]U02M6Jw]7:ʒmh*zݐE.MD}W&T4'`~&NxϮ隧H?}=&2*{םM%RI`QꊖE.ܳ xr܆c}*lξ-h +zߚiQ[7xۦh9e9bY$oɷZ{ pu +Eg~srш("09RE*J'WO Ժf[mPKz=k11ӌ\ Tq^~!chĦ)Fҧ)5hHqX5'iBrgIulInpy`.K&GˆGA;⒡RbUA议'ah Ӌg#A6nUM`0} +ŪĒٟfn;7 69^ S7uC-;u.th1~YJUI +̇ +*Ăk ur~KHQP j0)Mh?ӛ$u?n7$< <(_˷H]Gޟit6Q8ZB?ȔAc1pF+]IqԪM6mA0ۍOsT7EpROREP!fRbU2iQ)Zʞ_HßD  +vY`"6 PvemB@@XqmA#g06Ɓ PDh12) +C(w锜 K"X@ȰxE G $0n&i +W +2ӇLDzA.`"0|F1*KɌœv;jx8y<1"$tA8 %Ҋv! I@hWH!`,C6Xqň=. %)[AcFczFS t]$K LucK ɫE-n2аBH9J<-n$qߵd1) QFX`7KP4,)XVJ[ŏ qxT>t#_f[ܘ&֥CpݸYWr YkFLuUtIpqcThOӔ<&Jr:"Cv29 TǶRD"&%oQOM}Zf9^LO)~$DZ}HB>(nMN/Zry֥PE=*{%Y]h9mC6$ӡ6H^׀T>:i~Oҥlk,użX@`axONyTftzrZIƊ4.M2U-^, ~8aj Q$oG+*EU@~ŜYJ -*np4V``EBx>0h8XX 3+4\Hf^߀EˌK1cƌ)- ߳ @X&&˃X 2Vbť2 J +=-?J4V$G("8V!n`CR嵧e}u?̴dP,=j_7Λ=# E"9{em|"+*#31J4Mjr-˷h[=A@X;i[)u!FD1A8X\r]kroLOR<{Tn]һ,%1]]:>C%{Jp;,%d*bE,ы,%5RDfb-{eQInE +& C]7pRA>$B7mM/Ya[$#2I]Beaz2bzHʈ*]$CQyڟ9͘loeTI3D‡aenp'N-!mr] pAB1Vj%q~%p$QDU@oi}I0 4,[чL9[x!C#IH.P "Xh\. !~HI^kJlEdVGղ$#T׎pz8C ϊҴJ> a0!q +KEK/< 0C1/͐_I0eUeMO<&/~]f%B@.``P!˪J2VLNv_T3,=VHRF(~0Q vG$V=Q1rYt$-ǀf$}]N*j% J +Q*鳺T3.#DxQjnqQSC,U<< nܖͲoŐ/N0l^.'(c8Ppݥc΋;ϣ"v%J2*qn& =d(  "6XXQ!`X-?Iج#{(+%mC,)OEC'# 6b`D>|jp26I-EtZQTpHFJɾдlVV1Äe5Iꧩc2ULbf HءT׬!Rc9FH&jݽ4yAQ!K䠑DH`ߨQUGO#nNߺ#ꋮU~_&UJxFYSȳB$Ɵ寚%F L n~ +_v2v3?rI~q?O]vêw)yFK RΰT2RTHu'!)L!-y"qea;4V XPAMWQ>^G yZ>-K,LJ4?^LjXH]IQ[A6b5C١ׯ~:v +v&:=9U>=5* mh$8U=Zz=h|^9/MVm9n8k4,A cdILE0TLJp ̀iQhX&8%hew=Q/ѸFDm7IoےeZj֙mߣ$um٣瑺~}{; dÊ!\l̨?Gb.(F޳vުuHڣk=)שzZʖMٵ[>O=ha"jUV(*(1a>i( XE,˫j`QALn5à%pgGͱy9\Vd: q72vϫɑ䶞tU=0T&&Sg\,*&&>_o-VtSHKC:pFyo"U2pu\_1jEARS<"uԌ6ɿbFr2ꍐ1Az y^LjWˊZEgH4#j@K!*`wISԄ{f%85:qÉ?Q8 U;r2d8!C *&,`XFWP-V&Z5䦦ɱOѻ4mrTd4)cv\mi`5p黬XQo:2|Ft7Nsu +ڴ21!c!3"ӢF +22V$nF*hh̸a2 +N+ꛏ뜗;*dZ&efRȰ*b̐1d`18HXbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjbjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj𭳲8`)ylh +')?zu(PEG*o }@2tTmqE$;mzriay :r0*/D#Y}RX]U2xSpgo$7Eφd0(8>/im9JnH!9詜 q,#EaNA-1>bIqo1_ECcxoV q #s[_,=ceQ +S'ÖDlIȐ9[Ts>XL`z.ۊfaN!/ +ǛnkAbEUY:GO Ǐ>vuo +CTsTv&r~(RW=K,d @ϏjٖӁ3M"E]-=5( #$f ۢx߳(Tyo|FO'>kCj:Ūw/z6; W>\ SůKoC9áAO%vljKvqF.> 䇇_UcNX,ĖW|In/IU~[{Gd#jiMNi=lLGlci]7,=tع0ݴxhqyȱ6&4{Ǘ>#)s\ٔ\-rZN=o3L"~ZOnz0"ؒYCԣ894*[2r/|9AC%4ZUS&ܴG s;FJrY!+EOydُ'_{_#vUoee;9;lu]}۽dR/IxfA1O)nI GRS~LlZM鋎OnZ~)GbS&yU(}Z%-Į. (ŰkMYjE?fj[Q(EKkD~Y,rW]Yub.N墰='/r^7-Vǃg OB5b^}8'zd7isiՓ!tIEܦv~Ci`.~wmqu'J͞ c;-_=M'Kꮓ 4F0zuuO]{ pˊbuA?˪hEs=N=M.]{mUIdowRK;q">ֱ?0R"T^4Ԟ zБ\qׅD.v>˻$G꺋.z2brQOޡv:4ҼX!&EK-T"Qᐚc.u!ȓmbXDK X hauMr\8>Ge1#X1PGI2I{b%]w]H]jG d=칈%if.=)TŦ^+ng^(cNOl9$|޲$NGO#9#{ROd{L1FsCLL*D!Į-]jP2f*w]7Z6dM9^vO:uL5 2,7J^{N::u 2qjo /eJ *]z~V% vA_Vzr'\ =zO(>Nrלasg Oh]z\E/Ş7-QӡN8=){e!RB!MR,i)%q1T  )df?(Yӟm477r#h ?eh_nc0|s'] +acӚZfv:6Pdx&D CR1Uz.GPPV;܀ܟbWZOϜgqÑɰH-9e|߷jYe֠G:Uzp'a6>823)2X v]$]Gb,nulT@/A^nUq eHfJ!?~"Vuɱ,Girٗ-xw6Yf.USr\ƴ(j z3!~OSmgRE1 M"آ_wGMCIRMSV?\N;.6,M-k2 :}R(%KRK)eu܌c{یT".Ps햽\v-QY:O)ZB1K"w͋a.24%K*cfe=oDTnCNi ȇx@r6]ZWw[z"57صb5䧚[ dXt?˚$[wczPSgj=mE(`||Q(eq -R&K2Mjyu5}Q00TzXêiؓ5{Xef z' R?=qq.8gUr=8} RpAJ&%rW\jNji2!Wrle0fRSSz$ryo.(i,ofq?ijZk]znݒIʝEPԪ0[f/z$\B] oANg5X-3ծ-5꟢:)2ުe[ۦbT}=:RQv>s|,Qˢ؄]x\n~){.ŭ$KlZbS$W?06Ð2DnA8yIzN6dUƊ$bǾ9ҡ׫BIի``N"ߵ\m dMOU-9n=Õ Wժ*EGyV4l!yM#:rPZ\&Cޤ{*aAQWrW+S\27A[zZwrDwߚ$=n뻰=-kަY㎢}㸃ߧ$]2Cl!_'5crYoГ ZFcՊWrUE9n$GC$]I/G|I$zwP;mCXMˈMC +Ui4*jqmr:@A3q !#cD~ +^o#7 fv:0,O( +kۖuӬvMOŦ/Ͳ}4I5`.c(V}3>pױrn։;v2r)! D +$娚c߿Iу5BZ3bYr>= =tAu^6A>*V?ybu 0.m_=nT䶵"ZOO)q'U0{OcU-z~V1{fIEIZ`ut}Zgӕ@3 m俦ybH"Y㸛$ N=lA슚c]WS(:y>eMp%9ZQD-P#F@!#]?% w8m3_4,UuN'C,qqEP|~(@fEѪRTM;ɞz?(,?oA9ߪi*שX$eP|6Q|~mO> +W{[JൈUCrqLmKn:媥qzzTTӱdS{i4ajZ/'DUcmǭr>stream +R36/=jlh:b]箓9.CLq Z0t%4̋u׉fzk$>YstMT7[ KDDQscBXLڴn#YǓb+~[3IO$P\;OǞ4AVt_r]e"<02=>izGS=ǐ@-\*Vǡ睝 r0$c Ye)z]~?L;Om׮MmIjYdMn{'EۮcW,gNOe=fx6R`/C;B*ހZ>?K<=KrUfxBdEf3{ Ϸ=o{Ψڬ"z a:nc$#)PjY%0eiwmԔ7utOu:1gSD+PK$cKE6&B-")L`6T>;VʮG/K^˯#s,0ŊӈKmD.r=Io6nsp4l_gzו4gOS|qN l2 ؇U߯#,  +U1\5sm^I9J,]l7ieMAĢ&b0rZu˩6Uu?ZDXrcdBlNP-# u Irp3.RHĞ[dUY˓! IlGYm(GCg[mL%̦ab~Ve?C,T nïD64QMbO^8'G[ o7I_{v7E%RZtNjzۓ~y^J"}J4E.Km䲩MU> GŚ2V(/&,&OoanYBMRD_~WJvUp]z$,&2{4ϳ$!Ѳ5)2GHa5LQ) e7G_g #mj-a$BnÌ@!xncO!xu-ٽ6/ D-(#;I; OW!f p z)7U!J=;-X};%IϞR +nA˖UʪiiÅe Ƥׅ(=BKWޏcA O/VW-m ~Nso,\'RȄEp 5$fJnE,J!]jId0 +ˣt$'l~Ov]2 +hwsEM~eR!+"AbvIv]N/&*~ys$i/SԦ9v-;TBv`1Ro\6zb'I S]H7dPHgdN11}Dh 2Ӎ +j5?jVOH!O?,wEvt\'m 2LfZ[Kv<I¬F>dPvĬL->ݷ_WorS]o߫ :CWOWn)ڣ +ӂz*a=r?-CBbX7Mץm1ZfX5)|aa?IӯӳgˎWpjSV7:RF-ZG +,;` cdbZ?nETaV$)V#n9| fThPW/;t/ﯞ1 +ja*vCGOzf7Eo\)H$3dN$JO{~28 Ѳm,`^`xs z)² +S{M Ke<&=Or{%$"h]Kyųq +NC&|FخF :)zV(1HКʘ@5HT1`!&i-sH{N/B\^RɯZ7 +Qr,%Z'Y,%*]I&A`LaqQNz=aH>o)mհKKxv؎ya{RFD6,E:b-S +"}1ʟ˨D3L\0D\|&9.Tˎ_w|zW UD铟",z`BEZ3^+'%Q.z1;6*Jvr4KGx*H~ PSE$Jle"yZF:QH5:f\;&Pd*d%z"v\]eP,{$k) XƋO2 +XPzSȇ-9RLVG\kZ0{MQ'PZru(Ņ4 +Ƌ#lx!`lrWӫ)!?%QSFȉ9fzP0p_*`@Aذg$hL,Ѓ $VЈR7C0 !TDVF"'3XNf0U2ii'MR$WC7IOKj}1(5c5e 㓼VO֦+)1ǻMcJ2BN5DJKhq1zm~;c2bXmJ"8}'LFedr!R>&]ULV0Sa-O@> JdĥbER--_9]7U=x"*"ZFxrZF-\ӒF%z;4( j""}^@Ь|P{DIp96baeD +U Ģ*'PD].Ez2~=(YqD&^aB3hF!L A 8F;L\BXib(@;1n$ZHtԳ|t-$/F^61˿π+ɃaH '꿢*V. D"p-\U_S/<ˬo˶FzWfhLpU.GO?a2@BazUL-#(0!7`P\{ePBéf[فyyaB" !XahzXFzFJ  z "E=ɒ +e( bFHypDٕK}V˦wQҚqT7MXb"Cz].PF~a>jq[154RL <cVF.$4!Ԫm BH޲dVſQzhnuB*g VV)I{Z'cҊ6V*fˈ~nyJyV^5 +o`H<;ĬxDfDY~drх zא񒲃\HHG^V,(AJ Cpb-X]_1,]e:wzc8z1.&/IO 5W%{i?-I[G [JAHk3~ +mEWJ+Js @ A0s>>jc@@@ ^]}**y K(޴nMX312̩y:~K1@~ՎyU~Ք?4m_G8]. ڴp&jD"&$IO5$MR0$QiI4Iֆ5iI&>gRpL7 H7I&qoY&1maLr$O$|N0IJM1IƝDlI,sdi8P&9 t8nq&$\'Y$L23IIN3$#l$qmIf1mIV1aL }oRpL; H&)w'qYMbkaOr$C5$\M4I +ƛ$fIƛDd>jؓ3$h#dIbf;cIDf9e. kc m$'z~quI} ̏n̈p+H`}tD=I:N: + l!kBSBCW,r`cahP,Α.X8i@rar+xڃrpo͟QKVQP`.Wӥ+y+Д Ws'N^q=i#4 d"bD4g)"3N C=ujˈM8S3h< Gl= yzR% Qdoh/RLeK`Lq֒&Vu@_o5/*ET#Ut7Se?tq"˜‘+SäN:gXdԦ,2EњU/(qi'x,=Qh1l*@p *{>7cM!#Ќ0Ix +{i64җ`$Vuտ@=UaH +$Umʡ~xoCDfimd;AvH+6%K!pNѢLh߉SRnH_Q"4@_Id׿_%Ng//!214ЩIuOCI{:"fvsG'_yFtw} AZѓDq2EO# *GpRF0lR(t.GJ(0Hֹ'Ij`>y\"/z :3;'hS&$y d`t5tsYEw8OD=~G r.B's%w@yJĿ6$+$)_am1y2-SF@*/\D[9Q~Ny蠸i$:M?\ %A!YVX-TԸ0aުV/Zuogrb +M~J2.lQwDI^r?jȉ9C:`!H]W͓CV{v7aE:* -7[~GךR'I;+AXq,$ay-ɠ!UaCnx\ 2r%_d@ůa$gFrw"eCO .R +%VX՘#l]KoWWcmMَwJ׿q>u9whi +; v%ޘ*7(8I^0+PMn  kZR%vgi_Gm6UXI0"LʲG0BNj'Bo (erHx<IPH>bpxz -=\81ЀjSU6@餣DKarGB i`!cMd [D8qF]uCCjvLHL ۓyI +^2BVj#f^|?e5/0qVz@^2Y܇zp%z5Q17>+09}@yhGFaI#h,S}={ y͞Ngv؛gTK8x3;GK ~FHHaEo4(Q XBgYG36`mKJb?=Д,xO5&e3K"=Q%f_eG MW.ѣK1xpwa@GOu'?>䍞)r3:;4!6}M\HY +}=AhdnvТCs + R%" +*iOF!kΔm>W s(Uҷ&3(9]dU= fHC9Xv\f3aGN9)AvOgh<DŽhNd*F#FٓP:BQK ~XA`z)4'}"rb+ƫe; ߯a6 +izO) !Hk(A +K@.Yi;ژӥ ""`C`Dt]_vQz?S +X;Hܴ 0]c^b˦U=>E7]|""[j-2V>uY[&>LDp.Auʸu.AsS'J׆sBŋ_(+gK^*oP,QHx7ޱT0Y$ɩuY[F%iGŎكP:%Fڔ_vt x?:eg-c5 +^T ?|ANvi޾ =[_ef!R"<\{ &^c~Pɡl~D~5vTM;Pҽ.}[]('="fAvϷƴU ' la*ppIa\էwB ; r[z0OHgAO%w̘ONtڅ?-:(F@jwםZxF q T;Z .LDz^H72L! ^ + %N|o) `D9G 6=;#AyǾgt[ @$qƄ(vg ץU/6P[yeUYHjȩI\)Ca*kc`/sTj6W`NOgr= 䅏AeԠQѲo,1'mr,Nosc|/K(SBemR5XZ [QoaJ'ѪqL,tn~}B?kВ6 cZIKSW ̽Jv_ɨX$jGŰh/p~쁾(l"3Ceczhe7(GKy'2kWX`;sjGB#޶ ]&ۗykAd"Q@@9$~J>p%39h([0Ax"F\A>u u&7_N1ա"2Oѽd2rDn>| O\ aJղM +?ބu4$xˁ{hRhUTp)z4kCm p" .XBvQ&uM7<=v\x OU`^ d8KzE)B) ¬~Iu{jnT^<_[;ެ W!Nȝ` K匞d'Hh]#6JA/gთP`LFbT;<#_Bd8&_¢׆q1e0yTwrnJHM&q rt{'U$E#5]4gK:{:pF'U Jq1%rȅCh4<nW+ak~`#Zp)Į7m`p:zJ\]d{>v@#t|oڴt^pR`d6Hda<'}d>r g&MQ);SE!|ޤJpSþUQ2w|MF.1~qV{]KO:U'@>+)Mu('< H ;pމ)5J )w$(fNZ0S^x*Kp=hI{D, s&8{o=6w~4243+zgNqx3vLI]==k:3)x&Mli>oq|/3*bxE[EBF4_; ф9CU>/w.03Lվ +P!`糏~40Ǿ bEq.FKUmsviGt`$Tr ErP`˔Pm~"sOj'0t0 O6v̀`rEG'p}-OW%8 -!`422ee0587a8-8429-4bdb-860d-57a7b6d5b7caf6ed8fe7-0bee-421a-8846-8494a9dbd0d04ml10SVGFilter / : /XMLNode : (fxmlnode-nodenamvalu1t/ArrayeTurbulence;childrenresult(turb2attribute; ,stitchTilesnoSnumOctavbaseFrequency0.0,feCompositin(SourceGraphiininopeidAI__1idobjectw100%hxxyy/Def ;fractalNois44GaussianBlur12bstdDevifeOffseodddSpecularLightingPointLz(-z-5xy1ysConstant(Expone(1specOuyll-color:whsurfacelitarithmetkkk340411MergNodBevelShadow44-2yMorphologydilaradiu1.bbd-d252DisplacementMapxChannelSelecRy(Ays333bMatri434m0 0 1animtotofromadditiv(red5accumunonNbeg0restaralwayfillfreezecalcM(linea545cc8ccc8ccccccc1cccbCoolB14-5nD_66erErod664_(771R1 1;20 15;200 200; 15 20;1 1 removrepeatD(indefinsplidc50 5PixelPlay;20 20;Diffuse5yellow;green;blue;indigo;violet;red;oranDiazimu8elev6d1l5ularre0011102n2nred34##$C K㴤L@P 10 01`2#ff⨠$pwV`Ҕ=\lPE1_f +}w>9-ï3[\8#gD-1/fR[kRFIRl:J__%ȁ +0YY uoF$V,W=J!zJ$il0fL$Wl FeT+,?=e-Ew;3fNZ '5B̚g@J@ +K1qI~l ܊3<ՅLMpYxc* oF7U{㉈6w QeĔs;8ت;Qj_fQf(AERJQ7- rFhq cJRlm7W*N!.y?Re>hC9^[\]zi1vc+G~ ʌ[!NCb^0,_9 7Pу"alC IB,}7p,g-~e$ci1 8Rkt4 r8K:V !A&0%ώTZ#sJ9 0#K-1L8K2$KQ|X + yW 2/I=X e!U̇d$,bBgj+]G.BF?P+ @JTܒY4ыǓ$!8pEO^MUDtM@yFP{T89st"Ὠ`@)SriK38!B G,KxDUd#i|uE4D7]J!~)`QDW8;,2S&?M` lnQj K6Q| ¦b*ɍ[`ĺP130eHpx $>Y4Jꌲ?FRE~Qx@4FH#JA:mϸFNՔAIVb?Un I<"v`\ۦ};26JFHMݺj$7Re2rbİ׵Vy6]3j5X<-!;G +C1&kT>tzK $=tLF\c;O2VXJR:a&)ҁ (Wr?HNZ.bNt*~m}X@KOOCf L SIހ6ʠ2Raj"T C)Ed{}ArA_`i&qSlԴ:R-4YXj&9eZ~Ut df8|RouԥM]eHG.dΣB6Q(:@{K/R~EI; ʂU;Pj 8Y'ݧs6 6kI~)bMʟ!bJP䅭lAS@ ?wJO~?Fk7dxA&$(9m9ᠪEUX&dյbEA +z &yڊePSP 3$WjnE zTz9\a:W@()U:򾪏x;}e[GD.CCfWپl5^{! ?Y4t[ Brl ս,"!]?FP-"Ѡ3Kz]MκOn]SN0sM"F>YK/7֍ i+*ePeS|hVHCpl#MZjB-SX `Ju@ +d>O#}9Ԋ6b6YkILc[4KPbVl&1+զ2^@,lۡqvФ0dT:ggU^-8mEE"3 DLE`'q6藠CO&fҤol:nG.4,e9F04ӝ`! ݧQ%#G]0 +er}RCd]ty;yOEuȦm6\Bbj`3`ØTq8s1[ +Ԙ5CR3CU2`f'rM6>fO"~rU'>9I߿kё%“e4Jz57+nHkw~\ 4vF7(9t048c_۹SOua}7^Y1klE*mre%}/a p Vb182uk^R;ݎ++V)܆L@@B4s Nr$˨[f՘hwik{gTz^S%e-b(FQH:{QJyEQY(FaJ6Qb7M8Q$9Q9WL6.9 +Z_s]U^¹2һG\Rby1Rem[5X:.$zRtX{gu(:)+= +nI*iqrOxR궴&gztj: I@-ۥj.jmG;cu|k#*+ƅ(F1.(6gȑuvF:8a$!`pwݶE^03 {Z׼ޥP QVgq5su Uk HȄȀfh HHf7}bZvnMmmz{mXm7:x;t}UCJ>^6B\\<ڝ.g[׶]yv_[S#A4BLgnBd>r穞0y2); +"@.u^^Y{M.ŭcySٴ/1&3f]~|{ZU5^Y}0QŽhUBU|/6nOu ŸhpeR@ MRH B1B ,Ѐ +TxIL l"X +ۖlU]kxɲ8VEd[]BT^u1S'f{ +)MLKTܬz1&-vWKk@MtS̫fFLv2עQoUGbȮhg>"D+oHG(ىMy]ǥڛ?uZ/xhW6=QZU:Kzcu/S۟m '-:c3EkD&=$r4(IuFQ7j;ߌ/GڮR*[L76DYE]tr!r3IWN)s+WXme<]zi̜:pӘHxˈb8d7OwlxGt+P{{ĉ+# oU1Ĕnqs8oc#|fũٜz*SYYmUjBME^a΁wg|lti9w仵(Hs:;b:rRI؞2s2*@ *@ AEZr_Y E "d]"޵]uuS5?O^JֵBc;^DFq|fbT=ihӀC@_&amuwUէkUuWRMRCA5uwyxwgD'CnQ=YV5*vfdwݥU`lf(33󙙔yDECBWٔz?imgR^ӮjӞKE{[3iuZz3]bյ. ,,,-,,---L:nKn9m6oo"371;;)S;33)33s23 ,J=6K *~qoơ E*ҎG7J}f4ƦRgN/ TXYJH"&Ws5ڞĕkѮnAfŹӉt@~:-bFx |t`e(PnEu)QFk;w^_%-EKoLZ d[ lbQYy5]^ap JLL1aq3V +BމwD1[ 7O6Xl>%6pP4PoU$C &l4 2gODkEj5bO$ :,`: ?czZIrhGL[W+ZuԐ{Hgy.;  2~naݘ[jQ۔Ъ]CyL$ƋNitub1# oP uHc؏]7;}"G :3û! ے8 +g*BWά˭ab=.a6jM0}QbgC9o.qR +L)[YyNu7}&:]uaIfTZ qfChLjr?#A."X' sLXˀa'8S u::\xHŎVP0 L&_ Nx-y>\XT 2 +lq&]4*x6`@36R7 ?A BH*p.:K DߗW%H55p7@2OAe/МTf/ LhtH&oðF;}YLP& ,q=G퉋$m2 by)glp`Xomb;dZC|o tSpsK++_sZ<U{/+%JtN>տP3W}/H}YEHMid;\Y^E@Kk{Ihdq gꄑp{ʊ#Qw)&;CL>ldz; I͎ȭ?Q-("͔E|dݧ?' ހY'7 dЯ !z9ůʏTX7?jC|Jas)A~8sm/Se2ﴒ!* EBTyMeL:q0%uQp(Q^KX,e@v=^(|b꜅; IB(@Mh؞އqPeUnfA@D"> Hts3,rxNȩ2 Z+0 $mH=#/>fCynM?b~IT@VЅ +lG~-r"넡`9MtQ'ku ꓾fEEQ;J +?S'8dI #?uVSǿABdVYODzkrw8 pT<'gi]%d*(j<GT1G6ẖbđOrrB=ar:*iGmfƒBSC1v+0CjKX ٱ}ɚd/LWQ(ߗdn + `f)ieiIrUQڛ$q!K-""ȎA bA;DU9QAYqܭg  d@a)%kx~3i2$ƒnt +fnfV-ǭ!Jh"5cP3ݩl T0I@$Kh:$m5ҡ! mHa}Uh:X4Np4c|-{jkm +3vagĸ*؎ѝ# Jb $8V(,T+BA̠93xr6đ"ޭ'g_FsTjZCpNֵ/Fb:rfJk RzKϾ0sL-SEv^j'!/O @pV=2:axs84_#I"P;ilH#ӓl*Nx(2k l‚-/(Ey^L!\M(,RQg!k[&.>aS:>a,oߛB3GRgdoPj<:ZLX:?zB +k5 u +&%m0)P1SRql6H[D: *pП{c7pp4tN D@uƝGy:DP(iS0V T%9p$0X9fKd \ta ;O9 T};wy@ȣH?)USGH >6V, gyz:kd|#(]!Ho-1NJhXDOeLfD$pfO/|tïOhKX'1p:Z9/#*)iR TBE6M>@p`KFyupӿTdZH7@3/}1}$7S<)ňKk^X'(] Y`/bG8+`ԣۡ]IRgyrlԠ@P8pXN}J;S W}`8rJN;^s' + tc#q@=2Q[P{-zD |ck f ۂIDRpc>9edʫ7~=Qഞ% ~! #~f1.2uTlH3ofwmgg`%Ѩs.\pw-rc~#|]u-?Ξ"(Xáb*ᔹScql[d008~~GlrZs^  N@} }]IUp(N?c[ҧage|C h.;/#^L^@݃ѿwyx޸K:ޱ ->> E<ʇ1Ӳ~SK 5ج$ @ k `%))&RB;_0s6rcW]ڰux߫2]3͙*8LQgqchq /#$(<};9G1G0]^VʸLm/GE]l3v T=!dvb\VJ;6^<xl2|SHUOUلT ̆~9-nV=d/ WDC|t/ÿ ۪1tN gg4PG0x,ԧ*)6 + +.&T@o^ߑ16}$omTnMxY4¸{>K; l K`b]x,( &hf*[a00F!åb0PgzmAAx+7)~ҖLU=^qX7Z p c +X{%.4Y|dqCJ +"Ue (q'>a $,4&SCr6 =[Qfe#)({M r8z5D&)e¼ U_A2ۙ.d56uOT^#8P|D<M/g:Gᱥ`-9 lҡC8d W`E֕pu:?t͌#{;@ f=bԻy?i䇦_C#x#͐:=PC4XP=jb! +B..-*tҠOV 4-8',m /+P/64|Ҁ b &()iqrdUi1W8e6vYُL|{IjʙU"+,-5FKF1 ˕d29::gTtWfj`Vb/}aLXe)6ZYݎO}i¨dܙcط0bzcfW#1TKl«*B/Yie*W]`^dY^UN,WEt썇flwETa̓$uwb̠*@YhwʭtѭV]출MMYcnBYz @Ph~+ X4%Ⱥ>դ"o fE1jQszp1!"eNJkY^Ǿ-=~).Eުl[L2ĐUȔ_"I7T4씇UBȉE3i"Y .Y+DkୠN!7fI/zP 褢JdtLDSh>@qCB1P) 0 ݦi;XcGġ?x_m\SH蜚yv}0+1~3n<^6Z" :1a^ _+, wi[fMź{]~n0Gd]XGRqӮrL~,7fM-^a1=)=bWOUk®G"сf&N uCY`u&] +F\lh"łSyz%bwz<@JV- +j<BZtl}rJJ^)kCnXEqrTGq}!L10= :GչI*V\r˭+hwb此*GJ..<6NԤ4{-$HQ˛o,A߉1Ai#(mX37XlFWK~&~:%dKa2;5}>ǡS_h2H(P,Hڄ$Nb>5txR6+[1ղ8jJZ [bWM;]& o᫢(9U%[JD1 + 󄚙6(6)۳U2 u0iMi2A{\ERk *X^mZwXNt'K&@N0n7x%IhXy]Bk36\Eqtyśv|9mҊ@LTDd1"S(Gi] (/Qt,VbZk6:/9pmH]Ù,\şl-SyE w(`#F] +V4耉Lݕ(TJKvݠDR Rz'X6 2bop_V+!ep-6E Z%@L +ͧDg-a0N.cF$MTDd7)&P_'yg'De6ZlW)GLҸ;Ur4po #@t2?n0WG] u,%Ew!) - T+G3k1>xJ0Fl $mfs sr`g>])xcG۳A13s~g–TOf ìN(>ϡ%f:n"q6Ҷ1vJFa4\-Ԣ399/!o(LX4P"pJřS +R٥tsk~Vç\X@i_k՛ +7@b8KHN8gjXSgRb.S(z9,IXl#T$M/5e6(^$D]j(meCuk/ľa8"S.̥)`_#4rd ʉIA +Aa1B\gO"4nC9eժ4J^0Gt3KKFE{=yHU"%nv1򮥸3`\0,GUXhFHe3]!}.(ĄdCB/%M}0\^¹ Dk{1IzzYA՛WgDëļDbT@Q^UvA&Y$>g㶴cal,R|cWdNX9LH? 3?`_oi I.F'JXGXېjz=3!w{;7!_{Qm;Ԭ!]9%@`_2g gm(מd篏H Lթ=+fpԀݝZސ?};x}x%SN+P; .z4y+,S-7 EI(wrޏ_FWˀY,Oq(Um4Ũܨ,!$Vt:i%2;HG~/J$; mߖ~'q1̰Y\ +ޑf oŨ/pH."wi WwK1$*iCxXIV'$A:2z6+CppJW,.fB+$ e Z=A:YRrQ 4Om9/wyc͹-uO𮭁qWrtΩyaeC|uXF0 +v%YVLލ4,Ԍ8sab.QI8nCG\̋8%މ#x]Xe?:1C+q%;^Nȉ/T~:S)sɿX{ǠbΑV5ipE^DSLd GDK|BKG,nɢ\(IyC7yBguԞ!z0SIoO$OSThe% +{HPBjGbz 5g,Lهg|SY-F$ X~ E1n%ۅs"$vkPd +5y=TUa5o1a{KuU'\H S#L&NZy} Yя:THO Li> tW@ڛ9h?hc<. iI3,W}" 7#JqZ\XC}I#-M!iD!>k*bά!- J}הȄ-%I o_''Y"tV]PKFUV?JQQc3ww.j}9WQHLÍV0m@{ FurkiUʝ#fD:NȾ# Ѓ.pq-pڡ!GLcd#kJc^epG7Wun 8`3sh+:f˅Ⱥw/ 5^2'݅OWk Nh!m-V@?8 gfm"~HX5Gf>ƨOA=ojˠ0_6ҴBZO(Q ;dĄ%8_F*{T&לD;X&Ad'@#hxD(̀Z njς kq)U|V0"8p/ - + % ˡJ`>,<=W{EG4kWV M<_@ˬ2ې<GCqJ[ʳ`|# ?JQ +BU煾߮y 25GҊZ׉[+*n@u׃xx τGXc Ǽ,}$D|{>(httR0@aN}ɣܵM?4XL'p2}ϳ4CK xU-r!I\;12_8_ %kD"T/n5״&OX$]yLkăC"K6[gY<_& Z$ .ܩ]06wtA?!KB0$.]%ro1]b"~16$A18OWVD|OnUi &Ԩh{ei|&߼MR9umQ}y)k2о@Ğ@X<jϣ;&f<2XIÐB)I)Y.OZդT ԫ1(Lyﲎ8zbĬ"bXVR> RϧZtgBV GJU h38+՛{8X `-Gr:Qk?CRkB׌iD0=h %KC@Yef)7 +,Qyk?l>Aj~1%1}Ë,@-qvK~zR"m%7+`4wa~0 + ~)"ējŌQjXt4;Ns)op C[Aa*xg@q0daHYb#o-`gvJO~裠z5(vgO2͙ƬFqIW] ntXDD.쬷T4 5׻pFCr2$| CGHGHg>]끗5ֱv)NKˀw%e6fG( *a*#.dmɮFѺh HfV& 3L X\J3wv|q;vY1ȿ^ 0jrOေjB@ AArsbƱ.,㍱r~=̆q& '|w2̇l$X|)I(U?q +BeB__}Ao,&H`Q~,"U\ BP##LݓOMJ Y/)fxH +~[Yur~U7=iܕ='=TFTjavOqeA},-*k4,)e? g@ dDMr1%FWŶ{Ph݁|*VNvi6-$V(͜e'ҿЖR#<xK3t=v,[ySIzSƛ(5mqأ^:a`0|阃izEAnY1`yypUJ6\3G:̰b:$=ԉtD/9x~?Zi`%]wm) 1JAžiP L? !wlj޶FG/# @MIn=^ҡ}[+nq {MZ ŰkڥA5oM6Bi缭)Bt,v*Y_+U=5XUTW4J39~ZsaZUWSʦX, xd@2[Z_w$w_m`DE"Ս$7~"vNЦ3qJ\!ceP#5fhW4MҡIPʛVYi#No +j)zCZɻ=lJ*B8c+e%mp]|-۬gN4;?iz(o!gft\K δʖڕ"SS+v\eGkuxojIiqI '' +(ռߟȝ \`3 " 9 dbبNMݶڂcè6obha w1^rfU`׀N~5+db<_̣[D4vߘѰ '7P[= IhL*uZ6Ɋp['0zsd]Hg`ߌkY**z" 3ajMI&_)3p*RЋI@U /tO9]Z)- g'U.Kl1HBI)P1 U|̒^3?Ϟ.k&a:!(sKi@ɰ$T ~ժ**1r:*Z6a/dlZ ~Q8*$fy+4JMq&(u ]ksQuJmc߇E|tnJ[FXMI9! j3lxYWL-qGGجh3VJ"Q&2?2qosY/ޅ@,Jrk b @/rX)J֐[$ನgzFzBK0jDs|p.]k^S&NE֋eNo|>˾Zf"eVfp]aiS$X~SZdς +`pXE˗FZ8 +Lc1L K{UZl9ʼKRLe;F&ϔ;6kDULGz1EÜ@f=J![ m>[B3\L! +]"ت5u]XZ\-B!TUni>tG٠\_Ǿ[En[FnL qZVNg2m&5KׄvY:-CO#SY:EwIi*EkR[hm4ќ!Fe*nJ}bH{]=JGTB?~FR G*k76_Y-*9C2R,MgVyH]{iO)ɗͰ#g[&ʤ;K\\(Ji[ o&iOҬA9%"yN=ub-|ч$Z{X;9K9vޜN +dE1,ٙXvU Vmt .mO~Jx +=0+2\cnQnf c3rD,UĹ.GQAi/r@p"$g"vѰYWK⁖ +gY[9Ne׳150{>;+TZ 50eֻ9IWs clFN"?,qR>Dēfߜՙy k ?YlMB~_CFoiI2  Ʉp~3ٟ̐S Ⱦ"5U7WXn0tգcC):QdTIA2p~ olDR A󭃴qz!uP!ȥuai`N@ ~k7]ͤ]*(( %pcTP.2FLĘvI|}"u\*#Q7F,jb֎A }yt4^> y#ؒT'J#&R UAdF 3K 4e .vo.ږLj#9[NU4Q+ʤ92rۡP5+/@䔠-pV1?r|v8,OĊ\N@=t+Tv}YQc8l;}2w-.rN(}uQʠgvZی +50Ap~G[L!=Mur̬~f {-om/""۹e;fx>╃Lu|jU=m,>"os8*v_%D +췚 e;)0(: DǸJ\6YW\u16A)L +וY)dz<"ӭs +6LVʣ:Zc(X.5nz}@H5C& ":U%o2fB|b_"rΒU 1K U v+R^oH>˕n#];6QTHT D8%k1>A/Osa(@T(YɡtlyfHNJu~((ܣtf@{gN>\Ҙ> +A^:DRd3c KnFJMݚ\6QZ(6BNxk-v ;dY /%};|o~A&y)< Xye?NN8 #[ʇ!$z>29f@fFO><2|E{s ¸p݀Z:70c9ob΀fݱ]Zx99 F Cr~r3S~7[`wwH}?jv_|*t,7 e.*:-7:\,>8cUYU?`c$!z\+z*'RZ6lj/.-+3 HcW[8 +09 @HيcnpU+ZpE G4K,ajjR'\ѝTdTm]Ls5pB{'%4 'zs5G*](N'$ϣf++bV#p$1`>vri ?u ;3<.)J&@KiEKA,wAZ<CN7Kgbe֖ŧmi).dnA?q;-b(ܯbU[e>4lNWu)&ln1x ޡf(b]H_x}^̵HIO]w- z-Á~lN_ǟhe" PU+d^aО(BK*p9 U%n,d_=&/ri+ngL4䆺\g^5:U'6IiF}?*x-!z-I3ֺ9fce'|m2$tV# 8.aEɚbJ=4&HS~8>3 +ؼ-wZǻrRxF!ݕ@ao&;"$\lA f90`mQZr=YɌeeQ0Ѽp6{WWc{'㩦i~`3K.}("#絸QQ=ʺ!/3yS<qS;48X)8_i\$*3bt-=}b|Gpy8 Co3hhc,??J$,:+ .Ahih$ІiGGP.,s+B{{'zA,E$Q&{CEyaidV*0?Œ'wGc'g(GTF%6 +NJqvcA@0D.!Px1yG|^V4"!s*.譁n +Y}q3%.hLC>WX-g &pkK̏ NZ-*򋶌~-b%:Wq#o=BȝqCd\kacuEL5n'" FRAUBL?hP|}ȷU`oJ-V|6MZ9[Ls5PGqN;gT=:"(UPeA *fIf!%(kzVG|#S\xQX)8QIZ@҉4x z D֌{5 ,ďa?bAAy[ +҆Ta,zGb2FHD^=NO| mXv/Ak5s`&k9_@Gcy1;zHĵ+ kFL9²D`NHQjVPſXeNjGlg04I, W*61_?3`_/0iY_"PN9e?!rIUv!|E_ tev>Ʈ ww8 gCw֙PL,mkwgKkM%B+@+iApP]d Q<+l〤fjF宙&("HA\MM!kzPǬE%/Mq/g˰k pCujaӆ.%*[ 3 reF)*! (j ןN`kbrۉ%(8)cJMnr~TSĽ_oFyJ0T5B3=y! {u-VP{ KsEmֻ_ +b7U1dco1$+AUX xD@Qc TҸ8a}6F} +Xn],䨬-(&t+D*wKz 5p%@Ƒ-rmb%lU:B +TLk o9׈\D +3whTFVVDNa&bd f Blk^$-x ;H@ސS7%0lU5UsxaY[@̄m +\`6V%fGѾ&4{[R2 Ǡ2Sn@\`O} ԉ; l8*+btI}/1~m2H‡+ Jl ),wHeOZ:a\(lT"6kv}HS N }fZ|gL'-\DZ +$ fHj&}T!C ;3V y9Y%B*<;jC|MO`PIܟ)nq`EoX2ZT@$ĬI54FBBNd!o#u$ь49i)s‹߶%tA\ajţ%;Z \1e(à 20z/r9 ձ8]Wf8r868Hdݷͤp/n +Rx2#,!\Q jĪ́[b!i8+5 uגIQ7Uzo+۹1 \^Wx]s+ze\fKlLB~?4gL y~ics藰:P_>d'\y Yb>ly?pu{ۙM=㙰+ }-S pCY12exS76 C6p#X+_vo)}<^kc0lۂ7>V߰kp (bY1DSI%o " +/>:+,GH9 +s#7۴t Rfy 'IdzAp GloP`cpo冷Xq%@@YzehT0Vm1/Fp~`$ֶAKu(녤R +sFi=XDRxތ 12wy/2ZXG\x/~r0ݤ'o\ X0t<:wr Čh?^8rSC68ZrZQL AetMvg@l2I?ZasL'S4#oDsj8/> $eH)|r' +vqQ^Wf]7pz;v@YIڴ2yR{)XHc/ƒi{/Pg`f cY68*:+Q,zmr;-pC/#f#!ۥn-^{ 7Ý:4+Su%G Ѣ@ +2W&sM ( + U@T!VkFhK֓c`Z oX%Y}d{htnʼ֛VL 6 r PlZVnAMCvwD K[ّz#l.uQTu!&|MeVtA=^źA`rn:ɴ bx&RO-Y; 7n +^Slj:V+DA2dE[4]ҒTs{&03"@ ? zs/f5̱X;1W;sYkbb=Eoמ묵}|Ww3}Ōy_ߟ߷__k9s~w;EָBZsq뮱w3뿱}_oE[kknsη7=ߝ\\o_E7^E1csڋ_]n8E޷Ǘ3Zg=c5[oNԅ4]t\a%FUdz9A|kڶHӆT2@:\5v-ck-RRdk.dk 5Vebe\3{~\EllKov-OBIU@XMW +-И}b%C q#KPӈ{8_ P^nr|/kuw0/Wܱxuf3 4Z;'bywE9wS$IKɑ:.m̀墩ZL].\Xepe2%k:OS3Alq, F*_ W0?ijB$9m溙KYv%C! fͅ-%/ْNɚCq `-K=rF[C93Z]9g1wы_Qk[s"[k56r^s[{~wk9?6n9{uμݷ[sww{w}6v;֜cf7YEE3E>9/m9]y_}o;{˿bzwŬƚ珳9g,6^z|7ߘWn;-B6!~cC.8s ~y!EvCq' +(KP +TU2;s% -Hn9=KL?1w-E!xHX93IETöUsf56|LIJamblr,[Z5_vs'YmZ\YRPB(q8 T\D[Ry8ْ%?fs"Of6'RVgf\Cxs"ٚjZm6'DP6͉rŌ:l;j#/aB;ԓZ(Wd=5W|i +m8O[8KpUUJXiCspXDWapFLqj \U,]̥ٲʮg \-,gK5ٲkm񵥪gˮz1<2eyJYHfJb-Z[mU]k+[SеX -@YlQT }od{ƜPlm 4XKcAVM_+ +(J2@V->AV%a% +j [Ū`nMZ*̳Z 5Y pRSPPZmՖ,ȪgVrV5_U' `ꪒdCM.E߱Hy'Z4mT96'HMI%Q>O$ ru+QuA5nDPto8tv]'{!+PxX`+25.<9{DXmD5o|X WQ$,xq`*[<_t-n YxʢH TouE ?=*0TX da(kNu]gzrوFN؂h!u]ױpGVata:̪u@ `px[1TH聮#Y>Ћt'Tz]yۃ+]ip$KE+|l5@s-ҕM3<ϴ%0Tsm%D2Ʊ+JƝ$LĠ%Xr-TUkkH5y\rDZ:`Mɡ& fkJM9w3w~{w:} z=7cU @S)h +(@bԁ#M|IqRPhʹŋx 5V SzJOicBu!oŁ"cSzPl( e MYhmfBB^dŹ^qȦOEYh3gt"LMFLE(*3Q656Fu=Ba3os.yrCg|t72 0(QSm Y&eMŁ7͟l$_ 3Y-oM/_xՁď kí6GdEBqy. +5@0 + ب"HJ\j 9x$:_62 +0T^o[c]U (m؅ Ndlyq*; m&,zae&6 \ a V^f2DY$HI)c)c%*ȒN<{9jbŹ!Odn30lzipFdG1D:"ؚ۹EQ?Y$jcxM#%X;P⨭dYcd`DLMOlR{)Ia +Z!.XoC(C>Aڍn@VgfB@l9 +HLxWsqdU[^ {]k(IxޖJ#FLB$$Y:x6s8p%1Cd]&(`H90% +ɧQ$ѧiFn`іJ + +eye$SWBD2~chŹjY,tLeYpvt.Y !hJqrCa[j +PF|$EhBh!uRIiHY=k@@m + ݐ4h, Bkq@*1L2 I?Br#]&U',\ḿAStD m9 rt_]qY8;db{h4bI"V5H8=vaatކ Sve+ +tB~4iၱ+ +6cȠqǗ%F*QjVch >N8F6܂;!3Q1TWR|lT +%ZJ`QYV %87m)#G-NwLx8 +}.[FH`U:@],sϭ lBdRg@Rp]PW)ȳ%B*݀AV. +j <VsgAsR뉔@t6'88Um-0_0)φ"Xo: gX[[нQ!& :aք jo[,BbaMu=Vi&&n6וޖI^h7h ND|0J pU[MM VqY9B:kxL-ma]2-nZX cǽ +uDa#|ώAa +87|VZx6fG;TXM/ ^=  ܌a~2 -A"!MY.v3|@C,@#IVx]r,2 f1Ss!0V#% N] ]!.C .F7m@:pU)jAa:wL =y{ ^Zc |EKBוH2- HpN w$fItBR829\0b…I]s}e-1G|~'ų\QBcL!B`\ +@Q(A&+p8 A'5R𚗶ѝ2qeNοVC<0^F.8KoVu%0s‘"á޶ҸiTn6lX9LCauA*T ,2<108D@E|'SmIHhzz2H'XzxMcJd(`ކ#P Js0|rK`P {eO/ &AxF(5R.X]V Bd m  X kF@-* @ԲT.|4*ᓥd͘B@&{!#u \ um m$c}JJӑ*FۼM1Bm1Yf"o}"أp]T8$NqRũ +ihEYAiHpp҄w\HփSC0 H&_g]¤.:t;Pi2R=:>@E-0I8@4Y尵Ue(MrW:))t``fP|LN]rVi›qLo u#F\4 +Cm!_w "oqQ,kO<6vp!d \d3XW#Yd/؅bЅ2*҄2kyzZ6ކVf׸F FS8TݯJb{}q?ĊsQw!> vx#Pid$ ^Q/rh2P90j$'t0EZfxaD5ŠɺbPuGIlLXJZ9iZ*BcDiE!-)c!d1ijp|nO-`󺶣^s'FÚZhl8oS`KfZ&RI$ +(L{»Xu @@:o#iSD_7ZF&? +PzH@P k$f4<2,\m +BLj4`S'IV\ezҭ +uI#W:5XTHw"Vkt: /o:%zUAF4#WYh":ϧbqxxUTQUX)Tјd=TBwiJmH + + &4Si0n0s dxႹvj> (Er@4EHS -O#բ@BhbRB8!Bdٻ@ݢOB)ѽ.*Mh#Hٵ/Xu)Xz#ꢐz +l.`bXKßӍuLBQ._.:@ sGr4Ղ]L_eLK@HMDJFQcLKtL#y䔥pWZ*kB҂Зꁽ :ygJy]p^7e5PUJydD^y1"2"Fr/Ё|@S)@z:RH[ƪ6(iCLjdyBɌ,ETDъD (@DJB ]`g3cx0dm1v!؅FlaP y[ .lyrRЃ +80vҮ{J[P9c!LS5M5GA OI(ȠDtʏTJLsHHmD | ^Va@Cm|]JKs`Qv#A-/%t_pzAxx=αx[e `R"aʺ*d)C<geC2pY 7'aiHӌ YP)$B]u5ڰ 8Ȧom<8(u_4q-h׃xyLNqBu2xj*'ckB5L(bI(@LuEh@tPᴟyg湴8 IxBO9OdN(-9=}&$Hmif}HM2 B #860 ;!L8Lbx2Um$aAͣ3E@N̻0oK88bt +|jxmR* A!%Xaȳn@ W\G-%GWrFG +!G6:RCщk5ZjythDd-+3*4j}?T{JqHup|]B$YȪBP2" Q(diRSZMP:h͟ A!cuzL&=mL('c2Q682 +]4TduCEwLH +7oÞBpE{fOS<3S< +0ўi؝4tZv!wZ FI;FvҪPfq80bȫ*#/#$e&^6Dyژ$zG,Ё͚hHZf*UQ "2I!Hm ɗ040 p0@f|$0Z?UAhf SHTuV(H8<(&HHƑIaa B1PUmuKE"L\(: +`{8&qIf~AomCJL ׌AϟAM0@~zָX"'J m>B{SvlHE<VcdJ3Q@KrؘoV2W[ I  ֭ɼlϤ۶xecQT5H]lՍM)o_ZRJ{൩)r;ODwd4I$3 $һ`<bk;wBt4Fxat[,Q=ry 9)ܯ:hXjSkד כh?wYa|!;?`["-!Krc^=֠骭`\δID.m=22iP *kN:kz9Z+|JX0іpa; ۑ-6)Z!9H˨T}?n( oOuĞr2`OȦU_'!uBv>FyZ&H׆SrPrIБE}u\ށbC ܶ%gYSݑŕP, +G,B+9ho-T&V#4fbhȾA74c=4OZ&NT?L~ŷ y=k<8B'Af..QEIeoOv/IKLH,btOEaNj͍4Jhx?&X4tW<@qog]C2Eࣖ㙳Mw:8Mvcϐm, SЎlNIڔs-sqmLe{+B[_bwl pAV1}}#_a4-ֽcQLy̮9#BUld)d6i{Y.4ȭUFmRV+`$R&8k[ݜፁ2s1#{r*nG'MA(MppS3VgBuM0 +ӬW>?;'^ūLQ^ND͒ZN7F)LW0J:HB)3M{me3wYfczs!xZ\)LN=/̂ldL!sUtetΓf&ZQu} Idb5q󃯡?'L b]2?rĿVJ̻Ch_4jn:cj| 'e8~5 )Hi .*įIEUǿ%7 '@Y.R$ r{q€ SˉC:E}uM]+M\!Lj )4µHScJU#Q/Ŏl!j?-TYQAQALYP5(^"A!kQD ɀa-/|{6rkNJt J/7_z RMIޙO׺-w֡^q";OSf,@0t3ץOʤpP(c/”z8YFя*ХXfYGq7_*1q=# +&ƵWĪT6Iص<%!"|Ew^4)VԂ7bulUY2Q$Zeh:%6o\]-hX7F-kZ~r= .N'Zؙ|1aYgc+≜⸶KTuD*+p +Ⱥ7A9.1CK፤Z[Hp=}2D4㊭?VvM yGcIhb ?$rP ҳre6p/h"1xW\38i +%IBI!y 6n*W~:BA;"z⽏5PM Do~~,UWOw GL>hc {ϚheF@&k-S60N~99ޛaoF~i?Ùr( +g êd7=77³6X~+?'Cҍ#)dq&wM;!zM*ϸܩn=}TTe1Z |W' " M#ԉp&R$0:J6Vl"/+H6$hո!KLJ+I+ȀdX b#s{"BLx7Yv]ŌՖ8qF1[^#ƻd+Z@G5|P]g[luY6ɡw7Gm9 LppLkBzH}9pϻ +cwwƅNǻ6,3}ﮑ _ej<x,A@^ |ؚ,:QŻ>yaelLw]MapT7 +:-^Z:kƷ~ )! foH["3ʉ:qі6za +aE2sXRș{ղ[.f_; 3zev8Vs|".6Jf>qȯpQf$Dcu/G\;UcDf[6C˺2uk?;(\Z _Ft~_ЩH~ZrpJC2Q`m4@"qUK }arn -^vLIGPڡhp)zl޻v)TmCwE@n^nW8Ȭ<wL/'CnՂ3+6ꔩ_hS!p[lTg>Sc8Ye0ɱk%aNW -ow&Ӑ1Q$dRymlv_^IPY@Nq;%,qS[ȧbptRK]z] G7{%M\D"&Y;.{NfRi=FDv}>,E7Jq:]R$eƣKWSw膉(?KSIL3J?,奈tܻ`\@dS%"6z.8Z%,0J^iP`#3bBŅbvo"4 y5s$vFDkZQ^uս5KJ˵U ԺH'K5}T1imZ[?6Rc r>|${oT:U +XG7y)$1G*s,=vr97F{7TFRtJz@ +w ujeSm.^TP4 P +9ջ˥^bFfh⊀/AI3GKs1S@eрo=#P +SV?dܒT|ľa{ ?ٍ̐ӱZ/m<\a؄sJHN`` DJ3ݳ[Qj0݃P* +]?vCUrf3Jq1k )N;LAiu1=k|75̬M5(t[t (IpZʸ.K*+bz9PLQ}(zd˘+awY _ʆ;ke)wi2 0<:u&^yT稌,/+HBthV1}5xf(M{!+>y[3vJɬHJd|K2 1xXQK+v`O9%P?f7]@Hսb@ A]0`7-ЊU1Es#`\# JCL4PImU6Hk  _$NNY58U +|-Uu"*~VuC9*?ʮAb*./NiU$ wbe1ULVſmK/ ,GG62[pAϖzeAH/N~P8MEڞJE-r y';c@sMй+ivnur?DB6YR +y22x)>cˆoʰҼSõ~|b.Ю.6ɥ CKO UMm%q؜\Mo0l},"jXZ T鮊qg&ڐ?C17G{+ (VcW9fu ϩc,A9ɊCSx;=0 .R+j^ .r910dK0\ 9.wz)+gdɍDsKH17_FfH.vJ9b6M8EksbbK']"u͠n^֖7&NVgS^DUt箞1y&ǕMMWBBvEF^ 1HDPt[sgoblH-'k$QI[#vs~>a$=xb,lbɜL6;@&cD"CKRDX;h_fe.JOz|e 1GqYXAcJ U#A&HL`%J1ͫ?30˘AX lF~OP>#Bkmy"8썲#IB{tHpA}}˛g)>+Xmnvpn% =зM?ayV[tLsv8l^swV+aͶBR5(igd0\ SyUe9IV^}.vvUu@ey~SrɺIp0ggElX*!G!-N5LpvpڪvZ6@+XNjw5#SQsAR$ ݛ\":WS$ry䰕ûAIwSٌ=O ^ JȐ(\A+V55&TpkʊK H`?^`?Z *Rf-jSsll2w2'^uo*oQw=MㆼDAx7oO'Q@Ad$^osDf;Y]fs)_9waqJ͐)ʎx cV+~5eiFtfǐ͆7Y03*@(;~9= G@b- +/[YGfJaa#<:QڰePv:^8:%%)~Afw_v8w;ꮏE%$zq qCe+ 1QV6"WCҺGUn PGf5%b6cuqݤ5[` +f/҅QUW##R}ɽJ.?vO C(²,?Gʸƅ&uנL>b^@ 8Ii5{6f[/g\SU b3ek =#[ zvGd)f_&DSΐQoDק# 'CS>H5 f5)<:.` 6qlh:Pj@:LOO^ڔ9XDa.s&NRԁ&TYK)65q"fLF ԭщz4=oHhk[/Aƭ:Hmp@ +t30845nȦ6":Î"ܡEƆ%!6;WLҀG}_jHH신Lf>6#^3.Ljzm| a" +gYd$בil!8 &T9K}KIE_15&~(mN5c8΁nײ[9rq"i-:Q;PˡJU\e/=.G.JM%Ƕ7:|iZ)e{,1y 1:|Ih*-p{Jaz)0tbnQ1*X4?-^V1TӸ_G-8 +l? +У" +?f@!pA*G,sdTc|n.O2I8Z)y#ЈhE$[Q[hg,1-f;`9E2 + =4oѵ +{nY<E@L>!N.idcI *) r2*@3d 0ձeCUyX):ED/0US&A_:I"V6읋~55̗%u +#+* +X+:h5,$qzж.DžC} ͌Ey]_Tz.RZP:}%( M\O&dw9>poHF%FG>.jcNvZǀmqh=hU-|kMT7tp-*3OQI'9AOU + YL vm.&J!#S;B)ZS$ +;yI@0x>stream +(i%؏fxjBmמSږBDcY|\]Gx)(]Ms*xJ,zT6AKt 530TJfcfK(DK2IjJ$h7=Gls鏅zSqQo4n6@~rK,l&Y;/ PAA"vDJn u.Q\Z)x)bkb0!gAhi'bko+;(&ͩg|xnL8*~8=56֩<d4]o@*2;1 +cxT%^mdaT?Y +o +J0?_Q%5"mEH{~G80U>MrJ}^@{YZQsJl)Ck[< 9R"Ϙ,2btF/2MnvaU8A:FoLrAL%td 5D9'<7Ղ ҁc)S*ԡ [1Q?1s8ÔfS$K08`y"+' ZV4Ue=C+lu v1eK$mp'tx"ujK*E󸣒tⴖ<I7 + Ed%U  bT%1Zx;;#Z^Х,>d_ 7Y}!`HܬXx_i$C_'HW;kb-m4_ѷ!|XP9zhM|`9n$W+ل(_h3V> ] )g#)Ag4:})ih5?#r{2)E4E!cV߸/(z'}oEppϔ+WN\$0o ;0{3bo}A̐HBI:I @pcUx$q4z-1 )1,h*'yc9M{n~ttS@EHw!"NɔyR<ɵd BR2aN3s=r#!X{ܤ2ퟯfA'Rދ#Xf{5sNE].<>΋+!JnwL{sb|MeUUKt"C8pBNw#YN<6f h-{%N&΂rNqGy OP[+!~OO4gb0G4LtJA ~@5Qhz[_$-OJMɔN/ +gE>^XLו$)+%ϰL׭Y}Ċ4-!1Ypc!tpQhH?5V/3f[UEuW"PiCCMfG%]5z=(#)Bqj@KU4My Db.-O :/q)pV!$8.6){&wF +ak*ԴB^Y[EXf?a}biQ{]IpnҮxճ,y+/,s5!\DTUH(Ս%E7a e`ȇ`"%yVFWb _( $rv93?*7+[\7< Ou"$MOܓ+CH"Ij߇,-4mM\zZk,c:b~o]jQ!,Y40u{jPVQqDYax~?Vmc?zl+w܁$H +}ĮECA9SCڳc97yF3L%G%br$M3#U#T+p7>I\!B##+#38ar)Z-6 Rߋڈy}P`[PJ(⡯dux +DFJoҟOSV4B.PX݃')D K#[P.<#^Ez=t#zS$0Vɀ@\kŽOEUZUT,3*@Z'3B#iJT()CTI:!FZM3!1Iq +צZw5g/ӈvjӂo@nܤYuwwgl$D'l1Z)(%f9ZŻdƴ_Gk݄0,-/2ɍ+Lģ}0 ۀa-`P:9j‰;qhE+%@8%YƤf":no\ qY92gIf&~@_Ső(z*B4EfnD/`g@WR03+ thR5A9H(5[N4Kؤa Z6f.yuAYh+ot3LBPd38 =_ʠ/m݌`G}J@><]ҁ"x1(kY3b%KMWcZ'ޏU7 ;Wj +t1§Sv%:Sy +??znU>-)u*wd5@UG/^ZDʯ"QheTy~'PσPsSKqnfGByY:r9SWSR8͉I{1DWyT&m(>2@Jo$vwrrMa(k'aDί h]ϾM~>\yz qfg0XpxGz ]z ,hFʠEjx~]d뤜Fu)Q_ 21c_fRKǯ,PiV\{j1I!0 pWٯaina_Onu !5Dl ͱ,4øj|2hERA)Fvਆ2Eu=F~^M Hj[J٦ayS[ҤZǺ(VGL+ialRbš\U!8~?E,x)QoÅ NpA& +%߅!n}HXп +[CfYaEFod0.Ilyߓ3| ӂxRba^4yįdOQG0SpC^_y_/mrVOgcY|g5kų :Z2͈uc׹3܂tC-tk'CSGEgO %$K!y莽1(r7 C41q @1ҋE_q].R;T Àr-wnቪ+5 +h9R('{ZK|ʖp)*@e{CXFퟡ%w/4cnr!9) B7!8j1}pJ6ݘ),Y :9K 4;wrx݆yly NgeKq't2xnLeI|.;`qA~Bԃ1=.߼̻C\ANF]d }/l)oNuWl;%ՆJ*1m0][j+[)$Ii81T3ĝ\+i6ULOx92w+:@fy[H_tJ >V]H@X +)pPdr+ۄ wf`nXyp +Hzw$FOR4=ua)'xT²~LEAĴԾ1," vRf HtHo։1)D9s#o%PVE7M^V +pDވ"bs9.5$ <_ ~ƶCM8AI ue NZ5qP zq˜8AEP_(k@n\˧NJǞ?9˰8{.j}b׼P9aʒO1{0`SxuG~ڋvl7Cr!;;s""O jȜ a +=zGUfXTo^ޜ`C+;\f^/fi"'uDW@ )eGUiM5Cqh' +z?=E>VUZ_-Fu֍ {yBVft,DjSZoH_F}GRUu1F(ah4o⼤nQ :-mv0Nx9( /`BT&$ MO.})4ڿTLv4vaVL,(ի*g04({&lυ0WB~}'h0f"rLf |`cH:BV7}m*-h]rӄ 3򍝽&8@؍JY?"']C4 (Hdh#%M<Gwm:HxMih'@&y+pNO)Jeׂ8ňJ ݱ?=+%O^\|i`MC(FR-ڄ7x"J4s:-(Z%yLP<xcAI,`,D: @W4ů?#m2UARf:Pd cι1@lQ#GNFfMxƸ+!ʌ+xܵom 69a>`Oup67<*MBȫ! F~28aÃ#m;}W α׾Kpb+6fonT28 ߡZ^ʲN5g7=ܿĉ)2M+,l?ԓEd$4^VIHb#]0B-ol.RTn&(Jza('x?TiGZ +ׁ]Ξ,nq*5qZ'ZtY$_}O]UQývΡ+Ȝt*xP,N{)TDbAHXkNRjlTEHη|=1Qʚ'2O.bPZIvBj"^u29m<E- ~>kO xuU:.ϰ*eYzZt.DD~He fj_(a@ޕ""{4Jru5 +FD9px Q9eKpP] C;@8㜲hQq*%xْmCĝ&bx~2at ˆDS`z,Q^3h8橤,@Fמ{ͶLO‹hD6PhFtj~ dX srbB@(`š.|Ͱ4-F/|T % ]BR]jik +HڔKW H<%1 AX>mCŢ#E,//m@BJ 164dl8IN˥pqI', ҸZR>.š ;QVȴa*8҇C$ 82߶q+^x̏7ΰ k9B)hjneRneR06a6MfkBIeyI<6+Iʂt2H,*) d$&!$06*BiCS1X x@J9ɰޅI!Pt4 hI)A2K+3P. +(F$ڵ0f0` $!%GנRq.RdXSL <!mHt!Ky_>R݆͢R6 hf40˥M84A!ʼn6@:Z-b&x Y4]Cu]<6А·' ࢱ"( a&CG҈dpeZKCGhi-i3-iD $ +ę% ̈́J͂w4M@MXBUQ +ot I"v4N;ۈM+ mv55:F!dNƙU<>IJ@<`c0;n(y@(`ӑ_8 +9"Y$ +2K˰t(Y: βp!v!f<"(H\vM hNQ2.=Ԋ$A'!I +ycY/N1-b4b G#z$h zpk1@,@8hVSNhY8UU "ZnV&Z2) (8&  3Ī(8HA +> +)@2*Npt@(\XhXm( +NE@G 5CkN_"5 @NC' (F\F!5p11eاKסi( PXlK@64A(qa!ʤu+blJS57h2#v8HxzĄBgRI4ژmC5&hʤ( LP) +X"A B LT44#`\f1hkXTJ%tp"0fQ.J Iq]\@rVJdMa=vZhbq 8" GթB {mEҁ i  "2O%Q@eN?asa$DjB8qH 4bT!z7uUHa!b#v  JhtZdd0I(-LtR|T) Nl,fy + EŒaFPB'RhLD :b+nb812,2L2_GeX@C\(Qx4|2  ٺ$$ھHR\o>)<UC3"Dlplֱi,Ƣa,fGA1)1ȰbB4YbwX2U┗$0J64#I<^ J+Nn`%.%H*,($mcyˆHxā'' E!)$Q g".G* + + d6w@XX>B̈́iDRN2LVHG҄d7u tz[a`ajĎ C4 a$l02>,:vbfX"Yp@`, h2̡ʰeC V^2'4HYPA@3bIȳHj? C +Jf)=4ȡu + h%Lewa-S-ԠX#J %TST> Թ<<]TG5,4i!`$x4kdC4HْjZGKt^9ai&fZC`└6QX&q}c6QG~08Ab8+I%c*IXhd* l*٬^8`iYhYh^s'bɰʤf`*2D@cl!vY‚D|pa#-Hˁ.NNJ؀yYeCq%2 +M\ ]iA]8ZnDjm X݂&X2,2B0M3)ȸd\=>ѱْ ƗĽ'Aa8+hD`8p)\@>~a, +BԈVMXud ¨9 +Re1m0] J|P1(㑤8f; HLeX2,PG)TA X X*-pF"bN(^$ƠɰMi|d, @#2v@[9p؆Ի8P` +w#Zx8#Dp|9"db2ḭ(+TZև#v&ls ] +L! q+>HzQÁSYhlBQQDC'GrH,* ˰M8 $1E`TA:)t֊]2 @GGd5`6LABCoR(ɰ <6f!bAFRhD2<ٔTEt8+a1h`6a %NaeIu)[ J ܃SjCiKPi-BZ+pXS陰fHa2LfXN6Tr0P 'a *7j֎,h.i8"G,0,6f HH`2L?$Rdd!` i-Ra`8e4FB3"<}A0uF# q1qm Aa8p/֞>6 jǢ3 NnId|6)#aJ;B l4s!1c@'."&J $ӠsGbluB"063wP vqn ͰIIN" l怃1Z lP#BIPʹApnRL˥I ;V&L:Z p4BD C'",ѥ- . #EBJ FCx! ebՂl*TCJB2[UxG{ 0ʌ0,RD"bqB߄w`fd#%ë^"ٸAv2rq PFfnFC? gX#QEIcODʡxlm[dhz.,(0J .x$l +\B u.4E&vD< +6jH/䜞X@\A-x+;ü8=؄4tUH +MJA$@:QJ=qcd$ TF@j:H "JN)dPF$9 h+GT & eA846ip8=h8X !߃k=I3 !Y9RG{@YP|p!˥R#RPiK(u4`#5Ͱ:t@\ +U&1P|pO˥}D Bh;(@,zˈM 5ֳ .%EfA/"xNʁܞ:Z e4Z'=8P'lP|p{ALaƍ ,1 = mDyu^:v +a"JMI@A=6Ah,&òayɦѪ`>6XetB)\Lh,mmi9* 財$ fO>n$`2|l(NX +  +P)C L]Oӱi s|c>}}pӞ?u?e co|rB:TPrϻUz;r>G.e_<'Veǩ+ۧk ?)G~X[gsE;\oؾ __:d0\9|9y6'CcC9ce|rzTO~1Twj9jP=ۣF+UOm )a܎qfUQ-yJ.e[E9wnpS}9[B '_e]U.=N2O]|?tB]uTކpY?|+P>/W{P2CynB|lw~[ᆱ93G[%O0>:7}u&2rg칕_(꾎?K( +=×O%:{zBgS–P:\~ 5\S%F1~VϩrLVW%tt—3/=:r\Kȯ;{P˧paVgSF%tPs\}rNgȳeso=7;\n9]>=2PUa'B/giC)c~1 Um*fto(eP.#d(gJ>WwyB J69눡P_Y:|PjTֱPEJmq﻾o,TrYyjrUw~ +߆;F*R>Vn,OۿƇ/rܭ ܍۹΍+%|2\p7)??u~.wUN)c UdO{;v| lɓeė} UUFFn揬쾪Ovw'f+o!U)2א_d9'f %aÖUߐ~;Ζ鏡yTuغ2yWF#42}r7,ftq[edq> wʨS_n{9nmcF}k[e2:2{t^ gs׈*Q*DlXj߷n=ƇޏeTp{7;S=mرucGV]:0.s;ce*K)=N-eo݇>}vGm2>]^r#?K:ᜓ?cT܏/(W/F,TȼQn_u!Nw>q{R +͹,=Nʏ!㍮?VBd!7wS庺|snΕݽ:u>_O +oy?q}l.>R\Oƞs :_~o_;{JrJfR}F=;^9tpG(_Oɮ3׳n0s%㺌+Rn:}F[:G~ E,_ӧ?d[** +c?迻?Χr#oj/\oF!s_˸:Onqߣ_;>Ϯ~73ens9Wbˍ?%7TMG>_eC+wPFv t=aRqSx{G{r/dd{y}3d,猾>9|q8yyN'ye(*W9jT;UuS#|/wJ~P>K^:cr2JO]op.pur!ݭ?Ȼq]Xy(Uz\c/ns*j7{g[K'3+G}U%us~97*<}8d \,ze?ÝiOrސCޅ?WgVn_#?l~88]N݇\,|Jwy7~;ݹ?%.V:ƝQ꿔QDV*;G*{/odUV6e+%Թ/C%|ߩ>!&?a +1%,#熫o%w猻{ rlRˆ;*߰PdorΖua\V+aC~Wٓ_!ݻCzt^Rv࿾v6K_a/N>wY_V+w%dS`_^_z9Jק(9FrvRc! O U(uAbO__Qpn\}\~gnRW}ӥ>{]joU/K(}ʏͱF1F F-!WveweU6ܨڨ0Xϒ)E#H08 ǃbhDn(<,FqPQA@A "IH"%\gc@gD6-}ba<M# nY&N4?6eA +Щ|7`J!GI&%E\ *o|aFb~HM?] mvm&aծܒ/P6ggЏ?ّ*G$I\u ԗsPGw (Wg1jb>Bqk Wӛ1A2:Ao#쯁A'XЃ3{]0ڈ)$)uWnے됨Kd I#ߍoFSzӐ`LT&9J*=H.'DTq1<{bxP"ĆKqW80SU`U<3jfG {9}ޣ(0j%Tx*lڡ\@pgA<5(Rx=CmSǠq]_A5hmLǍMOْf)5FZeL֋rat69ݱq_8}E96+5Ovmz0G>oHv^Yn jI󨈲_6C]@V<4OeՎ&js̾xJ Z-MB@ R7b*1ʘD_J_է'Tq -ǎHxSTh1xD"!z=P۟=jMbeR̂ZEϲKH9\ +bf6G&R 7֙4>~fpup11Y}1*B$\1XJeEB3"@!Y(ʨgŅl5 SǺ߼%z?n HCkBpԣ[*=Aeto!'V4V.,㐤iM2lFfZdh lb͍g׾n>'q2M~tR\NgWcM1iWcs]R x%;i%(jV| 2>I!8AS9VIڤ' $D|?siή<&C˅!1aQĕ쟾+$qc S&I|ÆN=O=jc5#\E#q;- JWV@ S {YKĹ +"bQ2le; 1N֚F|u6a4j9l iY9e z]u#ghSj]vy)^M@F̬Sp1Ƽ +̸Bg1L/&NoH3~r.BǯF"R`+b1[kț٨ EqC EyIE:#>Ilc~-t`jp 8i5daTJTUmERkw e-l~j-ʏ+R^N`ߐ9>4 DRY9 Tzr. Ǔh;Q oz;,tfoe|/E6_"h%yga:;h +ZW,3vԇ!?><4BLxi7E(% q-@>{(FҺlڙFHGd~VUjYteխipև٥g?b~)K5-:Wa!o vAln~6 tKrQTXN )Ao!s;C<2[ Ц?5%Q5P9NF8lF@H,[4ҼLҘ,ty\LoA,h@D-b'#FtOGP+Ec95 8|Qg)ϾΣkɘ9ANlFCJi7ͷe!`DYꃯN'NI-뒂Wr7) FvY@ԡթ wȳ5lcJ2J; 7qV?^$!;'R,6t;Po=9=ul2֦x\y/C'BR)X__)cl\KΞMs[z9‡&h\`ҦC7g2dTUY&^! ,Y}05ms@xҤCGK.wCOtEbߗ C{8eJ}m7El%q\nP M3mv5f!zC]U'R4gP%t:A"Ԯ`1[Gg9bgG(qHV(ytteJtGT`{;h/4Q~ݚɊ݉Uu"_xZ0ֺI3L]-Utdx{r["ap )Rm-cnwjvTv "ijbfbmYI56B jdK nحWyBH3YhQ嚀 jυTKV iOK͊#n袎]AzG?.A5qM/L1A +UmbPđ隰Cbž>ԴJSlxك5u,dmËBDK;Y^xa_݅N12If=ox4k'p-ʒpp@1[.'O6#z@Q%r2Y02-H!Q <|hb>uPmD7XFC 2AW@}xnu0,?%&mLKX\ˋ(z[چ&*G|%fHB飲dX 3jf.*aGT83}#uU*sJ9Q] A֟-O +Ї>q(Aw~2JZބZYciuwB2)#tIuă)%Yե@зdN$*{Ǵ}j[Q#}3EmpuvibԖ8̉5mt! ÙB6GΡ|Oh,0]A‚\5!=(UdRŽ=v?E~xUHÙ*y{#K[Ĭi<Ĝ*8g#t<^7"54"14ʾ|a|_$)2^H]Z^dv` QLR17~I.Dz+3T,"f],QO}wҘi"g*cnC{*hOn҈9$i,QMtajν:1]w;O, +/(b-Co`!=%sq1Qػ1#ڿ%V–I 5R"=  &` +H[xWa'Ԫ 7ORz!v ;He :j-2cM>\' }̺=O:* +IU5IB㎧7 _*hxw6pvLni`-|_}݆oly];6+c[+瓙Ь_Hg bpF]`x x N<ŵ,/)CSJӢW,\|;`zHjޅl5˭ФHϕԽN}4nƧ*q%o,OvvJ⎻@P:aN3 %: <[//dMC~.r)H&53OQ;/3-}>zAÜpUPW-5ga,P(|_ wpfNCnV +10^o_=$5YK МxæGjHΝ8ٕOZXVcMw» ؃69k?.}*Mf;Pa%˓4I0j[+Cɀ[tCh̵U?VO:Nv ,븳C @cU|PvXss+m i'="`@`NgU$Ke3n4!5\GDڇf^dӑ! lv| +!2,b_fun6j,E!煃\ӫ{, Xd<.#*aNEЎ|ov:bciw3خ,ެΐ&.QOh9*䱺?c S#1u}2qG ,A/`Ϣ+m8G%m&d!&NiDTeMIvE ƜjΜT& + !H](tOvmIsi^:B=k8KD:/a;0F%=wV Ϝ/ޟL!(Jd'A0[F+ 'a Vh(N)hc }J_`gGE}U;ՅLMP>I ?j!}ٷf!lrj\24ķ6c]k1?Jl${Qf'œ1u*Ăة[.JȊˉ\kRGxHoO93qllKCC5p'F6aIڛrI_c%5`a &U7JURT{C~ψ ]W8(5bmV!+\^.O=ŊRFMr D?c"9] {0"wlᑶ0ۊFe[ i~ר^<_ky~6ofȴpŸ+K +BB``m\;ˈaώM@3ACFAqܿN,Y\ /XXD;p~8 +4[RE5T1:NR2ߝ p3]9y6FHzyrc "K(iҗD!EƜW1$IϜ'[V۫ØbaT'%\-܎֭"GÙːuhF x14BBV`+\XvzE[]>=nH +$?CWq+ú9gccٸ6~菕aIu!эB֔"XIN7N{۟jwJ< ΁n~E-JEuaxɻϣEkFhS-Lh˸h(6?+$G%BaCv59_ZT$ItmH 0tޮ/&9č +4 |kJTaIW)lQۡ$̹-fOb@c87!*"2S>od6ă]/1p~w++yBP##U8Z|zeUeS05>>51΋ cцjxrc 6bЍ}#Q03\t>q0`+1V}wPDIݾ؟mF$Kj̤t^"]ׯ%/m1ޔѴA3Vtɷ; KbYhd;Iz_kO,D?G~V={q%er`ڙ+.<|? U֭g>݆L-"cqs +;fAe^y=7G:;T`X8Zy>ik#&qTɕAqձ:ئW10# -A, B]܇8U4FݿB$@D?(^u" ݅iDMQCũx}+M/m+$%oNy= ϪgtwmMxz\U >B5*>-I?dLirP k-k ^HKB>?1x]'G$!4fC1pa\(*q7SW7[HE,ڄrٟa5V2o0U Lj4cAȕ5"(sg(i?> ;(74Pq@V꧛ZfT}$:<@QP˹`2LPvKb5|(l~0Fn="WC Dl 0Gt o@3<@"p_U/5 p ȱ%7Õp`] )CM'0@$,G+6p#>_)W.kűr\A\$T1_̰2xu 0A ڝP}o(axs1*Lբ!ٵ}-3(GAB_IX qݍ s.n=Zr=;lHEՍ4+~{Ys2(S8Q]'j(C[2ٟkSJ1G. QZzj*M! !G?S%2ƞ.ˎpC!pAAӄ +~^[aym'3fBwoz|W&d;wdʕ==Sr"$nQ3f.^w["^z㵕*?VW6푻 )/\UibxQ學:qK 2PEbf >/4m~~ OHX/0s(-&f!ށhu]tod? Ok>7 +un+RzXH}_W>m6(AJ#l.)1( hq ;|4hE&zǍa$|) /1Wu7YEdg?u5'EpUm# x*<{D<P9fs]j:;٤ xw(E*(鿑us^Zc pZ(bAGhn"b$LȊAw&q0EoT\h]ɸ=]).=H1f,3zCx|ע(ppأObARQ}r3|åvA С#C[D\ǛLO9D v{* nV~!DaRwd!!c끶g֙41ҳ<-,yxB`5NRm*K~c߁ֵ:vw"jFu$挬Q`G&-!0Dh(VY rP.Qd͎t#EfDagXcٳޕZc@i_K5@{ԪwAj˵#qqCBdmܽ c#u c,Up`' ~w[Nb endstream endobj 31 0 obj [/Indexed/DeviceRGB 255 32 0 R] endobj 32 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX$6Ra!<<'!!!*'!!rrmPX()~> endstream endobj 25 0 obj <> endobj 33 0 obj [/View/Design] endobj 34 0 obj <>>> endobj 24 0 obj <> endobj 35 0 obj <> endobj 36 0 obj <>stream +H,mL[eǟmݢBȋ# ᜼71@!/J +5$iêI0|uQ6cFQ$JVa;H ?9G^G([ + +^}h^`klN97lhFx>%1z' OAP1oO$QءZ8JUbkPܶꖺjS;jZ\Fi9P\n{sRr9.M5ڕj[r.ԬŽ&=JB)ɤBț:OH!D{1$}NйtWu;rzeL[b-0 CpN1Ϛ_c```#BkCr΁(o N=^Voocx4ZA#4#Xda}DqgMA]p +Ncnקr0RF=9qgXjY{[pSM2 #ş ɊƨD̐Ø1Q]B=gJF%~~dZY6WZ}>Oԋ=CKꫪ06  /^uV endstream endobj 29 0 obj <> endobj 28 0 obj [/ICCBased 37 0 R] endobj 37 0 obj <>stream +Hb``2ptqre``+) +rwRR`?> v^~^*vD_)p%?@lZhdg"I`($>dCW@$ ]>faˀ% { *23J ---SR+KRs< +KRSj!ABPi5Zho@p2A!@riQdL0cR?1^: Sbj  O endstream endobj 26 0 obj [25 0 R] endobj 38 0 obj <> endobj xref +0 39 +0000000004 65535 f +0000000016 00000 n +0000000147 00000 n +0000040618 00000 n +0000000000 00000 f +0000040669 00000 n +0000000000 00000 f +0000000000 00000 f +0000044476 00000 n +0000044548 00000 n +0000044787 00000 n +0000046262 00000 n +0000111850 00000 n +0000177438 00000 n +0000243026 00000 n +0000308614 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000336005 00000 n +0000335818 00000 n +0000338262 00000 n +0000041103 00000 n +0000337864 00000 n +0000337751 00000 n +0000044005 00000 n +0000335244 00000 n +0000335292 00000 n +0000335889 00000 n +0000335920 00000 n +0000336336 00000 n +0000336645 00000 n +0000337899 00000 n +0000338287 00000 n +trailer <<9D306F40FA354036B65D39AB77EB5114>]>> startxref 338477 %%EOF \ No newline at end of file diff --git a/site/assets/css/mkdocstrings.css b/site/assets/css/mkdocstrings.css new file mode 100644 index 00000000..213840ff --- /dev/null +++ b/site/assets/css/mkdocstrings.css @@ -0,0 +1,5 @@ +/* Indentation. */ +div.doc-contents:not(.first) { + padding-left: 25px; + border-left: .05rem solid var(--md-typeset-table-color); +} diff --git a/site/assets/css/theme.css b/site/assets/css/theme.css new file mode 100644 index 00000000..88521e78 --- /dev/null +++ b/site/assets/css/theme.css @@ -0,0 +1,148 @@ +html { + overscroll-behavior-y: none; +} + +.md-typeset h5 { + text-transform: none; /* undo uppercasing of h5 applied by theme */ +} + +/* Branded header styles */ +.md-header, +.md-tabs { + background-image: url('../images/background.svg'); + background-size: cover; +} +.md-tabs { + background-position-y: -48px; /* exact height of .md-header on medium-width viewports */ +} +@media screen and (min-width: 1600px) { + .md-tabs { + background-position-y: -52.8px; /* exact height of .md-header on wide viewports */ + } +} +@media screen and (min-width: 2000px) { + .md-tabs { + background-position-y: -57.6px; /* exact height of .md-header on ultrawide viewports */ + } +} + +/* Nav styling */ +.md-nav__link { + align-items: center; +} +.md-nav__link svg { + height: 1em; +} +.md-nav__link:not(:hover, .md-nav__link--active) > svg { + color: var(--md-default-fg-color--light); /* slightly muted nav icons */ +} +@media screen and (min-width: 76.25em) { + .md-nav__item--section { + margin: 2em 0; + } +} + +/* smaller figcaptions */ +figcaption { + font-size: 0.8em; +} + +/* Disable interactivity styles on grid cards, which are not interactive */ +.md-typeset .grid.cards>ul>li:hover { + border: .05rem solid var(--md-default-fg-color--lightest); /* copy from base grid card styles */ + box-shadow: unset; +} + +/* hide math overflow */ +.md-typeset div.arithmatex { + overflow-y: hidden; +} + +/* Apply Kolena branding colors on top of 'default' scheme */ +[data-md-color-scheme="default"] { + --md-primary-fg-color: #0F62FE; + --md-primary-fg-color--dark: #452485; + --md-primary-fg-color--light: #835dcd; + + --md-typeset-a-color: #0F62FE; /* manually set link color to indigo */ + + --md-mg-positive-color: #008e10; + --md-mg-negative-color: #ac0000; + + --md-mg-substitution-color: #008e10; + --md-mg-deletion-color: #ac0000; + --md-mg-insertion-color: #3e57d3; +} + +/* Apply Kolena branding on top of 'slate' (dark) scheme */ +@media screen { + [data-md-color-scheme="slate"] { + --md-primary-fg-color: #0F62FE; + --md-primary-fg-color--dark: #332362; + --md-primary-fg-color--light: #835dcd; + + --md-typeset-a-color: #5F72FF; /* manually set link color to indigo */ + + --md-hue: 216; + + /* crank down the saturation of these default colors -- less purplish than simply overriding --md-hue */ + --md-default-fg-color: hsla(var(--md-hue), 25%, 95%, 1); + --md-default-fg-color--light: hsla(var(--md-hue), 25%, 90%, 0.62); + --md-default-fg-color--lighter: hsla(var(--md-hue), 25%, 90%, 0.32); + --md-default-fg-color--lightest: hsla(var(--md-hue), 25%, 90%, 0.12); + --md-default-bg-color: hsla(var(--md-hue), 7%, 13%, 1); + --md-default-bg-color--light: hsla(var(--md-hue), 7%, 13%, 0.54); + --md-default-bg-color--lighter: hsla(var(--md-hue), 7%, 13%, 0.26); + --md-default-bg-color--lightest: hsla(var(--md-hue), 7%, 13%, 0.07); + + --md-code-fg-color: hsla(var(--md-hue), 7%, 90%, 1); + --md-code-bg-color: hsla(var(--md-hue), 7%, 17%, 1); + --md-code-bg-color--light: hsla(var(--md-hue), 7%, 17%, 0.75); + --md-code-bg-color--lighter: hsla(var(--md-hue), 7%, 17%, 0.5); + + --md-footer-bg-color: hsla(var(--md-hue), 7%, 10%, 0.87); + --md-footer-bg-color--dark: hsla(var(--md-hue), 7%, 8%, 1); + + --md-mg-positive-color: #b6ffc4; + --md-mg-negative-color: #ffbcbf; + + --md-mg-substitution-color: #b6ffc4; + --md-mg-deletion-color: #ffbcbf; + --md-mg-insertion-color: #948aff; + } +} + +/* custom admonition type for FAQ */ +:root { + --md-admonition-icon--faq: url('data:image/svg+xml;charset=utf-8,'); +} +.md-typeset .admonition.faq, +.md-typeset details.faq { + border-color: var(--md-typeset-table-color); +} +.md-typeset .faq > .admonition-title, +.md-typeset .faq > summary { + background-color: var(--md-typeset-table-color--light); +} +.md-typeset .faq > .admonition-title::before, +.md-typeset .faq > summary::before { + background-color: var(--md-accent-fg-color); + -webkit-mask-image: var(--md-admonition-icon--faq); + mask-image: var(--md-admonition-icon--faq); +} +.mg-cell-color-positive { + color: var(--md-mg-positive-color); +} +.mg-cell-color-negative { + color: var(--md-mg-negative-color); +} + +.mg-color-substitution { + color: var(--md-mg-substitution-color); +} +.mg-color-deletion { + color: var(--md-mg-deletion-color); +} +.mg-color-insertion { + color: var(--md-mg-insertion-color); +} diff --git a/site/assets/images/300-W.jpg b/site/assets/images/300-W.jpg new file mode 100644 index 00000000..4fdab1d3 Binary files /dev/null and b/site/assets/images/300-W.jpg differ diff --git a/site/assets/images/CIFAR-10.jpg b/site/assets/images/CIFAR-10.jpg new file mode 100644 index 00000000..dfe6c8ec Binary files /dev/null and b/site/assets/images/CIFAR-10.jpg differ diff --git a/site/assets/images/CNN-DailyMail.jpg b/site/assets/images/CNN-DailyMail.jpg new file mode 100644 index 00000000..79e6d87a Binary files /dev/null and b/site/assets/images/CNN-DailyMail.jpg differ diff --git a/site/assets/images/COCO-transportation.jpeg b/site/assets/images/COCO-transportation.jpeg new file mode 100644 index 00000000..57d15eb0 Binary files /dev/null and b/site/assets/images/COCO-transportation.jpeg differ diff --git a/site/assets/images/CoQA.jpg b/site/assets/images/CoQA.jpg new file mode 100644 index 00000000..5c632fc9 Binary files /dev/null and b/site/assets/images/CoQA.jpg differ diff --git a/site/assets/images/KITTI-pointcloud.png b/site/assets/images/KITTI-pointcloud.png new file mode 100644 index 00000000..9a0ffcbc Binary files /dev/null and b/site/assets/images/KITTI-pointcloud.png differ diff --git a/site/assets/images/LFW.jpg b/site/assets/images/LFW.jpg new file mode 100644 index 00000000..b2c22681 Binary files /dev/null and b/site/assets/images/LFW.jpg differ diff --git a/site/assets/images/STS-benchmark.jpg b/site/assets/images/STS-benchmark.jpg new file mode 100644 index 00000000..e3999b4f Binary files /dev/null and b/site/assets/images/STS-benchmark.jpg differ diff --git a/site/assets/images/activation-map.png b/site/assets/images/activation-map.png new file mode 100644 index 00000000..378d4009 Binary files /dev/null and b/site/assets/images/activation-map.png differ diff --git a/site/assets/images/add-test-cases-light.gif b/site/assets/images/add-test-cases-light.gif new file mode 100644 index 00000000..16f6f43d Binary files /dev/null and b/site/assets/images/add-test-cases-light.gif differ diff --git a/site/assets/images/add-test-cases.gif b/site/assets/images/add-test-cases.gif new file mode 100644 index 00000000..fa02ab27 Binary files /dev/null and b/site/assets/images/add-test-cases.gif differ diff --git a/site/assets/images/automated-embeddings-extraction.gif b/site/assets/images/automated-embeddings-extraction.gif new file mode 100644 index 00000000..d0d4cdd4 Binary files /dev/null and b/site/assets/images/automated-embeddings-extraction.gif differ diff --git a/site/assets/images/background.svg b/site/assets/images/background.svg new file mode 100644 index 00000000..91c0ed12 --- /dev/null +++ b/site/assets/images/background.svg @@ -0,0 +1,2039 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/site/assets/images/boundingbox-extraction-configuration-dark.gif b/site/assets/images/boundingbox-extraction-configuration-dark.gif new file mode 100644 index 00000000..37c0f881 Binary files /dev/null and b/site/assets/images/boundingbox-extraction-configuration-dark.gif differ diff --git a/site/assets/images/boundingbox-extraction-configuration-light.gif b/site/assets/images/boundingbox-extraction-configuration-light.gif new file mode 100644 index 00000000..514d0c29 Binary files /dev/null and b/site/assets/images/boundingbox-extraction-configuration-light.gif differ diff --git a/site/assets/images/card-background.png b/site/assets/images/card-background.png new file mode 100644 index 00000000..c8739c67 Binary files /dev/null and b/site/assets/images/card-background.png differ diff --git a/site/assets/images/categorical-aggregation-options.png b/site/assets/images/categorical-aggregation-options.png new file mode 100644 index 00000000..7f2a0b5e Binary files /dev/null and b/site/assets/images/categorical-aggregation-options.png differ diff --git a/site/assets/images/classification-dog.jpg b/site/assets/images/classification-dog.jpg new file mode 100644 index 00000000..25a0b2e6 Binary files /dev/null and b/site/assets/images/classification-dog.jpg differ diff --git a/site/assets/images/cldk-dark.png b/site/assets/images/cldk-dark.png new file mode 100644 index 00000000..fa4492a5 Binary files /dev/null and b/site/assets/images/cldk-dark.png differ diff --git a/site/assets/images/cldk-light.png b/site/assets/images/cldk-light.png new file mode 100644 index 00000000..acf9131d Binary files /dev/null and b/site/assets/images/cldk-light.png differ diff --git a/site/assets/images/coco-stuff-10k.jpg b/site/assets/images/coco-stuff-10k.jpg new file mode 100644 index 00000000..f7c5ea7b Binary files /dev/null and b/site/assets/images/coco-stuff-10k.jpg differ diff --git a/site/assets/images/custom-fields-dark.gif b/site/assets/images/custom-fields-dark.gif new file mode 100644 index 00000000..b2878c80 Binary files /dev/null and b/site/assets/images/custom-fields-dark.gif differ diff --git a/site/assets/images/custom-fields-light.gif b/site/assets/images/custom-fields-light.gif new file mode 100644 index 00000000..616dfbf1 Binary files /dev/null and b/site/assets/images/custom-fields-light.gif differ diff --git a/site/assets/images/custom-metrics-dark.png b/site/assets/images/custom-metrics-dark.png new file mode 100644 index 00000000..3c882b9a Binary files /dev/null and b/site/assets/images/custom-metrics-dark.png differ diff --git a/site/assets/images/custom-metrics-light.png b/site/assets/images/custom-metrics-light.png new file mode 100644 index 00000000..e252f25c Binary files /dev/null and b/site/assets/images/custom-metrics-light.png differ diff --git a/site/assets/images/custom-metrics.png b/site/assets/images/custom-metrics.png new file mode 100644 index 00000000..a986f2dd Binary files /dev/null and b/site/assets/images/custom-metrics.png differ diff --git a/site/assets/images/custom-queries-dark.gif b/site/assets/images/custom-queries-dark.gif new file mode 100644 index 00000000..424b636e Binary files /dev/null and b/site/assets/images/custom-queries-dark.gif differ diff --git a/site/assets/images/custom-queries-light.gif b/site/assets/images/custom-queries-light.gif new file mode 100644 index 00000000..4abdb0b8 Binary files /dev/null and b/site/assets/images/custom-queries-light.gif differ diff --git a/site/assets/images/detection-airplane.jpg b/site/assets/images/detection-airplane.jpg new file mode 100644 index 00000000..61cfbedb Binary files /dev/null and b/site/assets/images/detection-airplane.jpg differ diff --git a/site/assets/images/edit-image-extraction-properties-dark.gif b/site/assets/images/edit-image-extraction-properties-dark.gif new file mode 100644 index 00000000..ea903391 Binary files /dev/null and b/site/assets/images/edit-image-extraction-properties-dark.gif differ diff --git a/site/assets/images/edit-image-extraction-properties-light.gif b/site/assets/images/edit-image-extraction-properties-light.gif new file mode 100644 index 00000000..c6f6a126 Binary files /dev/null and b/site/assets/images/edit-image-extraction-properties-light.gif differ diff --git a/site/assets/images/edit-text-extraction-properties-dark.gif b/site/assets/images/edit-text-extraction-properties-dark.gif new file mode 100644 index 00000000..c8c44c64 Binary files /dev/null and b/site/assets/images/edit-text-extraction-properties-dark.gif differ diff --git a/site/assets/images/edit-text-extraction-properties-light.gif b/site/assets/images/edit-text-extraction-properties-light.gif new file mode 100644 index 00000000..af1eab60 Binary files /dev/null and b/site/assets/images/edit-text-extraction-properties-light.gif differ diff --git a/site/assets/images/extraction-area.png b/site/assets/images/extraction-area.png new file mode 100644 index 00000000..d1d1b69a Binary files /dev/null and b/site/assets/images/extraction-area.png differ diff --git a/site/assets/images/extraction-aspect-dark.gif b/site/assets/images/extraction-aspect-dark.gif new file mode 100644 index 00000000..8af9a5c1 Binary files /dev/null and b/site/assets/images/extraction-aspect-dark.gif differ diff --git a/site/assets/images/extraction-aspect-light.gif b/site/assets/images/extraction-aspect-light.gif new file mode 100644 index 00000000..d6e3416c Binary files /dev/null and b/site/assets/images/extraction-aspect-light.gif differ diff --git a/site/assets/images/extraction-brightness-dark.gif b/site/assets/images/extraction-brightness-dark.gif new file mode 100644 index 00000000..5f4d4b44 Binary files /dev/null and b/site/assets/images/extraction-brightness-dark.gif differ diff --git a/site/assets/images/extraction-brightness-light.gif b/site/assets/images/extraction-brightness-light.gif new file mode 100644 index 00000000..7665bbbd Binary files /dev/null and b/site/assets/images/extraction-brightness-light.gif differ diff --git a/site/assets/images/extraction-contrast-dark.gif b/site/assets/images/extraction-contrast-dark.gif new file mode 100644 index 00000000..39e19f40 Binary files /dev/null and b/site/assets/images/extraction-contrast-dark.gif differ diff --git a/site/assets/images/extraction-contrast-light.gif b/site/assets/images/extraction-contrast-light.gif new file mode 100644 index 00000000..442e0e1a Binary files /dev/null and b/site/assets/images/extraction-contrast-light.gif differ diff --git a/site/assets/images/extraction-entropy-dark.gif b/site/assets/images/extraction-entropy-dark.gif new file mode 100644 index 00000000..dc82e74e Binary files /dev/null and b/site/assets/images/extraction-entropy-dark.gif differ diff --git a/site/assets/images/extraction-entropy-light.gif b/site/assets/images/extraction-entropy-light.gif new file mode 100644 index 00000000..42bcb9a3 Binary files /dev/null and b/site/assets/images/extraction-entropy-light.gif differ diff --git a/site/assets/images/extraction-sharpness-dark.gif b/site/assets/images/extraction-sharpness-dark.gif new file mode 100644 index 00000000..d1ce2d30 Binary files /dev/null and b/site/assets/images/extraction-sharpness-dark.gif differ diff --git a/site/assets/images/extraction-sharpness-light.gif b/site/assets/images/extraction-sharpness-light.gif new file mode 100644 index 00000000..32d82c1c Binary files /dev/null and b/site/assets/images/extraction-sharpness-light.gif differ diff --git a/site/assets/images/extraction-symmetry-dark.gif b/site/assets/images/extraction-symmetry-dark.gif new file mode 100644 index 00000000..251803ce Binary files /dev/null and b/site/assets/images/extraction-symmetry-dark.gif differ diff --git a/site/assets/images/extraction-symmetry-light.gif b/site/assets/images/extraction-symmetry-light.gif new file mode 100644 index 00000000..c426bd48 Binary files /dev/null and b/site/assets/images/extraction-symmetry-light.gif differ diff --git a/site/assets/images/face-recognition.jpg b/site/assets/images/face-recognition.jpg new file mode 100644 index 00000000..5f7d8c77 Binary files /dev/null and b/site/assets/images/face-recognition.jpg differ diff --git a/site/assets/images/favicon.jpg b/site/assets/images/favicon.jpg new file mode 100644 index 00000000..a01265b5 Binary files /dev/null and b/site/assets/images/favicon.jpg differ diff --git a/site/assets/images/favicon.png b/site/assets/images/favicon.png new file mode 100644 index 00000000..4c32c517 Binary files /dev/null and b/site/assets/images/favicon.png differ diff --git a/site/assets/images/fr11.jpg b/site/assets/images/fr11.jpg new file mode 100644 index 00000000..111b1826 Binary files /dev/null and b/site/assets/images/fr11.jpg differ diff --git a/site/assets/images/gallery-audio-dark.png b/site/assets/images/gallery-audio-dark.png new file mode 100644 index 00000000..778e2128 Binary files /dev/null and b/site/assets/images/gallery-audio-dark.png differ diff --git a/site/assets/images/gallery-audio-light.png b/site/assets/images/gallery-audio-light.png new file mode 100644 index 00000000..6483feaa Binary files /dev/null and b/site/assets/images/gallery-audio-light.png differ diff --git a/site/assets/images/gallery-text-dark.png b/site/assets/images/gallery-text-dark.png new file mode 100644 index 00000000..ff190393 Binary files /dev/null and b/site/assets/images/gallery-text-dark.png differ diff --git a/site/assets/images/gallery-text-light.png b/site/assets/images/gallery-text-light.png new file mode 100644 index 00000000..f760e4a1 Binary files /dev/null and b/site/assets/images/gallery-text-light.png differ diff --git a/site/assets/images/gallery-view-dark.png b/site/assets/images/gallery-view-dark.png new file mode 100644 index 00000000..b31c583e Binary files /dev/null and b/site/assets/images/gallery-view-dark.png differ diff --git a/site/assets/images/gallery-view-light.png b/site/assets/images/gallery-view-light.png new file mode 100644 index 00000000..98152593 Binary files /dev/null and b/site/assets/images/gallery-view-light.png differ diff --git a/site/assets/images/hydrated-image-example-dark.png b/site/assets/images/hydrated-image-example-dark.png new file mode 100644 index 00000000..802b215c Binary files /dev/null and b/site/assets/images/hydrated-image-example-dark.png differ diff --git a/site/assets/images/hydrated-image-example-light.png b/site/assets/images/hydrated-image-example-light.png new file mode 100644 index 00000000..ca1e708b Binary files /dev/null and b/site/assets/images/hydrated-image-example-light.png differ diff --git a/site/assets/images/hydrated-text-example-dark.png b/site/assets/images/hydrated-text-example-dark.png new file mode 100644 index 00000000..d38b88ed Binary files /dev/null and b/site/assets/images/hydrated-text-example-dark.png differ diff --git a/site/assets/images/hydrated-text-example-light.png b/site/assets/images/hydrated-text-example-light.png new file mode 100644 index 00000000..60d9d2ca Binary files /dev/null and b/site/assets/images/hydrated-text-example-light.png differ diff --git a/site/assets/images/kolena-banner.png b/site/assets/images/kolena-banner.png new file mode 100644 index 00000000..83eae6ec Binary files /dev/null and b/site/assets/images/kolena-banner.png differ diff --git a/site/assets/images/librispeech-workflow-example.png b/site/assets/images/librispeech-workflow-example.png new file mode 100644 index 00000000..3382adc3 Binary files /dev/null and b/site/assets/images/librispeech-workflow-example.png differ diff --git a/site/assets/images/logo-white.svg b/site/assets/images/logo-white.svg new file mode 100644 index 00000000..4a7eebe3 --- /dev/null +++ b/site/assets/images/logo-white.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/site/assets/images/metric-groups-leaderboard-dark.gif b/site/assets/images/metric-groups-leaderboard-dark.gif new file mode 100644 index 00000000..698c758a Binary files /dev/null and b/site/assets/images/metric-groups-leaderboard-dark.gif differ diff --git a/site/assets/images/metric-groups-leaderboard-light.gif b/site/assets/images/metric-groups-leaderboard-light.gif new file mode 100644 index 00000000..88824cfd Binary files /dev/null and b/site/assets/images/metric-groups-leaderboard-light.gif differ diff --git a/site/assets/images/metrics-ap-ir-example-dark.svg b/site/assets/images/metrics-ap-ir-example-dark.svg new file mode 100644 index 00000000..43a7de3f --- /dev/null +++ b/site/assets/images/metrics-ap-ir-example-dark.svg @@ -0,0 +1 @@ + diff --git a/site/assets/images/metrics-ap-ir-example-light.svg b/site/assets/images/metrics-ap-ir-example-light.svg new file mode 100644 index 00000000..d9adaaed --- /dev/null +++ b/site/assets/images/metrics-ap-ir-example-light.svg @@ -0,0 +1 @@ + diff --git a/site/assets/images/metrics-ap-limitation2-dark.svg b/site/assets/images/metrics-ap-limitation2-dark.svg new file mode 100644 index 00000000..b5849525 --- /dev/null +++ b/site/assets/images/metrics-ap-limitation2-dark.svg @@ -0,0 +1 @@ + diff --git a/site/assets/images/metrics-ap-limitation2-light.svg b/site/assets/images/metrics-ap-limitation2-light.svg new file mode 100644 index 00000000..6681da8f --- /dev/null +++ b/site/assets/images/metrics-ap-limitation2-light.svg @@ -0,0 +1 @@ + diff --git a/site/assets/images/metrics-ap-limitation5-dark.svg b/site/assets/images/metrics-ap-limitation5-dark.svg new file mode 100644 index 00000000..ff9e880f --- /dev/null +++ b/site/assets/images/metrics-ap-limitation5-dark.svg @@ -0,0 +1 @@ + diff --git a/site/assets/images/metrics-ap-limitation5-light.svg b/site/assets/images/metrics-ap-limitation5-light.svg new file mode 100644 index 00000000..96737803 --- /dev/null +++ b/site/assets/images/metrics-ap-limitation5-light.svg @@ -0,0 +1 @@ + diff --git a/site/assets/images/metrics-ap-od-example-dark.svg b/site/assets/images/metrics-ap-od-example-dark.svg new file mode 100644 index 00000000..95c7f308 --- /dev/null +++ b/site/assets/images/metrics-ap-od-example-dark.svg @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-ap-od-example-light.svg b/site/assets/images/metrics-ap-od-example-light.svg new file mode 100644 index 00000000..8e7656b7 --- /dev/null +++ b/site/assets/images/metrics-ap-od-example-light.svg @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-ap-od-pr-11-dark.svg b/site/assets/images/metrics-ap-od-pr-11-dark.svg new file mode 100644 index 00000000..23ffccba --- /dev/null +++ b/site/assets/images/metrics-ap-od-pr-11-dark.svg @@ -0,0 +1 @@ + diff --git a/site/assets/images/metrics-ap-od-pr-11-light.svg b/site/assets/images/metrics-ap-od-pr-11-light.svg new file mode 100644 index 00000000..34d94980 --- /dev/null +++ b/site/assets/images/metrics-ap-od-pr-11-light.svg @@ -0,0 +1 @@ + diff --git a/site/assets/images/metrics-ap-od-pr-dark.svg b/site/assets/images/metrics-ap-od-pr-dark.svg new file mode 100644 index 00000000..876f5f72 --- /dev/null +++ b/site/assets/images/metrics-ap-od-pr-dark.svg @@ -0,0 +1 @@ + diff --git a/site/assets/images/metrics-ap-od-pr-interpolation-dark.svg b/site/assets/images/metrics-ap-od-pr-interpolation-dark.svg new file mode 100644 index 00000000..20e75ba2 --- /dev/null +++ b/site/assets/images/metrics-ap-od-pr-interpolation-dark.svg @@ -0,0 +1 @@ + diff --git a/site/assets/images/metrics-ap-od-pr-interpolation-light.svg b/site/assets/images/metrics-ap-od-pr-interpolation-light.svg new file mode 100644 index 00000000..69fabedd --- /dev/null +++ b/site/assets/images/metrics-ap-od-pr-interpolation-light.svg @@ -0,0 +1 @@ + diff --git a/site/assets/images/metrics-ap-od-pr-light.svg b/site/assets/images/metrics-ap-od-pr-light.svg new file mode 100644 index 00000000..946353b6 --- /dev/null +++ b/site/assets/images/metrics-ap-od-pr-light.svg @@ -0,0 +1 @@ + diff --git a/site/assets/images/metrics-bbox-legend-dark.svg b/site/assets/images/metrics-bbox-legend-dark.svg new file mode 100644 index 00000000..30f2a1af --- /dev/null +++ b/site/assets/images/metrics-bbox-legend-dark.svg @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-bbox-legend-gt-dark.svg b/site/assets/images/metrics-bbox-legend-gt-dark.svg new file mode 100644 index 00000000..ad3e4be5 --- /dev/null +++ b/site/assets/images/metrics-bbox-legend-gt-dark.svg @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-bbox-legend-gt-light.svg b/site/assets/images/metrics-bbox-legend-gt-light.svg new file mode 100644 index 00000000..17f386e9 --- /dev/null +++ b/site/assets/images/metrics-bbox-legend-gt-light.svg @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-bbox-legend-light.svg b/site/assets/images/metrics-bbox-legend-light.svg new file mode 100644 index 00000000..9fa62dae --- /dev/null +++ b/site/assets/images/metrics-bbox-legend-light.svg @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-bbox-legend-unmatched-dark.svg b/site/assets/images/metrics-bbox-legend-unmatched-dark.svg new file mode 100644 index 00000000..5040dbbc --- /dev/null +++ b/site/assets/images/metrics-bbox-legend-unmatched-dark.svg @@ -0,0 +1 @@ + diff --git a/site/assets/images/metrics-bbox-legend-unmatched-light.svg b/site/assets/images/metrics-bbox-legend-unmatched-light.svg new file mode 100644 index 00000000..abb326d0 --- /dev/null +++ b/site/assets/images/metrics-bbox-legend-unmatched-light.svg @@ -0,0 +1 @@ + diff --git a/site/assets/images/metrics-bert-computation-dark.svg b/site/assets/images/metrics-bert-computation-dark.svg new file mode 100644 index 00000000..26bd9684 --- /dev/null +++ b/site/assets/images/metrics-bert-computation-dark.svg @@ -0,0 +1,2907 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-bert-computation-light.svg b/site/assets/images/metrics-bert-computation-light.svg new file mode 100644 index 00000000..65eb4579 --- /dev/null +++ b/site/assets/images/metrics-bert-computation-light.svg @@ -0,0 +1,2848 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-bert-vector-space-dark.svg b/site/assets/images/metrics-bert-vector-space-dark.svg new file mode 100644 index 00000000..54fbbe31 --- /dev/null +++ b/site/assets/images/metrics-bert-vector-space-dark.svg @@ -0,0 +1,336 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-bert-vector-space-light.svg b/site/assets/images/metrics-bert-vector-space-light.svg new file mode 100644 index 00000000..c0c3af19 --- /dev/null +++ b/site/assets/images/metrics-bert-vector-space-light.svg @@ -0,0 +1,626 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-confusion-matrix-dark.png b/site/assets/images/metrics-confusion-matrix-dark.png new file mode 100644 index 00000000..5bc0aef7 Binary files /dev/null and b/site/assets/images/metrics-confusion-matrix-dark.png differ diff --git a/site/assets/images/metrics-confusion-matrix-light.png b/site/assets/images/metrics-confusion-matrix-light.png new file mode 100644 index 00000000..a9bedafb Binary files /dev/null and b/site/assets/images/metrics-confusion-matrix-light.png differ diff --git a/site/assets/images/metrics-confusion-matrix-normalized-dark.png b/site/assets/images/metrics-confusion-matrix-normalized-dark.png new file mode 100644 index 00000000..3f6e73c4 Binary files /dev/null and b/site/assets/images/metrics-confusion-matrix-normalized-dark.png differ diff --git a/site/assets/images/metrics-confusion-matrix-normalized-light.png b/site/assets/images/metrics-confusion-matrix-normalized-light.png new file mode 100644 index 00000000..83f42e24 Binary files /dev/null and b/site/assets/images/metrics-confusion-matrix-normalized-light.png differ diff --git a/site/assets/images/metrics-confusion-matrix-steps.gif b/site/assets/images/metrics-confusion-matrix-steps.gif new file mode 100644 index 00000000..d83b3719 Binary files /dev/null and b/site/assets/images/metrics-confusion-matrix-steps.gif differ diff --git a/site/assets/images/metrics-der-example1.png b/site/assets/images/metrics-der-example1.png new file mode 100644 index 00000000..93107124 Binary files /dev/null and b/site/assets/images/metrics-der-example1.png differ diff --git a/site/assets/images/metrics-der-example2.png b/site/assets/images/metrics-der-example2.png new file mode 100644 index 00000000..68291416 Binary files /dev/null and b/site/assets/images/metrics-der-example2.png differ diff --git a/site/assets/images/metrics-fpr-dark.svg b/site/assets/images/metrics-fpr-dark.svg new file mode 100644 index 00000000..817e2192 --- /dev/null +++ b/site/assets/images/metrics-fpr-dark.svg @@ -0,0 +1,250 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-fpr-light.svg b/site/assets/images/metrics-fpr-light.svg new file mode 100644 index 00000000..34e32e22 --- /dev/null +++ b/site/assets/images/metrics-fpr-light.svg @@ -0,0 +1,247 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-iou-2dbbox-dark.svg b/site/assets/images/metrics-iou-2dbbox-dark.svg new file mode 100644 index 00000000..f42243ae --- /dev/null +++ b/site/assets/images/metrics-iou-2dbbox-dark.svg @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-iou-2dbbox-light.svg b/site/assets/images/metrics-iou-2dbbox-light.svg new file mode 100644 index 00000000..d99e3478 --- /dev/null +++ b/site/assets/images/metrics-iou-2dbbox-light.svg @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-iou-example1-dark.svg b/site/assets/images/metrics-iou-example1-dark.svg new file mode 100644 index 00000000..8903dde3 --- /dev/null +++ b/site/assets/images/metrics-iou-example1-dark.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-iou-example1-light.svg b/site/assets/images/metrics-iou-example1-light.svg new file mode 100644 index 00000000..e1989a2a --- /dev/null +++ b/site/assets/images/metrics-iou-example1-light.svg @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-iou-example2-dark.svg b/site/assets/images/metrics-iou-example2-dark.svg new file mode 100644 index 00000000..e8644537 --- /dev/null +++ b/site/assets/images/metrics-iou-example2-dark.svg @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-iou-example2-light.svg b/site/assets/images/metrics-iou-example2-light.svg new file mode 100644 index 00000000..8461af40 --- /dev/null +++ b/site/assets/images/metrics-iou-example2-light.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-iou-example3-dark.svg b/site/assets/images/metrics-iou-example3-dark.svg new file mode 100644 index 00000000..2c7008b6 --- /dev/null +++ b/site/assets/images/metrics-iou-example3-dark.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-iou-example3-light.svg b/site/assets/images/metrics-iou-example3-light.svg new file mode 100644 index 00000000..914fcdc8 --- /dev/null +++ b/site/assets/images/metrics-iou-example3-light.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-iou-seg-mask-results.png b/site/assets/images/metrics-iou-seg-mask-results.png new file mode 100644 index 00000000..5479ad10 Binary files /dev/null and b/site/assets/images/metrics-iou-seg-mask-results.png differ diff --git a/site/assets/images/metrics-iou-seg-mask.png b/site/assets/images/metrics-iou-seg-mask.png new file mode 100644 index 00000000..077941b3 Binary files /dev/null and b/site/assets/images/metrics-iou-seg-mask.png differ diff --git a/site/assets/images/metrics-matcher-example1-dark.svg b/site/assets/images/metrics-matcher-example1-dark.svg new file mode 100644 index 00000000..d4004dad --- /dev/null +++ b/site/assets/images/metrics-matcher-example1-dark.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-matcher-example1-light.svg b/site/assets/images/metrics-matcher-example1-light.svg new file mode 100644 index 00000000..206e527e --- /dev/null +++ b/site/assets/images/metrics-matcher-example1-light.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-matcher-example2-dark.svg b/site/assets/images/metrics-matcher-example2-dark.svg new file mode 100644 index 00000000..4b3e1455 --- /dev/null +++ b/site/assets/images/metrics-matcher-example2-dark.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-matcher-example2-light.svg b/site/assets/images/metrics-matcher-example2-light.svg new file mode 100644 index 00000000..b5ae84ee --- /dev/null +++ b/site/assets/images/metrics-matcher-example2-light.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-matcher-example3-dark.svg b/site/assets/images/metrics-matcher-example3-dark.svg new file mode 100644 index 00000000..28e51ffb --- /dev/null +++ b/site/assets/images/metrics-matcher-example3-dark.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-matcher-example3-light.svg b/site/assets/images/metrics-matcher-example3-light.svg new file mode 100644 index 00000000..2a38d994 --- /dev/null +++ b/site/assets/images/metrics-matcher-example3-light.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-matcher-example4-dark.svg b/site/assets/images/metrics-matcher-example4-dark.svg new file mode 100644 index 00000000..5a9c7d0f --- /dev/null +++ b/site/assets/images/metrics-matcher-example4-dark.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-matcher-example4-light.svg b/site/assets/images/metrics-matcher-example4-light.svg new file mode 100644 index 00000000..79863c39 --- /dev/null +++ b/site/assets/images/metrics-matcher-example4-light.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-matcher-greedy-matching-dark.svg b/site/assets/images/metrics-matcher-greedy-matching-dark.svg new file mode 100644 index 00000000..722d3033 --- /dev/null +++ b/site/assets/images/metrics-matcher-greedy-matching-dark.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-matcher-greedy-matching-light.svg b/site/assets/images/metrics-matcher-greedy-matching-light.svg new file mode 100644 index 00000000..f195d0c1 --- /dev/null +++ b/site/assets/images/metrics-matcher-greedy-matching-light.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-matcher-gt-order-dark.svg b/site/assets/images/metrics-matcher-gt-order-dark.svg new file mode 100644 index 00000000..9cd6fa19 --- /dev/null +++ b/site/assets/images/metrics-matcher-gt-order-dark.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-matcher-gt-order-light.svg b/site/assets/images/metrics-matcher-gt-order-light.svg new file mode 100644 index 00000000..af5d1196 --- /dev/null +++ b/site/assets/images/metrics-matcher-gt-order-light.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-matcher-oid-group-of.jpg b/site/assets/images/metrics-matcher-oid-group-of.jpg new file mode 100644 index 00000000..516099a3 Binary files /dev/null and b/site/assets/images/metrics-matcher-oid-group-of.jpg differ diff --git a/site/assets/images/metrics-matcher-oid-non-exhaustive.jpg b/site/assets/images/metrics-matcher-oid-non-exhaustive.jpg new file mode 100644 index 00000000..04108fdb Binary files /dev/null and b/site/assets/images/metrics-matcher-oid-non-exhaustive.jpg differ diff --git a/site/assets/images/metrics-prcurve-dark.png b/site/assets/images/metrics-prcurve-dark.png new file mode 100644 index 00000000..4aa229f5 Binary files /dev/null and b/site/assets/images/metrics-prcurve-dark.png differ diff --git a/site/assets/images/metrics-prcurve-example-dark.png b/site/assets/images/metrics-prcurve-example-dark.png new file mode 100644 index 00000000..6dfd246c Binary files /dev/null and b/site/assets/images/metrics-prcurve-example-dark.png differ diff --git a/site/assets/images/metrics-prcurve-example-light.png b/site/assets/images/metrics-prcurve-example-light.png new file mode 100644 index 00000000..cfd2dc1f Binary files /dev/null and b/site/assets/images/metrics-prcurve-example-light.png differ diff --git a/site/assets/images/metrics-prcurve-example-multiclass-dark.png b/site/assets/images/metrics-prcurve-example-multiclass-dark.png new file mode 100644 index 00000000..33a82758 Binary files /dev/null and b/site/assets/images/metrics-prcurve-example-multiclass-dark.png differ diff --git a/site/assets/images/metrics-prcurve-example-multiclass-light.png b/site/assets/images/metrics-prcurve-example-multiclass-light.png new file mode 100644 index 00000000..19519724 Binary files /dev/null and b/site/assets/images/metrics-prcurve-example-multiclass-light.png differ diff --git a/site/assets/images/metrics-prcurve-light.png b/site/assets/images/metrics-prcurve-light.png new file mode 100644 index 00000000..df2b0702 Binary files /dev/null and b/site/assets/images/metrics-prcurve-light.png differ diff --git a/site/assets/images/metrics-precision-dark.svg b/site/assets/images/metrics-precision-dark.svg new file mode 100644 index 00000000..8142777b --- /dev/null +++ b/site/assets/images/metrics-precision-dark.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-precision-light.svg b/site/assets/images/metrics-precision-light.svg new file mode 100644 index 00000000..0d993abd --- /dev/null +++ b/site/assets/images/metrics-precision-light.svg @@ -0,0 +1,285 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-recall-dark.svg b/site/assets/images/metrics-recall-dark.svg new file mode 100644 index 00000000..76460b93 --- /dev/null +++ b/site/assets/images/metrics-recall-dark.svg @@ -0,0 +1,262 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-recall-light.svg b/site/assets/images/metrics-recall-light.svg new file mode 100644 index 00000000..40dabfee --- /dev/null +++ b/site/assets/images/metrics-recall-light.svg @@ -0,0 +1,259 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-roccurve-example-dark.png b/site/assets/images/metrics-roccurve-example-dark.png new file mode 100644 index 00000000..9ccc4918 Binary files /dev/null and b/site/assets/images/metrics-roccurve-example-dark.png differ diff --git a/site/assets/images/metrics-roccurve-example-light.png b/site/assets/images/metrics-roccurve-example-light.png new file mode 100644 index 00000000..169d37e5 Binary files /dev/null and b/site/assets/images/metrics-roccurve-example-light.png differ diff --git a/site/assets/images/metrics-roccurve-example-multiclass-dark.png b/site/assets/images/metrics-roccurve-example-multiclass-dark.png new file mode 100644 index 00000000..ea475367 Binary files /dev/null and b/site/assets/images/metrics-roccurve-example-multiclass-dark.png differ diff --git a/site/assets/images/metrics-roccurve-example-multiclass-light.png b/site/assets/images/metrics-roccurve-example-multiclass-light.png new file mode 100644 index 00000000..6e4eb171 Binary files /dev/null and b/site/assets/images/metrics-roccurve-example-multiclass-light.png differ diff --git a/site/assets/images/metrics-specificity-dark.svg b/site/assets/images/metrics-specificity-dark.svg new file mode 100644 index 00000000..4568339c --- /dev/null +++ b/site/assets/images/metrics-specificity-dark.svg @@ -0,0 +1,290 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/metrics-specificity-light.svg b/site/assets/images/metrics-specificity-light.svg new file mode 100644 index 00000000..5ee1833c --- /dev/null +++ b/site/assets/images/metrics-specificity-light.svg @@ -0,0 +1,287 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/images/navigate-to-image-extraction-config-dark.gif b/site/assets/images/navigate-to-image-extraction-config-dark.gif new file mode 100644 index 00000000..9490d9af Binary files /dev/null and b/site/assets/images/navigate-to-image-extraction-config-dark.gif differ diff --git a/site/assets/images/navigate-to-image-extraction-config-light.gif b/site/assets/images/navigate-to-image-extraction-config-light.gif new file mode 100644 index 00000000..499069f7 Binary files /dev/null and b/site/assets/images/navigate-to-image-extraction-config-light.gif differ diff --git a/site/assets/images/navigate-to-text-extraction-config-dark.gif b/site/assets/images/navigate-to-text-extraction-config-dark.gif new file mode 100644 index 00000000..eab9a777 Binary files /dev/null and b/site/assets/images/navigate-to-text-extraction-config-dark.gif differ diff --git a/site/assets/images/navigate-to-text-extraction-config-light.gif b/site/assets/images/navigate-to-text-extraction-config-light.gif new file mode 100644 index 00000000..be47629e Binary files /dev/null and b/site/assets/images/navigate-to-text-extraction-config-light.gif differ diff --git a/site/assets/images/nesting-test-case-metrics-dark.jpg b/site/assets/images/nesting-test-case-metrics-dark.jpg new file mode 100644 index 00000000..039f369c Binary files /dev/null and b/site/assets/images/nesting-test-case-metrics-dark.jpg differ diff --git a/site/assets/images/nesting-test-case-metrics-light.jpg b/site/assets/images/nesting-test-case-metrics-light.jpg new file mode 100644 index 00000000..6130753a Binary files /dev/null and b/site/assets/images/nesting-test-case-metrics-light.jpg differ diff --git a/site/assets/images/numeric-aggregation-optins.png b/site/assets/images/numeric-aggregation-optins.png new file mode 100644 index 00000000..a2985556 Binary files /dev/null and b/site/assets/images/numeric-aggregation-optins.png differ diff --git a/site/assets/images/prompt-extraction-access-dark.gif b/site/assets/images/prompt-extraction-access-dark.gif new file mode 100644 index 00000000..fd2e5033 Binary files /dev/null and b/site/assets/images/prompt-extraction-access-dark.gif differ diff --git a/site/assets/images/prompt-extraction-access-light.gif b/site/assets/images/prompt-extraction-access-light.gif new file mode 100644 index 00000000..ed684bd0 Binary files /dev/null and b/site/assets/images/prompt-extraction-access-light.gif differ diff --git a/site/assets/images/quality_standard_diagram_dark.jpeg b/site/assets/images/quality_standard_diagram_dark.jpeg new file mode 100644 index 00000000..08ce081e Binary files /dev/null and b/site/assets/images/quality_standard_diagram_dark.jpeg differ diff --git a/site/assets/images/quality_standard_diagram_light.jpeg b/site/assets/images/quality_standard_diagram_light.jpeg new file mode 100644 index 00000000..5f202a21 Binary files /dev/null and b/site/assets/images/quality_standard_diagram_light.jpeg differ diff --git a/site/assets/images/quickstart-compare-models-light.gif b/site/assets/images/quickstart-compare-models-light.gif new file mode 100644 index 00000000..ea91ac1f Binary files /dev/null and b/site/assets/images/quickstart-compare-models-light.gif differ diff --git a/site/assets/images/quickstart-compare-models.gif b/site/assets/images/quickstart-compare-models.gif new file mode 100644 index 00000000..3fc02e5c Binary files /dev/null and b/site/assets/images/quickstart-compare-models.gif differ diff --git a/site/assets/images/quickstart-configure-metrics-light.gif b/site/assets/images/quickstart-configure-metrics-light.gif new file mode 100644 index 00000000..9bcb1255 Binary files /dev/null and b/site/assets/images/quickstart-configure-metrics-light.gif differ diff --git a/site/assets/images/quickstart-configure-metrics.gif b/site/assets/images/quickstart-configure-metrics.gif new file mode 100644 index 00000000..4b7971a0 Binary files /dev/null and b/site/assets/images/quickstart-configure-metrics.gif differ diff --git a/site/assets/images/quickstart-create-test-cases.gif b/site/assets/images/quickstart-create-test-cases.gif new file mode 100644 index 00000000..40578bcc Binary files /dev/null and b/site/assets/images/quickstart-create-test-cases.gif differ diff --git a/site/assets/images/quickstart-define-metrics.gif b/site/assets/images/quickstart-define-metrics.gif new file mode 100644 index 00000000..543c5606 Binary files /dev/null and b/site/assets/images/quickstart-define-metrics.gif differ diff --git a/site/assets/images/quickstart-distribution-light.png b/site/assets/images/quickstart-distribution-light.png new file mode 100644 index 00000000..48e3d957 Binary files /dev/null and b/site/assets/images/quickstart-distribution-light.png differ diff --git a/site/assets/images/quickstart-distribution.jpg b/site/assets/images/quickstart-distribution.jpg new file mode 100644 index 00000000..9a4b5873 Binary files /dev/null and b/site/assets/images/quickstart-distribution.jpg differ diff --git a/site/assets/images/quickstart-otf-plotting-light.gif b/site/assets/images/quickstart-otf-plotting-light.gif new file mode 100644 index 00000000..1cdc6528 Binary files /dev/null and b/site/assets/images/quickstart-otf-plotting-light.gif differ diff --git a/site/assets/images/quickstart-otf-plotting.gif b/site/assets/images/quickstart-otf-plotting.gif new file mode 100644 index 00000000..3da0ca9b Binary files /dev/null and b/site/assets/images/quickstart-otf-plotting.gif differ diff --git a/site/assets/images/quickstart-upload-dataset-workflow-dark.gif b/site/assets/images/quickstart-upload-dataset-workflow-dark.gif new file mode 100644 index 00000000..9ed62111 Binary files /dev/null and b/site/assets/images/quickstart-upload-dataset-workflow-dark.gif differ diff --git a/site/assets/images/quickstart-upload-dataset-workflow-light.gif b/site/assets/images/quickstart-upload-dataset-workflow-light.gif new file mode 100644 index 00000000..02929c08 Binary files /dev/null and b/site/assets/images/quickstart-upload-dataset-workflow-light.gif differ diff --git a/site/assets/images/quickstart-upload-dataset-workflow.gif b/site/assets/images/quickstart-upload-dataset-workflow.gif new file mode 100644 index 00000000..045a057d Binary files /dev/null and b/site/assets/images/quickstart-upload-dataset-workflow.gif differ diff --git a/site/assets/images/quickstart-upload-results-workflow-light.gif b/site/assets/images/quickstart-upload-results-workflow-light.gif new file mode 100644 index 00000000..dc2c0cbe Binary files /dev/null and b/site/assets/images/quickstart-upload-results-workflow-light.gif differ diff --git a/site/assets/images/quickstart-upload-results-workflow.gif b/site/assets/images/quickstart-upload-results-workflow.gif new file mode 100644 index 00000000..0c77ca84 Binary files /dev/null and b/site/assets/images/quickstart-upload-results-workflow.gif differ diff --git a/site/assets/images/select-image-extraction-properties-dark.gif b/site/assets/images/select-image-extraction-properties-dark.gif new file mode 100644 index 00000000..7817147f Binary files /dev/null and b/site/assets/images/select-image-extraction-properties-dark.gif differ diff --git a/site/assets/images/select-image-extraction-properties-light.gif b/site/assets/images/select-image-extraction-properties-light.gif new file mode 100644 index 00000000..56885a4a Binary files /dev/null and b/site/assets/images/select-image-extraction-properties-light.gif differ diff --git a/site/assets/images/select-text-extraction-properties-dark.gif b/site/assets/images/select-text-extraction-properties-dark.gif new file mode 100644 index 00000000..707ac499 Binary files /dev/null and b/site/assets/images/select-text-extraction-properties-dark.gif differ diff --git a/site/assets/images/select-text-extraction-properties-light.gif b/site/assets/images/select-text-extraction-properties-light.gif new file mode 100644 index 00000000..534c7d41 Binary files /dev/null and b/site/assets/images/select-text-extraction-properties-light.gif differ diff --git a/site/assets/images/social/core-concepts/index.png b/site/assets/images/social/core-concepts/index.png new file mode 100644 index 00000000..fa56ddfb Binary files /dev/null and b/site/assets/images/social/core-concepts/index.png differ diff --git a/site/assets/images/social/index.png b/site/assets/images/social/index.png new file mode 100644 index 00000000..55e0068f Binary files /dev/null and b/site/assets/images/social/index.png differ diff --git a/site/assets/images/social/installing.png b/site/assets/images/social/installing.png new file mode 100644 index 00000000..e158c049 Binary files /dev/null and b/site/assets/images/social/installing.png differ diff --git a/site/assets/images/social/quickstart.png b/site/assets/images/social/quickstart.png new file mode 100644 index 00000000..0f4e99b3 Binary files /dev/null and b/site/assets/images/social/quickstart.png differ diff --git a/site/assets/images/speaker-diarization-example.png b/site/assets/images/speaker-diarization-example.png new file mode 100644 index 00000000..09334eeb Binary files /dev/null and b/site/assets/images/speaker-diarization-example.png differ diff --git a/site/assets/images/statistical-significance-demo-dark.gif b/site/assets/images/statistical-significance-demo-dark.gif new file mode 100644 index 00000000..c55fd3f5 Binary files /dev/null and b/site/assets/images/statistical-significance-demo-dark.gif differ diff --git a/site/assets/images/statistical-significance-demo-light.gif b/site/assets/images/statistical-significance-demo-light.gif new file mode 100644 index 00000000..a542795f Binary files /dev/null and b/site/assets/images/statistical-significance-demo-light.gif differ diff --git a/site/assets/images/tabular-audio-dark.png b/site/assets/images/tabular-audio-dark.png new file mode 100644 index 00000000..bb1832a0 Binary files /dev/null and b/site/assets/images/tabular-audio-dark.png differ diff --git a/site/assets/images/tabular-audio-light.png b/site/assets/images/tabular-audio-light.png new file mode 100644 index 00000000..2eb93c7c Binary files /dev/null and b/site/assets/images/tabular-audio-light.png differ diff --git a/site/assets/images/tabular-text-dark.png b/site/assets/images/tabular-text-dark.png new file mode 100644 index 00000000..fdd871ea Binary files /dev/null and b/site/assets/images/tabular-text-dark.png differ diff --git a/site/assets/images/tabular-text-light.png b/site/assets/images/tabular-text-light.png new file mode 100644 index 00000000..51c6ecbf Binary files /dev/null and b/site/assets/images/tabular-text-light.png differ diff --git a/site/assets/images/task-metrics-binary-classification-light.gif b/site/assets/images/task-metrics-binary-classification-light.gif new file mode 100644 index 00000000..2d25734f Binary files /dev/null and b/site/assets/images/task-metrics-binary-classification-light.gif differ diff --git a/site/assets/images/task-metrics-binary-classification.gif b/site/assets/images/task-metrics-binary-classification.gif new file mode 100644 index 00000000..149a170b Binary files /dev/null and b/site/assets/images/task-metrics-binary-classification.gif differ diff --git a/site/assets/images/task-metrics-multiclass-classification-light.gif b/site/assets/images/task-metrics-multiclass-classification-light.gif new file mode 100644 index 00000000..acb290bf Binary files /dev/null and b/site/assets/images/task-metrics-multiclass-classification-light.gif differ diff --git a/site/assets/images/task-metrics-multiclass-classification.gif b/site/assets/images/task-metrics-multiclass-classification.gif new file mode 100644 index 00000000..1e70fb38 Binary files /dev/null and b/site/assets/images/task-metrics-multiclass-classification.gif differ diff --git a/site/assets/images/task-metrics-object-detection-light.gif b/site/assets/images/task-metrics-object-detection-light.gif new file mode 100644 index 00000000..f2ba3a24 Binary files /dev/null and b/site/assets/images/task-metrics-object-detection-light.gif differ diff --git a/site/assets/images/task-metrics-object-detection.gif b/site/assets/images/task-metrics-object-detection.gif new file mode 100644 index 00000000..66bbdb74 Binary files /dev/null and b/site/assets/images/task-metrics-object-detection.gif differ diff --git a/site/assets/images/task-metrics-regression-light.gif b/site/assets/images/task-metrics-regression-light.gif new file mode 100644 index 00000000..6ac077de Binary files /dev/null and b/site/assets/images/task-metrics-regression-light.gif differ diff --git a/site/assets/images/task-metrics-regression.gif b/site/assets/images/task-metrics-regression.gif new file mode 100644 index 00000000..4be34f85 Binary files /dev/null and b/site/assets/images/task-metrics-regression.gif differ diff --git a/site/assets/images/task-od-debugger-dark.png b/site/assets/images/task-od-debugger-dark.png new file mode 100644 index 00000000..75052260 Binary files /dev/null and b/site/assets/images/task-od-debugger-dark.png differ diff --git a/site/assets/images/task-od-debugger-light.png b/site/assets/images/task-od-debugger-light.png new file mode 100644 index 00000000..46214034 Binary files /dev/null and b/site/assets/images/task-od-debugger-light.png differ diff --git a/site/assets/images/task-od-evaluation-config-dark.gif b/site/assets/images/task-od-evaluation-config-dark.gif new file mode 100644 index 00000000..2aac0efd Binary files /dev/null and b/site/assets/images/task-od-evaluation-config-dark.gif differ diff --git a/site/assets/images/task-od-evaluation-config-light.gif b/site/assets/images/task-od-evaluation-config-light.gif new file mode 100644 index 00000000..1780cc2c Binary files /dev/null and b/site/assets/images/task-od-evaluation-config-light.gif differ diff --git a/site/assets/images/task-od-make-dataset-dark.gif b/site/assets/images/task-od-make-dataset-dark.gif new file mode 100644 index 00000000..5237befa Binary files /dev/null and b/site/assets/images/task-od-make-dataset-dark.gif differ diff --git a/site/assets/images/task-od-make-dataset-light.gif b/site/assets/images/task-od-make-dataset-light.gif new file mode 100644 index 00000000..40fa8d22 Binary files /dev/null and b/site/assets/images/task-od-make-dataset-light.gif differ diff --git a/site/assets/images/task-od-model-config-dark.png b/site/assets/images/task-od-model-config-dark.png new file mode 100644 index 00000000..1787464c Binary files /dev/null and b/site/assets/images/task-od-model-config-dark.png differ diff --git a/site/assets/images/task-od-model-config-light.png b/site/assets/images/task-od-model-config-light.png new file mode 100644 index 00000000..dfbbccfe Binary files /dev/null and b/site/assets/images/task-od-model-config-light.png differ diff --git a/site/assets/images/task-od-multiclass.png b/site/assets/images/task-od-multiclass.png new file mode 100644 index 00000000..5c73573e Binary files /dev/null and b/site/assets/images/task-od-multiclass.png differ diff --git a/site/assets/images/task-od-prcurve-dark.png b/site/assets/images/task-od-prcurve-dark.png new file mode 100644 index 00000000..a2d9263e Binary files /dev/null and b/site/assets/images/task-od-prcurve-dark.png differ diff --git a/site/assets/images/task-od-prcurve-light.png b/site/assets/images/task-od-prcurve-light.png new file mode 100644 index 00000000..8d69cf88 Binary files /dev/null and b/site/assets/images/task-od-prcurve-light.png differ diff --git a/site/assets/images/task-od-qs-dark.gif b/site/assets/images/task-od-qs-dark.gif new file mode 100644 index 00000000..9bbd18e6 Binary files /dev/null and b/site/assets/images/task-od-qs-dark.gif differ diff --git a/site/assets/images/task-od-qs-dark.png b/site/assets/images/task-od-qs-dark.png new file mode 100644 index 00000000..8ecb66af Binary files /dev/null and b/site/assets/images/task-od-qs-dark.png differ diff --git a/site/assets/images/task-od-qs-light.gif b/site/assets/images/task-od-qs-light.gif new file mode 100644 index 00000000..b67fdd09 Binary files /dev/null and b/site/assets/images/task-od-qs-light.gif differ diff --git a/site/assets/images/task-od-qs-light.png b/site/assets/images/task-od-qs-light.png new file mode 100644 index 00000000..3de544ff Binary files /dev/null and b/site/assets/images/task-od-qs-light.png differ diff --git a/site/assets/images/task-od-upload-results-dark.gif b/site/assets/images/task-od-upload-results-dark.gif new file mode 100644 index 00000000..f47036ec Binary files /dev/null and b/site/assets/images/task-od-upload-results-dark.gif differ diff --git a/site/assets/images/task-od-upload-results-light.gif b/site/assets/images/task-od-upload-results-light.gif new file mode 100644 index 00000000..0c7c27c9 Binary files /dev/null and b/site/assets/images/task-od-upload-results-light.gif differ diff --git a/site/assets/images/test-case-diff-dark.png b/site/assets/images/test-case-diff-dark.png new file mode 100644 index 00000000..d556ec55 Binary files /dev/null and b/site/assets/images/test-case-diff-dark.png differ diff --git a/site/assets/images/test-case-diff-light.png b/site/assets/images/test-case-diff-light.png new file mode 100644 index 00000000..d66bbd06 Binary files /dev/null and b/site/assets/images/test-case-diff-light.png differ diff --git a/site/assets/images/thresholded-metrics-dark.gif b/site/assets/images/thresholded-metrics-dark.gif new file mode 100644 index 00000000..a2cabe81 Binary files /dev/null and b/site/assets/images/thresholded-metrics-dark.gif differ diff --git a/site/assets/images/thresholded-metrics-light.gif b/site/assets/images/thresholded-metrics-light.gif new file mode 100644 index 00000000..f5f1a2d2 Binary files /dev/null and b/site/assets/images/thresholded-metrics-light.gif differ diff --git a/site/assets/images/thresholded-plots-dark.gif b/site/assets/images/thresholded-plots-dark.gif new file mode 100644 index 00000000..a4ed43ad Binary files /dev/null and b/site/assets/images/thresholded-plots-dark.gif differ diff --git a/site/assets/images/thresholded-plots-light.gif b/site/assets/images/thresholded-plots-light.gif new file mode 100644 index 00000000..9b394116 Binary files /dev/null and b/site/assets/images/thresholded-plots-light.gif differ diff --git a/site/assets/images/upload-embeddings-enable.gif b/site/assets/images/upload-embeddings-enable.gif new file mode 100644 index 00000000..cd4be828 Binary files /dev/null and b/site/assets/images/upload-embeddings-enable.gif differ diff --git a/site/assets/images/use-case-crossing-pedestrian.png b/site/assets/images/use-case-crossing-pedestrian.png new file mode 100644 index 00000000..bb8a8289 Binary files /dev/null and b/site/assets/images/use-case-crossing-pedestrian.png differ diff --git a/site/assets/images/use-case-instance-segmentation.png b/site/assets/images/use-case-instance-segmentation.png new file mode 100644 index 00000000..be4f025e Binary files /dev/null and b/site/assets/images/use-case-instance-segmentation.png differ diff --git a/site/assets/images/wordmark-violet.svg b/site/assets/images/wordmark-violet.svg new file mode 100644 index 00000000..c6e6c3d7 --- /dev/null +++ b/site/assets/images/wordmark-violet.svg @@ -0,0 +1 @@ + diff --git a/site/assets/images/wordmark-white.svg b/site/assets/images/wordmark-white.svg new file mode 100644 index 00000000..bbf3a893 --- /dev/null +++ b/site/assets/images/wordmark-white.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + diff --git a/site/assets/javascript/mathjax.js b/site/assets/javascript/mathjax.js new file mode 100644 index 00000000..9c507b37 --- /dev/null +++ b/site/assets/javascript/mathjax.js @@ -0,0 +1,17 @@ +window.MathJax = { + tex: { + inlineMath: [["\\(", "\\)"]], + displayMath: [["\\[", "\\]"]], + processEscapes: true, + processEnvironments: true + }, + options: { + ignoreHtmlClass: ".*|", + processHtmlClass: "arithmatex", + enableMenu: false + } +}; + +document$.subscribe(() => { + MathJax.typesetPromise() +}) diff --git a/site/assets/javascripts/bundle.5090c770.min.js b/site/assets/javascripts/bundle.5090c770.min.js new file mode 100644 index 00000000..9c639ed9 --- /dev/null +++ b/site/assets/javascripts/bundle.5090c770.min.js @@ -0,0 +1,16 @@ +"use strict";(()=>{var Wi=Object.create;var gr=Object.defineProperty;var Di=Object.getOwnPropertyDescriptor;var Vi=Object.getOwnPropertyNames,Vt=Object.getOwnPropertySymbols,Ni=Object.getPrototypeOf,yr=Object.prototype.hasOwnProperty,ao=Object.prototype.propertyIsEnumerable;var io=(e,t,r)=>t in e?gr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,$=(e,t)=>{for(var r in t||(t={}))yr.call(t,r)&&io(e,r,t[r]);if(Vt)for(var r of Vt(t))ao.call(t,r)&&io(e,r,t[r]);return e};var so=(e,t)=>{var r={};for(var o in e)yr.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&Vt)for(var o of Vt(e))t.indexOf(o)<0&&ao.call(e,o)&&(r[o]=e[o]);return r};var xr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var zi=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Vi(t))!yr.call(e,n)&&n!==r&&gr(e,n,{get:()=>t[n],enumerable:!(o=Di(t,n))||o.enumerable});return e};var Mt=(e,t,r)=>(r=e!=null?Wi(Ni(e)):{},zi(t||!e||!e.__esModule?gr(r,"default",{value:e,enumerable:!0}):r,e));var co=(e,t,r)=>new Promise((o,n)=>{var i=p=>{try{s(r.next(p))}catch(c){n(c)}},a=p=>{try{s(r.throw(p))}catch(c){n(c)}},s=p=>p.done?o(p.value):Promise.resolve(p.value).then(i,a);s((r=r.apply(e,t)).next())});var lo=xr((Er,po)=>{(function(e,t){typeof Er=="object"&&typeof po!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(Er,function(){"use strict";function e(r){var o=!0,n=!1,i=null,a={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function s(k){return!!(k&&k!==document&&k.nodeName!=="HTML"&&k.nodeName!=="BODY"&&"classList"in k&&"contains"in k.classList)}function p(k){var ft=k.type,qe=k.tagName;return!!(qe==="INPUT"&&a[ft]&&!k.readOnly||qe==="TEXTAREA"&&!k.readOnly||k.isContentEditable)}function c(k){k.classList.contains("focus-visible")||(k.classList.add("focus-visible"),k.setAttribute("data-focus-visible-added",""))}function l(k){k.hasAttribute("data-focus-visible-added")&&(k.classList.remove("focus-visible"),k.removeAttribute("data-focus-visible-added"))}function f(k){k.metaKey||k.altKey||k.ctrlKey||(s(r.activeElement)&&c(r.activeElement),o=!0)}function u(k){o=!1}function d(k){s(k.target)&&(o||p(k.target))&&c(k.target)}function y(k){s(k.target)&&(k.target.classList.contains("focus-visible")||k.target.hasAttribute("data-focus-visible-added"))&&(n=!0,window.clearTimeout(i),i=window.setTimeout(function(){n=!1},100),l(k.target))}function L(k){document.visibilityState==="hidden"&&(n&&(o=!0),X())}function X(){document.addEventListener("mousemove",J),document.addEventListener("mousedown",J),document.addEventListener("mouseup",J),document.addEventListener("pointermove",J),document.addEventListener("pointerdown",J),document.addEventListener("pointerup",J),document.addEventListener("touchmove",J),document.addEventListener("touchstart",J),document.addEventListener("touchend",J)}function ee(){document.removeEventListener("mousemove",J),document.removeEventListener("mousedown",J),document.removeEventListener("mouseup",J),document.removeEventListener("pointermove",J),document.removeEventListener("pointerdown",J),document.removeEventListener("pointerup",J),document.removeEventListener("touchmove",J),document.removeEventListener("touchstart",J),document.removeEventListener("touchend",J)}function J(k){k.target.nodeName&&k.target.nodeName.toLowerCase()==="html"||(o=!1,ee())}document.addEventListener("keydown",f,!0),document.addEventListener("mousedown",u,!0),document.addEventListener("pointerdown",u,!0),document.addEventListener("touchstart",u,!0),document.addEventListener("visibilitychange",L,!0),X(),r.addEventListener("focus",d,!0),r.addEventListener("blur",y,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var qr=xr((hy,On)=>{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var $a=/["'&<>]/;On.exports=Pa;function Pa(e){var t=""+e,r=$a.exec(t);if(!r)return t;var o,n="",i=0,a=0;for(i=r.index;i{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof It=="object"&&typeof Yr=="object"?Yr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof It=="object"?It.ClipboardJS=r():t.ClipboardJS=r()})(It,function(){return function(){var e={686:function(o,n,i){"use strict";i.d(n,{default:function(){return Ui}});var a=i(279),s=i.n(a),p=i(370),c=i.n(p),l=i(817),f=i.n(l);function u(V){try{return document.execCommand(V)}catch(A){return!1}}var d=function(A){var M=f()(A);return u("cut"),M},y=d;function L(V){var A=document.documentElement.getAttribute("dir")==="rtl",M=document.createElement("textarea");M.style.fontSize="12pt",M.style.border="0",M.style.padding="0",M.style.margin="0",M.style.position="absolute",M.style[A?"right":"left"]="-9999px";var F=window.pageYOffset||document.documentElement.scrollTop;return M.style.top="".concat(F,"px"),M.setAttribute("readonly",""),M.value=V,M}var X=function(A,M){var F=L(A);M.container.appendChild(F);var D=f()(F);return u("copy"),F.remove(),D},ee=function(A){var M=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},F="";return typeof A=="string"?F=X(A,M):A instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(A==null?void 0:A.type)?F=X(A.value,M):(F=f()(A),u("copy")),F},J=ee;function k(V){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?k=function(M){return typeof M}:k=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},k(V)}var ft=function(){var A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},M=A.action,F=M===void 0?"copy":M,D=A.container,Y=A.target,$e=A.text;if(F!=="copy"&&F!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(Y!==void 0)if(Y&&k(Y)==="object"&&Y.nodeType===1){if(F==="copy"&&Y.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(F==="cut"&&(Y.hasAttribute("readonly")||Y.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if($e)return J($e,{container:D});if(Y)return F==="cut"?y(Y):J(Y,{container:D})},qe=ft;function Fe(V){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Fe=function(M){return typeof M}:Fe=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},Fe(V)}function ki(V,A){if(!(V instanceof A))throw new TypeError("Cannot call a class as a function")}function no(V,A){for(var M=0;M0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof D.action=="function"?D.action:this.defaultAction,this.target=typeof D.target=="function"?D.target:this.defaultTarget,this.text=typeof D.text=="function"?D.text:this.defaultText,this.container=Fe(D.container)==="object"?D.container:document.body}},{key:"listenClick",value:function(D){var Y=this;this.listener=c()(D,"click",function($e){return Y.onClick($e)})}},{key:"onClick",value:function(D){var Y=D.delegateTarget||D.currentTarget,$e=this.action(Y)||"copy",Dt=qe({action:$e,container:this.container,target:this.target(Y),text:this.text(Y)});this.emit(Dt?"success":"error",{action:$e,text:Dt,trigger:Y,clearSelection:function(){Y&&Y.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(D){return vr("action",D)}},{key:"defaultTarget",value:function(D){var Y=vr("target",D);if(Y)return document.querySelector(Y)}},{key:"defaultText",value:function(D){return vr("text",D)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(D){var Y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return J(D,Y)}},{key:"cut",value:function(D){return y(D)}},{key:"isSupported",value:function(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],Y=typeof D=="string"?[D]:D,$e=!!document.queryCommandSupported;return Y.forEach(function(Dt){$e=$e&&!!document.queryCommandSupported(Dt)}),$e}}]),M}(s()),Ui=Fi},828:function(o){var n=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function a(s,p){for(;s&&s.nodeType!==n;){if(typeof s.matches=="function"&&s.matches(p))return s;s=s.parentNode}}o.exports=a},438:function(o,n,i){var a=i(828);function s(l,f,u,d,y){var L=c.apply(this,arguments);return l.addEventListener(u,L,y),{destroy:function(){l.removeEventListener(u,L,y)}}}function p(l,f,u,d,y){return typeof l.addEventListener=="function"?s.apply(null,arguments):typeof u=="function"?s.bind(null,document).apply(null,arguments):(typeof l=="string"&&(l=document.querySelectorAll(l)),Array.prototype.map.call(l,function(L){return s(L,f,u,d,y)}))}function c(l,f,u,d){return function(y){y.delegateTarget=a(y.target,f),y.delegateTarget&&d.call(l,y)}}o.exports=p},879:function(o,n){n.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},n.nodeList=function(i){var a=Object.prototype.toString.call(i);return i!==void 0&&(a==="[object NodeList]"||a==="[object HTMLCollection]")&&"length"in i&&(i.length===0||n.node(i[0]))},n.string=function(i){return typeof i=="string"||i instanceof String},n.fn=function(i){var a=Object.prototype.toString.call(i);return a==="[object Function]"}},370:function(o,n,i){var a=i(879),s=i(438);function p(u,d,y){if(!u&&!d&&!y)throw new Error("Missing required arguments");if(!a.string(d))throw new TypeError("Second argument must be a String");if(!a.fn(y))throw new TypeError("Third argument must be a Function");if(a.node(u))return c(u,d,y);if(a.nodeList(u))return l(u,d,y);if(a.string(u))return f(u,d,y);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(u,d,y){return u.addEventListener(d,y),{destroy:function(){u.removeEventListener(d,y)}}}function l(u,d,y){return Array.prototype.forEach.call(u,function(L){L.addEventListener(d,y)}),{destroy:function(){Array.prototype.forEach.call(u,function(L){L.removeEventListener(d,y)})}}}function f(u,d,y){return s(document.body,u,d,y)}o.exports=p},817:function(o){function n(i){var a;if(i.nodeName==="SELECT")i.focus(),a=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var s=i.hasAttribute("readonly");s||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),s||i.removeAttribute("readonly"),a=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var p=window.getSelection(),c=document.createRange();c.selectNodeContents(i),p.removeAllRanges(),p.addRange(c),a=p.toString()}return a}o.exports=n},279:function(o){function n(){}n.prototype={on:function(i,a,s){var p=this.e||(this.e={});return(p[i]||(p[i]=[])).push({fn:a,ctx:s}),this},once:function(i,a,s){var p=this;function c(){p.off(i,c),a.apply(s,arguments)}return c._=a,this.on(i,c,s)},emit:function(i){var a=[].slice.call(arguments,1),s=((this.e||(this.e={}))[i]||[]).slice(),p=0,c=s.length;for(p;p0&&i[i.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function N(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var o=r.call(e),n,i=[],a;try{for(;(t===void 0||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(s){a={error:s}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i}function q(e,t,r){if(r||arguments.length===2)for(var o=0,n=t.length,i;o1||p(d,L)})},y&&(n[d]=y(n[d])))}function p(d,y){try{c(o[d](y))}catch(L){u(i[0][3],L)}}function c(d){d.value instanceof nt?Promise.resolve(d.value.v).then(l,f):u(i[0][2],d)}function l(d){p("next",d)}function f(d){p("throw",d)}function u(d,y){d(y),i.shift(),i.length&&p(i[0][0],i[0][1])}}function uo(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof he=="function"?he(e):e[Symbol.iterator](),r={},o("next"),o("throw"),o("return"),r[Symbol.asyncIterator]=function(){return this},r);function o(i){r[i]=e[i]&&function(a){return new Promise(function(s,p){a=e[i](a),n(s,p,a.done,a.value)})}}function n(i,a,s,p){Promise.resolve(p).then(function(c){i({value:c,done:s})},a)}}function H(e){return typeof e=="function"}function ut(e){var t=function(o){Error.call(o),o.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var zt=ut(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(o,n){return n+1+") "+o.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function Qe(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Ue=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,o,n,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var s=he(a),p=s.next();!p.done;p=s.next()){var c=p.value;c.remove(this)}}catch(L){t={error:L}}finally{try{p&&!p.done&&(r=s.return)&&r.call(s)}finally{if(t)throw t.error}}else a.remove(this);var l=this.initialTeardown;if(H(l))try{l()}catch(L){i=L instanceof zt?L.errors:[L]}var f=this._finalizers;if(f){this._finalizers=null;try{for(var u=he(f),d=u.next();!d.done;d=u.next()){var y=d.value;try{ho(y)}catch(L){i=i!=null?i:[],L instanceof zt?i=q(q([],N(i)),N(L.errors)):i.push(L)}}}catch(L){o={error:L}}finally{try{d&&!d.done&&(n=u.return)&&n.call(u)}finally{if(o)throw o.error}}}if(i)throw new zt(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)ho(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&Qe(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&Qe(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Tr=Ue.EMPTY;function qt(e){return e instanceof Ue||e&&"closed"in e&&H(e.remove)&&H(e.add)&&H(e.unsubscribe)}function ho(e){H(e)?e():e.unsubscribe()}var Pe={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var dt={setTimeout:function(e,t){for(var r=[],o=2;o0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var o=this,n=this,i=n.hasError,a=n.isStopped,s=n.observers;return i||a?Tr:(this.currentObservers=null,s.push(r),new Ue(function(){o.currentObservers=null,Qe(s,r)}))},t.prototype._checkFinalizedStatuses=function(r){var o=this,n=o.hasError,i=o.thrownError,a=o.isStopped;n?r.error(i):a&&r.complete()},t.prototype.asObservable=function(){var r=new j;return r.source=this,r},t.create=function(r,o){return new To(r,o)},t}(j);var To=function(e){oe(t,e);function t(r,o){var n=e.call(this)||this;return n.destination=r,n.source=o,n}return t.prototype.next=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.next)===null||n===void 0||n.call(o,r)},t.prototype.error=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.error)===null||n===void 0||n.call(o,r)},t.prototype.complete=function(){var r,o;(o=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||o===void 0||o.call(r)},t.prototype._subscribe=function(r){var o,n;return(n=(o=this.source)===null||o===void 0?void 0:o.subscribe(r))!==null&&n!==void 0?n:Tr},t}(g);var _r=function(e){oe(t,e);function t(r){var o=e.call(this)||this;return o._value=r,o}return Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(r){var o=e.prototype._subscribe.call(this,r);return!o.closed&&r.next(this._value),o},t.prototype.getValue=function(){var r=this,o=r.hasError,n=r.thrownError,i=r._value;if(o)throw n;return this._throwIfClosed(),i},t.prototype.next=function(r){e.prototype.next.call(this,this._value=r)},t}(g);var At={now:function(){return(At.delegate||Date).now()},delegate:void 0};var Ct=function(e){oe(t,e);function t(r,o,n){r===void 0&&(r=1/0),o===void 0&&(o=1/0),n===void 0&&(n=At);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=o,i._timestampProvider=n,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=o===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,o),i}return t.prototype.next=function(r){var o=this,n=o.isStopped,i=o._buffer,a=o._infiniteTimeWindow,s=o._timestampProvider,p=o._windowTime;n||(i.push(r),!a&&i.push(s.now()+p)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var o=this._innerSubscribe(r),n=this,i=n._infiniteTimeWindow,a=n._buffer,s=a.slice(),p=0;p0?e.prototype.schedule.call(this,r,o):(this.delay=o,this.state=r,this.scheduler.flush(this),this)},t.prototype.execute=function(r,o){return o>0||this.closed?e.prototype.execute.call(this,r,o):this._execute(r,o)},t.prototype.requestAsyncId=function(r,o,n){return n===void 0&&(n=0),n!=null&&n>0||n==null&&this.delay>0?e.prototype.requestAsyncId.call(this,r,o,n):(r.flush(this),0)},t}(gt);var Lo=function(e){oe(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t}(yt);var kr=new Lo(Oo);var Mo=function(e){oe(t,e);function t(r,o){var n=e.call(this,r,o)||this;return n.scheduler=r,n.work=o,n}return t.prototype.requestAsyncId=function(r,o,n){return n===void 0&&(n=0),n!==null&&n>0?e.prototype.requestAsyncId.call(this,r,o,n):(r.actions.push(this),r._scheduled||(r._scheduled=vt.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,o,n){var i;if(n===void 0&&(n=0),n!=null?n>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,o,n);var a=r.actions;o!=null&&((i=a[a.length-1])===null||i===void 0?void 0:i.id)!==o&&(vt.cancelAnimationFrame(o),r._scheduled=void 0)},t}(gt);var _o=function(e){oe(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var o=this._scheduled;this._scheduled=void 0;var n=this.actions,i;r=r||n.shift();do if(i=r.execute(r.state,r.delay))break;while((r=n[0])&&r.id===o&&n.shift());if(this._active=!1,i){for(;(r=n[0])&&r.id===o&&n.shift();)r.unsubscribe();throw i}},t}(yt);var me=new _o(Mo);var S=new j(function(e){return e.complete()});function Yt(e){return e&&H(e.schedule)}function Hr(e){return e[e.length-1]}function Xe(e){return H(Hr(e))?e.pop():void 0}function ke(e){return Yt(Hr(e))?e.pop():void 0}function Bt(e,t){return typeof Hr(e)=="number"?e.pop():t}var xt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Gt(e){return H(e==null?void 0:e.then)}function Jt(e){return H(e[bt])}function Xt(e){return Symbol.asyncIterator&&H(e==null?void 0:e[Symbol.asyncIterator])}function Zt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Zi(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var er=Zi();function tr(e){return H(e==null?void 0:e[er])}function rr(e){return fo(this,arguments,function(){var r,o,n,i;return Nt(this,function(a){switch(a.label){case 0:r=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,nt(r.read())];case 3:return o=a.sent(),n=o.value,i=o.done,i?[4,nt(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,nt(n)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function or(e){return H(e==null?void 0:e.getReader)}function U(e){if(e instanceof j)return e;if(e!=null){if(Jt(e))return ea(e);if(xt(e))return ta(e);if(Gt(e))return ra(e);if(Xt(e))return Ao(e);if(tr(e))return oa(e);if(or(e))return na(e)}throw Zt(e)}function ea(e){return new j(function(t){var r=e[bt]();if(H(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function ta(e){return new j(function(t){for(var r=0;r=2;return function(o){return o.pipe(e?b(function(n,i){return e(n,i,o)}):le,Te(1),r?De(t):Qo(function(){return new ir}))}}function jr(e){return e<=0?function(){return S}:E(function(t,r){var o=[];t.subscribe(T(r,function(n){o.push(n),e=2,!0))}function pe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new g}:t,o=e.resetOnError,n=o===void 0?!0:o,i=e.resetOnComplete,a=i===void 0?!0:i,s=e.resetOnRefCountZero,p=s===void 0?!0:s;return function(c){var l,f,u,d=0,y=!1,L=!1,X=function(){f==null||f.unsubscribe(),f=void 0},ee=function(){X(),l=u=void 0,y=L=!1},J=function(){var k=l;ee(),k==null||k.unsubscribe()};return E(function(k,ft){d++,!L&&!y&&X();var qe=u=u!=null?u:r();ft.add(function(){d--,d===0&&!L&&!y&&(f=Ur(J,p))}),qe.subscribe(ft),!l&&d>0&&(l=new at({next:function(Fe){return qe.next(Fe)},error:function(Fe){L=!0,X(),f=Ur(ee,n,Fe),qe.error(Fe)},complete:function(){y=!0,X(),f=Ur(ee,a),qe.complete()}}),U(k).subscribe(l))})(c)}}function Ur(e,t){for(var r=[],o=2;oe.next(document)),e}function P(e,t=document){return Array.from(t.querySelectorAll(e))}function R(e,t=document){let r=fe(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function fe(e,t=document){return t.querySelector(e)||void 0}function Ie(){var e,t,r,o;return(o=(r=(t=(e=document.activeElement)==null?void 0:e.shadowRoot)==null?void 0:t.activeElement)!=null?r:document.activeElement)!=null?o:void 0}var wa=O(h(document.body,"focusin"),h(document.body,"focusout")).pipe(_e(1),Q(void 0),m(()=>Ie()||document.body),G(1));function et(e){return wa.pipe(m(t=>e.contains(t)),K())}function $t(e,t){return C(()=>O(h(e,"mouseenter").pipe(m(()=>!0)),h(e,"mouseleave").pipe(m(()=>!1))).pipe(t?Ht(r=>Le(+!r*t)):le,Q(e.matches(":hover"))))}function Jo(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)Jo(e,r)}function x(e,t,...r){let o=document.createElement(e);if(t)for(let n of Object.keys(t))typeof t[n]!="undefined"&&(typeof t[n]!="boolean"?o.setAttribute(n,t[n]):o.setAttribute(n,""));for(let n of r)Jo(o,n);return o}function sr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function Tt(e){let t=x("script",{src:e});return C(()=>(document.head.appendChild(t),O(h(t,"load"),h(t,"error").pipe(v(()=>$r(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(m(()=>{}),_(()=>document.head.removeChild(t)),Te(1))))}var Xo=new g,Ta=C(()=>typeof ResizeObserver=="undefined"?Tt("https://unpkg.com/resize-observer-polyfill"):I(void 0)).pipe(m(()=>new ResizeObserver(e=>e.forEach(t=>Xo.next(t)))),v(e=>O(Ye,I(e)).pipe(_(()=>e.disconnect()))),G(1));function ce(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ge(e){let t=e;for(;t.clientWidth===0&&t.parentElement;)t=t.parentElement;return Ta.pipe(w(r=>r.observe(t)),v(r=>Xo.pipe(b(o=>o.target===t),_(()=>r.unobserve(t)))),m(()=>ce(e)),Q(ce(e)))}function St(e){return{width:e.scrollWidth,height:e.scrollHeight}}function cr(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}function Zo(e){let t=[],r=e.parentElement;for(;r;)(e.clientWidth>r.clientWidth||e.clientHeight>r.clientHeight)&&t.push(r),r=(e=r).parentElement;return t.length===0&&t.push(document.documentElement),t}function Ve(e){return{x:e.offsetLeft,y:e.offsetTop}}function en(e){let t=e.getBoundingClientRect();return{x:t.x+window.scrollX,y:t.y+window.scrollY}}function tn(e){return O(h(window,"load"),h(window,"resize")).pipe(Me(0,me),m(()=>Ve(e)),Q(Ve(e)))}function pr(e){return{x:e.scrollLeft,y:e.scrollTop}}function Ne(e){return O(h(e,"scroll"),h(window,"scroll"),h(window,"resize")).pipe(Me(0,me),m(()=>pr(e)),Q(pr(e)))}var rn=new g,Sa=C(()=>I(new IntersectionObserver(e=>{for(let t of e)rn.next(t)},{threshold:0}))).pipe(v(e=>O(Ye,I(e)).pipe(_(()=>e.disconnect()))),G(1));function tt(e){return Sa.pipe(w(t=>t.observe(e)),v(t=>rn.pipe(b(({target:r})=>r===e),_(()=>t.unobserve(e)),m(({isIntersecting:r})=>r))))}function on(e,t=16){return Ne(e).pipe(m(({y:r})=>{let o=ce(e),n=St(e);return r>=n.height-o.height-t}),K())}var lr={drawer:R("[data-md-toggle=drawer]"),search:R("[data-md-toggle=search]")};function nn(e){return lr[e].checked}function Je(e,t){lr[e].checked!==t&&lr[e].click()}function ze(e){let t=lr[e];return h(t,"change").pipe(m(()=>t.checked),Q(t.checked))}function Oa(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function La(){return O(h(window,"compositionstart").pipe(m(()=>!0)),h(window,"compositionend").pipe(m(()=>!1))).pipe(Q(!1))}function an(){let e=h(window,"keydown").pipe(b(t=>!(t.metaKey||t.ctrlKey)),m(t=>({mode:nn("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),b(({mode:t,type:r})=>{if(t==="global"){let o=Ie();if(typeof o!="undefined")return!Oa(o,r)}return!0}),pe());return La().pipe(v(t=>t?S:e))}function ye(){return new URL(location.href)}function lt(e,t=!1){if(B("navigation.instant")&&!t){let r=x("a",{href:e.href});document.body.appendChild(r),r.click(),r.remove()}else location.href=e.href}function sn(){return new g}function cn(){return location.hash.slice(1)}function pn(e){let t=x("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Ma(e){return O(h(window,"hashchange"),e).pipe(m(cn),Q(cn()),b(t=>t.length>0),G(1))}function ln(e){return Ma(e).pipe(m(t=>fe(`[id="${t}"]`)),b(t=>typeof t!="undefined"))}function Pt(e){let t=matchMedia(e);return ar(r=>t.addListener(()=>r(t.matches))).pipe(Q(t.matches))}function mn(){let e=matchMedia("print");return O(h(window,"beforeprint").pipe(m(()=>!0)),h(window,"afterprint").pipe(m(()=>!1))).pipe(Q(e.matches))}function Nr(e,t){return e.pipe(v(r=>r?t():S))}function zr(e,t){return new j(r=>{let o=new XMLHttpRequest;return o.open("GET",`${e}`),o.responseType="blob",o.addEventListener("load",()=>{o.status>=200&&o.status<300?(r.next(o.response),r.complete()):r.error(new Error(o.statusText))}),o.addEventListener("error",()=>{r.error(new Error("Network error"))}),o.addEventListener("abort",()=>{r.complete()}),typeof(t==null?void 0:t.progress$)!="undefined"&&(o.addEventListener("progress",n=>{var i;if(n.lengthComputable)t.progress$.next(n.loaded/n.total*100);else{let a=(i=o.getResponseHeader("Content-Length"))!=null?i:0;t.progress$.next(n.loaded/+a*100)}}),t.progress$.next(5)),o.send(),()=>o.abort()})}function je(e,t){return zr(e,t).pipe(v(r=>r.text()),m(r=>JSON.parse(r)),G(1))}function fn(e,t){let r=new DOMParser;return zr(e,t).pipe(v(o=>o.text()),m(o=>r.parseFromString(o,"text/html")),G(1))}function un(e,t){let r=new DOMParser;return zr(e,t).pipe(v(o=>o.text()),m(o=>r.parseFromString(o,"text/xml")),G(1))}function dn(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function hn(){return O(h(window,"scroll",{passive:!0}),h(window,"resize",{passive:!0})).pipe(m(dn),Q(dn()))}function bn(){return{width:innerWidth,height:innerHeight}}function vn(){return h(window,"resize",{passive:!0}).pipe(m(bn),Q(bn()))}function gn(){return z([hn(),vn()]).pipe(m(([e,t])=>({offset:e,size:t})),G(1))}function mr(e,{viewport$:t,header$:r}){let o=t.pipe(te("size")),n=z([o,r]).pipe(m(()=>Ve(e)));return z([r,t,n]).pipe(m(([{height:i},{offset:a,size:s},{x:p,y:c}])=>({offset:{x:a.x-p,y:a.y-c+i},size:s})))}function _a(e){return h(e,"message",t=>t.data)}function Aa(e){let t=new g;return t.subscribe(r=>e.postMessage(r)),t}function yn(e,t=new Worker(e)){let r=_a(t),o=Aa(t),n=new g;n.subscribe(o);let i=o.pipe(Z(),ie(!0));return n.pipe(Z(),Re(r.pipe(W(i))),pe())}var Ca=R("#__config"),Ot=JSON.parse(Ca.textContent);Ot.base=`${new URL(Ot.base,ye())}`;function xe(){return Ot}function B(e){return Ot.features.includes(e)}function Ee(e,t){return typeof t!="undefined"?Ot.translations[e].replace("#",t.toString()):Ot.translations[e]}function Se(e,t=document){return R(`[data-md-component=${e}]`,t)}function ae(e,t=document){return P(`[data-md-component=${e}]`,t)}function ka(e){let t=R(".md-typeset > :first-child",e);return h(t,"click",{once:!0}).pipe(m(()=>R(".md-typeset",e)),m(r=>({hash:__md_hash(r.innerHTML)})))}function xn(e){if(!B("announce.dismiss")||!e.childElementCount)return S;if(!e.hidden){let t=R(".md-typeset",e);__md_hash(t.innerHTML)===__md_get("__announce")&&(e.hidden=!0)}return C(()=>{let t=new g;return t.subscribe(({hash:r})=>{e.hidden=!0,__md_set("__announce",r)}),ka(e).pipe(w(r=>t.next(r)),_(()=>t.complete()),m(r=>$({ref:e},r)))})}function Ha(e,{target$:t}){return t.pipe(m(r=>({hidden:r!==e})))}function En(e,t){let r=new g;return r.subscribe(({hidden:o})=>{e.hidden=o}),Ha(e,t).pipe(w(o=>r.next(o)),_(()=>r.complete()),m(o=>$({ref:e},o)))}function Rt(e,t){return t==="inline"?x("div",{class:"md-tooltip md-tooltip--inline",id:e,role:"tooltip"},x("div",{class:"md-tooltip__inner md-typeset"})):x("div",{class:"md-tooltip",id:e,role:"tooltip"},x("div",{class:"md-tooltip__inner md-typeset"}))}function wn(...e){return x("div",{class:"md-tooltip2",role:"tooltip"},x("div",{class:"md-tooltip2__inner md-typeset"},e))}function Tn(e,t){if(t=t?`${t}_annotation_${e}`:void 0,t){let r=t?`#${t}`:void 0;return x("aside",{class:"md-annotation",tabIndex:0},Rt(t),x("a",{href:r,class:"md-annotation__index",tabIndex:-1},x("span",{"data-md-annotation-id":e})))}else return x("aside",{class:"md-annotation",tabIndex:0},Rt(t),x("span",{class:"md-annotation__index",tabIndex:-1},x("span",{"data-md-annotation-id":e})))}function Sn(e){return x("button",{class:"md-clipboard md-icon",title:Ee("clipboard.copy"),"data-clipboard-target":`#${e} > code`})}var Ln=Mt(qr());function Qr(e,t){let r=t&2,o=t&1,n=Object.keys(e.terms).filter(p=>!e.terms[p]).reduce((p,c)=>[...p,x("del",null,(0,Ln.default)(c))," "],[]).slice(0,-1),i=xe(),a=new URL(e.location,i.base);B("search.highlight")&&a.searchParams.set("h",Object.entries(e.terms).filter(([,p])=>p).reduce((p,[c])=>`${p} ${c}`.trim(),""));let{tags:s}=xe();return x("a",{href:`${a}`,class:"md-search-result__link",tabIndex:-1},x("article",{class:"md-search-result__article md-typeset","data-md-score":e.score.toFixed(2)},r>0&&x("div",{class:"md-search-result__icon md-icon"}),r>0&&x("h1",null,e.title),r<=0&&x("h2",null,e.title),o>0&&e.text.length>0&&e.text,e.tags&&x("nav",{class:"md-tags"},e.tags.map(p=>{let c=s?p in s?`md-tag-icon md-tag--${s[p]}`:"md-tag-icon":"";return x("span",{class:`md-tag ${c}`},p)})),o>0&&n.length>0&&x("p",{class:"md-search-result__terms"},Ee("search.result.term.missing"),": ",...n)))}function Mn(e){let t=e[0].score,r=[...e],o=xe(),n=r.findIndex(l=>!`${new URL(l.location,o.base)}`.includes("#")),[i]=r.splice(n,1),a=r.findIndex(l=>l.scoreQr(l,1)),...p.length?[x("details",{class:"md-search-result__more"},x("summary",{tabIndex:-1},x("div",null,p.length>0&&p.length===1?Ee("search.result.more.one"):Ee("search.result.more.other",p.length))),...p.map(l=>Qr(l,1)))]:[]];return x("li",{class:"md-search-result__item"},c)}function _n(e){return x("ul",{class:"md-source__facts"},Object.entries(e).map(([t,r])=>x("li",{class:`md-source__fact md-source__fact--${t}`},typeof r=="number"?sr(r):r)))}function Kr(e){let t=`tabbed-control tabbed-control--${e}`;return x("div",{class:t,hidden:!0},x("button",{class:"tabbed-button",tabIndex:-1,"aria-hidden":"true"}))}function An(e){return x("div",{class:"md-typeset__scrollwrap"},x("div",{class:"md-typeset__table"},e))}function Ra(e){var o;let t=xe(),r=new URL(`../${e.version}/`,t.base);return x("li",{class:"md-version__item"},x("a",{href:`${r}`,class:"md-version__link"},e.title,((o=t.version)==null?void 0:o.alias)&&e.aliases.length>0&&x("span",{class:"md-version__alias"},e.aliases[0])))}function Cn(e,t){var o;let r=xe();return e=e.filter(n=>{var i;return!((i=n.properties)!=null&&i.hidden)}),x("div",{class:"md-version"},x("button",{class:"md-version__current","aria-label":Ee("select.version")},t.title,((o=r.version)==null?void 0:o.alias)&&t.aliases.length>0&&x("span",{class:"md-version__alias"},t.aliases[0])),x("ul",{class:"md-version__list"},e.map(Ra)))}var Ia=0;function ja(e){let t=z([et(e),$t(e)]).pipe(m(([o,n])=>o||n),K()),r=C(()=>Zo(e)).pipe(ne(Ne),pt(1),He(t),m(()=>en(e)));return t.pipe(Ae(o=>o),v(()=>z([t,r])),m(([o,n])=>({active:o,offset:n})),pe())}function Fa(e,t){let{content$:r,viewport$:o}=t,n=`__tooltip2_${Ia++}`;return C(()=>{let i=new g,a=new _r(!1);i.pipe(Z(),ie(!1)).subscribe(a);let s=a.pipe(Ht(c=>Le(+!c*250,kr)),K(),v(c=>c?r:S),w(c=>c.id=n),pe());z([i.pipe(m(({active:c})=>c)),s.pipe(v(c=>$t(c,250)),Q(!1))]).pipe(m(c=>c.some(l=>l))).subscribe(a);let p=a.pipe(b(c=>c),re(s,o),m(([c,l,{size:f}])=>{let u=e.getBoundingClientRect(),d=u.width/2;if(l.role==="tooltip")return{x:d,y:8+u.height};if(u.y>=f.height/2){let{height:y}=ce(l);return{x:d,y:-16-y}}else return{x:d,y:16+u.height}}));return z([s,i,p]).subscribe(([c,{offset:l},f])=>{c.style.setProperty("--md-tooltip-host-x",`${l.x}px`),c.style.setProperty("--md-tooltip-host-y",`${l.y}px`),c.style.setProperty("--md-tooltip-x",`${f.x}px`),c.style.setProperty("--md-tooltip-y",`${f.y}px`),c.classList.toggle("md-tooltip2--top",f.y<0),c.classList.toggle("md-tooltip2--bottom",f.y>=0)}),a.pipe(b(c=>c),re(s,(c,l)=>l),b(c=>c.role==="tooltip")).subscribe(c=>{let l=ce(R(":scope > *",c));c.style.setProperty("--md-tooltip-width",`${l.width}px`),c.style.setProperty("--md-tooltip-tail","0px")}),a.pipe(K(),ve(me),re(s)).subscribe(([c,l])=>{l.classList.toggle("md-tooltip2--active",c)}),z([a.pipe(b(c=>c)),s]).subscribe(([c,l])=>{l.role==="dialog"?(e.setAttribute("aria-controls",n),e.setAttribute("aria-haspopup","dialog")):e.setAttribute("aria-describedby",n)}),a.pipe(b(c=>!c)).subscribe(()=>{e.removeAttribute("aria-controls"),e.removeAttribute("aria-describedby"),e.removeAttribute("aria-haspopup")}),ja(e).pipe(w(c=>i.next(c)),_(()=>i.complete()),m(c=>$({ref:e},c)))})}function mt(e,{viewport$:t},r=document.body){return Fa(e,{content$:new j(o=>{let n=e.title,i=wn(n);return o.next(i),e.removeAttribute("title"),r.append(i),()=>{i.remove(),e.setAttribute("title",n)}}),viewport$:t})}function Ua(e,t){let r=C(()=>z([tn(e),Ne(t)])).pipe(m(([{x:o,y:n},i])=>{let{width:a,height:s}=ce(e);return{x:o-i.x+a/2,y:n-i.y+s/2}}));return et(e).pipe(v(o=>r.pipe(m(n=>({active:o,offset:n})),Te(+!o||1/0))))}function kn(e,t,{target$:r}){let[o,n]=Array.from(e.children);return C(()=>{let i=new g,a=i.pipe(Z(),ie(!0));return i.subscribe({next({offset:s}){e.style.setProperty("--md-tooltip-x",`${s.x}px`),e.style.setProperty("--md-tooltip-y",`${s.y}px`)},complete(){e.style.removeProperty("--md-tooltip-x"),e.style.removeProperty("--md-tooltip-y")}}),tt(e).pipe(W(a)).subscribe(s=>{e.toggleAttribute("data-md-visible",s)}),O(i.pipe(b(({active:s})=>s)),i.pipe(_e(250),b(({active:s})=>!s))).subscribe({next({active:s}){s?e.prepend(o):o.remove()},complete(){e.prepend(o)}}),i.pipe(Me(16,me)).subscribe(({active:s})=>{o.classList.toggle("md-tooltip--active",s)}),i.pipe(pt(125,me),b(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:s})=>s)).subscribe({next(s){s?e.style.setProperty("--md-tooltip-0",`${-s}px`):e.style.removeProperty("--md-tooltip-0")},complete(){e.style.removeProperty("--md-tooltip-0")}}),h(n,"click").pipe(W(a),b(s=>!(s.metaKey||s.ctrlKey))).subscribe(s=>{s.stopPropagation(),s.preventDefault()}),h(n,"mousedown").pipe(W(a),re(i)).subscribe(([s,{active:p}])=>{var c;if(s.button!==0||s.metaKey||s.ctrlKey)s.preventDefault();else if(p){s.preventDefault();let l=e.parentElement.closest(".md-annotation");l instanceof HTMLElement?l.focus():(c=Ie())==null||c.blur()}}),r.pipe(W(a),b(s=>s===o),Ge(125)).subscribe(()=>e.focus()),Ua(e,t).pipe(w(s=>i.next(s)),_(()=>i.complete()),m(s=>$({ref:e},s)))})}function Wa(e){return e.tagName==="CODE"?P(".c, .c1, .cm",e):[e]}function Da(e){let t=[];for(let r of Wa(e)){let o=[],n=document.createNodeIterator(r,NodeFilter.SHOW_TEXT);for(let i=n.nextNode();i;i=n.nextNode())o.push(i);for(let i of o){let a;for(;a=/(\(\d+\))(!)?/.exec(i.textContent);){let[,s,p]=a;if(typeof p=="undefined"){let c=i.splitText(a.index);i=c.splitText(s.length),t.push(c)}else{i.textContent=s,t.push(i);break}}}}return t}function Hn(e,t){t.append(...Array.from(e.childNodes))}function fr(e,t,{target$:r,print$:o}){let n=t.closest("[id]"),i=n==null?void 0:n.id,a=new Map;for(let s of Da(t)){let[,p]=s.textContent.match(/\((\d+)\)/);fe(`:scope > li:nth-child(${p})`,e)&&(a.set(p,Tn(p,i)),s.replaceWith(a.get(p)))}return a.size===0?S:C(()=>{let s=new g,p=s.pipe(Z(),ie(!0)),c=[];for(let[l,f]of a)c.push([R(".md-typeset",f),R(`:scope > li:nth-child(${l})`,e)]);return o.pipe(W(p)).subscribe(l=>{e.hidden=!l,e.classList.toggle("md-annotation-list",l);for(let[f,u]of c)l?Hn(f,u):Hn(u,f)}),O(...[...a].map(([,l])=>kn(l,t,{target$:r}))).pipe(_(()=>s.complete()),pe())})}function $n(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return $n(t)}}function Pn(e,t){return C(()=>{let r=$n(e);return typeof r!="undefined"?fr(r,e,t):S})}var Rn=Mt(Br());var Va=0;function In(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return In(t)}}function Na(e){return ge(e).pipe(m(({width:t})=>({scrollable:St(e).width>t})),te("scrollable"))}function jn(e,t){let{matches:r}=matchMedia("(hover)"),o=C(()=>{let n=new g,i=n.pipe(jr(1));n.subscribe(({scrollable:c})=>{c&&r?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")});let a=[];if(Rn.default.isSupported()&&(e.closest(".copy")||B("content.code.copy")&&!e.closest(".no-copy"))){let c=e.closest("pre");c.id=`__code_${Va++}`;let l=Sn(c.id);c.insertBefore(l,e),B("content.tooltips")&&a.push(mt(l,{viewport$}))}let s=e.closest(".highlight");if(s instanceof HTMLElement){let c=In(s);if(typeof c!="undefined"&&(s.classList.contains("annotate")||B("content.code.annotate"))){let l=fr(c,e,t);a.push(ge(s).pipe(W(i),m(({width:f,height:u})=>f&&u),K(),v(f=>f?l:S)))}}return P(":scope > span[id]",e).length&&e.classList.add("md-code__content"),Na(e).pipe(w(c=>n.next(c)),_(()=>n.complete()),m(c=>$({ref:e},c)),Re(...a))});return B("content.lazy")?tt(e).pipe(b(n=>n),Te(1),v(()=>o)):o}function za(e,{target$:t,print$:r}){let o=!0;return O(t.pipe(m(n=>n.closest("details:not([open])")),b(n=>e===n),m(()=>({action:"open",reveal:!0}))),r.pipe(b(n=>n||!o),w(()=>o=e.open),m(n=>({action:n?"open":"close"}))))}function Fn(e,t){return C(()=>{let r=new g;return r.subscribe(({action:o,reveal:n})=>{e.toggleAttribute("open",o==="open"),n&&e.scrollIntoView()}),za(e,t).pipe(w(o=>r.next(o)),_(()=>r.complete()),m(o=>$({ref:e},o)))})}var Un=".node circle,.node ellipse,.node path,.node polygon,.node rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}marker{fill:var(--md-mermaid-edge-color)!important}.edgeLabel .label rect{fill:#0000}.flowchartTitleText{fill:var(--md-mermaid-label-fg-color)}.label{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.label foreignObject{line-height:normal;overflow:visible}.label div .edgeLabel{color:var(--md-mermaid-label-fg-color)}.edgeLabel,.edgeLabel p,.label div .edgeLabel{background-color:var(--md-mermaid-label-bg-color)}.edgeLabel,.edgeLabel p{fill:var(--md-mermaid-label-bg-color);color:var(--md-mermaid-edge-color)}.edgePath .path,.flowchart-link{stroke:var(--md-mermaid-edge-color);stroke-width:.05rem}.edgePath .arrowheadPath{fill:var(--md-mermaid-edge-color);stroke:none}.cluster rect{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}.cluster span{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}g #flowchart-circleEnd,g #flowchart-circleStart,g #flowchart-crossEnd,g #flowchart-crossStart,g #flowchart-pointEnd,g #flowchart-pointStart{stroke:none}.classDiagramTitleText{fill:var(--md-mermaid-label-fg-color)}g.classGroup line,g.classGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.classGroup text{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.classLabel .box{fill:var(--md-mermaid-label-bg-color);background-color:var(--md-mermaid-label-bg-color);opacity:1}.classLabel .label{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node .divider{stroke:var(--md-mermaid-node-fg-color)}.relation{stroke:var(--md-mermaid-edge-color)}.cardinality{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.cardinality text{fill:inherit!important}defs #classDiagram-compositionEnd,defs #classDiagram-compositionStart,defs #classDiagram-dependencyEnd,defs #classDiagram-dependencyStart,defs #classDiagram-extensionEnd,defs #classDiagram-extensionStart{fill:var(--md-mermaid-edge-color)!important;stroke:var(--md-mermaid-edge-color)!important}defs #classDiagram-aggregationEnd,defs #classDiagram-aggregationStart{fill:var(--md-mermaid-label-bg-color)!important;stroke:var(--md-mermaid-edge-color)!important}.statediagramTitleText{fill:var(--md-mermaid-label-fg-color)}g.stateGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.stateGroup .state-title{fill:var(--md-mermaid-label-fg-color)!important;font-family:var(--md-mermaid-font-family)}g.stateGroup .composit{fill:var(--md-mermaid-label-bg-color)}.nodeLabel,.nodeLabel p{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}a .nodeLabel{text-decoration:underline}.node circle.state-end,.node circle.state-start,.start-state{fill:var(--md-mermaid-edge-color);stroke:none}.end-state-inner,.end-state-outer{fill:var(--md-mermaid-edge-color)}.end-state-inner,.node circle.state-end{stroke:var(--md-mermaid-label-bg-color)}.transition{stroke:var(--md-mermaid-edge-color)}[id^=state-fork] rect,[id^=state-join] rect{fill:var(--md-mermaid-edge-color)!important;stroke:none!important}.statediagram-cluster.statediagram-cluster .inner{fill:var(--md-default-bg-color)}.statediagram-cluster rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.statediagram-state rect.divider{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}defs #statediagram-barbEnd{stroke:var(--md-mermaid-edge-color)}.entityTitleText{fill:var(--md-mermaid-label-fg-color)}.attributeBoxEven,.attributeBoxOdd{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityBox{fill:var(--md-mermaid-label-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityLabel{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.relationshipLabelBox{fill:var(--md-mermaid-label-bg-color);fill-opacity:1;background-color:var(--md-mermaid-label-bg-color);opacity:1}.relationshipLabel{fill:var(--md-mermaid-label-fg-color)}.relationshipLine{stroke:var(--md-mermaid-edge-color)}defs #ONE_OR_MORE_END *,defs #ONE_OR_MORE_START *,defs #ONLY_ONE_END *,defs #ONLY_ONE_START *,defs #ZERO_OR_MORE_END *,defs #ZERO_OR_MORE_START *,defs #ZERO_OR_ONE_END *,defs #ZERO_OR_ONE_START *{stroke:var(--md-mermaid-edge-color)!important}defs #ZERO_OR_MORE_END circle,defs #ZERO_OR_MORE_START circle{fill:var(--md-mermaid-label-bg-color)}text:not([class]):last-child{fill:var(--md-mermaid-label-fg-color)}.actor{fill:var(--md-mermaid-sequence-actor-bg-color);stroke:var(--md-mermaid-sequence-actor-border-color)}text.actor>tspan{fill:var(--md-mermaid-sequence-actor-fg-color);font-family:var(--md-mermaid-font-family)}line{stroke:var(--md-mermaid-sequence-actor-line-color)}.actor-man circle,.actor-man line{fill:var(--md-mermaid-sequence-actorman-bg-color);stroke:var(--md-mermaid-sequence-actorman-line-color)}.messageLine0,.messageLine1{stroke:var(--md-mermaid-sequence-message-line-color)}.note{fill:var(--md-mermaid-sequence-note-bg-color);stroke:var(--md-mermaid-sequence-note-border-color)}.loopText,.loopText>tspan,.messageText,.noteText>tspan{stroke:none;font-family:var(--md-mermaid-font-family)!important}.messageText{fill:var(--md-mermaid-sequence-message-fg-color)}.loopText,.loopText>tspan{fill:var(--md-mermaid-sequence-loop-fg-color)}.noteText>tspan{fill:var(--md-mermaid-sequence-note-fg-color)}#arrowhead path{fill:var(--md-mermaid-sequence-message-line-color);stroke:none}.loopLine{fill:var(--md-mermaid-sequence-loop-bg-color);stroke:var(--md-mermaid-sequence-loop-border-color)}.labelBox{fill:var(--md-mermaid-sequence-label-bg-color);stroke:none}.labelText,.labelText>span{fill:var(--md-mermaid-sequence-label-fg-color);font-family:var(--md-mermaid-font-family)}.sequenceNumber{fill:var(--md-mermaid-sequence-number-fg-color)}rect.rect{fill:var(--md-mermaid-sequence-box-bg-color);stroke:none}rect.rect+text.text{fill:var(--md-mermaid-sequence-box-fg-color)}defs #sequencenumber{fill:var(--md-mermaid-sequence-number-bg-color)!important}";var Gr,Qa=0;function Ka(){return typeof mermaid=="undefined"||mermaid instanceof Element?Tt("https://unpkg.com/mermaid@11/dist/mermaid.min.js"):I(void 0)}function Wn(e){return e.classList.remove("mermaid"),Gr||(Gr=Ka().pipe(w(()=>mermaid.initialize({startOnLoad:!1,themeCSS:Un,sequence:{actorFontSize:"16px",messageFontSize:"16px",noteFontSize:"16px"}})),m(()=>{}),G(1))),Gr.subscribe(()=>co(this,null,function*(){e.classList.add("mermaid");let t=`__mermaid_${Qa++}`,r=x("div",{class:"mermaid"}),o=e.textContent,{svg:n,fn:i}=yield mermaid.render(t,o),a=r.attachShadow({mode:"closed"});a.innerHTML=n,e.replaceWith(r),i==null||i(a)})),Gr.pipe(m(()=>({ref:e})))}var Dn=x("table");function Vn(e){return e.replaceWith(Dn),Dn.replaceWith(An(e)),I({ref:e})}function Ya(e){let t=e.find(r=>r.checked)||e[0];return O(...e.map(r=>h(r,"change").pipe(m(()=>R(`label[for="${r.id}"]`))))).pipe(Q(R(`label[for="${t.id}"]`)),m(r=>({active:r})))}function Nn(e,{viewport$:t,target$:r}){let o=R(".tabbed-labels",e),n=P(":scope > input",e),i=Kr("prev");e.append(i);let a=Kr("next");return e.append(a),C(()=>{let s=new g,p=s.pipe(Z(),ie(!0));z([s,ge(e),tt(e)]).pipe(W(p),Me(1,me)).subscribe({next([{active:c},l]){let f=Ve(c),{width:u}=ce(c);e.style.setProperty("--md-indicator-x",`${f.x}px`),e.style.setProperty("--md-indicator-width",`${u}px`);let d=pr(o);(f.xd.x+l.width)&&o.scrollTo({left:Math.max(0,f.x-16),behavior:"smooth"})},complete(){e.style.removeProperty("--md-indicator-x"),e.style.removeProperty("--md-indicator-width")}}),z([Ne(o),ge(o)]).pipe(W(p)).subscribe(([c,l])=>{let f=St(o);i.hidden=c.x<16,a.hidden=c.x>f.width-l.width-16}),O(h(i,"click").pipe(m(()=>-1)),h(a,"click").pipe(m(()=>1))).pipe(W(p)).subscribe(c=>{let{width:l}=ce(o);o.scrollBy({left:l*c,behavior:"smooth"})}),r.pipe(W(p),b(c=>n.includes(c))).subscribe(c=>c.click()),o.classList.add("tabbed-labels--linked");for(let c of n){let l=R(`label[for="${c.id}"]`);l.replaceChildren(x("a",{href:`#${l.htmlFor}`,tabIndex:-1},...Array.from(l.childNodes))),h(l.firstElementChild,"click").pipe(W(p),b(f=>!(f.metaKey||f.ctrlKey)),w(f=>{f.preventDefault(),f.stopPropagation()})).subscribe(()=>{history.replaceState({},"",`#${l.htmlFor}`),l.click()})}return B("content.tabs.link")&&s.pipe(Ce(1),re(t)).subscribe(([{active:c},{offset:l}])=>{let f=c.innerText.trim();if(c.hasAttribute("data-md-switching"))c.removeAttribute("data-md-switching");else{let u=e.offsetTop-l.y;for(let y of P("[data-tabs]"))for(let L of P(":scope > input",y)){let X=R(`label[for="${L.id}"]`);if(X!==c&&X.innerText.trim()===f){X.setAttribute("data-md-switching",""),L.click();break}}window.scrollTo({top:e.offsetTop-u});let d=__md_get("__tabs")||[];__md_set("__tabs",[...new Set([f,...d])])}}),s.pipe(W(p)).subscribe(()=>{for(let c of P("audio, video",e))c.pause()}),Ya(n).pipe(w(c=>s.next(c)),_(()=>s.complete()),m(c=>$({ref:e},c)))}).pipe(Ke(se))}function zn(e,{viewport$:t,target$:r,print$:o}){return O(...P(".annotate:not(.highlight)",e).map(n=>Pn(n,{target$:r,print$:o})),...P("pre:not(.mermaid) > code",e).map(n=>jn(n,{target$:r,print$:o})),...P("pre.mermaid",e).map(n=>Wn(n)),...P("table:not([class])",e).map(n=>Vn(n)),...P("details",e).map(n=>Fn(n,{target$:r,print$:o})),...P("[data-tabs]",e).map(n=>Nn(n,{viewport$:t,target$:r})),...P("[title]",e).filter(()=>B("content.tooltips")).map(n=>mt(n,{viewport$:t})))}function Ba(e,{alert$:t}){return t.pipe(v(r=>O(I(!0),I(!1).pipe(Ge(2e3))).pipe(m(o=>({message:r,active:o})))))}function qn(e,t){let r=R(".md-typeset",e);return C(()=>{let o=new g;return o.subscribe(({message:n,active:i})=>{e.classList.toggle("md-dialog--active",i),r.textContent=n}),Ba(e,t).pipe(w(n=>o.next(n)),_(()=>o.complete()),m(n=>$({ref:e},n)))})}var Ga=0;function Ja(e,t){document.body.append(e);let{width:r}=ce(e);e.style.setProperty("--md-tooltip-width",`${r}px`),e.remove();let o=cr(t),n=typeof o!="undefined"?Ne(o):I({x:0,y:0}),i=O(et(t),$t(t)).pipe(K());return z([i,n]).pipe(m(([a,s])=>{let{x:p,y:c}=Ve(t),l=ce(t),f=t.closest("table");return f&&t.parentElement&&(p+=f.offsetLeft+t.parentElement.offsetLeft,c+=f.offsetTop+t.parentElement.offsetTop),{active:a,offset:{x:p-s.x+l.width/2-r/2,y:c-s.y+l.height+8}}}))}function Qn(e){let t=e.title;if(!t.length)return S;let r=`__tooltip_${Ga++}`,o=Rt(r,"inline"),n=R(".md-typeset",o);return n.innerHTML=t,C(()=>{let i=new g;return i.subscribe({next({offset:a}){o.style.setProperty("--md-tooltip-x",`${a.x}px`),o.style.setProperty("--md-tooltip-y",`${a.y}px`)},complete(){o.style.removeProperty("--md-tooltip-x"),o.style.removeProperty("--md-tooltip-y")}}),O(i.pipe(b(({active:a})=>a)),i.pipe(_e(250),b(({active:a})=>!a))).subscribe({next({active:a}){a?(e.insertAdjacentElement("afterend",o),e.setAttribute("aria-describedby",r),e.removeAttribute("title")):(o.remove(),e.removeAttribute("aria-describedby"),e.setAttribute("title",t))},complete(){o.remove(),e.removeAttribute("aria-describedby"),e.setAttribute("title",t)}}),i.pipe(Me(16,me)).subscribe(({active:a})=>{o.classList.toggle("md-tooltip--active",a)}),i.pipe(pt(125,me),b(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:a})=>a)).subscribe({next(a){a?o.style.setProperty("--md-tooltip-0",`${-a}px`):o.style.removeProperty("--md-tooltip-0")},complete(){o.style.removeProperty("--md-tooltip-0")}}),Ja(o,e).pipe(w(a=>i.next(a)),_(()=>i.complete()),m(a=>$({ref:e},a)))}).pipe(Ke(se))}function Xa({viewport$:e}){if(!B("header.autohide"))return I(!1);let t=e.pipe(m(({offset:{y:n}})=>n),Be(2,1),m(([n,i])=>[nMath.abs(i-n.y)>100),m(([,[n]])=>n),K()),o=ze("search");return z([e,o]).pipe(m(([{offset:n},i])=>n.y>400&&!i),K(),v(n=>n?r:I(!1)),Q(!1))}function Kn(e,t){return C(()=>z([ge(e),Xa(t)])).pipe(m(([{height:r},o])=>({height:r,hidden:o})),K((r,o)=>r.height===o.height&&r.hidden===o.hidden),G(1))}function Yn(e,{header$:t,main$:r}){return C(()=>{let o=new g,n=o.pipe(Z(),ie(!0));o.pipe(te("active"),He(t)).subscribe(([{active:a},{hidden:s}])=>{e.classList.toggle("md-header--shadow",a&&!s),e.hidden=s});let i=ue(P("[title]",e)).pipe(b(()=>B("content.tooltips")),ne(a=>Qn(a)));return r.subscribe(o),t.pipe(W(n),m(a=>$({ref:e},a)),Re(i.pipe(W(n))))})}function Za(e,{viewport$:t,header$:r}){return mr(e,{viewport$:t,header$:r}).pipe(m(({offset:{y:o}})=>{let{height:n}=ce(e);return{active:o>=n}}),te("active"))}function Bn(e,t){return C(()=>{let r=new g;r.subscribe({next({active:n}){e.classList.toggle("md-header__title--active",n)},complete(){e.classList.remove("md-header__title--active")}});let o=fe(".md-content h1");return typeof o=="undefined"?S:Za(o,t).pipe(w(n=>r.next(n)),_(()=>r.complete()),m(n=>$({ref:e},n)))})}function Gn(e,{viewport$:t,header$:r}){let o=r.pipe(m(({height:i})=>i),K()),n=o.pipe(v(()=>ge(e).pipe(m(({height:i})=>({top:e.offsetTop,bottom:e.offsetTop+i})),te("bottom"))));return z([o,n,t]).pipe(m(([i,{top:a,bottom:s},{offset:{y:p},size:{height:c}}])=>(c=Math.max(0,c-Math.max(0,a-p,i)-Math.max(0,c+p-s)),{offset:a-i,height:c,active:a-i<=p})),K((i,a)=>i.offset===a.offset&&i.height===a.height&&i.active===a.active))}function es(e){let t=__md_get("__palette")||{index:e.findIndex(o=>matchMedia(o.getAttribute("data-md-color-media")).matches)},r=Math.max(0,Math.min(t.index,e.length-1));return I(...e).pipe(ne(o=>h(o,"change").pipe(m(()=>o))),Q(e[r]),m(o=>({index:e.indexOf(o),color:{media:o.getAttribute("data-md-color-media"),scheme:o.getAttribute("data-md-color-scheme"),primary:o.getAttribute("data-md-color-primary"),accent:o.getAttribute("data-md-color-accent")}})),G(1))}function Jn(e){let t=P("input",e),r=x("meta",{name:"theme-color"});document.head.appendChild(r);let o=x("meta",{name:"color-scheme"});document.head.appendChild(o);let n=Pt("(prefers-color-scheme: light)");return C(()=>{let i=new g;return i.subscribe(a=>{if(document.body.setAttribute("data-md-color-switching",""),a.color.media==="(prefers-color-scheme)"){let s=matchMedia("(prefers-color-scheme: light)"),p=document.querySelector(s.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");a.color.scheme=p.getAttribute("data-md-color-scheme"),a.color.primary=p.getAttribute("data-md-color-primary"),a.color.accent=p.getAttribute("data-md-color-accent")}for(let[s,p]of Object.entries(a.color))document.body.setAttribute(`data-md-color-${s}`,p);for(let s=0;sa.key==="Enter"),re(i,(a,s)=>s)).subscribe(({index:a})=>{a=(a+1)%t.length,t[a].click(),t[a].focus()}),i.pipe(m(()=>{let a=Se("header"),s=window.getComputedStyle(a);return o.content=s.colorScheme,s.backgroundColor.match(/\d+/g).map(p=>(+p).toString(16).padStart(2,"0")).join("")})).subscribe(a=>r.content=`#${a}`),i.pipe(ve(se)).subscribe(()=>{document.body.removeAttribute("data-md-color-switching")}),es(t).pipe(W(n.pipe(Ce(1))),ct(),w(a=>i.next(a)),_(()=>i.complete()),m(a=>$({ref:e},a)))})}function Xn(e,{progress$:t}){return C(()=>{let r=new g;return r.subscribe(({value:o})=>{e.style.setProperty("--md-progress-value",`${o}`)}),t.pipe(w(o=>r.next({value:o})),_(()=>r.complete()),m(o=>({ref:e,value:o})))})}var Jr=Mt(Br());function ts(e){e.setAttribute("data-md-copying","");let t=e.closest("[data-copy]"),r=t?t.getAttribute("data-copy"):e.innerText;return e.removeAttribute("data-md-copying"),r.trimEnd()}function Zn({alert$:e}){Jr.default.isSupported()&&new j(t=>{new Jr.default("[data-clipboard-target], [data-clipboard-text]",{text:r=>r.getAttribute("data-clipboard-text")||ts(R(r.getAttribute("data-clipboard-target")))}).on("success",r=>t.next(r))}).pipe(w(t=>{t.trigger.focus()}),m(()=>Ee("clipboard.copied"))).subscribe(e)}function ei(e,t){return e.protocol=t.protocol,e.hostname=t.hostname,e}function rs(e,t){let r=new Map;for(let o of P("url",e)){let n=R("loc",o),i=[ei(new URL(n.textContent),t)];r.set(`${i[0]}`,i);for(let a of P("[rel=alternate]",o)){let s=a.getAttribute("href");s!=null&&i.push(ei(new URL(s),t))}}return r}function ur(e){return un(new URL("sitemap.xml",e)).pipe(m(t=>rs(t,new URL(e))),de(()=>I(new Map)))}function os(e,t){if(!(e.target instanceof Element))return S;let r=e.target.closest("a");if(r===null)return S;if(r.target||e.metaKey||e.ctrlKey)return S;let o=new URL(r.href);return o.search=o.hash="",t.has(`${o}`)?(e.preventDefault(),I(new URL(r.href))):S}function ti(e){let t=new Map;for(let r of P(":scope > *",e.head))t.set(r.outerHTML,r);return t}function ri(e){for(let t of P("[href], [src]",e))for(let r of["href","src"]){let o=t.getAttribute(r);if(o&&!/^(?:[a-z]+:)?\/\//i.test(o)){t[r]=t[r];break}}return I(e)}function ns(e){for(let o of["[data-md-component=announce]","[data-md-component=container]","[data-md-component=header-topic]","[data-md-component=outdated]","[data-md-component=logo]","[data-md-component=skip]",...B("navigation.tabs.sticky")?["[data-md-component=tabs]"]:[]]){let n=fe(o),i=fe(o,e);typeof n!="undefined"&&typeof i!="undefined"&&n.replaceWith(i)}let t=ti(document);for(let[o,n]of ti(e))t.has(o)?t.delete(o):document.head.appendChild(n);for(let o of t.values()){let n=o.getAttribute("name");n!=="theme-color"&&n!=="color-scheme"&&o.remove()}let r=Se("container");return We(P("script",r)).pipe(v(o=>{let n=e.createElement("script");if(o.src){for(let i of o.getAttributeNames())n.setAttribute(i,o.getAttribute(i));return o.replaceWith(n),new j(i=>{n.onload=()=>i.complete()})}else return n.textContent=o.textContent,o.replaceWith(n),S}),Z(),ie(document))}function oi({location$:e,viewport$:t,progress$:r}){let o=xe();if(location.protocol==="file:")return S;let n=ur(o.base);I(document).subscribe(ri);let i=h(document.body,"click").pipe(He(n),v(([p,c])=>os(p,c)),pe()),a=h(window,"popstate").pipe(m(ye),pe());i.pipe(re(t)).subscribe(([p,{offset:c}])=>{history.replaceState(c,""),history.pushState(null,"",p)}),O(i,a).subscribe(e);let s=e.pipe(te("pathname"),v(p=>fn(p,{progress$:r}).pipe(de(()=>(lt(p,!0),S)))),v(ri),v(ns),pe());return O(s.pipe(re(e,(p,c)=>c)),s.pipe(v(()=>e),te("hash")),e.pipe(K((p,c)=>p.pathname===c.pathname&&p.hash===c.hash),v(()=>i),w(()=>history.back()))).subscribe(p=>{var c,l;history.state!==null||!p.hash?window.scrollTo(0,(l=(c=history.state)==null?void 0:c.y)!=null?l:0):(history.scrollRestoration="auto",pn(p.hash),history.scrollRestoration="manual")}),e.subscribe(()=>{history.scrollRestoration="manual"}),h(window,"beforeunload").subscribe(()=>{history.scrollRestoration="auto"}),t.pipe(te("offset"),_e(100)).subscribe(({offset:p})=>{history.replaceState(p,"")}),s}var ni=Mt(qr());function ii(e){let t=e.separator.split("|").map(n=>n.replace(/(\(\?[!=<][^)]+\))/g,"").length===0?"\uFFFD":n).join("|"),r=new RegExp(t,"img"),o=(n,i,a)=>`${i}${a}`;return n=>{n=n.replace(/[\s*+\-:~^]+/g," ").trim();let i=new RegExp(`(^|${e.separator}|)(${n.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&").replace(r,"|")})`,"img");return a=>(0,ni.default)(a).replace(i,o).replace(/<\/mark>(\s+)]*>/img,"$1")}}function jt(e){return e.type===1}function dr(e){return e.type===3}function ai(e,t){let r=yn(e);return O(I(location.protocol!=="file:"),ze("search")).pipe(Ae(o=>o),v(()=>t)).subscribe(({config:o,docs:n})=>r.next({type:0,data:{config:o,docs:n,options:{suggest:B("search.suggest")}}})),r}function si(e){var l;let{selectedVersionSitemap:t,selectedVersionBaseURL:r,currentLocation:o,currentBaseURL:n}=e,i=(l=Xr(n))==null?void 0:l.pathname;if(i===void 0)return;let a=ss(o.pathname,i);if(a===void 0)return;let s=ps(t.keys());if(!t.has(s))return;let p=Xr(a,s);if(!p||!t.has(p.href))return;let c=Xr(a,r);if(c)return c.hash=o.hash,c.search=o.search,c}function Xr(e,t){try{return new URL(e,t)}catch(r){return}}function ss(e,t){if(e.startsWith(t))return e.slice(t.length)}function cs(e,t){let r=Math.min(e.length,t.length),o;for(o=0;oS)),o=r.pipe(m(n=>{let[,i]=t.base.match(/([^/]+)\/?$/);return n.find(({version:a,aliases:s})=>a===i||s.includes(i))||n[0]}));r.pipe(m(n=>new Map(n.map(i=>[`${new URL(`../${i.version}/`,t.base)}`,i]))),v(n=>h(document.body,"click").pipe(b(i=>!i.metaKey&&!i.ctrlKey),re(o),v(([i,a])=>{if(i.target instanceof Element){let s=i.target.closest("a");if(s&&!s.target&&n.has(s.href)){let p=s.href;return!i.target.closest(".md-version")&&n.get(p)===a?S:(i.preventDefault(),I(new URL(p)))}}return S}),v(i=>ur(i).pipe(m(a=>{var s;return(s=si({selectedVersionSitemap:a,selectedVersionBaseURL:i,currentLocation:ye(),currentBaseURL:t.base}))!=null?s:i})))))).subscribe(n=>lt(n,!0)),z([r,o]).subscribe(([n,i])=>{R(".md-header__topic").appendChild(Cn(n,i))}),e.pipe(v(()=>o)).subscribe(n=>{var a;let i=__md_get("__outdated",sessionStorage);if(i===null){i=!0;let s=((a=t.version)==null?void 0:a.default)||"latest";Array.isArray(s)||(s=[s]);e:for(let p of s)for(let c of n.aliases.concat(n.version))if(new RegExp(p,"i").test(c)){i=!1;break e}__md_set("__outdated",i,sessionStorage)}if(i)for(let s of ae("outdated"))s.hidden=!1})}function ls(e,{worker$:t}){let{searchParams:r}=ye();r.has("q")&&(Je("search",!0),e.value=r.get("q"),e.focus(),ze("search").pipe(Ae(i=>!i)).subscribe(()=>{let i=ye();i.searchParams.delete("q"),history.replaceState({},"",`${i}`)}));let o=et(e),n=O(t.pipe(Ae(jt)),h(e,"keyup"),o).pipe(m(()=>e.value),K());return z([n,o]).pipe(m(([i,a])=>({value:i,focus:a})),G(1))}function pi(e,{worker$:t}){let r=new g,o=r.pipe(Z(),ie(!0));z([t.pipe(Ae(jt)),r],(i,a)=>a).pipe(te("value")).subscribe(({value:i})=>t.next({type:2,data:i})),r.pipe(te("focus")).subscribe(({focus:i})=>{i&&Je("search",i)}),h(e.form,"reset").pipe(W(o)).subscribe(()=>e.focus());let n=R("header [for=__search]");return h(n,"click").subscribe(()=>e.focus()),ls(e,{worker$:t}).pipe(w(i=>r.next(i)),_(()=>r.complete()),m(i=>$({ref:e},i)),G(1))}function li(e,{worker$:t,query$:r}){let o=new g,n=on(e.parentElement).pipe(b(Boolean)),i=e.parentElement,a=R(":scope > :first-child",e),s=R(":scope > :last-child",e);ze("search").subscribe(l=>s.setAttribute("role",l?"list":"presentation")),o.pipe(re(r),Wr(t.pipe(Ae(jt)))).subscribe(([{items:l},{value:f}])=>{switch(l.length){case 0:a.textContent=f.length?Ee("search.result.none"):Ee("search.result.placeholder");break;case 1:a.textContent=Ee("search.result.one");break;default:let u=sr(l.length);a.textContent=Ee("search.result.other",u)}});let p=o.pipe(w(()=>s.innerHTML=""),v(({items:l})=>O(I(...l.slice(0,10)),I(...l.slice(10)).pipe(Be(4),Vr(n),v(([f])=>f)))),m(Mn),pe());return p.subscribe(l=>s.appendChild(l)),p.pipe(ne(l=>{let f=fe("details",l);return typeof f=="undefined"?S:h(f,"toggle").pipe(W(o),m(()=>f))})).subscribe(l=>{l.open===!1&&l.offsetTop<=i.scrollTop&&i.scrollTo({top:l.offsetTop})}),t.pipe(b(dr),m(({data:l})=>l)).pipe(w(l=>o.next(l)),_(()=>o.complete()),m(l=>$({ref:e},l)))}function ms(e,{query$:t}){return t.pipe(m(({value:r})=>{let o=ye();return o.hash="",r=r.replace(/\s+/g,"+").replace(/&/g,"%26").replace(/=/g,"%3D"),o.search=`q=${r}`,{url:o}}))}function mi(e,t){let r=new g,o=r.pipe(Z(),ie(!0));return r.subscribe(({url:n})=>{e.setAttribute("data-clipboard-text",e.href),e.href=`${n}`}),h(e,"click").pipe(W(o)).subscribe(n=>n.preventDefault()),ms(e,t).pipe(w(n=>r.next(n)),_(()=>r.complete()),m(n=>$({ref:e},n)))}function fi(e,{worker$:t,keyboard$:r}){let o=new g,n=Se("search-query"),i=O(h(n,"keydown"),h(n,"focus")).pipe(ve(se),m(()=>n.value),K());return o.pipe(He(i),m(([{suggest:s},p])=>{let c=p.split(/([\s-]+)/);if(s!=null&&s.length&&c[c.length-1]){let l=s[s.length-1];l.startsWith(c[c.length-1])&&(c[c.length-1]=l)}else c.length=0;return c})).subscribe(s=>e.innerHTML=s.join("").replace(/\s/g," ")),r.pipe(b(({mode:s})=>s==="search")).subscribe(s=>{switch(s.type){case"ArrowRight":e.innerText.length&&n.selectionStart===n.value.length&&(n.value=e.innerText);break}}),t.pipe(b(dr),m(({data:s})=>s)).pipe(w(s=>o.next(s)),_(()=>o.complete()),m(()=>({ref:e})))}function ui(e,{index$:t,keyboard$:r}){let o=xe();try{let n=ai(o.search,t),i=Se("search-query",e),a=Se("search-result",e);h(e,"click").pipe(b(({target:p})=>p instanceof Element&&!!p.closest("a"))).subscribe(()=>Je("search",!1)),r.pipe(b(({mode:p})=>p==="search")).subscribe(p=>{let c=Ie();switch(p.type){case"Enter":if(c===i){let l=new Map;for(let f of P(":first-child [href]",a)){let u=f.firstElementChild;l.set(f,parseFloat(u.getAttribute("data-md-score")))}if(l.size){let[[f]]=[...l].sort(([,u],[,d])=>d-u);f.click()}p.claim()}break;case"Escape":case"Tab":Je("search",!1),i.blur();break;case"ArrowUp":case"ArrowDown":if(typeof c=="undefined")i.focus();else{let l=[i,...P(":not(details) > [href], summary, details[open] [href]",a)],f=Math.max(0,(Math.max(0,l.indexOf(c))+l.length+(p.type==="ArrowUp"?-1:1))%l.length);l[f].focus()}p.claim();break;default:i!==Ie()&&i.focus()}}),r.pipe(b(({mode:p})=>p==="global")).subscribe(p=>{switch(p.type){case"f":case"s":case"/":i.focus(),i.select(),p.claim();break}});let s=pi(i,{worker$:n});return O(s,li(a,{worker$:n,query$:s})).pipe(Re(...ae("search-share",e).map(p=>mi(p,{query$:s})),...ae("search-suggest",e).map(p=>fi(p,{worker$:n,keyboard$:r}))))}catch(n){return e.hidden=!0,Ye}}function di(e,{index$:t,location$:r}){return z([t,r.pipe(Q(ye()),b(o=>!!o.searchParams.get("h")))]).pipe(m(([o,n])=>ii(o.config)(n.searchParams.get("h"))),m(o=>{var a;let n=new Map,i=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(let s=i.nextNode();s;s=i.nextNode())if((a=s.parentElement)!=null&&a.offsetHeight){let p=s.textContent,c=o(p);c.length>p.length&&n.set(s,c)}for(let[s,p]of n){let{childNodes:c}=x("span",null,p);s.replaceWith(...Array.from(c))}return{ref:e,nodes:n}}))}function fs(e,{viewport$:t,main$:r}){let o=e.closest(".md-grid"),n=o.offsetTop-o.parentElement.offsetTop;return z([r,t]).pipe(m(([{offset:i,height:a},{offset:{y:s}}])=>(a=a+Math.min(n,Math.max(0,s-i))-n,{height:a,locked:s>=i+n})),K((i,a)=>i.height===a.height&&i.locked===a.locked))}function Zr(e,o){var n=o,{header$:t}=n,r=so(n,["header$"]);let i=R(".md-sidebar__scrollwrap",e),{y:a}=Ve(i);return C(()=>{let s=new g,p=s.pipe(Z(),ie(!0)),c=s.pipe(Me(0,me));return c.pipe(re(t)).subscribe({next([{height:l},{height:f}]){i.style.height=`${l-2*a}px`,e.style.top=`${f}px`},complete(){i.style.height="",e.style.top=""}}),c.pipe(Ae()).subscribe(()=>{for(let l of P(".md-nav__link--active[href]",e)){if(!l.clientHeight)continue;let f=l.closest(".md-sidebar__scrollwrap");if(typeof f!="undefined"){let u=l.offsetTop-f.offsetTop,{height:d}=ce(f);f.scrollTo({top:u-d/2})}}}),ue(P("label[tabindex]",e)).pipe(ne(l=>h(l,"click").pipe(ve(se),m(()=>l),W(p)))).subscribe(l=>{let f=R(`[id="${l.htmlFor}"]`);R(`[aria-labelledby="${l.id}"]`).setAttribute("aria-expanded",`${f.checked}`)}),fs(e,r).pipe(w(l=>s.next(l)),_(()=>s.complete()),m(l=>$({ref:e},l)))})}function hi(e,t){if(typeof t!="undefined"){let r=`https://api.github.com/repos/${e}/${t}`;return st(je(`${r}/releases/latest`).pipe(de(()=>S),m(o=>({version:o.tag_name})),De({})),je(r).pipe(de(()=>S),m(o=>({stars:o.stargazers_count,forks:o.forks_count})),De({}))).pipe(m(([o,n])=>$($({},o),n)))}else{let r=`https://api.github.com/users/${e}`;return je(r).pipe(m(o=>({repositories:o.public_repos})),De({}))}}function bi(e,t){let r=`https://${e}/api/v4/projects/${encodeURIComponent(t)}`;return st(je(`${r}/releases/permalink/latest`).pipe(de(()=>S),m(({tag_name:o})=>({version:o})),De({})),je(r).pipe(de(()=>S),m(({star_count:o,forks_count:n})=>({stars:o,forks:n})),De({}))).pipe(m(([o,n])=>$($({},o),n)))}function vi(e){let t=e.match(/^.+github\.com\/([^/]+)\/?([^/]+)?/i);if(t){let[,r,o]=t;return hi(r,o)}if(t=e.match(/^.+?([^/]*gitlab[^/]+)\/(.+?)\/?$/i),t){let[,r,o]=t;return bi(r,o)}return S}var us;function ds(e){return us||(us=C(()=>{let t=__md_get("__source",sessionStorage);if(t)return I(t);if(ae("consent").length){let o=__md_get("__consent");if(!(o&&o.github))return S}return vi(e.href).pipe(w(o=>__md_set("__source",o,sessionStorage)))}).pipe(de(()=>S),b(t=>Object.keys(t).length>0),m(t=>({facts:t})),G(1)))}function gi(e){let t=R(":scope > :last-child",e);return C(()=>{let r=new g;return r.subscribe(({facts:o})=>{t.appendChild(_n(o)),t.classList.add("md-source__repository--active")}),ds(e).pipe(w(o=>r.next(o)),_(()=>r.complete()),m(o=>$({ref:e},o)))})}function hs(e,{viewport$:t,header$:r}){return ge(document.body).pipe(v(()=>mr(e,{header$:r,viewport$:t})),m(({offset:{y:o}})=>({hidden:o>=10})),te("hidden"))}function yi(e,t){return C(()=>{let r=new g;return r.subscribe({next({hidden:o}){e.hidden=o},complete(){e.hidden=!1}}),(B("navigation.tabs.sticky")?I({hidden:!1}):hs(e,t)).pipe(w(o=>r.next(o)),_(()=>r.complete()),m(o=>$({ref:e},o)))})}function bs(e,{viewport$:t,header$:r}){let o=new Map,n=P(".md-nav__link",e);for(let s of n){let p=decodeURIComponent(s.hash.substring(1)),c=fe(`[id="${p}"]`);typeof c!="undefined"&&o.set(s,c)}let i=r.pipe(te("height"),m(({height:s})=>{let p=Se("main"),c=R(":scope > :first-child",p);return s+.8*(c.offsetTop-p.offsetTop)}),pe());return ge(document.body).pipe(te("height"),v(s=>C(()=>{let p=[];return I([...o].reduce((c,[l,f])=>{for(;p.length&&o.get(p[p.length-1]).tagName>=f.tagName;)p.pop();let u=f.offsetTop;for(;!u&&f.parentElement;)f=f.parentElement,u=f.offsetTop;let d=f.offsetParent;for(;d;d=d.offsetParent)u+=d.offsetTop;return c.set([...p=[...p,l]].reverse(),u)},new Map))}).pipe(m(p=>new Map([...p].sort(([,c],[,l])=>c-l))),He(i),v(([p,c])=>t.pipe(Fr(([l,f],{offset:{y:u},size:d})=>{let y=u+d.height>=Math.floor(s.height);for(;f.length;){let[,L]=f[0];if(L-c=u&&!y)f=[l.pop(),...f];else break}return[l,f]},[[],[...p]]),K((l,f)=>l[0]===f[0]&&l[1]===f[1])))))).pipe(m(([s,p])=>({prev:s.map(([c])=>c),next:p.map(([c])=>c)})),Q({prev:[],next:[]}),Be(2,1),m(([s,p])=>s.prev.length{let i=new g,a=i.pipe(Z(),ie(!0));if(i.subscribe(({prev:s,next:p})=>{for(let[c]of p)c.classList.remove("md-nav__link--passed"),c.classList.remove("md-nav__link--active");for(let[c,[l]]of s.entries())l.classList.add("md-nav__link--passed"),l.classList.toggle("md-nav__link--active",c===s.length-1)}),B("toc.follow")){let s=O(t.pipe(_e(1),m(()=>{})),t.pipe(_e(250),m(()=>"smooth")));i.pipe(b(({prev:p})=>p.length>0),He(o.pipe(ve(se))),re(s)).subscribe(([[{prev:p}],c])=>{let[l]=p[p.length-1];if(l.offsetHeight){let f=cr(l);if(typeof f!="undefined"){let u=l.offsetTop-f.offsetTop,{height:d}=ce(f);f.scrollTo({top:u-d/2,behavior:c})}}})}return B("navigation.tracking")&&t.pipe(W(a),te("offset"),_e(250),Ce(1),W(n.pipe(Ce(1))),ct({delay:250}),re(i)).subscribe(([,{prev:s}])=>{let p=ye(),c=s[s.length-1];if(c&&c.length){let[l]=c,{hash:f}=new URL(l.href);p.hash!==f&&(p.hash=f,history.replaceState({},"",`${p}`))}else p.hash="",history.replaceState({},"",`${p}`)}),bs(e,{viewport$:t,header$:r}).pipe(w(s=>i.next(s)),_(()=>i.complete()),m(s=>$({ref:e},s)))})}function vs(e,{viewport$:t,main$:r,target$:o}){let n=t.pipe(m(({offset:{y:a}})=>a),Be(2,1),m(([a,s])=>a>s&&s>0),K()),i=r.pipe(m(({active:a})=>a));return z([i,n]).pipe(m(([a,s])=>!(a&&s)),K(),W(o.pipe(Ce(1))),ie(!0),ct({delay:250}),m(a=>({hidden:a})))}function Ei(e,{viewport$:t,header$:r,main$:o,target$:n}){let i=new g,a=i.pipe(Z(),ie(!0));return i.subscribe({next({hidden:s}){e.hidden=s,s?(e.setAttribute("tabindex","-1"),e.blur()):e.removeAttribute("tabindex")},complete(){e.style.top="",e.hidden=!0,e.removeAttribute("tabindex")}}),r.pipe(W(a),te("height")).subscribe(({height:s})=>{e.style.top=`${s+16}px`}),h(e,"click").subscribe(s=>{s.preventDefault(),window.scrollTo({top:0})}),vs(e,{viewport$:t,main$:o,target$:n}).pipe(w(s=>i.next(s)),_(()=>i.complete()),m(s=>$({ref:e},s)))}function wi({document$:e,viewport$:t}){e.pipe(v(()=>P(".md-ellipsis")),ne(r=>tt(r).pipe(W(e.pipe(Ce(1))),b(o=>o),m(()=>r),Te(1))),b(r=>r.offsetWidth{let o=r.innerText,n=r.closest("a")||r;return n.title=o,B("content.tooltips")?mt(n,{viewport$:t}).pipe(W(e.pipe(Ce(1))),_(()=>n.removeAttribute("title"))):S})).subscribe(),B("content.tooltips")&&e.pipe(v(()=>P(".md-status")),ne(r=>mt(r,{viewport$:t}))).subscribe()}function Ti({document$:e,tablet$:t}){e.pipe(v(()=>P(".md-toggle--indeterminate")),w(r=>{r.indeterminate=!0,r.checked=!1}),ne(r=>h(r,"change").pipe(Dr(()=>r.classList.contains("md-toggle--indeterminate")),m(()=>r))),re(t)).subscribe(([r,o])=>{r.classList.remove("md-toggle--indeterminate"),o&&(r.checked=!1)})}function gs(){return/(iPad|iPhone|iPod)/.test(navigator.userAgent)}function Si({document$:e}){e.pipe(v(()=>P("[data-md-scrollfix]")),w(t=>t.removeAttribute("data-md-scrollfix")),b(gs),ne(t=>h(t,"touchstart").pipe(m(()=>t)))).subscribe(t=>{let r=t.scrollTop;r===0?t.scrollTop=1:r+t.offsetHeight===t.scrollHeight&&(t.scrollTop=r-1)})}function Oi({viewport$:e,tablet$:t}){z([ze("search"),t]).pipe(m(([r,o])=>r&&!o),v(r=>I(r).pipe(Ge(r?400:100))),re(e)).subscribe(([r,{offset:{y:o}}])=>{if(r)document.body.setAttribute("data-md-scrolllock",""),document.body.style.top=`-${o}px`;else{let n=-1*parseInt(document.body.style.top,10);document.body.removeAttribute("data-md-scrolllock"),document.body.style.top="",n&&window.scrollTo(0,n)}})}Object.entries||(Object.entries=function(e){let t=[];for(let r of Object.keys(e))t.push([r,e[r]]);return t});Object.values||(Object.values=function(e){let t=[];for(let r of Object.keys(e))t.push(e[r]);return t});typeof Element!="undefined"&&(Element.prototype.scrollTo||(Element.prototype.scrollTo=function(e,t){typeof e=="object"?(this.scrollLeft=e.left,this.scrollTop=e.top):(this.scrollLeft=e,this.scrollTop=t)}),Element.prototype.replaceWith||(Element.prototype.replaceWith=function(...e){let t=this.parentNode;if(t){e.length===0&&t.removeChild(this);for(let r=e.length-1;r>=0;r--){let o=e[r];typeof o=="string"?o=document.createTextNode(o):o.parentNode&&o.parentNode.removeChild(o),r?t.insertBefore(this.previousSibling,o):t.replaceChild(o,this)}}}));function ys(){return location.protocol==="file:"?Tt(`${new URL("search/search_index.js",eo.base)}`).pipe(m(()=>__index),G(1)):je(new URL("search/search_index.json",eo.base))}document.documentElement.classList.remove("no-js");document.documentElement.classList.add("js");var ot=Go(),Ut=sn(),Lt=ln(Ut),to=an(),Oe=gn(),hr=Pt("(min-width: 960px)"),Mi=Pt("(min-width: 1220px)"),_i=mn(),eo=xe(),Ai=document.forms.namedItem("search")?ys():Ye,ro=new g;Zn({alert$:ro});var oo=new g;B("navigation.instant")&&oi({location$:Ut,viewport$:Oe,progress$:oo}).subscribe(ot);var Li;((Li=eo.version)==null?void 0:Li.provider)==="mike"&&ci({document$:ot});O(Ut,Lt).pipe(Ge(125)).subscribe(()=>{Je("drawer",!1),Je("search",!1)});to.pipe(b(({mode:e})=>e==="global")).subscribe(e=>{switch(e.type){case"p":case",":let t=fe("link[rel=prev]");typeof t!="undefined"&<(t);break;case"n":case".":let r=fe("link[rel=next]");typeof r!="undefined"&<(r);break;case"Enter":let o=Ie();o instanceof HTMLLabelElement&&o.click()}});wi({viewport$:Oe,document$:ot});Ti({document$:ot,tablet$:hr});Si({document$:ot});Oi({viewport$:Oe,tablet$:hr});var rt=Kn(Se("header"),{viewport$:Oe}),Ft=ot.pipe(m(()=>Se("main")),v(e=>Gn(e,{viewport$:Oe,header$:rt})),G(1)),xs=O(...ae("consent").map(e=>En(e,{target$:Lt})),...ae("dialog").map(e=>qn(e,{alert$:ro})),...ae("palette").map(e=>Jn(e)),...ae("progress").map(e=>Xn(e,{progress$:oo})),...ae("search").map(e=>ui(e,{index$:Ai,keyboard$:to})),...ae("source").map(e=>gi(e))),Es=C(()=>O(...ae("announce").map(e=>xn(e)),...ae("content").map(e=>zn(e,{viewport$:Oe,target$:Lt,print$:_i})),...ae("content").map(e=>B("search.highlight")?di(e,{index$:Ai,location$:Ut}):S),...ae("header").map(e=>Yn(e,{viewport$:Oe,header$:rt,main$:Ft})),...ae("header-title").map(e=>Bn(e,{viewport$:Oe,header$:rt})),...ae("sidebar").map(e=>e.getAttribute("data-md-type")==="navigation"?Nr(Mi,()=>Zr(e,{viewport$:Oe,header$:rt,main$:Ft})):Nr(hr,()=>Zr(e,{viewport$:Oe,header$:rt,main$:Ft}))),...ae("tabs").map(e=>yi(e,{viewport$:Oe,header$:rt})),...ae("toc").map(e=>xi(e,{viewport$:Oe,header$:rt,main$:Ft,target$:Lt})),...ae("top").map(e=>Ei(e,{viewport$:Oe,header$:rt,main$:Ft,target$:Lt})))),Ci=ot.pipe(v(()=>Es),Re(xs),G(1));Ci.subscribe();window.document$=ot;window.location$=Ut;window.target$=Lt;window.keyboard$=to;window.viewport$=Oe;window.tablet$=hr;window.screen$=Mi;window.print$=_i;window.alert$=ro;window.progress$=oo;window.component$=Ci;})(); +//# sourceMappingURL=bundle.5090c770.min.js.map + diff --git a/site/assets/javascripts/bundle.5090c770.min.js.map b/site/assets/javascripts/bundle.5090c770.min.js.map new file mode 100644 index 00000000..c29855d8 --- /dev/null +++ b/site/assets/javascripts/bundle.5090c770.min.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["node_modules/focus-visible/dist/focus-visible.js", "node_modules/escape-html/index.js", "node_modules/clipboard/dist/clipboard.js", "src/templates/assets/javascripts/bundle.ts", "node_modules/tslib/tslib.es6.mjs", "node_modules/rxjs/src/internal/util/isFunction.ts", "node_modules/rxjs/src/internal/util/createErrorClass.ts", "node_modules/rxjs/src/internal/util/UnsubscriptionError.ts", "node_modules/rxjs/src/internal/util/arrRemove.ts", "node_modules/rxjs/src/internal/Subscription.ts", "node_modules/rxjs/src/internal/config.ts", "node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts", "node_modules/rxjs/src/internal/util/reportUnhandledError.ts", "node_modules/rxjs/src/internal/util/noop.ts", "node_modules/rxjs/src/internal/NotificationFactories.ts", "node_modules/rxjs/src/internal/util/errorContext.ts", "node_modules/rxjs/src/internal/Subscriber.ts", "node_modules/rxjs/src/internal/symbol/observable.ts", "node_modules/rxjs/src/internal/util/identity.ts", "node_modules/rxjs/src/internal/util/pipe.ts", "node_modules/rxjs/src/internal/Observable.ts", "node_modules/rxjs/src/internal/util/lift.ts", "node_modules/rxjs/src/internal/operators/OperatorSubscriber.ts", "node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts", "node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts", "node_modules/rxjs/src/internal/Subject.ts", "node_modules/rxjs/src/internal/BehaviorSubject.ts", "node_modules/rxjs/src/internal/scheduler/dateTimestampProvider.ts", "node_modules/rxjs/src/internal/ReplaySubject.ts", "node_modules/rxjs/src/internal/scheduler/Action.ts", "node_modules/rxjs/src/internal/scheduler/intervalProvider.ts", "node_modules/rxjs/src/internal/scheduler/AsyncAction.ts", "node_modules/rxjs/src/internal/Scheduler.ts", "node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts", "node_modules/rxjs/src/internal/scheduler/async.ts", "node_modules/rxjs/src/internal/scheduler/QueueAction.ts", "node_modules/rxjs/src/internal/scheduler/QueueScheduler.ts", "node_modules/rxjs/src/internal/scheduler/queue.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts", "node_modules/rxjs/src/internal/scheduler/animationFrame.ts", "node_modules/rxjs/src/internal/observable/empty.ts", "node_modules/rxjs/src/internal/util/isScheduler.ts", "node_modules/rxjs/src/internal/util/args.ts", "node_modules/rxjs/src/internal/util/isArrayLike.ts", "node_modules/rxjs/src/internal/util/isPromise.ts", "node_modules/rxjs/src/internal/util/isInteropObservable.ts", "node_modules/rxjs/src/internal/util/isAsyncIterable.ts", "node_modules/rxjs/src/internal/util/throwUnobservableError.ts", "node_modules/rxjs/src/internal/symbol/iterator.ts", "node_modules/rxjs/src/internal/util/isIterable.ts", "node_modules/rxjs/src/internal/util/isReadableStreamLike.ts", "node_modules/rxjs/src/internal/observable/innerFrom.ts", "node_modules/rxjs/src/internal/util/executeSchedule.ts", "node_modules/rxjs/src/internal/operators/observeOn.ts", "node_modules/rxjs/src/internal/operators/subscribeOn.ts", "node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts", "node_modules/rxjs/src/internal/scheduled/schedulePromise.ts", "node_modules/rxjs/src/internal/scheduled/scheduleArray.ts", "node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts", "node_modules/rxjs/src/internal/scheduled/scheduled.ts", "node_modules/rxjs/src/internal/observable/from.ts", "node_modules/rxjs/src/internal/observable/of.ts", "node_modules/rxjs/src/internal/observable/throwError.ts", "node_modules/rxjs/src/internal/util/EmptyError.ts", "node_modules/rxjs/src/internal/util/isDate.ts", "node_modules/rxjs/src/internal/operators/map.ts", "node_modules/rxjs/src/internal/util/mapOneOrManyArgs.ts", "node_modules/rxjs/src/internal/util/argsArgArrayOrObject.ts", "node_modules/rxjs/src/internal/util/createObject.ts", "node_modules/rxjs/src/internal/observable/combineLatest.ts", "node_modules/rxjs/src/internal/operators/mergeInternals.ts", "node_modules/rxjs/src/internal/operators/mergeMap.ts", "node_modules/rxjs/src/internal/operators/mergeAll.ts", "node_modules/rxjs/src/internal/operators/concatAll.ts", "node_modules/rxjs/src/internal/observable/concat.ts", "node_modules/rxjs/src/internal/observable/defer.ts", "node_modules/rxjs/src/internal/observable/fromEvent.ts", "node_modules/rxjs/src/internal/observable/fromEventPattern.ts", "node_modules/rxjs/src/internal/observable/timer.ts", "node_modules/rxjs/src/internal/observable/merge.ts", "node_modules/rxjs/src/internal/observable/never.ts", "node_modules/rxjs/src/internal/util/argsOrArgArray.ts", "node_modules/rxjs/src/internal/operators/filter.ts", "node_modules/rxjs/src/internal/observable/zip.ts", "node_modules/rxjs/src/internal/operators/audit.ts", "node_modules/rxjs/src/internal/operators/auditTime.ts", "node_modules/rxjs/src/internal/operators/bufferCount.ts", "node_modules/rxjs/src/internal/operators/catchError.ts", "node_modules/rxjs/src/internal/operators/scanInternals.ts", "node_modules/rxjs/src/internal/operators/combineLatest.ts", "node_modules/rxjs/src/internal/operators/combineLatestWith.ts", "node_modules/rxjs/src/internal/operators/debounce.ts", "node_modules/rxjs/src/internal/operators/debounceTime.ts", "node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts", "node_modules/rxjs/src/internal/operators/take.ts", "node_modules/rxjs/src/internal/operators/ignoreElements.ts", "node_modules/rxjs/src/internal/operators/mapTo.ts", "node_modules/rxjs/src/internal/operators/delayWhen.ts", "node_modules/rxjs/src/internal/operators/delay.ts", "node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts", "node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts", "node_modules/rxjs/src/internal/operators/throwIfEmpty.ts", "node_modules/rxjs/src/internal/operators/endWith.ts", "node_modules/rxjs/src/internal/operators/finalize.ts", "node_modules/rxjs/src/internal/operators/first.ts", "node_modules/rxjs/src/internal/operators/takeLast.ts", "node_modules/rxjs/src/internal/operators/merge.ts", "node_modules/rxjs/src/internal/operators/mergeWith.ts", "node_modules/rxjs/src/internal/operators/repeat.ts", "node_modules/rxjs/src/internal/operators/scan.ts", "node_modules/rxjs/src/internal/operators/share.ts", "node_modules/rxjs/src/internal/operators/shareReplay.ts", "node_modules/rxjs/src/internal/operators/skip.ts", "node_modules/rxjs/src/internal/operators/skipUntil.ts", "node_modules/rxjs/src/internal/operators/startWith.ts", "node_modules/rxjs/src/internal/operators/switchMap.ts", "node_modules/rxjs/src/internal/operators/takeUntil.ts", "node_modules/rxjs/src/internal/operators/takeWhile.ts", "node_modules/rxjs/src/internal/operators/tap.ts", "node_modules/rxjs/src/internal/operators/throttle.ts", "node_modules/rxjs/src/internal/operators/throttleTime.ts", "node_modules/rxjs/src/internal/operators/withLatestFrom.ts", "node_modules/rxjs/src/internal/operators/zip.ts", "node_modules/rxjs/src/internal/operators/zipWith.ts", "src/templates/assets/javascripts/browser/document/index.ts", "src/templates/assets/javascripts/browser/element/_/index.ts", "src/templates/assets/javascripts/browser/element/focus/index.ts", "src/templates/assets/javascripts/browser/element/hover/index.ts", "src/templates/assets/javascripts/utilities/h/index.ts", "src/templates/assets/javascripts/utilities/round/index.ts", "src/templates/assets/javascripts/browser/script/index.ts", "src/templates/assets/javascripts/browser/element/size/_/index.ts", "src/templates/assets/javascripts/browser/element/size/content/index.ts", "src/templates/assets/javascripts/browser/element/offset/_/index.ts", "src/templates/assets/javascripts/browser/element/offset/content/index.ts", "src/templates/assets/javascripts/browser/element/visibility/index.ts", "src/templates/assets/javascripts/browser/toggle/index.ts", "src/templates/assets/javascripts/browser/keyboard/index.ts", "src/templates/assets/javascripts/browser/location/_/index.ts", "src/templates/assets/javascripts/browser/location/hash/index.ts", "src/templates/assets/javascripts/browser/media/index.ts", "src/templates/assets/javascripts/browser/request/index.ts", "src/templates/assets/javascripts/browser/viewport/offset/index.ts", "src/templates/assets/javascripts/browser/viewport/size/index.ts", "src/templates/assets/javascripts/browser/viewport/_/index.ts", "src/templates/assets/javascripts/browser/viewport/at/index.ts", "src/templates/assets/javascripts/browser/worker/index.ts", "src/templates/assets/javascripts/_/index.ts", "src/templates/assets/javascripts/components/_/index.ts", "src/templates/assets/javascripts/components/announce/index.ts", "src/templates/assets/javascripts/components/consent/index.ts", "src/templates/assets/javascripts/templates/tooltip/index.tsx", "src/templates/assets/javascripts/templates/annotation/index.tsx", "src/templates/assets/javascripts/templates/clipboard/index.tsx", "src/templates/assets/javascripts/templates/search/index.tsx", "src/templates/assets/javascripts/templates/source/index.tsx", "src/templates/assets/javascripts/templates/tabbed/index.tsx", "src/templates/assets/javascripts/templates/table/index.tsx", "src/templates/assets/javascripts/templates/version/index.tsx", "src/templates/assets/javascripts/components/tooltip2/index.ts", "src/templates/assets/javascripts/components/content/annotation/_/index.ts", "src/templates/assets/javascripts/components/content/annotation/list/index.ts", "src/templates/assets/javascripts/components/content/annotation/block/index.ts", "src/templates/assets/javascripts/components/content/code/_/index.ts", "src/templates/assets/javascripts/components/content/details/index.ts", "src/templates/assets/javascripts/components/content/mermaid/index.css", "src/templates/assets/javascripts/components/content/mermaid/index.ts", "src/templates/assets/javascripts/components/content/table/index.ts", "src/templates/assets/javascripts/components/content/tabs/index.ts", "src/templates/assets/javascripts/components/content/_/index.ts", "src/templates/assets/javascripts/components/dialog/index.ts", "src/templates/assets/javascripts/components/tooltip/index.ts", "src/templates/assets/javascripts/components/header/_/index.ts", "src/templates/assets/javascripts/components/header/title/index.ts", "src/templates/assets/javascripts/components/main/index.ts", "src/templates/assets/javascripts/components/palette/index.ts", "src/templates/assets/javascripts/components/progress/index.ts", "src/templates/assets/javascripts/integrations/clipboard/index.ts", "src/templates/assets/javascripts/integrations/sitemap/index.ts", "src/templates/assets/javascripts/integrations/instant/index.ts", "src/templates/assets/javascripts/integrations/search/highlighter/index.ts", "src/templates/assets/javascripts/integrations/search/worker/message/index.ts", "src/templates/assets/javascripts/integrations/search/worker/_/index.ts", "src/templates/assets/javascripts/integrations/version/findurl/index.ts", "src/templates/assets/javascripts/integrations/version/index.ts", "src/templates/assets/javascripts/components/search/query/index.ts", "src/templates/assets/javascripts/components/search/result/index.ts", "src/templates/assets/javascripts/components/search/share/index.ts", "src/templates/assets/javascripts/components/search/suggest/index.ts", "src/templates/assets/javascripts/components/search/_/index.ts", "src/templates/assets/javascripts/components/search/highlight/index.ts", "src/templates/assets/javascripts/components/sidebar/index.ts", "src/templates/assets/javascripts/components/source/facts/github/index.ts", "src/templates/assets/javascripts/components/source/facts/gitlab/index.ts", "src/templates/assets/javascripts/components/source/facts/_/index.ts", "src/templates/assets/javascripts/components/source/_/index.ts", "src/templates/assets/javascripts/components/tabs/index.ts", "src/templates/assets/javascripts/components/toc/index.ts", "src/templates/assets/javascripts/components/top/index.ts", "src/templates/assets/javascripts/patches/ellipsis/index.ts", "src/templates/assets/javascripts/patches/indeterminate/index.ts", "src/templates/assets/javascripts/patches/scrollfix/index.ts", "src/templates/assets/javascripts/patches/scrolllock/index.ts", "src/templates/assets/javascripts/polyfills/index.ts"], + "sourcesContent": ["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (factory());\n}(this, (function () { 'use strict';\n\n /**\n * Applies the :focus-visible polyfill at the given scope.\n * A scope in this case is either the top-level Document or a Shadow Root.\n *\n * @param {(Document|ShadowRoot)} scope\n * @see https://github.com/WICG/focus-visible\n */\n function applyFocusVisiblePolyfill(scope) {\n var hadKeyboardEvent = true;\n var hadFocusVisibleRecently = false;\n var hadFocusVisibleRecentlyTimeout = null;\n\n var inputTypesAllowlist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n };\n\n /**\n * Helper function for legacy browsers and iframes which sometimes focus\n * elements like document, body, and non-interactive SVG.\n * @param {Element} el\n */\n function isValidFocusTarget(el) {\n if (\n el &&\n el !== document &&\n el.nodeName !== 'HTML' &&\n el.nodeName !== 'BODY' &&\n 'classList' in el &&\n 'contains' in el.classList\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} el\n * @return {boolean}\n */\n function focusTriggersKeyboardModality(el) {\n var type = el.type;\n var tagName = el.tagName;\n\n if (tagName === 'INPUT' && inputTypesAllowlist[type] && !el.readOnly) {\n return true;\n }\n\n if (tagName === 'TEXTAREA' && !el.readOnly) {\n return true;\n }\n\n if (el.isContentEditable) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Add the `focus-visible` class to the given element if it was not added by\n * the author.\n * @param {Element} el\n */\n function addFocusVisibleClass(el) {\n if (el.classList.contains('focus-visible')) {\n return;\n }\n el.classList.add('focus-visible');\n el.setAttribute('data-focus-visible-added', '');\n }\n\n /**\n * Remove the `focus-visible` class from the given element if it was not\n * originally added by the author.\n * @param {Element} el\n */\n function removeFocusVisibleClass(el) {\n if (!el.hasAttribute('data-focus-visible-added')) {\n return;\n }\n el.classList.remove('focus-visible');\n el.removeAttribute('data-focus-visible-added');\n }\n\n /**\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * Apply `focus-visible` to any current active element and keep track\n * of our keyboard modality state with `hadKeyboardEvent`.\n * @param {KeyboardEvent} e\n */\n function onKeyDown(e) {\n if (e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n if (isValidFocusTarget(scope.activeElement)) {\n addFocusVisibleClass(scope.activeElement);\n }\n\n hadKeyboardEvent = true;\n }\n\n /**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n * @param {Event} e\n */\n function onPointerDown(e) {\n hadKeyboardEvent = false;\n }\n\n /**\n * On `focus`, add the `focus-visible` class to the target if:\n * - the target received focus as a result of keyboard navigation, or\n * - the event target is an element that will likely require interaction\n * via the keyboard (e.g. a text box)\n * @param {Event} e\n */\n function onFocus(e) {\n // Prevent IE from focusing the document or HTML element.\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) {\n addFocusVisibleClass(e.target);\n }\n }\n\n /**\n * On `blur`, remove the `focus-visible` class from the target.\n * @param {Event} e\n */\n function onBlur(e) {\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (\n e.target.classList.contains('focus-visible') ||\n e.target.hasAttribute('data-focus-visible-added')\n ) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function() {\n hadFocusVisibleRecently = false;\n }, 100);\n removeFocusVisibleClass(e.target);\n }\n }\n\n /**\n * If the user changes tabs, keep track of whether or not the previously\n * focused element had .focus-visible.\n * @param {Event} e\n */\n function onVisibilityChange(e) {\n if (document.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n addInitialPointerMoveListeners();\n }\n }\n\n /**\n * Add a group of listeners to detect usage of any pointing devices.\n * These listeners will be added when the polyfill first loads, and anytime\n * the window is blurred, so that they are active when the window regains\n * focus.\n */\n function addInitialPointerMoveListeners() {\n document.addEventListener('mousemove', onInitialPointerMove);\n document.addEventListener('mousedown', onInitialPointerMove);\n document.addEventListener('mouseup', onInitialPointerMove);\n document.addEventListener('pointermove', onInitialPointerMove);\n document.addEventListener('pointerdown', onInitialPointerMove);\n document.addEventListener('pointerup', onInitialPointerMove);\n document.addEventListener('touchmove', onInitialPointerMove);\n document.addEventListener('touchstart', onInitialPointerMove);\n document.addEventListener('touchend', onInitialPointerMove);\n }\n\n function removeInitialPointerMoveListeners() {\n document.removeEventListener('mousemove', onInitialPointerMove);\n document.removeEventListener('mousedown', onInitialPointerMove);\n document.removeEventListener('mouseup', onInitialPointerMove);\n document.removeEventListener('pointermove', onInitialPointerMove);\n document.removeEventListener('pointerdown', onInitialPointerMove);\n document.removeEventListener('pointerup', onInitialPointerMove);\n document.removeEventListener('touchmove', onInitialPointerMove);\n document.removeEventListener('touchstart', onInitialPointerMove);\n document.removeEventListener('touchend', onInitialPointerMove);\n }\n\n /**\n * When the polfyill first loads, assume the user is in keyboard modality.\n * If any event is received from a pointing device (e.g. mouse, pointer,\n * touch), turn off keyboard modality.\n * This accounts for situations where focus enters the page from the URL bar.\n * @param {Event} e\n */\n function onInitialPointerMove(e) {\n // Work around a Safari quirk that fires a mousemove on whenever the\n // window blurs, even if you're tabbing out of the page. \u00AF\\_(\u30C4)_/\u00AF\n if (e.target.nodeName && e.target.nodeName.toLowerCase() === 'html') {\n return;\n }\n\n hadKeyboardEvent = false;\n removeInitialPointerMoveListeners();\n }\n\n // For some kinds of state, we are interested in changes at the global scope\n // only. For example, global pointer input, global key presses and global\n // visibility change should affect the state at every scope:\n document.addEventListener('keydown', onKeyDown, true);\n document.addEventListener('mousedown', onPointerDown, true);\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('touchstart', onPointerDown, true);\n document.addEventListener('visibilitychange', onVisibilityChange, true);\n\n addInitialPointerMoveListeners();\n\n // For focus and blur, we specifically care about state changes in the local\n // scope. This is because focus / blur events that originate from within a\n // shadow root are not re-dispatched from the host element if it was already\n // the active element in its own scope:\n scope.addEventListener('focus', onFocus, true);\n scope.addEventListener('blur', onBlur, true);\n\n // We detect that a node is a ShadowRoot by ensuring that it is a\n // DocumentFragment and also has a host property. This check covers native\n // implementation and polyfill implementation transparently. If we only cared\n // about the native implementation, we could just check if the scope was\n // an instance of a ShadowRoot.\n if (scope.nodeType === Node.DOCUMENT_FRAGMENT_NODE && scope.host) {\n // Since a ShadowRoot is a special kind of DocumentFragment, it does not\n // have a root element to add a class to. So, we add this attribute to the\n // host element instead:\n scope.host.setAttribute('data-js-focus-visible', '');\n } else if (scope.nodeType === Node.DOCUMENT_NODE) {\n document.documentElement.classList.add('js-focus-visible');\n document.documentElement.setAttribute('data-js-focus-visible', '');\n }\n }\n\n // It is important to wrap all references to global window and document in\n // these checks to support server-side rendering use cases\n // @see https://github.com/WICG/focus-visible/issues/199\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n // Make the polyfill helper globally available. This can be used as a signal\n // to interested libraries that wish to coordinate with the polyfill for e.g.,\n // applying the polyfill to a shadow root:\n window.applyFocusVisiblePolyfill = applyFocusVisiblePolyfill;\n\n // Notify interested libraries of the polyfill's presence, in case the\n // polyfill was loaded lazily:\n var event;\n\n try {\n event = new CustomEvent('focus-visible-polyfill-ready');\n } catch (error) {\n // IE11 does not support using CustomEvent as a constructor directly:\n event = document.createEvent('CustomEvent');\n event.initCustomEvent('focus-visible-polyfill-ready', false, false, {});\n }\n\n window.dispatchEvent(event);\n }\n\n if (typeof document !== 'undefined') {\n // Apply the polyfill to the global document, so that no JavaScript\n // coordination is required to use the polyfill in the top-level document:\n applyFocusVisiblePolyfill(document);\n }\n\n})));\n", "/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n", "/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT \u00A9 Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/common/command.js\n/**\n * Executes a given operation type.\n * @param {String} type\n * @return {Boolean}\n */\nfunction command(type) {\n try {\n return document.execCommand(type);\n } catch (err) {\n return false;\n }\n}\n;// CONCATENATED MODULE: ./src/actions/cut.js\n\n\n/**\n * Cut action wrapper.\n * @param {String|HTMLElement} target\n * @return {String}\n */\n\nvar ClipboardActionCut = function ClipboardActionCut(target) {\n var selectedText = select_default()(target);\n command('cut');\n return selectedText;\n};\n\n/* harmony default export */ var actions_cut = (ClipboardActionCut);\n;// CONCATENATED MODULE: ./src/common/create-fake-element.js\n/**\n * Creates a fake textarea element with a value.\n * @param {String} value\n * @return {HTMLElement}\n */\nfunction createFakeElement(value) {\n var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS\n\n fakeElement.style.fontSize = '12pt'; // Reset box model\n\n fakeElement.style.border = '0';\n fakeElement.style.padding = '0';\n fakeElement.style.margin = '0'; // Move element out of screen horizontally\n\n fakeElement.style.position = 'absolute';\n fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n fakeElement.style.top = \"\".concat(yPosition, \"px\");\n fakeElement.setAttribute('readonly', '');\n fakeElement.value = value;\n return fakeElement;\n}\n;// CONCATENATED MODULE: ./src/actions/copy.js\n\n\n\n/**\n * Create fake copy action wrapper using a fake element.\n * @param {String} target\n * @param {Object} options\n * @return {String}\n */\n\nvar fakeCopyAction = function fakeCopyAction(value, options) {\n var fakeElement = createFakeElement(value);\n options.container.appendChild(fakeElement);\n var selectedText = select_default()(fakeElement);\n command('copy');\n fakeElement.remove();\n return selectedText;\n};\n/**\n * Copy action wrapper.\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @return {String}\n */\n\n\nvar ClipboardActionCopy = function ClipboardActionCopy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n var selectedText = '';\n\n if (typeof target === 'string') {\n selectedText = fakeCopyAction(target, options);\n } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) {\n // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n selectedText = fakeCopyAction(target.value, options);\n } else {\n selectedText = select_default()(target);\n command('copy');\n }\n\n return selectedText;\n};\n\n/* harmony default export */ var actions_copy = (ClipboardActionCopy);\n;// CONCATENATED MODULE: ./src/actions/default.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n/**\n * Inner function which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n * @param {Object} options\n */\n\nvar ClipboardActionDefault = function ClipboardActionDefault() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Defines base properties passed from constructor.\n var _options$action = options.action,\n action = _options$action === void 0 ? 'copy' : _options$action,\n container = options.container,\n target = options.target,\n text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'.\n\n if (action !== 'copy' && action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n } // Sets the `target` property using an element that will be have its content copied.\n\n\n if (target !== undefined) {\n if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n if (action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n } // Define selection strategy based on `text` property.\n\n\n if (text) {\n return actions_copy(text, {\n container: container\n });\n } // Defines which selection strategy based on `target` property.\n\n\n if (target) {\n return action === 'cut' ? actions_cut(target) : actions_copy(target, {\n container: container\n });\n }\n};\n\n/* harmony default export */ var actions_default = (ClipboardActionDefault);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n var attribute = \"data-clipboard-\".concat(suffix);\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n var _super = _createSuper(Clipboard);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n var _this;\n\n _classCallCheck(this, Clipboard);\n\n _this = _super.call(this);\n\n _this.resolveOptions(options);\n\n _this.listenClick(trigger);\n\n return _this;\n }\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n _createClass(Clipboard, [{\n key: \"resolveOptions\",\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n }\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: \"listenClick\",\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = listen_default()(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: \"onClick\",\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n var action = this.action(trigger) || 'copy';\n var text = actions_default({\n action: action,\n container: this.container,\n target: this.target(trigger),\n text: this.text(trigger)\n }); // Fires an event based on the copy operation result.\n\n this.emit(text ? 'success' : 'error', {\n action: action,\n text: text,\n trigger: trigger,\n clearSelection: function clearSelection() {\n if (trigger) {\n trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n });\n }\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultAction\",\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultTarget\",\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n /**\n * Allow fire programmatically a copy action\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @returns Text copied.\n */\n\n }, {\n key: \"defaultText\",\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.listener.destroy();\n }\n }], [{\n key: \"copy\",\n value: function copy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n return actions_copy(target, options);\n }\n /**\n * Allow fire programmatically a cut action\n * @param {String|HTMLElement} target\n * @returns Text cutted.\n */\n\n }, {\n key: \"cut\",\n value: function cut(target) {\n return actions_cut(target);\n }\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n return support;\n }\n }]);\n\n return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(686);\n/******/ })()\n.default;\n});", "/*\n * Copyright (c) 2016-2025 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport \"focus-visible\"\n\nimport {\n EMPTY,\n NEVER,\n Observable,\n Subject,\n defer,\n delay,\n filter,\n map,\n merge,\n mergeWith,\n shareReplay,\n switchMap\n} from \"rxjs\"\n\nimport { configuration, feature } from \"./_\"\nimport {\n at,\n getActiveElement,\n getOptionalElement,\n requestJSON,\n setLocation,\n setToggle,\n watchDocument,\n watchKeyboard,\n watchLocation,\n watchLocationTarget,\n watchMedia,\n watchPrint,\n watchScript,\n watchViewport\n} from \"./browser\"\nimport {\n getComponentElement,\n getComponentElements,\n mountAnnounce,\n mountBackToTop,\n mountConsent,\n mountContent,\n mountDialog,\n mountHeader,\n mountHeaderTitle,\n mountPalette,\n mountProgress,\n mountSearch,\n mountSearchHiglight,\n mountSidebar,\n mountSource,\n mountTableOfContents,\n mountTabs,\n watchHeader,\n watchMain\n} from \"./components\"\nimport {\n SearchIndex,\n setupClipboardJS,\n setupInstantNavigation,\n setupVersionSelector\n} from \"./integrations\"\nimport {\n patchEllipsis,\n patchIndeterminate,\n patchScrollfix,\n patchScrolllock\n} from \"./patches\"\nimport \"./polyfills\"\n\n/* ----------------------------------------------------------------------------\n * Functions - @todo refactor\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch search index\n *\n * @returns Search index observable\n */\nfunction fetchSearchIndex(): Observable {\n if (location.protocol === \"file:\") {\n return watchScript(\n `${new URL(\"search/search_index.js\", config.base)}`\n )\n .pipe(\n // @ts-ignore - @todo fix typings\n map(() => __index),\n shareReplay(1)\n )\n } else {\n return requestJSON(\n new URL(\"search/search_index.json\", config.base)\n )\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Application\n * ------------------------------------------------------------------------- */\n\n/* Yay, JavaScript is available */\ndocument.documentElement.classList.remove(\"no-js\")\ndocument.documentElement.classList.add(\"js\")\n\n/* Set up navigation observables and subjects */\nconst document$ = watchDocument()\nconst location$ = watchLocation()\nconst target$ = watchLocationTarget(location$)\nconst keyboard$ = watchKeyboard()\n\n/* Set up media observables */\nconst viewport$ = watchViewport()\nconst tablet$ = watchMedia(\"(min-width: 960px)\")\nconst screen$ = watchMedia(\"(min-width: 1220px)\")\nconst print$ = watchPrint()\n\n/* Retrieve search index, if search is enabled */\nconst config = configuration()\nconst index$ = document.forms.namedItem(\"search\")\n ? fetchSearchIndex()\n : NEVER\n\n/* Set up Clipboard.js integration */\nconst alert$ = new Subject()\nsetupClipboardJS({ alert$ })\n\n/* Set up progress indicator */\nconst progress$ = new Subject()\n\n/* Set up instant navigation, if enabled */\nif (feature(\"navigation.instant\"))\n setupInstantNavigation({ location$, viewport$, progress$ })\n .subscribe(document$)\n\n/* Set up version selector */\nif (config.version?.provider === \"mike\")\n setupVersionSelector({ document$ })\n\n/* Always close drawer and search on navigation */\nmerge(location$, target$)\n .pipe(\n delay(125)\n )\n .subscribe(() => {\n setToggle(\"drawer\", false)\n setToggle(\"search\", false)\n })\n\n/* Set up global keyboard handlers */\nkeyboard$\n .pipe(\n filter(({ mode }) => mode === \"global\")\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Go to previous page */\n case \"p\":\n case \",\":\n const prev = getOptionalElement(\"link[rel=prev]\")\n if (typeof prev !== \"undefined\")\n setLocation(prev)\n break\n\n /* Go to next page */\n case \"n\":\n case \".\":\n const next = getOptionalElement(\"link[rel=next]\")\n if (typeof next !== \"undefined\")\n setLocation(next)\n break\n\n /* Expand navigation, see https://bit.ly/3ZjG5io */\n case \"Enter\":\n const active = getActiveElement()\n if (active instanceof HTMLLabelElement)\n active.click()\n }\n })\n\n/* Set up patches */\npatchEllipsis({ viewport$, document$ })\npatchIndeterminate({ document$, tablet$ })\npatchScrollfix({ document$ })\npatchScrolllock({ viewport$, tablet$ })\n\n/* Set up header and main area observable */\nconst header$ = watchHeader(getComponentElement(\"header\"), { viewport$ })\nconst main$ = document$\n .pipe(\n map(() => getComponentElement(\"main\")),\n switchMap(el => watchMain(el, { viewport$, header$ })),\n shareReplay(1)\n )\n\n/* Set up control component observables */\nconst control$ = merge(\n\n /* Consent */\n ...getComponentElements(\"consent\")\n .map(el => mountConsent(el, { target$ })),\n\n /* Dialog */\n ...getComponentElements(\"dialog\")\n .map(el => mountDialog(el, { alert$ })),\n\n /* Color palette */\n ...getComponentElements(\"palette\")\n .map(el => mountPalette(el)),\n\n /* Progress bar */\n ...getComponentElements(\"progress\")\n .map(el => mountProgress(el, { progress$ })),\n\n /* Search */\n ...getComponentElements(\"search\")\n .map(el => mountSearch(el, { index$, keyboard$ })),\n\n /* Repository information */\n ...getComponentElements(\"source\")\n .map(el => mountSource(el))\n)\n\n/* Set up content component observables */\nconst content$ = defer(() => merge(\n\n /* Announcement bar */\n ...getComponentElements(\"announce\")\n .map(el => mountAnnounce(el)),\n\n /* Content */\n ...getComponentElements(\"content\")\n .map(el => mountContent(el, { viewport$, target$, print$ })),\n\n /* Search highlighting */\n ...getComponentElements(\"content\")\n .map(el => feature(\"search.highlight\")\n ? mountSearchHiglight(el, { index$, location$ })\n : EMPTY\n ),\n\n /* Header */\n ...getComponentElements(\"header\")\n .map(el => mountHeader(el, { viewport$, header$, main$ })),\n\n /* Header title */\n ...getComponentElements(\"header-title\")\n .map(el => mountHeaderTitle(el, { viewport$, header$ })),\n\n /* Sidebar */\n ...getComponentElements(\"sidebar\")\n .map(el => el.getAttribute(\"data-md-type\") === \"navigation\"\n ? at(screen$, () => mountSidebar(el, { viewport$, header$, main$ }))\n : at(tablet$, () => mountSidebar(el, { viewport$, header$, main$ }))\n ),\n\n /* Navigation tabs */\n ...getComponentElements(\"tabs\")\n .map(el => mountTabs(el, { viewport$, header$ })),\n\n /* Table of contents */\n ...getComponentElements(\"toc\")\n .map(el => mountTableOfContents(el, {\n viewport$, header$, main$, target$\n })),\n\n /* Back-to-top button */\n ...getComponentElements(\"top\")\n .map(el => mountBackToTop(el, { viewport$, header$, main$, target$ }))\n))\n\n/* Set up component observables */\nconst component$ = document$\n .pipe(\n switchMap(() => content$),\n mergeWith(control$),\n shareReplay(1)\n )\n\n/* Subscribe to all components */\ncomponent$.subscribe()\n\n/* ----------------------------------------------------------------------------\n * Exports\n * ------------------------------------------------------------------------- */\n\nwindow.document$ = document$ /* Document observable */\nwindow.location$ = location$ /* Location subject */\nwindow.target$ = target$ /* Location target observable */\nwindow.keyboard$ = keyboard$ /* Keyboard observable */\nwindow.viewport$ = viewport$ /* Viewport observable */\nwindow.tablet$ = tablet$ /* Media tablet observable */\nwindow.screen$ = screen$ /* Media screen observable */\nwindow.print$ = print$ /* Media print observable */\nwindow.alert$ = alert$ /* Alert subject */\nwindow.progress$ = progress$ /* Progress indicator subject */\nwindow.component$ = component$ /* Component observable */\n", "/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n", "/**\n * Returns true if the object is a function.\n * @param value The value to check\n */\nexport function isFunction(value: any): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n", "/**\n * Used to create Error subclasses until the community moves away from ES5.\n *\n * This is because compiling from TypeScript down to ES5 has issues with subclassing Errors\n * as well as other built-in types: https://github.com/Microsoft/TypeScript/issues/12123\n *\n * @param createImpl A factory function to create the actual constructor implementation. The returned\n * function should be a named function that calls `_super` internally.\n */\nexport function createErrorClass(createImpl: (_super: any) => any): T {\n const _super = (instance: any) => {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n\n const ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n", "import { createErrorClass } from './createErrorClass';\n\nexport interface UnsubscriptionError extends Error {\n readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (errors: any[]): UnsubscriptionError;\n}\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = createErrorClass(\n (_super) =>\n function UnsubscriptionErrorImpl(this: any, errors: (Error | string)[]) {\n _super(this);\n this.message = errors\n ? `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}`\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n }\n);\n", "/**\n * Removes an item from an array, mutating it.\n * @param arr The array to remove the item from\n * @param item The item to remove\n */\nexport function arrRemove(arr: T[] | undefined | null, item: T) {\n if (arr) {\n const index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n", "import { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { SubscriptionLike, TeardownLogic, Unsubscribable } from './types';\nimport { arrRemove } from './util/arrRemove';\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements SubscriptionLike {\n /** @nocollapse */\n public static EMPTY = (() => {\n const empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n */\n public closed = false;\n\n private _parentage: Subscription[] | Subscription | null = null;\n\n /**\n * The list of registered finalizers to execute upon unsubscription. Adding and removing from this\n * list occurs in the {@link #add} and {@link #remove} methods.\n */\n private _finalizers: Exclude[] | null = null;\n\n /**\n * @param initialTeardown A function executed first as part of the finalization\n * process that is kicked off when {@link #unsubscribe} is called.\n */\n constructor(private initialTeardown?: () => void) {}\n\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n unsubscribe(): void {\n let errors: any[] | undefined;\n\n if (!this.closed) {\n this.closed = true;\n\n // Remove this from it's parents.\n const { _parentage } = this;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n for (const parent of _parentage) {\n parent.remove(this);\n }\n } else {\n _parentage.remove(this);\n }\n }\n\n const { initialTeardown: initialFinalizer } = this;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n\n const { _finalizers } = this;\n if (_finalizers) {\n this._finalizers = null;\n for (const finalizer of _finalizers) {\n try {\n execFinalizer(finalizer);\n } catch (err) {\n errors = errors ?? [];\n if (err instanceof UnsubscriptionError) {\n errors = [...errors, ...err.errors];\n } else {\n errors.push(err);\n }\n }\n }\n }\n\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n }\n\n /**\n * Adds a finalizer to this subscription, so that finalization will be unsubscribed/called\n * when this subscription is unsubscribed. If this subscription is already {@link #closed},\n * because it has already been unsubscribed, then whatever finalizer is passed to it\n * will automatically be executed (unless the finalizer itself is also a closed subscription).\n *\n * Closed Subscriptions cannot be added as finalizers to any subscription. Adding a closed\n * subscription to a any subscription will result in no operation. (A noop).\n *\n * Adding a subscription to itself, or adding `null` or `undefined` will not perform any\n * operation at all. (A noop).\n *\n * `Subscription` instances that are added to this instance will automatically remove themselves\n * if they are unsubscribed. Functions and {@link Unsubscribable} objects that you wish to remove\n * will need to be removed manually with {@link #remove}\n *\n * @param teardown The finalization logic to add to this subscription.\n */\n add(teardown: TeardownLogic): void {\n // Only add the finalizer if it's not undefined\n // and don't add a subscription to itself.\n if (teardown && teardown !== this) {\n if (this.closed) {\n // If this subscription is already closed,\n // execute whatever finalizer is handed to it automatically.\n execFinalizer(teardown);\n } else {\n if (teardown instanceof Subscription) {\n // We don't add closed subscriptions, and we don't add the same subscription\n // twice. Subscription unsubscribe is idempotent.\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = this._finalizers ?? []).push(teardown);\n }\n }\n }\n\n /**\n * Checks to see if a this subscription already has a particular parent.\n * This will signal that this subscription has already been added to the parent in question.\n * @param parent the parent to check for\n */\n private _hasParent(parent: Subscription) {\n const { _parentage } = this;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n }\n\n /**\n * Adds a parent to this subscription so it can be removed from the parent if it\n * unsubscribes on it's own.\n *\n * NOTE: THIS ASSUMES THAT {@link _hasParent} HAS ALREADY BEEN CHECKED.\n * @param parent The parent subscription to add\n */\n private _addParent(parent: Subscription) {\n const { _parentage } = this;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n }\n\n /**\n * Called on a child when it is removed via {@link #remove}.\n * @param parent The parent to remove\n */\n private _removeParent(parent: Subscription) {\n const { _parentage } = this;\n if (_parentage === parent) {\n this._parentage = null;\n } else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n }\n\n /**\n * Removes a finalizer from this subscription that was previously added with the {@link #add} method.\n *\n * Note that `Subscription` instances, when unsubscribed, will automatically remove themselves\n * from every other `Subscription` they have been added to. This means that using the `remove` method\n * is not a common thing and should be used thoughtfully.\n *\n * If you add the same finalizer instance of a function or an unsubscribable object to a `Subscription` instance\n * more than once, you will need to call `remove` the same number of times to remove all instances.\n *\n * All finalizer instances are removed to free up memory upon unsubscription.\n *\n * @param teardown The finalizer to remove from this subscription\n */\n remove(teardown: Exclude): void {\n const { _finalizers } = this;\n _finalizers && arrRemove(_finalizers, teardown);\n\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n }\n}\n\nexport const EMPTY_SUBSCRIPTION = Subscription.EMPTY;\n\nexport function isSubscription(value: any): value is Subscription {\n return (\n value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe))\n );\n}\n\nfunction execFinalizer(finalizer: Unsubscribable | (() => void)) {\n if (isFunction(finalizer)) {\n finalizer();\n } else {\n finalizer.unsubscribe();\n }\n}\n", "import { Subscriber } from './Subscriber';\nimport { ObservableNotification } from './types';\n\n/**\n * The {@link GlobalConfig} object for RxJS. It is used to configure things\n * like how to react on unhandled errors.\n */\nexport const config: GlobalConfig = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n\n/**\n * The global configuration object for RxJS, used to configure things\n * like how to react on unhandled errors. Accessible via {@link config}\n * object.\n */\nexport interface GlobalConfig {\n /**\n * A registration point for unhandled errors from RxJS. These are errors that\n * cannot were not handled by consuming code in the usual subscription path. For\n * example, if you have this configured, and you subscribe to an observable without\n * providing an error handler, errors from that subscription will end up here. This\n * will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onUnhandledError: ((err: any) => void) | null;\n\n /**\n * A registration point for notifications that cannot be sent to subscribers because they\n * have completed, errored or have been explicitly unsubscribed. By default, next, complete\n * and error notifications sent to stopped subscribers are noops. However, sometimes callers\n * might want a different behavior. For example, with sources that attempt to report errors\n * to stopped subscribers, a caller can configure RxJS to throw an unhandled error instead.\n * This will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onStoppedNotification: ((notification: ObservableNotification, subscriber: Subscriber) => void) | null;\n\n /**\n * The promise constructor used by default for {@link Observable#toPromise toPromise} and {@link Observable#forEach forEach}\n * methods.\n *\n * @deprecated As of version 8, RxJS will no longer support this sort of injection of a\n * Promise constructor. If you need a Promise implementation other than native promises,\n * please polyfill/patch Promise as you see appropriate. Will be removed in v8.\n */\n Promise?: PromiseConstructorLike;\n\n /**\n * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n * call in a try/catch block. It also enables producer interference, a nasty bug\n * where a multicast can be broken for all observers by a downstream consumer with\n * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BUY TIME\n * FOR MIGRATION REASONS.\n *\n * @deprecated As of version 8, RxJS will no longer support synchronous throwing\n * of unhandled errors. All errors will be thrown on a separate call stack to prevent bad\n * behaviors described above. Will be removed in v8.\n */\n useDeprecatedSynchronousErrorHandling: boolean;\n\n /**\n * If true, enables an as-of-yet undocumented feature from v5: The ability to access\n * `unsubscribe()` via `this` context in `next` functions created in observers passed\n * to `subscribe`.\n *\n * This is being removed because the performance was severely problematic, and it could also cause\n * issues when types other than POJOs are passed to subscribe as subscribers, as they will likely have\n * their `this` context overwritten.\n *\n * @deprecated As of version 8, RxJS will no longer support altering the\n * context of next functions provided as part of an observer to Subscribe. Instead,\n * you will have access to a subscription or a signal or token that will allow you to do things like\n * unsubscribe and test closed status. Will be removed in v8.\n */\n useDeprecatedNextContext: boolean;\n}\n", "import type { TimerHandle } from './timerHandle';\ntype SetTimeoutFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearTimeoutFunction = (handle: TimerHandle) => void;\n\ninterface TimeoutProvider {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n delegate:\n | {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n }\n | undefined;\n}\n\nexport const timeoutProvider: TimeoutProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setTimeout(handler: () => void, timeout?: number, ...args) {\n const { delegate } = timeoutProvider;\n if (delegate?.setTimeout) {\n return delegate.setTimeout(handler, timeout, ...args);\n }\n return setTimeout(handler, timeout, ...args);\n },\n clearTimeout(handle) {\n const { delegate } = timeoutProvider;\n return (delegate?.clearTimeout || clearTimeout)(handle as any);\n },\n delegate: undefined,\n};\n", "import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\n\n/**\n * Handles an error on another job either with the user-configured {@link onUnhandledError},\n * or by throwing it on that new job so it can be picked up by `window.onerror`, `process.on('error')`, etc.\n *\n * This should be called whenever there is an error that is out-of-band with the subscription\n * or when an error hits a terminal boundary of the subscription and no error handler was provided.\n *\n * @param err the error to report\n */\nexport function reportUnhandledError(err: any) {\n timeoutProvider.setTimeout(() => {\n const { onUnhandledError } = config;\n if (onUnhandledError) {\n // Execute the user-configured error handler.\n onUnhandledError(err);\n } else {\n // Throw so it is picked up by the runtime's uncaught error mechanism.\n throw err;\n }\n });\n}\n", "/* tslint:disable:no-empty */\nexport function noop() { }\n", "import { CompleteNotification, NextNotification, ErrorNotification } from './types';\n\n/**\n * A completion object optimized for memory use and created to be the\n * same \"shape\" as other notifications in v8.\n * @internal\n */\nexport const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined) as CompleteNotification)();\n\n/**\n * Internal use only. Creates an optimized error notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function errorNotification(error: any): ErrorNotification {\n return createNotification('E', undefined, error) as any;\n}\n\n/**\n * Internal use only. Creates an optimized next notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function nextNotification(value: T) {\n return createNotification('N', value, undefined) as NextNotification;\n}\n\n/**\n * Ensures that all notifications created internally have the same \"shape\" in v8.\n *\n * TODO: This is only exported to support a crazy legacy test in `groupBy`.\n * @internal\n */\nexport function createNotification(kind: 'N' | 'E' | 'C', value: any, error: any) {\n return {\n kind,\n value,\n error,\n };\n}\n", "import { config } from '../config';\n\nlet context: { errorThrown: boolean; error: any } | null = null;\n\n/**\n * Handles dealing with errors for super-gross mode. Creates a context, in which\n * any synchronously thrown errors will be passed to {@link captureError}. Which\n * will record the error such that it will be rethrown after the call back is complete.\n * TODO: Remove in v8\n * @param cb An immediately executed function.\n */\nexport function errorContext(cb: () => void) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n const isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n const { errorThrown, error } = context!;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n } else {\n // This is the general non-deprecated path for everyone that\n // isn't crazy enough to use super-gross mode (useDeprecatedSynchronousErrorHandling)\n cb();\n }\n}\n\n/**\n * Captures errors only in super-gross mode.\n * @param err the error to capture\n */\nexport function captureError(err: any) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n", "import { isFunction } from './util/isFunction';\nimport { Observer, ObservableNotification } from './types';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber\n */\nexport class Subscriber extends Subscription implements Observer {\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param next The `next` callback of an Observer.\n * @param error The `error` callback of an\n * Observer.\n * @param complete The `complete` callback of an\n * Observer.\n * @return A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n * @nocollapse\n * @deprecated Do not use. Will be removed in v8. There is no replacement for this\n * method, and there is no reason to be creating instances of `Subscriber` directly.\n * If you have a specific use case, please file an issue.\n */\n static create(next?: (x?: T) => void, error?: (e?: any) => void, complete?: () => void): Subscriber {\n return new SafeSubscriber(next, error, complete);\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected isStopped: boolean = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected destination: Subscriber | Observer; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * There is no reason to directly create an instance of Subscriber. This type is exported for typings reasons.\n */\n constructor(destination?: Subscriber | Observer) {\n super();\n if (destination) {\n this.destination = destination;\n // Automatically chain subscriptions together here.\n // if destination is a Subscription, then it is a Subscriber.\n if (isSubscription(destination)) {\n destination.add(this);\n }\n } else {\n this.destination = EMPTY_OBSERVER;\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n next(value?: T): void {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n } else {\n this._next(value!);\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached `Error`. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n error(err?: any): void {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n } else {\n this.isStopped = true;\n this._error(err);\n }\n }\n\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n complete(): void {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n } else {\n this.isStopped = true;\n this._complete();\n }\n }\n\n unsubscribe(): void {\n if (!this.closed) {\n this.isStopped = true;\n super.unsubscribe();\n this.destination = null!;\n }\n }\n\n protected _next(value: T): void {\n this.destination.next(value);\n }\n\n protected _error(err: any): void {\n try {\n this.destination.error(err);\n } finally {\n this.unsubscribe();\n }\n }\n\n protected _complete(): void {\n try {\n this.destination.complete();\n } finally {\n this.unsubscribe();\n }\n }\n}\n\n/**\n * This bind is captured here because we want to be able to have\n * compatibility with monoid libraries that tend to use a method named\n * `bind`. In particular, a library called Monio requires this.\n */\nconst _bind = Function.prototype.bind;\n\nfunction bind any>(fn: Fn, thisArg: any): Fn {\n return _bind.call(fn, thisArg);\n}\n\n/**\n * Internal optimization only, DO NOT EXPOSE.\n * @internal\n */\nclass ConsumerObserver implements Observer {\n constructor(private partialObserver: Partial>) {}\n\n next(value: T): void {\n const { partialObserver } = this;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n\n error(err: any): void {\n const { partialObserver } = this;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n } catch (error) {\n handleUnhandledError(error);\n }\n } else {\n handleUnhandledError(err);\n }\n }\n\n complete(): void {\n const { partialObserver } = this;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n}\n\nexport class SafeSubscriber extends Subscriber {\n constructor(\n observerOrNext?: Partial> | ((value: T) => void) | null,\n error?: ((e?: any) => void) | null,\n complete?: (() => void) | null\n ) {\n super();\n\n let partialObserver: Partial>;\n if (isFunction(observerOrNext) || !observerOrNext) {\n // The first argument is a function, not an observer. The next\n // two arguments *could* be observers, or they could be empty.\n partialObserver = {\n next: (observerOrNext ?? undefined) as (((value: T) => void) | undefined),\n error: error ?? undefined,\n complete: complete ?? undefined,\n };\n } else {\n // The first argument is a partial observer.\n let context: any;\n if (this && config.useDeprecatedNextContext) {\n // This is a deprecated path that made `this.unsubscribe()` available in\n // next handler functions passed to subscribe. This only exists behind a flag\n // now, as it is *very* slow.\n context = Object.create(observerOrNext);\n context.unsubscribe = () => this.unsubscribe();\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context),\n error: observerOrNext.error && bind(observerOrNext.error, context),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context),\n };\n } else {\n // The \"normal\" path. Just use the partial observer directly.\n partialObserver = observerOrNext;\n }\n }\n\n // Wrap the partial observer to ensure it's a full observer, and\n // make sure proper error handling is accounted for.\n this.destination = new ConsumerObserver(partialObserver);\n }\n}\n\nfunction handleUnhandledError(error: any) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n } else {\n // Ideal path, we report this as an unhandled error,\n // which is thrown on a new call stack.\n reportUnhandledError(error);\n }\n}\n\n/**\n * An error handler used when no error handler was supplied\n * to the SafeSubscriber -- meaning no error handler was supplied\n * do the `subscribe` call on our observable.\n * @param err The error to handle\n */\nfunction defaultErrorHandler(err: any) {\n throw err;\n}\n\n/**\n * A handler for notifications that cannot be sent to a stopped subscriber.\n * @param notification The notification being sent\n * @param subscriber The stopped subscriber\n */\nfunction handleStoppedNotification(notification: ObservableNotification, subscriber: Subscriber) {\n const { onStoppedNotification } = config;\n onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber));\n}\n\n/**\n * The observer used as a stub for subscriptions where the user did not\n * pass any arguments to `subscribe`. Comes with the default error handling\n * behavior.\n */\nexport const EMPTY_OBSERVER: Readonly> & { closed: true } = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n", "/**\n * Symbol.observable or a string \"@@observable\". Used for interop\n *\n * @deprecated We will no longer be exporting this symbol in upcoming versions of RxJS.\n * Instead polyfill and use Symbol.observable directly *or* use https://www.npmjs.com/package/symbol-observable\n */\nexport const observable: string | symbol = (() => (typeof Symbol === 'function' && Symbol.observable) || '@@observable')();\n", "/**\n * This function takes one parameter and just returns it. Simply put,\n * this is like `(x: T): T => x`.\n *\n * ## Examples\n *\n * This is useful in some cases when using things like `mergeMap`\n *\n * ```ts\n * import { interval, take, map, range, mergeMap, identity } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(5));\n *\n * const result$ = source$.pipe(\n * map(i => range(i)),\n * mergeMap(identity) // same as mergeMap(x => x)\n * );\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * Or when you want to selectively apply an operator\n *\n * ```ts\n * import { interval, take, identity } from 'rxjs';\n *\n * const shouldLimit = () => Math.random() < 0.5;\n *\n * const source$ = interval(1000);\n *\n * const result$ = source$.pipe(shouldLimit() ? take(5) : identity);\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * @param x Any value that is returned by this function\n * @returns The value passed as the first parameter to this function\n */\nexport function identity(x: T): T {\n return x;\n}\n", "import { identity } from './identity';\nimport { UnaryFunction } from '../types';\n\nexport function pipe(): typeof identity;\nexport function pipe(fn1: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction,\n fn8: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction,\n fn8: UnaryFunction,\n fn9: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction,\n fn8: UnaryFunction,\n fn9: UnaryFunction,\n ...fns: UnaryFunction[]\n): UnaryFunction;\n\n/**\n * pipe() can be called on one or more functions, each of which can take one argument (\"UnaryFunction\")\n * and uses it to return a value.\n * It returns a function that takes one argument, passes it to the first UnaryFunction, and then\n * passes the result to the next one, passes that result to the next one, and so on. \n */\nexport function pipe(...fns: Array>): UnaryFunction {\n return pipeFromArray(fns);\n}\n\n/** @internal */\nexport function pipeFromArray(fns: Array>): UnaryFunction {\n if (fns.length === 0) {\n return identity as UnaryFunction;\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function piped(input: T): R {\n return fns.reduce((prev: any, fn: UnaryFunction) => fn(prev), input as any);\n };\n}\n", "import { Operator } from './Operator';\nimport { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription, Subscription } from './Subscription';\nimport { TeardownLogic, OperatorFunction, Subscribable, Observer } from './types';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable\n */\nexport class Observable implements Subscribable {\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n source: Observable | undefined;\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n operator: Operator | undefined;\n\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n constructor(subscribe?: (this: Observable, subscriber: Subscriber) => TeardownLogic) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new Observable by calling the Observable constructor\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new observable\n * @nocollapse\n * @deprecated Use `new Observable()` instead. Will be removed in v8.\n */\n static create: (...args: any[]) => any = (subscribe?: (subscriber: Subscriber) => TeardownLogic) => {\n return new Observable(subscribe);\n };\n\n /**\n * Creates a new Observable, with this Observable instance as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param operator the operator defining the operation to take on the observable\n * @return a new observable with the Operator applied\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * If you have implemented an operator using `lift`, it is recommended that you create an\n * operator by simply returning `new Observable()` directly. See \"Creating new operators from\n * scratch\" section here: https://rxjs.dev/guide/operators\n */\n lift(operator?: Operator): Observable {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n\n subscribe(observerOrNext?: Partial> | ((value: T) => void)): Subscription;\n /** @deprecated Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments */\n subscribe(next?: ((value: T) => void) | null, error?: ((error: any) => void) | null, complete?: (() => void) | null): Subscription;\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * Use it when you have all these Observables, but still nothing is happening.\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to Observable's constructor, but most of the time it is\n * a library implementation, which defines what will be emitted by an Observable, and when it be will emitted. This means\n * that calling `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * the thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * of the following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular, do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, if the `error` method is not provided and an error happens,\n * it will be thrown asynchronously. Errors thrown asynchronously cannot be caught using `try`/`catch`. Instead,\n * use the {@link onUnhandledError} configuration option or use a runtime handler (like `window.onerror` or\n * `process.on('error)`) to be notified of unhandled errors. Because of this, it's recommended that you provide\n * an `error` method to avoid missing thrown errors.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where the first function is equivalent\n * of a `next` method, the second of an `error` method and the third of a `complete` method. Just as in case of an Observer,\n * if you do not need to listen for something, you can omit a function by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to the `error` function, as with an Observer, if not provided, errors emitted by an Observable will be thrown asynchronously.\n *\n * You can, however, subscribe with no parameters at all. This may be the case where you're not interested in terminal events\n * and you also handled emissions internally by using operators (e.g. using `tap`).\n *\n * Whichever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop the work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a `scheduler`.\n *\n * #### Examples\n *\n * Subscribe with an {@link guide/observer Observer}\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() {\n * // We actually could just remove this method,\n * // since we do not really care about errors right now.\n * },\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Subscribe with functions ({@link deprecations/subscribe-arguments deprecated})\n *\n * ```ts\n * import { of } from 'rxjs'\n *\n * let sum = 0;\n *\n * of(1, 2, 3).subscribe(\n * value => {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * () => console.log('Sum equals: ' + sum)\n * );\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Cancel a subscription\n *\n * ```ts\n * import { interval } from 'rxjs';\n *\n * const subscription = interval(1000).subscribe({\n * next(num) {\n * console.log(num)\n * },\n * complete() {\n * // Will not be called, even when cancelling subscription.\n * console.log('completed!');\n * }\n * });\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 'unsubscribed!' after 2.5s\n * ```\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown asynchronously as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {Subscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n subscribe(\n observerOrNext?: Partial> | ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null\n ): Subscription {\n const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n\n errorContext(() => {\n const { operator, source } = this;\n subscriber.add(\n operator\n ? // We're dealing with a subscription in the\n // operator chain to one of our lifted operators.\n operator.call(subscriber, source)\n : source\n ? // If `source` has a value, but `operator` does not, something that\n // had intimate knowledge of our API, like our `Subject`, must have\n // set it. We're going to just call `_subscribe` directly.\n this._subscribe(subscriber)\n : // In all other cases, we're likely wrapping a user-provided initializer\n // function, so we need to catch errors and handle them appropriately.\n this._trySubscribe(subscriber)\n );\n });\n\n return subscriber;\n }\n\n /** @internal */\n protected _trySubscribe(sink: Subscriber): TeardownLogic {\n try {\n return this._subscribe(sink);\n } catch (err) {\n // We don't need to return anything in this case,\n // because it's just going to try to `add()` to a subscription\n // above.\n sink.error(err);\n }\n }\n\n /**\n * Used as a NON-CANCELLABLE means of subscribing to an observable, for use with\n * APIs that expect promises, like `async/await`. You cannot unsubscribe from this.\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * #### Example\n *\n * ```ts\n * import { interval, take } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(4));\n *\n * async function getTotal() {\n * let total = 0;\n *\n * await source$.forEach(value => {\n * total += value;\n * console.log('observable -> ' + value);\n * });\n *\n * return total;\n * }\n *\n * getTotal().then(\n * total => console.log('Total: ' + total)\n * );\n *\n * // Expected:\n * // 'observable -> 0'\n * // 'observable -> 1'\n * // 'observable -> 2'\n * // 'observable -> 3'\n * // 'Total: 6'\n * ```\n *\n * @param next a handler for each value emitted by the observable\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n forEach(next: (value: T) => void): Promise;\n\n /**\n * @param next a handler for each value emitted by the observable\n * @param promiseCtor a constructor function used to instantiate the Promise\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n * @deprecated Passing a Promise constructor will no longer be available\n * in upcoming versions of RxJS. This is because it adds weight to the library, for very\n * little benefit. If you need this functionality, it is recommended that you either\n * polyfill Promise, or you create an adapter to convert the returned native promise\n * to whatever promise implementation you wanted. Will be removed in v8.\n */\n forEach(next: (value: T) => void, promiseCtor: PromiseConstructorLike): Promise;\n\n forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n const subscriber = new SafeSubscriber({\n next: (value) => {\n try {\n next(value);\n } catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n this.subscribe(subscriber);\n }) as Promise;\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): TeardownLogic {\n return this.source?.subscribe(subscriber);\n }\n\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n [Symbol_observable]() {\n return this;\n }\n\n /* tslint:disable:max-line-length */\n pipe(): Observable;\n pipe(op1: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction,\n op9: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction,\n op9: OperatorFunction,\n ...operations: OperatorFunction[]\n ): Observable;\n /* tslint:enable:max-line-length */\n\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * ## Example\n *\n * ```ts\n * import { interval, filter, map, scan } from 'rxjs';\n *\n * interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x));\n * ```\n */\n pipe(...operations: OperatorFunction[]): Observable {\n return pipeFromArray(operations)(this);\n }\n\n /* tslint:disable:max-line-length */\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(): Promise;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: typeof Promise): Promise;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: PromiseConstructorLike): Promise;\n /* tslint:enable:max-line-length */\n\n /**\n * Subscribe to this Observable and get a Promise resolving on\n * `complete` with the last emission (if any).\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * @method toPromise\n * @param [promiseCtor] a constructor function used to instantiate\n * the Promise\n * @return A Promise that resolves with the last value emit, or\n * rejects on an error. If there were no emissions, Promise\n * resolves with undefined.\n * @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise\n */\n toPromise(promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n let value: T | undefined;\n this.subscribe(\n (x: T) => (value = x),\n (err: any) => reject(err),\n () => resolve(value)\n );\n }) as Promise;\n }\n}\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor: PromiseConstructorLike | undefined) {\n return promiseCtor ?? config.Promise ?? Promise;\n}\n\nfunction isObserver(value: any): value is Observer {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\n\nfunction isSubscriber(value: any): value is Subscriber {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n", "import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction } from '../types';\nimport { isFunction } from './isFunction';\n\n/**\n * Used to determine if an object is an Observable with a lift function.\n */\nexport function hasLift(source: any): source is { lift: InstanceType['lift'] } {\n return isFunction(source?.lift);\n}\n\n/**\n * Creates an `OperatorFunction`. Used to define operators throughout the library in a concise way.\n * @param init The logic to connect the liftedSource to the subscriber at the moment of subscription.\n */\nexport function operate(\n init: (liftedSource: Observable, subscriber: Subscriber) => (() => void) | void\n): OperatorFunction {\n return (source: Observable) => {\n if (hasLift(source)) {\n return source.lift(function (this: Subscriber, liftedSource: Observable) {\n try {\n return init(liftedSource, this);\n } catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n", "import { Subscriber } from '../Subscriber';\n\n/**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional teardown logic here. This will only be called on teardown if the\n * subscriber itself is not already closed. This is called after all other teardown logic is executed.\n */\nexport function createOperatorSubscriber(\n destination: Subscriber,\n onNext?: (value: T) => void,\n onComplete?: () => void,\n onError?: (err: any) => void,\n onFinalize?: () => void\n): Subscriber {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\n\n/**\n * A generic helper for allowing operators to be created with a Subscriber and\n * use closures to capture necessary state from the operator function itself.\n */\nexport class OperatorSubscriber extends Subscriber {\n /**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional finalization logic here. This will only be called on finalization if the\n * subscriber itself is not already closed. This is called after all other finalization logic is executed.\n * @param shouldUnsubscribe An optional check to see if an unsubscribe call should truly unsubscribe.\n * NOTE: This currently **ONLY** exists to support the strange behavior of {@link groupBy}, where unsubscription\n * to the resulting observable does not actually disconnect from the source if there are active subscriptions\n * to any grouped observable. (DO NOT EXPOSE OR USE EXTERNALLY!!!)\n */\n constructor(\n destination: Subscriber,\n onNext?: (value: T) => void,\n onComplete?: () => void,\n onError?: (err: any) => void,\n private onFinalize?: () => void,\n private shouldUnsubscribe?: () => boolean\n ) {\n // It's important - for performance reasons - that all of this class's\n // members are initialized and that they are always initialized in the same\n // order. This will ensure that all OperatorSubscriber instances have the\n // same hidden class in V8. This, in turn, will help keep the number of\n // hidden classes involved in property accesses within the base class as\n // low as possible. If the number of hidden classes involved exceeds four,\n // the property accesses will become megamorphic and performance penalties\n // will be incurred - i.e. inline caches won't be used.\n //\n // The reasons for ensuring all instances have the same hidden class are\n // further discussed in this blog post from Benedikt Meurer:\n // https://benediktmeurer.de/2018/03/23/impact-of-polymorphism-on-component-based-frameworks-like-react/\n super(destination);\n this._next = onNext\n ? function (this: OperatorSubscriber, value: T) {\n try {\n onNext(value);\n } catch (err) {\n destination.error(err);\n }\n }\n : super._next;\n this._error = onError\n ? function (this: OperatorSubscriber, err: any) {\n try {\n onError(err);\n } catch (err) {\n // Send any errors that occur down stream.\n destination.error(err);\n } finally {\n // Ensure finalization.\n this.unsubscribe();\n }\n }\n : super._error;\n this._complete = onComplete\n ? function (this: OperatorSubscriber) {\n try {\n onComplete();\n } catch (err) {\n // Send any errors that occur down stream.\n destination.error(err);\n } finally {\n // Ensure finalization.\n this.unsubscribe();\n }\n }\n : super._complete;\n }\n\n unsubscribe() {\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n const { closed } = this;\n super.unsubscribe();\n // Execute additional teardown if we have any and we didn't already do so.\n !closed && this.onFinalize?.();\n }\n }\n}\n", "import { Subscription } from '../Subscription';\n\ninterface AnimationFrameProvider {\n schedule(callback: FrameRequestCallback): Subscription;\n requestAnimationFrame: typeof requestAnimationFrame;\n cancelAnimationFrame: typeof cancelAnimationFrame;\n delegate:\n | {\n requestAnimationFrame: typeof requestAnimationFrame;\n cancelAnimationFrame: typeof cancelAnimationFrame;\n }\n | undefined;\n}\n\nexport const animationFrameProvider: AnimationFrameProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n schedule(callback) {\n let request = requestAnimationFrame;\n let cancel: typeof cancelAnimationFrame | undefined = cancelAnimationFrame;\n const { delegate } = animationFrameProvider;\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n const handle = request((timestamp) => {\n // Clear the cancel function. The request has been fulfilled, so\n // attempting to cancel the request upon unsubscription would be\n // pointless.\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription(() => cancel?.(handle));\n },\n requestAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return (delegate?.requestAnimationFrame || requestAnimationFrame)(...args);\n },\n cancelAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return (delegate?.cancelAnimationFrame || cancelAnimationFrame)(...args);\n },\n delegate: undefined,\n};\n", "import { createErrorClass } from './createErrorClass';\n\nexport interface ObjectUnsubscribedError extends Error {}\n\nexport interface ObjectUnsubscribedErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (): ObjectUnsubscribedError;\n}\n\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport const ObjectUnsubscribedError: ObjectUnsubscribedErrorCtor = createErrorClass(\n (_super) =>\n function ObjectUnsubscribedErrorImpl(this: any) {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n }\n);\n", "import { Operator } from './Operator';\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { Observer, SubscriptionLike, TeardownLogic } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A Subject is a special type of Observable that allows values to be\n * multicasted to many Observers. Subjects are like EventEmitters.\n *\n * Every Subject is an Observable and an Observer. You can subscribe to a\n * Subject, and you can call next to feed values as well as error and complete.\n */\nexport class Subject extends Observable implements SubscriptionLike {\n closed = false;\n\n private currentObservers: Observer[] | null = null;\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n observers: Observer[] = [];\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n isStopped = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n hasError = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n thrownError: any = null;\n\n /**\n * Creates a \"subject\" by basically gluing an observer to an observable.\n *\n * @nocollapse\n * @deprecated Recommended you do not use. Will be removed at some point in the future. Plans for replacement still under discussion.\n */\n static create: (...args: any[]) => any = (destination: Observer, source: Observable): AnonymousSubject => {\n return new AnonymousSubject(destination, source);\n };\n\n constructor() {\n // NOTE: This must be here to obscure Observable's constructor.\n super();\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n lift(operator: Operator): Observable {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator as any;\n return subject as any;\n }\n\n /** @internal */\n protected _throwIfClosed() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n }\n\n next(value: T) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n if (!this.currentObservers) {\n this.currentObservers = Array.from(this.observers);\n }\n for (const observer of this.currentObservers) {\n observer.next(value);\n }\n }\n });\n }\n\n error(err: any) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.hasError = this.isStopped = true;\n this.thrownError = err;\n const { observers } = this;\n while (observers.length) {\n observers.shift()!.error(err);\n }\n }\n });\n }\n\n complete() {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.isStopped = true;\n const { observers } = this;\n while (observers.length) {\n observers.shift()!.complete();\n }\n }\n });\n }\n\n unsubscribe() {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null!;\n }\n\n get observed() {\n return this.observers?.length > 0;\n }\n\n /** @internal */\n protected _trySubscribe(subscriber: Subscriber): TeardownLogic {\n this._throwIfClosed();\n return super._trySubscribe(subscriber);\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n }\n\n /** @internal */\n protected _innerSubscribe(subscriber: Subscriber) {\n const { hasError, isStopped, observers } = this;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(() => {\n this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n }\n\n /** @internal */\n protected _checkFinalizedStatuses(subscriber: Subscriber) {\n const { hasError, thrownError, isStopped } = this;\n if (hasError) {\n subscriber.error(thrownError);\n } else if (isStopped) {\n subscriber.complete();\n }\n }\n\n /**\n * Creates a new Observable with this Subject as the source. You can do this\n * to create custom Observer-side logic of the Subject and conceal it from\n * code that uses the Observable.\n * @return {Observable} Observable that the Subject casts to\n */\n asObservable(): Observable {\n const observable: any = new Observable();\n observable.source = this;\n return observable;\n }\n}\n\n/**\n * @class AnonymousSubject\n */\nexport class AnonymousSubject extends Subject {\n constructor(\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n public destination?: Observer,\n source?: Observable\n ) {\n super();\n this.source = source;\n }\n\n next(value: T) {\n this.destination?.next?.(value);\n }\n\n error(err: any) {\n this.destination?.error?.(err);\n }\n\n complete() {\n this.destination?.complete?.();\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n return this.source?.subscribe(subscriber) ?? EMPTY_SUBSCRIPTION;\n }\n}\n", "import { Subject } from './Subject';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\n\n/**\n * A variant of Subject that requires an initial value and emits its current\n * value whenever it is subscribed to.\n *\n * @class BehaviorSubject\n */\nexport class BehaviorSubject extends Subject {\n constructor(private _value: T) {\n super();\n }\n\n get value(): T {\n return this.getValue();\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n const subscription = super._subscribe(subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n }\n\n getValue(): T {\n const { hasError, thrownError, _value } = this;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n }\n\n next(value: T): void {\n super.next((this._value = value));\n }\n}\n", "import { TimestampProvider } from '../types';\n\ninterface DateTimestampProvider extends TimestampProvider {\n delegate: TimestampProvider | undefined;\n}\n\nexport const dateTimestampProvider: DateTimestampProvider = {\n now() {\n // Use the variable rather than `this` so that the function can be called\n // without being bound to the provider.\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n", "import { Subject } from './Subject';\nimport { TimestampProvider } from './types';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * A variant of {@link Subject} that \"replays\" old values to new subscribers by emitting them when they first subscribe.\n *\n * `ReplaySubject` has an internal buffer that will store a specified number of values that it has observed. Like `Subject`,\n * `ReplaySubject` \"observes\" values by having them passed to its `next` method. When it observes a value, it will store that\n * value for a time determined by the configuration of the `ReplaySubject`, as passed to its constructor.\n *\n * When a new subscriber subscribes to the `ReplaySubject` instance, it will synchronously emit all values in its buffer in\n * a First-In-First-Out (FIFO) manner. The `ReplaySubject` will also complete, if it has observed completion; and it will\n * error if it has observed an error.\n *\n * There are two main configuration items to be concerned with:\n *\n * 1. `bufferSize` - This will determine how many items are stored in the buffer, defaults to infinite.\n * 2. `windowTime` - The amount of time to hold a value in the buffer before removing it from the buffer.\n *\n * Both configurations may exist simultaneously. So if you would like to buffer a maximum of 3 values, as long as the values\n * are less than 2 seconds old, you could do so with a `new ReplaySubject(3, 2000)`.\n *\n * ### Differences with BehaviorSubject\n *\n * `BehaviorSubject` is similar to `new ReplaySubject(1)`, with a couple of exceptions:\n *\n * 1. `BehaviorSubject` comes \"primed\" with a single value upon construction.\n * 2. `ReplaySubject` will replay values, even after observing an error, where `BehaviorSubject` will not.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n * @see {@link shareReplay}\n */\nexport class ReplaySubject extends Subject {\n private _buffer: (T | number)[] = [];\n private _infiniteTimeWindow = true;\n\n /**\n * @param bufferSize The size of the buffer to replay on subscription\n * @param windowTime The amount of time the buffered items will stay buffered\n * @param timestampProvider An object with a `now()` method that provides the current timestamp. This is used to\n * calculate the amount of time something has been buffered.\n */\n constructor(\n private _bufferSize = Infinity,\n private _windowTime = Infinity,\n private _timestampProvider: TimestampProvider = dateTimestampProvider\n ) {\n super();\n this._infiniteTimeWindow = _windowTime === Infinity;\n this._bufferSize = Math.max(1, _bufferSize);\n this._windowTime = Math.max(1, _windowTime);\n }\n\n next(value: T): void {\n const { isStopped, _buffer, _infiniteTimeWindow, _timestampProvider, _windowTime } = this;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n super.next(value);\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n this._throwIfClosed();\n this._trimBuffer();\n\n const subscription = this._innerSubscribe(subscriber);\n\n const { _infiniteTimeWindow, _buffer } = this;\n // We use a copy here, so reentrant code does not mutate our array while we're\n // emitting it to a new subscriber.\n const copy = _buffer.slice();\n for (let i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i] as T);\n }\n\n this._checkFinalizedStatuses(subscriber);\n\n return subscription;\n }\n\n private _trimBuffer() {\n const { _bufferSize, _timestampProvider, _buffer, _infiniteTimeWindow } = this;\n // If we don't have an infinite buffer size, and we're over the length,\n // use splice to truncate the old buffer values off. Note that we have to\n // double the size for instances where we're not using an infinite time window\n // because we're storing the values and the timestamps in the same array.\n const adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n\n // Now, if we're not in an infinite time window, remove all values where the time is\n // older than what is allowed.\n if (!_infiniteTimeWindow) {\n const now = _timestampProvider.now();\n let last = 0;\n // Search the array for the first timestamp that isn't expired and\n // truncate the buffer up to that point.\n for (let i = 1; i < _buffer.length && (_buffer[i] as number) <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n }\n}\n", "import { Scheduler } from '../Scheduler';\nimport { Subscription } from '../Subscription';\nimport { SchedulerAction } from '../types';\n\n/**\n * A unit of work to be executed in a `scheduler`. An action is typically\n * created from within a {@link SchedulerLike} and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action extends Subscription {\n * new (scheduler: Scheduler, work: (state?: T) => void);\n * schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action\n */\nexport class Action extends Subscription {\n constructor(scheduler: Scheduler, work: (this: SchedulerAction, state?: T) => void) {\n super();\n }\n /**\n * Schedules this action on its parent {@link SchedulerLike} for execution. May be passed\n * some context object, `state`. May happen at some point in the future,\n * according to the `delay` parameter, if specified.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler.\n * @return {void}\n */\n public schedule(state?: T, delay: number = 0): Subscription {\n return this;\n }\n}\n", "import type { TimerHandle } from './timerHandle';\ntype SetIntervalFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearIntervalFunction = (handle: TimerHandle) => void;\n\ninterface IntervalProvider {\n setInterval: SetIntervalFunction;\n clearInterval: ClearIntervalFunction;\n delegate:\n | {\n setInterval: SetIntervalFunction;\n clearInterval: ClearIntervalFunction;\n }\n | undefined;\n}\n\nexport const intervalProvider: IntervalProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setInterval(handler: () => void, timeout?: number, ...args) {\n const { delegate } = intervalProvider;\n if (delegate?.setInterval) {\n return delegate.setInterval(handler, timeout, ...args);\n }\n return setInterval(handler, timeout, ...args);\n },\n clearInterval(handle) {\n const { delegate } = intervalProvider;\n return (delegate?.clearInterval || clearInterval)(handle as any);\n },\n delegate: undefined,\n};\n", "import { Action } from './Action';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nimport { TimerHandle } from './timerHandle';\n\nexport class AsyncAction extends Action {\n public id: TimerHandle | undefined;\n public state?: T;\n // @ts-ignore: Property has no initializer and is not definitely assigned\n public delay: number;\n protected pending: boolean = false;\n\n constructor(protected scheduler: AsyncScheduler, protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (this.closed) {\n return this;\n }\n\n // Always replace the current state with the new state.\n this.state = state;\n\n const id = this.id;\n const scheduler = this.scheduler;\n\n //\n // Important implementation note:\n //\n // Actions only execute once by default, unless rescheduled from within the\n // scheduled callback. This allows us to implement single and repeat\n // actions via the same code path, without adding API surface area, as well\n // as mimic traditional recursion but across asynchronous boundaries.\n //\n // However, JS runtimes and timers distinguish between intervals achieved by\n // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n // serial `setTimeout` calls can be individually delayed, which delays\n // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n // guarantee the interval callback will be invoked more precisely to the\n // interval period, regardless of load.\n //\n // Therefore, we use `setInterval` to schedule single and repeat actions.\n // If the action reschedules itself with the same delay, the interval is not\n // canceled. If the action doesn't reschedule, or reschedules with a\n // different delay, the interval will be canceled after scheduled callback\n // execution.\n //\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n\n // Set the pending flag indicating that this action has been scheduled, or\n // has recursively rescheduled itself.\n this.pending = true;\n\n this.delay = delay;\n // If this action has already an async Id, don't request a new one.\n this.id = this.id ?? this.requestAsyncId(scheduler, this.id, delay);\n\n return this;\n }\n\n protected requestAsyncId(scheduler: AsyncScheduler, _id?: TimerHandle, delay: number = 0): TimerHandle {\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n\n protected recycleAsyncId(_scheduler: AsyncScheduler, id?: TimerHandle, delay: number | null = 0): TimerHandle | undefined {\n // If this action is rescheduled with the same delay time, don't clear the interval id.\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n // Otherwise, if the action's delay time is different from the current delay,\n // or the action has been rescheduled before it's executed, clear the interval id\n if (id != null) {\n intervalProvider.clearInterval(id);\n }\n\n return undefined;\n }\n\n /**\n * Immediately executes this action and the `work` it contains.\n * @return {any}\n */\n public execute(state: T, delay: number): any {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n } else if (this.pending === false && this.id != null) {\n // Dequeue if the action didn't reschedule itself. Don't call\n // unsubscribe(), because the action could reschedule later.\n // For example:\n // ```\n // scheduler.schedule(function doWork(counter) {\n // /* ... I'm a busy worker bee ... */\n // var originalAction = this;\n // /* wait 100ms before rescheduling the action */\n // setTimeout(function () {\n // originalAction.schedule(counter + 1);\n // }, 100);\n // }, 1000);\n // ```\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n\n protected _execute(state: T, _delay: number): any {\n let errored: boolean = false;\n let errorValue: any;\n try {\n this.work(state);\n } catch (e) {\n errored = true;\n // HACK: Since code elsewhere is relying on the \"truthiness\" of the\n // return here, we can't have it return \"\" or 0 or false.\n // TODO: Clean this up when we refactor schedulers mid-version-8 or so.\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n\n unsubscribe() {\n if (!this.closed) {\n const { id, scheduler } = this;\n const { actions } = scheduler;\n\n this.work = this.state = this.scheduler = null!;\n this.pending = false;\n\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n\n this.delay = null!;\n super.unsubscribe();\n }\n }\n}\n", "import { Action } from './scheduler/Action';\nimport { Subscription } from './Subscription';\nimport { SchedulerLike, SchedulerAction } from './types';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an `Action`.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n * @deprecated Scheduler is an internal implementation detail of RxJS, and\n * should not be used directly. Rather, create your own class and implement\n * {@link SchedulerLike}. Will be made internal in v8.\n */\nexport class Scheduler implements SchedulerLike {\n public static now: () => number = dateTimestampProvider.now;\n\n constructor(private schedulerActionCtor: typeof Action, now: () => number = Scheduler.now) {\n this.now = now;\n }\n\n /**\n * A getter method that returns a number representing the current time\n * (at the time this function was called) according to the scheduler's own\n * internal clock.\n * @return {number} A number that represents the current time. May or may not\n * have a relation to wall-clock time. May or may not refer to a time unit\n * (e.g. milliseconds).\n */\n public now: () => number;\n\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n public schedule(work: (this: SchedulerAction, state?: T) => void, delay: number = 0, state?: T): Subscription {\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n }\n}\n", "import { Scheduler } from '../Scheduler';\nimport { Action } from './Action';\nimport { AsyncAction } from './AsyncAction';\nimport { TimerHandle } from './timerHandle';\n\nexport class AsyncScheduler extends Scheduler {\n public actions: Array> = [];\n /**\n * A flag to indicate whether the Scheduler is currently executing a batch of\n * queued actions.\n * @type {boolean}\n * @internal\n */\n public _active: boolean = false;\n /**\n * An internal ID used to track the latest asynchronous task such as those\n * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n * others.\n * @type {any}\n * @internal\n */\n public _scheduled: TimerHandle | undefined;\n\n constructor(SchedulerAction: typeof Action, now: () => number = Scheduler.now) {\n super(SchedulerAction, now);\n }\n\n public flush(action: AsyncAction): void {\n const { actions } = this;\n\n if (this._active) {\n actions.push(action);\n return;\n }\n\n let error: any;\n this._active = true;\n\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()!)); // exhaust the scheduler queue\n\n this._active = false;\n\n if (error) {\n while ((action = actions.shift()!)) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n", "import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n *\n * Async Scheduler\n *\n * Schedule task as if you used setTimeout(task, duration)\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asapScheduler} scheduler.\n *\n * ## Examples\n * Use async scheduler to delay task\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * const task = () => console.log('it works!');\n *\n * asyncScheduler.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n * ```\n *\n * Use async scheduler to repeat task in intervals\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * function task(state) {\n * console.log(state);\n * this.schedule(state + 1, 1000); // `this` references currently executing Action,\n * // which we reschedule with new state and delay\n * }\n *\n * asyncScheduler.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n * ```\n */\n\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\n\n/**\n * @deprecated Renamed to {@link asyncScheduler}. Will be removed in v8.\n */\nexport const async = asyncScheduler;\n", "import { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { QueueScheduler } from './QueueScheduler';\nimport { SchedulerAction } from '../types';\nimport { TimerHandle } from './timerHandle';\n\nexport class QueueAction extends AsyncAction {\n constructor(protected scheduler: QueueScheduler, protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (delay > 0) {\n return super.schedule(state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n }\n\n public execute(state: T, delay: number): any {\n return delay > 0 || this.closed ? super.execute(state, delay) : this._execute(state, delay);\n }\n\n protected requestAsyncId(scheduler: QueueScheduler, id?: TimerHandle, delay: number = 0): TimerHandle {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n\n if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n\n // Otherwise flush the scheduler starting with this action.\n scheduler.flush(this);\n\n // HACK: In the past, this was returning `void`. However, `void` isn't a valid\n // `TimerHandle`, and generally the return value here isn't really used. So the\n // compromise is to return `0` which is both \"falsy\" and a valid `TimerHandle`,\n // as opposed to refactoring every other instanceo of `requestAsyncId`.\n return 0;\n }\n}\n", "import { AsyncScheduler } from './AsyncScheduler';\n\nexport class QueueScheduler extends AsyncScheduler {\n}\n", "import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\n\n/**\n *\n * Queue Scheduler\n *\n * Put every next task on a queue, instead of executing it immediately\n *\n * `queue` scheduler, when used with delay, behaves the same as {@link asyncScheduler} scheduler.\n *\n * When used without delay, it schedules given task synchronously - executes it right when\n * it is scheduled. However when called recursively, that is when inside the scheduled task,\n * another task is scheduled with queue scheduler, instead of executing immediately as well,\n * that task will be put on a queue and wait for current one to finish.\n *\n * This means that when you execute task with `queue` scheduler, you are sure it will end\n * before any other task scheduled with that scheduler will start.\n *\n * ## Examples\n * Schedule recursively first, then do something\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(() => {\n * queueScheduler.schedule(() => console.log('second')); // will not happen now, but will be put on a queue\n *\n * console.log('first');\n * });\n *\n * // Logs:\n * // \"first\"\n * // \"second\"\n * ```\n *\n * Reschedule itself recursively\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(function(state) {\n * if (state !== 0) {\n * console.log('before', state);\n * this.schedule(state - 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * console.log('after', state);\n * }\n * }, 0, 3);\n *\n * // In scheduler that runs recursively, you would expect:\n * // \"before\", 3\n * // \"before\", 2\n * // \"before\", 1\n * // \"after\", 1\n * // \"after\", 2\n * // \"after\", 3\n *\n * // But with queue it logs:\n * // \"before\", 3\n * // \"after\", 3\n * // \"before\", 2\n * // \"after\", 2\n * // \"before\", 1\n * // \"after\", 1\n * ```\n */\n\nexport const queueScheduler = new QueueScheduler(QueueAction);\n\n/**\n * @deprecated Renamed to {@link queueScheduler}. Will be removed in v8.\n */\nexport const queue = queueScheduler;\n", "import { AsyncAction } from './AsyncAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nimport { SchedulerAction } from '../types';\nimport { animationFrameProvider } from './animationFrameProvider';\nimport { TimerHandle } from './timerHandle';\n\nexport class AnimationFrameAction extends AsyncAction {\n constructor(protected scheduler: AnimationFrameScheduler, protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AnimationFrameScheduler, id?: TimerHandle, delay: number = 0): TimerHandle {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If an animation frame has already been requested, don't request another\n // one. If an animation frame hasn't been requested yet, request one. Return\n // the current animation frame request id.\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(() => scheduler.flush(undefined)));\n }\n\n protected recycleAsyncId(scheduler: AnimationFrameScheduler, id?: TimerHandle, delay: number = 0): TimerHandle | undefined {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if (delay != null ? delay > 0 : this.delay > 0) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue has no remaining actions with the same async id,\n // cancel the requested animation frame and set the scheduled flag to\n // undefined so the next AnimationFrameAction will request its own.\n const { actions } = scheduler;\n if (id != null && actions[actions.length - 1]?.id !== id) {\n animationFrameProvider.cancelAnimationFrame(id as number);\n scheduler._scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n", "import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AnimationFrameScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n this._active = true;\n // The async id that effects a call to flush is stored in _scheduled.\n // Before executing an action, it's necessary to check the action's async\n // id to determine whether it's supposed to be executed in the current\n // flush.\n // Previous implementations of this method used a count to determine this,\n // but that was unsound, as actions that are unsubscribed - i.e. cancelled -\n // are removed from the actions array and that can shift actions that are\n // scheduled to be executed in a subsequent flush into positions at which\n // they are executed within the current flush.\n const flushId = this._scheduled;\n this._scheduled = undefined;\n\n const { actions } = this;\n let error: any;\n action = action || actions.shift()!;\n\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n\n this._active = false;\n\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n", "import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\n\n/**\n *\n * Animation Frame Scheduler\n *\n * Perform task when `window.requestAnimationFrame` would fire\n *\n * When `animationFrame` scheduler is used with delay, it will fall back to {@link asyncScheduler} scheduler\n * behaviour.\n *\n * Without delay, `animationFrame` scheduler can be used to create smooth browser animations.\n * It makes sure scheduled task will happen just before next browser content repaint,\n * thus performing animations as efficiently as possible.\n *\n * ## Example\n * Schedule div height animation\n * ```ts\n * // html:
\n * import { animationFrameScheduler } from 'rxjs';\n *\n * const div = document.querySelector('div');\n *\n * animationFrameScheduler.schedule(function(height) {\n * div.style.height = height + \"px\";\n *\n * this.schedule(height + 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * }, 0, 0);\n *\n * // You will see a div element growing in height\n * ```\n */\n\nexport const animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\n\n/**\n * @deprecated Renamed to {@link animationFrameScheduler}. Will be removed in v8.\n */\nexport const animationFrame = animationFrameScheduler;\n", "import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\n/**\n * A simple Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * Just emits 'complete', and nothing else.\n *\n * ![](empty.png)\n *\n * A simple Observable that only emits the complete notification. It can be used\n * for composing with other Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n *\n * Log complete notification\n *\n * ```ts\n * import { EMPTY } from 'rxjs';\n *\n * EMPTY.subscribe({\n * next: () => console.log('Next'),\n * complete: () => console.log('Complete!')\n * });\n *\n * // Outputs\n * // Complete!\n * ```\n *\n * Emit the number 7, then complete\n *\n * ```ts\n * import { EMPTY, startWith } from 'rxjs';\n *\n * const result = EMPTY.pipe(startWith(7));\n * result.subscribe(x => console.log(x));\n *\n * // Outputs\n * // 7\n * ```\n *\n * Map and flatten only odd numbers to the sequence `'a'`, `'b'`, `'c'`\n *\n * ```ts\n * import { interval, mergeMap, of, EMPTY } from 'rxjs';\n *\n * const interval$ = interval(1000);\n * const result = interval$.pipe(\n * mergeMap(x => x % 2 === 1 ? of('a', 'b', 'c') : EMPTY),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval, e.g. (0, 1, 2, 3, ...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1, print a, b, c (each on its own)\n * // if x % 2 is not equal to 1, nothing will be output\n * ```\n *\n * @see {@link Observable}\n * @see {@link NEVER}\n * @see {@link of}\n * @see {@link throwError}\n */\nexport const EMPTY = new Observable((subscriber) => subscriber.complete());\n\n/**\n * @param scheduler A {@link SchedulerLike} to use for scheduling\n * the emission of the complete notification.\n * @deprecated Replaced with the {@link EMPTY} constant or {@link scheduled} (e.g. `scheduled([], scheduler)`). Will be removed in v8.\n */\nexport function empty(scheduler?: SchedulerLike) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\n\nfunction emptyScheduled(scheduler: SchedulerLike) {\n return new Observable((subscriber) => scheduler.schedule(() => subscriber.complete()));\n}\n", "import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport function isScheduler(value: any): value is SchedulerLike {\n return value && isFunction(value.schedule);\n}\n", "import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\n\nfunction last(arr: T[]): T | undefined {\n return arr[arr.length - 1];\n}\n\nexport function popResultSelector(args: any[]): ((...args: unknown[]) => unknown) | undefined {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\n\nexport function popScheduler(args: any[]): SchedulerLike | undefined {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\n\nexport function popNumber(args: any[], defaultValue: number): number {\n return typeof last(args) === 'number' ? args.pop()! : defaultValue;\n}\n", "export const isArrayLike = ((x: any): x is ArrayLike => x && typeof x.length === 'number' && typeof x !== 'function');", "import { isFunction } from \"./isFunction\";\n\n/**\n * Tests to see if the object is \"thennable\".\n * @param value the object to test\n */\nexport function isPromise(value: any): value is PromiseLike {\n return isFunction(value?.then);\n}\n", "import { InteropObservable } from '../types';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being Observable (but not necessary an Rx Observable) */\nexport function isInteropObservable(input: any): input is InteropObservable {\n return isFunction(input[Symbol_observable]);\n}\n", "import { isFunction } from './isFunction';\n\nexport function isAsyncIterable(obj: any): obj is AsyncIterable {\n return Symbol.asyncIterator && isFunction(obj?.[Symbol.asyncIterator]);\n}\n", "/**\n * Creates the TypeError to throw if an invalid object is passed to `from` or `scheduled`.\n * @param input The object that was passed.\n */\nexport function createInvalidObservableTypeError(input: any) {\n // TODO: We should create error codes that can be looked up, so this can be less verbose.\n return new TypeError(\n `You provided ${\n input !== null && typeof input === 'object' ? 'an invalid object' : `'${input}'`\n } where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`\n );\n}\n", "export function getSymbolIterator(): symbol {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator' as any;\n }\n\n return Symbol.iterator;\n}\n\nexport const iterator = getSymbolIterator();\n", "import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being an Iterable */\nexport function isIterable(input: any): input is Iterable {\n return isFunction(input?.[Symbol_iterator]);\n}\n", "import { ReadableStreamLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport async function* readableStreamLikeToAsyncGenerator(readableStream: ReadableStreamLike): AsyncGenerator {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { value, done } = await reader.read();\n if (done) {\n return;\n }\n yield value!;\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nexport function isReadableStreamLike(obj: any): obj is ReadableStreamLike {\n // We don't want to use instanceof checks because they would return\n // false for instances from another Realm, like an

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