pax_global_header00006660000000000000000000000064151434526350014522gustar00rootroot0000000000000052 comment=6aadcd5eb6c484931784b810876b151a03e12c1d sphinx-contrib-typer-058f2e1/000077500000000000000000000000001514345263500161665ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/.github/000077500000000000000000000000001514345263500175265ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/.github/dependabot.yml000066400000000000000000000007651514345263500223660ustar00rootroot00000000000000# To get started with Dependabot version updates, you'll need to specify which # package ecosystems to update and where the package manifests are located. # Please see the documentation for all configuration options: # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates version: 2 updates: - package-ecosystem: "pip" # See documentation for possible values directory: "/" # Location of package manifests schedule: interval: "daily" sphinx-contrib-typer-058f2e1/.github/workflows/000077500000000000000000000000001514345263500215635ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/.github/workflows/lint.yml000066400000000000000000000032511514345263500232550ustar00rootroot00000000000000name: Lint permissions: contents: read on: push: tags-ignore: - '*' branches: - '*' pull_request: workflow_call: workflow_dispatch: inputs: debug: description: 'Open ssh debug session.' required: true default: false type: boolean jobs: linting: runs-on: ubuntu-latest strategy: matrix: # run static analysis on bleeding and trailing edges python-version: [ '3.10', '3.13', '3.14' ] steps: - uses: actions/checkout@v6 with: persist-credentials: false - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v6 id: sp with: python-version: ${{ matrix.python-version }} allow-prereleases: true - name: Install uv uses: astral-sh/setup-uv@v7 with: enable-cache: true - name: Install Just uses: extractions/setup-just@v3 - name: Install Dependencies run: | sudo apt-get install libopenblas-dev libxml2-dev libxslt1-dev zlib1g-dev just setup ${{ steps.sp.outputs.python-path }} just install - name: Install Emacs if: ${{ github.event.inputs.debug == 'true' }} run: | sudo apt install emacs - name: Setup tmate session if: ${{ github.event.inputs.debug == 'true' }} uses: mxschmitt/action-tmate@v3 with: detached: true timeout-minutes: 60 - name: Run Static Analysis run: | just check-lint just check-format just check-types just check-package just check-readme sphinx-contrib-typer-058f2e1/.github/workflows/release.yml000066400000000000000000000100261514345263500237250ustar00rootroot00000000000000 name: Publish Release permissions: read-all concurrency: # stop previous release runs if tag is recreated group: release-${{ github.ref }} cancel-in-progress: true on: push: tags: - 'v*' # only publish on version tags (e.g. v1.0.0) jobs: lint: permissions: contents: read actions: write uses: ./.github/workflows/lint.yml secrets: inherit test: permissions: contents: read actions: write uses: ./.github/workflows/test.yml secrets: inherit build: name: Build Package runs-on: ubuntu-latest permissions: contents: read actions: write outputs: PACKAGE_NAME: ${{ steps.set-package.outputs.package_name }} RELEASE_VERSION: ${{ steps.set-package.outputs.release_version }} steps: - uses: actions/checkout@v6 with: persist-credentials: false - name: Set up Python uses: actions/setup-python@v6 with: python-version: "3.12" # for tomlib - name: Install uv uses: astral-sh/setup-uv@v7 with: enable-cache: true - name: Setup Just uses: extractions/setup-just@v3 - name: Verify Tag run: | TAG_NAME=${GITHUB_REF#refs/tags/} echo "Verifying tag $TAG_NAME..." # if a tag was deleted and recreated we may have the old one cached # be sure that we're publishing the current tag! git fetch --force origin refs/tags/$TAG_NAME:refs/tags/$TAG_NAME # verify signature curl -sL https://github.com/${{ github.actor }}.gpg | gpg --import git tag -v "$TAG_NAME" # verify version RELEASE_VERSION=$(just validate_version $TAG_NAME) # export the release version echo "RELEASE_VERSION=${RELEASE_VERSION}" >> $GITHUB_ENV - name: Build the binary wheel and a source tarball run: just build - name: Store the distribution packages uses: actions/upload-artifact@v6 with: name: python-package-distributions path: dist/ - name: Set Package Name id: set-package run: PACKAGE_NAME=$(python -c "import tomllib; print(tomllib.load(open('pyproject.toml', 'rb'))['project']['name'])") echo "PACKAGE_NAME=${PACKAGE_NAME}" >> $GITHUB_ENV publish-to-pypi: name: Publish to PyPI needs: - lint - test - build runs-on: ubuntu-latest environment: name: pypi url: https://pypi.org/p/${{ needs.build.outputs.PACKAGE_NAME }} permissions: id-token: write # IMPORTANT: mandatory for trusted publishing steps: - name: Download all the dists uses: actions/download-artifact@v7 with: name: python-package-distributions path: dist/ - name: Publish distribution 📦 to PyPI uses: pypa/gh-action-pypi-publish@release/v1.13 github-release: name: Publish GitHub Release runs-on: ubuntu-latest needs: - lint - test - build permissions: contents: write # IMPORTANT: mandatory for making GitHub Releases id-token: write # IMPORTANT: mandatory for sigstore steps: - name: Download all the dists uses: actions/download-artifact@v7 with: name: python-package-distributions path: dist/ - name: Sign the dists with Sigstore uses: sigstore/gh-action-sigstore-python@v3.2.0 with: inputs: >- ./dist/*.tar.gz ./dist/*.whl - name: Create GitHub Release env: GITHUB_TOKEN: ${{ github.token }} run: >- gh release create '${{ github.ref_name }}' --repo '${{ github.repository }}' --generate-notes --prerelease - name: Upload artifact signatures to GitHub Release env: GITHUB_TOKEN: ${{ github.token }} # Upload to GitHub Release using the `gh` CLI. # `dist/` contains the built packages, and the # sigstore-produced signatures and certificates. run: >- gh release upload '${{ github.ref_name }}' dist/** --repo '${{ github.repository }}' sphinx-contrib-typer-058f2e1/.github/workflows/test.yml000066400000000000000000000046361514345263500232760ustar00rootroot00000000000000name: Test on: push: tags-ignore: - '*' branches: - '*' pull_request: workflow_call: workflow_dispatch: inputs: debug: description: 'Open ssh debug session.' required: true default: false type: boolean schedule: # Every Sunday at 9:00 AM Los Angeles time. # GitHub cron is UTC; 09:00 PT == 17:00 UTC (PST). - cron: '0 17 * * 0' jobs: build: runs-on: ubuntu-latest strategy: matrix: python-version: ['3.10', '3.11', '3.12', '3.13', '3.14'] sphinx-version: - '6.0' - '7.0' - '8.0' - '9.0' exclude: - python-version: '3.12' sphinx-version: '6.0' - python-version: '3.13' sphinx-version: '6.0' - python-version: '3.14' sphinx-version: '6.0' - python-version: '3.12' sphinx-version: '7.0' - python-version: '3.13' sphinx-version: '7.0' - python-version: '3.11' sphinx-version: '9.0' - python-version: '3.14' sphinx-version: '7.0' - python-version: '3.10' sphinx-version: '9.0' steps: - uses: actions/checkout@v6 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} allow-prereleases: true - name: Install uv uses: astral-sh/setup-uv@v7 with: enable-cache: true - name: Upgrade all dependencies for our weekly runs if: github.event_name == 'schedule' run: uv lock --upgrade - name: Install Just uses: extractions/setup-just@v3 - name: Install Emacs if: ${{ github.event.inputs.debug == 'on' }} run: | sudo apt install emacs - name: Setup tmate session if: ${{ github.event.inputs.debug == 'on' }} uses: mxschmitt/action-tmate@v3 with: detached: true timeout-minutes: 60 - name: Install Release Dependencies run: | sudo apt-get install libopenblas-dev libxml2-dev libxslt1-dev zlib1g-dev just test-lock "Sphinx~=${{ matrix.sphinx-version }}" - name: Run Unit Tests run: | just test - name: Upload coverage to Codecov uses: codecov/codecov-action@v5 with: token: ${{ secrets.CODECOV_TOKEN }} files: ./coverage.xml sphinx-contrib-typer-058f2e1/.gitignore000066400000000000000000000062461514345263500201660ustar00rootroot00000000000000# Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ share/python-wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .nox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover *.py,cover .hypothesis/ .pytest_cache/ cover/ # Translations *.mo *.pot # Django stuff: *.log local_settings.py db.sqlite3 db.sqlite3-journal # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder .pybuilder/ target/ # Jupyter Notebook .ipynb_checkpoints # IPython profile_default/ ipython_config.py # pyenv # For a library or package, you might want to ignore these files since the code is # intended to run in multiple environments; otherwise, check them in: .python-version # pipenv # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. # However, in case of collaboration, if having platform-specific dependencies or dependencies # having no cross-platform support, pipenv may install dependencies that don't work, or not # install all needed dependencies. #Pipfile.lock # poetry # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. # This is especially recommended for binary packages to ensure reproducibility, and is more # commonly ignored for libraries. # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control #poetry.lock # pdm # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. #pdm.lock # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it # in version control. # https://pdm.fming.dev/#use-with-ide .pdm.toml # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm __pypackages__/ # Celery stuff celerybeat-schedule celerybeat.pid # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/ .dmypy.json dmypy.json # Pyre type checker .pyre/ # pytype static type analyzer .pytype/ # Cython debug symbols cython_debug/ # PyCharm # JetBrains specific template is maintained in a separate JetBrains.gitignore that can # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ .DS_Store doc/source/typer_cache.json poetry.lock tests/**/build tests/click/callback_record.json tests/click/cache.json tests/click/validation/resized_html.png sphinx-contrib-typer-058f2e1/.pre-commit-config.yaml000066400000000000000000000003741514345263500224530ustar00rootroot00000000000000repos: - repo: local hooks: - id: lint name: Lint entry: just lint language: system pass_filenames: false - id: format name: Format entry: just format language: system pass_filenames: false sphinx-contrib-typer-058f2e1/.readthedocs.yaml000066400000000000000000000012271514345263500214170ustar00rootroot00000000000000# .readthedocs.yaml # Read the Docs configuration file # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details # Required version: 2 # Set the version of Python and other tools you might need build: os: ubuntu-22.04 tools: python: "3.12" jobs: post_install: - pip install uv - UV_PROJECT_ENVIRONMENT=$READTHEDOCS_VIRTUALENV_PATH uv sync --all-extras --link-mode=copy # Build documentation in the docs/ directory with Sphinx sphinx: configuration: doc/source/conf.py # Optionally build your docs in additional formats such as PDF and ePub # remove pdf for now - sphinx tabs does not support formats: - pdf sphinx-contrib-typer-058f2e1/CONTRIBUTING.md000066400000000000000000000112321514345263500204160ustar00rootroot00000000000000 # Contributing Contributions are encouraged! Please use the issue page to submit feature requests or bug reports. Issues with attached PRs will be given priority and have a much higher likelihood of acceptance. Please also open an issue and associate it with any submitted PRs. That said, the aim is to keep this library as lightweight as possible. Only features with broad based use cases will be considered. We are actively seeking additional maintainers. If you're interested, please [contact me](https://github.com/bckohan). ## Installation ### Install Just We provide a platform independent justfile with recipes for all the development tasks. You should [install just](https://just.systems/man/en/installation.html) if it is not on your system already. `sphinxcontrib-typer` uses [uv](https://docs.astral.sh/uv) for environment, package and dependency management: ```bash just install-uv ``` Next, initialize and install the development environment: ```bash just setup just install ``` ## Documentation `sphinxcontrib-typer` documentation is generated using [Sphinx](https://www.sphinx-doc.org/en/master/). Any new feature PRs must provide updated documentation for the features added. To build the docs run: ```bash just docs ``` You can run a live documentation server that will automatically update during editing using: ```bash just docs-live ``` To build the pdf documentation: ```bash just build-docs-pdf ``` ## Static Analysis Before any PR is accepted the following must be run, and static analysis tools should not produce any errors or warnings. Disabling certain errors or warnings where justified is acceptable: ```bash just check ``` ## Running Tests `sphinxcontrib-typer` is setup to use [pytest](https://docs.pytest.org/en/stable/) to run unit tests. All the tests are housed in tests/tests.py. Before a PR is accepted, all tests must be passing and the code coverage must be at as high as it was before. A small number of exempted error handling branches are acceptable. To run the full suite: ```bash just test ``` To run a single test, or group of tests in a class: ```bash just test ::ClassName::FunctionName ``` For instance to run the docs test you would do: ```bash just test tests/tests.py::test_sphinx_html_build ``` ## Just Recipes ```bash build # build src package and wheel build-docs # build the docs build-docs-html # build html documentation build-docs-pdf # build pdf documentation check # run all static checks check-docs # lint the documentation check-docs-links # check the documentation links for broken links check-format # check if the code needs formatting check-lint # lint the code check-package # run package checks check-readme # check that the readme renders check-types # run static type checking clean # remove all non repository artifacts clean-docs # remove doc build artifacts clean-env # remove the virtual environment clean-git-ignored # remove all git ignored files coverage # generate the test coverage report coverage-erase # erase any coverage data docs # build and open the documentation docs-live # serve the documentation, with auto-reload fetch-refs LIB # fetch the intersphinx references for the given package fix # fix formatting, linting issues and import sorting format # format the code and sort imports install *OPTS # update and install development dependencies install-basic # install without extra dependencies install-precommit # install git pre-commit hooks install-uv # install the uv package manager lint # sort the imports and fix linting issues open-docs # open the html documentation precommit # run the pre-commit checks release VERSION # issue a relase for the given semver string (e.g. 2.1.0) run +ARGS # run the command in the virtual environment setup python="python" # setup the venv and pre-commit hooks sort-imports # sort the python imports test *TESTS # run tests test-lock +PACKAGES # lock to specific python and versions of given dependencies validate_version VERSION # validate the given version string against the lib version ```sphinx-contrib-typer-058f2e1/LICENSE000066400000000000000000000020611514345263500171720ustar00rootroot00000000000000MIT License Copyright (c) 2023-2026 Brian Kohan Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. sphinx-contrib-typer-058f2e1/README.md000066400000000000000000000125421514345263500174510ustar00rootroot00000000000000 [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) [![PyPI version](https://badge.fury.io/py/sphinxcontrib-typer.svg)](https://pypi.python.org/pypi/sphinxcontrib-typer/) [![PyPI pyversions](https://img.shields.io/pypi/pyversions/sphinxcontrib-typer.svg)](https://pypi.python.org/pypi/sphinxcontrib-typer/) [![PyPI status](https://img.shields.io/pypi/status/sphinxcontrib-typer.svg)](https://pypi.python.org/pypi/sphinxcontrib-typer) [![Documentation Status](https://readthedocs.org/projects/sphinxcontrib-typer/badge/?version=latest)](http://sphinxcontrib-typer.readthedocs.io/?badge=latest/) [![Code Cov](https://codecov.io/gh/sphinx-contrib/typer/branch/main/graph/badge.svg?token=0IZOKN2DYL)](https://app.codecov.io/gh/sphinx-contrib/typer) [![Test Status](https://github.com/sphinx-contrib/typer/workflows/Test/badge.svg)](https://github.com/sphinx-contrib/typer/actions/workflows/test.yml) [![Lint Status](https://github.com/sphinx-contrib/typer/workflows/Lint/badge.svg)](https://github.com/sphinx-contrib/typer/actions/workflows/lint.yml) [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) # sphinxcontrib-typer A Sphinx directive for auto generating docs for [Typer](https://typer.tiangolo.com/) (and [Click](https://click.palletsprojects.com/) commands!) using the rich console formatting available in [Typer](https://typer.tiangolo.com/). This package generates concise command documentation in text, html or svg formats out of the box, but if your goal is to greatly customize the generated documentation [sphinx-click](https://sphinx-click.readthedocs.io/en/latest/) may be more appropriate and will also work for [Typer](https://typer.tiangolo.com/) commands. ## Installation Install with pip:: pip install sphinxcontrib-typer Add ``sphinxcontrib.typer`` to your ``conf.py`` file: ```python # be sure that the commands you want to document are importable # from the python path when building the docs import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).parent / '../path/to/your/commands')) extensions = [ ... 'sphinxcontrib.typer', ... ] ``` ## Usage Say you have a command in the file ``examples/example.py`` that looks like this: ```python import typer import typing as t app = typer.Typer(add_completion=False) @app.callback() def callback( flag1: bool = typer.Option(False, help="Flag 1."), flag2: bool = typer.Option(False, help="Flag 2.") ): """This is the callback function.""" pass @app.command() def foo( name: str = typer.Option(..., help="The name of the item to foo.") ): """This is the foo command.""" pass @app.command() def bar( names: t.List[str] = typer.Option(..., help="The names of the items to bar."), ): """This is the bar command.""" pass if __name__ == "__main__": app() ``` You can generate documentation for this command using the ``typer`` directive like so: ```rst .. typer:: examples.example.app :prog: example1 :width: 70 :preferred: html ``` This would generate html that looks like this: ![Example PNG](https://raw.githubusercontent.com/sphinx-contrib/typer/main/example.html.png) You could change ``:preferred:`` to svg, to generate svg instead: ![Example SVG](https://raw.githubusercontent.com/sphinx-contrib/typer/main/example.svg) | Or to text Usage: example [OPTIONS] COMMAND [ARGS]... This is the callback function. ╭─ Options ──────────────────────────────────────────────────────────╮ │ --flag1 --no-flag1 Flag 1. [default: no-flag1] │ │ --flag2 --no-flag2 Flag 2. [default: no-flag2] │ │ --help Show this message and exit. │ ╰────────────────────────────────────────────────────────────────────╯ ╭─ Commands ─────────────────────────────────────────────────────────╮ │ bar This is the bar command. │ │ foo This is the foo command. │ ╰────────────────────────────────────────────────────────────────────╯ The ``typer`` directive has options for generating docs for all subcommands as well and optionally generating independent sections for each. There are also mechanisms for passing options to the underlying console and svg generation functions. See the official documentation for more information. sphinx-contrib-typer-058f2e1/doc/000077500000000000000000000000001514345263500167335ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/doc/examples/000077500000000000000000000000001514345263500205515ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/doc/examples/__init__.py000066400000000000000000000000001514345263500226500ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/doc/examples/example.py000066400000000000000000000017661514345263500225700ustar00rootroot00000000000000import typer import typing as t try: from enum import StrEnum except ImportError: from enum import Enum class StrEnum(str, Enum): pass from typing_extensions import Annotated app = typer.Typer(add_completion=False) class Kind(StrEnum): ONE = "one" TWO = "two" @app.callback() def callback( arg: Annotated[Kind, typer.Argument(help="An argument.")], flag: Annotated[bool, typer.Option(help="Flagged.")] = False, switch: Annotated[ bool, typer.Option("--switch", "-s", help="Switch.") ] = False ): """This is the callback function.""" pass @app.command() def foo( name: Annotated[ str, typer.Option(..., help="The name of the item to foo.") ] ): """This is the foo command.""" pass @app.command() def bar( names: Annotated[ t.List[str], typer.Option(..., help="The names of the items to bar.") ], ): """This is the bar command.""" pass if __name__ == "__main__": app() sphinx-contrib-typer-058f2e1/doc/examples/themes.py000066400000000000000000000010131514345263500224030ustar00rootroot00000000000000from rich.terminal_theme import TerminalTheme red_sands = { 'theme': TerminalTheme( (132, 42, 38), # background (210, 193, 159), # text [ (210, 193, 159), # ( 0, 0, 0), # required ( 77, 218, 77), # option on short name (227, 189, 57), # Usage/metavar (210, 193, 159), # ( 0, 18, 140), # option off ( 75, 214, 225), # option on/command names (210, 193, 159), # ] ) } sphinx-contrib-typer-058f2e1/doc/source/000077500000000000000000000000001514345263500202335ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/doc/source/_static/000077500000000000000000000000001514345263500216615ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/doc/source/_static/style.css000066400000000000000000000022361514345263500235360ustar00rootroot00000000000000.wy-table-responsive table td, .wy-table-responsive table th { white-space: inherit; } section#reference div.highlight pre { color: #b30000; display: block; /* ensures it's treated as a block */ margin-left: auto; /* auto margins center block elements */ margin-right: auto; width: fit-content; } body[data-theme="light"] section#reference div.highlight, body[data-theme="light"] section#reference div.highlight pre { background-color: #f8f8f8; } body[data-theme="dark"] section#reference div.highlight, body[data-theme="dark"] section#reference div.highlight pre { background-color: #202020; } /* AUTO → system prefers DARK (acts like dark unless user forced light) */ @media (prefers-color-scheme: dark) { body:not([data-theme="light"]) #reference .highlight, body:not([data-theme="light"]) #reference .highlight pre { background-color: #202020; } } /* AUTO → system prefers LIGHT (acts like light unless user forced dark) */ @media (prefers-color-scheme: light) { body:not([data-theme="dark"]) #reference .highlight, body:not([data-theme="dark"]) #reference .highlight pre { background-color: #f8f8f8; } } sphinx-contrib-typer-058f2e1/doc/source/changelog.rst000066400000000000000000000153541514345263500227240ustar00rootroot00000000000000.. include:: ./refs.rst ========== Change Log ========== v0.8.0 (2026-02-12) =================== * Report version to sphinx loader appropriately. * Change dependency to :pypi:`typer` instead of :pypi:`typer-slim`. This was done to track `upstream packaging changes `_. v0.7.2 (2025-12-23) =================== * `Fix compatibility with typer 0.20.1+ `_ v0.7.1 (2025-12-22) =================== * `AttributeError: module 'typer.rich_utils' has no attribute 'MarkupMode' with typer 0.20.1 `_ v0.7.0 (2025-11-22) =================== * `Drop python 3.9 support `_ v0.6.2 (2025-09-23) =================== * Fix changelog. v0.6.1 (2025-09-23) =================== * Added project urls to pypi package. v0.6.0 (2025-09-22) =================== * Implemented `Use intersphinx for better integration with the sphinx ecosystem `_ * Implemented `Support python 3.14. `_ * Implemented `Switch from poetry to uv. `_ v0.5.1 (2024-10-14) =================== * Fixed `Spaces in image filenames can cause problems with pdf builds. `_ v0.5.0 (2024-08-24) =================== * Implemented `Support Sphinx 8 `_ * Implemented `Support Python 3.13 `_ * Fixed `typer 0.12.5+ breaks click compatibility `_ v0.4.2 (2024-08-22) ==================== * Fixed `:typer: role default link text has colon where space expected `_ * Fixed `:typer: role does not allow link text `_ v0.4.1 (2024-08-22) ==================== * Fixed `:typer: role does not work if processed before the definition. `_ * Fixed `:typer: role link text does not reflect the actual command invocation. `_ v0.4.0 (2024-08-19) ==================== * Implemented `Use builtin sphinx cache to cache iframe heights instead of custom file. `_ * Implemented `Allow cross-referencing `_ v0.3.5 (2024-08-17) ==================== * Fixed `Lazily loaded commands throw an exception. `_ * Fixed `Changes are not detected across sphinx-build `_ v0.3.4 (2024-08-15) ==================== * Fixed `list_commands order should be honored when generated nested sections for subcommands. `_ v0.3.3 (2024-07-15) ==================== * Removed errant deepcopy introduced in last release. v0.3.2 (yanked) =============== * Implemented `Add blue waves theme. `_ * Implemented `Add red sands theme. `_ v0.3.1 (2024-06-11) ==================== * Fixed `ruff dependency should be dev dependency only. `_ v0.3.0 (2024-06-01) ==================== * Implemented `Allow function hooks to be specified as import strings. `_ * Fixed `pdf builds are broken. `_ v0.2.5 (2024-05-29) ==================== * Fixed `Proxied Typer object check is broken. `_ v0.2.4 (2024-05-29) ==================== * Fixed `Support more flexible duck typing for detecting Typer objects `_ v0.2.3 (2024-05-22) ==================== * Fixed `when :prog: is supplied and a subcommand help is generated the usage string includes incorrect prefix to prog `_ v0.2.2 (2024-05-14) ==================== * Fixed `Move to ruff for tooling `_ * Fixed `Fix WARNING: cannot cache unpickable configuration value `_ v0.2.1 (2024-04-11) ==================== * Implemented `Convert README and CONTRIBUTING to markdown. `_ * Fixed `typer-slim[all] no longer works to bring in rich `_ v0.2.0 (2024-04-03) ==================== * Fixed `typer 0.12.0 package split breaks upgrades. `_ v0.1.12 (2024-03-05) ===================== * Fixed `Typer with sphinx-autobuild going on infinite loop `_ v0.1.11 (2024-02-22) ===================== * Fixed `Typer dependency erroneously downgraded. `_ v0.1.10 (2024-02-21) ===================== * Fixed `Pillow version not specified for png optional dependency. `_ v0.1.9 (2024-02-21) ==================== * Fixed `Some dependencies have unnecessarily recent version requirements. `_ v0.1.8 (2024-02-20) ==================== * Fixed `When using convert-png sometimes the pngs images are cutoff too short. `_ v0.1.7 (2024-01-31) ==================== * Fixed reopened issue: `nested class attribute import paths for typer apps are broken. `_ v0.1.6 (2024-01-31) ==================== * Fixed `nested class attribute import paths for typer apps are broken. `_ v0.1.5 (2024-01-30) ==================== * Fixed `When the sphinx app is an attribute on a class the import fails. `_ v0.1.4 (2023-12-21) ==================== * Meta data updated reflecting repository move into the sphinx-contrib organization. v0.1.3 (2023-12-19) ==================== * Fixed repository location in package meta data. v0.1.2 (2023-12-19) ==================== * Try big 4 web browser managers before giving up when :pypi:`selenium` features are used. * Fixed pypi.org rendering of the readme, and rtd documentation build. v0.1.1 (2023-12-19) ==================== * Fixed pypi.org rendering of the readme. v0.1.0 (2023-12-19) ==================== * Initial Release sphinx-contrib-typer-058f2e1/doc/source/conf.py000066400000000000000000000062521514345263500215370ustar00rootroot00000000000000from datetime import datetime import sys from pathlib import Path from sphinxcontrib import typer as sphinxcontrib_typer import shutil # Configuration file for the Sphinx documentation builder. # # This file only contains a selection of the most common options. For a full # list see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html # -- Path setup -------------------------------------------------------------- sys.path.append(str(Path(__file__).parent.parent)) sys.path.append(str(Path(__file__).parent / 'typer_doc_ext')) # -- Project information ----------------------------------------------------- project = sphinxcontrib_typer.__title__ copyright = sphinxcontrib_typer.__copyright__ author = sphinxcontrib_typer.__author__ release = sphinxcontrib_typer.__version__ # -- General configuration --------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ 'sphinx.ext.autodoc', 'sphinxcontrib.typer', "sphinx.ext.viewcode", 'sphinx.ext.intersphinx' ] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. exclude_patterns = [] # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # html_theme = 'furo' html_theme_options = { "source_repository": "https://github.com/sphinx-contrib/typer/", "source_branch": "main", "source_directory": "doc/source", } # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] html_css_files = ['style.css'] html_js_files = [] todo_include_todos = True latex_engine = 'xelatex' typer_get_web_driver = 'web_driver.typer_get_web_driver' autodoc_typehints = "description" # or signature autodoc_typehints_format = "short" intersphinx_mapping = { "click": ("https://click.palletsprojects.com/en/stable", None), "rich": ("https://rich.readthedocs.io/en/stable", None), "python": ('https://docs.python.org/3', None), "sphinx-rtd-theme": ("https://sphinx-rtd-theme.readthedocs.io/en/stable", None), "sphinx-click": ("https://sphinx-click.readthedocs.io/en/stable", None), "sphinx": ("https://www.sphinx-doc.org/en/master", None) } def pypi_role(name, rawtext, text, lineno, inliner, options={}, content=[]): from docutils import nodes url = f"https://pypi.org/project/{text}/" node = nodes.reference(rawtext, text, refuri=url, **options) return [node], [] def setup(app): from docutils.parsers.rst import roles roles.register_local_role("pypi", pypi_role) if Path(app.doctreedir).exists(): shutil.rmtree(app.doctreedir) return app sphinx-contrib-typer-058f2e1/doc/source/howto.rst000066400000000000000000000152521514345263500221320ustar00rootroot00000000000000.. include:: ./refs.rst How To ====== The examples below all reference this example Typer_ application: .. literalinclude:: ../examples/example.py :language: python :linenos: :caption: examples/example.py | Build to Multiple Formats ------------------------- :doc:`sphinx:index` caches directive output and reuses the results when building the documentation to different formats (e.g. html, pdf or text). This causes problems with the way the typer directive dynamically determines which render target to use based on the active builder. This can mean that if you run :doc:`sphinx:man/sphinx-build` for html and :class:`latexpdf ` at the same time the pdf may not render all typer helps as expected. To work around this you can do one of four things 1. Run :doc:`sphinx:man/sphinx-build` for each format separately. 2. Use the :rst:dir:`sphinx:only` directive in combination with :rst:dir:`typer:preferred` to specify builder specific content. 3. Use the :option:`--fresh-env ` option to force sphinx to rebuild the directive output for each builder. 4. Add the following code to your conf.py to remove the doctree between builders: .. code-block:: python def setup(app): import shutil from pathlib import Path if Path(app.doctreedir).exists(): shutil.rmtree(app.doctreedir) Change the Width ---------------- The :rst:dir:`typer:width` parameter defines the console character length :doc:`rich ` uses when it generates the console output. If your image is too wide, you can reduce the width by setting the :rst:dir:`typer:width` parameter to a smaller value. For example, for :doc:`sphinx-rtd-theme ` theme a width parameter of 65 works well: .. code-block:: rst .. typer:: examples.example:app :width: 65 .. typer:: examples.example:app :width: 100 .. typer:: examples.example:app :width: 65 :convert-png: latex .. typer:: examples.example:app :width: 100 :convert-png: latex | .. _render_structure: Render Subcommand Structure --------------------------- Add the :rst:dir:`typer:show-nested` and :rst:dir:`typer:make-sections` options to the typer directive. This will render all subcommands as sections. .. code-block:: rst .. typer:: examples.example:app :width: 65 :show-nested: :make-sections: .. typer:: examples.example:app :width: 65 :show-nested: :make-sections: :convert-png: latex .. tip:: See :ref:`cross_references` for information on how to cross reference sections. | Render a Single Subcommand -------------------------- Subcommands can be rendered individually: .. code-block:: rst .. typer:: examples.example:app:bar :width: 65 :show-nested: :make-sections: .. typer:: examples.example:app:bar :width: 65 :show-nested: :make-sections: :convert-png: latex | Render as HTML -------------- By default for html builders, svg output is generated. HTML output is also supported, but requires rendering the html output into an iframe to isolate the generated css. The iframe heights can be given directly using the :rst:dir:`typer:iframe-height` option - or dynamically calculated using :pypi:`selenium` and a web driver. To use the dynamic height calculation, you must install the html dependency set: .. code-block:: bash pip install sphinxcontrib-typer[html] Otherwise provide the :rst:dir:`typer:iframe-height` option. Use :rst:dir:`typer:preferred` html to render the html output .. code-block:: rst .. typer:: examples.example:app :preferred: html :width: 65 :iframe-height: 300 .. typer:: examples.example:app :preferred: html :width: 65 :iframe-height: 300 :convert-png: latex | Generate Nice PDFs ------------------ By default the latex builder will convert the preferred rendering output to pdf. This may not render predictably if the necessary fonts are not installed. You will likely need to install `FiraCode `_. You will also need to install the pdf dependency set: .. code-block:: bash pip install sphinxcontrib-typer[pdf] Alternatively you can convert the rendered helps to png format using the :rst:dir:`typer:convert-png` option and passing it the builders you want to render pngs. You will also need to install the png dependency set: .. code-block:: bash pip install sphinxcontrib-typer[png] Any format can be converted to png - even text! .. code-block:: rst .. typer:: examples.example:app :preferred: text :width: 90 .. typer:: examples.example:app :preferred: text :width: 90 :convert-png: latex|html .. typer:: examples.example:app :preferred: text :width: 75 .. typer:: examples.example:app :preferred: text :width: 90 :convert-png: latex|html | :class:`latexpdf ` often has issues with unicode characters. You may get better results using the xeLaTeX engine instead, especially when rendering text. In your conf.py add: .. code-block:: python latex_engine = "xelatex" Customize the Rendered Output ----------------------------- The initialization parameters for the :doc:`rich console ` and export functions can be overridden to provide more fine grained control over the rendered output. For example, to render a console that looks like Red Sands on OSX we can use the :rst:dir:`typer:svg-kwargs` option, and pass an import string to a dictionary of kwargs to pass to :meth:`rich.console.export_svg`. .. literalinclude:: ../examples/themes.py :language: python :linenos: :caption: examples/themes.py .. code-block:: rst .. typer:: examples.example:app :width: 60 :preferred: svg :svg-kwargs: examples.themes.red_sands .. typer:: examples.example:app :width: 60 :preferred: svg :svg-kwargs: examples.themes.red_sands :convert-png: latex The preset Console parameters can also be overridden using the :rst:dir:`typer:console-kwargs` option. Refer to the :doc:`rich ` documentation for more information on the available options. .. _cross_references: Cross-Reference with :make-sections: ------------------------------------ When using the :rst:dir:`typer:make-sections` option, a section will be generated for each subcommand. You can cross reference these sections using the ``:typer:`` role. For example, to reference the :typer:`example-bar` subcommand from the :ref:`render_structure` section above: .. code-block:: rst :typer:`example-bar` The format for the reference is ``prog(-subcommand)`` sphinx-contrib-typer-058f2e1/doc/source/index.rst000066400000000000000000000056471514345263500221100ustar00rootroot00000000000000.. include:: ./refs.rst =================== sphinxcontrib-typer =================== .. image:: https://img.shields.io/badge/License-MIT-blue.svg :target: https://opensource.org/licenses/MIT :alt: License: MIT .. image:: https://badge.fury.io/py/sphinxcontrib-typer.svg :target: https://pypi.python.org/pypi/sphinxcontrib-typer/ :alt: PyPI version .. image:: https://img.shields.io/pypi/pyversions/sphinxcontrib-typer.svg :target: https://pypi.python.org/pypi/sphinxcontrib-typer/ :alt: PyPI pyversions .. image:: https://img.shields.io/pypi/status/sphinxcontrib-typer.svg :target: https://pypi.python.org/pypi/sphinxcontrib-typer :alt: PyPI status .. image:: https://readthedocs.org/projects/sphinxcontrib-typer/badge/?version=latest :target: http://sphinxcontrib-typer.readthedocs.io/?badge=latest/ :alt: Documentation Status .. image:: https://codecov.io/gh/sphinx-contrib/typer/branch/main/graph/badge.svg?token=0IZOKN2DYL :target: https://app.codecov.io/gh/sphinx-contrib/typer :alt: Code Cov .. image:: https://github.com/sphinx-contrib/typer/workflows/Test/badge.svg :target: https://github.com/sphinx-contrib/typer/actions/workflows/test.yml :alt: Test Status .. image:: https://github.com/sphinx-contrib/typer/workflows/Lint/badge.svg :target: https://github.com/sphinx-contrib/typer/actions/workflows/lint.yml :alt: Lint Status .. image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json :target: https://github.com/astral-sh/ruff :alt: Ruff A Sphinx directive for auto generating docs for Typer_ (and :doc:`Click ` commands!) using the rich console formatting available in Typer_. This package generates concise command documentation in text, html or svg formats out of the box, but if your goal is to greatly customize the generated documentation :doc:`sphinx-click:index` may be more appropriate and will also work for Typer_ commands. See the `github `_ repository for issue tracking and source code and install from :pypi:`sphinxcontrib-typer` with ``pip install sphinxcontrib-typer``. For example, commands and subcommands are renderable separately in four different formats: * svg * html * text * png .. typer:: examples.example.app :convert-png: latex :preferred: html | .. typer:: examples.example.app:foo :width: 70 :preferred: html :convert-png: latex | .. typer:: examples.example.app:bar :width: 92 :preferred: text :convert-png: latex The ``typer`` directive has options for generating docs for all subcommands as well and optionally generating independent sections for each. There are also mechanisms for passing options to the underlying console and svg generation functions. See table of contents for more information. .. toctree:: :maxdepth: 3 :caption: Contents: installation howto themes reference/index changelog sphinx-contrib-typer-058f2e1/doc/source/installation.rst000066400000000000000000000022761514345263500234750ustar00rootroot00000000000000.. include:: ./refs.rst Installation ============ The basic library can be installed with pip: .. code-block:: bash ?> pip install sphinxcontrib-typer There are several optional dependency sets that are involved in more advanced automated rendering. If you want to use :pypi:`selenium` to automatically determine the heights of the iframes when rendering in html you should install the html extras: .. code-block:: bash ?> pip install sphinxcontrib-typer[html] If you wish to convert rendered docs to png images you'll need the png dependency set: .. code-block:: bash ?> pip install sphinxcontrib-typer[png] If you wish to convert rendered docs to pdf format you'll need the pdf dependency set: .. code-block:: bash ?> pip install sphinxcontrib-typer[pdf] Once installed you need to add ``sphinxcontrib.typer`` to your ``conf.py`` file: .. code-block:: python # be sure that the commands you want to document are importable # from the python path when building the docs import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).parent / 'path/to/your/commands')) extensions = [ ... 'sphinxcontrib.typer', ... ] sphinx-contrib-typer-058f2e1/doc/source/reference/000077500000000000000000000000001514345263500221715ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/doc/source/reference/configuration.rst000066400000000000000000000077371514345263500256100ustar00rootroot00000000000000.. include:: ../refs.rst .. _configuration: .. role:: code-py(code) :language: Python ============= Configuration ============= The following extension scoped configuration parameters are available. These should be added to the :doc:`Sphinx configuration file `. For example, to override the default :func:`~sphinxcontrib.typer.typer_render_html` function our :doc:`conf.py ` might look like: .. code-block:: python import html extensions = [ 'sphinxcontrib.typer', ] # change the default iframe padding typer_iframe_height_padding = 20 # redfine the default render_html function def typer_render_html( directive: TyperDirective, normal_cmd: str, html_page: str ) -> str: return f'' Configuration Attributes ------------------------ .. confval:: typer_iframe_height_padding :type: :code-py:`int` :default: :code-py:`30` A number of pixels to use for padding html iframes. .. confval:: typer_render_html :type: :code-py:`str | Callable[[TyperDirective, str, str], str]` :default: :code-py:`"sphinxcontrib.typer.typer_render_html"` A callable function (or import path to a callable function) that returns the html to embed in an html page. Only used if the target format is html. See default implementation :func:`~sphinxcontrib.typer.typer_render_html`. .. confval:: typer_get_iframe_height :type: :code-py:`str | Callable[[TyperDirective, str, str], int]` :default: :code-py:`"sphinxcontrib.typer.typer_get_iframe_height"` A callable function that determines height of the iframe when rendering html format onto an html page. The function must return an integer containing the iframe height. See the default implementation :func:`~sphinxcontrib.typer.typer_get_iframe_height`. .. confval:: typer_svg2pdf :type: :code-py:`str | Callable[[TyperDirective, str, str], None]` :default: :code-py:`"sphinxcontrib.typer.typer_svg2pdf"` A callable function to convert svg to pdf. The function must write the converted pdf format to the given path. This is only used for latex/pdf builders. See the default implementation :func:`~sphinxcontrib.typer.typer_svg2pdf`. .. confval:: typer_convert_png :type: :code-py:`str | Callable[[TyperDirective, str, str | Path, int, int], None]` :default: :code-py:`"sphinxcontrib.typer.typer_convert_png"` A callable function to convert the given format to png. The function must write the converted png format to the given path. This function is used when the builder is listed in the :rst:dir:`typer:convert-png:` parameter. See the default implementation :func:`~sphinxcontrib.typer.typer_convert_png`. .. confval:: typer_get_web_driver :type: :code-py:`str | Callable[[TyperDirective, int, int], ContextManager[WebDriver]]` :default: :code-py:`"sphinxcontrib.typer.typer_get_web_driver"` A callable function to get a :pypi:`selenium` web driver. This function must be a context manager and it must yield a :pypi:`selenium` web driver. It is used by other workflows that need access to a webdriver. See the default implementation :func:`~sphinxcontrib.typer.typer_get_web_driver`. Function Hooks -------------- These functions may all be redefined in :doc:`conf.py ` to override default behaviors. Your override functions must conform to these function signatures. .. warning:: Sphinx will warn that these functions are not pickleable. This messes up sphinx's caching but that wont break the doc build. You can either suppress the warning or specify these configuration values as import strings instead. .. autofunction:: sphinxcontrib.typer.typer_render_html .. autofunction:: sphinxcontrib.typer.typer_get_iframe_height .. autofunction:: sphinxcontrib.typer.typer_svg2pdf .. autofunction:: sphinxcontrib.typer.typer_convert_png .. autofunction:: sphinxcontrib.typer.typer_get_web_driver sphinx-contrib-typer-058f2e1/doc/source/reference/directive.rst000066400000000000000000000132671514345263500247120ustar00rootroot00000000000000.. include:: ../refs.rst .. _directives: ========== Directives ========== .. rst:directive:: typer .. code-block:: rst .. typer:: import.path.to.module:main :prog: script_name :make-sections: :show-nested: :markup-mode: markdown :width: 65 :preferred: html :builders: html=html,svg,text:latex=svg,text:text=text :iframe-height: 600 :convert-png: html|latex :theme: light :console-kwargs: import.path.to.console_kwargs :svg-kwargs: import.path.to.svg_kwargs :html-kwargs: import.path.to.html_kwargs :text-kwargs: import.path.to.text_kwargs The only required parameter is the first argument. This is an import path to the Typer_ or :doc:`Click ` application to render. It may also include nested subcommands and may be delimited by either ``.``, ``:`` or ``::`` characters. For example, to render a subcommand called `print` from another subcommand called `add` in a Typer app named `app` in a module called `command` in a package called `mypackage`: .. code-block:: rst .. typer:: mypackage.command.app:add:print .. rst:directive:option:: prog: program cli name :type: text The script invocation name to use in the rendered help text. This parameter is optional, the directive will attempt to infer the name but this is not always possible to do reliably solely from the source code. If the name cannot be inferred, this parameter should be supplied. .. rst:directive:option:: make-sections :type: flag This is a flag parameter. If set, the directive will generate hierarchical sections for each command. .. rst:directive:option:: show-nested :type: flag This is a flag parameter. If set, the directive will include all subcommands in the command tree. .. rst:directive:option:: markup-mode :type: text Override the Typer rich_markup_mode command configuration value. Supports either ``markdown`` or ``rich``. See the `Typer docs `_. .. rst:directive:option:: width :type: integer **default**: ``65`` The width of the terminal window to use when rendering the help through rich. 65 is a good value for text or html renderings on the read the docs theme .. rst:directive:option:: preferred :type: text The preferred render format. Either ``html``, ``svg`` or ``text``. If not supplied the render format will be inferred from the builder's priority supported format list. You can replace the default priority lists with the **builders** parameter. The default format for the html and latex builders is *svg*. .. rst:directive:option:: builders :type: text - a colon delimited list of mappings from builder name to priority ordered csv of supported formats. **default**: html=html,svg,text:latex=svg,text:text=text Override the default builder priority render format lists. For example the preset is equivalent to:: html=html,svg,text:latex=svg,text:text=text This parameter can be helpful if you're rendering your docs with multiple builders and do not want the preset formats. .. rst:directive:option:: iframe-height :type: integer **default**: ``600`` The height of the iframe to use when rendering to *html*. When *html* rendering is embedded in an html page an iframe is used. The height of the iframe can be set with this parameter. Alternatively, the height of the iframe can be dynamically determined if :pypi:`selenium` is installed. See also iframe height cache. .. rst:directive:option:: convert-png :type: text - a delimited list of builders Convert the rendered help to a png file for this delimited list of builders. The delimiter can be any character. For example: .. code-block:: rst .. typer:: import.path.to.module:main :convert-png: html|latex All formats, *html*, *text* and *svg* can be converted to png. For some builders, namely pdf the *html* and *svg* formats may require non standard fonts to be installed or otherwise render unpredictably. The png format is a good alternative for these builders. .. rst:directive:option:: theme :type: text **default**: ``light`` A named rich terminal theme to use when rendering the help in either html or svg formats. Supported themes: * light * dark * monokai * dimmed_monokai * night_owlish * red_sands * blue_waves .. rst:directive:option:: console-kwargs :type: text A python import path to a dictionary or callable returning a dictionary containing parameters to pass to the rich console before output rendering. The defaults are those defined by the Typer library. See :class:`rich.console.Console`. .. rst:directive:option:: svg-kwargs :type: text A python import path to a dictionary or callable returning a dictionary containing parameters to pass to the rich console export_svg function. See :meth:`rich.console.Console.export_svg`. .. rst:directive:option:: html-kwargs :type: text A python import path to a dictionary or callable returning a dictionary containing parameters to pass to the rich console export_html function. See :meth:`rich.console.Console.export_html`. .. rst:directive:option:: text-kwargs :type: text A python import path to a dictionary or callable returning a dictionary containing parameters to pass to the rich console export_text function. See :meth:`rich.console.Console.export_text`. sphinx-contrib-typer-058f2e1/doc/source/reference/index.rst000066400000000000000000000003151514345263500240310ustar00rootroot00000000000000.. include:: ../refs.rst .. _reference: ========= Reference ========= .. automodule:: sphinxcontrib.typer | .. toctree:: :maxdepth: 2 :caption: Contents: directive configuration roles sphinx-contrib-typer-058f2e1/doc/source/reference/roles.rst000066400000000000000000000012021514345263500240420ustar00rootroot00000000000000.. include:: ../refs.rst .. _directive_roles: ===== Roles ===== The ``typer`` role allows you to cross reference a Typer command or subcommand in your documentation. The syntax is: .. code-block:: rst :typer:`progname-subcommand1-subcomand2` You can also use a string identical to the :prog: setting to make the reference. For example if ``:prog:`` is ``python -m progname.py subcommand1 subcommand2`` this will also work: .. code-block:: rst :typer:`python -m progname.py subcommand1 subcommand2` .. note:: This is only works when you've made sections for your commands using the :rst:dir:`typer:make-sections` option. sphinx-contrib-typer-058f2e1/doc/source/refs.rst000066400000000000000000000000471514345263500217250ustar00rootroot00000000000000.. _Typer: https://typer.tiangolo.com/ sphinx-contrib-typer-058f2e1/doc/source/themes.rst000066400000000000000000000030021514345263500222450ustar00rootroot00000000000000.. include:: ./refs.rst Themes ====== You can always create and use custom themes with the :rst:dir:`typer:svg-kwargs`, :rst:dir:`typer:html-kwargs`, and :rst:dir:`typer:console-kwargs` options but there are also predefined named themes available that can be swapped in using the :rst:dir:`typer:theme` option. .. code-block:: rst .. typer:: examples.example:app :theme: dark | Light (default) --------------- .. code-block:: rst :theme: light .. typer:: examples.example:app :theme: light :width: 63 :convert-png: latex | Dark ---- .. code-block:: rst :theme: dark .. typer:: examples.example:app :theme: dark :width: 64 :convert-png: latex | Monokai ------- .. code-block:: rst :theme: monokai .. typer:: examples.example:app :theme: monokai :width: 65 :convert-png: latex | Dimmed Monokai -------------- .. code-block:: rst :theme: dimmed_monokai .. typer:: examples.example:app :theme: dimmed_monokai :width: 66 :convert-png: latex | Night Owlish ------------ .. code-block:: rst :theme: night_owlish .. typer:: examples.example:app :theme: night_owlish :width: 67 :convert-png: latex | Red Sands --------- .. code-block:: rst :theme: red_sands .. typer:: examples.example:app :theme: red_sands :width: 68 :convert-png: latex | Blue Waves ---------- .. code-block:: rst :theme: blue_waves .. typer:: examples.example:app :theme: blue_waves :width: 69 :convert-png: latex sphinx-contrib-typer-058f2e1/doc/source/typer_doc_ext/000077500000000000000000000000001514345263500231035ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/doc/source/typer_doc_ext/__init__.py000066400000000000000000000000001514345263500252020ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/doc/source/typer_doc_ext/web_driver.py000066400000000000000000000022641514345263500256110ustar00rootroot00000000000000from contextlib import contextmanager from sphinxcontrib import typer as sphinxcontrib_typer @contextmanager def typer_get_web_driver(directive): from pathlib import Path import os if not Path('~/.rtd.build').expanduser().is_file(): with sphinxcontrib_typer.typer_get_web_driver(directive) as driver: yield driver return from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager # Set up headless browser options options=Options() os.environ['PATH'] += os.pathsep + os.path.expanduser("~/chrome/opt/google/chrome") options.binary_location = os.path.expanduser("~/chrome/opt/google/chrome/google-chrome") options.add_argument("--headless") options.add_argument("--no-sandbox") options.add_argument("--disable-dev-shm-usage") options.add_argument("--disable-gpu") options.add_argument("--window-size=1920x1080") driver = webdriver.Chrome( service=Service(ChromeDriverManager().install()), options=options ) yield driver driver.quit() sphinx-contrib-typer-058f2e1/example.html.png000066400000000000000000002443271514345263500213060ustar00rootroot00000000000000‰PNG  IHDRDÒU&.6iCCPICC Profilexœ}¿KÃP…?KAÔ.¢¢ƒCÆ.j[±?°¶jѱU¨niŠØÖFtïêáì&¸ˆÐÙÅIpqq×xÒ )H½—›û½óyï>ˆ-¡ˆ§ ÓõÜj¥dÔOŒÉ&”Ã0­žÃøëç5ô¾¬üãSM»g©©˜:uj¹úFDDDô(²x@46övî\ (kÒ$ Ï>»H²þŠ£PX˜£Ù¶±±ÅŒ; “ÙZºkDV-11›6m2Zo„ \@ôþýûF»©ÑÝ»wãðáÃ8yò$Ο?@=Ð¥KŒ?zŸ5k’““%÷ÉårxzzÂÝÝmÛ¶E÷îÝõ-Z„«W¯šÔg)666X¿~=êÔ©¸}û6,X`ä(1[[[lذÁ` "çlãÆØ¶m› ÌÛÛË–-ÕÍÌÌÄ´iÓeï¾û.‚ƒƒ%Û>wî/^Œˆˆ\¿~]S.—ËѺukôèÑ#GŽD—.] “žPmð5¦P(ª= ‰={öàÒ¥K¸pᢢ¢4ûüýý1bÄŒ;íÛ·×ÛFQQþ÷¿ÿáï¿ÿÆÉ“'5m„……¡{÷îèÓ§ $ylxx8>ûì3QùSO=%zÞŽ?.`~æ™g0qâDäææâÅ_„Z­ì—zm¤¤¤`æÌ™¢¶üüüðÕW_é}¬»wïÆÿþ÷?Qy‡ ¾Wòóó1qâDQßfÍš…ž={Šê¯Zµ û÷ï×l·nÝ‹ýû?Ó–-[°eËÑqpwwÇc=†Ž;¢U«V°µ­Þÿ.^¼hð}ŸŸor@4::o¿ý¶¨¼N:X·nÁ÷äš5k°wï^É}¶¶¶pww‡§§'5j„=z ((Ȭ@frr2þøãüóÏ?¸xñ"ÂÃÃ5ûBCCÑ«W/¼òÊ+ð÷÷7ØŽ%¯A§OŸ6xî%"""Ò¦¶°ˆˆê>ü-_Þ_oý?l-ªÿða¾¥»EdõŽ9¢`ôoß¾}ÕÝU‹Û¾}»ÑÇmŒJ¥R¿ýöÛFÛéÓ§:33So; …¤ç¡ìo̘1ê;wîˆÚéÙ³§YíHýåææjÚûûï¿ËÝNqqq¥³7ß|Sò˜þùGT7..Τ×óƒÔãÆ3ùñ) õíÛ·õ>§jµZ½víZ£mT§Õ«W›üxÓÓÓ%ÛÈÊÊR÷íÛ×èñóçÏW—””ˆŽ×÷> Õ}ùå—%ëΚ5K­V«Õ©©©zï?11QÐÖæÍ›M¾_m£F’|¨÷¸ôôtÉㆠ&Yÿ¥—^Ô ì_¸p¡ÉÏÝŒ3ÔWeš3gŽÁþ 2Ää¶¾ÿþ{½í„‡‡þ|É6*ã4qâDƒmLœ8ѤÇGDDDd-8ežˆ¬ÒÀáååF§'>|øÓ¦MÚ5kŒ¶{øða<þøãØ·o5jTá~nذ»víµk×иqã ·WU*ûœ­]»ß|óÙýR©T?~<öìÙcò1)))ÈÎÎ6X' 'NÔlÿõ×_ˆ‹‹3»––——‡Ù³gcåÊ•j')) Œ„ÓçóÏ?GBBV¬X{{{£õ£¢¢___MÙÎ;ËÝ×£GâùçŸ×lgJ¥{öìÁˆ#ŒÖÕöÛo¿‰Ê‚‚‚0~üx<ñÄpqqAdd$"""ðóÏ?‹m’’’¢w1±   ôéÓ>>>ÇþýûõÓÒÒ$ƒÛ¾¾¾5jrrr°iÓ&ÑñK—.ÅäÉ“MêëÁƒ1nÜ8ÂàhyìÞ½jµ666¸qãF¹žÃC‡Ü¿ÿþrýèñÃ?XdQ!…BÄÄÄè­ó /àÞ½{¨_¿~…ﯪI¬ÔvàÀäå噵øÐÀѱcGäææâîÝ»øã?DuRRR°mÛ6Q®M•J¥wQB…B~ýú¡mÛ¶ˆŠŠÂ‘#G >/Öt """"ªÉje@T¥*AFF,<ˆAaa.äro¸ºzÃÕµììô/f"%?? YY P*“‘ŸŸ ''78;{@¡€­mã h)*ÊÃ;š7ïav_ôõ/.îT*||ÚÁÅÅ«ÂmÖD999ˆŒŒ„J¥B@@@ø—““ƒÔÔT¤¥¥!''®®®pssC“&M`ggÞ[§¸¸áááðññ¦\­VãÚµkÈÏÏG›6mʵ²ìÇŽzõê! Àè •M¥Ráþýû¸wï|||дiS³ÏWMrñâEÉ/çûöíCÿþý¯¿þ:Z·n- ýïÿÃ믿nô>Þ{ï=ÁkþÒ¥K Õ»råŠ& ºpáBɶZµj%X,V¯^-xÝIiÙ²¥huèÙ³g‹¨Y¸p!ž{î9ƒmUÅ9€•+WšÍÏÏ›år9Ž;OOOMYÛ¶m1jÔ(¼ýöÛøþûï ÜÔ&K–,‘,Ÿ3g¾úê+Áµ"33¯½öÖ®]+ª¿~ýzQ™\.Ç™3g4¯«Ñ£G£oß¾‚:8{ö,:wîl´¯Û·o‡J¥‚L&+×wm)))¸víÚ¶m[îàê¾}û î?zô(”J%är¹YíFEE™|N ùè£0mÚ4äææ"<<'Ná”J%6mÚ„—^z©B÷UŒ¤ÒE„žzê)“Û7nœàÚ•€QÀ122RtìŽ;‹•éׯ¶lÙ"zìÛ·Ï<󌨾µ]ƒˆˆˆˆj²Z¥ˆ‰9ýû?Fjêm½u\]Âß¿+ xöö΢ýÅÅ…¸zu®\Ù…{÷Σ¤ä¡d;662xzúãÉ'ç¢U«' ö+6ö~ûíäæ>”»»7Áر¿à¯¿¾Æ­[Gû†ÿ ÒyªÒÓïá÷ßç 5õ6Š‹ ûd2[¸¹ùbèÐÏѸ±åògU‡„„¼óÎ;8~ü¸è‹œB¡@÷îÝñÉ'Ÿ uëÖ¢ccbbD_¾Ò/åŸ~ú© l×®]’#r>þøcAž¹‡âرcØ»w¯äèµ2r¹ Àœ9sÐ¥KÑþÞ½{ãþýû€nݺ¡W¯^˜3gŽ&ðÓ½{wlÛ¶ —.]¸qã_Æ,X€?þXÐÞ_|Ÿ~úIP¶råJxzzâƒ>Œr‘Ëå4h–/_^åAåuëÖá—_~Á‰'DûBCC1vìXÌž=»ÖG¥¦=ZØ€Fá믿­”½dÉ“ƒ{ÚBBBðî»ïâ¿ÿý¯ üÆf·UªêœíÛ·±±±&çV•5lØPˆÐæää„×_Ó¦M+×Õ)##Ÿ|ò‰¨|âĉ’¹WÝÜܰfÍŒ3...‚}ºAq ôº¤dê©§0fÌlذAPoåÊ•&ÿ”J%._¾ŒvíÚéÍÝiŽ£G¢mÛ¶åšZ-ºŽM›6 ?ÿü³ ìäÉ“0`€Ùí¯]»¶ÂÑ2ÎÎÎèÙ³'Ο?®]»Š~ Y±bE­ ˆê¤G%Å|èÐ!³¢º5j„ùó狦ÁK>¥F‡†††bçÎ’yr €ˆˆ¬^½ZPnM× """¢š®Öäݵë=¬[7É`0²³ñÏ?[õÖ»sçoìØñ6bbNë †€Z­BjêmlÚô2öìù@o½ÈÈX½zŒ( ”6úi(’“o ¸¸Pð—ŸŸ)ÙÞ™3k°|y$&^CÒѱéé÷°jÕóصë]¨TÅzû¦mÅŠÑøðÃV‚¿?6~`%Ù¶mZ·n5kÖHN-+›¶ˆo¾ùÅÅÂÇéïïÁƒ#&&Fð÷ÙgŸ ‚F………xíµ×Dõ\\\4#íÊüóÏ?èÛ·//^l0R©ÄæÍ›ÑµkWÉ@Áõë×5÷³~ýzL™2Eð%îÔ©Sxê©§0räHÑÈ”O>ù¿üò‹ ,))IÔÿ›7obÀ€¢)J¥6l@= ÷1XRzz:FñãÇKCÒ||óæÍCÏž=qóæÍ*é—¥\¸pAT&ŒïÝ»·¨,..™™™åº_©®^½Z®¶ªZUž3©Ñ‹úèú€Ò{—.]2xœ««k­ äGDDH–Ïš5ËàqO?ý´ •BNNŽä5ºW¯^¢2©çøâÅ‹ïO;ÇáÇqñâEÁõ2((ÈàñúÚÚ¿¿(¥©m:uJT6uêTÑ(@SF1Jùᇛ›[®cõqwwÇœ9sDåÆr¡ÖD8s挠¬gÏž¢àçÞ½{+|_~~~¢²ÔÔTÁvVV–äûiæÌ™ k×®èÇkºÕtµ" zùò6„‡o®¶û¿pa#<¸+*ÏÊJÀæÍ³¡V«ô[T”‡ôô{&ÝÏ_}…>5Øž¶ðð-غõ “ê–”‰ÊL ¦ZÚÊ•+1|øp“¿¤Í›7O4ê( J}Á}óÍ75·þùgÉ/ó¿þú+Íèµ´Ù³g—+ð¡÷ñ›²ÉŒ3 m¯_¿nvnÅòÈËËCXX˜dÞJ)gΜAXXÒÓÓ+¹g–sïžøýÛµkWQY‹-$s_&''—ë~srrÊu\MP™çÌ××W˜Z±bT*Ó®™úV÷~â‰'°fÍšr-ÒTSÅÆÆŠÊ‚ƒƒ%S1"õ\Èår´jÕJT.õ[éÉ'ÿqàÀÁbEþþþ‚|µÆh·µgÏ?~\°ßÔU×ÿúë/QY‡ðøã ÊvíÚerßtW¤ß¶m›ÉÇšjÔ¨Q’å×®]³ø}U&©Ö:uê„=zÊ"""Ê}}-“˜˜(*kÞ¼¹`[ßkxäÈ‘fߟ5]ƒˆˆˆˆjºZ=}z•¨ÌÖ¶6lƒ†£eË'àîÞ66æ?;;¸¹ù iÓÎhÙò 89¹KÖÛ¹óQÙÁƒÒ‹U0»/99©8}Zz%`W׆¨_¿1d2[Ѿk×ö"5õ–Y÷U222$G±¥¹¸ $ Y¸p¡fz™ºuëJ®Ø»k×.9réééxçñó¶téR´mÛÖh_ýýý1pà@Ìž=óçÏG÷îÝ%ëéNq—¢ïXÑã=qâ„ÉCΜ9ctaŠŠZ²d‰dÀ9((£F€ÒQ¬~øa¥öËRJJJ$´hÔ¨‘dý&MšˆÊÊ» †Ô ËRí×4•}ΜœœðòË/k¶cbbôŽLÖeccƒ!C†ˆÊ•J%&Mš…BwÞy§Ö¤&0D÷z è¿"pjÖ¬lllDå 6•¥¤¤ˆFøkÓ2}¦MÛŠ!C>Ř1?cÖ¬?1þ9té2¶¶u “žZäãŒ1c~Â;ïDàÕWc„ÿa̘ŸñÆcÚ´­¢€f|üeÁvAA6®_? j·n]7¼öÚ,\‰aÃôLumßþ–hd¨³³fÍúsæÅìÙá7ΠaÃ6¢cÿøcž¨¬¦úøãE##{ö쉄„ìß¿;wîDLL &Nœ(:V*¸Œ¥K—ŠÊ_ýu|ôÑG¢ûêׯ^yåƒ}œzô(nß6œ¨<¤‚ÒÙÙÙ¿ŸÊ´gÏÁvÏž=áàà€:ˆêš³×Î;±lÙ2|öÙgxùå—ѤIÉÑŸºy¥êHgSYË5ˆˆˆˆ¨¦«QÝ\Ÿ662<|(ίéà G¿~ ðî»W$‡@éêﯿ~ S¦lAË–½$ë4lØnn™KJ ¦˜ßºuLrjûôéÛP¯^éH¨àà!èÞ}ªÁÇ”N]Ž>)*?~ ÜÝÿ=åèèŠqãV‹‚µ))µc„hqq1¾þúkQùºuë_.œ±lÙ2QMjļòÊ+èׯŸ ,<<ß~û­ L.—cÕªUzWa AFFV¬X!9²(J§›;/..ÎਲÑ&!!ÂE°ÂÂÂP§Nøøøˆ«¾ ’¶½{÷¢qãÆ°±±Á“O>)Zð¶nÝj´òÒ]<(Í©öŸÿüGPÖ½{wÉ)Ê»úsUÒ7S;Ç¢6WWWQ™)QwwwØØØ ~ýúèСƒÞÑcY@¤ªTÅ9 Œ[³fÉyGÛµk'…¨ÏУG :´V¦/¸sGüC¢¾éº†H=õêÕ“¬kk+žÅNàíí-bj“ @£ûYP¦gÏž&/5â°ìµÖ±cGÑ>}?FIÑ%jNþ[SIÄ®MÑ;wîˆf”=wNNN¢Qλví‚Z­6©í 6`öìÙxûí·ñÃ?ˆ~0•Ëåøã?DÁN©ÑÖºç¹yóæðöö–üÓ €ZË5ˆˆˆˆ¨¦«QÝÕâÕj~ùeV¬óç7 /O7¡x*_™ÌÎΞÈÊJÀž=`õê±X¶ìi|öÙcøïÛjþ22Ä£k22þ% •´aÃ6š`h™=¦‰êéJKO9vtt…\®@^^:òòÒ‘›û¹¹ R=„««p”Z­Bf¦iÓöª“ÔÔ°°0¸»»#;;ÙÙÙÈÊÊBVVŠ‹‹EÓ•J¥äH#™L†U«V¾¶zõj½ÓvÀÎÎnnnHMMŲeËðÊ+¯`èÐ¡èØ±#7n¬ù“ÊghTÙ¨)ÝÑSÚý­[·®`_a¡8à¯màÀ¢©Æ£GÕS*•ÈÏÏ7ØVy鎢€þýûC©TŠžOÝ`0€JeiRÁsC¯3© Ÿ¥r½ýöÛ ´H[•©ªÎÙôéÓÛº ŒòÜsÏáÆ8p Ñº;vì@Ÿ>}Lµ]“HPÌnGêù4´ŒÔsmìz&55^¡P iÓ¦Æ;¨CߨÒnݺ™t¼Ôªô=ö€ÒQκ9X·nÝjrŠ“Þ½{ ¦´ÿðÃL+©…wJJJ,z•I* ­×ý¿ %%Å"ÓË'Nœˆ[·naøðá¢}yyy¢2Ý÷RLL RRR$ÿ¤®Öp """"ªéjÅ’•Mš<†[·Ž‰Êãã/#>þ2öîýŽŽ®h×nºt™ U©+''¿ý6 qq†Wô”’••¦¤¢~~âÑ#ŽŽ®prr—Úþ+))RTVP/¾èlrß’“oˆFµj›8q „£!ììô©­ ÑÑÑ¢²óçÏKŽÓ'&&F2Çh£F°~ýzÉÜ\@é—c‹ eddà­·Þ’iiLjjªÞ`kÙ¨)Ý/ªÚAÝÃÇÂQѺt¿¥£¶ÂÂÂDyC“’’ÌZ˜ÄTRSÞŸ}öY“¯ «ÍK½6•J%T*•d (++KTVžiʺf̘E‹U¸ªPUçløðá‚w?ýôú÷ïor?[µj…Ý»w#""Ë—/Ç/¿ü¢·îùóçñé§ŸJ欩š5k&šn[ž|¶R£A Æ•Z,Nêš­íñÇÇòåËeÏ<óŒiÔ!øT(ð÷÷7z¬J¥ÂöíÛe‚½zõ¤9Q*•¸zõª`…{}lmm1mÚ4,\¸@é󡽈”%H=Çæ|ÆV7©€´öŒ ©ç÷È‘#þ±ÈÑÑQïj©Ü³]Ì xô¯ADDDD5]­!:dȧ’ i+(ÈÆùó¿bÙ²§ñ×__IÖ),ÌÁ? .W0(]1¾ŒÔRÝÑ¡eìíëJ–—IJªøè©Q¦Úä¨W¯‘àÏÙÙ³Â÷k©€¨¹¤òâ•㥂¨Rüýý$¹ïÇ”¼oðóó•%$$˜tŸ¦xT¯ADDDD5Å¢ºÓÛËC&N¡tvöÀÌ™ûQ¿¾i+Äž:õ ^,*?yògƒ#5mmëÀÑÑÎÎFW‰·µ®Ô˜š£¸ØðtBÓÚ(ªp•ÍØ´ISéœñññzGÛèû¢Sæ·ß~3¸x¯¯/ÂÂÂгgÏñåR_T©@jeM—” fCÏeMáèè(ù|뛺(|6e´ãÎ;qâÄ \¹riiiP©TˆŽŽÆ_|aòÊØ5EU3xñÅÛ«W¯6é8)õêÕäI“pùòeÑhe.]*ßiÕAêu#•æÂ©`¦¾YôJõ-¶TÆÇÇ_ý5þûßÿjþL bJùòË/m½üòË&§ïóC©Tjþ¤8 ^`QŸfÍš GÛ¼y³Å‚kEEE’ϱ%F©W…Ë—/KžccçÇŽ&}ž|òÉ'¸víÂÃÃ%ƒŽo¾ù¦äç¥Ô{éÖ­[‚ÏÛƒb÷îÝØ½{· -‚9µkQMgñ!Gõê‰ÿñ.*’=§R‹&’Él%GƒÖ¯ï‡Ù³ÿB||þþ{5îÝ;‡œý Ïœ:õ zô˜{{'MÙ?ÿHç˜{â‰WÐ¥ËD8:þ;­ì›o‡R©ÿ—xw÷&¸{÷¬ ,#Cœxòò ç}R(ZŠÊlld¨WÏôUL==-?%ÚÒ¤¦mËår³FIÔJƒ~“&MÒû…iúôéèÖ­›(ïf™ÿýïzˇ.øBÿôÓO›µ²meÐ7ÒKj1&C«áJå45§]hh¨`ê(Pº€’ÔªáR||ô§x¨Iš5k&y.z-¦§§‹LíØ£GÔ¯_¿b­Aªâœ¥¹4A -[¶”³ÇÿrqqÁòå˱uëVÑôc©¾ÖTRAœ={ö 99Ù¬QËRÁ´¸¸8¤¦¦ÂËËKP®{= wÁ$]sçÎ5¹OÆHå4…©# uíÛ·ùùù¢\ÐúLž‰ ß~û­f’G…Tpïøñã:t¨ ìôéÓ’Ç{xxTV×j¬ª:g666˜6m^ýu“ê—””àöíÛhÕª•Áz¶¶¶4hh:sEGEW¥–-Å?´¥+mÏ™3Gïqyyyprú÷‡D}úS§N‰žÏãǛܚ&??ûöí+÷ñgÏžÕÇŒ4här¹E_OjµZ2å‹B¡¨5#DõtMqèÐ!“¢@iš†Ù³gcéÒ¥‚òwß}ÇüŸàíí-ù|­]»Öäç¼Lm»!=]8³ÊÆÆ¦\©`Ôj5RRR V«åîîîjÓ'==]42ØÅÅ...f·EDDDÖ©¦Ì;‰FxªT%8}z•¨îŸ~&*su5ýŸ,{{gtè0Ó§o‡··øŸË””[‚mÝÂÀÃC}:4h€ï¿ÿ^´?//£G•öÙgضm›¨ü7ÞÀåË—EåR+ë®6\\\¬Y¸&9r¤f´È•+W0}útQc餢+W®ÄöíÛæÕ΃Wæ›o¾Áwß}'™Ï­  kÖ¬AÛ¶mѧOŸJ[ìÉÒ,ʉ©T*1|øpìß¿§NÂÔ©SqâÄ Ñ±µ%”¦[øùçŸRS ÷íÛ'¨³j•øÇ®ªëÖ­CÓ¦MñÖ[oáôéÓš•îÕj5®\¹‚¹sçJö­uëÖfÝOu“ âÀ“O>‰>úGÅÍ›7±eËŒ7ƒ ’6uêTQÙ©S§ðâ‹/âäɓؿ?FŒ!:V.—‹F‘ÖTRÍÁƒ£S§N¢?© ¼±<Õº&NœXÞ®¶nÝŠyóæá™gžB¡ÀÚµk%ëM˜0¡B÷SU¤~ˆ{æ™g$ÏÿàÁƒE?xž9sFožb}|}}%su.\¸P”:fÆŒ’¹‘'Mš„·Þz ‡Fll,:„7Œ/”Y[®AR •¢o±Èò´eî}I©”¡K½{ÏÆŽo‹ÊÃÃ7#<|³ÁcŸ|RœG¬¨(éé÷°aÃ48:º¢Q£vðö€‹‹'²²’ŽÄÄk¢ã5j'Øöðh"ZT)=ýÖ®°°1(*Êűcß!33Þ”‡‰^½faÿþEå—/oÇåËÛMj£Ì¨QßbÅ a`/??«V½gg¸¹ù@&³Effl4ºoß>,[¶LT¾|ùrÍ—ðÏ>§eˆŠŠÂ»ï GK€€¥K—¢GèÛ·o †jÓ ,ô ÅÛÛÛ`Ð4..Nó'5½ïÓO?•5“’’‚?þøË–-ÃæÍ›km0´ÌôéÓÍ^9øÓO?­¤ÞÔUyÎú÷ï/1f®˜˜ƒ×œµk×¢N:ºêðõ×_—{ÕkmÿýïͪïëëkòêîÕ-%%E4Z¡PÌÚ¯_?QÙÑ£Gͺ_}+‰[„ ðÖ[oUZû–¶{÷nQY·nÝôÖ—ÊÝYžÅ[´h1cƈÊßÿ}Ñ(ÑÙ³g£gÏžf߇©ÕkQMU)Q=zêÔ1mÅU tÕöÅ¿¼—‡ cÆü$*oÑ¢'Å_bté[é^|?¶˜9ó€`á&]þþÝàã#žŽ-eذ/жí@“êÖf ,ÀG}T¡6’““ñÜsωÊûöí+˜>Û¨Q#É‘‹/Æ_ý»hUhh¨äÈ] …¢ÂKÐ èêR(Ø´id2ãoñ·ß~[ïHQc Ž;†ÐÐÐr_[4jÔçΓL­ K.—ãäÉ“xòÉ'« g5WUž³:uê`òäÉFëI-¨fŠ… ¢ÿþå:¶ºâòåË8°bŸ-½zõ©S§$ÑŒ³gÏJ®Î];&NÇcìÇ$©€œÔ(GC¤>Ã*J¡PàÇÄš5kjMþâ„„ц …Â`¾L©Ñ»R£|M1þ|QYTT¶lÙ"(sssáC‡ŒÎ¼ÐÖ³gOL™2E³m× """¢šªÒ¢~~ñúë§Ð66úïF&³Å“OÎŬYêUÚµë$4lØÆ¤ ¥¿7LŸ¾KhF^ЧŸ~ ¶¶Ò¿²;9¹cÆŒðöçi²µ¹°µ­ƒ‰×côèe /¯ðòjöí‡aĈo0nÜ*äæ>'•3´Nº1âL™²Er¿T_CBFàÙg­+õz^*“ƒƒÞ}÷]DEEœ>[¦{÷îøòË/ùð,X ™ëNjѤٳgÃß_œcvìØ±‚<™|ðþøã½£©ºwïŽóçÏã™gžíÓ.,µO÷Ë©¡cŒ}‘}ì±ÇpèÐ!ɾ†††âܹs&O=nРNœ8åË—cĈz¾úF¦„„„àìÙ³X¾|¹Ñ`±\.×Loöóó3©5EÆ qâÄ L˜0AoP¨OŸ>8sæŒÁÕŽ¥VÓ-ï—d)R¯SÚ¯Htó5—±Ä9Óí—¾÷Æøñã%˵뻺ºB©Tbýúõ’#üt3×®]“\D§6qwwÇÎ;ñÕW_üñÂ××ï¿ÿ¾Þ…غuë†sçÎIæJßßãÆÃñãÇ%ó—'@§{LÙ¶ÔëÕØkX÷VÖ–Ô‚}ÆV—z½?~\o?¤»»»»äèD}Ÿ!ºär9|}}Ñ¥KÌ›7Û¶mCll¬I©/j©\ÅO=õ”Þë P:B÷ó&&&©©©¤Ï·¾×_pp°d⯾úJTV§N,Y²6l0x÷÷÷ǦM›pìØ1iÊkÛ5Hß9³Ä{¹Œ%?ÿ8‚–ˆˆˆÌa£¶d6s½ÔHM½ØØKÈÌŒ‡¼½[£aà £Säu¥¦ÞBZÚdg'!7÷d2;Èå^¨_ß ´†““»Ií 11II‘ÈÍMƒ»{S4oÞ½\Sý ))yˆO>i/šæ>oÞI¸¸x>>zƒR ‘––¦Ù~ýõ×±iÓ&ͶB¡@rr²Eû_^EEE¸yó&®_¿Ž‡ÂÃþ¾¾hÓ¦I£ÊÒëvdd$nܸ™L†Ž;¢iÓ¦•Ûqªñ¤>¯´Óº8;;ÃÍÍ­Š{UyŠ‹‹…k×®¡¤¤þþþhÕª•Éÿ/Xò”-ø¡844T0âĉX½zµéŽˆˆˆèWEÑG׺u¥£W»wŸ"¹Šý¶mo""B¸Ø‡ J¯ªN¤ËX@”Œ“ ˆêâ¥*âÿûŸÁ½kR@”¨²H}^i2d¶oß^u²"“&Mš5kôîg@”ˆˆˆHˆÃ™*(>þ bbNãÔ©_àîÞõë7†››/ ²p÷î9Ééòõë7®†ž¢”ž~éé╸u .ÎKEDDDDDDDDD•Ñ*֦͓W'"ËxòÉ'%î(Ã…¨¢lð5æèèX…½!ªo¼ñƧwUç·&}ôfÏž­w¿——á¼õDDDDÖ†Ñ rvvGa¡xµs]r<ûì‡hÛv`ôŠˆ´¹¸¸ $$¤º»A0777¾ÆÈê5lØ 6¬înX%___øúúVw7ˆˆˆˆj D+hÖ¬?‘››†Û·O 1ñ:rs //€ ÜÝýàéé/¯hÖ¬3llª~umªý:w' ʸš3Qùp•y"""""""""²²êîQUa@”ˆˆˆˆˆˆˆˆˆ¬¢DDDDDDDDDd5%"""""""""«Á€(Y D‰ˆˆˆˆˆˆˆˆÈj0 JDDDDDDDDDVƒQ"""""""""² ˆ‘Õ`@”ˆˆˆˆˆˆˆˆˆ¬¢DDDDDDDDDd5%"""""""""«Á€(Y D‰ˆˆˆˆˆˆˆˆÈj0 JDDDDDDDDDVƒQ"""""""""² ˆ‘Õ`@”ˆˆˆˆˆˆˆˆˆ¬¢DDDDDDDDDd5%"""""""""«Á€(Y D‰ˆˆˆˆˆˆˆˆÈj0 JDDDDDDDDDVƒQ"""""""""² ˆ‘Õ`@”ˆˆˆˆˆˆˆˆˆ¬¢DDDDDDDDDd5%"""""""""«Á€(Y D‰ˆˆˆˆˆˆˆˆÈj0 JDDDDDDDDDVƒQ"""""""""² ˆ‘Õ`@”ˆˆˆˆˆˆˆˆˆ¬¢DDDDDDDDDd5%"""""""""«Á€(Y D‰ˆˆˆˆˆˆˆˆÈj0 JDDDDDDDDDVƒQ"""""""""² ˆ‘Õ`@”ˆˆˆˆˆˆˆˆˆ¬¢DDDDDDDDDd5쪻¦Xµj<xæ™g0nÜ8‹ß‡Z­Æ¼yóP\\ ˜?>|||,~?ÕíîÝ»øæ›ouëÖÅçŸ^Í=ª9Μ9ƒ%K–š4i‚Ï>û¬š{d}öìÙcð5¹`Áôïßߤ¶âââ0f̽ûˆùóç›ÔÖO?ý„£G† ‚çŸÞ¤ãj›èèh¼ûî»™L†_~ùNNNÕÜ+Ê‹‹±sçNܸq111ÈÍÍÕì9r$FŒQ½{ôýõ×_عs' 88S¦L©ægÑ€h||<æÌ™Sávœ±zõjÍö™3g°iÓ&€——W¥DU*/^¬Ù7nÜ#‹‹Ã²eË4Û ˆþ+::Zó: `@´ÄÇÇãĉz÷'$$˜ÜVvv¶Á¶š6mjr[§NÒ¼6üüüÙ€hjjªæqÀ’%Kjt@4""/¼ð®_¿.¹? €ÑJvîÜ9ÍgÊÀ%""""¢ZÁ¢Ñ`Ë–-iK; Jdª=z ##°~ýz„„„TsÈ^^^ ”é vãìì,j+66J¥²Üý£š£¸¸Ø`0lllª°G5Û¦M›ðÑGºwþ¹š{DDDDDDT}jÅ”y"S:uJs;++«{Bå1lØ0 6LPÖ±cG„‡‡›ÝV“&MpíÚ5AÙüùóñÅ_T¨T3lß¾] ýøã1bÄxyyi¡5ytkUKMMÕœ/jî Qõ²h@´E‹ؽ{·Þý/¼ð‚ftV÷îÝñöÛoKÖspp°d·Lbkk‹7¢¤¤вeË*ïCU ÄúõëöööÕÜ"¢òцöíÛ ,¨ÆÞX¯aÆ¡I“&JÓIÕ ˆ:99aàÀz÷{yyi¢þþþëV‡G5/ 6Œ;¶º»ADT!111šÛ:t¨¾ŽX¹ÀÀ@Vw7ˆˆˆˆˆˆÌRë§ÌgffâÊ•+hذ!š5k[[ÛjíÏÇ‘€øøx¨Õjx{{C¡PÀÕÕµZûeiyyyˆERRêÖ­«yœuëÖ­î®UŠÂÂB\¾|hݺu¹G1âæÍ›ÈÉÉA`` êׯoážVL^^nݺ…ììl4nܾ¾¾°³3ý2‘——‡¤¤$$%%ÁÎέZµB½zõ*±ÇÕK¥RáúõëÈËËCÛ¶mË5E»²Î™Z­FBB¢££Q¯^=øùùÕ¸×[Edffjn»¸¸T_G °äçSqq1îܹƒøøx4hÐ~~~TJ€üü|DEE¡¨¨-Z´°ÈkÕR×m"""""zôÔÊ€hII >ùäìÚµ çÏŸì{÷Ýwñþûï âlܸQ°ª¼®uëÖ¡U«V&÷)<<‹-ÂŽ;$÷cĈ˜6m4h`r»5oÞ<½+m;::âøñã&·¥R©°k×.,Z´HoNǾ}ûbÈ!˜6mêÔ©S®>›êƒ>ÀºuëôîÁŽ;!Øçëë‹^x~øaµ“ïÝ»‡÷Þ{§NŒº+3zôh¼òÊ+èÙ³§h‘µZ³gÏbß¾}øý÷ß%¸ñõõEÇŽñþûï?2‹\%$$àµ×^Ãþýû‹4………aÁ‚:t¨Þc+óœ©Õj¬Zµ «W¯FDD„h)Ìœ9ãǯPÉ+W®à?ÿùrrr …ÇŽ«´4{öìÁìÙ³eÚ¯Õ÷ßk×®7wî\¼òÊ+‚²””ôíÛÅÅŰ³³ÃÑ£Gõ¾-Z¤¹VLœ8o¼ñ†¨Žöuhòäɘ?~…?ŸÊäææâã?Æž={D× 4õ̬Y³0tèPA°/99ݺuÔMMMÕÜ>qâš7o.yŸëÖ­«­G(**’Ü×»wo|þùç“¶ââb|ùå—X¿~½è}àëë‹~ýúáË/¿4xÕ~m´iÓ;wî´Èu›ˆˆˆˆˆqê*äïﯠ 7nœÉÇM:UsÜÌ™3Õ3gÎÔlKý 6Ìh›Ÿþ¹Á6Î;grÿ¾ûî;ƒmiÿ­_¿Þäv-¡_¿~ûcª’’õèÑ£M~œwïÞ­ÄGUJûuaÎ_XX˜d{ëׯ×Ô PoÚ´É`;þþþêìãµk×ÔÁÁÁFû¬ŽŠŠªŒÓ¤—J¥R¯X±ÂäóvòäIQéééfûU«V™ÝÏÐÐPÍñ+W®¬Ðc~óÍ7Ëu 7nœæ¸1cƨ >ÎÏ?ÿ\o[•uÎîÝ»gôý^ö×·o_É6þþûoA½ÔÔTQ‹/ªår¹¦ŽB¡P_¿~Ý´YNÚïMsþ.\(jëîÝ»‚:‰‰‰zïwâĉšz³fÍ’¬SŸOjµZ}òäIÁg¦¡¿O>ùÄàc4çoß¾}ûeèØšôØÔjµ:11QݧO£ýñõõUŸ={Vo;•qÝ&""""¢G_­!º|ùrÍíàà`´oß±±±8zô¨¦|Û¶m8}ú´ÁQ.~~~èÞ½»f»¤¤gΜ1»?—/_@2dˆ&§Ztt4.^¼(9ò®*kFq@bbb¹úòÓO?aóæÍšm¹\Ž#FÀÏÏJ¥QQQ8þÆž={B¥Ri¶oݺeöu_¥R¡_¿~‚Q¯ …O<ñqöìYÍk5..;wF\\||| ¶k‰ë6Y‰ªŒ¾Zb„hÙßü!¨ó×_ ö3Ƭ¾ Ž7u„èÛo¿­9F.—«###%ë8qB=jÔ(õîÝ»Íê—¥8qBð8M¦9¦K—.êììlQÂÂBõ¦M›Ô={ö48êª2i?¶#GŽ˜u¬Ô(´ ¨‹‹‹5ubbb£ …`¿¶¾}û ÚZ±b…Z¥R ê¬[·NPçÃ?4û1—Ç7÷+—ËÕ{÷îÕËËËS/\¸P @}âÄ Ñþ²ÑŽ&LPŸ9sFò¾îÞ½+xý( uQQ‘É}­i#DËþtGn†‡‡ FNúûû«>|(j«2ÎÙ‹/¾(ºþeee‰ê;wN¬îÓ§d;†Fˆ=zT4ÒîþýûzûTÙ† R®÷Me޵ÄçSAAhdè矮.))ÕݰaƒZ.—«?þøc£{éÒ¥šözöìi´¾©>þøc³GˆîرC4²477WPç¿ÿý¯ Îk¯½&Ù–¥¯ÛDDDDDdje@tÙ²e’õf̘!˜:gŽòDµ§ü½üòËfÝgu(O@ôáÇ‚c6oÞ\ɽ,?KDõMmݸq£ ^||¼¨Žîþ7ê½_í@uJJŠYý.î3::Ú`ý+W®èf*xÓuùòeÁý?~Üä¾ÖÄ€èüùó%ëíÝ»WPoË–-’õ,yÎtƒ˜/½ô’Áv‹ŠŠÔ§N2©­²€èåAAAê„„£¡2ÕÔ€hE?Ÿ¾üòK“¯jµZššª¾víšÁ:juÍ ˆªT*A½Á~Ýs'ªcÉë6Yj¹\®wê³Ï>«¹]6Ý®²i¯\ž)÷µÑÅ‹«» Uâõ×_—,ïß¿¿`;))ITçûï¿×ÜîÛ·¯f§”—^z r¹\³]Ùç÷þýûØ·oŸf{Þ¼yð÷÷7xLÛ¶máîî.¹ÏÕÕÕè} ã½{÷LìmÍ4yòdÉò¾}ûB¡Ph¶wïÞ-YÏ’çlõêÕ‚í÷Þ{Ï`»uêÔ18][×®]»Ó·CCCqìØ1ÉtÖΟOK–,ÑÜ ÅèÑ£ Þ§§§§Ii@jЏ¸8ÁTù—_~Yï|3fÌl9rÄhû¹n‘õ¨u9Dƒƒƒáââ"¹O÷ ºR©*CëÖ­5¹ÃÃñxñbLŸ>½Êò@V;;;h¾Äÿý÷èÙ³' ™¬ÖÅÔMÖ¡CÉr777ÁvZZš¨Î¥K—4·óòòð믿êÍÁ©V«Ñ°aCMŽ»Ë—/‹¾¼[Rtt´`{æÌ™k;-- ˆGrr² ×`ݺu5QwõóÚ$((-[¶”Üggg‡çž{Ë–-“òõVôœEFFjnOž<Ù¢Êß~ûMðú Å¡C‡Dï*UÑϧ‚‚ÄÅÅi¶çÌ™óÈ]ccccÛC‡Õ[744¾¾¾šsbÊ)¹n‘õ¨uÑ&MšèÝW¯^=Ávnnn¥Dµƒ0wî\Ì;}ûöÅO<ÐÐPtëÖMÔ·ÚfÒ¤Ixûí·”~‘öÙg!—ËÑ¿<þøã A§NôŽô©mär¹Á ¶B¡Ð,$¢¨ÊÉÉ,2rêÔ)œ:uÊäû®ìÑÍ·oßlûùùU¨=•J…}ûöáÓO?5ùqjýjC× ‚…_nÞ¼)YÇ’çìŸþÑÜ.[ÌÍRtƒåöööz~Tñϧ;wî¶,×¹âþýû‚íF¬ß¢E “¢¹n‘u©uCO<<<ª» Ý»wÇG}$*?xð Þ}÷]<óÌ3pssÃСCE¨Údîܹ¢U‰•J%¶lÙ‚Y³f¡GðððÀ«¯¾úH|ѬÈ(;SF’——W¡ã¹uë–æv@@@…F cèСxöÙgÍ ú–û>«›±Žö”ù””<|øP°ß’ç,##Cð~3¬­¨3gÎ`Ñ¢E•zµYE?ŸtGo7nܸBíÕDÚQ¹\Žºu묯ý~Ó=?º˜ÆˆˆˆˆˆLUëFˆÖDï¾û.žzê)üôÓOX³fd;v`ÇŽ8þ<{챪í ØÛÛc×®]øý÷ß±råJ8p@TG©Tbéҥؿ?Î;WëGÅ–—nléÒ¥èÑ£‡ÉÇ{zzZºKÚý³³«Ø%à½÷Þî]»4Û …/¿ü2‚ƒƒÑ°aCÁh­Q£FUYnßʤ7XJII‰`[7U‚%Ï™îk­¢Ï§”‰'âþýû8|ø0à£>Bï޽ѻwo‹ß—µ«Šç³º›U_ûý¦{~ˆˆˆˆˆˆÊëÑû¶UMºté‚.]ºà—_~Áõë×qæÌì߿۶mÔ{ùå—qöìYØØØTSOËÏÆÆ£F¨Q£››‹Ë—/ãĉصk—`¤[TT>ýôS|öÙgÕØÛꣻ@‘B¡@HHH5õF¬E‹šÛׯ_‡Z­.×ë±  ß}÷f»W¯^Ø·o%ëgffš}5Qbb¢ÁýYYYšÛ …öööšmKŸ3…B¹\®%ª›Ÿ±¢^{í5|ýõ×HNNF«V­4÷óüóÏãêÕ«ðòò²èýÕ4U=Ú½yóæ‚í¸¸¸Gîk§èP*•(**¼GtÅÇÇkn[üˆˆˆˆˆÈTµnÊ|Mggg‡àà`L›6 [·nEtt4ÂÂÂ4ûÏŸ?o4 R8;;£[·n˜?>Nž<‰#GŽòáé‚­IýúõçB;ŸhM » Prrr¹Ú¹pá‚ `´bÅ ½=ݼªåUÑ©öÚß‚‚‚rµ¡ ‘¢}>uÏueœ³Ö­[knk§C°„wÞy2™ 6ÄÆ5å)))˜4i’Þ…Âj2Ýó““£·®nNÏʦð«húšH7 €±ëö"SÍš5«”>IQ*•;v,^xáÁŸµþÐGDDDDô¨a@´’ùûûcݺu‚²»wïVOg*Q¯^½°xñbÍvTT”hêpUÐDfddTùý—Ñ^éxûöíÕÖ)ºA—Õ«W—«ÝUšuG·i“J±`*íJRRR¹Û„ %$$”«ððpƒÇîØ±Cs[7€Sç¬M›6šÛkÖ¬ŒPµ¤ YÚ³g–.]Z)÷U™ÜÝÝÛúrùùù0ãââ"ÈAûÓO?Y¬mí@ðƒ,Ö®¹t¢†^ç·oߤŒ¨èpæÈÍÍņ °iÓ&ÁßÁƒ«¬DDDDDTy­º9żp€øqVd±žòÒ-Yå÷_æùçŸ×Ü>|ø0þúë/“Ž«ŠÅ†š5k†ÐÐPÍö§Ÿ~ŠôôtƒÇdffŠú¦¸ô„-..Æ‚ ÊÙ[áÿ}ûö•»hÚ´©æö©S§DJSýú믒ågÏžpž~úiÁþÊ8gÇ×ÜV*•X²d‰ÑcÊ;*øóÏ?GPPfûµ×^Ã¥K—ÊÕVu©S§Žày8vì˜d½_ýµZˆ7nœæöÁƒqôèQƒõ‹‹‹¾a òúõ땾x›>~~~ðõõÕlÿðÃzë®ZµJ°Ý¥K—JëYD+èé§ŸÆë¯¿®7øV\\ŒwÞyGPÖ¶mÛªèšÅûì3ܼy³ÊûÓ¦MCpp°f{ìØ±Ø½{·d]µZ#GŽ`ôèÑ‚`Se±µµä±T*•èÚµ+®^½*YÇŽhÕªΟ?/( l/X°*•JP–••…1cÆTh1%Ý”‹/.÷TíöíÛ ¶_yåäçç›ÝΛo¾‰#GŽÊ0~üxͶB¡ÀsÏ='¨SçlРA0`€fûý÷ßLJ~(¹xMZZÆ1cƘԶ.'''ÁÔy9rdµ+BûüÙgŸ‰¦¦Ÿ9ssçέên(]¤O{¤ûàÁƒõ¦ ¹rå ºuë†üÑh»º#3-ZdöG–`gg‡>ø@³Ž9sæˆÞ[¶lÁ§Ÿ~ªÙ=z´èýCDDDDDT^æPE#V¯^-Õ¤`ùôÓO£XÀÍÍ ‹-”Ý»wÄ×_îÝ»£cÇŽ@½zõ‹+V¾lϘ1C°Štezë­·D£€t§ëÏž=[t\§NðŸÿüG³ýðáCDEEaÞ¼y˜7o „6mÚ eË–ÉdˆŒŒÄ?ü ŠL:Õ²ÆD'NÄæÍ›”úZ·n.]ºÀÏÏJó:¾÷Þ{•Ú;;;,_¾?þ8€Ò‘€ƒ BŸ>}dggãæÍ›8uê”æ5¢ûš«,]ºtÁĉ±fÍ¥)Úµk‡Q£F¡}ûöpppÀ½{÷pöìYQ ´Lýúõ1pà@ìÙ³°råJDDD`ܸqpvvÆÕ«W±eËAÀò1b‚‚‚pýúuÀܹsñþûï£M›6šQÉcÆŒÁË/¿l´-???Ìœ9Ë—/lÞ¼›7oFhh(êÖ­ hÕªV®\i´­>}ú`ܸq Brr26lØ ñ¹`ÁÑb1•uÎ/^,=ûÁ`óæÍxòÉ'Ñ´iSäææâÊ•+Ø¿?”J%úôécVûÚ‚ƒƒ±lÙ2Ìš5 @ižËÙ³g—;õBuxùå—qøða¥×‰:`âĉhР®\¹‚M›6U[ßÜÜܰ|ùrL˜0AÓ¿áÇ£OŸ>èÔ©¼½½‘””„ˆˆÍs>tèP£í",,Ló~þüóϱzõjtìØžžžšzóçϤa(“ ™?S{A½óçÏK~¦Œ3F0ºsܸqøàƒ4¯óo¿ýgΜAÿþý!“ÉpùòeüñÇ‚6*ûšMDDDDDVF]…üýýÕÔÔãÆ3ù¸©S§jŽ›5k–Þz·oßÖÔ NLL”¬7dÈA=Sÿär¹¨­€€“ Sçää˜ü¸+ª<€úù矴“˜˜hÖñ3gά²Ç(eذaFŸ)ëׯ×Ô 0x …BS÷÷ß×[o÷îÝ‚ºÆþ|}}+ôØÍ‘››«ž7ožÉ};qℨøøxµ\.7zì AƒÔÝ»w×lýõ×fõõÌ™3Ïãœ9sLn+99Y¦·­   Ñ1ãÆÓìïÛ·¯ÑÇüÒK/©>|(yÿ•uÎN:%¸ÆúëÓ§dÿý· ^jjªd=•J¥8p  îºu댜yËÒ¾Žøá‡fûðáC£×î1cÆžw}Ÿ=–þ|R«KÏïªU«L~o~üñÇ&=nÝçWêoß¾}’dž‡‡›ÜÝ¿Ÿ~úI²=S_¯ëׯ×û˜*㺭VëÿÜÓ÷Þ!""""¢Ú¥J§ÌkçÎÔÍ7iêq†òoêîÓWWwÔ–©ÊFi{ûí·1dȃÇ) ,_¾G…³³s¹î»<´§]š£N:‚ízõêá£>B÷îÝ Š;wVûB+¿ÿþ;Ö­[‡!C†ˆr6úŸS_gºmª;pà@ܸq“'O6Øž¿¿?Þ}÷Ý*]€ÉÉÉ _}õNž<)È)ª+((?ÿü³dFáÊ•+6l˜ä±þþþøè£°uëVÍ]@ü3¦sçθzõ*fÏž-˜B_žö N:…Ï>û }ûö½O¤V}×¾^=öØc8yò$Dõär9¾ùæ|ÿý÷z_•uκuë†+W®`Þ¼yßû“'OÆ7ß|#¹O÷º¬ï:mccƒ•+W îgܸqUº™©ïA)vvv8sæ (Ú'—Ë1yòd¬ZµJðZÐw–þ|JÏï¤I“pÿþ}ƒŸ/r¹|ð&Mš¤·Ž¶.]ºàöíÛxóÍ7,ù:Ñ×/s>³Mi3$$ááá‚ٺ‰±cÇšÔ¶¥®Û†ö›{í"""""¢šÉF­.g2>(**Â7””„„„ØÙÙA¡PÀÏÏÍš56j³²iÞIIIšÕ¬ýüüиqc4mÚ´Zò†Öjµqqq¸yó&áèèøúúVéêÉú”­ª}óæMB¡P Y³fhÑ¢…IÏëýû÷…¤¤$xxx cÇŽ’éGIBBΞ=‹ââb´mÛfŽ*óœ%$$àæÍ›ˆ‡ƒƒš4i‚€€¸¹¹Y¤ýGZ­Æýû÷qõêUdff"((ÁÁÁ þU†ââbܽ{7oÞăP¿~}4iÒ­Zµz$>[ÊÒ²\¿~%%%ð÷÷GPP\\\ª»kDDDDDôˆb@”ˆˆˆˆˆˆˆˆˆ¬W™'"""""""""«Á€(Y D‰ˆˆˆˆˆˆˆˆÈj0 JDDDDDDDDDVƒQ"""""""""² ˆ‘Õ`@”ˆˆˆˆˆˆˆˆˆ¬¢DDDDDDDDDd5%"""""""""«Á€(Y D‰ˆˆˆˆˆˆˆˆÈj0 JDDDDDDDDDVƒQ"""""""""² ˆ‘Õ`@”ˆˆˆˆˆˆˆˆˆ¬¢DDDDDDDDDd5%"""""""""«Á€(Y D‰ˆˆˆˆˆˆˆˆÈj0 JDDDDDDDDDVƒQ"""""""""² ˆ‘Õ`@”ˆˆˆˆˆˆˆˆˆ¬¢DDDDDDDDDd5%"""""""""«Á€(Y D‰ˆˆˆˆˆˆˆˆÈj0 JDDDDDDDDDVƒQ"""""""""² ˆ‘Õ`@”ˆˆˆˆˆˆˆˆˆ¬¢DDDDDDDDDd5%"""""""""«Á€(Y D‰ˆˆˆˆˆˆˆˆÈj0 JDDDDDDDDDVƒQ"""""""""² ˆ‘Õ`@”ˆˆˆˆˆˆˆˆˆ¬¢DDDDDDDDDd5%"""""""""«Á€(Y D‰ˆˆˆˆˆˆˆˆÈj0 JDDDDDDDDDVƒQ"""""""""² ˆ‘Õ`@”ˆˆˆˆˆˆˆˆˆ¬¢DDDDDDDDDd5%"""""""""«aWݨ)T*rss!—Ë«»+•êÁƒ8rä N:2dH5÷ˆˆˆˆˆˆˆˆˆ¨êXu@499ááá¸wï’’’vvvðññA“&MÐ¥K899Us/-+33W¯^Õl3 JDDDDDDDDÖÄj¢wîÜÁºuë R©åÅÅŸwïîÝ»‡K—.aÊ”)¨W¯^•÷/%%k×®ØÚÚâÕW_…­­m•÷ƒˆˆˆˆˆˆˆˆèQb•9Doܸµk׊‚¡2™ðt(•JüðÃHKK«Êî ‘››‹ÜÜ\dggC­VWyˆˆˆˆˆˆˆˆˆ5V7BT¥Rá÷ß”=þøã ƒ\.GJJ <ˆ[·n °wï^Œ?¾:ºkqÞÞÞ8p pÄ)Y« ˆFEE¡¸¸X³ýØc¡OŸ>šm…BçŸ?ÿü3’““111ÈÍÍ…³³s•÷×Ò\\\VÝÝ """"""""ªV7eþܹs‚íˆêØÚÚjFQ– 7ë~rrrpëÖ-dffšÝÇÚ@¥R!%%111}Œ¸uë²²²ÊÝF^^âãã…ØØXdee¡¤¤Äb}$"""""""¢Ú˪Fˆæçç#&&F³íëë«wÚ¸¯¯/d2™&Ïè… гgOAääd¬^½@iþѹsçâôéÓ8þ<”J¥¦ž0tèPØÛÛKÞß?ü jb€¯¾úJò¸Î;£wïÞú2¶mÛ†»wïJî³³³Ã¬Y³ô+åòåË8zô(222å2™ ÞÞÞ>/¾ø¢äªõ(**ÒÛíûÑ–““£÷ 4h[‘Ñ–eŠ‹‹±sçNDDDHîW©THLLÄO?ý„þýû£K—.zÛÒ~¬Ø·oŸd‹‹‹±cÇdee¡W¯^zÛËÍÍÅwß}‡¼¼<ƒáÎ;ˆg@”ˆˆˆˆˆˆˆÈŠYU@T{Ô&xyy¬ïåå%QZXX½õË‚¡2™ 7F:upÿþ}Mð/++ +V¬Àܹsacc#8ÖßßÙÙÙšíÜÜ\A°AƒÉļ½½ >† ­yyyzƒ«†ìÚµK mР\]]‘šš*1ºÿ~Ô­[íÛ·7Úî4·ÝÝÝQ¿~}¤¤¤ž«ãÇ£k×®zÏýæÍ›ÁP{{{´lÙÎÎÎP*•xðàRRRL~¬DDDDDDDDô貪€¨îhʺu묯»_©T ˆ@ýúõ1uêT899(9¹aÃܾ}[ÓÆõë×ѦMÁqÏ?ÿ¼`;66+W®ÔlO™2vvæ?]C‡lGGGcݺufµ‘••…Ë—/k¶1eÊxzzjÊ"##ñÛo¿i¶ÿúë/‹¿R1aÂÍT{µZƒâôéÓJÏá… н{wѱyyy¸wïžf»]»v>|¸è~sssqöìYDGG›ø¨‰ˆˆˆˆˆˆˆèQdU‹*éŽutt4X_w¿±ééÁP t´è˜1c+Ô9rÄ”îÖ‡lOžKŸ³‚‚£3¦LU“'_æã93Ï™ù,yÎŠŠŠ`kkk‘sV“'_æã93_m}ЧO(•JÄÆÆâÖ­[ˆŒŒ¾cbbpõêU´mÛÖâ}èܹ3Z´ha‘¶Š‹‹¡T*-ö~JIIB¡°H[pqqA:u*ÜV^^ÔjµÑ÷–)xÎÌÇsV>™™™»†×ÔÇÉ׆ùxÎÌÇsf>KŸ3K^ÏjòãäkÃ|xð@sÛÝݽü=«!:uꤹ]TT¤7ˆyæÌÁvXX˜Ñ¶#""ôæ=wîœæ¶“““Y«µ¥ÃŸ«K“&M4·cbbD£]ËܸqC°Ðˆv²ºi§_°ÄJiDDDDDDDDTsxxxhn§§§¬k4 ª½²”ÔÒöµMHHˆ`{óæÍ‚Q°ðÏ?ÿàìÙ³šízõêé ¯M¥Raýúõ())”8p@X~â‰'ŒN¿wttñ8€ÜÜ\£}¨ }ûöl¯^½Z0z±uëVͶ ø\Y®]»†eË–áÂ… zW}¾{÷.nß¾­ÙÖðQí§·ÔŽgJ©šojggg„„„àÒ¥KJƒ˜?üð ¼¼¼pÿþ}ÑȧžzÊäöïÞ½‹%K– U«VÉd¸wï’’’4ûíìì æ-ÕÖ¾}{M?SRRðõ×_k¦ý—TÛ¶m+ ò–Ù±c‡è‘‘!Øþý÷ßEÇùùù ‚™ 4€¿¿¿&§jzz:–.]Š€€Èår¤¦¦âöíÛ‚é{õêe‘¼ÆáÁƒؽ{7öîÝ‹¦M›ÂËË (**Â;wD©L=ÿDDDDDDDDô豺€( <2™L°`TJJŠä´ô#F ]»v&µÛ´iSܽ{ÙÙÙ8þ¼h¿&L˜`òÊë}ûöŵk×4#U*ÒÒÒ90ÝÜÜôDË‚©†\½zUT–››+Ý9|øpüúë¯HLL ""B²Í: k×®FïÛÒT*bbb‹aéOízúR 4nÜíÛ·7šÎÁÏÏS¦LAhh¨ÁzDDDDDDDDôh³Q«ÕjC/^Œ¬¬,À[o½¥7€X›åää 66J¥^^^ðññ½½½Ñãbcc±råJÍö‚ `ooââbÄÆÆ"55nnnðõõ}$ò¯–Q«ÕHOOGbb"òòòàææ†† B.—Wk¿²²²––†ììlÂÞÞîîîš4DDDDDDDDôhÚµk—f6øèÑ£¤·®UN™×åââ‚ÀÀ@‹µggg‡fÍš¡Y³fk³&±±±‡‡‡`õ®š ^½z¨W¯^uwƒˆˆˆˆˆˆˆˆj0«œ2ODDDDDDDDDÖ‰Q"""""""""² ˆ‘Õ`@”ˆˆˆˆˆˆˆˆˆ¬†ÑE•ŠŠŠ4·U*U¥v¦¶qqqAË–-”.4dkk[Í="""""""""²>ÙÙÙšÛ999ë ˆjnÁÉÉ©]{´Ô¯_cÇŽ­înYµŒŒ ÍíÌÌLƒu9ežˆˆˆˆˆˆˆˆˆ¬†Ñ€h:u4·íìŒ(%"""""""""ªR...šÛÎÎÎë ˆ:::jn3 JDDDDDDDDD5‡‡‡ævýúõ Öe„“ˆˆˆˆÈLéééÈÊÊ’ÜçííͼûDDfR«Õ¸wïÔjµhŸ7n\ ½"¢G¢DDDDDf:pànÞ¼)¹oÈ! ©âÕn………X³fä>™L†… Vm‡ˆè‘Æ€h%¹“šŠ“7£’”¬,äjöÉllðÉs£!ÿÿt{ÿ¹Œ=ÿüc°=™ ¾;öL[@ôȺwþ>â#‘•” e’Å…Åš}nÝðÌ{Ok¶->†äÈdƒíyµôBß7zWZ‰5{öìÁ矮wÿ‚ пÿ*ìY³ )) ЩS'V[_JJJpåÊ$''ãÁƒxøð¡f_ppp­ þ®\¹yyy’û\\\0iÒ¤*îÕtÉÉÉˆŠŠBZZ”J¥f£ ÆŽ [[[Ñ1|ÕlŒ®YØÃâb¼¹é7ü}ë–ÁzùEEš€hdB.Þ¹c´íÂââG* ªÌÏÇ¥{÷p>æn'' ¦FØÊdX>aþ˜·7ßBaN¡ÞzÚ5`@Ô ýôS¤¤¤öuèÐÁ*¢µ-(hŠ’’ƒÁPµò5wwwäççk¶ Q\\làÓlÛ¶ ·oßtïÞý‘Ý[ƒK—. †RY¯³šH¥RáòåË8rä²³³ûòóóMˆÊd2tèÐA³íààÀ€(UD-lÃé¿«» 5Þ¹èh£ÁP"kñàn:"Jç £RÊBDì¼ZÝÝ +0lØ0 6LPÖ±cG„‡‡WSj¾ôôt|ÿý÷øâ‹/ T*«»;da‚`h×®]Ñ¡C¸¸¸hʪ£k2sæLÁöÕ«Wñûï¿W¸ÝhÎ×£:ÐÚüõ×_šÛr¹ƒ ‚··7ìþÖž ìíí%­¬×YMR\\Œ‹/âØ±czÓÕT ˆZ² E¿úíÞ ÝàX§Ž¦ÌS.×ÜžøxO h/¥2uÅJ”è™bADŽ´˜¢2 ùt ¶i™méÈûºÂ¶Ÿÿ~$ ”ší̸,¬»¾r;KTÃá‹/¾0©n§N*¹7Ö!00P4"”e9LÀÛÛýúõ«ÆÞU­‡ ‚|C‡EóæÍ«±G5Ïo¿ý†[œIDµ¢—ž.*«koYO?-Qû_..ðÐú¥ìíì_TdÑþQÍ“~/CTÖax;<ö¼á©—õ» ¶厖ìQ­Ô¸qc 8°º»aU´§ƒÀ¬Y³0eÊ´oß¾šzD–T–Ã6lX=!ªzÂÿÑ4hPM=©¹tSøøøà©§žÂöíÛ9Jšˆj<D-¨¸¤DTÖÄÓ³z"¤V«‘•Ÿ99HÏÉÁÃ’¸99ÁÍÉ ê×7»½Ì¼<\‹ƒB.GË ÌÎ%¯ë_wwtjîÎ-Z ´IŒ^¶òS#>"uëÕ…§¿dv2³ÛÈÏ*@ê­TØ:ØÁ;À vÕ T•ˆG‚{µ¨þ놪X…¼Ì|ä¦å"7=2;êº:ÂEágw'³ÛËŒÏBêí4x·RÀµÜøZlëØ¢^#W4ïáÿnMÑ´“R¢Rñ¿‰ÍîQuP©THKKCRRÒÓÓѸqc4mÚTrS””” 22¹¹¹hß¾=«ÿ‘ùóçãÕW_EÆ 9uÞLyyyHLLD½zõàiÿÕj5ÒÒÒ™™ ///¸¹¹•»­‚‚g"Tdj|II ²³³‘ââbxzz¢^½zånj޼¼<$$$ÀÕÕžžžÉÌÿÿ¬ì™““ww÷ ½f-©°P˜·¼¦¤‡(**Ò¼Ÿd2¼½½Q·nÝr·—››‹ÄÄD¸»»ÃÝݽ\m4mÚO=õ|}}ËÝ"¢ªVýÑ€ZìsçñáCšm©éò7ðÔ§Ÿ‰ÊŸ= nÎΕַ¬¼<‹¼C×®áÂ;z§ßÛÛÙ¡gëV˜Ù·/ùçcÿå,9p@¸´·³Ã­±pØ0Lüég$kýh+“aûœ×PW'¯ÎBülDpac8þúú¨ ìÙûÃÕ[Ž#KOàÚ¾HÁ¾'çöBß7z Œf')±ïヸ}<Y Â$ïÞ­ÐOÍë…:Žuô´`Y;ÞÞ#Èšû@œoéàGpzåYAYƒÖÞ˜¸~l¥ö-3. 7þŠÂõý7pãP”Þz ƒ ý°¶è9£›Áó¦V«qè›c8½â rÒþ½nx5÷DÏ—º¡í3X>àgÁ1;ø`ìŠçe® äxçò‚²ÔÛiæ<4¢*—––†ýû÷cçÎØ²e‹d°°0 4o¿ý¶&!111˜={6öìÙ#(ïÙ³'.\///L:@i®»CZÿ£T–%K–`ðàÁððð¨ôûzÔ9rçÏŸLɵ³³CË–-E¹lMqöìYœ={é:3–d27nŒaÆ 4]½z»wï”iDÏž=‹Ë—/‹ŽëÚµ+žxâ QyJJ ®]»†k×®!-M|Í–ÉdðôôDçÎѱcGƒí—_~Aff&`È!ÐûöíÛðððÀ‹/¾h°ÝŠ(ïù’Édxíµ×ôæ,sîÜ9=zTPæçç‡çŸ¾ü.§½{÷"""‚¾}ûâÀ¸qã†hàc=†gžyƤÀèåË—qôèQÑH̲ ßàÁƒ«tdò?ü x<º£¿úê+Ñ12™ sçÎ5é^^jµwïÞÅõë×qýúuÉEÎìíí¡P(Я_?4nÜØ¤v>Œ .ˆ®A6l¶oߎ¸¸8@¯^½$Žëر#ú÷ïooïr>:"¢êÀhdäå"Gë}¤êIŒ&µ¤ŸÁšãÇÖ+*.Æ¡«×pôz$¾ùÏXtÖ“gÍñãøñÐaÉã^¹Šì¼|Ä>x 3*™('-W4}<éF ¶¾¾SL+s蛣ȈËÄóßÐÛfäŸ7±aú½+“'ßLAòÍÜø3 c~ïVŠŠ=dÆgIN“×V˜S(ê³­]ùF’™cÛ›»LZà)ñz¯'áâ¦ðòž)pöÿ¸SRT‚-s¶#|ó?¢}©ÑiØúúN¤ßÏ‹òŒ>%ª‰¾üòK£ùLÏŸ?óçÏãàÁƒøí·ß ~ñ?sæ ž~úiÉÑ—'Nœ@ß¾}±hÑ"œ?¾Â}7ǤI“ªôþÅÅÅØ¼y3¢¢Ä?<#22YYY&¯F››‹-[¶àîÝ»’ûU*îÝ»‡¥K—bĈhÓ¦d½üü|A@OŠÔþœœɺëׯ­6­Û¯””ìÚµ wîÜÁСCõ•RSSQôÿ©¤ ­xŸ››«Ù¯V«õÖ³„òž/ ô±“““#Z¤F7Ø]U²²²4%;;üñ®]»&Y÷Â… HNNÆäÉ“õ¶W\\Œ;wj‚¬ºT*ñÓO?¡ÿþ&¯P^Qš×™”Š<Ÿ‘ŸŸµk׬STT„¸¸8¬\¹ýúõC×®]õÖ-))Áo¿ý¦÷TtU*•š±¾éïmÛ¶5ã‘Õ, ˆ D¥ÂÇÛw`ûÜ9éL?tíšd0TÛÙèèÊìY©??3<º)|ó?è=»§d óŸmW°aÚf“î'ñz¾î± oüýj˜®^[¤F§áÈ’xvQѾ?¿8, Õvté‰JêQÍŠ€€øùù!%%§OŸÖ|=qâ:tè€;wîÀÉIü£@BB‚èËmPPºvíª (ÀÂ… +ÿP…mß¾]ˆÉdðññ££#bccQPP€„„“Ú***²eË;;;øúúÂÅÅ©©©HNNP´Ù²e ÜÜÜàãã#j«~ýúhÔ¨‘ ,))Iì±··—œÒoÊÈ0™L777xzzÂÉÉ YYY¸wí«W¯"++Ë`­¦)ïù²±±)wºŒš@;*—Ë¡P(••%‹˜˜øûûK¶±k×.Q0´AƒpuuEjjª`ÄèþýûQ·nÝ*ÉKìïï/âçææ  4|­ŽçÓÎΚéééˆ×ì?pàŠŠŠ$GnÀÎ;EÁÐFA.—#66yyy¸wï^¥>"¢š€Ñ °+GŽœ2ºAÇÊæ)—Ã×Ý=Ü‘WT„ 1w¥ó«sJv6v‡_ÂàŽ¡‚òŸŒC‰*›ƒKiÎ&©‘žç7„ãÙ…¹‡ù±sÁQ]cö.úþ7¦|4‘mòýÓ\žœ©å÷Xcxú{ ¾¯2â2uø–h´îñN¡ûÔ.‚Ežò³ pd‰ôu½#v‰*êÀèÑ£‡Ñz_ý5:wî\éý À«¯¾Š±cÇŠò%–””`ÅŠ˜1c€ÒéÅ6lÀ”)SDí,Y²D°ýùçŸãÍ7ßÔlGGG£W¯^š©TseggãêÕ«šmggg̘1ryineµZßÿ]ïè;]GCƒƒƒñì³Ï ¦cß»w7nÔÔÛºu+fΜ)ÊߢE ´hÑBP¶bÅ Íë*$$ 0ãÑ …Ý»wGÛ¶mEA£‚‚lݺU˜‰ERRR­Y¸¦2ÎWm2tèPtèÐA³}ãÆ lÚ´I³}òäIÉ€hVV– •€££#¦L™"GFFâ·ß~Ólÿõ×_6{Ýsé¦#ˆÅÊ•+5ÛS¦L©Ô©ñÆ´hÑ=zô@Ó¦MEûÒÓÓ±víZM÷ĉèÑ£‡è}—-8ÿNNN˜2eŠ wèîÝ»qáÂ…ÊyDD5¢0¡gOŒÓúâ‹—V­Ô hØ«§M”ÙåJ8n.{;;  Å ]»ÀG"AöžþÁGÛ¶ ÊNܼ)ˆ†ß½‹ûZ+Œ–yªm[,6¶2~9rÔ¤éùDåñÔë½Ñ÷ÞP•¨°qÆïˆØyU°?-Züú<þãiÉiö“€Þ- z¨ÂÉŸÿÆžö_Û‰è“wмG3Ë>-c1?ÒlŸZq»ÞÛ'¨3ðý~è9£› ÌFV5?¢x·R ûÔ.è0<Žrñâ;ìÅÉ_þ”Ý={O=·^úŸè~‰Ãñ°à!6ÏÚ&z.‰,áÔ©SFëHå3´´÷Þ{Ÿ~ú©ÞÏ{[[[LŸ>‡Òäݸq£( úàÁÁÔû©S§ ‚¡Ð¼yslÛ¶ aaa~diÇŽlO:U JG›9ÉÉÉF_§™™™8}ú´f;00ÇÕkÒ¤ ÆŒƒU«V(}M]»v­Ò§º¾ôÒKzqttÄÈ‘#ñÅ_hÒ\¾|¹ÖD­YïÞ½ÁPhݺ5Yšó=))IòØÃ‡…-&Ož,Iˆjò%+•J\¾|YtŸÖÂÉÉ óçÏ7ø~rwwÇèÑ£ñË/¿(ú~çÎQÐþ¸Îw¶_|Q´Ò³Ï>‹ÄÄDÁ¨S"¢GQÕ9z„ØØØÀV&ÓüI•éÔ±•ɪ$:¶{7zû-¼>ðÉ`( ˜z’¤“æhd¤¨Nƒzõ°häØÛÙÁV&ÃŒ'û LÏ”¢ŠpoR}ßè ™ lëØ¢÷«=Eu2b3Ee§~þ[Töü÷#ѪOËÒ÷­½-ž˜Ù]&Šƒú‚y–b#³ÌN&øÕ±שЀèsˇcÞÉYè2!L2 ¡Ïu•é.Vuã 8'U¯Ù=2²=ld6°w²Ç ?ŒD½F®é7QMäââbÒç}ß¾}5·¥ò¹é¦OŸ.ÙÎc=†àà`3{IU-Rëÿ*___ÉEŽlll æÿ+£›/vèСzëúùù F•ݹsÇhûeʪ×öööðóóÓl?øžj™L¦7§§v~ZÝü§enÞü7Wy£Fàåå%Y¯C‡‚kèõë×ËÓÝG†)ï'Á9“Ê9«}}||$Ó:¨²¼­DDÕ©FÍ/*›7AU¤è¾îîx{ð À§;w!®ÉÈe66øâ…çE«¦×DrGGÀ­¤$ì ¿„ÄŒ ¤(•HÍÎFÁÇzKüÿ<Ë$¤‹y¡[WÑ”ÿÿôèŽó11ï8Uš‡ùñûœíP«Êÿ~ªß¤>¼Súå}ßÇ‘adq Cld6¹x(êÔÕ¿Jy»Am@¦âà¾2E¸ÀHaN¡ht¨ƒ‹‚‹‘è:©ά~¡L¹õïˆKŸ³šÎÉÝ jµÑ'ï êèmd')‘Ÿ…ì$%ŠòK(ÈOwψÏl§Ý¡íüŸÇÛ¶ö¶è6©3ö}|Ðr€¬^hh(~üñG£õZ·n]½ùWaa!âãã‘€¸¸8A àŸþÑÜ–Z´âþýûšÛ …ÂàjÜ#FŒÐ»H U?µZ-xîÛµk§·nÛ¶m5¹aõIIIÑÜ–Édšç^j1!µZ-Xø¥ªG~ 33™™™ÈÎÎF‰Öâ¢Ú‹22¥J™nݺ‰^#Ò?VV%777½ýpuþÐYPPÇÿÿN”æ±ÕNñ`(/h:uвeKM5Sç;Êùóç+$íÓ§É+²×$999ÈÊÊBff&”J¥à=/“É4ïuÝ÷“î5ÈÐhî5QÍS£¢yEE²Å¤¤h¢ÇoÜ@†•)MíSmˆF&$àÓ»•˜hÖq9:«'&J|9 Öú%_SV ÿ™°6EùqéŠ}Qön¥Ð÷®ï»ä›)FŽ0lð' Dë5þcí gÔ¢¶ôûâ móîÍ`ç ¾Ü5 OË‹H€Z­†ÅÏYMw}ÿ ìûïA³ŸWeò¿_fUÅ*шQx4³}CÄ‹zU„——Wš6ž˜˜ˆeË–áÓO?5©¾Ô òÚ+‡·lÙÒàñº ¼PÍ¢ûüêæ•Õæàà lHшªT*ÍôbSTEÚˆ‹‹ÃáÇcâÿó•½Zwmâèè(&ÖR£šËèŽb,**<Ý} ½tïK7 [á‘ε& ªV«qíÚ5>|Xrä§Ý÷“ö‚Q€áóogggôDDTÛÕè€(•ÏÔTLùeJ,ð–,õtq•Õ† 1Õ>e‹)•1%™~ºÄ¨UCS³½š{"5ZøÅP™’Wo¹ž#M×öEbíø å:¶(¯Hs[™’#Ú¯ï\Ö­Wó¾èYʱcÇЫW¯ ·£½Ò¯±€§±àU/Ý€Ž³³³ÁúuëÖE®ò¥è¦ªŠ ÇÁƒMÊé«M{ä(ÕLNNNå>V÷= ;¢T—öþ¢¢"”””TùŠî5AII V­ZeöÈnÝ÷“îù×Î_,ÅÞÞ^0¢—ˆèQÀè#èÛ}û Cë99Aîè™ä‚IÚl%òŸþâ{mRÓ³ˆªƒTÐÔÆV U*‡§ªØº~ W•¨ðÇÜz÷;¸8ÀͧêÖsD~VÁ¤¶uÄç³lº½.^6èQ•€Aƒ ʈ‘#GÂ×ך/õÇǬY³ô¶¥½¢q±Ä篶ªÈQN–cì'Cϧîø-Zà‰'ž0ù¾+{¥ìk×®‰‚¡hÑ¢\]]Aµ#GŽàöíÛ•ÚªtñÆ~èÖ}h¿gºu놀€€ õ§I“&:¾ªìÙ³G µ³³Chh(5j„zõêÁ^k`ʯ¿þª7«îù4öÃ?SˆèQW£¢ulm+<òÐ[k´„w½zógšÚ§ª`og‡ü"aÁ”_Íó‹Šp6:ZT^×Þÿ5][´Ð|¸•¨Tèþá"ƒíùÔ¯,ÕÄÌLøê,Ôô G<*Œj[;Y…±q÷«/¸] ¬Ø¯Æ¶ÁÈŠrm(~ŒÙ‰úGÑdÆ‹GA»6(ýÅÜÒç¬2ÙÖ_›Š Mis÷Ü}QÞUhýd~ÐÞ­‚ºßüEo[ΞâOY ÙP«DÁç¬ñ¹'zlÚ´I0zoïÞ½0`€dÝ  /䦽N\\œÁº©©©¦w’ªœî^c#¯ µ±±\.×¼ÎìííkÔÔ_í`¨^zé%xxxHÖµäêÌAZ³é¾”J%6l¨·¾öo;;;A ¿AƒhÐ@œúèQóðáCA®iOOOLŸ>uêH§œ**’þê×þOjl”9G‡Ñ£®FD]ëÖÅ‘wX¬½5Ó§Y¬­Êæìà D>ÈÍ…›‘éUº‹"•ùhät×ùUj:¼®FõëãºÎôŒWD«Êˆ¸b´-ª^Ž®ŽxçòkoÒ†ÿX¬-Kòh"@Æ^ŠƒªD™­0 —~?…9Â/OÞ­šz–>g•ÉÑUœ_UwÁ)}¤Ò ÀØ£Ei ¤ÈÚlll$ÓÜ"AP{)—wÿ!¥óñ—›»çîcõ˜õˆØy¯:‡¯4ÚN™ÄëI8û¿ ‚¿Èâ`ÁÝ3÷EõbNß5ù~ˆ¤´hÑBs{ß¾}&£=uÙШÍ-[¶ýûÔSO F.]ºTrŠñŸþitJ=U?í×Ó­[·/ñÿœ={Öh[íÚµÓÜV©T8räˆI}0–‹¶¢tƒ²†ž4©Mí©Öúò&%%!11Ѥöt¹ë¤‚ÒÄ™C;h—œœ\®6ÊH½Ï…œýÚ?òÄÄÄè¶}ãÆ ÁYÙiµQy^gº#Ëõ/•JeÒû)44Ts;==]ò3J¥RáÌ™3FÛ""ªí8B´†ê€:¿ÌåàÅŸ­L{­:zöÀÄÇPš+ÔÅÑ9:9_Ö?ü¢‡èØ÷<À·ûˆr”Jñ”Ë1 }{ì»|YPž_T„%”ë±-ÙoÚq?üuHTÖ­eK4÷ö.×ý’õxêõ^¸°é’h´ä—]—À'¸TÅ*$^"ñ{¬1‚‡´­Ê®ZTàÓ­D E¼‰EŸÁÅÓ¶öÿŽª¿f ‡ø¼ZHÿ²yÖ6ô˜ÞÚ6Àý‹qØöæ.“úѪOK4 j :Ç·OÄàö‰sàæ¡[Ø»èO£õnŠÂCÂe¡£;À¿[S³ï“¨LXX˜æöùóç±xñb¼öÚk§mãÀÿF~ûí·˜2e Ú´i#¨³gÏL›f<•““Þ}÷]ÌŸ?°cÇ̘1ß}÷&ŸÞÙ³g1zôh³›¥¨T*A F7ç¹J¥•ÕÖQžÕ«W/\Õš¡³nÝ:Lœ8Q0JìØ±c&¥?ðõõE›6mpíÿô>þ<лwoÉó›””„Ó§OãêÕ«˜9s¦(8c)¶¶¶‚QhDëÖ­áè訩S¼‰ŒŒ4©M…BèÿÏ‘Ÿ’’‚«W¯¢mÛ?¯³²²°qãÆr÷ÙÙÙY0zwïÞ½hذ¡ÙçH; š’’‚Ë—/£}ûöåî×£¨oß¾šç(õ=eÊA =11Q0zÞÎÎ:uªÒ~V†ò¼Î¼u¾÷ìÚµ /¼ð‚à3(??›6m2iTr·nÝpâÄ Ítø5kÖ`„ š@uII 6nÜhR*‹2jµÚ`°^w8 t´jmMBDDk¨'Û¶Á7ûö!C"¡~‰J%f>ÈÖÓ­+~>|Dt̆ӧ±áôi³û2ýÉ>8iR•¨&pöpÆÓóû`×{âÑ\º£µ þh@­þç¬ûÔ.8ºLzä·î(Ñ¢¼ßÏn>õÐv`®êL‡O¼ž„-¯n3»666üÉ3øiè*³%ªiFŒ   ÍHιsçâý÷ßG›6m4A§1cÆàå—_óå—_j¶Û¶m‹¹sç¢]»vHIIÁ™3g°m›éï­éÓ§ã믿FJJé?ÿü3~þùgtéÒÙÙÙFG™V6777ƒ‹s¼ôÒK¢i¾'NœÐ;UóQæéé ÁT÷%K– 00¶¶¶ˆ‹‹¬&mÌ3Ï<ƒÈÈHM°áäÉ“‡¿¿?êׯ¤¦¦"!!Y&䎷”:àĉÒÏ£ÜÜ\|õÕW ƒ››ÒÒÒeV:wÿþ[³ýûï¿ãÒ¥KðööFzz:nß¾]ᑯO?ý4vîÜ©éóÒ¥Káìì ‡ÓÇL›6MØÕŒ¿þúK³½mÛ6üùçŸpww×½mllðüóÏ ²& 4¼ÒÓÓ±téR@.—#55·oßÐzõêU«s§j3÷uæììŒFiòòFEEáÛo¿EHH˜˜(MkˆƒƒzôèãÇ(ýqbõêÕprr‚££#233ÍκfÍQÎgmwïÞÅ¢EÂ…|»víŠ~ýú™u?DD–Æ)ó5”ÌÆ) jª‰={ÂÏ@òú2RyE¥4¨W[fÏ­,¯í½aCQ·¹–ˆ*Ki]1ðÓþÑrpqÀ‹›ÆÁﱚ³BoyÔk芑‹‡–ëØ¡Ÿ?+™3T—©ç¨y÷f˜ý×Kp‘Xuø÷œë²±åÇÕ,vvvXµjZ9¼•J%Μ9ƒS§NáÔ©S¢)¼;wÆ[o½%(ûæ›o0iÒ$ÌŸ?_ }ÿý÷ö¡^½z¸pá‚‚„)=Μ9£ †úúúbÆ f?>K0¶R±”Êž¶]“1BðzÊÍÍÅ… pöìYM0T.—›”ÔÙÙÓ¦MŒLÌËËÃÕ«WqâÄ ?~‘‘‘U €Þ½{ F½ãï¿ÿƾ}ûpþüyMìííh´=777Q½èèhœ>}7nÜ@qq1œœœÐ³gÏr÷9$$: æææ"==]ógìuëêêŠÞ½{‹ÚˆEtt4¢££-¼­í†.X]¾  8uꢢ¢¹: k×®ÕÑÍJQž×ÙèÑ£‹éeeeáèÑ£8pà"""4ÁP“F5÷éÓÿÿìÂ2yyyHOOלû=z\ M›î SpÁ&"ª øÍÓ‚l%V}•*3ÕcÍšaûœ×0¢Sš{{ëmËN'€ “ɰþå—0®Gw½mwÀ¯/¿drÀÕS.Çú—_ÂÇ£FaTçNöóCçæÍñÒSObíŒéо½äRãsTä|RÍ&³?·º«Â›ÃFfƒ'^éÙgÀ'¸‘Þzmâ3¯Š\ª*R«EÛÖ)ÿTÒNÿ鈹Çg¢û”.š)ñRluη«·óϽ†NcÅyƒÒæàŸÁ ?Œ”hKº¿¾íaÞÉYûËhôœÑ AýZ£Û”ÎxᇑxãïWáì.–Ök ^EVêµa*™¬öŽø%Óh¿‡*kÄUçÎqõêUÌž=[0…¾ŒÔÈ¥?þ«W¯å+Ó·o_DDDà©§ž2©7ÆéÓ§ñÖ[o¡K—.šòàà`Ì›7‡Fݺu5å¾¾¾&µk ú£!Æž+}ûkó(þ2eAL}@OOOL›6 ...š2©ÏŠ2 4À¬Y³Ð³gOƒçU&“!00£F­ö­öÔ{C}º¯éÓ§££D.ú²ý-[¶Ä«¯¾*è‹¡û5j”Þx ¦L™"X´ÆÜ׊ ÆŒƒÁƒÃ××Wr±SÚ|â‰'0vìXÀÑÑQò1™ÒŽÔqæ<–dêë@7Uƒ¾º...˜:u*ºu릷-;;;Œ1C‡­¶ºý·Äõ§<¯3777Ìœ9SŸZ›££#ºté‚_|Qp 0ô\õéÓ£FBÓ¦M5ÇÈd24nÜO?ý4žzê)ÍÔ~‚ë‘®ò\ãRŸââb$$$ %%NNNhÚ´i…WŠÏÉÉArr2222PRR777¸¹¹ÁËË«Z‚999HIIAzz:lmmáëë OOÏr—rrr€ÌÌLÔ¯_Mš4)׊ðT3¨Õj¤§§#11yyypssCÆ ËõC‹5HOOGJJ ²³³áìì ???‹œ«üü|888®|ðæö„ ЬY³ ß1EEEøì³Ï4ÛÚ#Ie2.\Xé} ¢Úm×®]¸xñ"€Òöº3¬´Ygò+"wtD»ÆÑNÏ/ЦÈ/*Âë6bhÇŽèÓ&H4J³àáC|²S¼ØŠO%%ë'*{'{4ñ18j’J¹x:ÃÅÓMÂüÊÝFÜ?ñ8¿!ac;·½x„®2%û>/”äÞØ´TDµ…““BBBbÑvµ¡e.\¸ ¹Ý²eK‹Þ§ýÅýáÇ&cgg???øù•ÿz«ËÅÅÅàh®ªVÖK­îââ"šrLµ— <<”J%rssagg…B…BV­ZYt±7"¢ª’­¹““c°®Ñ€haá¿£{ŠŠŠø¶kèæ††ܪ»DTKØÈl héEKþPBTQ^^^â#‘•” e’Å…Åš}nÝðÌ{Ok¶->†äÈdƒíyµôBß7zWZ«ÓÃü‡(PÂÙÝ 2;®H–±gÏ|þùçz÷/X°ýû÷¯ÂÕ>jµiiipvvæÉ :pà’’’:uB```µõ¥¤¤W®\Arr24ñy$¢Ùˆ9}7ÜÂÝ3÷‘~?…9ÿþÈäÞ¤>¼ÝíµÌ–Rkòá‡âÚµkf÷î»ï"88XP'Nè=&!!ÁìûyÔ`ß¾}Ø´iþùçDEEiöùúú¢M›65j&L˜ðHç¢W(èÚµ«fÛßß¿ÂmFEEáÁƒ€&MšT[@4>>6l@nn®ä~OOÏZ‡J¥’ܧ/ Y'µZÝ»wãâÅ‹zë”””HD­áu¦V«ƒ‹/"..999šÇ,“Éàææ†æÍ›£wïÞ&Hííí1tèPMÀùþýû¸téR¥>"²^î¦Õdå±cFƒ¡ÖìÝßÇ¡«ú¿¸–¨THÊÊBRĈ¸‚~ÁÁxwèÔ‘ø'ƒèQ±}þn£ÁMk••˜ƒ¿4X'ý^Òïe òàMx·R`äâ!hæWE=¤êvðàAœ:uÊìã^|ñEQ@ÔËË AAA‚²ëׯW¨²+V`îÿ±wßaQ\kÀ_`Vª JQQQP±+¶h¬1ö(ÖKlI4EML3Å£1zcŠ)5ö»Á®±$,‘(*¢"M¥w–åþÁeîÎîlƒ¥Éû{ŸgÊ™³g†Ùu÷›s¾3w.222$÷ÇÆÆ"66‡Æòå˱fÍUp++†B¡¨vAAcê †Å=äªäääëyyyP*•zŽ0ÎîÝ»qëÖ-@·nÝеk×2×I•ëÊ•+zƒ¡ú”×}VUÄÄÄ`óæÍÈWëÜ¢N¥R!99ÉÉɸtéú÷ïoðÿKKK´iÓFX·±±a@”ˆÊ ¢f¶ùÏ¿*» UZ~i_‡…>ù\y4‡¨Ò=ŽIÆ£Ò9èP)¥{Vè’™„գŧ^Ký³ i1bFŒ!ÚÖ¾}{\¾|¹’ZTµ]¾|Yg0TSxx8ú÷ïÿý 4(ç–‘¹„……‰‚¡]ºtA›6mààà l³±±©Œ¦•ÉìÙ³Eë×®]ÃÎ;Ë\ïãÇ…ëõ¤ô¬éŽ;&,Ëår 2îîîBw X[[K[^÷YUñøñcÁPM*• ‡‚ÖÃH"¢Ê€¨eäæ"_â©ß„n]ÑÍ϶µj ÛÜärayòS=0°µø?†é«× PÇ‹'‘•¥¥Îó=†®M›b@`« nQù{ýXk›ƒ †-„z-<`iUÜóÆº¶øËöØïG!7#WXOMÃÚ Ë·±ÕD^f6LÝŠWͪ–=—¨ô°téR£ÊvêÔ©œ[S³Œ;cÆŒ¿¿?7nŒ‚‚\¹r¯¿þ:BCC;v,Μ9óDŸ’”ä0www 0 [CT± D9@‡ŽÆWb‹ª.ggg¡~ýúBÀøáÇ8ränß¾-”Û³g¼½½áì̇ÖDTùømÔŒb““µ¶Õ¶¶Æœþý%JÿŸ«ƒ\Õž´€µL&Ê­ù¤±²´Ä 6mлEšzxÀÕÁ9ùùØùw(¾;zT«ü¡°0D鉔|7Ek[›çZ¡ÃXýC/½Dë¶r[s6«JjØÉ]_ìŒú-ëÁµ‘ ,e–HŠzˆý Cuò–¨ìƒ°8$ßMkCæ!®I¼½½1hРÊnFáèèˆY³faîܹhÚ´©hŸL&C×®]qöìYtìØaÿñqþüyDFF¢E‹•Ñd2QIS¨W¯^%¶„¨â¥¤ˆ¿£yxxTRKª&kkkxxx OŸ>ZÿÅQ&Nœˆ;v¹¾U*®_¿ŽîÝ»Wts‰ˆ´0 jFÊÂB­m ÜÜ*¡%bEEEHËÉÁãÌL$gf¢ °Nvvp²³CýR>...p1aBÛV­Z¡U+ÃV $šü066¶Tí$"2·ÊTc¿ýŠUÇ ëRÃå#ââÐwñZÛw¾:NööåÖ¶´ìlüq#ǯ_ÇÅ;wtG·–ÉУy3Ìî×õ |ù8t5 _>Œµ\RÖ2zú7Ç#F`ò?!Q-_’•¥%ö¼ñ:j«åÕ™Ú³§Á¶÷iÑB+ š–¢¢"}‚]ÜrǾ:%Ú6øãgPÇ]Ž“+ÏàzÈ Ñ¾>s{¡ß›O Œ¦'d ä³£¸uú¶VÀ̽™›£ï¼^¨e[KG æµ÷ƒ¢œ¡Y³µÊ]z®¹ ÚæÑÜ“7N(×¶¥Æ¦!âXÂE âx”Îrõ<ÐzDKô˜ÕUïu+**ÂñåàÏÕç‘ùèÿŸu»¡ÇK]ÑòY|;ð'Ñ1Þm<1aõaÝÞÅÁ_‹s:j²q°A³§›âïMâIÇh÷Ú'ª(=¡C‡°oß>ìØ±C²LÇŽ1dȼóÎ;F !ŽŽÆ«¯¾Šƒж÷èÑ|ðêÖ­‹éÓ§(Îuw\í;JeÒ ~r¢ªb'OžDhh¨hH®L&CÓ¦MµrÙãÂ… ¸pá’5F,YZZÂÛÛ#FŒÐhºví8 Ú¦½pá®^½ªu\—.]ÐSâû]RR®_¿ŽëׯãÑ£GZû---áææ†Î;£}ûözÏíçŸFjj*`ذaðóóÓy!!!WWWL:Uo½eQÚëeii‰×_]gÞÉÿý7N:%ÚæãヱcÇ–¾Ñ¥ôûï¿ ½¼Û¶m‹~ýúáðáȈˆÐʕڡC<ûì³FF¯^½ŠS§NiõÄ, ò :´B{&¯ZµJt>š -[¶LëKKKÌ;·\Ó€!&&ááá—œäÌÚÚ … €···Qõž8q/^Ôú òóóÈ#°gÏ!xÙ«W¯ROgggkkk!ßhbbb©ê!"27DË %; ™j_|t‘*“/ћԜ¶üuëNŸ6X._©Äñk×q*ü–??uäÅYwú4~8~Bòø£ÿ^Czvî?~¬V–"jºÚlŒ%lm }Âe>ÊÒ>ž‘„]ó÷‰‚i%Ž/?…”ØTŒýn¤Î:o‰Äæ™;—™'¹?12 ‰‘Iˆ8…ñ?ý™¢l'a„Ôi’ÃäÕåeæiµÙJVºžd¦ØýÖ~£&xŠO@|x.mý/œ{Wí‡;…ù…ØñÆ\ÞþÖ¾‡·a×ü}H¾—¢u-JÓû²’µËÎ>N¥ª‹È¾üòKƒùLCCCŠ£GbÛ¶mzøŸ?ýû÷—œÄèÌ™3èׯ-Z$äë¬J4ƒ 6¬œ†TJ¥Û·oGT”öƒ'¥R‰7n --ÍèÙ¨³²²°cÇÄÄÄHîW©T¸{÷.V®\‰‘#Gê웓“# èI‘ÚŸ™™)YvãÆHOO—ÜWÒ®¤¤$ìß¿wîÜÁðáÃu•>|(SôÍxŸ••%ì/**ÒYÎJ{½€âs7$33S¨ ì®(iii¹¤§§ã·ß~õøSwñâE$&&âÅ_ÔYŸR©Ä¾}û„ «&•J…øøxüøãxæ™g ÎLn.)))z' *Ëß³,rrr°~ýz½eòóó‹5kÖ`À€èÒ¥‹Î²………ضm›ÎÏ ’ kFF† .Ë$a*•JôyÆü¡DTU0 J€B• ŸíÙ‹=s߀¥Fàñøõë’ÁPuÔ’e—Õù[·´¶5eΞéÈú{7]Þþž~µ‡d óŸÝÿbóŒíF½N|x¾êþ Þüëµ*1\½ºxxûN~}ƒ=£µïÈÒ’ÁPu§Vž1K;TJn‰ÖÚîîWþn"cµk×~~~ðññARRþüóOáÇè™3gЦMܹsvvÚâââ´~Ü K—.B@ >øàƒò?‘R¸pAÜã½sçΕԒªaÏž=¢@„¥¥%<==akk‹û÷ï#77qqqFÕ•ŸŸo¾ùF¨‘Édðòò‚ƒƒ>|(ôÆR©Tرcœœœàé©‚ÄÙÙõë×mKHH‚=ÖÖÖ’CúÝÝÝ ¶ÓÒÒNNNpssƒÒÒÒp÷î]¡îk×®!--Mo­ª)íõ²°°(uºŒª@=*—Ë¡P(––&ê|ÿþ}DGGÃ××W²Žýû÷kC=<²³³q÷î]³µ711Q4nÔ¨‘Ùê&"* DË@VŠ9%4ƒŽåÍM.‡—‹ ¼]]Ÿ‹Ñw¦ñÔ9)=._ÁÐöíDÛ4 5§GXwZ;HÒ;À¿ÂÚ@UCqÎ&©žž¡›/cðÇâ€\ANö½{P«¬!¿/:‚I¿Ž/]#dU«t_šK“3µ¬|:xÃÍ×Î^NH‰MEÔ‰›Z½uO¯:‡nÓƒD“<å¤åâä×Ò=ÔmltöØ-­_ŸÖªÓ¥3ƒÛ5ÐáÇš¨á«¯¾ª œŸŸ^{í5L˜0A+_baa!V¯^Y³f(^¼yófL›6M«ž¯¿þZ´¾dɼõÖ[ÂúíÛ·Ñ«W¯*™—­¨¨¿þú«°.—Ëáï_sÿOOOOǵkׄu{{{Ìš5 ryqn墢"ìܹSgï;M§NC1xð`Ñpì»wïbË–-B¹]»vaöìÙZ#oš4i‚&Mšˆ¶­^½Z¸¯Ú¶m‹šp¶€B¡@·nÝвeK­ Qnn.víÚ%fîß¿„„„j3qMy\¯êdøðáhÓ¦°­[· ëgÏž• ˆ¦¥¥‰R ØÚÚbÚ´i¢àñ7°mÛ6aýرc ,÷Ñbšéîß¿5kÖëÓ¦M+סñ†4iÒÝ»w—ìeŸœœŒõë× Ü3gΠ{÷îZï»ôôtÑõ·³³Ã´iÓD¹C8€‹/š­Ý—.‰Sé ”U4DË`R˜¨öÃ+ìþ}¼ôËZQ¿zõ°vÆtÑ6  T ÇMe-“ah»v×%ž ²þó>Ù½G´íLd¤( z9&÷Ôf-Ñ·eK|0b8¬,-ñóÉSF Ï7¤¨¨omÙª•ïÔÃÑ#;u*sýT=õÿ4ú½ù4T…*l™µaû®‰ö?º­}žþáOÉaö/n{~O7ª@…³?ý…ƒí¿r·ÏÞAãîå÷äzÂÏ£1þÇ`aýÜêóØ¿0DTfЇÐcVWÑ6 ËŠyˆâÞLnÓƒÐæ¹@ØÊµ'Ø÷îï8ûó_¢m1o”þ=nÕ(´y.¹Ø>g·Öß²4î]¼/Ù“xø’Á•D¦ÊwîÜ9ƒe¤òšÛÂ… ±xñbÿß[YYaæÌ™8~ü¸ctË–-ZÑÇ‹†ÞOŸ>] €Æc÷îÝèØ±£™Ï¢ìÖ¯_/ú›¼÷Þ{Õºw\YýñÇ¢õéÓ§ ÁP ¸·Ù¨Q£˜˜hð>MMMÅŸþ)¬ûûûã¹çžÓ*× AŒ?¿üò €â{êúõëhÙ²eYNÅ —^zIïD/¶¶¶5j–.]* §½zõjµ ˆÖdO?ý´( Í›7‡¿¿?nÜ(Îùž yì‰âŽ/¾ø¢VOZ 4HÈ—œ‘‘«W¯j½fMagg‡ è}?¹¸¸`ôèÑøùçŸ}¿sçŽVÐþ´Æo¶©S§jM¤4xð`ÄÇÇ‹z–VBB‚(¸êáá!ÙCˆ¨2ð×bXXXÀÊÒRø'ÕcÔR£Œ•¥e…C'tëŠãï¼ùƒž• †À@‰¡' ùaNݸ¡UÆÃÑ‹F„µL+KKÌêÓÍð¤ï»£Ç$g“ÿpäsÞ£–ª—Îè÷æÓ°°´€U-+<ýZ­2)÷Sµ¶ûé/­mc¿…f½›¿o­­ÐsvwMÖè æ™‹…¥,e–¢Ze¬´ËTD@tÌ·ÏaÞÙ9šÔQ2 íÆ´ÑÚ¦9YUÄQíœT½^í¶£ZÃÂÒÖvÖ·jë×)S{Ó3°áÅ­ZÛ4Gó>ÒnU£þ¿ïׯŸ°,•ÏM3x0sæLÉz:tè€ÀÀ@[Y¾ÂÃÃ1eÊaÝÏϯ¾új%¶¨òÝPû^ååå%9É‘………Þü%4óÅ>\gYQ¯²;w¬Œ™õÚÚÚ>>>Âúc‰‡ðTµXZZêÌ驞ŸV3ÿi‰ÈÈÿç*¯_¿>êÖ­+Y®M›6¢ÏК>›1ï'OOOÑ5“Ê9«~===%Ó:0KÞÖ¼¼£~Ô?©ŠŠŠDûV­Zé,Û²eK!7¬.III²¥¥¥ð·—šL¨¨¨H”ÃÏ=¿L‘››‹ÔÔT¤¦¦"==…j“‹ªOÊ”—gÞ”*ÕY×®]µî釕ÉÉÉIg;êÔ?èÌÍÍ…íÿ~“ÅylÕS<èË Z«V-4mÚT ¦jüF -s´wïÞFÏÈ^•dff"-- ©©©ÈÈȽç---…÷ºæûIó3HßC´²¦6)**ÂÖ­[E“  <بœÃDD¥JD³óóËd€è¤$! z:")zf¦4¶MÕ! z#.‹÷íGT|¼IÇejÌž/ñã,PíI¾°­ _&] ÊCZÛ‡µo{I''ÓåçàÊoeû¡ìÞL!÷ÂC"™dàý†~>Ho@Ô±žø‹µŽ^‹ê’ïiiwk™öÇ]½íayÂâPTT ³_³ª.üPB>=jòß5#ñÿ?fUJ•VÒÆÁ®´ƒÙ^mK7dª §ëžßˆøpñp<7{ÌØ5ErÖ{ªêÖ­[¥†ÇÇÇã›o¾ÁâÅ‹*/5ƒ¼úÌáM›6Õ{¼æ/•%;;C‡õx=pàš5kV‰­ª|š_ͼ²êlllD )êQ•J% /6FE¤€ØØXœ8qÑF~Ÿ/ïÙº«[[[Q0±ªêÕ\BóG~~¾è4úè{h¾–f@ôþýûeî霒’Rm¢EEE¸~ý:Nœ8!ÙóSŠæûI}Â(@ÿõ—Éd?ƒôÙ³gèïÓ¾}{tèÐAÏDD¯JD©tî<|ˆi?¯ÖÊÅY‰Q7­m¥ ŸŠÂG»vim(²©æ*™L©„1Éô“%z­êš]·±Þÿ0ÌHÊDw¹Ž#žL×Cn`ý ›Kul~v¾°œ‘”©µ_×µ¬íhú½ÂüBl|qîœÏ~êàf—öOƒ‹³Éu•‡?þø½zõ*s=ê3ý x .T„‚‚Œ;V”7tíÚµ4hP%¶ªjÐ èØÛëxS»vmQï*MRtcUDàñèÑ£FåôU§Þs”ª&;;»R«ùÐìQªI}~~> kdâÂÂBüòË/&÷ìÖ|?i^õüÅR¬­­E=zuôèQÑÄMM›6ÅàÁƒM®‡ˆ¨¼1 úúOÈ!½ÁPG;;Èmmaia!9a’:+‰ügyÿK|¯Njx–!Wbb0“v¦OËøè9æ—¡Ò‘ šZXé¤JåðT)kVU¡ ¿ÍÝ«s¿ƒ œ<QÛÑ9i¹z{ZÕÒ¾ž%Ãí5™ú±¡*Taû«»pãh¤h»ƒ fî™ÊYå©Êˆ‹‹Ã!â‡zƒ ¨Q£àååWWWáGýéÓ§1gÎu©Ïh¬”øÿW]Eä(×G¥Raúô颡ދ/ÆäÉ“+¯QU˜¡ïNúþžšCà›4i‚ž=USÞ3e_¿~]+êïï&Mš N:¢ ÚÉ“'qëÖ­rmU šxCº5ßêï™®]»ÂϯlùÂT“´\Ce2Úµk‡úõëÃÑÑÖjS6mÚ¤3«æõ4ô`¤4ÿ§üù矢÷~ýúõ1vìX£:5U´*­eeUæáéîj½%ÜõæÏ4¶MÁZ&CN¾8ˆ`ÌSóœü|\¸}[k{mkk|< ]š4þs+T©ÐíãEzëótvFšÆªñ©©ðÒ˜¨éq¦v¯0}nÄÅaöú_µ¶÷ò÷Ç'£Fñ?Ír`%³,ó$6ê½ï\|œ‘›aúScÍ6™[zÚ瘯»Mêí^Ðu<ŠŸ˜›ûš•'«ZÚŸMÊ<ãzÚÄü}O+ï*4ïã‡A €{s…¨ì÷ƒ~ÖY—½›v§´¸t¨”*­àsZœöµ×¥¨¨{Þ> •ÂÀÆÁ¯ü>îÍ:Ž$ªx[·nõÞûý÷ß1pà@ɲê³ïJQŸ'66VoÙ‡ßÈrðÆo`ýúõÂú¼yóðöÛoWb‹ªÍ¼†z^éëjaa¹\.ÜgÖÖÖUjè¯z@D&“ᥗ^‚«««dÙÒ5Ý4ž¢J ‡×TßÙYkæ÷ÃaÿjÍ*8ì_ƒu•¸óð!f®ùE«k/|>f4g”/'¶ulñÞÕ7ÍVß”ÍÏ›­.srm €¼%ªB,­Ä¹ä{)ÈËÿxro¦Ê™ûš•'Û:ÚùU5'œÒE*ÍLX=Z+mTY………d‚È“7áßOœ?ðßý×j„|rTk,¼|p<ü™ Ÿ*†±Áõ\Ž“'OÖ  ÏöݨQ#a9""*•Jg¯õ ˜*Ú|€•+W ë/¾ø"¾üòËR×÷öÛo‹ÒÅ“¬¬_¿¾Ú>4Õžª™ÏOR©4Ø{«nݺB@C_]­°°qqqÂz¿~ýtCé™°5ÕªUKôè{¦¤”n²Gõ{ªªä1U©TZÁ-+++°ê@3ÿ¨¡ûV}¿¡áõÕAiî³{÷î‰ÊŽ3Fç=——§w$fš}ï½ÜÜ\“Þ ×¯_Ǿ}û„õ:uê`Ú´i¢Þ«DDUM•ˆÖdŠ:u§ñ¥îJL +ô÷‚’Î65½vÍ`;ÖÕ‚rõ*&vï†nÅûR³²ðëٳ뀸”Lýégäk´³góæ †’YÔvª Q 3-.Q§n¡yñC‹›/k_]{ZÛYkwæ£,$ßK1ØKU™«ý¹áàf¯ €ë Ïèªð««=ùŸÓhÒõl‹¿Ä?ø7Þè «Ž¯ø§¾9#ÚV •š‹Èœ¼½½qùrñgEBB‚ÒÐ*§oßÂÂBì’È£­N}HgFFN:…Þ½{k•S©TذaƒQí3·¯¾ú Ÿ|ò‰°>zôhüðÃe \îÞ½[4)S‰µk×VÛÞF–––°µµz]EFFêœd¤dfm}êÖ­+LV‡ììì2åw4Íáºúzñ%''ÄTϧª/ˆfì{T“z°­$Yš@Žú1º†-ë?þÀü!Úæî^z©LõV¦’^ž%A»ððpï•J…›7o ëš½«£ÒÜg™£ðêÖ­«³lx¸þïhš=Ë/_¾ŒîÝ»K– 3~RÑ[·naÇŽº¦OŸ^%>ˆˆô©ÜdS¤“»ÄÄ??¡Õ[SSC7ézǯ‹{b%gfbÝé3’eÕ oß^k[¡J…É?þ„-þ…ÿ~øQ«7«”ì¼vvvxÿý÷±`ÁÀÞ½{1kÖ,|÷ÝwBÐñÂ… =z´ÉçVVÛ¶mÃôéÓ…õ   ᇱ¾><;^Ûmr;,,,0ôógñãð_L>–¨ª9r$„žœsçÎŇ~ˆ-Z?èÆ—_~YtŒzþÌ–-[bîܹhÕª’’’pþüyìÞmü{kæÌ™øê«¯”TüÀã§Ÿ~ÂO?ý„   ¤§§ìeZ^¾úê+ÑúùóçÖ:lØ0ìÙ³§œZUµ¹¹¹Á××W4Ôý믿†¿¿?¬¬¬+šMÚgŸ}7nÜ‚gÏžÅåË—áëë gggXXXàáLj‹‹Cš¹ãÍ¥M›68s¦øÿ£¬¬,,[¶ ;v„““=z„¨¨(“ÚÓ¹sgüõ×_ÂúÎ;qåʸ»»#99·nÝ*sÏ×þýû 9³²²°råJØÛÛÃÆæÿécf̘! ìj ıcÿÕ°{÷n9r...BÐÛÂÂcÇŽ­±½¨=<2ªQyâù*ÊÒŸõ5Öä=à£'y} ©¼¢R<±ãÕ9Z3Ë«[8b8{oR•Ò}F úh€Qeml0uëDøt¨:3ô–†c½:µbx©Ž¾d°dÎPMÆ^£ÆÝáÕc/ÁAbÖyàÿ×\“…ÿ[¢ªE&“á—_~B-‡wFFΟ?sçÎáܹsZCx;wî¬5»úòåË1eÊ,X°@ ýðà ¶ÁÑÑ/^D@€8¥Çùóç…`¨——6oÞlòùU†ò²]Õ9Rt?eeeáâÅ‹¸pá‚ •ËåFåß³··ÇŒ3Dèììl\»v gΜÁéÓ§qãÆ †ÀÓO?-êõ¦T*ñ×_!$$¡¡¡B{¬­­áïïo°>'''­r·o߯Ÿþ‰ˆˆ(•JØÙÙ¡G¥nsÛ¶má§1iVV’““…†îÝ:uêàé§ŸÖªãþýû¸}û6nß¾m–àmu÷Üsωf—ÏÍÍEXXÎ;‡¨¨(Q­M›6èÒ¥Ke4³\”æ>=z´h2½´´4œ:u ‡FXX˜ õôô4ªWsïÞ½ñÔÿF–ÈÎÎFrr²pí»wï®w24"¢'yš‘•Ĭ¯RیաQ#ìyãuŒìÔÝÝuÖ%Ó XZZbãË/ab÷n:ëîæç‡M/¿dtÀÕM.ÇÆ—_ÂgÁÁîÜ >>èܸ1^êÛëgÍÄÀÖ­%{:¨=í,˵P­{î‘a–2íûCsVxSXXZ ç+ÝñêÑYz‡M·è7Ï¿¦5áRE‘š-ÚªVé‡uz¾=æžžnÓ‚„!ñR¬4®ww9üý::MÐÎ 0‡~ö,Æ­%Q—t{½Z×Ǽ³s0áçÑè1«+4G×i1nÕ(¼ù×k°wÑ–:zˆg‘•º/ŒeiÅÏŒš@ý=T^=®:wîŒk×®áÕW_ ¡/!Õsé³Ï>ÃÚµkuæQëׯÂÂÂзo_£Úàíí?ÿüo¿ý6‚‚‚„í˜7oNœ8Úµk Û½¼¼Œª·,J;{°1']ež„ï%AL]@777̘1Â6©ÿ+Jxxx`Μ9èÑ£‡Þkkii kÍö­‹ú°V}mz­™3g¢½D.ú’ýM›6Åk¯½&j‹¾×Ö9B¡À´iÓD“Ö˜z¯XXX`üøñ:t(¼¼¼$ïocêìÙ³'&L˜???ØÚÚJž“1õHgÊßÀœŒ½4‡Aë*ëàà€éÓ§£k×®:ë’Éd9r$†^ië5ÛoŽÏŸÒÜgNNN˜={¶(?µ:[[[aêÔ©¢Ï}«Þ½{#88 6ޱ´´„··7ú÷ï¾}û Cûˆ>Œ©Ÿˆ¨:°(2{ÅŠÂSÜ·ß~[ï0ªz2rsóð!î<|ˆe!»+àéYªž§úÜNLÄ„ïW‰¶)êÔÁ¾ysÍú:D¥•ŸÄȇx“ K+ ¸7SÀÍ×µLÁÇ'Uæ£,<¾óÉwS`em…zpóu……¥y¡›/k Éïõj<»°¿Y_‡¨2egg#22QQQ(**‚¿¿?Z´hQæàmÉd<êAÐï¾û³gÏ 0‡*Ók~[¶lͯxî¹çD9.uQ*•ˆ‹‹CRRìììаaÃ2ÏÌœ™™‰ÄÄD¤¤¤ °°NNNprrBݺu+%€‘™™‰¤¤$$''ÃÊÊ ^^^pss+up)33qqqHMM…³³34hPêà>ÙÙÙprrB½zõ8)ÉÉÉHJJBzz:ìííáããc–k•““Ñg„ú°öI“&¡Q£Fe~CòóóñÅ_ëê½…---ñÁ”{ˆ¨zÛ¿?.]*žkbôèÑZ#¬ÔÕÌä55ˆÜÖ­¼½ÑJÇEcääçcþæ-Þ¾=z·Ðêé™[P€Ï÷iO¶âYNÉú‰JÃÚÎÞm=õöš¤bnöpp³GƒŽ>¥®#öŸÝ|'´‡WkíºI™ùäˆÖvoãRyUvvvhÛ¶-Ú¶mkÖzÕ¡%.^¼(,7mÚÔ¬¯G†©ÿp/((0ê™Løø”þóV“ƒƒƒdo®ÊRÒsÍîàà 5䘪/ ¸ººrx¶‘\\\ÊeB4ÍÿS>|¨õºA¥RÔˆ¨¬%ƒò”J\ºs—îÜÁ'{dhíã/¸ÉåHJOÇñë×µfµ€Ž¾åÿ‘ˆª¦Œ‡™økíßøkíߨàï¶žpöq‚µ½5’cRpnõyÉãtªÞy\‰ÊË£Gàææ¦sLLŒh¶_õaõT>|}}uþp×÷·""ªLJ¥’ÖJœ8qBX¶µµ¥£(O2™ ~~~Ν½DD¥Á€(™$_©Dht4Bÿ73¤.¶¶x¾›î¦DTsć' ><Á`¹NÚ£^€G´ˆ¨úyöÙg‘——‡3f`ذaðôô„…… qúôi¼ð BÙÀÀ@Œ;¶[[3tîÜ;w®ìf™$** Û·o‡ŸŸ:vì(J;‘••…ܸqC(ÿÌ3ÏTXþf™L†ñãÇWÈk1 JåbáˆáfÏSJDO.7{ x׸Éeˆjª°°0Ìž=[Èêç燨¨(­rË—/¯´IHˆˆ¨zˆŠŠþ±¶¶†J¥ÒšáÞÕÕ­[·®Œæ•;F¬È +KKÔ¶¶–œE^SÛ† ñöÁhÀ¡bD5Zí:¶°q°A^fžÁ²}æöBÏÙÝa+·©€–=94ƒ¡~~~X»v­Þ™›‰ˆˆ4åKüÎkÛ¶-Xa½C‰ˆ*šÁ€¨ú‡#×Lr[[œ|ï]ħ¦âJÌ]Ä¥¦ 5+)ÙYp°±…—‹3¼]]ÑÀÍ êÖ­ìæQаs,ºýÞ~„Wã‘”‰¬”läeæÁÁÕÎÞÎpöv‚¯.Üì+»¹DUÞÁƒñ×_áôéÓ¸uëâââ––†¦M›¢E‹ð÷÷ÇèÑ£Ë|gΜtíÚ•Q ;wîĉ' 6d@”ˆžx2ODDDÕVZZ^yå´nÝ6lC ##—/_ÆâÅ‹ñÔSO!88¸’ZúäÛºu+Z´h-Z`ÆŒ•Ý""ª@7oÞþhß¾=”Jee7‰ˆH/ö%""¢j©¨¨S¦LÁîÝ»µöyyy ½ ÕåææVDÓj¤‡"<<€x†O""zòeff ÿÅékˆˆª2DŸ0í6Ä/3¦‹¶-;ø;Â<¨¤•U«V‰‚¡íÚµÃâŋѻwoÈd2!..ÿüó–/_. ¤šËßß7nX[[WrkˆˆªŽ… bêÔ©P.)KˆˆªDŸ0µ­­àé)ÚæêàPI­!""*?kÖ¬–ðÇÀAíÿ< xzzÂÓÓƒ Âùó絆ÔSÍâêêŠ &Tv3ˆˆªœ^½zUvˆˆ*¢å(· ÿÞ¿G;;øÖ­ ™••Éudåå!*!EEEðU(àdäl¹)>5÷?†ýú¨S»ve7‡ˆˆj€ääd\¾|YXÿøãEÁP)AAA 2ùµT*"""žž8::š\P<“ý­[· “ÉмysÔæÿ™F‹Ett4š4i‚úU`RÈììlÜ¿ ¨]»6ÜÝÝ¡P(*õoš••…+W®ÀÏÏ …B´/22©©©hÕªìLü.™––†7nÀÆÆ¦L÷mAAâââðàÁ ׬N:&×¥R©””„ØØXdee¡nݺP(puu…………Iu¥¦¦"!!‰‰‰pqqŸŸlllLnS‰{÷îáîÝ»hÙ²%œK]O‰¼¼|¸ÖW C`` Î;§7°Šçž{Nrr§’×xï½÷püøqlܸõêÕö¹¹¹ ¨˜=sæŒp¼1[SåææjÊ4éÚŸžžn°þôôt<ûì³ ÕÚ—””„àà`¬\¹sæÌÑ[Ïõë×%ë0•J¥Â¸qã°}ûv½åŽ=Š£GbðàÁhРA™_W—¬¬,áúJ]çsçÎaàÀˆŽŽÖ ^½ùæ› Dÿþý%ëÞ·ožþyÉ{(¾o§M›†'N`ÕªUz{x~ÿý÷xå•WôžKXXÂÂÂиqc½é BCCÑ©S'½u%%%á›o¾Ann.~úé'É2'NœÀàÁƒõÖŽððpìß¿ûöíCçÎu–MHHÀСC%ï³ððp¼þúëÈÏÏǹsç„íº®mÉ1ãÆÓ™Þ#66_~ù%>Œ;w–Ëà Mæ¼f©©©Â=+“ɰmÛ6Œ;V²ìîÝ»qõêU„††ÂÅÅE²L^^^~ùeüòË/Zû’’’ðÃ?àþýû•2¡žR©Ä’%Kðþûïë,sîÜ9tëÖ K–,Áüùóa©ñ»nüøñX±b…0YѨQ£põêUÉ—/_½ß&Ož, Š?cõ}6>0bþ‰7nèüÿ Ðý@bb¢Áº‰ˆ*¢f¶ýü½û/ܾ¨øxø©ýè)±ùÏ?±òð£_kÝéÓÈÎÏÃÜMngY¤dea½ŽÞ%VŸ<…¦èÙ¼yµŠˆˆjÍÞUï¾û.ºv튺u뚥þ>}úär9ºwï¹\ŽS§N‰‚K‹-¡C‡$‹‹Ó Þøùù¡sçÎÈËËÕuâÄ <óÌ3¸råŠðc¸K—.Âq—/_FVVìíínÿ_ý%,?õÔSFg, 4H´íÆ¢ÀšûK¸»»¬¿db ¸•¯¯/®^½* ½÷Þ{˜2eŠÞT ¢^Kñññ¹R~üñGQ0T.—cäÈ‘ðññAFF¢¢¢*Ùs®"( Œ?§OŸz¯ž?@ñdc={öĦM›„öíÙ³G2 ºvíZѵНÛ¶m‘ššŠS§N Í›7C©TbÛ¶m’mºzõªV0tذaB¯±Û·oãÒ¥KFý=òòò´rAAAèÚµ+är9bbb^ªà·ŸŸüýýѸqcdggãßÿ‚—III ÂÅ‹%K*•  Ý— …}ûö;v IIIxë­·Œj˵k×´`øùù¡{÷îÉd¸xñ¢ð÷ CïÞ½ir„²*Ë5S%C½¼¼Ð¥KäææâÔ©SBÐ8::?ÿü3,X YÇ[o½% †ÊårôíÛŽŽŽB烚ã´M6uêTlذA´màÀhÖ¬îܹƒ'Nç¹`ÁÔ©S³fÍ•·³³Ão¿ý&¼o¢££1gά]»VT.##ÁÁÁºŸŸ¾ýö[msttD·nÝDÛÔƒöÆxöÙgEÓ¤¤$Ñ{pÀ€’)Lz"¢ò€h%Øzþ<>1B´-5;ß=&Y¾©‡jYYáVb¢VÏÓíç/`LçÎðÔñÔ´2­ýã4¢DDT.ìììЭ[7á\xx87nŒ·Þz C‡E```™_càÀØ´i“0\3++ 'Nf¶?|ø0nܸ!9,PsˆæÇŒ>ø@XÏÎÎÆøñã…aÄaaaØ»w/FüïûfPäêÕ«F 3Š{%:uJX7ö8S¸ººâÀ¢mß|ó0¶GZûMåëë‹}ûö¡E‹€¢¢"|ñÅx÷Ýw¶lÙ‚éÓ§ë¬céÒ¥¢õ³gÏ¢G&·E=ø„#GŽ@.—‹Êäççc÷îÝøî»ïÌ’OÑ{÷îEPP233Q¿~}!È¢P(„ÉÆFŒ!Ç÷ïßï¿ÿ^TGJJŠh«——¶nÝ* šäååaáÂ…øòË/Ç5kž~úi­6©Jår9þþûo4—ø^xöìY¬\¹NNN:ÏïäÉ“¢`óöíÛEÁŸ·nݪU«´þ6šär9æÌ™ƒéÓ§£aÆZûÿüóO<óÌ3Âu\¾|96mÚ¤U.$$D 1b6oÞ [[[Åïóçž{Nk(¸.sçέ¯^½S§NåEݸq#&N,m‹eË–‰>[Ê‹¹®™”wß}‹-‚Õÿæ[¸sçžyæaøûòåË1þ|a‰„„¬\¹RXÀÉ“'…º*• ¯½öšÞÀ`y9{ö¬(Ú¯_?¬^½>>>¶„„Lž}pâÄ £ÏñÇ­_¹ríÚý?mÚ¾}û`mmmt}DD­üÆZ×`Ãڷǹ?À©÷ßC //­ý1im[yø°Ö0yWWìû6¼4 ¿Ì˜ŽCo½‰.Ãb¾Ø_¶¥5«Oœý`!޾½m%¾EÄÅáv%õ” "¢'Ÿf@'## .DëÖ­áîîŽ1cÆ`ëÖ­F ÑÖ¤P(ðÛo¿‰r×ÙÛÛkå.¼víšÖ±qqqX¾|¹°>yòd­€…vîÜ ???aÛûï¿Õÿ¾ Èd2 0@ØgJÏ·’¡•%Ú´icô±UÉÎ;…`(XXX`Á‚¢k¦kX±9)•JÑõŸ;w®dÀÍÚÚcÆŒÁéÓ§ æÂ4·Ž;(ïÝ»·Ðƒ¶¤ PH+**Õñé§ŸŠ†rŸûì3Q°³Q£F¢4!III’ì¿ùæÑú‘#GDŠYZZbåÊ•>{zaa¡èáB`` öíÛ' †€‡‡¶oß.´9##Ë–-“¬óùçŸåí8q"nÞ¼  ø^Y·n°oíÚµ¢ÏN""’Æ€¨™Õ¶¶Æ‚!ƒaei ÛZµ0§?­2I?Ì U*üþÏU­rËŸŸwµ™líllðið(­œ¡—cbÌÓxôlÞ“Ÿê™•äµkãë‰ÏÃZbHÄŸQ7+¼mDDT3”üÈ” 6$%%aûöí7n1yòd“†3¿ñÆ’–4hÐ@Ô&..N«ŒæD=/½ô’äkÈd2¼üòËÂzxx8îÞ½+¬«÷d,þ\âÈ‘#èÓ§úôé£ÕõâÅ‹¢:Ô4ÕE¿~ý$'±´´zÑÀýû÷+²YŠ'ÛªJDÁ$õÜ¥êù%mmmEÁ¢,µI1•J¥(ˆÿùçŸëôG=xùòeɇêmÒ¼M¥ŒŽŽÆ£GÚ Œ%“ÉŒšŒH³×«fNŸ¸8ÑyÍ™3Grx°f̘aðõÔðôë×Og^M ø3Eýs¯¼ïIs]3)ºêÏ<óŒh=!!A«ÌÎ;…åaÆÁÓÓS«Œ……fΜi°ætáÂQÿûï¿×ù9\§NQðW_Í•+WІ›;ׯ_Çøñã…m“&MÒ;Yý_•2Ÿ“Ÿ·¶l…Jã ¶)¼\\ðÎÐâY8ïÛØääR×eia¥ãÆ¢¶ž®ÿ½`©ö¥ÍWí‹g‰ôœÑz|jªVGG8ÚÙ!ãeK®@QQ»»#*>^([¨RáQFÜŒxúl.c»‰Ö­e2 m×;ÿþ[´=1-­ÂÚDDD5Ï!C‰Ÿþß}÷Πçúõë‚;w5dZ½7&oooáÇ®Ôë©5 …Þ‰`†Ž×_]XE£Fˆ‡ºkþHÞ¾}»°-&&óæÍö©i*ºg”¹èæ¯>ù”T@ÚÜd2üüü„á»ßÿ=zôèjM€R4'5RÏ'©ÄrppîÙŒŒ ¡÷hŒÆÃõ„„lÚ´I«i •ƨ¦k×®iýÍš7o.ôx¼|ù2V¬X™3g–*ߥz¯` 8ˆöù矣~ýú&×¥®°° xðàÀ»ï¾‹Ë—/ãܹsøã?„üœ%’’’0hРܽ{W4^ŠTO£êÇJÍ­\24t=IïÝ»',wèÐAXNJJB\\êׯ¢¢"ìß¿_Ø[·n =úþøãaŸúäLÕ‰—DÊ¡ê×?­‚¼N™2ï¼ó€â¿ùàÁƒ!—ËñÌ3Ïà©§žBÛ¶mÑ©S'É FyÓ 0jÙÖµO½‡¨æÄFêC²qûöm­€è˜1cDCšç΋¹sç¢_¿~èÙ³'Úµk‡®]»ÂÑÑQ³:-½{÷†\.ÞoëׯÇúõëѱcG<ýôÓèØ±#‚‚‚ôÞ7ê²³³±aÃ|úé§zgÉV§V¯Úïec÷ÅCõ‡+çÎ3i‚Í\y0Ç5Ó$—ËõÈ …(€¯N3M€¾à¸½½½èþ)o%CÙKL™2Ťãïß¿___É}øõ×_ñ /híÛ¹s§ÞI戈H¬òk?alÄPͼ?RîHä5Õƒä”2×a,k™L²G„‹ÄÀ‰¥ÈÛFDDT2™ :uÂo¼={ö ++K”Ÿ (þQ½dɃué›àÅ;wîˆz°Y[[‹†¾ª÷.•Ë增ª%Ãb¯]»¦Õ3õرâ‰SSSEÁ‘Î;—â *Ÿ¡€uE›;w®VŽËŒŒ ìØ±sæÌA÷îÝáêêŠ×^{­Â‚.%4ƒ°ê“˜hîSˆ ËšSiö Šg§ÿä“O´¶=zï¿ÿ>ž}öY899aøðá¸uë–Þú±}ûv­í¡¡¡Xºt)‚ƒƒáííN: ï]âããѬY3Ìš5ËèÀ­|˜êé ö\]]õÖ­6Uvvv™Ž7Ä\×L“¡@±>šÃñ ]cooïR¿–©"##Ët|nn®Þý'N嘊ÓXhNÆGDDúUé¢5…æÌñ¥Q ö¥¶²H Ñœ(Šˆˆ¨¢ØÙÙ!88½{÷F£F„@UHHˆhòs+((–5gE–R»vm¡mJï½zõ&ô Å!CpüøqÑþS§Ná÷ßǬY³DÃnàââR¦s¡bÖÖÖØ¿?vî܉5kÖHΞ‘‘•+WâСCøûï¿êùXU¨ß³@qEcrF–Ð5ÑÎû￾}ûâÇMú¢nï޽ػw/BCCE½¢5=óÌ3ˆ‰‰ÁªU«°víZÉt¡¡¡èׯ~üñGɼEEE6l˜(¨ˆéÓ§£Q£FpwwÊ™™™Z“J©S6 ‚ê)©yýW®\‰îÝ»ë=Fæ¬äædÎkfîv©3t¥ò»–õ@°ŸŸ¶nÝjÒñ†FܼySë3hóæÍxã7J•’‚ˆ¨¦ªÒÑZVVz‡§C}R"wGGäj|á(M›Ì­›öM+KK45a†ROÝ=)¬kiÿ™•e æ+•P‰r¥Ú¹Q@¡‘׊ˆˆ¨¢¹ººâwÞÁ»ï¾  xfr•JUnùKr€†'Q*•¢ÀŽæ,ÄêÃK†Ð:t0räHôîݧNÂþýû‘››+š ½wïÞ¥? Òbaaàà`#++ W¯^Å™3g°ÿ~Ñðæ¨¨(,^¼¸\ƒîæ¦9Rƒ ô¦0EPP‚‚‚ðóÏ?#<<çÏŸÇ¡C‡°{÷nQ¹—_~.\Ð;ºªAƒøâ‹/°xñbܹs—.]ÂÑ£G±uëVQPræÌ™2dˆVÄ‹/ŠÞ#ï¾û.>ûì3É×2ÔËO³ÇaFF†ÎÙä ͯ9|8:::Ë9rD´®Ùë¬^½z¢`î?þ(,÷ë×Mš4~|>|X”?1((¨Tí/-õü”?®Ð×®l½zõŠ+„õ¨¨(QŽÎªNsÈ»T ÂÜ|}}±aÃÑ6ÍÙîåèèˆüQ$»}û¶V9õ™ÊÛ¶m«·—øô¾¦f@tÇŽ:ËîܹSo]€x¶õ={ö,_QÌyÍÌÉÊÊJôÙ(•Æ¢„zš‘Š °;sæŒYêݲe ~øáaýÛo¿ÅêÕ«Eÿ‰'"<<Ü,¯g*[É„SË0¹nhh(¶nݪõ/!!¡Œ­$"ú?D«k™ ~IÅçüºQ:>ô£âã±`ËV ùj9~=sVoýѳQQøýŸ«óíèòû?WqðŸCþö2%€·n ==‘9|ôÑG’AMÙÙÙX¿~½°®>QQyèÔ©“h}íÚµ:Ë~ÿý÷²B¡ÌÅøôÓO Ë ,PœÃ¯¤ßðáÃK–,zA骫<©sÃÃÃË}¢—ªF3_ly¥d(¶¶¶¢ Êûï¿otP;//¯Ô¯«yÍÊ’çQ³.Í ¥ÀÝÝ]XÖ÷ÙqçÎ|óÍ7z_ÏÕÕC† Ö¿ÿþ{É^ˆ>õ\ÕeìØ±Âò‰' NU¢,×ßæ¼fæ6xð`ayݺuHKK“,gÌõ7§N:‰‚óï¼óŽQÇ)•J­<Ò%"##1~üxa}È!xùå—?(óòòö•¤õ¨hêm šàˆ¨*ª>ßÔžpŽ®µ-.%/¬ú£W~ƒù›6ãí­Û0þ»ïñÔ'Ÿâ…~Äzzœ¨kߨ¡äöE»w£ëÇ‹ðôgŸ ÿæ¬ÿÕè6²{º}¼=>ùǯ]×Ú_ßÙmÕ† ™ÓÇŒ&Mš`Ê”):s×Ý¿ãÇõ˜éÙ³g¹¶«Y³f¢!‹K—.ÕšTC¥RaÞ¼y¢Ü|‹-’ âHM®RŠ'›ÑÔ·oßÒ4½L4{·.Z´HçûêäñãÇhÖ¬–/_®3ä£GDC‰{÷î­7fUôå—_ŠÖˆë×µ¿ßųÊoÚ´ ]ºtÁ«¯¾*Y¦ÿþ˜?>nܸ!¹_©Tâ½÷ÞmkÙ²¥dÙ>øãÆÃ©S§t>ÌÿöÛoECÍÕÓM”hÑ¢…°.9ÑSdd¤(ЦOI^b x˜{Ÿ>}D÷HRR’ÑïÅ3f 00PXŸ0a‚ΗEEE8yò$F­s˜¾¹˜ûš™Ók¯½&ZŸ0ar4æ4øöÛoñÛo¿Ud³`gg‡ï¾ûNX?wî&OžŒd£ÿ’’’°lÙ24jÔH²§qvv6ž{î9a]¡Pà—_~>cœ±mÛ6axx8fÏžm®Ó1š\.åÑýðÑ’’Ráí "2V•Î!Z“4vwÇÈNñÛß¡Zûî=~Œ{ezV·NôkÕGÿ½&¹?Gm&ÄDOVuÑ7‹üä§z˜TQi¬[·ëÖ­ƒ——Z·n-Z@©TâöíÛØ»w¯¨l@@æÏŸ_îmz÷Ýw±qãFa}ܸqؾ};Ú¶m •J…£GŠ&âQ(˜4i’d]RCß  ,«O¼T¢GŠÿ?Øßß;v‚¼K–,ÁÚµkѾ}{Ñ,Ø ,YÊËÛo¿­ÕKUsH¶T0¯S§N¢€vAA¢¢¢0oÞ<Ì›7C† A‹-дiSXZZâÆXµj•¨wàôéæÉ_‘4h€O?ýï¿ÿ>€â!«-[¶ÄèѣѢE 8;;#!!7nÜÀ±cÇ„ómÕª•d}wïÞÅÑ£GñÕW_¡[·nhß¾=üüüàèèˆû÷ïcõêÕ¢üгfÍÒ9Cvjjª0dÖ××}úôŸŸ<==ñèÑ#ìÚµ §NÊûúúJ¾/ºwï…B!N§L™‚ôíÛ¸|ù²I½ ƒ‚‚0hÐ þºySg™>-[`Z.$""¢ò‹ØØX!8¡I.—cëÖ­:ƒ.æäïï-[¶`ܸq¶ݻwkͬ ÿ¨ß±c‡Vþµ~~~¢ Wär¹hX¾ ‚ƒƒE?p»téb®S1š¥¥%V®\)zí¤¤$„„„ˆÊ?¾B¢%?Êõ‘â;vìX½“’ìß¿_oeöìÙ¢áÏÕÉ‚ `kk+zh°}ûö2×{îÜ9ÑM;vIJeËŒª+::ZïD5r¹”LYàää„uëÖáÙgŸ¶mß¾]òÕƒÃúìØ±S§NõW,Åõë×Ï`]=zôÀ0uêT!yâÄ !¨VÊãš™ÓÊ•+'\£ððp­šÈÍÍ­ð!Ü;wîÄܹs…^µøå—_LªcãÆ¢€ó|€^½zI–]°`Ž?.\‹)S¦ C‡Z=¯ÿùçƒé BCCµîc øÁ…¾€èÛo¿M›6 ‰eddˆVÅA|D‰¨*àù2°²´ÒÚ&³*ý%µ–Éðú3Ï`Ó+/KæÕäåâ‚I=zàÕý –UÔ©ƒísfcfïÞôñµŽM2+ís’²tÜXtnÜXrߤ=ðYp0¬ªQî,""ª~þý÷_|þùçh×®Þrr¹K–,A||¼ÎÞlš¹ õå2TÖ®¯Üرc¡wr£ñãÇãÒ¥KzÏÁÒÒR4ìvذaZ¯«¬P!G)AAA¸uëÞzë-ІO–Ðuͬ­­ –Ĺ"õ•“zmch¦-pttÄ'Ÿ|‚nݺé=®]»vØ·oV®\Yª×5…úyk^}×Çе“Éd˜7oÂÃÃÑ»wo½mèÖ­þóŸÿè €½óÎ;6l˜Þ: ¾ýö[œ:u ööö:ËcòäÉZ3‹kzóÍ7‰æÍ›ë,3pà@œ={VçPóvíÚaçÎxë­·DÛuÝkµkׯ¦M›ðí·ßbàÀÂv///¼øâ‹8~ü8Z·n-:ÆUbBÕƒ BDD^|ñEe€â)ï¿ÿ~…LÀdÎk¦ïÞÕdÌg‚³³3BBB0kÖ,Éý½zõ±cÇD=i5óÍ–ggg¬]»Í|ˆŒŒ Q¹>úÞÞÞ•ÑD"""ÒÀ€(‘™DGG‹Öår9V®\‰I“&UR‹ˆˆˆH“Á€h~~¾°¬R©Êµ1TõØY[£›ŸTjsoy¹8Wb‹ˆˆˆˆˆª†÷ß ÀéÓ§ñï¿ÿ"!!‰‰‰¨_¿>€áÇÃÓÓ³²›JDDôÄKOO–333õ–5ÍËË–óóóaggW†¦QuSÛÚ_M_ÙÍ """"ªrìììгgON–DDDT¤¤¤Ë©©©zËrR%"""""""""ª1 DkÕª%,ËdL9JDDDDDDDDDU‹ƒƒƒ°loo¯·¬Á€¨­­­°Ì€(U5®®®Â²³³þùo8džˆˆˆˆˆˆˆˆˆj D‰ˆˆˆˆˆˆˆˆ¨Æ`@”ˆˆˆˆˆˆˆˆˆj D‰ˆˆˆˆˆˆˆˆ¨Æ`@”ˆˆˆˆˆˆˆˆˆj D‰ˆˆˆˆˆˆˆˆ¨Æ`@”ˆˆˆˆˆˆˆˆˆj D‰ˆˆˆˆˆˆˆˆ¨Æ`@”ˆˆˆˆˆˆˆˆˆj D‰ˆˆˆˆˆˆˆˆ¨Æ`@”ˆˆˆˆˆˆˆˆˆj D‰ˆˆˆˆˆˆˆˆ¨Æ0µ´ü¥RY®!"""""""""2•zÜÒÂÂBoYƒÑ:uêËeh‘ù¥¥¥ ËêñL)¢...ÂrTTTšEDDDDDDDDDd^¸wïž°îì쬷¼Á€¨ŸŸŸ°|æÌQåDDDDDDDDDD•¥°°»wï†J¥8::ÂÎÎNï12C•6oÞöööÈÊÊ‚R©Ä/¿ükkkÔ®][ëÅóòò ¾ ±233áàà`–º²³³acc++«2וŸŸ°¶¶.s]5嚢°°Ð,× ¨ºçÉ{Ãt¼f¦ã539¯ääähýXZUõ¬¬¬Ìöûµªž'ï Óñš™®º]³¢¢"¤§§‹¶õîÝÛ`}EEEE† Ý»wëÖ­"­DDDDDDDDDDU‰ŸŸÆŽ+š$^ŠQQHLLĶmÛœœl–••L&CûöíñÌ3Ïœa0! Z"?? ¢©ìâ©í333 &-5VRR …YêJIIƒƒjÕªU溲³³QTT{{û2×¥T*‘‘‘ñÄ_3¥R‰¼¼<³\3 êž'ï Óñš™Ž×Ìtæ¼fšš '''³ÔUUÏ“÷†éxÍLÇkf:s_3s~žUåóä½a:^3Óñš™Îœ×,;;µjÕ2Ûïתzž¼7LÇkfºêxÍE“ÂÃä€(Quep–y"""""""""¢'¢DDDDDDDDDTc0 JDDDDDDDDD5¢DDDDDDDDDTc0 JDDDDDDDDD5¢DDDDDDDDDTc0 JDDDDDDDDD5¢DDDDDDDDDTc0 JDDDDDDDDD5¢DDDDDDDDDTc0 JDDDDDDDDD5¢DDDDDDDDDTc0 JDDDDDDDDD5¢DDDDDDDDDTc0 JDDDDDDDDD5¢DDDDDDDDDTc0 JDDDDDDDDD5¢DDDDDDDDDTc0 JDDDDDDDDD5†¬²PÕ¨T*dffÂÁÁ––Œ?)qèÐ!@­Zµ0~üøJnU†U©TøçŸp÷î]ÄÆÆâñãÇÂ>kkkÔ¯_;wF³fÍ ­ÆÒÒÒpçÎÊnU²ÍÎÎÆÆ'¹???111ˆ‰‰AãÆ1qâÄ n!™S ˆÆÇÇcýúõÈÍÍÕÚ'“É T*EÛ4׉ˆˆˆˆˆˆˆˆ¨ú©‘Ѽ¼<üüóÏP©TÂ6///<ýôÓðòò‚ rrr?þøwïÞ­ÄÖ‘¹ÔÈ€è_ý% †6mÚcÇŽ…•••°­víÚðõõ…¯¯/¢¢¢ðàÁƒÊh*™Q ˆæççãìÙ³Âz:u0~üxXXXè<ÆÏÏ~~~F¿Fjj*’““áàà77·RMÆ”——‡ØØX( ÈårѾÄÄDäää ~ýú°¶¶6XWaa!bccQ»vm( Ѿôôt$%%¡^½z°··7ªmùùùHOOGzz:,--áîîŽÚµkrz¤¤¤àÑ£GP(ptt4ùø¢¢"$%%!++ ^^^F]}òóó‘’’‚ôôtÔªU uêÔƒƒC™ë%"""""""¢ÊQã¢.\åíܹ³Þ`¨±âãã±oß>$&&ŠzŸ€³³3zõê…Ö­[ëbcc±fÍ 0]ºtÑY6%%Eꦤ¤ $$DªS*•Ø»w/ÒÒÒЫW/õEGGcãÆZhxüø1¶oßnôß¹¨¨ëׯGLLŒÞr‰‰‰HLLDË–-áââbTÝDDDDDDDDTùLË]Í¥¦¦ Ëîîî°³³+S}aaaZÁPGGGøùùÁÃÃC«ì¾}û Ö)“ÉЪU+Ô©SGØ–’’¥R‰:uê 00PTý÷ßõÖçïïOOOa½dÈ»Ôë\¿~ݨö•ôlÕª•¨n8|ø0þøãƒõ””- †º¸¸ qãÆZ)NŸ>¼¼<ÉãSRRðë¯¿Š‚¡r¹þþþpww¶©÷¸ÕçìÙ³¢`¨¥¥%š6mŠŽ;"00õë×7©·)U-5.²£Þ{ÒÁÁ¡LuáèÑ£¢m£GF@@€°þèÑ#¬^½Zè†Þ½{ÃÉÉIg½&L@£F——‡%K–Á>™L†W^y666 ÄÆ·nÝÒYW·nÝЯ_?ÅCÕ…}/¼ð|||››‹/¾ø››‹äädÉ^Mš4A÷îÝѰaC­}ÉÉÉX¿~½Ü}УGa=..«W¯–ì=*åâŋ²³³3fΜ [[[Q¥R‰«W¯âÏ?ÿdp”ˆˆˆˆˆˆˆ¨š©Q=D5s_ª÷Œ,ÿýW`8p ( nnn˜6mšhÛñãÇõÖÛ A€h$oooØØØˆÊÅ=>‹ŠŠ$ëjÖ¬™°Ü¤IaÙÒÒRÈõikk 777aŸæðu;;;,X°Ï?ÿ¼d0(îÝ9zôha]©TâÎ;zϳĄ „`(XXX _¿~¢Þ»qqqZÇeffâêÕ«Âz‹-DÁP¨_¿>ÆgT;T*•èÜ{ôè¡ ŠÓíÛ·Çœ9sÊ|QŪQQõáò´†f›êƲ¥¥¥Î<•nnnðòòÖ¥ò„–°··ÍJ¯Þ“ÔÕÕUX®U«–¨w¢úDKêÔ{z:;; ËŽŽŽ¢É¤Ô_G}b£ÆÌ"ïéé)j{rr²ÁcÜÝÝ%'a²°°s¥rŒjæƒ ’|&MšH65i•ïß¿oð""""""""ª^jÔxß‚‚ÑzYgWŸ¡½qãÆ°¶¶ÖY¶uëÖˆP¼,,,”|}Í:jÕª¥sŸL&&YÊÍÍzê:^=€ªïu¤¢ê233‘––†ÔÔTdddˆ‰–––Âðt]y?Õ©÷tÕ¤ÞûR½'n õ·L&Ó9»½……Z¶l)/ÅÊÊ vvvÈÎÎ\½z7F‹-DÁc""""""""ª¾Œˆ!,, ÑÑÑˆÕší¼°°yyyež¤¨„••æÌ™cÖ@”£££h]s½©Ôrê½/¥hæ MKK“ÌÓ©˜Ô\×ܧPÕ|Ôu¼¾×‘ª«¨¨ׯ_lj'Œêù À¨¼úr©ªßKšÁl@ÜÕPo_Í¿½.mÚ´å.ݹs'víÚoooøúúÂËË 6,s0Ý„„lÙ²Ålõeff–9gn‰ììlØØØ˜å”ôlÖ÷0ÁXæþ â53]M¸f““cT¯ycTÕóä½a:^3Óñš™ÎÜ×,77רQ4ƨÊçÉ{Ãt¼f¦ã539¯Y~~>¬¬¬ÌrͪòyòÞ0¯™éªã5srrBÆ ѪU+QJH}Œ ˆbëÖ­¸yó¦Á²RC›K«¨¨¨\¢éé饮K¥R‰zR ÈiîOII‘ ˆª9ÄAOÍ›Q}]WQõúJ[Waa!~ùå>§NÒ{ž:u £FÒ[ŸÁ€è¥K—„e___<ÿüó¥iw•Q¯^=! ªT* ÿRÕU§N|ˆ+W®uDEE!**J«¬‡‡FŽiž¨@£GÆÊ•+…ë”––&ê%YÂÓÓ999»%›“‡‡† ‚ýû÷ Ûnß¾Û·o‹Ê5lØP2í><f±—Ò¢E tèÐÁ¤:‰ˆˆˆˆˆˆˆ¨r2ÿ$kÑ¢fÍšoooÈdºcÃÍš5Ó9ÌÝÊÊ Ã† èQ£ôÖÑ¥K̘1C+'' ÎI©™ŸRß>õ¡Úšû¤”öuœœœ0{ölx{{KÖkkk‹   L:Ut tµI}»Þ¿ÔÊé–Þ¾}{¼ð ’UYZZ¢_¿~¢É´tµ«ä< åÊ­S§FމQ£Fé-GDDDDDDDDUE‘TâL5+V¬@ZZàí·ß†­­m…4¬2¤¦¦âÁƒÈÌÌDíÚµáääwwwØØØ]GFFâã㑚š ;;;xxxÀÕÕõ‰É3™œœŒ¤¤$¤§§ÃÞÞ>>>’AÞÊ’––†{÷î!??õëׇ‡‡G©®}NNŽpž999Šgµwvv~¢þžDDDDDDDDO‚ýû÷ãÒ¥KŠG;è,[c‡ÌKqrr‚““S™êËåU*@hn...{PV&GGG´jÕªÌõÔ®] 40C‹ˆˆˆˆˆˆˆˆ¨*©ÑC扈ˆˆˆˆˆˆˆ¨fa@”ˆˆˆˆˆˆˆˆˆj D‰ˆˆˆˆˆˆˆˆ¨Æ`@”ˆˆˆˆˆˆˆˆˆj ƒÑüü|aY¥R•kcˆˆˆˆˆˆˆˆˆˆL•žž.,gffê-k0 š——',«G‰ˆˆˆˆˆˆˆˆˆª‚””a955UoY™'""""""""¢Ã`@´V­Z²L&+ׯ™ÊÁÁAX¶··×[Ö`@ÔÖÖVXf@”ˆˆˆˆˆˆˆˆˆªWWWaÙÙÙYoY™'""""""""¢ƒQ"""""""""ª1ªüøïßÇÇOˆ¶õÀÈN+©EDTâüùóøúë¯ 4À_|Q.¯³jÕ*ܸq0räHôìÙ³\^§2aÞ¼yP*•€ ÀÓÓ³’[U5TÔ}VÙNŸ>U«Vš6mŠE‹Ur‹ˆª¦={ö`Û¶m€Î;ãõ×_¯ÜQµS墒SpéÎÑ67¹œQ"M›6 ééée®gÙ²eðññܾ}[·nøùù•[ jçÎ8q¢øÁHÆ ŸÈ€¨J¥ÂŠ+„õ‰'2 ú?uŸU¶[·n çÙ®];D‰t Þ+999 ˆ‘ɪ|@”ˆÌcûöíÈÈÈ(s=ï¼óŽ%2V÷îÝ‘’’ظq#Ú¶m[É-""""""¢šŠQ""*wçΖÓÒÒ*±%DDDDDDTÓ1 JTCìÚµ yyy’û–/_. I€è¬ÇÏÏÏìm3dáÂ…˜:u* C‡þúÁÊÊ [¶lAaa!€â’DDDDDDDd~ ˆÕ}ûöÕ¹ïàÁƒB@T¡P`РAÕ,£ôêÕ«²›P!ÆŽ[ÙM """"""zâUû€¨J¥ÂµØXȬ¬àçᙕ•IÇgååáQF’³²•—¹­-k׆—‹‹Éué’ž“ƒØäd¤de¡®\oWWÔ¶¶6KÝDUU^^®^½ 4oÞ666•Ú•J…¤¤$ÄÆÆ"++ uëÖ…B¡€««+,,,*µmæTPP€¸¸8>yyyhܸ1êÕ«gÖ6fggãîÝ»HLLDݺuÑ A888˜õ5L¡T*qçÎþmþºu …*•°½±»;>ùš¸»KWPXˆ¿nÞÄñëá8œü|ÉrV––ôñÁ´^=ѾQ#½mYvðw m[€ÜÜ\|þùçØ»w/Â4>ý¼¼0nÜ8|üñǨ]»¶Qm2·üü|¼ýöÛØ±cbcc…í¾¾¾˜2e Þ}÷]XZZê<þÖ­[8xð öìÙƒS§Nií—ËåèØ±#f̘aô{êÒ¥K=z4ÀÁÁW¯^E||<>ÿüs|ûí·Zå'Mš„>ø¾¾¾FÕ_VYYYøì³ÏpðàA­¿)tëÖ sæÌÁðáÃõϯ_¿Ž7ß|gÏžÕšŒ.(( ,ÀðáÃ% Ç!C}úô‹‹ –,Y"jÃàà`ÑßöË/¿ÄüùóEõµnÝ™™™ÉdøüóÏ1eÊ¡M^^^Ø»w/|||0dÈœ?^8.88›6mB­ZµDõáÂ…  ÁÎ;®u^^^hß¾=>üðC½Ÿ‹‰‰‰èÚµ«°~ñâEDGGcéÒ¥ ]»ÀÀ@lܸ­ZµÒY_‰cÇŽaáÂ…¢ó‘ËåèÕ«þóŸÿ<žˆˆˆˆÈj-P*ñòÚu¸™ µïvb"&ýð#–??7ÖÚ-6omÙjð5 U*\‰‰Á+ëb0íé^˜¦gÈnbZ2ssEÛâSSñÙž½HÐ1yÈù[·ð8#ƒQz¢lÛ¶Mç°ïÝ»wãêÕ« ÕÛs)==¡¡¡:÷?xðÀèö„††¢S§NzË$%%á›o¾Ann.~úé'£ë.«û÷ïë=Ïôôt£ëúþûïñÊ+¯è-†°°04nÜ&L0ºîÒˆ‹‹C´Äƒ ZA&puu5ª~sÜgááá7nœdÐ bccñå—_âðáÃØ¹sg…çtÍÍÍÅĉ±}ûv­}ÑÑÑX¸p!°nÝ:½ ÇŒƒË—/ë|ŒŒ œ8q'NœÀ¹sçðå—_ìa›‘‘!úÛFGG£gÏž¢ žºõë×#00sçÎÕ[¯9œ;w/¼ð‚Þ{ïܹs8wî>ÿüs¼óÎ;’e~ýõWLš4IgçϟLj#ðÆo`ñâÅZ×,++KhƒT[Î;‡"::III¢}o¾ù&Ñ¿a›ú=:jÔ(QùØØX 6 …Bëo½cÇ4mÚŸ}ö™h{jj*ºté¢óüJêÅÞ½{ñË/¿`Ê”)’årssEçxåÊ >\òý†ÀÀ@œ;wNDÕôÃ?ॗ^ÒÚž‘‘ýû÷ãÊ•+zSÀ£ZDOHôfPW¨Ráµ_7àÐ[oÂÉ޾̯·úä) nÓNNFóùÞ}e~]¢ê$**JRyyy¡K—.ÈÍÍÅ©S§„ÇÑÑÑøù矱`Áõ8::¢[·n¢mê3”+//ƒm B×®]!—˃ððp½AÉòäãã#:ÏÂÂBQo(c]½zU+:lØ0øûûnß¾K—.é ™[›6m´òлvíšV/5???tïÞ2™ /^‚KaaaèÝ»7"##K5ܺ´ÂÃÃ…ž{^^^èÛ·/²²²pèÐ!á‚ÏÇŒ.¯¦=1Þ}÷],Z´VÿËÁ{çÎ<óÌ3ˆŠŠP<˜?¾°_“¿¿?Ξ=+ÚÖ§OaÒ'cÄ\.—ãï¿ÿFóæÍµÊ={+W®„“ vJëå—_ÆË/¿,Ú¦ž§õ«¯¾*óDYe¹Ï4{+®^½S§NµqãÆ˜8q"€â€Ó²eËðÁ”©Í¥ñâ‹/âÇÎ#%% ùëׯ×;$½wïÞ˜3g¬ueddà7ÞÀš5k÷®ˆˆ¼t) ì½ôÒKøè£Dù1/_¾Œ7ß|³ÜsôæååiÑ–,Y‚ùóçk¥زe fΜ)YJ¥ÂÂ… EÛBBBðÌ3ÏëwîÜAß¾}… +V¬À¼yóàé驳}{÷îEPP233Q¿~}!P¬P(ðÇÀÁÁ#FŒÀSO=Ø¿?¾ÿþ{ɺ–,Y‚·Þz п=zTÔÖvíÚ!##CÈ»wï¢AƒZuMš4 /½ô:wïîÝ»î³E‹aÆŒZÃï¥ 8›6mÒVdeeaâĉؽ{7àðáøqã†ðЦDQQ‘(x+—ËqäÈ Û¶nÝŠqãÆl‘!Õ: úɨQèàÈøxÌYÿ«V>ÐmçÏcZ¯ž’“#u÷óÄîÝÐVâGBÌǘðý*QnÒ¿nÝ*U»ûùahûvháåk™ 1bÿå+اg#Qu5bÄ­ÞH5ÂÇ,üˆMJJBbb"êׯ_®mQ>êëë+ €&Mšà«¯¾*×¶”§ .Ë'NÔÌêÞ½;ºwï^QÍ*We¹ÏöíÛ' "mÙ²ErøýóÏ?””¼úê«€?ü/½ô’dîÓòÒ±cGüôÓO¢ ž³³3~ÿýwQ;V¬Xo¾ùFëø“'OêLK.—cåʕؿ¿ððà·ß~Ã{ï½gR;øáÉ c»vípüøq(•J“ê3Õ7ß|#ê­ëo ãÆC¿~ý´†ªÀDÃÓׯ_/ †Å÷Ù±cÇDh}9Šâ¿#Pœsµk×®B/ÓÞ½{ “N•”ŠðEEE’ä’˜%Ë%÷²\.r}–äÚ,É/ ˆ:;;#--Mï½Ñ A¬^½­[·Pü~:þL_.— SiÒ7鑱ªmÑaj_¬ •·7<µ&1JJKƒŸÚŒÊV––p´³Ã£Œ ì¹t щIHLOÇÃôtd¨MŒ$5ûüÃôt£óˆú¸ºê®ßÀÍͨzˆª“6mÚHnצ]ÁI???Ñúüùóñù矗{ÏÔŠÖ¼ys¡—ØåË—±bÅ Ìœ9³Bó]V´²ÜgW®\–³³³±iÓ&ù$‹ŠŠP¯^=aˆóÕ«Wµ‚®åI3«ºaÆaÆ Š{ïåææÂÖÖVgùŒŒ ªe@ÔW¡€ÄåŽ}±ÿòѶøTq€45;‹÷îÃ&¿î£ÌL£¢M®Ÿ¨:“Ëåz …Bôc¿¼õîÝr¹\x­õë×cýúõèØ±#ž~úitìØAAAðòò*÷¶”§1cƈ†KÏ;sçÎE¿~ýгgO´k×]»v…££c%¶Ò|ÊrŸeffŠ1%3Ž«$?iEÑ7<_sRª¸¸8É<¢W¯^ÅÒ¥K±yóf£^ÓÔáíšÃž+šfVÍ!¦¸yó¦°,•sSæçF\\œä1š÷ªzSß>]=DÕƒ„úêRˆfffjÕ£R©‚Å‹ýP1JF_.Õ’œ¢€ôÿê×ßÛÛ[ïëøøø0 JDDDDeR-‡Ì×Õ1ù‰«ƒööDµ£9ùù˜öóêRC · Àè²NOFðÈXR³†W&gggɡġ¡¡Xºt)‚ƒƒáííN:áØ±c•ÐBóèÖ­>ùä­íGÅûï¿gŸ}NNN>|8n•2rUR–ûL=Ïdidgg—éxSxyyéŒH3XúàÁ­2K—.E›6mŒ†õ5†¡ÀUy»}û¶h½´í),,ÝîîîzË«o€û÷ïK–Óì5jmm­sŸz€³°°P²>õôêǫ׫¹O3©T*1|øp <ؤyyyË”eÒ6õš×WÓ“ÖÓŸˆˆˆˆ*^µì!*5IÉŸêÛö\º$9ƒ|‰ÚÖÖp¬]Ö2¤¤˜œ3TM9çL#"ÞyæÄÄÄ`ÕªUX»v­ä0ÍÐÐPôë×?þø#f̘Q ­,»÷ß}ûöÅ?þˆuëÖI–Ù»w/öîÝ‹ÐÐPtèСbXEh<ÔZ¹r¥IM¹U¡T'šA.Íaÿ!!!X°`hÛ¬Y³Ð«W/xxxˆzë-_¾ëׯ/U;\\\Juœ¹hþMK›¯TóúYéøžQBsX~yOeN .åëT(xùå—ˆzõê‰z›WHÏhÍëoèzVfš""""z2T˨ÝCÃm3Õr€–pW&ºç¢ô„óžˆAmÚˆ†áOø~n'&–ºü²NT54hÐ_|ñ/^Œ;wîàÒ¥K8zô(¶nÝ*¶9sæL 2¤Êõt5VPP‚‚‚ðóÏ?#<<çÏŸÇ¡C‡D3;ÀË/¿Œ .èí}ø¤ÒR®P(„™¹«õ¼˜RÒ4òekö˜ûî»ï„e…B . aÆ’u3ºªjܸ±h=66Voª]d2¼¼¼„ënhâ·‡6V—Ô¹¹¹¢{£W¯^ Ñ™655µBÚeaa???!øj(ïiELÌGDDDDO¶jµ‹yøP²÷æ ‰YKÕ‡®ÇK|±îÜ Á;kå$MÔø±IDÕ›……|}}ŒŸ~ú ÷ïßÇ‹/¾(*söìÙJjùÈd2bÆŒصknß¾-šè$44ñññ•ØÂÊãìì,š|FªÇpU¢/¥ÙvõÜ8xð °þå—_ê †âÜÕf»,iš4i",zhî×—;³*¹xñ¢èAÐêÕ«uC5sî–7õà¶¡ë¯+E.6lÀ¸qã´þ= iDˆˆˆˆ¨tªe@4_©Ä™ÈHѶ„´4DHDj3¼JQ=µ‡û݈‹“ìmJDOGGGüøã¢\ušùŸ¾¾¾Âlä%bbb*¼êÈ””” ýê3ÔïÙ³§ÒÚa }¹m>,,ËårÑ$:šÔ€€õÜ¿¿ZONãàà zÿøã¥®K=¸ºk×.½Ã¶ÕÎ …BkÆøªêÑ£G¢uͶêÔﱊ >)ÕtæQ}üø1Μ9cRÝ¡¡¡Øºu«Ö?ö4%"""ª¹ªe@>Þµþ—4'?¯ýºA«Œ•¥%© «'‘ìÿèµk¢õB• Ë1oc‰¨JǪ̀9ÉÉ“BóÿüóÒ7°Š˜8q¢°|ôèQœ:uJoy¥R‰d‰|âêùd“’’t?~,ºþ}ûö5±Å•Gs²"]=@•J%Þ}÷ÝŠh’ _¿~Ârll,þøãÉr[·n­¨&ѬÚDsòó1òë•xî?_£ïâ/pW£× m×µÕf^m"1kìõØX,ܹn߯xñçÕø×Ä¡XDTõ|ðÁ7nN:¥3Gâ·ß~+ tîܹ¢šg6ýû÷Çüùóu•J%Þ{ï=Ѷ–-[VDÓD5j$,ñňÔèå_Qf̘ÀÀ@a}„ 8pà€dÙ¢¢"œÃ?üP-¯Xï¿ÿ¾¨òСCµrç–ø÷ßѵkWÉóž0a‚(èÔ©Sñï¿ÿŠÊ¤¦¦bĈ¢mï¼óNYš_¡üýýEëï¾û®ÖçcZZÆ_!“)©:t¨¨—î¤I“´z³ÿù矘={v…¶‹ˆˆˆˆžLÕrR%uqz†^>ß­«h}|×.8%48úï5ý÷šÖv"ªXgΜÁŽ;´¶‡†† Ë[·n•ò½páBÑd*©©©Â°H___ôéÓ~~~ðôôÄ£G°k×.QO2___tíÚU«Þò°víZ\¹rE´Ms–åÅ‹kMÔâää„E‹‰¶Ý½{GÅW_}…nݺ¡}ûöðó󃣣#î߿իW‹ò*Κ5K4‹tE™\«kkk|ôÑG˜6m€â{£[·n=z4üüü€½{÷ŠÞO£G®” ¥åììŒAƒ Cþ׬Yƒ°°0Lœ8ööö¸vívìØapR¯ò “Éðî»ï ×?66;wÆèÑ£áåå…ˆˆ¬[·®ÂÛEDDDDO¦jíî燨„$é™…tÞ³áé"ÎèãƒQ:açßë­ßúÃIóõä#"óûçŸðÍ7ßè-*È™5k–ÎÙ¥£££õN¶"—ËqðàAXZVL§ù½{÷bïÞ½zËHõp“ËåZQuçÎùsçtîïØ±#–-[f|CÍhàÀ1b„è¼ÎŸ?/Ê_Ù±cÇrˆ@=pàÀL:Uè!|âÄ œ8q¢Ü_ÛX^^^ðòòÂùóç"òÔá§Ÿ~’<þµ×^ÃîÝ»…û!))I«§pÉë <¸Ú÷8q" 1uêTa[iþ¦“&MÂÍ›7±dÉÅÁÕ5kÖH–0`€ÁÏ«ªè§Ÿ~BóæÍ…^ú>S‡ ‚ääd½Ÿ)æ6yòdܸq_}õ€âûöÛo¿•‘ËåèÞ½»ä{‚ˆˆˆˆÈXU~ȼ•D€ÂÉÞ?L/í ‘¬,-ñYp0‚u }?èY,1\4”^—‹ ¶¼ò2Ú« ïÔ×iäçYVˆÌ¡´9%Õ3T‡µÚ{NWYÍ\—¦Ð<688“'OÖÊ™§éÍ7ßDdd¤(Çey³ÖñùcˆÔÄ-ï¼ó† ¦÷8…Bo¿ý§N‚½½}©^Ûvî܉ 6`ذa’]×ÅÜ÷ 4xñÅõÖçëë‹÷ß¿B&`Roo½zõðûï¿cÀ€’e'OžŒ'N輿e2:¤s8·\.ÇäÉ“qõêUx{{K¶ÁP« L™2÷îÝÓû~Ëåøè£0eÊÉý2™ _|ñ8 ÷³ãÓO?ÅÁƒ%Ëè»_Õ?§LÙ§«­RǪ«~ýúø÷ßµ†þ—ðõõÅ'Ÿ|‚]»v ½·éËšuëk·úñúþX¶l~øáQõ¶;vL”ïÕ˜ÏS]¯WUïg""""*Ešã45¬X±iii€·ß~¶¶¶Ò0c¥feáü­Û((,D€—'|ëÖ…………Áã ”JÄDDD ::YYY¾Q£FaäÈ‘•Ø:¢ŠµgÏlÛ¶ йsg¼þúë•Û """"ªvªm@ôtDíÞƒÌÜ\eœíí%úŸiÓ¦!==½Ìõ,[¶ >>>€Û·ocëÖ­??¿r Tíܹ'Nœ4lØð‰ ˆªT*¬X±BXŸ8q"¢ÿSQ÷YU†qãÆ!<<\r¿ŸŸ¢T£„…… Ÿ 999 ˆ‘ɪe@4='ïïØ‰üÿõ¤""öoߎŒŒŒ2×óÎ;ïQ"cuïÞ)))€7¢mÛ¶•Ü¢êA©Tê †€……E¶ˆˆˆˆˆˆ¨ú«–ÑÃaa †U#çΖÓÒÒ*±%ÕËž={DÁÐÏ>û #GŽDݺu…@¨]e5ˆˆˆˆˆ¨Zª–Ñ[‰IZÛê;;cZ¯^hX×MØæ&—Wd³ˆª´]»v!//OrßòåË…!épàÀõøùù™½m†,\¸S§NtèСÂ_¿"XYYaË–-(,,4mÚ´’[DUz0´_¿~x÷Ýw+±5DDDDDDO†j½ûè‘Ö¶ç»uómZWBkˆª‡¾}ûêÜwðàA! ªP(0hРŠj–QzõêUÙM¨cÇŽ­ì&P-,·iÓ¦òBDDDDDô©–Ñ‚ÿõ R×HQ·Ôõ©T*ÜyôIiihT·.<œœÊÐ: !5w>„ÂÑÜÜ`iiY¦úˆª£¼¼<\½z666hÞ¼9lll*µ=*• IIIˆEVVêÖ­ …BWW×'*cAAâââðàÁÁÝÝ …uêԩ즕 sÝgyyyˆŒŒDff&üýýáììlæ––Njjª°ìààPæúââ⃺uë¢Q£FÉJÿ5 %%·nÝ‚L&CóæÍQ»ví2·Ïœ”J%îܹƒÀÃÃ>>>¥J/`Žk–••…+W®ÀÏÏ …B´/22©©©hÕª•QíS*•øçŸàèè¨Õ“<11QQQhÑ¢\\\Œj[vv6™L†fÍšÁÑÑÑø“ÓA¥R!""éééð÷÷/Uyyy¸víd2Z´hQ¦û•ˆˆˆˆH]µøf9ô«åÈÎÏÖ¥f–í× °Öø¢<¤][¼6`€Îz·?þFlr²h»•¥%»»cNÿ~èèëkT/ݹƒ¯ÁíÄDªT¢}^..Ù©#ÆuébT]DÕÙ¶mÛ°víZ>|X´}ĈX³fÁ@Sxx8&Ož¬sÿ¼yó0fÌ£Û‡eË–‰fpW§P(0fÌL™2¥B'úÙ²e‹Î6À† ЬY3£ë»|ù2-Z„½{÷Jî ÄÈ‘#1cÆ xxx˜Ü^S|ôÑGذaƒÎýC‡EݺÚ±:tè€mÛ¶õe½Ï 77Ÿþ9öîÝ‹°°0Ñ>///Œ7üq…ú<ˆW_}U´M½‡è‡~ˆõë×k7wî\¼òÊ+:ë½~ý:Þ|óMœ={Vkbµ   ,X°Ã‡7ª)))xóÍ7qøðaÄÆÆŠö`„ xë­·*-p•••…Ï>û Ôú›@·nÝ0gÎ >\oð¼,×,<<C† ôéÓ...X²d‰¨ @DD‚ƒƒE×ñË/¿ÄüùóEõµnÝ™™™ÉdøüóÏ1eÊ¡M^^^Ø»w/|||0dÈœ?^8.88›6mB­ZµDõáÂ…  ÁÎ;%'ìòòòBûöíñá‡êý\LLLD×®]…õ‹/"::K—.EHHˆèÚbãÆhÕª•ÎúJ;v .\.G¯^½ðŸÿüÇàñDDDDD†T‹€hRzºÁ2ùJ¥ÖDKÓ¥gÔNÍÎÆ;Û¶ãJLŒäþB• Qññ˜³þWŒëÒ³û÷ƒ•Ž^ž*• ß=†Íþ©³m±ÉÉøúÐaüq#_Œ '{{ƒçCTmÛ¶Mç°ïÝ»wãêÕ« ÕÛs)==¡¡¡:÷?xðÀèö„††¢S§NzË$%%á›o¾Ann.~úo{÷UU™÷ü‹ …#’u!Pi^* %/]HMKš0Q /·iÍŒ—.šQy)Í•’yKqÔWFMEq‘Ò¨©L6„ºP¼ à‘¼ \<Àû‡/{öíÜàpÏ÷³–kí½Ï³Ÿýì‡}Àó;Ïó{Ö¬±¸î†º|ù²Éû¼cÁï½:+W®4€ììldgg£k×®3fŒÅu×Gaa¡$'WZZª2@‡,ªßÏYNN¢££Uƒf ×ëñùçŸcÿþýرc‡]rº–””˜ì7ª¯+ój×ùÇ?þØØX£¯?~‘‘‘˜>}:.\h2H˜‘‘×^{M­“““ƒ>øÿú׿°yóftêÔÉÄØ^zz:Þ|óM“}˜žžŽôôt,X°³gÏV-ÓÐ>+//Ú Ö–ôôt :yyyŠŸÝ;#àà` «««%£¡,õ믿*‚¡#FŒ@Ïž=.\@ff¦Ù@›-=ù䓊<´ûöí¶CBBTƒeAAAfë¶ÅsvêÔ)Å(µ€€ôïß?ÿü³\ÊÎÎFxx8rss}5wE¿9rD2ð‰'”¹²UëÛ³g"°Šàà`èõzÉèÚºÑÊ_|ñ…j]………Š/ЧOTVVâðáÃBpïàÁƒ2d²²²ì–2æÀxI6#D§Óá™gžŸŸÎ;‡ŒŒ ¡µµµªõزÏÄí=z4Ž9"YêСC’áÛ¶mCTT”¢Üùóçñõ×_C«ÕZUC5J2ʱººº^ÓŒÅS̵Z-þóŸÿ¨ÈŽ;†åË—£}s$[bÚ´i˜6mšä˜8OëÒ¥K¼PVCž³3fHö×­[‡ &HÚ¸yófÄÄĸpZ²d æÍ›× 6›3`À 0@r,""BHƒðç?ÿÙâ6ÔÔÔ`îܹ’c©©©2dˆ°ñâE 8P–/[¶ 3g΄———¢¾¥K—Jö?úè#I[***0zôh¡­ÙÙÙHNNFdd¤EímˆÊÊJEmñâŘ5k–" »uëVLžúè#a¿¸¸×®]kô¶ˆ§úûû«C [·nXºt)æÏŸßèmj ?ýô“°ct´`ÿþý±mÛ6ÅÄ–¨!ÏÙž={$A¤­[·bâĉЅµÆŽ‹åË— û~ø!~ûí7[ÞF£JII‘LµÞ¸q£$°Üï³ï¿ÿ^rlÉ’%Šº %£ ǧ̶mÛ;vì@@@€p,..5õø2ÓZ+V¬Œ€Þºu+Þ}÷]ÕÑ©ÑÑÑÈËËSÍÿiË> pQ,ñTñððpa¡¬º2Àý¼±¬u#0åÛZ­VÈõY—k³ÎÕ«W%uxzzâöíÛHLLT †€¯¯/Ö­['ì[4‚]§ÓáÛo¿•äðussSäK>uê”âÜ´´4Éïíõë×K‚¡Àý/’âããͶƒˆˆˆˆÈœmÕªœEÿÔV„v–•Q+÷]öIŨMwWW¬?N‚ú=ú(Ö¾5QQÁ8WT$ìç#O%oÛº·&ÂÿÿWmצ bßTX«kjú«zÞ:¢–L¾HyP¡Hô^j,â÷^^®_¿Þè×l â `}¦Ü·D yÎÄ#ï d4)L:U2r833ÓÚ¦6™ÔÔTa[«Õ*rOÖñóóÈ#„ý;v(Ê9rD²¯–ß4ddpNNòóó­jw}|ùå—ÂvHHFŽi²ü#<¢šžÁ–}V'((HòÔç¥uuu•¬>_nd&‹ø|Ѭ•Ç\ò;O\N-qÝRS‚ƒƒ%Ï¿%?ËéÓ§«.Bæëë‹a¿°°PQF>È.(Ï¿~Ýÿuæ‚7u=îíÇd+'kœ1*, «eÓ}ÕÚBÔÒ=ù䓪ÇåÓ´íœTîÑ,X€Î;7úµí)00PñxâÄ ,[¶ “'Onô|—M©!ÏYVV–°]QQ-[¶W[[‹N: SœýõWEе¹ºxñ¢°ý§?ýÉäó%Lu×ëõ¸wïždj´8¦ÓéL.T¿ÿýï¾^¯‡ŸŸ_}nÁ"wïÞ•,ò4}úôzç-µeŸÕ‘ÅuʇîîîBšÒÒRaô¨˜øWWWa[žòC\ÎÜmׯ_Gaa!®\¹‚k×®IFõ¶iÓFxþÕJ’t•ëÒ¥‹0Tm!0yÿ[à«K—. s˜/€ˆˆˆˆ¨q8V@ô7å‡ãÞ]»ª– ëÖU½$úp}Ieêd#u…võWD󊥋V«5@Ðét’û-<<Z­V¸ÖƱqãF„††â…^@hh(ÂÂÂàííÝèmiLo¼ñV¬X!ìϘ13fÌÀ AƒðÜsÏ!$$}ûö…‡‡G¶Òvòœ•••I1u+Ž[ª.?iKpîÜ9a[-¤˜ü=PXX(9çÒ¥K¶xT£ùbY²¿£¶&¢Ê/B¬aË>«#VÅALS¯!*šªK-SIÑSSSƒÔÔT,\¸Ðâ÷€%éLåRO£Wû îÿ.]º˜¼Ž¢DDDDÔ -bʼ­ä«ŒÒ™6¦vü¢(zQ%¸ÚÑÃòºô7om'QK¤¶jxSòôôĶmÛÇ322ðÙgŸ!** ]ºtAïÞ½9[’~ýúáã?VOKKC\\^~ùe´oß8þ|´Ð¶òœ‰óLÖGEEEƒÎ·—êêjɽvìØÑdyñTm¸|ù²d_t47ÂÚÅÅÅêiÖ qáÂɾ¹@š1¶î³:òQ£...F_8«««Uë/¼&>_\¯ü5y Ó`0 ""Æ ³ê ÊÊJ³e²h›ø yÿÊ=h#ý‰ˆˆˆÈþj„¨Úªó­Tò‘Þ?®,[]]#z]yžÚ9ÆÊª­@OD¶5dÈ\ºt _ý56lØ :M3##ƒ ÂêÕ«1iÒ¤&heÃÅÅÅaàÀX½z5UË$''#99xúé§íÛÀfâÞ½{’ýåË—£ÿþŸÿÈ#غIBžÀY–FN>ÅÜ`0HöÅýf®.@:ÍZ^—­É¦â€¡5lÝgÍÙܹs%ù:u:¦M›†àà`têÔI2Ú4**Ê.#£åýo®?뛈ˆˆˆ¨ŽCDuíÚáºlšÖo¥¥è¨2•ô·ReÎ-_чáN*£ ÔΩ»†\gÑÔ1"j<¾¾¾X´h.\ˆ‹/"33iiiHJJ’LÛœ""""z°9ÔWì~*’N]Ö«”N(§¿‰¢=ª)”­rޱk¨µ…ˆ““üýý…5kÖàòå˘8q¢¤Ì±cÇš¨u¶£ÑhŒI“&açθpá‚d¡“ŒŒ \½zµ [Øt<==%Ó¹ÕF ?(ºuë&l›ûyË_—ççÆ4•÷icDåAE°eŸ5W?ÿü³ä‹ uëÖ †Êsî66qpÛ\ÿKQ`̦M›­ø÷ ¤!"""¢úq¨€¨Z3éÇÇJÊËqLeŠ˜øüÇT¦N?7U/تr ?•¶‘ýxxx`õêÕ’\uò|„lÚ´IrL¼H޽ˆ‘·nݲûõëˆW¨ß½{w“µ£±‰…;wî49yß¾}¶N§S¬~þØc Ûyyy8sæŒÑº8 Ù¯oNOK¹»»KÞëW¯®w]¶ì³æêº,—º|„­Øþýû»9âÀ{JJŠÑ<ª7nÜÀÑ£G­ª;##IIIŠiJDDDä¸* ¤8Vtû6>Ù,䯪¨¬Ä´ÄŠržnnøÃ„ý®;ÂÓÍMQnê†D”‹X¼…*þ_Pi Ù—ë›g±!…íÓ§OÛýúuF%lØ@JVÂ,Äë_.Ç E‹‘§òá½áàœ[µÂìW‡+Êå_¿ŽÁ‹ãõ/—ã…O`ωŠ2O÷’L¿'"Û›7o¢££qøðaÅ*Ëu$>}úØ«y63xð`Ìš5ËhÑ`0àƒ>ûãÿh¦IˆóP.Z´¹¹¹voLš4 ÁÁÁÂþ˜1c’’¢Z¶¶¶‡ÂÈ‘#Ô¾Ä3fŒ$¯å„ pòäII™’’DFFJŽÍž=[QW=0vìXaÿ³Ï>S¥jjj0sæLdddÇâããíò%C\\œdò«¯¾ªÈ[çäÉ“èÛ·/V­Z¥xÍ–}Ö\õìÙS²?gÎÅïÇÛ·ocôèÑvYLIìÕW_•ŒÒUŒfÿ÷¿ÿ·ß~Û®í""""¢“C-ª“_ Çž'P%› ÷{Uô*#F  S'}0räHx{{ãÌ™3HLL´{»ˆˆˆˆèÁäpQ­«+6Lž„é›6£ØÌ*¦êïO¢^7úú—1c·}~² ÷ ®];|1v Úµ\cDööË/¿`ÅŠ&ËdddH¤u¦L™btué¼¼<“‹­hµZìÛ·­ZÙgÐ|rr2’““M–Qá¦ÕjQ±ôôtIPJ.44K–,±¼¡64tèPDFFJîëøñã8~ü¸°ÚèQ0`RRR0aÂa„ðÁƒqðàÁF¿¶=ÅÆÆâܹsX¼x1€ûÂo¾ùFµìK/½dò½×³gOlݺÑÑѱ]»v©>§þþþؾ}»ÑÅzCLL ª««1aÂáX}~¦¶ì³æjÍš5 W2ö;uøðá¸yó¦Éß)¶6nÜ8œ>}K—.p?( )£ÕjÑ¿!¸MDDDDT-rÊ|kY><ÐXÈèªÓáÛ¿ýÃCž‚³‘ó\4Ì|y(Vľ £©´mÚàË7c0ë•—áb$/Ÿs«VöÔSØñ·¿¢[ÇŽ·“È^ê›SR|ž¹:\\\Ì–•纴†üܨ¨(Œ7N‘3OîwÞAnn®$Çec÷…5Ôn™={6FŒaò|n*¹íeÇŽØ´iFŒ¡ús1Ö/¶~Îà•W^Á™3g0qâD“õùûû#..®É`²ô~Ôh4,Z´)))&ߟ|ò öíÛgö½2jÔ(œ9saaaFËŒ=™™™ ±ª­ åää„ñãÇ£  ÀäûA«Õbþüù?~¼êë¶è3SÏ«ø÷”5¯k«Ú¹æêêܹ3Nž<©˜ú_Çßßü1vîÜ)ŒÞÔs,Ëë6Õnñù¦þ,Y²«V­’¤A·íûï¿—ä{µä÷©±ë5E>e""""jœjåó4e–-[†Û·oÞÿ}»Žø°‡ÚÚZ\¹u §¯¢¤¢=Û£G§NxDå?â–¸QV†3……(¼U‚ömÛ¢§WgxyzÂÉÉÉÆ-'"KÔÖÖâüùóÐëõ(**½{÷àéé øùù¡]»vMÝD›¨ªªÂ™3gPTT„ÂÂBh4èt:á>Å ’ª­­…^¯Gnn.®^½ WWWxyyÁÛÛ>>>MÝ<›)..FNNôz=<==__ßzŒ.++CNNòòòàì쌠  tïÞ½ÞÁ~[3 ¸térssqãÆ xzzÂ××=zô°ê½`Ë>kŽ pöìY¡C‡èÕ«—ÙÀ¸½ÔÔÔàܹsÈÎΆ³³3z÷îÝâRW‘}íÝ»™™™`v-‡ˆQËfM@ôÁâ@DDDDDDDDDdD‰ˆˆˆˆˆˆˆˆÈa0 JDDDDDDDDDƒQ"""""""""rf¢UUUÂvMMM£6†ˆˆˆˆˆˆˆˆˆÈZwîܶËÊÊL–5­¬¬¶ÅÁQ"""""""""¢æàÖ­[ÂvII‰É²œ2ODDDDDDDDDÃl@´uëÖ¶F£iÔÆYËÝÝ]Øvss3YÖl@ÔÕÕUØf@”ˆˆˆˆˆˆˆˆˆš›:Ûžžž&ËrÊ<9 D‰ˆˆˆˆˆˆˆˆÈa0 JDDDDDDDDDƒQ"""""""""r ˆ‘Ã`@”ˆˆˆˆˆˆˆˆˆ¢DDDDDDDDDä0%"""""""""‡Á€(9 D‰ˆˆˆˆˆˆˆˆÈa0 JDDDDDDDDDƒQ"""""""""rf¢­Zý·ˆÁ`hÔÆYK·trr2YÖl@´]»vÂviiišEDDDDDDDDDd{·oß¶ÅñL5f¢?ü°°}öìÙ4‹ˆˆˆˆˆˆˆˆˆÈ¶îÝ»‡‚‚aßÓÓÓdy³Ñ€€aûèÑ£’ʉˆˆˆˆˆˆˆˆˆšJuu5víÚ…šš€‡‡Ú¶mkò¹Jáææ†òòr ¬_¿...hÓ¦ââ•••f/h©²²2¸»»Û¤®ŠŠ <ôÐCpvvnp]UUU—×å(}V]]êêj›ôÐ|ï“φõØgÖcŸYÏ–}¿ÿþ»âo`}5×ûä³a=ö™õØgÖ³uŸÝ½{®®®6©«9ß'Ÿ ë±Ï¬Ç>³ž-û¬ªª ÎÎÎ6ûüÚ\ï“φõØgÖki}V[[‹;wîHŽ…‡‡›­Ï©¶¶¶Ö\¡‚‚$&& ‘V"""""""""¢æ$ £F’,¯Æ¢€(\»v ÿüç?qóæM›4ˆˆˆˆˆˆˆˆˆ¨¡4 zõê…!C†˜]a°" Z§ªª EEE’¥ìûKÛ—••™MZj©ââbèt:›ÔuëÖ-¸»»£uëÖ ®«¢¢µµµpsskp]ƒ¥¥¥|Ÿ TVVڤπæ{Ÿ|6¬Ç>³ûÌz¶ì3())AûöímRWs½O>ÖcŸY}f=[÷™-Ÿ5çûä³a=ö™õØgÖ³eŸUTT uëÖ6ûüÚ\ï“φõØgÖk‰}æáá!YÞVD‰ˆˆˆˆˆˆˆˆˆZ*³«Ì=(%"""""""""‡Á€(9 D‰ˆˆˆˆˆˆˆˆÈa0 JDDDDDDDDDƒQ"""""""""r ˆ‘Ã`@”ˆˆˆˆˆˆˆˆˆ¢DDDDDDDDDä0%"""""""""‡Á€(9 D‰ˆˆˆˆˆˆˆˆÈa0 JDDDDDDDDDƒQ"""""""""rÿv Œ¿£‡ôÈIEND®B`‚sphinx-contrib-typer-058f2e1/example.svg000066400000000000000000000312061514345263500203440ustar00rootroot00000000000000 example Usage: example [OPTIONS] COMMAND [ARGS]... This is the callback function. ╭─ Options â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â•® │--flag1--no-flag1Flag 1.[default: no-flag1]│ │--flag2--no-flag2Flag 2.[default: no-flag2]│ │--helpShow this message and exit.│ ╰────────────────────────────────────────────────────────────────────╯ ╭─ Commands â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â•® │bar      This is the bar command.                               â”‚ │foo      This is the foo command.                               â”‚ ╰────────────────────────────────────────────────────────────────────╯ sphinx-contrib-typer-058f2e1/justfile000066400000000000000000000144151514345263500177430ustar00rootroot00000000000000set windows-shell := ["powershell.exe", "-NoLogo", "-Command"] set unstable := true set script-interpreter := ['uv', 'run', '--script'] export PYTHONPATH := source_directory() [private] default: @just --list --list-submodules # install the uv package manager [linux] [macos] install-uv: curl -LsSf https://astral.sh/uv/install.sh | sh # install the uv package manager [windows] install-uv: powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # setup the venv and pre-commit hooks setup python="python": uv venv -p {{ python }} @just run pre-commit install # install git pre-commit hooks install-precommit: @just run pre-commit install # update and install development dependencies install *OPTS: uv sync --all-extras {{ OPTS }} @just run pre-commit install # install without extra dependencies install-basic: uv sync [script] _lock-python: import tomlkit import sys f='pyproject.toml' d=tomlkit.parse(open(f).read()) d['project']['requires-python']='=={}'.format(sys.version.split()[0]) open(f,'w').write(tomlkit.dumps(d)) # lock to specific python and versions of given dependencies test-lock +PACKAGES: _lock-python uv add {{ PACKAGES }} # run static type checking check-types: # @just run mypy # @just run pyright # run package checks check-package: @just run pip check # remove doc build artifacts [script] clean-docs: import shutil shutil.rmtree('./doc/build', ignore_errors=True) # remove the virtual environment [script] clean-env: import shutil import sys shutil.rmtree(".venv", ignore_errors=True) # remove all git ignored files clean-git-ignored: git clean -fdX # remove all non repository artifacts clean: clean-docs clean-git-ignored clean-env # build html documentation build-docs-html: install @just run sphinx-build --fresh-env --builder html --doctree-dir ./doc/build/doctrees ./doc/source ./doc/build/html [script] _open-pdf-docs: import webbrowser from pathlib import Path webbrowser.open(f"file://{Path('./doc/build/pdf/sphinxcontribtyper.pdf').absolute()}") # build pdf documentation build-docs-pdf: install @just run sphinx-build --fresh-env --builder latex --doctree-dir ./doc/build/doctrees ./doc/source ./doc/build/pdf make -C ./doc/build/pdf @just _open-pdf-docs # build the docs build-docs: build-docs-html # build src package and wheel build: uv build # open the html documentation [script] open-docs: import os import webbrowser webbrowser.open(f'file://{os.getcwd()}/doc/build/html/index.html') # build and open the documentation docs: build-docs-html open-docs # serve the documentation, with auto-reload docs-live: install @just run sphinx-autobuild doc/source doc/build --open-browser --watch src --port 8000 --delay 1 _link_check: -@just run sphinx-build -b linkcheck -Q -D linkcheck_timeout=10 ./doc/source ./doc/build # check the documentation links for broken links [script] check-docs-links: _link_check import os import sys import json from pathlib import Path # The json output isn't valid, so we have to fix it before we can process. data = json.loads(f"[{','.join((Path(os.getcwd()) / 'doc/build/output.json').read_text().splitlines())}]") broken_links = [link for link in data if link["status"] not in {"working", "redirected", "unchecked", "ignored"}] if broken_links: for link in broken_links: print(f"[{link['status']}] {link['filename']}:{link['lineno']} -> {link['uri']}", file=sys.stderr) sys.exit(1) # lint the documentation check-docs: @just run doc8 --ignore-path ./doc/build --max-line-length 100 -q ./doc # fetch the intersphinx references for the given package [script] fetch-refs LIB: install import os from pathlib import Path import logging as _logging import sys import runpy from sphinx.ext.intersphinx import inspect_main _logging.basicConfig() libs = runpy.run_path(Path(os.getcwd()) / "doc/source/conf.py").get("intersphinx_mapping") url = libs.get("{{ LIB }}", None) if not url: sys.exit(f"Unrecognized {{ LIB }}, must be one of: {', '.join(libs.keys())}") if url[1] is None: url = f"{url[0].rstrip('/')}/objects.inv" else: url = url[1] raise SystemExit(inspect_main([url])) # lint the code check-lint: @just run ruff check --select I @just run ruff check # check if the code needs formatting check-format: @just run ruff format --check # check that the readme renders check-readme: @just run python -m readme_renderer ./README.md -o /tmp/README.html # sort the python imports sort-imports: @just run ruff check --fix --select I # format the code and sort imports format: sort-imports just --fmt --unstable @just run ruff format # sort the imports and fix linting issues lint: sort-imports @just run ruff check --fix # fix formatting, linting issues and import sorting fix: lint format # run all static checks check: check-lint check-format check-types check-package check-docs check-docs-links check-readme # run tests test *TESTS: @just run pytest --cov-append {{ TESTS }} # run the pre-commit checks precommit: @just run pre-commit # erase any coverage data coverage-erase: @just run coverage erase # generate the test coverage report coverage: @just run coverage combine --keep *.coverage @just run coverage report @just run coverage xml # run the command in the virtual environment run +ARGS: uv run --all-extras {{ ARGS }} # validate the given version string against the lib version [script] validate_version VERSION: import re import tomllib from sphinxcontrib import typer from packaging.version import Version raw_version = "{{ VERSION }}".lstrip("v") version_obj = Version(raw_version) # the version should be normalized assert str(version_obj) == raw_version # make sure all places the version appears agree assert raw_version == tomllib.load(open('pyproject.toml', 'rb'))['project']['version'] assert raw_version == typer.__version__ print(raw_version) # issue a relase for the given semver string (e.g. 2.1.0) release VERSION: @just validate_version v{{ VERSION }} git tag -s v{{ VERSION }} -m "{{ VERSION }} Release" git push origin v{{ VERSION }} sphinx-contrib-typer-058f2e1/pyproject.toml000066400000000000000000000055651514345263500211150ustar00rootroot00000000000000[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "sphinxcontrib-typer" version = "0.8.0" requires-python = ">=3.10,<4.0" authors = [ {name = "Brian Kohan", email = "bckohan@gmail.com"}, ] license = "MIT" license-files = [ "LICENSE" ] description = "Auto generate docs for typer commands." readme = "README.md" repository = "https://github.com/sphinx-contrib/typer" homepage = "https://sphinxcontrib-typer.readthedocs.io" classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Environment :: Web Environment", "Framework :: Sphinx", "Framework :: Sphinx :: Extension", "Topic :: Documentation :: Sphinx", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Topic :: Documentation", "Topic :: Utilities", "Topic :: Software Development :: Libraries :: Python Modules", ] dependencies = [ "sphinx>=6.0", "typer>=0.22.0,<1.0.0" ] [project.urls] "Homepage" = "https://sphinxcontrib-typer.readthedocs.io" "Documentation" = "https://sphinxcontrib-typer.readthedocs.io" "Repository" = "https://github.com/sphinx-contrib/typer" "Issues" = "https://github.com/sphinx-contrib/typer/issues" "Changelog" = "https://sphinxcontrib-typer.readthedocs.io/en/stable/changelog.html" [tool.uv] package = true [tool.hatch.build.targets.wheel] packages = ["src/sphinxcontrib"] [project.optional-dependencies] html = [ "selenium>=4.0.0,<5.0.0", "webdriver-manager>=3.0.0,<5.0.0", ] pdf = [ "cairosvg>=2.7.0,<3.0.0", "lxml>=4.2.0,<7.0.0" ] png = [ "selenium>=4.0.0,<5.0.0", "webdriver-manager>=3.0.0,<5.0.0", "pillow>=8.0.0" ] [dependency-groups] dev = [ "beautifulsoup4>=4.13.5", "doc8>=1.1.2", "furo>=2025.7.19", "ipdb>=0.13.13", "pytest>=8.4.2", "pytest-cov>=7.0.0", "ruff>=0.13.1", "sphinx-autobuild>=2024.10.3", "readme-renderer[md]>=40.0", "scikit-learn>=1.6.1", "pypdf>=6.1.0", "scikit-image>=0.24.0", "numpy>=2.0.2", "scipy>=1.13.1", "sphinx-rtd-theme>=3.0.2", "pre-commit>=4.3.0", "tomlkit>=0.13.3", ] [tool.ruff] line-length = 88 exclude = [ "doc", "dist" ] [tool.ruff.lint] exclude = [ "tests/**/*" ] [tool.pytest.ini_options] testpaths = [ "tests/tests.py", ] addopts = [ "--doctest-modules", "--cov=sphinxcontrib.typer", "--cov-report=html", "--cov-report=xml", "--cov-fail-under=80", "--cov-report=term-missing:skip-covered", "--no-cov-on-fail", #"-x", #"--pdb", #"--flake8", ] [tool.doc8] max-line-length = 100 sphinx-contrib-typer-058f2e1/src/000077500000000000000000000000001514345263500167555ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/src/sphinxcontrib/000077500000000000000000000000001514345263500216475ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/src/sphinxcontrib/typer/000077500000000000000000000000001514345263500230125ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/src/sphinxcontrib/typer/__init__.py000066400000000000000000001142311514345263500251250ustar00rootroot00000000000000r""" :: ███████╗██████╗ ██╗ ██╗██╗███╗ ██╗██╗ ██╗ ██╔â•â•â•â•â•██╔â•â•██╗██║ ██║██║████╗ ██║╚██╗██╔╠███████╗██████╔â•███████║██║██╔██╗ ██║ ╚███╔╠╚â•â•â•â•██║██╔â•â•â•╠██╔â•â•██║██║██║╚██╗██║ ██╔██╗ ███████║██║ ██║ ██║██║██║ ╚████║██╔╠██╗ ╚â•â•â•â•â•â•â•╚â•╠╚â•╠╚â•â•╚â•â•╚â•╠╚â•â•â•â•╚â•╠╚â•╠████████╗██╗ ██╗██████╗ ███████╗██████╗ ╚â•â•██╔â•â•â•╚██╗ ██╔â•██╔â•â•██╗██╔â•â•â•â•â•██╔â•â•██╗ ██║ ╚████╔╠██████╔â•█████╗ ██████╔╠██║ ╚██╔╠██╔â•â•â•╠██╔â•â•╠██╔â•â•██╗ ██║ ██║ ██║ ███████╗██║ ██║ ╚â•╠╚â•╠╚â•╠╚â•â•â•â•â•â•â•╚â•╠╚â•â• """ import base64 import contextlib import hashlib import inspect import io import os import re import traceback import typing as t from contextlib import contextmanager from enum import Enum from html import escape as html_escape from importlib import import_module from importlib.util import find_spec from pathlib import Path from pprint import pformat import click from docutils import nodes from docutils.parsers import rst from docutils.parsers.rst import directives from rich import terminal_theme as rich_theme from rich.console import Console from rich.theme import Theme from sphinx import application from sphinx.addnodes import pending_xref from sphinx.util import logging from sphinx.util.nodes import make_refnode from typer import rich_utils as typer_rich_utils from typer.core import MarkupMode, TyperGroup from typer.main import Typer from typer.main import get_command as get_typer_command from typer.models import Context as TyperContext from typer.models import TyperInfo VERSION = (0, 8, 0) __title__ = "SphinxContrib Typer" __version__ = ".".join(str(i) for i in VERSION) __author__ = "Brian Kohan" __license__ = "MIT" __copyright__ = "Copyright 2023-2025 Brian Kohan" SELENIUM_DEFAULT_WINDOW_WIDTH = 1920 SELENIUM_DEFAULT_WINDOW_HEIGHT = 2048 def get_function(function: t.Union[str, t.Callable[..., t.Any]]): if callable(function): return function if isinstance(function, str): parts = function.split(".") return getattr(import_module(".".join(parts[0:-1])), parts[-1]) def _filter_commands(ctx: click.Context, cmd_filter: t.List[str]): return [ctx.command.get_command(ctx, cmd_name) for cmd_name in cmd_filter] def _add_dependency(env, command): cb = getattr(command, "callback", None) cb = getattr(cb, "__wrapped__", cb) if cb: env.note_dependency(inspect.getfile(cb)) def _command_path(ctx: t.Optional[click.Context]): parts = [] while ctx: parts.append(ctx.info_name) ctx = ctx.parent return ":".join(reversed(parts)) class RenderTarget(str, Enum): HTML = "html" SVG = "svg" TEXT = "text" def __str__(self) -> str: return self.value class RenderTheme(str, Enum): LIGHT = "light" MONOKAI = "monokai" DIMMED_MONOKAI = "dimmed_monokai" NIGHT_OWLISH = "night_owlish" DARK = "dark" RED_SANDS = "red_sands" BLUE_WAVES = "blue_waves" def __str__(self) -> str: return self.value @property def terminal_theme(self) -> rich_theme.TerminalTheme: return { RenderTheme.LIGHT: rich_theme.DEFAULT_TERMINAL_THEME, RenderTheme.MONOKAI: rich_theme.MONOKAI, RenderTheme.DIMMED_MONOKAI: rich_theme.DIMMED_MONOKAI, RenderTheme.NIGHT_OWLISH: rich_theme.NIGHT_OWLISH, RenderTheme.DARK: rich_theme.SVG_EXPORT_THEME, RenderTheme.RED_SANDS: rich_theme.TerminalTheme( (132, 42, 38), # background (210, 193, 159), # text [ (210, 193, 159), # (0, 0, 0), # required (77, 218, 77), # option on short name (227, 189, 57), # Usage/metavar (210, 193, 159), # (0, 18, 140), # option off (75, 214, 225), # option on/command names (210, 193, 159), # ], ), RenderTheme.BLUE_WAVES: rich_theme.TerminalTheme( (20, 118, 247), # background (250, 240, 250), # text [ (250, 240, 250), # (0, 0, 0), # required (0, 255, 0), # option on short name (227, 189, 57), # Usage/metavar (250, 240, 250), # (2, 2, 214), # option off (146, 226, 252), # option on/command names (250, 240, 250), # ], ), }[self] Command = t.Union[click.Command, click.Group] """ Callbacks that return a dict of kwargs to pass to various renderer functions must all have the RenderCallback function signature: """ RenderCallback = t.Callable[ [ "TyperDirective", # directive - the TyperDirective instance str, # name - the name of the command Command, # command - the command instance click.Context, # ctx - the click.Context instance t.Optional[click.Context], # parent - the parent click.Context instance ], t.Dict[str, t.Any], ] """ Custom render options can be provided at a python path that resolves to the following type. Either a dictionary of kwargs to pass to the relevant function or a callable that returns a dictionary of kwargs to pass to the relevant function """ RenderOptions = t.Union[t.Dict[str, t.Any], RenderCallback] class TyperDirective(rst.Directive): """ A directive that renders a Typer app or Click command help text as either an html, text literal or svg image node depending on the builder and configuraton. Ex usage. .. code-block:: rst .. typer:: import.path.to.typer.app:subcommand :prog: script_name """ logger = logging.getLogger("sphinxcontrib.typer") has_content = False required_arguments = 1 option_spec = { "prog": directives.unchanged_required, "make-sections": directives.flag, "show-nested": directives.flag, "markup-mode": directives.unchanged, "width": directives.nonnegative_int, "theme": RenderTheme, "svg-kwargs": directives.unchanged, "text-kwargs": directives.unchanged, "html-kwargs": directives.unchanged, "console-kwargs": directives.unchanged, "preferred": RenderTarget, "builders": directives.unchanged, "iframe-height": directives.nonnegative_int, "convert-png": directives.unchanged, } # resolved options prog_name: str nested: bool make_sections: bool width: int iframe_height: t.Optional[int] = None typer_convert_png: bool = False console: Console parent: click.Context theme: RenderTheme = RenderTheme.LIGHT preferred: t.Optional[RenderTarget] = None markup_mode: MarkupMode # the console_kwargs option can be a dict or a callable that returns a dict, the callable # must conform to the RenderOptions signature console_kwargs: RenderOptions html_kwargs: RenderOptions svg_kwargs: RenderOptions text_kwargs: RenderOptions target: RenderTarget builder_targets = { **{ builder: [RenderTarget.SVG, RenderTarget.HTML, RenderTarget.TEXT] for builder in [ "html", "dirhtml", "singlehtml", "htmlhelp", "qthelp", "devhelp", ] }, "epub": [RenderTarget.HTML, RenderTarget.SVG, RenderTarget.TEXT], **{ builder: [RenderTarget.SVG, RenderTarget.TEXT] for builder in ["latex", "latexpdf", "texinfo"] }, **{builder: [RenderTarget.TEXT] for builder in ["text", "gettext"]}, } @property def builder(self) -> str: return self.env.app.builder.name def uuid(self, normal_cmd: str) -> str: """ Get a repeatable unique hash id for a given directive instance and command. This is used to generate repeatable unique filenames for any build artifacts like svg -> pdf conversions. :param normal_cmd: The normalized command name """ # Contextual information source = self.state_machine.get_source_and_line()[0] line_number = self.state_machine.get_source_and_line()[1] source = os.path.relpath(source, self.env.app.builder.srcdir) return hashlib.sha256( f"{source}.{line_number}[{normal_cmd}]".encode("utf-8") ).hexdigest()[:8] def import_object( self, obj_path: t.Optional[str], accessor: t.Callable[[t.Any, str, t.Any], t.Any] = lambda obj, attr, _: getattr( obj, attr ), ) -> t.Any: """ Imports an arbitrary object from a python string path. Delimiters can be '.', '::' or ':'. :param obj_path: The python path to the object, if False, returns None """ if not obj_path: return None parts = re.split(r"::|[.:]", obj_path) tries = 1 try: while True: # walk up the import path until we find something importable # then walk down the path fetching all the attributes # this allows import strings to reach into nested class # attributes try: tries += 1 try_path = ".".join(parts[0 : -(tries - 1)]) obj = import_module(try_path) file_spec = getattr(find_spec(try_path), "origin", None) if file_spec: self.env.note_dependency(file_spec) for attr in parts[-(tries - 1) :]: obj = accessor(obj, attr, try_path) break except (ImportError, ModuleNotFoundError): if tries >= len(parts): raise except (Exception, SystemExit) as exc: err_msg = f'Failed to import "{obj_path}"' if isinstance(exc, SystemExit): err_msg += "The module appeared to call sys.exit()." else: err_msg += "The following exception was raised:\n{}".format( traceback.format_exc() ) raise self.severe(err_msg) return obj def load_root_command(self, typer_path: str) -> t.Union[click.Command, click.Group]: """ Load the module. :param typer_path: The python path to the Typer app instance. """ def resolve_root_command(obj): if isinstance(obj, (click.Command, click.Group)): return obj # use lenient duck typing check incase obj is a proxy for a Typer instance if isinstance(obj, Typer) or isinstance( getattr(obj, "info", None), TyperInfo ): return get_typer_command(obj) if callable(obj): ret = obj() if isinstance(ret, Typer) or isinstance( getattr(obj, "info", None), TyperInfo ): return get_typer_command(obj) if isinstance(ret, (click.Command, click.Group)): return ret raise self.error( f'"{typer_path}" of type {type(obj)} is not Typer, click.Command or ' "click.Group." ) def access_command( obj, attr, imprt_path ) -> t.Union[click.Command, click.Group]: attr_obj = None try: attr_obj = getattr(obj, attr) return resolve_root_command(attr_obj) except Exception: try: self.parent = TyperContext( resolve_root_command(obj), # we can't trust the name attribute for the first # command - but it is probably the best bet for # subsequent commands - so if this is a nested # import pull out the name attribute if it exists # otherwise we use the last successful import path # part because it is probably the module with main info_name=( ( getattr(obj, "name", "") if getattr(self, "parent", None) else "" ) or imprt_path.split(".")[-1] ), parent=getattr(self, "parent", None), ) cmds = _filter_commands(self.parent, [attr]) if cmds: return cmds[0] except (IndexError, rst.DirectiveError): if attr_obj: return attr_obj raise return resolve_root_command( self.import_object(typer_path, accessor=access_command) ) def get_html(self, **options): return self.console.export_html( **{"theme": self.theme.terminal_theme, **options, "clear": False} ) def get_svg(self, **options): return self.console.export_svg( **{"theme": self.theme.terminal_theme, **options, "clear": False} ) def get_text(self, **options): return self.console.export_text(**{**options, "clear": False}) def generate_nodes( self, name: str, command: click.Command, parent: t.Optional[click.Context], ) -> t.List[nodes.section]: """ Generate the relevant Sphinx nodes. Generate node help for `click.Group` or `click.Command`. :param command: Instance of `click.Group` or `click.Command` :param parent: Instance of `typer.models.Context`, or None :returns: A list of nested docutil nodes """ ctx = TyperContext( command, info_name=name, parent=parent, terminal_width=self.width, max_content_width=self.width, ) _add_dependency(self.env, command) if command.hidden: return [] normal_cmd = section_title = _command_path(ctx).replace(":", " ") section_id = nodes.make_id(section_title) if not getattr(self, "parent", None): section_title = section_title.split(" ")[-1] section = ( nodes.section( "", nodes.title(text=section_title), ids=[section_id], names=[nodes.fully_normalize_name(section_title)], ) if self.make_sections else nodes.container() ) self.env.domaindata["std"].setdefault("typer", {})[section_id] = ( self.env.docname, section_id, normal_cmd, ) # Summary def resolve_options( options: RenderOptions, parameter: str ) -> t.Dict[str, t.Any]: if callable(options): options = options(self, name, command, ctx, parent) if isinstance(options, dict): return options raise self.severe( f"Invalid {parameter}, must be a dict or callable, got {type(options)}" ) def get_console(stderr: bool = False) -> Console: self.console = Console( **{ "theme": Theme( { "option": typer_rich_utils.STYLE_OPTION, "switch": typer_rich_utils.STYLE_SWITCH, "negative_option": typer_rich_utils.STYLE_NEGATIVE_OPTION, "negative_switch": typer_rich_utils.STYLE_NEGATIVE_SWITCH, "metavar": typer_rich_utils.STYLE_METAVAR, "metavar_sep": typer_rich_utils.STYLE_METAVAR_SEPARATOR, "usage": typer_rich_utils.STYLE_USAGE, }, ), "highlighter": typer_rich_utils.highlighter, "color_system": None if self.target is RenderTarget.TEXT else typer_rich_utils.COLOR_SYSTEM, "force_terminal": typer_rich_utils.FORCE_TERMINAL, "width": self.width or typer_rich_utils.MAX_WIDTH, "stderr": stderr, # overrides any defaults above **resolve_options(self.console_kwargs, "console-kwargs"), "record": True, } ) return self.console # todo # typer provides no official way to alter the console that prints out the help # command so we have to monkey patch it - revisit in future if this changes! # we also monkey patch get_help incase its a click command orig_getter = typer_rich_utils._get_rich_console orig_format_help = command.format_help command.rich_markup_mode = getattr( self, "markup_mode", getattr(command, "rich_markup_mode", "markdown") ) command.format_help = TyperGroup.format_help.__get__(command, command.__class__) typer_rich_utils._get_rich_console = get_console with contextlib.redirect_stdout(io.StringIO()): command.get_help(ctx) typer_rich_utils._get_rich_console = orig_getter command.format_help = orig_format_help ############################################################################## export_options = resolve_options( getattr(self, f"{self.target}_kwargs", {}), f"{self.target}-kwargs" ) rendered = getattr(self, f"get_{self.target}")( **({"title": section_title} if self.target is RenderTarget.SVG else {}), **export_options, ) def to_path(name: str, ext: str) -> Path: return ( Path(self.env.app.builder.outdir) / f"{name.replace(':', '_').replace(' ', '_')}_{self.uuid(name)}.{ext}" ) if self.typer_convert_png: png_path = to_path(normal_cmd, "png") get_function(self.env.app.config.typer_convert_png)( self, rendered, png_path ) section += nodes.image( uri=os.path.relpath(png_path, Path(self.env.srcdir)), alt=section_title, ) elif self.target == RenderTarget.HTML: section += nodes.raw( "", get_function(self.env.app.config.typer_render_html)( self, normal_cmd, rendered ), format="html", ) elif self.target == RenderTarget.SVG: if "html" in self.builder: section += nodes.raw("", rendered, format="html") else: svg_path = to_path(normal_cmd, "svg") pdf_path = to_path(normal_cmd, "pdf") svg_path.write_text(rendered) get_function(self.env.app.config.typer_svg2pdf)( self, rendered, pdf_path ) section += nodes.image( uri=os.path.relpath(pdf_path, Path(self.env.srcdir)), alt=section_title, ) elif self.target == RenderTarget.TEXT: section += nodes.literal_block("", rendered) else: raise self.severe(f"Invalid typer render target: {self.target}") # recurse through subcommands if we should if isinstance(command, click.MultiCommand): commands = _filter_commands(ctx, command.list_commands(ctx)) for command in commands: if self.nested: section.extend( self.generate_nodes(command.name, command, parent=ctx) ) else: _add_dependency(self.env, command) return [section] def run(self) -> t.Iterable[nodes.section]: self.env = self.state.document.settings.env command = self.load_root_command(self.arguments[0]) self.make_sections = "make-sections" in self.options self.nested = "show-nested" in self.options self.prog_name = self.options.get("prog", "") if "markup-mode" in self.options: self.markup_mode = self.options["markup-mode"] if not self.prog_name: try: self.prog_name = ( command.callback.__module__.split(".")[-1] if hasattr(command, "callback") and not hasattr(self, "parent") else re.split(r"::|[.:]", self.arguments[0])[-1] ) except Exception as err: raise self.severe( "Unable to determine program name, please specify using :prog:" ) from err self.prog_name = self.prog_name.strip() self.width = self.options.get("width", 65) self.iframe_height = self.options.get("iframe-height", None) # if no builders supplied but convert-png is set, # force png for all builders, otherwise require the builder # to be in the list of typer_convert_png builders self.typer_convert_png = "convert-png" in self.options if self.typer_convert_png: builders = self.options["convert-png"].strip() self.typer_convert_png = self.builder in builders if builders else True for trg in ["console", *list(RenderTarget)]: setattr( self, f"{trg}_kwargs", self.import_object(self.options.get(f"{trg}-kwargs", None)) or {}, ) self.preferred = self.options.get("preferred", None) self.theme = self.options.get("theme", self.theme) builder_targets = {} for builder_target in self.options.get("builders", "").split(":"): if builder_target.strip(): builder, targets = builder_target.split("=")[0:2] builder_targets[builder.strip()] = [ RenderTarget(target.strip()) for target in targets.split(",") ] builder_targets = {**self.builder_targets, **builder_targets} if self.typer_convert_png: self.target = ( self.preferred or (builder_targets.get(self.builder, []) or [RenderTarget.SVG])[0] ) elif self.builder not in builder_targets: self.target = self.preferred or RenderTarget.TEXT self.logger.debug( "Unable to resolve render target for builder: %s - using: %s", self.builder, self.target, ) else: supported = builder_targets[self.builder] self.target = ( self.preferred if self.preferred in supported else supported[0] ) parent = getattr(self, "parent", None) if parent and self.options.get("prog", None): # we unset this because we're not at the root command and this gets # messed up for whatever reason # https://github.com/sphinx-contrib/typer/issues/24 parent.info_name = "" return self.generate_nodes(self.prog_name, command, parent) def typer_get_iframe_height( directive: TyperDirective, normal_cmd: str, html_page: str ) -> int: """ The default iframe height calculation function. The iframe height resolution proceeds as follows: 1) Return the global iframe-height parameter if one was supplied as a parameter on the directive. 2) Check for a cached height value. 3) Attempt to use Selenium to dynamically determine the height of the iframe. Padding will be added from the config.typer_iframe_height_padding configuration value. The resulting height is then cached if that path is not None. If the attempt to use Selenium fails (it is not installed) a warning is issued and a default height of 600 is returned. :param directive: The TyperDirective instance :param normal_cmd: The normalized name of the command. (Subcommands are delimited by :) :param html_page: The full html document that will be rendered in the iframe """ if directive.iframe_height is not None: return directive.iframe_height if not hasattr(directive.env, "iframe_heights"): directive.env.iframe_heights = {} if height := directive.env.iframe_heights.get(normal_cmd, None): return height with get_function(directive.env.app.config.typer_get_web_driver)( directive ) as driver: # use base64 to avoid issues with special characters driver.get( f"data:text/html;base64," f"{base64.b64encode(html_page.encode('utf-8')).decode()}" ) height = ( int( driver.execute_script( "return document.documentElement.getBoundingClientRect().height" ) ) + directive.env.app.config.typer_iframe_height_padding ) directive.env.iframe_heights[normal_cmd] = height return height def typer_render_html( directive: TyperDirective, normal_cmd: str, html_page: str ) -> str: """ The default html rendering function. This function returns the html console output wrapped in an iframe. The height of the iframe is dynamically determined by calling the configured typer_get_iframe_height function. :param directive: The TyperDirective instance :param normal_cmd: The normalized name of the command. (Subcommands are delimited by :) :param html_page: The html page rendered by console.export_html """ height = get_function(directive.env.app.config.typer_get_iframe_height)( directive, normal_cmd, html_page ) return ( f'' ) def typer_svg2pdf(directive: TyperDirective, svg_contents: str, pdf_path: str): """ The default typer_svg2pdf function. This function uses the cairosvg package to convert svg to pdf. .. note:: You will likely need to install fonts locally on your machine for the output of these conversions to look correct. The default font used by the svg export from rich is `FiraCode `_. :param directive: The TyperDirective instance :param svg_contents: The svg contents to convert to pdf :param pdf_path: The path to write the pdf to """ try: import cairosvg cairosvg.svg2pdf(bytestring=svg_contents, write_to=str(pdf_path)) except ImportError: directive.severe("cairosvg must be installed to render SVG in pdfs") @contextmanager def typer_get_web_driver( directive: TyperDirective, width: int = SELENIUM_DEFAULT_WINDOW_WIDTH, height: int = SELENIUM_DEFAULT_WINDOW_HEIGHT, ) -> t.Any: """ The default get_web_driver function. This function yields a selenium web driver instance. It requires selenium to be installed. To override this function with a custom function see the ``typer_get_web_driver`` configuration parameter. .. note:: This must be implemented as a context manager that yields the webdriver instance and cleans it up on exit! :param directive: The TyperDirective instance """ import platform try: from selenium import webdriver from selenium.webdriver.chrome.options import Options as ChromeOptions except ImportError: raise directive.severe( "This feature requires selenium and webdriver-manager to be installed." ) # Set up headless browser options def opts(options=ChromeOptions()): options.add_argument("--headless") options.add_argument("--no-sandbox") options.add_argument("--disable-dev-shm-usage") options.add_argument("--disable-gpu") options.add_argument(f"--window-size={width}x{height}") return options def chrome(): from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager try: return webdriver.Chrome(options=opts()) except Exception: return webdriver.Chrome( service=Service(ChromeDriverManager().install()), options=opts() ) def chromium(): from selenium.webdriver.chrome.service import Service as ChromiumService from webdriver_manager.chrome import ChromeDriverManager from webdriver_manager.core.os_manager import ChromeType return webdriver.Chrome( service=ChromiumService( ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install() ), options=opts(), ) def firefox(): from selenium import webdriver from selenium.webdriver.firefox.options import Options from selenium.webdriver.firefox.service import Service as FirefoxService from webdriver_manager.firefox import GeckoDriverManager return webdriver.Firefox( service=FirefoxService(GeckoDriverManager().install()), options=opts(Options()), ) def edge(): from selenium.webdriver.edge.options import Options from selenium.webdriver.edge.service import Service as EdgeService from webdriver_manager.microsoft import EdgeChromiumDriverManager options = Options() options.use_chromium = True return webdriver.Edge( service=EdgeService(EdgeChromiumDriverManager().install()), options=opts(options), ) services = [ chrome, edge if platform.system().lower() == "windows" else chromium, firefox, ] driver = None for service in services: try: driver = service() break # use the first one that works! except Exception as err: directive.debug(f"Unable to initialize webdriver {service.__name__}: {err}") if driver: yield driver driver.quit() else: raise directive.severe("Unable to initialize any webdriver.") def typer_convert_png( directive: TyperDirective, rendered: str, png_path: t.Union[str, Path], selenium_width: int = SELENIUM_DEFAULT_WINDOW_WIDTH, selenium_height: int = SELENIUM_DEFAULT_WINDOW_HEIGHT, ): """ The default typer_convert_png function. This function writes a png file to the given path by taking a selenium screen shot. It requires selenium to be installed. To override this function with a custom function see the ``typer_convert_png`` configuration parameter. :param directive: The TyperDirective instance :param rendered: The rendered command help. May be html, svg, or text. :param png_path: The path to write the png to :param selenium_width: The width of the selenium window - must be larger than the png to avoid cropping, default auto determine :param selenium_height: The height of the selenium window - must be larger than the png to avoid cropping, default auto determine """ import tempfile from io import BytesIO from PIL import Image from selenium.webdriver.common.by import By tag = "code" with get_function(directive.env.app.config.typer_get_web_driver)( directive ) as driver: with tempfile.NamedTemporaryFile(suffix=".html") as tmp: if directive.target is RenderTarget.TEXT: tag = "pre" rendered = f"
{rendered}
" elif directive.target is RenderTarget.SVG: tag = "svg" rendered = f"{rendered}" tmp.write(rendered.encode("utf-8")) tmp.flush() driver.get(f"file://{tmp.name}") png = driver.get_screenshot_as_png() # Find the element you want a screenshot of element = driver.find_element(By.CSS_SELECTOR, tag) pixel_ratio = driver.execute_script("return window.devicePixelRatio") # Get the element's location and size location = element.location size = element.size if size["width"] > selenium_width or size["height"] > selenium_height: # if our window is too small, resize it with some padding and try again return typer_convert_png( directive, rendered, png_path, size["width"] + 100, size["height"] + 100, ) # Open the screenshot and crop it to the element im = Image.open(BytesIO(png)) left = location["x"] * pixel_ratio top = location["y"] * pixel_ratio if directive.target is RenderTarget.TEXT: # getting the width of the text is actually a bit tricky script = """ const pre = arguments[0]; const textContent = pre.textContent || pre.innerText; const temporarySpan = document.createElement('span'); document.body.appendChild(temporarySpan); // Copy styles to match formatting const preStyle = window.getComputedStyle(pre); temporarySpan.style.fontFamily = preStyle.fontFamily; temporarySpan.style.fontSize = preStyle.fontSize; temporarySpan.style.whiteSpace = 'pre'; temporarySpan.textContent = textContent; return temporarySpan.offsetWidth; """ width = driver.execute_script(script, element) right = left + width * pixel_ratio else: right = left + size["width"] * pixel_ratio bottom = top + size["height"] * pixel_ratio im = im.crop((left, top, right, bottom)) # Defines crop points im.save(str(png_path)) # Saves the screenshot _link_regex = re.compile(r"([^<]+)(?:<(.+?)>)?") def _link_and_text(text): return _link_regex.search(text).groups() def resolve_typer_reference(app, env, node, contnode): if node["reftype"] != "typer": return target_id = node["reftarget"] if target_id in env.domaindata["std"].get("typer", {}): docname, labelid, sectionname = env.domaindata["std"]["typer"][target_id] refnode = make_refnode( env.app.builder, node["refdoc"], docname, labelid, nodes.Text(node["reftitle"] or sectionname.strip()), target_id, ) return refnode else: lineno = node.line or getattr(node.parent, "line", 0) error_message = env.get_doctree(node["refdoc"]).reporter.error( f"Unresolved :typer: reference: '{target_id}' in document '{node['refdoc']}'. " f"Expected one of: {pformat(list(env.domaindata['std'].get('typer', {}).keys()), indent=2)}", line=lineno, ) msgid = node.document.set_id(error_message, node.parent) problematic = nodes.problematic(node.rawsource, node.rawsource, refid=msgid) prbid = node.document.set_id(problematic) error_message.add_backref(prbid) return problematic def typer_ref_role(name, rawtext, text, lineno, inliner, options={}, content=[]): env = inliner.document.settings.env title, link = _link_and_text(text) title = title.strip() if link: link = link.strip() target_id = nodes.make_id(link or title) if target_id in env.domaindata["std"].get("typer", {}): docname, labelid, sectionname = env.domaindata["std"]["typer"][target_id] refnode = make_refnode( env.app.builder, env.docname, docname, labelid, nodes.Text(sectionname.strip() if not link else title), target_id, ) return [refnode], [] else: pending = pending_xref( rawtext, refdomain="std", reftype="typer", reftarget=target_id, modname=None, classname=None, refexplicit=True, refwarn=True, reftitle=title if link else None, refdoc=env.docname, ) pending += nodes.Text(text) return [pending], [] def setup(app: application.Sphinx) -> t.Dict[str, t.Any]: # Need autodoc to support mocking modules app.add_directive("typer", TyperDirective) app.add_role("typer", typer_ref_role) app.connect("missing-reference", resolve_typer_reference) app.add_config_value( "typer_render_html", "sphinxcontrib.typer.typer_render_html", "env" ) app.add_config_value( "typer_get_iframe_height", "sphinxcontrib.typer.typer_get_iframe_height", "env" ) app.add_config_value("typer_svg2pdf", "sphinxcontrib.typer.typer_svg2pdf", "env") app.add_config_value("typer_iframe_height_padding", 30, "env") app.add_config_value( "typer_convert_png", "sphinxcontrib.typer.typer_convert_png", "env" ) app.add_config_value( "typer_get_web_driver", "sphinxcontrib.typer.typer_get_web_driver", "env" ) return { "version": __version__, "parallel_read_safe": True, "parallel_write_safe": True, } sphinx-contrib-typer-058f2e1/tests/000077500000000000000000000000001514345263500173305ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/tests/click/000077500000000000000000000000001514345263500204155ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/tests/click/LICENSE.rst000066400000000000000000000027031514345263500222330ustar00rootroot00000000000000Copyright 2014 Pallets Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. sphinx-contrib-typer-058f2e1/tests/click/aliases/000077500000000000000000000000001514345263500220365ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/tests/click/aliases/aliases.ini000066400000000000000000000000241514345263500241540ustar00rootroot00000000000000[aliases] ci=commit sphinx-contrib-typer-058f2e1/tests/click/aliases/aliases.py000066400000000000000000000101431514345263500240300ustar00rootroot00000000000000import configparser import os import click class Config: """The config in this example only holds aliases.""" def __init__(self): self.path = os.getcwd() self.aliases = {} def add_alias(self, alias, cmd): self.aliases.update({alias: cmd}) def read_config(self, filename): parser = configparser.RawConfigParser() parser.read([filename]) try: self.aliases.update(parser.items("aliases")) except configparser.NoSectionError: pass def write_config(self, filename): parser = configparser.RawConfigParser() parser.add_section("aliases") for key, value in self.aliases.items(): parser.set("aliases", key, value) with open(filename, "wb") as file: parser.write(file) pass_config = click.make_pass_decorator(Config, ensure=True) class AliasedGroup(click.Group): """This subclass of a group supports looking up aliases in a config file and with a bit of magic. """ def list_commands(self, ctx): return reversed(sorted(super().list_commands(ctx))) def get_command(self, ctx, cmd_name): # Step one: bulitin commands as normal rv = click.Group.get_command(self, ctx, cmd_name) if rv is not None: return rv # Step two: find the config object and ensure it's there. This # will create the config object is missing. cfg = ctx.ensure_object(Config) # Step three: look up an explicit command alias in the config if cmd_name in cfg.aliases: actual_cmd = cfg.aliases[cmd_name] return click.Group.get_command(self, ctx, actual_cmd) # Alternative option: if we did not find an explicit alias we # allow automatic abbreviation of the command. "status" for # instance will match "st". We only allow that however if # there is only one command. matches = [ x for x in self.list_commands(ctx) if x.lower().startswith(cmd_name.lower()) ] if not matches: return None elif len(matches) == 1: return click.Group.get_command(self, ctx, matches[0]) ctx.fail(f"Too many matches: {', '.join(sorted(matches))}") def resolve_command(self, ctx, args): # always return the command's name, not the alias _, cmd, args = super().resolve_command(ctx, args) return cmd.name, cmd, args def read_config(ctx, param, value): """Callback that is used whenever --config is passed. We use this to always load the correct config. This means that the config is loaded even if the group itself never executes so our aliases stay always available. """ cfg = ctx.ensure_object(Config) if value is None: value = os.path.join(os.path.dirname(__file__), "aliases.ini") cfg.read_config(value) return value @click.command(cls=AliasedGroup) @click.option( "--config", type=click.Path(exists=True, dir_okay=False), callback=read_config, expose_value=False, help="The config file to use instead of the default.", ) def cli(): """An example application that supports aliases.""" @cli.command() def push(): """Pushes changes.""" click.echo("Push") @cli.command() def pull(): """Pulls changes.""" click.echo("Pull") @cli.command() def clone(): """Clones a repository.""" click.echo("Clone") @cli.command() def commit(): """Commits pending changes.""" click.echo("Commit") @cli.command() @pass_config def status(config): """Shows the status.""" click.echo(f"Status for {config.path}") @cli.command() @pass_config @click.argument("alias_", metavar="ALIAS", type=click.STRING) @click.argument("cmd", type=click.STRING) @click.option( "--config_file", type=click.Path(exists=True, dir_okay=False), default="aliases.ini" ) def alias(config, alias_, cmd, config_file): """Adds an alias to the specified configuration file.""" config.add_alias(alias_, cmd) config.write_config(config_file) click.echo(f"Added '{alias_}' as alias for '{cmd}'") if __name__ == "__main__": cli() sphinx-contrib-typer-058f2e1/tests/click/aliases/index.rst000066400000000000000000000001151514345263500236740ustar00rootroot00000000000000.. typer:: aliases:cli :show-nested: :preferred: text :width: 65 sphinx-contrib-typer-058f2e1/tests/click/callbacks.py000066400000000000000000000020661514345263500227120ustar00rootroot00000000000000from sphinxcontrib import typer from pathlib import Path import json import os TEST_CALLBACKS = Path(__file__).parent / "callback_record.json" test_callbacks = {} def record_callback(callback): """crude but it works""" if TEST_CALLBACKS.is_file(): os.remove(TEST_CALLBACKS) test_callbacks[callback] = True TEST_CALLBACKS.write_text(json.dumps(test_callbacks)) def typer_get_web_driver(*args, **kwargs): record_callback("typer_get_web_driver") return typer.typer_get_web_driver(*args, **kwargs) def typer_render_html(*args, **kwargs): record_callback("typer_render_html") return typer.typer_render_html(*args, **kwargs) def typer_get_iframe_height(*args, **kwargs): record_callback("typer_get_iframe_height") return typer.typer_get_iframe_height(*args, **kwargs) def typer_svg2pdf(*args, **kwargs): record_callback("typer_svg2pdf") return typer.typer_svg2pdf(*args, **kwargs) def typer_convert_png(*args, **kwargs): record_callback("typer_convert_png") return typer.typer_convert_png(*args, **kwargs) sphinx-contrib-typer-058f2e1/tests/click/completion/000077500000000000000000000000001514345263500225665ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/tests/click/completion/completion.py000066400000000000000000000030421514345263500253100ustar00rootroot00000000000000import os import click from click.shell_completion import CompletionItem class AlphOrderedGroup(click.Group): def list_commands(self, ctx): return sorted(super().list_commands(ctx)) @click.group(cls=AlphOrderedGroup) def cli(): pass @cli.command() @click.option("--dir", type=click.Path(file_okay=False)) def ls(dir): click.echo("\n".join(os.listdir(dir))) def get_env_vars(ctx, param, incomplete): # Returning a list of values is a shortcut to returning a list of # CompletionItem(value). return [k for k in os.environ if incomplete in k] @cli.command(help="A command to print environment variables") @click.argument("envvar", shell_complete=get_env_vars) def show_env(envvar): click.echo(f"Environment variable: {envvar}") click.echo(f"Value: {os.environ[envvar]}") @cli.group(help="A group that holds a subcommand") def group(): pass def list_users(ctx, param, incomplete): # You can generate completions with help strings by returning a list # of CompletionItem. You can match on whatever you want, including # the help. items = [("bob", "butcher"), ("alice", "baker"), ("jerry", "candlestick maker")] out = [] for value, help in items: if incomplete in value or incomplete in help: out.append(CompletionItem(value, help=help)) return out @group.command(help="Choose a user") @click.argument("user", shell_complete=list_users) def select_user(user): click.echo(f"Chosen user is {user}") cli.add_command(group) if __name__ == "__main__": cli() sphinx-contrib-typer-058f2e1/tests/click/completion/index.rst000066400000000000000000000001201514345263500244200ustar00rootroot00000000000000.. typer:: completion:cli :show-nested: :preferred: text :width: 70 sphinx-contrib-typer-058f2e1/tests/click/complex/000077500000000000000000000000001514345263500220645ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/tests/click/complex/complex/000077500000000000000000000000001514345263500235335ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/tests/click/complex/complex/__init__.py000066400000000000000000000000001514345263500256320ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/tests/click/complex/complex/cli.py000066400000000000000000000031661514345263500246620ustar00rootroot00000000000000import os import sys import click CONTEXT_SETTINGS = dict(auto_envvar_prefix="COMPLEX") class Environment: def __init__(self): self.verbose = False self.home = os.getcwd() def log(self, msg, *args): """Logs a message to stderr.""" if args: msg %= args click.echo(msg, file=sys.stderr) def vlog(self, msg, *args): """Logs a message to stderr only if verbose is enabled.""" if self.verbose: self.log(msg, *args) pass_environment = click.make_pass_decorator(Environment, ensure=True) cmd_folder = os.path.abspath(os.path.join(os.path.dirname(__file__), "commands")) class ComplexCLI(click.MultiCommand): def list_commands(self, ctx): rv = [] for filename in os.listdir(cmd_folder): if filename.endswith(".py") and filename.startswith("cmd_"): rv.append(filename[4:-3]) rv.sort() return rv def get_command(self, ctx, name): try: mod = __import__(f"complex.commands.cmd_{name}", None, None, ["cli"]) except ImportError: return return mod.cli @click.command(cls=ComplexCLI, context_settings=CONTEXT_SETTINGS) @click.option( "--home", type=click.Path(exists=True, file_okay=False, resolve_path=True), help="Changes the folder to operate on.", ) @click.option("-v", "--verbose", is_flag=True, help="Enables verbose mode.") @pass_environment def cli(ctx, verbose, home): """A complex command line interface.""" ctx.verbose = verbose if home is not None: ctx.home = home if __name__ == "__main__": cli() sphinx-contrib-typer-058f2e1/tests/click/complex/complex/commands/000077500000000000000000000000001514345263500253345ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/tests/click/complex/complex/commands/__init__.py000066400000000000000000000000001514345263500274330ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/tests/click/complex/complex/commands/cmd_init.py000066400000000000000000000006501514345263500274750ustar00rootroot00000000000000from complex.cli import pass_environment import click @click.command("init", short_help="Initializes a repo.") @click.argument("path", required=False, type=click.Path(resolve_path=True)) @pass_environment def cli(ctx, path): """Initializes a repository.""" if path is None: path = ctx.home ctx.log(f"Initialized the repository in {click.format_filename(path)}") if __name__ == "__main__": cli() sphinx-contrib-typer-058f2e1/tests/click/complex/complex/commands/cmd_status.py000066400000000000000000000004361514345263500300570ustar00rootroot00000000000000from complex.cli import pass_environment import click @click.command("status", short_help="Shows file changes.") @pass_environment def cli(ctx): """Shows file changes in the current working directory.""" ctx.log("Changed files: none") ctx.vlog("bla bla bla, debug info") sphinx-contrib-typer-058f2e1/tests/click/complex/index.rst000066400000000000000000000001701514345263500237230ustar00rootroot00000000000000.. typer:: complex.cli:cli :show-nested: :prog: complex :preferred: text :make-sections: :width: 65 sphinx-contrib-typer-058f2e1/tests/click/conf.py000066400000000000000000000052041514345263500217150ustar00rootroot00000000000000from datetime import datetime import sys from pathlib import Path from sphinxcontrib import typer as sphinxcontrib_typer import json import os # Configuration file for the Sphinx documentation builder. # # This file only contains a selection of the most common options. For a full # list see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html # -- Path setup -------------------------------------------------------------- # get all sub directories from here and add them to the path sys.path.append(str(Path(__file__).parent)) for path in Path(__file__).parent.iterdir(): if path.is_dir(): sys.path.append(str(path)) # -- Project information ----------------------------------------------------- project = "SphinxContrib Typer Tests" copyright = f"2023-{datetime.now().year}, Brian Kohan" author = "Brian Kohan" # The full version, including alpha/beta/rc tags release = sphinxcontrib_typer.__version__ # -- General configuration --------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = ["sphinx_rtd_theme", "sphinxcontrib.typer"] # Add any paths that contain templates here, relative to this directory. templates_path = ["_templates"] # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. exclude_patterns = [] # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # html_theme = "alabaster" # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = [] todo_include_todos = True ########################################################### # Test our typer configuration parameter function overrides typer_render_html = "callbacks.typer_render_html" typer_get_iframe_height = "callbacks.typer_get_iframe_height" typer_svg2pdf = "callbacks.typer_svg2pdf" typer_convert_png = "callbacks.typer_convert_png" typer_get_web_driver = "callbacks.typer_get_web_driver" typer_iframe_height_padding = 40 def setup(app): app.connect("builder-inited", iframe_cache) def iframe_cache(app): if not hasattr(app.env, "iframe_heights"): app.env.iframe_heights = {} app.env.iframe_heights["validation"] = 347 sphinx-contrib-typer-058f2e1/tests/click/imagepipe/000077500000000000000000000000001514345263500223555ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/tests/click/imagepipe/imagepipe.py000066400000000000000000000203711514345263500246720ustar00rootroot00000000000000from functools import update_wrapper from PIL import Image from PIL import ImageEnhance from PIL import ImageFilter import click class AlphOrderedGroup(click.Group): def list_commands(self, ctx): return sorted(super().list_commands(ctx)) @click.group(cls=AlphOrderedGroup, chain=True) def cli(): """This script processes a bunch of images through pillow in a unix pipe. One commands feeds into the next. Example: \b imagepipe open -i example01.jpg resize -w 128 display imagepipe open -i example02.jpg blur save """ @cli.result_callback() def process_commands(processors): """This result callback is invoked with an iterable of all the chained subcommands. As in this example each subcommand returns a function we can chain them together to feed one into the other, similar to how a pipe on unix works. """ # Start with an empty iterable. stream = () # Pipe it through all stream processors. for processor in processors: stream = processor(stream) # Evaluate the stream and throw away the items. for _ in stream: pass def processor(f): """Helper decorator to rewrite a function so that it returns another function from it. """ def new_func(*args, **kwargs): def processor(stream): return f(stream, *args, **kwargs) return processor return update_wrapper(new_func, f) def generator(f): """Similar to the :func:`processor` but passes through old values unchanged and does not pass through the values as parameter. """ @processor def new_func(stream, *args, **kwargs): yield from stream yield from f(*args, **kwargs) return update_wrapper(new_func, f) def copy_filename(new, old): new.filename = old.filename return new @cli.command("open") @click.option( "-i", "--image", "images", type=click.Path(), multiple=True, help="The image file to open.", ) @generator def open_cmd(images): """Loads one or multiple images for processing. The input parameter can be specified multiple times to load more than one image. """ for image in images: try: click.echo(f"Opening '{image}'") if image == "-": img = Image.open(click.get_binary_stdin()) img.filename = "-" else: img = Image.open(image) yield img except Exception as e: click.echo(f"Could not open image '{image}': {e}", err=True) @cli.command("save") @click.option( "--filename", default="processed-{:04}.png", type=click.Path(), help="The format for the filename.", show_default=True, ) @processor def save_cmd(images, filename): """Saves all processed images to a series of files.""" for idx, image in enumerate(images): try: fn = filename.format(idx + 1) click.echo(f"Saving '{image.filename}' as '{fn}'") yield image.save(fn) except Exception as e: click.echo(f"Could not save image '{image.filename}': {e}", err=True) @cli.command("display") @processor def display_cmd(images): """Opens all images in an image viewer.""" for image in images: click.echo(f"Displaying '{image.filename}'") image.show() yield image @cli.command("resize") @click.option("-w", "--width", type=int, help="The new width of the image.") @click.option("-h", "--height", type=int, help="The new height of the image.") @processor def resize_cmd(images, width, height): """Resizes an image by fitting it into the box without changing the aspect ratio. """ for image in images: w, h = (width or image.size[0], height or image.size[1]) click.echo(f"Resizing '{image.filename}' to {w}x{h}") image.thumbnail((w, h)) yield image @cli.command("crop") @click.option( "-b", "--border", type=int, help="Crop the image from all sides by this amount." ) @processor def crop_cmd(images, border): """Crops an image from all edges.""" for image in images: box = [0, 0, image.size[0], image.size[1]] if border is not None: for idx, val in enumerate(box): box[idx] = max(0, val - border) click.echo(f"Cropping '{image.filename}' by {border}px") yield copy_filename(image.crop(box), image) else: yield image def convert_rotation(ctx, param, value): if value is None: return value = value.lower() if value in ("90", "r", "right"): return (Image.ROTATE_90, 90) if value in ("180", "-180"): return (Image.ROTATE_180, 180) if value in ("-90", "270", "l", "left"): return (Image.ROTATE_270, 270) raise click.BadParameter(f"invalid rotation '{value}'") def convert_flip(ctx, param, value): if value is None: return value = value.lower() if value in ("lr", "leftright"): return (Image.FLIP_LEFT_RIGHT, "left to right") if value in ("tb", "topbottom", "upsidedown", "ud"): return (Image.FLIP_LEFT_RIGHT, "top to bottom") raise click.BadParameter(f"invalid flip '{value}'") @cli.command("transpose") @click.option( "-r", "--rotate", callback=convert_rotation, help="Rotates the image (in degrees)" ) @click.option("-f", "--flip", callback=convert_flip, help="Flips the image [LR / TB]") @processor def transpose_cmd(images, rotate, flip): """Transposes an image by either rotating or flipping it.""" for image in images: if rotate is not None: mode, degrees = rotate click.echo(f"Rotate '{image.filename}' by {degrees}deg") image = copy_filename(image.transpose(mode), image) if flip is not None: mode, direction = flip click.echo(f"Flip '{image.filename}' {direction}") image = copy_filename(image.transpose(mode), image) yield image @cli.command("blur") @click.option("-r", "--radius", default=2, show_default=True, help="The blur radius.") @processor def blur_cmd(images, radius): """Applies gaussian blur.""" blur = ImageFilter.GaussianBlur(radius) for image in images: click.echo(f"Blurring '{image.filename}' by {radius}px") yield copy_filename(image.filter(blur), image) @cli.command("smoothen") @click.option( "-i", "--iterations", default=1, show_default=True, help="How many iterations of the smoothen filter to run.", ) @processor def smoothen_cmd(images, iterations): """Applies a smoothening filter.""" for image in images: click.echo( f"Smoothening {image.filename!r} {iterations}" f" time{'s' if iterations != 1 else ''}" ) for _ in range(iterations): image = copy_filename(image.filter(ImageFilter.BLUR), image) yield image @cli.command("emboss") @processor def emboss_cmd(images): """Embosses an image.""" for image in images: click.echo(f"Embossing '{image.filename}'") yield copy_filename(image.filter(ImageFilter.EMBOSS), image) @cli.command("sharpen") @click.option( "-f", "--factor", default=2.0, help="Sharpens the image.", show_default=True ) @processor def sharpen_cmd(images, factor): """Sharpens an image.""" for image in images: click.echo(f"Sharpen '{image.filename}' by {factor}") enhancer = ImageEnhance.Sharpness(image) yield copy_filename(enhancer.enhance(max(1.0, factor)), image) @cli.command("paste") @click.option("-l", "--left", default=0, help="Offset from left.") @click.option("-r", "--right", default=0, help="Offset from right.") @processor def paste_cmd(images, left, right): """Pastes the second image on the first image and leaves the rest unchanged. """ imageiter = iter(images) image = next(imageiter, None) to_paste = next(imageiter, None) if to_paste is None: if image is not None: yield image return click.echo(f"Paste '{to_paste.filename}' on '{image.filename}'") mask = None if to_paste.mode == "RGBA" or "transparency" in to_paste.info: mask = to_paste image.paste(to_paste, (left, right), mask) image.filename += f"+{to_paste.filename}" yield image yield from imageiter if __name__ == "__main__": cli() sphinx-contrib-typer-058f2e1/tests/click/imagepipe/index.rst000066400000000000000000000015101514345263500242130ustar00rootroot00000000000000.. typer:: imagepipe.cli :builders: latex=text,html,svg:html=text,svg :show-nested: :make-sections: :width: 65 .. typer:: imagepipe.cli:sharpen :make-sections: :preferred: svg References ---------- Cross references: * Check 0: :typer:`imagepipe`. * Check 1: :typer:`imagepipe-blur`. * Check 2: :typer:`imagepipe-crop`. * Check 3: :typer:`imagepipe-display`. * Check 4: :typer:`imagepipe-emboss`. * Check 5: :typer:`imagepipe-open`. * Check 6: :typer:`imagepipe-paste`. * Check 7: :typer:`imagepipe-resize`. * Check 8: :typer:`imagepipe-save`. * Check 9: :typer:`imagepipe-smoothen`. * Check 10: :typer:`imagepipe-transpose`. * Check 11: :typer:`sharpen `. Contents -------- .. toctree:: :maxdepth: 1 :caption: Contents: references sphinx-contrib-typer-058f2e1/tests/click/imagepipe/references.rst000066400000000000000000000012071514345263500252300ustar00rootroot00000000000000Typer Role Test References ========================== References ---------- Cross references: * Check 0: :typer:`imagepipe`. * Check 1: :typer:`imagepipe-blur`. * Check 2: :typer:`imagepipe-crop`. * Check 3: :typer:`imagepipe-display`. * Check 4: :typer:`imagepipe-emboss`. * Check 5: :typer:`imagepipe-open`. * Check 6: :typer:`imagepipe-paste`. * Check 7: :typer:`imagepipe-resize`. * Check 8: :typer:`imagepipe-save`. * Check 9: :typer:`imagepipe-smoothen`. * Check 10: :typer:`imagepipe-transpose`. * Check 11: :typer:`sharpen `. This one is bad: :typer:`bad-reference` sphinx-contrib-typer-058f2e1/tests/click/inout/000077500000000000000000000000001514345263500215535ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/tests/click/inout/index.rst000066400000000000000000000001301514345263500234060ustar00rootroot00000000000000.. typer:: inout.cli :builders: html=html :markup-mode: markdown :width: 65 sphinx-contrib-typer-058f2e1/tests/click/inout/inout.py000066400000000000000000000014401514345263500232620ustar00rootroot00000000000000import click @click.command() @click.argument("input", type=click.File("rb"), nargs=-1) @click.argument("output", type=click.File("wb")) def cli(input, output): """This script works similar to the Unix `cat` command but it writes into a specific file (which could be the standard output as denoted by the ``-`` sign). Copy stdin to stdout: ```bash inout - - ``` Copy foo.txt and bar.txt to stdout: ```bash inout foo.txt bar.txt - ``` Write stdin into the file foo.txt ```bash inout - foo.txt ``` """ for f in input: while True: chunk = f.read(1024) if not chunk: break output.write(chunk) output.flush() if __name__ == "__main__": cli() sphinx-contrib-typer-058f2e1/tests/click/naval/000077500000000000000000000000001514345263500215165ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/tests/click/naval/index.rst000066400000000000000000000001751514345263500233620ustar00rootroot00000000000000.. typer:: naval.cli :show-nested: :make-sections: :width: 80 .. typer:: naval.cli:ship:new :make-sections: sphinx-contrib-typer-058f2e1/tests/click/naval/naval.py000066400000000000000000000035531514345263500231770ustar00rootroot00000000000000import click class AlphOrderedGroup(click.Group): def list_commands(self, ctx): return sorted(super().list_commands(ctx)) @click.group(cls=AlphOrderedGroup) @click.version_option() def cli(): """Naval Fate. This is the docopt example adopted to Click but with some actual commands implemented and not just the empty parsing which really is not all that interesting. """ @cli.group(cls=AlphOrderedGroup) def ship(): """Manages ships.""" @ship.command("new") @click.argument("name") def ship_new(name): """Creates a new ship.""" click.echo(f"Created ship {name}") @ship.command("move") @click.argument("ship") @click.argument("x", type=float) @click.argument("y", type=float) @click.option("--speed", metavar="KN", default=10, help="Speed in knots.") def ship_move(ship, x, y, speed): """Moves SHIP to the new location X,Y.""" click.echo(f"Moving ship {ship} to {x},{y} with speed {speed}") @ship.command("shoot") @click.argument("ship") @click.argument("x", type=float) @click.argument("y", type=float) def ship_shoot(ship, x, y): """Makes SHIP fire to X,Y.""" click.echo(f"Ship {ship} fires to {x},{y}") @cli.group("mine") def mine(): """Manages mines.""" @mine.command("set") @click.argument("x", type=float) @click.argument("y", type=float) @click.option( "ty", "--moored", flag_value="moored", default=True, help="Moored (anchored) mine. Default.", ) @click.option("ty", "--drifting", flag_value="drifting", help="Drifting mine.") def mine_set(x, y, ty): """Sets a mine at a specific coordinate.""" click.echo(f"Set {ty} mine at {x},{y}") @mine.command("remove") @click.argument("x", type=float) @click.argument("y", type=float) def mine_remove(x, y): """Removes a mine at a specific coordinate.""" click.echo(f"Removed mine at {x},{y}") if __name__ == "__main__": cli() sphinx-contrib-typer-058f2e1/tests/click/repo/000077500000000000000000000000001514345263500213625ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/tests/click/repo/index.rst000066400000000000000000000001121514345263500232150ustar00rootroot00000000000000.. typer:: repo.cli :preferred: html :show-nested: :width: 65 sphinx-contrib-typer-058f2e1/tests/click/repo/repo.py000066400000000000000000000114431514345263500227040ustar00rootroot00000000000000import os import posixpath import sys import click class AlphOrderedGroup(click.Group): def list_commands(self, ctx): return sorted(super().list_commands(ctx)) class Repo: def __init__(self, home): self.home = home self.config = {} self.verbose = False def set_config(self, key, value): self.config[key] = value if self.verbose: click.echo(f" config[{key}] = {value}", file=sys.stderr) def __repr__(self): return f"" pass_repo = click.make_pass_decorator(Repo) @click.group(cls=AlphOrderedGroup) @click.option( "--repo-home", envvar="REPO_HOME", default=".repo", metavar="PATH", help="Changes the repository folder location.", ) @click.option( "--config", nargs=2, multiple=True, metavar="KEY VALUE", help="Overrides a config key/value pair.", ) @click.option("--verbose", "-v", is_flag=True, help="Enables verbose mode.") @click.version_option("1.0") @click.pass_context def cli(ctx, repo_home, config, verbose): """Repo is a command line tool that showcases how to build complex command line interfaces with Click. This tool is supposed to look like a distributed version control system to show how something like this can be structured. """ # Create a repo object and remember it as as the context object. From # this point onwards other commands can refer to it by using the # @pass_repo decorator. ctx.obj = Repo(os.path.abspath(repo_home)) ctx.obj.verbose = verbose for key, value in config: ctx.obj.set_config(key, value) @cli.command() @click.argument("src") @click.argument("dest", required=False) @click.option( "--shallow/--deep", default=False, help="Makes a checkout shallow or deep. Deep by default.", ) @click.option( "--rev", "-r", default="HEAD", help="Clone a specific revision instead of HEAD." ) @pass_repo def clone(repo, src, dest, shallow, rev): """Clones a repository. This will clone the repository at SRC into the folder DEST. If DEST is not provided this will automatically use the last path component of SRC and create that folder. """ if dest is None: dest = posixpath.split(src)[-1] or "." click.echo(f"Cloning repo {src} to {os.path.basename(dest)}") repo.home = dest if shallow: click.echo("Making shallow checkout") click.echo(f"Checking out revision {rev}") @cli.command() @click.confirmation_option() @pass_repo def delete(repo): """Deletes a repository. This will throw away the current repository. """ click.echo(f"Destroying repo {repo.home}") click.echo("Deleted!") @cli.command() @click.option("--username", prompt=True, help="The developer's shown username.") @click.option("--email", prompt="E-Mail", help="The developer's email address") @click.password_option(help="The login password.") @pass_repo def setuser(repo, username, email, password): """Sets the user credentials. This will override the current user config. """ repo.set_config("username", username) repo.set_config("email", email) repo.set_config("password", "*" * len(password)) click.echo("Changed credentials.") @cli.command() @click.option( "--message", "-m", multiple=True, help="The commit message. If provided multiple times each" " argument gets converted into a new line.", ) @click.argument("files", nargs=-1, type=click.Path()) @pass_repo def commit(repo, files, message): """Commits outstanding changes. Commit changes to the given files into the repository. You will need to "repo push" to push up your changes to other repositories. If a list of files is omitted, all changes reported by "repo status" will be committed. """ if not message: marker = "# Files to be committed:" hint = ["", "", marker, "#"] for file in files: hint.append(f"# U {file}") message = click.edit("\n".join(hint)) if message is None: click.echo("Aborted!") return msg = message.split(marker)[0].rstrip() if not msg: click.echo("Aborted! Empty commit message") return else: msg = "\n".join(message) click.echo(f"Files to be committed: {files}") click.echo(f"Commit message:\n{msg}") @cli.command(short_help="Copies files.") @click.option( "--force", is_flag=True, help="forcibly copy over an existing managed file" ) @click.argument("src", nargs=-1, type=click.Path()) @click.argument("dst", type=click.Path()) @pass_repo def copy(repo, src, dst, force): """Copies one or multiple files to a new location. This copies all files from SRC to DST. """ for fn in src: click.echo(f"Copy from {fn} -> {dst}") if __name__ == "__main__": cli() sphinx-contrib-typer-058f2e1/tests/click/termui/000077500000000000000000000000001514345263500217225ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/tests/click/termui/index.rst000066400000000000000000000003151514345263500235620ustar00rootroot00000000000000.. typer:: termui.cli :preferred: html :width: 65 :make-sections: :show-nested: .. typer:: termui.cli:menu :preferred: html :width: 100 :convert-png: latex :make-sections: sphinx-contrib-typer-058f2e1/tests/click/termui/termui.py000077500000000000000000000103541514345263500236070ustar00rootroot00000000000000import math import random import time import click class AlphOrderedGroup(click.Group): def list_commands(self, ctx): return sorted(super().list_commands(ctx)) @click.group(cls=AlphOrderedGroup) def cli(): """This script showcases different terminal UI helpers in Click.""" pass @cli.command() def colordemo(): """Demonstrates ANSI color support.""" for color in "red", "green", "blue": click.echo(click.style(f"I am colored {color}", fg=color)) click.echo(click.style(f"I am background colored {color}", bg=color)) @cli.command() def pager(): """Demonstrates using the pager.""" lines = [] for x in range(200): lines.append(f"{click.style(str(x), fg='green')}. Hello World!") click.echo_via_pager("\n".join(lines)) @cli.command() @click.option( "--count", default=8000, type=click.IntRange(1, 100000), help="The number of items to process.", ) def progress(count): """Demonstrates the progress bar.""" items = range(count) def process_slowly(item): time.sleep(0.002 * random.random()) def filter(items): for item in items: if random.random() > 0.3: yield item with click.progressbar( items, label="Processing accounts", fill_char=click.style("#", fg="green") ) as bar: for item in bar: process_slowly(item) def show_item(item): if item is not None: return f"Item #{item}" with click.progressbar( filter(items), label="Committing transaction", fill_char=click.style("#", fg="yellow"), item_show_func=show_item, ) as bar: for item in bar: process_slowly(item) with click.progressbar( length=count, label="Counting", bar_template="%(label)s %(bar)s | %(info)s", fill_char=click.style("â–ˆ", fg="cyan"), empty_char=" ", ) as bar: for item in bar: process_slowly(item) with click.progressbar( length=count, width=0, show_percent=False, show_eta=False, fill_char=click.style("#", fg="magenta"), ) as bar: for item in bar: process_slowly(item) # 'Non-linear progress bar' steps = [math.exp(x * 1.0 / 20) - 1 for x in range(20)] count = int(sum(steps)) with click.progressbar( length=count, show_percent=False, label="Slowing progress bar", fill_char=click.style("â–ˆ", fg="green"), ) as bar: for item in steps: time.sleep(item) bar.update(item) @cli.command() @click.argument("url") def open(url): """Opens a file or URL In the default application.""" click.launch(url) @cli.command() @click.argument("url") def locate(url): """Opens a file or URL In the default application.""" click.launch(url, locate=True) @cli.command() def edit(): """Opens an editor with some text in it.""" MARKER = "# Everything below is ignored\n" message = click.edit(f"\n\n{MARKER}") if message is not None: msg = message.split(MARKER, 1)[0].rstrip("\n") if not msg: click.echo("Empty message!") else: click.echo(f"Message:\n{msg}") else: click.echo("You did not enter anything!") @cli.command() def clear(): """Clears the entire screen.""" click.clear() @cli.command() def pause(): """Waits for the user to press a button.""" click.pause() @cli.command() def menu(): """Shows a simple menu.""" menu = "main" while True: if menu == "main": click.echo("Main menu:") click.echo(" d: debug menu") click.echo(" q: quit") char = click.getchar() if char == "d": menu = "debug" elif char == "q": menu = "quit" else: click.echo("Invalid input") elif menu == "debug": click.echo("Debug menu") click.echo(" b: back") char = click.getchar() if char == "b": menu = "main" else: click.echo("Invalid input") elif menu == "quit": return if __name__ == "__main__": cli() sphinx-contrib-typer-058f2e1/tests/click/validation/000077500000000000000000000000001514345263500225475ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/tests/click/validation/html.png000066400000000000000000003032741514345263500242320ustar00rootroot00000000000000‰PNG  IHDRä:‡%—y6iCCPICC Profilexœ}¿KÃP…?KAÔ.¢¢ƒCÆ.j[±?°¶jѱU¨niŠØÖFtïêáì&¸ˆÐÙÅIpqq×xÒ )H½—›û½óyï>ˆ-¡ˆ§ ÓõÜj¥dÔOŒÉ&”Ã0­žÃøëç5ô¾¬üãSM»g©© 55•´—— O?½*c…äuuuXµj•Íõºtéâѹ³gÏbíÚµ’y³gÏf@®9sæŒì«ªª²+ W[[‹¯¾ú ÇŽÃáÇ‘––2dFމ±cÇbêÔ©·/,,ijÏ>«¸ÌËË aaa2d† ___Ùºz½>ú(êêêl¦Ù’>}úàøƒ0½uëV|õÕWïgÀ€xã7¬®³uëVìÛ·‡Æ©S§=zôÀ¨Q£””„… *~Oøæ›oðý÷ßKæEFFâÃ?”­«Õj±xñbɼÿû¿ÿCÿþý÷}òäI¼÷Þ{8þ<.]º$Ì DBBF…Ù³g#)) *•õ®e=jõkÛ¶-rDDDDDvpzÔK«Í@aažÙÜ3×Ïξ £Ñ(™g0è#jfRSS1kÖ,ɼɓ'ãÝwßm¢QC”––böìÙØ½{·lÙ©S§pêÔ)¼ÿþûxýõ×ñÖ[o)pt:Ö¯_ïÐçþáÀ+¯¼‚ÀÀ@ažÁ`°ü±Gvv¶$ wéÒ%‡ÓEEErF£o¼ñþö·¿É–¥¥¥!-- Ÿþ9Ö®]‹7"88X¶ÞÏ?ÿ¬˜®'Ÿ| Ì«¨¨­ûøãËrÅÅÅøå/iñ…CYY™ð›¾÷Þ{ˆˆˆÀÑ£GѵkWÅõ‰ˆˆˆˆÈyõ""§(++“Ô¾€îÝ»7QjÈdÑ¢EÂÿ¶jKæææbÊ”)HNN¶¹ß¿ÿýïÈÎÎÆòåËáããÓØdâOú¶mÛ†£GB­n>·¦;wî`ñâÅX¹r¥Íu÷íÛ‡{î¹Û·oGLLŒ]ûÿòË/ñ¯ýËát ,\¸?þø£ÝÛäç磴´Ôê:÷Þ{¯dÚžïMDDDDDrÍ穇ÈE|||pñâEI³¸M›6IjÕ8CïÞ½eý{ÙûPÞZñ˜5N`` ¾øâ »×ÿÍo~cW0ÎdÕªU¸÷Þ{ñÄO4$y2§NÂ[o½…ßÿþ÷NÙŸ;¬Y³Æ¡ Ôùóçñúë¯ÛÕL–/_Ž·Þz mÛ¶u(]Ÿ}ö™CÁ8{-Z´Hä=xð ®_¿îôÏ!""""jé#B}?Sb.\púgaÊ”)NßoKÆcæ>………Š¥¸¸8Ì™3åååX»v-ÊÊÊ$Ë?øà»rx饗PSSƒÜÜ\œ:uJV£¨oººdÉDFFB¥Raîܹ²n JKK±sçNÙ¶J}<öîÝ[2ݽ{wÙ9¥¸ºûî»$Lûì3äçç;´"""""jœf3ô()¹‰¢¢«¨©)G``‚‚bµZ¹ÃlKªªJ ÓÝFYYªª´h×NÿDDô‚··cͰjk+pãÆO€®]Ç9œKéËÌ< ƒ¡±±ƒÕè}¶TF£Z­………(((À;wо}{h4ÄÅÅ5uòœF¯×ãòå˨­­ÅÀáííÝà}µ–cf¢Õj‘šš ___ôêÕËáZG–ܼyYYYHHH@hh¨Söén«W¯–Í ÄñãÇ ˜;w.Æ/Yçüùó8q↠fuÿÝ»wÇŸþô'aÚh4â‹/¾P 楦¦"22jµZ1°”››‹èèhɼøøx|ûí·VÓ3fÌÀŒ3$ózöì) \aòÍ7ßßÛ’3g΃7ˆmß¾“&M¼úê«HHH2¿úê+¼úê«6Ó +V¬p( WUU…Ÿ~úI2/00@XX˜0¯oß¾˜3g~ó›ßà“O>Á›o¾i÷gQã4«€Üõë?aÇŽ?   ×â:AAÁˆŠÉ“߆O€l¹^_ƒ‹7àÂ…Èȸlqô>///„…Eâ¾û^CÏžÖkèܾ}ëÖ=ƒŠŠ É|& |…={þŒ«W¥m3gþ ½zMSÜ_qñ5lØð ² ×ë%ËT*BB4xðÁ¡CëÀžæ/ù‹¬ùÜ›o¾‰ (®ÿòË/cóæÍ’y}ô&Ož,LkµZìÞ½[¶lÁ¦M›d½&˜;w.~ýë_Û|Èv–gŸ}V±ØôéÓíîêêÕ«xî¹ç$íbΜ9xï=åQŒ•8똙ÿ>ååå²u6oÞ¬ØA¼¥ïíìcÔwêÿÛßþ{÷î•ÕTêÝ»7¦OŸŽßýîwðó󳸞={J®ÅØØXìÛ·øÃ°aÃI0§wïÞX·núöíkw=ÒhžÿøÇ?$¿ý¸qã0þ||ýõ×’õV¬Xa3 gÎËË ?þ8–-[†ãÇK–¥¥¥Éú*óD+V¬Í›;w®Œê›XÿóŸÿ”ŠúïÿÛî€ÜöíÛqûömtèÐÁ®õ³²²dó¢££%Á8±víÚáÕW_ÅâŋѮ];»>ƒˆˆˆˆˆ§Ùä¶lù%’“·Û\¯´T‡ŸÞ»îZ„ØXyæ7nü„Í›m×0((ÈÅÚµ/ã®»öcÊå‘"/_þë׿&kRÅÅ…øôÓ$ ¬UU•(îïøñ±kׇŠûê;ê...ÄçŸ/Ä A“0eÊ»P©ÚØü>Ë—OFV–´ŸµZ7ÞH±¹­³ôìÙSÖ×ÐæÍ›rƒË—/—‹ÌƒŸþ9^y囟ŸŸ>ú_~ù%¶oߎ‘#G6à8æÖ­[6ûV2YrôèQLš4Iv<ÊÊÊðùçŸãöíÛHHH°k_Î:f™™™võ¥´Ž¥ïíÌc[·nÅüùó-/]º„K—.áÇÄ7ß|#kÞhb^{ª¼¼o½õÞzë-Å}öë×çΓzé©ÊËËûèÑ£eóÆ/ È9cy$m[úõë' È]½zµÁûs§Ó§OËæ™× €1cÆÈæeffB«Õ"$$Ä®ÏZ½z5~ó›ßصn@€üeTZZΞ=‹ÄÄD‹Û‰›è‘k©š:ö8wîk»‚q®rúô¥Ëæët·ñí·¿²<€ÚÚZÚõ9{öü;w~`ubÉÉ;°qã3v­[WwG6Ï`0ص­³L˜0A6oÇŽ²`%œ;wND2dˆÝ5D,)++ÃÒ¥KÝþÝC«ÕbäÈ‘ƒJ°{÷nÅNÎЬ]»S§NµzÜLΟ?>}úàÊ•+ví;??ßæ ÿûßíÚ—'ÈËË“Í DÏž=eó‡.›çHÔœN§kð¶M-##C6OéøtëÖM±¿8¥ãn‡ÀÀ@azùòåv_ƒ‘‘‘Šóï½÷^¬\¹ÕÕÕv퇈ˆˆˆˆ\§YäŽ]&›çííèèN8p<ºw& ^^^ï[­V#$¤=:wîîÝYl®óÃ/ËæíÞýG‹ûu4-åå¹8zt­â²  `´o¯J%ÿ¹RR¡ à²CŸÕT‚ƒƒe©—••)Ö2Ù·oŸlÞìÙ³m~Fÿþý1gμþúëxþùçÑ£GÙ:ÉÉÉøî»ïHyèÕΩ€jïhŒ ÕÐcÖ˜¾ë,më¬cVYY‰_|Ñáí^ýu‡·±Ô1ÿ×_ÂBû‚ñMM)0Ô¥KÅ|̼ï6 >@©X·E«ÕÊú:³ôž¦®®Nq K£wêÔI6ÏÚ@ íڵóÏ>+L_¿~‡²+m^^^˜>}ºl~YY{ì1DDDà7Þ@jjª]û#"""""çk¹¢"ùÃâ’%ßañâ]˜>ý#ÌŸÿ ^xá^ý$’’fÁÛÛÛf3ÎØØ.˜?ÿ¼ñF ^|ñ8~ñ‹ï1þ7øÕ¯Îbñâoe¢YYÒrÕÕ:\ºtD¶_???üò—{ñûß§bÆŒ?É–[²iÓ ²šqþþþxá…íx饓Xºô~õ«ãˆŽ–?Ô}÷ÝsvNSS ªíÙ³G6O©±iÓ”ûÜ‹ˆˆÀþðdddàܹsøöÛoñöÛoãÃ?Ä•+Wƒoâ~Ø\eãÆ¸sçŽðgïô˜^¯Ç?þñÙüˆˆ$''£¶¶Û¶msx¿Î8fkÖ¬‘|¿cǎɶ™:uªdÓßš5kÓåŒcï½÷žb°cûöí0 ¨©©Q<®›7oÆþýûíúŒ¸¸8\½zyyyŠßP®Aå‰rsåýrj4ÅuýýýçÛ;J§Á`@AAöíÛ‡iÓ¦)n§ÔTÖÓX ¶*5 Ø4U鸋-\¸P2­4 ®%þóŸ-.+++Ã[o½…^½zaÒ¤I8rD~/#"""""×j9ó¼¼¼p玼ɯo&N| ÿ÷)ˆŽ ¸¯®]ÇâÕWáÉ'w {÷‰ŠëDG@HH{Y †ÿ5û¼zu—bÓÒ%K¶ 8¸~tÊþýçaäȇ­9Ã\»v^6áÂUÐhâ…é¶mƒñè£ëdÁÂüül›Ÿá)Ä2˜ìرC2]^^. þôèÑC±´§žz ·o߯ÿøGtìØQñ3|ðAÙ¼[·n9ê†Q©TP«Õ’?GݸqC±9àÖ­[‘˜˜ˆ6mÚ`òäÉøê«¯ìÞ§³Ž™ù÷Sªõ¦t ÔjµbmOKë7Ä| ›·jÕ*Lš4 ^^^ðññÁ¯~õ+<ýôÓ²õ–/_n×güíoC·nÝIIIŠ5’²³›Çµ© V\×RíFkÍ/úZ–^^^ðööFDDî»ï>Å€kDD Pο=‰¥ïÛ¦òË ¥þÙläz÷$azåÊ•Ðjµv¥¯_¿~X»V¹ÖµØÎ;1jÔ(<øàƒŠ³‘k4‹A|||P[[+LF,[6±±ñ0`úôyíÚ‰G³Ü\T¥jÿèt·qøð¿‘ŸŸ†òò"TT”Iš\)¾ZR’ÐÐúðâbyèÑÑ,íãlÔ¨—päÈ7V¿_aašl^Û¶mÊÊBá;×3"((:VX×h4B«½…åàŠ'‰ŒŒÄÝwß-y?räJJJо}}ôðáòíæÍ›§¸?SK©©©øöÛoqëÖ-dgg###¥¥¥ÓÑ\:ÏÉÉ‘Íëß¿?† "™7kÖ,<÷Üsvõ—ÖÒYYY™¬ÖU`` bíÌgžyÿýï%óìmÆgÞü:!!A6*°½Á“¦¦ õññ±¸~`` ì\«©©qJZV®\i1`ëI”Ò(îóÍœR Îž¾Ü–,Y"ôâ»ï¾“ŒâjÍC=„â•W^Á?þhuÝÍ›7cìØ±Ø¹s§‘ë4‹€\§N}qõj²l~VÖude½ƒmÛÞAÛ¶mѯß$%=#©Uf®¼<ëÖ=ŽÌÌk§C§ËänÈ–wì8X6¯mÛ`´kו••÷››{A6¯ººÿø‡¼spKòò.X È-Z´ÕÕÒÎÓÕj_»÷ïL=ô¬fÌÁƒ…FJMX-5W½xñ"^{í5lßîØ öŒê ”jX7N6¯]»v1b„bS_s-ý˜Ý¸!¿6G¶mÛÊæ+‚šœœ £Ñh³Hó …RãÎù`*žH©6œµ`¢Rà×R_zö Ä;ï¼£X‹Ö)Õx+++ƒÁ`P Ö) ^eósfΜ‰Ç{L˜þôÓOíÈõ£[oݺçÏŸÇG}„eËä}²šœ:u ûÛß›s‘sy~5Ó§`³ÆDuu5Nú~8{öüQqšš2üç?“Œ€ÚÚÿ5ç))¹-[njªjÎÇÇzà+77¥Aé+,´^{É×7ÁÁ$þþ{€n¨ûï¿_6O„Û²e‹dYDD $Û&==#FŒp8°ÔœdeeÉæYAÑžŽð[Ã1S ÈÅÅ)_›±°Õ”P)øÔAe<…Ò9e) géå‚¥óÒ–þýûãƒ>@VV–,YÒ }4KÈŠŠ ÅùJµOí9fAAAxâ‰'„éS§Náüyy¶ôïߟ}ö´Z->ÿüsÄÇ+¿¸zçwl6?&""""¢Æsz@ÎÇG¹CkG¨TÒŠ{þþáxþùmhß^¹“qsGŽ|ƒ}ûäZ>üžÕšjÞÞÞhÛ¶-üýým>\{{Ë›s‰vŽÐëm7[²½ç4s‡.]ºÈl›6mPßOYZš´ ï‚ 7ß|ÓjÍ=z`äÈ‘¸ûè&¢4r¥RsjÀzC“ÖpÌ”Îk#Â*õS×C›3¥ÀRsiÀr ÎÒ`&qqq8tèŽ9‚´´4èt:Fœ;w/¼ð‚Õæžž¨¾[yšKJJ×W:žöÔ€Ç\2ýÅ_ص’àà`<öØc8wîœbŠpöìÙˆˆˆˆìãô&«JµÄjk•NÃÙÀ*•J€öí»`éÒcÈÊ:ƒcÇþƒŒŒ³V; >räkŒõ2||þ÷øóÏ›×½÷ÞEHJzmÛþ¯ÙÖ¿þ5ee–ûÓÒh:áæÍK’y%%Ê#*VV*ט0‰ˆHðƒdž——‚ƒC¬n'ÖÝîu=Áœ9sœü¿fÈ™™™HOOWì?Ni€ÊÊJ¬ZµJ6?..«V­ÂÝwß-aôz½ÅŽÖ-Q n5E&66V6O©é`9€bâêcæ)”Ž™RMC“Û·åµ]cbbœš&O§ÊÌÌDAAÂÃÃ%óÅ×­‰R-Cs5jTÃéºté"«­–œœ,,¥¸¸X±É·½µ ‡Ž=z/+Ö¯_ßÀÿO@@>úè#lܸQÖçbsižNDDDDÔœ9= §Ñt•Í+//`„ù` yy—dë*õó$;³gׂX[[ŽK—6áĉ•ÈÍ•>T ääüŒNF ó”jÇõî=£GÿF6¿ªÊrM: •ÏÔTy0éöí’)”DEÉû± i¥KYÝÎUU%¨®ÖJæµi㇀ûjh8ÛÔ©Sñ›ßHû¾}ûpàÀɼÀÀ@Œ1B¶½¥Ñ+¿üòKŒ=Z2ÏVóC%J}j5d?¥Ô õ矖ͫ««Ã‰'¬îËÕÇÌS(5Å;uêêêêd5ånܸ!«1Ø»wo«5êZ"Kø9rD?xð l½îÝ›× gQ Ȳy5558qâ#6uزåu«û©ßW_Ù¼’’b\VX[J«ÍÀÕ«¶;òÿê«9øàƒI’¿÷Þcs;WéÓ§,p²uëVYÿqóæÍSlRhitBóš)¦ý:J)väÈ ‡÷ÕJ騹s'233%ó~úé'Y-s®>fòæêÇŽsû1kß¾½¬)aff&víÚ%[W©é_Ÿ>òk»¥S©Txþùçeóß}÷]I^˜-•yä—¦ÏS)}ïåË—K®O½^¯8HÂÓO?­˜·YòðÃÛ½nii)°páBdd(×Ü61ï"°¯Æ#5ŽKu÷«³{÷Gز嗸yó®^݉Ï?7oÊNòšŸ~:Ë–MÄÕ«òj“°°.²yæ}IùùùÉÖIIÙ!™6îà‡lѺv«X›oÇŽ÷°iÓ³8~ücüç?cQP`½!P_SM©yê_<ŒÛ·+nsëÖ1¬Xq?þýï Ø¿ÿŸ6?ÃÍŸ?_2½eËYÍŒ3f(nk©CòüQ2]TT„¿þõ¯§M)výúuüéOBUU•Ãûk¨®]»*öS5þ|¡ÆgVV-Zds_®>fJ'äççcÙ²eûÕr¥ã±hÑ"\¹rE˜þá‡ðç?Ëûšœ5k–+“汞zê)Ù¼#GŽàñÇÇáDZcÇÌš5Kv*6+÷TçÏŸÇgŸ}&ùSjî½råJÉ:J¡L›6Mv}–••aæÌ™Ø±cŽ9‚§žzJ6ª4,^¼Ø¡tÇÄÄ#QÛkÕªUèܹ3~ýë_ãèÑ£Bsw£Ñˆ .àå—_VL[BB‚CŸCDDDDDŽsz“U3æElÞü¦l~ròv$'[Ýñ¾ûþO6¯¶¶ ÅÅ…øúëжm[ÄÄtGdd" Óeáöí³Èɑ׈‰‘ƒÊÊtɼââB|ùå ò ÔÖ–ãÀ ÕÚ<=úìØñžlþ¹s{qîÜ^»öa2gÎÇX¾|d^UU>ÿüð÷÷GHHT*ohµy¨¨¨p{­#W˜:u*þò—¿X]Ǽ)¥I»ví/ëëèw¿û*++1qâDܸq¯½öš¬6™=BCC1hÐ YYo¾ù&Þ|óMIðÉÇÇW®\‘Ôv0hÐ èõzÅ‘*“’’0wî\;¾mËÓ¿Œ9GŽ‘Ì_µj•b߃&/¼ð‚Í®<ÉŽ;ðúë¶_ºüßÿIïEcÇŽÅäÉ“%ó|||ðÒK/áÍ7¥÷»S§NÉÖ2dHu½'žx›7+÷…jÍßÿþwüýïP˜///·X£6""ݺusø3ˆˆˆˆˆÈ1.©!7pà›#î)éÕk8‚‚äMOŪ««qýú;¶»wŒ“'7)ãêwÒž{îyIqŸ7o^Âúõ¯cóæ?ÛŒ€¡CŸBHˆrßKŽŠ½ ½z%).«¨¨@VÖ Ü¾Ž²²²Œ€»îº —Ï›7O±V£ÉË/¿,›WVV†ßþö·}:žxâ‰mëL±±±X½zµÕuú÷ï§Ÿ~Úæ¾\}Ì~ó›ßxLÿS/¾ø"ÞyǾ<%00Û¶mkð÷n)F#GŽ(6“6׿œ8qBqTÛÖ$&&'OžDÿþòÁyÌâðáøï¾ûôYmÚ´±+Ojè $¿ÿýï1iÒ¤mKDDDDDŽqY@®cÇáxõÕãèÑc°Õ'*• ÷Ý·/¼pþþáŠë þ8¢£;Ù$‹ï‹%K6 Cåë¹sWb„¥XÚµk‡§ŸÞˆÈHy“8ooy€ÑÛÛ‹mÆÜ¹ï`РIBxx ‡Y³Þ£n@E…V¶]p°|ÿmÚøaÖ¬exòɯû”SJkbâ<ðÀßm®ëå%?vžPÈZßS&L°º­··7vïÞ-4ÅRòøãcß¾} ªUâííåË—cË–-X´h‘Õ@“³¥ygï ,ÀÎ;%#GŽÄÖ­[GÊ4ß«YPPRRR°víZ̘1C† QÜ+F15ÿ®*• ¯¾ú*N:…AƒYت>ðzåÊ«M òù–æyº#FàäÉ“?~¼âòÀÀ@<úè£8xð bbb×QúÞÎüÍs¬ú›X{ÁC‡á¿ø…Å`æØ±cqüøqŒ9Rq¹ùñ±”Î… *ί„²²2¬^½'N´˜n“ùóç#%%Åb­R"""""r>/£ÒУNgDAA*nß> ­öÔ궈Œìƒèè6›¨š+(¸ŒÂ«(-ÍFEETª6 ŒDûö]ÕíÚ…Ùµ½¾99ç›{ÐhâѵëX‹AÁ†ª««Å[o 5i|啈²º­Ápùù—‘›{Zím@pp,‚ƒ; <¼•†[£²²2¤§§#==µµµèÙ³'úõë__ߦNšSF\»v ?ÿü3Ú´iƒ»ï¾¦Aûj-Ç̤¢¢—.]µk×àíí>}ú {÷î-ªyÞË/¿Œ÷Þ“ök)î°¾?Ê»÷§×ëqùòe¤¦¦B¥RaðàÁèܹ³“RÛrݼygΜÁ`@BBzõêÕ¤ÁÙ²²2dffâöíÛÈÏχÑhDLL âââ«8B²%¥¥¥’¦äƒ ’4]´h‘âèÅDDDDD$妀\˵jÕ,DG÷ÃÈ‘Káç'Œ|ÿý38~Ÿdž——~ÿûTw%‘ˆZ ¥€œØôéÓ±iÓ&÷%ˆZœÇ{ +W®´¸œ9"""""û4¿öT&+ë*®_¿ˆ#G¾F†öícÒÕÕ:ܼy²mÚ·m‚”‘'`@Î‰Š‹ Q\\@yG“™3?pO‚ˆˆˆˆˆˆˆˆÈã°Éj#½ývÔÔÔØ½~Ÿ>£0{ö ¦ˆˆZ«œœäææZ\®ÑhЩS'7¦ˆZšÌÌLX\ޏ¸87¦ˆˆˆˆˆ¨yb@®‘>üpäÿ¯g¯¯/xàèÛw–REDDDDDDDDžŠ9'¨¨ÈGzúää\@EE!*+‹xA£éŒ°°nO@—.wÃËË»©“JDDDDDDDDMŒ9"""""""""7R5uˆˆˆˆˆˆˆˆˆZ䈈ˆˆˆˆˆˆˆÜˆ9"""""""""7b@ŽˆˆˆˆˆˆˆˆÈ#""""""""r#䈈ˆˆˆˆˆˆˆÜˆ9"""""""""7b@ŽˆˆˆˆˆˆˆˆÈ#""""""""r#䈈ˆˆˆˆˆˆˆÜˆ9"""""""""7b@ŽˆˆˆˆˆˆˆˆÈ#""""""""r#䈈ˆˆˆˆˆˆˆÜˆ9"""""""""7b@ŽˆˆˆˆˆˆˆˆÈ#""""""""r#䈈ˆˆˆˆˆˆˆÜˆ9"""""""""7b@ŽˆˆˆˆˆˆˆˆÈ#""""""""r#䈈ˆˆˆˆˆˆˆÜˆ9"""""""""7b@ŽˆˆˆˆˆˆˆˆÈ#""""""""r#䈈ˆˆˆˆˆˆˆÜˆ9"""""""""7b@ŽˆˆˆˆˆˆˆˆÈ#""""""""r#䈈ˆˆˆˆˆˆˆÜˆ9"""""""""7b@ŽˆˆˆˆˆˆˆˆÈ#""""""""r#䈈ˆˆˆˆˆˆˆÜˆ9"""""""""7b@ŽˆˆˆˆˆˆˆˆÈ#""""""""r#䈈ˆˆˆˆˆˆˆÜˆ9"""""""""7b@ŽˆˆˆˆˆˆˆˆÈ#""""""""r#䈈ˆˆˆˆˆˆˆÜˆ9"""""""""7R7ušÂ_ÿúWìܹÓâòµk×"&&¦QŸñŸÿü—/_Ìš5 ÷Þ{o£ö'¶iÓ&¬[·0lØ0üò—¿tÚ¾›Òž={ðÃ?ú÷ï'Ÿ|²‰SDDDDDDDDä|N ÈF,\¸555€áÇ㥗^²kÛ'Ÿ|¥¥¥€à7ÞpfÒ$.^¼ˆC‡Y\^VVÖèÏØ°aöíÛèܹ³SrçÏŸÇÚµkUUU-& wòäI|øá‡€)S¦0 GDDDDDDD-’Sr^^^HOOÇñãǰ+ wãÆ ¬X±B˜îÚµ«3“%Ó¥KôîÝ[˜ÖëõHKKség¶$¯¾ú*¶oßx饗8#"""""""r€Óû›6mšð~~>®\¹bs›H¦'OžììdI¼õÖ[HIIþLD²Ozz:.]º„K—.!;;»©“CDDDDDDDÔ¬8½¹I“&á·¿ý­0ýÓO?¡gÏžV·Ù½{·ð`` ’’’œ,·ûÝï~‡Çp×]w5qjš‡3f S§N€Ž;6qjˆˆˆˆˆˆˆˆ\Ãé¹ ""ùùùêƒmK–,±¸¾Á`À–-[„éÉ“'ÃÇÇÇÙÉr»Ñ£G7uš^½z¡W¯^M """"""""—rz@N¥RaæÌ™øïÿ صkôz=Ôjåºxñ¢d…©S§Úü ­V‹ÜÜ\äååA£Ñ GðõõuÎð 555¸xñ"Ôj5úôécñÚ£µ3 ~ ‹´´4ÔÖÖ¢[·nhß¾}£÷YSSƒsçÎÁ×× -öØ‘ë9= Ô×r3äÊÊÊpöìY 2DqÝýû÷K¦Ç'[§ªª ûöíömÛ°aáöXïÞ½1|øp¼ýöÛ s·°ß¥K—°hÑ"‹Ë_yå<ôÐCvïoÏž=øÝï~'éÛ.00£GÆûï¿o×>œuÌ~üñG,]ºT2ïúõëÂÿøÃðå—_ʶS«Õ8{ö,Úµkg1£FBmm­â²1cÆàïÿ»ÅmÍéõz¼óÎ;X½z5.]º$Y‡‰'âwÞ±œ×>}úà‡~ÀºuëðÅ_`çÎ’ug̘+V8%ØGDDDDDDD­‹KræÍ5÷ïßo1 'î?nÈ!ˆŠŠ’­³oß><ðÀV?Ó4ÈÀ–-[ðÃ?`ذaŽ'¼JKKqêÔ)‹Ë³²²ìÞ×ÿû_<óÌ3²ùeeeزe Ξ=«´4ç¬c¦Õj%8%––×ÕÕYÝîÈ‘#—EDDXÝV,77 ,À¾}û—gffbÅŠعs'¾ûî; :Tq=ñwU«ÕX·næÍ›§¸î÷ßsçÎáÔ©SÐh4v§•ˆˆˆˆˆˆˆÈ%¹   Lœ8Q¨U´gϼöÚk²õª««ñã? ÓÓ§O·kÿ=zô@¯^½ÐµkWTVVâÂ… Bp'??III8}ú4ì„oc[pp0FŽ)™g-ØdÉÆeÁ¸Ñ£G#!!gΜÁ©S§™™‰•+W:¼ï†³Ž;bÊ”)’yšÇÅÅaÀ€²ÏS©ThÓ¦Õ4Ý}÷Ý0 ÂôÕ«WkòYc00qâDœ?^˜{ï½m۶ʼn'–– >07lØ0dff"66Öê~ÓÒÒ„`\\\†ŽêêjüôÓOÂw¿~ý:–-[†×_Ý¡4Q+gt‘>úÈ@ø«¨¨­sðàAÉ:§OŸVÜ×Ö­[Æßþö·Æ7n(®säÈc`` °¯ùóçÛÖââbI:RSSíÞÖ’±cÇ ûûç?ÿis}ƒÁ`4h°M`` ñرc’u¾ùæI:§OŸ®¸?W³éÓ§ ÛüéO²k{üõ¯ö;eÊ»¶Ù¼y³äxL™2Ev®ýå/‘¬óË_þRq_«W¯–ßßþö·F½^/¬sýúuc=„å’åDDDDDDDD¶¨\è3oVyìØ1Ù:âþã"""˜˜¨¸¯‰'"//ýë_ѹsgÅuFŒ·ß~[˜þúë¯-öOæ‰vïÞäädaúóÏ?GRR’dyóæáÍ7ß´k­á˜Füîw¿¦ãããñý÷ßËú­{ã7ðÔSO Óï¿ÿ¾]͈g̘¿þõ¯ðööæuéÒúÓŸ„éüü|äåå5ækQ+ã²€\Ïž=/LÿôÓO²u¶oß.ü?uêT¨TÊÉQ«Õðóó³ù™cÆŒ‘L;Òw[SÛ²e‹ð`` ÅÑf­ !ÖŽYff¦¤©ê³Ï>k±™ìÓO?-™6LDÉ«¯¾ª8Ò¤I’éÜÜ\›û""""""""2qIr&3fÌÀ?ÿùOÀ¶mÛðç?ÿYX¦Õj%£ˆš÷SfI]]rss‘••…¬¬,hµZFõ#‹Š•——7ö+¸Í7„ÿgÍš___Åõ:t耤¤$ɱ³¥¥³Û·oK¦|ðA‹ë4qqqÈÌÌdddØÜÿÀ燄„H¦ mˆˆˆˆˆˆÈÄ¥¹É“' ¹ääd!44€|Ѓ±cÇZÝWee%V­Z…¿üå/BPÅñ€žîêÕ«Âÿ:t°ºnÇŽí ȵôcvëÖ-ÉtLLŒÕõ»uëfw@.00PÖôU,""B€Â4È‘=\3yôàÁƒ˜1c`ïÞ½Âü±cÇ"88Øâ~rrr0tèP»ƒJ&Í©?4ÓH @}°Ç[' u3q@.00Ðf]ñq»víšÕu£££—8"""""""" \kÛ¶-fÍš…ï¾û°oß>! ÷ã? ëM›6Íâ>ŒF#¦OŸ. ,õïßO=õºté‚ÈÈHøøø¨onilLÍGMôz½Õõ-õµ'Þ_K?f€íãdN<8Ã;wœ""""""""»¸4 <ð€Û¶m>üðCdffJj„Mœ8Ñâö§OŸÆ©S§„éßþö·øë_ÿª¸î•+Wœ”j÷òòòB=„cRZZju}[ƒ´†cÔ7Ý5)++Cmm­hT"°B<à‘;¹< 7~üxáÿëׯãæÍ›’þãâãã‘`qûÝ»w ÿÇÅÅI†0gOGýJÌkœ5E³Í®]» ¹œœ«ëšf`ÎÇ̘÷µ———gµÿ=qÁ.]º¸,]æÊÊÊðôÓOËúç0`~ýë_»-DDDDDDD䬷}t‚ØØXôïß_˜>xð öìÙ#LOŸ>Ýêöâ,­6×ܺukƒÒ$™ÎËËkÐ~£S§NÂÿ[·nE]]âzEEE8tèÕ}¹ú˜ùûû ÿ—””8¼½³˜ßvîÜiqÝôôtI­Lqí:W«¨¨À×_µk×JþÄS"""""""j=\€™3g ÿïÞ½Û¶m¦'MšduÛÈÈHákñ߸q~øaƒÒçåå% ŠœpqMÂÌÌL8p@q½µk×ÚÜ—«™8xxþüy‡·w–Ž;"..N˜þÏþcqÝÏ?ÿ\2””ä²tYã–€œ¸¸Õ«W#??_˜¾ûî»­nÛ§OáÿK—.aåÊ•²u®\¹‚x QilðöÛo[ ˆ¹Ê´iÓ$ýšýâ¿ÀÍ›7%ë=zÏ?ÿ¼Í}¹ú˜‰rûöíæM›´ŸÆR«Õøãÿ(L'''㥗^’5 ]¿~=þö·¿ ÓsçÎE¯^½Ü•L"""""""" —÷!wÝuQVV&™?}útøùùYÝvÔ¨Qˆˆˆ‚x=ö¶oߎqãÆáÎ;HNNÆŠ+Æ×_]RÃjôèш‹‹“Ÿþñ`Ĉ’í:„õë×Ëö'TaíÚµ²àüîw¿Cxx8€úàÒoû[<ùä“êkÉ 6 sçÎE\\RSSkJ\}̦OŸŽ§Ÿ~Z˜ž1cz÷îž={" @}¿|Ÿ}ö™â ÙÙÙxûí·eóÅ} ž:u K—.•­3þ|Ií¶G}üã…þáÞÿ}?~“&M‚J¥Â¹sç„AEL~÷»ß9ø‰ˆˆˆˆˆˆˆœÈè&‹-2ü-_¾Ü®m·mÛ&ÛVéï/ù‹dúäÉ“¥qùòåV÷¿iÓ&Ù6|ð]iSúKII‘ìK¯×_yå«Û'Ož,LOŸ>½IŽÙ‡~hsߥ¥¥ŠÛ&''7ø˜}úé§Šû‹·kûÕ«W[üN«W¯ÖëÑ£‡Õï!¬»aëëæää(¦eìØ±V·#""""""¢–É-MVàþûï—Í›0a‚]ÛNž<‡FïÞ½—46lÀk¯½&™¯V;Vð‰'ž@rr2}ôQÅÏRÚŸ···CŸam[ooo¼ûî»øïÿ‹ÀÀ@ÙúñññسgF%ÌSª¸þ˜=ÿüó8pàžxâ ÄÇÇ+¦×Ò`9fJéKLLDrr2yä‹Û 2—/_Æ‚ ìÚ·­ã >î¶Öµ´¼M›6V·#""""""¢–ÉËh4›:öÒëõHOOÇÕ«W¡Óéйsg$&&JFýl) ®^½ŠóçÏÃÛÛC‡• ``¯ÖtÌàÎ;HKKÃ¥K—PWW‡øøxôîÝ[hJKDDDDDDDÔÔšU@Žˆˆˆˆˆˆˆˆ¨¹s[“U"""""""""b@ŽˆˆˆˆˆˆˆˆÈ­#""""""""r#䈈ˆˆˆˆˆˆˆÜˆ9"""""""""7b@ŽˆˆˆˆˆˆˆˆÈ#""""""""r#䈈ˆˆˆˆˆˆˆÜˆ9"""""""""7b@ŽˆˆˆˆˆˆˆˆÈ#""""""""r#uS'ÀÇŽÕ+W½zõ°aÜþF£7n„Á`Œ?!!!Nÿj=.^¼ˆýû÷[\~ß}÷¡wïÞnLQëRRR‚Õ«W[\Þ³gOL˜0¡QŸQTT„}ûöÚ´iƒ|°Qû3 X³f êêêÓ¦MƒF£qÚþ‰ˆš‹ÔÔT\¸p‹#F4qŠÜcÇŽÈÍÍ 6 ½zõ²{[g³ºº:\¸pyyy(**Bmm­°lÀ€HLLthééé¸uë QYY)ÌŒŒÄäÉ“•V"¢– //Û·oøøø`þüùMœ"r§ä´Z-6nÜØèýøøøà‘G¦oÞ¼‰›7oüýý]3\`èС ÈQ£hµZY\®ÓéܘšÖ§ººÚêñÏËËkôghµZ¤¤¤ÓÎÈ]»vM˜®¨¨`@ŽˆZ¥ŒŒ !¯-..n5¹«W¯ ÷±Î;;sæ1ËÊÊÂ×_ŠŠ Ååááávä***ðÍ7ß 33Sqyii)rD­Trr2~þùg‡¶‰ŠŠÂý÷ßïš51N'Ä@¨årj@®¢¢·nÝræ.‰š­€€øûûKæY*Ì’óùúúÊŽUU•P –¬ËÏÏÇ—_~ ðööÆ‹/¾ooï&N‘ûœ9sF¨‡‡~¸‰SDä~uuuVƒqŽÚ¶m›Å`¹ïéÔäää8K°7oâ=¾ÿþ{\¹rz½^XÏÏÏC† ±ØäÚÕNœ8'NHÞ4õ¿O\\fΜé–àÜ—_~‰ììl@ß¾}1uêT›Û|òÉ'Â5;lØ0Ù1ÌÏÏGJJ RRRûwP©T ERRR“Ôhݸq#222—©Õj¼ð vï«¶¶›6mBZZšäüò÷÷Ç Aƒpï½÷Úµg3ñoÔjÅÞyçÅí’’’0fÌ«ilL$f {Ïž=ûbŒˆˆ@ß¾}1räH·pׯ_ôôtÀˆ#Я_?lܸÙÙْ'Z%Ñh4âæÍ›¸té.]º¤ØQ±ÂÃÃ1iÒ$«y±Ø¡C‡pøða@||<zè!ܺu ;vì®a•J…Áƒã¾ûîCÛ¶m…ùžšo‹iµZlݺ·oßjã›øûûcäÈ‘Gš,--ÅÇ,™wçÎáÿ¢¢"üíoSÜö¡‡²yþ:+ß®««Ã»ï¾+³E‹!<<û÷ïlj'$y „……aâĉèÞ½»l_žx=™|ðÁ²<ȤK—.vhýã?âüùó€Aƒaüøñ.;:ÛþýûqòäIIÐK­V£[·n²fY¶8ã˜]¼x[¶l‘Ì_K'OžÄ¹sçdÛ1BvÏjè5‹… ZM§'^O@ãò @~Ì–.]Š¢¢"ìÝ»·oß–ÜS0þ|ÄÄÄ(îË•÷ô†HIIÁ?ü þ^ñì³Ï:´}YY>úè#aúÙgŸmÎ(åää`åÊ•ÂôÃ?ŒÎ;[M“N§Ã'Ÿ|"LOŸ>½{÷–­W[[‹£GâðáòsʤsçÎ4hú÷ïoõ3É>®¾§;Kaa!6n܈ÜÜ\ÉõŠûî»Ïá—¹çÎÃþýû%å' þˆˆˆÀôéÓí®é|çÎážY^^.Yæããƒ^½zaÊ”)vµZ-öîÝ‹ .(.W«ÕèÙ³'’’’ì.Û¶$Í2 ÷ÝwßI:…;sæ òòòðä“OZÝGII‰¬@&&~‹gËÁƒ…Q[,)//ÇÉ“'î¶&nƒ»víÂñãÇ-®S\\Œ¯¾ú #GŽÄ¸qãdÑé»îº GŽ W¯^—_~YñÍæ­[·$Ç¡[·n²`ìÙ³ÇfÇú:'Nœ@zz:.\¨øvKœ9lÞ¼Y²¬¶¶«W¯FÛ¶me·nݶmÛd¤ŠŠ ¡UXXˆ•+W*ŽVUU…ƒ"77sçÎu[Ÿ‡øöÛo-„ nݺ…>ø³fÍBŸ>}\šžÈÈHܸqpöìYÜÿýVز³³%ýÇÄÅÅÉÖY½zµÕA/  °eË\¿~3fÌpkŸ“yyyVó {ét:|þùçŠûª¨¨À¡C‡ì΃œuÌ´Z-jkk-îÇü᤬¬Ìêg7621X¹r¥Åóß$??ûöíCß¾}…þ“\I«Õ ÇæöíÛ8zô¨â±ÒjµX·nƇQ£F)ªJÏ’ÚÚZdeeaÅŠ˜8q"†n3eeeBšLª¯_¿^q]ƒÁ€S§N¡oß¾’~\<5ß69þ<6mÚdq劊 ìÚµ W¯^ÅܹseµKôz½ÅsÜÄÒrkת³óm£Ñ( Þ”••aóæÍÈÍÍU\¿°°ûöí“<õz21´ˆåååÙµÒÒRá7+--uJÙÑYôz=Ö­[‡«W¯*.KMMÅ_|añá]‰3ŽYUUUƒ®ó‡5 á×”ùƒ¤˜§^O@ãó @~Ì233±nÝ:Å}–——ã³Ï>ÃÂ… ƒ®¸§7FHHˆð™ùùù¨¬¬t¨–8È©R©(,sF9(22uuuÂ5wüøq›¹3gÎHŽ£yßg@ýïþÑGIÎ3%7oÞDvv6rNâª{º3]¿~«W¯V¼¾‹ŠŠðí·ß"11Ñ®}éõzlÞ¼ÙbÀË`0 77Ÿ~ú)&Mš„¤¤$«ûËÉÉÁš5kóv ¾¼vîÜ9\»v .”µpËÈÈÀ_|a3ý)))Ðëõ­rôÛf¦ N'y#’™™‰ëׯ[n·oß^R¸4 V –dffÊ‚q±±±Â‰YTT$Tñt·5kÖàÚµk’yQQQGqq1rrr„LàÈ‘#hÛ¶-î¾ûnÉú>>>xôÑGñßÿþ@}æµ~ýz<òÈ#’õª««±fÍaÚÏÏsæÌ±+AAABuÚòòrdee 7®¢¢"|øá‡xíµ×lFàPZZ*Ôø¨­­Emm-Ôj5zõê…ŒŒ á†}ñâE«5ºLÕÝúf:t@uuµ¤ÖKZZ6oÞŒY³fÙõ=£¶¶|ðä“Ô~òññAÇŽQ[[‹ÌÌL!(â¨Æ³øøxI€°²²R2©X{ÄZEÎȃL>,yS©TˆGûöíQ]]ÂÂB8ôël¦šr@}¾ƒ¢¢"ó÷ìÙƒ   » ÝjµFhÚ[TT$©Ñ¶sçNÔÖÖÚ]›¨Ø2Æùúú¢M›6 ^J<)ß>vìvîÜ)™§Ñhªª*dff ¦7nÜÀÚµkñØcIÖ÷ññ‘½5...–\ß–Þ*‹ ÅÜ‘oïØ±Cˆ1=¨VTTX½<ýz •Œij~ÖPÎ*;:˦M›$Á8•J…˜˜´mÛV<ˆS°‡3ŽYûöíe繸f³BCCeÛ)µ(iè5eéžâÉד3ò %ß|󎈈øúú"++K’–;wâ™gž‘mëŠ{zcDGGC¥R çÒ­[·`÷öâüÊRÚ†—ƒLµÃOœ8HMMEmm­Õ{Ø™3g„ÿããã»VX·n$çããƒîÝ»Ãßߥ¥¥²29‡+îéÎTRR‚¯¾úJ2/ qqq(..ò2ñ³“5?üðƒ,‰àà`äççKb;v쀟Ÿ  ¸¯ììl|öÙg’y~~~ˆ‹‹ƒ··7²³³…rYyy9–/_ŽW_}UñZÑëõXµj•d^HH:vì___”””   À)•š³f3yðÁ1pà@a:55k×®¦:dµPu×]wá®»î¦ Þ|óM‡Ó‘œœ,ü¯R©°xñbśٵk×pàÀ·õùpíÚ5ɃpDDæÍ›' B–––bÍš5›Óýû÷#11QÖGFTTî¿ÿ~lÛ¶ @ýCçÉ“'1tèPa 6H2¹… ZíÄÏÏÇÇ!CdÇÄ`0àèÑ£BóQ½^Ó§O[­æ?räHŒ?@}5}qM¬… ¢cÇŽ¨®®ÆÛo¿  >°X\\lóŸ>}0{öl¡ÖNYY>ýôSáÁõÂ… ˜8q¢ËGøÙ¿¿äøöë×S§N•d~øú믅õ6n܈çŸÞemò#"",d¢gÏžµ3BÓ!Sú-¦ÂÃÃ1jÔ(ôíÛWV㮺º7nDZZ€ú¨ÜÜ\·uö=cÆ Éôµk×d7[.^¼( ÆuíÚóçϾkee%>ûì3‡^8ã˜Í›7O2}ûöm¬X±B˜~ê©§ªèÌ<¨ïfÀ$$$O?ý´¤I%PŸWœ;wGm’ѺM¦L™"© }óæM|õÕWÂÁÞ½{­äºuë†Q£F)¾/..Æ—_~)\w‡¨Q£ìnN(ºÝwß}:t¨W œ?Û·oWÜÖóíÊÊJìÞ½[˜öññÁC=„®]» óôz=¶lÙ"4µËÈÈ@ZZzôè!¬€%K–HÒ÷ÓO?á§Ÿ~Pì0_n‹;òmSð@£Ñ`îܹˆŒŒ¶ÕjµØ±c‡bO¿žÌ›ÿïܹÇŽkô~t†ÒÒR\¼xQ˜ö÷÷ÇÓO?-<FlذÁbm>Kœq̺uë&{Y¶lÙ2¡;–âþûï·k_ξ¦<õzrVdITT.\(Ô&«©©ÁªU«„yyyn¹§7–©TS ¹19¥kÔå aÆ 9 ¾Ö£øYQìÖ­[’²Ü°aÃdëTVVJºxèׯfΜ);+**püøqÙ Lj8WÜÓÉ”“ûî»OòB:;;Ë—/·XãVL§ÓIž±|}}ñÔSOIú#½|ù2Ö­['LïÞ½ýû÷WÌ7mÚ$™ž0a†.Y÷äÉ“B\ ¶¶{öìQ¼7˜wË3mÚ4 4H¶^AA:ÔjúiÚ^lh̘1’Pÿ–]œ±[ªnîl·oß–¤ÁR` k×®xüñÇÝ22ŒÁ`4 ÀSO=% >aÑ¢E Ù`0`ïÞ½Šû:t¨¤à°mÛ6ááéôéÓ’š!“&M²Ú>}òäÉxíµ×pÏ=÷((U*F%iîjë AÏž=…ÿÅ…I•J%´EoÛ¶­$s² •ã€ú·&O=õ”d=k}:ƒV«•ª0kÖ,Ù›ˆN:aÁ‚ÂtQQ‘ÃzG‰ûâHKK³Ø<âÖ­[’‚´Rf Ï<ó ž{î9 0@1Àжm[Ìž=[Rˆ´ÕŒÎÓ˜@ýƒØ‚ $ßµ]»vX¼x±ÝûóÄcæì<È`0H®×{î¹G<êkK </¼ð‚Ûûê4:t¨¬[‚Î;cÚ´i´N§SlªÖ®];¼þúëxä‘G,6•1=(šèõz¡é¸#ž|òIÜ}÷Ý’ÂJ¥ÂÀñÚk¯ÉšÞxj¾½cÇIõÉ'Ÿ”<õçÅŒ3$5e¶nÝj5måÎ|»k×®xî¹ç%¹_…„„`Þ¼yxüñÇ%ë7§ëÉ™<¥ìhê—×ä©§ž’ÔÈðòòÂìÙ³=np‡¦äÉד+ó µZÇ\Ò´Ó××WÖ¿ y_ žJH³Õ\^ÌÔá½Ò~畃4ä9Nœ3'nÅàãã£\5¯åj©[Üwß}•ý¨ù*//—ôÅÙ§OY똘»›nš—›Ÿ|òIÙýÃÔß›¥4˜œ?^r­M:#FŒ·C‡ÅèÑ£…é“'O*¾üÇI|}}->ÿ…‡‡cæÌ™’4¶&Í. §R©,¶{»lµÕwñ ªÔßXS¸yó¦¤/…3f M›6ŠëúùùIš;]¿~Ýâ~gÏž-©Ž½zõjäääH ݺu³Ù.Ý×××®·•â‡5[Á3ñƒ¾øÿ   YÊÄVæoL‚ƒƒ%ýŸ‰ßt»ÂÉ“'%Óæµ´Ä:vì(y¶ö{:ƒùÃMjjªâz⚤~~~;ì´§©d{kýæxN'9—‡ ¢XS°]»vv¿9öÄcæìàååeWÿ­…§^O®Îƒ†ªØ L£ÑH‚äÍ¥¹W—.]„ÿsrr$y‘N§ÃÇŒ?þXÖ”/??_ô4/C:³$¾î ‰0õwe2xð`»î­!¯%ÛL55M,Ý›ºuëfW±+W®ÿGGG#<<\q½JÊŽâ{‘‰x`ƈˆ«ƒÁÝ}÷Ý’ýÙ:¿kjjê¥5ivMVCBB,žœæop«««ßú:Sxx¸I.--ž}û0jÔ¨FWÜâÈ6PC)..–Âú‚¹¸iœN§C]]baÄ4Þ§Ÿ~  þûšþë7ÎD¯×C«ÕB§ÓÉ: Xk«ñþø ˜ùï ^f+ g­3à~ýú X¥‘Iü{ªT*¡ðgé÷Z,úë,AAAˆŠŠj$''Ëšâ IÁÅÞJ«««¡Õj¡ÕjQZZ*!Lœ¡»«óUg0o†jí0`€Å§%žrÌœy{{ÃÏÏOxx9wîºvíŠ>}úxÔ0é¦~Õ”¨ÕjÄÇÇ µ‰KJJl¼\ÈËÊÊ$ÇOÜ£ý6v=OɷͨÊÊÊpêÔ)Åó ç™999.kžè®|;!!ÁáQµ›ËõäLžRv4DÀZÓõ¾}ûÊF†}ôQ»Û~ët:8p@RsÊ[mèÅv–þ7Ÿ¶õkí73?-ÊâßÓ`0àÇ´{[qÆê*wÝu—PKòæÍ›²‡™k×®IÌ-UW6ÉÌÌÄÞ½{ín†gOÿ žÂüæg-?säfåiÇÌyPbb"Ž=  >ý6lÀƇ®]»"..;w¶»/5W°Õ¬Oü giD8£Ñˆ””ìÛ·ÏîšoŽþž -ÓÓòmóš /^t¨ÆrAAËrîÊ·­uaMs¸žœÉSÊŽæMz¬¥Ë××WxoÍ<õzrud-8(>o›Ë‹I„„„/ánݺ% ȉ¥¥¥ 5‡ÄÍ[ŵìÄœUR«Õ8p pŸKNNÆÄ‰eýg™DGG£}ûöŠû BDD„PÖétX±b|}}Ñ¥KtîÜ;vDLLŒ]i¦–Aü,`«r[/ÌkÇÚzvïÏ|ÛššÉóZqq±Cy­Òà$=zôÜÇÒÓÓñÞ{ï!88]ºtA§Nйsg‹×PkÑìr® z4T×®]‘””$Œ6i’ŸŸüü|a~ll,|ðA‹ÕHɼvУģH*6l’““…ŽØúê¶öÞP®^½*‘ÕÄUfÍkÖˆ‰§-EüÛÕßÍGRÒjµ.;73½; ò}ûö•4[NII‘Tq÷#¥Ñh¬ö‹³{÷nIui{ˆß~z:󀜵·¼öŽòä‰ÇÌyÐØ±cqãÆ IŸ,ƒ·nÝÞž«T*ôîÝ<ð€Ë_Æ(±Uÿ¦J5êêê°bÅ ‡ûrd$ņ@ã‰ùvcG¦³u¯k wåÛ ®6‡ëÉ™<¥ìh^KZiTF1???—×Âo<õzruä)ç­3uéÒE(fdd`РA0 ²@ÚåË—…€œ¸†œRÓÙå ÓsP ¿zõªÐG\ii©¤Ö¥­nzæÎ‹eË–I^&ÕÔÔ 55Uháëë‹#Fàž{îi±µ”é ÈÙz0¿§Øz1,^^[[+i‘¢Ô<ÛJù™¿¿?fÏžo¿ýV2_§ÓáçŸúr ÆäÉ“è¥%iv9O4iÒ$ôìÙGŽ‘ n –••…?þ=ö˜¬³lgßdüüü0þ|‡¶·ÖÿPÿ°-Æõ£Ž;ÖfS]­V+ ãn $$þþþÂCZzz:öïßïPÚÝÅ<˜çȱ£Ÿ#.LvëÖMÒß–-îA«mÛ¶ˆúiINNrz½^ÒìÒZí¸””Y*!!Ý»wGPP¤`ºÿ~‹×š'³6gO¡ÌS™+ò µZÅ‹ãìÙ³8qâ„,ê¼.^¼ˆk×®aéÒ¥n­™ ØþÍÄÇEé!qëÖ­’`œZ­Æ Aƒƒàà`IþºzõêõwÕ€œ§æÛæùîÂ… -öU¨$44ÔÙIàÞ|ÛÞÀ½ÒgxúõÔغ'ðáܳ¯'O̓}ºS>×^¶jqˆó óàÆ;w$#^………aÉ’%îZ»«!÷OÍ·Íkœk4—åÅŽpg¾Ý˜²„§_O-‘y-Z[M +++]™œfÁ“¯'O̓<™8 ¦Õj%/nU*î¿ÿ~¬X±ƒ’ßÄÏÏO4uU9())Ihý‘žžŽªª*øùùIFW0`€]____Œ;cÇŽEYYnß¾«W¯âÒ¥K’ç7nàâÅ‹’f¨åiß¾½PF¶õ¼iëYÀüžRVVfµé½8¸­V«%ç¯ùuè´¼V£Ñ`úôé˜6mŠŠŠpëÖ-\¹rW¯^•”/÷ìÙƒ~ýúµº>æs2oooÄÆÆ"66£FBaa!V­Z%´ÓÖét(--ué‰)üïhgß¶lܸQ’9ôèÑC-&-- 'Ož´Ø¹) …³[·nVß,5¶êlc ÔÖÖZ¬ñgþàÝZ öÖª ޹¥~§šZÏž=%}\¸pIII’7‰111S]]¤éÔøñã­¾9nhßxâ‚+›«Yb^P/--µØDÆÖoí®c֮̃L|}}øøxL˜0iiiX»v­p¦¦¦z\@Nü›šßnݺ%)”<ôÐCƒqæý|¸š§æÛæÃeeeó0Üòm1O¼žZ"ó{ µsC¯×³ÿ¸ÿÏS¯'O΃ºœÕLíôéÓ’³±cÇbþüù’Q“¶mÛ&¹9š¿íµÖçœÁ`px„Ig3ï`VìòåËÂÿ¾¾¾v¿UÆí-TŠ |999ùÆ\­V£W¯^Âtrr2jkk%çžµ¡³Í¿STT”Åu‹‹‹mÞ ,AšbT2ó§ùÐçbâsL‰«™y0ȑ摮ʃ¬éÑ£Æ'LWUU¹ýa¶¸¸ØbÆh4 µHy_Eæç£µþF•†ªw%OͷͼÄ,9ƒøp´Óôæo[ã ×SK¤R©$ƒ_Y»^¬•AZO½ž\9ScîéÎ&¬¥¦¦ ÏE½zõ‚———Ð<ôÊ•+¸yó¦°®yÿq®,ùøøH^>:uJR;N£ÑXý<{¨T*ÜsÏ=’ïeO¿„ÅÅŸyó¦ìÏÑþg[›ÆÜÓI\þ«©©±ú›Û*S™×r³– \½zU˜VHA<Ïù™ŸŸæÍ›'ùMY!§©0 çæÁ[íÁ«sçÎ’{Û¶mvmg0,¸óòò$÷ÇÄÄàî»ïP_“üo#KµbÄý) ·l’œœÜäŸ8qBq~UU•$ÀàHûzq ÂZ0F¬ÿþÂÿƒÁîþ™ÜYƒÜòóó…üL¬½ñ3ï¸ØÚ¹±k×®¦PZx...v{PÎÔß–‰x¤.1½^/i¾¨ÄÕÇÌÁ÷ßÜÜ\ÅåJó»zxkL™2E˜...ÆêÕ«->(•••aÏž=xûí·&ÍûS«Õ˜?¾P8÷÷÷Ǽyó„åX¿~½âg‰ß&]¸pA±6ÝÅ‹í~€w¥ÌÌLüôÓO’ywîÜÁªU«$óÆŒc÷>Å7N‡}ûöÙìÓ"..Nö–n÷îÝGˆÊÍÍÅwß}‡·ÞzKÒ«uéÒE˜»®]»Jj˜óöö–<ôïÞ½[ööÊ`0`ÇŽª+™^¿~½[oÈ^^^=z´0]\\ŒíÛ·KÖ©««ÃêÕ«m¦\}ÌÚ¶m+¹IîØ±Ãî`‹³ó òòrüýïÇÞ½{-4ÊËË%iáááM@Ø¿?®]»&™W\\Œï¾ûN˜öõõ•õ§(næ [¶l‘å UUUX¹r¥Ûk6xr¾ýàƒJ¦—-[f±–vmm-N:…÷ß6l°¹oó·ÇÛ·o·{„bOη›ÓõÔ‰ïðÕW_ÉîCÀí۷ݘ*ÏæÉד+ó gjÌ=ÝÙÌk@}­!S™F´6Q©T²šã®.ÅÆÆZìbhàÀ6·OIIÁ‡~ˆÓ§O[,kÞ¼ySò’_騴&F£z½^ò§4žøÏÞ¹¹§;SHHˆ|ê_Λ·ŠÑétøúë¯íÚßøñã%Ó_|ñ…¬öhNN6nÜ(L«ÕjÅ òÈ‘#%×Ô† páÂÅÏ5HKKÃ矎wÞyGq­[·båÊ•HKK³ø¼{àÀI@¯5^­²¹cÇŽÉ[0·{÷nY&ìçç‡x@2¯¬¬ ùùù8wî4 bbb¶mÛ¢¤¤ÉÉÉ’Úb 6G"u†ÄÄD=zT¨›žžŽþóŸèÚµ+"##áåå­V+1UébÙ°aƒä¦=wî\ÙH}ñññ>|¸ð¦+==Ç— ž˜˜(yÃôé§Ÿ¢ÿþˆ‰‰AYY222lþ6îôÓO?áÊ•+èСƒÐKüö³K—.V›–™KLLľ}û„ãyðàA>|AAABAiàÀ¸çž{$ÛÝÿý¸|ù²pÓ1Ö/T}.((@NNŽÐ_¡»yyyaÀ€Šoz¬5W5ILLÄ¡C‡Ôuß}÷] 2!!!(,,DZZZ£¿›F£AŸ>}„jØxë­·$Ôè Å‚ dÛnÞ¼YV 2«ˆîÔ©“ä¦7hÐ ìÞ½[Ø×‰'póæMtêÔ F£W®\±»9³«Ù€„~ ðÏþAAAÂÃyß¾}‘˜˜¨˜6gåAƒUUU8tè:„˜˜DFF"""^^^ÈÍÍÅùóç%…²†ôíâ,«V­B·nÝN‡+W®H ÷Üsì  ¿¿¿0ºP_ƒöý÷ßGbb"|}}‘+W®4É]Oη5 ’’’„ÚD:Ÿ~ú):uê„ÈÈH´k×eeeÈËËCvv¶pŽ˜@•DEE!88X¸†Îž=‹ . ,,LRÓuܸqŠ({j¾íÉדN§S¬É"N(æµwÝuºtéâÒô9CXX˜ddòœœüûßÿFBB¼½½‘™™éPÓ³ÖpÌϽž\™9[cîéÎ.é« ¨>2ñõõETT”¤²C‡_ ¸º”””„;wJæõèÑmÛ¶µ¹mmm-ŠŠŠ°uëVlÛ¶ :uBxx8ÂÂÂP[[‹7nÈ^àÙS^nɶoßn±õPLÿò—¿Hæ…‡‡ã¹çž³¹ïÆÞÓi̘1’n Ö­['”ËÊÊpùòe»kEEEIî)ÅÅÅø÷¿ÿ=z ((HOO—\o£GVì§ØÛÛ>ø V¯^  >øùÝwßáàÁƒˆ‹‹Cpp0ª««QPP€ÌÌL!Æa)¶QUU%4©öõõEçÎŽ”——ãâÅ‹’&ª¦þl[›V»xñ"²²²¬®“™™){ÀP©T²€œXqq±Õ7qÁÁÁ˜1c†c‰m„Ç{ 7nÞ¼˜ÚŽ‹ÛÛròäIIÓÊ!C†};˜?~<ÒÓÓ…ð;v cÇŽ’;wFbb¢¤³ÿóçÏãüùó²ý 2Äb5^WóõõE›6mP^^ŽœœÅ·¡¡¡˜5k–CûU©T˜3gV¯^-d´ƒAÒ¯…R_þþþX¼x1Ö®]+¬[UUåqý• 4Hö›©T*É› KÆŒƒ””áÒëõ’¦ &>>>ˆopM¹I“&!33SR@À,5·Ÿ³–(ý’€œ··7~ñ‹_à‹/¾μ¼}úà®»îjÔg4DDD a0žž®Øw^ß¾}1|øpÅízè!|ðÁB¡I§ÓÉjéõµ¬«««ÝVÖÓóí & M›6ÂCPlÏÈÈhÔ~½¼¼ðàƒâË/¿æéõzYøÁƒ+Þ›K¾íI×Sii©Íã£×ë×‰ŽŽn6Á¥Y³faåÊ•Âý¾¢¢gΜ‘¬€ºº:›5b[Ë1óäëÉUy³5öžî,^^^èСƒäøˆû!ê›­ŠóZKé®. 8P2dˆCûêõ7¬–ë¦M›&냷µqd$\{kÈ5öžîLQQQ˜:u*¶lÙ"Ì»víš,@Û©S'»ò‘™3gbõêÕÂw©©©±X³mÀ€Ë¡@}—*³gÏÆ¦M›„甂‚»ú7´¦¦¦W®\±Ø?ªJ¥Âc=Ö*k㻵ɪ¸ª´#[¼µþ×ÌkXZ·¡m“•öwï½÷ÊšÁ™S«Õ3f ž{î9«Íöœ­]»vxä‘G0{öløùùY]7..÷ß¿¤Ÿ¯²²2I$FƒI“&Y܇J¥Â‚ $ÇI©ºí´iÓ0iÒ$‹¿ODD/^,y[æk狽璿¿?–,Ybq´¦ž={â™gž‘Õ´GçÎñâ‹/¢oß¾ŠUá-ŸQQQXºt)Feu˜u•J…„„Ì™3Çí£}EGGËŽIŸ>}ìºæT*–,Ybqd•J…nݺáÅ_”T;w´OÆÀÀ@,]º#FŒ@DD„Ý}4´ïG¥ýÅÆÆâ…^°XðJHHÀÃ?lóó]}ÌÚµk‡—_~#GŽDhh¨âygí·mldÒ¶m[$%%Y‘Ö$((³fÍÂìÙ³­®ç*:u£>ª˜Ï«T*Œ;³g϶xüCBBðüóÏ#..Nq¹¯¯/’’’ðÄOHŽ»­ëK¼¼¡ç±'çÛ*• ÷Ýwž~úi›5–5 î½÷^Lœ8Ñ®tuéÒÏ=÷ˆ€€‹Ÿo‰³ómgôIëÉ×ScúصVtFÙÑ™Le K×KXX–,Y"¹ŸZJ—3™­uÛ·½¿‰%žx=™¶sFd-ï3×|½±÷tgØÔjµì¾g ³8vu9ÈÏÏOœñññ‘õkI‡п›åŸ:àÉ'Ÿ´{dIg—S=IC‚1Ž|ïÆÞÓiðàÁX¸p¡bí2•J…ñãÇKZLYKW@@/^Œ#FX\G­VcÖ¬Y˜1c†Íë¼oß¾x饗,VÂ1ñõõÅàÁƒñÈ#(.OLLD·nݬæ×@}ðÅ_lô@)Í•—±!¡h’ÑëõÈËËCii)t:T*Ѿ}{„……Ù<Ý¡¦¦Fhf0àïï„……¹5PhR[[‹¼¼<¡cÙÈÈHDGG7YgŽ?ýô“PE£Ñ`éÒ¥êGqÊÈÈ@yy9"""£XÍ×ÝÊËË‘——‡’’ÔÕÕ!$$!!!BS€æ¬¼¼ùùù(..†··7âââÖ"ßšTUUáöíÛÐjµG‡”_4‡cæŒ<¨ªª ùùù(--jŽ´oßíÛ·Ghh¨Û¿ï²eË„×C† úÎ+))AFF ƒÐ$Б´ ßÓßß;v” üÐ<-ßVRWW‡ÂÂBäå塪ª ~~~Fhhhƒ^¢8“§åÛžv=µFz½ÙÙÙÈÏÏG»víйsgYgõ¤ÌÓ®'O΃Z2W”ƒª««ñöÛo ÓÇ·û…Ž˜N§Caa!JKKQSSh4¡É0µn:·nÝBmm-bbbÕàóÖh4¢¸¸X‘:$$ÑÑÑ .CF””” ??:mÚ´òZ[/öÄû(((€V«Eii)êêêЮ];¡¬a+hÝÒ1 GôÿY ÈYb) GDDDÍÛÑ£G%}4.]ºÔî ‘=šw5"""""""'ªªªÂ¾}û„騨XãˆÈéš¾%QÒét¸sçRSSqüøqÙéDDÎÆ€µZÕÕÕxï½÷—õèÑ={ötsŠˆ¨5`“U"""""""3ݺuüyóš:DÔB±†Ñÿ% eÑÄ©!¢æ gÏžÂèP:thâÔQC¨ÕjôèуA¥5>>111qšˆ\†£¬¹›¬¹rDDDDDDDDDnÄ€‘1 GDDDDDDDDäF ȹ‘ÚÝ˜ššŠ .bcc1bÄw'Ác}÷Ýw(++Œ3:ujâµ.7nÜÀíÛ·ÇôéÓ›8EÍÃŽ;põêU‹Ë.\ˆàà`»öuñâEìß¿ßâòû{÷¶k_ëׯGEE`üøñˆµk»ææâÅ‹8}ú4@£Ñ`Ú´iMœ¢Ö娱c¸rå  W¯^6lX§¨ua¾MDDÎRRR‚Õ«W[\Þ³gOL˜0Áîý-_¾UUUŠËüýýñøã;œF²OYY6nÜ£Ñ///<üðÃðññiêdɸ= —‘‘””@qq1r"W®\Amm-€úcÀœ{âæÍ›€¼¼<>ØÙ)77EEE—WWWÛÓjµV÷¥ÓéìNו+W ×ëÔ°Zj@.''G8o š61­ÐÍ›7…ãïïïÏ€œ›1ß&""g©®®¶ZÍËËshÙÙÙ0 ŠË)Ó’ã*++qãÆ aZ¯×3 GÉí9gøàƒPSS˜7o:tèÐÄ)ªwæÌìÛ·‡‡~¸‰SDäzF2 ßÚÉø»BYY™<(,,lâÔ¹‡yÉÊÊJüãÿhоˆJæýë_ÿBiiiC“Gdóm¢ÖÁSËŽž¬°°PȵZmÓ&†È 4 ~õ«_IæmÚ´ ?ÿüsƒö÷üóÏK¦/^¼ˆ 644yDÔ¹= 7`Àh4õý½µ&nÈEEE!**ÊÝKDDDDDDDDäše“ÕÖ¨¤¤………ˆˆˆ°»ƒ|[êêêPRR­V h4ص­Á`@aa!ÊËË¡Ñhâ”45–Á`@nn.jkk‹6mÚ8e¿z½™™™P«ÕˆŠŠ‚Zí9—NEEòóóáåå…öíÛ#((^^^vo_YY‰ÒÒR”••ÁßßõýœíÎ;ÈÊÊ‚¢¢¢ R©Þ‡«ŽY]]ŠŠŠ ÕjFÓ¤ÐF”••¡¤¤µµµ@`` üýý:ÇZ«ÊÊJdgg#((aaa :×ÌF”––¢¸¸F£ÁÁÁvÿZ­ÅÅÅpZš«5äÛF£ååå(--EEEÚ·oÐÐP8þb̃ìç¬rPii) СCɱ6 ’ó×ÓÎOQ[[‹¬¬,øùù!22²Qç…N§CAAÞäǼ®®¥¥¥(--…^¯GXXX£ž<ùzr6½^¼¼<ÔÔÔ ** íÚµkê$y¬Öxž™ÊgFh¹GÔT\^:ýàƒPWW§¸¬K—.xðÁ­nÿã?âüùó—¯]»V±ð…Ç{Ì¡´:¢´´ü±dÞ;w„ÿ‹ŠŠð·¿ýMqÛ‡zñññ6?£¼¼[·nÅ7„Žˆ@­VcÊ”)HLL´¹ºº:¼ûî»Bg¤‹-Bxx8öïß'NÈ: Ãĉѽ{wÅý;wû÷ï—õ%¢R©éÓ§#::Újš>ûì3ad¡éÓ§£GŠë]¼xÛ·oPß§ÃOÝ»w ÓݺuÜ9s×ÕjµØ»w/.\¸ ¸\­V£gÏžHJJjV£»#ß6 عs'RSSe#¨ <S¦L±ë!oõêÕ¸}û6`ìØ±6lΞ=‹½{÷ÊÎ___Ü{ï½;\ÏÉÉÁæÍ›‘ŸŸ/ë˜:$$cÆŒÁ€¬¦‡ù¶ãÊËËqéÒ%\¼x·nÝR\'88 ˜0a¼½½Ý’.sɃÊÊÊðé§ŸÂh4ÂËË Ï>û¬ÅßmÛ¶!%%@}¡ãÇ·˜¦ÆæA®,;6¦tâÄ a™¤¤$¤¦¦JÎÓ„„Ì›7‡Âþýû…ëU¥RáᇶX6s†‹/bË–-’yâ²çÉ“'qîÜ9Ùv*• /½ô’$˜(þžjµ/¾ø¢ÍÀî… °uëVaú…^ÜKÿõ¯ éyøá‡QSS#”ƒÄi‰ŒŒÄ¬Y³fÏׯ7°k×.äååÉòGFƒxÀ®¼ßYòóó‘’’‚””Å~MU*BCC‘””„ÁƒÛµOO¸§§¤¤à‡~PŸï=ûì³m_VV†>úH˜~öÙgeA£;wî÷_ó¼ÌÇǽzõ”)S8Ò&ZîyfËáÇqòäIIßÔjµ;wÆÌ™3ï_999X¹r¥0ýðãsçÎV?G§Óá“O>¦§OŸŽÞ½{7:ýÔ2¹< 'îDל=CG—––J æ ƒârWw>«×ë­¦ €ÅåÕÕÕ6÷_]]eË–)‰­×ë±yófèt:Œ=Úê~ŒF£¤óâ²²2lÞ¼¹¹¹Šëbß¾}²BŸé3-e²¦Ÿ~ú)&Mš„¤¤$‹i*,,Dmm-ë#hVTTË­ntãÆ ¬ZµJq¢¢"¬]»Æ sxxñ3gÎÈ §&™™™øàƒ°téR·åjkk±eË‹¿P¬Î;‡sçÎá÷¿ÿ½ìá?--Íf‡²HKKÃûï¿GyÄæÇÓ¥§§[ì7//Ÿ}öæÎ‹„„Åu\uÌ®]»†o¿ýÖj^R\\Œ-[¶ °°'N´¹O%ÇÇŽ;„éÐÐP<ðÀŠëfddà‹/¾°º?½^””èõúf5*©«ómøî»ï„ ƒ¹3gÎ //O>ù¤Íý”””i)//ǶmÛpòäI‹iÞµk—b@îĉB€L‰V«FRœ>}ºÅ /ómÇíÙ³ÇfGà:'Nœ@zz:.\è´ðöjltçÎɃ¯µÑ‹‹‹í Ày+ÊŽÎ(•—— Ÿ{àÀÙòÔÔT|öÙgÈÎΖí{Íš5xå•Wh1QUUÕàüÑü:îܹ³°nMM .\¸`ó¡þرcÂ6ÁÁÁ²[âèsçÎáìÙ³ŠéÈÉÉÁ'Ÿ|‚G}]ºt±øyƒ»víÂñãÇ-®S\\Œ¯¾ú #GŽÄ¸qãÜR»gõêÕV²2 (((À–-[pýúu̘1ÃêË:O¹§‡„„¿o~~>*++ªµvûöma{•J%»rrr°fÍÅ— @}ùùܹs¸ví.\¨øÂº5i©ç™5û÷ïÇ©S§Ó•žžŽ?þ=ö˜,˜‰ºº:áþvüøq›eü3gÎHòËN:5þ P‹åò€\hh(ŒF£0mªk¯ØØXY†!~›¤X°vuFëãã#{Z\\,¹ø,½!µ§0µsçNáFƒöíÛ#//Or£9xð †___»Ó½cÇIÔtS«¨¨°ú»üðòBhdd$‚ƒƒ‘ŸŸ/)ÄîØ±~~~6k\8ƒV«Å—_~)™gª©T^^.jOœ8áÐ~«ªª„‡:SÓF½^ÜÜ\¡àYSSƒ#GŽ`„ Nø&¶Fü÷¿ÿ•¹ƒƒƒ-< 8:"©ŸŸ4 BCCQ[[‹üü|á3ôz=V®\‰Ç;vtÚwq7ñCqxx8BCC‘-+ƒÁ€µk×â™gžAdd¤Íý9ã˜]¾|ëÖ­“ÌS«ÕˆŒŒ„F£Aaa! Ê/•:t{÷î¦###ñÄO(¾!ÖëõXµj•d^HH:vì___”””   Àá ‰§pu¾-Ä 22:Nòö933ׯ_w¨ÆEJJŠìºÀ;w¬>@Ÿ?^Œ Ò%~)fÊßgÍšewºª5åÛb¦& !!!(//GVV–𬨨~ø!^{í5·ÕÞpWägåA®(;º¢„N:áòåËÂq6ÿ111ÆåË—…õÓÒÒì®­â¨öíÛËò?q­1„††Ê¶óòò’ÕŒDXX˜÷8qÂjºu:$9lØ0«iã""" Ñhd÷ô/¿ü¿üå/-6%^³f ®]»&™…ððp#''GøîGŽAÛ¶mq÷Ýw[M—³©T*„„„ 44íÚµƒN§Ã­[·„t¥¤¤@§ÓY|ÉãI÷ôèèh¨T*!í·nݲøTIFF†ðdd¤äesvv6>ûì3Éú~~~ˆ‹‹ƒ···äÜ(//ÇòåËñꫯ²¦Üÿ×’Î3kLÁ8•J…˜˜´mÛVè­¨¨ÀgŸ}†×_]’§©T* N‡ 6ÍÝ”¨T*$&&bĈŠìëׯcõêÕÂÍxÿþýøÅ/~á¤oÒ4T*-Z$ ’™×Ú·oŸÅ·vÎ}ºlÛk×®I‚q˜7ož$}¥¥¥X³fðâbÿþýHLLtK7ááá5júöí+ vVWWcãÆHKKPÿ’'77W±Û Oº§›š›ã È™ß?Íó² &`øðá’kïäÉ“B>V[[‹={ö8t>·D-ñ<³%((‹/®cƒÁ€o¿ý©©©êÏääd 2D²Ý°aÃ$/ ÏŸ?»îºKñ3nݺ%iI`ë{ˆõ`<òˆäm¥——&L˜ )Ô›7k°G×®]ñÜsÏ!**Jr³ Á¼yóðøãKÖ×®€'Ÿ|RV×Ô/ƒIyy¹b_#ÎT^^.©ùÔ³gOYŸ4áááX°`Aƒö‡©S§JÚÂÂÂ0nÜ8aZ¯×˘®PUU%éÿ+ /¾ø¢âÛüàà`<ñÄX°`âƒ@¯^½ðë_ÿS§NU ,õ…qsè7n¸µ–„+Ìš5KVcmذa’‚ÿ•+WPRR"ÛÖÙÇì§Ÿ~’Ôlš:u*Ưø{Ýu×]xùå—Ñ¿«ßÏÜŽ;$Á¸.]ºàñÇ·Úa¾8ˆëëë«X ꯫™3gJ®yª7fÌI0¨ïJüàa©ËküüüðÒK/!!!ARpöññÁ¸qãðÆoHÖ¿pႤFõäÉ“eý—„…… ý&æù½³µ¦|{òäÉxíµ×pÏ=÷È‚q@ýê¨Q£$ù’R3>>MRqˆšäñƒ¢½}YzôéÓG˜>sæŒì!hXm___‹¹æÛ_½zU2}óæMIsæ3fX,OùùùáÞ{羚_¿n3meO0ÒÇÇGòŒ`­¿nO¸žÄ}úåääHÎN‡?þü1¾úê+Év承û‘#G„ÿ#""¬Ö ½ûî»%×§µ–$-]K>Ï,éÚµ«b¹ÂËËKRv«¨¨ Çþ/((P ÃÔOžÉàÁƒ=fdYò\.o²J c­óÇ   áG3½„„‡š#™w|l^óC¬M›6èÞ½»PpUªiäLâý«Õj«ýuõîÝÛb‡è–ÄÅÅ)Î7ï„ÖZçÎ"~ûçãã#y¸o ƒÁ€ÒÒRhµZhµZI À¼¹XC›y‚^½zYlž ???á»Û*p4ö˜Ý¹sG2Ô¨QN½Y÷Ýw’~Žzöì‰yóæÙõæ5.7mÚ„©S§º½£ùæ*$$ÄbS q¾ Ô?X›jÇØâëëëpí$qþo5 >> ~›[·nIrbiiiB­%qóVq-»ššÉKŒââbüøãv§G©TkÒRÏ3K¬åæ5甞Ôj5(ÜÏ“““1qâDY_…&ÑÑÑMþ©y`@ÎCÙS•¸!}È2³hëJ¼Ü5-l5m²÷Á×ÄÓ:«û ljàh0WüƬ¹±uÞ7+53uæ13/ºúf}öìYôìÙӮΓýýý1{öl|ûí·’ù:?ÿü³ÐHpp0&OžìP‡Ì­y-,g±Ôo¡%æ5zlÿæ#È–””¸, ךòí«W¯bÍš5M wçAŽðÄ<ÈUå óyâióþ𳤤$¡æÉÕ«WQUU%”q/]º$yÈ7ïHÝ[£^[ È™×s”«ƒ¢»wï–4ô‡¥ò™'^O]ºtúÊÌÈÈÀ Aƒ`0dA¡Ë—/ 9q 9q J¥&ƒŽhnngjéç™ke•J%yigéåü°aÄ€\mm-®^½*4Ÿ/--•Ôx·Ô… ‘9äZ[…sæoCl½¹4/8Zª6î âϲU«ÀSšã4”ø86¦pn4ñùçŸKK2dBCC(¼¥¯©©‘õãÑ\Ù:fâóÇüœuö13/иâa+)) §OŸ 6lÀÒ¥Km>HõM–.]ŠC‡áÂ… ŠMèt:Ö®]‹qãÆaÔ¨QNO?I9šo›ŸÃ¶ò?óå® ¾·–|[«Õâ›o¾‘Ì‹ŽŽÆ€áX¤§§cÿþýnK›;ò Æð´<È“ËAÍÁÀ%MÁÎ;'<¨Šk“ÄÅÅÙu»§›Ÿ?âóßÏÏóçÏ·ë3M\Y£4%%E$IHH@÷îÝ$yé³ÿ~¤§§Ûܧ§]Oñññ’€P_SËô›EGG#''·oßF]]êêê$}þ‰@1ÏËF-Åký²¶d­á/•ˆ›¯™Wiwö13ï \«Õ:p±Æ4Ü|çαvíZõ$kÖ¬ÁÓO?mW Ñh0}útL›6 EEE¸uë®\¹‚«W¯J ,{öìA¿~ý<®Ÿ–ÆÑ|ÛÔA¼)ˆlëü7Ïm**Æ|»Þ™3g$×Êœ9s,Îŵ?ÜÁÕy%¶Î 1Oʃš²Ôøùù!!!©©©ê`“’’PZZ*ä€cµIlåâsÍfæ}Ï4¶É…˜¿¿¿0ZbBB‚¤óñ¼¼<ìݻסýyyy!,, ƒ ÂÃ?Œ_ýêW²‘í®]»f×¾L…ñ¹Ž8ÿµ•o›÷s¥Te¾íq¾Ñ­[7«oÊ™ØÃ™yù‡µs£!ýÊ:3j(W”ƒZq°­¸¸ùùù’Ú$ÖFBWâÈKó{zdd¤ð¿#AbW«««CNNŽ0=~üx«Ý˜÷iO¸ž%Ýòdee ýÇÅÇÇ#..NÈWRSS%/,̼×4l—õJ\®ml3Wñ¾š¢ÔZÎ3%ÖòÊÊJÉ´µ€\ÿþý%çÝÏ?ÿŒÌÌLI¾cÏhÑD&Í2 '¾Ì/ ¦$~`iNCÓ[cþvWÜù®9ƒÁ ^ÞR¿4â±µºø†¡Dü–Ã`0 --Mq=£Ñˆ‹/ZÝ—§×h¨ªªjðL|³ ³Zó¦¡Ç̼ß'[g[ÄoCº/ññ9­Vkµðîìcæëë+¹¦Ž;fs›†zà$„‡–tŽì(???Ì›7O’~{æ?ùä¼ùæ›’¿ƒ68-ÎÒóm@z§§§[ Œ_ºtIø_­V+ŒÀ|Û1â²ILLŒÅõ ƒÕüÉœ™™7ù²”G×ÖÖ:¥Æccò †–]Qj.ÄyxDqGuîÜYr®œ:uJR›$11Ñ¡þ†Í+((ÚÌkʤíiŽçæçdTT”Åu‹‹‹û»uTc®§ÆÖRSS… O¯^½àåå%o®\¹‚›7o ë*À+¾Æ¬]›!®ÉÕØ|L\&3 n9¹5gæ._¾lq™yYÄZÞíãã#yÉfžŸi4«Ç•È\³ ȉÐ=©Yøâ­¨¨hvÃÓ["¾qÞ¸qÃâ¨ÔÔTÉw¶4t½øÆf© ”››‹ÜÜ\«éJHH°<¨XÛâòåËÍþ·0ïuûöí6«‘+=‰¯kÕ……… .ØxyyI:NµVp¶‡¸ðléáÝ–ªª*‹£H>}Z2-pÍ1ßÈóóóm~/ƒÁ 4Yv„Z­–õóõ×_7êÁʼ{¢”Þ{B-¹–šo‹ó_½^o± Z^^.ɇ-5÷a¾íqh­¦_rrrƒ®íÆrVäíí-yȲtnœ>}Úi×{Có Æ”]j.Äù£­kÛq‘S§NIC‡uh_¥¥¥¸}û¶â2ñƒ1 m"išŸ³Û¶m³ë3]]³Û|P kùÆ®]»œö¹ ½žC|]ˆ_ôìÙ@}d@}™K\v3ÿ-ú¦&v¿àp¤Å…¸Yqqq£‚ræbqßZÓyfÎZ¹âĉÂÿ¾¾¾²®Ì™×ú=wîœ0íh~FÔ,râj¤'Nœð˜ œy4}ûöíÍzdJ“ñãÇK¦¿øâ Ù–œœlܸQ˜V«Õ3$qóË‚‚Y-N'ë [‰†.Lgeeaݺu’c~óæMlذÁæ¾<]HHFŽ)LbùòåŠHuuuصkþõ¯É â~o***püøqÙöyyyøâ‹/•^ñCýÙ³gUàèØ±£ð¿N§Ã¾}ûÔIöÚµke«W¯JúÒèܹ³ì&ìŠc6qâDIádíÚµÂ(Tæ²³³ñïÿ[’NGDEEa„ ÂtMMl$,“­[·båÊ•HKK³xŒ8 )È*›“–šo2DR»eÓ¦MB¿I&•••²óÖ<¿7a¾íñÛñ .(Ö¼xñ¢ÝÁgsf$¾†Nœ8!«ùpãÆ ìٳǮt¹2jLÙÑÙå æB<(((ü*ùúë¯e/ÉRSS%EtïÞ]ñññÁ”)S„éââb¬^½Úb`¼¬¬ {öìÁÛo¿-Œ®è ÞÞÞ’@þîÝ»eµ¶ vìØawÐÉSïéJŸ¡Ñh„ïoþb¨è('#GŽ”· 6àÂ… ŠŸk4‘––†Ï?ÿï¼óŽÝé•L¯_¿¾Á/Œüýý%#‚oÛ¶­Q]Ñ8ª5gæ ¾úê+Y0vïÞ½’wß}·Í bcc-ö'î.†È.ëmP§Ó)FÖÅo´ °~ýzÙ:wÝuºtébqßC‡š] üç?ÿAHH‚ƒƒ…·^aaa˜>>’BÀ<`WíÄÄDìÛ·Oø-<ˆÃ‡#((H¸a8÷ÜsÕýÔÔÔàã?FÏž=Œüü|YmޱcÇʶsÅ1k×®&NœˆíÛ·¨ÏÇ6mÚ„#GŽ ..(++CNNN£k%Àˆ#péÒ%¡í7nàøñã²N´«ªªpóæMܼy¾¾¾B€2$$ååå¸xñ¢äaÛ××·Ù×i©ù¶Z­ÆèÑ£…û°^¯ÇòåËÑ­[7„‡‡£´´iii’¼¢S§N›W2ßvLbb¢$xñé§Ÿ¢ÿþˆ‰‰AYY222$Ú»›3ó #F`óæÍÂ~>ùäôêÕ AAAÈÉÉ‘49³Å•yPcÊŽÎ.5ýû÷—S¿ÿþ{ìÚµ íÛ·‚ ^^^²æhJüýýѵkWY— ZVUUáÃ?D¯^½ˆ¼¼<Ù¾•îé@ýõyôèQ¨¯ÙùÏþ]»vEdd$¼¼¼ Õj‘ŸŸ/ ܺzÄÜÄÄD:t@ý Àwß}C† AHH ‘––æP_ŒžzO‡J¥’\/â– ¾¾¾ˆŠŠ’ä=:tPì2ÄÛÛ>ø V¯^  þ^÷ÝwßáàÁƒˆ‹‹Cpp0ª««QPP€ÌÌLáž§Ô5ƒ%}úôZAdddà­·ÞBPPpÞ‡††bÁ‚víoâĉøá‡ÔÿÎ|ð,P·xñbY0ÎÒZÎ3%™™™xÿý÷…Úú·oß–¼0S©TvçIIII’¤ G.ûݨårY@®´´Ôfó-½^¯¸Ntt´Õ€\Ÿ>}pìØ1IaV«ÕJÚ¹º= çåå…|_~ù¥0O¯×Ë ³ƒnVv0sæL¬^½Zø.555ß@ 0@RÂ\HHˆdÄ- ¾sOqAÊÏσ¶Y+ÈÏÏÏ>û,V¬X!yˆŸ >>>˜0a‚0"Ns¥V«±dÉ|ûí·Âï ×둞žnw(íڵÌ3$ðŒŒ Å~Å’’’kƒÙC£Ñ`„ ’ |mm­ä- ½UþU*æÌ™ƒÕ«W ðƒAò› Õ–tìØ·nݲ˜çÀ¤I“$µñL\ŭ ƒÁ ¹™Øü. 5oÞ<¼ÿþû’Àb—.]$\‹ÕÔÔàÊ•+›«T*<öØcvªô{‹û%k*-9ß6l „ÎÓM}¶)###1{öl‹ûb¾í˜Î;#11QÒqýùóçqþüyÙºC† ‘5³sgåAýû÷Ç®]»„¦ðƒA–ÏvéÒ*•Ê¡þO5¶ìèÌrPs„1cÆ`ÿþýÂ¼ŠŠ YÐ\¯×Û5¢`RR’ì79´W‡pûömèõz‹¿Áý÷ßo5Ï~ì±Ç°qãF¡üdêÿÏÝMÅÆŒƒ””¡¬¤×ëûxôññA||¼CýO:ûzj ///tèÐARŽ2Ô£wïÞ’û°µN·nÝ0{öllÚ´I(ã8»<5iÒ$dffJUâ®a $11©©©’{±ùuÕÐAÌìÑZÎ3s;wÆÍ›7Q^^.뮨ÎzôÑGíÖ8P2dˆSÒJ­‹Ëš¬Úªêi=íÊŸxâ ÜÿýˆU,4EÛt ¾ÐùÜsÏaàÀP<–Ž8s²–~ñö¶Ž³y†×Ðß% ‹/ƈ#,®£V«1kÖ,̘1ÃæñŸ;w®Åæ áááxê©§$U­¥[£ÑàùçŸGbb¢¤IJ@@ €'Ÿ|Rò–ÚRFëÈq/w繦Ñh°dÉLœ8Ñjá×ôp­ô=úôéƒG}TÖ·IPP¦OŸ.k¢ãè¹3bÄ<ñÄèÚµ«âg9²¿Î;ãÅ_Dß¾}«ˆÛú ’’’pÿý÷+~¦©Ÿ5óÚbb®8f^^^>|8–.]*ka¾¡C‡ZLŸ½çb@@æÎ+™·nÝ:Étbb"ºuëfóÁjÀ€xñÅíî´¶¤¤DVXU«ÕHLL´k{WkL¾mo¾aþÛ¸#ñööÆôéÓ1{öl«¿iRR–,Y"écK ómÇL›6 “&M²˜®ˆˆ,^¼XÖG¨»8+òööÆóÏ?¯üP©TèÑ£,X 9-WåA&);:£$žg~ Äå5ñ²¦xp»÷Þ{±`ÁôèѾ¾¾Š¿½iìÚµ«dÚ´OG9ãÆSL‹}ôQ›µ\Úµk‡Gy³g϶ùr(..÷ß?úöíëpZ¡R©°dÉa´t¥åݺuË/¾(i*ÞT×Scˆljµqqq’åæ:k5 oß¾x饗d£yšóõõÅàÁƒñÈ#8”ÞÀÀ@,]º#FŒ@DDD£úDóòòÂüùó1mÚ4ÄÆÆ*Þß\yÝ·–óÌ<½sçÎE¿~ý× Á³Ï>+É×???É}ÏÇÇݺukXb©Uó2ººþ5µ8F£ÅÅÅÈÉÉAee%BBBmóaNIyy9²³³¡ÕjѾ}{têÔÉ¡jäJLý:ˆ÷sðàAìÛ·@}°ê™gžiÔgxŠÊÊJäå塸¸uuuÐh4 ³:\·‰Á`@~~> PUU…ÐÐPÄÅÅ5¨pÜ\Fäçç#++ ÞÞÞèØ±£C£à¹ò˜ !//h×®4 "##íªyàLF£Ðjµ(--E]]Úµk‡öíÛ#44Ôášm§OŸ–Õt7nFåÌd“ ¦&ˆZ­íÚµCTTBCC.ø3ßvLmm-òòòŸŸ þ»DGG7Ù‹CK›F””” ;;UUUˆŠŠBlllƒ^:;r6g–ƒZ“k×®aÕªUÂô£>* ÒYòÇ?þQøÞ¼yHHH€ÑhDnn.²³³Ñ¦MtìØÑ®ò’šš¡‰ªÁ`€¿¿?BBBÖ$å¢òòräç磸¸ÞÞÞˆ‹‹³9Ò»%ž~=9›)/ÊÏχN§C›6m‚YŸ‚­]k<Ïêêêpûömäçç#((;v” vaêêj¼ýöÛÂôðáÃ1qâDg&•Z ä¨UX½zµÐ,¡OŸ>˜3gN§ˆ¨õøæ›o$Í|||ðÚk¯¹=ÐHÍ óm¢–åË/¿FÍôóóÃk¯½f÷ƒ¿R@Žˆ¨©=zTÒ5ÏÒ¥Kð¥i–£¬‰Ùꋬ¨¨HÒÇZs’¨¹1=€™Œ;–Á¸VŽù6Që’‘‘!¹ :´É›ã5DUU•Pƒ¨u•Á8j(>Q³·lÙ2ÔÕÕaÈ!èß¿?BBBàååƒÁ€ôôtlذAX7 ÀbHDä|………BsD ¾ÿvzKÌ·‰Z¶ºº:”••¡ªª gÏžErr²dù°aÚ(eDDŽÓét¸sçRSSqüøqÉÀ÷ÜsO¦Œš;ä¨E(//Çþýû…‘Àüüü„ßÄxàF 8BD޹~ýºdz„ ×w5 æÛD-ו+Wðí·ß*.›&;;³ –]Ðûw]^îÌœ9{v˜-óÌsÎO…Ž_zz:ÒÓÓQ¿~}¸ººVA+ÍWXXˆøøx¨T*¸»»‹¶%''£   4€£££IõUÕ¹¡V«¥R ___›žo¥¥¥ÈÍÍEvv6òòòàåå…:uêTê=EÕCu:Ϫ’¥^§Z­Frr2 áëë‹ZµjY¸¥£=£“““ ["¯´´III¸wï|}}+Ý}6//)))P(ðòòBíÚµ¡P(,ÔZÛËÌÌDzz:ÜÜÜ*üý«+##iiiP©T÷í¤7DDDô`±ø•Ë7°aÃayÞ¼yF8]ºt ýõ€².óçÏŠŠŠÈÈHDGGˤîêê ???Œ9nnnz5¦ILL½f]}ûö5ë®óÕ«W±gÏÑølvvvðõõÅã?nR–:fÚ›råIÀ©S§pþüyÉ~rG]ßÿ=JJJd·5iÒĤÙwíÚ… .:uê„AƒaïÞ½¸zõªdæËÎ;cøðáF/ ŠŠŠ°uëVÄÄÄˆŽ›««+ºt邇~?üðƒÐö)S¦TYמÄÄDüú므Æ£V­Z8{ö¬°ÝÛÛ³gÏFrr2þøã Ûz÷îʾ>K½Ÿ´Ï:uê`Μ98sæ N:…äädQYLœ8Qo`3''Ë—/Gii) æÍ›§7X°{÷na¦Î:`РA’2¹¹¹ˆŒŒÄ¥K—pûömÙz<<<вeK <¸ÆuŸÚÔjµèyããã±qãFÙzsss±bÅ <õÔS 4ø¼EEEøë¯¿pñâE½e4 Ο?óçÏã½÷ÞÝ8ªªó,##Ãà{Ӝﶓ'O"44TïöÌÌLa†öQ£FéÍðÌÌÌn,edd 44T¶jµ!!!ÈÊÊB¿~ýLn'Qubñ€œ““š5k†˜˜@DD„Á€\AA({”L2x{{£N:(**BJJŠ Q«Õøõ×_1sæL«M¦PÞm†‚Múœ;wNŒóññ‘••…¢¢"áØV¤æ3///Ô¯__´.99Y¸@qttD:u$ϧP(ŒfÕ©S¥¥¥Ârvv¶Á Œ1Ú8777Ô«WYYYHKKÖÇÇÇ#66Vöª´´Tn•S*•hذ! ..jµG­p+K©T¢U«V¸uë²³³üwÑU»vmàÊ•+Âq¼pá‚$ §ËRï§‚‚!xàèè___¨Õj$%% çKaa!Ž=ŠÁƒWøTTíÚµáíí OOOäææâÎ;Âì„wïÞÅ’%KðÚk¯Y-K¨²êÕ«áü>yò¤ÁÏϬ¬,$$$ËÝ»w¯ò6eY:ÅÅÅÂr^^žÑ ¿!Õé<óóóÞ‡å…ǵk×– –™ô²Äë,¿‰£ÍÅÅþþþ°··GBB‚ÐþÜÜ\¬\¹ .¬ò÷@E›nýªöÇ(Ë^S©TprrÂ;wDßS{÷îųÏ>«·ŽÒÒRüôÓO’ߨ_¿>4 ’’’$ÇC[Ug^^^¢ß.¦B3§_¸pAŒóð𾃵o°•%ÇŽk´Þ½{÷ ½½½áåå…äädÑwôáÇѣGjÙÍ™ˆˆˆÈ˜*l§sçÎBÐ(33iiiðññ‘-«›Í$[ÎÎÎ;vDÏž=e@±±±X·np¡òÏ?ÿ`Ú´i•y&óõõÅ‹/¾(Z÷ã?"55Õä:JKK…îg@Ùë:u*š4i"¬;}ú´¨»™1–8fÍš5C³fÍDë~þùgܹs@YwÁG}Ôä6iÓíª¶wï^?~¼Bui=z4:tè ,_½zUÔ¥øÈ‘#²¹Ë—/‹~èûûûcÚ´iBW ¢¢"¬ZµÊä콪0yòd4iÒ………øüóÏ…¿R©ÄsÏ='''ÄÄÄ`ݺuʺHÉ©Ê÷“n×à´´4¬ZµJ~:u ´Êøm...èÑ£ºví*óI£ÑàØ±cøûï¿”OŸ>ž={Vy»,%88XøL(¤êÞ(wæÌѲµºz3F´|ýúu¬]»¶ÒõV‡ó¬oß¾’N|ððø±Ç«ô?•yÛ·o-<=zôUvêÔ)ìÞ½@ÙgÜßÿ]áÏtSYã¸YН¯/žzê)¡û|aa!Ö®]‹øøxe7¨’’’ôNHtêÔ)Q0ÎÍÍM61++ [¶lA\\œ¤Žª:^]ºtA—.]„eFƒE‹™UGii)öíÛ'Z7~üx´nÝZXNKKÃÏ?ÿ,â/^¼ˆGyžžžFëwrrÂôéÓ…ƒåÏWþ[A£ÑàôéÓèÕ«—Yí&"""ªªäJ¥y󿢋í1¯ti_$úùùÉv¡jÕªÞxã Œ1B6x¢n 7nܨT¶•µ]½zUt|Ĉ¢`PöãÙÔ¬–á˜Ééß¿¿(-[¶DË–-…夤$Ù}Ë3@ÙEÀŒ3Dãò8::bÖ¬Y6 @Yû´Ç­ó÷÷2ÊËeØÚYˆ@Õžþþþ1b„èùøøˆÆ²S«ÕÂ8NUiذaxíµ×зo_ÙØíììлwoQ柡Ϫê(((Ht¬ÃÃÃõ–Õþ¬mÞ¼y¥¥·¥êtžU¥Ê¼Î . %%EX1bzöì)™8 [·n¢÷ú©S§jüq³¥R‰™3gŠÆ²trr’Œåªyª­  û÷ï–ÝÜÜðÒK/Éf®yxx`Ö¬Y˜ôÐC¢2Ú™s...F¡¯îªëyfi•ywïÞ«Õj„‡‡Ëk²n€NNNÂû?>>^’åô 24n¦»»»hü=9ÚŠŽŽŽ¢C÷ íïÎÀÀ@ƒ7{:tè |Þ¡¤¤ÄàX³ÚÙÞº´¿Óõ"""¢ê®ÊrprrÆ 9{ö¬$ !<~衇 þ+**©S§pøða“ƒFÆf\«N´lÆÆUñðð0) w¿3]†fÈÔížWTTd0 g¨.ÝàžµèÝ´ƒ¶ºï¥R)šSWUœvvvßÃJ¥R$´†¬¬,:tHôYcHM<ÿýüüàáá!déœ:uJS«Õ¢±:»téR£2ptUÇó¬*TæuŠ‚Ëéé騵k—ÉÏmÎø§÷3CßÅÚß)úÎ3íãX§Ný¾ÓGû·ˆvÖ¶Ý㙕•¥wÌKcõi¥kòD"""z°UY@N¡P }ûö8uꀲn«ÚEgddˆf¿46;à?þhö®’’3[m;Ú™IÆf’3% ô 3]ºY#æÐÈ»–›ÍÎtÇ®ÓÈéfh/ëfÅTÕ¹QÝf¹»ví~ÿýw[7Ã*‚ƒƒ… ¯]»†‚‚!`) 4víÚÕ&m´”êvžU•ʼNíï֊О÷AV™ï@3xª©4膱ß&º¿m222 —š<Î%‘)ª, :ur………¸}û¶ÐD»ËŸR©”t±*WZZŠ_~ùEÚ·oOOOÑx|111øçŸlÑL‹éСƒÊ>_ËÇS,ÿ ʺ@Ú*Ó¬G÷;¤_¿~hÚ´©ÉûÛê¦ÃýFû»Â–“UÝïBc¿Mt·×ä€DDDD–P¥9___Ô®][gåìÙ³B@N{6Ã6mÚèGäöíÛ¢“;wîŒ#FÈ–MNN¶TÓ­J¡PÀÅÅEÈ’3ÖÍÊØ xÂ1³4Ý®1ºcÌi«ÉãÕÜ/ç†\7\mgΜVǧwŒÊÛ·o[´m¶àââ‚–-[âêÕ«Ê‚pÁÁÁÈÎÎF||¼PNߤ'tÑ=ÙÝÝ]vpüµÇˆôööÆ÷Ó'ö~Q>APù í™âåè~wžƒˆˆˆè~W¥9 ì‚¿<ûäâÅ‹9r$RSSEAN:éÝ¿ü('ë±ÇÓ[¶¢?x«Ã][! gìG­±íÖ8f÷Ý€\FF†dÌÃr5yF·ê|nèNdb(èflöLí×Ù¬Y3ƒÆT´{ŸöçFeÇž³ÄgPpp°ðºÓÓÓ‘’’‚+W®Û•J¥dvNº?•g€–Ÿ—ÆnâÔdÚckêj+7»vUS©TÂŒµ÷ëwmíÚµ…ÏPc¿Mt?·­;yò¤èó°Ü£> •Jeµvi«ò>:t«ÕjÄÆÆâܹsÂ:'''ƒ3iißQõññ1Ø%âÒ¥Kj£n&”±•UAû‡ill¬Þ üÜÜ\ÑìyúÊ”«Šc¦=¾š-.rª‚n@N;ƒS—öù[ÓXãýTQºÝäô½‹ŠŠŒf)æçç 4h ·œF£ïÌ¡ÝõS£ÑTj`qK|5nÜXt ÃÃÃE³«vìØÑàŒ†dÚ]µÏCkÓþLÓžÔã~£}ΫÕj½ßIIIÖj’ nݺÂã‚‚\¿~ÝbuWÇó,&&ÆàÍ„ÈÈHá±R©48V«¥Ý¾}7oÞ”ü»ŸƒÕDDDTýUy@ÎÃÃCt÷1""BìèØ±£Áýµ6”“––Vá‹…B777a9**ªBõTFË–-…ÇEEE¸víšl9Sf‹¬êc¦ýÜ9UÁÍÍM¸‰ˆˆí:œ““ƒèèhk6Í¢¬ñ~ª({{{Q–\LLŒl¹Ó§OÍHÓ~?ëΠ«-""BèRf.ÝÁÈõ½gMa©Ï îÝ» ÃÃÃEËnݺU¸}d:í÷˜-»}·oß^xœššjràÙÚÝ:+KwFì7nÈ–;|ø°5š#¢ý½¡¡¡FÇ 55_]γÀÀ@á±Z­–ÍBÊni¦³ 5‘r€xÕË—/‹²ª uW ê6˜——‡'NHÊ$''cõêÕ•j£öógÏVêâº"‚‚‚D³êýù矒L¸ØØX„……­«ª™v "55U4AGM6hÐ á±Z­Æ²eËDwÏsrr°|ùr[4Íb¬õ~ª(í`ïÉ“'%ÝIoܸ¿ÿþÛh=¾¾¾Âã‹/"11QRæÒ¥Kؽ{w…Ûêêê*zÏîÞ½»RÝÒ,ñ¤o¶jQ¶Uílç“'OÚ,XÒ«W/QwË–-¸xñ¢lÙÒÒRDGGã—_~ÁâÅ‹­ÕD‹Ðíö¸gÏIw÷cÇŽé ÔU%OOOôêÕKXNKKÃÊ•+eo”””`ß¾}øúë¯Mê_]γ®]»Š2ݶoߎ„„Q™üü|ÉwŠö÷-уªÊÇÊ‚M¡¡¡’õºÙsrš6m ¥R)ܵ߳g®\¹‚æÍ›£¤¤ñññÉX4hèÎîï¿ÿGGGÑÍc=&º ”eñÈuoÔ¦]¸pAöB}èСÂ]n;;;<üðÃØ·o€²,¹eË–¡E‹ððð@JJŠÞŒ!]U}Ì‚‚‚DA‘mÛ¶aß¾}ðòò …&LŒ ”ef•¿Nmåcíe¾Í›7KÊtéÒMš4©pÛ iÒ¤ êׯ/o²²²ðÕW_ÁÃÃ¥¥¥6éÊliÖz?UTÏž= ¬èÒ¥KѪU+Ô®]‰‰‰¸yó¦IõtìØQ(^¾|9‚‚‚РAäääàÖ­[¢É*jÈ!رc€²ç÷ß/ ÔÍ™3Gï!Ú*ú¤ÍÕÕM›6•t³Uv\HHˆ¤+¯nÆ¢Üû<  ÆfôuëÖ ·nÝPv/[¶ žžžððð>}||0lذ*m‡½½=FuëÖ(»ÉðçŸâðáÃð÷÷‡‡‡îÝ»‡ÔÔTÄÇÇ A,kv#´GGG´iÓFÈèMMMÅ·ß~‹V­ZÁÞÞ7oÞDjjªÍÚ׿œ>}Z8¾wîÜÁ7ß|ƒÆC¥RA¡P 99qqqF'«ÑVÙóìøñãF?÷ïß/É@tqq=ªT*ѯ_?á;]­VcåÊ•hÖ¬êÖ­‹ììlDGG‹^[@@€Á¡ˆˆˆˆV ȹ¸¸ @øñXN_6‡¶Zµja̘1¢‹¶[·nIêÊ5—Ëø1…··7, ‰irãVÅÇÇíÚ—••%Û=°wïÞ¢n'ÁÁÁHNN jµZR·T*•Á®¢U}Ìj×®þýû “ueÁÝ»þjµZ6 —mô˜É½v ,ëªr0cÆ ¬_¿^øÑýÛM˜06l¨²6T%k½Ÿ**((ûöí²h5ä>^´³³³“LÔ½{w¤¦¦ ïwFƒèèhÙ›;õêÕÃO¾æl³ä¹aêñ×ݮU··ÇóÏ?/;íš7oŽÉ“'‹½úžwäÈ‘:t¨Þí*• sæÌ‘Œód…BI“&aäÈ‘ðóó“Í.24q†®Š|éjÚ´©h¹ü=j }¯Wô}®»ÝV“XÌš5 >ú(üüüdoJèkWU¼Î¶mÛbþüùhÞ¼¹ÁúœœœÐ¹sgL™2Å`¹ªR™¿[ù{Yî7JKK‘‘‘„„À××~~~:ÎEEEHNNFJJ €²‹Þúõëß·3Ž^¿~k×®–§N* Òу©ü}•’’‚¬¬,888ÀÓÓžžž’IJj¢’’¤¤¤ 11 … 6„­›%‘ŸŸääd¤§§£¤¤ÞÞÞðññ‘Œ‡WSåää 11™™™¨U«|}}Q§N³nN=jT@ލ:8qâöìÙ ¬;ö믿nãýgÍš5Âö...xíµ×x!LDDDDDTÍÔ¼´¢*”ŸŸ’’½Û5 :$,7jÔÈÍ"2É­[·D³IvëÖÁ8"""""¢jÈ*“:Õÿý7.\¸€öíÛ£sçÎðõõºI¦¤¤`óæÍ„@Ù,›D¶RRR‚œœàìÙ³’ì»wïn£–‘! ÈéP«Õ8sæ Μ9 l°óââbh4Q¹nݺÝã.QÍ…M›6Én6ljÕªeå‘)#2¢°°P´lgg‡Áƒ3ûˆª-žŸDDDDDDÕ'u ÒRTT„[·n!&&‰‰‰ÈËËC~~>\]]¡R©P¯^=´oßþ¾™ j¶ÄÄD8p@Y&g“&MÈÌM"""""¢jŽ9"""""""""+â,«DDDDDDDDDVÄ€‘1 GDDDDDDDDdE ÈYrDDDDDDDDDVÄ€‘1 GDDDDDDDDdE ÈYrDDDDDDDDDVÄ€‘1 GDDDDDDDDdE ÈYrDDDDDDDDDVÄ€‘1 GDDDDDDDDdE ÈYrDDDDDDDDDVÄ€‘1 GDDDDDDDDdE ÈYrDDDDDDDDDVÄ€‘1 GDDDDDDDDdE ÈYrDDDDDDDDDVÄ€‘1 GDDDDDDDDdE ÈYrDDDDDDDDDVÄ€‘1 GDDDDDDDDdE ÈYrDDDDDDDDDVÄ€‘1 GDDDDDDDDdE ÈYrDDDDDDDDDVÄ€‘1 GDDDDDDDDdE ÈYrDDDDDDDDDVÄ€‘1 GDDDDDDDDdEJ[7 ºÐh4ÈË˃»»»­›R¥îÞ½‹°°0€ƒƒFmÛ=`è€\rr2Μ9ƒ[·n!99 T*Ñ A G¨U«–[iY™™™¸|ù²°Ì€‘u=°¹7n`íÚµÐh4¢õjµ·o߯íÛ·qöìY<ýôÓððð°zûRRR°fÍ€½½=^zé%ØÛÛ[½DDDDDDDDdYärW¯^Åš5k$Á8;;ñáÈÍÍÅÒ¥K‘––fÍæ ‘——‡¼¼îܹƒèèhÄÅÅ!++ %%%k#Qe>}úˆÊ$''ã—_~P6þÜ+¯¼‚cÇŽáÔ©SÈÍÍÊ)•J<ôÐC3f eŸoéÒ¥¢ ”niñâŲû£ÿþú^2¶nÝŠ[·nÉnS*•xá…ôî+çüùóøçŸ$A8;;;¨T*Œ5 õë×7X‡ök3f üýý±sçNܸq………¢ö >;v4Ú®¢¢";v ÿþû¯(R[ãÆÑ©S'­ˆˆˆˆˆˆˆ¨ª^½zIöÍÏÏÇíÛ·…åvíÚáñÇ——ôÍ@[»vm¨T*¤¤¤ϹjÕ*899¡I“&hܸ15j„ mKe>}GޱH]–~?åää<×Í‘ŸŸ'''ØÛÛWº®ò¿«±÷–)xÌÌÇcV1FÇ 5Uu}<7ÌÇcf>3óYú˜Yòó¬:¿Nžæã13™ù,yÌŠŠŠ`ooo‘cV_'Ï óYã˜) Ô«W7F‡Lþn5) WRR‚?þøC˜˜ÀS‚0¦*--µh@N÷ª=3§ÝíÆNCÛuÿ`¦dUº™|ÚYkr´·¡¤¤Äà‰o‰ãÇÇÏ?ÿ,Êä+,,ÄÕ«WqõêUeGôìÙ}ûöµè9¥-##âç?`Ù÷“¥ê*--ÍÜk ÆÞ‹æà13™ùôÝ$0Wu<7ÌÇcf>3óYòuZêó¬\u|–¬ëA97,Y™ùx̪‡êø:yn˜ÏZÇ,33QQQ8~ü8fÏžm4v˜ØeuëÖ­&ãª;Ý€Ù½{÷ –×=ȺvºÌ ôèfVWºY‚Æ^£n·ÞÒÒR‹·I—,X€¾}ûêýâŸþÁo¿ýVåí!""""""¢Ovv6–/_.‰¥È1š!—••…Ë—/ ËÍš5C‡$©ˆÅÅÅÈËË3ØÑ …Âè˜mæÒ ÖèκªKw»öL©rrssõFAupÚ];«3Ý.ª999¢Qui3¥R ¥Òä^Ñ•âää„`À€ÈÉÉA\\®]»†ÈÈHQæÜ7péÒ%´mÛÖâmèÞ½;š5kf‘ºŠ‹‹‘››k±÷Srr2êÕ«g‘ºÒÓÓáîî‡Jו——Àø{ËK³¼¼<8::Zä˜Uç×ÉsÃ|Ö8f………ˆÅ©S§„r.\08?`B@îôéÓÂãÀÀ@L™2ÅÜ6WºÁ²k×®¡sçÎzË_¿~]xìèèh4;,;;[ïXeº³ªZêD­jºæ1MIѬ îîîhݺ5Z·n#FàßÿEXX˜°ýÊ•+U«]»¶Í^³1Mš4©–uUg¾NÛÖUñ˜™ÇÌ||¶­«:«‰Ç¬eË–ðððÀþýû'Nœ03š‚V>X>ôìÙ³r-´1oooQÀ$66VoÙŒŒ Q—UÝYRå\¹rEï¶èèhѲ±ì Ýè­%ûu›C7ËM;[R—F£Áµkׄåêt´³³Cß¾}(¬KMMµa‹ˆˆˆˆˆˆˆè~ÓµkWáqzzºÑòFrwïÞ{{{W°YÕG·nÝ„ÇEEE ÿºŽ?®w?}.^¼¨wl¸òÔE l"sf+ÄQk ߸qC’íWîêÕ«¢µƒ`¶¦ÝýÙ³«•stt„““€²x“±¹Œä´g£°Ô¶¶Ô±cGÑò¦M›œœ,ZwîÜ9QÍÃÃCoWTmk×®EII‰hýž={DÍ~ýúíþêìì, "íÙ³Gè¯lmƒ -¯^½ùùù¢u‰‰‰Øºu«°¬T*M bVÖåË—±dÉœ>}Zï,a7oÞMJÒ¸qã*o=Xœ…ÇÆrÖq¿quuE‡pîÜ9eA´eË–¡nݺP©T¸uërssEû 8Ðäúoݺ…ï¾û-Z´€B¡À­[·D?¥RipÜ:míÛ·ÇÙ³g”u³üꫯ„n·å½¶mÛJ‚ŒåBBB$AªŒŒ ÑòæÍ›%ûˆ‚i¾¾¾ ºø¦§§ã»ï¾CóæÍQ»vm¤¦¦"&&F4‹H¿~ý,2h¢1EEE¸{÷.vî܉ݻw# uëÖ…ŠŠŠpãÆ ÑX€L>þDDDDDDDDUá ÈÀ¨Q£`gg‡ˆˆa]jjªìØbcÇŽE»víLª7 ·nÝBvv6ÂÃÃ%Û•J%¦M›fòÌ£ƒ ÂåË—… šF£AZZÒÒÒ„2zråÁ<==Q¿~}¸»»Û´]YYYHKKCvv6 áèèoooÉìºDDDDDDDD–fN í첪ËÍÍ ­Zµ²X}J¥Mš4A“&M,Vgu¢P(P§NÔ©SÇÖMñðð0:{-‘­=]V‰ˆˆˆˆˆˆˆˆl…9"""""""""+b@ŽˆˆˆˆˆˆˆˆÈŠ#""""""""²"£“:(›Y³¤¤¤ÊT“¸¹¹¡Y³f;;;ØÛÛÛ¸EDDDDDDDDd æÄÐŒä ”ͬY\\læÝ?¼¼¼0eÊ[7ƒˆˆˆˆˆˆˆˆlÌœ»¬Y‘Ñ€œƒƒƒðX©4šPGDDDDDDDDôÀ1'†f4 çììlreDDDDDDDDD"sbhì²JDDDDDDDDdE ÈYû ý¿ÒÒdeÅÃݽ>ìímÝ"«)--Å+¯¼µZ xýõ×áççgãV•ùû￱cÇ@PPfÏžmã=X–/_ŽƒF… &ضADD÷ 䈈j¨ððŸqêÔZ³÷óõm±c–‹Šr±råp”––ŠÊõë÷2Ú´y\²ÿâêÕ²Oc<ùäo€¸¸“رãU³Û¤­C‡±èÕë%ayãÆ§–vÓìz fÎÜgg½eÔê{ø÷ßoŽääÈË˶988ÀÛ[…‡~­Z”ì[\\€Ÿ*9n¦ðòòäIË×®íž}ÿÓ[ÞÉÉ®®^ps«‹fÍÁC †R鬷|M’››‹™3gŠÖ½òÊ+èÞ½»Zô`Òh4øæ›o„å©S§V›€Ü©S§°dÉÀðáÃ#²²£GbÆ €F1 GDd! È‘M½¼åO\ˆ­[:}ZªT6jQÍqçÎ9¤¥%›½_aa¾h¹¨(©©I’raa_ÉänÝ =onn–ð83óV…Ú¤íÎÑòÍ›çqïÞ½ ÕUX˜£7 —–…Õ«' ??_v{qq1’“ï`Ó¦Wáìü.^{- …½°]­.=n¦ÈÎÎ-§¦F›|Ü""ö@¡x ;?†¡C?©ñ™|aaaؼy³hŸŸr5І ðÑGzõê…+VظEDDDDÕÇ#›ŠKKC~^žè_î½B[7‹ˆ¤§§!3ó–­›Q%Î[‡¥KGé Æéºwï^…2áªJii)NŸþ ›7Ï4^¸š+mýúõÕêx“iRSS‰ÈÈH\½zÕÖÍ!"""ªÖ˜!GDDzýûï·xì±oŒ¬ARS¯ $ä#[7Ã"¢¢Â¹­[¶uS*D­VcÓ¦M’õ)))8wî:vìhƒV=˜ìííñÇ ¤¤ðÐCÙ¸Eÿ3f ”u—#"""º0 GDTCùú¶Æ­[gDë233$å\]]áàð_·Æúõ[˜ü.ìÇc™Þ&OÏøøÔ“¬ÏÉÉDa¡8ûÕÎÎÞÞu%eýü:}žZµjÁÑÑÉ`…BGGWÉúÝ»ßÔ»··4h‚‚Lܹ]¡®²žž^FËxy50ZÆÑÑM›vBII1²³S’rFRîСïjl@îÔ©SÈÉÉ–»víŠððpÀîÝ»³²ê:.T«V­ÐªU+[7ƒˆˆˆÈ¢«"Ù÷îájr Òòòàçá†^žð®UËìz2 ™˜g´ö­‡*hmåÜÍÏÇ…; ô©ƒF^^PغADˆààçüœhÝ'Ÿ´Eqq±hÝôéàãÓ¼BÏQ\\Œ¨¨ÝhÑâQ“Ê7lØÏ=wX²þر%Ø¿ÿÑ:?¿¦˜9sg…Ú5iÒÏðóëbö~iiѸyóŠd½½½=fÌøMRgBÂYüúëTÉ1ÕÇÎÎ/½tÂìvÉ©W/ãǯ– sðÓOƒ$A×ÌÌ4‹<Ÿ-ìÜùßßذa0`€Ûºu+Þ~ûm[5MäîÝ»¸|ù2š6mZ©‰222¥R‰–-[ÂÅÅ¥RuÅÅÅáîÝ»ðôôD½zõ R© Tò§µdeeáÊ•+prrªôßÓ’4 bcc‘PésÖÒ …ÜÜ\´jÕ ^^Æo`ØØX4kÖ ¿Ùa-………8þ¼p~89¾‰T•òòòpöìY4oÞ*q𣢢™™‰víÚ¡–™×*‘‘‘ÈÏÏGÛ¶mÍÞ_[U¾Ÿ222póæMdggÃÏÏ5‚£cÍ•ˆîüÕfAñYYxoÇ_¸vû6Š‹Š$Û]\0¢[WLéÚõÜÝ+TO-WWtoÑï>: µôç®ß½‹ËÅ)·ÀÏ“'‰Ö-ܺ §tÆxùfêTtnè/Z7÷ ˆ¼qC´ní³sÍ'N"==]Xogg‡—FŽÀ“2Y Ñ©©˜ýóJѺ¢Béxq/¯Y;{{Éú•OÏFóºÒl"ªZG.59 WÝíÙ#à™;w||¤™ƒ tÄ‹/þ5kÆC¡°íí''w<úè‡X¿þEÑú¢¢"h4Ű³«~7lŒùóÏ?…ÇÇGïÞ½…刈ÄÅÅ¡aÆViKTT}´ìräš6mª·nÝ}µõîÝE2¿£ ÿþøüóÏõî{ïÞ=´oßjµðí·ßbĈzË@RRzõê%,ÿöÛo¢em xûí·qøðaÄêLJÕºuk,X°³fÍ2ø|Uå·ß~Ê+pôèQÑzwww :ß|óÞàÜäÉ“qâDÙÍ„I“& “s2xð`\¿~ðüóÏcþüù²åîÝ»‡O>ù!!!¢÷øûûcâĉøðà `´ŸkùòåèСÞ}÷]ìÛ·OôwP©TøñÇñÄOm¿%ìÚµ /¾Xö™Ü¦MìØ±7nÄêÕ«±wï^QÙ1cÆ`ÕªUzƒ)))4hÔj5”J%<¨·ì¢E‹°qãFÀôéÓñê«ÿÍn)œó<ò¼½½Eï™^½zaçθzõ*Æ'ú\Z¼x1.\hôu'$$àå—_Æž={$YÎo½õFm´Žòz,õ~úé§Ÿ°xñbÀ!C°téRDDDàƒ>À_ý%*ëîîŽùóçcáÂ…p7pMFDTÕ³5§NayèÙîDåî`ó¡Ã8y;žN¶Ìö‹—ðÅÖ­zëÉÏËÃ?8ï¦LAÛú¾’2EÅ’@Wr†´V–¤\®L€,)#CR.ä¬ûGRV£Ñà›í!È*(ÀÛy…E²8]jµøÿÒºû‘õÅÅ]ý{Yzg+­Iâã£$ë|}Êãʹ¹ùÊfýÙB:òãzdÀÕµfÍN…èèhayÀ€hÑ¢ÜÝÝ… ¼ÐÐPÌ™3Ç*íÉÏÏ]~öÙgøàƒ$åRRR°lÙ2œ>}!!!¨_¿¾Þ:ÃÃÃñøãKqå"##ñöÛoãÀX·nÁºÒÓÓÑ£GÑ1“³aÃüûï¿FrqqqB6¢œììlƒûß»wOr­Kßvcuë”´éf÷èrvv†¿¿?ÂÂÂkÖ¬1Û¾}»¨­AAA²åvìØ)S¦ˆÚ"##1{öl„……aÙ²e¨]»¶Áçµ”ŒŒ Ì;Wv>ýû÷—ý, ǘ1cðùçŸãµ×^Ó[`ù÷SJJŠðzoß¾ÐÐPá&‹®œœ,Z´=öºvíj°^"¢ªÄ€œ,þûþˆˆÀ… 0`ÀDEEÍ<Õþ;ôêÕ 8þ¼(˜õöÛocÆŒpss3X—%EGG Á8ôèÑ÷îÝÃÁƒ… Sll,~þùg¼þºõ¾OU*&Mš„Ç Ç»ü½Þ©S'<üðÃøý÷ß…÷ØöíÛ þíË·åûwëÖ ×¯_h_ýu¨T*LŸ>]¶Žª~?ÅÅÅI‚qpssÓ&"²ä*)>+Ë`0N©TB£ÑÌœ€¼¢", Ýcöó¿‚Msž6{?KQ*•B·mjµ».GbLÐ?Ä*œ«ìþDdºöíÅÉ“[…åÓ§7U«€\HÈ+pu54öcÇ.ƒ›ÛYÄé(--•”lÒ¤ÅÚ¥Ñh°fÍhƒe\]ëà‰'VU îbìÝû¡d}u·Ê\Û¶m;Vx>þøcQPëôéÓxòÉ'…rÏ?ÿ<:$ $7kÖL4©Ê¦M›ôeJKK±víZayÆŒ°—ù¶`ÁÑòÊ•+1sæLÑó®[·S§NP–yõå—_ŠÞ'úbÇŽhӦЦÏ>û o½õ€² âü§Ÿ¶þoä·Þz ‹-ŽÉ70tèP! þõ×_cáÂ…²Ç¬*„„„ 88¹¹¹hРT©T8tèÜÜÜ0fÌ!¨ú×_aéÒ¥Fëýå—_0cÆ aùìÙ³xøá‡…ú?úè#L™2Eò¹b÷“vÐméÒ¥xê©§àêZ6ÉSII vìØ… Ú|( ""ä*éݲ뻵m‹w†ºÿÿá;3;.\ÀúÊ–ÿú@˜l`ëÝñãñh›Ö(.)Á×°]§Çí;wðwT4¶¨Ø€í•ñÖ¸qÙ¶ ³³ñä?Jº£Æ¦¥Š–ÛÖ÷ÅÑ÷Å?²Æ-_„¤$ѺogÌ@×FÒ1ƒìõd ‘åÕ®Ý*U¤¤$rss‘p TY/SS“ššd°LNN²( —–vM¶œ››álsÉM¡M_”®ÔÔ8ìÚµM123ï .îªìäýúÍ«P;m)55G´nfi_ø0@TöÀxüñÇ­Ö6m¡¡¡¢Ì*¥R‰U«V!<<\è.öÅ_Hr øú믅åéÓ§K‚ µjÕ–-[ЦMáBýwÞÁ¨Q£$çÈåË—E˯¾úªìyäåå… H!///Œ7Nb®_¿^o@N{Cwww 4HRæã?u«ûçŸЬY3Q'''|ñÅˆŽŽ‚¬ .Ä™3â™°-éÎ;B (Ë¢Ô>ïÊuéÒ›6mB—.e“Ö9r»wï–d0NŸ>]È­Zµ K–,‘ øŸ>}Z|òÉ'%evìØ!ʘúã?d»rN™2B ÷ý÷ßdzÏ>‹ºFÆ .ï”S(xýõ×ñ믿 ï'[dB3ÿûßÿDëš4i‚?ü'NPÖµ299ÙjP”wÉtssCÏž=…±í  djwÛŒGii©Á`Õ믿. Æ@ÇŽ±qãF!3-66Û·o—ŒçgÍ÷Ó¹sçо}{Ñ:{{{Œ3#FŒà$8DdsŒpTBna!®üÿ³Ú†të†ïÇ=!ã ‘§'žïÛÛ_Y€I={HöÙ{ú´dÝÜG‡ax›ÖPp´·Çƒ¡cË–’r¿?^¹Ríš7Çȶe?„ê×®Ñ=‚%e2³$ëìíìDÿä¾ì•:eÊÿ‘uõè!Hùß¿³QK,ãî]i@®,Cá¿Ï¡•+‡â£ZÉþûúkëŽ3sïÞ=œ>ý""ö 6ö¢l0.  %ºvmÕvY‚î`ç?ü°ðX¥R¡S§NÂòŽò7¾ªÚœ9sd»9ÚÛÛãÙgŸ–<(šÌfxi—צT*1oÞÕÈÈHܺuKRN÷»òìÙ³FÛÿ ÓÎt ÕÛåµ<Û¦M›&™yQ­V‹‚\Ÿ|ò‰$x íã?GDD/¯2´»ÚÀ—_~©·lçÎ1~üxaYnœ>ÝÀ·v@M›v¶fóæÍÑQf"/í «AƒéW ({hw6t4hìsÚÙÙ‰2LuÇV³}" :T´œ”dø†’¥´nÝZ”‰ <Ö¯ÏÙÙY4>c^^žÁzõM´0hÐ Q=ºY²Ö|?ÍŸ?_ŒÓÆ`UÕú“(¯¨Ï®ÿC¶‹‘©ü½½ñé¨²ß Ùx­AÍ¥P(°lÒD¸þÿµk©i’2vvvxuà#zëP¹¹a‚Ö…dß»'ÉŽ³³³Ã“:å`NŸ>xVgfÔÄ»wM~ –2\g쑇êJÇ/ÊÊÏ·Vsˆ¨ MÀΟ ¤¤u4(TSI/0t³Œ rô1PXxOv½-xyy£[·)–Ÿ ¨ºÓ²õêÕK2“àˆ#„±Ž¶nÝŠ•+WZýâÉÐ,ºqñññ¢Œí šJ¥’Œ%§ûËï/m¾¾¾6lBCC”eµéNRRR" bêfI•Óççç>>Ò±6KKKQT” GGËÌÄggg‡7ް̸E …ÎÎÎ(Ðù¼Ê¼ÞºõYLž\=¤æ8tèhyàÀ’2ºe;wî´z@ÎÐVº²º]ãnhÝL46N”£££(“K®Ë*,_¾]ÐÆÆÆbÅŠBÐ)00óçÏǼyóL«ð~¦;räâââDéÚÌœ9Sö˜]»&?ö¤©äÞ¿–rU§Ç„9ôµë±Ç-ïÚµKÔÝT{¦ËòNué]Ì•o¤‡…nFmu¡\¯tnîkwÉÖݦÓΦÔeì3M»ËjJJ Š‹‹…ç²ÖûIwa"¢êйJPËd€Ud&P¹qÔ ™&÷ƒ±ØÀ'QEùúÁݽ6rrÊÆmIMM‚··å³Ê¬ÁÓSþnyrò%4lX–óè£!=½ìbòĉÕHO·N·"9þþÍ0sæN¤¥Eã?fHÚs©©WP·n+µ°btÇ2Գܟþ‰/¾ø¢ªš$Ëœ u&5ÒïÏ”z\\\„€œ¾¬Í&MšàÂ… X±b~ýõWÙëcccñ /àøñãøý÷ßMnÿýªOŸ>¢¬¤­[· ³;ž={V”‰%—é@2vãÑ£GÍšÙ¸qãÆf¶Ú4¥¥¥¢,«iÓ¦‰f®4F_&¯»»;¦L™"ŒO·aÃ! WTT$ b–ÏŽªK÷˜}ÿý÷èÝ»·Émóññ1¹,YŸ±Ï4Ý`žvwTk½Ÿ´³ôˆˆª³js´·‡ƒÎàºæòÒÊóª][vPlsÛT®i]醊ŒQ§ÛýR ¤ÙëfÇ@C™§)¬ä± ¢C·nqàÀraÙ–AªÊQÀÁÁAò=pòäÏB@®iÓhÚ´l–Ϙ˜ªÅkõñiŽéÓ7ãÛo‘Œ§³sçë˜1Ã6“T„F£u4Ull,._¾,šU±ª¥¦¦¢^=ùxupº]è´Ç€»sçŽÁçQ«Õ¢î}5Ò[ÖÕÕóçÏÇüùó‘’’‚ˆˆñx;·oG!%å2T*ëª*ãÌ™3¢à“öØTr´/:wïÞmÕ€\rr2Ú¶m+»MwVUÝ€œöKÆrº³ ÈiS©T:t(†Š?þ+V¬ÀsÏý7ÉÇž={ø€<ùä“B@.""111 Ä/¿ü"”™>}ºÞýu)))Õ" mÛ¶r–œÀà‘Gu£Þ±c¦OŸ. bŽ1Bo·n///Ñþúf¸%1í.£@ÙX|úܨäÛ•aì3-YkHÝ14«óûI×o¼!BÀÁÁkÖ¬‘íÝDDT¼}P ÍdiÅEEXyü¸Þ}ò‹‹ñϵѺ:µjIîäawäÉþ¿“Öí[§ŽhÙÍYÚ !/7­‹é¤œä˜1uxUqÕùñçîÄÛ %D¤““;jV·H}ú÷E²®¤¤¿üò4šêÝ78x®(Ó Üί۠5³{÷nÑr\\²³³õþë¤5ÛøÖ­[­ÚÖ½{÷êÝ&ZÖ<\»[Ull¬Á±¾öíÛg°.S(•JÌ›7O4¨¿î`êÖ P¸kƒàåtìØÍ›ÿ7~äæÍ›qâÄ Qhܸqz÷×í"§{ÛR‹-„ÇaaaÈÈȰH½ŽŽŽ˜6mš°¼~ýzäççã×_ÖMž<Ù`Ú³–ÏþJ†yëŒC,3V5P6ŽZeÇb«Œˆˆƒàá±îŒÑÕùý¤kÛ¶mذaƒèßÚµkõÎÄNDTÕ7 ¨S«ê©THÖ¹ó·fÿß(T«ñâà ™k% ö^Âg۷óvmôH|‡¨K«V8¥5[|¶u+šùø e½²L¼m.âÀéÓ’v<Ö¡½h¹¾LÆF£Áú3g0¥KhJKñNHõèâäçå%™Iwˉ“èܰÚû5dÑnÜ8„k×ö‹ÖÉ?uèÐb¸»ÿ×õ®NfèÜyºYÏÕ»÷ ¸yóÙ µ³*üûï÷ðò2œI¤PØ¡ÿ·¡Tþw“¢U«‘pw_$éîsçÎ üøãÃèÚuš4y¹¹)ˆ4»]ûö½c´\íÚõüœÑrÚ {ôî= aa?‹ÖÇÅ]Crò%Ô«'ŸÍUhgØôéÓ&0€‘#G"""pâÄ $&&ZmàôŸ~ú }ô‘ìX[+W®7oÞ¾¾¾¢íºãâ­^½ZÈÒÒµtéRá±J¥ªÔ˜cÚc;Éo«šv0122ùùùg´–3fàÍ7ßüúë¯HJú/K¶_¿~gítvvƸqã„™ßyçÌ;utn†Ê),,4:ëreŒ5 ï¿ÿ>€²lÒo¿ýV˜¸²íš8q"~øáÀþýû±jÕ*ÑvcÙ—&LÀ‘#e………áï¿ÿ–À¥"m»_988ˆÆ<øàayïÞ½»ZRNNžzê)¬[·N4áÿþ÷?!Д]Pêf¹·hÑB40þ_|Ž;Šf«Ôh4xõÕW.¬[´h‘dæC ŧŸ~ŠyóæaÔ¨Q²ƒ Ÿ“¬×>Nááá¢àP¹I“&!88X¶]èÕ«—¨žr£GÖûzÊàã?Æ;ï¼#´¡mÛ¶?~<Ú´i///$%%áÊ•+øûï¿…óµ]»vF뮬?ükÖ¬žóµ×^ÃÊ•+1dÈ@¡PàÚµk8sæŒ(øklLP;;;Ìœ9Söï=iÒ$£íR*•øá‡зo_ec…1 @×®]áçç‡ììlDEEáèѣ¤$†²óæÍr999èС¦OŸ___\¼x6l°q ÿ3`ÀL:­[·Frr2Ö¯_/ê þÖ[oÉfêVç÷‘µ1 gŸŽ‰±Oë‡NE,Ð% ¶ýû¯Ñ²vvvxsìXôlÒXvû3}zc÷É“zÇ9¨åê oÄ[pàŠ¨_»6¦|DoPŽˆª^½^¸/r0mÚ6üóÏ'8|xñÂ(ë 8pàKUÜ*Ó<üðë8qb³äó}×®70kVõG{\!wwwÑSú(•J 6Lèꂼ¼<¸ººVU3ãÇǦM›!t›Õ¦R©°gϽ]C[µj…?þø'NÖmÛ¶ Û¶m“” ÄæÍ›%ƒºËÉÉÉÁúõë –Ù´i“d¦Km!!!¢¿‡¹vº»» ÈÙÙÙáûï¿G=„u)))’`ì¤I“drÉÉÉX²d‰Áv¥¤¤È–iÛ¶­Þ€P–Õ¥;v,¼¼¤™úr^ýu8;;cáÂ…Â:í.ضâííS§NaÆŒ8qâi`E?^ò÷vwwÇ#SÛoJý掎®èØq˜d}|üuäæ&Éìa{EEEØ¿ÿ¿ñG-ïÌÝ®­§eÆR­ +W®Äœ9sd·õêÕ gÏžEÇŽ Ö1aÂ\½zÕ` hÒ¤I8sæŒh ]:u‚ D“È;v,Î;gp’ âãËÉu•ÕŒ˜˜¼öÚk ’IW_VSÏ 9ƺÅ>þøã’uÆ&&Эÿ•W^Add$ `°l¯^½ðí·ß @U­eË–8rä/^ •J¥·œ»»;æÎ‹Ý»w›4³e›6m$κ5k–l·j}†Ž«W¯bÖ¬YËâwÞÑ;„ö9kèo­}Y£«´ös{>S^ƒR©Ä‰'d»ô»»»cÖ¬Yøå—_DÁ{ݺ µÉÐñ1u[—.]ðï¿ÿÊ~¹»»ã믿ÆÒ¥K ªx?™ó·0…¾:8Ã*Y’¢ÔHÎú7ß|ƒ¬ÿÿì7Þ0éî탮P­ÆÕä\INBAq1¼k¹¢¡§'ZÔSÁÕŒÁyEE¸˜ˆëi©°S(ЮZ¨êš˜*.)AdR2.'%ÂÑ^‰¾ÍšBedÜ"¢O)RR"qóæ¿ÈÏÏ@:ð÷ï /¯&Æw¥ûÂÙ³gEA±¼¼<ÔªU ………8{ö,bbbàç燎;½ù&'77‘‘‘ˆ…½½=Z·n‡zÈìàXBBnܸ¤¤$äääÀÕÕ5B@@€dr ª:ÅÅÅ ºYYYððð€ŸŸ7n,êžk iiiˆŠŠB\\Š‹‹áçç???4mÚÔ¦ãù•––">>QQQHLL„³³3üüüàïïop<»Qii)nß¾K—.!33­[·FPPP¥‚ÖU!!!'Ož„Z­FÛ¶mѼyó µ±:¿ŸˆˆÌeN 9"""zàé șʜ»¬YrDDDDDDDDDVÄ€‘1 GDDDDDDDDdEF§Z***P6ÛOIII•7ˆˆˆˆÈÚêÖ­‹éÓ§ìííÍžý”ˆˆˆˆÈœšÑ€\aa!@¡P ¸¸ØÍ#"""ª^üýý±zõj[7ƒˆˆˆˆj0sbhì²JDDDDDDDDdEFrÂc¥ÒhBÑÇœšÑ€œ³³³É•=ˆÌ‰¡±Ë*‘1 GDDDDDDDDdEìƒZE¢SSq * IYÙHÎÎFÞ½{Â6…B&<‰ÚZ©ŒDDDDTµnÞ¼‰¯¿þàââ‚Ï?ÿÜÆ-"""¢rVTR‚g×ÿË11Ëå1 GD¶eË,$'_«ðþ …sæìƒRé¸qãvï~·Buµió(úõ{¥¥%øé§ÐhJDÛGŽü Ëî[\\€_~µºH´~Ô¨¯Ð AüôÓ ”–j*Ô.P©šbܸÕÞŸª^nn.fΜ)Z÷Ê+¯ {÷î6jÝÏâãã±dÉa™9"""²ä,ìÛ ÆUÖÍ›g‘——W©:JJŠ„€\FÆM¤¥%W¨ž¸¸p€Ba77oÄÆ^mß²åEÌŸJvßÐÐב”'ZçèèˆúõÛC£)Ajjb…ÚT.??§RûSÕ ÃæÍ›Eëüüü³’… "440þ|Ìž=ÛÆ-"¢ê®wïÞÈÈȬ[·;v´q‹ˆˆj&Ž!ga;Ž·uˆˆlf̘¡P(Dë²³³pæŒ4K-3óΞÝ+Y?|øÛ°·w¬²6Rõ²cÇɺõë×£´´Ô­yðÄÄÄ 22‘‘‘HHH°usˆ¨8zô¨ð¹‘••eëæÕX̳ ì{÷ V«%ëGôì‰þÍ›ÃÅÁAXWÏÝÝšM#"² 77_?ãÇÅO{÷~…öí'B©ü¯«þŸ>+ÙßÛÛAAª¼T=¨ÕjlÚ´I²>%%çÎcÖY\«V­°nÝ:eÙ¸DDDD¶Â€œݸ›.Yçà舷‡ ¶Akˆè~Ö¸qGÙ1ä人»×†““‹hB¡0š…¦P(àáái´- ´-ø>Μ AQÑãÂcïÞw0|ø—€ë×Ã]R×O,ÛÙÙ£n]_I¦TQÑ=dgKïÈûøÔ“¬«[7ÐhûÉvN:…œœÿºwíÚááe] wïÞÍ€Y\:u0yòd[7ƒˆˆˆˆ9K*.)‘¬SÕ©S©:3 ™˜g´ö­'ʲ3WAq1®$%£ ¸­ëûÂËÅÅøNDT-=ñÄ*ÙõŸ|ÒÅÅÅ¢uO=õ;||š›ýõêùã™gþ6{?;;<öػغU|8z÷î-,GDD .. 6¬òvüöÛoøðÃ/¾ø"BCC±wïãÎ;Ë–-òeËðúë¯ Y}îîîøë¯¿ððà e###1bÄaù?þ@·nÝ >BBúôé#,ÿøã:t¨¤\~~>V­Z…?þ)))²uM˜0'NÄÈ‘#%ÛvíÚ…_|Q´.66VxüþûïcÍš5’ý”J%Ξ=+ èºwï>ùä„„„àÂ… ¢mþþþ˜8q">üðC“.²Ïœ9ƒñãÇÜÜÜpþüy$&&â“O>Á?ü )?mÚ4¼÷Þ{ ”fľòÊ+8räˆìó8;;ãðaóùÛ·oÇ矎'NˆÖ»»»£wïÞX¼x1Ú´i£wÿ”” 4jµJ¥Ô°\´h6nܘ>}:^}õU½õ&$$àË/¿Ä7ß|#»]¥RáÉ'ŸÄŒ3¬’y…G}@Ùùsá¬\¹+V¬*• cÇŽÅ—_~iðüJKKÞ={°cÇÉ$0åºvíŠ#FàÍ7ß4)0­V«Ñ¦Ma¸™¿þú Íš5Ãwß}‡/¿üRòëׯ>üðCôíÛWXWZZŠ“'O"44[¶lAdd¤äyüýýѹsg¼ÿþûz½%?ƒôÕ¿bÅ =zT´ÞÝÝC‡Å7ß|£78÷Á`íÚµzë9r$êÖ­+YߥKáüÕ'!!o¿ý6>,ú,€Ö­[cÁ‚˜5k–Á:ÊýôÓOX¼x1`È!Xºt)"""ðÁ௿þ•uwwÇüùó±páB¸s!"²!ä*!=?E……FËÉ•)’k¶_¼„/¶n…F£‘ÝžŸ—‡""p*:ßM™‚¶õ}õ>odR2^X»Vˆ+W\T„+ׯãÉï¾Ç«cÆ`LP;£¯…ˆÈTO<±?ý4V´îÖ­«¸u몤lïÞSáââm­¦Q5…èèhayÀ€hÑ¢ÜÝÝ…‹ÍÐÐPÌ™3§ÊÛ’––&\ ¾üòË’í?ýôîܹ#¹¨ËÉÉA¿~ý’’"\6oÞ¹¹¹ÂÅüêÕ«ä6nÜ(º•+ŸžžŽ=zˆŽ™œ 6àßÿ• ÈeffJ.zuéÛ^"sÓ±\dd$&Nœ( Ä•‹ÇâÅ‹±wï^lÙ²=ôÁ6äääˆÚ‹‡~ñññ²å׬Yƒ   ,X°@²íòåËBÖeeá7ÞÐðÊÉÉAhh(BCC±zõjLŸ>]¶\AAè8øyãÆ !À§·\xx¸Ñs,%%K–,Á½{÷°bÅ ƒe-¹gÛ¥…5IDAT!??_ô7üì³ÏðÁȶkÙ²e8}ú4BBBP¿~}Ùú/^Œ/¾øÂàs†‡‡#<<û÷ïÇÆõÖUN£ÑˆÞO)))¢Y‡u\´îðáñ¿¿?Ú·o/ÙÏÎÎz²ò/]º„víÄ7ôš7oŽÞ½{C©TâôéÓˆˆˆ\¸p @TT”Áã¡kòäÉ¢`œJ¥B@@®^½ª÷b¾\PPrµnL&&& JÊyóÍ7%Á¸!C†Àßß—/_eÌ͘1žžž=z´ÙÏc®ÂÂB<öØc¢uÁÁÁèÙ³'ÜÝÝqóæMDFFZ$(YåÁ¸òŒ¬ZµjáÀÂß5<<C‡ŹsçLêZÛ©S'4oÞ5BJJ Ž;&¼?Ž9‚:àÆfgï¼óŽ(ƒÌÝÝ-[¶Ä­[·ôf¤êR©Thß¾=Z´h¥R‰ëׯ‹‚h3gÎD~~>ž{î9£¯¯¢ŸAåòóóÑ¥KÑù®R©Ð¯_?Ô«WW¯^Åþýû”¨}ôQœ?AAA¢z:tè ùÜØµk—¨­rÁÏÖ­[ë}}«W¯ÆÌ™3Eëzõê…Ž;"33Îõë×C­VͶÓ' ÆÂÍÍMï""[`@®”vvÞ×^gß¼¢", Ýcv=ï…„`Óœ§%ë?Øñ—LiÃ~Þ»cÛ·‡›““ÙûÑý'55kÖŒ6X&0°7úô‘ŽWnäÈï¬7ë·¬ÌGP(l3ÙζmÛ„ÇcÇþ—I9dÈ! Ь¬¬ ÁTîîî8xð ÜÝÝñÄOˆºÑŽ5 Û·oøùùáwÞ8p@t1üÔSO 9 ÁĉeŸïÌ™3¢nnrÙ3¢nz/¿ü2¾úê+Øéü–ÈÈÈÀêÕ«qðàAÙçêÓ§¨k,Œ=!!!€§Ÿ~ZÔnSèf¥­\¹3gÎUÖ­[‡©S§(ËúòË/Ízžò`׳Ï>‹>ø*Õ7"#""ðꫯê âèfUýûï¿’c`LBB¾þúka900û÷ïu‘Ý·o† ",¿ÿþû9r¤äodiÿüó(X´iÓ&Œ7NR.&&Ë–-³i÷¼àà`ìÞ½[被V«1{öl¡›ô… °gÏÙ,- ,ÐûÒK/aòäÉ’Ï„’’¬\¹sçÎP–-µ~ýzÌž=Ûäö•ãzõê…•+W¢E‹Ây•€>ú‰‰‰²ûN›6 Ï>û,ºwï.ÙvëÖ-Œ7NŠ.Z´sæÌÑä¶Äg|÷Ýw¢`ÜüùóññÇ‹‚”§OŸÆ“O>)”{þùçqèÐ!ÑûiÞ¼y˜7ož¨níí_}õúõë'ûZädddॗ^–ýýý±aÃôêÕKXWXXˆwß}W肺iÓ&Ì;ýû÷7é9´ƒnK—.ÅSO=WWWeçÊŽ;°páÂj3®"=¸«„çûöÅ<­/ÉðÛqxyõjQ™¾¾ØüŒøî¾B¡€ÎÀׄ1,´½;~<mÓÅ%%øú@¶ëŒýpûÎü-þ°ýŸk1ˆ½}[R×Èž=±pà#p°·Ghä,Ò¹Ó¤V«±øïøp¸|z7=XJJJpóæƒe ó äœ=Яß,„…ý,»½^=?´j%íZG÷·ÔÔTѸ^ƒÿ7ù€De8€ÇÜjmëׯŸ´Ðí¨q¡}‘|[ç;7 Æ º¾­\¹Ro@nݺuÂcÙ ÛË—/‹–_}õUÙ@——,X Ûu³*ìØ±CȰÊÆË›0a‚¤Ü”)S‘‘!Œ_÷þûïãÙgŸ•íb§ÏO?ý„gžyF²¾S§N8pà€ìo(KùꫯDË{÷W7xð`¬[·S¦LP Á˜1cª¬]„ìC ,P(Œ€fÍšI^‡µ…††ÂSkÌb¥R‰U«V!<<\JñŲ¹wß}Ÿ~ú©Þ§½½=žyæ8p@^ÿñÇfä`êÔ©øå—_$cÐ5hÐË–-“œg^^^ÈÊÊ2Ø2 +W®²OSRRpâÄ ½aK|ݹso½õ–°}ðìUñ€è‰wãe~ÈÌ‘¹ 7¾cG,ݵ[Ô•L£Ñ £ ^œjœˆlM‰Þ.«jµñ‰qèþ£dëÕ«—d–É#F™?[·nÅÊ•+­vñTÞ­©œöŶö ¡ÚA欬,I=>ú¨h‚Šßÿ]è^V.44T”)RÞ­SWÓ¦MEË~ø!4h`•Ù2 Ñ æççã÷ß×û›­´´õë×^ïùóçeg’•óæ›oVy×O}Ôjµ¨ÛŸvàB—³³3&L˜€Ÿ.Ë– ÂZZóæÍEË .Ä'Ÿ|‚ Tùs›ÃÐxzºqñññ³' qçÎ$$$ >>ùùù¶sçÎ åÞ—†Ì;WïL£¦JKKCBBîܹƒäädÑwŸ‹‹‹pþûПAWµ®ÜÝÝ… ²Üû³´´T4i‹vÖ¥¥Ý¼yS´œ””dðsC÷·Ã¥K—гgO“žkþüùj#‘5Uû€\t%ÌÜÑ NŒŠB~^^¥Ûdé€Üõ´»’u |}á"3¶DGé…œìl”¢,cre¾ä»6j(Yçho† à–άe×SÓÐE¦<=xœŒŒ)éíÝÈh~Š¢¢"Ùm[¶<‡çŸ?"»îOùùù¢ñÐäºF 4~ø!€² ×cÇŽ‰f6¬JºÙœÚÇú.†333%õ8::âùçŸÇ§Ÿ~ X¾|9Þzë-Q`©|¬< ì8hgÂhóõõÅ Aƒ„î¡áááèÔ©1pà@ôèÑ;w–L®P•´g’ʲjÌɬ1'{©|Â[HJJ- Ø4løßï§Šdh™kÀ€¢Àïš5k°fÍtíÚýû÷G×®]¬÷ܲCBÝ dƒÍ‰‰‰X²d‰ðž2ÆØ„ºÚ¶mkVùr¡¡¡øôÓOM~WÕŸAÚÝÜsrr„®Ô¦¨Ê \Ý U¾ÿþ{³ö¿~ýºÉ9í÷"QuU­rŠw¥9•¬]\p¯ @´.1; j×FJn®äKÞÑÀu=I@.&-•9"‚¯oC<óÌß•ª#//ÿþû»Þíwï¦àâÅMh×NÖ Ý_:$Z8p ¤Œî¸I;wî´Z@Nw uG­›pÚYzööÆ'"™6mš<ˆÇáÇ…1â’““…±‘ëjùòå8p è‚666+V¬ÀŠ+”ug›?¾Þ®¯–T‘™Jµig5cË ëxßHÚJÈñõõí«V««4»ÓËË ›6m’d™…‡‡‹fVíÚµ+>ùäÙ÷›5ÊxÓ 5..NRæÐ¡CfMP¿Á¤K­VãñÇͤjŠÂBýÙá–ø ºªÓ›Æ:×–tíÚµJíojÛtgŠ%"ª®«äføÑ…U›ÜìâÿO5—«ËÐr¹çQ¸kGDdŽ;°sçGhÓf ììägœ£ûËÎ;E˺Á79þù§d¶Ìš E‹èׯŸ0ëéš5k„ ‚v– »»»h°v9Mš4Á… °bÅ üú믢YËÅÆÆâ…^ÀñãÇñûïúá–P\\,ZþþûïEƒÌãããcrYooo“ËZšî"ƱºÛ eBYÊСCqóæM,[¶ «W¯e.– Ç Aƒ°|ùrÑø†ÖbJ»œn°*!!#FŒ­>|8žxâ øûû£N:Bý‡Æ /¼P¡6 ¶Êy÷ÝwEÁ8•J…yóæ!((õë×Çg•¬ÉÒÒRQvà´iÓD³šc,3¾2t?7Ž=*Êú3¦qãÆ&•«l×c""k©Ö9G{{8T²{¨—Ö¸ ^µkK¾*Ò&Kó“ɆK10î…nv4üÿrëèÜeÔW^x™ÁQë˜þ#™ˆHŸ„„³¸vÍøX4EEE8pà# ´È ­"[Òh4زe‹ÙûÅÆÆâòåËhÓ¦M´ªj=óÌ3B@î×_Å·ß~ aœ1 l2G~︺ºbþüù˜?>RRRƒbóæÍ¢Œµõë×cÒ¤IU:S¢î,£*•ÊæcÚUÝ û””´nÝZoyí.®*•ʤ¿«>æt¹ ÀgŸ}†O?ý7nÜÀ™3g°ÿ~lذATÏ3Ï<ƒ#FHº‰VµÔÔTÔ«WOv›nN·{­îkؽ{·ìL¬pº““™›UzïÞ=üøãÂr¿~ýªw#¹®íUA¡P ((HÚתU«Ú¼7u'p¨’à™­Æœ$"2WµÈyº¸àÈÛo/h¢?ç>c±º,©i]i,!%šÒRÉŒ¬×ïÞ•Üm­åê*”³S(àêæ†¼Ü\Q™¨ÔT´Ðé. )-ÅíÄDÉs7“i‘¹þüóyɺ€€–hÞ| öïÿA´þøñMèÙóy¸ºšŸ¡@5Ç™3gDÙ;Ú³Êѽ¯‰¹‘#GŠÆøÚºu+:uê$Êp›6mšÙõªT* :C‡ÅÇŒ+Và¹çž¶ïÙ³§Jr^^^¢×%—•u?Ð èŽ)§+QëwÕC=$Ù®¬ÉÕù½¦­"“B( "00ãÆÃâÅ‹ñÊ+¯ˆfóý÷ß1nÜ8³ë®Œääd½c´éΪªÓž­vúôézƒq€u&Ò(wúôiÑgÔÊ•+õãtÇ\¬jmÛ¶>c¬ö¼ÆèäRRRªm6Ûo¼!™ ×ÁÁkÖ¬‘í‘DDT¼}P Ô©UKr'§¸¨»#¯HÊþrì¸do:¢å2Ý@~9zL²nßÕ(ë ´ngg•››Ií&"ÒçܹuHOO­S(3æGôìù<Üt>gJKK±}{źQͱ{÷nÑr\\²³³õþë¤5ÛøÖ­[­Ý\‹¨U«–h|¸U«VaíÚµÂr¯^½*=iR©Ä¼yóD·GEE™´¯ö€ñf=o‡„Çå³8ÞoE] VRR":ºY„€´ûmrr²l]•o <<<°|ùrÑk¸~ýz¥ë5×Þ½{õn -뎨546XII‰U?'ÒÒÄßqº³!k3ôú«B‹-„Çaaaf¿·Ñ¾™bNݺ]Nu¿ª“mÛ¶aÆ ¢k×®µJ7t"zp0 WMt‘ù1þÙÖ­¸šüßÝ´m.â€L*þcÚ\€CgÏb˹óÂòÕ”|,Óm¨ƒÖ8=ØÒÓ“±oß;FÿEE‰P«Õ…ؽû3I}]»Ž„‡‡?ÆŒùJ²=&æîÜ©xw#ªþ6mÚ$<îÓ§< L`”e—•;qâ„(û¨&™>}ºðøèÑ£øê«ÿÎc“9˜C{œ.S»J寥3d„ Âã°°0üý·i“Àо:2dˆðxýúõ’Œ®rû÷ïMѧOIQpLw’“r¿ÿþ»Ù³„ê£;~›î¤ÖðÓO?éý»¯\¹RxܼysÑÄ€8@wûöm½Ï±yófDFFV²¥¦ÓsN_œZ­Æ[oY®Ç)F%<ÎÉÉÁ·ß~kÒ~¦¾7[¶l)<¾rEš@ ³³³(;ówÞÁ]™Éí*Ó6"¢š„¹jâG‡I²äÔj5¦/]ŠA_}G‰ÏÿüS²Ÿ§§'&vî,Z7¾cGٿܶ ,þƒ¾úÓ\*¨ÞnxPi"zpáøñÍFÿ:µJ´ßþýïIÆëtppÀ A Ëýа¡¸ë üù'³äîW±±±¢‹eSºS4H´lí,K B×®]e·;Öèþ¡¡¡èÛ·/6lØ w–Á“'ObÍš5ÂrÏž=Mj›v@.,,̬L·9sæˆ2–&Ož,™´£\ii)þùçŒ?ÞàlÕ‘n0e̘1’¬ Ë—/‹º«T*L:U¶>í®›Ÿ}ö™dÆÚ'N`Á‚&µí½÷ÞÃĉqðàA½™;?üðƒ(XÔ½{w“궤œœ<õÔS’ï†ÿýï8r䈰üÎ;ïH~kŸcß~û-._¾,©×®]VŸ¬B7³õ­·Þ’ü ²²²0iÒ$«Læ ­}ûöxþùÿ†X´h/^,ûÛ( ª-X°uëÖ5ô,פIáñgŸ}frF.,^¼X´üðC¬Y³F8/_{í5¬\¹C† A@@ ®]»†3gΈ>›ŒÍŒ”eý–g<çää eË–F£F„YZzè!¼ûî»’}ðñÇãwÞP6pÛ¶m1~üx´iÓ^^^HJJ•+Wð÷ß ío×®]åQ5Ä€\5²`@”h4Øöï¿FËÚÙÙáͱcѳIcÙíÁðîøñøß–-&u0ªW/¼6ÈøÅ‘!Û¶='ù1ïéé…N¤ƒÖ{z6B§NÃp挸Ëkhèçh×n¼$€G5[HÈZwwwÑøcú(•J 6L¸ð A^^žhܳšbìØ±˜9s¦hÝSO=ev=999X¿~½Á2›6m’¿Lޝ¯/–,Y‚^ø/;522RÒõoÉ’%²Ý`ûôéƒ;wbæÌ™BVXX˜d\0[øüóÏ–Y²d‰dÝ„ D9øæ›op÷î]!°‹o¾ùF¶ÎW_}Uò·Ö6jÔ(4oÞ\ÈšÊÉÉ‘´cÒ¤I°··—Z ‰•dÛiswwÇ®]»l2åøñã±iÓ&DDD "B:û¶J¥Âž={dϱîÝ»ã7ÞÀgŸý7Â×_-û<ï¿ÿ>>üðCË5܈+V eË–BÐ(<<\x€#F ==GµZÛ¼½½qêÔ)̘1'NœDGG[$[oذa3fŒ(zâÄ áy k×®²9xýõ×áì쌅  ë´‡4 "zP°ËªÙËüÀ‘[§B× Äw3g½vm½åùùaËü—1¢­áÙæ†·i?翌w¢]ÝÜðíŒxsð ÉŒ®DTóÈÍüeoo|¼ ;»ŠßŸ±³+«?--·n]•l;VzÁ[nèÐO%ããøqýû”?Ÿ6ÎxV½aÿþýÂòèÑ£%ãZé£Ûµõ´ÌXª•¥}*•â÷‚vðB{›©í/W»vmÑkñ÷÷GïÞ½MÚ·S§NX°`š7on°ÜرcqîÜ9³gÐ|þùçqèÐ!Ìš5 ²Y{†‚8ÇÇÕ«W1kÖ,ƒÏˆwÞyÇh·XÝ¿AE™’}(GnŒ5üõ×_øôÓOõî§R©ð×_á‹/¾08N›R©Ä‰'d»m»»»cÖ¬Yøå—_DvúŽÉ¸qã0}útÉxfº^}õUDEE‰Æþ²¦•+WêíRÚ«W/œ={;vÔ»ÿÿþ÷?¬^½ZïßtРA¸pá‚I™·åt¿7*rÞ5hÐ/^Ę1cd·â£>ÂÖ­[…Ì1@zŽUÕgPË–-qäÈ,^¼Øà9âîsçb÷îÝ&Ïzºeˬ]»£F’­ÛÐ8–J¥¯¼ò "##1`ÀƒÏÓ«W/|ûí·BF¡:åW”¾:ø{ƒˆ,IQj$/ù›o¾AVV€²Ô}é÷dyyEE¸˜ˆëi©°S(ЮZ¨êÂÁÌ‹Pk4¸šœ‚‹ w )-ESŸºh× >\Mô™ˆˆˆ*.''µµn¶ýïÿ«Ð@ï ¸qã’’’““WWW4jÔ’Áðm¡´´ñññˆŠŠBbb"œáçç4jÔÈÖͳˆÒÒRܺu —/_FFFüüüЦM£A1¹znß¾K—.!33­[·FPPÙÁÞòºbbb¤¤$ÃËË 5B“&MDçž5œ={V4Kr^^jÕª…ÂÂBœ={111ðóóCÇŽáééir½ùùùˆŠŠBtt4JKKѪU+´iÓÆbAÜʸ}û6¢££‘””„:uê sçÎfŸU--- QQQˆ‹‹Cqq1üüüàç燦M›Úô#66W¯^EVV<<<àçç‡ÆÃÇÇÇfí""ªsbh ÈU±•+Wâé§Ÿ–oß¾-š=’è~¢/ GDDt¿3'†Æ.«DDDDU(;;o¿ý¶°s%)Ÿ„†-·pð`´÷k`…‘6äî3 ÙÙ¸vó¦Ñrñ™™ ÈÕ`Çÿˆˆˆ¢u½zÍA‡S$eÓÒ¢±qãlѺzõÂO¬–×­‡¬¬dÙç²·WÂÅÅ®®Þ¨[·9Ú´ŸæÛ—™y ¿ÿ>U´Îǧ1ž|ò7ƒûу'773gέ{å•Wн{w«¶ã¥—^Bbb"à‘GÁ3Ï<£·ì±cÇðí·ß ËË—/‡———°üí·ßâØ±c²û:99!00M›6E‹-LzgϞŧŸ~*,ùå—hÔ¨‘Ñýˆˆˆˆ¨úb@Žˆ¨ºs'iiâZRÒ%Ù²99‰’²¹¢åÛ·¯ ¸¸ØÐ3þÿÿÿâàÁ_P»¶ÆŽýõ-——*yÎÜÜ,õÓƒ*,, ›7o­óóó³z@nëÖ­ˆ¸ºº ÈݸqCÔæÅ‹‹rÇŽ“¼&}zõê…Ï>û ½{÷Ö[&!!ATß›o¾É€Q Ç1䈈ÈlÙÙYøõ׸{7ÆÖM¡nÇŽ’uëׯGii© Zc}GEŸ>}°nÝ:[7…ˆˆˆˆ¬ˆr÷™McÙÓO‹Öýo×.Ä'$بEDt¿*--Åo¿MÂË/‡BaoëæP ¤V«±iÓ&Éú””œ;w;v´A«,K¥RáÏ?ÿPöžINNFLL ~üñG!#¦NŠàà`4kÖÌVM%""""+b@î>SËÁýýDë긻#^Oy""}5jZµ>>²ÝQ_zé%Ìœ96lÖ}úé§Xµj•¤,ÝØeµ†)T«q%)aÑ×púvÒòòlÝ$"ºOñ%ž|ò7LŸ‚ Nc̘E²åÎZ¹et¿Ø¹s§ðxذa?~¼°¼uëV[4Éj\\\°téR¸»» ëNŸ>mÑ51C®n݆SW¯ŠÖ}3u*:7ô–¯ß½‹ËWˆÊ´ÀÏ“'ÉÖ¹ãÒe|©3žÎèÁxéá‡ñîÎ]8xö,4h{=• Œ%ÉŒ#"²¤  'ñÏ?ß 33C´>1Q~2 "cÊ»rÀðáÃE™dˆ‹‹CÆ mÑ4«ðòòBïÞ½ ¸pኋ‹áàà`ã–QUc†\%$ge¡¨°Pô/·°PT¦ ¨XR&9#CO@F~ž´|V6^Þò'ÂΜ‘ã 9%á·oYüõéòð¨'Y—ŸŸnƒ–PM…èèhayÀ€h×®(c¬øÀ6 """""«c@®†h€•S§ÀEk çV¾õÐÊ·&tê„¢’¶ŽˆîGW®œ0¸ÝÑÑ&ü…ÂÞJ-¢ûÅÞ½{EË?ü°ðX¥R¡S§Nˆˆˆìر£Fä"##ѹsga9>>)))’r«V­Bpp°5›FDDDD6T­ryEExvý(--­pþÞÞøtÔHÀ›!;Ÿ^ñÁÇ –MšWGÇ ×QQË&Mã´yתeåÖу®M›>5j \lݪvhÍ&Þ«W/xyy‰¶1BÈmݺ+W®„RY­²TþZäL™2}ô7nl½‘ÍUë_·yEEˆ¾q£RuÜIMŸŒŠB~^^¥Ûdí€\€¿?j;;[õ9‰ˆ ññiÊ`UH~~>6oÞ,,>\RfРAøðÔÍ:zìØ1ôíÛ×jm´¦¼¼<( [7ƒˆˆˆˆ¬Œ“:Ôõ<=mÝ"z999ÁÞ^¾;ê¡C¿"==ÖÊ-¢ûÁ¡C‡DË””éÖ­›hyçÎUÚ& ¬ vU Ä7pãÆ \¹rË—/Lj#„íÛ¶mÃàÁƒ‘››[%ÏODDDDÕr5€³ž®ªDôàrt¬\Wu;;ãã¾Íž½o½uC†¼$»}ÇŽù•j=˜tƒkݺuƒB¡ýÓ ŽýùçŸÖl¢Ù u§uvvFãÆÑ¸qc´lÙsæÌÁŽ;ðÃ?e¢££ñÑGY£©DDDDTMT뀜£½=+õÏ«vm¡>¯Úµ+]Ÿ£žl} Š‹+}ì+Ù•ÅQæB¡X£©TDd[µk7¬»w/[¶ì½{Y’uîîÞ&=ÁÁóо½4‹éÖ­«HM½bR=D Ñh°e˳÷‹ÅåË—« Eÿqss»Vw»‹‹ùÝ·Ÿ{î9QwÝ/¾ø·nÝ2»""""ª™ªõrž..8òö[«ïϹÏX¬.PÊç²ïÝ-'eË_ [“»Ìøs©¹96h YŠ·wɺ””Ù²II—$ë<=¥=CFŽüW®tBQQ‘hýίcÆŒzö";sæŒh†Qwwwƒåsrþû®Ú½{7Ú´iSem«¥5AR±‘›iºÛ+8Îë矎]»v Ë‹-ªU«*TÕ,Õ:C®º«åä$Yw+ý®hùŸ¨(k5G¯ž’u§b+7YÙV:Í$ëoI2ÖJJŠpâÄ’²ÞÞÍz>;;<üðÉúÛ·£’Rµ™Ktÿؽ{·h9..ÙÙÙzÿuêÔI(»uëÖ*m›ŸŸŸð8))É`Yí "P± 9hÓ¦ ¦OŸ.,ÿòË/ˆ‰‘¬Ñý¥ZgÈUw <=qFg]Høĭ«£#"ââqì›´M[Oɺ‹ÑÑØrî<o;ÎîFTãøø´]¿|ùXôïÿ z"==ûö}.Éj€ :šýœÁÁÏâàÁå’ì ;_ÃÌ™»ôìõŸ¢¢"ìÛ÷ŽÑrõë·G»vãÌnU›6m÷éÓÒFÚFމˆˆÀ‰'˜˜ˆúõëWIÛÚµk'ŒU†ÔÔTÔ­[WR®¤¤ýõ—°\©YR.\ˆ_ýUXþì³Ï°råÊ ×GDDDD5r•ÐÈÛK².';C>ÿ¸{÷®Ì^Ö×3PÚµ ¾Ü¶ _nÛ­Á³ýý±fÚSÖjU““;Zµ Æ•+'DëKJJð÷ßK,Õ»o­ZµÐªÕH³ŸÓÎN‰=&áðá5¢õqq1HN¾„zõÚÜ_£ÑàøñÍFŸÇ×÷r÷¡ØØXDFF ËÚã§é3hÐ |ðÁÂòÞ½{Ee–4zôhÑsõë×€¯¯¯°N­VcæÌ™8zô¨°nòäÉ•zÞ6mÚ`̘1ضm`ÕªUxóÍ7Ñ´iS½ûÊÚå(•JØÙ±CQuÃ_h•0²];Ù¹jµºÚãÀ×ÝÝÚê¿P..*þ¥eI'¢êiذO+´ßàÁ¯Vø9ûôY{™ñ3wíz½ÂuÒƒ!44T´¸ººbåÊ•¶mP5tóæM|ýõ×|þùç6nÙrDDDd!!!X½z5.^¼ˆØØXa½J¥BÛ¶mñè£bÈ!hÓ¦  …dÿëׯcÆ €æÍ›3 geÙÙÙX¿~½°üÕW_1 GFmÙ²aaa€Æ3 wILL>“0 '#>>K–,–#z°ÔˆˆˆÈ’¢¢¢ðÈ#`ôèÑ ã %%aaaX¸p!Úµk‡~øÁF-½ÿ-\¸mÚ´A›6mxñLDTðs›èþÁ 9"""²šŒŒ 8ñññ’m’àX£i¤˜˜DFFlÜ""2†ŸÛD÷ä¨Zxwüx¨5aÙÙÄñƒˆˆ¨fyæ™gDÁ¸ñãÇãÝwߺ¥ªÕjܼyÿþû/>úè#ÙÕ\ï¾û.fΜ èÒ¥‹[Cd]­ZµÂºu뎎Ž6n ÙrT- oÓÚÖM "¢*–žžŽÍ›7 Ë3gÎĪU«De”J%š5k†fÍšaÊ”)ضm¼¼¼¬ÝT"ª"ýúõ³uˆl¦N:˜>±±±hÖ¬4h`öþ×®]ÃÝ»wÑ¡CÔ²àõ‰%Tåû‰ˆÈ’ø«²‚_öÒ22DëVÌš…–õT’²¥†|ý îÝ»'Z¿ù…çQOf6²;YYxoÇ_¸‡¢ÂBÑ6¥R ?__¼?bZûÖ3ØÆ¤œŒ_"»¡¯/~Ÿ9kÃÃñóþ¿%õ;»¸àÙ!ƒñdÇŽ’ú²³ñmØ?ø÷üyh´º—j«íá.Íšav¯ž¬SG¶Ìê“'±ú@˜Á¶;;;cß‚ùËh+(.ÆG¡{p2* y¹¹¢mŽŽhÖ°!a0à8÷ ˆ¼qC´ní³sÍ'N"==]Xogg‡—FŽ=NDD$ïòåË¢eK]\jÛ¸q#V¯^½{÷ŠÖ3«V­2éÂìòåËxõÕWñï¿ÿ"''G´-88¯¿þ:F-ÙoèС¸víàûï¿ÇðáÃÍjû¢E‹°fÍÀäÉ“±hÑ"³ö7f×®]xñÅEë´»¿ÿþûÂókS*•8{ö¬IÝgΜÁ_|ÐÐPѱ ºuëЮ];“ÚúÛo¿aÅŠ8zô¨h½»»;†Šo¾ùÆ*Á¹É“'ãĉ€I“&á£þ¯½;jâzûþ#Z1Š¢‘*‚¢‚ FÅ¥¨`©¸€;µ.uyÝ•¶®`Å}¡VëRm¡VKU´VEÑRĵ(R«âR\ØT´eQÁ–ýýƒf~3™ÉIÀú|ÎáœÌÌÉÍM&dž¹÷¹_¨ÝgàÀxøð!`Μ9X¸Pø÷Ì?ÿüƒõë×#,, ·oßæl³´´ÄÇŒµk×jhºqãÆŒ¨_¿>âââ™™‰õë× NŠ2yòd¬Zµ 666¼meee‡ŸŸnÞ¼)ø| Àˆ#0kÖ,ÔV‘f$>>S¦LQºÝÇÇcÇŽUóêþçÅ‹øüóÏqöìY^JL˜0‹/V8_³f öïߘ>}:|}}±~ýz„‡‡#66–SvÅŠX½zµÁñ<ÀÉ“'ñ믿"**Š·],£G˜5k–ÚvcøátéÒ+W®Äo¿ýÆ›Õzûöíøè£ÔÖïÑ£G˜?>¢¢¢8ç·‹‹ –-[†ºuëjøJu¯*çSaa!zöì‰Wÿ^C|ðÁ*'Kxñâ „gÏžúöí‹   Á²>>>ˆŽŽÜV·n]\¼xQåë2Ä÷6!¤úP@®’Z˜›##+‹³.")Q0 w7#/óò8ëLêÔ Æ…ü‡maaJ^%%%ø+- ÓvìÀ(x÷ûµŒ…'Ëý§¸˜p{š›‹à›7±ýÄIá}^¿Æ™;wy¦³‰IX}èà>l/óòyãZ51Ǭ޽ËäÈ^ñꥨ¤¸XísÉÅg=ÁÜýûy8¹â¢"$<|ˆ±ßúãsOOxJ…/²^¼àÕ+ìömŒ¼À+[VV†m¿†!ïõk¥¯“B—b¯œœœ4iÒDgÇ?|ø0Æ'¸-44qqqˆEãÆ•ã§Ÿ~ÂäÉ“•n¿rå <==±páBlذÓó®AƒÌ…ÒÅ‹µÈ8q‚Ù¿iÓ¦Zí«‰ÜÜ\µ9ù”m/--U{üøøxŒ9’Ä€Û·oC*•"&&½Uüß|ñâ¼¼¼päÈÁí2™ !!!8sæ > µõª H¥Rx{{sÖ—••áã?VÚþrˆˆˆÀСCamm­´ÜË—/yA.¶ôôt•ÏË?üPékŠÇòåËqþüyüüóÏJþL[effbÁ‚Jgr^·nîÝ»‡_~ùEãzVÅØ±c•AŠ÷922‘‘‘ˆ‰‰ÁæÍ›•öþMHH`Ú*55Ë–-|/²³³1zôhøûûcîܹJŸûòåËpww<¿£££ááá___u/Q/ªz>Õ©S‹/ÆÄ‰Tœ?½zõÂôéÓ7{ölN[?~\iÝîÝ»§òPGßßÛ„êE¹JÒ©bîôÿžˆ¹}ûòÊžONâ­ëåÀÏ™xù2öœýMã:‹ŽF~QÖ ÖüÇè˼<|¦üŸ†ô¼<‚qÕ!ùéSLÛ±C£²eeeØxì^þó“{öÔh¡`ÛOç#1å½÷`RC!äMѾ}{β··7víÚ¥“ÄÖÉÉÉL0ÎÒÒ½zõÂ?ÿüÃéÉ‘’’‚üQéEãñãÇyÁ¸=z@*•"--ÓënÛ¶m€­[·2ë\\\˜yŠ=»Ôyýú5ç¢ÍÉÉI«ý5aeeÅ ^¼x‘iKKKtîÜ™·Ÿ±±±Ê ”œ››€Š^<ÎÎÎ‹ÅˆŠŠBvv6SÆÏÏgΜÜ¿  Ý»wçõÞquuE³f͘˜È»d2Œ¸¸8H¥Rµu«¬±cÇbÅŠÌs^¸pTZþèÑ£œº÷ø]x÷î]^OA[[[8;;C$áúõëLPæöíÛèׯ’’’´êé2aÂNàJ"‘ÀÚÚ‰‰‰‚¹~øŒ‹Å5j¬¬¬ “ÉœœŒØØXÎ{ªJÆ ѧOÎ:mÏ  "ˆÖSá·›­­-Þ{ï=r>g‘‘‘pwwÇ­[·`¬ä¦µ;'•Jѹsg¤¦¦rz§…††âòåË*Éú ‹!•Jaggsss¤¦¦âäÉ“Ìû€´´4‚…òI4 OŸ>°±±A\\'€µ|ùrL:Up8sZZï}”J¥èÝ»7>|Èœ—7n¬Ôk­ ]O&LÀ… ˜¼¦3fÌ€““:tèÀ)·k×.N.Ô   ^6©TÊô¼*‚ÀÚLV¤ïïmBHõ¢€\%}Ю-üŒ9=ÙÒ22PXR‚: ÝÚ£ù¹á ?Ÿ`oÄ9Áç²hÖ ¢Zµ•’’ζ3W¯bj/'Xë17ÂÁØë¼uÆÆÆ°jÑ-Z ´¬ ž>Å㌠µ=ß@$Ò]ðjÍñp­÷ùñìoÕ¹3êk‘OH$ñÚ¨è±xò^¼Ò^w„BþG±·ÐþýûqõêUøøø`È!:‚¸lÙ2øùù1¹Ÿ=zwww$''¨ -Z´ˆ—ª¬¬ +W®ä¬;}ú4ÜÝÝ™åG¡ÿþÌÅÔ¶mÛàããÃÔ›D‹‰‰AQQ‘ÆÁFÅžBXUåââκ‘#G",, 0sæL¬ZµªJÏááá0Cƒóóó1iÒ$„††Ξ=‹„„ØÛÛóöýöÛo9ª .ĺuë8Îׯ_ÇØ±c™rsæÌÁï¿ÿ##ýdvmÛ¶-zôèÁK9¢4 W^^Î …€©S§ æ Sì•¶k×.L›6ó~þùgLš4 @E0dË–-Z½7òa¶Ÿ|ò Ö¬Y‰ä#8nÞ¼‰Ï?ÿ\°ÍØÃœðÛo¿A¬0¢£¨¨¡¡¡Ø¾}»ÚÜŒööö¸tég››"#U§.Qôõ×_s–×®]Ëi‚‚Œ?žù,ß¾}aaaðôôÔèøÇŽÇ~È,Ÿ?ýû÷g–·oßn°€\¿~ý0wî\ :”7TV&“aáÂ…LÐ(44‰‰‰¼›Blllpüøq&xT^^ޝ¾ú Ë–-cŽ}èÐ!Ìœ9“·ï7ß|ÃYÞ±c¼¼¼˜å;wî OŸ>*ƒ½ú¢ËóÉßßüñâããTÌË|ÅÇÇsÚgÊ”)*‡dÀ¦M›8Ë—.]â}«bˆïmBHõQ}Ûˆ(UG$B{¼—=æ,#=3“³N$¡WëVœu_ž9˦jnnŽ_|¼ñë§ŸàèìY8ë»Ú¶å=çªJ¥D"föÀ³fá÷•+pxÁ|øŽS»b·þú‹·nሞ1«<ܱvÈ`ü4e2¢–.ÁÒ>BãÆQ[E±®®ˆY½ŠóWî?@ÊßóÖïÝW­Äk×`•@~’’l>w^ãçY6z4.­\Po˜üðLÉyª]Å !ä-ennŽ;wrÖ%''cöìÙ°´´„fÏž'N X‹ÔržžžøòË/9AÖ­[cíÚµÌrvv6ž9xååå•>†eãÆØ0b8`iØq¤±fÊÔ–‘‘vŒÿ¦ÿÞµv·o-¡Ü2W’’€¡ÿ癘È;ÎP…᪩¹¹¼2 6Dãzõ÷ï̬ò6(`!‘p&”(++ÙLp’!ËGŽT:ÄUdl […DÒVMšào…¤»_‡†âÐ`¸cWôoß– jôܺ”&pgk–@ð1]»âû“§8wIËÊÊðâõk4R3sÙ…÷ª]Sþ¤yšV™BÞzÆÆÆX¾|9†Š;wòzÌÉÉd2¬]»§N±cÇвeKµÇV–@ßLa†íœœ^öEí¨Q£Tæë=z43\(-- ÅÅÅL®ž÷ߟŽwõêUÌš5‹ÙOžó ¨ ɾ¨f_ô:W•®ôèÑCé¶–-[2yœ„ò%²~/‰Åbüúë¯ ø°¼¼œ“¬\U|]°°°€‡‡´=tè†Î)SZZÊ™épêÔ©‚Ǻuëó¸  Pú;·¼¼ï¾û.3 0..Ž\VféÒ¥jó§)‰D°µµe‚Oßÿ=\\\àáá¡õ±t‰T“H$¼\rl#GŽÄ‚ ˜å´´4´nÝZiy©T*˜3 àÏ-“É{ ê‹L&Czz:ÒÓÓ‘™™‰¢¢"fû¦ÂË—/ÕKÕw ûu ËÙA:‰D"Ø*®“Ưô†‹>èë|š8q".\¸€={öïÍž={бcG]¼BÈ[®Æä’5¸ë£J:+hs5) ùùU®“< W¿NX[Zâ/VÒ\ÙË—È~õ ’ÿ¹_S¸£fllŒÚq‡ÞÊ¿0x™—‡¾Ò¸^sžiz~uúÚÚâ’@¾Œ¬,ìML:K—.Pñ> :b±îîîèÛ·/ºv튞={4YücÖHu³Í*ÑþHm¦ê\o¨ð0??ß ¹¸¸8lÚ´‰™ÝW¡ÇŠ¿³ØØçf^Ô; ª®œ.ò€jJßç“¿¿?®\¹ÂéT|( ¸Bˆ¶hÈj îÌŸÙ+òß/øŒ—/‘ÏšUìmlx3r>xªÙLUªüõü™FåLêÔá —ÕÄðŽ`¥ælQa!"oÜÀìÀ@Ì=‚וÈý£ìW¯xyA„ò»É5èÁ÷@ƒÜob…cê'e4!„¼½LMMÑ¿¬^½/^Ä“'O°yófN™ˆˆœ‡fËg±T¤ÍÌŠB ´è‘¯IR!ÞÞÞ¼e2BBB0wî\8;;ÃÜÜóçÏ7XvïÕæÍUßô511áÍÔ Y577¯ZåtlÓ¦MèÒ¥‹ÆÁ8œžsÊ4ªÂäoì6T÷=«î»S—ô}>™ššrz½Ê±‡ÉBHUÕèro‚Á:`ÇIn2á ‰IçèˆóIüÙU‡@@¡w¶Ô)Ò0Ï[eïhþ<}V„ŸÀE îBÇÞ»‡Ï ±g’æw·µ%43˜ªáByêJ¨g!„Ô8‰‹-‚““gf¹ .ðº¢8ÄIhfL6Åÿ7ì*fffJ¥Lrô›7o¢ÿþLï*WWW¦çܹsçбcGN"}77·J¿Ž7Uyy9'¸3yòdÌŸ?_ãýÕÍô© b±'NdrÝ3ùªŠŠŠ89§ä³9*Rœ¨ÄßßÎÎÎסI“&—mܸ±ÆeÙLLLŽ£Gb÷îÝ8{ö,¯ŒL&ƒ¿¿?Μ9ƒk×®é=€Ìn7uç&¼óÎ;ÌçI“Þc5ÅéÓ§áëëËYçååWWWXXXp‚j[·n éû¸ºöÔäýÑCœOò!«laaa˜0a‚ÆÏC!ªÔ耜I­Z¨]ÅYƱ’£6jРR³¶)Ö‰­©©)šI$xÂê2}ïáC”ˆJääÙó§%·iÒ”·ÎØØïjq—ɪ‘f?¼„Yš0©U ›FŽÀÓýqäæMüžˆ´ÌL¥³WÅ?x€[iéèj©Ÿ®ëæÃ’þQq‡<[ ¿†¹æ?l !„–³³3 À$Ð×gRu‘HKKKfبФlгó)ssscr×®]ƒ³³33áG}„¦M›"$$§N‚ pùòefß75\Uq‚˜õêÕSš§ª:?ž È………áùóçhܸ1Ο?Ï (*N!§ØkNU>®êddd„Ñ£GcôèÑÈÏÏG\\¢££Î˜œœŒ 6૯4O±Rìpé 9•””p†1ZYYé­^º¶}ûvæ±D"ÁÕ«WѪU+Á²šÌ«+ìa½¹y¯Ù„òCꋾϧàà`ìØ±ƒ·~âĉèÖ­Ú·ç_ÓBˆ¶jt@Îìw½|™ÎŽwÌk¶ÎŽÅ6PÚ ûÏg–KJJp;= ]©[µlÉäŸck'p‡¦¹…ŽÎžÅ[_Ýšššâ3|æâ‚²òr\ÿ;¿ÆÅ!R`¦¢ËRô362‚iýú¼!ÁIOŸÂNaRвòrü™É;FÛ¦#„š¬mÛ¶L@NÝÐ3]<—< —)ð?ƒMq»bÞ¤Þ½{cÛ¶m€+W®à kVðAƒÁÔÔ!!!ˆˆˆ@^^' çäÄŸÍûmбcG& '”X¾&pssƒX,f‚oÇÇ”)SpäȦ̰aÃд)ÿF+P1l½¿!ƒ•ejjŠÞ½{£wïÞðõõETT†μ†ÐÐP½äØ!u9Å6}SrÅÅÅœaЛ7oVŒ¸9/õ݆êÚßç®>ϧ¤¤$|üñÇ̲‡‡’’’˜a²£FBll¬Ê¼¥o™L///^€·sçÎX²dI5ÕŠ· åÓa:ñÖ}sþ<ïËÍCÊ/6Møù+Ò22ð׋jŸ;K&ÕÇú½HQÆØÈ=­­°~ø0L4·ýqŽfyí*«¹@ sOÌe޺ߓP¬_ÃØØ˜™xƒBHÍÄΤïaqìÞ¿üò‹Ê¡Yì g‰D‚wfìfÕ¢¢¢˜ )lllжm[ ø¿ÿ™Ì¥¥¥¥Êäëú`jjÊ<~¡Áï}±³³cGFFVk]”111ÁäÉ“™åƒ¢  {÷îeÖ©ÊÆž X>“ì›ÄÕÕ• 6½äJ5L›RYìÀTJJŠÊ|ƒŠ“¿T6—ž¡)öÏÙÙÙ6lúõë‡=z E‹xùò%’’’Ã|Þ 1”¹¸¸ÉÉÉðññ† †: ]»v066FBBvìØÁ ±5Š¢££9ÃüäØï]pp0?~Ì+³råJN.¾eË–1j=9‚®]»¢¬¬ œ '$ gxñ›àÿþïÿ°hÑ"C"Û¶m‹ùóçÃÒÒ>ÄéÓ§9mgHÞÞÞœ@Õ Aƒ0iÒ$888 ;;¨–œˆº<Ÿ83$0€y?䌱gÏtêÔ‰y½~ø!nÞ¼ÉF*·dÉpÖ)~ÞÙA}¹ž={r‚ЊjÒ÷6!¤j( §#í›IPÏÔùù‚Û‡«éA+Ü¡v­Z8eÀ¼ú2oø0Á™PuÍ©•5VŽƒ/ÕhÆ©}ú`ñþð"B!Õ#99Yå ªŽŽŽ Ò{/ ¢·Ãýû÷±qãFCÅ!‰rƒ B@@€Òc)×<==Q·n]f¹{÷äb±öööU} Z³°°@@@'R||<âãã9åô~a׸qc\»v S§Nerd©û|T‡1cÆðrb±Xã^œ...8qâ¦M›Æ\ÔGFF"22Rçu­Šððpfv`!sæÌá Tô矪úè#fY,cïÞ½¼áÙ@E°÷СCÌùžœœŒÏ>ûŒ“KRNþ¿D¡sdܸq*r5é{›R54dU‡\”äˆ333ƒ¥ɨëˆDXåᎽŸ}*˜SNQãÆáéì _÷A‚Ûk äô ücQ§_;[ôêÔ ¦L‚`mi‰¯'OÆønÝ4®“6„öÒÁÇ.€µŠ»Ç¦õë㛩S±tà+¹¨:v­ZÆjË(;!„®N:!** .„DÂOkÀfkk‹#GŽ 66Vé„"‘Hð±öE‰²²"‘_}õNœ8¡²~ëÖ­ÃÉ“'U–±··‡˜Õ[1·˜H$¨Q£˜eWWWÁ‹?C˜3g~ÿýwLŸ>666œzË å SlGUï{è ªríÛ·Gtt46oÞ¬²}Åb1¼¼¼pêÔ)Þ,·úÖ¡CÎ09˜>}ºVÃ#‡ ‚ÄÄDLŸ>]e9¬X±Bí4uŸM4lØ_|ñúô飲œ££#Ž?•åªòyÚwܸqHLLTÙ“tüøñ¸qã“£Qˆ¦ßÚ|¾uA$áÌ™3J‡Á‹ÅbL™2qqqœ‰”ÕK“ï<€ÛÖªÊ;111‚½ËÄb19"¡ï}©êùôÅ_p‚Y‡FóæÍ•§_¿~X±b³¼oß>Á¡²•mM¾K*û½Í¦ìý~S†zò_`T®¦Ÿÿ¶mÛ—— ¢Ûí›v·éMVZV†Ç/^àÁÓdæå$â°‹aÕ¸‘Êœtúò4?Ÿæ '?O_ý{W¿N]´03C«Æðnƒ¯[IYŸdãNF:ÊÊËѦIStjþ.Léî!„Ô(åååøë¯¿••…ôôtÈd2Ô¯_VVVhÙ²%š5k¦÷dñêdgg#>>iiihÔ¨`mm]íõz›äää )) ©©©(..F‹-ТE ´iÓFïC)//GZZ’’’™™‰ºuë¢E‹°´´„••UµÔI>Ì/++‹¹Ÿ›­Zµ2HUU^½z…øøx¤¤¤ V­Zppp@»víþ3½ž={†¤¤$üý÷߉DèÚµ+lllª½Ýå222pãÆ äççC*•¢}ûö5æ{±&žO„·‹614 ÈB!„B!„REÚÄÐjÆ­ B!„B!„BÞ#„B!„B!Ä€( G!„B!„BˆQ@ŽB!„B!„R+**P1cMii©Þ+D!„B!„BÈ›F›šÚ€\aa!ÀÈÈÅÅÅ:¨!„B!„B!ÿ-ÚÄÐhÈ*!„B!„B!¤6 W»vmæ±H$Òke!„B!„ByiCS«[·®Æ#„B!„B!äm¤M †¬B!„B!„b@#„B!„B!Ä€h j¿{!±±œuÓœñA»¶ÕT# !ë ÖŸ>­¶Ü¢ѹEsÔˆBQ¯¨¨ÏŸ?‡¹¹9'÷†*W®\Á·ß~ °¶¶ÆW_}¥Ï*/^¼Àœ9sPVVcccìܹb±XçÏsîÜ9?~ •J1cÆ ?!¤f)--ÅÔ©S™ 7mÚ„–-[Vs­j–òòrøøø ¤¤àëë‹-ZTs­!Ú €\ÜËÈÀýÇ9ëîÛÙVk@.ãåK^„¤åæR@ŽBHµ CPPîܹƒ””f½D"AÇŽ1xð` 4:t€‘‘oÿ‡"88`kkK9{ùò%<È,ýõ×z È]»v €!C†P@Ž·@ii)öïßÏ,/^¼˜r ÊÊʰmÛ6fyÒ¤I#ä CCV !„bPIIIpssÃÈ‘#Æ Æ@vv6"##±hÑ"têÔ ß}÷]5Õô¿oÑ¢EèС:tè€]»vUwu!„Ppp0ó?`Ö¬YÕ]BÞ:ÔCŽB!óâÅ ôïßiii¼m666¼à¼~ýÚU{+=xðñññ€ŒŒŒj® !„Czúô)ó?ÀÜܼškCÈÛ‡rÿ1½Z·ÂŽ™39뾄ƒƒš4iRå:é’.Ï'BQD¿*õ &å¾=w§§sÖ÷ëÖ _ ‚ZjséyyXu<÷SSQTXÈÙ&‰Ð«‡ ƒƒE3×]Qîë×ù­?ÊÊʘuMšàȬ™øòìo8‡‚ü|f›iýú˜Ñï|Ü­›ÞëF!äÍrïÞ=Îò»ï¾«óç8|ø0‚‚‚pöìYÎzOOOìÞ½[£Þv÷îÝÃ矎K—.A&“q¶999Á××#GŽäíçîîŽû÷ïüýý1dÈ­êîçç‡}ûö&L˜???­öWçäÉ“˜7og{HðêÕ«™çg‰D¸uë'`¤Ì7°iÓ&œ>}šÓvR©?ÿü3:uê¤öÎÎÎ(**ÜöÁ`ãÆj!WPP€Ý»wcݺuÈÎÎ,3nÜ8|üñÇ>|¸ÆÇ­ŒŸ~ú k׮̛7§OŸæ|N½¼¼°cÇìØ±¾¾¾Lû‰Åb„‡‡ãý÷ßW{üÀÀ@ÄÄÄpÖ‹Åb¸»»cÛ¶mÊÊÊ???ܼyS°Ì€0bÄÌš5 µk×Vy¼›7oÂÏÏaaa‚Û¥R)F…Y³fÁÂÂB°LNNΜ9ƒãÇszÙ²õèÑÆ ÃÒ¥K5 ²¦¤¤`Þ¼y8yò$g½‹‹ V­Z…¦M›bæ¿i`Äb1Ο?¯òxX¾|9.^¼ÈjïààoooLŸ>]m½tE—m¶fÍfÆÓéÓ§Ã××ëׯGxx8bcc9eW¬XÕ«W«} ðùçŸãèÑ£œsÓÁÁÓ§OÇœ9s4}©zQ•óiÆŒ¸pညYÃÏž=«4ð\^^ŽÉ“'3ÏS¿~}\¹rE0ˆ{èÐ!άªŠöïß;;;¥ÛŸûì3•Ǻ}û6nß¾6mÚ`„ ‚e6oÞŒM›6©}˜åÒÒR\¹rEã×W¿~}Þÿ€„„ÎëUv#©Y3ýÌ"ämD¹jôÇøúCOκçØqN°¼E³fÕª…¬ìl^Ï»3W¯bj/'X×À„×?þþ;ä!„0ºtéÂYÞ¿?®^½  2D'¹y–-[???&Ñ£GàîîÎ\xnݺ‹-âå9*++ÃÊ•+9ëNŸ> wwwfùÑ£Gèß¿?sñ²mÛ6øøø0õfÑbbbPTT¤q°ñöíÛœe¡ÀXU¹¸¸ÀÅÅ…³näÈ‘ÌP™3gj„PÆÃÃ`†çççcÒ¤I œ={ *'i¸xñ"gyýúõX¾|¹Võxñâg˜Þ‚ ðõ×_ÃXaTÁ‹/Ä &‚ø@íñ«JWm&䨱cøðÙåóçÏ£ÿþÌòöíÛr'Ožäã&Mš„={ö0C\sssááá¡U IWty>Mœ8QQQLO¹©S§ÂÉɉ9 89Rmmm•ö:”7n§xii©V90ÍÍÍqâÄ Îº€€&•‹‹ o;!D¿ô7Öñ-ö£#bV¯Â…Ëa%pqñk¬¾Ü—gÎò†©š››ãoüúé'8:{Îú.F‡¶myû®:Î[gÝúáÒêU8»t Ú WHÏÌDb%îhBùo277ÇÎ;9ë’““1{ölXZZÂÎγgÏÆ‰'P\\¬õñ===ñå—_r‚m­[·fòvOž<áí{âÄ NPlß¾}œ`œüXçÎqožmÙ²…y¬D»{÷®Æu¿~ý:ó¸_¿~:é5hh‰ÇŽãäé355åå<Ò¦]*K1_áçŸÎ Æ@£FàííãÇë½Nl®®®L «gÏžœmƒf³uÿý7§\zz:–-[Æ,{yyaëÖ­¼NÝ»wçôz‹ŽŽÆ©S§xu*))áôÒôööæãÀÄÄcÇŽÅÅ‹•æ|€«¬Q#“&M ƯñÈ‘#*‡x¯\¹ øôÓO'©U«fÏžÍ p:tˆWîÙ³gœaœ3gÎäã M›6LYuëÖq†©^¸pŒ€:uê`Ó¦M1b³nÑ¢E¿*tÕfB8Á8 ¢‡¬<¸p¿Óؾøâ 汃ƒ‚‚‚8A%333œ>}Z£zè’®Ï' "—¨ƒƒ³þœsŒŸþ™³Ì+êÖ­ÆŒÃ,k2¤úÆj˨ÂŒWµ·SýúõªŠ À<ʨ8DyöìÙ‚ÇéÞ½»Òa½r%%%œ!ëë×¯ç¼¯ŠØß{7oÞÔ{N.]µ™"±XÌz)7tèP•ÇÊÈÈà}½¼¼ge533ã÷ AçS½zõ8ÿ#nß¾ ___„„„ 00Y„Ž;V¶ê„7X²š_T„OByyy¥aÙ¸16Œ¨HÒ»4ì8Ò~ÌhÃÈÈ;Æ Sw­ß³·‡1ëG „Ÿ|·ðŸ8Ë©¹¹¼2 6Dãzõ÷oYy”°HÁº˜(++Ù ÍîbêËd…ÜuD"ôëÚ¿)$ÍÌ­ž„¬„Bj&ccc,_¾C‡ÅÎ;y=æäd2Ö®]‹S§NáØ±chÙ²¥Úc+‰•S —““Ã+óèÑ#æñ¨Q£TæQ=z43Ì3-- ÅÅÅL޵÷ߟ¹è¿zõ*fÍšÅìÀ ƒkÛ¶-gx—|F>oìLv=zôPº­eË–ÌŒ•ɧ-Å™×®]‹æÍ›£k×®znM(ö„a'ùg5ëÖ­Ë}8ùÂä"""°bÅ <fff9r$úM›6EHHN:… àòåË̾ojþ¸šÊÔÔ .ÄÂ… ‘›7o"** !!!œ^‘ÄøñãõôÕ5###Nà·^½z:Ëgdd„Ñ£GcôèÑÈÏÏG\\¢££ÎI^ŸœœŒ 6૯T§Xqrr‚““~üñGÄÇÇãÊ•+8sæ o&ÓO?ýW¯^åMÈÌ dœ:u ‚Ï¥lfO9vŒ=L\ˆây®Hqkkk•ö I—m¦KŠß•………JƒYêÚ_—ôy>) ÆÇ[ÿã?¢oß¾Z %„ü·Ô耜Ù;ï zù2õ5tÌKx&¥êÖ®IÞºæ8:{–@ií‰ò”ÀÓWUËß—ž®–Ü·º¡€ä!„TRÛ¶m™€{¨™¾žK~ž™™©²¬âvÅ‹ðÞ½{cÛ¶m*f—dÏ09hÐ ˜šš"$$ÈËËã䨷„þH$¸»»ÃÝÝëÖ­C`` >ûì3fû™3gÞ˜€tìØ‘ èkæZSSSôîݽ{÷†¯¯/¢¢¢0|øp&ت6 ''‰ •J!•J1kÖ,¤¤¤`ܸqLÑØØXdffò†’²‡«O™2Ei` àNÎ"¤uëÖÌãÄÄD”••)í ÇžBˆb@.;;»ÆätÙfº¤ËÎÎV:aº#º¦¯ó©  €3#« ììì˜^Ó“&MB·nÝ`oo¯³ç¬.K–,áý¯®]»6öíÛÇ ´B*P¹À¦ ?CZFþzñBí¾Y2®>^åóõïߟ“Xßßß_0¯Ùo¿ý¦vHkݺu1zôhfyÅŠ4ªú¨£Ë6Ó¥æÍ›ÃÁÁYÞµk—`¹¢¢"ƒÏ>ªóéÀ d–·nÝŠnݺ¡aÆ8vì³>>>Þ`yü±?+ñññÕ$ämE¹bý‡òÖåææbúÎ’â“CÁþÝv8±3vîÄŸÎÔÛ¦µàú-¡¡è½f-\¾\ÏüMÞ÷“Æuþ:4½×úÁÙï IJ¦ —333ƒS+ ÈB©ðäÉ,Y²VVVðóócf UtíÚ5ÎÅ ÿ`Õ„ 8=¦M›†;wîpÊäææ2A5¹¥K— O¨¾îîîÌcÅ×pƒ‚†ÂÈEFFâ×_5xôáôéÓèÛ·/‚ƒƒ•΀xõêUNpõMËß×¹sgÌ™3‡YöóóÃæÍ›•öîLHH€··7š6m*¤yöìììì°uëV¥ù»rrr83§öë×OéP´bÑ¢EHHHÜ^RR‚åË—sÖuìØ‘WŽÝÃë›o¾af'f;yò$fÍRŸê¥^½zX±b³///N›]½z•3ÄPÅ¡=<<ëTÌÄyàÀôêÕ óæÍÓèø•¥Ë6Ó%ccc,[ö¿tD111¼™x‹‹‹1yòdµ³øêš®Ï§ÄÄDN\ÎD={öĦM›˜å={ö(øDŸ‡ ûùù©ð„¢;5:‡ÜÛ¤}3 ôèÖLkrÏž=«Rb ±=;vĵ»w·1sòò´:¶ª.ÈSÞï«Õ±!„¼d2V¯^Õ«WÃÖÖ]ºt­­-ž?Ž;wî Z¡ç·§§'úöÕïÿ¬Y³3fÌPÑK®OŸ>3f lmm‘••…°°0Î0Ú1cÆ€Šà;Ø#_'7pà@¬^½š³½:òÇ1^^^̲§§'`gg‡úõ머ˆ Ô{²ŒŒ Á|dì‰bccƒãÇç´_AA¢££ ±XŒaÆÁÎÎ666ÈÏÏGLL oH¢PÒõšníڵطo¼X¼x1víÚ…AƒÁÚÚFFF¸ÿ>nܸÁ™ÍW¨WXqq1’““áãã 6 :t@»ví`llŒ„„ìØ±ƒ(™9s¦Òºýõ×_ˆˆˆÀ×_>}ú [·n°µµEÆ ‘ššŠ]»vqÎ'///Ô«WwœQ£Fq_;v„··7:uê„ììl\¹r…7A„*³gÏÆ×_ììlÃÆáää„—/_jÕcÌÚÚëÖ­c‚|±±±èر#ÆŒƒ: Q£FÈÊÊBBBÎ;Ç´]§N4~ŽÊÐu›éÒ˜1c°dɦâªU«ƒÞ½{£´´'NœÀÍ›7«¥nº:Ÿ 0jÔ(fY"‘ ((ˆ×›ÔÇÇçÏŸgzdO:=zô@‡xu ­[·8ëŸwÆ ¼aÁfffðóóSúšíííÑ£GæõlܸAAAèÖ­š°òœûúú Ö‹R5«AV¸BíZµpŠ•üYW–ˆ©ii R§ž©)Z¿û.î=x ´L0ºK—*?!„ÿ¶ääd•3¨:::"((È ¡'OžŒû÷ïcãÆ*‡»wï,;hÐ (=–bpÍÓÓ““«§{÷î‹ÅÌ…ŸX,®–¤Þà —Šç%ô{òä‰Ê6*¥Be:vì¨4 )“ÉpðàA•Ç=rä'à›¢qãÆ¸ví¦NÊL¢îœÒTxx83;°9sæhÄŒ‰‰áVõèÑ[¶lÜöÞ{ïaÉ’%œ`íÖ­[Ë®^½k×®UY—† âúõëpwwç|ÎÙ“¯XZZbÓ¦M?~¼ÊcŠºuëbÑ¢E̺#GލÝOŸtÝfºT»vmœÍ›7óÙ:pàš5kÆ+gllŒ½{÷ÂÖÖ–ù_ðá‡âÆÌ ¹°°0„……©|^¡ «X,V366†¿¿?zõêŬËÎÎf&?~<äѲZ"œµrah£ŽH„UîØûÙ§‚9å5nÜžÎÎðu¤¶ì» àÄüyßï´jÙR0GÔÒ0ÈÎñþMÁmžÎÎ3ZãcBy;têÔ QQQX¸p!$‰Ê²¶¶¶8räbcc•NèÀþ_¦ìÿš;˜¤¬¬H$ÂW_}…'N¨¬ßºuëpòäI•eìíí9¹ªgï‰Dœ®®®¼|Z†2gÎüþûï˜>}:lll8õ–ʦ؎ªÞƒÚµk«-W•ׯxLGGGx{{ÃÖÖVå~£FŸþÉɦ/ªÚ€Ý¾ìmš´IûöíÍ›7«üLŠÅbxyyáÔ©S‚³6lØ_|ñúôé£òùqüøqøûû«,·téRÁ¡Ùl‰ß}÷¢¢¢8Œ(úòË/$øÙ€àöíÛ‚9…´lÙ—/_Æ’%K8\©T DFFr&kQ5ÙŠH$‚âããѯ_?•ÏÛ§O|óÍ7œa³ú¢Ë6Óô»VÓï©TŠ[·n)Í êååÅË/g¨ïǪžO§OŸæÜÈY²d‰Ê6¶°°ÀÑ£G™åäädÁZeoˆ(N:$ÄÉÉ <ÀâÅ‹!•J?3êþǪ*C3¬¢œQ¹PŸu–mÛ¶!ïßaŒK–,áÜÝ%úUZV†Ç/^àÁÓdæå$â°‹aÕ¸š¨øá¢+Ù¯^aøfîËz¦¦ˆ\ü9àUa!"ï?@~á?hßÌš¿+¨$„BØÊËËñ×_!++ éééÉd¨_¿>¬¬¬Ð²eK4kÖ¬JÉâu!;;ñññHKKC£Fàààkkëj¯ÑNFF=z„¬¬,Èd2˜ššÂÊÊ ÖÖÖ°Ðàè›&''IIIHMMEqq1Z´h-Z M›6]TÀË—/‘””„¬¬,æ:@~n¶jÕJ« 좢"$&&"++ ‰DH$°²²BëÖ­Q§NUPP€¤¤$$''£¼¼öööèСƒÆ¯KyžAvðbûöíLN±Aƒi<ëgqq1RRR˜˜ˆ¼¼<4lØ-Z´@«V­8C E_m¦+yyy¸uëÒÒÒжm[tíÚU«Ï„¾éâ|"„¼]´‰¡Ñ·H VËØmÌÍÑÆÜ¼º«¢Tý:u0¼#u_&„¢###´jÕ ­Zµªîª(%‘HÔöä#5_óæÍѼyóꮆÁ4iҤʟ  G:©‰‰ ¤R)g¢ÊªW¯ºv튮]»ê fÿ#Ô‹èúõëÌãvíÚi|¬ÚµkÃÎÎvvv:©[Ué«Ít¥aÆzŸE»*tq>Bˆ2t‹—B!„òÖÈÉÉQ¹ýñãÇœ/«cÂB!ÿ}#„B!„¼5ŒÎ;cûöíHKKcf«,--Å… àâ┕J¥oä ¼„Bj> ÈB!„BÞ*·o߯œ9sвeKÃÎÎ"‘ýúõCZZSnëÖ­Õ6á !„ÿ6 ÈB!„BÞjÉÉÉœe[[[ÄÄÄÀÍÍ­šjD!ä¿Ní¤EEE*fC+--Õ{…HÍbjb‚ŽíÚ=¯eãÆÕX#B!„B*ïäÉ“øã?pñâE¼º«B!ä?F› Y%„B!„B!Ä€Ôäj×®Í<‰Ôv¨#„B!„B!ä­£M Mm@®nݺŒB!„B!„·‘614²J!„B!„BˆQ@ŽB!„B!„¢€!„B!„B!D9B!„B!„B ˆr„B!„B!„ä!„B!„B1 ÈB!„B!„b@#„B!„B!Ä€( G!„B!„BˆQ@ŽB!„B!„¢€!„B!„B!D9B!„B!„B Hm@ÎÈȈy\RR¢×ÊB!„B!„ò&*--e³ãiBÔä4hÀ<–ÉdU¨!„B!„B!ÿMcccÔ©SGeYµ9sssæqrrr«F!„B!„BÈKjj*ÊÊÊõë×W[^m@ÎÖÖ–y¿ÿþ» Õ#„B!„B!ä¿C&“!44”Yn×®Ú}Dê ´oߦ¦¦ÈÏÏGII öìÙ¼óÎ;œr¥¥¥(,,D½zõ*Qu>™L±X¬“c N:¨U«V•UTT011©ò±Þ–6+--Eii©NÚ ¨¹¯“>Ú£6Óµ™ötÙfðúõkÞÿÀʪ©¯“>Ú£6Óµ™ötÝfºü>«É¯“>Ú£6Óµ™ötÙfEEE¨U«–ή_kêë¤Ï†ö Ñf%%%ÈÏÏç¬ëÛ·¯Úã•———«+ô÷ßcïÞ½L×»7Myy¹Údz„ëmi³·åuêµ™ö¨Í´÷¶´ÙÛò:u‰ÚL{ÔfÚ{[ÚìmyºDm¦=j3íQ›e賡½êh³Aƒ¡W¯^jËi€'OžàðáÃxþüy•+ghô¡ÕÞÛÒfoËëÔ%j3íQ›iïmi³·åuêµ™ö¨Í´÷¶´ÙÛò:u‰ÚL{ÔfÚ£6#ÊÐgC{†l³wÞyJ¥•×8 'WTT„¬¬,”””pÖ#??5ÒæpJ=yòÍš5Óɱž?±XŒÚµkWùXònˆ¦¦¦U>Vqq1^½zõŸo³ââbé¤Í€šû:鳡=j3íQ›iO—m¹¹¹033Óɱjêë¤Ï†ö¨Í´Gm¦=]·Ù‹/tv¬šü:鳡=j3íQ›iO—m–ŸŸ]¿ÖÔ×IŸ íªÍ$‰Öm©u@ŽB!„B!„RyjgY%„B!„B!„èä!„B!„B1 ÈB!„B!„b@#„B!„B!Ä€( G!„B!„BˆQ@ŽB!„B!„¢€!„B!„B!D9B!„B!„B ˆr„B!„B!„ä!„B!„B1 ÈB!„B!„b@#„B!„B!Ä€( G!„B!„BˆQ@ŽB!„B!„úÔêU×ZÅIEND®B`‚sphinx-contrib-typer-058f2e1/tests/click/validation/index.rst000066400000000000000000000003231514345263500244060ustar00rootroot00000000000000.. typer:: validation.cli :preferred: html :width: 65 :convert-png: latex .. typer:: validation.cli :preferred: svg :width: 65 .. typer:: validation.cli :preferred: text :width: 65 sphinx-contrib-typer-058f2e1/tests/click/validation/validation.py000066400000000000000000000026461514345263500252630ustar00rootroot00000000000000from urllib import parse as urlparse import click def validate_count(ctx, param, value): if value < 0 or value % 2 != 0: raise click.BadParameter("Should be a positive, even integer.") return value class URL(click.ParamType): name = "url" def convert(self, value, param, ctx): if not isinstance(value, tuple): value = urlparse.urlparse(value) if value.scheme not in ("http", "https"): self.fail( f"invalid URL scheme ({value.scheme}). Only HTTP URLs are allowed", param, ctx, ) return value @click.command() @click.option( "--count", default=2, callback=validate_count, help="A positive even number." ) @click.option("--foo", help="A mysterious parameter.") @click.option("--url", help="A URL", type=URL()) @click.version_option() def cli(count, foo, url): """Validation. This example validates parameters in different ways. It does it through callbacks, through a custom type as well as by validating manually in the function. """ if foo is not None and foo != "wat": raise click.BadParameter( 'If a value is provided it needs to be the value "wat".', param_hint=["--foo"], ) click.echo(f"count: {count}") click.echo(f"foo: {foo}") click.echo(f"url: {url!r}") if __name__ == "__main__": cli() sphinx-contrib-typer-058f2e1/tests/tests.py000066400000000000000000000666201514345263500210560ustar00rootroot00000000000000import pytest import re from sphinx.application import Sphinx from sphinx import version_info as sphinx_version from typer import __version__ as typer_version import typing as t import os from pathlib import Path import shutil import subprocess from bs4 import BeautifulSoup as bs from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import cosine_similarity from skimage import io from skimage.transform import resize from pypdf import PdfReader import numpy as np import json TYPER_VERISON = tuple(int(v) for v in typer_version.split(".")) test_callbacks = {} DOC_DIR = Path(__file__).parent.parent / "doc" SRC_DIR = DOC_DIR / "source" BUILD_DIR = DOC_DIR / "build" CLICK_EXAMPLES = Path(__file__).parent / "click" TYPER_EXAMPLES = Path(__file__).parent / "typer" TEST_CALLBACKS = CLICK_EXAMPLES / "callback_record.json" def check_callback(callback): if not TEST_CALLBACKS.is_file(): return False return json.loads(TEST_CALLBACKS.read_text()).get(callback, False) def clear_callbacks(): if TEST_CALLBACKS.is_file(): os.remove(TEST_CALLBACKS) def similarity(text1, text2): """ Compute the cosine similarity between two texts. https://en.wikipedia.org/wiki/Cosine_similarity We use this to lazily evaluate the output of --help to our renderings. """ vectorizer = TfidfVectorizer() tfidf_matrix = vectorizer.fit_transform([text1, text2]) return cosine_similarity(tfidf_matrix[0:1], tfidf_matrix[1:2])[0][0] def pdf_text(pdf_path) -> t.List[str]: """ Returns a list of page strings. """ with open(pdf_path, "rb") as file: return [page.extract_text() for page in PdfReader(file).pages] def img_similarity(expected, to_compare): """ Calculate the Mean Squared Error between two images. MSE is a non-negative value, where 0 indicates perfect similarity. Higher values indicate less similarity. """ img_a, img_b = resize_image_to_match(expected, to_compare) io.imsave(str(expected.parent / f"resized_{expected.name}"), img_a) err = np.sum((img_a.astype("float") - img_b.astype("float")) ** 2) err /= float(img_a.shape[0] * img_a.shape[1]) return err def resize_image_to_match(source_image_path, target_image_path): target = io.imread(target_image_path)[:, :, :3] source = io.imread(source_image_path)[:, :, :3] resized = resize(source, target.shape[0:2], anti_aliasing=True) return np.clip(resized * 255, 0, 255).astype(np.uint8), target def replace_in_file(file_path: str, search_string: str, replacement_string: str): with open(file_path, "r") as file: file_contents = file.read() with open(file_path, "w") as file: file.write(file_contents.replace(search_string, replacement_string)) @pytest.mark.skipif(sphinx_version[0] < 6, reason="Sphinx >=6.0 required to build docs") def test_sphinx_html_build(): """ The documentation is extensive and exercises most of the features of the extension so we just check to see that our documentation builds! """ shutil.rmtree(BUILD_DIR / "html", ignore_errors=True) # Create a Sphinx application instance app = Sphinx( SRC_DIR, SRC_DIR, BUILD_DIR / "html", BUILD_DIR / "doctrees", buildername="html" ) assert app.config.typer_iframe_height_padding == 30 # Build the documentation app.build() # Test passes if no Sphinx errors occurred during build assert not app.statuscode, "Sphinx documentation build failed" def test_sphinx_text_build(): shutil.rmtree(BUILD_DIR / "text", ignore_errors=True) # Create a Sphinx application instance app = Sphinx( SRC_DIR, SRC_DIR, BUILD_DIR / "text", BUILD_DIR / "doctrees", buildername="text" ) # Build the documentation app.build() assert not app.statuscode, "Sphinx documentation build failed" def test_sphinx_latex_build(): shutil.rmtree(BUILD_DIR / "latex", ignore_errors=True) # Create a Sphinx application instance app = Sphinx( SRC_DIR, SRC_DIR, BUILD_DIR / "latex", BUILD_DIR / "doctrees", buildername="latex", ) # Build the documentation app.build() assert not app.statuscode, "Sphinx documentation build failed" def build_example( name, builder, example_dir=CLICK_EXAMPLES, clean_first=True, subprocess=False, project=None, ): cwd = os.getcwd() ex_dir = example_dir / name bld_dir = ex_dir / "build" if clean_first and bld_dir.exists(): shutil.rmtree(bld_dir) os.chdir(example_dir / name) if not subprocess: app = Sphinx( ex_dir, example_dir, bld_dir / builder, bld_dir / "doctrees", buildername=builder, ) assert app.config.typer_iframe_height_padding == 40 # Build the documentation app.build() else: assert ( os.system( f"uv run sphinx-build {ex_dir} {bld_dir / builder} -c {ex_dir.parent}" ) == 0 ) os.chdir(cwd) if builder == "html": result = (bld_dir / builder / "index.html").read_text() elif builder == "text": result = (bld_dir / builder / "index.txt").read_text() elif builder == "latex": if not project: from conf import project result = ( bld_dir / builder / f"{project.lower().replace(' ', '')}.tex" ).read_text() return bld_dir / builder, result def scrub(output: str) -> str: """Scrub control code characters and ansi escape sequences for terminal colors from output""" return re.sub(r"\[\d+(?:;\d+)*m", "", output).replace("\t", "") def get_ex_help(name, *subcommands, example_dir, command_file=None): ret = subprocess.run( [ "uv", "run", "python", example_dir / name / f"{command_file or name}.py", *subcommands, "--help", ], capture_output=True, env={ **os.environ, "PYTHONPATH": f"{os.environ.get('PYTHONPATH', '$PYTHONPATH')}:{example_dir / name}", "TERMINAL_WIDTH": str(os.environ.get("TERMINAL_WIDTH", 80)), }, ) return ret.stdout.decode() or ret.stderr.decode() def get_click_ex_help(name, *subcommands): return get_ex_help(name, *subcommands, example_dir=CLICK_EXAMPLES) def get_typer_ex_help(name, *subcommands, command_file=None): return scrub( get_ex_help( name, *subcommands, example_dir=TYPER_EXAMPLES, command_file=command_file ) ) def check_html(html, help_txt, iframe_number=0, threshold=0.85): soup = bs(html, "html.parser") iframes = soup.find_all("iframe") iframe = iframes[iframe_number] assert iframe is not None iframe_src = bs(iframe.attrs["srcdoc"], "html.parser") assert iframe_src is not None code = iframe_src.find("code") assert code is not None assert similarity(code.text, help_txt) > threshold return code.text def check_svg(html, help_txt, svg_number=0, threshold=0.75): soup = bs(html, "html.parser") svg = soup.find_all("svg")[svg_number] assert svg is not None txt = svg.text.strip().replace("\xa0", " ") assert similarity(txt, help_txt) > threshold return txt def check_text(html, help_txt, txt_number=0, threshold=0.95): soup = bs(html, "html.parser") txt = soup.find_all("pre")[txt_number] txt = txt.text.strip() for element in ["
", "", "", "
"]: txt = txt.strip(element) assert txt is not None sim = similarity(txt, help_txt) assert sim > threshold, f"{sim} is below threshold {threshold}" return txt def test_click_ex_validation(): clear_callbacks() bld_dir, html = build_example("validation", "html") help_txt = get_click_ex_help("validation") check_html(html, help_txt) assert check_callback("typer_render_html") assert check_callback("typer_get_iframe_height") assert not check_callback("typer_get_web_driver") check_svg(html, help_txt, threshold=0.7) check_text(html, help_txt) if bld_dir.exists(): shutil.rmtree(bld_dir.parent) def test_click_ex_termui(): """ tests :make-sections: and :show-nested: options """ clear_callbacks() bld_dir, html = build_example("termui", "html") help_txt = get_click_ex_help("termui") clear_help = get_click_ex_help("termui", "clear") colordemo_help = get_click_ex_help("termui", "colordemo") edit_help = get_click_ex_help("termui", "edit") locate_help = get_click_ex_help("termui", "locate") menu_help = get_click_ex_help("termui", "menu") open_help = get_click_ex_help("termui", "open") pager_help = get_click_ex_help("termui", "pager") pause_help = get_click_ex_help("termui", "pause") progress_help = get_click_ex_help("termui", "progress") # verifies :show-nested: check_html(html, help_txt) check_html(html, clear_help, 1) check_html(html, colordemo_help, 2) check_html(html, edit_help, 3) check_html(html, locate_help, 4) check_html(html, menu_help, 5) check_html(html, open_help, 6) check_html(html, pager_help, 7) check_html(html, pause_help, 8) check_html(html, progress_help, 9) check_html(html, menu_help, 10) # verify :make-sections: soup = bs(html, "html.parser") assert soup.find("section").find("h1").text.startswith("termui") assert soup.find_all("section")[1].find("h2").text.startswith("clear") assert soup.find_all("section")[2].find("h2").text.startswith("colordemo") assert soup.find_all("section")[3].find("h2").text.startswith("edit") assert soup.find_all("section")[4].find("h2").text.startswith("locate") assert soup.find_all("section")[5].find("h2").text.startswith("menu") assert soup.find_all("section")[6].find("h2").text.startswith("open") assert soup.find_all("section")[7].find("h2").text.startswith("pager") assert soup.find_all("section")[8].find("h2").text.startswith("pause") assert soup.find_all("section")[9].find("h2").text.startswith("progress") assert soup.find_all("section")[10].find("h1").text.startswith("termui menu") # verify correct name of subcommand assert ( "Usage: termui menu [OPTIONS]" in bs(soup.find_all("iframe")[10].attrs["srcdoc"], "html.parser") .find("code") .text ) if bld_dir.exists(): shutil.rmtree(bld_dir.parent) def test_click_ex_repo(): """ tests :make-sections: and :show-nested: options """ clear_callbacks() bld_dir, html = build_example("repo", "html") help_txt = get_click_ex_help("repo") clone_help = get_click_ex_help("repo", "clone") commit_help = get_click_ex_help("repo", "commit") copy_help = get_click_ex_help("repo", "copy") delete_help = get_click_ex_help("repo", "delete") setuser_help = get_click_ex_help("repo", "setuser") # verifies :show-nested: check_html(html, help_txt) check_html(html, clone_help, 1) check_html(html, commit_help, 2) check_html(html, copy_help, 3) check_html(html, delete_help, 4) check_html(html, setuser_help, 5) # verify :make-sections: soup = bs(html, "html.parser") assert len(soup.find_all("section")) == 0, "Should not have rendered any sections" if bld_dir.exists(): shutil.rmtree(bld_dir.parent) def test_click_ex_naval(): """ tests :make-sections: and :show-nested: options for multi level hierarchies """ clear_callbacks() bld_dir, html = build_example("naval", "html") help_txt = get_click_ex_help("naval") mine_help = get_click_ex_help("naval", "mine") mine_remove_help = get_click_ex_help("naval", "mine", "remove") mine_set_help = get_click_ex_help("naval", "mine", "set") ship_help = get_click_ex_help("naval", "ship") ship_move_help = get_click_ex_help("naval", "ship", "move") ship_new_help = get_click_ex_help("naval", "ship", "new") ship_shoot_help = get_click_ex_help("naval", "ship", "shoot") # verifies :show-nested: check_svg(html, help_txt) check_svg(html, mine_help, 1) check_svg(html, mine_remove_help, 2, threshold=0.65) check_svg(html, mine_set_help, 3, threshold=0.60) check_svg(html, ship_help, 4) check_svg(html, ship_move_help, 5, threshold=0.52) check_svg(html, ship_new_help, 6) check_svg(html, ship_shoot_help, 7, threshold=0.57) check_svg(html, ship_new_help, 8) # verify :make-sections: soup = bs(html, "html.parser") assert len(soup.find_all("section")) == 9, "Should have rendered 8 sections" soup = bs(html, "html.parser") assert soup.find("section").find("h1").text.startswith("naval") assert soup.find_all("section")[1].find("h2").text.startswith("mine") assert soup.find_all("section")[2].find("h3").text.startswith("remove") assert soup.find_all("section")[3].find("h3").text.startswith("set") assert soup.find_all("section")[4].find("h2").text.startswith("ship") assert soup.find_all("section")[5].find("h3").text.startswith("move") assert soup.find_all("section")[6].find("h3").text.startswith("new") assert soup.find_all("section")[7].find("h3").text.startswith("shoot") assert soup.find_all("section")[8].find("h1").text.startswith("naval ship new") if bld_dir.exists(): shutil.rmtree(bld_dir.parent) def test_click_ex_inout(): """ tests :make-sections: and :show-nested: options for multi level hierarchies """ clear_callbacks() bld_dir, html = build_example("inout", "html") help_txt = get_click_ex_help("inout") # verifies :show-nested: check_html(html, help_txt) if bld_dir.exists(): shutil.rmtree(bld_dir.parent) def test_click_ex_complex(): """ tests :make-sections: and :show-nested: options for multi level hierarchies """ clear_callbacks() bld_dir, html = build_example("complex", "html") check_text( html, """ Usage: complex [OPTIONS] COMMAND [ARGS]... A complex command line interface. ╭─ Options ─────────────────────────────────────────────────────╮ │ --home DIRECTORY Changes the folder to operate │ │ on. │ │ --verbose -v Enables verbose mode. │ │ --help Show this message and exit. │ ╰───────────────────────────────────────────────────────────────╯ ╭─ Commands ────────────────────────────────────────────────────╮ │ init Initializes a repo. │ │ status Shows file changes. │ ╰───────────────────────────────────────────────────────────────╯ """, threshold=0.8, ) check_text( html, """ Usage: complex init [OPTIONS] [PATH] Initializes a repository. ╭─ Arguments ───────────────────────────────────────────────────╮ │ path [PATH] │ ╰───────────────────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────────────────╮ │ --help Show this message and exit. │ ╰───────────────────────────────────────────────────────────────╯ """, 1, ) check_text( html, """ Usage: complex status [OPTIONS] Shows file changes in the current working directory. ╭─ Options ─────────────────────────────────────────────────────╮ │ --help Show this message and exit. │ ╰───────────────────────────────────────────────────────────────╯ """, 2, ) soup = bs(html, "html.parser") assert soup.find("section").find("h1").text.startswith("complex") for idx, cmd in enumerate(["init", "status"]): assert soup.find_all("section")[idx + 1].find("h2").text.startswith(cmd) if bld_dir.exists(): shutil.rmtree(bld_dir.parent) def test_click_ex_completion(): clear_callbacks() bld_dir, html = build_example("completion", "html") subcommands = ["group", "group select-user", "ls", "show-env"] helps = [ get_click_ex_help("completion"), *[get_click_ex_help("completion", *cmd.split()) for cmd in subcommands], ] for idx, help in enumerate(helps): check_text(html, help, idx, threshold=0.82) if bld_dir.exists(): shutil.rmtree(bld_dir.parent) def test_click_ex_aliases(): clear_callbacks() bld_dir, html = build_example("aliases", "html") # we test that list_commands order is honored subcommands = reversed(["alias", "clone", "commit", "pull", "push", "status"]) helps = [ get_click_ex_help("aliases"), *[get_click_ex_help("aliases", *cmd.split()) for cmd in subcommands], ] for idx, help in enumerate(helps): check_text(html, help, idx, threshold=0.82) if bld_dir.exists(): shutil.rmtree(bld_dir.parent) def test_click_ex_imagepipe(): """ tests a chained command """ clear_callbacks() bld_dir, html = build_example("imagepipe", "html") subcommands = [ "blur", "crop", "display", "emboss", "open", "paste", "resize", "save", "sharpen", "smoothen", "transpose", ] helps = [ get_click_ex_help("imagepipe"), *[get_click_ex_help("imagepipe", cmd) for cmd in subcommands], ] for idx, help in enumerate(helps): check_text(html, help, idx, threshold=0.87) check_svg(html, helps[-3], threshold=0.7) soup = bs(html, "html.parser") assert len(soup.find_all("section")) == 15, "Should have rendered 13 sections" assert soup.find("section").find("h1").text.startswith("imagepipe") for idx, cmd in enumerate(subcommands): assert soup.find_all("section")[idx + 1].find("h2").text.startswith(cmd) assert ( soup.find_all("section")[len(subcommands) + 1] .find("h1") .text.startswith("imagepipe sharpen") ) # check the cross references: assert soup.find_all("section")[-2].find("h1").text.startswith("References") def check_refs(section, local): for li, anchor in zip( section.find_all("li"), [ "imagepipe", "imagepipe-blur", "imagepipe-crop", "imagepipe-display", "imagepipe-emboss", "imagepipe-open", "imagepipe-paste", "imagepipe-resize", "imagepipe-save", "imagepipe-smoothen", "imagepipe-transpose", "imagepipe-sharpen", ], ): if local: assert li.find("a").attrs["href"] == f"#{anchor}" else: assert li.find("a").attrs["href"] == f"index.html#{anchor}" if "sharpen" not in anchor: assert li.find("a").text == " ".join(anchor.split("-")) else: # test special link text assert li.find("a").text == "sharpen" check_refs(soup.find_all("section")[-2], local=True) # check references page refs = bs((bld_dir / "references.html").read_text(), "html.parser") check_refs(refs.find_all("section")[1], local=False) assert ( refs.find_all("section")[1].find_all("a")[-1].text == ":typer:`bad-reference`" ) if bld_dir.exists(): shutil.rmtree(bld_dir.parent) def test_typer_ex_reference(): clear_callbacks() html_dir, index_html = build_example( "reference", "html", example_dir=TYPER_EXAMPLES ) doc_help = check_svg( (html_dir / "reference.html").read_text(), get_typer_ex_help("reference", command_file="cli-ref"), 0, threshold=0.82, ) assert "python -m cli-ref.py" in doc_help index = bs(index_html, "html.parser") ref1, ref2, ref3 = tuple( index.find_all("section")[0].find_all("p")[0].find_all("a") ) for ref in (ref1, ref2): assert ref.text == "python -m cli-ref.py" assert ref.attrs["href"] == "reference.html#python-m-cli-ref-py" assert ref3.text == "command" assert ref3.attrs["href"] == "reference.html#python-m-cli-ref-py" def test_typer_ex_composite(): EX_DIR = TYPER_EXAMPLES / "composite/composite" cli_py = EX_DIR / "cli.py" group_py = EX_DIR / "group.py" echo_py = EX_DIR / "echo.py" try: clear_callbacks() def test_build(first=False): _, html = build_example( "composite", "html", example_dir=TYPER_EXAMPLES, clean_first=first, subprocess=True, ) # we test that list_commands order is honored subcommands = ["subgroup", "subgroup multiply", "subgroup echo", "repeat"] helps = [ get_typer_ex_help("composite", command_file="composite/cli"), *[ get_typer_ex_help( "composite", *cmd.split(), command_file="composite/cli" ) for cmd in subcommands ], ] doc_helps = [] for idx, help in enumerate(helps): doc_helps.append(check_text(html, help, idx, threshold=0.88)) return doc_helps index_html = TYPER_EXAMPLES / "composite/build/html/index.html" composite_html = TYPER_EXAMPLES / "composite/build/html/composite.html" echo_html = TYPER_EXAMPLES / "composite/build/html/echo.html" multiply_html = TYPER_EXAMPLES / "composite/build/html/multiply.html" repeat_html = TYPER_EXAMPLES / "composite/build/html/repeat.html" subgroup_html = TYPER_EXAMPLES / "composite/build/html/subgroup.html" files = [ index_html, composite_html, echo_html, multiply_html, repeat_html, subgroup_html, ] test_build(first=True) times = [pth.stat().st_mtime for pth in files] test_build() times2 = [pth.stat().st_mtime for pth in files] assert times == times2, "Rebuild was not cached!" # test that replace_in_file( cli_py, "Lets do stuff with strings.", "XX Lets do stuff with strings. XX" ) txts = test_build() times3 = [pth.stat().st_mtime for pth in files] for idx, (t3, t2) in enumerate(zip(times3, times2)): assert t3 > t2, f"file {files[idx]} not regenerated." assert "XX Lets do stuff with strings. XX" in txts[0] replace_in_file( group_py, "Subcommands are here.", "XX Subcommands are here. XX" ) helps = test_build() assert "XX Subcommands are here. XX" in helps[0] assert "XX Subcommands are here. XX" in helps[1] times4 = [pth.stat().st_mtime for pth in files] for idx, (t4, t3) in enumerate(zip(times4, times3)): if files[idx].name in ["echo.html", "multiply.html", "repeat.html"]: continue assert t4 > t3, f"file {files[idx]} not regenerated." replace_in_file( echo_py, "def echo(name: str):", "def echo(name: str, name2: str):" ) helps = test_build() assert "name2" in helps[3] times5 = [pth.stat().st_mtime for pth in files] for idx, (t5, t4) in enumerate(zip(times5, times4)): if files[idx].name in ["composite.html", "multiply.html", "repeat.html"]: continue assert t5 > t4, f"file {files[idx]} not regenerated." # check navbar navitems = list( bs(index_html.read_text()).find("div", class_="sphinxsidebar").find_all("a") ) assert navitems[1].text == "composite" assert navitems[2].text.strip() == "python -m cli.py repeat" assert navitems[3].text == "cli subgroup" assert navitems[4].text == "cli subgroup echo" assert navitems[5].text == "cli subgroup multiply" finally: os.system(f"git checkout {cli_py}") os.system(f"git checkout {group_py}") os.system(f"git checkout {echo_py}") def test_click_text_build_works(): bld_dir, text = build_example("validation", "text") help_txt = get_click_ex_help("validation") assert similarity(text, help_txt) > 0.95 assert text.count("Usage:") == 3, "Should have rendered the help 3 times as text" if bld_dir.exists(): shutil.rmtree(bld_dir.parent) def test_click_latex_build_works(): """ also tests the convert-png option and typer_svg2pdf and typer_convert_png callbacks. """ bld_dir, latex = build_example("validation", "latex") help_txt = get_click_ex_help("validation") assert check_callback("typer_svg2pdf") assert check_callback("typer_convert_png") # make sure the expected text rendered at least once assert latex.count("Usage: validation [OPTIONS]") == 1 # get all pdf files from the build directory pdf = bld_dir / "validation_2a8082c3.pdf" assert (bld_dir / "validation_2a8082c3.svg").is_file() assert len(list(bld_dir.glob("**/*.pdf"))) == 1, ( "Should have rendered the help 1 time as pdf" ) assert pdf.name.split(".")[0] in latex pdf_txt = pdf_text(pdf)[0] assert similarity(pdf_txt, help_txt) > 0.95 assert len(list(bld_dir.glob("**/*.png"))) == 1, ( "Should have rendered the help 1 time as png" ) html_png = bld_dir / "validation_4697b61f.png" assert img_similarity(CLICK_EXAMPLES / "validation" / "html.png", html_png) < 9000 if bld_dir.exists(): shutil.rmtree(bld_dir.parent) def test_enums(): from sphinxcontrib.typer import RenderTarget, RenderTheme for target in RenderTarget: assert target.value == str(target) for theme in RenderTheme: assert theme.value == str(theme) sphinx-contrib-typer-058f2e1/tests/typer/000077500000000000000000000000001514345263500204735ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/tests/typer/composite/000077500000000000000000000000001514345263500224755ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/tests/typer/composite/composite.rst000066400000000000000000000002021514345263500252230ustar00rootroot00000000000000.. typer:: composite.cli.app :prog: composite :width: 65 :convert-png: latex :make-sections: :preferred: text sphinx-contrib-typer-058f2e1/tests/typer/composite/composite/000077500000000000000000000000001514345263500244775ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/tests/typer/composite/composite/__init__.py000066400000000000000000000000001514345263500265760ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/tests/typer/composite/composite/cli.py000077500000000000000000000005511514345263500256240ustar00rootroot00000000000000import typer from composite.group import app as subgroup, AlphOrder app = typer.Typer(help="Lets do stuff with strings.", cls=AlphOrder) app.add_typer(subgroup, name="subgroup") def repeat(string: str, count: int): typer.echo(string * count) app.command(help="Repeat the string a given number of times.")(repeat) if __name__ == "__main__": app() sphinx-contrib-typer-058f2e1/tests/typer/composite/composite/echo.py000066400000000000000000000000711514345263500257650ustar00rootroot00000000000000import typer def echo(name: str): typer.echo(name) sphinx-contrib-typer-058f2e1/tests/typer/composite/composite/group.py000066400000000000000000000007371514345263500262140ustar00rootroot00000000000000import typer from composite.echo import echo from composite.multiply import multiply from typer.core import TyperGroup class AlphOrder(TyperGroup): def list_commands(self, ctx): return reversed(sorted(super().list_commands(ctx))) def subgroup(): pass app = typer.Typer(help="Subcommands are here.", cls=AlphOrder, callback=subgroup) app.command(name="echo", help="Echo the string.")(echo) app.command(name="multiply", help="Multiply 2 numbers.")(multiply) sphinx-contrib-typer-058f2e1/tests/typer/composite/composite/multiply.py000066400000000000000000000001301514345263500267220ustar00rootroot00000000000000import typer def multiply(arg1: float, arg2: float): typer.echo(f"{arg1 * arg2}") sphinx-contrib-typer-058f2e1/tests/typer/composite/echo.rst000066400000000000000000000001731514345263500241460ustar00rootroot00000000000000.. typer:: composite.cli.app:subgroup:echo :width: 65 :convert-png: latex :make-sections: :preferred: text sphinx-contrib-typer-058f2e1/tests/typer/composite/index.rst000066400000000000000000000003521514345263500243360ustar00rootroot00000000000000.. typer:: composite.cli.app :prog: composite :preferred: text :width: 65 :make-sections: :show-nested: .. toctree:: :maxdepth: 1 :caption: Contents: composite repeat subgroup echo multiply sphinx-contrib-typer-058f2e1/tests/typer/composite/multiply.rst000066400000000000000000000001771514345263500251130ustar00rootroot00000000000000.. typer:: composite.cli.app:subgroup:multiply :width: 65 :convert-png: latex :make-sections: :preferred: text sphinx-contrib-typer-058f2e1/tests/typer/composite/repeat.rst000066400000000000000000000002271514345263500245100ustar00rootroot00000000000000.. typer:: composite.cli.app:repeat :prog: python -m cli.py repeat :width: 65 :convert-png: latex :make-sections: :preferred: text sphinx-contrib-typer-058f2e1/tests/typer/composite/subgroup.rst000066400000000000000000000001661514345263500251000ustar00rootroot00000000000000.. typer:: composite.cli.app:subgroup :width: 65 :convert-png: latex :make-sections: :preferred: text sphinx-contrib-typer-058f2e1/tests/typer/conf.py000066400000000000000000000045361514345263500220020ustar00rootroot00000000000000from datetime import datetime import sys from pathlib import Path from sphinxcontrib import typer as sphinxcontrib_typer import json import os # Configuration file for the Sphinx documentation builder. # # This file only contains a selection of the most common options. For a full # list see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html # -- Path setup -------------------------------------------------------------- # get all sub directories from here and add them to the path sys.path.append(str(Path(__file__).parent)) for path in Path(__file__).parent.iterdir(): if path.is_dir(): sys.path.append(str(path)) TEST_CALLBACKS = Path(__file__).parent / "callback_record.json" test_callbacks = {} def record_callback(callback): """crude but it works""" if TEST_CALLBACKS.is_file(): os.remove(TEST_CALLBACKS) test_callbacks[callback] = True TEST_CALLBACKS.write_text(json.dumps(test_callbacks)) # -- Project information ----------------------------------------------------- project = "SphinxContrib Typer Tests" copyright = f"2023-{datetime.now().year}, Brian Kohan" author = "Brian Kohan" # The full version, including alpha/beta/rc tags release = sphinxcontrib_typer.__version__ # -- General configuration --------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = ["sphinx_rtd_theme", "sphinxcontrib.typer"] # Add any paths that contain templates here, relative to this directory. templates_path = ["_templates"] # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. exclude_patterns = [] # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # html_theme = "alabaster" # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = [] todo_include_todos = True typer_iframe_height_padding = 40 sphinx-contrib-typer-058f2e1/tests/typer/reference/000077500000000000000000000000001514345263500224315ustar00rootroot00000000000000sphinx-contrib-typer-058f2e1/tests/typer/reference/cli-ref.py000066400000000000000000000002511514345263500243220ustar00rootroot00000000000000import typer app = typer.Typer() def reference(name: str): typer.echo(name) app.command(help="CLI ref tests.")(reference) if __name__ == "__main__": app() sphinx-contrib-typer-058f2e1/tests/typer/reference/index.rst000066400000000000000000000005071514345263500242740ustar00rootroot00000000000000Reference Tests --------------- This tests that references to commands like :typer:`python -m cli-ref.py` work. You can also use a section id style reference: :typer:`python-m-cli-ref-py`. You can also use link text: :typer:`command `. .. toctree:: :maxdepth: 1 :caption: Contents: reference sphinx-contrib-typer-058f2e1/tests/typer/reference/reference.rst000066400000000000000000000002071514345263500251200ustar00rootroot00000000000000Reference ========= .. typer:: cli-ref.app :prog: python -m cli-ref.py :width: 65 :convert-png: latex :make-sections: sphinx-contrib-typer-058f2e1/uv.lock000066400000000000000000017523631514345263500175130ustar00rootroot00000000000000version = 1 revision = 2 requires-python = ">=3.10, <4.0" resolution-markers = [ "python_full_version >= '3.12'", "python_full_version == '3.11.*'", "python_full_version < '3.11'", ] [[package]] name = "accessible-pygments" version = "0.0.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pygments" }, ] sdist = { url = "https://files.pythonhosted.org/packages/bc/c1/bbac6a50d02774f91572938964c582fff4270eee73ab822a4aeea4d8b11b/accessible_pygments-0.0.5.tar.gz", hash = "sha256:40918d3e6a2b619ad424cb91e556bd3bd8865443d9f22f1dcdf79e33c8046872", size = 1377899, upload-time = "2024-05-10T11:23:10.216Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/8d/3f/95338030883d8c8b91223b4e21744b04d11b161a3ef117295d8241f50ab4/accessible_pygments-0.0.5-py3-none-any.whl", hash = "sha256:88ae3211e68a1d0b011504b2ffc1691feafce124b845bd072ab6f9f66f34d4b7", size = 1395903, upload-time = "2024-05-10T11:23:08.421Z" }, ] [[package]] name = "alabaster" version = "1.0.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/a6/f8/d9c74d0daf3f742840fd818d69cfae176fa332022fd44e3469487d5a9420/alabaster-1.0.0.tar.gz", hash = "sha256:c00dca57bca26fa62a6d7d0a9fcce65f3e026e9bfe33e9c538fd3fbb2144fd9e", size = 24210, upload-time = "2024-07-26T18:15:03.762Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl", hash = "sha256:fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b", size = 13929, upload-time = "2024-07-26T18:15:02.05Z" }, ] [[package]] name = "annotated-doc" version = "0.0.4" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size = 7288, upload-time = "2025-11-10T22:07:42.062Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303, upload-time = "2025-11-10T22:07:40.673Z" }, ] [[package]] name = "anyio" version = "4.12.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "idna" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/96/f0/5eb65b2bb0d09ac6776f2eb54adee6abe8228ea05b20a5ad0e4945de8aac/anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703", size = 228685, upload-time = "2026-01-06T11:45:21.246Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c", size = 113592, upload-time = "2026-01-06T11:45:19.497Z" }, ] [[package]] name = "asttokens" version = "3.0.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/be/a5/8e3f9b6771b0b408517c82d97aed8f2036509bc247d46114925e32fe33f0/asttokens-3.0.1.tar.gz", hash = "sha256:71a4ee5de0bde6a31d64f6b13f2293ac190344478f081c3d1bccfcf5eacb0cb7", size = 62308, upload-time = "2025-11-15T16:43:48.578Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl", hash = "sha256:15a3ebc0f43c2d0a50eeafea25e19046c68398e487b9f1f5b517f7c0f40f976a", size = 27047, upload-time = "2025-11-15T16:43:16.109Z" }, ] [[package]] name = "async-generator" version = "1.10" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/ce/b6/6fa6b3b598a03cba5e80f829e0dadbb49d7645f523d209b2fb7ea0bbb02a/async_generator-1.10.tar.gz", hash = "sha256:6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144", size = 29870, upload-time = "2018-08-01T03:36:21.69Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/71/52/39d20e03abd0ac9159c162ec24b93fbcaa111e8400308f2465432495ca2b/async_generator-1.10-py3-none-any.whl", hash = "sha256:01c7bf666359b4967d2cda0000cc2e4af16a0ae098cbffcb8472fb9e8ad6585b", size = 18857, upload-time = "2018-08-01T03:36:20.029Z" }, ] [[package]] name = "attrs" version = "25.4.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/685e6633917e101e5dcb62b9dd76946cbb57c26e133bae9e0cd36033c0a9/attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", size = 934251, upload-time = "2025-10-06T13:54:44.725Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615, upload-time = "2025-10-06T13:54:43.17Z" }, ] [[package]] name = "babel" version = "2.18.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/7d/b2/51899539b6ceeeb420d40ed3cd4b7a40519404f9baf3d4ac99dc413a834b/babel-2.18.0.tar.gz", hash = "sha256:b80b99a14bd085fcacfa15c9165f651fbb3406e66cc603abf11c5750937c992d", size = 9959554, upload-time = "2026-02-01T12:30:56.078Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl", hash = "sha256:e2b422b277c2b9a9630c1d7903c2a00d0830c409c59ac8cae9081c92f1aeba35", size = 10196845, upload-time = "2026-02-01T12:30:53.445Z" }, ] [[package]] name = "beautifulsoup4" version = "4.14.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "soupsieve" }, { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c3/b0/1c6a16426d389813b48d95e26898aff79abbde42ad353958ad95cc8c9b21/beautifulsoup4-4.14.3.tar.gz", hash = "sha256:6292b1c5186d356bba669ef9f7f051757099565ad9ada5dd630bd9de5fa7fb86", size = 627737, upload-time = "2025-11-30T15:08:26.084Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl", hash = "sha256:0918bfe44902e6ad8d57732ba310582e98da931428d231a5ecb9e7c703a735bb", size = 107721, upload-time = "2025-11-30T15:08:24.087Z" }, ] [[package]] name = "cairocffi" version = "1.7.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, ] sdist = { url = "https://files.pythonhosted.org/packages/70/c5/1a4dc131459e68a173cbdab5fad6b524f53f9c1ef7861b7698e998b837cc/cairocffi-1.7.1.tar.gz", hash = "sha256:2e48ee864884ec4a3a34bfa8c9ab9999f688286eb714a15a43ec9d068c36557b", size = 88096, upload-time = "2024-06-18T10:56:06.741Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/93/d8/ba13451aa6b745c49536e87b6bf8f629b950e84bd0e8308f7dc6883b67e2/cairocffi-1.7.1-py3-none-any.whl", hash = "sha256:9803a0e11f6c962f3b0ae2ec8ba6ae45e957a146a004697a1ac1bbf16b073b3f", size = 75611, upload-time = "2024-06-18T10:55:59.489Z" }, ] [[package]] name = "cairosvg" version = "2.8.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cairocffi" }, { name = "cssselect2" }, { name = "defusedxml" }, { name = "pillow" }, { name = "tinycss2" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ab/b9/5106168bd43d7cd8b7cc2a2ee465b385f14b63f4c092bb89eee2d48c8e67/cairosvg-2.8.2.tar.gz", hash = "sha256:07cbf4e86317b27a92318a4cac2a4bb37a5e9c1b8a27355d06874b22f85bef9f", size = 8398590, upload-time = "2025-05-15T06:56:32.653Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/67/48/816bd4aaae93dbf9e408c58598bc32f4a8c65f4b86ab560864cb3ee60adb/cairosvg-2.8.2-py3-none-any.whl", hash = "sha256:eab46dad4674f33267a671dce39b64be245911c901c70d65d2b7b0821e852bf5", size = 45773, upload-time = "2025-05-15T06:56:28.552Z" }, ] [[package]] name = "certifi" version = "2026.1.4" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/e0/2d/a891ca51311197f6ad14a7ef42e2399f36cf2f9bd44752b3dc4eab60fdc5/certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120", size = 154268, upload-time = "2026-01-04T02:42:41.825Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c", size = 152900, upload-time = "2026-01-04T02:42:40.15Z" }, ] [[package]] name = "cffi" version = "2.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pycparser", marker = "implementation_name != 'PyPy'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/93/d7/516d984057745a6cd96575eea814fe1edd6646ee6efd552fb7b0921dec83/cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44", size = 184283, upload-time = "2025-09-08T23:22:08.01Z" }, { url = "https://files.pythonhosted.org/packages/9e/84/ad6a0b408daa859246f57c03efd28e5dd1b33c21737c2db84cae8c237aa5/cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49", size = 180504, upload-time = "2025-09-08T23:22:10.637Z" }, { url = "https://files.pythonhosted.org/packages/50/bd/b1a6362b80628111e6653c961f987faa55262b4002fcec42308cad1db680/cffi-2.0.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c", size = 208811, upload-time = "2025-09-08T23:22:12.267Z" }, { url = "https://files.pythonhosted.org/packages/4f/27/6933a8b2562d7bd1fb595074cf99cc81fc3789f6a6c05cdabb46284a3188/cffi-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb", size = 216402, upload-time = "2025-09-08T23:22:13.455Z" }, { url = "https://files.pythonhosted.org/packages/05/eb/b86f2a2645b62adcfff53b0dd97e8dfafb5c8aa864bd0d9a2c2049a0d551/cffi-2.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0", size = 203217, upload-time = "2025-09-08T23:22:14.596Z" }, { url = "https://files.pythonhosted.org/packages/9f/e0/6cbe77a53acf5acc7c08cc186c9928864bd7c005f9efd0d126884858a5fe/cffi-2.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4", size = 203079, upload-time = "2025-09-08T23:22:15.769Z" }, { url = "https://files.pythonhosted.org/packages/98/29/9b366e70e243eb3d14a5cb488dfd3a0b6b2f1fb001a203f653b93ccfac88/cffi-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453", size = 216475, upload-time = "2025-09-08T23:22:17.427Z" }, { url = "https://files.pythonhosted.org/packages/21/7a/13b24e70d2f90a322f2900c5d8e1f14fa7e2a6b3332b7309ba7b2ba51a5a/cffi-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495", size = 218829, upload-time = "2025-09-08T23:22:19.069Z" }, { url = "https://files.pythonhosted.org/packages/60/99/c9dc110974c59cc981b1f5b66e1d8af8af764e00f0293266824d9c4254bc/cffi-2.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5", size = 211211, upload-time = "2025-09-08T23:22:20.588Z" }, { url = "https://files.pythonhosted.org/packages/49/72/ff2d12dbf21aca1b32a40ed792ee6b40f6dc3a9cf1644bd7ef6e95e0ac5e/cffi-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb", size = 218036, upload-time = "2025-09-08T23:22:22.143Z" }, { url = "https://files.pythonhosted.org/packages/e2/cc/027d7fb82e58c48ea717149b03bcadcbdc293553edb283af792bd4bcbb3f/cffi-2.0.0-cp310-cp310-win32.whl", hash = "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a", size = 172184, upload-time = "2025-09-08T23:22:23.328Z" }, { url = "https://files.pythonhosted.org/packages/33/fa/072dd15ae27fbb4e06b437eb6e944e75b068deb09e2a2826039e49ee2045/cffi-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739", size = 182790, upload-time = "2025-09-08T23:22:24.752Z" }, { url = "https://files.pythonhosted.org/packages/12/4a/3dfd5f7850cbf0d06dc84ba9aa00db766b52ca38d8b86e3a38314d52498c/cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe", size = 184344, upload-time = "2025-09-08T23:22:26.456Z" }, { url = "https://files.pythonhosted.org/packages/4f/8b/f0e4c441227ba756aafbe78f117485b25bb26b1c059d01f137fa6d14896b/cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c", size = 180560, upload-time = "2025-09-08T23:22:28.197Z" }, { url = "https://files.pythonhosted.org/packages/b1/b7/1200d354378ef52ec227395d95c2576330fd22a869f7a70e88e1447eb234/cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92", size = 209613, upload-time = "2025-09-08T23:22:29.475Z" }, { url = "https://files.pythonhosted.org/packages/b8/56/6033f5e86e8cc9bb629f0077ba71679508bdf54a9a5e112a3c0b91870332/cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93", size = 216476, upload-time = "2025-09-08T23:22:31.063Z" }, { url = "https://files.pythonhosted.org/packages/dc/7f/55fecd70f7ece178db2f26128ec41430d8720f2d12ca97bf8f0a628207d5/cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5", size = 203374, upload-time = "2025-09-08T23:22:32.507Z" }, { url = "https://files.pythonhosted.org/packages/84/ef/a7b77c8bdc0f77adc3b46888f1ad54be8f3b7821697a7b89126e829e676a/cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664", size = 202597, upload-time = "2025-09-08T23:22:34.132Z" }, { url = "https://files.pythonhosted.org/packages/d7/91/500d892b2bf36529a75b77958edfcd5ad8e2ce4064ce2ecfeab2125d72d1/cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26", size = 215574, upload-time = "2025-09-08T23:22:35.443Z" }, { url = "https://files.pythonhosted.org/packages/44/64/58f6255b62b101093d5df22dcb752596066c7e89dd725e0afaed242a61be/cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9", size = 218971, upload-time = "2025-09-08T23:22:36.805Z" }, { url = "https://files.pythonhosted.org/packages/ab/49/fa72cebe2fd8a55fbe14956f9970fe8eb1ac59e5df042f603ef7c8ba0adc/cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414", size = 211972, upload-time = "2025-09-08T23:22:38.436Z" }, { url = "https://files.pythonhosted.org/packages/0b/28/dd0967a76aab36731b6ebfe64dec4e981aff7e0608f60c2d46b46982607d/cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743", size = 217078, upload-time = "2025-09-08T23:22:39.776Z" }, { url = "https://files.pythonhosted.org/packages/2b/c0/015b25184413d7ab0a410775fdb4a50fca20f5589b5dab1dbbfa3baad8ce/cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5", size = 172076, upload-time = "2025-09-08T23:22:40.95Z" }, { url = "https://files.pythonhosted.org/packages/ae/8f/dc5531155e7070361eb1b7e4c1a9d896d0cb21c49f807a6c03fd63fc877e/cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5", size = 182820, upload-time = "2025-09-08T23:22:42.463Z" }, { url = "https://files.pythonhosted.org/packages/95/5c/1b493356429f9aecfd56bc171285a4c4ac8697f76e9bbbbb105e537853a1/cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d", size = 177635, upload-time = "2025-09-08T23:22:43.623Z" }, { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload-time = "2025-09-08T23:22:44.795Z" }, { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload-time = "2025-09-08T23:22:45.938Z" }, { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload-time = "2025-09-08T23:22:47.349Z" }, { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload-time = "2025-09-08T23:22:48.677Z" }, { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload-time = "2025-09-08T23:22:50.06Z" }, { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload-time = "2025-09-08T23:22:51.364Z" }, { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload-time = "2025-09-08T23:22:52.902Z" }, { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload-time = "2025-09-08T23:22:54.518Z" }, { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload-time = "2025-09-08T23:22:55.867Z" }, { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932, upload-time = "2025-09-08T23:22:57.188Z" }, { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557, upload-time = "2025-09-08T23:22:58.351Z" }, { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762, upload-time = "2025-09-08T23:22:59.668Z" }, { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" }, { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" }, { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" }, { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload-time = "2025-09-08T23:23:18.087Z" }, { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload-time = "2025-09-08T23:23:19.622Z" }, { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" }, { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" }, { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" }, { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" }, { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" }, { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" }, { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" }, { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" }, { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" }, { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload-time = "2025-09-08T23:23:29.347Z" }, { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload-time = "2025-09-08T23:23:30.63Z" }, { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" }, { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" }, { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" }, { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" }, { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" }, { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" }, { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" }, { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" }, { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" }, ] [[package]] name = "cfgv" version = "3.5.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/4e/b5/721b8799b04bf9afe054a3899c6cf4e880fcf8563cc71c15610242490a0c/cfgv-3.5.0.tar.gz", hash = "sha256:d5b1034354820651caa73ede66a6294d6e95c1b00acc5e9b098e917404669132", size = 7334, upload-time = "2025-11-19T20:55:51.612Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/db/3c/33bac158f8ab7f89b2e59426d5fe2e4f63f7ed25df84c036890172b412b5/cfgv-3.5.0-py2.py3-none-any.whl", hash = "sha256:a8dc6b26ad22ff227d2634a65cb388215ce6cc96bbcc5cfde7641ae87e8dacc0", size = 7445, upload-time = "2025-11-19T20:55:50.744Z" }, ] [[package]] name = "charset-normalizer" version = "3.4.4" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/13/69/33ddede1939fdd074bce5434295f38fae7136463422fe4fd3e0e89b98062/charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", size = 129418, upload-time = "2025-10-14T04:42:32.879Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/1f/b8/6d51fc1d52cbd52cd4ccedd5b5b2f0f6a11bbf6765c782298b0f3e808541/charset_normalizer-3.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d", size = 209709, upload-time = "2025-10-14T04:40:11.385Z" }, { url = "https://files.pythonhosted.org/packages/5c/af/1f9d7f7faafe2ddfb6f72a2e07a548a629c61ad510fe60f9630309908fef/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8", size = 148814, upload-time = "2025-10-14T04:40:13.135Z" }, { url = "https://files.pythonhosted.org/packages/79/3d/f2e3ac2bbc056ca0c204298ea4e3d9db9b4afe437812638759db2c976b5f/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad", size = 144467, upload-time = "2025-10-14T04:40:14.728Z" }, { url = "https://files.pythonhosted.org/packages/ec/85/1bf997003815e60d57de7bd972c57dc6950446a3e4ccac43bc3070721856/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8", size = 162280, upload-time = "2025-10-14T04:40:16.14Z" }, { url = "https://files.pythonhosted.org/packages/3e/8e/6aa1952f56b192f54921c436b87f2aaf7c7a7c3d0d1a765547d64fd83c13/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d", size = 159454, upload-time = "2025-10-14T04:40:17.567Z" }, { url = "https://files.pythonhosted.org/packages/36/3b/60cbd1f8e93aa25d1c669c649b7a655b0b5fb4c571858910ea9332678558/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313", size = 153609, upload-time = "2025-10-14T04:40:19.08Z" }, { url = "https://files.pythonhosted.org/packages/64/91/6a13396948b8fd3c4b4fd5bc74d045f5637d78c9675585e8e9fbe5636554/charset_normalizer-3.4.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e", size = 151849, upload-time = "2025-10-14T04:40:20.607Z" }, { url = "https://files.pythonhosted.org/packages/b7/7a/59482e28b9981d105691e968c544cc0df3b7d6133152fb3dcdc8f135da7a/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93", size = 151586, upload-time = "2025-10-14T04:40:21.719Z" }, { url = "https://files.pythonhosted.org/packages/92/59/f64ef6a1c4bdd2baf892b04cd78792ed8684fbc48d4c2afe467d96b4df57/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0", size = 145290, upload-time = "2025-10-14T04:40:23.069Z" }, { url = "https://files.pythonhosted.org/packages/6b/63/3bf9f279ddfa641ffa1962b0db6a57a9c294361cc2f5fcac997049a00e9c/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84", size = 163663, upload-time = "2025-10-14T04:40:24.17Z" }, { url = "https://files.pythonhosted.org/packages/ed/09/c9e38fc8fa9e0849b172b581fd9803bdf6e694041127933934184e19f8c3/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e", size = 151964, upload-time = "2025-10-14T04:40:25.368Z" }, { url = "https://files.pythonhosted.org/packages/d2/d1/d28b747e512d0da79d8b6a1ac18b7ab2ecfd81b2944c4c710e166d8dd09c/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db", size = 161064, upload-time = "2025-10-14T04:40:26.806Z" }, { url = "https://files.pythonhosted.org/packages/bb/9a/31d62b611d901c3b9e5500c36aab0ff5eb442043fb3a1c254200d3d397d9/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6", size = 155015, upload-time = "2025-10-14T04:40:28.284Z" }, { url = "https://files.pythonhosted.org/packages/1f/f3/107e008fa2bff0c8b9319584174418e5e5285fef32f79d8ee6a430d0039c/charset_normalizer-3.4.4-cp310-cp310-win32.whl", hash = "sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f", size = 99792, upload-time = "2025-10-14T04:40:29.613Z" }, { url = "https://files.pythonhosted.org/packages/eb/66/e396e8a408843337d7315bab30dbf106c38966f1819f123257f5520f8a96/charset_normalizer-3.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d", size = 107198, upload-time = "2025-10-14T04:40:30.644Z" }, { url = "https://files.pythonhosted.org/packages/b5/58/01b4f815bf0312704c267f2ccb6e5d42bcc7752340cd487bc9f8c3710597/charset_normalizer-3.4.4-cp310-cp310-win_arm64.whl", hash = "sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69", size = 100262, upload-time = "2025-10-14T04:40:32.108Z" }, { url = "https://files.pythonhosted.org/packages/ed/27/c6491ff4954e58a10f69ad90aca8a1b6fe9c5d3c6f380907af3c37435b59/charset_normalizer-3.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8", size = 206988, upload-time = "2025-10-14T04:40:33.79Z" }, { url = "https://files.pythonhosted.org/packages/94/59/2e87300fe67ab820b5428580a53cad894272dbb97f38a7a814a2a1ac1011/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0", size = 147324, upload-time = "2025-10-14T04:40:34.961Z" }, { url = "https://files.pythonhosted.org/packages/07/fb/0cf61dc84b2b088391830f6274cb57c82e4da8bbc2efeac8c025edb88772/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3", size = 142742, upload-time = "2025-10-14T04:40:36.105Z" }, { url = "https://files.pythonhosted.org/packages/62/8b/171935adf2312cd745d290ed93cf16cf0dfe320863ab7cbeeae1dcd6535f/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc", size = 160863, upload-time = "2025-10-14T04:40:37.188Z" }, { url = "https://files.pythonhosted.org/packages/09/73/ad875b192bda14f2173bfc1bc9a55e009808484a4b256748d931b6948442/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897", size = 157837, upload-time = "2025-10-14T04:40:38.435Z" }, { url = "https://files.pythonhosted.org/packages/6d/fc/de9cce525b2c5b94b47c70a4b4fb19f871b24995c728e957ee68ab1671ea/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381", size = 151550, upload-time = "2025-10-14T04:40:40.053Z" }, { url = "https://files.pythonhosted.org/packages/55/c2/43edd615fdfba8c6f2dfbd459b25a6b3b551f24ea21981e23fb768503ce1/charset_normalizer-3.4.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815", size = 149162, upload-time = "2025-10-14T04:40:41.163Z" }, { url = "https://files.pythonhosted.org/packages/03/86/bde4ad8b4d0e9429a4e82c1e8f5c659993a9a863ad62c7df05cf7b678d75/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0", size = 150019, upload-time = "2025-10-14T04:40:42.276Z" }, { url = "https://files.pythonhosted.org/packages/1f/86/a151eb2af293a7e7bac3a739b81072585ce36ccfb4493039f49f1d3cae8c/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161", size = 143310, upload-time = "2025-10-14T04:40:43.439Z" }, { url = "https://files.pythonhosted.org/packages/b5/fe/43dae6144a7e07b87478fdfc4dbe9efd5defb0e7ec29f5f58a55aeef7bf7/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4", size = 162022, upload-time = "2025-10-14T04:40:44.547Z" }, { url = "https://files.pythonhosted.org/packages/80/e6/7aab83774f5d2bca81f42ac58d04caf44f0cc2b65fc6db2b3b2e8a05f3b3/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89", size = 149383, upload-time = "2025-10-14T04:40:46.018Z" }, { url = "https://files.pythonhosted.org/packages/4f/e8/b289173b4edae05c0dde07f69f8db476a0b511eac556dfe0d6bda3c43384/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569", size = 159098, upload-time = "2025-10-14T04:40:47.081Z" }, { url = "https://files.pythonhosted.org/packages/d8/df/fe699727754cae3f8478493c7f45f777b17c3ef0600e28abfec8619eb49c/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224", size = 152991, upload-time = "2025-10-14T04:40:48.246Z" }, { url = "https://files.pythonhosted.org/packages/1a/86/584869fe4ddb6ffa3bd9f491b87a01568797fb9bd8933f557dba9771beaf/charset_normalizer-3.4.4-cp311-cp311-win32.whl", hash = "sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a", size = 99456, upload-time = "2025-10-14T04:40:49.376Z" }, { url = "https://files.pythonhosted.org/packages/65/f6/62fdd5feb60530f50f7e38b4f6a1d5203f4d16ff4f9f0952962c044e919a/charset_normalizer-3.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016", size = 106978, upload-time = "2025-10-14T04:40:50.844Z" }, { url = "https://files.pythonhosted.org/packages/7a/9d/0710916e6c82948b3be62d9d398cb4fcf4e97b56d6a6aeccd66c4b2f2bd5/charset_normalizer-3.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1", size = 99969, upload-time = "2025-10-14T04:40:52.272Z" }, { url = "https://files.pythonhosted.org/packages/f3/85/1637cd4af66fa687396e757dec650f28025f2a2f5a5531a3208dc0ec43f2/charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394", size = 208425, upload-time = "2025-10-14T04:40:53.353Z" }, { url = "https://files.pythonhosted.org/packages/9d/6a/04130023fef2a0d9c62d0bae2649b69f7b7d8d24ea5536feef50551029df/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25", size = 148162, upload-time = "2025-10-14T04:40:54.558Z" }, { url = "https://files.pythonhosted.org/packages/78/29/62328d79aa60da22c9e0b9a66539feae06ca0f5a4171ac4f7dc285b83688/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef", size = 144558, upload-time = "2025-10-14T04:40:55.677Z" }, { url = "https://files.pythonhosted.org/packages/86/bb/b32194a4bf15b88403537c2e120b817c61cd4ecffa9b6876e941c3ee38fe/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d", size = 161497, upload-time = "2025-10-14T04:40:57.217Z" }, { url = "https://files.pythonhosted.org/packages/19/89/a54c82b253d5b9b111dc74aca196ba5ccfcca8242d0fb64146d4d3183ff1/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8", size = 159240, upload-time = "2025-10-14T04:40:58.358Z" }, { url = "https://files.pythonhosted.org/packages/c0/10/d20b513afe03acc89ec33948320a5544d31f21b05368436d580dec4e234d/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86", size = 153471, upload-time = "2025-10-14T04:40:59.468Z" }, { url = "https://files.pythonhosted.org/packages/61/fa/fbf177b55bdd727010f9c0a3c49eefa1d10f960e5f09d1d887bf93c2e698/charset_normalizer-3.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a", size = 150864, upload-time = "2025-10-14T04:41:00.623Z" }, { url = "https://files.pythonhosted.org/packages/05/12/9fbc6a4d39c0198adeebbde20b619790e9236557ca59fc40e0e3cebe6f40/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f", size = 150647, upload-time = "2025-10-14T04:41:01.754Z" }, { url = "https://files.pythonhosted.org/packages/ad/1f/6a9a593d52e3e8c5d2b167daf8c6b968808efb57ef4c210acb907c365bc4/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc", size = 145110, upload-time = "2025-10-14T04:41:03.231Z" }, { url = "https://files.pythonhosted.org/packages/30/42/9a52c609e72471b0fc54386dc63c3781a387bb4fe61c20231a4ebcd58bdd/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf", size = 162839, upload-time = "2025-10-14T04:41:04.715Z" }, { url = "https://files.pythonhosted.org/packages/c4/5b/c0682bbf9f11597073052628ddd38344a3d673fda35a36773f7d19344b23/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15", size = 150667, upload-time = "2025-10-14T04:41:05.827Z" }, { url = "https://files.pythonhosted.org/packages/e4/24/a41afeab6f990cf2daf6cb8c67419b63b48cf518e4f56022230840c9bfb2/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9", size = 160535, upload-time = "2025-10-14T04:41:06.938Z" }, { url = "https://files.pythonhosted.org/packages/2a/e5/6a4ce77ed243c4a50a1fecca6aaaab419628c818a49434be428fe24c9957/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0", size = 154816, upload-time = "2025-10-14T04:41:08.101Z" }, { url = "https://files.pythonhosted.org/packages/a8/ef/89297262b8092b312d29cdb2517cb1237e51db8ecef2e9af5edbe7b683b1/charset_normalizer-3.4.4-cp312-cp312-win32.whl", hash = "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26", size = 99694, upload-time = "2025-10-14T04:41:09.23Z" }, { url = "https://files.pythonhosted.org/packages/3d/2d/1e5ed9dd3b3803994c155cd9aacb60c82c331bad84daf75bcb9c91b3295e/charset_normalizer-3.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525", size = 107131, upload-time = "2025-10-14T04:41:10.467Z" }, { url = "https://files.pythonhosted.org/packages/d0/d9/0ed4c7098a861482a7b6a95603edce4c0d9db2311af23da1fb2b75ec26fc/charset_normalizer-3.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3", size = 100390, upload-time = "2025-10-14T04:41:11.915Z" }, { url = "https://files.pythonhosted.org/packages/97/45/4b3a1239bbacd321068ea6e7ac28875b03ab8bc0aa0966452db17cd36714/charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794", size = 208091, upload-time = "2025-10-14T04:41:13.346Z" }, { url = "https://files.pythonhosted.org/packages/7d/62/73a6d7450829655a35bb88a88fca7d736f9882a27eacdca2c6d505b57e2e/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed", size = 147936, upload-time = "2025-10-14T04:41:14.461Z" }, { url = "https://files.pythonhosted.org/packages/89/c5/adb8c8b3d6625bef6d88b251bbb0d95f8205831b987631ab0c8bb5d937c2/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72", size = 144180, upload-time = "2025-10-14T04:41:15.588Z" }, { url = "https://files.pythonhosted.org/packages/91/ed/9706e4070682d1cc219050b6048bfd293ccf67b3d4f5a4f39207453d4b99/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328", size = 161346, upload-time = "2025-10-14T04:41:16.738Z" }, { url = "https://files.pythonhosted.org/packages/d5/0d/031f0d95e4972901a2f6f09ef055751805ff541511dc1252ba3ca1f80cf5/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede", size = 158874, upload-time = "2025-10-14T04:41:17.923Z" }, { url = "https://files.pythonhosted.org/packages/f5/83/6ab5883f57c9c801ce5e5677242328aa45592be8a00644310a008d04f922/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894", size = 153076, upload-time = "2025-10-14T04:41:19.106Z" }, { url = "https://files.pythonhosted.org/packages/75/1e/5ff781ddf5260e387d6419959ee89ef13878229732732ee73cdae01800f2/charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1", size = 150601, upload-time = "2025-10-14T04:41:20.245Z" }, { url = "https://files.pythonhosted.org/packages/d7/57/71be810965493d3510a6ca79b90c19e48696fb1ff964da319334b12677f0/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490", size = 150376, upload-time = "2025-10-14T04:41:21.398Z" }, { url = "https://files.pythonhosted.org/packages/e5/d5/c3d057a78c181d007014feb7e9f2e65905a6c4ef182c0ddf0de2924edd65/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44", size = 144825, upload-time = "2025-10-14T04:41:22.583Z" }, { url = "https://files.pythonhosted.org/packages/e6/8c/d0406294828d4976f275ffbe66f00266c4b3136b7506941d87c00cab5272/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133", size = 162583, upload-time = "2025-10-14T04:41:23.754Z" }, { url = "https://files.pythonhosted.org/packages/d7/24/e2aa1f18c8f15c4c0e932d9287b8609dd30ad56dbe41d926bd846e22fb8d/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3", size = 150366, upload-time = "2025-10-14T04:41:25.27Z" }, { url = "https://files.pythonhosted.org/packages/e4/5b/1e6160c7739aad1e2df054300cc618b06bf784a7a164b0f238360721ab86/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e", size = 160300, upload-time = "2025-10-14T04:41:26.725Z" }, { url = "https://files.pythonhosted.org/packages/7a/10/f882167cd207fbdd743e55534d5d9620e095089d176d55cb22d5322f2afd/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc", size = 154465, upload-time = "2025-10-14T04:41:28.322Z" }, { url = "https://files.pythonhosted.org/packages/89/66/c7a9e1b7429be72123441bfdbaf2bc13faab3f90b933f664db506dea5915/charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac", size = 99404, upload-time = "2025-10-14T04:41:29.95Z" }, { url = "https://files.pythonhosted.org/packages/c4/26/b9924fa27db384bdcd97ab83b4f0a8058d96ad9626ead570674d5e737d90/charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14", size = 107092, upload-time = "2025-10-14T04:41:31.188Z" }, { url = "https://files.pythonhosted.org/packages/af/8f/3ed4bfa0c0c72a7ca17f0380cd9e4dd842b09f664e780c13cff1dcf2ef1b/charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2", size = 100408, upload-time = "2025-10-14T04:41:32.624Z" }, { url = "https://files.pythonhosted.org/packages/2a/35/7051599bd493e62411d6ede36fd5af83a38f37c4767b92884df7301db25d/charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd", size = 207746, upload-time = "2025-10-14T04:41:33.773Z" }, { url = "https://files.pythonhosted.org/packages/10/9a/97c8d48ef10d6cd4fcead2415523221624bf58bcf68a802721a6bc807c8f/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb", size = 147889, upload-time = "2025-10-14T04:41:34.897Z" }, { url = "https://files.pythonhosted.org/packages/10/bf/979224a919a1b606c82bd2c5fa49b5c6d5727aa47b4312bb27b1734f53cd/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e", size = 143641, upload-time = "2025-10-14T04:41:36.116Z" }, { url = "https://files.pythonhosted.org/packages/ba/33/0ad65587441fc730dc7bd90e9716b30b4702dc7b617e6ba4997dc8651495/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14", size = 160779, upload-time = "2025-10-14T04:41:37.229Z" }, { url = "https://files.pythonhosted.org/packages/67/ed/331d6b249259ee71ddea93f6f2f0a56cfebd46938bde6fcc6f7b9a3d0e09/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191", size = 159035, upload-time = "2025-10-14T04:41:38.368Z" }, { url = "https://files.pythonhosted.org/packages/67/ff/f6b948ca32e4f2a4576aa129d8bed61f2e0543bf9f5f2b7fc3758ed005c9/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838", size = 152542, upload-time = "2025-10-14T04:41:39.862Z" }, { url = "https://files.pythonhosted.org/packages/16/85/276033dcbcc369eb176594de22728541a925b2632f9716428c851b149e83/charset_normalizer-3.4.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6", size = 149524, upload-time = "2025-10-14T04:41:41.319Z" }, { url = "https://files.pythonhosted.org/packages/9e/f2/6a2a1f722b6aba37050e626530a46a68f74e63683947a8acff92569f979a/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e", size = 150395, upload-time = "2025-10-14T04:41:42.539Z" }, { url = "https://files.pythonhosted.org/packages/60/bb/2186cb2f2bbaea6338cad15ce23a67f9b0672929744381e28b0592676824/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c", size = 143680, upload-time = "2025-10-14T04:41:43.661Z" }, { url = "https://files.pythonhosted.org/packages/7d/a5/bf6f13b772fbb2a90360eb620d52ed8f796f3c5caee8398c3b2eb7b1c60d/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090", size = 162045, upload-time = "2025-10-14T04:41:44.821Z" }, { url = "https://files.pythonhosted.org/packages/df/c5/d1be898bf0dc3ef9030c3825e5d3b83f2c528d207d246cbabe245966808d/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152", size = 149687, upload-time = "2025-10-14T04:41:46.442Z" }, { url = "https://files.pythonhosted.org/packages/a5/42/90c1f7b9341eef50c8a1cb3f098ac43b0508413f33affd762855f67a410e/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828", size = 160014, upload-time = "2025-10-14T04:41:47.631Z" }, { url = "https://files.pythonhosted.org/packages/76/be/4d3ee471e8145d12795ab655ece37baed0929462a86e72372fd25859047c/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec", size = 154044, upload-time = "2025-10-14T04:41:48.81Z" }, { url = "https://files.pythonhosted.org/packages/b0/6f/8f7af07237c34a1defe7defc565a9bc1807762f672c0fde711a4b22bf9c0/charset_normalizer-3.4.4-cp314-cp314-win32.whl", hash = "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9", size = 99940, upload-time = "2025-10-14T04:41:49.946Z" }, { url = "https://files.pythonhosted.org/packages/4b/51/8ade005e5ca5b0d80fb4aff72a3775b325bdc3d27408c8113811a7cbe640/charset_normalizer-3.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c", size = 107104, upload-time = "2025-10-14T04:41:51.051Z" }, { url = "https://files.pythonhosted.org/packages/da/5f/6b8f83a55bb8278772c5ae54a577f3099025f9ade59d0136ac24a0df4bde/charset_normalizer-3.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2", size = 100743, upload-time = "2025-10-14T04:41:52.122Z" }, { url = "https://files.pythonhosted.org/packages/0a/4c/925909008ed5a988ccbb72dcc897407e5d6d3bd72410d69e051fc0c14647/charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", size = 53402, upload-time = "2025-10-14T04:42:31.76Z" }, ] [[package]] name = "click" version = "8.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" }, ] [[package]] name = "cmarkgfm" version = "2025.10.22" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, ] sdist = { url = "https://files.pythonhosted.org/packages/8f/0c/5010c87ceba51854dad42f45a3d28a3c67e81a21cfed8b20c34688aaa1b6/cmarkgfm-2025.10.22.tar.gz", hash = "sha256:5bec61007b65b919488442c838c58a6c8bf4741f5103c593b2ef180d39818eda", size = 146727, upload-time = "2025-10-22T23:13:22.639Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/32/63/b1d9e23ecdc03f55a2178147cd44e2768c64a8039c055cb87a2a902fb383/cmarkgfm-2025.10.22-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37e0b126a3868e1497f8e10c11a49b007f6f4b3104032d3a51bb84404c0f4486", size = 124568, upload-time = "2025-10-22T22:26:10.48Z" }, { url = "https://files.pythonhosted.org/packages/26/f3/48bd73c354af608a6a9437f05f88a80d47fd4ba02c8bea6e4ab7d4076c6a/cmarkgfm-2025.10.22-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1214acf1ef779b129e13a1a51e446425feaed64fd11124f44f78c93021bba853", size = 446066, upload-time = "2025-10-22T23:13:25.787Z" }, { url = "https://files.pythonhosted.org/packages/48/47/6167a6d346a38066f861f3390d91e6e1eaacd6b19ab7bc02a4a2781a2ff2/cmarkgfm-2025.10.22-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:df2e8e1140e811d952c9eabc9471517f9193438e5eb17a9530f9559cbf216492", size = 449115, upload-time = "2025-10-22T23:13:27.228Z" }, { url = "https://files.pythonhosted.org/packages/18/9e/7f65aca3accb5716c862dd69ad6c9a0a9c9b010b3b4467cb7d897c4fa588/cmarkgfm-2025.10.22-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:30e8a48bc36e1e06e6938952e3d69e4c2a73cf2dcee1071942a7c036df1982ff", size = 441850, upload-time = "2025-10-22T23:13:28.585Z" }, { url = "https://files.pythonhosted.org/packages/ba/dd/c4032fe9c384ffc0e345e6ba26cd5133635e563a07a4e928ebc11eaccf6d/cmarkgfm-2025.10.22-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8d7ab8333f9cca9d4894d668ab06b19a97a30734d19c2e53ed83e33fe16d1891", size = 447711, upload-time = "2025-10-22T23:13:30.057Z" }, { url = "https://files.pythonhosted.org/packages/67/79/071c265f7b3afb29c5a637add46628fd8694fdba58bf5ad2fa2d1f70ea89/cmarkgfm-2025.10.22-cp310-cp310-win32.whl", hash = "sha256:451da49653abcde96d4671824c37acc900f6d01f69687ebeb0bd59ebf99738e0", size = 116509, upload-time = "2025-10-22T22:34:45.834Z" }, { url = "https://files.pythonhosted.org/packages/46/6a/08d88a53d8a4aaa9b172d38692d55863a4e19c573b8ee96f51e7cbea85cb/cmarkgfm-2025.10.22-cp310-cp310-win_amd64.whl", hash = "sha256:a815dab1d0f2e7af95613b26101143eb44dc92a3b44449096fa97ed54add822e", size = 127293, upload-time = "2025-10-22T22:34:47.574Z" }, { url = "https://files.pythonhosted.org/packages/1c/f2/c39553bc81b6d1bd694580b682a243274e1c54596a1ef7c4d3d73e344f3f/cmarkgfm-2025.10.22-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:18aba514abb3eedc04c3df7dd5a7743a92d7f313a04a3f7e17a059befce6fd5f", size = 124568, upload-time = "2025-10-22T22:26:11.757Z" }, { url = "https://files.pythonhosted.org/packages/46/db/8d00199e3421ecb0d01d0862e67f83a5bdcb2aabe26da8b7df0272df070b/cmarkgfm-2025.10.22-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3da228e10238411fc6823e2d4db4d514ca41d93629a6f8be751325a5477288b9", size = 446056, upload-time = "2025-10-22T23:13:31.648Z" }, { url = "https://files.pythonhosted.org/packages/b9/19/72241f8f46feb14ce465ffb9246e8fd741e378ed23c487d5532e67f7d768/cmarkgfm-2025.10.22-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:76e1cd82deb79d0d6c1a0a9822116c277c1f7c43496cd151c340999ac4721dec", size = 449123, upload-time = "2025-10-22T23:13:33.053Z" }, { url = "https://files.pythonhosted.org/packages/c4/5c/5cf4733d9eeade65b5a74ef3ed7ff518ef305a684bde7b3e59262ca6974c/cmarkgfm-2025.10.22-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:87fd3616505159090b031a9601b2a24ebb2ee999abc562d924b99711fc6bb498", size = 441840, upload-time = "2025-10-22T23:13:34.242Z" }, { url = "https://files.pythonhosted.org/packages/ba/bf/3a09943ab4769bc89c17eb8f229d543283087e5150de52efcbefec5227e3/cmarkgfm-2025.10.22-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f848d9698023ac9e352d73d92ab58119cb1268b12c3100578cf2d1ca1aeab2bf", size = 447704, upload-time = "2025-10-22T23:13:35.606Z" }, { url = "https://files.pythonhosted.org/packages/b3/3b/76dc0b6e7521c02d67d28c05ee0cda3b90ab06da574d404f7706d105f26e/cmarkgfm-2025.10.22-cp311-cp311-win32.whl", hash = "sha256:93f34a753939b034a478a36687c6fef9010023e2cbe451b0ec83205e34252419", size = 116509, upload-time = "2025-10-22T22:34:48.724Z" }, { url = "https://files.pythonhosted.org/packages/00/d9/118b0ce17316789aef6c81af99a08d3425c2fb8b0698ff394b701450bc8a/cmarkgfm-2025.10.22-cp311-cp311-win_amd64.whl", hash = "sha256:43cb1e912675dd91fba97db47f8de7c19c0b3cf6456d188ff584c120bcaa12b9", size = 127295, upload-time = "2025-10-22T22:34:49.603Z" }, { url = "https://files.pythonhosted.org/packages/b8/e2/72098f7fccd3e7761a07b3f2be426fb2ee8cab21dd8e5215bed5fe6ec0a2/cmarkgfm-2025.10.22-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:74a22cf245b32a918325a2895a9a3f6e737f0b10368b39e9a99d9e76fda4a78a", size = 124616, upload-time = "2025-10-22T22:26:12.911Z" }, { url = "https://files.pythonhosted.org/packages/8b/a7/b8f20e4012cb4ebd9862423d6eb90689adacd3aafaac261c3c52db328195/cmarkgfm-2025.10.22-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:68368a18b90e2dd795182c6fc34cee3180b2c8b380cad50c7fbd5563abff01b1", size = 446618, upload-time = "2025-10-22T23:13:36.811Z" }, { url = "https://files.pythonhosted.org/packages/15/9e/f547d80ccaa4c7b6cffbc4af1bda508c1ba2f50733d5528beff81df1dd42/cmarkgfm-2025.10.22-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:115fd0feaf93806b3a7c980615649b3c76a49c9dd89d5ea0c6240e10c6c71cee", size = 449859, upload-time = "2025-10-22T23:13:38.23Z" }, { url = "https://files.pythonhosted.org/packages/16/2a/b8d9897db40e4575bc2caff7d6d7c2c99f0c06177e3e3e5e798cf490611f/cmarkgfm-2025.10.22-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:69ccb4afa039f5b81d35de95fe935405577e115f367dda534309d66a455db5cb", size = 442251, upload-time = "2025-10-22T23:13:39.272Z" }, { url = "https://files.pythonhosted.org/packages/dc/71/d99e03fb8176392525f1ce9ceba67f8b111524e8c1477dea69cbdcb9ae22/cmarkgfm-2025.10.22-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9bed95895226cba280a96543f49d46b469b9e42528b119f280f9852cd4fc7749", size = 448305, upload-time = "2025-10-22T23:13:40.311Z" }, { url = "https://files.pythonhosted.org/packages/31/26/29db64e5cf6937b2bad8a4a0fe31459dbf9250ce225bbe1c891328ba0457/cmarkgfm-2025.10.22-cp312-cp312-win32.whl", hash = "sha256:fdf0a4689fb6febcbcaf675f2011a8074b100a4fc323f5754f627183ce492694", size = 116527, upload-time = "2025-10-22T22:34:50.768Z" }, { url = "https://files.pythonhosted.org/packages/42/31/e1356399d49f2a9e255b98a406c03a8c78848d3a4b41fe300d6c6a749276/cmarkgfm-2025.10.22-cp312-cp312-win_amd64.whl", hash = "sha256:fc14ae28769b501f61a7364a1188c827dfcf839213f02d0159801bb71c8ae989", size = 127292, upload-time = "2025-10-22T22:34:51.954Z" }, { url = "https://files.pythonhosted.org/packages/e0/6b/5da9daa0fa3d6b41f1fc1755151d459625a1376e2d968aa3b3bd42589e93/cmarkgfm-2025.10.22-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d8030955c836827b95f46f8fc520a58ab2a03fb23d4b56e2d976618099273298", size = 124618, upload-time = "2025-10-22T22:26:14.002Z" }, { url = "https://files.pythonhosted.org/packages/ed/78/896e022b155b663b6129830a2b17b4907661e94f03e4ca8d64a895d686ed/cmarkgfm-2025.10.22-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:862b7f15ecf040fe9cd82f3be208286daddc5af94e1a20091af8451a0fe5fe74", size = 446642, upload-time = "2025-10-22T23:13:41.508Z" }, { url = "https://files.pythonhosted.org/packages/00/8c/c728c4129a285bd5fb10225e69089f96313e5b0529fc423514625fed9e1f/cmarkgfm-2025.10.22-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:77840ddd24152881c2d374eae5e1baca462d24c2d78a937b6f30a12c2685cc0c", size = 449859, upload-time = "2025-10-22T23:13:43.024Z" }, { url = "https://files.pythonhosted.org/packages/c3/ff/e8a7b4382c2caac800a0a15ccb58eee8608a1b83f8222cdf2974d06736ab/cmarkgfm-2025.10.22-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ba7693b9a4c30b2ae2d07d10c4bd3fd01dfaaaaa67c93784923b792dd10bb037", size = 442239, upload-time = "2025-10-22T23:13:44.458Z" }, { url = "https://files.pythonhosted.org/packages/58/34/7e67d73b5c243e1e9d376f0eb22cdba32f912a98d70ea63fe645df3f149b/cmarkgfm-2025.10.22-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:03435c2f57ed49be0e83b2743af5dced98c1287fb9ae41a12b8055cff984bf58", size = 448306, upload-time = "2025-10-22T23:13:45.977Z" }, { url = "https://files.pythonhosted.org/packages/99/1f/4441ea20cc5ee2f8e417a5920184c5ff293073c569ab50efce6187f32d96/cmarkgfm-2025.10.22-cp313-cp313-win32.whl", hash = "sha256:aee2bf397cdf133025a2e66c6281e4fb6bd70420e3734b6dcf787ea9c2aadd78", size = 116531, upload-time = "2025-10-22T22:34:52.827Z" }, { url = "https://files.pythonhosted.org/packages/74/c3/75407cc385a5b6e93b3493c7862e21b72d55a2e8c6aec0028fba1ae241b7/cmarkgfm-2025.10.22-cp313-cp313-win_amd64.whl", hash = "sha256:f41b76d274c8886d0a440d6577cc0d73d0ea631c3bb07758adce74ba6911d790", size = 127290, upload-time = "2025-10-22T22:34:54.079Z" }, { url = "https://files.pythonhosted.org/packages/a0/4d/e188bc3739d4ba469989a265fc67efb6f3a1e8bb5a892644122d9f443196/cmarkgfm-2025.10.22-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:974eb8a69d6835eeaf11cb8f7ed0ad4cb4ddda9223693ad02aeb56cb0c036afb", size = 124591, upload-time = "2025-10-22T22:26:15.08Z" }, { url = "https://files.pythonhosted.org/packages/48/21/4880cc0ef701aa70ecedf879f0937df996457d82401ccb1739c0c59368fd/cmarkgfm-2025.10.22-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a591b213ab226232dee0b6ac8873560f01bd8cf423310bd8ce3f1c7cf913fd1f", size = 446538, upload-time = "2025-10-22T23:13:47.023Z" }, { url = "https://files.pythonhosted.org/packages/7c/b7/be78b936cf02a5a4479e6727c6d69633fd87efda93b6a2d8dcf69d231b46/cmarkgfm-2025.10.22-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:54070905b888d0d4590e03f60c5153dd456f2297ff5ff9fc43ba6d561f2eff72", size = 449842, upload-time = "2025-10-22T23:13:48.481Z" }, { url = "https://files.pythonhosted.org/packages/ff/bd/b666242d5ee74684dad1dd56088a3cf0a4680e17d3f81ef2188d0a59fb7f/cmarkgfm-2025.10.22-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:37eef93238957bb238669810e1e3fe835706f9cbb25362b5ae8bbd51e39af45f", size = 442180, upload-time = "2025-10-22T23:13:49.512Z" }, { url = "https://files.pythonhosted.org/packages/31/b9/f1ab6bc256d1b6738d3d07a6927ed1a922b8698d15c475c4009f43184209/cmarkgfm-2025.10.22-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a6ee1d36735abaed7af1c8459bfabe664c3f5472bf65a390f52d5e12626304b9", size = 448279, upload-time = "2025-10-22T23:13:51.004Z" }, { url = "https://files.pythonhosted.org/packages/eb/b8/cad4107732c68c7ae1ccd2674b3996f818ab9e2f3f8c65f8f44100bca4ef/cmarkgfm-2025.10.22-cp314-cp314-win32.whl", hash = "sha256:60e7745b429d5e3019380750b3cfaf10da4a5461ead3adf9c149251d8a6e1a3c", size = 121142, upload-time = "2025-10-22T22:34:54.923Z" }, { url = "https://files.pythonhosted.org/packages/f6/bf/3e4670bb9b6926b41d453b852244e4f7a858666fdda922b5e9fb5097839f/cmarkgfm-2025.10.22-cp314-cp314-win_amd64.whl", hash = "sha256:ee90cbccd9521aa51e8d619284bb7904c5b64387eef86cbad50717b8d943ce6d", size = 132015, upload-time = "2025-10-22T22:34:56.088Z" }, { url = "https://files.pythonhosted.org/packages/27/b1/15c3bbc97dcade85e947bbbf371c53a4d7e47d442a352007864b7cfdd82e/cmarkgfm-2025.10.22-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a8d39b0c2c1c58d81a1294ed99200cba1250ec217c079b36aff11ca6b2ca4881", size = 124835, upload-time = "2025-10-22T22:26:16.183Z" }, { url = "https://files.pythonhosted.org/packages/78/97/19eead1b69c3016a771c6290c69145d2a953ccd223fe9d2056cd7ada4f86/cmarkgfm-2025.10.22-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:481740a8ab020c4b8ee49746ea6ac45ec7b68b71740d12c696a64c30e26f6f49", size = 453069, upload-time = "2025-10-22T23:13:51.976Z" }, { url = "https://files.pythonhosted.org/packages/4e/61/078efedfb3d87791e4184dd30e7e771dd1d63c8f9211875492b8a8a0bab9/cmarkgfm-2025.10.22-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:367d1ab78f26af73b866a165358382c6e8e66d49da73621e832febeaeeb6400c", size = 456002, upload-time = "2025-10-22T23:13:53.357Z" }, { url = "https://files.pythonhosted.org/packages/fd/4e/635fdab0cb143fd93db6b8da7bcc23bb2fa26ccfe6d5e7cdbff33445d3e6/cmarkgfm-2025.10.22-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2176dc0e5e4966ca4746dcbd26324adbe17be86f48756f28438d157ae1f26520", size = 449302, upload-time = "2025-10-22T23:13:54.393Z" }, { url = "https://files.pythonhosted.org/packages/f0/2a/c697a739c30c3d5f31b021e706b5edaf82ce28599c56770e5f91c4e6fe66/cmarkgfm-2025.10.22-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c96d1238d91cf35e9c022af2e8c0be0a7ac227eb94497ffdf10584a684e38a3e", size = 453913, upload-time = "2025-10-22T23:13:55.573Z" }, { url = "https://files.pythonhosted.org/packages/b1/7a/39b705eff24bb25182ca11fd8788753e9ec94e605b9c27a4f01a9fd2b3e2/cmarkgfm-2025.10.22-cp314-cp314t-win32.whl", hash = "sha256:905a773bc866ccb4dc97a343057e2bfe07934522e1380831be413d3f93626f62", size = 121403, upload-time = "2025-10-22T22:34:57.24Z" }, { url = "https://files.pythonhosted.org/packages/bc/4b/9ad83c26fb8cff61cc03b55c301e3069cb340506ad3ee56e9ab26ce0ac75/cmarkgfm-2025.10.22-cp314-cp314t-win_amd64.whl", hash = "sha256:f2a04d119d09f7f5c8b565b1e8c691596bfbc59d8cabac4d7fa542a069c2c70f", size = 132298, upload-time = "2025-10-22T22:34:58.379Z" }, ] [[package]] name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] [[package]] name = "coverage" version = "7.13.4" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/24/56/95b7e30fa389756cb56630faa728da46a27b8c6eb46f9d557c68fff12b65/coverage-7.13.4.tar.gz", hash = "sha256:e5c8f6ed1e61a8b2dcdf31eb0b9bbf0130750ca79c1c49eb898e2ad86f5ccc91", size = 827239, upload-time = "2026-02-09T12:59:03.86Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/44/d4/7827d9ffa34d5d4d752eec907022aa417120936282fc488306f5da08c292/coverage-7.13.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0fc31c787a84f8cd6027eba44010517020e0d18487064cd3d8968941856d1415", size = 219152, upload-time = "2026-02-09T12:56:11.974Z" }, { url = "https://files.pythonhosted.org/packages/35/b0/d69df26607c64043292644dbb9dc54b0856fabaa2cbb1eeee3331cc9e280/coverage-7.13.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a32ebc02a1805adf637fc8dec324b5cdacd2e493515424f70ee33799573d661b", size = 219667, upload-time = "2026-02-09T12:56:13.33Z" }, { url = "https://files.pythonhosted.org/packages/82/a4/c1523f7c9e47b2271dbf8c2a097e7a1f89ef0d66f5840bb59b7e8814157b/coverage-7.13.4-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:e24f9156097ff9dc286f2f913df3a7f63c0e333dcafa3c196f2c18b4175ca09a", size = 246425, upload-time = "2026-02-09T12:56:14.552Z" }, { url = "https://files.pythonhosted.org/packages/f8/02/aa7ec01d1a5023c4b680ab7257f9bfde9defe8fdddfe40be096ac19e8177/coverage-7.13.4-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8041b6c5bfdc03257666e9881d33b1abc88daccaf73f7b6340fb7946655cd10f", size = 248229, upload-time = "2026-02-09T12:56:16.31Z" }, { url = "https://files.pythonhosted.org/packages/35/98/85aba0aed5126d896162087ef3f0e789a225697245256fc6181b95f47207/coverage-7.13.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2a09cfa6a5862bc2fc6ca7c3def5b2926194a56b8ab78ffcf617d28911123012", size = 250106, upload-time = "2026-02-09T12:56:18.024Z" }, { url = "https://files.pythonhosted.org/packages/96/72/1db59bd67494bc162e3e4cd5fbc7edba2c7026b22f7c8ef1496d58c2b94c/coverage-7.13.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:296f8b0af861d3970c2a4d8c91d48eb4dd4771bcef9baedec6a9b515d7de3def", size = 252021, upload-time = "2026-02-09T12:56:19.272Z" }, { url = "https://files.pythonhosted.org/packages/9d/97/72899c59c7066961de6e3daa142d459d47d104956db43e057e034f015c8a/coverage-7.13.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e101609bcbbfb04605ea1027b10dc3735c094d12d40826a60f897b98b1c30256", size = 247114, upload-time = "2026-02-09T12:56:21.051Z" }, { url = "https://files.pythonhosted.org/packages/39/1f/f1885573b5970235e908da4389176936c8933e86cb316b9620aab1585fa2/coverage-7.13.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:aa3feb8db2e87ff5e6d00d7e1480ae241876286691265657b500886c98f38bda", size = 248143, upload-time = "2026-02-09T12:56:22.585Z" }, { url = "https://files.pythonhosted.org/packages/a8/cf/e80390c5b7480b722fa3e994f8202807799b85bc562aa4f1dde209fbb7be/coverage-7.13.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:4fc7fa81bbaf5a02801b65346c8b3e657f1d93763e58c0abdf7c992addd81a92", size = 246152, upload-time = "2026-02-09T12:56:23.748Z" }, { url = "https://files.pythonhosted.org/packages/44/bf/f89a8350d85572f95412debb0fb9bb4795b1d5b5232bd652923c759e787b/coverage-7.13.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:33901f604424145c6e9c2398684b92e176c0b12df77d52db81c20abd48c3794c", size = 249959, upload-time = "2026-02-09T12:56:25.209Z" }, { url = "https://files.pythonhosted.org/packages/f7/6e/612a02aece8178c818df273e8d1642190c4875402ca2ba74514394b27aba/coverage-7.13.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:bb28c0f2cf2782508a40cec377935829d5fcc3ad9a3681375af4e84eb34b6b58", size = 246416, upload-time = "2026-02-09T12:56:26.475Z" }, { url = "https://files.pythonhosted.org/packages/cb/98/b5afc39af67c2fa6786b03c3a7091fc300947387ce8914b096db8a73d67a/coverage-7.13.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9d107aff57a83222ddbd8d9ee705ede2af2cc926608b57abed8ef96b50b7e8f9", size = 247025, upload-time = "2026-02-09T12:56:27.727Z" }, { url = "https://files.pythonhosted.org/packages/51/30/2bba8ef0682d5bd210c38fe497e12a06c9f8d663f7025e9f5c2c31ce847d/coverage-7.13.4-cp310-cp310-win32.whl", hash = "sha256:a6f94a7d00eb18f1b6d403c91a88fd58cfc92d4b16080dfdb774afc8294469bf", size = 221758, upload-time = "2026-02-09T12:56:29.051Z" }, { url = "https://files.pythonhosted.org/packages/78/13/331f94934cf6c092b8ea59ff868eb587bc8fe0893f02c55bc6c0183a192e/coverage-7.13.4-cp310-cp310-win_amd64.whl", hash = "sha256:2cb0f1e000ebc419632bbe04366a8990b6e32c4e0b51543a6484ffe15eaeda95", size = 222693, upload-time = "2026-02-09T12:56:30.366Z" }, { url = "https://files.pythonhosted.org/packages/b4/ad/b59e5b451cf7172b8d1043dc0fa718f23aab379bc1521ee13d4bd9bfa960/coverage-7.13.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d490ba50c3f35dd7c17953c68f3270e7ccd1c6642e2d2afe2d8e720b98f5a053", size = 219278, upload-time = "2026-02-09T12:56:31.673Z" }, { url = "https://files.pythonhosted.org/packages/f1/17/0cb7ca3de72e5f4ef2ec2fa0089beafbcaaaead1844e8b8a63d35173d77d/coverage-7.13.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:19bc3c88078789f8ef36acb014d7241961dbf883fd2533d18cb1e7a5b4e28b11", size = 219783, upload-time = "2026-02-09T12:56:33.104Z" }, { url = "https://files.pythonhosted.org/packages/ab/63/325d8e5b11e0eaf6d0f6a44fad444ae58820929a9b0de943fa377fe73e85/coverage-7.13.4-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3998e5a32e62fdf410c0dbd3115df86297995d6e3429af80b8798aad894ca7aa", size = 250200, upload-time = "2026-02-09T12:56:34.474Z" }, { url = "https://files.pythonhosted.org/packages/76/53/c16972708cbb79f2942922571a687c52bd109a7bd51175aeb7558dff2236/coverage-7.13.4-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8e264226ec98e01a8e1054314af91ee6cde0eacac4f465cc93b03dbe0bce2fd7", size = 252114, upload-time = "2026-02-09T12:56:35.749Z" }, { url = "https://files.pythonhosted.org/packages/eb/c2/7ab36d8b8cc412bec9ea2d07c83c48930eb4ba649634ba00cb7e4e0f9017/coverage-7.13.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a3aa4e7b9e416774b21797365b358a6e827ffadaaca81b69ee02946852449f00", size = 254220, upload-time = "2026-02-09T12:56:37.796Z" }, { url = "https://files.pythonhosted.org/packages/d6/4d/cf52c9a3322c89a0e6febdfbc83bb45c0ed3c64ad14081b9503adee702e7/coverage-7.13.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:71ca20079dd8f27fcf808817e281e90220475cd75115162218d0e27549f95fef", size = 256164, upload-time = "2026-02-09T12:56:39.016Z" }, { url = "https://files.pythonhosted.org/packages/78/e9/eb1dd17bd6de8289df3580e967e78294f352a5df8a57ff4671ee5fc3dcd0/coverage-7.13.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e2f25215f1a359ab17320b47bcdaca3e6e6356652e8256f2441e4ef972052903", size = 250325, upload-time = "2026-02-09T12:56:40.668Z" }, { url = "https://files.pythonhosted.org/packages/71/07/8c1542aa873728f72267c07278c5cc0ec91356daf974df21335ccdb46368/coverage-7.13.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d65b2d373032411e86960604dc4edac91fdfb5dca539461cf2cbe78327d1e64f", size = 251913, upload-time = "2026-02-09T12:56:41.97Z" }, { url = "https://files.pythonhosted.org/packages/74/d7/c62e2c5e4483a748e27868e4c32ad3daa9bdddbba58e1bc7a15e252baa74/coverage-7.13.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94eb63f9b363180aff17de3e7c8760c3ba94664ea2695c52f10111244d16a299", size = 249974, upload-time = "2026-02-09T12:56:43.323Z" }, { url = "https://files.pythonhosted.org/packages/98/9f/4c5c015a6e98ced54efd0f5cf8d31b88e5504ecb6857585fc0161bb1e600/coverage-7.13.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e856bf6616714c3a9fbc270ab54103f4e685ba236fa98c054e8f87f266c93505", size = 253741, upload-time = "2026-02-09T12:56:45.155Z" }, { url = "https://files.pythonhosted.org/packages/bd/59/0f4eef89b9f0fcd9633b5d350016f54126ab49426a70ff4c4e87446cabdc/coverage-7.13.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:65dfcbe305c3dfe658492df2d85259e0d79ead4177f9ae724b6fb245198f55d6", size = 249695, upload-time = "2026-02-09T12:56:46.636Z" }, { url = "https://files.pythonhosted.org/packages/b5/2c/b7476f938deb07166f3eb281a385c262675d688ff4659ad56c6c6b8e2e70/coverage-7.13.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b507778ae8a4c915436ed5c2e05b4a6cecfa70f734e19c22a005152a11c7b6a9", size = 250599, upload-time = "2026-02-09T12:56:48.13Z" }, { url = "https://files.pythonhosted.org/packages/b8/34/c3420709d9846ee3785b9f2831b4d94f276f38884032dca1457fa83f7476/coverage-7.13.4-cp311-cp311-win32.whl", hash = "sha256:784fc3cf8be001197b652d51d3fd259b1e2262888693a4636e18879f613a62a9", size = 221780, upload-time = "2026-02-09T12:56:50.479Z" }, { url = "https://files.pythonhosted.org/packages/61/08/3d9c8613079d2b11c185b865de9a4c1a68850cfda2b357fae365cf609f29/coverage-7.13.4-cp311-cp311-win_amd64.whl", hash = "sha256:2421d591f8ca05b308cf0092807308b2facbefe54af7c02ac22548b88b95c98f", size = 222715, upload-time = "2026-02-09T12:56:51.815Z" }, { url = "https://files.pythonhosted.org/packages/18/1a/54c3c80b2f056164cc0a6cdcb040733760c7c4be9d780fe655f356f433e4/coverage-7.13.4-cp311-cp311-win_arm64.whl", hash = "sha256:79e73a76b854d9c6088fe5d8b2ebe745f8681c55f7397c3c0a016192d681045f", size = 221385, upload-time = "2026-02-09T12:56:53.194Z" }, { url = "https://files.pythonhosted.org/packages/d1/81/4ce2fdd909c5a0ed1f6dedb88aa57ab79b6d1fbd9b588c1ac7ef45659566/coverage-7.13.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:02231499b08dabbe2b96612993e5fc34217cdae907a51b906ac7fca8027a4459", size = 219449, upload-time = "2026-02-09T12:56:54.889Z" }, { url = "https://files.pythonhosted.org/packages/5d/96/5238b1efc5922ddbdc9b0db9243152c09777804fb7c02ad1741eb18a11c0/coverage-7.13.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40aa8808140e55dc022b15d8aa7f651b6b3d68b365ea0398f1441e0b04d859c3", size = 219810, upload-time = "2026-02-09T12:56:56.33Z" }, { url = "https://files.pythonhosted.org/packages/78/72/2f372b726d433c9c35e56377cf1d513b4c16fe51841060d826b95caacec1/coverage-7.13.4-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5b856a8ccf749480024ff3bd7310adaef57bf31fd17e1bfc404b7940b6986634", size = 251308, upload-time = "2026-02-09T12:56:57.858Z" }, { url = "https://files.pythonhosted.org/packages/5d/a0/2ea570925524ef4e00bb6c82649f5682a77fac5ab910a65c9284de422600/coverage-7.13.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2c048ea43875fbf8b45d476ad79f179809c590ec7b79e2035c662e7afa3192e3", size = 254052, upload-time = "2026-02-09T12:56:59.754Z" }, { url = "https://files.pythonhosted.org/packages/e8/ac/45dc2e19a1939098d783c846e130b8f862fbb50d09e0af663988f2f21973/coverage-7.13.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b7b38448866e83176e28086674fe7368ab8590e4610fb662b44e345b86d63ffa", size = 255165, upload-time = "2026-02-09T12:57:01.287Z" }, { url = "https://files.pythonhosted.org/packages/2d/4d/26d236ff35abc3b5e63540d3386e4c3b192168c1d96da5cb2f43c640970f/coverage-7.13.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:de6defc1c9badbf8b9e67ae90fd00519186d6ab64e5cc5f3d21359c2a9b2c1d3", size = 257432, upload-time = "2026-02-09T12:57:02.637Z" }, { url = "https://files.pythonhosted.org/packages/ec/55/14a966c757d1348b2e19caf699415a2a4c4f7feaa4bbc6326a51f5c7dd1b/coverage-7.13.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7eda778067ad7ffccd23ecffce537dface96212576a07924cbf0d8799d2ded5a", size = 251716, upload-time = "2026-02-09T12:57:04.056Z" }, { url = "https://files.pythonhosted.org/packages/77/33/50116647905837c66d28b2af1321b845d5f5d19be9655cb84d4a0ea806b4/coverage-7.13.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e87f6c587c3f34356c3759f0420693e35e7eb0e2e41e4c011cb6ec6ecbbf1db7", size = 253089, upload-time = "2026-02-09T12:57:05.503Z" }, { url = "https://files.pythonhosted.org/packages/c2/b4/8efb11a46e3665d92635a56e4f2d4529de6d33f2cb38afd47d779d15fc99/coverage-7.13.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8248977c2e33aecb2ced42fef99f2d319e9904a36e55a8a68b69207fb7e43edc", size = 251232, upload-time = "2026-02-09T12:57:06.879Z" }, { url = "https://files.pythonhosted.org/packages/51/24/8cd73dd399b812cc76bb0ac260e671c4163093441847ffe058ac9fda1e32/coverage-7.13.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:25381386e80ae727608e662474db537d4df1ecd42379b5ba33c84633a2b36d47", size = 255299, upload-time = "2026-02-09T12:57:08.245Z" }, { url = "https://files.pythonhosted.org/packages/03/94/0a4b12f1d0e029ce1ccc1c800944a9984cbe7d678e470bb6d3c6bc38a0da/coverage-7.13.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:ee756f00726693e5ba94d6df2bdfd64d4852d23b09bb0bc700e3b30e6f333985", size = 250796, upload-time = "2026-02-09T12:57:10.142Z" }, { url = "https://files.pythonhosted.org/packages/73/44/6002fbf88f6698ca034360ce474c406be6d5a985b3fdb3401128031eef6b/coverage-7.13.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fdfc1e28e7c7cdce44985b3043bc13bbd9c747520f94a4d7164af8260b3d91f0", size = 252673, upload-time = "2026-02-09T12:57:12.197Z" }, { url = "https://files.pythonhosted.org/packages/de/c6/a0279f7c00e786be75a749a5674e6fa267bcbd8209cd10c9a450c655dfa7/coverage-7.13.4-cp312-cp312-win32.whl", hash = "sha256:01d4cbc3c283a17fc1e42d614a119f7f438eabb593391283adca8dc86eff1246", size = 221990, upload-time = "2026-02-09T12:57:14.085Z" }, { url = "https://files.pythonhosted.org/packages/77/4e/c0a25a425fcf5557d9abd18419c95b63922e897bc86c1f327f155ef234a9/coverage-7.13.4-cp312-cp312-win_amd64.whl", hash = "sha256:9401ebc7ef522f01d01d45532c68c5ac40fb27113019b6b7d8b208f6e9baa126", size = 222800, upload-time = "2026-02-09T12:57:15.944Z" }, { url = "https://files.pythonhosted.org/packages/47/ac/92da44ad9a6f4e3a7debd178949d6f3769bedca33830ce9b1dcdab589a37/coverage-7.13.4-cp312-cp312-win_arm64.whl", hash = "sha256:b1ec7b6b6e93255f952e27ab58fbc68dcc468844b16ecbee881aeb29b6ab4d8d", size = 221415, upload-time = "2026-02-09T12:57:17.497Z" }, { url = "https://files.pythonhosted.org/packages/db/23/aad45061a31677d68e47499197a131eea55da4875d16c1f42021ab963503/coverage-7.13.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b66a2da594b6068b48b2692f043f35d4d3693fb639d5ea8b39533c2ad9ac3ab9", size = 219474, upload-time = "2026-02-09T12:57:19.332Z" }, { url = "https://files.pythonhosted.org/packages/a5/70/9b8b67a0945f3dfec1fd896c5cefb7c19d5a3a6d74630b99a895170999ae/coverage-7.13.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3599eb3992d814d23b35c536c28df1a882caa950f8f507cef23d1cbf334995ac", size = 219844, upload-time = "2026-02-09T12:57:20.66Z" }, { url = "https://files.pythonhosted.org/packages/97/fd/7e859f8fab324cef6c4ad7cff156ca7c489fef9179d5749b0c8d321281c2/coverage-7.13.4-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:93550784d9281e374fb5a12bf1324cc8a963fd63b2d2f223503ef0fd4aa339ea", size = 250832, upload-time = "2026-02-09T12:57:22.007Z" }, { url = "https://files.pythonhosted.org/packages/e4/dc/b2442d10020c2f52617828862d8b6ee337859cd8f3a1f13d607dddda9cf7/coverage-7.13.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b720ce6a88a2755f7c697c23268ddc47a571b88052e6b155224347389fdf6a3b", size = 253434, upload-time = "2026-02-09T12:57:23.339Z" }, { url = "https://files.pythonhosted.org/packages/5a/88/6728a7ad17428b18d836540630487231f5470fb82454871149502f5e5aa2/coverage-7.13.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7b322db1284a2ed3aa28ffd8ebe3db91c929b7a333c0820abec3d838ef5b3525", size = 254676, upload-time = "2026-02-09T12:57:24.774Z" }, { url = "https://files.pythonhosted.org/packages/7c/bc/21244b1b8cedf0dff0a2b53b208015fe798d5f2a8d5348dbfece04224fff/coverage-7.13.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f4594c67d8a7c89cf922d9df0438c7c7bb022ad506eddb0fdb2863359ff78242", size = 256807, upload-time = "2026-02-09T12:57:26.125Z" }, { url = "https://files.pythonhosted.org/packages/97/a0/ddba7ed3251cff51006737a727d84e05b61517d1784a9988a846ba508877/coverage-7.13.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:53d133df809c743eb8bce33b24bcababb371f4441340578cd406e084d94a6148", size = 251058, upload-time = "2026-02-09T12:57:27.614Z" }, { url = "https://files.pythonhosted.org/packages/9b/55/e289addf7ff54d3a540526f33751951bf0878f3809b47f6dfb3def69c6f7/coverage-7.13.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:76451d1978b95ba6507a039090ba076105c87cc76fc3efd5d35d72093964d49a", size = 252805, upload-time = "2026-02-09T12:57:29.066Z" }, { url = "https://files.pythonhosted.org/packages/13/4e/cc276b1fa4a59be56d96f1dabddbdc30f4ba22e3b1cd42504c37b3313255/coverage-7.13.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7f57b33491e281e962021de110b451ab8a24182589be17e12a22c79047935e23", size = 250766, upload-time = "2026-02-09T12:57:30.522Z" }, { url = "https://files.pythonhosted.org/packages/94/44/1093b8f93018f8b41a8cf29636c9292502f05e4a113d4d107d14a3acd044/coverage-7.13.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:1731dc33dc276dafc410a885cbf5992f1ff171393e48a21453b78727d090de80", size = 254923, upload-time = "2026-02-09T12:57:31.946Z" }, { url = "https://files.pythonhosted.org/packages/8b/55/ea2796da2d42257f37dbea1aab239ba9263b31bd91d5527cdd6db5efe174/coverage-7.13.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:bd60d4fe2f6fa7dff9223ca1bbc9f05d2b6697bc5961072e5d3b952d46e1b1ea", size = 250591, upload-time = "2026-02-09T12:57:33.842Z" }, { url = "https://files.pythonhosted.org/packages/d4/fa/7c4bb72aacf8af5020675aa633e59c1fbe296d22aed191b6a5b711eb2bc7/coverage-7.13.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9181a3ccead280b828fae232df12b16652702b49d41e99d657f46cc7b1f6ec7a", size = 252364, upload-time = "2026-02-09T12:57:35.743Z" }, { url = "https://files.pythonhosted.org/packages/5c/38/a8d2ec0146479c20bbaa7181b5b455a0c41101eed57f10dd19a78ab44c80/coverage-7.13.4-cp313-cp313-win32.whl", hash = "sha256:f53d492307962561ac7de4cd1de3e363589b000ab69617c6156a16ba7237998d", size = 222010, upload-time = "2026-02-09T12:57:37.25Z" }, { url = "https://files.pythonhosted.org/packages/e2/0c/dbfafbe90a185943dcfbc766fe0e1909f658811492d79b741523a414a6cc/coverage-7.13.4-cp313-cp313-win_amd64.whl", hash = "sha256:e6f70dec1cc557e52df5306d051ef56003f74d56e9c4dd7ddb07e07ef32a84dd", size = 222818, upload-time = "2026-02-09T12:57:38.734Z" }, { url = "https://files.pythonhosted.org/packages/04/d1/934918a138c932c90d78301f45f677fb05c39a3112b96fd2c8e60503cdc7/coverage-7.13.4-cp313-cp313-win_arm64.whl", hash = "sha256:fb07dc5da7e849e2ad31a5d74e9bece81f30ecf5a42909d0a695f8bd1874d6af", size = 221438, upload-time = "2026-02-09T12:57:40.223Z" }, { url = "https://files.pythonhosted.org/packages/52/57/ee93ced533bcb3e6df961c0c6e42da2fc6addae53fb95b94a89b1e33ebd7/coverage-7.13.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:40d74da8e6c4b9ac18b15331c4b5ebc35a17069410cad462ad4f40dcd2d50c0d", size = 220165, upload-time = "2026-02-09T12:57:41.639Z" }, { url = "https://files.pythonhosted.org/packages/c5/e0/969fc285a6fbdda49d91af278488d904dcd7651b2693872f0ff94e40e84a/coverage-7.13.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4223b4230a376138939a9173f1bdd6521994f2aff8047fae100d6d94d50c5a12", size = 220516, upload-time = "2026-02-09T12:57:44.215Z" }, { url = "https://files.pythonhosted.org/packages/b1/b8/9531944e16267e2735a30a9641ff49671f07e8138ecf1ca13db9fd2560c7/coverage-7.13.4-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1d4be36a5114c499f9f1f9195e95ebf979460dbe2d88e6816ea202010ba1c34b", size = 261804, upload-time = "2026-02-09T12:57:45.989Z" }, { url = "https://files.pythonhosted.org/packages/8a/f3/e63df6d500314a2a60390d1989240d5f27318a7a68fa30ad3806e2a9323e/coverage-7.13.4-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:200dea7d1e8095cc6e98cdabe3fd1d21ab17d3cee6dab00cadbb2fe35d9c15b9", size = 263885, upload-time = "2026-02-09T12:57:47.42Z" }, { url = "https://files.pythonhosted.org/packages/f3/67/7654810de580e14b37670b60a09c599fa348e48312db5b216d730857ffe6/coverage-7.13.4-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8eb931ee8e6d8243e253e5ed7336deea6904369d2fd8ae6e43f68abbf167092", size = 266308, upload-time = "2026-02-09T12:57:49.345Z" }, { url = "https://files.pythonhosted.org/packages/37/6f/39d41eca0eab3cc82115953ad41c4e77935286c930e8fad15eaed1389d83/coverage-7.13.4-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:75eab1ebe4f2f64d9509b984f9314d4aa788540368218b858dad56dc8f3e5eb9", size = 267452, upload-time = "2026-02-09T12:57:50.811Z" }, { url = "https://files.pythonhosted.org/packages/50/6d/39c0fbb8fc5cd4d2090811e553c2108cf5112e882f82505ee7495349a6bf/coverage-7.13.4-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c35eb28c1d085eb7d8c9b3296567a1bebe03ce72962e932431b9a61f28facf26", size = 261057, upload-time = "2026-02-09T12:57:52.447Z" }, { url = "https://files.pythonhosted.org/packages/a4/a2/60010c669df5fa603bb5a97fb75407e191a846510da70ac657eb696b7fce/coverage-7.13.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:eb88b316ec33760714a4720feb2816a3a59180fd58c1985012054fa7aebee4c2", size = 263875, upload-time = "2026-02-09T12:57:53.938Z" }, { url = "https://files.pythonhosted.org/packages/3e/d9/63b22a6bdbd17f1f96e9ed58604c2a6b0e72a9133e37d663bef185877cf6/coverage-7.13.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7d41eead3cc673cbd38a4417deb7fd0b4ca26954ff7dc6078e33f6ff97bed940", size = 261500, upload-time = "2026-02-09T12:57:56.012Z" }, { url = "https://files.pythonhosted.org/packages/70/bf/69f86ba1ad85bc3ad240e4c0e57a2e620fbc0e1645a47b5c62f0e941ad7f/coverage-7.13.4-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:fb26a934946a6afe0e326aebe0730cdff393a8bc0bbb65a2f41e30feddca399c", size = 265212, upload-time = "2026-02-09T12:57:57.5Z" }, { url = "https://files.pythonhosted.org/packages/ae/f2/5f65a278a8c2148731831574c73e42f57204243d33bedaaf18fa79c5958f/coverage-7.13.4-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:dae88bc0fc77edaa65c14be099bd57ee140cf507e6bfdeea7938457ab387efb0", size = 260398, upload-time = "2026-02-09T12:57:59.027Z" }, { url = "https://files.pythonhosted.org/packages/ef/80/6e8280a350ee9fea92f14b8357448a242dcaa243cb2c72ab0ca591f66c8c/coverage-7.13.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:845f352911777a8e722bfce168958214951e07e47e5d5d9744109fa5fe77f79b", size = 262584, upload-time = "2026-02-09T12:58:01.129Z" }, { url = "https://files.pythonhosted.org/packages/22/63/01ff182fc95f260b539590fb12c11ad3e21332c15f9799cb5e2386f71d9f/coverage-7.13.4-cp313-cp313t-win32.whl", hash = "sha256:2fa8d5f8de70688a28240de9e139fa16b153cc3cbb01c5f16d88d6505ebdadf9", size = 222688, upload-time = "2026-02-09T12:58:02.736Z" }, { url = "https://files.pythonhosted.org/packages/a9/43/89de4ef5d3cd53b886afa114065f7e9d3707bdb3e5efae13535b46ae483d/coverage-7.13.4-cp313-cp313t-win_amd64.whl", hash = "sha256:9351229c8c8407645840edcc277f4a2d44814d1bc34a2128c11c2a031d45a5dd", size = 223746, upload-time = "2026-02-09T12:58:05.362Z" }, { url = "https://files.pythonhosted.org/packages/35/39/7cf0aa9a10d470a5309b38b289b9bb07ddeac5d61af9b664fe9775a4cb3e/coverage-7.13.4-cp313-cp313t-win_arm64.whl", hash = "sha256:30b8d0512f2dc8c8747557e8fb459d6176a2c9e5731e2b74d311c03b78451997", size = 222003, upload-time = "2026-02-09T12:58:06.952Z" }, { url = "https://files.pythonhosted.org/packages/92/11/a9cf762bb83386467737d32187756a42094927150c3e107df4cb078e8590/coverage-7.13.4-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:300deaee342f90696ed186e3a00c71b5b3d27bffe9e827677954f4ee56969601", size = 219522, upload-time = "2026-02-09T12:58:08.623Z" }, { url = "https://files.pythonhosted.org/packages/d3/28/56e6d892b7b052236d67c95f1936b6a7cf7c3e2634bf27610b8cbd7f9c60/coverage-7.13.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:29e3220258d682b6226a9b0925bc563ed9a1ebcff3cad30f043eceea7eaf2689", size = 219855, upload-time = "2026-02-09T12:58:10.176Z" }, { url = "https://files.pythonhosted.org/packages/e5/69/233459ee9eb0c0d10fcc2fe425a029b3fa5ce0f040c966ebce851d030c70/coverage-7.13.4-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:391ee8f19bef69210978363ca930f7328081c6a0152f1166c91f0b5fdd2a773c", size = 250887, upload-time = "2026-02-09T12:58:12.503Z" }, { url = "https://files.pythonhosted.org/packages/06/90/2cdab0974b9b5bbc1623f7876b73603aecac11b8d95b85b5b86b32de5eab/coverage-7.13.4-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0dd7ab8278f0d58a0128ba2fca25824321f05d059c1441800e934ff2efa52129", size = 253396, upload-time = "2026-02-09T12:58:14.615Z" }, { url = "https://files.pythonhosted.org/packages/ac/15/ea4da0f85bf7d7b27635039e649e99deb8173fe551096ea15017f7053537/coverage-7.13.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:78cdf0d578b15148b009ccf18c686aa4f719d887e76e6b40c38ffb61d264a552", size = 254745, upload-time = "2026-02-09T12:58:16.162Z" }, { url = "https://files.pythonhosted.org/packages/99/11/bb356e86920c655ca4d61daee4e2bbc7258f0a37de0be32d233b561134ff/coverage-7.13.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:48685fee12c2eb3b27c62f2658e7ea21e9c3239cba5a8a242801a0a3f6a8c62a", size = 257055, upload-time = "2026-02-09T12:58:17.892Z" }, { url = "https://files.pythonhosted.org/packages/c9/0f/9ae1f8cb17029e09da06ca4e28c9e1d5c1c0a511c7074592e37e0836c915/coverage-7.13.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4e83efc079eb39480e6346a15a1bcb3e9b04759c5202d157e1dd4303cd619356", size = 250911, upload-time = "2026-02-09T12:58:19.495Z" }, { url = "https://files.pythonhosted.org/packages/89/3a/adfb68558fa815cbc29747b553bc833d2150228f251b127f1ce97e48547c/coverage-7.13.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ecae9737b72408d6a950f7e525f30aca12d4bd8dd95e37342e5beb3a2a8c4f71", size = 252754, upload-time = "2026-02-09T12:58:21.064Z" }, { url = "https://files.pythonhosted.org/packages/32/b1/540d0c27c4e748bd3cd0bd001076ee416eda993c2bae47a73b7cc9357931/coverage-7.13.4-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:ae4578f8528569d3cf303fef2ea569c7f4c4059a38c8667ccef15c6e1f118aa5", size = 250720, upload-time = "2026-02-09T12:58:22.622Z" }, { url = "https://files.pythonhosted.org/packages/c7/95/383609462b3ffb1fe133014a7c84fc0dd01ed55ac6140fa1093b5af7ebb1/coverage-7.13.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:6fdef321fdfbb30a197efa02d48fcd9981f0d8ad2ae8903ac318adc653f5df98", size = 254994, upload-time = "2026-02-09T12:58:24.548Z" }, { url = "https://files.pythonhosted.org/packages/f7/ba/1761138e86c81680bfc3c49579d66312865457f9fe405b033184e5793cb3/coverage-7.13.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b0f6ccf3dbe577170bebfce1318707d0e8c3650003cb4b3a9dd744575daa8b5", size = 250531, upload-time = "2026-02-09T12:58:26.271Z" }, { url = "https://files.pythonhosted.org/packages/f8/8e/05900df797a9c11837ab59c4d6fe94094e029582aab75c3309a93e6fb4e3/coverage-7.13.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:75fcd519f2a5765db3f0e391eb3b7d150cce1a771bf4c9f861aeab86c767a3c0", size = 252189, upload-time = "2026-02-09T12:58:27.807Z" }, { url = "https://files.pythonhosted.org/packages/00/bd/29c9f2db9ea4ed2738b8a9508c35626eb205d51af4ab7bf56a21a2e49926/coverage-7.13.4-cp314-cp314-win32.whl", hash = "sha256:8e798c266c378da2bd819b0677df41ab46d78065fb2a399558f3f6cae78b2fbb", size = 222258, upload-time = "2026-02-09T12:58:29.441Z" }, { url = "https://files.pythonhosted.org/packages/a7/4d/1f8e723f6829977410efeb88f73673d794075091c8c7c18848d273dc9d73/coverage-7.13.4-cp314-cp314-win_amd64.whl", hash = "sha256:245e37f664d89861cf2329c9afa2c1fe9e6d4e1a09d872c947e70718aeeac505", size = 223073, upload-time = "2026-02-09T12:58:31.026Z" }, { url = "https://files.pythonhosted.org/packages/51/5b/84100025be913b44e082ea32abcf1afbf4e872f5120b7a1cab1d331b1e13/coverage-7.13.4-cp314-cp314-win_arm64.whl", hash = "sha256:ad27098a189e5838900ce4c2a99f2fe42a0bf0c2093c17c69b45a71579e8d4a2", size = 221638, upload-time = "2026-02-09T12:58:32.599Z" }, { url = "https://files.pythonhosted.org/packages/a7/e4/c884a405d6ead1370433dad1e3720216b4f9fd8ef5b64bfd984a2a60a11a/coverage-7.13.4-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:85480adfb35ffc32d40918aad81b89c69c9cc5661a9b8a81476d3e645321a056", size = 220246, upload-time = "2026-02-09T12:58:34.181Z" }, { url = "https://files.pythonhosted.org/packages/81/5c/4d7ed8b23b233b0fffbc9dfec53c232be2e695468523242ea9fd30f97ad2/coverage-7.13.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:79be69cf7f3bf9b0deeeb062eab7ac7f36cd4cc4c4dd694bd28921ba4d8596cc", size = 220514, upload-time = "2026-02-09T12:58:35.704Z" }, { url = "https://files.pythonhosted.org/packages/2f/6f/3284d4203fd2f28edd73034968398cd2d4cb04ab192abc8cff007ea35679/coverage-7.13.4-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:caa421e2684e382c5d8973ac55e4f36bed6821a9bad5c953494de960c74595c9", size = 261877, upload-time = "2026-02-09T12:58:37.864Z" }, { url = "https://files.pythonhosted.org/packages/09/aa/b672a647bbe1556a85337dc95bfd40d146e9965ead9cc2fe81bde1e5cbce/coverage-7.13.4-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:14375934243ee05f56c45393fe2ce81fe5cc503c07cee2bdf1725fb8bef3ffaf", size = 264004, upload-time = "2026-02-09T12:58:39.492Z" }, { url = "https://files.pythonhosted.org/packages/79/a1/aa384dbe9181f98bba87dd23dda436f0c6cf2e148aecbb4e50fc51c1a656/coverage-7.13.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:25a41c3104d08edb094d9db0d905ca54d0cd41c928bb6be3c4c799a54753af55", size = 266408, upload-time = "2026-02-09T12:58:41.852Z" }, { url = "https://files.pythonhosted.org/packages/53/5e/5150bf17b4019bc600799f376bb9606941e55bd5a775dc1e096b6ffea952/coverage-7.13.4-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6f01afcff62bf9a08fb32b2c1d6e924236c0383c02c790732b6537269e466a72", size = 267544, upload-time = "2026-02-09T12:58:44.093Z" }, { url = "https://files.pythonhosted.org/packages/e0/ed/f1de5c675987a4a7a672250d2c5c9d73d289dbf13410f00ed7181d8017dd/coverage-7.13.4-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:eb9078108fbf0bcdde37c3f4779303673c2fa1fe8f7956e68d447d0dd426d38a", size = 260980, upload-time = "2026-02-09T12:58:45.721Z" }, { url = "https://files.pythonhosted.org/packages/b3/e3/fe758d01850aa172419a6743fe76ba8b92c29d181d4f676ffe2dae2ba631/coverage-7.13.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0e086334e8537ddd17e5f16a344777c1ab8194986ec533711cbe6c41cde841b6", size = 263871, upload-time = "2026-02-09T12:58:47.334Z" }, { url = "https://files.pythonhosted.org/packages/b6/76/b829869d464115e22499541def9796b25312b8cf235d3bb00b39f1675395/coverage-7.13.4-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:725d985c5ab621268b2edb8e50dfe57633dc69bda071abc470fed55a14935fd3", size = 261472, upload-time = "2026-02-09T12:58:48.995Z" }, { url = "https://files.pythonhosted.org/packages/14/9e/caedb1679e73e2f6ad240173f55218488bfe043e38da577c4ec977489915/coverage-7.13.4-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:3c06f0f1337c667b971ca2f975523347e63ec5e500b9aa5882d91931cd3ef750", size = 265210, upload-time = "2026-02-09T12:58:51.178Z" }, { url = "https://files.pythonhosted.org/packages/3a/10/0dd02cb009b16ede425b49ec344aba13a6ae1dc39600840ea6abcb085ac4/coverage-7.13.4-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:590c0ed4bf8e85f745e6b805b2e1c457b2e33d5255dd9729743165253bc9ad39", size = 260319, upload-time = "2026-02-09T12:58:53.081Z" }, { url = "https://files.pythonhosted.org/packages/92/8e/234d2c927af27c6d7a5ffad5bd2cf31634c46a477b4c7adfbfa66baf7ebb/coverage-7.13.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:eb30bf180de3f632cd043322dad5751390e5385108b2807368997d1a92a509d0", size = 262638, upload-time = "2026-02-09T12:58:55.258Z" }, { url = "https://files.pythonhosted.org/packages/2f/64/e5547c8ff6964e5965c35a480855911b61509cce544f4d442caa759a0702/coverage-7.13.4-cp314-cp314t-win32.whl", hash = "sha256:c4240e7eded42d131a2d2c4dec70374b781b043ddc79a9de4d55ca71f8e98aea", size = 223040, upload-time = "2026-02-09T12:58:56.936Z" }, { url = "https://files.pythonhosted.org/packages/c7/96/38086d58a181aac86d503dfa9c47eb20715a79c3e3acbdf786e92e5c09a8/coverage-7.13.4-cp314-cp314t-win_amd64.whl", hash = "sha256:4c7d3cc01e7350f2f0f6f7036caaf5673fb56b6998889ccfe9e1c1fe75a9c932", size = 224148, upload-time = "2026-02-09T12:58:58.645Z" }, { url = "https://files.pythonhosted.org/packages/ce/72/8d10abd3740a0beb98c305e0c3faf454366221c0f37a8bcf8f60020bb65a/coverage-7.13.4-cp314-cp314t-win_arm64.whl", hash = "sha256:23e3f687cf945070d1c90f85db66d11e3025665d8dafa831301a0e0038f3db9b", size = 222172, upload-time = "2026-02-09T12:59:00.396Z" }, { url = "https://files.pythonhosted.org/packages/0d/4a/331fe2caf6799d591109bb9c08083080f6de90a823695d412a935622abb2/coverage-7.13.4-py3-none-any.whl", hash = "sha256:1af1641e57cf7ba1bd67d677c9abdbcd6cc2ab7da3bca7fa1e2b7e50e65f2ad0", size = 211242, upload-time = "2026-02-09T12:59:02.032Z" }, ] [package.optional-dependencies] toml = [ { name = "tomli", marker = "python_full_version <= '3.11'" }, ] [[package]] name = "cssselect2" version = "0.9.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "tinycss2" }, { name = "webencodings" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e0/20/92eaa6b0aec7189fa4b75c890640e076e9e793095721db69c5c81142c2e1/cssselect2-0.9.0.tar.gz", hash = "sha256:759aa22c216326356f65e62e791d66160a0f9c91d1424e8d8adc5e74dddfc6fb", size = 35595, upload-time = "2026-02-12T17:16:39.614Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/21/0e/8459ca4413e1a21a06c97d134bfaf18adfd27cea068813dc0faae06cbf00/cssselect2-0.9.0-py3-none-any.whl", hash = "sha256:6a99e5f91f9a016a304dd929b0966ca464bcfda15177b6fb4a118fc0fb5d9563", size = 15453, upload-time = "2026-02-12T17:16:38.317Z" }, ] [[package]] name = "decorator" version = "5.2.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, ] [[package]] name = "defusedxml" version = "0.7.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, ] [[package]] name = "distlib" version = "0.4.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/96/8e/709914eb2b5749865801041647dc7f4e6d00b549cfe88b65ca192995f07c/distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d", size = 614605, upload-time = "2025-07-17T16:52:00.465Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16", size = 469047, upload-time = "2025-07-17T16:51:58.613Z" }, ] [[package]] name = "doc8" version = "2.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "docutils" }, { name = "pygments" }, { name = "restructuredtext-lint" }, { name = "stevedore" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/92/91/88bb55225046a2ee9c2243d47346c78d2ed861c769168f451568625ad670/doc8-2.0.0.tar.gz", hash = "sha256:1267ad32758971fbcf991442417a3935c7bc9e52550e73622e0e56ba55ea1d40", size = 28436, upload-time = "2025-06-13T13:08:53.174Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/a2/e9/90b7d243364d3dce38c8c2a1b8c103d7a8d1383c2b24c735fae0eee038dd/doc8-2.0.0-py3-none-any.whl", hash = "sha256:9862710027f793c25f9b1899150660e4bf1d4c9a6738742e71f32011e2e3f590", size = 25861, upload-time = "2025-06-13T13:08:51.839Z" }, ] [[package]] name = "docutils" version = "0.21.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", size = 2204444, upload-time = "2024-04-23T18:57:18.24Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", size = 587408, upload-time = "2024-04-23T18:57:14.835Z" }, ] [[package]] name = "exceptiongroup" version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" }, ] [[package]] name = "executing" version = "2.2.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/cc/28/c14e053b6762b1044f34a13aab6859bbf40456d37d23aa286ac24cfd9a5d/executing-2.2.1.tar.gz", hash = "sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4", size = 1129488, upload-time = "2025-09-01T09:48:10.866Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl", hash = "sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017", size = 28317, upload-time = "2025-09-01T09:48:08.5Z" }, ] [[package]] name = "filelock" version = "3.21.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/c0/6b/cc63cdbff46eba1ce2fbd058e9699f99c43f7e604da15413ca0331040bff/filelock-3.21.0.tar.gz", hash = "sha256:48c739c73c6fcacd381ed532226991150947c4a76dcd674f84d6807fd55dbaf2", size = 31341, upload-time = "2026-02-12T15:40:48.544Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/da/ab/05190b5a64101fcb743bc63a034c0fac86a515c27c303c69221093565f28/filelock-3.21.0-py3-none-any.whl", hash = "sha256:0f90eee4c62101243df3007db3cf8fc3ebf1bb13541d3e72c687d6e0f3f7d531", size = 21381, upload-time = "2026-02-12T15:40:46.964Z" }, ] [[package]] name = "furo" version = "2025.12.19" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "accessible-pygments" }, { name = "beautifulsoup4" }, { name = "pygments" }, { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "sphinx", version = "9.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, { name = "sphinx", version = "9.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, { name = "sphinx-basic-ng" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ec/20/5f5ad4da6a5a27c80f2ed2ee9aee3f9e36c66e56e21c00fde467b2f8f88f/furo-2025.12.19.tar.gz", hash = "sha256:188d1f942037d8b37cd3985b955839fea62baa1730087dc29d157677c857e2a7", size = 1661473, upload-time = "2025-12-19T17:34:40.889Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/f4/b2/50e9b292b5cac13e9e81272c7171301abc753a60460d21505b606e15cf21/furo-2025.12.19-py3-none-any.whl", hash = "sha256:bb0ead5309f9500130665a26bee87693c41ce4dbdff864dbfb6b0dae4673d24f", size = 339262, upload-time = "2025-12-19T17:34:38.905Z" }, ] [[package]] name = "h11" version = "0.16.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, ] [[package]] name = "identify" version = "2.6.16" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/5b/8d/e8b97e6bd3fb6fb271346f7981362f1e04d6a7463abd0de79e1fda17c067/identify-2.6.16.tar.gz", hash = "sha256:846857203b5511bbe94d5a352a48ef2359532bc8f6727b5544077a0dcfb24980", size = 99360, upload-time = "2026-01-12T18:58:58.201Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/b8/58/40fbbcefeda82364720eba5cf2270f98496bdfa19ea75b4cccae79c698e6/identify-2.6.16-py2.py3-none-any.whl", hash = "sha256:391ee4d77741d994189522896270b787aed8670389bfd60f326d677d64a6dfb0", size = 99202, upload-time = "2026-01-12T18:58:56.627Z" }, ] [[package]] name = "idna" version = "3.11" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, ] [[package]] name = "imageio" version = "2.37.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "numpy", version = "2.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "pillow" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a3/6f/606be632e37bf8d05b253e8626c2291d74c691ddc7bcdf7d6aaf33b32f6a/imageio-2.37.2.tar.gz", hash = "sha256:0212ef2727ac9caa5ca4b2c75ae89454312f440a756fcfc8ef1993e718f50f8a", size = 389600, upload-time = "2025-11-04T14:29:39.898Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/fb/fe/301e0936b79bcab4cacc7548bf2853fc28dced0a578bab1f7ef53c9aa75b/imageio-2.37.2-py3-none-any.whl", hash = "sha256:ad9adfb20335d718c03de457358ed69f141021a333c40a53e57273d8a5bd0b9b", size = 317646, upload-time = "2025-11-04T14:29:37.948Z" }, ] [[package]] name = "imagesize" version = "1.4.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/a7/84/62473fb57d61e31fef6e36d64a179c8781605429fd927b5dd608c997be31/imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a", size = 1280026, upload-time = "2022-07-01T12:21:05.687Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b", size = 8769, upload-time = "2022-07-01T12:21:02.467Z" }, ] [[package]] name = "importlib-metadata" version = "8.7.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zipp" }, ] sdist = { url = "https://files.pythonhosted.org/packages/f3/49/3b30cad09e7771a4982d9975a8cbf64f00d4a1ececb53297f1d9a7be1b10/importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb", size = 57107, upload-time = "2025-12-21T10:00:19.278Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151", size = 27865, upload-time = "2025-12-21T10:00:18.329Z" }, ] [[package]] name = "iniconfig" version = "2.3.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, ] [[package]] name = "ipdb" version = "0.13.13" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "decorator" }, { name = "ipython", version = "8.38.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "ipython", version = "9.10.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/3d/1b/7e07e7b752017f7693a0f4d41c13e5ca29ce8cbcfdcc1fd6c4ad8c0a27a0/ipdb-0.13.13.tar.gz", hash = "sha256:e3ac6018ef05126d442af680aad863006ec19d02290561ac88b8b1c0b0cfc726", size = 17042, upload-time = "2023-03-09T15:40:57.487Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/0c/4c/b075da0092003d9a55cf2ecc1cae9384a1ca4f650d51b00fc59875fe76f6/ipdb-0.13.13-py3-none-any.whl", hash = "sha256:45529994741c4ab6d2388bfa5d7b725c2cf7fe9deffabdb8a6113aa5ed449ed4", size = 12130, upload-time = "2023-03-09T15:40:55.021Z" }, ] [[package]] name = "ipython" version = "8.38.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.11'", ] dependencies = [ { name = "colorama", marker = "python_full_version < '3.11' and sys_platform == 'win32'" }, { name = "decorator", marker = "python_full_version < '3.11'" }, { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "jedi", marker = "python_full_version < '3.11'" }, { name = "matplotlib-inline", marker = "python_full_version < '3.11'" }, { name = "pexpect", marker = "python_full_version < '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "prompt-toolkit", marker = "python_full_version < '3.11'" }, { name = "pygments", marker = "python_full_version < '3.11'" }, { name = "stack-data", marker = "python_full_version < '3.11'" }, { name = "traitlets", marker = "python_full_version < '3.11'" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e5/61/1810830e8b93c72dcd3c0f150c80a00c3deb229562d9423807ec92c3a539/ipython-8.38.0.tar.gz", hash = "sha256:9cfea8c903ce0867cc2f23199ed8545eb741f3a69420bfcf3743ad1cec856d39", size = 5513996, upload-time = "2026-01-05T10:59:06.901Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/9f/df/db59624f4c71b39717c423409950ac3f2c8b2ce4b0aac843112c7fb3f721/ipython-8.38.0-py3-none-any.whl", hash = "sha256:750162629d800ac65bb3b543a14e7a74b0e88063eac9b92124d4b2aa3f6d8e86", size = 831813, upload-time = "2026-01-05T10:59:04.239Z" }, ] [[package]] name = "ipython" version = "9.10.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.12'", "python_full_version == '3.11.*'", ] dependencies = [ { name = "colorama", marker = "python_full_version >= '3.11' and sys_platform == 'win32'" }, { name = "decorator", marker = "python_full_version >= '3.11'" }, { name = "ipython-pygments-lexers", marker = "python_full_version >= '3.11'" }, { name = "jedi", marker = "python_full_version >= '3.11'" }, { name = "matplotlib-inline", marker = "python_full_version >= '3.11'" }, { name = "pexpect", marker = "python_full_version >= '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "prompt-toolkit", marker = "python_full_version >= '3.11'" }, { name = "pygments", marker = "python_full_version >= '3.11'" }, { name = "stack-data", marker = "python_full_version >= '3.11'" }, { name = "traitlets", marker = "python_full_version >= '3.11'" }, { name = "typing-extensions", marker = "python_full_version == '3.11.*'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a6/60/2111715ea11f39b1535bed6024b7dec7918b71e5e5d30855a5b503056b50/ipython-9.10.0.tar.gz", hash = "sha256:cd9e656be97618a0676d058134cd44e6dc7012c0e5cb36a9ce96a8c904adaf77", size = 4426526, upload-time = "2026-02-02T10:00:33.594Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/3d/aa/898dec789a05731cd5a9f50605b7b44a72bd198fd0d4528e11fc610177cc/ipython-9.10.0-py3-none-any.whl", hash = "sha256:c6ab68cc23bba8c7e18e9b932797014cc61ea7fd6f19de180ab9ba73e65ee58d", size = 622774, upload-time = "2026-02-02T10:00:31.503Z" }, ] [[package]] name = "ipython-pygments-lexers" version = "1.1.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pygments", marker = "python_full_version >= '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, ] [[package]] name = "jedi" version = "0.19.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "parso" }, ] sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload-time = "2024-11-11T01:41:42.873Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload-time = "2024-11-11T01:41:40.175Z" }, ] [[package]] name = "jinja2" version = "3.1.6" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, ] [[package]] name = "joblib" version = "1.5.3" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/41/f2/d34e8b3a08a9cc79a50b2208a93dce981fe615b64d5a4d4abee421d898df/joblib-1.5.3.tar.gz", hash = "sha256:8561a3269e6801106863fd0d6d84bb737be9e7631e33aaed3fb9ce5953688da3", size = 331603, upload-time = "2025-12-15T08:41:46.427Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl", hash = "sha256:5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713", size = 309071, upload-time = "2025-12-15T08:41:44.973Z" }, ] [[package]] name = "lazy-loader" version = "0.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "packaging" }, ] sdist = { url = "https://files.pythonhosted.org/packages/6f/6b/c875b30a1ba490860c93da4cabf479e03f584eba06fe5963f6f6644653d8/lazy_loader-0.4.tar.gz", hash = "sha256:47c75182589b91a4e1a85a136c074285a5ad4d9f39c63e0d7fb76391c4574cd1", size = 15431, upload-time = "2024-04-05T13:03:12.261Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/83/60/d497a310bde3f01cb805196ac61b7ad6dc5dcf8dce66634dc34364b20b4f/lazy_loader-0.4-py3-none-any.whl", hash = "sha256:342aa8e14d543a154047afb4ba8ef17f5563baad3fc610d7b15b213b0f119efc", size = 12097, upload-time = "2024-04-05T13:03:10.514Z" }, ] [[package]] name = "lxml" version = "6.0.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/aa/88/262177de60548e5a2bfc46ad28232c9e9cbde697bd94132aeb80364675cb/lxml-6.0.2.tar.gz", hash = "sha256:cd79f3367bd74b317dda655dc8fcfa304d9eb6e4fb06b7168c5cf27f96e0cd62", size = 4073426, upload-time = "2025-09-22T04:04:59.287Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/db/8a/f8192a08237ef2fb1b19733f709db88a4c43bc8ab8357f01cb41a27e7f6a/lxml-6.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e77dd455b9a16bbd2a5036a63ddbd479c19572af81b624e79ef422f929eef388", size = 8590589, upload-time = "2025-09-22T04:00:10.51Z" }, { url = "https://files.pythonhosted.org/packages/12/64/27bcd07ae17ff5e5536e8d88f4c7d581b48963817a13de11f3ac3329bfa2/lxml-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5d444858b9f07cefff6455b983aea9a67f7462ba1f6cbe4a21e8bf6791bf2153", size = 4629671, upload-time = "2025-09-22T04:00:15.411Z" }, { url = "https://files.pythonhosted.org/packages/02/5a/a7d53b3291c324e0b6e48f3c797be63836cc52156ddf8f33cd72aac78866/lxml-6.0.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f952dacaa552f3bb8834908dddd500ba7d508e6ea6eb8c52eb2d28f48ca06a31", size = 4999961, upload-time = "2025-09-22T04:00:17.619Z" }, { url = "https://files.pythonhosted.org/packages/f5/55/d465e9b89df1761674d8672bb3e4ae2c47033b01ec243964b6e334c6743f/lxml-6.0.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:71695772df6acea9f3c0e59e44ba8ac50c4f125217e84aab21074a1a55e7e5c9", size = 5157087, upload-time = "2025-09-22T04:00:19.868Z" }, { url = "https://files.pythonhosted.org/packages/62/38/3073cd7e3e8dfc3ba3c3a139e33bee3a82de2bfb0925714351ad3d255c13/lxml-6.0.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:17f68764f35fd78d7c4cc4ef209a184c38b65440378013d24b8aecd327c3e0c8", size = 5067620, upload-time = "2025-09-22T04:00:21.877Z" }, { url = "https://files.pythonhosted.org/packages/4a/d3/1e001588c5e2205637b08985597827d3827dbaaece16348c8822bfe61c29/lxml-6.0.2-cp310-cp310-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:058027e261afed589eddcfe530fcc6f3402d7fd7e89bfd0532df82ebc1563dba", size = 5406664, upload-time = "2025-09-22T04:00:23.714Z" }, { url = "https://files.pythonhosted.org/packages/20/cf/cab09478699b003857ed6ebfe95e9fb9fa3d3c25f1353b905c9b73cfb624/lxml-6.0.2-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8ffaeec5dfea5881d4c9d8913a32d10cfe3923495386106e4a24d45300ef79c", size = 5289397, upload-time = "2025-09-22T04:00:25.544Z" }, { url = "https://files.pythonhosted.org/packages/a3/84/02a2d0c38ac9a8b9f9e5e1bbd3f24b3f426044ad618b552e9549ee91bd63/lxml-6.0.2-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:f2e3b1a6bb38de0bc713edd4d612969dd250ca8b724be8d460001a387507021c", size = 4772178, upload-time = "2025-09-22T04:00:27.602Z" }, { url = "https://files.pythonhosted.org/packages/56/87/e1ceadcc031ec4aa605fe95476892d0b0ba3b7f8c7dcdf88fdeff59a9c86/lxml-6.0.2-cp310-cp310-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d6690ec5ec1cce0385cb20896b16be35247ac8c2046e493d03232f1c2414d321", size = 5358148, upload-time = "2025-09-22T04:00:29.323Z" }, { url = "https://files.pythonhosted.org/packages/fe/13/5bb6cf42bb228353fd4ac5f162c6a84fd68a4d6f67c1031c8cf97e131fc6/lxml-6.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f2a50c3c1d11cad0ebebbac357a97b26aa79d2bcaf46f256551152aa85d3a4d1", size = 5112035, upload-time = "2025-09-22T04:00:31.061Z" }, { url = "https://files.pythonhosted.org/packages/e4/e2/ea0498552102e59834e297c5c6dff8d8ded3db72ed5e8aad77871476f073/lxml-6.0.2-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:3efe1b21c7801ffa29a1112fab3b0f643628c30472d507f39544fd48e9549e34", size = 4799111, upload-time = "2025-09-22T04:00:33.11Z" }, { url = "https://files.pythonhosted.org/packages/6a/9e/8de42b52a73abb8af86c66c969b3b4c2a96567b6ac74637c037d2e3baa60/lxml-6.0.2-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:59c45e125140b2c4b33920d21d83681940ca29f0b83f8629ea1a2196dc8cfe6a", size = 5351662, upload-time = "2025-09-22T04:00:35.237Z" }, { url = "https://files.pythonhosted.org/packages/28/a2/de776a573dfb15114509a37351937c367530865edb10a90189d0b4b9b70a/lxml-6.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:452b899faa64f1805943ec1c0c9ebeaece01a1af83e130b69cdefeda180bb42c", size = 5314973, upload-time = "2025-09-22T04:00:37.086Z" }, { url = "https://files.pythonhosted.org/packages/50/a0/3ae1b1f8964c271b5eec91db2043cf8c6c0bce101ebb2a633b51b044db6c/lxml-6.0.2-cp310-cp310-win32.whl", hash = "sha256:1e786a464c191ca43b133906c6903a7e4d56bef376b75d97ccbb8ec5cf1f0a4b", size = 3611953, upload-time = "2025-09-22T04:00:39.224Z" }, { url = "https://files.pythonhosted.org/packages/d1/70/bd42491f0634aad41bdfc1e46f5cff98825fb6185688dc82baa35d509f1a/lxml-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:dacf3c64ef3f7440e3167aa4b49aa9e0fb99e0aa4f9ff03795640bf94531bcb0", size = 4032695, upload-time = "2025-09-22T04:00:41.402Z" }, { url = "https://files.pythonhosted.org/packages/d2/d0/05c6a72299f54c2c561a6c6cbb2f512e047fca20ea97a05e57931f194ac4/lxml-6.0.2-cp310-cp310-win_arm64.whl", hash = "sha256:45f93e6f75123f88d7f0cfd90f2d05f441b808562bf0bc01070a00f53f5028b5", size = 3680051, upload-time = "2025-09-22T04:00:43.525Z" }, { url = "https://files.pythonhosted.org/packages/77/d5/becbe1e2569b474a23f0c672ead8a29ac50b2dc1d5b9de184831bda8d14c/lxml-6.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:13e35cbc684aadf05d8711a5d1b5857c92e5e580efa9a0d2be197199c8def607", size = 8634365, upload-time = "2025-09-22T04:00:45.672Z" }, { url = "https://files.pythonhosted.org/packages/28/66/1ced58f12e804644426b85d0bb8a4478ca77bc1761455da310505f1a3526/lxml-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b1675e096e17c6fe9c0e8c81434f5736c0739ff9ac6123c87c2d452f48fc938", size = 4650793, upload-time = "2025-09-22T04:00:47.783Z" }, { url = "https://files.pythonhosted.org/packages/11/84/549098ffea39dfd167e3f174b4ce983d0eed61f9d8d25b7bf2a57c3247fc/lxml-6.0.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8ac6e5811ae2870953390452e3476694196f98d447573234592d30488147404d", size = 4944362, upload-time = "2025-09-22T04:00:49.845Z" }, { url = "https://files.pythonhosted.org/packages/ac/bd/f207f16abf9749d2037453d56b643a7471d8fde855a231a12d1e095c4f01/lxml-6.0.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5aa0fc67ae19d7a64c3fe725dc9a1bb11f80e01f78289d05c6f62545affec438", size = 5083152, upload-time = "2025-09-22T04:00:51.709Z" }, { url = "https://files.pythonhosted.org/packages/15/ae/bd813e87d8941d52ad5b65071b1affb48da01c4ed3c9c99e40abb266fbff/lxml-6.0.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:de496365750cc472b4e7902a485d3f152ecf57bd3ba03ddd5578ed8ceb4c5964", size = 5023539, upload-time = "2025-09-22T04:00:53.593Z" }, { url = "https://files.pythonhosted.org/packages/02/cd/9bfef16bd1d874fbe0cb51afb00329540f30a3283beb9f0780adbb7eec03/lxml-6.0.2-cp311-cp311-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:200069a593c5e40b8f6fc0d84d86d970ba43138c3e68619ffa234bc9bb806a4d", size = 5344853, upload-time = "2025-09-22T04:00:55.524Z" }, { url = "https://files.pythonhosted.org/packages/b8/89/ea8f91594bc5dbb879734d35a6f2b0ad50605d7fb419de2b63d4211765cc/lxml-6.0.2-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7d2de809c2ee3b888b59f995625385f74629707c9355e0ff856445cdcae682b7", size = 5225133, upload-time = "2025-09-22T04:00:57.269Z" }, { url = "https://files.pythonhosted.org/packages/b9/37/9c735274f5dbec726b2db99b98a43950395ba3d4a1043083dba2ad814170/lxml-6.0.2-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:b2c3da8d93cf5db60e8858c17684c47d01fee6405e554fb55018dd85fc23b178", size = 4677944, upload-time = "2025-09-22T04:00:59.052Z" }, { url = "https://files.pythonhosted.org/packages/20/28/7dfe1ba3475d8bfca3878365075abe002e05d40dfaaeb7ec01b4c587d533/lxml-6.0.2-cp311-cp311-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:442de7530296ef5e188373a1ea5789a46ce90c4847e597856570439621d9c553", size = 5284535, upload-time = "2025-09-22T04:01:01.335Z" }, { url = "https://files.pythonhosted.org/packages/e7/cf/5f14bc0de763498fc29510e3532bf2b4b3a1c1d5d0dff2e900c16ba021ef/lxml-6.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2593c77efde7bfea7f6389f1ab249b15ed4aa5bc5cb5131faa3b843c429fbedb", size = 5067343, upload-time = "2025-09-22T04:01:03.13Z" }, { url = "https://files.pythonhosted.org/packages/1c/b0/bb8275ab5472f32b28cfbbcc6db7c9d092482d3439ca279d8d6fa02f7025/lxml-6.0.2-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:3e3cb08855967a20f553ff32d147e14329b3ae70ced6edc2f282b94afbc74b2a", size = 4725419, upload-time = "2025-09-22T04:01:05.013Z" }, { url = "https://files.pythonhosted.org/packages/25/4c/7c222753bc72edca3b99dbadba1b064209bc8ed4ad448af990e60dcce462/lxml-6.0.2-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:2ed6c667fcbb8c19c6791bbf40b7268ef8ddf5a96940ba9404b9f9a304832f6c", size = 5275008, upload-time = "2025-09-22T04:01:07.327Z" }, { url = "https://files.pythonhosted.org/packages/6c/8c/478a0dc6b6ed661451379447cdbec77c05741a75736d97e5b2b729687828/lxml-6.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b8f18914faec94132e5b91e69d76a5c1d7b0c73e2489ea8929c4aaa10b76bbf7", size = 5248906, upload-time = "2025-09-22T04:01:09.452Z" }, { url = "https://files.pythonhosted.org/packages/2d/d9/5be3a6ab2784cdf9accb0703b65e1b64fcdd9311c9f007630c7db0cfcce1/lxml-6.0.2-cp311-cp311-win32.whl", hash = "sha256:6605c604e6daa9e0d7f0a2137bdc47a2e93b59c60a65466353e37f8272f47c46", size = 3610357, upload-time = "2025-09-22T04:01:11.102Z" }, { url = "https://files.pythonhosted.org/packages/e2/7d/ca6fb13349b473d5732fb0ee3eec8f6c80fc0688e76b7d79c1008481bf1f/lxml-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e5867f2651016a3afd8dd2c8238baa66f1e2802f44bc17e236f547ace6647078", size = 4036583, upload-time = "2025-09-22T04:01:12.766Z" }, { url = "https://files.pythonhosted.org/packages/ab/a2/51363b5ecd3eab46563645f3a2c3836a2fc67d01a1b87c5017040f39f567/lxml-6.0.2-cp311-cp311-win_arm64.whl", hash = "sha256:4197fb2534ee05fd3e7afaab5d8bfd6c2e186f65ea7f9cd6a82809c887bd1285", size = 3680591, upload-time = "2025-09-22T04:01:14.874Z" }, { url = "https://files.pythonhosted.org/packages/f3/c8/8ff2bc6b920c84355146cd1ab7d181bc543b89241cfb1ebee824a7c81457/lxml-6.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a59f5448ba2ceccd06995c95ea59a7674a10de0810f2ce90c9006f3cbc044456", size = 8661887, upload-time = "2025-09-22T04:01:17.265Z" }, { url = "https://files.pythonhosted.org/packages/37/6f/9aae1008083bb501ef63284220ce81638332f9ccbfa53765b2b7502203cf/lxml-6.0.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e8113639f3296706fbac34a30813929e29247718e88173ad849f57ca59754924", size = 4667818, upload-time = "2025-09-22T04:01:19.688Z" }, { url = "https://files.pythonhosted.org/packages/f1/ca/31fb37f99f37f1536c133476674c10b577e409c0a624384147653e38baf2/lxml-6.0.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a8bef9b9825fa8bc816a6e641bb67219489229ebc648be422af695f6e7a4fa7f", size = 4950807, upload-time = "2025-09-22T04:01:21.487Z" }, { url = "https://files.pythonhosted.org/packages/da/87/f6cb9442e4bada8aab5ae7e1046264f62fdbeaa6e3f6211b93f4c0dd97f1/lxml-6.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:65ea18d710fd14e0186c2f973dc60bb52039a275f82d3c44a0e42b43440ea534", size = 5109179, upload-time = "2025-09-22T04:01:23.32Z" }, { url = "https://files.pythonhosted.org/packages/c8/20/a7760713e65888db79bbae4f6146a6ae5c04e4a204a3c48896c408cd6ed2/lxml-6.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c371aa98126a0d4c739ca93ceffa0fd7a5d732e3ac66a46e74339acd4d334564", size = 5023044, upload-time = "2025-09-22T04:01:25.118Z" }, { url = "https://files.pythonhosted.org/packages/a2/b0/7e64e0460fcb36471899f75831509098f3fd7cd02a3833ac517433cb4f8f/lxml-6.0.2-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:700efd30c0fa1a3581d80a748157397559396090a51d306ea59a70020223d16f", size = 5359685, upload-time = "2025-09-22T04:01:27.398Z" }, { url = "https://files.pythonhosted.org/packages/b9/e1/e5df362e9ca4e2f48ed6411bd4b3a0ae737cc842e96877f5bf9428055ab4/lxml-6.0.2-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c33e66d44fe60e72397b487ee92e01da0d09ba2d66df8eae42d77b6d06e5eba0", size = 5654127, upload-time = "2025-09-22T04:01:29.629Z" }, { url = "https://files.pythonhosted.org/packages/c6/d1/232b3309a02d60f11e71857778bfcd4acbdb86c07db8260caf7d008b08f8/lxml-6.0.2-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:90a345bbeaf9d0587a3aaffb7006aa39ccb6ff0e96a57286c0cb2fd1520ea192", size = 5253958, upload-time = "2025-09-22T04:01:31.535Z" }, { url = "https://files.pythonhosted.org/packages/35/35/d955a070994725c4f7d80583a96cab9c107c57a125b20bb5f708fe941011/lxml-6.0.2-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:064fdadaf7a21af3ed1dcaa106b854077fbeada827c18f72aec9346847cd65d0", size = 4711541, upload-time = "2025-09-22T04:01:33.801Z" }, { url = "https://files.pythonhosted.org/packages/1e/be/667d17363b38a78c4bd63cfd4b4632029fd68d2c2dc81f25ce9eb5224dd5/lxml-6.0.2-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fbc74f42c3525ac4ffa4b89cbdd00057b6196bcefe8bce794abd42d33a018092", size = 5267426, upload-time = "2025-09-22T04:01:35.639Z" }, { url = "https://files.pythonhosted.org/packages/ea/47/62c70aa4a1c26569bc958c9ca86af2bb4e1f614e8c04fb2989833874f7ae/lxml-6.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6ddff43f702905a4e32bc24f3f2e2edfe0f8fde3277d481bffb709a4cced7a1f", size = 5064917, upload-time = "2025-09-22T04:01:37.448Z" }, { url = "https://files.pythonhosted.org/packages/bd/55/6ceddaca353ebd0f1908ef712c597f8570cc9c58130dbb89903198e441fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:6da5185951d72e6f5352166e3da7b0dc27aa70bd1090b0eb3f7f7212b53f1bb8", size = 4788795, upload-time = "2025-09-22T04:01:39.165Z" }, { url = "https://files.pythonhosted.org/packages/cf/e8/fd63e15da5e3fd4c2146f8bbb3c14e94ab850589beab88e547b2dbce22e1/lxml-6.0.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:57a86e1ebb4020a38d295c04fc79603c7899e0df71588043eb218722dabc087f", size = 5676759, upload-time = "2025-09-22T04:01:41.506Z" }, { url = "https://files.pythonhosted.org/packages/76/47/b3ec58dc5c374697f5ba37412cd2728f427d056315d124dd4b61da381877/lxml-6.0.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:2047d8234fe735ab77802ce5f2297e410ff40f5238aec569ad7c8e163d7b19a6", size = 5255666, upload-time = "2025-09-22T04:01:43.363Z" }, { url = "https://files.pythonhosted.org/packages/19/93/03ba725df4c3d72afd9596eef4a37a837ce8e4806010569bedfcd2cb68fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6f91fd2b2ea15a6800c8e24418c0775a1694eefc011392da73bc6cef2623b322", size = 5277989, upload-time = "2025-09-22T04:01:45.215Z" }, { url = "https://files.pythonhosted.org/packages/c6/80/c06de80bfce881d0ad738576f243911fccf992687ae09fd80b734712b39c/lxml-6.0.2-cp312-cp312-win32.whl", hash = "sha256:3ae2ce7d6fedfb3414a2b6c5e20b249c4c607f72cb8d2bb7cc9c6ec7c6f4e849", size = 3611456, upload-time = "2025-09-22T04:01:48.243Z" }, { url = "https://files.pythonhosted.org/packages/f7/d7/0cdfb6c3e30893463fb3d1e52bc5f5f99684a03c29a0b6b605cfae879cd5/lxml-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:72c87e5ee4e58a8354fb9c7c84cbf95a1c8236c127a5d1b7683f04bed8361e1f", size = 4011793, upload-time = "2025-09-22T04:01:50.042Z" }, { url = "https://files.pythonhosted.org/packages/ea/7b/93c73c67db235931527301ed3785f849c78991e2e34f3fd9a6663ffda4c5/lxml-6.0.2-cp312-cp312-win_arm64.whl", hash = "sha256:61cb10eeb95570153e0c0e554f58df92ecf5109f75eacad4a95baa709e26c3d6", size = 3672836, upload-time = "2025-09-22T04:01:52.145Z" }, { url = "https://files.pythonhosted.org/packages/53/fd/4e8f0540608977aea078bf6d79f128e0e2c2bba8af1acf775c30baa70460/lxml-6.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9b33d21594afab46f37ae58dfadd06636f154923c4e8a4d754b0127554eb2e77", size = 8648494, upload-time = "2025-09-22T04:01:54.242Z" }, { url = "https://files.pythonhosted.org/packages/5d/f4/2a94a3d3dfd6c6b433501b8d470a1960a20ecce93245cf2db1706adf6c19/lxml-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6c8963287d7a4c5c9a432ff487c52e9c5618667179c18a204bdedb27310f022f", size = 4661146, upload-time = "2025-09-22T04:01:56.282Z" }, { url = "https://files.pythonhosted.org/packages/25/2e/4efa677fa6b322013035d38016f6ae859d06cac67437ca7dc708a6af7028/lxml-6.0.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1941354d92699fb5ffe6ed7b32f9649e43c2feb4b97205f75866f7d21aa91452", size = 4946932, upload-time = "2025-09-22T04:01:58.989Z" }, { url = "https://files.pythonhosted.org/packages/ce/0f/526e78a6d38d109fdbaa5049c62e1d32fdd70c75fb61c4eadf3045d3d124/lxml-6.0.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bb2f6ca0ae2d983ded09357b84af659c954722bbf04dea98030064996d156048", size = 5100060, upload-time = "2025-09-22T04:02:00.812Z" }, { url = "https://files.pythonhosted.org/packages/81/76/99de58d81fa702cc0ea7edae4f4640416c2062813a00ff24bd70ac1d9c9b/lxml-6.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eb2a12d704f180a902d7fa778c6d71f36ceb7b0d317f34cdc76a5d05aa1dd1df", size = 5019000, upload-time = "2025-09-22T04:02:02.671Z" }, { url = "https://files.pythonhosted.org/packages/b5/35/9e57d25482bc9a9882cb0037fdb9cc18f4b79d85df94fa9d2a89562f1d25/lxml-6.0.2-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:6ec0e3f745021bfed19c456647f0298d60a24c9ff86d9d051f52b509663feeb1", size = 5348496, upload-time = "2025-09-22T04:02:04.904Z" }, { url = "https://files.pythonhosted.org/packages/a6/8e/cb99bd0b83ccc3e8f0f528e9aa1f7a9965dfec08c617070c5db8d63a87ce/lxml-6.0.2-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:846ae9a12d54e368933b9759052d6206a9e8b250291109c48e350c1f1f49d916", size = 5643779, upload-time = "2025-09-22T04:02:06.689Z" }, { url = "https://files.pythonhosted.org/packages/d0/34/9e591954939276bb679b73773836c6684c22e56d05980e31d52a9a8deb18/lxml-6.0.2-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ef9266d2aa545d7374938fb5c484531ef5a2ec7f2d573e62f8ce722c735685fd", size = 5244072, upload-time = "2025-09-22T04:02:08.587Z" }, { url = "https://files.pythonhosted.org/packages/8d/27/b29ff065f9aaca443ee377aff699714fcbffb371b4fce5ac4ca759e436d5/lxml-6.0.2-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:4077b7c79f31755df33b795dc12119cb557a0106bfdab0d2c2d97bd3cf3dffa6", size = 4718675, upload-time = "2025-09-22T04:02:10.783Z" }, { url = "https://files.pythonhosted.org/packages/2b/9f/f756f9c2cd27caa1a6ef8c32ae47aadea697f5c2c6d07b0dae133c244fbe/lxml-6.0.2-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a7c5d5e5f1081955358533be077166ee97ed2571d6a66bdba6ec2f609a715d1a", size = 5255171, upload-time = "2025-09-22T04:02:12.631Z" }, { url = "https://files.pythonhosted.org/packages/61/46/bb85ea42d2cb1bd8395484fd72f38e3389611aa496ac7772da9205bbda0e/lxml-6.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:8f8d0cbd0674ee89863a523e6994ac25fd5be9c8486acfc3e5ccea679bad2679", size = 5057175, upload-time = "2025-09-22T04:02:14.718Z" }, { url = "https://files.pythonhosted.org/packages/95/0c/443fc476dcc8e41577f0af70458c50fe299a97bb6b7505bb1ae09aa7f9ac/lxml-6.0.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2cbcbf6d6e924c28f04a43f3b6f6e272312a090f269eff68a2982e13e5d57659", size = 4785688, upload-time = "2025-09-22T04:02:16.957Z" }, { url = "https://files.pythonhosted.org/packages/48/78/6ef0b359d45bb9697bc5a626e1992fa5d27aa3f8004b137b2314793b50a0/lxml-6.0.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dfb874cfa53340009af6bdd7e54ebc0d21012a60a4e65d927c2e477112e63484", size = 5660655, upload-time = "2025-09-22T04:02:18.815Z" }, { url = "https://files.pythonhosted.org/packages/ff/ea/e1d33808f386bc1339d08c0dcada6e4712d4ed8e93fcad5f057070b7988a/lxml-6.0.2-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:fb8dae0b6b8b7f9e96c26fdd8121522ce5de9bb5538010870bd538683d30e9a2", size = 5247695, upload-time = "2025-09-22T04:02:20.593Z" }, { url = "https://files.pythonhosted.org/packages/4f/47/eba75dfd8183673725255247a603b4ad606f4ae657b60c6c145b381697da/lxml-6.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:358d9adae670b63e95bc59747c72f4dc97c9ec58881d4627fe0120da0f90d314", size = 5269841, upload-time = "2025-09-22T04:02:22.489Z" }, { url = "https://files.pythonhosted.org/packages/76/04/5c5e2b8577bc936e219becb2e98cdb1aca14a4921a12995b9d0c523502ae/lxml-6.0.2-cp313-cp313-win32.whl", hash = "sha256:e8cd2415f372e7e5a789d743d133ae474290a90b9023197fd78f32e2dc6873e2", size = 3610700, upload-time = "2025-09-22T04:02:24.465Z" }, { url = "https://files.pythonhosted.org/packages/fe/0a/4643ccc6bb8b143e9f9640aa54e38255f9d3b45feb2cbe7ae2ca47e8782e/lxml-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:b30d46379644fbfc3ab81f8f82ae4de55179414651f110a1514f0b1f8f6cb2d7", size = 4010347, upload-time = "2025-09-22T04:02:26.286Z" }, { url = "https://files.pythonhosted.org/packages/31/ef/dcf1d29c3f530577f61e5fe2f1bd72929acf779953668a8a47a479ae6f26/lxml-6.0.2-cp313-cp313-win_arm64.whl", hash = "sha256:13dcecc9946dca97b11b7c40d29fba63b55ab4170d3c0cf8c0c164343b9bfdcf", size = 3671248, upload-time = "2025-09-22T04:02:27.918Z" }, { url = "https://files.pythonhosted.org/packages/03/15/d4a377b385ab693ce97b472fe0c77c2b16ec79590e688b3ccc71fba19884/lxml-6.0.2-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:b0c732aa23de8f8aec23f4b580d1e52905ef468afb4abeafd3fec77042abb6fe", size = 8659801, upload-time = "2025-09-22T04:02:30.113Z" }, { url = "https://files.pythonhosted.org/packages/c8/e8/c128e37589463668794d503afaeb003987373c5f94d667124ffd8078bbd9/lxml-6.0.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:4468e3b83e10e0317a89a33d28f7aeba1caa4d1a6fd457d115dd4ffe90c5931d", size = 4659403, upload-time = "2025-09-22T04:02:32.119Z" }, { url = "https://files.pythonhosted.org/packages/00/ce/74903904339decdf7da7847bb5741fc98a5451b42fc419a86c0c13d26fe2/lxml-6.0.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:abd44571493973bad4598a3be7e1d807ed45aa2adaf7ab92ab7c62609569b17d", size = 4966974, upload-time = "2025-09-22T04:02:34.155Z" }, { url = "https://files.pythonhosted.org/packages/1f/d3/131dec79ce61c5567fecf82515bd9bc36395df42501b50f7f7f3bd065df0/lxml-6.0.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:370cd78d5855cfbffd57c422851f7d3864e6ae72d0da615fca4dad8c45d375a5", size = 5102953, upload-time = "2025-09-22T04:02:36.054Z" }, { url = "https://files.pythonhosted.org/packages/3a/ea/a43ba9bb750d4ffdd885f2cd333572f5bb900cd2408b67fdda07e85978a0/lxml-6.0.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:901e3b4219fa04ef766885fb40fa516a71662a4c61b80c94d25336b4934b71c0", size = 5055054, upload-time = "2025-09-22T04:02:38.154Z" }, { url = "https://files.pythonhosted.org/packages/60/23/6885b451636ae286c34628f70a7ed1fcc759f8d9ad382d132e1c8d3d9bfd/lxml-6.0.2-cp314-cp314-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:a4bf42d2e4cf52c28cc1812d62426b9503cdb0c87a6de81442626aa7d69707ba", size = 5352421, upload-time = "2025-09-22T04:02:40.413Z" }, { url = "https://files.pythonhosted.org/packages/48/5b/fc2ddfc94ddbe3eebb8e9af6e3fd65e2feba4967f6a4e9683875c394c2d8/lxml-6.0.2-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2c7fdaa4d7c3d886a42534adec7cfac73860b89b4e5298752f60aa5984641a0", size = 5673684, upload-time = "2025-09-22T04:02:42.288Z" }, { url = "https://files.pythonhosted.org/packages/29/9c/47293c58cc91769130fbf85531280e8cc7868f7fbb6d92f4670071b9cb3e/lxml-6.0.2-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:98a5e1660dc7de2200b00d53fa00bcd3c35a3608c305d45a7bbcaf29fa16e83d", size = 5252463, upload-time = "2025-09-22T04:02:44.165Z" }, { url = "https://files.pythonhosted.org/packages/9b/da/ba6eceb830c762b48e711ded880d7e3e89fc6c7323e587c36540b6b23c6b/lxml-6.0.2-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:dc051506c30b609238d79eda75ee9cab3e520570ec8219844a72a46020901e37", size = 4698437, upload-time = "2025-09-22T04:02:46.524Z" }, { url = "https://files.pythonhosted.org/packages/a5/24/7be3f82cb7990b89118d944b619e53c656c97dc89c28cfb143fdb7cd6f4d/lxml-6.0.2-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8799481bbdd212470d17513a54d568f44416db01250f49449647b5ab5b5dccb9", size = 5269890, upload-time = "2025-09-22T04:02:48.812Z" }, { url = "https://files.pythonhosted.org/packages/1b/bd/dcfb9ea1e16c665efd7538fc5d5c34071276ce9220e234217682e7d2c4a5/lxml-6.0.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9261bb77c2dab42f3ecd9103951aeca2c40277701eb7e912c545c1b16e0e4917", size = 5097185, upload-time = "2025-09-22T04:02:50.746Z" }, { url = "https://files.pythonhosted.org/packages/21/04/a60b0ff9314736316f28316b694bccbbabe100f8483ad83852d77fc7468e/lxml-6.0.2-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:65ac4a01aba353cfa6d5725b95d7aed6356ddc0a3cd734de00124d285b04b64f", size = 4745895, upload-time = "2025-09-22T04:02:52.968Z" }, { url = "https://files.pythonhosted.org/packages/d6/bd/7d54bd1846e5a310d9c715921c5faa71cf5c0853372adf78aee70c8d7aa2/lxml-6.0.2-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:b22a07cbb82fea98f8a2fd814f3d1811ff9ed76d0fc6abc84eb21527596e7cc8", size = 5695246, upload-time = "2025-09-22T04:02:54.798Z" }, { url = "https://files.pythonhosted.org/packages/fd/32/5643d6ab947bc371da21323acb2a6e603cedbe71cb4c99c8254289ab6f4e/lxml-6.0.2-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:d759cdd7f3e055d6bc8d9bec3ad905227b2e4c785dc16c372eb5b5e83123f48a", size = 5260797, upload-time = "2025-09-22T04:02:57.058Z" }, { url = "https://files.pythonhosted.org/packages/33/da/34c1ec4cff1eea7d0b4cd44af8411806ed943141804ac9c5d565302afb78/lxml-6.0.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:945da35a48d193d27c188037a05fec5492937f66fb1958c24fc761fb9d40d43c", size = 5277404, upload-time = "2025-09-22T04:02:58.966Z" }, { url = "https://files.pythonhosted.org/packages/82/57/4eca3e31e54dc89e2c3507e1cd411074a17565fa5ffc437c4ae0a00d439e/lxml-6.0.2-cp314-cp314-win32.whl", hash = "sha256:be3aaa60da67e6153eb15715cc2e19091af5dc75faef8b8a585aea372507384b", size = 3670072, upload-time = "2025-09-22T04:03:38.05Z" }, { url = "https://files.pythonhosted.org/packages/e3/e0/c96cf13eccd20c9421ba910304dae0f619724dcf1702864fd59dd386404d/lxml-6.0.2-cp314-cp314-win_amd64.whl", hash = "sha256:fa25afbadead523f7001caf0c2382afd272c315a033a7b06336da2637d92d6ed", size = 4080617, upload-time = "2025-09-22T04:03:39.835Z" }, { url = "https://files.pythonhosted.org/packages/d5/5d/b3f03e22b3d38d6f188ef044900a9b29b2fe0aebb94625ce9fe244011d34/lxml-6.0.2-cp314-cp314-win_arm64.whl", hash = "sha256:063eccf89df5b24e361b123e257e437f9e9878f425ee9aae3144c77faf6da6d8", size = 3754930, upload-time = "2025-09-22T04:03:41.565Z" }, { url = "https://files.pythonhosted.org/packages/5e/5c/42c2c4c03554580708fc738d13414801f340c04c3eff90d8d2d227145275/lxml-6.0.2-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:6162a86d86893d63084faaf4ff937b3daea233e3682fb4474db07395794fa80d", size = 8910380, upload-time = "2025-09-22T04:03:01.645Z" }, { url = "https://files.pythonhosted.org/packages/bf/4f/12df843e3e10d18d468a7557058f8d3733e8b6e12401f30b1ef29360740f/lxml-6.0.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:414aaa94e974e23a3e92e7ca5b97d10c0cf37b6481f50911032c69eeb3991bba", size = 4775632, upload-time = "2025-09-22T04:03:03.814Z" }, { url = "https://files.pythonhosted.org/packages/e4/0c/9dc31e6c2d0d418483cbcb469d1f5a582a1cd00a1f4081953d44051f3c50/lxml-6.0.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:48461bd21625458dd01e14e2c38dd0aea69addc3c4f960c30d9f59d7f93be601", size = 4975171, upload-time = "2025-09-22T04:03:05.651Z" }, { url = "https://files.pythonhosted.org/packages/e7/2b/9b870c6ca24c841bdd887504808f0417aa9d8d564114689266f19ddf29c8/lxml-6.0.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:25fcc59afc57d527cfc78a58f40ab4c9b8fd096a9a3f964d2781ffb6eb33f4ed", size = 5110109, upload-time = "2025-09-22T04:03:07.452Z" }, { url = "https://files.pythonhosted.org/packages/bf/0c/4f5f2a4dd319a178912751564471355d9019e220c20d7db3fb8307ed8582/lxml-6.0.2-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5179c60288204e6ddde3f774a93350177e08876eaf3ab78aa3a3649d43eb7d37", size = 5041061, upload-time = "2025-09-22T04:03:09.297Z" }, { url = "https://files.pythonhosted.org/packages/12/64/554eed290365267671fe001a20d72d14f468ae4e6acef1e179b039436967/lxml-6.0.2-cp314-cp314t-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:967aab75434de148ec80597b75062d8123cadf2943fb4281f385141e18b21338", size = 5306233, upload-time = "2025-09-22T04:03:11.651Z" }, { url = "https://files.pythonhosted.org/packages/7a/31/1d748aa275e71802ad9722df32a7a35034246b42c0ecdd8235412c3396ef/lxml-6.0.2-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d100fcc8930d697c6561156c6810ab4a508fb264c8b6779e6e61e2ed5e7558f9", size = 5604739, upload-time = "2025-09-22T04:03:13.592Z" }, { url = "https://files.pythonhosted.org/packages/8f/41/2c11916bcac09ed561adccacceaedd2bf0e0b25b297ea92aab99fd03d0fa/lxml-6.0.2-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ca59e7e13e5981175b8b3e4ab84d7da57993eeff53c07764dcebda0d0e64ecd", size = 5225119, upload-time = "2025-09-22T04:03:15.408Z" }, { url = "https://files.pythonhosted.org/packages/99/05/4e5c2873d8f17aa018e6afde417c80cc5d0c33be4854cce3ef5670c49367/lxml-6.0.2-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:957448ac63a42e2e49531b9d6c0fa449a1970dbc32467aaad46f11545be9af1d", size = 4633665, upload-time = "2025-09-22T04:03:17.262Z" }, { url = "https://files.pythonhosted.org/packages/0f/c9/dcc2da1bebd6275cdc723b515f93edf548b82f36a5458cca3578bc899332/lxml-6.0.2-cp314-cp314t-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b7fc49c37f1786284b12af63152fe1d0990722497e2d5817acfe7a877522f9a9", size = 5234997, upload-time = "2025-09-22T04:03:19.14Z" }, { url = "https://files.pythonhosted.org/packages/9c/e2/5172e4e7468afca64a37b81dba152fc5d90e30f9c83c7c3213d6a02a5ce4/lxml-6.0.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e19e0643cc936a22e837f79d01a550678da8377d7d801a14487c10c34ee49c7e", size = 5090957, upload-time = "2025-09-22T04:03:21.436Z" }, { url = "https://files.pythonhosted.org/packages/a5/b3/15461fd3e5cd4ddcb7938b87fc20b14ab113b92312fc97afe65cd7c85de1/lxml-6.0.2-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:1db01e5cf14345628e0cbe71067204db658e2fb8e51e7f33631f5f4735fefd8d", size = 4764372, upload-time = "2025-09-22T04:03:23.27Z" }, { url = "https://files.pythonhosted.org/packages/05/33/f310b987c8bf9e61c4dd8e8035c416bd3230098f5e3cfa69fc4232de7059/lxml-6.0.2-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:875c6b5ab39ad5291588aed6925fac99d0097af0dd62f33c7b43736043d4a2ec", size = 5634653, upload-time = "2025-09-22T04:03:25.767Z" }, { url = "https://files.pythonhosted.org/packages/70/ff/51c80e75e0bc9382158133bdcf4e339b5886c6ee2418b5199b3f1a61ed6d/lxml-6.0.2-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:cdcbed9ad19da81c480dfd6dd161886db6096083c9938ead313d94b30aadf272", size = 5233795, upload-time = "2025-09-22T04:03:27.62Z" }, { url = "https://files.pythonhosted.org/packages/56/4d/4856e897df0d588789dd844dbed9d91782c4ef0b327f96ce53c807e13128/lxml-6.0.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:80dadc234ebc532e09be1975ff538d154a7fa61ea5031c03d25178855544728f", size = 5257023, upload-time = "2025-09-22T04:03:30.056Z" }, { url = "https://files.pythonhosted.org/packages/0f/85/86766dfebfa87bea0ab78e9ff7a4b4b45225df4b4d3b8cc3c03c5cd68464/lxml-6.0.2-cp314-cp314t-win32.whl", hash = "sha256:da08e7bb297b04e893d91087df19638dc7a6bb858a954b0cc2b9f5053c922312", size = 3911420, upload-time = "2025-09-22T04:03:32.198Z" }, { url = "https://files.pythonhosted.org/packages/fe/1a/b248b355834c8e32614650b8008c69ffeb0ceb149c793961dd8c0b991bb3/lxml-6.0.2-cp314-cp314t-win_amd64.whl", hash = "sha256:252a22982dca42f6155125ac76d3432e548a7625d56f5a273ee78a5057216eca", size = 4406837, upload-time = "2025-09-22T04:03:34.027Z" }, { url = "https://files.pythonhosted.org/packages/92/aa/df863bcc39c5e0946263454aba394de8a9084dbaff8ad143846b0d844739/lxml-6.0.2-cp314-cp314t-win_arm64.whl", hash = "sha256:bb4c1847b303835d89d785a18801a883436cdfd5dc3d62947f9c49e24f0f5a2c", size = 3822205, upload-time = "2025-09-22T04:03:36.249Z" }, { url = "https://files.pythonhosted.org/packages/e7/9c/780c9a8fce3f04690b374f72f41306866b0400b9d0fdf3e17aaa37887eed/lxml-6.0.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e748d4cf8fef2526bb2a589a417eba0c8674e29ffcb570ce2ceca44f1e567bf6", size = 3939264, upload-time = "2025-09-22T04:04:32.892Z" }, { url = "https://files.pythonhosted.org/packages/f5/5a/1ab260c00adf645d8bf7dec7f920f744b032f69130c681302821d5debea6/lxml-6.0.2-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4ddb1049fa0579d0cbd00503ad8c58b9ab34d1254c77bc6a5576d96ec7853dba", size = 4216435, upload-time = "2025-09-22T04:04:34.907Z" }, { url = "https://files.pythonhosted.org/packages/f2/37/565f3b3d7ffede22874b6d86be1a1763d00f4ea9fc5b9b6ccb11e4ec8612/lxml-6.0.2-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cb233f9c95f83707dae461b12b720c1af9c28c2d19208e1be03387222151daf5", size = 4325913, upload-time = "2025-09-22T04:04:37.205Z" }, { url = "https://files.pythonhosted.org/packages/22/ec/f3a1b169b2fb9d03467e2e3c0c752ea30e993be440a068b125fc7dd248b0/lxml-6.0.2-pp310-pypy310_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bc456d04db0515ce3320d714a1eac7a97774ff0849e7718b492d957da4631dd4", size = 4269357, upload-time = "2025-09-22T04:04:39.322Z" }, { url = "https://files.pythonhosted.org/packages/77/a2/585a28fe3e67daa1cf2f06f34490d556d121c25d500b10082a7db96e3bcd/lxml-6.0.2-pp310-pypy310_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2613e67de13d619fd283d58bda40bff0ee07739f624ffee8b13b631abf33083d", size = 4412295, upload-time = "2025-09-22T04:04:41.647Z" }, { url = "https://files.pythonhosted.org/packages/7b/d9/a57dd8bcebd7c69386c20263830d4fa72d27e6b72a229ef7a48e88952d9a/lxml-6.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:24a8e756c982c001ca8d59e87c80c4d9dcd4d9b44a4cbeb8d9be4482c514d41d", size = 3516913, upload-time = "2025-09-22T04:04:43.602Z" }, { url = "https://files.pythonhosted.org/packages/0b/11/29d08bc103a62c0eba8016e7ed5aeebbf1e4312e83b0b1648dd203b0e87d/lxml-6.0.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1c06035eafa8404b5cf475bb37a9f6088b0aca288d4ccc9d69389750d5543700", size = 3949829, upload-time = "2025-09-22T04:04:45.608Z" }, { url = "https://files.pythonhosted.org/packages/12/b3/52ab9a3b31e5ab8238da241baa19eec44d2ab426532441ee607165aebb52/lxml-6.0.2-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c7d13103045de1bdd6fe5d61802565f1a3537d70cd3abf596aa0af62761921ee", size = 4226277, upload-time = "2025-09-22T04:04:47.754Z" }, { url = "https://files.pythonhosted.org/packages/a0/33/1eaf780c1baad88224611df13b1c2a9dfa460b526cacfe769103ff50d845/lxml-6.0.2-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0a3c150a95fbe5ac91de323aa756219ef9cf7fde5a3f00e2281e30f33fa5fa4f", size = 4330433, upload-time = "2025-09-22T04:04:49.907Z" }, { url = "https://files.pythonhosted.org/packages/7a/c1/27428a2ff348e994ab4f8777d3a0ad510b6b92d37718e5887d2da99952a2/lxml-6.0.2-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:60fa43be34f78bebb27812ed90f1925ec99560b0fa1decdb7d12b84d857d31e9", size = 4272119, upload-time = "2025-09-22T04:04:51.801Z" }, { url = "https://files.pythonhosted.org/packages/f0/d0/3020fa12bcec4ab62f97aab026d57c2f0cfd480a558758d9ca233bb6a79d/lxml-6.0.2-pp311-pypy311_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:21c73b476d3cfe836be731225ec3421fa2f048d84f6df6a8e70433dff1376d5a", size = 4417314, upload-time = "2025-09-22T04:04:55.024Z" }, { url = "https://files.pythonhosted.org/packages/6c/77/d7f491cbc05303ac6801651aabeb262d43f319288c1ea96c66b1d2692ff3/lxml-6.0.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:27220da5be049e936c3aca06f174e8827ca6445a4353a1995584311487fc4e3e", size = 3518768, upload-time = "2025-09-22T04:04:57.097Z" }, ] [[package]] name = "markdown-it-py" version = "4.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mdurl" }, ] sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload-time = "2025-08-11T12:57:52.854Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload-time = "2025-08-11T12:57:51.923Z" }, ] [[package]] name = "markupsafe" version = "3.0.3" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/e8/4b/3541d44f3937ba468b75da9eebcae497dcf67adb65caa16760b0a6807ebb/markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559", size = 11631, upload-time = "2025-09-27T18:36:05.558Z" }, { url = "https://files.pythonhosted.org/packages/98/1b/fbd8eed11021cabd9226c37342fa6ca4e8a98d8188a8d9b66740494960e4/markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419", size = 12057, upload-time = "2025-09-27T18:36:07.165Z" }, { url = "https://files.pythonhosted.org/packages/40/01/e560d658dc0bb8ab762670ece35281dec7b6c1b33f5fbc09ebb57a185519/markupsafe-3.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695", size = 22050, upload-time = "2025-09-27T18:36:08.005Z" }, { url = "https://files.pythonhosted.org/packages/af/cd/ce6e848bbf2c32314c9b237839119c5a564a59725b53157c856e90937b7a/markupsafe-3.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591", size = 20681, upload-time = "2025-09-27T18:36:08.881Z" }, { url = "https://files.pythonhosted.org/packages/c9/2a/b5c12c809f1c3045c4d580b035a743d12fcde53cf685dbc44660826308da/markupsafe-3.0.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c", size = 20705, upload-time = "2025-09-27T18:36:10.131Z" }, { url = "https://files.pythonhosted.org/packages/cf/e3/9427a68c82728d0a88c50f890d0fc072a1484de2f3ac1ad0bfc1a7214fd5/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f", size = 21524, upload-time = "2025-09-27T18:36:11.324Z" }, { url = "https://files.pythonhosted.org/packages/bc/36/23578f29e9e582a4d0278e009b38081dbe363c5e7165113fad546918a232/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6", size = 20282, upload-time = "2025-09-27T18:36:12.573Z" }, { url = "https://files.pythonhosted.org/packages/56/21/dca11354e756ebd03e036bd8ad58d6d7168c80ce1fe5e75218e4945cbab7/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1", size = 20745, upload-time = "2025-09-27T18:36:13.504Z" }, { url = "https://files.pythonhosted.org/packages/87/99/faba9369a7ad6e4d10b6a5fbf71fa2a188fe4a593b15f0963b73859a1bbd/markupsafe-3.0.3-cp310-cp310-win32.whl", hash = "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa", size = 14571, upload-time = "2025-09-27T18:36:14.779Z" }, { url = "https://files.pythonhosted.org/packages/d6/25/55dc3ab959917602c96985cb1253efaa4ff42f71194bddeb61eb7278b8be/markupsafe-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8", size = 15056, upload-time = "2025-09-27T18:36:16.125Z" }, { url = "https://files.pythonhosted.org/packages/d0/9e/0a02226640c255d1da0b8d12e24ac2aa6734da68bff14c05dd53b94a0fc3/markupsafe-3.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1", size = 13932, upload-time = "2025-09-27T18:36:17.311Z" }, { url = "https://files.pythonhosted.org/packages/08/db/fefacb2136439fc8dd20e797950e749aa1f4997ed584c62cfb8ef7c2be0e/markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad", size = 11631, upload-time = "2025-09-27T18:36:18.185Z" }, { url = "https://files.pythonhosted.org/packages/e1/2e/5898933336b61975ce9dc04decbc0a7f2fee78c30353c5efba7f2d6ff27a/markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a", size = 12058, upload-time = "2025-09-27T18:36:19.444Z" }, { url = "https://files.pythonhosted.org/packages/1d/09/adf2df3699d87d1d8184038df46a9c80d78c0148492323f4693df54e17bb/markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50", size = 24287, upload-time = "2025-09-27T18:36:20.768Z" }, { url = "https://files.pythonhosted.org/packages/30/ac/0273f6fcb5f42e314c6d8cd99effae6a5354604d461b8d392b5ec9530a54/markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf", size = 22940, upload-time = "2025-09-27T18:36:22.249Z" }, { url = "https://files.pythonhosted.org/packages/19/ae/31c1be199ef767124c042c6c3e904da327a2f7f0cd63a0337e1eca2967a8/markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f", size = 21887, upload-time = "2025-09-27T18:36:23.535Z" }, { url = "https://files.pythonhosted.org/packages/b2/76/7edcab99d5349a4532a459e1fe64f0b0467a3365056ae550d3bcf3f79e1e/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a", size = 23692, upload-time = "2025-09-27T18:36:24.823Z" }, { url = "https://files.pythonhosted.org/packages/a4/28/6e74cdd26d7514849143d69f0bf2399f929c37dc2b31e6829fd2045b2765/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115", size = 21471, upload-time = "2025-09-27T18:36:25.95Z" }, { url = "https://files.pythonhosted.org/packages/62/7e/a145f36a5c2945673e590850a6f8014318d5577ed7e5920a4b3448e0865d/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a", size = 22923, upload-time = "2025-09-27T18:36:27.109Z" }, { url = "https://files.pythonhosted.org/packages/0f/62/d9c46a7f5c9adbeeeda52f5b8d802e1094e9717705a645efc71b0913a0a8/markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19", size = 14572, upload-time = "2025-09-27T18:36:28.045Z" }, { url = "https://files.pythonhosted.org/packages/83/8a/4414c03d3f891739326e1783338e48fb49781cc915b2e0ee052aa490d586/markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01", size = 15077, upload-time = "2025-09-27T18:36:29.025Z" }, { url = "https://files.pythonhosted.org/packages/35/73/893072b42e6862f319b5207adc9ae06070f095b358655f077f69a35601f0/markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c", size = 13876, upload-time = "2025-09-27T18:36:29.954Z" }, { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615, upload-time = "2025-09-27T18:36:30.854Z" }, { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020, upload-time = "2025-09-27T18:36:31.971Z" }, { url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332, upload-time = "2025-09-27T18:36:32.813Z" }, { url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947, upload-time = "2025-09-27T18:36:33.86Z" }, { url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962, upload-time = "2025-09-27T18:36:35.099Z" }, { url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760, upload-time = "2025-09-27T18:36:36.001Z" }, { url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529, upload-time = "2025-09-27T18:36:36.906Z" }, { url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015, upload-time = "2025-09-27T18:36:37.868Z" }, { url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540, upload-time = "2025-09-27T18:36:38.761Z" }, { url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105, upload-time = "2025-09-27T18:36:39.701Z" }, { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload-time = "2025-09-27T18:36:40.689Z" }, { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" }, { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" }, { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" }, { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" }, { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" }, { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" }, { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" }, { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" }, { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" }, { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" }, { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" }, { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" }, { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" }, { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" }, { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" }, { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" }, { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" }, { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" }, { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" }, { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" }, { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" }, { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" }, { url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619, upload-time = "2025-09-27T18:37:06.342Z" }, { url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029, upload-time = "2025-09-27T18:37:07.213Z" }, { url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408, upload-time = "2025-09-27T18:37:09.572Z" }, { url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005, upload-time = "2025-09-27T18:37:10.58Z" }, { url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048, upload-time = "2025-09-27T18:37:11.547Z" }, { url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821, upload-time = "2025-09-27T18:37:12.48Z" }, { url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606, upload-time = "2025-09-27T18:37:13.485Z" }, { url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043, upload-time = "2025-09-27T18:37:14.408Z" }, { url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747, upload-time = "2025-09-27T18:37:15.36Z" }, { url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341, upload-time = "2025-09-27T18:37:16.496Z" }, { url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073, upload-time = "2025-09-27T18:37:17.476Z" }, { url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661, upload-time = "2025-09-27T18:37:18.453Z" }, { url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069, upload-time = "2025-09-27T18:37:19.332Z" }, { url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670, upload-time = "2025-09-27T18:37:20.245Z" }, { url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598, upload-time = "2025-09-27T18:37:21.177Z" }, { url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261, upload-time = "2025-09-27T18:37:22.167Z" }, { url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835, upload-time = "2025-09-27T18:37:23.296Z" }, { url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733, upload-time = "2025-09-27T18:37:24.237Z" }, { url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672, upload-time = "2025-09-27T18:37:25.271Z" }, { url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819, upload-time = "2025-09-27T18:37:26.285Z" }, { url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426, upload-time = "2025-09-27T18:37:27.316Z" }, { url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" }, ] [[package]] name = "matplotlib-inline" version = "0.2.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "traitlets" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c7/74/97e72a36efd4ae2bccb3463284300f8953f199b5ffbc04cbbb0ec78f74b1/matplotlib_inline-0.2.1.tar.gz", hash = "sha256:e1ee949c340d771fc39e241ea75683deb94762c8fa5f2927ec57c83c4dffa9fe", size = 8110, upload-time = "2025-10-23T09:00:22.126Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/af/33/ee4519fa02ed11a94aef9559552f3b17bb863f2ecfe1a35dc7f548cde231/matplotlib_inline-0.2.1-py3-none-any.whl", hash = "sha256:d56ce5156ba6085e00a9d54fead6ed29a9c47e215cd1bba2e976ef39f5710a76", size = 9516, upload-time = "2025-10-23T09:00:20.675Z" }, ] [[package]] name = "mdurl" version = "0.1.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, ] [[package]] name = "mypy-extensions" version = "1.1.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, ] [[package]] name = "networkx" version = "3.4.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.11'", ] sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368, upload-time = "2024-10-21T12:39:38.695Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f", size = 1723263, upload-time = "2024-10-21T12:39:36.247Z" }, ] [[package]] name = "networkx" version = "3.6.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.12'", "python_full_version == '3.11.*'", ] sdist = { url = "https://files.pythonhosted.org/packages/6a/51/63fe664f3908c97be9d2e4f1158eb633317598cfa6e1fc14af5383f17512/networkx-3.6.1.tar.gz", hash = "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509", size = 2517025, upload-time = "2025-12-08T17:02:39.908Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762", size = 2068504, upload-time = "2025-12-08T17:02:38.159Z" }, ] [[package]] name = "nh3" version = "0.3.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/ca/a5/34c26015d3a434409f4d2a1cd8821a06c05238703f49283ffeb937bef093/nh3-0.3.2.tar.gz", hash = "sha256:f394759a06df8b685a4ebfb1874fb67a9cbfd58c64fc5ed587a663c0e63ec376", size = 19288, upload-time = "2025-10-30T11:17:45.948Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/5b/01/a1eda067c0ba823e5e2bb033864ae4854549e49fb6f3407d2da949106bfb/nh3-0.3.2-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:d18957a90806d943d141cc5e4a0fefa1d77cf0d7a156878bf9a66eed52c9cc7d", size = 1419839, upload-time = "2025-10-30T11:17:09.956Z" }, { url = "https://files.pythonhosted.org/packages/30/57/07826ff65d59e7e9cc789ef1dc405f660cabd7458a1864ab58aefa17411b/nh3-0.3.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45c953e57028c31d473d6b648552d9cab1efe20a42ad139d78e11d8f42a36130", size = 791183, upload-time = "2025-10-30T11:17:11.99Z" }, { url = "https://files.pythonhosted.org/packages/af/2f/e8a86f861ad83f3bb5455f596d5c802e34fcdb8c53a489083a70fd301333/nh3-0.3.2-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2c9850041b77a9147d6bbd6dbbf13eeec7009eb60b44e83f07fcb2910075bf9b", size = 829127, upload-time = "2025-10-30T11:17:13.192Z" }, { url = "https://files.pythonhosted.org/packages/d8/97/77aef4daf0479754e8e90c7f8f48f3b7b8725a3b8c0df45f2258017a6895/nh3-0.3.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:403c11563e50b915d0efdb622866d1d9e4506bce590ef7da57789bf71dd148b5", size = 997131, upload-time = "2025-10-30T11:17:14.677Z" }, { url = "https://files.pythonhosted.org/packages/41/ee/fd8140e4df9d52143e89951dd0d797f5546004c6043285289fbbe3112293/nh3-0.3.2-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:0dca4365db62b2d71ff1620ee4f800c4729849906c5dd504ee1a7b2389558e31", size = 1068783, upload-time = "2025-10-30T11:17:15.861Z" }, { url = "https://files.pythonhosted.org/packages/87/64/bdd9631779e2d588b08391f7555828f352e7f6427889daf2fa424bfc90c9/nh3-0.3.2-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:0fe7ee035dd7b2290715baf29cb27167dddd2ff70ea7d052c958dbd80d323c99", size = 994732, upload-time = "2025-10-30T11:17:17.155Z" }, { url = "https://files.pythonhosted.org/packages/79/66/90190033654f1f28ca98e3d76b8be1194505583f9426b0dcde782a3970a2/nh3-0.3.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a40202fd58e49129764f025bbaae77028e420f1d5b3c8e6f6fd3a6490d513868", size = 975997, upload-time = "2025-10-30T11:17:18.77Z" }, { url = "https://files.pythonhosted.org/packages/34/30/ebf8e2e8d71fdb5a5d5d8836207177aed1682df819cbde7f42f16898946c/nh3-0.3.2-cp314-cp314t-win32.whl", hash = "sha256:1f9ba555a797dbdcd844b89523f29cdc90973d8bd2e836ea6b962cf567cadd93", size = 583364, upload-time = "2025-10-30T11:17:20.286Z" }, { url = "https://files.pythonhosted.org/packages/94/ae/95c52b5a75da429f11ca8902c2128f64daafdc77758d370e4cc310ecda55/nh3-0.3.2-cp314-cp314t-win_amd64.whl", hash = "sha256:dce4248edc427c9b79261f3e6e2b3ecbdd9b88c267012168b4a7b3fc6fd41d13", size = 589982, upload-time = "2025-10-30T11:17:21.384Z" }, { url = "https://files.pythonhosted.org/packages/b4/bd/c7d862a4381b95f2469704de32c0ad419def0f4a84b7a138a79532238114/nh3-0.3.2-cp314-cp314t-win_arm64.whl", hash = "sha256:019ecbd007536b67fdf76fab411b648fb64e2257ca3262ec80c3425c24028c80", size = 577126, upload-time = "2025-10-30T11:17:22.755Z" }, { url = "https://files.pythonhosted.org/packages/b6/3e/f5a5cc2885c24be13e9b937441bd16a012ac34a657fe05e58927e8af8b7a/nh3-0.3.2-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:7064ccf5ace75825bd7bf57859daaaf16ed28660c1c6b306b649a9eda4b54b1e", size = 1431980, upload-time = "2025-10-30T11:17:25.457Z" }, { url = "https://files.pythonhosted.org/packages/7f/f7/529a99324d7ef055de88b690858f4189379708abae92ace799365a797b7f/nh3-0.3.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8745454cdd28bbbc90861b80a0111a195b0e3961b9fa2e672be89eb199fa5d8", size = 820805, upload-time = "2025-10-30T11:17:26.98Z" }, { url = "https://files.pythonhosted.org/packages/3d/62/19b7c50ccd1fa7d0764822d2cea8f2a320f2fd77474c7a1805cb22cf69b0/nh3-0.3.2-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72d67c25a84579f4a432c065e8b4274e53b7cf1df8f792cf846abfe2c3090866", size = 803527, upload-time = "2025-10-30T11:17:28.284Z" }, { url = "https://files.pythonhosted.org/packages/4a/ca/f022273bab5440abff6302731a49410c5ef66b1a9502ba3fbb2df998d9ff/nh3-0.3.2-cp38-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:13398e676a14d6233f372c75f52d5ae74f98210172991f7a3142a736bd92b131", size = 1051674, upload-time = "2025-10-30T11:17:29.909Z" }, { url = "https://files.pythonhosted.org/packages/fa/f7/5728e3b32a11daf5bd21cf71d91c463f74305938bc3eb9e0ac1ce141646e/nh3-0.3.2-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:03d617e5c8aa7331bd2659c654e021caf9bba704b109e7b2b28b039a00949fe5", size = 1004737, upload-time = "2025-10-30T11:17:31.205Z" }, { url = "https://files.pythonhosted.org/packages/53/7f/f17e0dba0a99cee29e6cee6d4d52340ef9cb1f8a06946d3a01eb7ec2fb01/nh3-0.3.2-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2f55c4d2d5a207e74eefe4d828067bbb01300e06e2a7436142f915c5928de07", size = 911745, upload-time = "2025-10-30T11:17:32.945Z" }, { url = "https://files.pythonhosted.org/packages/42/0f/c76bf3dba22c73c38e9b1113b017cf163f7696f50e003404ec5ecdb1e8a6/nh3-0.3.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bb18403f02b655a1bbe4e3a4696c2ae1d6ae8f5991f7cacb684b1ae27e6c9f7", size = 797184, upload-time = "2025-10-30T11:17:34.226Z" }, { url = "https://files.pythonhosted.org/packages/08/a1/73d8250f888fb0ddf1b119b139c382f8903d8bb0c5bd1f64afc7e38dad1d/nh3-0.3.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6d66f41672eb4060cf87c037f760bdbc6847852ca9ef8e9c5a5da18f090abf87", size = 838556, upload-time = "2025-10-30T11:17:35.875Z" }, { url = "https://files.pythonhosted.org/packages/d1/09/deb57f1fb656a7a5192497f4a287b0ade5a2ff6b5d5de4736d13ef6d2c1f/nh3-0.3.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f97f8b25cb2681d25e2338148159447e4d689aafdccfcf19e61ff7db3905768a", size = 1006695, upload-time = "2025-10-30T11:17:37.071Z" }, { url = "https://files.pythonhosted.org/packages/b6/61/8f4d41c4ccdac30e4b1a4fa7be4b0f9914d8314a5058472f84c8e101a418/nh3-0.3.2-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:2ab70e8c6c7d2ce953d2a58102eefa90c2d0a5ed7aa40c7e29a487bc5e613131", size = 1075471, upload-time = "2025-10-30T11:17:38.225Z" }, { url = "https://files.pythonhosted.org/packages/b0/c6/966aec0cb4705e69f6c3580422c239205d5d4d0e50fac380b21e87b6cf1b/nh3-0.3.2-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:1710f3901cd6440ca92494ba2eb6dc260f829fa8d9196b659fa10de825610ce0", size = 1002439, upload-time = "2025-10-30T11:17:39.553Z" }, { url = "https://files.pythonhosted.org/packages/e2/c8/97a2d5f7a314cce2c5c49f30c6f161b7f3617960ade4bfc2fd1ee092cb20/nh3-0.3.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:91e9b001101fb4500a2aafe3e7c92928d85242d38bf5ac0aba0b7480da0a4cd6", size = 987439, upload-time = "2025-10-30T11:17:40.81Z" }, { url = "https://files.pythonhosted.org/packages/0d/95/2d6fc6461687d7a171f087995247dec33e8749a562bfadd85fb5dbf37a11/nh3-0.3.2-cp38-abi3-win32.whl", hash = "sha256:169db03df90da63286e0560ea0efa9b6f3b59844a9735514a1d47e6bb2c8c61b", size = 589826, upload-time = "2025-10-30T11:17:42.239Z" }, { url = "https://files.pythonhosted.org/packages/64/9a/1a1c154f10a575d20dd634e5697805e589bbdb7673a0ad00e8da90044ba7/nh3-0.3.2-cp38-abi3-win_amd64.whl", hash = "sha256:562da3dca7a17f9077593214a9781a94b8d76de4f158f8c895e62f09573945fe", size = 596406, upload-time = "2025-10-30T11:17:43.773Z" }, { url = "https://files.pythonhosted.org/packages/9e/7e/a96255f63b7aef032cbee8fc4d6e37def72e3aaedc1f72759235e8f13cb1/nh3-0.3.2-cp38-abi3-win_arm64.whl", hash = "sha256:cf5964d54edd405e68583114a7cba929468bcd7db5e676ae38ee954de1cfc104", size = 584162, upload-time = "2025-10-30T11:17:44.96Z" }, ] [[package]] name = "nodeenv" version = "1.10.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/24/bf/d1bda4f6168e0b2e9e5958945e01910052158313224ada5ce1fb2e1113b8/nodeenv-1.10.0.tar.gz", hash = "sha256:996c191ad80897d076bdfba80a41994c2b47c68e224c542b48feba42ba00f8bb", size = 55611, upload-time = "2025-12-20T14:08:54.006Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/88/b2/d0896bdcdc8d28a7fc5717c305f1a861c26e18c05047949fb371034d98bd/nodeenv-1.10.0-py2.py3-none-any.whl", hash = "sha256:5bb13e3eed2923615535339b3c620e76779af4cb4c6a90deccc9e36b274d3827", size = 23438, upload-time = "2025-12-20T14:08:52.782Z" }, ] [[package]] name = "numpy" version = "2.2.6" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.11'", ] sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/9a/3e/ed6db5be21ce87955c0cbd3009f2803f59fa08df21b5df06862e2d8e2bdd/numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb", size = 21165245, upload-time = "2025-05-17T21:27:58.555Z" }, { url = "https://files.pythonhosted.org/packages/22/c2/4b9221495b2a132cc9d2eb862e21d42a009f5a60e45fc44b00118c174bff/numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90", size = 14360048, upload-time = "2025-05-17T21:28:21.406Z" }, { url = "https://files.pythonhosted.org/packages/fd/77/dc2fcfc66943c6410e2bf598062f5959372735ffda175b39906d54f02349/numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163", size = 5340542, upload-time = "2025-05-17T21:28:30.931Z" }, { url = "https://files.pythonhosted.org/packages/7a/4f/1cb5fdc353a5f5cc7feb692db9b8ec2c3d6405453f982435efc52561df58/numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf", size = 6878301, upload-time = "2025-05-17T21:28:41.613Z" }, { url = "https://files.pythonhosted.org/packages/eb/17/96a3acd228cec142fcb8723bd3cc39c2a474f7dcf0a5d16731980bcafa95/numpy-2.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83", size = 14297320, upload-time = "2025-05-17T21:29:02.78Z" }, { url = "https://files.pythonhosted.org/packages/b4/63/3de6a34ad7ad6646ac7d2f55ebc6ad439dbbf9c4370017c50cf403fb19b5/numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915", size = 16801050, upload-time = "2025-05-17T21:29:27.675Z" }, { url = "https://files.pythonhosted.org/packages/07/b6/89d837eddef52b3d0cec5c6ba0456c1bf1b9ef6a6672fc2b7873c3ec4e2e/numpy-2.2.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680", size = 15807034, upload-time = "2025-05-17T21:29:51.102Z" }, { url = "https://files.pythonhosted.org/packages/01/c8/dc6ae86e3c61cfec1f178e5c9f7858584049b6093f843bca541f94120920/numpy-2.2.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289", size = 18614185, upload-time = "2025-05-17T21:30:18.703Z" }, { url = "https://files.pythonhosted.org/packages/5b/c5/0064b1b7e7c89137b471ccec1fd2282fceaae0ab3a9550f2568782d80357/numpy-2.2.6-cp310-cp310-win32.whl", hash = "sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d", size = 6527149, upload-time = "2025-05-17T21:30:29.788Z" }, { url = "https://files.pythonhosted.org/packages/a3/dd/4b822569d6b96c39d1215dbae0582fd99954dcbcf0c1a13c61783feaca3f/numpy-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3", size = 12904620, upload-time = "2025-05-17T21:30:48.994Z" }, { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload-time = "2025-05-17T21:31:19.36Z" }, { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload-time = "2025-05-17T21:31:41.087Z" }, { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload-time = "2025-05-17T21:31:50.072Z" }, { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload-time = "2025-05-17T21:32:01.712Z" }, { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005, upload-time = "2025-05-17T21:32:23.332Z" }, { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570, upload-time = "2025-05-17T21:32:47.991Z" }, { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548, upload-time = "2025-05-17T21:33:11.728Z" }, { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521, upload-time = "2025-05-17T21:33:39.139Z" }, { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866, upload-time = "2025-05-17T21:33:50.273Z" }, { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455, upload-time = "2025-05-17T21:34:09.135Z" }, { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload-time = "2025-05-17T21:34:39.648Z" }, { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload-time = "2025-05-17T21:35:01.241Z" }, { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload-time = "2025-05-17T21:35:10.622Z" }, { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload-time = "2025-05-17T21:35:21.414Z" }, { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462, upload-time = "2025-05-17T21:35:42.174Z" }, { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618, upload-time = "2025-05-17T21:36:06.711Z" }, { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511, upload-time = "2025-05-17T21:36:29.965Z" }, { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783, upload-time = "2025-05-17T21:36:56.883Z" }, { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506, upload-time = "2025-05-17T21:37:07.368Z" }, { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190, upload-time = "2025-05-17T21:37:26.213Z" }, { url = "https://files.pythonhosted.org/packages/f9/5c/6657823f4f594f72b5471f1db1ab12e26e890bb2e41897522d134d2a3e81/numpy-2.2.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84", size = 20867828, upload-time = "2025-05-17T21:37:56.699Z" }, { url = "https://files.pythonhosted.org/packages/dc/9e/14520dc3dadf3c803473bd07e9b2bd1b69bc583cb2497b47000fed2fa92f/numpy-2.2.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b", size = 14143006, upload-time = "2025-05-17T21:38:18.291Z" }, { url = "https://files.pythonhosted.org/packages/4f/06/7e96c57d90bebdce9918412087fc22ca9851cceaf5567a45c1f404480e9e/numpy-2.2.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d", size = 5076765, upload-time = "2025-05-17T21:38:27.319Z" }, { url = "https://files.pythonhosted.org/packages/73/ed/63d920c23b4289fdac96ddbdd6132e9427790977d5457cd132f18e76eae0/numpy-2.2.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566", size = 6617736, upload-time = "2025-05-17T21:38:38.141Z" }, { url = "https://files.pythonhosted.org/packages/85/c5/e19c8f99d83fd377ec8c7e0cf627a8049746da54afc24ef0a0cb73d5dfb5/numpy-2.2.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f", size = 14010719, upload-time = "2025-05-17T21:38:58.433Z" }, { url = "https://files.pythonhosted.org/packages/19/49/4df9123aafa7b539317bf6d342cb6d227e49f7a35b99c287a6109b13dd93/numpy-2.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f", size = 16526072, upload-time = "2025-05-17T21:39:22.638Z" }, { url = "https://files.pythonhosted.org/packages/b2/6c/04b5f47f4f32f7c2b0e7260442a8cbcf8168b0e1a41ff1495da42f42a14f/numpy-2.2.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868", size = 15503213, upload-time = "2025-05-17T21:39:45.865Z" }, { url = "https://files.pythonhosted.org/packages/17/0a/5cd92e352c1307640d5b6fec1b2ffb06cd0dabe7d7b8227f97933d378422/numpy-2.2.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d", size = 18316632, upload-time = "2025-05-17T21:40:13.331Z" }, { url = "https://files.pythonhosted.org/packages/f0/3b/5cba2b1d88760ef86596ad0f3d484b1cbff7c115ae2429678465057c5155/numpy-2.2.6-cp313-cp313-win32.whl", hash = "sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd", size = 6244532, upload-time = "2025-05-17T21:43:46.099Z" }, { url = "https://files.pythonhosted.org/packages/cb/3b/d58c12eafcb298d4e6d0d40216866ab15f59e55d148a5658bb3132311fcf/numpy-2.2.6-cp313-cp313-win_amd64.whl", hash = "sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c", size = 12610885, upload-time = "2025-05-17T21:44:05.145Z" }, { url = "https://files.pythonhosted.org/packages/6b/9e/4bf918b818e516322db999ac25d00c75788ddfd2d2ade4fa66f1f38097e1/numpy-2.2.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6", size = 20963467, upload-time = "2025-05-17T21:40:44Z" }, { url = "https://files.pythonhosted.org/packages/61/66/d2de6b291507517ff2e438e13ff7b1e2cdbdb7cb40b3ed475377aece69f9/numpy-2.2.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda", size = 14225144, upload-time = "2025-05-17T21:41:05.695Z" }, { url = "https://files.pythonhosted.org/packages/e4/25/480387655407ead912e28ba3a820bc69af9adf13bcbe40b299d454ec011f/numpy-2.2.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40", size = 5200217, upload-time = "2025-05-17T21:41:15.903Z" }, { url = "https://files.pythonhosted.org/packages/aa/4a/6e313b5108f53dcbf3aca0c0f3e9c92f4c10ce57a0a721851f9785872895/numpy-2.2.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8", size = 6712014, upload-time = "2025-05-17T21:41:27.321Z" }, { url = "https://files.pythonhosted.org/packages/b7/30/172c2d5c4be71fdf476e9de553443cf8e25feddbe185e0bd88b096915bcc/numpy-2.2.6-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f", size = 14077935, upload-time = "2025-05-17T21:41:49.738Z" }, { url = "https://files.pythonhosted.org/packages/12/fb/9e743f8d4e4d3c710902cf87af3512082ae3d43b945d5d16563f26ec251d/numpy-2.2.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa", size = 16600122, upload-time = "2025-05-17T21:42:14.046Z" }, { url = "https://files.pythonhosted.org/packages/12/75/ee20da0e58d3a66f204f38916757e01e33a9737d0b22373b3eb5a27358f9/numpy-2.2.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571", size = 15586143, upload-time = "2025-05-17T21:42:37.464Z" }, { url = "https://files.pythonhosted.org/packages/76/95/bef5b37f29fc5e739947e9ce5179ad402875633308504a52d188302319c8/numpy-2.2.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1", size = 18385260, upload-time = "2025-05-17T21:43:05.189Z" }, { url = "https://files.pythonhosted.org/packages/09/04/f2f83279d287407cf36a7a8053a5abe7be3622a4363337338f2585e4afda/numpy-2.2.6-cp313-cp313t-win32.whl", hash = "sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff", size = 6377225, upload-time = "2025-05-17T21:43:16.254Z" }, { url = "https://files.pythonhosted.org/packages/67/0e/35082d13c09c02c011cf21570543d202ad929d961c02a147493cb0c2bdf5/numpy-2.2.6-cp313-cp313t-win_amd64.whl", hash = "sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06", size = 12771374, upload-time = "2025-05-17T21:43:35.479Z" }, { url = "https://files.pythonhosted.org/packages/9e/3b/d94a75f4dbf1ef5d321523ecac21ef23a3cd2ac8b78ae2aac40873590229/numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d", size = 21040391, upload-time = "2025-05-17T21:44:35.948Z" }, { url = "https://files.pythonhosted.org/packages/17/f4/09b2fa1b58f0fb4f7c7963a1649c64c4d315752240377ed74d9cd878f7b5/numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db", size = 6786754, upload-time = "2025-05-17T21:44:47.446Z" }, { url = "https://files.pythonhosted.org/packages/af/30/feba75f143bdc868a1cc3f44ccfa6c4b9ec522b36458e738cd00f67b573f/numpy-2.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543", size = 16643476, upload-time = "2025-05-17T21:45:11.871Z" }, { url = "https://files.pythonhosted.org/packages/37/48/ac2a9584402fb6c0cd5b5d1a91dcf176b15760130dd386bbafdbfe3640bf/numpy-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00", size = 12812666, upload-time = "2025-05-17T21:45:31.426Z" }, ] [[package]] name = "numpy" version = "2.4.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.12'", "python_full_version == '3.11.*'", ] sdist = { url = "https://files.pythonhosted.org/packages/57/fd/0005efbd0af48e55eb3c7208af93f2862d4b1a56cd78e84309a2d959208d/numpy-2.4.2.tar.gz", hash = "sha256:659a6107e31a83c4e33f763942275fd278b21d095094044eb35569e86a21ddae", size = 20723651, upload-time = "2026-01-31T23:13:10.135Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/d3/44/71852273146957899753e69986246d6a176061ea183407e95418c2aa4d9a/numpy-2.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e7e88598032542bd49af7c4747541422884219056c268823ef6e5e89851c8825", size = 16955478, upload-time = "2026-01-31T23:10:25.623Z" }, { url = "https://files.pythonhosted.org/packages/74/41/5d17d4058bd0cd96bcbd4d9ff0fb2e21f52702aab9a72e4a594efa18692f/numpy-2.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7edc794af8b36ca37ef5fcb5e0d128c7e0595c7b96a2318d1badb6fcd8ee86b1", size = 14965467, upload-time = "2026-01-31T23:10:28.186Z" }, { url = "https://files.pythonhosted.org/packages/49/48/fb1ce8136c19452ed15f033f8aee91d5defe515094e330ce368a0647846f/numpy-2.4.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:6e9f61981ace1360e42737e2bae58b27bf28a1b27e781721047d84bd754d32e7", size = 5475172, upload-time = "2026-01-31T23:10:30.848Z" }, { url = "https://files.pythonhosted.org/packages/40/a9/3feb49f17bbd1300dd2570432961f5c8a4ffeff1db6f02c7273bd020a4c9/numpy-2.4.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:cb7bbb88aa74908950d979eeaa24dbdf1a865e3c7e45ff0121d8f70387b55f73", size = 6805145, upload-time = "2026-01-31T23:10:32.352Z" }, { url = "https://files.pythonhosted.org/packages/3f/39/fdf35cbd6d6e2fcad42fcf85ac04a85a0d0fbfbf34b30721c98d602fd70a/numpy-2.4.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4f069069931240b3fc703f1e23df63443dbd6390614c8c44a87d96cd0ec81eb1", size = 15966084, upload-time = "2026-01-31T23:10:34.502Z" }, { url = "https://files.pythonhosted.org/packages/1b/46/6fa4ea94f1ddf969b2ee941290cca6f1bfac92b53c76ae5f44afe17ceb69/numpy-2.4.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c02ef4401a506fb60b411467ad501e1429a3487abca4664871d9ae0b46c8ba32", size = 16899477, upload-time = "2026-01-31T23:10:37.075Z" }, { url = "https://files.pythonhosted.org/packages/09/a1/2a424e162b1a14a5bd860a464ab4e07513916a64ab1683fae262f735ccd2/numpy-2.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2653de5c24910e49c2b106499803124dde62a5a1fe0eedeaecf4309a5f639390", size = 17323429, upload-time = "2026-01-31T23:10:39.704Z" }, { url = "https://files.pythonhosted.org/packages/ce/a2/73014149ff250628df72c58204822ac01d768697913881aacf839ff78680/numpy-2.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1ae241bbfc6ae276f94a170b14785e561cb5e7f626b6688cf076af4110887413", size = 18635109, upload-time = "2026-01-31T23:10:41.924Z" }, { url = "https://files.pythonhosted.org/packages/6c/0c/73e8be2f1accd56df74abc1c5e18527822067dced5ec0861b5bb882c2ce0/numpy-2.4.2-cp311-cp311-win32.whl", hash = "sha256:df1b10187212b198dd45fa943d8985a3c8cf854aed4923796e0e019e113a1bda", size = 6237915, upload-time = "2026-01-31T23:10:45.26Z" }, { url = "https://files.pythonhosted.org/packages/76/ae/e0265e0163cf127c24c3969d29f1c4c64551a1e375d95a13d32eab25d364/numpy-2.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:b9c618d56a29c9cb1c4da979e9899be7578d2e0b3c24d52079c166324c9e8695", size = 12607972, upload-time = "2026-01-31T23:10:47.021Z" }, { url = "https://files.pythonhosted.org/packages/29/a5/c43029af9b8014d6ea157f192652c50042e8911f4300f8f6ed3336bf437f/numpy-2.4.2-cp311-cp311-win_arm64.whl", hash = "sha256:47c5a6ed21d9452b10227e5e8a0e1c22979811cad7dcc19d8e3e2fb8fa03f1a3", size = 10485763, upload-time = "2026-01-31T23:10:50.087Z" }, { url = "https://files.pythonhosted.org/packages/51/6e/6f394c9c77668153e14d4da83bcc247beb5952f6ead7699a1a2992613bea/numpy-2.4.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:21982668592194c609de53ba4933a7471880ccbaadcc52352694a59ecc860b3a", size = 16667963, upload-time = "2026-01-31T23:10:52.147Z" }, { url = "https://files.pythonhosted.org/packages/1f/f8/55483431f2b2fd015ae6ed4fe62288823ce908437ed49db5a03d15151678/numpy-2.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40397bda92382fcec844066efb11f13e1c9a3e2a8e8f318fb72ed8b6db9f60f1", size = 14693571, upload-time = "2026-01-31T23:10:54.789Z" }, { url = "https://files.pythonhosted.org/packages/2f/20/18026832b1845cdc82248208dd929ca14c9d8f2bac391f67440707fff27c/numpy-2.4.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:b3a24467af63c67829bfaa61eecf18d5432d4f11992688537be59ecd6ad32f5e", size = 5203469, upload-time = "2026-01-31T23:10:57.343Z" }, { url = "https://files.pythonhosted.org/packages/7d/33/2eb97c8a77daaba34eaa3fa7241a14ac5f51c46a6bd5911361b644c4a1e2/numpy-2.4.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:805cc8de9fd6e7a22da5aed858e0ab16be5a4db6c873dde1d7451c541553aa27", size = 6550820, upload-time = "2026-01-31T23:10:59.429Z" }, { url = "https://files.pythonhosted.org/packages/b1/91/b97fdfd12dc75b02c44e26c6638241cc004d4079a0321a69c62f51470c4c/numpy-2.4.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d82351358ffbcdcd7b686b90742a9b86632d6c1c051016484fa0b326a0a1548", size = 15663067, upload-time = "2026-01-31T23:11:01.291Z" }, { url = "https://files.pythonhosted.org/packages/f5/c6/a18e59f3f0b8071cc85cbc8d80cd02d68aa9710170b2553a117203d46936/numpy-2.4.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e35d3e0144137d9fdae62912e869136164534d64a169f86438bc9561b6ad49f", size = 16619782, upload-time = "2026-01-31T23:11:03.669Z" }, { url = "https://files.pythonhosted.org/packages/b7/83/9751502164601a79e18847309f5ceec0b1446d7b6aa12305759b72cf98b2/numpy-2.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:adb6ed2ad29b9e15321d167d152ee909ec73395901b70936f029c3bc6d7f4460", size = 17013128, upload-time = "2026-01-31T23:11:05.913Z" }, { url = "https://files.pythonhosted.org/packages/61/c4/c4066322256ec740acc1c8923a10047818691d2f8aec254798f3dd90f5f2/numpy-2.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8906e71fd8afcb76580404e2a950caef2685df3d2a57fe82a86ac8d33cc007ba", size = 18345324, upload-time = "2026-01-31T23:11:08.248Z" }, { url = "https://files.pythonhosted.org/packages/ab/af/6157aa6da728fa4525a755bfad486ae7e3f76d4c1864138003eb84328497/numpy-2.4.2-cp312-cp312-win32.whl", hash = "sha256:ec055f6dae239a6299cace477b479cca2fc125c5675482daf1dd886933a1076f", size = 5960282, upload-time = "2026-01-31T23:11:10.497Z" }, { url = "https://files.pythonhosted.org/packages/92/0f/7ceaaeaacb40567071e94dbf2c9480c0ae453d5bb4f52bea3892c39dc83c/numpy-2.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:209fae046e62d0ce6435fcfe3b1a10537e858249b3d9b05829e2a05218296a85", size = 12314210, upload-time = "2026-01-31T23:11:12.176Z" }, { url = "https://files.pythonhosted.org/packages/2f/a3/56c5c604fae6dd40fa2ed3040d005fca97e91bd320d232ac9931d77ba13c/numpy-2.4.2-cp312-cp312-win_arm64.whl", hash = "sha256:fbde1b0c6e81d56f5dccd95dd4a711d9b95df1ae4009a60887e56b27e8d903fa", size = 10220171, upload-time = "2026-01-31T23:11:14.684Z" }, { url = "https://files.pythonhosted.org/packages/a1/22/815b9fe25d1d7ae7d492152adbc7226d3eff731dffc38fe970589fcaaa38/numpy-2.4.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25f2059807faea4b077a2b6837391b5d830864b3543627f381821c646f31a63c", size = 16663696, upload-time = "2026-01-31T23:11:17.516Z" }, { url = "https://files.pythonhosted.org/packages/09/f0/817d03a03f93ba9c6c8993de509277d84e69f9453601915e4a69554102a1/numpy-2.4.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bd3a7a9f5847d2fb8c2c6d1c862fa109c31a9abeca1a3c2bd5a64572955b2979", size = 14688322, upload-time = "2026-01-31T23:11:19.883Z" }, { url = "https://files.pythonhosted.org/packages/da/b4/f805ab79293c728b9a99438775ce51885fd4f31b76178767cfc718701a39/numpy-2.4.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8e4549f8a3c6d13d55041925e912bfd834285ef1dd64d6bc7d542583355e2e98", size = 5198157, upload-time = "2026-01-31T23:11:22.375Z" }, { url = "https://files.pythonhosted.org/packages/74/09/826e4289844eccdcd64aac27d13b0fd3f32039915dd5b9ba01baae1f436c/numpy-2.4.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:aea4f66ff44dfddf8c2cffd66ba6538c5ec67d389285292fe428cb2c738c8aef", size = 6546330, upload-time = "2026-01-31T23:11:23.958Z" }, { url = "https://files.pythonhosted.org/packages/19/fb/cbfdbfa3057a10aea5422c558ac57538e6acc87ec1669e666d32ac198da7/numpy-2.4.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3cd545784805de05aafe1dde61752ea49a359ccba9760c1e5d1c88a93bbf2b7", size = 15660968, upload-time = "2026-01-31T23:11:25.713Z" }, { url = "https://files.pythonhosted.org/packages/04/dc/46066ce18d01645541f0186877377b9371b8fa8017fa8262002b4ef22612/numpy-2.4.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0d9b7c93578baafcbc5f0b83eaf17b79d345c6f36917ba0c67f45226911d499", size = 16607311, upload-time = "2026-01-31T23:11:28.117Z" }, { url = "https://files.pythonhosted.org/packages/14/d9/4b5adfc39a43fa6bf918c6d544bc60c05236cc2f6339847fc5b35e6cb5b0/numpy-2.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f74f0f7779cc7ae07d1810aab8ac6b1464c3eafb9e283a40da7309d5e6e48fbb", size = 17012850, upload-time = "2026-01-31T23:11:30.888Z" }, { url = "https://files.pythonhosted.org/packages/b7/20/adb6e6adde6d0130046e6fdfb7675cc62bc2f6b7b02239a09eb58435753d/numpy-2.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c7ac672d699bf36275c035e16b65539931347d68b70667d28984c9fb34e07fa7", size = 18334210, upload-time = "2026-01-31T23:11:33.214Z" }, { url = "https://files.pythonhosted.org/packages/78/0e/0a73b3dff26803a8c02baa76398015ea2a5434d9b8265a7898a6028c1591/numpy-2.4.2-cp313-cp313-win32.whl", hash = "sha256:8e9afaeb0beff068b4d9cd20d322ba0ee1cecfb0b08db145e4ab4dd44a6b5110", size = 5958199, upload-time = "2026-01-31T23:11:35.385Z" }, { url = "https://files.pythonhosted.org/packages/43/bc/6352f343522fcb2c04dbaf94cb30cca6fd32c1a750c06ad6231b4293708c/numpy-2.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:7df2de1e4fba69a51c06c28f5a3de36731eb9639feb8e1cf7e4a7b0daf4cf622", size = 12310848, upload-time = "2026-01-31T23:11:38.001Z" }, { url = "https://files.pythonhosted.org/packages/6e/8d/6da186483e308da5da1cc6918ce913dcfe14ffde98e710bfeff2a6158d4e/numpy-2.4.2-cp313-cp313-win_arm64.whl", hash = "sha256:0fece1d1f0a89c16b03442eae5c56dc0be0c7883b5d388e0c03f53019a4bfd71", size = 10221082, upload-time = "2026-01-31T23:11:40.392Z" }, { url = "https://files.pythonhosted.org/packages/25/a1/9510aa43555b44781968935c7548a8926274f815de42ad3997e9e83680dd/numpy-2.4.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5633c0da313330fd20c484c78cdd3f9b175b55e1a766c4a174230c6b70ad8262", size = 14815866, upload-time = "2026-01-31T23:11:42.495Z" }, { url = "https://files.pythonhosted.org/packages/36/30/6bbb5e76631a5ae46e7923dd16ca9d3f1c93cfa8d4ed79a129814a9d8db3/numpy-2.4.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d9f64d786b3b1dd742c946c42d15b07497ed14af1a1f3ce840cce27daa0ce913", size = 5325631, upload-time = "2026-01-31T23:11:44.7Z" }, { url = "https://files.pythonhosted.org/packages/46/00/3a490938800c1923b567b3a15cd17896e68052e2145d8662aaf3e1ffc58f/numpy-2.4.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:b21041e8cb6a1eb5312dd1d2f80a94d91efffb7a06b70597d44f1bd2dfc315ab", size = 6646254, upload-time = "2026-01-31T23:11:46.341Z" }, { url = "https://files.pythonhosted.org/packages/d3/e9/fac0890149898a9b609caa5af7455a948b544746e4b8fe7c212c8edd71f8/numpy-2.4.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:00ab83c56211a1d7c07c25e3217ea6695e50a3e2f255053686b081dc0b091a82", size = 15720138, upload-time = "2026-01-31T23:11:48.082Z" }, { url = "https://files.pythonhosted.org/packages/ea/5c/08887c54e68e1e28df53709f1893ce92932cc6f01f7c3d4dc952f61ffd4e/numpy-2.4.2-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2fb882da679409066b4603579619341c6d6898fc83a8995199d5249f986e8e8f", size = 16655398, upload-time = "2026-01-31T23:11:50.293Z" }, { url = "https://files.pythonhosted.org/packages/4d/89/253db0fa0e66e9129c745e4ef25631dc37d5f1314dad2b53e907b8538e6d/numpy-2.4.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:66cb9422236317f9d44b67b4d18f44efe6e9c7f8794ac0462978513359461554", size = 17079064, upload-time = "2026-01-31T23:11:52.927Z" }, { url = "https://files.pythonhosted.org/packages/2a/d5/cbade46ce97c59c6c3da525e8d95b7abe8a42974a1dc5c1d489c10433e88/numpy-2.4.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:0f01dcf33e73d80bd8dc0f20a71303abbafa26a19e23f6b68d1aa9990af90257", size = 18379680, upload-time = "2026-01-31T23:11:55.22Z" }, { url = "https://files.pythonhosted.org/packages/40/62/48f99ae172a4b63d981babe683685030e8a3df4f246c893ea5c6ef99f018/numpy-2.4.2-cp313-cp313t-win32.whl", hash = "sha256:52b913ec40ff7ae845687b0b34d8d93b60cb66dcee06996dd5c99f2fc9328657", size = 6082433, upload-time = "2026-01-31T23:11:58.096Z" }, { url = "https://files.pythonhosted.org/packages/07/38/e054a61cfe48ad9f1ed0d188e78b7e26859d0b60ef21cd9de4897cdb5326/numpy-2.4.2-cp313-cp313t-win_amd64.whl", hash = "sha256:5eea80d908b2c1f91486eb95b3fb6fab187e569ec9752ab7d9333d2e66bf2d6b", size = 12451181, upload-time = "2026-01-31T23:11:59.782Z" }, { url = "https://files.pythonhosted.org/packages/6e/a4/a05c3a6418575e185dd84d0b9680b6bb2e2dc3e4202f036b7b4e22d6e9dc/numpy-2.4.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fd49860271d52127d61197bb50b64f58454e9f578cb4b2c001a6de8b1f50b0b1", size = 10290756, upload-time = "2026-01-31T23:12:02.438Z" }, { url = "https://files.pythonhosted.org/packages/18/88/b7df6050bf18fdcfb7046286c6535cabbdd2064a3440fca3f069d319c16e/numpy-2.4.2-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:444be170853f1f9d528428eceb55f12918e4fda5d8805480f36a002f1415e09b", size = 16663092, upload-time = "2026-01-31T23:12:04.521Z" }, { url = "https://files.pythonhosted.org/packages/25/7a/1fee4329abc705a469a4afe6e69b1ef7e915117747886327104a8493a955/numpy-2.4.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d1240d50adff70c2a88217698ca844723068533f3f5c5fa6ee2e3220e3bdb000", size = 14698770, upload-time = "2026-01-31T23:12:06.96Z" }, { url = "https://files.pythonhosted.org/packages/fb/0b/f9e49ba6c923678ad5bc38181c08ac5e53b7a5754dbca8e581aa1a56b1ff/numpy-2.4.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:7cdde6de52fb6664b00b056341265441192d1291c130e99183ec0d4b110ff8b1", size = 5208562, upload-time = "2026-01-31T23:12:09.632Z" }, { url = "https://files.pythonhosted.org/packages/7d/12/d7de8f6f53f9bb76997e5e4c069eda2051e3fe134e9181671c4391677bb2/numpy-2.4.2-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:cda077c2e5b780200b6b3e09d0b42205a3d1c68f30c6dceb90401c13bff8fe74", size = 6543710, upload-time = "2026-01-31T23:12:11.969Z" }, { url = "https://files.pythonhosted.org/packages/09/63/c66418c2e0268a31a4cf8a8b512685748200f8e8e8ec6c507ce14e773529/numpy-2.4.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d30291931c915b2ab5717c2974bb95ee891a1cf22ebc16a8006bd59cd210d40a", size = 15677205, upload-time = "2026-01-31T23:12:14.33Z" }, { url = "https://files.pythonhosted.org/packages/5d/6c/7f237821c9642fb2a04d2f1e88b4295677144ca93285fd76eff3bcba858d/numpy-2.4.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bba37bc29d4d85761deed3954a1bc62be7cf462b9510b51d367b769a8c8df325", size = 16611738, upload-time = "2026-01-31T23:12:16.525Z" }, { url = "https://files.pythonhosted.org/packages/c2/a7/39c4cdda9f019b609b5c473899d87abff092fc908cfe4d1ecb2fcff453b0/numpy-2.4.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b2f0073ed0868db1dcd86e052d37279eef185b9c8db5bf61f30f46adac63c909", size = 17028888, upload-time = "2026-01-31T23:12:19.306Z" }, { url = "https://files.pythonhosted.org/packages/da/b3/e84bb64bdfea967cc10950d71090ec2d84b49bc691df0025dddb7c26e8e3/numpy-2.4.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7f54844851cdb630ceb623dcec4db3240d1ac13d4990532446761baede94996a", size = 18339556, upload-time = "2026-01-31T23:12:21.816Z" }, { url = "https://files.pythonhosted.org/packages/88/f5/954a291bc1192a27081706862ac62bb5920fbecfbaa302f64682aa90beed/numpy-2.4.2-cp314-cp314-win32.whl", hash = "sha256:12e26134a0331d8dbd9351620f037ec470b7c75929cb8a1537f6bfe411152a1a", size = 6006899, upload-time = "2026-01-31T23:12:24.14Z" }, { url = "https://files.pythonhosted.org/packages/05/cb/eff72a91b2efdd1bc98b3b8759f6a1654aa87612fc86e3d87d6fe4f948c4/numpy-2.4.2-cp314-cp314-win_amd64.whl", hash = "sha256:068cdb2d0d644cdb45670810894f6a0600797a69c05f1ac478e8d31670b8ee75", size = 12443072, upload-time = "2026-01-31T23:12:26.33Z" }, { url = "https://files.pythonhosted.org/packages/37/75/62726948db36a56428fce4ba80a115716dc4fad6a3a4352487f8bb950966/numpy-2.4.2-cp314-cp314-win_arm64.whl", hash = "sha256:6ed0be1ee58eef41231a5c943d7d1375f093142702d5723ca2eb07db9b934b05", size = 10494886, upload-time = "2026-01-31T23:12:28.488Z" }, { url = "https://files.pythonhosted.org/packages/36/2f/ee93744f1e0661dc267e4b21940870cabfae187c092e1433b77b09b50ac4/numpy-2.4.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:98f16a80e917003a12c0580f97b5f875853ebc33e2eaa4bccfc8201ac6869308", size = 14818567, upload-time = "2026-01-31T23:12:30.709Z" }, { url = "https://files.pythonhosted.org/packages/a7/24/6535212add7d76ff938d8bdc654f53f88d35cddedf807a599e180dcb8e66/numpy-2.4.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:20abd069b9cda45874498b245c8015b18ace6de8546bf50dfa8cea1696ed06ef", size = 5328372, upload-time = "2026-01-31T23:12:32.962Z" }, { url = "https://files.pythonhosted.org/packages/5e/9d/c48f0a035725f925634bf6b8994253b43f2047f6778a54147d7e213bc5a7/numpy-2.4.2-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:e98c97502435b53741540a5717a6749ac2ada901056c7db951d33e11c885cc7d", size = 6649306, upload-time = "2026-01-31T23:12:34.797Z" }, { url = "https://files.pythonhosted.org/packages/81/05/7c73a9574cd4a53a25907bad38b59ac83919c0ddc8234ec157f344d57d9a/numpy-2.4.2-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:da6cad4e82cb893db4b69105c604d805e0c3ce11501a55b5e9f9083b47d2ffe8", size = 15722394, upload-time = "2026-01-31T23:12:36.565Z" }, { url = "https://files.pythonhosted.org/packages/35/fa/4de10089f21fc7d18442c4a767ab156b25c2a6eaf187c0db6d9ecdaeb43f/numpy-2.4.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e4424677ce4b47fe73c8b5556d876571f7c6945d264201180db2dc34f676ab5", size = 16653343, upload-time = "2026-01-31T23:12:39.188Z" }, { url = "https://files.pythonhosted.org/packages/b8/f9/d33e4ffc857f3763a57aa85650f2e82486832d7492280ac21ba9efda80da/numpy-2.4.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2b8f157c8a6f20eb657e240f8985cc135598b2b46985c5bccbde7616dc9c6b1e", size = 17078045, upload-time = "2026-01-31T23:12:42.041Z" }, { url = "https://files.pythonhosted.org/packages/c8/b8/54bdb43b6225badbea6389fa038c4ef868c44f5890f95dd530a218706da3/numpy-2.4.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5daf6f3914a733336dab21a05cdec343144600e964d2fcdabaac0c0269874b2a", size = 18380024, upload-time = "2026-01-31T23:12:44.331Z" }, { url = "https://files.pythonhosted.org/packages/a5/55/6e1a61ded7af8df04016d81b5b02daa59f2ea9252ee0397cb9f631efe9e5/numpy-2.4.2-cp314-cp314t-win32.whl", hash = "sha256:8c50dd1fc8826f5b26a5ee4d77ca55d88a895f4e4819c7ecc2a9f5905047a443", size = 6153937, upload-time = "2026-01-31T23:12:47.229Z" }, { url = "https://files.pythonhosted.org/packages/45/aa/fa6118d1ed6d776b0983f3ceac9b1a5558e80df9365b1c3aa6d42bf9eee4/numpy-2.4.2-cp314-cp314t-win_amd64.whl", hash = "sha256:fcf92bee92742edd401ba41135185866f7026c502617f422eb432cfeca4fe236", size = 12631844, upload-time = "2026-01-31T23:12:48.997Z" }, { url = "https://files.pythonhosted.org/packages/32/0a/2ec5deea6dcd158f254a7b372fb09cfba5719419c8d66343bab35237b3fb/numpy-2.4.2-cp314-cp314t-win_arm64.whl", hash = "sha256:1f92f53998a17265194018d1cc321b2e96e900ca52d54c7c77837b71b9465181", size = 10565379, upload-time = "2026-01-31T23:12:51.345Z" }, { url = "https://files.pythonhosted.org/packages/f4/f8/50e14d36d915ef64d8f8bc4a087fc8264d82c785eda6711f80ab7e620335/numpy-2.4.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:89f7268c009bc492f506abd6f5265defa7cb3f7487dc21d357c3d290add45082", size = 16833179, upload-time = "2026-01-31T23:12:53.5Z" }, { url = "https://files.pythonhosted.org/packages/17/17/809b5cad63812058a8189e91a1e2d55a5a18fd04611dbad244e8aeae465c/numpy-2.4.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6dee3bb76aa4009d5a912180bf5b2de012532998d094acee25d9cb8dee3e44a", size = 14889755, upload-time = "2026-01-31T23:12:55.933Z" }, { url = "https://files.pythonhosted.org/packages/3e/ea/181b9bcf7627fc8371720316c24db888dcb9829b1c0270abf3d288b2e29b/numpy-2.4.2-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:cd2bd2bbed13e213d6b55dc1d035a4f91748a7d3edc9480c13898b0353708920", size = 5399500, upload-time = "2026-01-31T23:12:58.671Z" }, { url = "https://files.pythonhosted.org/packages/33/9f/413adf3fc955541ff5536b78fcf0754680b3c6d95103230252a2c9408d23/numpy-2.4.2-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:cf28c0c1d4c4bf00f509fa7eb02c58d7caf221b50b467bcb0d9bbf1584d5c821", size = 6714252, upload-time = "2026-01-31T23:13:00.518Z" }, { url = "https://files.pythonhosted.org/packages/91/da/643aad274e29ccbdf42ecd94dafe524b81c87bcb56b83872d54827f10543/numpy-2.4.2-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e04ae107ac591763a47398bb45b568fc38f02dbc4aa44c063f67a131f99346cb", size = 15797142, upload-time = "2026-01-31T23:13:02.219Z" }, { url = "https://files.pythonhosted.org/packages/66/27/965b8525e9cb5dc16481b30a1b3c21e50c7ebf6e9dbd48d0c4d0d5089c7e/numpy-2.4.2-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:602f65afdef699cda27ec0b9224ae5dc43e328f4c24c689deaf77133dbee74d0", size = 16727979, upload-time = "2026-01-31T23:13:04.62Z" }, { url = "https://files.pythonhosted.org/packages/de/e5/b7d20451657664b07986c2f6e3be564433f5dcaf3482d68eaecd79afaf03/numpy-2.4.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:be71bf1edb48ebbbf7f6337b5bfd2f895d1902f6335a5830b20141fc126ffba0", size = 12502577, upload-time = "2026-01-31T23:13:07.08Z" }, ] [[package]] name = "outcome" version = "1.3.0.post0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, ] sdist = { url = "https://files.pythonhosted.org/packages/98/df/77698abfac98571e65ffeb0c1fba8ffd692ab8458d617a0eed7d9a8d38f2/outcome-1.3.0.post0.tar.gz", hash = "sha256:9dcf02e65f2971b80047b377468e72a268e15c0af3cf1238e6ff14f7f91143b8", size = 21060, upload-time = "2023-10-26T04:26:04.361Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/55/8b/5ab7257531a5d830fc8000c476e63c935488d74609b50f9384a643ec0a62/outcome-1.3.0.post0-py2.py3-none-any.whl", hash = "sha256:e771c5ce06d1415e356078d3bdd68523f284b4ce5419828922b6871e65eda82b", size = 10692, upload-time = "2023-10-26T04:26:02.532Z" }, ] [[package]] name = "packaging" version = "26.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload-time = "2026-01-21T20:50:39.064Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" }, ] [[package]] name = "parso" version = "0.8.6" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/81/76/a1e769043c0c0c9fe391b702539d594731a4362334cdf4dc25d0c09761e7/parso-0.8.6.tar.gz", hash = "sha256:2b9a0332696df97d454fa67b81618fd69c35a7b90327cbe6ba5c92d2c68a7bfd", size = 401621, upload-time = "2026-02-09T15:45:24.425Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/b6/61/fae042894f4296ec49e3f193aff5d7c18440da9e48102c3315e1bc4519a7/parso-0.8.6-py2.py3-none-any.whl", hash = "sha256:2c549f800b70a5c4952197248825584cb00f033b29c692671d3bf08bf380baff", size = 106894, upload-time = "2026-02-09T15:45:21.391Z" }, ] [[package]] name = "pexpect" version = "4.9.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ptyprocess" }, ] sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, ] [[package]] name = "pillow" version = "12.1.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/1f/42/5c74462b4fd957fcd7b13b04fb3205ff8349236ea74c7c375766d6c82288/pillow-12.1.1.tar.gz", hash = "sha256:9ad8fa5937ab05218e2b6a4cff30295ad35afd2f83ac592e68c0d871bb0fdbc4", size = 46980264, upload-time = "2026-02-11T04:23:07.146Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/1d/30/5bd3d794762481f8c8ae9c80e7b76ecea73b916959eb587521358ef0b2f9/pillow-12.1.1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1f1625b72740fdda5d77b4def688eb8fd6490975d06b909fd19f13f391e077e0", size = 5304099, upload-time = "2026-02-11T04:20:06.13Z" }, { url = "https://files.pythonhosted.org/packages/bd/c1/aab9e8f3eeb4490180e357955e15c2ef74b31f64790ff356c06fb6cf6d84/pillow-12.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:178aa072084bd88ec759052feca8e56cbb14a60b39322b99a049e58090479713", size = 4657880, upload-time = "2026-02-11T04:20:09.291Z" }, { url = "https://files.pythonhosted.org/packages/f1/0a/9879e30d56815ad529d3985aeff5af4964202425c27261a6ada10f7cbf53/pillow-12.1.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b66e95d05ba806247aaa1561f080abc7975daf715c30780ff92a20e4ec546e1b", size = 6222587, upload-time = "2026-02-11T04:20:10.82Z" }, { url = "https://files.pythonhosted.org/packages/5a/5f/a1b72ff7139e4f89014e8d451442c74a774d5c43cd938fb0a9f878576b37/pillow-12.1.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:89c7e895002bbe49cdc5426150377cbbc04767d7547ed145473f496dfa40408b", size = 8027678, upload-time = "2026-02-11T04:20:12.455Z" }, { url = "https://files.pythonhosted.org/packages/e2/c2/c7cb187dac79a3d22c3ebeae727abee01e077c8c7d930791dc592f335153/pillow-12.1.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a5cbdcddad0af3da87cb16b60d23648bc3b51967eb07223e9fed77a82b457c4", size = 6335777, upload-time = "2026-02-11T04:20:14.441Z" }, { url = "https://files.pythonhosted.org/packages/0c/7b/f9b09a7804ec7336effb96c26d37c29d27225783dc1501b7d62dcef6ae25/pillow-12.1.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9f51079765661884a486727f0729d29054242f74b46186026582b4e4769918e4", size = 7027140, upload-time = "2026-02-11T04:20:16.387Z" }, { url = "https://files.pythonhosted.org/packages/98/b2/2fa3c391550bd421b10849d1a2144c44abcd966daadd2f7c12e19ea988c4/pillow-12.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:99c1506ea77c11531d75e3a412832a13a71c7ebc8192ab9e4b2e355555920e3e", size = 6449855, upload-time = "2026-02-11T04:20:18.554Z" }, { url = "https://files.pythonhosted.org/packages/96/ff/9caf4b5b950c669263c39e96c78c0d74a342c71c4f43fd031bb5cb7ceac9/pillow-12.1.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:36341d06738a9f66c8287cf8b876d24b18db9bd8740fa0672c74e259ad408cff", size = 7151329, upload-time = "2026-02-11T04:20:20.646Z" }, { url = "https://files.pythonhosted.org/packages/7b/f8/4b24841f582704da675ca535935bccb32b00a6da1226820845fac4a71136/pillow-12.1.1-cp310-cp310-win32.whl", hash = "sha256:6c52f062424c523d6c4db85518774cc3d50f5539dd6eed32b8f6229b26f24d40", size = 6325574, upload-time = "2026-02-11T04:20:22.43Z" }, { url = "https://files.pythonhosted.org/packages/f8/f9/9f6b01c0881d7036063aa6612ef04c0e2cad96be21325a1e92d0203f8e91/pillow-12.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:c6008de247150668a705a6338156efb92334113421ceecf7438a12c9a12dab23", size = 7032347, upload-time = "2026-02-11T04:20:23.932Z" }, { url = "https://files.pythonhosted.org/packages/79/13/c7922edded3dcdaf10c59297540b72785620abc0538872c819915746757d/pillow-12.1.1-cp310-cp310-win_arm64.whl", hash = "sha256:1a9b0ee305220b392e1124a764ee4265bd063e54a751a6b62eff69992f457fa9", size = 2453457, upload-time = "2026-02-11T04:20:25.392Z" }, { url = "https://files.pythonhosted.org/packages/2b/46/5da1ec4a5171ee7bf1a0efa064aba70ba3d6e0788ce3f5acd1375d23c8c0/pillow-12.1.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:e879bb6cd5c73848ef3b2b48b8af9ff08c5b71ecda8048b7dd22d8a33f60be32", size = 5304084, upload-time = "2026-02-11T04:20:27.501Z" }, { url = "https://files.pythonhosted.org/packages/78/93/a29e9bc02d1cf557a834da780ceccd54e02421627200696fcf805ebdc3fb/pillow-12.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:365b10bb9417dd4498c0e3b128018c4a624dc11c7b97d8cc54effe3b096f4c38", size = 4657866, upload-time = "2026-02-11T04:20:29.827Z" }, { url = "https://files.pythonhosted.org/packages/13/84/583a4558d492a179d31e4aae32eadce94b9acf49c0337c4ce0b70e0a01f2/pillow-12.1.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d4ce8e329c93845720cd2014659ca67eac35f6433fd3050393d85f3ecef0dad5", size = 6232148, upload-time = "2026-02-11T04:20:31.329Z" }, { url = "https://files.pythonhosted.org/packages/d5/e2/53c43334bbbb2d3b938978532fbda8e62bb6e0b23a26ce8592f36bcc4987/pillow-12.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc354a04072b765eccf2204f588a7a532c9511e8b9c7f900e1b64e3e33487090", size = 8038007, upload-time = "2026-02-11T04:20:34.225Z" }, { url = "https://files.pythonhosted.org/packages/b8/a6/3d0e79c8a9d58150dd98e199d7c1c56861027f3829a3a60b3c2784190180/pillow-12.1.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7e7976bf1910a8116b523b9f9f58bf410f3e8aa330cd9a2bb2953f9266ab49af", size = 6345418, upload-time = "2026-02-11T04:20:35.858Z" }, { url = "https://files.pythonhosted.org/packages/a2/c8/46dfeac5825e600579157eea177be43e2f7ff4a99da9d0d0a49533509ac5/pillow-12.1.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:597bd9c8419bc7c6af5604e55847789b69123bbe25d65cc6ad3012b4f3c98d8b", size = 7034590, upload-time = "2026-02-11T04:20:37.91Z" }, { url = "https://files.pythonhosted.org/packages/af/bf/e6f65d3db8a8bbfeaf9e13cc0417813f6319863a73de934f14b2229ada18/pillow-12.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2c1fc0f2ca5f96a3c8407e41cca26a16e46b21060fe6d5b099d2cb01412222f5", size = 6458655, upload-time = "2026-02-11T04:20:39.496Z" }, { url = "https://files.pythonhosted.org/packages/f9/c2/66091f3f34a25894ca129362e510b956ef26f8fb67a0e6417bc5744e56f1/pillow-12.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:578510d88c6229d735855e1f278aa305270438d36a05031dfaae5067cc8eb04d", size = 7159286, upload-time = "2026-02-11T04:20:41.139Z" }, { url = "https://files.pythonhosted.org/packages/7b/5a/24bc8eb526a22f957d0cec6243146744966d40857e3d8deb68f7902ca6c1/pillow-12.1.1-cp311-cp311-win32.whl", hash = "sha256:7311c0a0dcadb89b36b7025dfd8326ecfa36964e29913074d47382706e516a7c", size = 6328663, upload-time = "2026-02-11T04:20:43.184Z" }, { url = "https://files.pythonhosted.org/packages/31/03/bef822e4f2d8f9d7448c133d0a18185d3cce3e70472774fffefe8b0ed562/pillow-12.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:fbfa2a7c10cc2623f412753cddf391c7f971c52ca40a3f65dc5039b2939e8563", size = 7031448, upload-time = "2026-02-11T04:20:44.696Z" }, { url = "https://files.pythonhosted.org/packages/49/70/f76296f53610bd17b2e7d31728b8b7825e3ac3b5b3688b51f52eab7c0818/pillow-12.1.1-cp311-cp311-win_arm64.whl", hash = "sha256:b81b5e3511211631b3f672a595e3221252c90af017e399056d0faabb9538aa80", size = 2453651, upload-time = "2026-02-11T04:20:46.243Z" }, { url = "https://files.pythonhosted.org/packages/07/d3/8df65da0d4df36b094351dce696f2989bec731d4f10e743b1c5f4da4d3bf/pillow-12.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ab323b787d6e18b3d91a72fc99b1a2c28651e4358749842b8f8dfacd28ef2052", size = 5262803, upload-time = "2026-02-11T04:20:47.653Z" }, { url = "https://files.pythonhosted.org/packages/d6/71/5026395b290ff404b836e636f51d7297e6c83beceaa87c592718747e670f/pillow-12.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:adebb5bee0f0af4909c30db0d890c773d1a92ffe83da908e2e9e720f8edf3984", size = 4657601, upload-time = "2026-02-11T04:20:49.328Z" }, { url = "https://files.pythonhosted.org/packages/b1/2e/1001613d941c67442f745aff0f7cc66dd8df9a9c084eb497e6a543ee6f7e/pillow-12.1.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bb66b7cc26f50977108790e2456b7921e773f23db5630261102233eb355a3b79", size = 6234995, upload-time = "2026-02-11T04:20:51.032Z" }, { url = "https://files.pythonhosted.org/packages/07/26/246ab11455b2549b9233dbd44d358d033a2f780fa9007b61a913c5b2d24e/pillow-12.1.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:aee2810642b2898bb187ced9b349e95d2a7272930796e022efaf12e99dccd293", size = 8045012, upload-time = "2026-02-11T04:20:52.882Z" }, { url = "https://files.pythonhosted.org/packages/b2/8b/07587069c27be7535ac1fe33874e32de118fbd34e2a73b7f83436a88368c/pillow-12.1.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a0b1cd6232e2b618adcc54d9882e4e662a089d5768cd188f7c245b4c8c44a397", size = 6349638, upload-time = "2026-02-11T04:20:54.444Z" }, { url = "https://files.pythonhosted.org/packages/ff/79/6df7b2ee763d619cda2fb4fea498e5f79d984dae304d45a8999b80d6cf5c/pillow-12.1.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7aac39bcf8d4770d089588a2e1dd111cbaa42df5a94be3114222057d68336bd0", size = 7041540, upload-time = "2026-02-11T04:20:55.97Z" }, { url = "https://files.pythonhosted.org/packages/2c/5e/2ba19e7e7236d7529f4d873bdaf317a318896bac289abebd4bb00ef247f0/pillow-12.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ab174cd7d29a62dd139c44bf74b698039328f45cb03b4596c43473a46656b2f3", size = 6462613, upload-time = "2026-02-11T04:20:57.542Z" }, { url = "https://files.pythonhosted.org/packages/03/03/31216ec124bb5c3dacd74ce8efff4cc7f52643653bad4825f8f08c697743/pillow-12.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:339ffdcb7cbeaa08221cd401d517d4b1fe7a9ed5d400e4a8039719238620ca35", size = 7166745, upload-time = "2026-02-11T04:20:59.196Z" }, { url = "https://files.pythonhosted.org/packages/1f/e7/7c4552d80052337eb28653b617eafdef39adfb137c49dd7e831b8dc13bc5/pillow-12.1.1-cp312-cp312-win32.whl", hash = "sha256:5d1f9575a12bed9e9eedd9a4972834b08c97a352bd17955ccdebfeca5913fa0a", size = 6328823, upload-time = "2026-02-11T04:21:01.385Z" }, { url = "https://files.pythonhosted.org/packages/3d/17/688626d192d7261bbbf98846fc98995726bddc2c945344b65bec3a29d731/pillow-12.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:21329ec8c96c6e979cd0dfd29406c40c1d52521a90544463057d2aaa937d66a6", size = 7033367, upload-time = "2026-02-11T04:21:03.536Z" }, { url = "https://files.pythonhosted.org/packages/ed/fe/a0ef1f73f939b0eca03ee2c108d0043a87468664770612602c63266a43c4/pillow-12.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:af9a332e572978f0218686636610555ae3defd1633597be015ed50289a03c523", size = 2453811, upload-time = "2026-02-11T04:21:05.116Z" }, { url = "https://files.pythonhosted.org/packages/d5/11/6db24d4bd7685583caeae54b7009584e38da3c3d4488ed4cd25b439de486/pillow-12.1.1-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:d242e8ac078781f1de88bf823d70c1a9b3c7950a44cdf4b7c012e22ccbcd8e4e", size = 4062689, upload-time = "2026-02-11T04:21:06.804Z" }, { url = "https://files.pythonhosted.org/packages/33/c0/ce6d3b1fe190f0021203e0d9b5b99e57843e345f15f9ef22fcd43842fd21/pillow-12.1.1-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:02f84dfad02693676692746df05b89cf25597560db2857363a208e393429f5e9", size = 4138535, upload-time = "2026-02-11T04:21:08.452Z" }, { url = "https://files.pythonhosted.org/packages/a0/c6/d5eb6a4fb32a3f9c21a8c7613ec706534ea1cf9f4b3663e99f0d83f6fca8/pillow-12.1.1-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:e65498daf4b583091ccbb2556c7000abf0f3349fcd57ef7adc9a84a394ed29f6", size = 3601364, upload-time = "2026-02-11T04:21:10.194Z" }, { url = "https://files.pythonhosted.org/packages/14/a1/16c4b823838ba4c9c52c0e6bbda903a3fe5a1bdbf1b8eb4fff7156f3e318/pillow-12.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6c6db3b84c87d48d0088943bf33440e0c42370b99b1c2a7989216f7b42eede60", size = 5262561, upload-time = "2026-02-11T04:21:11.742Z" }, { url = "https://files.pythonhosted.org/packages/bb/ad/ad9dc98ff24f485008aa5cdedaf1a219876f6f6c42a4626c08bc4e80b120/pillow-12.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8b7e5304e34942bf62e15184219a7b5ad4ff7f3bb5cca4d984f37df1a0e1aee2", size = 4657460, upload-time = "2026-02-11T04:21:13.786Z" }, { url = "https://files.pythonhosted.org/packages/9e/1b/f1a4ea9a895b5732152789326202a82464d5254759fbacae4deea3069334/pillow-12.1.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:18e5bddd742a44b7e6b1e773ab5db102bd7a94c32555ba656e76d319d19c3850", size = 6232698, upload-time = "2026-02-11T04:21:15.949Z" }, { url = "https://files.pythonhosted.org/packages/95/f4/86f51b8745070daf21fd2e5b1fe0eb35d4db9ca26e6d58366562fb56a743/pillow-12.1.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc44ef1f3de4f45b50ccf9136999d71abb99dca7706bc75d222ed350b9fd2289", size = 8041706, upload-time = "2026-02-11T04:21:17.723Z" }, { url = "https://files.pythonhosted.org/packages/29/9b/d6ecd956bb1266dd1045e995cce9b8d77759e740953a1c9aad9502a0461e/pillow-12.1.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5a8eb7ed8d4198bccbd07058416eeec51686b498e784eda166395a23eb99138e", size = 6346621, upload-time = "2026-02-11T04:21:19.547Z" }, { url = "https://files.pythonhosted.org/packages/71/24/538bff45bde96535d7d998c6fed1a751c75ac7c53c37c90dc2601b243893/pillow-12.1.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:47b94983da0c642de92ced1702c5b6c292a84bd3a8e1d1702ff923f183594717", size = 7038069, upload-time = "2026-02-11T04:21:21.378Z" }, { url = "https://files.pythonhosted.org/packages/94/0e/58cb1a6bc48f746bc4cb3adb8cabff73e2742c92b3bf7a220b7cf69b9177/pillow-12.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:518a48c2aab7ce596d3bf79d0e275661b846e86e4d0e7dec34712c30fe07f02a", size = 6460040, upload-time = "2026-02-11T04:21:23.148Z" }, { url = "https://files.pythonhosted.org/packages/6c/57/9045cb3ff11eeb6c1adce3b2d60d7d299d7b273a2e6c8381a524abfdc474/pillow-12.1.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a550ae29b95c6dc13cf69e2c9dc5747f814c54eeb2e32d683e5e93af56caa029", size = 7164523, upload-time = "2026-02-11T04:21:25.01Z" }, { url = "https://files.pythonhosted.org/packages/73/f2/9be9cb99f2175f0d4dbadd6616ce1bf068ee54a28277ea1bf1fbf729c250/pillow-12.1.1-cp313-cp313-win32.whl", hash = "sha256:a003d7422449f6d1e3a34e3dd4110c22148336918ddbfc6a32581cd54b2e0b2b", size = 6332552, upload-time = "2026-02-11T04:21:27.238Z" }, { url = "https://files.pythonhosted.org/packages/3f/eb/b0834ad8b583d7d9d42b80becff092082a1c3c156bb582590fcc973f1c7c/pillow-12.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:344cf1e3dab3be4b1fa08e449323d98a2a3f819ad20f4b22e77a0ede31f0faa1", size = 7040108, upload-time = "2026-02-11T04:21:29.462Z" }, { url = "https://files.pythonhosted.org/packages/d5/7d/fc09634e2aabdd0feabaff4a32f4a7d97789223e7c2042fd805ea4b4d2c2/pillow-12.1.1-cp313-cp313-win_arm64.whl", hash = "sha256:5c0dd1636633e7e6a0afe7bf6a51a14992b7f8e60de5789018ebbdfae55b040a", size = 2453712, upload-time = "2026-02-11T04:21:31.072Z" }, { url = "https://files.pythonhosted.org/packages/19/2a/b9d62794fc8a0dd14c1943df68347badbd5511103e0d04c035ffe5cf2255/pillow-12.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0330d233c1a0ead844fc097a7d16c0abff4c12e856c0b325f231820fee1f39da", size = 5264880, upload-time = "2026-02-11T04:21:32.865Z" }, { url = "https://files.pythonhosted.org/packages/26/9d/e03d857d1347fa5ed9247e123fcd2a97b6220e15e9cb73ca0a8d91702c6e/pillow-12.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5dae5f21afb91322f2ff791895ddd8889e5e947ff59f71b46041c8ce6db790bc", size = 4660616, upload-time = "2026-02-11T04:21:34.97Z" }, { url = "https://files.pythonhosted.org/packages/f7/ec/8a6d22afd02570d30954e043f09c32772bfe143ba9285e2fdb11284952cd/pillow-12.1.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2e0c664be47252947d870ac0d327fea7e63985a08794758aa8af5b6cb6ec0c9c", size = 6269008, upload-time = "2026-02-11T04:21:36.623Z" }, { url = "https://files.pythonhosted.org/packages/3d/1d/6d875422c9f28a4a361f495a5f68d9de4a66941dc2c619103ca335fa6446/pillow-12.1.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:691ab2ac363b8217f7d31b3497108fb1f50faab2f75dfb03284ec2f217e87bf8", size = 8073226, upload-time = "2026-02-11T04:21:38.585Z" }, { url = "https://files.pythonhosted.org/packages/a1/cd/134b0b6ee5eda6dc09e25e24b40fdafe11a520bc725c1d0bbaa5e00bf95b/pillow-12.1.1-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e9e8064fb1cc019296958595f6db671fba95209e3ceb0c4734c9baf97de04b20", size = 6380136, upload-time = "2026-02-11T04:21:40.562Z" }, { url = "https://files.pythonhosted.org/packages/7a/a9/7628f013f18f001c1b98d8fffe3452f306a70dc6aba7d931019e0492f45e/pillow-12.1.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:472a8d7ded663e6162dafdf20015c486a7009483ca671cece7a9279b512fcb13", size = 7067129, upload-time = "2026-02-11T04:21:42.521Z" }, { url = "https://files.pythonhosted.org/packages/1e/f8/66ab30a2193b277785601e82ee2d49f68ea575d9637e5e234faaa98efa4c/pillow-12.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:89b54027a766529136a06cfebeecb3a04900397a3590fd252160b888479517bf", size = 6491807, upload-time = "2026-02-11T04:21:44.22Z" }, { url = "https://files.pythonhosted.org/packages/da/0b/a877a6627dc8318fdb84e357c5e1a758c0941ab1ddffdafd231983788579/pillow-12.1.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:86172b0831b82ce4f7877f280055892b31179e1576aa00d0df3bb1bbf8c3e524", size = 7190954, upload-time = "2026-02-11T04:21:46.114Z" }, { url = "https://files.pythonhosted.org/packages/83/43/6f732ff85743cf746b1361b91665d9f5155e1483817f693f8d57ea93147f/pillow-12.1.1-cp313-cp313t-win32.whl", hash = "sha256:44ce27545b6efcf0fdbdceb31c9a5bdea9333e664cda58a7e674bb74608b3986", size = 6336441, upload-time = "2026-02-11T04:21:48.22Z" }, { url = "https://files.pythonhosted.org/packages/3b/44/e865ef3986611bb75bfabdf94a590016ea327833f434558801122979cd0e/pillow-12.1.1-cp313-cp313t-win_amd64.whl", hash = "sha256:a285e3eb7a5a45a2ff504e31f4a8d1b12ef62e84e5411c6804a42197c1cf586c", size = 7045383, upload-time = "2026-02-11T04:21:50.015Z" }, { url = "https://files.pythonhosted.org/packages/a8/c6/f4fb24268d0c6908b9f04143697ea18b0379490cb74ba9e8d41b898bd005/pillow-12.1.1-cp313-cp313t-win_arm64.whl", hash = "sha256:cc7d296b5ea4d29e6570dabeaed58d31c3fea35a633a69679fb03d7664f43fb3", size = 2456104, upload-time = "2026-02-11T04:21:51.633Z" }, { url = "https://files.pythonhosted.org/packages/03/d0/bebb3ffbf31c5a8e97241476c4cf8b9828954693ce6744b4a2326af3e16b/pillow-12.1.1-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:417423db963cb4be8bac3fc1204fe61610f6abeed1580a7a2cbb2fbda20f12af", size = 4062652, upload-time = "2026-02-11T04:21:53.19Z" }, { url = "https://files.pythonhosted.org/packages/2d/c0/0e16fb0addda4851445c28f8350d8c512f09de27bbb0d6d0bbf8b6709605/pillow-12.1.1-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:b957b71c6b2387610f556a7eb0828afbe40b4a98036fc0d2acfa5a44a0c2036f", size = 4138823, upload-time = "2026-02-11T04:22:03.088Z" }, { url = "https://files.pythonhosted.org/packages/6b/fb/6170ec655d6f6bb6630a013dd7cf7bc218423d7b5fa9071bf63dc32175ae/pillow-12.1.1-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:097690ba1f2efdeb165a20469d59d8bb03c55fb6621eb2041a060ae8ea3e9642", size = 3601143, upload-time = "2026-02-11T04:22:04.909Z" }, { url = "https://files.pythonhosted.org/packages/59/04/dc5c3f297510ba9a6837cbb318b87dd2b8f73eb41a43cc63767f65cb599c/pillow-12.1.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:2815a87ab27848db0321fb78c7f0b2c8649dee134b7f2b80c6a45c6831d75ccd", size = 5266254, upload-time = "2026-02-11T04:22:07.656Z" }, { url = "https://files.pythonhosted.org/packages/05/30/5db1236b0d6313f03ebf97f5e17cda9ca060f524b2fcc875149a8360b21c/pillow-12.1.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:f7ed2c6543bad5a7d5530eb9e78c53132f93dfa44a28492db88b41cdab885202", size = 4657499, upload-time = "2026-02-11T04:22:09.613Z" }, { url = "https://files.pythonhosted.org/packages/6f/18/008d2ca0eb612e81968e8be0bbae5051efba24d52debf930126d7eaacbba/pillow-12.1.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:652a2c9ccfb556235b2b501a3a7cf3742148cd22e04b5625c5fe057ea3e3191f", size = 6232137, upload-time = "2026-02-11T04:22:11.434Z" }, { url = "https://files.pythonhosted.org/packages/70/f1/f14d5b8eeb4b2cd62b9f9f847eb6605f103df89ef619ac68f92f748614ea/pillow-12.1.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d6e4571eedf43af33d0fc233a382a76e849badbccdf1ac438841308652a08e1f", size = 8042721, upload-time = "2026-02-11T04:22:13.321Z" }, { url = "https://files.pythonhosted.org/packages/5a/d6/17824509146e4babbdabf04d8171491fa9d776f7061ff6e727522df9bd03/pillow-12.1.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b574c51cf7d5d62e9be37ba446224b59a2da26dc4c1bb2ecbe936a4fb1a7cb7f", size = 6347798, upload-time = "2026-02-11T04:22:15.449Z" }, { url = "https://files.pythonhosted.org/packages/d1/ee/c85a38a9ab92037a75615aba572c85ea51e605265036e00c5b67dfafbfe2/pillow-12.1.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a37691702ed687799de29a518d63d4682d9016932db66d4e90c345831b02fb4e", size = 7039315, upload-time = "2026-02-11T04:22:17.24Z" }, { url = "https://files.pythonhosted.org/packages/ec/f3/bc8ccc6e08a148290d7523bde4d9a0d6c981db34631390dc6e6ec34cacf6/pillow-12.1.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f95c00d5d6700b2b890479664a06e754974848afaae5e21beb4d83c106923fd0", size = 6462360, upload-time = "2026-02-11T04:22:19.111Z" }, { url = "https://files.pythonhosted.org/packages/f6/ab/69a42656adb1d0665ab051eec58a41f169ad295cf81ad45406963105408f/pillow-12.1.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:559b38da23606e68681337ad74622c4dbba02254fc9cb4488a305dd5975c7eeb", size = 7165438, upload-time = "2026-02-11T04:22:21.041Z" }, { url = "https://files.pythonhosted.org/packages/02/46/81f7aa8941873f0f01d4b55cc543b0a3d03ec2ee30d617a0448bf6bd6dec/pillow-12.1.1-cp314-cp314-win32.whl", hash = "sha256:03edcc34d688572014ff223c125a3f77fb08091e4607e7745002fc214070b35f", size = 6431503, upload-time = "2026-02-11T04:22:22.833Z" }, { url = "https://files.pythonhosted.org/packages/40/72/4c245f7d1044b67affc7f134a09ea619d4895333d35322b775b928180044/pillow-12.1.1-cp314-cp314-win_amd64.whl", hash = "sha256:50480dcd74fa63b8e78235957d302d98d98d82ccbfac4c7e12108ba9ecbdba15", size = 7176748, upload-time = "2026-02-11T04:22:24.64Z" }, { url = "https://files.pythonhosted.org/packages/e4/ad/8a87bdbe038c5c698736e3348af5c2194ffb872ea52f11894c95f9305435/pillow-12.1.1-cp314-cp314-win_arm64.whl", hash = "sha256:5cb1785d97b0c3d1d1a16bc1d710c4a0049daefc4935f3a8f31f827f4d3d2e7f", size = 2544314, upload-time = "2026-02-11T04:22:26.685Z" }, { url = "https://files.pythonhosted.org/packages/6c/9d/efd18493f9de13b87ede7c47e69184b9e859e4427225ea962e32e56a49bc/pillow-12.1.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:1f90cff8aa76835cba5769f0b3121a22bd4eb9e6884cfe338216e557a9a548b8", size = 5268612, upload-time = "2026-02-11T04:22:29.884Z" }, { url = "https://files.pythonhosted.org/packages/f8/f1/4f42eb2b388eb2ffc660dcb7f7b556c1015c53ebd5f7f754965ef997585b/pillow-12.1.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1f1be78ce9466a7ee64bfda57bdba0f7cc499d9794d518b854816c41bf0aa4e9", size = 4660567, upload-time = "2026-02-11T04:22:31.799Z" }, { url = "https://files.pythonhosted.org/packages/01/54/df6ef130fa43e4b82e32624a7b821a2be1c5653a5fdad8469687a7db4e00/pillow-12.1.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:42fc1f4677106188ad9a55562bbade416f8b55456f522430fadab3cef7cd4e60", size = 6269951, upload-time = "2026-02-11T04:22:33.921Z" }, { url = "https://files.pythonhosted.org/packages/a9/48/618752d06cc44bb4aae8ce0cd4e6426871929ed7b46215638088270d9b34/pillow-12.1.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:98edb152429ab62a1818039744d8fbb3ccab98a7c29fc3d5fcef158f3f1f68b7", size = 8074769, upload-time = "2026-02-11T04:22:35.877Z" }, { url = "https://files.pythonhosted.org/packages/c3/bd/f1d71eb39a72fa088d938655afba3e00b38018d052752f435838961127d8/pillow-12.1.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d470ab1178551dd17fdba0fef463359c41aaa613cdcd7ff8373f54be629f9f8f", size = 6381358, upload-time = "2026-02-11T04:22:37.698Z" }, { url = "https://files.pythonhosted.org/packages/64/ef/c784e20b96674ed36a5af839305f55616f8b4f8aa8eeccf8531a6e312243/pillow-12.1.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6408a7b064595afcab0a49393a413732a35788f2a5092fdc6266952ed67de586", size = 7068558, upload-time = "2026-02-11T04:22:39.597Z" }, { url = "https://files.pythonhosted.org/packages/73/cb/8059688b74422ae61278202c4e1ad992e8a2e7375227be0a21c6b87ca8d5/pillow-12.1.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5d8c41325b382c07799a3682c1c258469ea2ff97103c53717b7893862d0c98ce", size = 6493028, upload-time = "2026-02-11T04:22:42.73Z" }, { url = "https://files.pythonhosted.org/packages/c6/da/e3c008ed7d2dd1f905b15949325934510b9d1931e5df999bb15972756818/pillow-12.1.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c7697918b5be27424e9ce568193efd13d925c4481dd364e43f5dff72d33e10f8", size = 7191940, upload-time = "2026-02-11T04:22:44.543Z" }, { url = "https://files.pythonhosted.org/packages/01/4a/9202e8d11714c1fc5951f2e1ef362f2d7fbc595e1f6717971d5dd750e969/pillow-12.1.1-cp314-cp314t-win32.whl", hash = "sha256:d2912fd8114fc5545aa3a4b5576512f64c55a03f3ebcca4c10194d593d43ea36", size = 6438736, upload-time = "2026-02-11T04:22:46.347Z" }, { url = "https://files.pythonhosted.org/packages/f3/ca/cbce2327eb9885476b3957b2e82eb12c866a8b16ad77392864ad601022ce/pillow-12.1.1-cp314-cp314t-win_amd64.whl", hash = "sha256:4ceb838d4bd9dab43e06c363cab2eebf63846d6a4aeaea283bbdfd8f1a8ed58b", size = 7182894, upload-time = "2026-02-11T04:22:48.114Z" }, { url = "https://files.pythonhosted.org/packages/ec/d2/de599c95ba0a973b94410477f8bf0b6f0b5e67360eb89bcb1ad365258beb/pillow-12.1.1-cp314-cp314t-win_arm64.whl", hash = "sha256:7b03048319bfc6170e93bd60728a1af51d3dd7704935feb228c4d4faab35d334", size = 2546446, upload-time = "2026-02-11T04:22:50.342Z" }, { url = "https://files.pythonhosted.org/packages/56/11/5d43209aa4cb58e0cc80127956ff1796a68b928e6324bbf06ef4db34367b/pillow-12.1.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:600fd103672b925fe62ed08e0d874ea34d692474df6f4bf7ebe148b30f89f39f", size = 5228606, upload-time = "2026-02-11T04:22:52.106Z" }, { url = "https://files.pythonhosted.org/packages/5f/d5/3b005b4e4fda6698b371fa6c21b097d4707585d7db99e98d9b0b87ac612a/pillow-12.1.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:665e1b916b043cef294bc54d47bf02d87e13f769bc4bc5fa225a24b3a6c5aca9", size = 4622321, upload-time = "2026-02-11T04:22:53.827Z" }, { url = "https://files.pythonhosted.org/packages/df/36/ed3ea2d594356fd8037e5a01f6156c74bc8d92dbb0fa60746cc96cabb6e8/pillow-12.1.1-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:495c302af3aad1ca67420ddd5c7bd480c8867ad173528767d906428057a11f0e", size = 5247579, upload-time = "2026-02-11T04:22:56.094Z" }, { url = "https://files.pythonhosted.org/packages/54/9a/9cc3e029683cf6d20ae5085da0dafc63148e3252c2f13328e553aaa13cfb/pillow-12.1.1-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8fd420ef0c52c88b5a035a0886f367748c72147b2b8f384c9d12656678dfdfa9", size = 6989094, upload-time = "2026-02-11T04:22:58.288Z" }, { url = "https://files.pythonhosted.org/packages/00/98/fc53ab36da80b88df0967896b6c4b4cd948a0dc5aa40a754266aa3ae48b3/pillow-12.1.1-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f975aa7ef9684ce7e2c18a3aa8f8e2106ce1e46b94ab713d156b2898811651d3", size = 5313850, upload-time = "2026-02-11T04:23:00.554Z" }, { url = "https://files.pythonhosted.org/packages/30/02/00fa585abfd9fe9d73e5f6e554dc36cc2b842898cbfc46d70353dae227f8/pillow-12.1.1-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8089c852a56c2966cf18835db62d9b34fef7ba74c726ad943928d494fa7f4735", size = 5963343, upload-time = "2026-02-11T04:23:02.934Z" }, { url = "https://files.pythonhosted.org/packages/f2/26/c56ce33ca856e358d27fda9676c055395abddb82c35ac0f593877ed4562e/pillow-12.1.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:cb9bb857b2d057c6dfc72ac5f3b44836924ba15721882ef103cecb40d002d80e", size = 7029880, upload-time = "2026-02-11T04:23:04.783Z" }, ] [[package]] name = "platformdirs" version = "4.7.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/71/25/ccd8e88fcd16a4eb6343a8b4b9635e6f3928a7ebcd82822a14d20e3ca29f/platformdirs-4.7.0.tar.gz", hash = "sha256:fd1a5f8599c85d49b9ac7d6e450bc2f1aaf4a23f1fe86d09952fe20ad365cf36", size = 23118, upload-time = "2026-02-12T22:21:53.764Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/cb/e3/1eddccb2c39ecfbe09b3add42a04abcc3fa5b468aa4224998ffb8a7e9c8f/platformdirs-4.7.0-py3-none-any.whl", hash = "sha256:1ed8db354e344c5bb6039cd727f096af975194b508e37177719d562b2b540ee6", size = 18983, upload-time = "2026-02-12T22:21:52.237Z" }, ] [[package]] name = "pluggy" version = "1.6.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, ] [[package]] name = "pre-commit" version = "4.5.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cfgv" }, { name = "identify" }, { name = "nodeenv" }, { name = "pyyaml" }, { name = "virtualenv" }, ] sdist = { url = "https://files.pythonhosted.org/packages/40/f1/6d86a29246dfd2e9b6237f0b5823717f60cad94d47ddc26afa916d21f525/pre_commit-4.5.1.tar.gz", hash = "sha256:eb545fcff725875197837263e977ea257a402056661f09dae08e4b149b030a61", size = 198232, upload-time = "2025-12-16T21:14:33.552Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/5d/19/fd3ef348460c80af7bb4669ea7926651d1f95c23ff2df18b9d24bab4f3fa/pre_commit-4.5.1-py2.py3-none-any.whl", hash = "sha256:3b3afd891e97337708c1674210f8eba659b52a38ea5f822ff142d10786221f77", size = 226437, upload-time = "2025-12-16T21:14:32.409Z" }, ] [[package]] name = "prompt-toolkit" version = "3.0.52" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "wcwidth" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a1/96/06e01a7b38dce6fe1db213e061a4602dd6032a8a97ef6c1a862537732421/prompt_toolkit-3.0.52.tar.gz", hash = "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855", size = 434198, upload-time = "2025-08-27T15:24:02.057Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl", hash = "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955", size = 391431, upload-time = "2025-08-27T15:23:59.498Z" }, ] [[package]] name = "ptyprocess" version = "0.7.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, ] [[package]] name = "pure-eval" version = "0.2.3" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload-time = "2024-07-21T12:58:21.801Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" }, ] [[package]] name = "pycparser" version = "3.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, ] [[package]] name = "pygments" version = "2.19.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, ] [[package]] name = "pypdf" version = "6.7.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/10/45/8340de1c752bfda2da912ea0fa8c9a432f7de3f6315e82f1c0847811dff6/pypdf-6.7.0.tar.gz", hash = "sha256:eb95e244d9f434e6cfd157272283339ef586e593be64ee699c620f756d5c3f7e", size = 5299947, upload-time = "2026-02-08T14:47:11.897Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/ed/f1/c92e75a0eb18bb10845e792054ded113010de958b6d4998e201c029417bb/pypdf-6.7.0-py3-none-any.whl", hash = "sha256:62e85036d50839cbdf45b8067c2c1a1b925517514d7cba4cbe8755a6c2829bc9", size = 330557, upload-time = "2026-02-08T14:47:10.111Z" }, ] [[package]] name = "pysocks" version = "1.7.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/bd/11/293dd436aea955d45fc4e8a35b6ae7270f5b8e00b53cf6c024c83b657a11/PySocks-1.7.1.tar.gz", hash = "sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0", size = 284429, upload-time = "2019-09-20T02:07:35.714Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/8d/59/b4572118e098ac8e46e399a1dd0f2d85403ce8bbaad9ec79373ed6badaf9/PySocks-1.7.1-py3-none-any.whl", hash = "sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5", size = 16725, upload-time = "2019-09-20T02:06:22.938Z" }, ] [[package]] name = "pytest" version = "9.0.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "iniconfig" }, { name = "packaging" }, { name = "pluggy" }, { name = "pygments" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11", size = 1568901, upload-time = "2025-12-06T21:30:51.014Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b", size = 374801, upload-time = "2025-12-06T21:30:49.154Z" }, ] [[package]] name = "pytest-cov" version = "7.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "coverage", extra = ["toml"] }, { name = "pluggy" }, { name = "pytest" }, ] sdist = { url = "https://files.pythonhosted.org/packages/5e/f7/c933acc76f5208b3b00089573cf6a2bc26dc80a8aece8f52bb7d6b1855ca/pytest_cov-7.0.0.tar.gz", hash = "sha256:33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1", size = 54328, upload-time = "2025-09-09T10:57:02.113Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/ee/49/1377b49de7d0c1ce41292161ea0f721913fa8722c19fb9c1e3aa0367eecb/pytest_cov-7.0.0-py3-none-any.whl", hash = "sha256:3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861", size = 22424, upload-time = "2025-09-09T10:57:00.695Z" }, ] [[package]] name = "python-dotenv" version = "1.2.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/f0/26/19cadc79a718c5edbec86fd4919a6b6d3f681039a2f6d66d14be94e75fb9/python_dotenv-1.2.1.tar.gz", hash = "sha256:42667e897e16ab0d66954af0e60a9caa94f0fd4ecf3aaf6d2d260eec1aa36ad6", size = 44221, upload-time = "2025-10-26T15:12:10.434Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/14/1b/a298b06749107c305e1fe0f814c6c74aea7b2f1e10989cb30f544a1b3253/python_dotenv-1.2.1-py3-none-any.whl", hash = "sha256:b81ee9561e9ca4004139c6cbba3a238c32b03e4894671e181b671e8cb8425d61", size = 21230, upload-time = "2025-10-26T15:12:09.109Z" }, ] [[package]] name = "pyyaml" version = "6.0.3" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" }, { url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" }, { url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" }, { url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" }, { url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" }, { url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" }, { url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" }, { url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" }, { url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" }, { url = "https://files.pythonhosted.org/packages/6d/16/a95b6757765b7b031c9374925bb718d55e0a9ba8a1b6a12d25962ea44347/pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", size = 185826, upload-time = "2025-09-25T21:31:58.655Z" }, { url = "https://files.pythonhosted.org/packages/16/19/13de8e4377ed53079ee996e1ab0a9c33ec2faf808a4647b7b4c0d46dd239/pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", size = 175577, upload-time = "2025-09-25T21:32:00.088Z" }, { url = "https://files.pythonhosted.org/packages/0c/62/d2eb46264d4b157dae1275b573017abec435397aa59cbcdab6fc978a8af4/pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c", size = 775556, upload-time = "2025-09-25T21:32:01.31Z" }, { url = "https://files.pythonhosted.org/packages/10/cb/16c3f2cf3266edd25aaa00d6c4350381c8b012ed6f5276675b9eba8d9ff4/pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00", size = 882114, upload-time = "2025-09-25T21:32:03.376Z" }, { url = "https://files.pythonhosted.org/packages/71/60/917329f640924b18ff085ab889a11c763e0b573da888e8404ff486657602/pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d", size = 806638, upload-time = "2025-09-25T21:32:04.553Z" }, { url = "https://files.pythonhosted.org/packages/dd/6f/529b0f316a9fd167281a6c3826b5583e6192dba792dd55e3203d3f8e655a/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a", size = 767463, upload-time = "2025-09-25T21:32:06.152Z" }, { url = "https://files.pythonhosted.org/packages/f2/6a/b627b4e0c1dd03718543519ffb2f1deea4a1e6d42fbab8021936a4d22589/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4", size = 794986, upload-time = "2025-09-25T21:32:07.367Z" }, { url = "https://files.pythonhosted.org/packages/45/91/47a6e1c42d9ee337c4839208f30d9f09caa9f720ec7582917b264defc875/pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b", size = 142543, upload-time = "2025-09-25T21:32:08.95Z" }, { url = "https://files.pythonhosted.org/packages/da/e3/ea007450a105ae919a72393cb06f122f288ef60bba2dc64b26e2646fa315/pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf", size = 158763, upload-time = "2025-09-25T21:32:09.96Z" }, { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, ] [[package]] name = "readme-renderer" version = "44.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "docutils" }, { name = "nh3" }, { name = "pygments" }, ] sdist = { url = "https://files.pythonhosted.org/packages/5a/a9/104ec9234c8448c4379768221ea6df01260cd6c2ce13182d4eac531c8342/readme_renderer-44.0.tar.gz", hash = "sha256:8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1", size = 32056, upload-time = "2024-07-08T15:00:57.805Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl", hash = "sha256:2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151", size = 13310, upload-time = "2024-07-08T15:00:56.577Z" }, ] [package.optional-dependencies] md = [ { name = "cmarkgfm" }, ] [[package]] name = "requests" version = "2.32.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, { name = "charset-normalizer" }, { name = "idna" }, { name = "urllib3" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, ] [[package]] name = "restructuredtext-lint" version = "2.0.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "docutils" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ca/e6/eefcad2228f4124f17e01064428fbcd0ade06a274f3063ce3a126a569d6b/restructuredtext_lint-2.0.2.tar.gz", hash = "sha256:dd25209b9e0b726929d8306339faf723734a3137db382bcf27294fa18a6bc52b", size = 17494, upload-time = "2025-11-23T08:05:18.585Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/af/63/ac52b32b33ae62f2076ed5c4f6b00e065e3ccbb2063e9a2e813b2bfc95bf/restructuredtext_lint-2.0.2-py3-none-any.whl", hash = "sha256:374c0d3e7e0867b2335146a145343ac619400623716b211b9a010c94426bbed7", size = 14198, upload-time = "2025-11-23T08:05:23.267Z" }, ] [[package]] name = "rich" version = "14.3.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown-it-py" }, { name = "pygments" }, ] sdist = { url = "https://files.pythonhosted.org/packages/74/99/a4cab2acbb884f80e558b0771e97e21e939c5dfb460f488d19df485e8298/rich-14.3.2.tar.gz", hash = "sha256:e712f11c1a562a11843306f5ed999475f09ac31ffb64281f73ab29ffdda8b3b8", size = 230143, upload-time = "2026-02-01T16:20:47.908Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/ef/45/615f5babd880b4bd7d405cc0dc348234c5ffb6ed1ea33e152ede08b2072d/rich-14.3.2-py3-none-any.whl", hash = "sha256:08e67c3e90884651da3239ea668222d19bea7b589149d8014a21c633420dbb69", size = 309963, upload-time = "2026-02-01T16:20:46.078Z" }, ] [[package]] name = "roman-numerals" version = "4.1.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/ae/f9/41dc953bbeb056c17d5f7a519f50fdf010bd0553be2d630bc69d1e022703/roman_numerals-4.1.0.tar.gz", hash = "sha256:1af8b147eb1405d5839e78aeb93131690495fe9da5c91856cb33ad55a7f1e5b2", size = 9077, upload-time = "2025-12-17T18:25:34.381Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/04/54/6f679c435d28e0a568d8e8a7c0a93a09010818634c3c3907fc98d8983770/roman_numerals-4.1.0-py3-none-any.whl", hash = "sha256:647ba99caddc2cc1e55a51e4360689115551bf4476d90e8162cf8c345fe233c7", size = 7676, upload-time = "2025-12-17T18:25:33.098Z" }, ] [[package]] name = "ruff" version = "0.15.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/c8/39/5cee96809fbca590abea6b46c6d1c586b49663d1d2830a751cc8fc42c666/ruff-0.15.0.tar.gz", hash = "sha256:6bdea47cdbea30d40f8f8d7d69c0854ba7c15420ec75a26f463290949d7f7e9a", size = 4524893, upload-time = "2026-02-03T17:53:35.357Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/bc/88/3fd1b0aa4b6330d6aaa63a285bc96c9f71970351579152d231ed90914586/ruff-0.15.0-py3-none-linux_armv6l.whl", hash = "sha256:aac4ebaa612a82b23d45964586f24ae9bc23ca101919f5590bdb368d74ad5455", size = 10354332, upload-time = "2026-02-03T17:52:54.892Z" }, { url = "https://files.pythonhosted.org/packages/72/f6/62e173fbb7eb75cc29fe2576a1e20f0a46f671a2587b5f604bfb0eaf5f6f/ruff-0.15.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:dcd4be7cc75cfbbca24a98d04d0b9b36a270d0833241f776b788d59f4142b14d", size = 10767189, upload-time = "2026-02-03T17:53:19.778Z" }, { url = "https://files.pythonhosted.org/packages/99/e4/968ae17b676d1d2ff101d56dc69cf333e3a4c985e1ec23803df84fc7bf9e/ruff-0.15.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d747e3319b2bce179c7c1eaad3d884dc0a199b5f4d5187620530adf9105268ce", size = 10075384, upload-time = "2026-02-03T17:53:29.241Z" }, { url = "https://files.pythonhosted.org/packages/a2/bf/9843c6044ab9e20af879c751487e61333ca79a2c8c3058b15722386b8cae/ruff-0.15.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:650bd9c56ae03102c51a5e4b554d74d825ff3abe4db22b90fd32d816c2e90621", size = 10481363, upload-time = "2026-02-03T17:52:43.332Z" }, { url = "https://files.pythonhosted.org/packages/55/d9/4ada5ccf4cd1f532db1c8d44b6f664f2208d3d93acbeec18f82315e15193/ruff-0.15.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a6664b7eac559e3048223a2da77769c2f92b43a6dfd4720cef42654299a599c9", size = 10187736, upload-time = "2026-02-03T17:53:00.522Z" }, { url = "https://files.pythonhosted.org/packages/86/e2/f25eaecd446af7bb132af0a1d5b135a62971a41f5366ff41d06d25e77a91/ruff-0.15.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f811f97b0f092b35320d1556f3353bf238763420ade5d9e62ebd2b73f2ff179", size = 10968415, upload-time = "2026-02-03T17:53:15.705Z" }, { url = "https://files.pythonhosted.org/packages/e7/dc/f06a8558d06333bf79b497d29a50c3a673d9251214e0d7ec78f90b30aa79/ruff-0.15.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:761ec0a66680fab6454236635a39abaf14198818c8cdf691e036f4bc0f406b2d", size = 11809643, upload-time = "2026-02-03T17:53:23.031Z" }, { url = "https://files.pythonhosted.org/packages/dd/45/0ece8db2c474ad7df13af3a6d50f76e22a09d078af63078f005057ca59eb/ruff-0.15.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:940f11c2604d317e797b289f4f9f3fa5555ffe4fb574b55ed006c3d9b6f0eb78", size = 11234787, upload-time = "2026-02-03T17:52:46.432Z" }, { url = "https://files.pythonhosted.org/packages/8a/d9/0e3a81467a120fd265658d127db648e4d3acfe3e4f6f5d4ea79fac47e587/ruff-0.15.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bcbca3d40558789126da91d7ef9a7c87772ee107033db7191edefa34e2c7f1b4", size = 11112797, upload-time = "2026-02-03T17:52:49.274Z" }, { url = "https://files.pythonhosted.org/packages/b2/cb/8c0b3b0c692683f8ff31351dfb6241047fa873a4481a76df4335a8bff716/ruff-0.15.0-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:9a121a96db1d75fa3eb39c4539e607f628920dd72ff1f7c5ee4f1b768ac62d6e", size = 11033133, upload-time = "2026-02-03T17:53:33.105Z" }, { url = "https://files.pythonhosted.org/packages/f8/5e/23b87370cf0f9081a8c89a753e69a4e8778805b8802ccfe175cc410e50b9/ruff-0.15.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:5298d518e493061f2eabd4abd067c7e4fb89e2f63291c94332e35631c07c3662", size = 10442646, upload-time = "2026-02-03T17:53:06.278Z" }, { url = "https://files.pythonhosted.org/packages/e1/9a/3c94de5ce642830167e6d00b5c75aacd73e6347b4c7fc6828699b150a5ee/ruff-0.15.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:afb6e603d6375ff0d6b0cee563fa21ab570fd15e65c852cb24922cef25050cf1", size = 10195750, upload-time = "2026-02-03T17:53:26.084Z" }, { url = "https://files.pythonhosted.org/packages/30/15/e396325080d600b436acc970848d69df9c13977942fb62bb8722d729bee8/ruff-0.15.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:77e515f6b15f828b94dc17d2b4ace334c9ddb7d9468c54b2f9ed2b9c1593ef16", size = 10676120, upload-time = "2026-02-03T17:53:09.363Z" }, { url = "https://files.pythonhosted.org/packages/8d/c9/229a23d52a2983de1ad0fb0ee37d36e0257e6f28bfd6b498ee2c76361874/ruff-0.15.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:6f6e80850a01eb13b3e42ee0ebdf6e4497151b48c35051aab51c101266d187a3", size = 11201636, upload-time = "2026-02-03T17:52:57.281Z" }, { url = "https://files.pythonhosted.org/packages/6f/b0/69adf22f4e24f3677208adb715c578266842e6e6a3cc77483f48dd999ede/ruff-0.15.0-py3-none-win32.whl", hash = "sha256:238a717ef803e501b6d51e0bdd0d2c6e8513fe9eec14002445134d3907cd46c3", size = 10465945, upload-time = "2026-02-03T17:53:12.591Z" }, { url = "https://files.pythonhosted.org/packages/51/ad/f813b6e2c97e9b4598be25e94a9147b9af7e60523b0cb5d94d307c15229d/ruff-0.15.0-py3-none-win_amd64.whl", hash = "sha256:dd5e4d3301dc01de614da3cdffc33d4b1b96fb89e45721f1598e5532ccf78b18", size = 11564657, upload-time = "2026-02-03T17:52:51.893Z" }, { url = "https://files.pythonhosted.org/packages/f6/b0/2d823f6e77ebe560f4e397d078487e8d52c1516b331e3521bc75db4272ca/ruff-0.15.0-py3-none-win_arm64.whl", hash = "sha256:c480d632cc0ca3f0727acac8b7d053542d9e114a462a145d0b00e7cd658c515a", size = 10865753, upload-time = "2026-02-03T17:53:03.014Z" }, ] [[package]] name = "scikit-image" version = "0.25.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.11'", ] dependencies = [ { name = "imageio", marker = "python_full_version < '3.11'" }, { name = "lazy-loader", marker = "python_full_version < '3.11'" }, { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "packaging", marker = "python_full_version < '3.11'" }, { name = "pillow", marker = "python_full_version < '3.11'" }, { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "tifffile", version = "2025.5.10", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c7/a8/3c0f256012b93dd2cb6fda9245e9f4bff7dc0486880b248005f15ea2255e/scikit_image-0.25.2.tar.gz", hash = "sha256:e5a37e6cd4d0c018a7a55b9d601357e3382826d3888c10d0213fc63bff977dde", size = 22693594, upload-time = "2025-02-18T18:05:24.538Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/11/cb/016c63f16065c2d333c8ed0337e18a5cdf9bc32d402e4f26b0db362eb0e2/scikit_image-0.25.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d3278f586793176599df6a4cf48cb6beadae35c31e58dc01a98023af3dc31c78", size = 13988922, upload-time = "2025-02-18T18:04:11.069Z" }, { url = "https://files.pythonhosted.org/packages/30/ca/ff4731289cbed63c94a0c9a5b672976603118de78ed21910d9060c82e859/scikit_image-0.25.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:5c311069899ce757d7dbf1d03e32acb38bb06153236ae77fcd820fd62044c063", size = 13192698, upload-time = "2025-02-18T18:04:15.362Z" }, { url = "https://files.pythonhosted.org/packages/39/6d/a2aadb1be6d8e149199bb9b540ccde9e9622826e1ab42fe01de4c35ab918/scikit_image-0.25.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be455aa7039a6afa54e84f9e38293733a2622b8c2fb3362b822d459cc5605e99", size = 14153634, upload-time = "2025-02-18T18:04:18.496Z" }, { url = "https://files.pythonhosted.org/packages/96/08/916e7d9ee4721031b2f625db54b11d8379bd51707afaa3e5a29aecf10bc4/scikit_image-0.25.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4c464b90e978d137330be433df4e76d92ad3c5f46a22f159520ce0fdbea8a09", size = 14767545, upload-time = "2025-02-18T18:04:22.556Z" }, { url = "https://files.pythonhosted.org/packages/5f/ee/c53a009e3997dda9d285402f19226fbd17b5b3cb215da391c4ed084a1424/scikit_image-0.25.2-cp310-cp310-win_amd64.whl", hash = "sha256:60516257c5a2d2f74387c502aa2f15a0ef3498fbeaa749f730ab18f0a40fd054", size = 12812908, upload-time = "2025-02-18T18:04:26.364Z" }, { url = "https://files.pythonhosted.org/packages/c4/97/3051c68b782ee3f1fb7f8f5bb7d535cf8cb92e8aae18fa9c1cdf7e15150d/scikit_image-0.25.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f4bac9196fb80d37567316581c6060763b0f4893d3aca34a9ede3825bc035b17", size = 14003057, upload-time = "2025-02-18T18:04:30.395Z" }, { url = "https://files.pythonhosted.org/packages/19/23/257fc696c562639826065514d551b7b9b969520bd902c3a8e2fcff5b9e17/scikit_image-0.25.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:d989d64ff92e0c6c0f2018c7495a5b20e2451839299a018e0e5108b2680f71e0", size = 13180335, upload-time = "2025-02-18T18:04:33.449Z" }, { url = "https://files.pythonhosted.org/packages/ef/14/0c4a02cb27ca8b1e836886b9ec7c9149de03053650e9e2ed0625f248dd92/scikit_image-0.25.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2cfc96b27afe9a05bc92f8c6235321d3a66499995675b27415e0d0c76625173", size = 14144783, upload-time = "2025-02-18T18:04:36.594Z" }, { url = "https://files.pythonhosted.org/packages/dd/9b/9fb556463a34d9842491d72a421942c8baff4281025859c84fcdb5e7e602/scikit_image-0.25.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24cc986e1f4187a12aa319f777b36008764e856e5013666a4a83f8df083c2641", size = 14785376, upload-time = "2025-02-18T18:04:39.856Z" }, { url = "https://files.pythonhosted.org/packages/de/ec/b57c500ee85885df5f2188f8bb70398481393a69de44a00d6f1d055f103c/scikit_image-0.25.2-cp311-cp311-win_amd64.whl", hash = "sha256:b4f6b61fc2db6340696afe3db6b26e0356911529f5f6aee8c322aa5157490c9b", size = 12791698, upload-time = "2025-02-18T18:04:42.868Z" }, { url = "https://files.pythonhosted.org/packages/35/8c/5df82881284459f6eec796a5ac2a0a304bb3384eec2e73f35cfdfcfbf20c/scikit_image-0.25.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8db8dd03663112783221bf01ccfc9512d1cc50ac9b5b0fe8f4023967564719fb", size = 13986000, upload-time = "2025-02-18T18:04:47.156Z" }, { url = "https://files.pythonhosted.org/packages/ce/e6/93bebe1abcdce9513ffec01d8af02528b4c41fb3c1e46336d70b9ed4ef0d/scikit_image-0.25.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:483bd8cc10c3d8a7a37fae36dfa5b21e239bd4ee121d91cad1f81bba10cfb0ed", size = 13235893, upload-time = "2025-02-18T18:04:51.049Z" }, { url = "https://files.pythonhosted.org/packages/53/4b/eda616e33f67129e5979a9eb33c710013caa3aa8a921991e6cc0b22cea33/scikit_image-0.25.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d1e80107bcf2bf1291acfc0bf0425dceb8890abe9f38d8e94e23497cbf7ee0d", size = 14178389, upload-time = "2025-02-18T18:04:54.245Z" }, { url = "https://files.pythonhosted.org/packages/6b/b5/b75527c0f9532dd8a93e8e7cd8e62e547b9f207d4c11e24f0006e8646b36/scikit_image-0.25.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a17e17eb8562660cc0d31bb55643a4da996a81944b82c54805c91b3fe66f4824", size = 15003435, upload-time = "2025-02-18T18:04:57.586Z" }, { url = "https://files.pythonhosted.org/packages/34/e3/49beb08ebccda3c21e871b607c1cb2f258c3fa0d2f609fed0a5ba741b92d/scikit_image-0.25.2-cp312-cp312-win_amd64.whl", hash = "sha256:bdd2b8c1de0849964dbc54037f36b4e9420157e67e45a8709a80d727f52c7da2", size = 12899474, upload-time = "2025-02-18T18:05:01.166Z" }, { url = "https://files.pythonhosted.org/packages/e6/7c/9814dd1c637f7a0e44342985a76f95a55dd04be60154247679fd96c7169f/scikit_image-0.25.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7efa888130f6c548ec0439b1a7ed7295bc10105458a421e9bf739b457730b6da", size = 13921841, upload-time = "2025-02-18T18:05:03.963Z" }, { url = "https://files.pythonhosted.org/packages/84/06/66a2e7661d6f526740c309e9717d3bd07b473661d5cdddef4dd978edab25/scikit_image-0.25.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:dd8011efe69c3641920614d550f5505f83658fe33581e49bed86feab43a180fc", size = 13196862, upload-time = "2025-02-18T18:05:06.986Z" }, { url = "https://files.pythonhosted.org/packages/4e/63/3368902ed79305f74c2ca8c297dfeb4307269cbe6402412668e322837143/scikit_image-0.25.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28182a9d3e2ce3c2e251383bdda68f8d88d9fff1a3ebe1eb61206595c9773341", size = 14117785, upload-time = "2025-02-18T18:05:10.69Z" }, { url = "https://files.pythonhosted.org/packages/cd/9b/c3da56a145f52cd61a68b8465d6a29d9503bc45bc993bb45e84371c97d94/scikit_image-0.25.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8abd3c805ce6944b941cfed0406d88faeb19bab3ed3d4b50187af55cf24d147", size = 14977119, upload-time = "2025-02-18T18:05:13.871Z" }, { url = "https://files.pythonhosted.org/packages/8a/97/5fcf332e1753831abb99a2525180d3fb0d70918d461ebda9873f66dcc12f/scikit_image-0.25.2-cp313-cp313-win_amd64.whl", hash = "sha256:64785a8acefee460ec49a354706db0b09d1f325674107d7fa3eadb663fb56d6f", size = 12885116, upload-time = "2025-02-18T18:05:17.844Z" }, { url = "https://files.pythonhosted.org/packages/10/cc/75e9f17e3670b5ed93c32456fda823333c6279b144cd93e2c03aa06aa472/scikit_image-0.25.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:330d061bd107d12f8d68f1d611ae27b3b813b8cdb0300a71d07b1379178dd4cd", size = 13862801, upload-time = "2025-02-18T18:05:20.783Z" }, ] [[package]] name = "scikit-image" version = "0.26.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.12'", "python_full_version == '3.11.*'", ] dependencies = [ { name = "imageio", marker = "python_full_version >= '3.11'" }, { name = "lazy-loader", marker = "python_full_version >= '3.11'" }, { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "numpy", version = "2.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "packaging", marker = "python_full_version >= '3.11'" }, { name = "pillow", marker = "python_full_version >= '3.11'" }, { name = "scipy", version = "1.17.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "tifffile", version = "2026.1.28", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a1/b4/2528bb43c67d48053a7a649a9666432dc307d66ba02e3a6d5c40f46655df/scikit_image-0.26.0.tar.gz", hash = "sha256:f5f970ab04efad85c24714321fcc91613fcb64ef2a892a13167df2f3e59199fa", size = 22729739, upload-time = "2025-12-20T17:12:21.824Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/76/16/8a407688b607f86f81f8c649bf0d68a2a6d67375f18c2d660aba20f5b648/scikit_image-0.26.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b1ede33a0fb3731457eaf53af6361e73dd510f449dac437ab54573b26788baf0", size = 12355510, upload-time = "2025-12-20T17:10:31.628Z" }, { url = "https://files.pythonhosted.org/packages/6b/f9/7efc088ececb6f6868fd4475e16cfafc11f242ce9ab5fc3557d78b5da0d4/scikit_image-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7af7aa331c6846bd03fa28b164c18d0c3fd419dbb888fb05e958ac4257a78fdd", size = 12056334, upload-time = "2025-12-20T17:10:34.559Z" }, { url = "https://files.pythonhosted.org/packages/9f/1e/bc7fb91fb5ff65ef42346c8b7ee8b09b04eabf89235ab7dbfdfd96cbd1ea/scikit_image-0.26.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9ea6207d9e9d21c3f464efe733121c0504e494dbdc7728649ff3e23c3c5a4953", size = 13297768, upload-time = "2025-12-20T17:10:37.733Z" }, { url = "https://files.pythonhosted.org/packages/a5/2a/e71c1a7d90e70da67b88ccc609bd6ae54798d5847369b15d3a8052232f9d/scikit_image-0.26.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:74aa5518ccea28121f57a95374581d3b979839adc25bb03f289b1bc9b99c58af", size = 13711217, upload-time = "2025-12-20T17:10:40.935Z" }, { url = "https://files.pythonhosted.org/packages/d4/59/9637ee12c23726266b91296791465218973ce1ad3e4c56fc81e4d8e7d6e1/scikit_image-0.26.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d5c244656de905e195a904e36dbc18585e06ecf67d90f0482cbde63d7f9ad59d", size = 14337782, upload-time = "2025-12-20T17:10:43.452Z" }, { url = "https://files.pythonhosted.org/packages/e7/5c/a3e1e0860f9294663f540c117e4bf83d55e5b47c281d475cc06227e88411/scikit_image-0.26.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:21a818ee6ca2f2131b9e04d8eb7637b5c18773ebe7b399ad23dcc5afaa226d2d", size = 14805997, upload-time = "2025-12-20T17:10:45.93Z" }, { url = "https://files.pythonhosted.org/packages/d3/c6/2eeacf173da041a9e388975f54e5c49df750757fcfc3ee293cdbbae1ea0a/scikit_image-0.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:9490360c8d3f9a7e85c8de87daf7c0c66507960cf4947bb9610d1751928721c7", size = 11878486, upload-time = "2025-12-20T17:10:48.246Z" }, { url = "https://files.pythonhosted.org/packages/c3/a4/a852c4949b9058d585e762a66bf7e9a2cd3be4795cd940413dfbfbb0ce79/scikit_image-0.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:0baa0108d2d027f34d748e84e592b78acc23e965a5de0e4bb03cf371de5c0581", size = 11346518, upload-time = "2025-12-20T17:10:50.575Z" }, { url = "https://files.pythonhosted.org/packages/99/e8/e13757982264b33a1621628f86b587e9a73a13f5256dad49b19ba7dc9083/scikit_image-0.26.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d454b93a6fa770ac5ae2d33570f8e7a321bb80d29511ce4b6b78058ebe176e8c", size = 12376452, upload-time = "2025-12-20T17:10:52.796Z" }, { url = "https://files.pythonhosted.org/packages/e3/be/f8dd17d0510f9911f9f17ba301f7455328bf13dae416560126d428de9568/scikit_image-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3409e89d66eff5734cd2b672d1c48d2759360057e714e1d92a11df82c87cba37", size = 12061567, upload-time = "2025-12-20T17:10:55.207Z" }, { url = "https://files.pythonhosted.org/packages/b3/2b/c70120a6880579fb42b91567ad79feb4772f7be72e8d52fec403a3dde0c6/scikit_image-0.26.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c717490cec9e276afb0438dd165b7c3072d6c416709cc0f9f5a4c1070d23a44", size = 13084214, upload-time = "2025-12-20T17:10:57.468Z" }, { url = "https://files.pythonhosted.org/packages/f4/a2/70401a107d6d7466d64b466927e6b96fcefa99d57494b972608e2f8be50f/scikit_image-0.26.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7df650e79031634ac90b11e64a9eedaf5a5e06fcd09bcd03a34be01745744466", size = 13561683, upload-time = "2025-12-20T17:10:59.49Z" }, { url = "https://files.pythonhosted.org/packages/13/a5/48bdfd92794c5002d664e0910a349d0a1504671ef5ad358150f21643c79a/scikit_image-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cefd85033e66d4ea35b525bb0937d7f42d4cdcfed2d1888e1570d5ce450d3932", size = 14112147, upload-time = "2025-12-20T17:11:02.083Z" }, { url = "https://files.pythonhosted.org/packages/ee/b5/ac71694da92f5def5953ca99f18a10fe98eac2dd0a34079389b70b4d0394/scikit_image-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3f5bf622d7c0435884e1e141ebbe4b2804e16b2dd23ae4c6183e2ea99233be70", size = 14661625, upload-time = "2025-12-20T17:11:04.528Z" }, { url = "https://files.pythonhosted.org/packages/23/4d/a3cc1e96f080e253dad2251bfae7587cf2b7912bcd76fd43fd366ff35a87/scikit_image-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:abed017474593cd3056ae0fe948d07d0747b27a085e92df5474f4955dd65aec0", size = 11911059, upload-time = "2025-12-20T17:11:06.61Z" }, { url = "https://files.pythonhosted.org/packages/35/8a/d1b8055f584acc937478abf4550d122936f420352422a1a625eef2c605d8/scikit_image-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:4d57e39ef67a95d26860c8caf9b14b8fb130f83b34c6656a77f191fa6d1d04d8", size = 11348740, upload-time = "2025-12-20T17:11:09.118Z" }, { url = "https://files.pythonhosted.org/packages/4f/48/02357ffb2cca35640f33f2cfe054a4d6d5d7a229b88880a64f1e45c11f4e/scikit_image-0.26.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a2e852eccf41d2d322b8e60144e124802873a92b8d43a6f96331aa42888491c7", size = 12346329, upload-time = "2025-12-20T17:11:11.599Z" }, { url = "https://files.pythonhosted.org/packages/67/b9/b792c577cea2c1e94cda83b135a656924fc57c428e8a6d302cd69aac1b60/scikit_image-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:98329aab3bc87db352b9887f64ce8cdb8e75f7c2daa19927f2e121b797b678d5", size = 12031726, upload-time = "2025-12-20T17:11:13.871Z" }, { url = "https://files.pythonhosted.org/packages/07/a9/9564250dfd65cb20404a611016db52afc6268b2b371cd19c7538ea47580f/scikit_image-0.26.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:915bb3ba66455cf8adac00dc8fdf18a4cd29656aec7ddd38cb4dda90289a6f21", size = 13094910, upload-time = "2025-12-20T17:11:16.2Z" }, { url = "https://files.pythonhosted.org/packages/a3/b8/0d8eeb5a9fd7d34ba84f8a55753a0a3e2b5b51b2a5a0ade648a8db4a62f7/scikit_image-0.26.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b36ab5e778bf50af5ff386c3ac508027dc3aaeccf2161bdf96bde6848f44d21b", size = 13660939, upload-time = "2025-12-20T17:11:18.464Z" }, { url = "https://files.pythonhosted.org/packages/2f/d6/91d8973584d4793d4c1a847d388e34ef1218d835eeddecfc9108d735b467/scikit_image-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:09bad6a5d5949c7896c8347424c4cca899f1d11668030e5548813ab9c2865dcb", size = 14138938, upload-time = "2025-12-20T17:11:20.919Z" }, { url = "https://files.pythonhosted.org/packages/39/9a/7e15d8dc10d6bbf212195fb39bdeb7f226c46dd53f9c63c312e111e2e175/scikit_image-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:aeb14db1ed09ad4bee4ceb9e635547a8d5f3549be67fc6c768c7f923e027e6cd", size = 14752243, upload-time = "2025-12-20T17:11:23.347Z" }, { url = "https://files.pythonhosted.org/packages/8f/58/2b11b933097bc427e42b4a8b15f7de8f24f2bac1fd2779d2aea1431b2c31/scikit_image-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:ac529eb9dbd5954f9aaa2e3fe9a3fd9661bfe24e134c688587d811a0233127f1", size = 11906770, upload-time = "2025-12-20T17:11:25.297Z" }, { url = "https://files.pythonhosted.org/packages/ad/ec/96941474a18a04b69b6f6562a5bd79bd68049fa3728d3b350976eccb8b93/scikit_image-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:a2d211bc355f59725efdcae699b93b30348a19416cc9e017f7b2fb599faf7219", size = 11342506, upload-time = "2025-12-20T17:11:27.399Z" }, { url = "https://files.pythonhosted.org/packages/03/e5/c1a9962b0cf1952f42d32b4a2e48eed520320dbc4d2ff0b981c6fa508b6b/scikit_image-0.26.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9eefb4adad066da408a7601c4c24b07af3b472d90e08c3e7483d4e9e829d8c49", size = 12663278, upload-time = "2025-12-20T17:11:29.358Z" }, { url = "https://files.pythonhosted.org/packages/ae/97/c1a276a59ce8e4e24482d65c1a3940d69c6b3873279193b7ebd04e5ee56b/scikit_image-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:6caec76e16c970c528d15d1c757363334d5cb3069f9cea93d2bead31820511f3", size = 12405142, upload-time = "2025-12-20T17:11:31.282Z" }, { url = "https://files.pythonhosted.org/packages/d4/4a/f1cbd1357caef6c7993f7efd514d6e53d8fd6f7fe01c4714d51614c53289/scikit_image-0.26.0-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a07200fe09b9d99fcdab959859fe0f7db8df6333d6204344425d476850ce3604", size = 12942086, upload-time = "2025-12-20T17:11:33.683Z" }, { url = "https://files.pythonhosted.org/packages/5b/6f/74d9fb87c5655bd64cf00b0c44dc3d6206d9002e5f6ba1c9aeb13236f6bf/scikit_image-0.26.0-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:92242351bccf391fc5df2d1529d15470019496d2498d615beb68da85fe7fdf37", size = 13265667, upload-time = "2025-12-20T17:11:36.11Z" }, { url = "https://files.pythonhosted.org/packages/a7/73/faddc2413ae98d863f6fa2e3e14da4467dd38e788e1c23346cf1a2b06b97/scikit_image-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:52c496f75a7e45844d951557f13c08c81487c6a1da2e3c9c8a39fcde958e02cc", size = 14001966, upload-time = "2025-12-20T17:11:38.55Z" }, { url = "https://files.pythonhosted.org/packages/02/94/9f46966fa042b5d57c8cd641045372b4e0df0047dd400e77ea9952674110/scikit_image-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20ef4a155e2e78b8ab973998e04d8a361d49d719e65412405f4dadd9155a61d9", size = 14359526, upload-time = "2025-12-20T17:11:41.087Z" }, { url = "https://files.pythonhosted.org/packages/5d/b4/2840fe38f10057f40b1c9f8fb98a187a370936bf144a4ac23452c5ef1baf/scikit_image-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:c9087cf7d0e7f33ab5c46d2068d86d785e70b05400a891f73a13400f1e1faf6a", size = 12287629, upload-time = "2025-12-20T17:11:43.11Z" }, { url = "https://files.pythonhosted.org/packages/22/ba/73b6ca70796e71f83ab222690e35a79612f0117e5aaf167151b7d46f5f2c/scikit_image-0.26.0-cp313-cp313t-win_arm64.whl", hash = "sha256:27d58bc8b2acd351f972c6508c1b557cfed80299826080a4d803dd29c51b707e", size = 11647755, upload-time = "2025-12-20T17:11:45.279Z" }, { url = "https://files.pythonhosted.org/packages/51/44/6b744f92b37ae2833fd423cce8f806d2368859ec325a699dc30389e090b9/scikit_image-0.26.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:63af3d3a26125f796f01052052f86806da5b5e54c6abef152edb752683075a9c", size = 12365810, upload-time = "2025-12-20T17:11:47.357Z" }, { url = "https://files.pythonhosted.org/packages/40/f5/83590d9355191f86ac663420fec741b82cc547a4afe7c4c1d986bf46e4db/scikit_image-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ce00600cd70d4562ed59f80523e18cdcc1fae0e10676498a01f73c255774aefd", size = 12075717, upload-time = "2025-12-20T17:11:49.483Z" }, { url = "https://files.pythonhosted.org/packages/72/48/253e7cf5aee6190459fe136c614e2cbccc562deceb4af96e0863f1b8ee29/scikit_image-0.26.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6381edf972b32e4f54085449afde64365a57316637496c1325a736987083e2ab", size = 13161520, upload-time = "2025-12-20T17:11:51.58Z" }, { url = "https://files.pythonhosted.org/packages/73/c3/cec6a3cbaadfdcc02bd6ff02f3abfe09eaa7f4d4e0a525a1e3a3f4bce49c/scikit_image-0.26.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c6624a76c6085218248154cc7e1500e6b488edcd9499004dd0d35040607d7505", size = 13684340, upload-time = "2025-12-20T17:11:53.708Z" }, { url = "https://files.pythonhosted.org/packages/d4/0d/39a776f675d24164b3a267aa0db9f677a4cb20127660d8bf4fd7fef66817/scikit_image-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f775f0e420faac9c2aa6757135f4eb468fb7b70e0b67fa77a5e79be3c30ee331", size = 14203839, upload-time = "2025-12-20T17:11:55.89Z" }, { url = "https://files.pythonhosted.org/packages/ee/25/2514df226bbcedfe9b2caafa1ba7bc87231a0c339066981b182b08340e06/scikit_image-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ede4d6d255cc5da9faeb2f9ba7fedbc990abbc652db429f40a16b22e770bb578", size = 14770021, upload-time = "2025-12-20T17:11:58.014Z" }, { url = "https://files.pythonhosted.org/packages/8d/5b/0671dc91c0c79340c3fe202f0549c7d3681eb7640fe34ab68a5f090a7c7f/scikit_image-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:0660b83968c15293fd9135e8d860053ee19500d52bf55ca4fb09de595a1af650", size = 12023490, upload-time = "2025-12-20T17:12:00.013Z" }, { url = "https://files.pythonhosted.org/packages/65/08/7c4cb59f91721f3de07719085212a0b3962e3e3f2d1818cbac4eeb1ea53e/scikit_image-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:b8d14d3181c21c11170477a42542c1addc7072a90b986675a71266ad17abc37f", size = 11473782, upload-time = "2025-12-20T17:12:01.983Z" }, { url = "https://files.pythonhosted.org/packages/49/41/65c4258137acef3d73cb561ac55512eacd7b30bb4f4a11474cad526bc5db/scikit_image-0.26.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:cde0bbd57e6795eba83cb10f71a677f7239271121dc950bc060482834a668ad1", size = 12686060, upload-time = "2025-12-20T17:12:03.886Z" }, { url = "https://files.pythonhosted.org/packages/e7/32/76971f8727b87f1420a962406388a50e26667c31756126444baf6668f559/scikit_image-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:163e9afb5b879562b9aeda0dd45208a35316f26cc7a3aed54fd601604e5cf46f", size = 12422628, upload-time = "2025-12-20T17:12:05.921Z" }, { url = "https://files.pythonhosted.org/packages/37/0d/996febd39f757c40ee7b01cdb861867327e5c8e5f595a634e8201462d958/scikit_image-0.26.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:724f79fd9b6cb6f4a37864fe09f81f9f5d5b9646b6868109e1b100d1a7019e59", size = 12962369, upload-time = "2025-12-20T17:12:07.912Z" }, { url = "https://files.pythonhosted.org/packages/48/b4/612d354f946c9600e7dea012723c11d47e8d455384e530f6daaaeb9bf62c/scikit_image-0.26.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3268f13310e6857508bd87202620df996199a016a1d281b309441d227c822394", size = 13272431, upload-time = "2025-12-20T17:12:10.255Z" }, { url = "https://files.pythonhosted.org/packages/0a/6e/26c00b466e06055a086de2c6e2145fe189ccdc9a1d11ccc7de020f2591ad/scikit_image-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:fac96a1f9b06cd771cbbb3cd96c5332f36d4efd839b1d8b053f79e5887acde62", size = 14016362, upload-time = "2025-12-20T17:12:12.793Z" }, { url = "https://files.pythonhosted.org/packages/47/88/00a90402e1775634043c2a0af8a3c76ad450866d9fa444efcc43b553ba2d/scikit_image-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:2c1e7bd342f43e7a97e571b3f03ba4c1293ea1a35c3f13f41efdc8a81c1dc8f2", size = 14364151, upload-time = "2025-12-20T17:12:14.909Z" }, { url = "https://files.pythonhosted.org/packages/da/ca/918d8d306bd43beacff3b835c6d96fac0ae64c0857092f068b88db531a7c/scikit_image-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b702c3bb115e1dcf4abf5297429b5c90f2189655888cbed14921f3d26f81d3a4", size = 12413484, upload-time = "2025-12-20T17:12:17.046Z" }, { url = "https://files.pythonhosted.org/packages/dc/cd/4da01329b5a8d47ff7ec3c99a2b02465a8017b186027590dc7425cee0b56/scikit_image-0.26.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0608aa4a9ec39e0843de10d60edb2785a30c1c47819b67866dd223ebd149acaf", size = 11769501, upload-time = "2025-12-20T17:12:19.339Z" }, ] [[package]] name = "scikit-learn" version = "1.7.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.11'", ] dependencies = [ { name = "joblib", marker = "python_full_version < '3.11'" }, { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "threadpoolctl", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/98/c2/a7855e41c9d285dfe86dc50b250978105dce513d6e459ea66a6aeb0e1e0c/scikit_learn-1.7.2.tar.gz", hash = "sha256:20e9e49ecd130598f1ca38a1d85090e1a600147b9c02fa6f15d69cb53d968fda", size = 7193136, upload-time = "2025-09-09T08:21:29.075Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/ba/3e/daed796fd69cce768b8788401cc464ea90b306fb196ae1ffed0b98182859/scikit_learn-1.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b33579c10a3081d076ab403df4a4190da4f4432d443521674637677dc91e61f", size = 9336221, upload-time = "2025-09-09T08:20:19.328Z" }, { url = "https://files.pythonhosted.org/packages/1c/ce/af9d99533b24c55ff4e18d9b7b4d9919bbc6cd8f22fe7a7be01519a347d5/scikit_learn-1.7.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:36749fb62b3d961b1ce4fedf08fa57a1986cd409eff2d783bca5d4b9b5fce51c", size = 8653834, upload-time = "2025-09-09T08:20:22.073Z" }, { url = "https://files.pythonhosted.org/packages/58/0e/8c2a03d518fb6bd0b6b0d4b114c63d5f1db01ff0f9925d8eb10960d01c01/scikit_learn-1.7.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7a58814265dfc52b3295b1900cfb5701589d30a8bb026c7540f1e9d3499d5ec8", size = 9660938, upload-time = "2025-09-09T08:20:24.327Z" }, { url = "https://files.pythonhosted.org/packages/2b/75/4311605069b5d220e7cf5adabb38535bd96f0079313cdbb04b291479b22a/scikit_learn-1.7.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a847fea807e278f821a0406ca01e387f97653e284ecbd9750e3ee7c90347f18", size = 9477818, upload-time = "2025-09-09T08:20:26.845Z" }, { url = "https://files.pythonhosted.org/packages/7f/9b/87961813c34adbca21a6b3f6b2bea344c43b30217a6d24cc437c6147f3e8/scikit_learn-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:ca250e6836d10e6f402436d6463d6c0e4d8e0234cfb6a9a47835bd392b852ce5", size = 8886969, upload-time = "2025-09-09T08:20:29.329Z" }, { url = "https://files.pythonhosted.org/packages/43/83/564e141eef908a5863a54da8ca342a137f45a0bfb71d1d79704c9894c9d1/scikit_learn-1.7.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7509693451651cd7361d30ce4e86a1347493554f172b1c72a39300fa2aea79e", size = 9331967, upload-time = "2025-09-09T08:20:32.421Z" }, { url = "https://files.pythonhosted.org/packages/18/d6/ba863a4171ac9d7314c4d3fc251f015704a2caeee41ced89f321c049ed83/scikit_learn-1.7.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:0486c8f827c2e7b64837c731c8feff72c0bd2b998067a8a9cbc10643c31f0fe1", size = 8648645, upload-time = "2025-09-09T08:20:34.436Z" }, { url = "https://files.pythonhosted.org/packages/ef/0e/97dbca66347b8cf0ea8b529e6bb9367e337ba2e8be0ef5c1a545232abfde/scikit_learn-1.7.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:89877e19a80c7b11a2891a27c21c4894fb18e2c2e077815bcade10d34287b20d", size = 9715424, upload-time = "2025-09-09T08:20:36.776Z" }, { url = "https://files.pythonhosted.org/packages/f7/32/1f3b22e3207e1d2c883a7e09abb956362e7d1bd2f14458c7de258a26ac15/scikit_learn-1.7.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8da8bf89d4d79aaec192d2bda62f9b56ae4e5b4ef93b6a56b5de4977e375c1f1", size = 9509234, upload-time = "2025-09-09T08:20:38.957Z" }, { url = "https://files.pythonhosted.org/packages/9f/71/34ddbd21f1da67c7a768146968b4d0220ee6831e4bcbad3e03dd3eae88b6/scikit_learn-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:9b7ed8d58725030568523e937c43e56bc01cadb478fc43c042a9aca1dacb3ba1", size = 8894244, upload-time = "2025-09-09T08:20:41.166Z" }, { url = "https://files.pythonhosted.org/packages/a7/aa/3996e2196075689afb9fce0410ebdb4a09099d7964d061d7213700204409/scikit_learn-1.7.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8d91a97fa2b706943822398ab943cde71858a50245e31bc71dba62aab1d60a96", size = 9259818, upload-time = "2025-09-09T08:20:43.19Z" }, { url = "https://files.pythonhosted.org/packages/43/5d/779320063e88af9c4a7c2cf463ff11c21ac9c8bd730c4a294b0000b666c9/scikit_learn-1.7.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:acbc0f5fd2edd3432a22c69bed78e837c70cf896cd7993d71d51ba6708507476", size = 8636997, upload-time = "2025-09-09T08:20:45.468Z" }, { url = "https://files.pythonhosted.org/packages/5c/d0/0c577d9325b05594fdd33aa970bf53fb673f051a45496842caee13cfd7fe/scikit_learn-1.7.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e5bf3d930aee75a65478df91ac1225ff89cd28e9ac7bd1196853a9229b6adb0b", size = 9478381, upload-time = "2025-09-09T08:20:47.982Z" }, { url = "https://files.pythonhosted.org/packages/82/70/8bf44b933837ba8494ca0fc9a9ab60f1c13b062ad0197f60a56e2fc4c43e/scikit_learn-1.7.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4d6e9deed1a47aca9fe2f267ab8e8fe82ee20b4526b2c0cd9e135cea10feb44", size = 9300296, upload-time = "2025-09-09T08:20:50.366Z" }, { url = "https://files.pythonhosted.org/packages/c6/99/ed35197a158f1fdc2fe7c3680e9c70d0128f662e1fee4ed495f4b5e13db0/scikit_learn-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:6088aa475f0785e01bcf8529f55280a3d7d298679f50c0bb70a2364a82d0b290", size = 8731256, upload-time = "2025-09-09T08:20:52.627Z" }, { url = "https://files.pythonhosted.org/packages/ae/93/a3038cb0293037fd335f77f31fe053b89c72f17b1c8908c576c29d953e84/scikit_learn-1.7.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0b7dacaa05e5d76759fb071558a8b5130f4845166d88654a0f9bdf3eb57851b7", size = 9212382, upload-time = "2025-09-09T08:20:54.731Z" }, { url = "https://files.pythonhosted.org/packages/40/dd/9a88879b0c1104259136146e4742026b52df8540c39fec21a6383f8292c7/scikit_learn-1.7.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:abebbd61ad9e1deed54cca45caea8ad5f79e1b93173dece40bb8e0c658dbe6fe", size = 8592042, upload-time = "2025-09-09T08:20:57.313Z" }, { url = "https://files.pythonhosted.org/packages/46/af/c5e286471b7d10871b811b72ae794ac5fe2989c0a2df07f0ec723030f5f5/scikit_learn-1.7.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:502c18e39849c0ea1a5d681af1dbcf15f6cce601aebb657aabbfe84133c1907f", size = 9434180, upload-time = "2025-09-09T08:20:59.671Z" }, { url = "https://files.pythonhosted.org/packages/f1/fd/df59faa53312d585023b2da27e866524ffb8faf87a68516c23896c718320/scikit_learn-1.7.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a4c328a71785382fe3fe676a9ecf2c86189249beff90bf85e22bdb7efaf9ae0", size = 9283660, upload-time = "2025-09-09T08:21:01.71Z" }, { url = "https://files.pythonhosted.org/packages/a7/c7/03000262759d7b6f38c836ff9d512f438a70d8a8ddae68ee80de72dcfb63/scikit_learn-1.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:63a9afd6f7b229aad94618c01c252ce9e6fa97918c5ca19c9a17a087d819440c", size = 8702057, upload-time = "2025-09-09T08:21:04.234Z" }, { url = "https://files.pythonhosted.org/packages/55/87/ef5eb1f267084532c8e4aef98a28b6ffe7425acbfd64b5e2f2e066bc29b3/scikit_learn-1.7.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9acb6c5e867447b4e1390930e3944a005e2cb115922e693c08a323421a6966e8", size = 9558731, upload-time = "2025-09-09T08:21:06.381Z" }, { url = "https://files.pythonhosted.org/packages/93/f8/6c1e3fc14b10118068d7938878a9f3f4e6d7b74a8ddb1e5bed65159ccda8/scikit_learn-1.7.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:2a41e2a0ef45063e654152ec9d8bcfc39f7afce35b08902bfe290c2498a67a6a", size = 9038852, upload-time = "2025-09-09T08:21:08.628Z" }, { url = "https://files.pythonhosted.org/packages/83/87/066cafc896ee540c34becf95d30375fe5cbe93c3b75a0ee9aa852cd60021/scikit_learn-1.7.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:98335fb98509b73385b3ab2bd0639b1f610541d3988ee675c670371d6a87aa7c", size = 9527094, upload-time = "2025-09-09T08:21:11.486Z" }, { url = "https://files.pythonhosted.org/packages/9c/2b/4903e1ccafa1f6453b1ab78413938c8800633988c838aa0be386cbb33072/scikit_learn-1.7.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:191e5550980d45449126e23ed1d5e9e24b2c68329ee1f691a3987476e115e09c", size = 9367436, upload-time = "2025-09-09T08:21:13.602Z" }, { url = "https://files.pythonhosted.org/packages/b5/aa/8444be3cfb10451617ff9d177b3c190288f4563e6c50ff02728be67ad094/scikit_learn-1.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:57dc4deb1d3762c75d685507fbd0bc17160144b2f2ba4ccea5dc285ab0d0e973", size = 9275749, upload-time = "2025-09-09T08:21:15.96Z" }, { url = "https://files.pythonhosted.org/packages/d9/82/dee5acf66837852e8e68df6d8d3a6cb22d3df997b733b032f513d95205b7/scikit_learn-1.7.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fa8f63940e29c82d1e67a45d5297bdebbcb585f5a5a50c4914cc2e852ab77f33", size = 9208906, upload-time = "2025-09-09T08:21:18.557Z" }, { url = "https://files.pythonhosted.org/packages/3c/30/9029e54e17b87cb7d50d51a5926429c683d5b4c1732f0507a6c3bed9bf65/scikit_learn-1.7.2-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:f95dc55b7902b91331fa4e5845dd5bde0580c9cd9612b1b2791b7e80c3d32615", size = 8627836, upload-time = "2025-09-09T08:21:20.695Z" }, { url = "https://files.pythonhosted.org/packages/60/18/4a52c635c71b536879f4b971c2cedf32c35ee78f48367885ed8025d1f7ee/scikit_learn-1.7.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9656e4a53e54578ad10a434dc1f993330568cfee176dff07112b8785fb413106", size = 9426236, upload-time = "2025-09-09T08:21:22.645Z" }, { url = "https://files.pythonhosted.org/packages/99/7e/290362f6ab582128c53445458a5befd471ed1ea37953d5bcf80604619250/scikit_learn-1.7.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96dc05a854add0e50d3f47a1ef21a10a595016da5b007c7d9cd9d0bffd1fcc61", size = 9312593, upload-time = "2025-09-09T08:21:24.65Z" }, { url = "https://files.pythonhosted.org/packages/8e/87/24f541b6d62b1794939ae6422f8023703bbf6900378b2b34e0b4384dfefd/scikit_learn-1.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:bb24510ed3f9f61476181e4db51ce801e2ba37541def12dc9333b946fc7a9cf8", size = 8820007, upload-time = "2025-09-09T08:21:26.713Z" }, ] [[package]] name = "scikit-learn" version = "1.8.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.12'", "python_full_version == '3.11.*'", ] dependencies = [ { name = "joblib", marker = "python_full_version >= '3.11'" }, { name = "numpy", version = "2.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "scipy", version = "1.17.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "threadpoolctl", marker = "python_full_version >= '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/0e/d4/40988bf3b8e34feec1d0e6a051446b1f66225f8529b9309becaeef62b6c4/scikit_learn-1.8.0.tar.gz", hash = "sha256:9bccbb3b40e3de10351f8f5068e105d0f4083b1a65fa07b6634fbc401a6287fd", size = 7335585, upload-time = "2025-12-10T07:08:53.618Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/c9/92/53ea2181da8ac6bf27170191028aee7251f8f841f8d3edbfdcaf2008fde9/scikit_learn-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:146b4d36f800c013d267b29168813f7a03a43ecd2895d04861f1240b564421da", size = 8595835, upload-time = "2025-12-10T07:07:39.385Z" }, { url = "https://files.pythonhosted.org/packages/01/18/d154dc1638803adf987910cdd07097d9c526663a55666a97c124d09fb96a/scikit_learn-1.8.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:f984ca4b14914e6b4094c5d52a32ea16b49832c03bd17a110f004db3c223e8e1", size = 8080381, upload-time = "2025-12-10T07:07:41.93Z" }, { url = "https://files.pythonhosted.org/packages/8a/44/226142fcb7b7101e64fdee5f49dbe6288d4c7af8abf593237b70fca080a4/scikit_learn-1.8.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5e30adb87f0cc81c7690a84f7932dd66be5bac57cfe16b91cb9151683a4a2d3b", size = 8799632, upload-time = "2025-12-10T07:07:43.899Z" }, { url = "https://files.pythonhosted.org/packages/36/4d/4a67f30778a45d542bbea5db2dbfa1e9e100bf9ba64aefe34215ba9f11f6/scikit_learn-1.8.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ada8121bcb4dac28d930febc791a69f7cb1673c8495e5eee274190b73a4559c1", size = 9103788, upload-time = "2025-12-10T07:07:45.982Z" }, { url = "https://files.pythonhosted.org/packages/89/3c/45c352094cfa60050bcbb967b1faf246b22e93cb459f2f907b600f2ceda5/scikit_learn-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:c57b1b610bd1f40ba43970e11ce62821c2e6569e4d74023db19c6b26f246cb3b", size = 8081706, upload-time = "2025-12-10T07:07:48.111Z" }, { url = "https://files.pythonhosted.org/packages/3d/46/5416595bb395757f754feb20c3d776553a386b661658fb21b7c814e89efe/scikit_learn-1.8.0-cp311-cp311-win_arm64.whl", hash = "sha256:2838551e011a64e3053ad7618dda9310175f7515f1742fa2d756f7c874c05961", size = 7688451, upload-time = "2025-12-10T07:07:49.873Z" }, { url = "https://files.pythonhosted.org/packages/90/74/e6a7cc4b820e95cc38cf36cd74d5aa2b42e8ffc2d21fe5a9a9c45c1c7630/scikit_learn-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5fb63362b5a7ddab88e52b6dbb47dac3fd7dafeee740dc6c8d8a446ddedade8e", size = 8548242, upload-time = "2025-12-10T07:07:51.568Z" }, { url = "https://files.pythonhosted.org/packages/49/d8/9be608c6024d021041c7f0b3928d4749a706f4e2c3832bbede4fb4f58c95/scikit_learn-1.8.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:5025ce924beccb28298246e589c691fe1b8c1c96507e6d27d12c5fadd85bfd76", size = 8079075, upload-time = "2025-12-10T07:07:53.697Z" }, { url = "https://files.pythonhosted.org/packages/dd/47/f187b4636ff80cc63f21cd40b7b2d177134acaa10f6bb73746130ee8c2e5/scikit_learn-1.8.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4496bb2cf7a43ce1a2d7524a79e40bc5da45cf598dbf9545b7e8316ccba47bb4", size = 8660492, upload-time = "2025-12-10T07:07:55.574Z" }, { url = "https://files.pythonhosted.org/packages/97/74/b7a304feb2b49df9fafa9382d4d09061a96ee9a9449a7cbea7988dda0828/scikit_learn-1.8.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a0bcfe4d0d14aec44921545fd2af2338c7471de9cb701f1da4c9d85906ab847a", size = 8931904, upload-time = "2025-12-10T07:07:57.666Z" }, { url = "https://files.pythonhosted.org/packages/9f/c4/0ab22726a04ede56f689476b760f98f8f46607caecff993017ac1b64aa5d/scikit_learn-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:35c007dedb2ffe38fe3ee7d201ebac4a2deccd2408e8621d53067733e3c74809", size = 8019359, upload-time = "2025-12-10T07:07:59.838Z" }, { url = "https://files.pythonhosted.org/packages/24/90/344a67811cfd561d7335c1b96ca21455e7e472d281c3c279c4d3f2300236/scikit_learn-1.8.0-cp312-cp312-win_arm64.whl", hash = "sha256:8c497fff237d7b4e07e9ef1a640887fa4fb765647f86fbe00f969ff6280ce2bb", size = 7641898, upload-time = "2025-12-10T07:08:01.36Z" }, { url = "https://files.pythonhosted.org/packages/03/aa/e22e0768512ce9255eba34775be2e85c2048da73da1193e841707f8f039c/scikit_learn-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0d6ae97234d5d7079dc0040990a6f7aeb97cb7fa7e8945f1999a429b23569e0a", size = 8513770, upload-time = "2025-12-10T07:08:03.251Z" }, { url = "https://files.pythonhosted.org/packages/58/37/31b83b2594105f61a381fc74ca19e8780ee923be2d496fcd8d2e1147bd99/scikit_learn-1.8.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:edec98c5e7c128328124a029bceb09eda2d526997780fef8d65e9a69eead963e", size = 8044458, upload-time = "2025-12-10T07:08:05.336Z" }, { url = "https://files.pythonhosted.org/packages/2d/5a/3f1caed8765f33eabb723596666da4ebbf43d11e96550fb18bdec42b467b/scikit_learn-1.8.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:74b66d8689d52ed04c271e1329f0c61635bcaf5b926db9b12d58914cdc01fe57", size = 8610341, upload-time = "2025-12-10T07:08:07.732Z" }, { url = "https://files.pythonhosted.org/packages/38/cf/06896db3f71c75902a8e9943b444a56e727418f6b4b4a90c98c934f51ed4/scikit_learn-1.8.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8fdf95767f989b0cfedb85f7ed8ca215d4be728031f56ff5a519ee1e3276dc2e", size = 8900022, upload-time = "2025-12-10T07:08:09.862Z" }, { url = "https://files.pythonhosted.org/packages/1c/f9/9b7563caf3ec8873e17a31401858efab6b39a882daf6c1bfa88879c0aa11/scikit_learn-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:2de443b9373b3b615aec1bb57f9baa6bb3a9bd093f1269ba95c17d870422b271", size = 7989409, upload-time = "2025-12-10T07:08:12.028Z" }, { url = "https://files.pythonhosted.org/packages/49/bd/1f4001503650e72c4f6009ac0c4413cb17d2d601cef6f71c0453da2732fc/scikit_learn-1.8.0-cp313-cp313-win_arm64.whl", hash = "sha256:eddde82a035681427cbedded4e6eff5e57fa59216c2e3e90b10b19ab1d0a65c3", size = 7619760, upload-time = "2025-12-10T07:08:13.688Z" }, { url = "https://files.pythonhosted.org/packages/d2/7d/a630359fc9dcc95496588c8d8e3245cc8fd81980251079bc09c70d41d951/scikit_learn-1.8.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7cc267b6108f0a1499a734167282c00c4ebf61328566b55ef262d48e9849c735", size = 8826045, upload-time = "2025-12-10T07:08:15.215Z" }, { url = "https://files.pythonhosted.org/packages/cc/56/a0c86f6930cfcd1c7054a2bc417e26960bb88d32444fe7f71d5c2cfae891/scikit_learn-1.8.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:fe1c011a640a9f0791146011dfd3c7d9669785f9fed2b2a5f9e207536cf5c2fd", size = 8420324, upload-time = "2025-12-10T07:08:17.561Z" }, { url = "https://files.pythonhosted.org/packages/46/1e/05962ea1cebc1cf3876667ecb14c283ef755bf409993c5946ade3b77e303/scikit_learn-1.8.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72358cce49465d140cc4e7792015bb1f0296a9742d5622c67e31399b75468b9e", size = 8680651, upload-time = "2025-12-10T07:08:19.952Z" }, { url = "https://files.pythonhosted.org/packages/fe/56/a85473cd75f200c9759e3a5f0bcab2d116c92a8a02ee08ccd73b870f8bb4/scikit_learn-1.8.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:80832434a6cc114f5219211eec13dcbc16c2bac0e31ef64c6d346cde3cf054cb", size = 8925045, upload-time = "2025-12-10T07:08:22.11Z" }, { url = "https://files.pythonhosted.org/packages/cc/b7/64d8cfa896c64435ae57f4917a548d7ac7a44762ff9802f75a79b77cb633/scikit_learn-1.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ee787491dbfe082d9c3013f01f5991658b0f38aa8177e4cd4bf434c58f551702", size = 8507994, upload-time = "2025-12-10T07:08:23.943Z" }, { url = "https://files.pythonhosted.org/packages/5e/37/e192ea709551799379958b4c4771ec507347027bb7c942662c7fbeba31cb/scikit_learn-1.8.0-cp313-cp313t-win_arm64.whl", hash = "sha256:bf97c10a3f5a7543f9b88cbf488d33d175e9146115a451ae34568597ba33dcde", size = 7869518, upload-time = "2025-12-10T07:08:25.71Z" }, { url = "https://files.pythonhosted.org/packages/24/05/1af2c186174cc92dcab2233f327336058c077d38f6fe2aceb08e6ab4d509/scikit_learn-1.8.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:c22a2da7a198c28dd1a6e1136f19c830beab7fdca5b3e5c8bba8394f8a5c45b3", size = 8528667, upload-time = "2025-12-10T07:08:27.541Z" }, { url = "https://files.pythonhosted.org/packages/a8/25/01c0af38fe969473fb292bba9dc2b8f9b451f3112ff242c647fee3d0dfe7/scikit_learn-1.8.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:6b595b07a03069a2b1740dc08c2299993850ea81cce4fe19b2421e0c970de6b7", size = 8066524, upload-time = "2025-12-10T07:08:29.822Z" }, { url = "https://files.pythonhosted.org/packages/be/ce/a0623350aa0b68647333940ee46fe45086c6060ec604874e38e9ab7d8e6c/scikit_learn-1.8.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:29ffc74089f3d5e87dfca4c2c8450f88bdc61b0fc6ed5d267f3988f19a1309f6", size = 8657133, upload-time = "2025-12-10T07:08:31.865Z" }, { url = "https://files.pythonhosted.org/packages/b8/cb/861b41341d6f1245e6ca80b1c1a8c4dfce43255b03df034429089ca2a2c5/scikit_learn-1.8.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fb65db5d7531bccf3a4f6bec3462223bea71384e2cda41da0f10b7c292b9e7c4", size = 8923223, upload-time = "2025-12-10T07:08:34.166Z" }, { url = "https://files.pythonhosted.org/packages/76/18/a8def8f91b18cd1ba6e05dbe02540168cb24d47e8dcf69e8d00b7da42a08/scikit_learn-1.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:56079a99c20d230e873ea40753102102734c5953366972a71d5cb39a32bc40c6", size = 8096518, upload-time = "2025-12-10T07:08:36.339Z" }, { url = "https://files.pythonhosted.org/packages/d1/77/482076a678458307f0deb44e29891d6022617b2a64c840c725495bee343f/scikit_learn-1.8.0-cp314-cp314-win_arm64.whl", hash = "sha256:3bad7565bc9cf37ce19a7c0d107742b320c1285df7aab1a6e2d28780df167242", size = 7754546, upload-time = "2025-12-10T07:08:38.128Z" }, { url = "https://files.pythonhosted.org/packages/2d/d1/ef294ca754826daa043b2a104e59960abfab4cf653891037d19dd5b6f3cf/scikit_learn-1.8.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:4511be56637e46c25721e83d1a9cea9614e7badc7040c4d573d75fbe257d6fd7", size = 8848305, upload-time = "2025-12-10T07:08:41.013Z" }, { url = "https://files.pythonhosted.org/packages/5b/e2/b1f8b05138ee813b8e1a4149f2f0d289547e60851fd1bb268886915adbda/scikit_learn-1.8.0-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:a69525355a641bf8ef136a7fa447672fb54fe8d60cab5538d9eb7c6438543fb9", size = 8432257, upload-time = "2025-12-10T07:08:42.873Z" }, { url = "https://files.pythonhosted.org/packages/26/11/c32b2138a85dcb0c99f6afd13a70a951bfdff8a6ab42d8160522542fb647/scikit_learn-1.8.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c2656924ec73e5939c76ac4c8b026fc203b83d8900362eb2599d8aee80e4880f", size = 8678673, upload-time = "2025-12-10T07:08:45.362Z" }, { url = "https://files.pythonhosted.org/packages/c7/57/51f2384575bdec454f4fe4e7a919d696c9ebce914590abf3e52d47607ab8/scikit_learn-1.8.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15fc3b5d19cc2be65404786857f2e13c70c83dd4782676dd6814e3b89dc8f5b9", size = 8922467, upload-time = "2025-12-10T07:08:47.408Z" }, { url = "https://files.pythonhosted.org/packages/35/4d/748c9e2872637a57981a04adc038dacaa16ba8ca887b23e34953f0b3f742/scikit_learn-1.8.0-cp314-cp314t-win_amd64.whl", hash = "sha256:00d6f1d66fbcf4eba6e356e1420d33cc06c70a45bb1363cd6f6a8e4ebbbdece2", size = 8774395, upload-time = "2025-12-10T07:08:49.337Z" }, { url = "https://files.pythonhosted.org/packages/60/22/d7b2ebe4704a5e50790ba089d5c2ae308ab6bb852719e6c3bd4f04c3a363/scikit_learn-1.8.0-cp314-cp314t-win_arm64.whl", hash = "sha256:f28dd15c6bb0b66ba09728cf09fd8736c304be29409bd8445a080c1280619e8c", size = 8002647, upload-time = "2025-12-10T07:08:51.601Z" }, ] [[package]] name = "scipy" version = "1.15.3" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.11'", ] dependencies = [ { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214, upload-time = "2025-05-08T16:13:05.955Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/78/2f/4966032c5f8cc7e6a60f1b2e0ad686293b9474b65246b0c642e3ef3badd0/scipy-1.15.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:a345928c86d535060c9c2b25e71e87c39ab2f22fc96e9636bd74d1dbf9de448c", size = 38702770, upload-time = "2025-05-08T16:04:20.849Z" }, { url = "https://files.pythonhosted.org/packages/a0/6e/0c3bf90fae0e910c274db43304ebe25a6b391327f3f10b5dcc638c090795/scipy-1.15.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:ad3432cb0f9ed87477a8d97f03b763fd1d57709f1bbde3c9369b1dff5503b253", size = 30094511, upload-time = "2025-05-08T16:04:27.103Z" }, { url = "https://files.pythonhosted.org/packages/ea/b1/4deb37252311c1acff7f101f6453f0440794f51b6eacb1aad4459a134081/scipy-1.15.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:aef683a9ae6eb00728a542b796f52a5477b78252edede72b8327a886ab63293f", size = 22368151, upload-time = "2025-05-08T16:04:31.731Z" }, { url = "https://files.pythonhosted.org/packages/38/7d/f457626e3cd3c29b3a49ca115a304cebb8cc6f31b04678f03b216899d3c6/scipy-1.15.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:1c832e1bd78dea67d5c16f786681b28dd695a8cb1fb90af2e27580d3d0967e92", size = 25121732, upload-time = "2025-05-08T16:04:36.596Z" }, { url = "https://files.pythonhosted.org/packages/db/0a/92b1de4a7adc7a15dcf5bddc6e191f6f29ee663b30511ce20467ef9b82e4/scipy-1.15.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:263961f658ce2165bbd7b99fa5135195c3a12d9bef045345016b8b50c315cb82", size = 35547617, upload-time = "2025-05-08T16:04:43.546Z" }, { url = "https://files.pythonhosted.org/packages/8e/6d/41991e503e51fc1134502694c5fa7a1671501a17ffa12716a4a9151af3df/scipy-1.15.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2abc762b0811e09a0d3258abee2d98e0c703eee49464ce0069590846f31d40", size = 37662964, upload-time = "2025-05-08T16:04:49.431Z" }, { url = "https://files.pythonhosted.org/packages/25/e1/3df8f83cb15f3500478c889be8fb18700813b95e9e087328230b98d547ff/scipy-1.15.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ed7284b21a7a0c8f1b6e5977ac05396c0d008b89e05498c8b7e8f4a1423bba0e", size = 37238749, upload-time = "2025-05-08T16:04:55.215Z" }, { url = "https://files.pythonhosted.org/packages/93/3e/b3257cf446f2a3533ed7809757039016b74cd6f38271de91682aa844cfc5/scipy-1.15.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5380741e53df2c566f4d234b100a484b420af85deb39ea35a1cc1be84ff53a5c", size = 40022383, upload-time = "2025-05-08T16:05:01.914Z" }, { url = "https://files.pythonhosted.org/packages/d1/84/55bc4881973d3f79b479a5a2e2df61c8c9a04fcb986a213ac9c02cfb659b/scipy-1.15.3-cp310-cp310-win_amd64.whl", hash = "sha256:9d61e97b186a57350f6d6fd72640f9e99d5a4a2b8fbf4b9ee9a841eab327dc13", size = 41259201, upload-time = "2025-05-08T16:05:08.166Z" }, { url = "https://files.pythonhosted.org/packages/96/ab/5cc9f80f28f6a7dff646c5756e559823614a42b1939d86dd0ed550470210/scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b", size = 38714255, upload-time = "2025-05-08T16:05:14.596Z" }, { url = "https://files.pythonhosted.org/packages/4a/4a/66ba30abe5ad1a3ad15bfb0b59d22174012e8056ff448cb1644deccbfed2/scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba", size = 30111035, upload-time = "2025-05-08T16:05:20.152Z" }, { url = "https://files.pythonhosted.org/packages/4b/fa/a7e5b95afd80d24313307f03624acc65801846fa75599034f8ceb9e2cbf6/scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65", size = 22384499, upload-time = "2025-05-08T16:05:24.494Z" }, { url = "https://files.pythonhosted.org/packages/17/99/f3aaddccf3588bb4aea70ba35328c204cadd89517a1612ecfda5b2dd9d7a/scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1", size = 25152602, upload-time = "2025-05-08T16:05:29.313Z" }, { url = "https://files.pythonhosted.org/packages/56/c5/1032cdb565f146109212153339f9cb8b993701e9fe56b1c97699eee12586/scipy-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889", size = 35503415, upload-time = "2025-05-08T16:05:34.699Z" }, { url = "https://files.pythonhosted.org/packages/bd/37/89f19c8c05505d0601ed5650156e50eb881ae3918786c8fd7262b4ee66d3/scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982", size = 37652622, upload-time = "2025-05-08T16:05:40.762Z" }, { url = "https://files.pythonhosted.org/packages/7e/31/be59513aa9695519b18e1851bb9e487de66f2d31f835201f1b42f5d4d475/scipy-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9", size = 37244796, upload-time = "2025-05-08T16:05:48.119Z" }, { url = "https://files.pythonhosted.org/packages/10/c0/4f5f3eeccc235632aab79b27a74a9130c6c35df358129f7ac8b29f562ac7/scipy-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594", size = 40047684, upload-time = "2025-05-08T16:05:54.22Z" }, { url = "https://files.pythonhosted.org/packages/ab/a7/0ddaf514ce8a8714f6ed243a2b391b41dbb65251affe21ee3077ec45ea9a/scipy-1.15.3-cp311-cp311-win_amd64.whl", hash = "sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb", size = 41246504, upload-time = "2025-05-08T16:06:00.437Z" }, { url = "https://files.pythonhosted.org/packages/37/4b/683aa044c4162e10ed7a7ea30527f2cbd92e6999c10a8ed8edb253836e9c/scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019", size = 38766735, upload-time = "2025-05-08T16:06:06.471Z" }, { url = "https://files.pythonhosted.org/packages/7b/7e/f30be3d03de07f25dc0ec926d1681fed5c732d759ac8f51079708c79e680/scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6", size = 30173284, upload-time = "2025-05-08T16:06:11.686Z" }, { url = "https://files.pythonhosted.org/packages/07/9c/0ddb0d0abdabe0d181c1793db51f02cd59e4901da6f9f7848e1f96759f0d/scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477", size = 22446958, upload-time = "2025-05-08T16:06:15.97Z" }, { url = "https://files.pythonhosted.org/packages/af/43/0bce905a965f36c58ff80d8bea33f1f9351b05fad4beaad4eae34699b7a1/scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c", size = 25242454, upload-time = "2025-05-08T16:06:20.394Z" }, { url = "https://files.pythonhosted.org/packages/56/30/a6f08f84ee5b7b28b4c597aca4cbe545535c39fe911845a96414700b64ba/scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45", size = 35210199, upload-time = "2025-05-08T16:06:26.159Z" }, { url = "https://files.pythonhosted.org/packages/0b/1f/03f52c282437a168ee2c7c14a1a0d0781a9a4a8962d84ac05c06b4c5b555/scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49", size = 37309455, upload-time = "2025-05-08T16:06:32.778Z" }, { url = "https://files.pythonhosted.org/packages/89/b1/fbb53137f42c4bf630b1ffdfc2151a62d1d1b903b249f030d2b1c0280af8/scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e", size = 36885140, upload-time = "2025-05-08T16:06:39.249Z" }, { url = "https://files.pythonhosted.org/packages/2e/2e/025e39e339f5090df1ff266d021892694dbb7e63568edcfe43f892fa381d/scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539", size = 39710549, upload-time = "2025-05-08T16:06:45.729Z" }, { url = "https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed", size = 40966184, upload-time = "2025-05-08T16:06:52.623Z" }, { url = "https://files.pythonhosted.org/packages/73/18/ec27848c9baae6e0d6573eda6e01a602e5649ee72c27c3a8aad673ebecfd/scipy-1.15.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c620736bcc334782e24d173c0fdbb7590a0a436d2fdf39310a8902505008759", size = 38728256, upload-time = "2025-05-08T16:06:58.696Z" }, { url = "https://files.pythonhosted.org/packages/74/cd/1aef2184948728b4b6e21267d53b3339762c285a46a274ebb7863c9e4742/scipy-1.15.3-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:7e11270a000969409d37ed399585ee530b9ef6aa99d50c019de4cb01e8e54e62", size = 30109540, upload-time = "2025-05-08T16:07:04.209Z" }, { url = "https://files.pythonhosted.org/packages/5b/d8/59e452c0a255ec352bd0a833537a3bc1bfb679944c4938ab375b0a6b3a3e/scipy-1.15.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8c9ed3ba2c8a2ce098163a9bdb26f891746d02136995df25227a20e71c396ebb", size = 22383115, upload-time = "2025-05-08T16:07:08.998Z" }, { url = "https://files.pythonhosted.org/packages/08/f5/456f56bbbfccf696263b47095291040655e3cbaf05d063bdc7c7517f32ac/scipy-1.15.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:0bdd905264c0c9cfa74a4772cdb2070171790381a5c4d312c973382fc6eaf730", size = 25163884, upload-time = "2025-05-08T16:07:14.091Z" }, { url = "https://files.pythonhosted.org/packages/a2/66/a9618b6a435a0f0c0b8a6d0a2efb32d4ec5a85f023c2b79d39512040355b/scipy-1.15.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79167bba085c31f38603e11a267d862957cbb3ce018d8b38f79ac043bc92d825", size = 35174018, upload-time = "2025-05-08T16:07:19.427Z" }, { url = "https://files.pythonhosted.org/packages/b5/09/c5b6734a50ad4882432b6bb7c02baf757f5b2f256041da5df242e2d7e6b6/scipy-1.15.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9deabd6d547aee2c9a81dee6cc96c6d7e9a9b1953f74850c179f91fdc729cb7", size = 37269716, upload-time = "2025-05-08T16:07:25.712Z" }, { url = "https://files.pythonhosted.org/packages/77/0a/eac00ff741f23bcabd352731ed9b8995a0a60ef57f5fd788d611d43d69a1/scipy-1.15.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dde4fc32993071ac0c7dd2d82569e544f0bdaff66269cb475e0f369adad13f11", size = 36872342, upload-time = "2025-05-08T16:07:31.468Z" }, { url = "https://files.pythonhosted.org/packages/fe/54/4379be86dd74b6ad81551689107360d9a3e18f24d20767a2d5b9253a3f0a/scipy-1.15.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f77f853d584e72e874d87357ad70f44b437331507d1c311457bed8ed2b956126", size = 39670869, upload-time = "2025-05-08T16:07:38.002Z" }, { url = "https://files.pythonhosted.org/packages/87/2e/892ad2862ba54f084ffe8cc4a22667eaf9c2bcec6d2bff1d15713c6c0703/scipy-1.15.3-cp313-cp313-win_amd64.whl", hash = "sha256:b90ab29d0c37ec9bf55424c064312930ca5f4bde15ee8619ee44e69319aab163", size = 40988851, upload-time = "2025-05-08T16:08:33.671Z" }, { url = "https://files.pythonhosted.org/packages/1b/e9/7a879c137f7e55b30d75d90ce3eb468197646bc7b443ac036ae3fe109055/scipy-1.15.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3ac07623267feb3ae308487c260ac684b32ea35fd81e12845039952f558047b8", size = 38863011, upload-time = "2025-05-08T16:07:44.039Z" }, { url = "https://files.pythonhosted.org/packages/51/d1/226a806bbd69f62ce5ef5f3ffadc35286e9fbc802f606a07eb83bf2359de/scipy-1.15.3-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:6487aa99c2a3d509a5227d9a5e889ff05830a06b2ce08ec30df6d79db5fcd5c5", size = 30266407, upload-time = "2025-05-08T16:07:49.891Z" }, { url = "https://files.pythonhosted.org/packages/e5/9b/f32d1d6093ab9eeabbd839b0f7619c62e46cc4b7b6dbf05b6e615bbd4400/scipy-1.15.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:50f9e62461c95d933d5c5ef4a1f2ebf9a2b4e83b0db374cb3f1de104d935922e", size = 22540030, upload-time = "2025-05-08T16:07:54.121Z" }, { url = "https://files.pythonhosted.org/packages/e7/29/c278f699b095c1a884f29fda126340fcc201461ee8bfea5c8bdb1c7c958b/scipy-1.15.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:14ed70039d182f411ffc74789a16df3835e05dc469b898233a245cdfd7f162cb", size = 25218709, upload-time = "2025-05-08T16:07:58.506Z" }, { url = "https://files.pythonhosted.org/packages/24/18/9e5374b617aba742a990581373cd6b68a2945d65cc588482749ef2e64467/scipy-1.15.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a769105537aa07a69468a0eefcd121be52006db61cdd8cac8a0e68980bbb723", size = 34809045, upload-time = "2025-05-08T16:08:03.929Z" }, { url = "https://files.pythonhosted.org/packages/e1/fe/9c4361e7ba2927074360856db6135ef4904d505e9b3afbbcb073c4008328/scipy-1.15.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db984639887e3dffb3928d118145ffe40eff2fa40cb241a306ec57c219ebbbb", size = 36703062, upload-time = "2025-05-08T16:08:09.558Z" }, { url = "https://files.pythonhosted.org/packages/b7/8e/038ccfe29d272b30086b25a4960f757f97122cb2ec42e62b460d02fe98e9/scipy-1.15.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:40e54d5c7e7ebf1aa596c374c49fa3135f04648a0caabcb66c52884b943f02b4", size = 36393132, upload-time = "2025-05-08T16:08:15.34Z" }, { url = "https://files.pythonhosted.org/packages/10/7e/5c12285452970be5bdbe8352c619250b97ebf7917d7a9a9e96b8a8140f17/scipy-1.15.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5e721fed53187e71d0ccf382b6bf977644c533e506c4d33c3fb24de89f5c3ed5", size = 38979503, upload-time = "2025-05-08T16:08:21.513Z" }, { url = "https://files.pythonhosted.org/packages/81/06/0a5e5349474e1cbc5757975b21bd4fad0e72ebf138c5592f191646154e06/scipy-1.15.3-cp313-cp313t-win_amd64.whl", hash = "sha256:76ad1fb5f8752eabf0fa02e4cc0336b4e8f021e2d5f061ed37d6d264db35e3ca", size = 40308097, upload-time = "2025-05-08T16:08:27.627Z" }, ] [[package]] name = "scipy" version = "1.17.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.12'", "python_full_version == '3.11.*'", ] dependencies = [ { name = "numpy", version = "2.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/56/3e/9cca699f3486ce6bc12ff46dc2031f1ec8eb9ccc9a320fdaf925f1417426/scipy-1.17.0.tar.gz", hash = "sha256:2591060c8e648d8b96439e111ac41fd8342fdeff1876be2e19dea3fe8930454e", size = 30396830, upload-time = "2026-01-10T21:34:23.009Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/1e/4b/c89c131aa87cad2b77a54eb0fb94d633a842420fa7e919dc2f922037c3d8/scipy-1.17.0-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:2abd71643797bd8a106dff97894ff7869eeeb0af0f7a5ce02e4227c6a2e9d6fd", size = 31381316, upload-time = "2026-01-10T21:24:33.42Z" }, { url = "https://files.pythonhosted.org/packages/5e/5f/a6b38f79a07d74989224d5f11b55267714707582908a5f1ae854cf9a9b84/scipy-1.17.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:ef28d815f4d2686503e5f4f00edc387ae58dfd7a2f42e348bb53359538f01558", size = 27966760, upload-time = "2026-01-10T21:24:38.911Z" }, { url = "https://files.pythonhosted.org/packages/c1/20/095ad24e031ee8ed3c5975954d816b8e7e2abd731e04f8be573de8740885/scipy-1.17.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:272a9f16d6bb4667e8b50d25d71eddcc2158a214df1b566319298de0939d2ab7", size = 20138701, upload-time = "2026-01-10T21:24:43.249Z" }, { url = "https://files.pythonhosted.org/packages/89/11/4aad2b3858d0337756f3323f8960755704e530b27eb2a94386c970c32cbe/scipy-1.17.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:7204fddcbec2fe6598f1c5fdf027e9f259106d05202a959a9f1aecf036adc9f6", size = 22480574, upload-time = "2026-01-10T21:24:47.266Z" }, { url = "https://files.pythonhosted.org/packages/85/bd/f5af70c28c6da2227e510875cadf64879855193a687fb19951f0f44cfd6b/scipy-1.17.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fc02c37a5639ee67d8fb646ffded6d793c06c5622d36b35cfa8fe5ececb8f042", size = 32862414, upload-time = "2026-01-10T21:24:52.566Z" }, { url = "https://files.pythonhosted.org/packages/ef/df/df1457c4df3826e908879fe3d76bc5b6e60aae45f4ee42539512438cfd5d/scipy-1.17.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dac97a27520d66c12a34fd90a4fe65f43766c18c0d6e1c0a80f114d2260080e4", size = 35112380, upload-time = "2026-01-10T21:24:58.433Z" }, { url = "https://files.pythonhosted.org/packages/5f/bb/88e2c16bd1dd4de19d80d7c5e238387182993c2fb13b4b8111e3927ad422/scipy-1.17.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ebb7446a39b3ae0fe8f416a9a3fdc6fba3f11c634f680f16a239c5187bc487c0", size = 34922676, upload-time = "2026-01-10T21:25:04.287Z" }, { url = "https://files.pythonhosted.org/packages/02/ba/5120242cc735f71fc002cff0303d536af4405eb265f7c60742851e7ccfe9/scipy-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:474da16199f6af66601a01546144922ce402cb17362e07d82f5a6cf8f963e449", size = 37507599, upload-time = "2026-01-10T21:25:09.851Z" }, { url = "https://files.pythonhosted.org/packages/52/c8/08629657ac6c0da198487ce8cd3de78e02cfde42b7f34117d56a3fe249dc/scipy-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:255c0da161bd7b32a6c898e7891509e8a9289f0b1c6c7d96142ee0d2b114c2ea", size = 36380284, upload-time = "2026-01-10T21:25:15.632Z" }, { url = "https://files.pythonhosted.org/packages/6c/4a/465f96d42c6f33ad324a40049dfd63269891db9324aa66c4a1c108c6f994/scipy-1.17.0-cp311-cp311-win_arm64.whl", hash = "sha256:85b0ac3ad17fa3be50abd7e69d583d98792d7edc08367e01445a1e2076005379", size = 24370427, upload-time = "2026-01-10T21:25:20.514Z" }, { url = "https://files.pythonhosted.org/packages/0b/11/7241a63e73ba5a516f1930ac8d5b44cbbfabd35ac73a2d08ca206df007c4/scipy-1.17.0-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:0d5018a57c24cb1dd828bcf51d7b10e65986d549f52ef5adb6b4d1ded3e32a57", size = 31364580, upload-time = "2026-01-10T21:25:25.717Z" }, { url = "https://files.pythonhosted.org/packages/ed/1d/5057f812d4f6adc91a20a2d6f2ebcdb517fdbc87ae3acc5633c9b97c8ba5/scipy-1.17.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:88c22af9e5d5a4f9e027e26772cc7b5922fab8bcc839edb3ae33de404feebd9e", size = 27969012, upload-time = "2026-01-10T21:25:30.921Z" }, { url = "https://files.pythonhosted.org/packages/e3/21/f6ec556c1e3b6ec4e088da667d9987bb77cc3ab3026511f427dc8451187d/scipy-1.17.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:f3cd947f20fe17013d401b64e857c6b2da83cae567adbb75b9dcba865abc66d8", size = 20140691, upload-time = "2026-01-10T21:25:34.802Z" }, { url = "https://files.pythonhosted.org/packages/7a/fe/5e5ad04784964ba964a96f16c8d4676aa1b51357199014dce58ab7ec5670/scipy-1.17.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:e8c0b331c2c1f531eb51f1b4fc9ba709521a712cce58f1aa627bc007421a5306", size = 22463015, upload-time = "2026-01-10T21:25:39.277Z" }, { url = "https://files.pythonhosted.org/packages/4a/69/7c347e857224fcaf32a34a05183b9d8a7aca25f8f2d10b8a698b8388561a/scipy-1.17.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5194c445d0a1c7a6c1a4a4681b6b7c71baad98ff66d96b949097e7513c9d6742", size = 32724197, upload-time = "2026-01-10T21:25:44.084Z" }, { url = "https://files.pythonhosted.org/packages/d1/fe/66d73b76d378ba8cc2fe605920c0c75092e3a65ae746e1e767d9d020a75a/scipy-1.17.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9eeb9b5f5997f75507814ed9d298ab23f62cf79f5a3ef90031b1ee2506abdb5b", size = 35009148, upload-time = "2026-01-10T21:25:50.591Z" }, { url = "https://files.pythonhosted.org/packages/af/07/07dec27d9dc41c18d8c43c69e9e413431d20c53a0339c388bcf72f353c4b/scipy-1.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:40052543f7bbe921df4408f46003d6f01c6af109b9e2c8a66dd1cf6cf57f7d5d", size = 34798766, upload-time = "2026-01-10T21:25:59.41Z" }, { url = "https://files.pythonhosted.org/packages/81/61/0470810c8a093cdacd4ba7504b8a218fd49ca070d79eca23a615f5d9a0b0/scipy-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0cf46c8013fec9d3694dc572f0b54100c28405d55d3e2cb15e2895b25057996e", size = 37405953, upload-time = "2026-01-10T21:26:07.75Z" }, { url = "https://files.pythonhosted.org/packages/92/ce/672ed546f96d5d41ae78c4b9b02006cedd0b3d6f2bf5bb76ea455c320c28/scipy-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:0937a0b0d8d593a198cededd4c439a0ea216a3f36653901ea1f3e4be949056f8", size = 36328121, upload-time = "2026-01-10T21:26:16.509Z" }, { url = "https://files.pythonhosted.org/packages/9d/21/38165845392cae67b61843a52c6455d47d0cc2a40dd495c89f4362944654/scipy-1.17.0-cp312-cp312-win_arm64.whl", hash = "sha256:f603d8a5518c7426414d1d8f82e253e454471de682ce5e39c29adb0df1efb86b", size = 24314368, upload-time = "2026-01-10T21:26:23.087Z" }, { url = "https://files.pythonhosted.org/packages/0c/51/3468fdfd49387ddefee1636f5cf6d03ce603b75205bf439bbf0e62069bfd/scipy-1.17.0-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:65ec32f3d32dfc48c72df4291345dae4f048749bc8d5203ee0a3f347f96c5ce6", size = 31344101, upload-time = "2026-01-10T21:26:30.25Z" }, { url = "https://files.pythonhosted.org/packages/b2/9a/9406aec58268d437636069419e6977af953d1e246df941d42d3720b7277b/scipy-1.17.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:1f9586a58039d7229ce77b52f8472c972448cded5736eaf102d5658bbac4c269", size = 27950385, upload-time = "2026-01-10T21:26:36.801Z" }, { url = "https://files.pythonhosted.org/packages/4f/98/e7342709e17afdfd1b26b56ae499ef4939b45a23a00e471dfb5375eea205/scipy-1.17.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9fad7d3578c877d606b1150135c2639e9de9cecd3705caa37b66862977cc3e72", size = 20122115, upload-time = "2026-01-10T21:26:42.107Z" }, { url = "https://files.pythonhosted.org/packages/fd/0e/9eeeb5357a64fd157cbe0302c213517c541cc16b8486d82de251f3c68ede/scipy-1.17.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:423ca1f6584fc03936972b5f7c06961670dbba9f234e71676a7c7ccf938a0d61", size = 22442402, upload-time = "2026-01-10T21:26:48.029Z" }, { url = "https://files.pythonhosted.org/packages/c9/10/be13397a0e434f98e0c79552b2b584ae5bb1c8b2be95db421533bbca5369/scipy-1.17.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fe508b5690e9eaaa9467fc047f833af58f1152ae51a0d0aed67aa5801f4dd7d6", size = 32696338, upload-time = "2026-01-10T21:26:55.521Z" }, { url = "https://files.pythonhosted.org/packages/63/1e/12fbf2a3bb240161651c94bb5cdd0eae5d4e8cc6eaeceb74ab07b12a753d/scipy-1.17.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6680f2dfd4f6182e7d6db161344537da644d1cf85cf293f015c60a17ecf08752", size = 34977201, upload-time = "2026-01-10T21:27:03.501Z" }, { url = "https://files.pythonhosted.org/packages/19/5b/1a63923e23ccd20bd32156d7dd708af5bbde410daa993aa2500c847ab2d2/scipy-1.17.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eec3842ec9ac9de5917899b277428886042a93db0b227ebbe3a333b64ec7643d", size = 34777384, upload-time = "2026-01-10T21:27:11.423Z" }, { url = "https://files.pythonhosted.org/packages/39/22/b5da95d74edcf81e540e467202a988c50fef41bd2011f46e05f72ba07df6/scipy-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d7425fcafbc09a03731e1bc05581f5fad988e48c6a861f441b7ab729a49a55ea", size = 37379586, upload-time = "2026-01-10T21:27:20.171Z" }, { url = "https://files.pythonhosted.org/packages/b9/b6/8ac583d6da79e7b9e520579f03007cb006f063642afd6b2eeb16b890bf93/scipy-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:87b411e42b425b84777718cc41516b8a7e0795abfa8e8e1d573bf0ef014f0812", size = 36287211, upload-time = "2026-01-10T21:28:43.122Z" }, { url = "https://files.pythonhosted.org/packages/55/fb/7db19e0b3e52f882b420417644ec81dd57eeef1bd1705b6f689d8ff93541/scipy-1.17.0-cp313-cp313-win_arm64.whl", hash = "sha256:357ca001c6e37601066092e7c89cca2f1ce74e2a520ca78d063a6d2201101df2", size = 24312646, upload-time = "2026-01-10T21:28:49.893Z" }, { url = "https://files.pythonhosted.org/packages/20/b6/7feaa252c21cc7aff335c6c55e1b90ab3e3306da3f048109b8b639b94648/scipy-1.17.0-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:ec0827aa4d36cb79ff1b81de898e948a51ac0b9b1c43e4a372c0508c38c0f9a3", size = 31693194, upload-time = "2026-01-10T21:27:27.454Z" }, { url = "https://files.pythonhosted.org/packages/76/bb/bbb392005abce039fb7e672cb78ac7d158700e826b0515cab6b5b60c26fb/scipy-1.17.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:819fc26862b4b3c73a60d486dbb919202f3d6d98c87cf20c223511429f2d1a97", size = 28365415, upload-time = "2026-01-10T21:27:34.26Z" }, { url = "https://files.pythonhosted.org/packages/37/da/9d33196ecc99fba16a409c691ed464a3a283ac454a34a13a3a57c0d66f3a/scipy-1.17.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:363ad4ae2853d88ebcde3ae6ec46ccca903ea9835ee8ba543f12f575e7b07e4e", size = 20537232, upload-time = "2026-01-10T21:27:40.306Z" }, { url = "https://files.pythonhosted.org/packages/56/9d/f4b184f6ddb28e9a5caea36a6f98e8ecd2a524f9127354087ce780885d83/scipy-1.17.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:979c3a0ff8e5ba254d45d59ebd38cde48fce4f10b5125c680c7a4bfe177aab07", size = 22791051, upload-time = "2026-01-10T21:27:46.539Z" }, { url = "https://files.pythonhosted.org/packages/9b/9d/025cccdd738a72140efc582b1641d0dd4caf2e86c3fb127568dc80444e6e/scipy-1.17.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:130d12926ae34399d157de777472bf82e9061c60cc081372b3118edacafe1d00", size = 32815098, upload-time = "2026-01-10T21:27:54.389Z" }, { url = "https://files.pythonhosted.org/packages/48/5f/09b879619f8bca15ce392bfc1894bd9c54377e01d1b3f2f3b595a1b4d945/scipy-1.17.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e886000eb4919eae3a44f035e63f0fd8b651234117e8f6f29bad1cd26e7bc45", size = 35031342, upload-time = "2026-01-10T21:28:03.012Z" }, { url = "https://files.pythonhosted.org/packages/f2/9a/f0f0a9f0aa079d2f106555b984ff0fbb11a837df280f04f71f056ea9c6e4/scipy-1.17.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:13c4096ac6bc31d706018f06a49abe0485f96499deb82066b94d19b02f664209", size = 34893199, upload-time = "2026-01-10T21:28:10.832Z" }, { url = "https://files.pythonhosted.org/packages/90/b8/4f0f5cf0c5ea4d7548424e6533e6b17d164f34a6e2fb2e43ffebb6697b06/scipy-1.17.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cacbaddd91fcffde703934897c5cd2c7cb0371fac195d383f4e1f1c5d3f3bd04", size = 37438061, upload-time = "2026-01-10T21:28:19.684Z" }, { url = "https://files.pythonhosted.org/packages/f9/cc/2bd59140ed3b2fa2882fb15da0a9cb1b5a6443d67cfd0d98d4cec83a57ec/scipy-1.17.0-cp313-cp313t-win_amd64.whl", hash = "sha256:edce1a1cf66298cccdc48a1bdf8fb10a3bf58e8b58d6c3883dd1530e103f87c0", size = 36328593, upload-time = "2026-01-10T21:28:28.007Z" }, { url = "https://files.pythonhosted.org/packages/13/1b/c87cc44a0d2c7aaf0f003aef2904c3d097b422a96c7e7c07f5efd9073c1b/scipy-1.17.0-cp313-cp313t-win_arm64.whl", hash = "sha256:30509da9dbec1c2ed8f168b8d8aa853bc6723fede1dbc23c7d43a56f5ab72a67", size = 24625083, upload-time = "2026-01-10T21:28:35.188Z" }, { url = "https://files.pythonhosted.org/packages/1a/2d/51006cd369b8e7879e1c630999a19d1fbf6f8b5ed3e33374f29dc87e53b3/scipy-1.17.0-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:c17514d11b78be8f7e6331b983a65a7f5ca1fd037b95e27b280921fe5606286a", size = 31346803, upload-time = "2026-01-10T21:28:57.24Z" }, { url = "https://files.pythonhosted.org/packages/d6/2e/2349458c3ce445f53a6c93d4386b1c4c5c0c540917304c01222ff95ff317/scipy-1.17.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:4e00562e519c09da34c31685f6acc3aa384d4d50604db0f245c14e1b4488bfa2", size = 27967182, upload-time = "2026-01-10T21:29:04.107Z" }, { url = "https://files.pythonhosted.org/packages/5e/7c/df525fbfa77b878d1cfe625249529514dc02f4fd5f45f0f6295676a76528/scipy-1.17.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:f7df7941d71314e60a481e02d5ebcb3f0185b8d799c70d03d8258f6c80f3d467", size = 20139125, upload-time = "2026-01-10T21:29:10.179Z" }, { url = "https://files.pythonhosted.org/packages/33/11/fcf9d43a7ed1234d31765ec643b0515a85a30b58eddccc5d5a4d12b5f194/scipy-1.17.0-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:aabf057c632798832f071a8dde013c2e26284043934f53b00489f1773b33527e", size = 22443554, upload-time = "2026-01-10T21:29:15.888Z" }, { url = "https://files.pythonhosted.org/packages/80/5c/ea5d239cda2dd3d31399424967a24d556cf409fbea7b5b21412b0fd0a44f/scipy-1.17.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a38c3337e00be6fd8a95b4ed66b5d988bac4ec888fd922c2ea9fe5fb1603dd67", size = 32757834, upload-time = "2026-01-10T21:29:23.406Z" }, { url = "https://files.pythonhosted.org/packages/b8/7e/8c917cc573310e5dc91cbeead76f1b600d3fb17cf0969db02c9cf92e3cfa/scipy-1.17.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00fb5f8ec8398ad90215008d8b6009c9db9fa924fd4c7d6be307c6f945f9cd73", size = 34995775, upload-time = "2026-01-10T21:29:31.915Z" }, { url = "https://files.pythonhosted.org/packages/c5/43/176c0c3c07b3f7df324e7cdd933d3e2c4898ca202b090bd5ba122f9fe270/scipy-1.17.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f2a4942b0f5f7c23c7cd641a0ca1955e2ae83dedcff537e3a0259096635e186b", size = 34841240, upload-time = "2026-01-10T21:29:39.995Z" }, { url = "https://files.pythonhosted.org/packages/44/8c/d1f5f4b491160592e7f084d997de53a8e896a3ac01cd07e59f43ca222744/scipy-1.17.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:dbf133ced83889583156566d2bdf7a07ff89228fe0c0cb727f777de92092ec6b", size = 37394463, upload-time = "2026-01-10T21:29:48.723Z" }, { url = "https://files.pythonhosted.org/packages/9f/ec/42a6657f8d2d087e750e9a5dde0b481fd135657f09eaf1cf5688bb23c338/scipy-1.17.0-cp314-cp314-win_amd64.whl", hash = "sha256:3625c631a7acd7cfd929e4e31d2582cf00f42fcf06011f59281271746d77e061", size = 37053015, upload-time = "2026-01-10T21:30:51.418Z" }, { url = "https://files.pythonhosted.org/packages/27/58/6b89a6afd132787d89a362d443a7bddd511b8f41336a1ae47f9e4f000dc4/scipy-1.17.0-cp314-cp314-win_arm64.whl", hash = "sha256:9244608d27eafe02b20558523ba57f15c689357c85bdcfe920b1828750aa26eb", size = 24951312, upload-time = "2026-01-10T21:30:56.771Z" }, { url = "https://files.pythonhosted.org/packages/e9/01/f58916b9d9ae0112b86d7c3b10b9e685625ce6e8248df139d0fcb17f7397/scipy-1.17.0-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:2b531f57e09c946f56ad0b4a3b2abee778789097871fc541e267d2eca081cff1", size = 31706502, upload-time = "2026-01-10T21:29:56.326Z" }, { url = "https://files.pythonhosted.org/packages/59/8e/2912a87f94a7d1f8b38aabc0faf74b82d3b6c9e22be991c49979f0eceed8/scipy-1.17.0-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:13e861634a2c480bd237deb69333ac79ea1941b94568d4b0efa5db5e263d4fd1", size = 28380854, upload-time = "2026-01-10T21:30:01.554Z" }, { url = "https://files.pythonhosted.org/packages/bd/1c/874137a52dddab7d5d595c1887089a2125d27d0601fce8c0026a24a92a0b/scipy-1.17.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:eb2651271135154aa24f6481cbae5cc8af1f0dd46e6533fb7b56aa9727b6a232", size = 20552752, upload-time = "2026-01-10T21:30:05.93Z" }, { url = "https://files.pythonhosted.org/packages/3f/f0/7518d171cb735f6400f4576cf70f756d5b419a07fe1867da34e2c2c9c11b/scipy-1.17.0-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:c5e8647f60679790c2f5c76be17e2e9247dc6b98ad0d3b065861e082c56e078d", size = 22803972, upload-time = "2026-01-10T21:30:10.651Z" }, { url = "https://files.pythonhosted.org/packages/7c/74/3498563a2c619e8a3ebb4d75457486c249b19b5b04a30600dfd9af06bea5/scipy-1.17.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5fb10d17e649e1446410895639f3385fd2bf4c3c7dfc9bea937bddcbc3d7b9ba", size = 32829770, upload-time = "2026-01-10T21:30:16.359Z" }, { url = "https://files.pythonhosted.org/packages/48/d1/7b50cedd8c6c9d6f706b4b36fa8544d829c712a75e370f763b318e9638c1/scipy-1.17.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8547e7c57f932e7354a2319fab613981cde910631979f74c9b542bb167a8b9db", size = 35051093, upload-time = "2026-01-10T21:30:22.987Z" }, { url = "https://files.pythonhosted.org/packages/e2/82/a2d684dfddb87ba1b3ea325df7c3293496ee9accb3a19abe9429bce94755/scipy-1.17.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:33af70d040e8af9d5e7a38b5ed3b772adddd281e3062ff23fec49e49681c38cf", size = 34909905, upload-time = "2026-01-10T21:30:28.704Z" }, { url = "https://files.pythonhosted.org/packages/ef/5e/e565bd73991d42023eb82bb99e51c5b3d9e2c588ca9d4b3e2cc1d3ca62a6/scipy-1.17.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb55bb97d00f8b7ab95cb64f873eb0bf54d9446264d9f3609130381233483f", size = 37457743, upload-time = "2026-01-10T21:30:34.819Z" }, { url = "https://files.pythonhosted.org/packages/58/a8/a66a75c3d8f1fb2b83f66007d6455a06a6f6cf5618c3dc35bc9b69dd096e/scipy-1.17.0-cp314-cp314t-win_amd64.whl", hash = "sha256:1ff269abf702f6c7e67a4b7aad981d42871a11b9dd83c58d2d2ea624efbd1088", size = 37098574, upload-time = "2026-01-10T21:30:40.782Z" }, { url = "https://files.pythonhosted.org/packages/56/a5/df8f46ef7da168f1bc52cd86e09a9de5c6f19cc1da04454d51b7d4f43408/scipy-1.17.0-cp314-cp314t-win_arm64.whl", hash = "sha256:031121914e295d9791319a1875444d55079885bbae5bdc9c5e0f2ee5f09d34ff", size = 25246266, upload-time = "2026-01-10T21:30:45.923Z" }, ] [[package]] name = "selenium" version = "4.40.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, { name = "trio" }, { name = "trio-typing" }, { name = "trio-websocket" }, { name = "types-certifi" }, { name = "types-urllib3" }, { name = "typing-extensions" }, { name = "urllib3", extra = ["socks"] }, { name = "websocket-client" }, ] sdist = { url = "https://files.pythonhosted.org/packages/66/ef/a5727fa7b33d20d296322adf851b76072d8d3513e1b151969d3228437faf/selenium-4.40.0.tar.gz", hash = "sha256:a88f5905d88ad0b84991c2386ea39e2bbde6d6c334be38df5842318ba98eaa8c", size = 930444, upload-time = "2026-01-18T23:12:31.565Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/9d/74/eb9d6540aca1911106fa0877b8e9ef24171bc18857937a6b0ffe0586c623/selenium-4.40.0-py3-none-any.whl", hash = "sha256:c8823fc02e2c771d9ad9a0cf899cee7de1a57a6697e3d0b91f67566129f2b729", size = 9608184, upload-time = "2026-01-18T23:12:29.435Z" }, ] [[package]] name = "shellingham" version = "1.5.4" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload-time = "2023-10-24T04:13:40.426Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload-time = "2023-10-24T04:13:38.866Z" }, ] [[package]] name = "sniffio" version = "1.3.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, ] [[package]] name = "snowballstemmer" version = "3.0.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/75/a7/9810d872919697c9d01295633f5d574fb416d47e535f258272ca1f01f447/snowballstemmer-3.0.1.tar.gz", hash = "sha256:6d5eeeec8e9f84d4d56b847692bacf79bc2c8e90c7f80ca4444ff8b6f2e52895", size = 105575, upload-time = "2025-05-09T16:34:51.843Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/c8/78/3565d011c61f5a43488987ee32b6f3f656e7f107ac2782dd57bdd7d91d9a/snowballstemmer-3.0.1-py3-none-any.whl", hash = "sha256:6cd7b3897da8d6c9ffb968a6781fa6532dce9c3618a4b127d920dab764a19064", size = 103274, upload-time = "2025-05-09T16:34:50.371Z" }, ] [[package]] name = "sortedcontainers" version = "2.4.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111/sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", size = 30594, upload-time = "2021-05-16T22:03:42.897Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575, upload-time = "2021-05-16T22:03:41.177Z" }, ] [[package]] name = "soupsieve" version = "2.8.3" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/7b/ae/2d9c981590ed9999a0d91755b47fc74f74de286b0f5cee14c9269041e6c4/soupsieve-2.8.3.tar.gz", hash = "sha256:3267f1eeea4251fb42728b6dfb746edc9acaffc4a45b27e19450b676586e8349", size = 118627, upload-time = "2026-01-20T04:27:02.457Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl", hash = "sha256:ed64f2ba4eebeab06cc4962affce381647455978ffc1e36bb79a545b91f45a95", size = 37016, upload-time = "2026-01-20T04:27:01.012Z" }, ] [[package]] name = "sphinx" version = "8.1.3" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.11'", ] dependencies = [ { name = "alabaster", marker = "python_full_version < '3.11'" }, { name = "babel", marker = "python_full_version < '3.11'" }, { name = "colorama", marker = "python_full_version < '3.11' and sys_platform == 'win32'" }, { name = "docutils", marker = "python_full_version < '3.11'" }, { name = "imagesize", marker = "python_full_version < '3.11'" }, { name = "jinja2", marker = "python_full_version < '3.11'" }, { name = "packaging", marker = "python_full_version < '3.11'" }, { name = "pygments", marker = "python_full_version < '3.11'" }, { name = "requests", marker = "python_full_version < '3.11'" }, { name = "snowballstemmer", marker = "python_full_version < '3.11'" }, { name = "sphinxcontrib-applehelp", marker = "python_full_version < '3.11'" }, { name = "sphinxcontrib-devhelp", marker = "python_full_version < '3.11'" }, { name = "sphinxcontrib-htmlhelp", marker = "python_full_version < '3.11'" }, { name = "sphinxcontrib-jsmath", marker = "python_full_version < '3.11'" }, { name = "sphinxcontrib-qthelp", marker = "python_full_version < '3.11'" }, { name = "sphinxcontrib-serializinghtml", marker = "python_full_version < '3.11'" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/be0b61178fe2cdcb67e2a92fc9ebb488e3c51c4f74a36a7824c0adf23425/sphinx-8.1.3.tar.gz", hash = "sha256:43c1911eecb0d3e161ad78611bc905d1ad0e523e4ddc202a58a821773dc4c927", size = 8184611, upload-time = "2024-10-13T20:27:13.93Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/26/60/1ddff83a56d33aaf6f10ec8ce84b4c007d9368b21008876fceda7e7381ef/sphinx-8.1.3-py3-none-any.whl", hash = "sha256:09719015511837b76bf6e03e42eb7595ac8c2e41eeb9c29c5b755c6b677992a2", size = 3487125, upload-time = "2024-10-13T20:27:10.448Z" }, ] [[package]] name = "sphinx" version = "9.0.4" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version == '3.11.*'", ] dependencies = [ { name = "alabaster", marker = "python_full_version == '3.11.*'" }, { name = "babel", marker = "python_full_version == '3.11.*'" }, { name = "colorama", marker = "python_full_version == '3.11.*' and sys_platform == 'win32'" }, { name = "docutils", marker = "python_full_version == '3.11.*'" }, { name = "imagesize", marker = "python_full_version == '3.11.*'" }, { name = "jinja2", marker = "python_full_version == '3.11.*'" }, { name = "packaging", marker = "python_full_version == '3.11.*'" }, { name = "pygments", marker = "python_full_version == '3.11.*'" }, { name = "requests", marker = "python_full_version == '3.11.*'" }, { name = "roman-numerals", marker = "python_full_version == '3.11.*'" }, { name = "snowballstemmer", marker = "python_full_version == '3.11.*'" }, { name = "sphinxcontrib-applehelp", marker = "python_full_version == '3.11.*'" }, { name = "sphinxcontrib-devhelp", marker = "python_full_version == '3.11.*'" }, { name = "sphinxcontrib-htmlhelp", marker = "python_full_version == '3.11.*'" }, { name = "sphinxcontrib-jsmath", marker = "python_full_version == '3.11.*'" }, { name = "sphinxcontrib-qthelp", marker = "python_full_version == '3.11.*'" }, { name = "sphinxcontrib-serializinghtml", marker = "python_full_version == '3.11.*'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/42/50/a8c6ccc36d5eacdfd7913ddccd15a9cee03ecafc5ee2bc40e1f168d85022/sphinx-9.0.4.tar.gz", hash = "sha256:594ef59d042972abbc581d8baa577404abe4e6c3b04ef61bd7fc2acbd51f3fa3", size = 8710502, upload-time = "2025-12-04T07:45:27.343Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/c6/3f/4bbd76424c393caead2e1eb89777f575dee5c8653e2d4b6afd7a564f5974/sphinx-9.0.4-py3-none-any.whl", hash = "sha256:5bebc595a5e943ea248b99c13814c1c5e10b3ece718976824ffa7959ff95fffb", size = 3917713, upload-time = "2025-12-04T07:45:24.944Z" }, ] [[package]] name = "sphinx" version = "9.1.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.12'", ] dependencies = [ { name = "alabaster", marker = "python_full_version >= '3.12'" }, { name = "babel", marker = "python_full_version >= '3.12'" }, { name = "colorama", marker = "python_full_version >= '3.12' and sys_platform == 'win32'" }, { name = "docutils", marker = "python_full_version >= '3.12'" }, { name = "imagesize", marker = "python_full_version >= '3.12'" }, { name = "jinja2", marker = "python_full_version >= '3.12'" }, { name = "packaging", marker = "python_full_version >= '3.12'" }, { name = "pygments", marker = "python_full_version >= '3.12'" }, { name = "requests", marker = "python_full_version >= '3.12'" }, { name = "roman-numerals", marker = "python_full_version >= '3.12'" }, { name = "snowballstemmer", marker = "python_full_version >= '3.12'" }, { name = "sphinxcontrib-applehelp", marker = "python_full_version >= '3.12'" }, { name = "sphinxcontrib-devhelp", marker = "python_full_version >= '3.12'" }, { name = "sphinxcontrib-htmlhelp", marker = "python_full_version >= '3.12'" }, { name = "sphinxcontrib-jsmath", marker = "python_full_version >= '3.12'" }, { name = "sphinxcontrib-qthelp", marker = "python_full_version >= '3.12'" }, { name = "sphinxcontrib-serializinghtml", marker = "python_full_version >= '3.12'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/cd/bd/f08eb0f4eed5c83f1ba2a3bd18f7745a2b1525fad70660a1c00224ec468a/sphinx-9.1.0.tar.gz", hash = "sha256:7741722357dd75f8190766926071fed3bdc211c74dd2d7d4df5404da95930ddb", size = 8718324, upload-time = "2025-12-31T15:09:27.646Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/73/f7/b1884cb3188ab181fc81fa00c266699dab600f927a964df02ec3d5d1916a/sphinx-9.1.0-py3-none-any.whl", hash = "sha256:c84fdd4e782504495fe4f2c0b3413d6c2bf388589bb352d439b2a3bb99991978", size = 3921742, upload-time = "2025-12-31T15:09:25.561Z" }, ] [[package]] name = "sphinx-autobuild" version = "2024.10.3" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.11'", ] dependencies = [ { name = "colorama", marker = "python_full_version < '3.11'" }, { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "starlette", marker = "python_full_version < '3.11'" }, { name = "uvicorn", marker = "python_full_version < '3.11'" }, { name = "watchfiles", marker = "python_full_version < '3.11'" }, { name = "websockets", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a5/2c/155e1de2c1ba96a72e5dba152c509a8b41e047ee5c2def9e9f0d812f8be7/sphinx_autobuild-2024.10.3.tar.gz", hash = "sha256:248150f8f333e825107b6d4b86113ab28fa51750e5f9ae63b59dc339be951fb1", size = 14023, upload-time = "2024-10-02T23:15:30.172Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/18/c0/eba125db38c84d3c74717008fd3cb5000b68cd7e2cbafd1349c6a38c3d3b/sphinx_autobuild-2024.10.3-py3-none-any.whl", hash = "sha256:158e16c36f9d633e613c9aaf81c19b0fc458ca78b112533b20dafcda430d60fa", size = 11908, upload-time = "2024-10-02T23:15:28.739Z" }, ] [[package]] name = "sphinx-autobuild" version = "2025.8.25" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.12'", "python_full_version == '3.11.*'", ] dependencies = [ { name = "colorama", marker = "python_full_version >= '3.11'" }, { name = "sphinx", version = "9.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, { name = "sphinx", version = "9.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, { name = "starlette", marker = "python_full_version >= '3.11'" }, { name = "uvicorn", marker = "python_full_version >= '3.11'" }, { name = "watchfiles", marker = "python_full_version >= '3.11'" }, { name = "websockets", marker = "python_full_version >= '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e0/3c/a59a3a453d4133777f7ed2e83c80b7dc817d43c74b74298ca0af869662ad/sphinx_autobuild-2025.8.25.tar.gz", hash = "sha256:9cf5aab32853c8c31af572e4fecdc09c997e2b8be5a07daf2a389e270e85b213", size = 15200, upload-time = "2025-08-25T18:44:55.436Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/d7/20/56411b52f917696995f5ad27d2ea7e9492c84a043c5b49a3a3173573cd93/sphinx_autobuild-2025.8.25-py3-none-any.whl", hash = "sha256:b750ac7d5a18603e4665294323fd20f6dcc0a984117026d1986704fa68f0379a", size = 12535, upload-time = "2025-08-25T18:44:54.164Z" }, ] [[package]] name = "sphinx-basic-ng" version = "1.0.0b2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "sphinx", version = "9.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, { name = "sphinx", version = "9.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/98/0b/a866924ded68efec7a1759587a4e478aec7559d8165fac8b2ad1c0e774d6/sphinx_basic_ng-1.0.0b2.tar.gz", hash = "sha256:9ec55a47c90c8c002b5960c57492ec3021f5193cb26cebc2dc4ea226848651c9", size = 20736, upload-time = "2023-07-08T18:40:54.166Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/3c/dd/018ce05c532a22007ac58d4f45232514cd9d6dd0ee1dc374e309db830983/sphinx_basic_ng-1.0.0b2-py3-none-any.whl", hash = "sha256:eb09aedbabfb650607e9b4b68c9d240b90b1e1be221d6ad71d61c52e29f7932b", size = 22496, upload-time = "2023-07-08T18:40:52.659Z" }, ] [[package]] name = "sphinx-rtd-theme" version = "3.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "docutils" }, { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "sphinx", version = "9.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, { name = "sphinx", version = "9.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, { name = "sphinxcontrib-jquery" }, ] sdist = { url = "https://files.pythonhosted.org/packages/84/68/a1bfbf38c0f7bccc9b10bbf76b94606f64acb1552ae394f0b8285bfaea25/sphinx_rtd_theme-3.1.0.tar.gz", hash = "sha256:b44276f2c276e909239a4f6c955aa667aaafeb78597923b1c60babc76db78e4c", size = 7620915, upload-time = "2026-01-12T16:03:31.17Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/87/c7/b5c8015d823bfda1a346adb2c634a2101d50bb75d421eb6dcb31acd25ebc/sphinx_rtd_theme-3.1.0-py2.py3-none-any.whl", hash = "sha256:1785824ae8e6632060490f67cf3a72d404a85d2d9fc26bce3619944de5682b89", size = 7655617, upload-time = "2026-01-12T16:03:28.101Z" }, ] [[package]] name = "sphinxcontrib-applehelp" version = "2.0.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/ba/6e/b837e84a1a704953c62ef8776d45c3e8d759876b4a84fe14eba2859106fe/sphinxcontrib_applehelp-2.0.0.tar.gz", hash = "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1", size = 20053, upload-time = "2024-07-29T01:09:00.465Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5", size = 119300, upload-time = "2024-07-29T01:08:58.99Z" }, ] [[package]] name = "sphinxcontrib-devhelp" version = "2.0.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/f6/d2/5beee64d3e4e747f316bae86b55943f51e82bb86ecd325883ef65741e7da/sphinxcontrib_devhelp-2.0.0.tar.gz", hash = "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad", size = 12967, upload-time = "2024-07-29T01:09:23.417Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2", size = 82530, upload-time = "2024-07-29T01:09:21.945Z" }, ] [[package]] name = "sphinxcontrib-htmlhelp" version = "2.1.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/43/93/983afd9aa001e5201eab16b5a444ed5b9b0a7a010541e0ddfbbfd0b2470c/sphinxcontrib_htmlhelp-2.1.0.tar.gz", hash = "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9", size = 22617, upload-time = "2024-07-29T01:09:37.889Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8", size = 98705, upload-time = "2024-07-29T01:09:36.407Z" }, ] [[package]] name = "sphinxcontrib-jquery" version = "4.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "sphinx", version = "9.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, { name = "sphinx", version = "9.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/de/f3/aa67467e051df70a6330fe7770894b3e4f09436dea6881ae0b4f3d87cad8/sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a", size = 122331, upload-time = "2023-03-14T15:01:01.944Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/76/85/749bd22d1a68db7291c89e2ebca53f4306c3f205853cf31e9de279034c3c/sphinxcontrib_jquery-4.1-py2.py3-none-any.whl", hash = "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae", size = 121104, upload-time = "2023-03-14T15:01:00.356Z" }, ] [[package]] name = "sphinxcontrib-jsmath" version = "1.0.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/b2/e8/9ed3830aeed71f17c026a07a5097edcf44b692850ef215b161b8ad875729/sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8", size = 5787, upload-time = "2019-01-21T16:10:16.347Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178", size = 5071, upload-time = "2019-01-21T16:10:14.333Z" }, ] [[package]] name = "sphinxcontrib-qthelp" version = "2.0.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/68/bc/9104308fc285eb3e0b31b67688235db556cd5b0ef31d96f30e45f2e51cae/sphinxcontrib_qthelp-2.0.0.tar.gz", hash = "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab", size = 17165, upload-time = "2024-07-29T01:09:56.435Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb", size = 88743, upload-time = "2024-07-29T01:09:54.885Z" }, ] [[package]] name = "sphinxcontrib-serializinghtml" version = "2.0.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/3b/44/6716b257b0aa6bfd51a1b31665d1c205fb12cb5ad56de752dfa15657de2f/sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d", size = 16080, upload-time = "2024-07-29T01:10:09.332Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331", size = 92072, upload-time = "2024-07-29T01:10:08.203Z" }, ] [[package]] name = "sphinxcontrib-typer" version = "0.8.0" source = { editable = "." } dependencies = [ { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "sphinx", version = "9.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, { name = "sphinx", version = "9.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, { name = "typer" }, ] [package.optional-dependencies] html = [ { name = "selenium" }, { name = "webdriver-manager" }, ] pdf = [ { name = "cairosvg" }, { name = "lxml" }, ] png = [ { name = "pillow" }, { name = "selenium" }, { name = "webdriver-manager" }, ] [package.dev-dependencies] dev = [ { name = "beautifulsoup4" }, { name = "doc8" }, { name = "furo" }, { name = "ipdb" }, { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "numpy", version = "2.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "pre-commit" }, { name = "pypdf" }, { name = "pytest" }, { name = "pytest-cov" }, { name = "readme-renderer", extra = ["md"] }, { name = "ruff" }, { name = "scikit-image", version = "0.25.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "scikit-image", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "scikit-learn", version = "1.7.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "scikit-learn", version = "1.8.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "scipy", version = "1.17.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "sphinx-autobuild", version = "2024.10.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "sphinx-autobuild", version = "2025.8.25", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "sphinx-rtd-theme" }, { name = "tomlkit" }, ] [package.metadata] requires-dist = [ { name = "cairosvg", marker = "extra == 'pdf'", specifier = ">=2.7.0,<3.0.0" }, { name = "lxml", marker = "extra == 'pdf'", specifier = ">=4.2.0,<7.0.0" }, { name = "pillow", marker = "extra == 'png'", specifier = ">=8.0.0" }, { name = "selenium", marker = "extra == 'html'", specifier = ">=4.0.0,<5.0.0" }, { name = "selenium", marker = "extra == 'png'", specifier = ">=4.0.0,<5.0.0" }, { name = "sphinx", specifier = ">=6.0" }, { name = "typer", specifier = ">=0.22.0,<1.0.0" }, { name = "webdriver-manager", marker = "extra == 'html'", specifier = ">=3.0.0,<5.0.0" }, { name = "webdriver-manager", marker = "extra == 'png'", specifier = ">=3.0.0,<5.0.0" }, ] provides-extras = ["html", "pdf", "png"] [package.metadata.requires-dev] dev = [ { name = "beautifulsoup4", specifier = ">=4.13.5" }, { name = "doc8", specifier = ">=1.1.2" }, { name = "furo", specifier = ">=2025.7.19" }, { name = "ipdb", specifier = ">=0.13.13" }, { name = "numpy", specifier = ">=2.0.2" }, { name = "pre-commit", specifier = ">=4.3.0" }, { name = "pypdf", specifier = ">=6.1.0" }, { name = "pytest", specifier = ">=8.4.2" }, { name = "pytest-cov", specifier = ">=7.0.0" }, { name = "readme-renderer", extras = ["md"], specifier = ">=40.0" }, { name = "ruff", specifier = ">=0.13.1" }, { name = "scikit-image", specifier = ">=0.24.0" }, { name = "scikit-learn", specifier = ">=1.6.1" }, { name = "scipy", specifier = ">=1.13.1" }, { name = "sphinx-autobuild", specifier = ">=2024.10.3" }, { name = "sphinx-rtd-theme", specifier = ">=3.0.2" }, { name = "tomlkit", specifier = ">=0.13.3" }, ] [[package]] name = "stack-data" version = "0.6.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "asttokens" }, { name = "executing" }, { name = "pure-eval" }, ] sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload-time = "2023-09-30T13:58:05.479Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, ] [[package]] name = "starlette" version = "0.52.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c4/68/79977123bb7be889ad680d79a40f339082c1978b5cfcf62c2d8d196873ac/starlette-0.52.1.tar.gz", hash = "sha256:834edd1b0a23167694292e94f597773bc3f89f362be6effee198165a35d62933", size = 2653702, upload-time = "2026-01-18T13:34:11.062Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/81/0d/13d1d239a25cbfb19e740db83143e95c772a1fe10202dda4b76792b114dd/starlette-0.52.1-py3-none-any.whl", hash = "sha256:0029d43eb3d273bc4f83a08720b4912ea4b071087a3b48db01b7c839f7954d74", size = 74272, upload-time = "2026-01-18T13:34:09.188Z" }, ] [[package]] name = "stevedore" version = "5.6.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/96/5b/496f8abebd10c3301129abba7ddafd46c71d799a70c44ab080323987c4c9/stevedore-5.6.0.tar.gz", hash = "sha256:f22d15c6ead40c5bbfa9ca54aa7e7b4a07d59b36ae03ed12ced1a54cf0b51945", size = 516074, upload-time = "2025-11-20T10:06:07.264Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/f4/40/8561ce06dc46fd17242c7724ab25b257a2ac1b35f4ebf551b40ce6105cfa/stevedore-5.6.0-py3-none-any.whl", hash = "sha256:4a36dccefd7aeea0c70135526cecb7766c4c84c473b1af68db23d541b6dc1820", size = 54428, upload-time = "2025-11-20T10:06:05.946Z" }, ] [[package]] name = "threadpoolctl" version = "3.6.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274, upload-time = "2025-03-13T13:49:23.031Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" }, ] [[package]] name = "tifffile" version = "2025.5.10" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.11'", ] dependencies = [ { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/44/d0/18fed0fc0916578a4463f775b0fbd9c5fed2392152d039df2fb533bfdd5d/tifffile-2025.5.10.tar.gz", hash = "sha256:018335d34283aa3fd8c263bae5c3c2b661ebc45548fde31504016fcae7bf1103", size = 365290, upload-time = "2025-05-10T19:22:34.386Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/5d/06/bd0a6097da704a7a7c34a94cfd771c3ea3c2f405dd214e790d22c93f6be1/tifffile-2025.5.10-py3-none-any.whl", hash = "sha256:e37147123c0542d67bc37ba5cdd67e12ea6fbe6e86c52bee037a9eb6a064e5ad", size = 226533, upload-time = "2025-05-10T19:22:27.279Z" }, ] [[package]] name = "tifffile" version = "2026.1.28" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.12'", "python_full_version == '3.11.*'", ] dependencies = [ { name = "numpy", version = "2.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/94/32/38498d2a1a5d70f33f6c3909bbad48557c9a54b0e33a9307ff06b6d416ba/tifffile-2026.1.28.tar.gz", hash = "sha256:537ae6466a8bb555c336108bb1878d8319d52c9c738041d3349454dea6956e1c", size = 374675, upload-time = "2026-01-29T05:17:24.992Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/09/19/529b28ca338c5a88315e71e672badc85eef89460c248c4164f6ce058f8c7/tifffile-2026.1.28-py3-none-any.whl", hash = "sha256:45b08a19cf603dd99952eff54a61519626a1912e4e2a4d355f05938fe4a6e9fd", size = 233011, upload-time = "2026-01-29T05:17:23.078Z" }, ] [[package]] name = "tinycss2" version = "1.5.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "webencodings" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a3/ae/2ca4913e5c0f09781d75482874c3a95db9105462a92ddd303c7d285d3df2/tinycss2-1.5.1.tar.gz", hash = "sha256:d339d2b616ba90ccce58da8495a78f46e55d4d25f9fd71dfd526f07e7d53f957", size = 88195, upload-time = "2025-11-23T10:29:10.082Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/60/45/c7b5c3168458db837e8ceab06dc77824e18202679d0463f0e8f002143a97/tinycss2-1.5.1-py3-none-any.whl", hash = "sha256:3415ba0f5839c062696996998176c4a3751d18b7edaaeeb658c9ce21ec150661", size = 28404, upload-time = "2025-11-23T10:29:08.676Z" }, ] [[package]] name = "tomli" version = "2.4.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/82/30/31573e9457673ab10aa432461bee537ce6cef177667deca369efb79df071/tomli-2.4.0.tar.gz", hash = "sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c", size = 17477, upload-time = "2026-01-11T11:22:38.165Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/3c/d9/3dc2289e1f3b32eb19b9785b6a006b28ee99acb37d1d47f78d4c10e28bf8/tomli-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b5ef256a3fd497d4973c11bf142e9ed78b150d36f5773f1ca6088c230ffc5867", size = 153663, upload-time = "2026-01-11T11:21:45.27Z" }, { url = "https://files.pythonhosted.org/packages/51/32/ef9f6845e6b9ca392cd3f64f9ec185cc6f09f0a2df3db08cbe8809d1d435/tomli-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5572e41282d5268eb09a697c89a7bee84fae66511f87533a6f88bd2f7b652da9", size = 148469, upload-time = "2026-01-11T11:21:46.873Z" }, { url = "https://files.pythonhosted.org/packages/d6/c2/506e44cce89a8b1b1e047d64bd495c22c9f71f21e05f380f1a950dd9c217/tomli-2.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:551e321c6ba03b55676970b47cb1b73f14a0a4dce6a3e1a9458fd6d921d72e95", size = 236039, upload-time = "2026-01-11T11:21:48.503Z" }, { url = "https://files.pythonhosted.org/packages/b3/40/e1b65986dbc861b7e986e8ec394598187fa8aee85b1650b01dd925ca0be8/tomli-2.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e3f639a7a8f10069d0e15408c0b96a2a828cfdec6fca05296ebcdcc28ca7c76", size = 243007, upload-time = "2026-01-11T11:21:49.456Z" }, { url = "https://files.pythonhosted.org/packages/9c/6f/6e39ce66b58a5b7ae572a0f4352ff40c71e8573633deda43f6a379d56b3e/tomli-2.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1b168f2731796b045128c45982d3a4874057626da0e2ef1fdd722848b741361d", size = 240875, upload-time = "2026-01-11T11:21:50.755Z" }, { url = "https://files.pythonhosted.org/packages/aa/ad/cb089cb190487caa80204d503c7fd0f4d443f90b95cf4ef5cf5aa0f439b0/tomli-2.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:133e93646ec4300d651839d382d63edff11d8978be23da4cc106f5a18b7d0576", size = 246271, upload-time = "2026-01-11T11:21:51.81Z" }, { url = "https://files.pythonhosted.org/packages/0b/63/69125220e47fd7a3a27fd0de0c6398c89432fec41bc739823bcc66506af6/tomli-2.4.0-cp311-cp311-win32.whl", hash = "sha256:b6c78bdf37764092d369722d9946cb65b8767bfa4110f902a1b2542d8d173c8a", size = 96770, upload-time = "2026-01-11T11:21:52.647Z" }, { url = "https://files.pythonhosted.org/packages/1e/0d/a22bb6c83f83386b0008425a6cd1fa1c14b5f3dd4bad05e98cf3dbbf4a64/tomli-2.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:d3d1654e11d724760cdb37a3d7691f0be9db5fbdaef59c9f532aabf87006dbaa", size = 107626, upload-time = "2026-01-11T11:21:53.459Z" }, { url = "https://files.pythonhosted.org/packages/2f/6d/77be674a3485e75cacbf2ddba2b146911477bd887dda9d8c9dfb2f15e871/tomli-2.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:cae9c19ed12d4e8f3ebf46d1a75090e4c0dc16271c5bce1c833ac168f08fb614", size = 94842, upload-time = "2026-01-11T11:21:54.831Z" }, { url = "https://files.pythonhosted.org/packages/3c/43/7389a1869f2f26dba52404e1ef13b4784b6b37dac93bac53457e3ff24ca3/tomli-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:920b1de295e72887bafa3ad9f7a792f811847d57ea6b1215154030cf131f16b1", size = 154894, upload-time = "2026-01-11T11:21:56.07Z" }, { url = "https://files.pythonhosted.org/packages/e9/05/2f9bf110b5294132b2edf13fe6ca6ae456204f3d749f623307cbb7a946f2/tomli-2.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d6d9a4aee98fac3eab4952ad1d73aee87359452d1c086b5ceb43ed02ddb16b8", size = 149053, upload-time = "2026-01-11T11:21:57.467Z" }, { url = "https://files.pythonhosted.org/packages/e8/41/1eda3ca1abc6f6154a8db4d714a4d35c4ad90adc0bcf700657291593fbf3/tomli-2.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36b9d05b51e65b254ea6c2585b59d2c4cb91c8a3d91d0ed0f17591a29aaea54a", size = 243481, upload-time = "2026-01-11T11:21:58.661Z" }, { url = "https://files.pythonhosted.org/packages/d2/6d/02ff5ab6c8868b41e7d4b987ce2b5f6a51d3335a70aa144edd999e055a01/tomli-2.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1c8a885b370751837c029ef9bc014f27d80840e48bac415f3412e6593bbc18c1", size = 251720, upload-time = "2026-01-11T11:22:00.178Z" }, { url = "https://files.pythonhosted.org/packages/7b/57/0405c59a909c45d5b6f146107c6d997825aa87568b042042f7a9c0afed34/tomli-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8768715ffc41f0008abe25d808c20c3d990f42b6e2e58305d5da280ae7d1fa3b", size = 247014, upload-time = "2026-01-11T11:22:01.238Z" }, { url = "https://files.pythonhosted.org/packages/2c/0e/2e37568edd944b4165735687cbaf2fe3648129e440c26d02223672ee0630/tomli-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b438885858efd5be02a9a133caf5812b8776ee0c969fea02c45e8e3f296ba51", size = 251820, upload-time = "2026-01-11T11:22:02.727Z" }, { url = "https://files.pythonhosted.org/packages/5a/1c/ee3b707fdac82aeeb92d1a113f803cf6d0f37bdca0849cb489553e1f417a/tomli-2.4.0-cp312-cp312-win32.whl", hash = "sha256:0408e3de5ec77cc7f81960c362543cbbd91ef883e3138e81b729fc3eea5b9729", size = 97712, upload-time = "2026-01-11T11:22:03.777Z" }, { url = "https://files.pythonhosted.org/packages/69/13/c07a9177d0b3bab7913299b9278845fc6eaaca14a02667c6be0b0a2270c8/tomli-2.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:685306e2cc7da35be4ee914fd34ab801a6acacb061b6a7abca922aaf9ad368da", size = 108296, upload-time = "2026-01-11T11:22:04.86Z" }, { url = "https://files.pythonhosted.org/packages/18/27/e267a60bbeeee343bcc279bb9e8fbed0cbe224bc7b2a3dc2975f22809a09/tomli-2.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:5aa48d7c2356055feef06a43611fc401a07337d5b006be13a30f6c58f869e3c3", size = 94553, upload-time = "2026-01-11T11:22:05.854Z" }, { url = "https://files.pythonhosted.org/packages/34/91/7f65f9809f2936e1f4ce6268ae1903074563603b2a2bd969ebbda802744f/tomli-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84d081fbc252d1b6a982e1870660e7330fb8f90f676f6e78b052ad4e64714bf0", size = 154915, upload-time = "2026-01-11T11:22:06.703Z" }, { url = "https://files.pythonhosted.org/packages/20/aa/64dd73a5a849c2e8f216b755599c511badde80e91e9bc2271baa7b2cdbb1/tomli-2.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9a08144fa4cba33db5255f9b74f0b89888622109bd2776148f2597447f92a94e", size = 149038, upload-time = "2026-01-11T11:22:07.56Z" }, { url = "https://files.pythonhosted.org/packages/9e/8a/6d38870bd3d52c8d1505ce054469a73f73a0fe62c0eaf5dddf61447e32fa/tomli-2.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c73add4bb52a206fd0c0723432db123c0c75c280cbd67174dd9d2db228ebb1b4", size = 242245, upload-time = "2026-01-11T11:22:08.344Z" }, { url = "https://files.pythonhosted.org/packages/59/bb/8002fadefb64ab2669e5b977df3f5e444febea60e717e755b38bb7c41029/tomli-2.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fb2945cbe303b1419e2706e711b7113da57b7db31ee378d08712d678a34e51e", size = 250335, upload-time = "2026-01-11T11:22:09.951Z" }, { url = "https://files.pythonhosted.org/packages/a5/3d/4cdb6f791682b2ea916af2de96121b3cb1284d7c203d97d92d6003e91c8d/tomli-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bbb1b10aa643d973366dc2cb1ad94f99c1726a02343d43cbc011edbfac579e7c", size = 245962, upload-time = "2026-01-11T11:22:11.27Z" }, { url = "https://files.pythonhosted.org/packages/f2/4a/5f25789f9a460bd858ba9756ff52d0830d825b458e13f754952dd15fb7bb/tomli-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4cbcb367d44a1f0c2be408758b43e1ffb5308abe0ea222897d6bfc8e8281ef2f", size = 250396, upload-time = "2026-01-11T11:22:12.325Z" }, { url = "https://files.pythonhosted.org/packages/aa/2f/b73a36fea58dfa08e8b3a268750e6853a6aac2a349241a905ebd86f3047a/tomli-2.4.0-cp313-cp313-win32.whl", hash = "sha256:7d49c66a7d5e56ac959cb6fc583aff0651094ec071ba9ad43df785abc2320d86", size = 97530, upload-time = "2026-01-11T11:22:13.865Z" }, { url = "https://files.pythonhosted.org/packages/3b/af/ca18c134b5d75de7e8dc551c5234eaba2e8e951f6b30139599b53de9c187/tomli-2.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:3cf226acb51d8f1c394c1b310e0e0e61fecdd7adcb78d01e294ac297dd2e7f87", size = 108227, upload-time = "2026-01-11T11:22:15.224Z" }, { url = "https://files.pythonhosted.org/packages/22/c3/b386b832f209fee8073c8138ec50f27b4460db2fdae9ffe022df89a57f9b/tomli-2.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:d20b797a5c1ad80c516e41bc1fb0443ddb5006e9aaa7bda2d71978346aeb9132", size = 94748, upload-time = "2026-01-11T11:22:16.009Z" }, { url = "https://files.pythonhosted.org/packages/f3/c4/84047a97eb1004418bc10bdbcfebda209fca6338002eba2dc27cc6d13563/tomli-2.4.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:26ab906a1eb794cd4e103691daa23d95c6919cc2fa9160000ac02370cc9dd3f6", size = 154725, upload-time = "2026-01-11T11:22:17.269Z" }, { url = "https://files.pythonhosted.org/packages/a8/5d/d39038e646060b9d76274078cddf146ced86dc2b9e8bbf737ad5983609a0/tomli-2.4.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:20cedb4ee43278bc4f2fee6cb50daec836959aadaf948db5172e776dd3d993fc", size = 148901, upload-time = "2026-01-11T11:22:18.287Z" }, { url = "https://files.pythonhosted.org/packages/73/e5/383be1724cb30f4ce44983d249645684a48c435e1cd4f8b5cded8a816d3c/tomli-2.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:39b0b5d1b6dd03684b3fb276407ebed7090bbec989fa55838c98560c01113b66", size = 243375, upload-time = "2026-01-11T11:22:19.154Z" }, { url = "https://files.pythonhosted.org/packages/31/f0/bea80c17971c8d16d3cc109dc3585b0f2ce1036b5f4a8a183789023574f2/tomli-2.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a26d7ff68dfdb9f87a016ecfd1e1c2bacbe3108f4e0f8bcd2228ef9a766c787d", size = 250639, upload-time = "2026-01-11T11:22:20.168Z" }, { url = "https://files.pythonhosted.org/packages/2c/8f/2853c36abbb7608e3f945d8a74e32ed3a74ee3a1f468f1ffc7d1cb3abba6/tomli-2.4.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:20ffd184fb1df76a66e34bd1b36b4a4641bd2b82954befa32fe8163e79f1a702", size = 246897, upload-time = "2026-01-11T11:22:21.544Z" }, { url = "https://files.pythonhosted.org/packages/49/f0/6c05e3196ed5337b9fe7ea003e95fd3819a840b7a0f2bf5a408ef1dad8ed/tomli-2.4.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:75c2f8bbddf170e8effc98f5e9084a8751f8174ea6ccf4fca5398436e0320bc8", size = 254697, upload-time = "2026-01-11T11:22:23.058Z" }, { url = "https://files.pythonhosted.org/packages/f3/f5/2922ef29c9f2951883525def7429967fc4d8208494e5ab524234f06b688b/tomli-2.4.0-cp314-cp314-win32.whl", hash = "sha256:31d556d079d72db7c584c0627ff3a24c5d3fb4f730221d3444f3efb1b2514776", size = 98567, upload-time = "2026-01-11T11:22:24.033Z" }, { url = "https://files.pythonhosted.org/packages/7b/31/22b52e2e06dd2a5fdbc3ee73226d763b184ff21fc24e20316a44ccc4d96b/tomli-2.4.0-cp314-cp314-win_amd64.whl", hash = "sha256:43e685b9b2341681907759cf3a04e14d7104b3580f808cfde1dfdb60ada85475", size = 108556, upload-time = "2026-01-11T11:22:25.378Z" }, { url = "https://files.pythonhosted.org/packages/48/3d/5058dff3255a3d01b705413f64f4306a141a8fd7a251e5a495e3f192a998/tomli-2.4.0-cp314-cp314-win_arm64.whl", hash = "sha256:3d895d56bd3f82ddd6faaff993c275efc2ff38e52322ea264122d72729dca2b2", size = 96014, upload-time = "2026-01-11T11:22:26.138Z" }, { url = "https://files.pythonhosted.org/packages/b8/4e/75dab8586e268424202d3a1997ef6014919c941b50642a1682df43204c22/tomli-2.4.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:5b5807f3999fb66776dbce568cc9a828544244a8eb84b84b9bafc080c99597b9", size = 163339, upload-time = "2026-01-11T11:22:27.143Z" }, { url = "https://files.pythonhosted.org/packages/06/e3/b904d9ab1016829a776d97f163f183a48be6a4deb87304d1e0116a349519/tomli-2.4.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c084ad935abe686bd9c898e62a02a19abfc9760b5a79bc29644463eaf2840cb0", size = 159490, upload-time = "2026-01-11T11:22:28.399Z" }, { url = "https://files.pythonhosted.org/packages/e3/5a/fc3622c8b1ad823e8ea98a35e3c632ee316d48f66f80f9708ceb4f2a0322/tomli-2.4.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f2e3955efea4d1cfbcb87bc321e00dc08d2bcb737fd1d5e398af111d86db5df", size = 269398, upload-time = "2026-01-11T11:22:29.345Z" }, { url = "https://files.pythonhosted.org/packages/fd/33/62bd6152c8bdd4c305ad9faca48f51d3acb2df1f8791b1477d46ff86e7f8/tomli-2.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e0fe8a0b8312acf3a88077a0802565cb09ee34107813bba1c7cd591fa6cfc8d", size = 276515, upload-time = "2026-01-11T11:22:30.327Z" }, { url = "https://files.pythonhosted.org/packages/4b/ff/ae53619499f5235ee4211e62a8d7982ba9e439a0fb4f2f351a93d67c1dd2/tomli-2.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:413540dce94673591859c4c6f794dfeaa845e98bf35d72ed59636f869ef9f86f", size = 273806, upload-time = "2026-01-11T11:22:32.56Z" }, { url = "https://files.pythonhosted.org/packages/47/71/cbca7787fa68d4d0a9f7072821980b39fbb1b6faeb5f5cf02f4a5559fa28/tomli-2.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0dc56fef0e2c1c470aeac5b6ca8cc7b640bb93e92d9803ddaf9ea03e198f5b0b", size = 281340, upload-time = "2026-01-11T11:22:33.505Z" }, { url = "https://files.pythonhosted.org/packages/f5/00/d595c120963ad42474cf6ee7771ad0d0e8a49d0f01e29576ee9195d9ecdf/tomli-2.4.0-cp314-cp314t-win32.whl", hash = "sha256:d878f2a6707cc9d53a1be1414bbb419e629c3d6e67f69230217bb663e76b5087", size = 108106, upload-time = "2026-01-11T11:22:34.451Z" }, { url = "https://files.pythonhosted.org/packages/de/69/9aa0c6a505c2f80e519b43764f8b4ba93b5a0bbd2d9a9de6e2b24271b9a5/tomli-2.4.0-cp314-cp314t-win_amd64.whl", hash = "sha256:2add28aacc7425117ff6364fe9e06a183bb0251b03f986df0e78e974047571fd", size = 120504, upload-time = "2026-01-11T11:22:35.764Z" }, { url = "https://files.pythonhosted.org/packages/b3/9f/f1668c281c58cfae01482f7114a4b88d345e4c140386241a1a24dcc9e7bc/tomli-2.4.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2b1e3b80e1d5e52e40e9b924ec43d81570f0e7d09d11081b797bc4692765a3d4", size = 99561, upload-time = "2026-01-11T11:22:36.624Z" }, { url = "https://files.pythonhosted.org/packages/23/d1/136eb2cb77520a31e1f64cbae9d33ec6df0d78bdf4160398e86eec8a8754/tomli-2.4.0-py3-none-any.whl", hash = "sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a", size = 14477, upload-time = "2026-01-11T11:22:37.446Z" }, ] [[package]] name = "tomlkit" version = "0.14.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/c3/af/14b24e41977adb296d6bd1fb59402cf7d60ce364f90c890bd2ec65c43b5a/tomlkit-0.14.0.tar.gz", hash = "sha256:cf00efca415dbd57575befb1f6634c4f42d2d87dbba376128adb42c121b87064", size = 187167, upload-time = "2026-01-13T01:14:53.304Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/b5/11/87d6d29fb5d237229d67973a6c9e06e048f01cf4994dee194ab0ea841814/tomlkit-0.14.0-py3-none-any.whl", hash = "sha256:592064ed85b40fa213469f81ac584f67a4f2992509a7c3ea2d632208623a3680", size = 39310, upload-time = "2026-01-13T01:14:51.965Z" }, ] [[package]] name = "traitlets" version = "5.14.3" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload-time = "2024-04-19T11:11:49.746Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, ] [[package]] name = "trio" version = "0.32.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, { name = "cffi", marker = "implementation_name != 'pypy' and os_name == 'nt'" }, { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "idna" }, { name = "outcome" }, { name = "sniffio" }, { name = "sortedcontainers" }, ] sdist = { url = "https://files.pythonhosted.org/packages/d8/ce/0041ddd9160aac0031bcf5ab786c7640d795c797e67c438e15cfedf815c8/trio-0.32.0.tar.gz", hash = "sha256:150f29ec923bcd51231e1d4c71c7006e65247d68759dd1c19af4ea815a25806b", size = 605323, upload-time = "2025-10-31T07:18:17.466Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/41/bf/945d527ff706233636c73880b22c7c953f3faeb9d6c7e2e85bfbfd0134a0/trio-0.32.0-py3-none-any.whl", hash = "sha256:4ab65984ef8370b79a76659ec87aa3a30c5c7c83ff250b4de88c29a8ab6123c5", size = 512030, upload-time = "2025-10-31T07:18:15.885Z" }, ] [[package]] name = "trio-typing" version = "0.10.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "async-generator" }, { name = "importlib-metadata" }, { name = "mypy-extensions" }, { name = "packaging" }, { name = "trio" }, { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/b5/74/a87aafa40ec3a37089148b859892cbe2eef08d132c816d58a60459be5337/trio-typing-0.10.0.tar.gz", hash = "sha256:065ee684296d52a8ab0e2374666301aec36ee5747ac0e7a61f230250f8907ac3", size = 38747, upload-time = "2023-12-01T02:54:55.508Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/89/ff/9bd795273eb14fac7f6a59d16cc8c4d0948a619a1193d375437c7f50f3eb/trio_typing-0.10.0-py3-none-any.whl", hash = "sha256:6d0e7ec9d837a2fe03591031a172533fbf4a1a95baf369edebfc51d5a49f0264", size = 42224, upload-time = "2023-12-01T02:54:54.1Z" }, ] [[package]] name = "trio-websocket" version = "0.12.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "outcome" }, { name = "trio" }, { name = "wsproto" }, ] sdist = { url = "https://files.pythonhosted.org/packages/d1/3c/8b4358e81f2f2cfe71b66a267f023a91db20a817b9425dd964873796980a/trio_websocket-0.12.2.tar.gz", hash = "sha256:22c72c436f3d1e264d0910a3951934798dcc5b00ae56fc4ee079d46c7cf20fae", size = 33549, upload-time = "2025-02-25T05:16:58.947Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/c7/19/eb640a397bba49ba49ef9dbe2e7e5c04202ba045b6ce2ec36e9cadc51e04/trio_websocket-0.12.2-py3-none-any.whl", hash = "sha256:df605665f1db533f4a386c94525870851096a223adcb97f72a07e8b4beba45b6", size = 21221, upload-time = "2025-02-25T05:16:57.545Z" }, ] [[package]] name = "typer" version = "0.23.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-doc" }, { name = "click" }, { name = "rich" }, { name = "shellingham" }, ] sdist = { url = "https://files.pythonhosted.org/packages/7e/e6/44e073787aa57cd71c151f44855232feb0f748428fd5242d7366e3c4ae8b/typer-0.23.0.tar.gz", hash = "sha256:d8378833e47ada5d3d093fa20c4c63427cc4e27127f6b349a6c359463087d8cc", size = 120181, upload-time = "2026-02-11T15:22:18.637Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/7a/ed/d6fca788b51d0d4640c4bc82d0e85bad4b49809bca36bf4af01b4dcb66a7/typer-0.23.0-py3-none-any.whl", hash = "sha256:79f4bc262b6c37872091072a3cb7cb6d7d79ee98c0c658b4364bdcde3c42c913", size = 56668, upload-time = "2026-02-11T15:22:21.075Z" }, ] [[package]] name = "types-certifi" version = "2021.10.8.3" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/52/68/943c3aeaf14624712a0357c4a67814dba5cea36d194f5c764dad7959a00c/types-certifi-2021.10.8.3.tar.gz", hash = "sha256:72cf7798d165bc0b76e1c10dd1ea3097c7063c42c21d664523b928e88b554a4f", size = 2095, upload-time = "2022-06-09T15:19:05.244Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/b5/63/2463d89481e811f007b0e1cd0a91e52e141b47f9de724d20db7b861dcfec/types_certifi-2021.10.8.3-py3-none-any.whl", hash = "sha256:b2d1e325e69f71f7c78e5943d410e650b4707bb0ef32e4ddf3da37f54176e88a", size = 2136, upload-time = "2022-06-09T15:19:03.127Z" }, ] [[package]] name = "types-urllib3" version = "1.26.25.14" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/73/de/b9d7a68ad39092368fb21dd6194b362b98a1daeea5dcfef5e1adb5031c7e/types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f", size = 11239, upload-time = "2023-07-20T15:19:31.307Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/11/7b/3fc711b2efea5e85a7a0bbfe269ea944aa767bbba5ec52f9ee45d362ccf3/types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e", size = 15377, upload-time = "2023-07-20T15:19:30.379Z" }, ] [[package]] name = "typing-extensions" version = "4.15.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, ] [[package]] name = "urllib3" version = "2.6.3" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, ] [package.optional-dependencies] socks = [ { name = "pysocks" }, ] [[package]] name = "uvicorn" version = "0.40.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, { name = "h11" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c3/d1/8f3c683c9561a4e6689dd3b1d345c815f10f86acd044ee1fb9a4dcd0b8c5/uvicorn-0.40.0.tar.gz", hash = "sha256:839676675e87e73694518b5574fd0f24c9d97b46bea16df7b8c05ea1a51071ea", size = 81761, upload-time = "2025-12-21T14:16:22.45Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/3d/d8/2083a1daa7439a66f3a48589a57d576aa117726762618f6bb09fe3798796/uvicorn-0.40.0-py3-none-any.whl", hash = "sha256:c6c8f55bc8bf13eb6fa9ff87ad62308bbbc33d0b67f84293151efe87e0d5f2ee", size = 68502, upload-time = "2025-12-21T14:16:21.041Z" }, ] [[package]] name = "virtualenv" version = "20.36.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "distlib" }, { name = "filelock" }, { name = "platformdirs" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/aa/a3/4d310fa5f00863544e1d0f4de93bddec248499ccf97d4791bc3122c9d4f3/virtualenv-20.36.1.tar.gz", hash = "sha256:8befb5c81842c641f8ee658481e42641c68b5eab3521d8e092d18320902466ba", size = 6032239, upload-time = "2026-01-09T18:21:01.296Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/6a/2a/dc2228b2888f51192c7dc766106cd475f1b768c10caaf9727659726f7391/virtualenv-20.36.1-py3-none-any.whl", hash = "sha256:575a8d6b124ef88f6f51d56d656132389f961062a9177016a50e4f507bbcc19f", size = 6008258, upload-time = "2026-01-09T18:20:59.425Z" }, ] [[package]] name = "watchfiles" version = "1.1.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c2/c9/8869df9b2a2d6c59d79220a4db37679e74f807c559ffe5265e08b227a210/watchfiles-1.1.1.tar.gz", hash = "sha256:a173cb5c16c4f40ab19cecf48a534c409f7ea983ab8fed0741304a1c0a31b3f2", size = 94440, upload-time = "2025-10-14T15:06:21.08Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/a7/1a/206e8cf2dd86fddf939165a57b4df61607a1e0add2785f170a3f616b7d9f/watchfiles-1.1.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:eef58232d32daf2ac67f42dea51a2c80f0d03379075d44a587051e63cc2e368c", size = 407318, upload-time = "2025-10-14T15:04:18.753Z" }, { url = "https://files.pythonhosted.org/packages/b3/0f/abaf5262b9c496b5dad4ed3c0e799cbecb1f8ea512ecb6ddd46646a9fca3/watchfiles-1.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:03fa0f5237118a0c5e496185cafa92878568b652a2e9a9382a5151b1a0380a43", size = 394478, upload-time = "2025-10-14T15:04:20.297Z" }, { url = "https://files.pythonhosted.org/packages/b1/04/9cc0ba88697b34b755371f5ace8d3a4d9a15719c07bdc7bd13d7d8c6a341/watchfiles-1.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ca65483439f9c791897f7db49202301deb6e15fe9f8fe2fed555bf986d10c31", size = 449894, upload-time = "2025-10-14T15:04:21.527Z" }, { url = "https://files.pythonhosted.org/packages/d2/9c/eda4615863cd8621e89aed4df680d8c3ec3da6a4cf1da113c17decd87c7f/watchfiles-1.1.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f0ab1c1af0cb38e3f598244c17919fb1a84d1629cc08355b0074b6d7f53138ac", size = 459065, upload-time = "2025-10-14T15:04:22.795Z" }, { url = "https://files.pythonhosted.org/packages/84/13/f28b3f340157d03cbc8197629bc109d1098764abe1e60874622a0be5c112/watchfiles-1.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bc570d6c01c206c46deb6e935a260be44f186a2f05179f52f7fcd2be086a94d", size = 488377, upload-time = "2025-10-14T15:04:24.138Z" }, { url = "https://files.pythonhosted.org/packages/86/93/cfa597fa9389e122488f7ffdbd6db505b3b915ca7435ecd7542e855898c2/watchfiles-1.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e84087b432b6ac94778de547e08611266f1f8ffad28c0ee4c82e028b0fc5966d", size = 595837, upload-time = "2025-10-14T15:04:25.057Z" }, { url = "https://files.pythonhosted.org/packages/57/1e/68c1ed5652b48d89fc24d6af905d88ee4f82fa8bc491e2666004e307ded1/watchfiles-1.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:620bae625f4cb18427b1bb1a2d9426dc0dd5a5ba74c7c2cdb9de405f7b129863", size = 473456, upload-time = "2025-10-14T15:04:26.497Z" }, { url = "https://files.pythonhosted.org/packages/d5/dc/1a680b7458ffa3b14bb64878112aefc8f2e4f73c5af763cbf0bd43100658/watchfiles-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:544364b2b51a9b0c7000a4b4b02f90e9423d97fbbf7e06689236443ebcad81ab", size = 455614, upload-time = "2025-10-14T15:04:27.539Z" }, { url = "https://files.pythonhosted.org/packages/61/a5/3d782a666512e01eaa6541a72ebac1d3aae191ff4a31274a66b8dd85760c/watchfiles-1.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bbe1ef33d45bc71cf21364df962af171f96ecaeca06bd9e3d0b583efb12aec82", size = 630690, upload-time = "2025-10-14T15:04:28.495Z" }, { url = "https://files.pythonhosted.org/packages/9b/73/bb5f38590e34687b2a9c47a244aa4dd50c56a825969c92c9c5fc7387cea1/watchfiles-1.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1a0bb430adb19ef49389e1ad368450193a90038b5b752f4ac089ec6942c4dff4", size = 622459, upload-time = "2025-10-14T15:04:29.491Z" }, { url = "https://files.pythonhosted.org/packages/f1/ac/c9bb0ec696e07a20bd58af5399aeadaef195fb2c73d26baf55180fe4a942/watchfiles-1.1.1-cp310-cp310-win32.whl", hash = "sha256:3f6d37644155fb5beca5378feb8c1708d5783145f2a0f1c4d5a061a210254844", size = 272663, upload-time = "2025-10-14T15:04:30.435Z" }, { url = "https://files.pythonhosted.org/packages/11/a0/a60c5a7c2ec59fa062d9a9c61d02e3b6abd94d32aac2d8344c4bdd033326/watchfiles-1.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:a36d8efe0f290835fd0f33da35042a1bb5dc0e83cbc092dcf69bce442579e88e", size = 287453, upload-time = "2025-10-14T15:04:31.53Z" }, { url = "https://files.pythonhosted.org/packages/1f/f8/2c5f479fb531ce2f0564eda479faecf253d886b1ab3630a39b7bf7362d46/watchfiles-1.1.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:f57b396167a2565a4e8b5e56a5a1c537571733992b226f4f1197d79e94cf0ae5", size = 406529, upload-time = "2025-10-14T15:04:32.899Z" }, { url = "https://files.pythonhosted.org/packages/fe/cd/f515660b1f32f65df671ddf6f85bfaca621aee177712874dc30a97397977/watchfiles-1.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:421e29339983e1bebc281fab40d812742268ad057db4aee8c4d2bce0af43b741", size = 394384, upload-time = "2025-10-14T15:04:33.761Z" }, { url = "https://files.pythonhosted.org/packages/7b/c3/28b7dc99733eab43fca2d10f55c86e03bd6ab11ca31b802abac26b23d161/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e43d39a741e972bab5d8100b5cdacf69db64e34eb19b6e9af162bccf63c5cc6", size = 448789, upload-time = "2025-10-14T15:04:34.679Z" }, { url = "https://files.pythonhosted.org/packages/4a/24/33e71113b320030011c8e4316ccca04194bf0cbbaeee207f00cbc7d6b9f5/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f537afb3276d12814082a2e9b242bdcf416c2e8fd9f799a737990a1dbe906e5b", size = 460521, upload-time = "2025-10-14T15:04:35.963Z" }, { url = "https://files.pythonhosted.org/packages/f4/c3/3c9a55f255aa57b91579ae9e98c88704955fa9dac3e5614fb378291155df/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2cd9e04277e756a2e2d2543d65d1e2166d6fd4c9b183f8808634fda23f17b14", size = 488722, upload-time = "2025-10-14T15:04:37.091Z" }, { url = "https://files.pythonhosted.org/packages/49/36/506447b73eb46c120169dc1717fe2eff07c234bb3232a7200b5f5bd816e9/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5f3f58818dc0b07f7d9aa7fe9eb1037aecb9700e63e1f6acfed13e9fef648f5d", size = 596088, upload-time = "2025-10-14T15:04:38.39Z" }, { url = "https://files.pythonhosted.org/packages/82/ab/5f39e752a9838ec4d52e9b87c1e80f1ee3ccdbe92e183c15b6577ab9de16/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bb9f66367023ae783551042d31b1d7fd422e8289eedd91f26754a66f44d5cff", size = 472923, upload-time = "2025-10-14T15:04:39.666Z" }, { url = "https://files.pythonhosted.org/packages/af/b9/a419292f05e302dea372fa7e6fda5178a92998411f8581b9830d28fb9edb/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aebfd0861a83e6c3d1110b78ad54704486555246e542be3e2bb94195eabb2606", size = 456080, upload-time = "2025-10-14T15:04:40.643Z" }, { url = "https://files.pythonhosted.org/packages/b0/c3/d5932fd62bde1a30c36e10c409dc5d54506726f08cb3e1d8d0ba5e2bc8db/watchfiles-1.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5fac835b4ab3c6487b5dbad78c4b3724e26bcc468e886f8ba8cc4306f68f6701", size = 629432, upload-time = "2025-10-14T15:04:41.789Z" }, { url = "https://files.pythonhosted.org/packages/f7/77/16bddd9779fafb795f1a94319dc965209c5641db5bf1edbbccace6d1b3c0/watchfiles-1.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:399600947b170270e80134ac854e21b3ccdefa11a9529a3decc1327088180f10", size = 623046, upload-time = "2025-10-14T15:04:42.718Z" }, { url = "https://files.pythonhosted.org/packages/46/ef/f2ecb9a0f342b4bfad13a2787155c6ee7ce792140eac63a34676a2feeef2/watchfiles-1.1.1-cp311-cp311-win32.whl", hash = "sha256:de6da501c883f58ad50db3a32ad397b09ad29865b5f26f64c24d3e3281685849", size = 271473, upload-time = "2025-10-14T15:04:43.624Z" }, { url = "https://files.pythonhosted.org/packages/94/bc/f42d71125f19731ea435c3948cad148d31a64fccde3867e5ba4edee901f9/watchfiles-1.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:35c53bd62a0b885bf653ebf6b700d1bf05debb78ad9292cf2a942b23513dc4c4", size = 287598, upload-time = "2025-10-14T15:04:44.516Z" }, { url = "https://files.pythonhosted.org/packages/57/c9/a30f897351f95bbbfb6abcadafbaca711ce1162f4db95fc908c98a9165f3/watchfiles-1.1.1-cp311-cp311-win_arm64.whl", hash = "sha256:57ca5281a8b5e27593cb7d82c2ac927ad88a96ed406aa446f6344e4328208e9e", size = 277210, upload-time = "2025-10-14T15:04:45.883Z" }, { url = "https://files.pythonhosted.org/packages/74/d5/f039e7e3c639d9b1d09b07ea412a6806d38123f0508e5f9b48a87b0a76cc/watchfiles-1.1.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:8c89f9f2f740a6b7dcc753140dd5e1ab9215966f7a3530d0c0705c83b401bd7d", size = 404745, upload-time = "2025-10-14T15:04:46.731Z" }, { url = "https://files.pythonhosted.org/packages/a5/96/a881a13aa1349827490dab2d363c8039527060cfcc2c92cc6d13d1b1049e/watchfiles-1.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bd404be08018c37350f0d6e34676bd1e2889990117a2b90070b3007f172d0610", size = 391769, upload-time = "2025-10-14T15:04:48.003Z" }, { url = "https://files.pythonhosted.org/packages/4b/5b/d3b460364aeb8da471c1989238ea0e56bec24b6042a68046adf3d9ddb01c/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8526e8f916bb5b9a0a777c8317c23ce65de259422bba5b31325a6fa6029d33af", size = 449374, upload-time = "2025-10-14T15:04:49.179Z" }, { url = "https://files.pythonhosted.org/packages/b9/44/5769cb62d4ed055cb17417c0a109a92f007114a4e07f30812a73a4efdb11/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2edc3553362b1c38d9f06242416a5d8e9fe235c204a4072e988ce2e5bb1f69f6", size = 459485, upload-time = "2025-10-14T15:04:50.155Z" }, { url = "https://files.pythonhosted.org/packages/19/0c/286b6301ded2eccd4ffd0041a1b726afda999926cf720aab63adb68a1e36/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30f7da3fb3f2844259cba4720c3fc7138eb0f7b659c38f3bfa65084c7fc7abce", size = 488813, upload-time = "2025-10-14T15:04:51.059Z" }, { url = "https://files.pythonhosted.org/packages/c7/2b/8530ed41112dd4a22f4dcfdb5ccf6a1baad1ff6eed8dc5a5f09e7e8c41c7/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8979280bdafff686ba5e4d8f97840f929a87ed9cdf133cbbd42f7766774d2aa", size = 594816, upload-time = "2025-10-14T15:04:52.031Z" }, { url = "https://files.pythonhosted.org/packages/ce/d2/f5f9fb49489f184f18470d4f99f4e862a4b3e9ac2865688eb2099e3d837a/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dcc5c24523771db3a294c77d94771abcfcb82a0e0ee8efd910c37c59ec1b31bb", size = 475186, upload-time = "2025-10-14T15:04:53.064Z" }, { url = "https://files.pythonhosted.org/packages/cf/68/5707da262a119fb06fbe214d82dd1fe4a6f4af32d2d14de368d0349eb52a/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db5d7ae38ff20153d542460752ff397fcf5c96090c1230803713cf3147a6803", size = 456812, upload-time = "2025-10-14T15:04:55.174Z" }, { url = "https://files.pythonhosted.org/packages/66/ab/3cbb8756323e8f9b6f9acb9ef4ec26d42b2109bce830cc1f3468df20511d/watchfiles-1.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:28475ddbde92df1874b6c5c8aaeb24ad5be47a11f87cde5a28ef3835932e3e94", size = 630196, upload-time = "2025-10-14T15:04:56.22Z" }, { url = "https://files.pythonhosted.org/packages/78/46/7152ec29b8335f80167928944a94955015a345440f524d2dfe63fc2f437b/watchfiles-1.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:36193ed342f5b9842edd3532729a2ad55c4160ffcfa3700e0d54be496b70dd43", size = 622657, upload-time = "2025-10-14T15:04:57.521Z" }, { url = "https://files.pythonhosted.org/packages/0a/bf/95895e78dd75efe9a7f31733607f384b42eb5feb54bd2eb6ed57cc2e94f4/watchfiles-1.1.1-cp312-cp312-win32.whl", hash = "sha256:859e43a1951717cc8de7f4c77674a6d389b106361585951d9e69572823f311d9", size = 272042, upload-time = "2025-10-14T15:04:59.046Z" }, { url = "https://files.pythonhosted.org/packages/87/0a/90eb755f568de2688cb220171c4191df932232c20946966c27a59c400850/watchfiles-1.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:91d4c9a823a8c987cce8fa2690923b069966dabb196dd8d137ea2cede885fde9", size = 288410, upload-time = "2025-10-14T15:05:00.081Z" }, { url = "https://files.pythonhosted.org/packages/36/76/f322701530586922fbd6723c4f91ace21364924822a8772c549483abed13/watchfiles-1.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:a625815d4a2bdca61953dbba5a39d60164451ef34c88d751f6c368c3ea73d404", size = 278209, upload-time = "2025-10-14T15:05:01.168Z" }, { url = "https://files.pythonhosted.org/packages/bb/f4/f750b29225fe77139f7ae5de89d4949f5a99f934c65a1f1c0b248f26f747/watchfiles-1.1.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:130e4876309e8686a5e37dba7d5e9bc77e6ed908266996ca26572437a5271e18", size = 404321, upload-time = "2025-10-14T15:05:02.063Z" }, { url = "https://files.pythonhosted.org/packages/2b/f9/f07a295cde762644aa4c4bb0f88921d2d141af45e735b965fb2e87858328/watchfiles-1.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5f3bde70f157f84ece3765b42b4a52c6ac1a50334903c6eaf765362f6ccca88a", size = 391783, upload-time = "2025-10-14T15:05:03.052Z" }, { url = "https://files.pythonhosted.org/packages/bc/11/fc2502457e0bea39a5c958d86d2cb69e407a4d00b85735ca724bfa6e0d1a/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14e0b1fe858430fc0251737ef3824c54027bedb8c37c38114488b8e131cf8219", size = 449279, upload-time = "2025-10-14T15:05:04.004Z" }, { url = "https://files.pythonhosted.org/packages/e3/1f/d66bc15ea0b728df3ed96a539c777acfcad0eb78555ad9efcaa1274688f0/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f27db948078f3823a6bb3b465180db8ebecf26dd5dae6f6180bd87383b6b4428", size = 459405, upload-time = "2025-10-14T15:05:04.942Z" }, { url = "https://files.pythonhosted.org/packages/be/90/9f4a65c0aec3ccf032703e6db02d89a157462fbb2cf20dd415128251cac0/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:059098c3a429f62fc98e8ec62b982230ef2c8df68c79e826e37b895bc359a9c0", size = 488976, upload-time = "2025-10-14T15:05:05.905Z" }, { url = "https://files.pythonhosted.org/packages/37/57/ee347af605d867f712be7029bb94c8c071732a4b44792e3176fa3c612d39/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfb5862016acc9b869bb57284e6cb35fdf8e22fe59f7548858e2f971d045f150", size = 595506, upload-time = "2025-10-14T15:05:06.906Z" }, { url = "https://files.pythonhosted.org/packages/a8/78/cc5ab0b86c122047f75e8fc471c67a04dee395daf847d3e59381996c8707/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:319b27255aacd9923b8a276bb14d21a5f7ff82564c744235fc5eae58d95422ae", size = 474936, upload-time = "2025-10-14T15:05:07.906Z" }, { url = "https://files.pythonhosted.org/packages/62/da/def65b170a3815af7bd40a3e7010bf6ab53089ef1b75d05dd5385b87cf08/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c755367e51db90e75b19454b680903631d41f9e3607fbd941d296a020c2d752d", size = 456147, upload-time = "2025-10-14T15:05:09.138Z" }, { url = "https://files.pythonhosted.org/packages/57/99/da6573ba71166e82d288d4df0839128004c67d2778d3b566c138695f5c0b/watchfiles-1.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c22c776292a23bfc7237a98f791b9ad3144b02116ff10d820829ce62dff46d0b", size = 630007, upload-time = "2025-10-14T15:05:10.117Z" }, { url = "https://files.pythonhosted.org/packages/a8/51/7439c4dd39511368849eb1e53279cd3454b4a4dbace80bab88feeb83c6b5/watchfiles-1.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:3a476189be23c3686bc2f4321dd501cb329c0a0469e77b7b534ee10129ae6374", size = 622280, upload-time = "2025-10-14T15:05:11.146Z" }, { url = "https://files.pythonhosted.org/packages/95/9c/8ed97d4bba5db6fdcdb2b298d3898f2dd5c20f6b73aee04eabe56c59677e/watchfiles-1.1.1-cp313-cp313-win32.whl", hash = "sha256:bf0a91bfb5574a2f7fc223cf95eeea79abfefa404bf1ea5e339c0c1560ae99a0", size = 272056, upload-time = "2025-10-14T15:05:12.156Z" }, { url = "https://files.pythonhosted.org/packages/1f/f3/c14e28429f744a260d8ceae18bf58c1d5fa56b50d006a7a9f80e1882cb0d/watchfiles-1.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:52e06553899e11e8074503c8e716d574adeeb7e68913115c4b3653c53f9bae42", size = 288162, upload-time = "2025-10-14T15:05:13.208Z" }, { url = "https://files.pythonhosted.org/packages/dc/61/fe0e56c40d5cd29523e398d31153218718c5786b5e636d9ae8ae79453d27/watchfiles-1.1.1-cp313-cp313-win_arm64.whl", hash = "sha256:ac3cc5759570cd02662b15fbcd9d917f7ecd47efe0d6b40474eafd246f91ea18", size = 277909, upload-time = "2025-10-14T15:05:14.49Z" }, { url = "https://files.pythonhosted.org/packages/79/42/e0a7d749626f1e28c7108a99fb9bf524b501bbbeb9b261ceecde644d5a07/watchfiles-1.1.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:563b116874a9a7ce6f96f87cd0b94f7faf92d08d0021e837796f0a14318ef8da", size = 403389, upload-time = "2025-10-14T15:05:15.777Z" }, { url = "https://files.pythonhosted.org/packages/15/49/08732f90ce0fbbc13913f9f215c689cfc9ced345fb1bcd8829a50007cc8d/watchfiles-1.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3ad9fe1dae4ab4212d8c91e80b832425e24f421703b5a42ef2e4a1e215aff051", size = 389964, upload-time = "2025-10-14T15:05:16.85Z" }, { url = "https://files.pythonhosted.org/packages/27/0d/7c315d4bd5f2538910491a0393c56bf70d333d51bc5b34bee8e68e8cea19/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce70f96a46b894b36eba678f153f052967a0d06d5b5a19b336ab0dbbd029f73e", size = 448114, upload-time = "2025-10-14T15:05:17.876Z" }, { url = "https://files.pythonhosted.org/packages/c3/24/9e096de47a4d11bc4df41e9d1e61776393eac4cb6eb11b3e23315b78b2cc/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cb467c999c2eff23a6417e58d75e5828716f42ed8289fe6b77a7e5a91036ca70", size = 460264, upload-time = "2025-10-14T15:05:18.962Z" }, { url = "https://files.pythonhosted.org/packages/cc/0f/e8dea6375f1d3ba5fcb0b3583e2b493e77379834c74fd5a22d66d85d6540/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:836398932192dae4146c8f6f737d74baeac8b70ce14831a239bdb1ca882fc261", size = 487877, upload-time = "2025-10-14T15:05:20.094Z" }, { url = "https://files.pythonhosted.org/packages/ac/5b/df24cfc6424a12deb41503b64d42fbea6b8cb357ec62ca84a5a3476f654a/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:743185e7372b7bc7c389e1badcc606931a827112fbbd37f14c537320fca08620", size = 595176, upload-time = "2025-10-14T15:05:21.134Z" }, { url = "https://files.pythonhosted.org/packages/8f/b5/853b6757f7347de4e9b37e8cc3289283fb983cba1ab4d2d7144694871d9c/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:afaeff7696e0ad9f02cbb8f56365ff4686ab205fcf9c4c5b6fdfaaa16549dd04", size = 473577, upload-time = "2025-10-14T15:05:22.306Z" }, { url = "https://files.pythonhosted.org/packages/e1/f7/0a4467be0a56e80447c8529c9fce5b38eab4f513cb3d9bf82e7392a5696b/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f7eb7da0eb23aa2ba036d4f616d46906013a68caf61b7fdbe42fc8b25132e77", size = 455425, upload-time = "2025-10-14T15:05:23.348Z" }, { url = "https://files.pythonhosted.org/packages/8e/e0/82583485ea00137ddf69bc84a2db88bd92ab4a6e3c405e5fb878ead8d0e7/watchfiles-1.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:831a62658609f0e5c64178211c942ace999517f5770fe9436be4c2faeba0c0ef", size = 628826, upload-time = "2025-10-14T15:05:24.398Z" }, { url = "https://files.pythonhosted.org/packages/28/9a/a785356fccf9fae84c0cc90570f11702ae9571036fb25932f1242c82191c/watchfiles-1.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:f9a2ae5c91cecc9edd47e041a930490c31c3afb1f5e6d71de3dc671bfaca02bf", size = 622208, upload-time = "2025-10-14T15:05:25.45Z" }, { url = "https://files.pythonhosted.org/packages/c3/f4/0872229324ef69b2c3edec35e84bd57a1289e7d3fe74588048ed8947a323/watchfiles-1.1.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:d1715143123baeeaeadec0528bb7441103979a1d5f6fd0e1f915383fea7ea6d5", size = 404315, upload-time = "2025-10-14T15:05:26.501Z" }, { url = "https://files.pythonhosted.org/packages/7b/22/16d5331eaed1cb107b873f6ae1b69e9ced582fcf0c59a50cd84f403b1c32/watchfiles-1.1.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:39574d6370c4579d7f5d0ad940ce5b20db0e4117444e39b6d8f99db5676c52fd", size = 390869, upload-time = "2025-10-14T15:05:27.649Z" }, { url = "https://files.pythonhosted.org/packages/b2/7e/5643bfff5acb6539b18483128fdc0ef2cccc94a5b8fbda130c823e8ed636/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7365b92c2e69ee952902e8f70f3ba6360d0d596d9299d55d7d386df84b6941fb", size = 449919, upload-time = "2025-10-14T15:05:28.701Z" }, { url = "https://files.pythonhosted.org/packages/51/2e/c410993ba5025a9f9357c376f48976ef0e1b1aefb73b97a5ae01a5972755/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bfff9740c69c0e4ed32416f013f3c45e2ae42ccedd1167ef2d805c000b6c71a5", size = 460845, upload-time = "2025-10-14T15:05:30.064Z" }, { url = "https://files.pythonhosted.org/packages/8e/a4/2df3b404469122e8680f0fcd06079317e48db58a2da2950fb45020947734/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b27cf2eb1dda37b2089e3907d8ea92922b673c0c427886d4edc6b94d8dfe5db3", size = 489027, upload-time = "2025-10-14T15:05:31.064Z" }, { url = "https://files.pythonhosted.org/packages/ea/84/4587ba5b1f267167ee715b7f66e6382cca6938e0a4b870adad93e44747e6/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:526e86aced14a65a5b0ec50827c745597c782ff46b571dbfe46192ab9e0b3c33", size = 595615, upload-time = "2025-10-14T15:05:32.074Z" }, { url = "https://files.pythonhosted.org/packages/6a/0f/c6988c91d06e93cd0bb3d4a808bcf32375ca1904609835c3031799e3ecae/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04e78dd0b6352db95507fd8cb46f39d185cf8c74e4cf1e4fbad1d3df96faf510", size = 474836, upload-time = "2025-10-14T15:05:33.209Z" }, { url = "https://files.pythonhosted.org/packages/b4/36/ded8aebea91919485b7bbabbd14f5f359326cb5ec218cd67074d1e426d74/watchfiles-1.1.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c85794a4cfa094714fb9c08d4a218375b2b95b8ed1666e8677c349906246c05", size = 455099, upload-time = "2025-10-14T15:05:34.189Z" }, { url = "https://files.pythonhosted.org/packages/98/e0/8c9bdba88af756a2fce230dd365fab2baf927ba42cd47521ee7498fd5211/watchfiles-1.1.1-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:74d5012b7630714b66be7b7b7a78855ef7ad58e8650c73afc4c076a1f480a8d6", size = 630626, upload-time = "2025-10-14T15:05:35.216Z" }, { url = "https://files.pythonhosted.org/packages/2a/84/a95db05354bf2d19e438520d92a8ca475e578c647f78f53197f5a2f17aaf/watchfiles-1.1.1-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:8fbe85cb3201c7d380d3d0b90e63d520f15d6afe217165d7f98c9c649654db81", size = 622519, upload-time = "2025-10-14T15:05:36.259Z" }, { url = "https://files.pythonhosted.org/packages/1d/ce/d8acdc8de545de995c339be67711e474c77d643555a9bb74a9334252bd55/watchfiles-1.1.1-cp314-cp314-win32.whl", hash = "sha256:3fa0b59c92278b5a7800d3ee7733da9d096d4aabcfabb9a928918bd276ef9b9b", size = 272078, upload-time = "2025-10-14T15:05:37.63Z" }, { url = "https://files.pythonhosted.org/packages/c4/c9/a74487f72d0451524be827e8edec251da0cc1fcf111646a511ae752e1a3d/watchfiles-1.1.1-cp314-cp314-win_amd64.whl", hash = "sha256:c2047d0b6cea13b3316bdbafbfa0c4228ae593d995030fda39089d36e64fc03a", size = 287664, upload-time = "2025-10-14T15:05:38.95Z" }, { url = "https://files.pythonhosted.org/packages/df/b8/8ac000702cdd496cdce998c6f4ee0ca1f15977bba51bdf07d872ebdfc34c/watchfiles-1.1.1-cp314-cp314-win_arm64.whl", hash = "sha256:842178b126593addc05acf6fce960d28bc5fae7afbaa2c6c1b3a7b9460e5be02", size = 277154, upload-time = "2025-10-14T15:05:39.954Z" }, { url = "https://files.pythonhosted.org/packages/47/a8/e3af2184707c29f0f14b1963c0aace6529f9d1b8582d5b99f31bbf42f59e/watchfiles-1.1.1-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:88863fbbc1a7312972f1c511f202eb30866370ebb8493aef2812b9ff28156a21", size = 403820, upload-time = "2025-10-14T15:05:40.932Z" }, { url = "https://files.pythonhosted.org/packages/c0/ec/e47e307c2f4bd75f9f9e8afbe3876679b18e1bcec449beca132a1c5ffb2d/watchfiles-1.1.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:55c7475190662e202c08c6c0f4d9e345a29367438cf8e8037f3155e10a88d5a5", size = 390510, upload-time = "2025-10-14T15:05:41.945Z" }, { url = "https://files.pythonhosted.org/packages/d5/a0/ad235642118090f66e7b2f18fd5c42082418404a79205cdfca50b6309c13/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f53fa183d53a1d7a8852277c92b967ae99c2d4dcee2bfacff8868e6e30b15f7", size = 448408, upload-time = "2025-10-14T15:05:43.385Z" }, { url = "https://files.pythonhosted.org/packages/df/85/97fa10fd5ff3332ae17e7e40e20784e419e28521549780869f1413742e9d/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6aae418a8b323732fa89721d86f39ec8f092fc2af67f4217a2b07fd3e93c6101", size = 458968, upload-time = "2025-10-14T15:05:44.404Z" }, { url = "https://files.pythonhosted.org/packages/47/c2/9059c2e8966ea5ce678166617a7f75ecba6164375f3b288e50a40dc6d489/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f096076119da54a6080e8920cbdaac3dbee667eb91dcc5e5b78840b87415bd44", size = 488096, upload-time = "2025-10-14T15:05:45.398Z" }, { url = "https://files.pythonhosted.org/packages/94/44/d90a9ec8ac309bc26db808a13e7bfc0e4e78b6fc051078a554e132e80160/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00485f441d183717038ed2e887a7c868154f216877653121068107b227a2f64c", size = 596040, upload-time = "2025-10-14T15:05:46.502Z" }, { url = "https://files.pythonhosted.org/packages/95/68/4e3479b20ca305cfc561db3ed207a8a1c745ee32bf24f2026a129d0ddb6e/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a55f3e9e493158d7bfdb60a1165035f1cf7d320914e7b7ea83fe22c6023b58fc", size = 473847, upload-time = "2025-10-14T15:05:47.484Z" }, { url = "https://files.pythonhosted.org/packages/4f/55/2af26693fd15165c4ff7857e38330e1b61ab8c37d15dc79118cdba115b7a/watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c91ed27800188c2ae96d16e3149f199d62f86c7af5f5f4d2c61a3ed8cd3666c", size = 455072, upload-time = "2025-10-14T15:05:48.928Z" }, { url = "https://files.pythonhosted.org/packages/66/1d/d0d200b10c9311ec25d2273f8aad8c3ef7cc7ea11808022501811208a750/watchfiles-1.1.1-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:311ff15a0bae3714ffb603e6ba6dbfba4065ab60865d15a6ec544133bdb21099", size = 629104, upload-time = "2025-10-14T15:05:49.908Z" }, { url = "https://files.pythonhosted.org/packages/e3/bd/fa9bb053192491b3867ba07d2343d9f2252e00811567d30ae8d0f78136fe/watchfiles-1.1.1-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:a916a2932da8f8ab582f242c065f5c81bed3462849ca79ee357dd9551b0e9b01", size = 622112, upload-time = "2025-10-14T15:05:50.941Z" }, { url = "https://files.pythonhosted.org/packages/ba/4c/a888c91e2e326872fa4705095d64acd8aa2fb9c1f7b9bd0588f33850516c/watchfiles-1.1.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:17ef139237dfced9da49fb7f2232c86ca9421f666d78c264c7ffca6601d154c3", size = 409611, upload-time = "2025-10-14T15:06:05.809Z" }, { url = "https://files.pythonhosted.org/packages/1e/c7/5420d1943c8e3ce1a21c0a9330bcf7edafb6aa65d26b21dbb3267c9e8112/watchfiles-1.1.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:672b8adf25b1a0d35c96b5888b7b18699d27d4194bac8beeae75be4b7a3fc9b2", size = 396889, upload-time = "2025-10-14T15:06:07.035Z" }, { url = "https://files.pythonhosted.org/packages/0c/e5/0072cef3804ce8d3aaddbfe7788aadff6b3d3f98a286fdbee9fd74ca59a7/watchfiles-1.1.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77a13aea58bc2b90173bc69f2a90de8e282648939a00a602e1dc4ee23e26b66d", size = 451616, upload-time = "2025-10-14T15:06:08.072Z" }, { url = "https://files.pythonhosted.org/packages/83/4e/b87b71cbdfad81ad7e83358b3e447fedd281b880a03d64a760fe0a11fc2e/watchfiles-1.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b495de0bb386df6a12b18335a0285dda90260f51bdb505503c02bcd1ce27a8b", size = 458413, upload-time = "2025-10-14T15:06:09.209Z" }, { url = "https://files.pythonhosted.org/packages/d3/8e/e500f8b0b77be4ff753ac94dc06b33d8f0d839377fee1b78e8c8d8f031bf/watchfiles-1.1.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:db476ab59b6765134de1d4fe96a1a9c96ddf091683599be0f26147ea1b2e4b88", size = 408250, upload-time = "2025-10-14T15:06:10.264Z" }, { url = "https://files.pythonhosted.org/packages/bd/95/615e72cd27b85b61eec764a5ca51bd94d40b5adea5ff47567d9ebc4d275a/watchfiles-1.1.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:89eef07eee5e9d1fda06e38822ad167a044153457e6fd997f8a858ab7564a336", size = 396117, upload-time = "2025-10-14T15:06:11.28Z" }, { url = "https://files.pythonhosted.org/packages/c9/81/e7fe958ce8a7fb5c73cc9fb07f5aeaf755e6aa72498c57d760af760c91f8/watchfiles-1.1.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce19e06cbda693e9e7686358af9cd6f5d61312ab8b00488bc36f5aabbaf77e24", size = 450493, upload-time = "2025-10-14T15:06:12.321Z" }, { url = "https://files.pythonhosted.org/packages/6e/d4/ed38dd3b1767193de971e694aa544356e63353c33a85d948166b5ff58b9e/watchfiles-1.1.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e6f39af2eab0118338902798b5aa6664f46ff66bc0280de76fca67a7f262a49", size = 457546, upload-time = "2025-10-14T15:06:13.372Z" }, ] [[package]] name = "wcwidth" version = "0.6.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/35/a2/8e3becb46433538a38726c948d3399905a4c7cabd0df578ede5dc51f0ec2/wcwidth-0.6.0.tar.gz", hash = "sha256:cdc4e4262d6ef9a1a57e018384cbeb1208d8abbc64176027e2c2455c81313159", size = 159684, upload-time = "2026-02-06T19:19:40.919Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/68/5a/199c59e0a824a3db2b89c5d2dade7ab5f9624dbf6448dc291b46d5ec94d3/wcwidth-0.6.0-py3-none-any.whl", hash = "sha256:1a3a1e510b553315f8e146c54764f4fb6264ffad731b3d78088cdb1478ffbdad", size = 94189, upload-time = "2026-02-06T19:19:39.646Z" }, ] [[package]] name = "webdriver-manager" version = "4.0.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "packaging" }, { name = "python-dotenv" }, { name = "requests" }, ] sdist = { url = "https://files.pythonhosted.org/packages/24/4f/6e44478908c5133f680378d687f14ecaa99feed2c535344fcf68d8d21500/webdriver_manager-4.0.2.tar.gz", hash = "sha256:efedf428f92fd6d5c924a0d054e6d1322dd77aab790e834ee767af392b35590f", size = 25940, upload-time = "2024-07-25T08:13:49.331Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/b5/b5/3bd0b038d80950ec13e6a2c8d03ed8354867dc60064b172f2f4ffac8afbe/webdriver_manager-4.0.2-py2.py3-none-any.whl", hash = "sha256:75908d92ecc45ff2b9953614459c633db8f9aa1ff30181cefe8696e312908129", size = 27778, upload-time = "2024-07-25T08:13:47.917Z" }, ] [[package]] name = "webencodings" version = "0.5.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload-time = "2017-04-05T20:21:34.189Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload-time = "2017-04-05T20:21:32.581Z" }, ] [[package]] name = "websocket-client" version = "1.9.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/2c/41/aa4bf9664e4cda14c3b39865b12251e8e7d239f4cd0e3cc1b6c2ccde25c1/websocket_client-1.9.0.tar.gz", hash = "sha256:9e813624b6eb619999a97dc7958469217c3176312b3a16a4bd1bc7e08a46ec98", size = 70576, upload-time = "2025-10-07T21:16:36.495Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/34/db/b10e48aa8fff7407e67470363eac595018441cf32d5e1001567a7aeba5d2/websocket_client-1.9.0-py3-none-any.whl", hash = "sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef", size = 82616, upload-time = "2025-10-07T21:16:34.951Z" }, ] [[package]] name = "websockets" version = "16.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/04/24/4b2031d72e840ce4c1ccb255f693b15c334757fc50023e4db9537080b8c4/websockets-16.0.tar.gz", hash = "sha256:5f6261a5e56e8d5c42a4497b364ea24d94d9563e8fbd44e78ac40879c60179b5", size = 179346, upload-time = "2026-01-10T09:23:47.181Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/20/74/221f58decd852f4b59cc3354cccaf87e8ef695fede361d03dc9a7396573b/websockets-16.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:04cdd5d2d1dacbad0a7bf36ccbcd3ccd5a30ee188f2560b7a62a30d14107b31a", size = 177343, upload-time = "2026-01-10T09:22:21.28Z" }, { url = "https://files.pythonhosted.org/packages/19/0f/22ef6107ee52ab7f0b710d55d36f5a5d3ef19e8a205541a6d7ffa7994e5a/websockets-16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8ff32bb86522a9e5e31439a58addbb0166f0204d64066fb955265c4e214160f0", size = 175021, upload-time = "2026-01-10T09:22:22.696Z" }, { url = "https://files.pythonhosted.org/packages/10/40/904a4cb30d9b61c0e278899bf36342e9b0208eb3c470324a9ecbaac2a30f/websockets-16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:583b7c42688636f930688d712885cf1531326ee05effd982028212ccc13e5957", size = 175320, upload-time = "2026-01-10T09:22:23.94Z" }, { url = "https://files.pythonhosted.org/packages/9d/2f/4b3ca7e106bc608744b1cdae041e005e446124bebb037b18799c2d356864/websockets-16.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7d837379b647c0c4c2355c2499723f82f1635fd2c26510e1f587d89bc2199e72", size = 183815, upload-time = "2026-01-10T09:22:25.469Z" }, { url = "https://files.pythonhosted.org/packages/86/26/d40eaa2a46d4302becec8d15b0fc5e45bdde05191e7628405a19cf491ccd/websockets-16.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:df57afc692e517a85e65b72e165356ed1df12386ecb879ad5693be08fac65dde", size = 185054, upload-time = "2026-01-10T09:22:27.101Z" }, { url = "https://files.pythonhosted.org/packages/b0/ba/6500a0efc94f7373ee8fefa8c271acdfd4dca8bd49a90d4be7ccabfc397e/websockets-16.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2b9f1e0d69bc60a4a87349d50c09a037a2607918746f07de04df9e43252c77a3", size = 184565, upload-time = "2026-01-10T09:22:28.293Z" }, { url = "https://files.pythonhosted.org/packages/04/b4/96bf2cee7c8d8102389374a2616200574f5f01128d1082f44102140344cc/websockets-16.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:335c23addf3d5e6a8633f9f8eda77efad001671e80b95c491dd0924587ece0b3", size = 183848, upload-time = "2026-01-10T09:22:30.394Z" }, { url = "https://files.pythonhosted.org/packages/02/8e/81f40fb00fd125357814e8c3025738fc4ffc3da4b6b4a4472a82ba304b41/websockets-16.0-cp310-cp310-win32.whl", hash = "sha256:37b31c1623c6605e4c00d466c9d633f9b812ea430c11c8a278774a1fde1acfa9", size = 178249, upload-time = "2026-01-10T09:22:32.083Z" }, { url = "https://files.pythonhosted.org/packages/b4/5f/7e40efe8df57db9b91c88a43690ac66f7b7aa73a11aa6a66b927e44f26fa/websockets-16.0-cp310-cp310-win_amd64.whl", hash = "sha256:8e1dab317b6e77424356e11e99a432b7cb2f3ec8c5ab4dabbcee6add48f72b35", size = 178685, upload-time = "2026-01-10T09:22:33.345Z" }, { url = "https://files.pythonhosted.org/packages/f2/db/de907251b4ff46ae804ad0409809504153b3f30984daf82a1d84a9875830/websockets-16.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:31a52addea25187bde0797a97d6fc3d2f92b6f72a9370792d65a6e84615ac8a8", size = 177340, upload-time = "2026-01-10T09:22:34.539Z" }, { url = "https://files.pythonhosted.org/packages/f3/fa/abe89019d8d8815c8781e90d697dec52523fb8ebe308bf11664e8de1877e/websockets-16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:417b28978cdccab24f46400586d128366313e8a96312e4b9362a4af504f3bbad", size = 175022, upload-time = "2026-01-10T09:22:36.332Z" }, { url = "https://files.pythonhosted.org/packages/58/5d/88ea17ed1ded2079358b40d31d48abe90a73c9e5819dbcde1606e991e2ad/websockets-16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:af80d74d4edfa3cb9ed973a0a5ba2b2a549371f8a741e0800cb07becdd20f23d", size = 175319, upload-time = "2026-01-10T09:22:37.602Z" }, { url = "https://files.pythonhosted.org/packages/d2/ae/0ee92b33087a33632f37a635e11e1d99d429d3d323329675a6022312aac2/websockets-16.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:08d7af67b64d29823fed316505a89b86705f2b7981c07848fb5e3ea3020c1abe", size = 184631, upload-time = "2026-01-10T09:22:38.789Z" }, { url = "https://files.pythonhosted.org/packages/c8/c5/27178df583b6c5b31b29f526ba2da5e2f864ecc79c99dae630a85d68c304/websockets-16.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7be95cfb0a4dae143eaed2bcba8ac23f4892d8971311f1b06f3c6b78952ee70b", size = 185870, upload-time = "2026-01-10T09:22:39.893Z" }, { url = "https://files.pythonhosted.org/packages/87/05/536652aa84ddc1c018dbb7e2c4cbcd0db884580bf8e95aece7593fde526f/websockets-16.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d6297ce39ce5c2e6feb13c1a996a2ded3b6832155fcfc920265c76f24c7cceb5", size = 185361, upload-time = "2026-01-10T09:22:41.016Z" }, { url = "https://files.pythonhosted.org/packages/6d/e2/d5332c90da12b1e01f06fb1b85c50cfc489783076547415bf9f0a659ec19/websockets-16.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1c1b30e4f497b0b354057f3467f56244c603a79c0d1dafce1d16c283c25f6e64", size = 184615, upload-time = "2026-01-10T09:22:42.442Z" }, { url = "https://files.pythonhosted.org/packages/77/fb/d3f9576691cae9253b51555f841bc6600bf0a983a461c79500ace5a5b364/websockets-16.0-cp311-cp311-win32.whl", hash = "sha256:5f451484aeb5cafee1ccf789b1b66f535409d038c56966d6101740c1614b86c6", size = 178246, upload-time = "2026-01-10T09:22:43.654Z" }, { url = "https://files.pythonhosted.org/packages/54/67/eaff76b3dbaf18dcddabc3b8c1dba50b483761cccff67793897945b37408/websockets-16.0-cp311-cp311-win_amd64.whl", hash = "sha256:8d7f0659570eefb578dacde98e24fb60af35350193e4f56e11190787bee77dac", size = 178684, upload-time = "2026-01-10T09:22:44.941Z" }, { url = "https://files.pythonhosted.org/packages/84/7b/bac442e6b96c9d25092695578dda82403c77936104b5682307bd4deb1ad4/websockets-16.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:71c989cbf3254fbd5e84d3bff31e4da39c43f884e64f2551d14bb3c186230f00", size = 177365, upload-time = "2026-01-10T09:22:46.787Z" }, { url = "https://files.pythonhosted.org/packages/b0/fe/136ccece61bd690d9c1f715baaeefd953bb2360134de73519d5df19d29ca/websockets-16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8b6e209ffee39ff1b6d0fa7bfef6de950c60dfb91b8fcead17da4ee539121a79", size = 175038, upload-time = "2026-01-10T09:22:47.999Z" }, { url = "https://files.pythonhosted.org/packages/40/1e/9771421ac2286eaab95b8575b0cb701ae3663abf8b5e1f64f1fd90d0a673/websockets-16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:86890e837d61574c92a97496d590968b23c2ef0aeb8a9bc9421d174cd378ae39", size = 175328, upload-time = "2026-01-10T09:22:49.809Z" }, { url = "https://files.pythonhosted.org/packages/18/29/71729b4671f21e1eaa5d6573031ab810ad2936c8175f03f97f3ff164c802/websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9b5aca38b67492ef518a8ab76851862488a478602229112c4b0d58d63a7a4d5c", size = 184915, upload-time = "2026-01-10T09:22:51.071Z" }, { url = "https://files.pythonhosted.org/packages/97/bb/21c36b7dbbafc85d2d480cd65df02a1dc93bf76d97147605a8e27ff9409d/websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e0334872c0a37b606418ac52f6ab9cfd17317ac26365f7f65e203e2d0d0d359f", size = 186152, upload-time = "2026-01-10T09:22:52.224Z" }, { url = "https://files.pythonhosted.org/packages/4a/34/9bf8df0c0cf88fa7bfe36678dc7b02970c9a7d5e065a3099292db87b1be2/websockets-16.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a0b31e0b424cc6b5a04b8838bbaec1688834b2383256688cf47eb97412531da1", size = 185583, upload-time = "2026-01-10T09:22:53.443Z" }, { url = "https://files.pythonhosted.org/packages/47/88/4dd516068e1a3d6ab3c7c183288404cd424a9a02d585efbac226cb61ff2d/websockets-16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:485c49116d0af10ac698623c513c1cc01c9446c058a4e61e3bf6c19dff7335a2", size = 184880, upload-time = "2026-01-10T09:22:55.033Z" }, { url = "https://files.pythonhosted.org/packages/91/d6/7d4553ad4bf1c0421e1ebd4b18de5d9098383b5caa1d937b63df8d04b565/websockets-16.0-cp312-cp312-win32.whl", hash = "sha256:eaded469f5e5b7294e2bdca0ab06becb6756ea86894a47806456089298813c89", size = 178261, upload-time = "2026-01-10T09:22:56.251Z" }, { url = "https://files.pythonhosted.org/packages/c3/f0/f3a17365441ed1c27f850a80b2bc680a0fa9505d733fe152fdf5e98c1c0b/websockets-16.0-cp312-cp312-win_amd64.whl", hash = "sha256:5569417dc80977fc8c2d43a86f78e0a5a22fee17565d78621b6bb264a115d4ea", size = 178693, upload-time = "2026-01-10T09:22:57.478Z" }, { url = "https://files.pythonhosted.org/packages/cc/9c/baa8456050d1c1b08dd0ec7346026668cbc6f145ab4e314d707bb845bf0d/websockets-16.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:878b336ac47938b474c8f982ac2f7266a540adc3fa4ad74ae96fea9823a02cc9", size = 177364, upload-time = "2026-01-10T09:22:59.333Z" }, { url = "https://files.pythonhosted.org/packages/7e/0c/8811fc53e9bcff68fe7de2bcbe75116a8d959ac699a3200f4847a8925210/websockets-16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:52a0fec0e6c8d9a784c2c78276a48a2bdf099e4ccc2a4cad53b27718dbfd0230", size = 175039, upload-time = "2026-01-10T09:23:01.171Z" }, { url = "https://files.pythonhosted.org/packages/aa/82/39a5f910cb99ec0b59e482971238c845af9220d3ab9fa76dd9162cda9d62/websockets-16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e6578ed5b6981005df1860a56e3617f14a6c307e6a71b4fff8c48fdc50f3ed2c", size = 175323, upload-time = "2026-01-10T09:23:02.341Z" }, { url = "https://files.pythonhosted.org/packages/bd/28/0a25ee5342eb5d5f297d992a77e56892ecb65e7854c7898fb7d35e9b33bd/websockets-16.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:95724e638f0f9c350bb1c2b0a7ad0e83d9cc0c9259f3ea94e40d7b02a2179ae5", size = 184975, upload-time = "2026-01-10T09:23:03.756Z" }, { url = "https://files.pythonhosted.org/packages/f9/66/27ea52741752f5107c2e41fda05e8395a682a1e11c4e592a809a90c6a506/websockets-16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0204dc62a89dc9d50d682412c10b3542d748260d743500a85c13cd1ee4bde82", size = 186203, upload-time = "2026-01-10T09:23:05.01Z" }, { url = "https://files.pythonhosted.org/packages/37/e5/8e32857371406a757816a2b471939d51c463509be73fa538216ea52b792a/websockets-16.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:52ac480f44d32970d66763115edea932f1c5b1312de36df06d6b219f6741eed8", size = 185653, upload-time = "2026-01-10T09:23:06.301Z" }, { url = "https://files.pythonhosted.org/packages/9b/67/f926bac29882894669368dc73f4da900fcdf47955d0a0185d60103df5737/websockets-16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6e5a82b677f8f6f59e8dfc34ec06ca6b5b48bc4fcda346acd093694cc2c24d8f", size = 184920, upload-time = "2026-01-10T09:23:07.492Z" }, { url = "https://files.pythonhosted.org/packages/3c/a1/3d6ccdcd125b0a42a311bcd15a7f705d688f73b2a22d8cf1c0875d35d34a/websockets-16.0-cp313-cp313-win32.whl", hash = "sha256:abf050a199613f64c886ea10f38b47770a65154dc37181bfaff70c160f45315a", size = 178255, upload-time = "2026-01-10T09:23:09.245Z" }, { url = "https://files.pythonhosted.org/packages/6b/ae/90366304d7c2ce80f9b826096a9e9048b4bb760e44d3b873bb272cba696b/websockets-16.0-cp313-cp313-win_amd64.whl", hash = "sha256:3425ac5cf448801335d6fdc7ae1eb22072055417a96cc6b31b3861f455fbc156", size = 178689, upload-time = "2026-01-10T09:23:10.483Z" }, { url = "https://files.pythonhosted.org/packages/f3/1d/e88022630271f5bd349ed82417136281931e558d628dd52c4d8621b4a0b2/websockets-16.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8cc451a50f2aee53042ac52d2d053d08bf89bcb31ae799cb4487587661c038a0", size = 177406, upload-time = "2026-01-10T09:23:12.178Z" }, { url = "https://files.pythonhosted.org/packages/f2/78/e63be1bf0724eeb4616efb1ae1c9044f7c3953b7957799abb5915bffd38e/websockets-16.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:daa3b6ff70a9241cf6c7fc9e949d41232d9d7d26fd3522b1ad2b4d62487e9904", size = 175085, upload-time = "2026-01-10T09:23:13.511Z" }, { url = "https://files.pythonhosted.org/packages/bb/f4/d3c9220d818ee955ae390cf319a7c7a467beceb24f05ee7aaaa2414345ba/websockets-16.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:fd3cb4adb94a2a6e2b7c0d8d05cb94e6f1c81a0cf9dc2694fb65c7e8d94c42e4", size = 175328, upload-time = "2026-01-10T09:23:14.727Z" }, { url = "https://files.pythonhosted.org/packages/63/bc/d3e208028de777087e6fb2b122051a6ff7bbcca0d6df9d9c2bf1dd869ae9/websockets-16.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:781caf5e8eee67f663126490c2f96f40906594cb86b408a703630f95550a8c3e", size = 185044, upload-time = "2026-01-10T09:23:15.939Z" }, { url = "https://files.pythonhosted.org/packages/ad/6e/9a0927ac24bd33a0a9af834d89e0abc7cfd8e13bed17a86407a66773cc0e/websockets-16.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:caab51a72c51973ca21fa8a18bd8165e1a0183f1ac7066a182ff27107b71e1a4", size = 186279, upload-time = "2026-01-10T09:23:17.148Z" }, { url = "https://files.pythonhosted.org/packages/b9/ca/bf1c68440d7a868180e11be653c85959502efd3a709323230314fda6e0b3/websockets-16.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:19c4dc84098e523fd63711e563077d39e90ec6702aff4b5d9e344a60cb3c0cb1", size = 185711, upload-time = "2026-01-10T09:23:18.372Z" }, { url = "https://files.pythonhosted.org/packages/c4/f8/fdc34643a989561f217bb477cbc47a3a07212cbda91c0e4389c43c296ebf/websockets-16.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a5e18a238a2b2249c9a9235466b90e96ae4795672598a58772dd806edc7ac6d3", size = 184982, upload-time = "2026-01-10T09:23:19.652Z" }, { url = "https://files.pythonhosted.org/packages/dd/d1/574fa27e233764dbac9c52730d63fcf2823b16f0856b3329fc6268d6ae4f/websockets-16.0-cp314-cp314-win32.whl", hash = "sha256:a069d734c4a043182729edd3e9f247c3b2a4035415a9172fd0f1b71658a320a8", size = 177915, upload-time = "2026-01-10T09:23:21.458Z" }, { url = "https://files.pythonhosted.org/packages/8a/f1/ae6b937bf3126b5134ce1f482365fde31a357c784ac51852978768b5eff4/websockets-16.0-cp314-cp314-win_amd64.whl", hash = "sha256:c0ee0e63f23914732c6d7e0cce24915c48f3f1512ec1d079ed01fc629dab269d", size = 178381, upload-time = "2026-01-10T09:23:22.715Z" }, { url = "https://files.pythonhosted.org/packages/06/9b/f791d1db48403e1f0a27577a6beb37afae94254a8c6f08be4a23e4930bc0/websockets-16.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:a35539cacc3febb22b8f4d4a99cc79b104226a756aa7400adc722e83b0d03244", size = 177737, upload-time = "2026-01-10T09:23:24.523Z" }, { url = "https://files.pythonhosted.org/packages/bd/40/53ad02341fa33b3ce489023f635367a4ac98b73570102ad2cdd770dacc9a/websockets-16.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:b784ca5de850f4ce93ec85d3269d24d4c82f22b7212023c974c401d4980ebc5e", size = 175268, upload-time = "2026-01-10T09:23:25.781Z" }, { url = "https://files.pythonhosted.org/packages/74/9b/6158d4e459b984f949dcbbb0c5d270154c7618e11c01029b9bbd1bb4c4f9/websockets-16.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:569d01a4e7fba956c5ae4fc988f0d4e187900f5497ce46339c996dbf24f17641", size = 175486, upload-time = "2026-01-10T09:23:27.033Z" }, { url = "https://files.pythonhosted.org/packages/e5/2d/7583b30208b639c8090206f95073646c2c9ffd66f44df967981a64f849ad/websockets-16.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:50f23cdd8343b984957e4077839841146f67a3d31ab0d00e6b824e74c5b2f6e8", size = 185331, upload-time = "2026-01-10T09:23:28.259Z" }, { url = "https://files.pythonhosted.org/packages/45/b0/cce3784eb519b7b5ad680d14b9673a31ab8dcb7aad8b64d81709d2430aa8/websockets-16.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:152284a83a00c59b759697b7f9e9cddf4e3c7861dd0d964b472b70f78f89e80e", size = 186501, upload-time = "2026-01-10T09:23:29.449Z" }, { url = "https://files.pythonhosted.org/packages/19/60/b8ebe4c7e89fb5f6cdf080623c9d92789a53636950f7abacfc33fe2b3135/websockets-16.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bc59589ab64b0022385f429b94697348a6a234e8ce22544e3681b2e9331b5944", size = 186062, upload-time = "2026-01-10T09:23:31.368Z" }, { url = "https://files.pythonhosted.org/packages/88/a8/a080593f89b0138b6cba1b28f8df5673b5506f72879322288b031337c0b8/websockets-16.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:32da954ffa2814258030e5a57bc73a3635463238e797c7375dc8091327434206", size = 185356, upload-time = "2026-01-10T09:23:32.627Z" }, { url = "https://files.pythonhosted.org/packages/c2/b6/b9afed2afadddaf5ebb2afa801abf4b0868f42f8539bfe4b071b5266c9fe/websockets-16.0-cp314-cp314t-win32.whl", hash = "sha256:5a4b4cc550cb665dd8a47f868c8d04c8230f857363ad3c9caf7a0c3bf8c61ca6", size = 178085, upload-time = "2026-01-10T09:23:33.816Z" }, { url = "https://files.pythonhosted.org/packages/9f/3e/28135a24e384493fa804216b79a6a6759a38cc4ff59118787b9fb693df93/websockets-16.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b14dc141ed6d2dde437cddb216004bcac6a1df0935d79656387bd41632ba0bbd", size = 178531, upload-time = "2026-01-10T09:23:35.016Z" }, { url = "https://files.pythonhosted.org/packages/72/07/c98a68571dcf256e74f1f816b8cc5eae6eb2d3d5cfa44d37f801619d9166/websockets-16.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:349f83cd6c9a415428ee1005cadb5c2c56f4389bc06a9af16103c3bc3dcc8b7d", size = 174947, upload-time = "2026-01-10T09:23:36.166Z" }, { url = "https://files.pythonhosted.org/packages/7e/52/93e166a81e0305b33fe416338be92ae863563fe7bce446b0f687b9df5aea/websockets-16.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:4a1aba3340a8dca8db6eb5a7986157f52eb9e436b74813764241981ca4888f03", size = 175260, upload-time = "2026-01-10T09:23:37.409Z" }, { url = "https://files.pythonhosted.org/packages/56/0c/2dbf513bafd24889d33de2ff0368190a0e69f37bcfa19009ef819fe4d507/websockets-16.0-pp311-pypy311_pp73-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f4a32d1bd841d4bcbffdcb3d2ce50c09c3909fbead375ab28d0181af89fd04da", size = 176071, upload-time = "2026-01-10T09:23:39.158Z" }, { url = "https://files.pythonhosted.org/packages/a5/8f/aea9c71cc92bf9b6cc0f7f70df8f0b420636b6c96ef4feee1e16f80f75dd/websockets-16.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0298d07ee155e2e9fda5be8a9042200dd2e3bb0b8a38482156576f863a9d457c", size = 176968, upload-time = "2026-01-10T09:23:41.031Z" }, { url = "https://files.pythonhosted.org/packages/9a/3f/f70e03f40ffc9a30d817eef7da1be72ee4956ba8d7255c399a01b135902a/websockets-16.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a653aea902e0324b52f1613332ddf50b00c06fdaf7e92624fbf8c77c78fa5767", size = 178735, upload-time = "2026-01-10T09:23:42.259Z" }, { url = "https://files.pythonhosted.org/packages/6f/28/258ebab549c2bf3e64d2b0217b973467394a9cea8c42f70418ca2c5d0d2e/websockets-16.0-py3-none-any.whl", hash = "sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec", size = 171598, upload-time = "2026-01-10T09:23:45.395Z" }, ] [[package]] name = "wsproto" version = "1.3.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "h11" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c7/79/12135bdf8b9c9367b8701c2c19a14c913c120b882d50b014ca0d38083c2c/wsproto-1.3.2.tar.gz", hash = "sha256:b86885dcf294e15204919950f666e06ffc6c7c114ca900b060d6e16293528294", size = 50116, upload-time = "2025-11-20T18:18:01.871Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/a4/f5/10b68b7b1544245097b2a1b8238f66f2fc6dcaeb24ba5d917f52bd2eed4f/wsproto-1.3.2-py3-none-any.whl", hash = "sha256:61eea322cdf56e8cc904bd3ad7573359a242ba65688716b0710a5eb12beab584", size = 24405, upload-time = "2025-11-20T18:18:00.454Z" }, ] [[package]] name = "zipp" version = "3.23.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload-time = "2025-06-08T17:06:39.4Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload-time = "2025-06-08T17:06:38.034Z" }, ]