pax_global_header00006660000000000000000000000064152456140420014515gustar00rootroot0000000000000052 comment=85b98c6a93e1ff906f07545e98d8e4085424d005 python-django-debug-toolbar-8.0.0/000077500000000000000000000000001524561404200170275ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/.editorconfig000066400000000000000000000004361524561404200215070ustar00rootroot00000000000000# https://editorconfig.org/ root = true [*] indent_style = space indent_size = 4 insert_final_newline = true trim_trailing_whitespace = true end_of_line = lf charset = utf-8 [*.html] indent_size = 2 [Makefile] indent_style = tab [*.bat] indent_style = tab [*.yml] indent_size = 2 python-django-debug-toolbar-8.0.0/.git-blame-ignore-revs000066400000000000000000000000001524561404200231150ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/.github/000077500000000000000000000000001524561404200203675ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/.github/PULL_REQUEST_TEMPLATE.md000066400000000000000000000006761524561404200242010ustar00rootroot00000000000000#### Description Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. Your commit message should include this information as well. Fixes # (issue) #### Checklist: - [ ] I have added the relevant tests for this change. - [ ] I have added an item to the Pending section of ``docs/changes.rst``. #### AI/LLM Usage - [ ] This PR includes code generated with the help of an AI/LLM python-django-debug-toolbar-8.0.0/.github/dependabot.yml000066400000000000000000000016141524561404200232210ustar00rootroot00000000000000# Keep GitHub Actions up to date with GitHub's Dependabot... # https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot # https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#package-ecosystem version: 2 updates: - package-ecosystem: github-actions directory: / groups: github-actions: patterns: - "*" # Group all Actions updates into a single larger pull request schedule: interval: weekly cooldown: default-days: 7 - package-ecosystem: npm directory: / schedule: interval: weekly cooldown: default-days: 7 groups: minor-npm-dependencies: update-types: - "minor" - "patch" major-npm-dependencies: update-types: - "major" python-django-debug-toolbar-8.0.0/.github/release.yml000066400000000000000000000001321524561404200225260ustar00rootroot00000000000000--- changelog: exclude: authors: - dependabot[bot] - pre-commit-ci[bot] python-django-debug-toolbar-8.0.0/.github/workflows/000077500000000000000000000000001524561404200224245ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/.github/workflows/coverage.yml000066400000000000000000000026351524561404200247500ustar00rootroot00000000000000# .github/workflows/coverage.yml name: Post coverage comment on: workflow_run: # zizmor: ignore[dangerous-triggers] - This follows GitHub's recommended pattern for posting PR comments from untrusted forks workflows: ["Test"] types: - completed jobs: test: name: Run tests & display coverage runs-on: ubuntu-latest if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success' permissions: # Gives the action the necessary permissions for publishing new # comments in pull requests. pull-requests: write # Gives the action the necessary permissions for editing existing # comments (to avoid publishing multiple comments in the same PR) contents: write # Gives the action the necessary permissions for looking up the # workflow that launched this workflow, and download the related # artifact that contains the comment to be published actions: read steps: # DO NOT run actions/checkout here, for security reasons # For details, refer to https://securitylab.github.com/research/github-actions-preventing-pwn-requests/ - name: Post comment uses: py-cov-action/python-coverage-comment-action@a05be3d2e8a6272d3ef5fb2840ab20368bb2eb71 # v4.3 with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_PR_RUN_ID: ${{ github.event.workflow_run.id }} python-django-debug-toolbar-8.0.0/.github/workflows/release.yml000066400000000000000000000074511524561404200245760ustar00rootroot00000000000000name: Publish Python ðŸ�� distribution 📦 to PyPI and TestPyPI on: push permissions: {} env: PYPI_URL: https://pypi.org/p/django-debug-toolbar PYPI_TEST_URL: https://test.pypi.org/p/django-debug-toolbar jobs: build: name: Build distribution 📦 runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - name: Set up Python uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: "3.x" - name: Install pypa/build run: python3 -m pip install build --user - name: Build a binary wheel and a source tarball run: python3 -m build - name: Store the distribution packages uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: python-package-distributions path: dist/ publish-to-pypi: name: >- Publish Python ðŸ�� distribution 📦 to PyPI if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes needs: - build runs-on: ubuntu-latest environment: name: pypi url: ${{ env.PYPI_URL }} permissions: id-token: write # IMPORTANT: mandatory for trusted publishing steps: - name: Download all the dists uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: python-package-distributions path: dist/ - name: Publish distribution 📦 to PyPI uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2 github-release: name: >- Sign the Python ðŸ�� distribution 📦 with Sigstore and upload them to GitHub Release needs: - publish-to-pypi runs-on: ubuntu-latest 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@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: python-package-distributions path: dist/ - name: Sign the dists with Sigstore uses: sigstore/gh-action-sigstore-python@790bc6befb9d733738f18d8f895854b453640ec9 # v3.5.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 }}' --notes "" - 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 }}' publish-to-testpypi: name: Publish Python ðŸ�� distribution 📦 to TestPyPI if: startsWith(github.ref, 'refs/tags/') # only publish to Test PyPI on tag pushes needs: - build runs-on: ubuntu-latest environment: name: testpypi url: ${{ env.PYPI_TEST_URL }} permissions: id-token: write # IMPORTANT: mandatory for trusted publishing steps: - name: Download all the dists uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: python-package-distributions path: dist/ - name: Publish distribution 📦 to TestPyPI uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2 with: repository-url: https://test.pypi.org/legacy/ skip-existing: true python-django-debug-toolbar-8.0.0/.github/workflows/test.yml000066400000000000000000000236461524561404200241410ustar00rootroot00000000000000name: Test on: push: branches: - main tags: - '**' pull_request: schedule: # Run weekly on Saturday - cron: '37 3 * * SAT' concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: contents: read jobs: vitest: runs-on: ubuntu-latest permissions: contents: read pull-requests: write steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version-file: package.json package-manager-cache: false - name: Install Node dependencies run: npm ci - name: Install Playwright browsers run: npx playwright install --with-deps chromium firefox - run: npm test - uses: davelosert/vitest-coverage-report-action@8b157684c6a6b259b97d45e72b44242865c0f6a5 # v2.12.2 mysql: runs-on: ubuntu-latest strategy: fail-fast: false max-parallel: 5 matrix: python-version: ['3.10', '3.11', '3.12', '3.13', '3.14'] services: mariadb: image: mariadb:11.8 env: MARIADB_ROOT_PASSWORD: debug_toolbar options: >- --health-cmd "mariadb-admin ping" --health-interval 10s --health-timeout 5s --health-retries 5 ports: - 3306:3306 steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: ${{ matrix.python-version }} allow-prereleases: true - name: Get pip cache dir id: pip-cache run: | echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT - name: Cache uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ matrix.python-version }}-v1-${{ hashFiles('**/pyproject.toml') }}-${{ hashFiles('**/tox.ini') }} restore-keys: | ${{ matrix.python-version }}-v1- lookup-only: true - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install --upgrade tox tox-gh-actions - name: Test with tox run: tox env: DB_BACKEND: mysql DB_USER: root DB_PASSWORD: debug_toolbar DB_HOST: 127.0.0.1 DB_PORT: 3306 COVERAGE_FILE: ".coverage.mysql.${{ matrix.python-version }}" - name: Store coverage file uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: coverage-mysql-${{ matrix.python-version }} path: .coverage.mysql.${{ matrix.python-version }}* include-hidden-files: true postgres: runs-on: ubuntu-latest strategy: fail-fast: false max-parallel: 5 matrix: python-version: ['3.10', '3.11', '3.12', '3.13', '3.14'] database: [postgresql, postgis, psycopg3] exclude: - python-version: '3.13' database: postgis - python-version: '3.13' database: postgresql - python-version: '3.14' database: postgis - python-version: '3.14' database: postgresql # Add postgis3 to our matrix for modern Python versions include: - python-version: '3.13' database: postgis3 - python-version: '3.13' database: psycopg3 env: DJANGO_SELENIUM_TESTS: "true" - python-version: '3.14' database: postgis3 - python-version: '3.14' database: psycopg3 env: DJANGO_SELENIUM_TESTS: "true" services: postgres: image: postgis/postgis:17-3.5 env: POSTGRES_DB: debug_toolbar POSTGRES_USER: debug_toolbar POSTGRES_PASSWORD: debug_toolbar ports: - 5432:5432 options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: ${{ matrix.python-version }} allow-prereleases: true - name: Get pip cache dir id: pip-cache run: | echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT - name: Cache uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ matrix.python-version }}-v1-${{ hashFiles('**/pyproject.toml') }}-${{ hashFiles('**/tox.ini') }} restore-keys: | ${{ matrix.python-version }}-v1- lookup-only: true - name: Install gdal-bin (for postgis) run: | sudo apt-get -qq update sudo apt-get -y install gdal-bin - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install --upgrade tox tox-gh-actions - name: Test with tox run: tox env: DB_BACKEND: ${{ matrix.database }} DB_HOST: localhost DB_PORT: 5432 DJANGO_SELENIUM_TESTS: ${{ matrix.env.DJANGO_SELENIUM_TESTS }} COVERAGE_FILE: ".coverage.${{ matrix.database }}.${{ matrix.python-version }}" - name: Store coverage file uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: coverage-${{ matrix.database }}-${{ matrix.python-version }} path: .coverage.${{ matrix.database }}.${{ matrix.python-version }}* include-hidden-files: true sqlite: runs-on: ubuntu-latest strategy: fail-fast: false max-parallel: 5 matrix: python-version: ['3.10', '3.11', '3.12', '3.13', '3.14'] steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: ${{ matrix.python-version }} allow-prereleases: true - name: Get pip cache dir id: pip-cache run: | echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT - name: Cache uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ matrix.python-version }}-v1-${{ hashFiles('**/pyproject.toml') }}-${{ hashFiles('**/tox.ini') }} restore-keys: | ${{ matrix.python-version }}-v1- lookup-only: true - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install --upgrade tox tox-gh-actions - name: Test with tox run: tox env: DB_BACKEND: sqlite3 DB_NAME: ":memory:" COVERAGE_FILE: ".coverage.sqlite.${{ matrix.python-version }}" - name: Store coverage file uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: coverage-sqlite-${{ matrix.python-version }} path: .coverage.sqlite.${{ matrix.python-version }}* include-hidden-files: true lint: runs-on: ubuntu-latest strategy: fail-fast: false steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: '3.10' - name: Get pip cache dir id: pip-cache run: | echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT - name: Cache uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ matrix.python-version }}-v1-${{ hashFiles('**/pyproject.toml') }}-${{ hashFiles('**/tox.ini') }} restore-keys: | ${{ matrix.python-version }}-v1- lookup-only: true - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install --upgrade tox - name: Test with tox run: tox -e docs,packaging coverage: name: Coverage runs-on: ubuntu-latest needs: - mysql - postgres - sqlite permissions: pull-requests: write contents: write steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: # Persist the credentials because coverage_comment needs them too. persist-credentials: true - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 id: download with: pattern: coverage-* merge-multiple: true - name: Coverage comment id: coverage_comment uses: py-cov-action/python-coverage-comment-action@a05be3d2e8a6272d3ef5fb2840ab20368bb2eb71 # v4.3 with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} MERGE_COVERAGE_FILES: true - name: Store Pull Request comment to be posted uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 if: steps.coverage_comment.outputs.COMMENT_FILE_WRITTEN == 'true' with: name: python-coverage-comment-action path: python-coverage-comment-action.txt python-django-debug-toolbar-8.0.0/.github/workflows/zizmor.yml000066400000000000000000000012321524561404200244770ustar00rootroot00000000000000name: GitHub Actions Security Analysis with zizmor 🌈 on: push: branches: ["main"] pull_request: branches: ["**"] permissions: {} jobs: zizmor: name: Run zizmor 🌈 runs-on: ubuntu-latest permissions: security-events: write contents: read # only needed for private repos actions: read # only needed for private repos steps: - name: Checkout repository uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - name: Run zizmor 🌈 uses: zizmorcore/zizmor-action@3dc1ecc9bcb9e94e9b2c709687979e1298497054 # v0.6.2 python-django-debug-toolbar-8.0.0/.gitignore000066400000000000000000000003321524561404200210150ustar00rootroot00000000000000*.pyc *.DS_Store *~ .idea build .coverage* dist django_debug_toolbar.egg-info docs/_build example/db.sqlite3 htmlcov .tox geckodriver.log coverage.xml venv .direnv/ .envrc .venv .vscode # Node node_modules/ coverage/ python-django-debug-toolbar-8.0.0/.pre-commit-config.yaml000066400000000000000000000027101524561404200233100ustar00rootroot00000000000000exclude: "package.json|package-lock.json" repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v6.0.0 hooks: - id: check-toml - id: check-yaml - id: end-of-file-fixer - id: trailing-whitespace - id: mixed-line-ending - id: file-contents-sorter files: docs/spelling_wordlist.txt - repo: https://github.com/pycqa/doc8 rev: v2.0.0 hooks: - id: doc8 - repo: https://github.com/adamchainz/django-upgrade rev: 1.32.0 hooks: - id: django-upgrade args: [--target-version, "5.2"] - repo: https://github.com/codingjoe/esupgrade rev: 2025.22.2 hooks: - id: esupgrade - repo: https://github.com/adamchainz/djade-pre-commit rev: "1.9.0" hooks: - id: djade args: [--target-version, "5.2"] - repo: https://github.com/pre-commit/pygrep-hooks rev: v1.10.0 hooks: - id: rst-backticks - id: rst-directive-colons - repo: https://github.com/biomejs/pre-commit rev: v2.5.11 hooks: - id: biome-check verbose: true - repo: https://github.com/astral-sh/ruff-pre-commit rev: 'v0.16.5' hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] - id: ruff-format - repo: https://github.com/tox-dev/pyproject-fmt rev: v2.29.0 hooks: - id: pyproject-fmt - repo: https://github.com/abravalheri/validate-pyproject rev: '0.26' hooks: - id: validate-pyproject python-django-debug-toolbar-8.0.0/.readthedocs.yaml000066400000000000000000000004761524561404200222650ustar00rootroot00000000000000# .readthedocs.yaml # Read the Docs configuration file # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details version: 2 build: os: ubuntu-24.04 tools: python: "3.13" jobs: install: - pip install -U pip - pip install --group docs sphinx: configuration: docs/conf.py python-django-debug-toolbar-8.0.0/.tx/000077500000000000000000000000001524561404200175405ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/.tx/config000066400000000000000000000005551524561404200207350ustar00rootroot00000000000000[main] host = https://www.transifex.com lang_map = sr@latin: sr_Latn [o:django-debug-toolbar:p:django-debug-toolbar:r:main] file_filter = debug_toolbar/locale//LC_MESSAGES/django.po source_file = debug_toolbar/locale/en/LC_MESSAGES/django.po source_lang = en replace_edited_strings = false keep_translations = false python-django-debug-toolbar-8.0.0/CODE_OF_CONDUCT.md000066400000000000000000000003031524561404200216220ustar00rootroot00000000000000# Django Debug Toolbar Code of Conduct The django-debug-toolbar project utilizes the [Django Commons Code of Conduct](https://github.com/django-commons/membership/blob/main/CODE_OF_CONDUCT.md). python-django-debug-toolbar-8.0.0/CONTRIBUTING.md000066400000000000000000000010511524561404200212550ustar00rootroot00000000000000# Contributing to Django Debug Toolbar This is a [Django Commons](https://github.com/django-commons/) project. By contributing you agree to abide by the [Contributor Code of Conduct](https://github.com/django-commons/membership/blob/main/CODE_OF_CONDUCT.md). ## Documentation For detailed contributing guidelines, please see our [Documentation](https://django-debug-toolbar.readthedocs.io/en/latest/contributing.html). ## Additional Resources Please see the [README](https://github.com/django-commons/membership/blob/main/README.md) for more help. python-django-debug-toolbar-8.0.0/LICENSE000066400000000000000000000030001524561404200200250ustar00rootroot00000000000000Copyright (c) Rob Hudson and individual contributors. All rights reserved. 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 Django 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 OWNER 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. python-django-debug-toolbar-8.0.0/Makefile000066400000000000000000000036561524561404200205010ustar00rootroot00000000000000.PHONY: example test coverage translatable_strings update_translations help .DEFAULT_GOAL := help example: ## Run the example application python example/manage.py migrate --noinput -DJANGO_SUPERUSER_PASSWORD=p python example/manage.py createsuperuser \ --noinput --username="$(USER)" --email="$(USER)@mailinator.com" python example/manage.py runserver example_async: python example/manage.py migrate --noinput -DJANGO_SUPERUSER_PASSWORD=p python example/manage.py createsuperuser \ --noinput --username="$(USER)" --email="$(USER)@mailinator.com" daphne example.asgi:application example_test: ## Run the test suite for the example application python example/manage.py test example test: ## Run the test suite DJANGO_SETTINGS_MODULE=tests.settings \ python -m django test $${TEST_ARGS:-tests} test_selenium: ## Run frontend tests written with Selenium DJANGO_SELENIUM_TESTS=true DJANGO_SETTINGS_MODULE=tests.settings \ python -m django test $${TEST_ARGS:-tests} coverage: ## Run the test suite with coverage enabled python --version DJANGO_SETTINGS_MODULE=tests.settings \ python -b -W always -m coverage run -m django test -v2 $${TEST_ARGS:-tests} coverage report coverage html coverage xml translatable_strings: ## Update the English '.po' file cd debug_toolbar && python -m django makemessages -l en --no-obsolete @echo "Please commit changes and run 'tx push -s' (or wait for Transifex to pick them)" update_translations: ## Download updated '.po' files from Transifex tx pull -a --minimum-perc=10 cd debug_toolbar && python -m django compilemessages .PHONY: example/django-debug-toolbar.png example/django-debug-toolbar.png: example/screenshot.py ## Update the screenshot in 'README.rst' python $< --browser firefox --headless -o $@ optipng $@ help: ## Help message for targets @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) \ | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' python-django-debug-toolbar-8.0.0/README.rst000066400000000000000000000053711524561404200205240ustar00rootroot00000000000000===================================== Django Debug Toolbar |latest-version| ===================================== |build-status| |coverage| |docs| |python-support| |django-support| .. |latest-version| image:: https://img.shields.io/pypi/v/django-debug-toolbar.svg :target: https://pypi.org/project/django-debug-toolbar/ :alt: Latest version on PyPI .. |build-status| image:: https://github.com/django-commons/django-debug-toolbar/workflows/Test/badge.svg :target: https://github.com/django-commons/django-debug-toolbar/actions/workflows/test.yml :alt: Build Status .. |coverage| image:: https://img.shields.io/badge/Coverage-94%25-green :target: https://github.com/django-commons/django-debug-toolbar/actions/workflows/test.yml?query=branch%3Amain :alt: Test coverage status .. |docs| image:: https://img.shields.io/readthedocs/django-debug-toolbar/latest.svg :target: https://readthedocs.org/projects/django-debug-toolbar/ :alt: Documentation status .. |python-support| image:: https://img.shields.io/pypi/pyversions/django-debug-toolbar :target: https://pypi.org/project/django-debug-toolbar/ :alt: Supported Python versions .. |django-support| image:: https://img.shields.io/pypi/djversions/django-debug-toolbar :target: https://pypi.org/project/django-debug-toolbar/ :alt: Supported Django versions The Django Debug Toolbar is a configurable set of panels that display various debug information about the current request/response and when clicked, display more details about the panel's content. Here's a screenshot of the toolbar in action: .. image:: https://raw.github.com/django-commons/django-debug-toolbar/main/example/django-debug-toolbar.png :alt: Django Debug Toolbar screenshot In addition to the built-in panels, a number of third-party panels are contributed by the community. The current stable version of the Debug Toolbar is 8.0.0. It works on Django ≥ 5.2.0. The Debug Toolbar has experimental support for `Django's asynchronous views `_. Please note that the Debug Toolbar still lacks the capability for handling concurrent requests. If you find any issues, please report them on the `issue tracker`_. Documentation, including installation and configuration instructions, is available at https://django-debug-toolbar.readthedocs.io/. The Django Debug Toolbar is released under the BSD license, like Django itself. If you like it, please consider contributing! The Django Debug Toolbar was originally created by Rob Hudson in August 2008 and was further developed by many contributors_. .. _contributors: https://github.com/django-commons/django-debug-toolbar/graphs/contributors .. _issue tracker: https://github.com/django-commons/django-debug-toolbar/issues python-django-debug-toolbar-8.0.0/SECURITY.md000066400000000000000000000010331524561404200206150ustar00rootroot00000000000000# Security Policy ## Supported Versions Only the latest version of django-debug-toolbar [![PyPI version](https://badge.fury.io/py/django-debug-toolbar.svg)](https://pypi.python.org/pypi/django-debug-toolbar) is supported. ## Reporting a Vulnerability If you think you have found a vulnerability, and even if you are not sure, please [report it to us in private](https://github.com/django-commons/django-debug-toolbar/security/advisories/new). We will review it and get back to you. Please refrain from public discussions of the issue. python-django-debug-toolbar-8.0.0/biome.json000066400000000000000000000013641524561404200210210ustar00rootroot00000000000000{ "$schema": "https://biomejs.dev/schemas/2.5.11/schema.json", "formatter": { "enabled": true, "useEditorconfig": true }, "assist": { "actions": { "source": { "organizeImports": "on" } } }, "linter": { "enabled": true, "rules": { "preset": "recommended", "complexity": { "noImportantStyles": "off" }, "correctness": { "noUndeclaredVariables": "error" }, "suspicious": { "noDocumentCookie": "off" } } }, "javascript": { "formatter": { "trailingCommas": "es5" } } } python-django-debug-toolbar-8.0.0/debug_toolbar/000077500000000000000000000000001524561404200216375ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/__init__.py000066400000000000000000000004301524561404200237450ustar00rootroot00000000000000__all__ = ["APP_NAME", "VERSION"] APP_NAME = "djdt" # Do not use pkg_resources to find the version but set it here directly! # see issue #1446 VERSION = "8.0.0" # Code that discovers files or modules in INSTALLED_APPS imports this module. urls = "debug_toolbar.urls", APP_NAME python-django-debug-toolbar-8.0.0/debug_toolbar/_compat.py000066400000000000000000000022131524561404200236310ustar00rootroot00000000000000import django try: from django.contrib.auth.decorators import login_not_required except ImportError: # For Django < 5.1, copy the current Django implementation def login_not_required(view_func): """ Decorator for views that allows access to unauthenticated requests. """ view_func.login_required = False return view_func if django.VERSION >= (6, 0): from django.middleware.csp import get_nonce else: # For Django < 6.0, there is no native CSP support, hence no CSP nonces. def get_nonce(request): return None # django.tasks was added in Django 6.0. django_has_tasks_support = django.VERSION >= (6, 0) if django_has_tasks_support: from django.tasks import task else: # For Django < 6.0, django.tasks doesn't exist. This pass-through # decorator lets call sites decorate funtcions unconditionally # tests that need real task behavior should use # @skipUnless(django_has_tasks_support, ...) instead of relying on # this decorator doing anything useful. def task(func=None, **kwargs): if func is None: return lambda f: f return func python-django-debug-toolbar-8.0.0/debug_toolbar/_stubs.py000066400000000000000000000012571524561404200235150ustar00rootroot00000000000000from __future__ import annotations from typing import Any, NamedTuple, Protocol from django import template as dj_template from django.http import HttpRequest, HttpResponse class InspectStack(NamedTuple): frame: Any filename: str lineno: int function: str code_context: str index: int TidyStackTrace = list[tuple[str, int, str, str, Any | None]] class RenderContext(dj_template.context.RenderContext): template: dj_template.Template class RequestContext(dj_template.RequestContext): template: dj_template.Template render_context: RenderContext class GetResponse(Protocol): def __call__(self, request: HttpRequest) -> HttpResponse: ... python-django-debug-toolbar-8.0.0/debug_toolbar/apps.py000066400000000000000000000260561524561404200231650ustar00rootroot00000000000000import inspect import mimetypes from django.apps import AppConfig from django.conf import settings from django.core.checks import Error, Warning, register from django.middleware.gzip import GZipMiddleware from django.urls import NoReverseMatch, reverse from django.utils.module_loading import import_string from django.utils.translation import gettext_lazy as _ from debug_toolbar import APP_NAME, settings as dt_settings from debug_toolbar.settings import CONFIG_DEFAULTS class DebugToolbarConfig(AppConfig): name = "debug_toolbar" verbose_name = _("Debug Toolbar") def ready(self): from debug_toolbar.toolbar import DebugToolbar # Import the panels when the app is ready and call their ready() methods. This # allows panels like CachePanel to enable their instrumentation immediately. for cls in DebugToolbar.get_panel_classes(): cls.ready() _manage_migrations_visibility(self.name) def import_models(self): """ Override import models to avoid allowing users to dynamically fetch a model that doesn't have a table behind it unless they are using the DatabaseStore. This also prevents the command `migrate --run-syncdb` from creating tables for the models. """ dt_config = dt_settings.get_config() if dt_config["TOOLBAR_STORE_CLASS"] == "debug_toolbar.store.DatabaseStore": return super().import_models() # Not using the database store, don't import the models self.models = {} def _manage_migrations_visibility(app_name): """ Adjust the toolbar's migration visibility by manipulating the project's settings. This is a hack since it's manipulating settings. """ if ( dt_settings.get_config()["TOOLBAR_STORE_CLASS"] != "debug_toolbar.store.DatabaseStore" ): # This effectively hides the migrations by telling Django they don't exist. settings.MIGRATION_MODULES.setdefault(app_name, None) def check_template_config(config): """ Checks if a template configuration is valid. The toolbar requires either the loaders to be unspecified or ``django.template.loaders.app_directories.Loader`` to be included in the loaders. If custom loaders are specified, then APP_DIRS must be True. """ def flat_loaders(loaders): """ Recursively flatten the settings list of template loaders. Check for (loader, [child_loaders]) tuples. Django's default cached loader uses this pattern. """ for loader in loaders: if isinstance(loader, tuple): yield loader[0] yield from flat_loaders(loader[1]) else: yield loader app_dirs = config.get("APP_DIRS", False) loaders = config.get("OPTIONS", {}).get("loaders", None) if loaders: loaders = list(flat_loaders(loaders)) # By default the app loader is included. has_app_loaders = ( loaders is None or "django.template.loaders.app_directories.Loader" in loaders ) return has_app_loaders or app_dirs @register def check_middleware(app_configs, **kwargs): from debug_toolbar.middleware import DebugToolbarMiddleware errors = [] gzip_index = None debug_toolbar_indexes = [] if all(not check_template_config(config) for config in settings.TEMPLATES): errors.append( Warning( "At least one DjangoTemplates TEMPLATES configuration needs " "to use django.template.loaders.app_directories.Loader or " "have APP_DIRS set to True.", hint=( "Include django.template.loaders.app_directories.Loader " 'in ["OPTIONS"]["loaders"]. Alternatively use ' "APP_DIRS=True for at least one " "django.template.backends.django.DjangoTemplates " "backend configuration." ), id="debug_toolbar.W006", ) ) # If old style MIDDLEWARE_CLASSES is being used, report an error. if settings.is_overridden("MIDDLEWARE_CLASSES"): errors.append( Warning( "debug_toolbar is incompatible with MIDDLEWARE_CLASSES setting.", hint="Use MIDDLEWARE instead of MIDDLEWARE_CLASSES", id="debug_toolbar.W004", ) ) return errors # Determine the indexes which gzip and/or the toolbar are installed at for i, middleware in enumerate(settings.MIDDLEWARE): if is_middleware_class(GZipMiddleware, middleware): gzip_index = i elif is_middleware_class(DebugToolbarMiddleware, middleware): debug_toolbar_indexes.append(i) if not debug_toolbar_indexes: # If the toolbar does not appear, report an error. errors.append( Warning( "debug_toolbar.middleware.DebugToolbarMiddleware is missing " "from MIDDLEWARE.", hint="Add debug_toolbar.middleware.DebugToolbarMiddleware to " "MIDDLEWARE.", id="debug_toolbar.W001", ) ) elif len(debug_toolbar_indexes) != 1: # If the toolbar appears multiple times, report an error. errors.append( Warning( "debug_toolbar.middleware.DebugToolbarMiddleware occurs " "multiple times in MIDDLEWARE.", hint="Load debug_toolbar.middleware.DebugToolbarMiddleware only " "once in MIDDLEWARE.", id="debug_toolbar.W002", ) ) elif gzip_index is not None and debug_toolbar_indexes[0] < gzip_index: # If the toolbar appears before the gzip index, report an error. errors.append( Warning( "debug_toolbar.middleware.DebugToolbarMiddleware occurs before " "django.middleware.gzip.GZipMiddleware in MIDDLEWARE.", hint="Move debug_toolbar.middleware.DebugToolbarMiddleware to " "after django.middleware.gzip.GZipMiddleware in MIDDLEWARE.", id="debug_toolbar.W003", ) ) return errors @register def check_panel_configs(app_configs, **kwargs): """Allow each panel to check the toolbar's integration for its own purposes.""" from debug_toolbar.toolbar import DebugToolbar errors = [] for panel_class in DebugToolbar.get_panel_classes(): errors.extend(panel_class.run_checks()) return errors def is_middleware_class(middleware_class, middleware_path): try: middleware_cls = import_string(middleware_path) except ImportError: return return inspect.isclass(middleware_cls) and issubclass( middleware_cls, middleware_class ) @register def check_panels(app_configs, **kwargs): errors = [] panels = dt_settings.get_panels() if not panels: errors.append( Warning( "Setting DEBUG_TOOLBAR_PANELS is empty.", hint="Set DEBUG_TOOLBAR_PANELS to a non-empty list in your " "settings.py.", id="debug_toolbar.W005", ) ) return errors @register def js_mimetype_check(app_configs, **kwargs): """ Check that JavaScript files are resolving to the correct content type. """ # Ideally application/javascript is returned, but text/javascript is # acceptable. javascript_types = {"application/javascript", "text/javascript"} check_failed = not set(mimetypes.guess_type("toolbar.js")).intersection( javascript_types ) if check_failed: return [ Warning( "JavaScript files are resolving to the wrong content type.", hint="The Django Debug Toolbar may not load properly while mimetypes are misconfigured. " "See the Django documentation for an explanation of why this occurs.\n" "https://docs.djangoproject.com/en/stable/ref/contrib/staticfiles/#static-file-development-view\n" "\n" "This typically occurs on Windows machines. The suggested solution is to modify " "HKEY_CLASSES_ROOT in the registry to specify the content type for JavaScript " "files.\n" "\n" "[HKEY_CLASSES_ROOT\\.js]\n" '"Content Type"="application/javascript"', id="debug_toolbar.W007", ) ] return [] @register def debug_toolbar_installed_when_running_tests_check(app_configs, **kwargs): """ Check that the toolbar is not being used when tests are running """ # Check if show toolbar callback has changed show_toolbar_changed = ( dt_settings.get_config()["SHOW_TOOLBAR_CALLBACK"] != CONFIG_DEFAULTS["SHOW_TOOLBAR_CALLBACK"] ) if not hasattr(settings, "ROOT_URLCONF"): # reverse will raise AttributeError if ROOT_URLCONF is not defined toolbar_urls_installed = False else: try: # Check if the toolbar's urls are installed reverse(f"{APP_NAME}:render_panel") toolbar_urls_installed = True except NoReverseMatch: toolbar_urls_installed = False # If the user is using the default SHOW_TOOLBAR_CALLBACK, # then the middleware will respect the change to settings.DEBUG. # However, if the user has changed the callback to: # DEBUG_TOOLBAR_CONFIG = {"SHOW_TOOLBAR_CALLBACK": lambda request: DEBUG} # where DEBUG is not settings.DEBUG, then it won't pick up that Django' # test runner has changed the value for settings.DEBUG, and the middleware # will inject the toolbar, while the URLs aren't configured leading to a # NoReverseMatch error. likely_error_setup = show_toolbar_changed and not toolbar_urls_installed if ( not settings.DEBUG and dt_settings.get_config()["IS_RUNNING_TESTS"] and likely_error_setup ): return [ Error( "The Django Debug Toolbar can't be used with tests", hint="Django changes the DEBUG setting to False when running " "tests. By default the Django Debug Toolbar is installed because " "DEBUG is set to True. For most cases, you need to avoid installing " "the toolbar when running tests. If you feel this check is in error, " "you can set `DEBUG_TOOLBAR_CONFIG['IS_RUNNING_TESTS'] = False` to " "bypass this check.", id="debug_toolbar.E001", ) ] else: return [] @register def check_settings(app_configs, **kwargs): errors = [] USER_CONFIG = getattr(settings, "DEBUG_TOOLBAR_CONFIG", {}) if "OBSERVE_REQUEST_CALLBACK" in USER_CONFIG: errors.append( Warning( "The deprecated OBSERVE_REQUEST_CALLBACK setting is present in DEBUG_TOOLBAR_CONFIG.", hint="Use the UPDATE_ON_FETCH and/or SHOW_TOOLBAR_CALLBACK settings instead.", id="debug_toolbar.W008", ) ) return errors python-django-debug-toolbar-8.0.0/debug_toolbar/decorators.py000066400000000000000000000026211524561404200243570ustar00rootroot00000000000000import functools from asgiref.sync import iscoroutinefunction from django.http import Http404 from django.utils.translation import get_language, override as language_override from debug_toolbar import settings as dt_settings def require_show_toolbar(view): """ Async compatible decorator to restrict access to a view based on the Debug Toolbar's visibility settings. """ from debug_toolbar.middleware import get_show_toolbar if iscoroutinefunction(view): @functools.wraps(view) async def inner(request, *args, **kwargs): show_toolbar = get_show_toolbar(async_mode=True) if not await show_toolbar(request): raise Http404 return await view(request, *args, **kwargs) else: @functools.wraps(view) def inner(request, *args, **kwargs): show_toolbar = get_show_toolbar(async_mode=False) if not show_toolbar(request): raise Http404 return view(request, *args, **kwargs) return inner def render_with_toolbar_language(view): """Force any rendering within the view to use the toolbar's language.""" @functools.wraps(view) def inner(request, *args, **kwargs): lang = dt_settings.get_config()["TOOLBAR_LANGUAGE"] or get_language() with language_override(lang): return view(request, *args, **kwargs) return inner python-django-debug-toolbar-8.0.0/debug_toolbar/forms.py000066400000000000000000000030211524561404200233330ustar00rootroot00000000000000import json from django import forms from django.core import signing from django.core.exceptions import ValidationError from debug_toolbar.sanitize import force_str class SignedDataForm(forms.Form): """Helper form that wraps a form to validate its contents on post. class PanelForm(forms.Form): # fields On render: form = SignedDataForm(initial=PanelForm(initial=data).initial) On POST: signed_form = SignedDataForm(request.POST) if signed_form.is_valid(): panel_form = PanelForm(signed_form.verified_data) if panel_form.is_valid(): # Success """ salt = "django_debug_toolbar" signed = forms.CharField(required=True, widget=forms.HiddenInput) def __init__(self, *args, **kwargs): initial = kwargs.pop("initial", None) if initial: initial = {"signed": self.sign(initial)} super().__init__(*args, initial=initial, **kwargs) def clean_signed(self): try: verified = json.loads( signing.Signer(salt=self.salt).unsign(self.cleaned_data["signed"]) ) return verified except signing.BadSignature as exc: raise ValidationError("Bad signature") from exc def verified_data(self): return self.is_valid() and self.cleaned_data["signed"] @classmethod def sign(cls, data): return signing.Signer(salt=cls.salt).sign( json.dumps({key: force_str(value) for key, value in data.items()}) ) python-django-debug-toolbar-8.0.0/debug_toolbar/locale/000077500000000000000000000000001524561404200230765ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/bg/000077500000000000000000000000001524561404200234665ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/bg/LC_MESSAGES/000077500000000000000000000000001524561404200252535ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/bg/LC_MESSAGES/django.mo000066400000000000000000000270771524561404200270670ustar00rootroot00000000000000Þ•‹t¿ÌÈ JÉ  / lM Nº . .8 Ug ½ Í Ý ò ), @ J Tbi p z…�"œ¿FÅ  $)/ 8$Diz‚ˆN�ß è(ö ; H'Rz €�–ž £°¸½ÆÕéúþ #* / ;1H z …�Ÿ ¤®¶» ¿ÉÏÞ ïù #3<K\ ` nL{ È Õ âï÷ %h-– ¯"Ð ó56=EUh… –& ¦Çn's›¤µÄÌ Û çò# +9?HP Yg xŽ……ššk5&¡)È�òs‚Zö7Qe‰ïÿ$14f‚ ‘ ›©ºÉ Ü çô/CJÊÞö  -M;/‰¹Ì Õ£öš ®^¼& B ^ Z~ Ù æ û ! !0"!S! b!o!!+—! Ã!ä!-í!"8" V"a"h"€"f™"##'6#^#c# s#~#…#Š# ¡#®#½#Î#ã# ó#($")$ L$(Y$"‚$¥$©$¾$Y×$1% B%O%n%�%”%1¯% á%î%¢ý%9 &cÚ&[>'š'aº'(/(0B(s(=�(%Í(ó(9)^<) ›*^¦*+*+%F+l+(+¨+Æ+Ú++ì+,,/,;B,~,�, ¤, ±,"¾,(á, -•-‘­-PoWUE'},%:‡‹&C1Za*r=[Gy…O6K7 {x+!uD4€M@-)NXp#TV†Lt^bhcgj9Y<e2]Sƒ?;�Hm(BŠ35 ‚"> /w‰ \0z8 $|nIsqˆRQi.J`„Akf F~dl_v%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s similar queries.%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(query_count)d query in %(sql_time).2fms%(query_count)d queries in %(sql_time).2fms%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveArgumentsAutocommitBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDebug ToolbarDisable for next and successive requestsDuplicated %(dupes)s times.Elapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarHistoryIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLocationLocation:MethodNameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo originNo session dataNonePOST dataPackagePathPerProfilingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest VariablesRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL queries from %(count)d connectionSQL queries from %(count)d connectionsSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static fileStatic filesStatic file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)StatusSummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime since navigation start (+duration)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environand %(dupes)s duplicatesincluding %(count)s similarProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: arneatec , 2022 Language-Team: Bulgarian (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/bg/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: bg Plural-Forms: nplurals=2; plural=(n != 1); %(cache_calls)d извикване за %(time).2fms%(cache_calls)d извикваниÑ� за %(time).2fms%(count)s подобни заÑ�вки.%(num)s заÑ�вка%(num)s заÑ�вки%(num_receivers)d приемник на %(num_signals)d Ñ�игнала%(num_receivers)d приемника на %(num_signals)d Ñ�игнала%(num_receivers)d получател на 1 Ñ�игнал%(num_receivers)d получатели на 1 Ñ�игнал%(num_used)s файл използван%(num_used)s файла Ñ�а използвани%(payload_count)s файл%(payload_count)s файла%(query_count)d заÑ�вка за %(sql_time).2fms%(query_count)d заÑ�вки за %(sql_time).2fms%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d волеви, %(ivcsw)d неволеви(префикÑ� %(prefix)s)(неÑ�Ñ�ен)ДейÑ�твиеÐ�ктивенÐ�ргументиAutocommitБекендВреме в браузъраПроцеÑ�ор: %(cum)0.2fms (%(total)0.2fms)КешИзвикваниÑ� на кеша от %(count)d бекендИзвикваниÑ� на кеша от %(count)d бекендаКеш уÑ�пехиКеш неуÑ�пехиИзвикванеИзвикваниÑ�КомандиВръзка:КонтекÑ�тен процеÑ�орКонтекÑ�тни процеÑ�ориКонтекÑ�тни превключваниÑ�БиÑ�квиткиБройКумулативноВремеДанните за този панел вече не Ñ�а налични. МолÑ�, презаредете Ñ�траницата и опитайте отново. База данниDebug ToolbarДеактивирай за Ñ�ледващо и вÑ�ички поÑ�ледващи заÑ�вкиПовторени %(dupes)s пъти.Изминало времеПразно множеÑ�твоÐ�ктивирай за Ñ�ледващо и вÑ�ички поÑ�ледващи заÑ�вкиГрешкаИзпълнен SQLGET данниХедъриСкрийСкрий лента Ñ� инÑ�трументи ИÑ�ториÑ�Ð�езаетВ грешкаВ транзакциÑ�Прехвани пренаÑ�очваниÑ�Изолационно ниво:КлючÐ�ргументи Ñ� ключови думиМеÑ�тоположениеМеÑ�тоположение:МетодИмеÐ�Ñ�ма GET данниÐ�Ñ�ма POST данниÐ�е Ñ�а запиÑ�ани никакви SQL заÑ�вки по време на тази заÑ�вка.Ð�Ñ�ма биÑ�квиткиÐ�Ñ�ма произходÐ�Ñ�ма данни от Ñ�еÑ�иÑ�таNonePOST данниПакетПътЗаПрофилиранеЗаÑ�вкаRead committedRead uncommittedПолучателиRepeatable readЗаÑ�вкаПроменливи на зÑ�вкатаХедъри на заÑ�вкатаРеÑ�урÑ�Използване на реÑ�урÑ�иХедъри на отговораSQLSQL разÑ�Ñ�ненSQL профилиранSQL заÑ�вки от %(count)d връзкаSQL заÑ�вки от %(count)d връзкиИзбран SQLSerializableДанни на Ñ�еÑ�иÑ�таÐ�аÑ�тройкаÐ�аÑ�тройкиÐ�аÑ�тройки от %sПокажи лента Ñ� инÑ�трументиСигналСигналиПонеже WSGI environ наÑ�ледÑ�ва Ñ�редата на Ñ�ървъра, е показана Ñ�амо важната чаÑ�Ñ‚ от него по-долу.Статичен файлСтатични файловеПриложение Ñ�татичен файлПриложениÑ� Ñ�татично файловеПът към Ñ�татичен файлПътища към Ñ�татични файловеСтатични файловеСтатични файлове (%(num_found)s открити, %(num_used)s използвани)СъÑ�тоÑ�ниеОбобщениеСиÑ�темно процеÑ�орно времеШаблонШаблониПът към шаблонПътища към шаблониПроизход на шаблона:ШаблониШаблони (%(num_templates)s рендерирани)Django Debug Toolbar прехвана пренаÑ�очване към горниÑ� URL Ñ� цел преглед за отÑ�транÑ�ване на грешки /дебъг/. Можете да кликнете върху връзката по-горе, за да продължите Ñ� пренаÑ�очването по нормалниÑ� начин.ВремеВреме от началото на навигациÑ�та (+продължителноÑ�Ñ‚)Във времетоÐ�трибут на измерванетоПревключи контекÑ�таОбщоВремеОбщо процеÑ�орно времеОбщо извикваниÑ�Общо времеОбщо: %0.2fmsСтатуÑ� на транзакциÑ�та:ВидИме на URLÐ�епознатоПотребителÑ�ко процеÑ�орно време СтойноÑ�тПроменливаВерÑ�иÑ�ВерÑ�ииФункциÑ� на изгледаИнформациÑ� за изгледаWSGI environи %(dupes)s повторениВключва %(count)s подобниpython-django-debug-toolbar-8.0.0/debug_toolbar/locale/bg/LC_MESSAGES/django.po000066400000000000000000000504211524561404200270570ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # arneatec , 2022 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: arneatec , 2022\n" "Language-Team: Bulgarian (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/bg/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "Debug Toolbar" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:77 msgid "Alerts" msgstr "" #: panels/cache.py:168 msgid "Cache" msgstr "Кеш" #: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d извикване за %(time).2fms" msgstr[1] "%(cache_calls)d извикваниÑ� за %(time).2fms" #: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "ИзвикваниÑ� на кеша от %(count)d бекенд" msgstr[1] "ИзвикваниÑ� на кеша от %(count)d бекенда" #: panels/headers.py:31 msgid "Headers" msgstr "Хедъри" #: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "ИÑ�ториÑ�" #: panels/profiling.py:140 msgid "Profiling" msgstr "Профилиране" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Прехвани пренаÑ�очваниÑ�" #: panels/request.py:16 msgid "Request" msgstr "ЗаÑ�вка" #: panels/request.py:38 msgid "" msgstr "" #: panels/request.py:55 msgid "" msgstr "" #: panels/settings.py:17 msgid "Settings" msgstr "Ð�аÑ�тройки" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "Ð�аÑ�тройки от %s" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d получател на 1 Ñ�игнал" msgstr[1] "%(num_receivers)d получатели на 1 Ñ�игнал" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d приемник на %(num_signals)d Ñ�игнала" msgstr[1] "%(num_receivers)d приемника на %(num_signals)d Ñ�игнала" #: panels/signals.py:67 msgid "Signals" msgstr "Сигнали" #: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "Read uncommitted" #: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "Read committed" #: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "Repeatable read" #: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Serializable" #: panels/sql/panel.py:39 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "Ð�езает" #: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Ð�ктивен" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "Ð’ транзакциÑ�" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "Ð’ грешка" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "Ð�епознато" #: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" #: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "%(query_count)d заÑ�вка за %(sql_time).2fms" msgstr[1] "%(query_count)d заÑ�вки за %(sql_time).2fms" #: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "SQL заÑ�вки от %(count)d връзка" msgstr[1] "SQL заÑ�вки от %(count)d връзки" #: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Статични файлове (%(num_found)s открити, %(num_used)s използвани)" #: panels/staticfiles.py:103 msgid "Static files" msgstr "Статични файлове" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s файл използван" msgstr[1] "%(num_used)s файла Ñ�а използвани" #: panels/templates/panel.py:101 msgid "Templates" msgstr "Шаблони" #: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Шаблони (%(num_templates)s рендерирани)" #: panels/templates/panel.py:195 msgid "No origin" msgstr "Ð�Ñ�ма произход" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "ПроцеÑ�ор: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Общо: %0.2fms" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Време" #: panels/timer.py:46 msgid "User CPU time" msgstr "ПотребителÑ�ко процеÑ�орно време " #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "%(utime)0.3f ms" #: panels/timer.py:47 msgid "System CPU time" msgstr "СиÑ�темно процеÑ�орно време" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "%(stime)0.3f ms" #: panels/timer.py:48 msgid "Total CPU time" msgstr "Общо процеÑ�орно време" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "%(total)0.3f ms" #: panels/timer.py:49 msgid "Elapsed time" msgstr "Изминало време" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "%(total_time)0.3f ms" #: panels/timer.py:51 msgid "Context switches" msgstr "КонтекÑ�тни превключваниÑ�" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d волеви, %(ivcsw)d неволеви" #: panels/versions.py:19 msgid "Versions" msgstr "ВерÑ�ии" #: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Скрий лента Ñ� инÑ�трументи " #: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Скрий" #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 msgid "Toggle Theme" msgstr "" #: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Покажи лента Ñ� инÑ�трументи" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "Деактивирай за Ñ�ледващо и вÑ�ички поÑ�ледващи заÑ�вки" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "Ð�ктивирай за Ñ�ледващо и вÑ�ички поÑ�ледващи заÑ�вки" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Обобщение" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Общо извикваниÑ�" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Общо време" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Кеш уÑ�пехи" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Кеш неуÑ�пехи" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Команди" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "ИзвикваниÑ�" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Вид" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Ð�ргументи" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Ð�ргументи Ñ� ключови думи" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Бекенд" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "Хедъри на заÑ�вката" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Ключ" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "СтойноÑ�Ñ‚" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Хедъри на отговора" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "WSGI environ" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "Понеже WSGI environ наÑ�ледÑ�ва Ñ�редата на Ñ�ървъра, е показана Ñ�амо важната чаÑ�Ñ‚ от него по-долу." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "Метод" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "Път" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "Променливи на зÑ�вката" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "СъÑ�тоÑ�ние" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "ДейÑ�твие" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "Променлива" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Извикване" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "КумулативноВреме" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "За" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "ОбщоВреме" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Брой" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "ИнформациÑ� за изгледа" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "ФункциÑ� на изгледа" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "Име на URL" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "БиÑ�квитки" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "Ð�Ñ�ма биÑ�квитки" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "Данни на Ñ�еÑ�иÑ�та" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "Ð�Ñ�ма данни от Ñ�еÑ�иÑ�та" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "GET данни" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "Ð�Ñ�ма GET данни" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "POST данни" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "Ð�Ñ�ма POST данни" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Ð�аÑ�тройка" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Сигнал" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "Получатели" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s заÑ�вка" msgstr[1] "%(num)s заÑ�вки" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "Включва %(count)s подобни" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "и %(dupes)s повторени" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "ЗаÑ�вка" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Във времето" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "%(count)s подобни заÑ�вки." #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "Повторени %(dupes)s пъти." #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "Връзка:" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "Изолационно ниво:" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "СтатуÑ� на транзакциÑ�та:" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "(неÑ�Ñ�ен)" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "Ð�е Ñ�а запиÑ�ани никакви SQL заÑ�вки по време на тази заÑ�вка." #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL разÑ�Ñ�нен" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Изпълнен SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "База данни" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL профилиран" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Грешка" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "Избран SQL" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Празно множеÑ�тво" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Път към Ñ�татичен файл" msgstr[1] "Пътища към Ñ�татични файлове" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "(префикÑ� %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "None" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "Приложение Ñ�татичен файл" msgstr[1] "ПриложениÑ� Ñ�татично файлове" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "Статичен файл" msgstr[1] "Статични файлове" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s файл" msgstr[1] "%(payload_count)s файла" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "МеÑ�тоположение" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Произход на шаблона:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Път към шаблон" msgstr[1] "Пътища към шаблони" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Шаблон" msgstr[1] "Шаблони" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "Превключи контекÑ�та" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "КонтекÑ�тен процеÑ�ор" msgstr[1] "КонтекÑ�тни процеÑ�ори" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Използване на реÑ�урÑ�и" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "РеÑ�урÑ�" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Време в браузъра" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Ð�трибут на измерването" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "Време от началото на навигациÑ�та (+продължителноÑ�Ñ‚)" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "Пакет" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "Име" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "ВерÑ�иÑ�" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "МеÑ�тоположение:" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "Django Debug Toolbar прехвана пренаÑ�очване към горниÑ� URL Ñ� цел преглед за отÑ�транÑ�ване на грешки /дебъг/. Можете да кликнете върху връзката по-горе, за да продължите Ñ� пренаÑ�очването по нормалниÑ� начин." #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Данните за този панел вече не Ñ�а налични. МолÑ�, презаредете Ñ�траницата и опитайте отново. " python-django-debug-toolbar-8.0.0/debug_toolbar/locale/ca/000077500000000000000000000000001524561404200234615ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/ca/LC_MESSAGES/000077500000000000000000000000001524561404200252465ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/ca/LC_MESSAGES/django.mo000066400000000000000000000050171524561404200270500ustar00rootroot00000000000000Þ•5ÄGlˆ ‰“𡩝´º ÃÏÕ Þë ñþ '+ 4> C O\ae ku}† Š—Ÿ ¨µ¼Ä ÌÖÛä ì ø%.6?§P ø !'.5 > I S an t�‘˜¬» À ÊÕÙéúþ   % ) 2 @ N d k s y „ ‰ ™ ¤ ± ½ Ì Ò Ý ã ì ô ý *,&(- '+ 02 3 ".5! )%$ 1/#4(unknown)ActionActiveBackendCacheCallCallsCommandsConnection:CountDatabaseElapsed timeErrorExecuted SQLHeadersHideHide toolbarIn transactionKeyLocationLocation:NameNo GET dataNo POST dataNonePerQueryReceiversRequestResourceSQLSerializableSettingSettingsShow toolbarSignalSignalsSummaryTemplatesTimeTimelineTotTimeTotal callsTotal timeTotal: %0.2fmsTypeUnknownValueVariableVersionVersionsView informationProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: el_libre como el chaval , 2013 Language-Team: Catalan (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/ca/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: ca Plural-Forms: nplurals=2; plural=(n != 1); (desconegut)AccióActiuAdministracióCaxèCridarCridesComandesConnexió:RecomptarBase de dadesTemps empratErrorSQL ExecutatEncapçalamentsAmagarAmagar barra d'einaEn transaccióClauUbicacióUbicació:NomSense dades GETSense dades POSTCapPerPeticióDestinatarisDemanarFontSQLSeriableConfiguracióConfiguracióMostrar barra d'einesSenyalSenyalsResumPlantillesHoraLínia temporalTempsTotalTotal cridesTotal tempsTotal: %0.2fmsTipusDesconegutValorVariableVersióVersionsVeure informaciópython-django-debug-toolbar-8.0.0/debug_toolbar/locale/ca/LC_MESSAGES/django.po000066400000000000000000000372451524561404200270630ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # el_libre como el chaval , 2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: el_libre como el chaval , 2013\n" "Language-Team: Catalan (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:77 msgid "Alerts" msgstr "" #: panels/cache.py:168 msgid "Cache" msgstr "Caxè" #: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" #: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" #: panels/headers.py:31 msgid "Headers" msgstr "Encapçalaments" #: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" #: panels/profiling.py:140 msgid "Profiling" msgstr "" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "" #: panels/request.py:16 msgid "Request" msgstr "Demanar" #: panels/request.py:38 msgid "" msgstr "" #: panels/request.py:55 msgid "" msgstr "" #: panels/settings.py:17 msgid "Settings" msgstr "Configuració" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" msgstr[1] "" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" msgstr[1] "" #: panels/signals.py:67 msgid "Signals" msgstr "Senyals" #: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "" #: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Seriable" #: panels/sql/panel.py:39 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "" #: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Actiu" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "En transacció" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "Desconegut" #: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" #: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" msgstr[1] "" #: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" #: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:103 msgid "Static files" msgstr "" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" #: panels/templates/panel.py:101 msgid "Templates" msgstr "Plantilles" #: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "" #: panels/templates/panel.py:195 msgid "No origin" msgstr "" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Total: %0.2fms" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Hora" #: panels/timer.py:46 msgid "User CPU time" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "" #: panels/timer.py:47 msgid "System CPU time" msgstr "" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "" #: panels/timer.py:48 msgid "Total CPU time" msgstr "" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "" #: panels/timer.py:49 msgid "Elapsed time" msgstr "Temps emprat" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "" #: panels/timer.py:51 msgid "Context switches" msgstr "" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:19 msgid "Versions" msgstr "Versions" #: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Amagar barra d'eina" #: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Amagar" #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 msgid "Toggle Theme" msgstr "" #: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Mostrar barra d'eines" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Resum" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Total crides" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Total temps" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Comandes" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Crides" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Tipus" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Administració" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Clau" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Valor" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "Acció" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "Variable" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Cridar" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Per" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TempsTotal" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Recomptar" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Veure informació" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "Sense dades GET" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "Sense dades POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Configuració" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Senyal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "Destinataris" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "Petició" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Línia temporal" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "" #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "Connexió:" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "(desconegut)" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL Executat" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Base de dades" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Error" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "Cap" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "Ubicació" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "Plantilles" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Font" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "Nom" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "Versió" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "Ubicació:" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" python-django-debug-toolbar-8.0.0/debug_toolbar/locale/cs/000077500000000000000000000000001524561404200235035ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/cs/LC_MESSAGES/000077500000000000000000000000001524561404200252705ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/cs/LC_MESSAGES/django.mo000066400000000000000000000250501524561404200270710ustar00rootroot00000000000000Þ•‰d¿¬¨ J© ô  l- Nš .é . UG � ­ ½ Ò )â    * 4BI P Zem"|ŸF¥ ì ÷  $$IZbhNp¿ È(Ö ÿ '> DQZb gt|�Š™­¾ÂÔ Ýçî ó ÿ1  > ISc hrz ƒ�“¢ ³½ÍÕç÷  $ 2L? Œ ™ ¦³» ÄÑØhàI b"ƒ ¦5³éðø8 I&S¦z!'&NWhw Ž š¥´ÈÍÖ Þìòû  +Ž8…ÇÏM³Ñ<ïÝ,¡ w¬h$¿�M]m‚-’À Ôàò   )1"K nªz%=R[ d nJxÃ׿ íQ÷ I S !a ƒ ’ !¡ à É Ù ç ñ ø !!!0!B!^!p!w!Ž!•!�!¤!«!Â!:Ú!" -":"P"Y" h"r"x" Š"˜"ž"­" ¾"É" Ù"ä"ú" ##-#>#B#S#€d# å# ò# ÿ# $ $"$2$:$iC$F­$ô$wt%ì%Cþ%B&G&N&#c&J‡&Ò&â&,ë&¹'Ò'&×' þ' ((%(.(@( P(^(n(~( ‚( �(—(®( ¶(Á(Ç(Í("ß()‹)ˆŸ)OmVTD'{+%9…&B0}k*p<ZFwƒN5J6 yvY!sC3~L?,)MWn#SU„K‰]`faeh8X;c1\R�>:Gr(Aˆ24 €"= .u‡ [/x7 $zlHqo†QPg-I_‚@id E|bj^t%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s similar queries.%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(query_count)d query in %(sql_time).2fms%(query_count)d queries in %(sql_time).2fms%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveArgumentsAutocommitBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDebug ToolbarDisable for next and successive requestsElapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarHistoryIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLocationLocation:MethodNameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo originNo session dataNonePOST dataPackagePathPerProfilingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest VariablesRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL queries from %(count)d connectionSQL queries from %(count)d connectionsSQL selectedSerializableSession dataSettingSettingsShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static fileStatic filesStatic file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)StatusSummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime since navigation start (+duration)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environand %(dupes)s duplicatesincluding %(count)s similarProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: kuboja, 2024 Language-Team: Czech (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/cs/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: cs Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3; %(cache_calls)d volání bÄ›hem %(time).2fms%(cache_calls)d volání bÄ›hem %(time).2fms%(cache_calls)d volání bÄ›hem %(time).2fms%(cache_calls)d volání bÄ›hem %(time).2fms%(count)s podobných dotazů.%(num)s dotaz%(num)s dotazy%(num)s dotazů%(num)s dotazů%(num_receivers)d příjemce %(num_signals)d signálů%(num_receivers)d příjemci %(num_signals)d signálů%(num_receivers)d příjemců %(num_signals)d signálů%(num_receivers)d příjemců %(num_signals)d signálů%(num_receivers)d příjemce 1 signálu%(num_receivers)d příjemci 1 signálu%(num_receivers)d příjemců 1 signálu%(num_receivers)d příjemců 1 signálu%(num_used)s soubor použit%(num_used)s soubory použity%(num_used)s souborů použito%(num_used)s souborů použito%(payload_count)s soubor%(payload_count)s soubory%(payload_count)s souborů%(payload_count)s souborů%(query_count)ddotaz bÄ›hem %(sql_time).2f ms%(query_count)d dotazy bÄ›hem %(sql_time).2f ms%(query_count)d dotazů bÄ›hem %(sql_time).2f ms%(query_count)d dotazů bÄ›hem %(sql_time).2f ms%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d dobrovolnÄ›, %(ivcsw)d nedobrovolnÄ›(prefix %(prefix)s)(neznámé)<žádný pohled>AkceAktivníArgumentyAutocommitBackendÄŒasování prohlížeÄ�eCPU: %(cum)0.2fms (%(total)0.2fms)MezipaměťVolání mezipamÄ›ti z %(count)d backenduVolání mezipamÄ›ti z %(count)d backendůVolání mezipamÄ›ti z %(count)d backendůVolání mezipamÄ›ti z %(count)d backendůNalezení v mezipamÄ›tiNebylo v mezipamÄ›tiVoláníVoláníPříkazySpojení:Procesor kontextuProcesory kontextuProcesory kontextuProcesory kontextuPÅ™epnutí kontextuSoubory cookiePoÄ�etKumulÄŒasData pro tento panel již nejsou k dispozici. Obnovte stránku a zkuste to znova.DatabázeDebug ToolbarVypnout pro následné požadavkyUplynulý Ä�asPrázdná sadaZapnout pro následné požadavkyChybaSpuÅ¡tÄ›né SQLData typu GETHlaviÄ�kySkrýtSkrýt liÅ¡tuHistorieV klidu (idle)V chybovém stavuUvnitÅ™ transakceZachycení pÅ™esmÄ›rováníÚroveň izolace:KlíÄ�KlíÄ�ované argumentyAdresaAdresa:MetodaNázevŽádná data typu GETŽádná data typu POSTPro tento požadavek nebyl zaznamenán žádný dotaz SQL.Žádné soubory cookieZdroj chybíŽádná data sezeníŽádnéData typu POSTBalíÄ�ekCestaCelk. za voláníProfilováníDotazRead committedRead uncommittedPříjemciRepeatable readPožadavekPromÄ›nné požadavkuZáhlaví požadavkuProstÅ™edekVyužití zdrojůZáhlaví odezvySQLVysvÄ›tlené SQLProfilované SQLSQL dotazy z %(count)d spojeníSQL dotazy ze %(count)d spojeníSQL dotazy z %(count)d spojeníSQL dotazy z %(count)d spojeníVybrané SQLSerializableData sezeníNastaveníNastaveníZobrazit liÅ¡tuSignálSignályNíže je zobrazena pouze podstatná Ä�ást promÄ›nných prostÅ™edí, protože WSGI je dÄ›dí od serveru.Statický souborStatické souboryStatické souboryStatické souboryAplikace se statickými souboryAplikace se statickými souboryAplikace se statickými souboryAplikace se statickými souboryCesta ke statickým souborůmCesty ke statickým souborůmCesty ke statickým souborůmCesty ke statickým souborůmStatické souboryStatické soubory (nalezeno: %(num_found)s, použito: %(num_used)s)StavSouhrnSystémový Ä�as CPUÅ ablonaÅ ablonyÅ ablonyÅ ablonyCesta k Å¡ablonÄ›Cesty k Å¡ablonámCesty k Å¡ablonámCesty k Å¡ablonámZdroj Å¡ablony:Å ablonyÅ ablony (renderovaných: %(num_templates)s)Aplikace Django Debug Toolbar zachytila pÅ™esmÄ›rování na výše uvedenou adresu URL za úÄ�elem ladicího zobrazení. Chcete-li pÅ™esmÄ›rování dokonÄ�it, klepnÄ›te na odkaz výše.ÄŒasÄŒas od zaÄ�átku navigace (+trvání)ÄŒasová osaAtributZap./vyp. kontextCelkÄŒasCelkový Ä�as CPUCelkem voláníCelkový Ä�asCelkem: %0.2fmsStav transakce:TypNázev URLNeznáméUživatelský Ä�as CPUHodnotaPromÄ›nnáVerzeVerzePohledová funkceInformace o pohledových funkcíchProstÅ™edí WSGIa %(dupes)s duplicitníchvÄ�etnÄ› %(count)s podobnýchpython-django-debug-toolbar-8.0.0/debug_toolbar/locale/cs/LC_MESSAGES/django.po000066400000000000000000000474411524561404200271040ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Josef Kolář , 2020 # kuboja, 2024 # VláÄ�a Macek , 2013-2014 # VláÄ�a Macek , 2015,2021 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: kuboja, 2024\n" "Language-Team: Czech (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" "Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "Debug Toolbar" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:77 msgid "Alerts" msgstr "" #: panels/cache.py:168 msgid "Cache" msgstr "Mezipaměť" #: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d volání bÄ›hem %(time).2fms" msgstr[1] "%(cache_calls)d volání bÄ›hem %(time).2fms" msgstr[2] "%(cache_calls)d volání bÄ›hem %(time).2fms" msgstr[3] "%(cache_calls)d volání bÄ›hem %(time).2fms" #: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Volání mezipamÄ›ti z %(count)d backendu" msgstr[1] "Volání mezipamÄ›ti z %(count)d backendů" msgstr[2] "Volání mezipamÄ›ti z %(count)d backendů" msgstr[3] "Volání mezipamÄ›ti z %(count)d backendů" #: panels/headers.py:31 msgid "Headers" msgstr "HlaviÄ�ky" #: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "Historie" #: panels/profiling.py:140 msgid "Profiling" msgstr "Profilování" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Zachycení pÅ™esmÄ›rování" #: panels/request.py:16 msgid "Request" msgstr "Požadavek" #: panels/request.py:38 msgid "" msgstr "<žádný pohled>" #: panels/request.py:55 msgid "" msgstr "" #: panels/settings.py:17 msgid "Settings" msgstr "Nastavení" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d příjemce 1 signálu" msgstr[1] "%(num_receivers)d příjemci 1 signálu" msgstr[2] "%(num_receivers)d příjemců 1 signálu" msgstr[3] "%(num_receivers)d příjemců 1 signálu" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d příjemce %(num_signals)d signálů" msgstr[1] "%(num_receivers)d příjemci %(num_signals)d signálů" msgstr[2] "%(num_receivers)d příjemců %(num_signals)d signálů" msgstr[3] "%(num_receivers)d příjemců %(num_signals)d signálů" #: panels/signals.py:67 msgid "Signals" msgstr "Signály" #: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "Read uncommitted" #: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "Read committed" #: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "Repeatable read" #: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Serializable" #: panels/sql/panel.py:39 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "V klidu (idle)" #: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Aktivní" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "UvnitÅ™ transakce" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "V chybovém stavu" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "Neznámé" #: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" #: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "%(query_count)ddotaz bÄ›hem %(sql_time).2f ms" msgstr[1] "%(query_count)d dotazy bÄ›hem %(sql_time).2f ms" msgstr[2] "%(query_count)d dotazů bÄ›hem %(sql_time).2f ms" msgstr[3] "%(query_count)d dotazů bÄ›hem %(sql_time).2f ms" #: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "SQL dotazy z %(count)d spojení" msgstr[1] "SQL dotazy ze %(count)d spojení" msgstr[2] "SQL dotazy z %(count)d spojení" msgstr[3] "SQL dotazy z %(count)d spojení" #: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Statické soubory (nalezeno: %(num_found)s, použito: %(num_used)s)" #: panels/staticfiles.py:103 msgid "Static files" msgstr "Statické soubory" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s soubor použit" msgstr[1] "%(num_used)s soubory použity" msgstr[2] "%(num_used)s souborů použito" msgstr[3] "%(num_used)s souborů použito" #: panels/templates/panel.py:101 msgid "Templates" msgstr "Å ablony" #: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Å ablony (renderovaných: %(num_templates)s)" #: panels/templates/panel.py:195 msgid "No origin" msgstr "Zdroj chybí" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Celkem: %0.2fms" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "ÄŒas" #: panels/timer.py:46 msgid "User CPU time" msgstr "Uživatelský Ä�as CPU" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "%(utime)0.3f ms" #: panels/timer.py:47 msgid "System CPU time" msgstr "Systémový Ä�as CPU" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "%(stime)0.3f ms" #: panels/timer.py:48 msgid "Total CPU time" msgstr "Celkový Ä�as CPU" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "%(total)0.3f ms" #: panels/timer.py:49 msgid "Elapsed time" msgstr "Uplynulý Ä�as" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "%(total_time)0.3f ms" #: panels/timer.py:51 msgid "Context switches" msgstr "PÅ™epnutí kontextu" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d dobrovolnÄ›, %(ivcsw)d nedobrovolnÄ›" #: panels/versions.py:19 msgid "Versions" msgstr "Verze" #: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Skrýt liÅ¡tu" #: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Skrýt" #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 msgid "Toggle Theme" msgstr "" #: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Zobrazit liÅ¡tu" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "Vypnout pro následné požadavky" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "Zapnout pro následné požadavky" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Souhrn" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Celkem volání" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Celkový Ä�as" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Nalezení v mezipamÄ›ti" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Nebylo v mezipamÄ›ti" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Příkazy" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Volání" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Typ" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Argumenty" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "KlíÄ�ované argumenty" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Backend" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "Záhlaví požadavku" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "KlíÄ�" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Hodnota" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Záhlaví odezvy" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "ProstÅ™edí WSGI" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "Níže je zobrazena pouze podstatná Ä�ást promÄ›nných prostÅ™edí, protože WSGI je dÄ›dí od serveru." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "Metoda" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "Cesta" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "PromÄ›nné požadavku" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "Stav" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "Akce" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "PromÄ›nná" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Volání" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "KumulÄŒas" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Celk. za volání" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "CelkÄŒas" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "PoÄ�et" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Informace o pohledových funkcích" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "Pohledová funkce" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "Název URL" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Soubory cookie" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "Žádné soubory cookie" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "Data sezení" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "Žádná data sezení" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "Data typu GET" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "Žádná data typu GET" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "Data typu POST" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "Žádná data typu POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Nastavení" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signál" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "Příjemci" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s dotaz" msgstr[1] "%(num)s dotazy" msgstr[2] "%(num)s dotazů" msgstr[3] "%(num)s dotazů" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "vÄ�etnÄ› %(count)s podobných" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "a %(dupes)s duplicitních" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "Dotaz" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "ÄŒasová osa" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "%(count)s podobných dotazů." #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "" #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "Spojení:" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "Úroveň izolace:" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "Stav transakce:" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "(neznámé)" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "Pro tento požadavek nebyl zaznamenán žádný dotaz SQL." #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "VysvÄ›tlené SQL" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SpuÅ¡tÄ›né SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Databáze" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "Profilované SQL" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Chyba" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "Vybrané SQL" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Prázdná sada" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Cesta ke statickým souborům" msgstr[1] "Cesty ke statickým souborům" msgstr[2] "Cesty ke statickým souborům" msgstr[3] "Cesty ke statickým souborům" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "(prefix %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "Žádné" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "Aplikace se statickými soubory" msgstr[1] "Aplikace se statickými soubory" msgstr[2] "Aplikace se statickými soubory" msgstr[3] "Aplikace se statickými soubory" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "Statický soubor" msgstr[1] "Statické soubory" msgstr[2] "Statické soubory" msgstr[3] "Statické soubory" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s soubor" msgstr[1] "%(payload_count)s soubory" msgstr[2] "%(payload_count)s souborů" msgstr[3] "%(payload_count)s souborů" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "Adresa" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Zdroj Å¡ablony:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Cesta k Å¡ablonÄ›" msgstr[1] "Cesty k Å¡ablonám" msgstr[2] "Cesty k Å¡ablonám" msgstr[3] "Cesty k Å¡ablonám" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Å ablona" msgstr[1] "Å ablony" msgstr[2] "Å ablony" msgstr[3] "Å ablony" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "Zap./vyp. kontext" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Procesor kontextu" msgstr[1] "Procesory kontextu" msgstr[2] "Procesory kontextu" msgstr[3] "Procesory kontextu" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Využití zdrojů" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "ProstÅ™edek" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "ÄŒasování prohlížeÄ�e" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Atribut" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "ÄŒas od zaÄ�átku navigace (+trvání)" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "BalíÄ�ek" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "Název" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "Verze" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "Adresa:" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "Aplikace Django Debug Toolbar zachytila pÅ™esmÄ›rování na výše uvedenou adresu URL za úÄ�elem ladicího zobrazení. Chcete-li pÅ™esmÄ›rování dokonÄ�it, klepnÄ›te na odkaz výše." #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Data pro tento panel již nejsou k dispozici. Obnovte stránku a zkuste to znova." python-django-debug-toolbar-8.0.0/debug_toolbar/locale/de/000077500000000000000000000000001524561404200234665ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/de/LC_MESSAGES/000077500000000000000000000000001524561404200252535ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/de/LC_MESSAGES/django.mo000066400000000000000000000230641524561404200270570ustar00rootroot00000000000000Þ•‹t¿ÌÈ JÉ  / lM Nº . .8 Ug ½ Í Ý ò ), @ J Tbi p z…�"œ¿FÅ  $)/ 8$Diz‚ˆN�ß è(ö ; H'Rz €�–ž £°¸½ÆÕéúþ #* / ;1H z …�Ÿ ¤®¶» ¿ÉÏÞ ïù #3<K\ ` nL{ È Õ âï÷ %h-– ¯"Ð ó56=EUh… –& ¦Çn's›¤µÄÌ Û çò# +9?HP Yg xŽ……‡šP"s ‘s²[&7‚1ºZìGWg|+Œ¸ Í Ùåøÿ   "".QHW ²ÁÈÐ Ø%ä !(V/ † �;žÚô 9KR dn u€ “ž¥¬ÁÖ çò "2BC † ”¢¶ ¸ÃÉÎ ÒÜäó    ' 9 H R g v z ‡ M™ ç ÷ ! ! !,!A!T![!pc!!Ô!6ö!8-"f"@x"¹"À"Ð"à"ó"# !#'+#­S#$#$*$2$B$Q$W$g$ v$‚$’$¦$ª$ ³$½$Ï$Ô$Ý$ å$ ï$ý$ %Ž%†­%PoWUE'},%:‡‹&C1Za*r=[Gy…O6K7 {x+!uD4€M@-)NXp#TV†Lt^bhcgj9Y<e2]Sƒ?;�Hm(BŠ35 ‚"> /w‰ \0z8 $|nIsqˆRQi.J`„Akf F~dl_v%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s similar queries.%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(query_count)d query in %(sql_time).2fms%(query_count)d queries in %(sql_time).2fms%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveArgumentsAutocommitBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDebug ToolbarDisable for next and successive requestsDuplicated %(dupes)s times.Elapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarHistoryIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLocationLocation:MethodNameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo originNo session dataNonePOST dataPackagePathPerProfilingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest VariablesRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL queries from %(count)d connectionSQL queries from %(count)d connectionsSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static fileStatic filesStatic file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)StatusSummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime since navigation start (+duration)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environand %(dupes)s duplicatesincluding %(count)s similarProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: Tim Schilling, 2021 Language-Team: German (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/de/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: de Plural-Forms: nplurals=2; plural=(n != 1); %(cache_calls)d Abfrage in %(time).2fms%(cache_calls)d Abfragen in %(time).2fms%(count)s ähnliche Abfragen.%(num)s Abfrage%(num)s Abfragen%(num_receivers)d Empfänger von %(num_signals)d Signalen%(num_receivers)d Empfänger von %(num_signals)d Signalen%(num_receivers)d Empfänger von einem Signal%(num_receivers)d Empfänger von einem Signal%(num_used)s Datei benutzt%(num_used)s Dateien benutzt%(payload_count)s Datei%(payload_count)s Dateien%(query_count)d Abfrage in %(sql_time).2f ms%(query_count)d Abfragen in %(sql_time).2f ms%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d freiwillig, %(ivcsw)d unfreiwillig(Präfix %(prefix)s)(unbekannt)AktionAktivArgumenteAutocommitBackendBrowserzeitCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache-Aufrufe von %(count)d BackendCache-Aufrufe von %(count)d BackendsCache erfolgreichCache verfehltAufrufAufrufeBefehleVerbindung:Context-ProzessorContext-ProzessorenKontextwechselCookiesAnzahlGesamtDie Daten für dieses Panel sind nicht mehr verfügbar. Bitte laden Sie die Seite neu.DatenbankDebug ToolbarFür nächste und die darauffolgenden Anfragen deaktivieren%(dupes)s-mal dupliziert.Verstrichene ZeitLeeres SetFür nächste und die darauffolgenden Anfragen aktivierenFehlerAusgeführtes SQLGET-DatenHeaderAusblendenToolbar ausblendenGeschichteWartetFehlerIn einer TransaktionUmleitungen abfangenIsolationsebene:SchlüsselSchlüsselwort-ArgumenteOrtZiel:MethodeNameKeine GET-DatenKeine POST-DatenEs wurde keine SQL-Abfrage während dieses Vorgangs aufgezeichnet.Keine CookiesKein UrsprungKeine Sitzungsdaten-POST-DatenPaketPfadPerProfilingAbfrageRead committedRead uncommittedEmpfängerRepeatable readAnfrageAnfrage-VariablenAnfrage-HeaderRessourceRessourcenverwendungAntwort-HeaderSQLSQL erklärtSQL durchleuchtetSQL-Abfragen von %(count)d VerbindungSQL-Abfragen von %(count)d VerbindungenSQL ausgewähltSerializableSitzungsdatenEinstellungEinstellungenEinstellungen von %sToolbar einblendenSignalSignaleDa sich die WSGI-Umgebung von der Umgebung des Servers ableitet, wird nur eine notwendige Teilmenge dargestellt.Statische DateiStatische DateienApp mit statischen DateienApps mit statischen DateienPfad mit statischen DateienPfade mit statischen DateienStatische DateienStatische Dateien (%(num_found)s gefunden, %(num_used)s benutzt)StatusZusammenfassungCPU-Zeit SystemTemplateTemplatesTemplate-PfadTemplate-PfadeTemplate-Quelle:TemplatesTemplates (%(num_templates)s gerendert)Die Django Debug Toolbar hat eine Weiterleitung an die obenstehende URL zur weiteren Überprüfung abgefangen. Klicken Sie den Link, um wie gewohnt weitergeleitet zu werden.ZeitZeit seit Seitenaufruf (plus Dauer)VerlaufTiming-AttributContext zeigenTotalCPU-Zeit gesamtAufrufe gesamtZeit gesamtGesamt: %0.2fmsTransaktionsstatus:TypURL-NameUnbekanntCPU-Zeit BenutzerWertVariableVersionVersionenView-FunktionView-InformationenWSGI-Umgebungund %(dupes)s dupliziertinklusive %(count)s ähnlichpython-django-debug-toolbar-8.0.0/debug_toolbar/locale/de/LC_MESSAGES/django.po000066400000000000000000000445301524561404200270630ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Jannis Leidel , 2012-2014,2021 # Matthias Kestenholz , 2021 # Tim Schilling, 2021 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: Tim Schilling, 2021\n" "Language-Team: German (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "Debug Toolbar" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:77 msgid "Alerts" msgstr "" #: panels/cache.py:168 msgid "Cache" msgstr "Cache" #: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d Abfrage in %(time).2fms" msgstr[1] "%(cache_calls)d Abfragen in %(time).2fms" #: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Cache-Aufrufe von %(count)d Backend" msgstr[1] "Cache-Aufrufe von %(count)d Backends" #: panels/headers.py:31 msgid "Headers" msgstr "Header" #: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "Geschichte" #: panels/profiling.py:140 msgid "Profiling" msgstr "Profiling" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Umleitungen abfangen" #: panels/request.py:16 msgid "Request" msgstr "Anfrage" #: panels/request.py:38 msgid "" msgstr "" #: panels/request.py:55 msgid "" msgstr "" #: panels/settings.py:17 msgid "Settings" msgstr "Einstellungen" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "Einstellungen von %s" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d Empfänger von einem Signal" msgstr[1] "%(num_receivers)d Empfänger von einem Signal" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d Empfänger von %(num_signals)d Signalen" msgstr[1] "%(num_receivers)d Empfänger von %(num_signals)d Signalen" #: panels/signals.py:67 msgid "Signals" msgstr "Signale" #: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "Read uncommitted" #: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "Read committed" #: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "Repeatable read" #: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Serializable" #: panels/sql/panel.py:39 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "Wartet" #: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Aktiv" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "In einer Transaktion" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "Fehler" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "Unbekannt" #: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" #: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "%(query_count)d Abfrage in %(sql_time).2f ms" msgstr[1] "%(query_count)d Abfragen in %(sql_time).2f ms" #: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "SQL-Abfragen von %(count)d Verbindung" msgstr[1] "SQL-Abfragen von %(count)d Verbindungen" #: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Statische Dateien (%(num_found)s gefunden, %(num_used)s benutzt)" #: panels/staticfiles.py:103 msgid "Static files" msgstr "Statische Dateien" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s Datei benutzt" msgstr[1] "%(num_used)s Dateien benutzt" #: panels/templates/panel.py:101 msgid "Templates" msgstr "Templates" #: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templates (%(num_templates)s gerendert)" #: panels/templates/panel.py:195 msgid "No origin" msgstr "Kein Ursprung" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Gesamt: %0.2fms" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Zeit" #: panels/timer.py:46 msgid "User CPU time" msgstr "CPU-Zeit Benutzer" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "%(utime)0.3f ms" #: panels/timer.py:47 msgid "System CPU time" msgstr "CPU-Zeit System" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "%(stime)0.3f ms" #: panels/timer.py:48 msgid "Total CPU time" msgstr "CPU-Zeit gesamt" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "%(total)0.3f ms" #: panels/timer.py:49 msgid "Elapsed time" msgstr "Verstrichene Zeit" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "%(total_time)0.3f ms" #: panels/timer.py:51 msgid "Context switches" msgstr "Kontextwechsel" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d freiwillig, %(ivcsw)d unfreiwillig" #: panels/versions.py:19 msgid "Versions" msgstr "Versionen" #: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Toolbar ausblenden" #: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Ausblenden" #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 msgid "Toggle Theme" msgstr "" #: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Toolbar einblenden" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "Für nächste und die darauffolgenden Anfragen deaktivieren" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "Für nächste und die darauffolgenden Anfragen aktivieren" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Zusammenfassung" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Aufrufe gesamt" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Zeit gesamt" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Cache erfolgreich" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Cache verfehlt" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Befehle" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Aufrufe" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Typ" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Argumente" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Schlüsselwort-Argumente" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Backend" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "Anfrage-Header" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Schlüssel" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Wert" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Antwort-Header" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "WSGI-Umgebung" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "Da sich die WSGI-Umgebung von der Umgebung des Servers ableitet, wird nur eine notwendige Teilmenge dargestellt." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "Methode" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "Pfad" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "Anfrage-Variablen" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "Status" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "Aktion" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "Variable" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Aufruf" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "Gesamt" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Per" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "Total" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Anzahl" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "View-Informationen" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "View-Funktion" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "URL-Name" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookies" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "Keine Cookies" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "Sitzungsdaten" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "Keine Sitzungsdaten" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "GET-Daten" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "Keine GET-Daten" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "POST-Daten" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "Keine POST-Daten" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Einstellung" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "Empfänger" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s Abfrage" msgstr[1] "%(num)s Abfragen" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "inklusive %(count)s ähnlich" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "und %(dupes)s dupliziert" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "Abfrage" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Verlauf" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "%(count)s ähnliche Abfragen." #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "%(dupes)s-mal dupliziert." #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "Verbindung:" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "Isolationsebene:" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "Transaktionsstatus:" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "(unbekannt)" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "Es wurde keine SQL-Abfrage während dieses Vorgangs aufgezeichnet." #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL erklärt" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Ausgeführtes SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Datenbank" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL durchleuchtet" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Fehler" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "SQL ausgewählt" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Leeres Set" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Pfad mit statischen Dateien" msgstr[1] "Pfade mit statischen Dateien" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "(Präfix %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "-" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "App mit statischen Dateien" msgstr[1] "Apps mit statischen Dateien" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "Statische Datei" msgstr[1] "Statische Dateien" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s Datei" msgstr[1] "%(payload_count)s Dateien" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "Ort" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Template-Quelle:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Template-Pfad" msgstr[1] "Template-Pfade" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Template" msgstr[1] "Templates" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "Context zeigen" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Context-Prozessor" msgstr[1] "Context-Prozessoren" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Ressourcenverwendung" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Ressource" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Browserzeit" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Timing-Attribut" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "Zeit seit Seitenaufruf (plus Dauer)" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "Paket" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "Name" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "Version" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "Ziel:" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "Die Django Debug Toolbar hat eine Weiterleitung an die obenstehende URL zur weiteren Überprüfung abgefangen. Klicken Sie den Link, um wie gewohnt weitergeleitet zu werden." #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Die Daten für dieses Panel sind nicht mehr verfügbar. Bitte laden Sie die Seite neu." python-django-debug-toolbar-8.0.0/debug_toolbar/locale/en/000077500000000000000000000000001524561404200235005ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/en/LC_MESSAGES/000077500000000000000000000000001524561404200252655ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/en/LC_MESSAGES/django.mo000066400000000000000000000005251524561404200270660ustar00rootroot00000000000000Þ•$,89Project-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2012-03-31 20:10+0000 Last-Translator: Language-Team: Language: en MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1) python-django-debug-toolbar-8.0.0/debug_toolbar/locale/en/LC_MESSAGES/django.po000066400000000000000000000413461524561404200270770ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-02-09 19:07-0600\n" "PO-Revision-Date: 2012-03-31 20:10+0000\n" "Last-Translator: \n" "Language-Team: \n" "Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "" #: models.py:11 msgid "history entry" msgstr "" #: models.py:12 msgid "history entries" msgstr "" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:77 msgid "Alerts" msgstr "" #: panels/cache.py:169 msgid "Cache" msgstr "" #: panels/cache.py:176 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" #: panels/cache.py:185 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" #: panels/community.py:13 msgid "Community" msgstr "" #: panels/headers.py:31 msgid "Headers" msgstr "" #: panels/history/panel.py:21 panels/history/panel.py:22 msgid "History" msgstr "" #: panels/profiling.py:156 msgid "Profiling" msgstr "" #: panels/redirects.py:19 msgid "Intercept redirects" msgstr "" #: panels/request.py:16 msgid "Request" msgstr "" #: panels/request.py:36 msgid "" msgstr "" #: panels/request.py:53 msgid "" msgstr "" #: panels/settings.py:27 msgid "Settings" msgstr "" #: panels/settings.py:30 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:59 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" msgstr[1] "" #: panels/signals.py:64 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" msgstr[1] "" #: panels/signals.py:69 msgid "Signals" msgstr "" #: panels/sql/forms.py:56 msgid "Data for this panel isn't available anymore." msgstr "" #: panels/sql/forms.py:68 msgid "Invalid query id." msgstr "" #: panels/sql/panel.py:32 panels/sql/panel.py:43 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:33 panels/sql/panel.py:45 msgid "Read committed" msgstr "" #: panels/sql/panel.py:34 panels/sql/panel.py:47 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:35 panels/sql/panel.py:49 msgid "Serializable" msgstr "" #: panels/sql/panel.py:41 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "Idle" msgstr "" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "Active" msgstr "" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "In transaction" msgstr "" #: panels/sql/panel.py:66 panels/sql/panel.py:76 msgid "In error" msgstr "" #: panels/sql/panel.py:67 panels/sql/panel.py:77 msgid "Unknown" msgstr "" #: panels/sql/panel.py:165 msgid "SQL" msgstr "" #: panels/sql/panel.py:172 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" msgstr[1] "" #: panels/sql/panel.py:184 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" #: panels/staticfiles.py:47 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:81 msgid "Static files" msgstr "" #: panels/staticfiles.py:87 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" #: panels/templates/panel.py:104 msgid "Templates" msgstr "" #: panels/templates/panel.py:109 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "" #: panels/templates/panel.py:199 msgid "No origin" msgstr "" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "" #: panels/timer.py:46 msgid "User CPU time" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "" #: panels/timer.py:47 msgid "System CPU time" msgstr "" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "" #: panels/timer.py:48 msgid "Total CPU time" msgstr "" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "" #: panels/timer.py:49 msgid "Elapsed time" msgstr "" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "" #: panels/timer.py:51 msgid "Context switches" msgstr "" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:21 msgid "Versions" msgstr "" #: templates/debug_toolbar/base.html:22 msgid "Hide toolbar" msgstr "" #: templates/debug_toolbar/base.html:22 msgid "Hide" msgstr "" #: templates/debug_toolbar/base.html:24 templates/debug_toolbar/base.html:25 msgid "Toggle Theme" msgstr "" #: templates/debug_toolbar/base.html:34 msgid "Show toolbar" msgstr "" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/community.html:5 msgid "Community & Contribution" msgstr "" #: templates/debug_toolbar/panels/community.html:8 msgid "" "Want to contribute to Django Debug Toolbar? Get involved in our community!" msgstr "" #: templates/debug_toolbar/panels/community.html:14 msgid "Join Discussions" msgstr "" #: templates/debug_toolbar/panels/community.html:19 msgid "View Issues" msgstr "" #: templates/debug_toolbar/panels/community.html:24 msgid "Contribution Guide" msgstr "" #: templates/debug_toolbar/panels/community.html:31 msgid "Django Debug Toolbar Documentation" msgstr "" #: templates/debug_toolbar/panels/community.html:34 msgid "" "Explore the official documentation to learn more about Django Debug Toolbar." msgstr "" #: templates/debug_toolbar/panels/community.html:39 msgid "Read Documentation" msgstr "" #: templates/debug_toolbar/panels/community.html:44 msgid "How to Use Django Debug Toolbar" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "" #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:3 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:3 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:3 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "" #: templates/debug_toolbar/panels/template_source.html:3 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "" #: templates/debug_toolbar/redirect.html:61 msgid "WARNING:" msgstr "" #: templates/debug_toolbar/redirect.html:62 #, python-format msgid "" "\n" " The RedirectsPanel is deprecated and will be removed in a future " "version. The HistoryPanel\n" " now provides the ability to view toolbar data for redirected requests. " "If you still have a\n" " use case for this panel, please comment on this issue.\n" " " msgstr "" #: templates/debug_toolbar/redirect.html:70 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:72 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: views.py:21 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" python-django-debug-toolbar-8.0.0/debug_toolbar/locale/es/000077500000000000000000000000001524561404200235055ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/es/LC_MESSAGES/000077500000000000000000000000001524561404200252725ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/es/LC_MESSAGES/django.mo000066400000000000000000000233601524561404200270750ustar00rootroot00000000000000Þ•ˆ\µœp Jq ¼ × lõ Nb .± .à   / D )T ~ ’ œ ¦ ´ » Â Ì × ß "î F ^ iv{� Š$–»ÌÔÚNâ1 :(Hq � š'¤Ì Òßèð õ ';LPb ku| � �1š Ì ×áñ ö  !0 AK[cu…Ž�® ² À Í Ú çôü #*h2› ´"Õ ø5;BJZmŠ ›&¥¦Ìs'x ©ºÉÑ à ì÷( 0>DMU ^l }ŽŠÈyâ \4}¨²x[TÔO)y‰™®+¾ê ÿ )1 8 CN%V"|Ÿ„¥*=OV_ hHs¼ÐØ ßoê Z$h4�ÂÝñ15 ; I Wck ˆ’›¤´Óéï  #+ 2@8O ˆ ”Ÿ´¼ËÓØÜõû , 7 I S m ‡ � Ÿ ¸ ¼ Ê Ø é ö !!&!@!^!e!pn!9ß!i"Qƒ"Õ"Dé".#5#>#X#9x#²# Ç#+Ò#÷þ#ö$2ý$0%A%T% m%w%‹% œ%©%¸%Ó%Ø% ñ%ý%&&%& .&8&G& ]&…j&/7…Ny!U�3~|X‡*Q 9c„gx<‚bZ2(0m { j 6GF[=d4IMK\vka }H?5ufL†;EeD%^r8>'&n)`:+zwJ#CA ,YlTˆ1t.BOsqpP-ƒVS]io@_h$W"R€%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s similar queries.%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveArgumentsAutocommitBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDebug ToolbarDisable for next and successive requestsDuplicated %(dupes)s times.Elapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarHistoryIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLocationLocation:MethodNameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo originNo session dataNonePOST dataPackagePathPerProfilingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest VariablesRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static fileStatic filesStatic file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)StatusSummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime since navigation start (+duration)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environand %(dupes)s duplicatesProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: Daniel Iglesias , 2021 Language-Team: Spanish (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/es/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: es Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2; %(cache_calls)d llamada en %(time).2fms%(cache_calls)d llamadas en %(time).2fms%(cache_calls)d llamadas en %(time).2fms%(count)s consultas similares. %(num)s consulta%(num)s consultas%(num)s consultas%(num_receivers)d receptor de %(num_signals)d señales%(num_receivers)d receptores de %(num_signals)d señales%(num_receivers)d receptores de %(num_signals)d señales%(num_receivers)d receptor de 1 señal%(num_receivers)d receptores de 1 señal%(num_receivers)d receptores de 1 señal%(num_used)s archivo usado%(num_used)s archivos usados%(num_used)s archivos usados%(payload_count)s archivo%(payload_count)s archivos%(payload_count)s archivos%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d voluntario, %(ivcsw)d involuntario(prefijo %(prefix)s)(desconocido)AcciónActivoArgumentosAutocommitBackendDistribución de tiempos de navegadorCPU: %(cum)0.2fms (%(total)0.2fms)Cache%(count)d llamadas al Cache desde el backend%(count)d llamadas al Caché desde backends%(count)d llamadas al Caché desde backendsAciertos de cachéErrores de cachéLlamarLlamadasComandosConexión:Procesador de contextoProcesadores de contextoProcesadores de contextoCambios de contextoCookiesContarTiempoAcumLa información de este panel ya no se encuentra disponible. Por favor recargue la página y pruebe nuevamente.Base de datosBarra de herramientas de DepuraciónDeshabilitar para el próximo y sucesivos peticionesRepetidas %(dupes)s veces.Tiempo transcurridoEstablecer VacíoHabilitar para el próximo y sucesivos peticionesErrorSQL EjecutadoDatos del GETEncabezadosOcultarOcutar barra de herramientasHistorialInactivoEn errorEn transacciónInterceptar re-direcionamientoNivel de aislamiento:ClaveArgumentos por palabra claveUbicaciónUbicación:MétodoNombreSin datos GETSin datos POSTNo se registraron consultas SQL durante ésta petición.Sin cookiesSin origenSin datos de sesiónNingunoDatos del POSTPaqueteRutaPorAnálisis de rendimientoQueryLeer cambios permanentesLeer cambios tentativosReceptoresLectura repetiblePeticiónVariables de la peticiónEncabezados de peticionesRecursoUso de recursosEncabezados de respuestaSQLSQL explicadoSQL analizadoSQL seleccionadoSerializableDatos de sesiónConfiguraciónConfiguracionesValores procedentes de %sMostrar barra de herramientasSeñalSeñalesYa que el entorno WSGI hereda el entorno del servidor, solo un subconjunto significativo es mostrado más abajo.Archivo estáticoArchivos estáticosArchivos estáticosAplicación a archivos estáticosAplicaciones de archivos estáticosAplicaciones de archivos estáticosRuta a archivos estáticoRutas a archivos estáticosRutas a archivos estáticosArchivos estáticosArchivos estáticos (%(num_found)s encontrados, %(num_used)s en uso)EstadoResúmenTiempo en CPU del sistemaPlantillaPlantillasPlantillasRuta de plantillaRutas de plantillasRutas de plantillasFuente de plantilla:PlantillasPlantillas (%(num_templates)s renderizadas)El Django Debug Toolbar ha interceptado un re-direccionamiento a la dirección de Internet mostrada arriba, con el propósito de inspeccionarla. Usted puede hacer clic en el vínculo de arriba para continuar con el re-direccionamiento normalmente.TiempoTiempo desde inicio de la navegación (+duración)Línea de tiempoAtributo de tiempoMostrar/Ocultar contextoTiempoTotTiempo total de CPULlamadas totalesTiempo totalTotal: %0.2fmsEstado de la transacción:TipoNombre de dirección URLDesconocidoTiempo en CPU de usuarioValorVariableVersiónVersionesFunción vistaInformación de VistaEntorno WSGIy %(dupes)s repetidospython-django-debug-toolbar-8.0.0/debug_toolbar/locale/es/LC_MESSAGES/django.po000066400000000000000000000463131524561404200271030ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # jcatalan , 2014 # Daniel Iglesias , 2021 # Leonardo J. Caballero G. , 2013-2014,2020 # marcelor , 2013 # Sergio Infante , 2015 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: Daniel Iglesias , 2021\n" "Language-Team: Spanish (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: es\n" "Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "Barra de herramientas de Depuración" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:77 msgid "Alerts" msgstr "" #: panels/cache.py:168 msgid "Cache" msgstr "Cache" #: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d llamada en %(time).2fms" msgstr[1] "%(cache_calls)d llamadas en %(time).2fms" msgstr[2] "%(cache_calls)d llamadas en %(time).2fms" #: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "%(count)d llamadas al Cache desde el backend" msgstr[1] "%(count)d llamadas al Caché desde backends" msgstr[2] "%(count)d llamadas al Caché desde backends" #: panels/headers.py:31 msgid "Headers" msgstr "Encabezados" #: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "Historial" #: panels/profiling.py:140 msgid "Profiling" msgstr "Análisis de rendimiento" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Interceptar re-direcionamiento" #: panels/request.py:16 msgid "Request" msgstr "Petición" #: panels/request.py:38 msgid "" msgstr "" #: panels/request.py:55 msgid "" msgstr "" #: panels/settings.py:17 msgid "Settings" msgstr "Configuraciones" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "Valores procedentes de %s" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d receptor de 1 señal" msgstr[1] "%(num_receivers)d receptores de 1 señal" msgstr[2] "%(num_receivers)d receptores de 1 señal" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d receptor de %(num_signals)d señales" msgstr[1] "%(num_receivers)d receptores de %(num_signals)d señales" msgstr[2] "%(num_receivers)d receptores de %(num_signals)d señales" #: panels/signals.py:67 msgid "Signals" msgstr "Señales" #: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "Leer cambios tentativos" #: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "Leer cambios permanentes" #: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "Lectura repetible" #: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Serializable" #: panels/sql/panel.py:39 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "Inactivo" #: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Activo" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "En transacción" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "En error" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "Desconocido" #: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" #: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Archivos estáticos (%(num_found)s encontrados, %(num_used)s en uso)" #: panels/staticfiles.py:103 msgid "Static files" msgstr "Archivos estáticos" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s archivo usado" msgstr[1] "%(num_used)s archivos usados" msgstr[2] "%(num_used)s archivos usados" #: panels/templates/panel.py:101 msgid "Templates" msgstr "Plantillas" #: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Plantillas (%(num_templates)s renderizadas)" #: panels/templates/panel.py:195 msgid "No origin" msgstr "Sin origen" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Total: %0.2fms" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tiempo" #: panels/timer.py:46 msgid "User CPU time" msgstr "Tiempo en CPU de usuario" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "%(utime)0.3f ms" #: panels/timer.py:47 msgid "System CPU time" msgstr "Tiempo en CPU del sistema" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "%(stime)0.3f ms" #: panels/timer.py:48 msgid "Total CPU time" msgstr "Tiempo total de CPU" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "%(total)0.3f ms" #: panels/timer.py:49 msgid "Elapsed time" msgstr "Tiempo transcurrido" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "%(total_time)0.3f ms" #: panels/timer.py:51 msgid "Context switches" msgstr "Cambios de contexto" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d voluntario, %(ivcsw)d involuntario" #: panels/versions.py:19 msgid "Versions" msgstr "Versiones" #: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Ocutar barra de herramientas" #: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Ocultar" #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 msgid "Toggle Theme" msgstr "" #: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Mostrar barra de herramientas" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "Deshabilitar para el próximo y sucesivos peticiones" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "Habilitar para el próximo y sucesivos peticiones" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Resúmen" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Llamadas totales" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Tiempo total" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Aciertos de caché" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Errores de caché" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Comandos" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Llamadas" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Tipo" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Argumentos" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Argumentos por palabra clave" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Backend" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "Encabezados de peticiones" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Clave" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Valor" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Encabezados de respuesta" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "Entorno WSGI" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "Ya que el entorno WSGI hereda el entorno del servidor, solo un subconjunto significativo es mostrado más abajo." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "Método" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "Ruta" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "Variables de la petición" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "Estado" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "Acción" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "Variable" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Llamar" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "TiempoAcum" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Por" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TiempoTot" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Contar" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Información de Vista" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "Función vista" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "Nombre de dirección URL" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookies" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "Sin cookies" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "Datos de sesión" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "Sin datos de sesión" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "Datos del GET" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "Sin datos GET" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "Datos del POST" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "Sin datos POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Configuración" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Señal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "Receptores" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s consulta" msgstr[1] "%(num)s consultas" msgstr[2] "%(num)s consultas" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "y %(dupes)s repetidos" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "Query" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Línea de tiempo" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "%(count)s consultas similares. " #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "Repetidas %(dupes)s veces." #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "Conexión:" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "Nivel de aislamiento:" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "Estado de la transacción:" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "(desconocido)" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "No se registraron consultas SQL durante ésta petición." #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL explicado" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL Ejecutado" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Base de datos" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL analizado" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Error" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "SQL seleccionado" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Establecer Vacío" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Ruta a archivos estático" msgstr[1] "Rutas a archivos estáticos" msgstr[2] "Rutas a archivos estáticos" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "(prefijo %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "Ninguno" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "Aplicación a archivos estáticos" msgstr[1] "Aplicaciones de archivos estáticos" msgstr[2] "Aplicaciones de archivos estáticos" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "Archivo estático" msgstr[1] "Archivos estáticos" msgstr[2] "Archivos estáticos" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s archivo" msgstr[1] "%(payload_count)s archivos" msgstr[2] "%(payload_count)s archivos" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "Ubicación" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Fuente de plantilla:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Ruta de plantilla" msgstr[1] "Rutas de plantillas" msgstr[2] "Rutas de plantillas" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Plantilla" msgstr[1] "Plantillas" msgstr[2] "Plantillas" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "Mostrar/Ocultar contexto" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Procesador de contexto" msgstr[1] "Procesadores de contexto" msgstr[2] "Procesadores de contexto" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Uso de recursos" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Recurso" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Distribución de tiempos de navegador" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Atributo de tiempo" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "Tiempo desde inicio de la navegación (+duración)" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "Paquete" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "Nombre" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "Versión" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "Ubicación:" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "El Django Debug Toolbar ha interceptado un re-direccionamiento a la dirección de Internet mostrada arriba, con el propósito de inspeccionarla. Usted puede hacer clic en el vínculo de arriba para continuar con el re-direccionamiento normalmente." #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "La información de este panel ya no se encuentra disponible. Por favor recargue la página y pruebe nuevamente." python-django-debug-toolbar-8.0.0/debug_toolbar/locale/fa/000077500000000000000000000000001524561404200234645ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/fa/LC_MESSAGES/000077500000000000000000000000001524561404200252515ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/fa/LC_MESSAGES/django.mo000066400000000000000000000233111524561404200270500ustar00rootroot00000000000000Þ•�$­,à Já , lG N´ . U2 ˆ ˜ ¨ ½ )Í ÷   - 4 ; E P X "g Š F� × â ï ô ú $4EMNS¢ «(¹â þ '= CPYa fs{€‰˜¬½ÁÓ Üæí ò þ1  = HRb gqy~ ‚Œ’¡ ²¼ÌÔæöÿ # 1L> ‹ ˜ ¥²ºÃ Ôáèhð Y5fœ£«» Ì&Ö¦ý¤'©ÑÚëú  (7KPY aou~† �� ®¨»‰dî�e�Wö‰N"Ø û'"D8g ´ÇÝø  6BWa¹w¿ 7B`e{ Š9˜Ò ì úbhwF–"Ý K&ry” £¯Ãßî óÿ$6H Qr {…Œ"“#¶EÚ! B%Rx�‘šŸ¤ ¸Ã à   / > _ | ‡ ¡ ¾ Ï Þ cë O! g!ˆ!š!©!¸!Ï!â!é!¦ý!¤"gÃ" +# 6#A#Y#p#.‚#N±#%- %7%H%e%w%‹%*¨%Ó%'ç%&'& .&9&"J& m& x&ƒ& Œ& š&§& »&4^#s:$wANcZ]|9f&jpB(`@~O!*8_,6KxHqd{)E mo?rQR [>C%u\k.-"5;}SILbP2h1F/ aU�D<WJ+ 7zGlnXY3iT0 y€VM=v'teg%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s similar queries.%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(query_count)d query in %(sql_time).2fms%(query_count)d queries in %(sql_time).2fms%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveArgumentsAutocommitBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsCommandsConnection:Context processorContext processorsContext switchesCookiesCountData for this panel isn't available anymore. Please reload the page and retry.DatabaseDebug ToolbarDisable for next and successive requestsDuplicated %(dupes)s times.Elapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarHistoryIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLocationLocation:MethodNameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo originNo session dataNonePOST dataPackagePathPerProfilingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest VariablesRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL queries from %(count)d connectionSQL queries from %(count)d connectionsSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static filesStatic files (%(num_found)s found, %(num_used)s used)StatusSummarySystem CPU timeTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime since navigation start (+duration)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: Elyas Ebrahimpour , 2024 Language-Team: Persian (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/fa/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: fa Plural-Forms: nplurals=2; plural=(n > 1); %(cache_calls)d Ù�راخوان در %(time).2f میلی‌ثانیه%(cache_calls)d Ù�راخوان در %(time).2f میلی‌ثانیه%(count)s کوئری مشابه%(num_receivers)d گیرنده از %(num_signals)d سیگنال%(num_receivers)d گیرنده از %(num_signals)d سیگنال%(num_receivers)d گیرنده از 1 سیگنال%(num_receivers)d گیرنده از 1 سیگنال%(num_used)s Ù�ایل استÙ�اده شده%(num_used)s Ù�ایل استÙ�اده شده%(query_count)d کوئری در %(sql_time).2f میلی‌ثانیه%(query_count)d کوئری در %(sql_time).2f میلی‌ثانیه%(stime)0.3f میلی‌ثانیه%(total)0.3f میلی ثانیه%(total_time)0.3f میلی‌ثانیه%(utime)0.3f میلی‌ثانیه%(vcsw)d اختیاری، %(ivcsw)d غیراختیاری(prefix %(prefix)s)(ناشناخته)<بدون نمایش><در دسترس نیست>اکشنÙ�عالآرگومان هاکامیت خودکاربک اندزمان بندی مرورگرپردازنده: %(cum)0.2f میلی‌ثانیه (%(total)0.2f میلی‌ثانیه)CacheÙ�راخوان‌های Ú©Ø´ از %(count)d بک‌اندÙ�راخوان‌های Ú©Ø´ از %(count)d بک‌اندهاCache hitsعدم دسترسی به Ú©Ø´CallÙ�راخوانی هادستوراتکانکشن:پردازشگر محیطپردازشگرهای محیطتغییرات زمینهکوکی هاتعداددیتا برای نمایش در دسترس نیست. لطÙ�ا صÙ�حه را ریÙ�رش کنید.دیتابیسنوار ابزار دیباگغیر Ù�عال کردن برای ریکوئست های Ù¾ÛŒ در Ù¾ÛŒ%(dupes)s بار تکرار شدهزمان سپری شدهset خالیÙ�عال کردن برای ریکوئست های بعدی Ùˆ Ù¾ÛŒ در پیخطاکوئری اجرا شدهدیتای GETهدر هاپنهان کردنپنهان کردن toolbarتاریخچهIDLEدر خطادر تراکنشرهگیری تغییر مسیرهاسطح isolation:کلیدآرگومان های کیوردمکانمکان:متدنامدیتای GET وجود ندارددیتای POST وجود نداردکوئری SQL ای در این ریکوئست ثبت نشده استکوکی ای وجود نداردبدون originدیتای سشن وجود نداردخالیدیتای POSTپکیجPathبرنمایه سازیکوئریخواندن با تاثیرخواندن بدون تاثیرReceiver هاخواندن تکرارپذیرریکوئستمتغیر های ریکوئستهدر های ریکوئستمنابعاستÙ�اده منابعهدر های ریسپانساس کیو التوضیح SQLSQL profiledکوئری‌های SQL از %(count)d اتصالکوئری‌های SQL از %(count)d اتصالانتخاب شده SQLقابل سریالایز شدندیتای سشنتنظیماتتنظیماتتنظیمات از %sنمایش toolbarSignalسیگنال‌هااز آنجا Ú©Ù‡ محیط WSGI محیط سرور را به ارث Ù…ÛŒ برد ØŒ Ù�قط یک زیر مجموعه مهم در زیر نشان داده شده است.Ù�ایل های استاتیکÙ�ایل‌های استاتیک (%(num_found)s یاÙ�ته شده، %(num_used)s استÙ�اده شده)وضعیتخلاصهزمان CPU سیستممنبع تمپلیت:تمپلیت هاتمپلیت ها (%(num_templates)s rendered)نوار ابزار اشکال‌زدای Django یک هدایت به URL بالا را به منظور مشاهده اشکال توسط ابزار اشکال‌زدای اÙ�زونه کرده است. می‌توانید بر روی پیوند بالا کلیک کنید تا با هدایت به صورت عادی ادامه دهید.زمانزمان از آغاز ناوبری (+مدت)تایملاینویژگی زمان بندیتغییر متنزمان نهاییزمان Ú©Ù„ سی Ù¾ÛŒ یوتعداد نهایی کال کردن هازمان نهاییمجموع: %0.2f میلی‌ثانیهوضعیت تراکنشنوعنام URLناشناختهزمان سی Ù¾ÛŒ یو کاربرمقدارمتغیرورژنورژن هاتابع Viwاطلاعات Viewمحیط WSGIpython-django-debug-toolbar-8.0.0/debug_toolbar/locale/fa/LC_MESSAGES/django.po000066400000000000000000000463051524561404200270630ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Ali Soltani , 2021 # Elyas Ebrahimpour , 2024 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: Elyas Ebrahimpour , 2024\n" "Language-Team: Persian (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fa\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "نوار ابزار دیباگ" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:77 msgid "Alerts" msgstr "" #: panels/cache.py:168 msgid "Cache" msgstr "Cache" #: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d Ù�راخوان در %(time).2f میلی‌ثانیه" msgstr[1] "%(cache_calls)d Ù�راخوان در %(time).2f میلی‌ثانیه" #: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Ù�راخوان‌های Ú©Ø´ از %(count)d بک‌اند" msgstr[1] "Ù�راخوان‌های Ú©Ø´ از %(count)d بک‌اندها" #: panels/headers.py:31 msgid "Headers" msgstr "هدر ها" #: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "تاریخچه" #: panels/profiling.py:140 msgid "Profiling" msgstr "نمایه سازی" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "رهگیری تغییر مسیرها" #: panels/request.py:16 msgid "Request" msgstr "ریکوئست" #: panels/request.py:38 msgid "" msgstr "<بدون نمایش>" #: panels/request.py:55 msgid "" msgstr "<در دسترس نیست>" #: panels/settings.py:17 msgid "Settings" msgstr "تنظیمات" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "تنظیمات از %s" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d گیرنده از 1 سیگنال" msgstr[1] "%(num_receivers)d گیرنده از 1 سیگنال" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d گیرنده از %(num_signals)d سیگنال" msgstr[1] "%(num_receivers)d گیرنده از %(num_signals)d سیگنال" #: panels/signals.py:67 msgid "Signals" msgstr "سیگنال‌ها" #: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "خواندن بدون تاثیر" #: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "خواندن با تاثیر" #: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "خواندن تکرارپذیر" #: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "قابل سریالایز شدن" #: panels/sql/panel.py:39 msgid "Autocommit" msgstr "کامیت خودکار" #: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "IDLE" #: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Ù�عال" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "در تراکنش" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "در خطا" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "ناشناخته" #: panels/sql/panel.py:162 msgid "SQL" msgstr "اس کیو ال" #: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "%(query_count)d کوئری در %(sql_time).2f میلی‌ثانیه" msgstr[1] "%(query_count)d کوئری در %(sql_time).2f میلی‌ثانیه" #: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "کوئری‌های SQL از %(count)d اتصال" msgstr[1] "کوئری‌های SQL از %(count)d اتصال" #: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Ù�ایل‌های استاتیک (%(num_found)s یاÙ�ته شده، %(num_used)s استÙ�اده شده)" #: panels/staticfiles.py:103 msgid "Static files" msgstr "Ù�ایل های استاتیک" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s Ù�ایل استÙ�اده شده" msgstr[1] "%(num_used)s Ù�ایل استÙ�اده شده" #: panels/templates/panel.py:101 msgid "Templates" msgstr "تمپلیت ها" #: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "تمپلیت ها (%(num_templates)s rendered)" #: panels/templates/panel.py:195 msgid "No origin" msgstr "بدون origin" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "پردازنده: %(cum)0.2f میلی‌ثانیه (%(total)0.2f میلی‌ثانیه)" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "مجموع: %0.2f میلی‌ثانیه" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "زمان" #: panels/timer.py:46 msgid "User CPU time" msgstr "زمان سی Ù¾ÛŒ یو کاربر" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "%(utime)0.3f میلی‌ثانیه" #: panels/timer.py:47 msgid "System CPU time" msgstr "زمان CPU سیستم" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "%(stime)0.3f میلی‌ثانیه" #: panels/timer.py:48 msgid "Total CPU time" msgstr "زمان Ú©Ù„ سی Ù¾ÛŒ یو" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "%(total)0.3f میلی ثانیه" #: panels/timer.py:49 msgid "Elapsed time" msgstr "زمان سپری شده" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "%(total_time)0.3f میلی‌ثانیه" #: panels/timer.py:51 msgid "Context switches" msgstr "تغییرات زمینه" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d اختیاری، %(ivcsw)d غیراختیاری" #: panels/versions.py:19 msgid "Versions" msgstr "ورژن ها" #: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "پنهان کردن toolbar" #: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "پنهان کردن" #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 msgid "Toggle Theme" msgstr "" #: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "نمایش toolbar" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "غیر Ù�عال کردن برای ریکوئست های Ù¾ÛŒ در Ù¾ÛŒ" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "Ù�عال کردن برای ریکوئست های بعدی Ùˆ Ù¾ÛŒ در Ù¾ÛŒ" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "خلاصه" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "تعداد نهایی کال کردن ها" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "زمان نهایی" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Cache hits" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "عدم دسترسی به Ú©Ø´" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "دستورات" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Ù�راخوانی ها" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "نوع" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "آرگومان ها" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "آرگومان های کیورد" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "بک اند" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "هدر های ریکوئست" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "کلید" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "مقدار" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "هدر های ریسپانس" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "محیط WSGI" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "از آنجا Ú©Ù‡ محیط WSGI محیط سرور را به ارث Ù…ÛŒ برد ØŒ Ù�قط یک زیر مجموعه مهم در زیر نشان داده شده است." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "متد" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "Path" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "متغیر های ریکوئست" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "وضعیت" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "اکشن" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "متغیر" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Call" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "بر" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "زمان نهایی" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "تعداد" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "اطلاعات View" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "تابع Viw" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "نام URL" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Ú©ÙˆÚ©ÛŒ ها" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "Ú©ÙˆÚ©ÛŒ ای وجود ندارد" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "دیتای سشن" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "دیتای سشن وجود ندارد" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "دیتای GET" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "دیتای GET وجود ندارد" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "دیتای POST" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "دیتای POST وجود ندارد" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "تنظیمات" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "Receiver ها" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "کوئری" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "تایملاین" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "%(count)s کوئری مشابه" #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "%(dupes)s بار تکرار شده" #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "کانکشن:" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "سطح isolation:" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "وضعیت تراکنش" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "(ناشناخته)" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "کوئری SQL ای در این ریکوئست ثبت نشده است" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "توضیح SQL" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "کوئری اجرا شده" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "دیتابیس" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL profiled" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "خطا" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "انتخاب شده SQL" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "set خالی" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "(prefix %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "خالی" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "مکان" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "منبع تمپلیت:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "تغییر متن" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "پردازشگر محیط" msgstr[1] "پردازشگرهای محیط" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "استÙ�اده منابع" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "منابع" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "زمان بندی مرورگر" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "ویژگی زمان بندی" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "زمان از آغاز ناوبری (+مدت)" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "پکیج" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "نام" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "ورژن" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "مکان:" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "نوار ابزار اشکال‌زدای Django یک هدایت به URL بالا را به منظور مشاهده اشکال توسط ابزار اشکال‌زدای اÙ�زونه کرده است. می‌توانید بر روی پیوند بالا کلیک کنید تا با هدایت به صورت عادی ادامه دهید." #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "دیتا برای نمایش در دسترس نیست. لطÙ�ا صÙ�حه را ریÙ�رش کنید." python-django-debug-toolbar-8.0.0/debug_toolbar/locale/fi/000077500000000000000000000000001524561404200234745ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/fi/LC_MESSAGES/000077500000000000000000000000001524561404200252615ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/fi/LC_MESSAGES/django.mo000066400000000000000000000100641524561404200270610ustar00rootroot00000000000000Þ•D<a\àJá,lJN·&; KU\ c"n‘— œ$¨ÍÞäì õ   $-<MQZ _ k1xª¯´ ¸Â ÈÒÛ ßìôý  ) < Y &c Š � ˜   ¯ à È Ð Þ ä í õ þ ˆ F˜ ß uÿ Yu Ï ß ï   ! + 5 "@ c o u '} ¥ ¶ ¿ Ç Ò ß í ó   !.4= B O7]•š  ¢®µÄÍÑÚ áë ôþ+!?a/p ¥®¶ÉÜ ãð #A:)  $@8, <-"*4&(.56=D#C;% 2>1B3!'  7?+/09%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms(unknown)ActionActiveAutocommitCPU: %(cum)0.2fms (%(total)0.2fms)CacheCallConnection:Context processorContext processorsContext switchesCountCumTimeDatabaseElapsed timeEmpty setErrorExecuted SQLHideIn errorIn transactionIsolation level:KeyLocationNameNo GET dataNo POST dataNo SQL queries were recorded during this request.NonePathPerProfilingQueryReceiversResourceSQLSerializableSettingSettingsSignalSignalsStatic filesSystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplatesTemplates (%(num_templates)s rendered)TimeTimelineTotTimeTotal CPU timeTransaction status:TypeUnknownUser CPU timeValueVariableVersionVersionsView informationProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: Klaus Dahlén, 2012 Language-Team: Finnish (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/fi/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: fi Plural-Forms: nplurals=2; plural=(n != 1); %(cache_calls)d kutsu %(time).2fms%(cache_calls)d kutsua %(time).2fms%(num)s kysely%(num)s kyselyä%(num_receivers)d vastaanotin %(num_signals)d signaalille%(num_receivers)d vastaanotinta %(num_signals)d signaalille%(num_receivers)d vastaanotin 1 signaalille%(num_receivers)d vastaanotinta 1 signaalille%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms(tuntematon)TapahtumaTapahtumaAutocommitCPU: %(cum)0.2fms (%(total)0.2fms)VälimuistiKutsuYhteys:KontekstiprosessoriKontekstiprosessoriKontekstin vivutMääräCumTimeTietokantaKulunut aikaTyhjä joukkoVirheSuoritettu SQLPiilotaVirheTapahtuman tila:Eristystaso:AvainSijaintiNimiEi GET-dataaEi POST-dataaTämän pyynnön aikana ei tehty yhtään SQL-kyselyä.NonePolku/ProfilointiKyselyVastaanottimetResurssiSQLMuuttujaAsetusAsetuksetSignaaliSignaalitStaattiset tiedostotJärjestelmän CPU-aikaSivupohjaSivupohjaSivupohjan polkuSivupohjan polkuAsettelupohjatAsetttelupohjat (%(num_templates)s renderöity)AikaAikajanaTotTimeCPU-aika yhteensäTapahtuman status:Tyyppi(tuntematon)Käyttäjän CPU-aikaArvoMuuttujaVersioVersiotNäkymän tiedotpython-django-debug-toolbar-8.0.0/debug_toolbar/locale/fi/LC_MESSAGES/django.po000066400000000000000000000403401524561404200270640ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Klaus Dahlén, 2012 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: Klaus Dahlén, 2012\n" "Language-Team: Finnish (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/fi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:77 msgid "Alerts" msgstr "" #: panels/cache.py:168 msgid "Cache" msgstr "Välimuisti" #: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d kutsu %(time).2fms" msgstr[1] "%(cache_calls)d kutsua %(time).2fms" #: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" #: panels/headers.py:31 msgid "Headers" msgstr "" #: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" #: panels/profiling.py:140 msgid "Profiling" msgstr "Profilointi" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "" #: panels/request.py:16 msgid "Request" msgstr "" #: panels/request.py:38 msgid "" msgstr "" #: panels/request.py:55 msgid "" msgstr "" #: panels/settings.py:17 msgid "Settings" msgstr "Asetukset" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d vastaanotin 1 signaalille" msgstr[1] "%(num_receivers)d vastaanotinta 1 signaalille" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d vastaanotin %(num_signals)d signaalille" msgstr[1] "%(num_receivers)d vastaanotinta %(num_signals)d signaalille" #: panels/signals.py:67 msgid "Signals" msgstr "Signaalit" #: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "" #: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Muuttuja" #: panels/sql/panel.py:39 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "" #: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Tapahtuma" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "Tapahtuman tila:" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "Virhe" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "(tuntematon)" #: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" #: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" msgstr[1] "" #: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" #: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:103 msgid "Static files" msgstr "Staattiset tiedostot" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" #: panels/templates/panel.py:101 msgid "Templates" msgstr "Asettelupohjat" #: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Asetttelupohjat (%(num_templates)s renderöity)" #: panels/templates/panel.py:195 msgid "No origin" msgstr "" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Aika" #: panels/timer.py:46 msgid "User CPU time" msgstr "Käyttäjän CPU-aika" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "%(utime)0.3f ms" #: panels/timer.py:47 msgid "System CPU time" msgstr "Järjestelmän CPU-aika" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "%(stime)0.3f ms" #: panels/timer.py:48 msgid "Total CPU time" msgstr "CPU-aika yhteensä" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "%(total)0.3f ms" #: panels/timer.py:49 msgid "Elapsed time" msgstr "Kulunut aika" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "%(total_time)0.3f ms" #: panels/timer.py:51 msgid "Context switches" msgstr "Kontekstin vivut" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:19 msgid "Versions" msgstr "Versiot" #: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "" #: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Piilota" #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 msgid "Toggle Theme" msgstr "" #: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Tyyppi" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Avain" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Arvo" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "Polku" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "Tapahtuma" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "Muuttuja" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Kutsu" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "CumTime" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "/" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TotTime" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Määrä" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Näkymän tiedot" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "Ei GET-dataa" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "Ei POST-dataa" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Asetus" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signaali" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "Vastaanottimet" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s kysely" msgstr[1] "%(num)s kyselyä" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "Kysely" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Aikajana" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "" #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "Yhteys:" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "Eristystaso:" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "Tapahtuman status:" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "(tuntematon)" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "Tämän pyynnön aikana ei tehty yhtään SQL-kyselyä." #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Suoritettu SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Tietokanta" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Virhe" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Tyhjä joukko" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "None" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "Staattiset tiedostot" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "Sijainti" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Sivupohjan polku" msgstr[1] "Sivupohjan polku" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Sivupohja" msgstr[1] "Sivupohja" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Kontekstiprosessori" msgstr[1] "Kontekstiprosessori" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Resurssi" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "Nimi" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "Versio" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" python-django-debug-toolbar-8.0.0/debug_toolbar/locale/fr/000077500000000000000000000000001524561404200235055ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/fr/LC_MESSAGES/000077500000000000000000000000001524561404200252725ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/fr/LC_MESSAGES/django.mo000066400000000000000000000241511524561404200270740ustar00rootroot00000000000000Þ•ˆ\µœp Jq ¼ × lõ Nb .± .à U e u … š )ª Ô è ò ü    "-5"DgFm ´ ¿ÌÑ× à$ì"*0N8‡ �(žÇ ã ð'ú" (5>F KX`en}‘¢¦¸ ÁËÒ × ã1ð " -7G LV^c gqw† —¡±¹ËÛäó  L# p } Š—Ÿ¨ ¹ÆÍhÕ >"_ ‚5�ÅÌÔä õ&ÿ¦&Í'Òú#+ : FQ`ty‚ Š˜ž§¯ ¸Æ ׎ä…sÌùsÆ:4Z£�v3]ªO‹Xäô+)Uk {ˆ—ž ¤°ÀÇ"áy „•§­ ´ ¾FË+3 :]H¦·(Óü %$3X _ m z„Œ ¦±¹ÀÕó  " . = F J ] Aq ³  Ï ê ð þ ! ! !!#!4! I!S!g!p!†! œ!¦!Á!×! Û! é!…ö!|" Ž"œ" °" »"Ç"Ù"ô"û"p#gt#VÜ#3$GF$Ž$”$�$³$È$&Ñ$çø$à%1æ% &$&5& R&^&q& ‡&“&¤&¿& Ä& Î&Ü&÷&þ&'''('?'ŒR'‰ß'08„Ox"V4}{Y+R :eƒhw=�d\3)1ˆ  z!k 7HG]>€5JNL^ulc |I@6‡~tgM…<FfE&`q9†?('m*b ;,yvK$DB-ZUi2s/CPrpoQ.‚WT_jnAa[%X#S%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s similar queries.%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(query_count)d query in %(sql_time).2fms%(query_count)d queries in %(sql_time).2fms%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveArgumentsAutocommitBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDebug ToolbarDisable for next and successive requestsDuplicated %(dupes)s times.Elapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarHistoryIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLocationLocation:MethodNameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo originNo session dataNonePOST dataPackagePathPerProfilingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest VariablesRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL queries from %(count)d connectionSQL queries from %(count)d connectionsSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)StatusSummarySystem CPU timeTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime since navigation start (+duration)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environand %(dupes)s duplicatesincluding %(count)s similarProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: Colin O'Brien , 2021 Language-Team: French (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/fr/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: fr Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2; %(cache_calls)d appel en %(time).2fms%(cache_calls)d appels en %(time).2fms%(cache_calls)d appels en %(time).2fms%(count)s requêtes similaires.%(num)s requête%(num)s requêtes%(num)s requêtes%(num_receivers)d receveur de %(num_signals)d signaux%(num_receivers)d receveurs de %(num_signals)d signaux%(num_receivers)d receveurs de %(num_signals)d signaux%(num_receivers)d receveur d'un signal%(num_receivers)d receveurs d'un signal%(num_receivers)d receveurs d'un signal%(num_used)s fichier utilisé%(num_used)s fichiers utilisés%(num_used)s fichiers utilisés%(payload_count)s fichier%(payload_count)s fichiers%(payload_count)s fichiers%(query_count)d requête en %(sql_time).2f ms%(query_count)d requêtes en %(sql_time).2f ms%(query_count)d requêtes en %(sql_time).2f ms%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d volontaire, %(ivcsw)d involontaire(préfixe %(prefix)s)(indéterminé)ActionActifParamètresAuto validationMoteurChronologie du navigateurCPU: %(cum)0.2fms (%(total)0.2fms)CacheAppels au cache depuis %(count)d moteurAppels au cache depuis %(count)d moteursAppels au cache depuis %(count)d moteursSuccès de cacheDéfauts de cacheAppelAppelsCommandesConnexion :Processeur de contexteProcesseurs de contexteProcesseurs de contexteBasculements de contexteCookiesCompteTemps cumuléLes données de ce panneau ne sont plus disponibles. Rechargez la page et essayez à nouveau.Base de donnéesBarre d'outils de débogageDésactiver pour les requêtes suivantesDupliqué %(dupes)s fois.Temps écouléEnsemble videActiver pour les requêtes suivantesErreurSQL ExécutéDonnées GETEn-têtesMasquerMasquer la barre d'outilsHistoriqueInactifErreurTransaction en coursInterception des redirectionsNiveau d'isolation :CléParamètres nommésEmplacementEmplacement :MéthodeNomAucune donnée GETAucune donnée POSTAucune requête SQL n'a été enregistrée durant cette requête.Pas de cookiesSans OriginePas de données de sessionAucunDonnées POSTPaquetCheminParProfilageRequêteLecture validéeLecture non validéeReceveursLecture répétableRequêteVariables de RequêteEn-têtes de requêteRessourceUtilisation des ressourcesEn-têtes de réponseSQLSQL expliquéSQL profilérequêtes SQL venant de %(count)d connexionRequêtes SQL venant de %(count)d connexionsRequêtes SQL venant de %(count)d connexionsSQL sélectionnéSérialisableDonnées de sessionParamètreParamètresParamètres de %sAfficher la barre d'outilsSignalSignauxComme l'environnement WSGI hérite de celui du serveur, seul un sous-ensemble pertinent est affiché ci-dessous.Application de fichiers statiquesApplications de fichiers statiquesApplications de fichiers statiquesChemin de fichier statiqueChemins de fichiers statiquesChemins de fichiers statiquesFichiers statiquesFichiers statiques (%(num_found)s trouvé(s), %(num_used)s utilisé(s))ÉtatRésuméTemps CPU du systèmeSource du gabarit :GabaritsGabarits (%(num_templates)s affichés)La barre de débogage Django a intercepté une redirection vers l'URL ci-dessus afin de permettre la consultation des messages de débogage. Vous pouvez cliquer sur le lien ci-dessus pour continuer normalement avec la redirection.TempsTemps depuis le début de la navigation (+durée)ChronologieAttribut mesuréAfficher/masquer le contexteTemps totalTemps total du CPUNombre total d'appelsTemps totalTotal : %0.2fmsÉtat de la transaction :TypeNom d'URLIndéterminéTemps CPU de l'utilisateurValeurVariableVersionVersionsFonction de vueAfficher l'informationEnvironnement WSGIet %(dupes)s en doublecomprenant %(count)s similairespython-django-debug-toolbar-8.0.0/debug_toolbar/locale/fr/LC_MESSAGES/django.po000066400000000000000000000470251524561404200271040ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Anthony Jorion , 2013 # c1b16e6c929c50740e884a23aafc8829_00449d9 , 2014 # Claude Paroz , 2013 # Colin O'Brien , 2021 # David Paccoud, 2009 # Dominick Rivard , 2013 # Maxime Abry , 2016 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: Colin O'Brien , 2021\n" "Language-Team: French (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" "Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "Barre d'outils de débogage" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:77 msgid "Alerts" msgstr "" #: panels/cache.py:168 msgid "Cache" msgstr "Cache" #: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d appel en %(time).2fms" msgstr[1] "%(cache_calls)d appels en %(time).2fms" msgstr[2] "%(cache_calls)d appels en %(time).2fms" #: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Appels au cache depuis %(count)d moteur" msgstr[1] "Appels au cache depuis %(count)d moteurs" msgstr[2] "Appels au cache depuis %(count)d moteurs" #: panels/headers.py:31 msgid "Headers" msgstr "En-têtes" #: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "Historique" #: panels/profiling.py:140 msgid "Profiling" msgstr "Profilage" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Interception des redirections" #: panels/request.py:16 msgid "Request" msgstr "Requête" #: panels/request.py:38 msgid "" msgstr "" #: panels/request.py:55 msgid "" msgstr "" #: panels/settings.py:17 msgid "Settings" msgstr "Paramètres" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "Paramètres de %s" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d receveur d'un signal" msgstr[1] "%(num_receivers)d receveurs d'un signal" msgstr[2] "%(num_receivers)d receveurs d'un signal" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d receveur de %(num_signals)d signaux" msgstr[1] "%(num_receivers)d receveurs de %(num_signals)d signaux" msgstr[2] "%(num_receivers)d receveurs de %(num_signals)d signaux" #: panels/signals.py:67 msgid "Signals" msgstr "Signaux" #: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "Lecture non validée" #: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "Lecture validée" #: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "Lecture répétable" #: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Sérialisable" #: panels/sql/panel.py:39 msgid "Autocommit" msgstr "Auto validation" #: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "Inactif" #: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Actif" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "Transaction en cours" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "Erreur" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "Indéterminé" #: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" #: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "%(query_count)d requête en %(sql_time).2f ms" msgstr[1] "%(query_count)d requêtes en %(sql_time).2f ms" msgstr[2] "%(query_count)d requêtes en %(sql_time).2f ms" #: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "requêtes SQL venant de %(count)d connexion" msgstr[1] "Requêtes SQL venant de %(count)d connexions" msgstr[2] "Requêtes SQL venant de %(count)d connexions" #: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Fichiers statiques (%(num_found)s trouvé(s), %(num_used)s utilisé(s))" #: panels/staticfiles.py:103 msgid "Static files" msgstr "Fichiers statiques" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s fichier utilisé" msgstr[1] "%(num_used)s fichiers utilisés" msgstr[2] "%(num_used)s fichiers utilisés" #: panels/templates/panel.py:101 msgid "Templates" msgstr "Gabarits" #: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Gabarits (%(num_templates)s affichés)" #: panels/templates/panel.py:195 msgid "No origin" msgstr "Sans Origine" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Total : %0.2fms" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Temps" #: panels/timer.py:46 msgid "User CPU time" msgstr "Temps CPU de l'utilisateur" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "%(utime)0.3f ms" #: panels/timer.py:47 msgid "System CPU time" msgstr "Temps CPU du système" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "%(stime)0.3f ms" #: panels/timer.py:48 msgid "Total CPU time" msgstr "Temps total du CPU" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "%(total)0.3f ms" #: panels/timer.py:49 msgid "Elapsed time" msgstr "Temps écoulé" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "%(total_time)0.3f ms" #: panels/timer.py:51 msgid "Context switches" msgstr "Basculements de contexte" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d volontaire, %(ivcsw)d involontaire" #: panels/versions.py:19 msgid "Versions" msgstr "Versions" #: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Masquer la barre d'outils" #: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Masquer" #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 msgid "Toggle Theme" msgstr "" #: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Afficher la barre d'outils" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "Désactiver pour les requêtes suivantes" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "Activer pour les requêtes suivantes" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Résumé" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Nombre total d'appels" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Temps total" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Succès de cache" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Défauts de cache" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Commandes" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Appels" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Type" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Paramètres" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Paramètres nommés" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Moteur" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "En-têtes de requête" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Clé" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Valeur" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "En-têtes de réponse" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "Environnement WSGI" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "Comme l'environnement WSGI hérite de celui du serveur, seul un sous-ensemble pertinent est affiché ci-dessous." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "Méthode" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "Chemin" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "Variables de Requête" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "État" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "Action" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "Variable" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Appel" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "Temps cumulé" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Par" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "Temps total" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Compte" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Afficher l'information" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "Fonction de vue" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "Nom d'URL" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookies" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "Pas de cookies" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "Données de session" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "Pas de données de session" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "Données GET" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "Aucune donnée GET" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "Données POST" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "Aucune donnée POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Paramètre" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "Receveurs" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s requête" msgstr[1] "%(num)s requêtes" msgstr[2] "%(num)s requêtes" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "comprenant %(count)s similaires" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "et %(dupes)s en double" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "Requête" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Chronologie" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "%(count)s requêtes similaires." #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "Dupliqué %(dupes)s fois." #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "Connexion :" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "Niveau d'isolation :" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "État de la transaction :" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "(indéterminé)" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "Aucune requête SQL n'a été enregistrée durant cette requête." #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL expliqué" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL Exécuté" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Base de données" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL profilé" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Erreur" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "SQL sélectionné" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Ensemble vide" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Chemin de fichier statique" msgstr[1] "Chemins de fichiers statiques" msgstr[2] "Chemins de fichiers statiques" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "(préfixe %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "Aucun" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "Application de fichiers statiques" msgstr[1] "Applications de fichiers statiques" msgstr[2] "Applications de fichiers statiques" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "Fichiers statiques" msgstr[2] "Fichiers statiques" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s fichier" msgstr[1] "%(payload_count)s fichiers" msgstr[2] "%(payload_count)s fichiers" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "Emplacement" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Source du gabarit :" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "Chemin du gabarit" msgstr[2] "Chemin du gabarit" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "Gabarit" msgstr[2] "Gabarit" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "Afficher/masquer le contexte" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Processeur de contexte" msgstr[1] "Processeurs de contexte" msgstr[2] "Processeurs de contexte" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Utilisation des ressources" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Ressource" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Chronologie du navigateur" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Attribut mesuré" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "Temps depuis le début de la navigation (+durée)" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "Paquet" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "Nom" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "Version" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "Emplacement :" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "La barre de débogage Django a intercepté une redirection vers l'URL ci-dessus afin de permettre la consultation des messages de débogage. Vous pouvez cliquer sur le lien ci-dessus pour continuer normalement avec la redirection." #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Les données de ce panneau ne sont plus disponibles. Rechargez la page et essayez à nouveau." python-django-debug-toolbar-8.0.0/debug_toolbar/locale/he/000077500000000000000000000000001524561404200234725ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/he/LC_MESSAGES/000077500000000000000000000000001524561404200252575ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/he/LC_MESSAGES/django.mo000066400000000000000000000025121524561404200270560ustar00rootroot00000000000000Þ•Älàáè ïù ÿ  ' 3 @MT \fkpvň N [h |‡– Ÿª³¼Ò é ôÿ ") 0;   ActionActiveEmpty setErrorExecuted SQLHideIn errorKeyLocationNo GET dataNo POST dataSerializableSignalSignalsTemplatesTimeTypeValueVariableVersionsProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: shaib , 2012 Language-Team: Hebrew (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/he/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: he Plural-Forms: nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2; פעילותפעילותקבוצה ריקהשגי×�×”SQL שבוצעהסתרשגי×�המפתחמקו×�×�ין נתוני GET×�ין נתוני POSTמשתנהסיגנלסיגנלי×�תבניותזמןסוגערךמשתנהגירס×�ותpython-django-debug-toolbar-8.0.0/debug_toolbar/locale/he/LC_MESSAGES/django.po000066400000000000000000000372021524561404200270650ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # shaib , 2012 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: shaib , 2012\n" "Language-Team: Hebrew (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/he/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: he\n" "Plural-Forms: nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:77 msgid "Alerts" msgstr "" #: panels/cache.py:168 msgid "Cache" msgstr "" #: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/headers.py:31 msgid "Headers" msgstr "" #: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" #: panels/profiling.py:140 msgid "Profiling" msgstr "" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "" #: panels/request.py:16 msgid "Request" msgstr "" #: panels/request.py:38 msgid "" msgstr "" #: panels/request.py:55 msgid "" msgstr "" #: panels/settings.py:17 msgid "Settings" msgstr "" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/signals.py:67 msgid "Signals" msgstr "סיגנלי×�" #: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "" #: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "משתנה" #: panels/sql/panel.py:39 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "" #: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "פעילות" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "שגי×�×”" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "" #: panels/sql/panel.py:162 msgid "SQL" msgstr "" #: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:103 msgid "Static files" msgstr "" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/templates/panel.py:101 msgid "Templates" msgstr "תבניות" #: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "" #: panels/templates/panel.py:195 msgid "No origin" msgstr "" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "זמן" #: panels/timer.py:46 msgid "User CPU time" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "" #: panels/timer.py:47 msgid "System CPU time" msgstr "" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "" #: panels/timer.py:48 msgid "Total CPU time" msgstr "" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "" #: panels/timer.py:49 msgid "Elapsed time" msgstr "" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "" #: panels/timer.py:51 msgid "Context switches" msgstr "" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:19 msgid "Versions" msgstr "גירס×�ות" #: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "" #: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "הסתר" #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 msgid "Toggle Theme" msgstr "" #: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "סוג" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "מפתח" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "ערך" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "פעילות" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "משתנה" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "×�ין נתוני GET" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "×�ין נתוני POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "סיגנל" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "" #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL שבוצע" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "שגי×�×”" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "קבוצה ריקה" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "מקו×�" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "תבנית" msgstr[2] "תבנית" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" python-django-debug-toolbar-8.0.0/debug_toolbar/locale/id/000077500000000000000000000000001524561404200234725ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/id/LC_MESSAGES/000077500000000000000000000000001524561404200252575ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/id/LC_MESSAGES/django.mo000066400000000000000000000047111524561404200270610ustar00rootroot00000000000000Þ•/”C  #*"1T Yeks | ‰ “ ¥´ÅÉ Ò Þëð ôþ  )08 Q^n ‹•š¢±ÅÊ Òàæï÷›­¿Ä"Éìôý (8HWiz€‡š ®¸¼ ÅÑÕ Þ éôû    . < E K S b t z Œ ž ¤ ­ ³ ¹ $-*"  +% )&#/ ,'!.(  (unknown)ActionActiveCPU: %(cum)0.2fms (%(total)0.2fms)CallConnection:CountCumTimeDatabaseElapsed timeEmpty setExecuted SQLHideIn transactionIsolation level:KeyLocationNo GET dataNo POST dataNonePerReceiversResourceSQLSerializableSettingSettingsSignalSignalsStatic fileStatic filesStatic filesSystem CPU timeTemplate pathTemplate pathsTemplatesTimeTotTimeTotal CPU timeTransaction status:TypeUnknownUser CPU timeValueVariableVersionVersionsView informationProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: Muhammad Panji , 2012 Language-Team: Indonesian (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/id/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: id Plural-Forms: nplurals=1; plural=0; (tidak diketahui)AksiAksiCPU: %(cum)0.2fms (%(total)0.2fms)PanggilKoneksi:HitungCumTimeBasis dataWaktu terlampauiHimpunan kosongSQL TereksekusiMenyembunyikanStatus transaksi:Tingkat isolasi:KunciLokasiTidak ada data GETTidak ada data POSTTidak adaPerPenerimaSumber dayaSQLVariabelPengaturanPengaturanSinyalSinyalBerkas statikBerkas statikCPU time sistemTemplate pathTemplateWaktuTotTimeCPU time totalStatus transaksi:Jenis(tidak diketahui)CPU time penggunaNilaiVariabelVersiVersiLihat informasipython-django-debug-toolbar-8.0.0/debug_toolbar/locale/id/LC_MESSAGES/django.po000066400000000000000000000367171524561404200270770ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Muhammad Panji , 2012 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: Muhammad Panji , 2012\n" "Language-Team: Indonesian (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:77 msgid "Alerts" msgstr "" #: panels/cache.py:168 msgid "Cache" msgstr "" #: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" #: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" #: panels/headers.py:31 msgid "Headers" msgstr "" #: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" #: panels/profiling.py:140 msgid "Profiling" msgstr "" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "" #: panels/request.py:16 msgid "Request" msgstr "" #: panels/request.py:38 msgid "" msgstr "" #: panels/request.py:55 msgid "" msgstr "" #: panels/settings.py:17 msgid "Settings" msgstr "Pengaturan" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" #: panels/signals.py:67 msgid "Signals" msgstr "Sinyal" #: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "" #: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Variabel" #: panels/sql/panel.py:39 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "" #: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Aksi" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "Status transaksi:" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "(tidak diketahui)" #: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" #: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" #: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" #: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:103 msgid "Static files" msgstr "Berkas statik" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" #: panels/templates/panel.py:101 msgid "Templates" msgstr "Template" #: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "" #: panels/templates/panel.py:195 msgid "No origin" msgstr "" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Waktu" #: panels/timer.py:46 msgid "User CPU time" msgstr "CPU time pengguna" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "" #: panels/timer.py:47 msgid "System CPU time" msgstr "CPU time sistem" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "" #: panels/timer.py:48 msgid "Total CPU time" msgstr "CPU time total" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "" #: panels/timer.py:49 msgid "Elapsed time" msgstr "Waktu terlampaui" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "" #: panels/timer.py:51 msgid "Context switches" msgstr "" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:19 msgid "Versions" msgstr "Versi" #: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "" #: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Menyembunyikan" #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 msgid "Toggle Theme" msgstr "" #: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Jenis" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Kunci" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Nilai" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "Aksi" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "Variabel" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Panggil" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "CumTime" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Per" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TotTime" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Hitung" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Lihat informasi" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "Tidak ada data GET" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "Tidak ada data POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Pengaturan" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Sinyal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "Penerima" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "" #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "Koneksi:" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "Tingkat isolasi:" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "Status transaksi:" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "(tidak diketahui)" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL Tereksekusi" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Basis data" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Himpunan kosong" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "Tidak ada" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "Berkas statik" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "Lokasi" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Template path" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Sumber daya" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "Versi" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" python-django-debug-toolbar-8.0.0/debug_toolbar/locale/it/000077500000000000000000000000001524561404200235125ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/it/LC_MESSAGES/000077500000000000000000000000001524561404200252775ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/it/LC_MESSAGES/django.mo000066400000000000000000000204331524561404200271000ustar00rootroot00000000000000Þ•{ô§Ìh Ji ´ lÒ N? .Ž .½ ì ü  ! )1 [ o y ƒ ‘ ˜ Ÿ © ´ ¼ "Ë î Fô ; F S X ^ g $s ˜ © ± · N¿ ( @ M'W …’›£ ¨µºÃÒæ÷û    % 11> p{‹ �šŸ £­³Â ÓÝíõ. 2 @ M Z gt| …’™h¡ "+ N5[‘™©Æ ×&᦯'´Üåö   (3BV[d lz€‰‘ š¨ ¹ÅÆzŒ)§1}ÙGWDŸäô+)U kyˆš¡ ¨ ²½ Å"Óözüwˆ�¦¯ ·7ÄüQ%w2€³ Ã0Ñ  ,5FKRe|� ’  ©³¸Ë>à -E MW` dqw† —¢²ºÏ ×ãù ý  '4 E R_nva~2àA U8cœ¥A·ù&­?í-ó! * 4 D L ] m z Š � ¢ « ¹ Ê Ñ Û ä í û !meU"6`cE5W>/ j!Aa+k8@tH<M]h)_fSZVD,;iK2  P'r-Gszgqd(pu[\B CY4FOQXRy=7v10NI.n3o9%:$?J&#T^lL{x *wb %(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveArgumentsAutocommitBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDisable for next and successive requestsElapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLocationLocation:NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo session dataNonePOST dataPathPerProfilingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL selectedSerializableSession dataSettingSettingsShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummarySystem CPU timeTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime since navigation start (+duration)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: yakky , 2013-2014 Language-Team: Italian (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/it/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: it Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2; %(cache_calls)d chiamata in %(time).2fms%(cache_calls)d chiamate in %(time).2fms%(cache_calls)d chiamate in %(time).2fms%(num)s query%(num)s query%(num)s query%(num_receivers)d ricevitore di %(num_signals)d segnali%(num_receivers)d ricevitori di %(num_signals)d segnali%(num_receivers)d ricevitori di %(num_signals)d segnali%(num_receivers)d ricevitore di 1 segnale%(num_receivers)d ricevitori di 1 segnale%(num_receivers)d ricevitori di 1 segnale%(num_used)s file usato%(num_used)s file usati%(num_used)s file usati%(payload_count)s file%(payload_count)s file%(payload_count)s file%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d volontario, %(ivcsw)d involontario(prefisso %(prefix)s)(sconosciuto)AzioneAzioneArgomentiAutocommitBackendTempo browserCPU: %(cum)0.2fms (%(total)0.2fms)CacheChiamate alla cache da %(count)d backendChiamate alla cache da %(count)d backendChiamate alla cache da %(count)d backendTrovati in cacheNon trovati in cacheChiamataChiamateComandiConnessione:Context processorContext processorsContext processorsCambi di contestoCookiesNumeroCumTimeNon sono più disponibili dati per questo pannello. Ricarica la pagina e riprova.DatabaseDisattiva per la prossima requests e le successiveTempo TrascorsoInsieme vuotoAbilita per la prossima requests e le successiveErroreSQL eseguitaDati GETIntestazioniNascondiNascondi ToolbarIdleErroreStato transazione:Intercetta ridirezioniIsolation level:NomeParole chiaveLocationLocation:NomeNessun dato in GETNessuno dato in POSTNessuna Query SQL è stata registrata durante questa richiestaNessun cookieNessun dato in sessioneNessunoDati POSTPercorsoPerProfilazioneQueryRead committedRead uncommittedRicevitoriRepeatable readRequestHeader della requestRisorsaUso risorsaHeader della responseSQLSQL spigatoSQL profilatoSQL selezionatoSerializableDati di sessioneImpostazioneImpostazioniMostra ToolbarSegnaleSegnaliVisto che l'ambiente WSGI è ereditato dal server, sotto è mostrata solo la parte significativa.App file staticiApp file staticiApp file staticiPercorso file staticiPercorsi file staticiPercorsi file staticiFiles staticiFile statici (%(num_found)s trovati, %(num_used)s usati)SommarioTempo CPU sistemaPercorso dei templatePercorsi dei templatePercorsi dei templateSorgente del templateTemplateTemplates (%(num_templates)s rendered)Django Debug Toolbar ha intercettato un redirect verso la URL indicata per visualizzare il debug, Puoi cliccare sul link sopra per continuare normalmente con la redirezione.TempoTempo dall'inizio della navigazione (+durata)TimelineAttributoCambia contestoTotTimeTempo Totale CPUChiamate totaliTempo TotaleTotale: %0.2fmsStato transazione:TipoNome URL(sconosciuto)Tempo CPU utenteValoreVariabileVersioneVersioniFunzione ViewVedi InformazioniAmbiente WSGIpython-django-debug-toolbar-8.0.0/debug_toolbar/locale/it/LC_MESSAGES/django.po000066400000000000000000000444411524561404200271100ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Dario Agliottone , 2012 # Flavio Curella , 2013 # yakky , 2013-2014 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: yakky , 2013-2014\n" "Language-Team: Italian (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: it\n" "Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:77 msgid "Alerts" msgstr "" #: panels/cache.py:168 msgid "Cache" msgstr "Cache" #: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d chiamata in %(time).2fms" msgstr[1] "%(cache_calls)d chiamate in %(time).2fms" msgstr[2] "%(cache_calls)d chiamate in %(time).2fms" #: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Chiamate alla cache da %(count)d backend" msgstr[1] "Chiamate alla cache da %(count)d backend" msgstr[2] "Chiamate alla cache da %(count)d backend" #: panels/headers.py:31 msgid "Headers" msgstr "Intestazioni" #: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" #: panels/profiling.py:140 msgid "Profiling" msgstr "Profilazione" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Intercetta ridirezioni" #: panels/request.py:16 msgid "Request" msgstr "Request" #: panels/request.py:38 msgid "" msgstr "" #: panels/request.py:55 msgid "" msgstr "" #: panels/settings.py:17 msgid "Settings" msgstr "Impostazioni" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d ricevitore di 1 segnale" msgstr[1] "%(num_receivers)d ricevitori di 1 segnale" msgstr[2] "%(num_receivers)d ricevitori di 1 segnale" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d ricevitore di %(num_signals)d segnali" msgstr[1] "%(num_receivers)d ricevitori di %(num_signals)d segnali" msgstr[2] "%(num_receivers)d ricevitori di %(num_signals)d segnali" #: panels/signals.py:67 msgid "Signals" msgstr "Segnali" #: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "Read uncommitted" #: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "Read committed" #: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "Repeatable read" #: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Serializable" #: panels/sql/panel.py:39 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "Idle" #: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Azione" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "Stato transazione:" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "Errore" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "(sconosciuto)" #: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" #: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "File statici (%(num_found)s trovati, %(num_used)s usati)" #: panels/staticfiles.py:103 msgid "Static files" msgstr "Files statici" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s file usato" msgstr[1] "%(num_used)s file usati" msgstr[2] "%(num_used)s file usati" #: panels/templates/panel.py:101 msgid "Templates" msgstr "Template" #: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templates (%(num_templates)s rendered)" #: panels/templates/panel.py:195 msgid "No origin" msgstr "" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Totale: %0.2fms" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tempo" #: panels/timer.py:46 msgid "User CPU time" msgstr "Tempo CPU utente" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "%(utime)0.3f ms" #: panels/timer.py:47 msgid "System CPU time" msgstr "Tempo CPU sistema" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "%(stime)0.3f ms" #: panels/timer.py:48 msgid "Total CPU time" msgstr "Tempo Totale CPU" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "%(total)0.3f ms" #: panels/timer.py:49 msgid "Elapsed time" msgstr "Tempo Trascorso" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "%(total_time)0.3f ms" #: panels/timer.py:51 msgid "Context switches" msgstr "Cambi di contesto" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d volontario, %(ivcsw)d involontario" #: panels/versions.py:19 msgid "Versions" msgstr "Versioni" #: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Nascondi Toolbar" #: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Nascondi" #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 msgid "Toggle Theme" msgstr "" #: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Mostra Toolbar" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "Disattiva per la prossima requests e le successive" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "Abilita per la prossima requests e le successive" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Sommario" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Chiamate totali" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Tempo Totale" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Trovati in cache" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Non trovati in cache" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Comandi" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Chiamate" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Tipo" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Argomenti" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Parole chiave" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Backend" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "Header della request" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Nome" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Valore" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Header della response" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "Ambiente WSGI" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "Visto che l'ambiente WSGI è ereditato dal server, sotto è mostrata solo la parte significativa." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "Percorso" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "Azione" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "Variabile" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Chiamata" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "CumTime" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Per" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TotTime" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Numero" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Vedi Informazioni" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "Funzione View" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "Nome URL" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookies" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "Nessun cookie" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "Dati di sessione" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "Nessun dato in sessione" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "Dati GET" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "Nessun dato in GET" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "Dati POST" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "Nessuno dato in POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Impostazione" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Segnale" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "Ricevitori" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s query" msgstr[1] "%(num)s query" msgstr[2] "%(num)s query" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "Query" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Timeline" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "" #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "Connessione:" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "Isolation level:" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "Stato transazione:" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "(sconosciuto)" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "Nessuna Query SQL è stata registrata durante questa richiesta" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL spigato" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL eseguita" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Database" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL profilato" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Errore" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "SQL selezionato" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Insieme vuoto" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Percorso file statici" msgstr[1] "Percorsi file statici" msgstr[2] "Percorsi file statici" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "(prefisso %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "Nessuno" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "App file statici" msgstr[1] "App file statici" msgstr[2] "App file statici" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "Files statici" msgstr[2] "Files statici" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s file" msgstr[1] "%(payload_count)s file" msgstr[2] "%(payload_count)s file" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "Location" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Sorgente del template" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Percorso dei template" msgstr[1] "Percorsi dei template" msgstr[2] "Percorsi dei template" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "Template" msgstr[2] "Template" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "Cambia contesto" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Context processor" msgstr[1] "Context processors" msgstr[2] "Context processors" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Uso risorsa" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Risorsa" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Tempo browser" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Attributo" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "Tempo dall'inizio della navigazione (+durata)" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "Nome" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "Versione" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "Location:" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "Django Debug Toolbar ha intercettato un redirect verso la URL indicata per visualizzare il debug, Puoi cliccare sul link sopra per continuare normalmente con la redirezione." #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Non sono più disponibili dati per questo pannello. Ricarica la pagina e riprova." python-django-debug-toolbar-8.0.0/debug_toolbar/locale/ja/000077500000000000000000000000001524561404200234705ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/ja/LC_MESSAGES/000077500000000000000000000000001524561404200252555ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/ja/LC_MESSAGES/django.mo000066400000000000000000000056451524561404200270660ustar00rootroot00000000000000Þ•2¬C<H I Wai$o”œ ¥³ ¹ÆÎ Óàôø  */ 4 >HP`iz ~‹“ œ©°¸ Ñ"ò " 5?DMV\em v„ •6EL_$o ”¡´ ÐÚ íú  9 @ V ] *| § · ¾ Ñ á ñ  6 : S ` g € � š 3­ á ý  # 6 = P W [ b r ‚ ’ ),/# 2 $%&-. '*  1"0!+(ArgumentsBackendCacheContext processorContext processorsCookiesDatabaseDebug ToolbarErrorExecuted SQLHeadersHideHide toolbarIntercept redirectsKeyKeyword argumentsNameNo cookiesNo session dataNonePathProfilingReceiversRequestRequest headersResourceResponse headersSQLSession dataSettingSettingsShow toolbarSignalSignalsStatic fileStatic filesStatic file appStatic file appsStatic file pathStatic file pathsStatic filesTemplateTemplatesTemplatesTimeTimelineURL nameValueVariableVersionVersionsView functionView informationProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: Shinya Okano , 2012,2014,2020 Language-Team: Japanese (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/ja/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: ja Plural-Forms: nplurals=1; plural=0; <利用ä¸�å�¯>引数ãƒ�ックエンドキャッシュコンテキストプロセッサークッキーデータベースデãƒ�ッグツールãƒ�ーエラー実行ã�•れã�ŸSQLヘッダー隠ã�™ãƒ„ールãƒ�ーを隠ã�™ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã�«å‰²è¾¼ã�¿ã‚­ãƒ¼ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰å¼•æ•°å��å‰�クッキーã�¯ã�‚りã�¾ã�›ã‚“セッションデータã�¯ã�‚りã�¾ã�›ã‚“ã�‚りã�¾ã�›ã‚“パスプロファイルレシーãƒ�ーリクエストリクエストヘッダーリソースレスãƒ�ンスヘッダーSQLセッションデータ設定項目設定ツールãƒ�ーを表示シグナルシグナルé�™çš„ファイルé�™çš„ファイルをå�«ã‚€ã‚¢ãƒ—リケーションé�™çš„ファイルã�®ãƒ‘スé�™çš„ファイルテンプレートテンプレート時間タイムラインURLå��値変数ãƒ�ージョンãƒ�ージョンビュー関数ビューã�®æƒ…å ±python-django-debug-toolbar-8.0.0/debug_toolbar/locale/ja/LC_MESSAGES/django.po000066400000000000000000000374531524561404200270730ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Shinya Okano , 2012,2014,2020 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: Shinya Okano , 2012,2014,2020\n" "Language-Team: Japanese (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/ja/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ja\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "デãƒ�ッグツールãƒ�ー" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:77 msgid "Alerts" msgstr "" #: panels/cache.py:168 msgid "Cache" msgstr "キャッシュ" #: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" #: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" #: panels/headers.py:31 msgid "Headers" msgstr "ヘッダー" #: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" #: panels/profiling.py:140 msgid "Profiling" msgstr "プロファイル" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "リダイレクトã�«å‰²è¾¼ã�¿" #: panels/request.py:16 msgid "Request" msgstr "リクエスト" #: panels/request.py:38 msgid "" msgstr "" #: panels/request.py:55 msgid "" msgstr "<利用ä¸�å�¯>" #: panels/settings.py:17 msgid "Settings" msgstr "設定" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" #: panels/signals.py:67 msgid "Signals" msgstr "シグナル" #: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "" #: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "" #: panels/sql/panel.py:39 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "" #: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "" #: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" #: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" #: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" #: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:103 msgid "Static files" msgstr "é�™çš„ファイル" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" #: panels/templates/panel.py:101 msgid "Templates" msgstr "テンプレート" #: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "" #: panels/templates/panel.py:195 msgid "No origin" msgstr "" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "時間" #: panels/timer.py:46 msgid "User CPU time" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "" #: panels/timer.py:47 msgid "System CPU time" msgstr "" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "" #: panels/timer.py:48 msgid "Total CPU time" msgstr "" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "" #: panels/timer.py:49 msgid "Elapsed time" msgstr "" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "" #: panels/timer.py:51 msgid "Context switches" msgstr "" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:19 msgid "Versions" msgstr "ãƒ�ージョン" #: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "ツールãƒ�ーを隠ã�™" #: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "éš ã�™" #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 msgid "Toggle Theme" msgstr "" #: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "ツールãƒ�ーを表示" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "引数" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "キーワード引数" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "ãƒ�ックエンド" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "リクエストヘッダー" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "キー" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "値" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "レスãƒ�ンスヘッダー" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "パス" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "変数" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "ビューã�®æƒ…å ±" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "ビュー関数" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "URLå��" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "クッキー" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "クッキーã�¯ã�‚りã�¾ã�›ã‚“" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "セッションデータ" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "セッションデータã�¯ã�‚りã�¾ã�›ã‚“" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "設定項目" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "シグナル" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "レシーãƒ�ー" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "タイムライン" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "" #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "実行ã�•れã�ŸSQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "データベース" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "エラー" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "é�™çš„ファイルã�®ãƒ‘ス" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "ã�‚りã�¾ã�›ã‚“" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "é�™çš„ファイルをå�«ã‚€ã‚¢ãƒ—リケーション" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "é�™çš„ファイル" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "テンプレート" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "コンテキストプロセッサー" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "リソース" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "å��å‰�" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "ãƒ�ージョン" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" python-django-debug-toolbar-8.0.0/debug_toolbar/locale/ko/000077500000000000000000000000001524561404200235075ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/ko/LC_MESSAGES/000077500000000000000000000000001524561404200252745ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/ko/LC_MESSAGES/django.mo000066400000000000000000000203311524561404200270720ustar00rootroot00000000000000Þ•vÌ�|ð Jñ < W lu Nâ .1 .` U� å ï ù     ' 6 F< ƒ Ž ›   ¦ ¯ $» à ñ ù Nÿ N W (e Ž ª · 'Á é ï ü   ',5DXim ˆ’™ ž ª1· éô  % +5=O_hwˆ Œ šL§ ô  0=DhLµ Î"ï 5U\dw” ¥&¯¦Ö}'‚ª³Ä Ó ßêþ #+ 4B SŽ`…ï}u5ó )JA_3¡#Õù<R cqˆ� – £­Ä-Ë ù& -8Rip|wô +A _m(už¥ºÏ Öà ñþ 6EI`g oy€œG¹ ' =GN^ eo v „ ’œ °¾ ÂÍ$ß*1 8 B P Zhd ÍÛí B Sa hrƒ •*ŸÎÊ™%  ÆÓäø 1 8CRV]d k w ƒ›�­+ Ij\#B+Ah;mF3/,PbW'7 ^Ns-VeLZlOqn.2Hf) 0v%CcR*D=_i&>1a oX6tT "S9@[]r(pduMG ?Qg$`k4E!K8:J<UY5%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s similar queries.%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(query_count)d query in %(sql_time).2fms%(query_count)d queries in %(sql_time).2fms(unknown)ActionActiveArgumentsBackendBrowser timingCacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsCommandsConnection:Context processorContext processorsContext switchesCookiesCountData for this panel isn't available anymore. Please reload the page and retry.DatabaseDebug ToolbarDisable for next and successive requestsDuplicated %(dupes)s times.Elapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarHistoryIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLocationLocation:MethodNameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo session dataPOST dataPackagePathProfilingQueryReceiversRequestRequest VariablesRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL queries from %(count)d connectionSQL queries from %(count)d connectionsSQL selectedSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static fileStatic filesStatic file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)StatusSummaryTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime since navigation start (+duration)TimelineTiming attributeToggle contextTotal callsTotal timeTransaction status:TypeURL nameUnknownValueVariableVersionVersionsView functionView informationWSGI environand %(dupes)s duplicatesincluding %(count)s similarProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: yeongkwang, 2022 Language-Team: Korean (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/ko/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: ko Plural-Forms: nplurals=1; plural=0; %(time).2f 밀리초 ë�™ì•ˆ %(cache_calls)d번 호출%(count)sê°œì�˜ 유사한 쿼리%(num)sê°œì�˜ 쿼리%(num_signals)dê°œì�˜ 시그ë„� %(num_receivers)dê°œì�˜ 리시버1ê°œì�˜ 시그ë„� %(num_receivers)dê°œì�˜ 리시버%(num_used)sê°œì�˜ 파ì�¼ 사용ë�¨%(payload_count)sê°œ 파ì�¼%(sql_time).2f 밀리초 ë�™ì•ˆ %(query_count)dê°œì�˜ 쿼리(알 수 ì—†ì�Œ)<사용할 수 ì—†ì�Œ>액션활성매개변수백엔드브ë�¼ìš°ì € 타ì�´ë°�ìº�시백엔드ì—�서 %(count)dê°œì�˜ ìº�시 호출ìº�시 ì �중ìº�시 비ì �중호출호출명령커넥션:컨í…�스트 프로세서컨í…�스트 스위치쿠키개수ì�´ 패ë„�ì�˜ ë�°ì�´í„°ëŠ” ë�”ì�´ìƒ� 사용할 수 없습니다. 페ì�´ì§€ë¥¼ 새로고침한 ë’¤ 다시 시ë�„하십시오.ë�°ì�´í„°ë² ì�´ìФDebug Toolbar다ì�Œ 요청부터 비활성화 ë�©ë‹ˆë‹¤.%(dupes)s번 중복ë�©ë‹ˆë‹¤.경과 시간빈 셋다ì�Œ 요청부터 활성화 ë�©ë‹ˆë‹¤.ì—�러실행ë�œ SQL 구문GET 요청 ë�°ì�´í„°í—¤ë�”숨기기툴바 숨기기히스토리유휴ì—�러트랜잭션리다ì�´ë ‰ì…˜ 가로채기격리 수준:키키워드 매개변수위치위치:메서드ì�´ë¦„GET 요청 ë�°ì�´í„° ì—†ì�ŒPOST 요청 ë�°ì�´í„° ì—†ì�Œì�´ 요청ì�„ 처리하는 ë�™ì•ˆ 기ë¡�ë�œ SQL 쿼리가 없습니다.쿠키 ì—†ì�Œì„¸ì…˜ ë�°ì�´í„° ì—†ì�ŒPOST 요청 ë�°ì�´í„°íŒ¨í‚¤ì§€ê²½ë¡œí”„로파ì�¼ë§�쿼리리시버요청요청 변수요청 í—¤ë�”리소스리소스 사용량ì�‘답 í—¤ë�”SQLSQL 설명SQL 성능 ë¶„ì„�SQL 쿼리 %(count)dê°œì�˜ 커넥션선íƒ�ë�œ SQL 구문세션 ë�°ì�´í„°ì„¤ì •설정설정 %s툴바 열기시그ë„�시그ë„�WSGI 환경ì�´ 서버 환경ì�„ ìƒ�ì†�하므로 아래ì—�는 중요한 하위 ì§‘í•©ë§Œ 표시ë�©ë‹ˆë‹¤.ì •ì � 파ì�¼ì •ì � 파ì�¼ 앱정ì � 파ì�¼ 경로정ì � 파ì�¼ì •ì � 파ì�¼ (%(num_found)sê°œ ì°¾ì�Œ, %(num_used)sê°œ 사용ë�¨)ìƒ�태 코드개요템플릿템플릿 경로템플릿 소스:템플릿템플릿 (%(num_templates)sê°œ ë Œë�”ë§�)Django Debug Toolbar는 디버그 보기를 제공하기 위해 위 URL으로 리다ì�´ë ‰ì…˜ì�„ 가로챘습니다. 위 ë§�í�¬ë¥¼ í�´ë¦­í•˜ì—¬ ì •ìƒ�ì �으로 리다ì�´ë ‰ì…˜ì�„ 계ì†� 할수 있습니다.시ê°�íƒ�색 시작 ì�´í›„ 시간 (+기간)타임ë�¼ì�¸íƒ€ì�´ë°� ì†�성컨í…�스트 토글ì´� 요청 개수ì´� 소요 시간트랜잭션 ìƒ�태:타입URL 명칭알 수 ì—†ì�Œê°’변수버전버전View 함수View ì •ë³´WSGI 환경그리고 %(dupes)sê°œì�˜ 중복%(count)s ê°œì�˜ 유사한 쿼리 í�¬í•¨python-django-debug-toolbar-8.0.0/debug_toolbar/locale/ko/LC_MESSAGES/django.po000066400000000000000000000430361524561404200271040ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # yeongkwang, 2022 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: yeongkwang, 2022\n" "Language-Team: Korean (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "Debug Toolbar" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:77 msgid "Alerts" msgstr "" #: panels/cache.py:168 msgid "Cache" msgstr "ìº�시" #: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(time).2f 밀리초 ë�™ì•ˆ %(cache_calls)d번 호출" #: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "백엔드ì—�서 %(count)dê°œì�˜ ìº�시 호출" #: panels/headers.py:31 msgid "Headers" msgstr "í—¤ë�”" #: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "히스토리" #: panels/profiling.py:140 msgid "Profiling" msgstr "프로파ì�¼ë§�" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "리다ì�´ë ‰ì…˜ 가로채기" #: panels/request.py:16 msgid "Request" msgstr "요청" #: panels/request.py:38 msgid "" msgstr "" #: panels/request.py:55 msgid "" msgstr "<사용할 수 ì—†ì�Œ>" #: panels/settings.py:17 msgid "Settings" msgstr "설정" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "설정 %s" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "1ê°œì�˜ 시그ë„� %(num_receivers)dê°œì�˜ 리시버" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_signals)dê°œì�˜ 시그ë„� %(num_receivers)dê°œì�˜ 리시버" #: panels/signals.py:67 msgid "Signals" msgstr "시그ë„�" #: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "" #: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "" #: panels/sql/panel.py:39 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "유휴" #: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "활성" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "트랜잭션" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "ì—�러" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "알 수 ì—†ì�Œ" #: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" #: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "%(sql_time).2f 밀리초 ë�™ì•ˆ %(query_count)dê°œì�˜ 쿼리" #: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "SQL 쿼리 %(count)dê°œì�˜ 커넥션" #: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "ì •ì � 파ì�¼ (%(num_found)sê°œ ì°¾ì�Œ, %(num_used)sê°œ 사용ë�¨)" #: panels/staticfiles.py:103 msgid "Static files" msgstr "ì •ì � 파ì�¼" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)sê°œì�˜ 파ì�¼ 사용ë�¨" #: panels/templates/panel.py:101 msgid "Templates" msgstr "템플릿" #: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "템플릿 (%(num_templates)sê°œ ë Œë�”ë§�)" #: panels/templates/panel.py:195 msgid "No origin" msgstr "" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "시ê°�" #: panels/timer.py:46 msgid "User CPU time" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "" #: panels/timer.py:47 msgid "System CPU time" msgstr "" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "" #: panels/timer.py:48 msgid "Total CPU time" msgstr "" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "" #: panels/timer.py:49 msgid "Elapsed time" msgstr "경과 시간" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "" #: panels/timer.py:51 msgid "Context switches" msgstr "컨í…�스트 스위치" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:19 msgid "Versions" msgstr "버전" #: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "툴바 숨기기" #: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "숨기기" #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 msgid "Toggle Theme" msgstr "" #: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "툴바 열기" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "다ì�Œ 요청부터 비활성화 ë�©ë‹ˆë‹¤." #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "다ì�Œ 요청부터 활성화 ë�©ë‹ˆë‹¤." #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "개요" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "ì´� 요청 개수" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "ì´� 소요 시간" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "ìº�시 ì �중" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "ìº�시 비ì �중" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "명령" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "호출" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "타입" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "매개변수" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "키워드 매개변수" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "백엔드" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "요청 í—¤ë�”" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "키" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "ê°’" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "ì�‘답 í—¤ë�”" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "WSGI 환경" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "WSGI 환경ì�´ 서버 환경ì�„ ìƒ�ì†�하므로 아래ì—�는 중요한 하위 ì§‘í•©ë§Œ 표시ë�©ë‹ˆë‹¤." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "메서드" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "경로" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "요청 변수" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "ìƒ�태 코드" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "ì•¡ì…˜" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "변수" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "호출" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "개수" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "View ì •ë³´" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "View 함수" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "URL 명칭" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "쿠키" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "쿠키 ì—†ì�Œ" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "세션 ë�°ì�´í„°" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "세션 ë�°ì�´í„° ì—†ì�Œ" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "GET 요청 ë�°ì�´í„°" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "GET 요청 ë�°ì�´í„° ì—†ì�Œ" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "POST 요청 ë�°ì�´í„°" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "POST 요청 ë�°ì�´í„° ì—†ì�Œ" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "설정" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "시그ë„�" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "리시버" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)sê°œì�˜ 쿼리" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "%(count)s ê°œì�˜ 유사한 쿼리 í�¬í•¨" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "그리고 %(dupes)sê°œì�˜ 중복" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "쿼리" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "타임ë�¼ì�¸" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "%(count)sê°œì�˜ 유사한 쿼리" #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "%(dupes)s번 중복ë�©ë‹ˆë‹¤." #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "커넥션:" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "격리 수준:" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "트랜잭션 ìƒ�태:" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "(알 수 ì—†ì�Œ)" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "ì�´ 요청ì�„ 처리하는 ë�™ì•ˆ 기ë¡�ë�œ SQL 쿼리가 없습니다." #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL 설명" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "실행ë�œ SQL 구문" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "ë�°ì�´í„°ë² ì�´ìФ" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL 성능 ë¶„ì„�" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "ì—�러" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "ì„ íƒ�ë�œ SQL 구문" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "빈 ì…‹" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "ì •ì � 파ì�¼ 경로" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "ì •ì � 파ì�¼ 앱" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "ì •ì � 파ì�¼" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)sê°œ 파ì�¼" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "위치" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "템플릿 소스:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "템플릿 경로" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "템플릿" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "컨í…�스트 토글" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "컨í…�스트 프로세서" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "리소스 사용량" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "리소스" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "브ë�¼ìš°ì € 타ì�´ë°�" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "타ì�´ë°� ì†�성" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "íƒ�색 시작 ì�´í›„ 시간 (+기간)" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "패키지" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "ì�´ë¦„" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "버전" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "위치:" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "Django Debug Toolbar는 디버그 보기를 제공하기 위해 위 URL으로 리다ì�´ë ‰ì…˜ì�„ 가로챘습니다. 위 ë§�í�¬ë¥¼ í�´ë¦­í•˜ì—¬ ì •ìƒ�ì �으로 리다ì�´ë ‰ì…˜ì�„ 계ì†� 할수 있습니다." #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "ì�´ 패ë„�ì�˜ ë�°ì�´í„°ëŠ” ë�”ì�´ìƒ� 사용할 수 없습니다. 페ì�´ì§€ë¥¼ 새로고침한 ë’¤ 다시 시ë�„하십시오." python-django-debug-toolbar-8.0.0/debug_toolbar/locale/lt/000077500000000000000000000000001524561404200235155ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/lt/LC_MESSAGES/000077500000000000000000000000001524561404200253025ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/lt/LC_MESSAGES/django.mo000066400000000000000000000176731524561404200271170ustar00rootroot00000000000000Þ•\üÜØJÙl$N‘.àU e w ‰   )² Ü æ ô û    $ ", O FU œ § ´ º à Í æ ÷ , 7 (E "n ‘ 'ž LÆ X ll Ù á æ ó û   ) z8 ³ Ç Ù ê î   $7FWgo�L” áî÷  5*`h x&‚© ® ¸Å Ô àëúÿ  $J0{ ‹-™¯ÇÏw”GxÜÂU(8M/]��¬ ´À Ò.Ý ,B¶K (3 <!Ik�&‘¸4Ò(03A\uSÒi& �œ¤À'É ñüy!›¯Êæí 1?Wk� ˜¢¹ÎªÒ } ‡’¤½Æ@× " ?)Is z†–° ÄÑä êô %W=•¨(P0UY"#'ZB.KE6&) 715>I$;: MXRJF9TL V*W!/%,HA=82QNG?DS+ 4-<O\3 @ %(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(query_count)d query in %(sql_time).2fms%(query_count)d queries in %(sql_time).2fms%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntaryActiveAlertsAlerts foundArgumentsAutocommitBackendCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallsCommandsCommunityCommunity & ContributionContext switchesContribution GuideData for this panel isn't available anymore.Debug ToolbarDisable for next and successive requestsDjango Debug Toolbar DocumentationElapsed timeEnable for next and successive requestsExplore the official documentation to learn more about Django Debug Toolbar.Form contains file input, but does not have the attribute enctype="multipart/form-data".Form with id "{form_id}" contains file input, but does not have the attribute enctype="multipart/form-data".HeadersHideHide toolbarHistoryHow to Use Django Debug ToolbarIdleIn errorIn transactionInput element references form with id "{form_id}", but the form does not have the attribute enctype="multipart/form-data".Intercept redirectsInvalid query id.Join DiscussionsKeyKeyword argumentsNo alerts foundNo originProfilingRead DocumentationRead committedRead uncommittedRepeatable readRequestRequest headersResponse headersSQLSQL queries from %(count)d connectionSQL queries from %(count)d connectionsSerializableSettingsSettings from %sShow toolbarSignalsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummarySystem CPU timeTemplatesTemplates (%(num_templates)s rendered)TimeTime (ms)Toggle ThemeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTypeUnknownUser CPU timeValueVersionsView IssuesWant to contribute to Django Debug Toolbar? Get involved in our community!history entrieshistory entryProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: Karolis Ryselis , 2025-2026 Language-Team: Lithuanian (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/lt/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: lt Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3); %(cache_calls)d kvietimas per %(time).2f ms%(cache_calls)d kvietimai per %(time).2f ms%(cache_calls)d kvietimų per %(time).2f ms%(cache_calls)d kvietimų per %(time).2f ms%(num_receivers)d %(num_signals)d signalų gavÄ—jas%(num_receivers)d %(num_signals)d signalų gavÄ—jai%(num_receivers)d %(num_signals)d signalų gavÄ—jų%(num_receivers)d %(num_signals)d signalų gavÄ—jų%(num_receivers)d 1 signalo gavÄ—jas%(num_receivers)d 1 signalo gavÄ—jai%(num_receivers)d 1 signalo gavÄ—jų%(num_receivers)d 1 signalo gavÄ—jųNaudojamas %(num_used)s failasNaudojami %(num_used)s failaiNaudojami %(num_used)s failųNaudojami %(num_used)s failų%(query_count)d užklausa per %(sql_time).2f ms%(query_count)d užklausos per %(sql_time).2f ms%(query_count)d užklausų per %(sql_time).2f ms%(query_count)d užklausų per %(sql_time).2f ms%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d savanoriÅ¡ki, %(ivcsw)d nesavanoriÅ¡kiAktyvusÄ®spÄ—jimaiRasti įspÄ—jimaiArgumentaiAutomatinis transakcijų patvirtinimo režimasVariklisProcesorius: %(cum)0.2f ms (%(total)0.2f ms)PodÄ—lisPodÄ—lio kreipiniai iÅ¡ %(count)d posistemioPodÄ—lio kreipiniai iÅ¡ %(count)d posistemiųPodÄ—lio kreipiniai iÅ¡ %(count)d posistemiųPodÄ—lio kreipiniai iÅ¡ %(count)d posistemiųRadimai podÄ—lyjeNeradimai podÄ—lyjeKreipiniaiKomandosBendruomenÄ—BendruomenÄ— ir bendradarbiavimasKonteksto perjungimaiKaip prisidÄ—tiÅ io skydelio duomenys nebepasiekiami.Derinimo įrankių juostaIÅ¡jungti sekanÄ�iai ir kitoms bÅ«simoms užklausoms„Django Debug Toolbar“ dokumentacijaPraÄ—jÄ™s laikasÄ®jungti sekanÄ�iai ir kitoms bÅ«simoms užklausomsTyrinÄ—kite oficialiÄ… dokumentacijÄ… ir sužinokite daugiau apie „Django Debug Toolbar“Formoje yra failų laukas, bet forma neturi atributo enctype="multipart/form-data".Formoje su id "{form_id}" yra failų laukas, bet jai nenurodytas atributas enctype="multipart/form-data".AntraÅ¡tÄ—sSlÄ—ptiPaslÄ—pti įrankių juostÄ…IstorijaKaip naudoti „Django Debug Toolbar“NeužimtasKlaidos bÅ«senojeVykdo tranzakcijÄ…Ä®vesties elementas nurodo formÄ… su ID „{form_id}“, taÄ�iau Å¡i forma neturi atributo enctype="multipart/form-data".Perimti nukreipimusNeteisingas užklausos id.Prisijungti prie diskusijųRaktasArgumentai-raktažodžiaiÄ®spÄ—jimų nerastaÅ altinis nenurodytasProfiliavimasSkaityti dokumentacijÄ…Skaityti užbaigtasSkaityti neužbaigtasAtkartojamas skaitymasUžklausaUžklausos antraÅ¡tÄ—sAtsakymo antraÅ¡tÄ—sSQLSQL užklausos iÅ¡ %(count)d prisijungimoSQL užklausos iÅ¡ %(count)d prisijungimųSQL užklausos iÅ¡ %(count)d prisijungimųSQL užklausos iÅ¡ %(count)d prisijungimųSerijinisNustatymaiNustatymai iÅ¡ %sRodyti įrankių juostÄ…SignalaiStatiniai failaiStatiniai failai (%(num_found)s surasti, %(num_used)s naudojami)SantraukaSistemos procesoriaus laikasÅ ablonaiÅ ablonai (%(num_templates)s sugeneruoti)LaikasLaikas (ms)Perjungti temÄ…Visas procesoriaus laikasIÅ¡ viso kreipiniųVisas laikasIÅ¡ viso: %0.2f msTipasNežinomaNaudotojo procesoriaus laikasReikÅ¡mÄ—VersijosPeržiÅ«rÄ—ti problemasNorite prisidÄ—ti prie „Django Debug Toolbar“? Ä®sitraukite į mÅ«sų bendruomenÄ™!istorijos įraÅ¡aiistorijos įraÅ¡aspython-django-debug-toolbar-8.0.0/debug_toolbar/locale/lt/LC_MESSAGES/django.po000066400000000000000000000501501524561404200271050ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Karolis Ryselis , 2025-2026 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-16 19:11-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: Karolis Ryselis , 2025-2026\n" "Language-Team: Lithuanian (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/lt/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lt\n" "Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "Derinimo įrankių juosta" #: models.py:11 msgid "history entry" msgstr "istorijos įraÅ¡as" #: models.py:12 msgid "history entries" msgstr "istorijos įraÅ¡ai" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "Formoje su id \"{form_id}\" yra failų laukas, bet jai nenurodytas atributas enctype=\"multipart/form-data\"." #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "Formoje yra failų laukas, bet forma neturi atributo enctype=\"multipart/form-data\"." #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "Ä®vesties elementas nurodo formÄ… su ID „{form_id}“, taÄ�iau Å¡i forma neturi atributo enctype=\"multipart/form-data\"." #: panels/alerts.py:77 msgid "Alerts" msgstr "Ä®spÄ—jimai" #: panels/cache.py:170 msgid "Cache" msgstr "PodÄ—lis" #: panels/cache.py:177 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d kvietimas per %(time).2f ms" msgstr[1] "%(cache_calls)d kvietimai per %(time).2f ms" msgstr[2] "%(cache_calls)d kvietimų per %(time).2f ms" msgstr[3] "%(cache_calls)d kvietimų per %(time).2f ms" #: panels/cache.py:186 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "PodÄ—lio kreipiniai iÅ¡ %(count)d posistemio" msgstr[1] "PodÄ—lio kreipiniai iÅ¡ %(count)d posistemių" msgstr[2] "PodÄ—lio kreipiniai iÅ¡ %(count)d posistemių" msgstr[3] "PodÄ—lio kreipiniai iÅ¡ %(count)d posistemių" #: panels/community.py:13 msgid "Community" msgstr "BendruomenÄ—" #: panels/headers.py:31 msgid "Headers" msgstr "AntraÅ¡tÄ—s" #: panels/history/panel.py:20 panels/history/panel.py:21 msgid "History" msgstr "Istorija" #: panels/profiling.py:156 msgid "Profiling" msgstr "Profiliavimas" #: panels/redirects.py:18 msgid "Intercept redirects" msgstr "Perimti nukreipimus" #: panels/request.py:16 msgid "Request" msgstr "Užklausa" #: panels/request.py:36 msgid "" msgstr "" #: panels/request.py:53 msgid "" msgstr "" #: panels/settings.py:19 msgid "Settings" msgstr "Nustatymai" #: panels/settings.py:22 #, python-format msgid "Settings from %s" msgstr "Nustatymai iÅ¡ %s" #: panels/signals.py:59 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d 1 signalo gavÄ—jas" msgstr[1] "%(num_receivers)d 1 signalo gavÄ—jai" msgstr[2] "%(num_receivers)d 1 signalo gavÄ—jų" msgstr[3] "%(num_receivers)d 1 signalo gavÄ—jų" #: panels/signals.py:64 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d %(num_signals)d signalų gavÄ—jas" msgstr[1] "%(num_receivers)d %(num_signals)d signalų gavÄ—jai" msgstr[2] "%(num_receivers)d %(num_signals)d signalų gavÄ—jų" msgstr[3] "%(num_receivers)d %(num_signals)d signalų gavÄ—jų" #: panels/signals.py:69 msgid "Signals" msgstr "Signalai" #: panels/sql/forms.py:56 msgid "Data for this panel isn't available anymore." msgstr "Å io skydelio duomenys nebepasiekiami." #: panels/sql/forms.py:68 msgid "Invalid query id." msgstr "Neteisingas užklausos id." #: panels/sql/panel.py:32 panels/sql/panel.py:43 msgid "Read uncommitted" msgstr "Skaityti neužbaigtas" #: panels/sql/panel.py:33 panels/sql/panel.py:45 msgid "Read committed" msgstr "Skaityti užbaigtas" #: panels/sql/panel.py:34 panels/sql/panel.py:47 msgid "Repeatable read" msgstr "Atkartojamas skaitymas" #: panels/sql/panel.py:35 panels/sql/panel.py:49 msgid "Serializable" msgstr "Serijinis" #: panels/sql/panel.py:41 msgid "Autocommit" msgstr "Automatinis transakcijų patvirtinimo režimas" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "Idle" msgstr "Neužimtas" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "Active" msgstr "Aktyvus" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "In transaction" msgstr "Vykdo tranzakcijÄ…" #: panels/sql/panel.py:66 panels/sql/panel.py:76 msgid "In error" msgstr "Klaidos bÅ«senoje" #: panels/sql/panel.py:67 panels/sql/panel.py:77 msgid "Unknown" msgstr "Nežinoma" #: panels/sql/panel.py:165 msgid "SQL" msgstr "SQL" #: panels/sql/panel.py:172 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "%(query_count)d užklausa per %(sql_time).2f ms" msgstr[1] "%(query_count)d užklausos per %(sql_time).2f ms" msgstr[2] "%(query_count)d užklausų per %(sql_time).2f ms" msgstr[3] "%(query_count)d užklausų per %(sql_time).2f ms" #: panels/sql/panel.py:184 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "SQL užklausos iÅ¡ %(count)d prisijungimo" msgstr[1] "SQL užklausos iÅ¡ %(count)d prisijungimų" msgstr[2] "SQL užklausos iÅ¡ %(count)d prisijungimų" msgstr[3] "SQL užklausos iÅ¡ %(count)d prisijungimų" #: panels/staticfiles.py:47 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Statiniai failai (%(num_found)s surasti, %(num_used)s naudojami)" #: panels/staticfiles.py:81 msgid "Static files" msgstr "Statiniai failai" #: panels/staticfiles.py:87 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "Naudojamas %(num_used)s failas" msgstr[1] "Naudojami %(num_used)s failai" msgstr[2] "Naudojami %(num_used)s failų" msgstr[3] "Naudojami %(num_used)s failų" #: panels/templates/panel.py:104 msgid "Templates" msgstr "Å ablonai" #: panels/templates/panel.py:109 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Å ablonai (%(num_templates)s sugeneruoti)" #: panels/templates/panel.py:199 msgid "No origin" msgstr "Å altinis nenurodytas" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "Procesorius: %(cum)0.2f ms (%(total)0.2f ms)" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "IÅ¡ viso: %0.2f ms" #: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Laikas" #: panels/timer.py:46 msgid "User CPU time" msgstr "Naudotojo procesoriaus laikas" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f ms" #: panels/timer.py:47 msgid "System CPU time" msgstr "Sistemos procesoriaus laikas" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f ms" #: panels/timer.py:48 msgid "Total CPU time" msgstr "Visas procesoriaus laikas" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f ms" #: panels/timer.py:49 msgid "Elapsed time" msgstr "PraÄ—jÄ™s laikas" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f ms" #: panels/timer.py:51 msgid "Context switches" msgstr "Konteksto perjungimai" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d savanoriÅ¡ki, %(ivcsw)d nesavanoriÅ¡ki" #: panels/versions.py:21 msgid "Versions" msgstr "Versijos" #: templates/debug_toolbar/base.html:22 msgid "Hide toolbar" msgstr "PaslÄ—pti įrankių juostÄ…" #: templates/debug_toolbar/base.html:22 msgid "Hide" msgstr "SlÄ—pti" #: templates/debug_toolbar/base.html:24 templates/debug_toolbar/base.html:25 msgid "Toggle Theme" msgstr "Perjungti temÄ…" #: templates/debug_toolbar/base.html:34 msgid "Show toolbar" msgstr "Rodyti įrankių juostÄ…" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "IÅ¡jungti sekanÄ�iai ir kitoms bÅ«simoms užklausoms" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "Ä®jungti sekanÄ�iai ir kitoms bÅ«simoms užklausoms" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "Rasti įspÄ—jimai" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "Ä®spÄ—jimų nerasta" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Santrauka" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "IÅ¡ viso kreipinių" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Visas laikas" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Radimai podÄ—lyje" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Neradimai podÄ—lyje" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Komandos" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Kreipiniai" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:36 msgid "Time (ms)" msgstr "Laikas (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Tipas" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Argumentai" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Argumentai-raktažodžiai" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Variklis" #: templates/debug_toolbar/panels/community.html:5 msgid "Community & Contribution" msgstr "BendruomenÄ— ir bendradarbiavimas" #: templates/debug_toolbar/panels/community.html:8 msgid "" "Want to contribute to Django Debug Toolbar? Get involved in our community!" msgstr "Norite prisidÄ—ti prie „Django Debug Toolbar“? Ä®sitraukite į mÅ«sų bendruomenÄ™!" #: templates/debug_toolbar/panels/community.html:14 msgid "Join Discussions" msgstr "Prisijungti prie diskusijų" #: templates/debug_toolbar/panels/community.html:19 msgid "View Issues" msgstr "PeržiÅ«rÄ—ti problemas" #: templates/debug_toolbar/panels/community.html:24 msgid "Contribution Guide" msgstr "Kaip prisidÄ—ti" #: templates/debug_toolbar/panels/community.html:31 msgid "Django Debug Toolbar Documentation" msgstr "„Django Debug Toolbar“ dokumentacija" #: templates/debug_toolbar/panels/community.html:34 msgid "" "Explore the official documentation to learn more about Django Debug Toolbar." msgstr "TyrinÄ—kite oficialiÄ… dokumentacijÄ… ir sužinokite daugiau apie „Django Debug Toolbar“" #: templates/debug_toolbar/panels/community.html:39 msgid "Read Documentation" msgstr "Skaityti dokumentacijÄ…" #: templates/debug_toolbar/panels/community.html:44 msgid "How to Use Django Debug Toolbar" msgstr "Kaip naudoti „Django Debug Toolbar“" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "Užklausos antraÅ¡tÄ—s" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Raktas" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "ReikÅ¡mÄ—" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Atsakymo antraÅ¡tÄ—s" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "" #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:3 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:3 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:3 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "" #: templates/debug_toolbar/panels/template_source.html:3 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: views.py:18 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" python-django-debug-toolbar-8.0.0/debug_toolbar/locale/nl/000077500000000000000000000000001524561404200235075ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/nl/LC_MESSAGES/000077500000000000000000000000001524561404200252745ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/nl/LC_MESSAGES/django.mo000066400000000000000000000075001524561404200270750ustar00rootroot00000000000000Þ•D<a\àláNN�­½Ò)â   .5"<_e jv| … ’œ ¢¯¸ ½ÊÓ×àç ì ø  & ,6? C Q^f o|ƒ‹“£¶ Ó&Ý    ) 8 L Q Y g m v ~ ‡  ˜ r9 T¬   ! 6 .F u ƒ ’ ¥ « "² Õ Û ä ð ÷    , 5 ? O W _ g o t ‚ ‘ –   § ³ ¹ Ä É Í Û ë ö  #0AT n'x  ¥¯·Ç×é îú &.<1&#  7) /.+ '3C,%4(9D!*;:"5> 0B28 $@6?=-A%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d voluntary, %(ivcsw)d involuntary(unknown)ActionActiveCPU: %(cum)0.2fms (%(total)0.2fms)CacheCallConnection:CountDatabaseElapsed timeEmpty setErrorExecuted SQLGET dataHideHide toolbarIn errorKeyLocationMethodNameNo GET dataNo POST dataNonePOST dataPackageProfilingQueryReceiversResourceSQLSQL explainedSerializableSettingSettingsShow toolbarSignalSignalsSummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplatesTemplates (%(num_templates)s rendered)TimeTimelineTotTimeTotal CPU timeTotal: %0.2fmsTransaction status:TypeUnknownUser CPU timeValueVariableVersionVersionsView informationProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: Ingo Berben , 2012-2013 Language-Team: Dutch (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/nl/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: nl Plural-Forms: nplurals=2; plural=(n != 1); %(num_receivers)d ontvanger van %(num_signals)d signalen%(num_receivers)d ontvangers van %(num_signals)d signalen%(num_receivers)d ontvanger van 1 signaal%(num_receivers)d ontvangers van 1 signaal%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d vrijwillig, %(ivcsw)d niet vrijwillig(niet gekend)ActieActiefCPU: %(cum)0.2fms (%(total)0.2fms)CacheOproepenVerbinding:AantalDatabaseVerlopen tijdLege setFoutUitgevoerde SQLGET dataVerbergenVerberg toolbarFoutiefSleutelLocatieMethodeNaamGeen GET dataGeen POST dataNonePOST dataPakketProfileringQueryOntvangersBronSQLSQL uitgelegdSerializeerbaarInstellingInstellingenBekijk toolbarSignaalSignalenSamenvattingSysteem CPU tijdTemplateTemplatesTemplatepadTemplatepadenTemplatesTemplates (%(num_templates)s gerenderd)TijdTijdslijnTotTijdTotaal CPU tijdTotaal: %0.2fmsTransactiestatus:TypeNiet gekendGebruikers CPU tijdWaardeParameterVersieVersiesBekijk informatiepython-django-debug-toolbar-8.0.0/debug_toolbar/locale/nl/LC_MESSAGES/django.po000066400000000000000000000401541524561404200271020ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Ingo Berben , 2012-2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: Ingo Berben , 2012-2013\n" "Language-Team: Dutch (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:77 msgid "Alerts" msgstr "" #: panels/cache.py:168 msgid "Cache" msgstr "Cache" #: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" #: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" #: panels/headers.py:31 msgid "Headers" msgstr "" #: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" #: panels/profiling.py:140 msgid "Profiling" msgstr "Profilering" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "" #: panels/request.py:16 msgid "Request" msgstr "" #: panels/request.py:38 msgid "" msgstr "" #: panels/request.py:55 msgid "" msgstr "" #: panels/settings.py:17 msgid "Settings" msgstr "Instellingen" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d ontvanger van 1 signaal" msgstr[1] "%(num_receivers)d ontvangers van 1 signaal" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d ontvanger van %(num_signals)d signalen" msgstr[1] "%(num_receivers)d ontvangers van %(num_signals)d signalen" #: panels/signals.py:67 msgid "Signals" msgstr "Signalen" #: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "" #: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Serializeerbaar" #: panels/sql/panel.py:39 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "" #: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Actief" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "Foutief" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "Niet gekend" #: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" #: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" msgstr[1] "" #: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" #: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:103 msgid "Static files" msgstr "" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" #: panels/templates/panel.py:101 msgid "Templates" msgstr "Templates" #: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templates (%(num_templates)s gerenderd)" #: panels/templates/panel.py:195 msgid "No origin" msgstr "" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Totaal: %0.2fms" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tijd" #: panels/timer.py:46 msgid "User CPU time" msgstr "Gebruikers CPU tijd" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "%(utime)0.3f ms" #: panels/timer.py:47 msgid "System CPU time" msgstr "Systeem CPU tijd" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "%(stime)0.3f ms" #: panels/timer.py:48 msgid "Total CPU time" msgstr "Totaal CPU tijd" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "%(total)0.3f ms" #: panels/timer.py:49 msgid "Elapsed time" msgstr "Verlopen tijd" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "%(total_time)0.3f ms" #: panels/timer.py:51 msgid "Context switches" msgstr "" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d vrijwillig, %(ivcsw)d niet vrijwillig" #: panels/versions.py:19 msgid "Versions" msgstr "Versies" #: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Verberg toolbar" #: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Verbergen" #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 msgid "Toggle Theme" msgstr "" #: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Bekijk toolbar" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Samenvatting" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Type" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Sleutel" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Waarde" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "Methode" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "Actie" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "Parameter" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Oproepen" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TotTijd" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Aantal" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Bekijk informatie" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "GET data" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "Geen GET data" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "POST data" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "Geen POST data" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Instelling" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signaal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "Ontvangers" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "Query" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Tijdslijn" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "" #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "Verbinding:" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "Transactiestatus:" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "(niet gekend)" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL uitgelegd" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Uitgevoerde SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Database" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Fout" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Lege set" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "None" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "Locatie" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Templatepad" msgstr[1] "Templatepaden" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Template" msgstr[1] "Templates" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Bron" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "Pakket" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "Naam" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "Versie" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" python-django-debug-toolbar-8.0.0/debug_toolbar/locale/pl/000077500000000000000000000000001524561404200235115ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/pl/LC_MESSAGES/000077500000000000000000000000001524561404200252765ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/pl/LC_MESSAGES/django.mo000066400000000000000000000126451524561404200271050ustar00rootroot00000000000000Þ•M„gìˆJ‰ÔlòN_.®Ýíý " , 6DK R]"eˆFŽÕÚà éõ   # 0 : @ M U Z g l u „ ˜ © ­ ¶ » Ç 1Ô    * ; E M V Z b k r z 5‡ ½ Å Ø õ &ÿ & + 4 C W \ d j s { „ 6• ¥Ì ErÚ¸�“s1¥µÅÚ ê õ +"3V¡\ þ   ,E M Yg w„‹ ¢­ ³ Á Ë ×ä #)9DJ� ” ¡«ÂÚ ãíô ø ?/ o'|O¤ ô+þ* /9Rei r|„‹’%2:&A K, )C$I0<1H3@8 7;9?*M!GJDL-.'"5>/= +#(4 B6EF%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms(unknown)ActionActiveAutocommitBackendCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCallCallsCommandsConnection:Context switchesCountDatabaseDebug ToolbarElapsed timeEmpty setErrorExecuted SQLHeadersHideHide toolbarIdleIn errorIn transactionIntercept redirectsIsolation level:KeyLocationNameNo GET dataNo POST dataNo SQL queries were recorded during this request.NoneProfilingQueryRead committedRead uncommittedReceiversRequestResourceSQLSettingSettingsSignalSignalsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummaryTemplateTemplatesTemplate pathTemplate pathsTemplatesTemplates (%(num_templates)s rendered)TimeTimelineTotal: %0.2fmsTransaction status:TypeUnknownValueVariableVersionVersionsView informationProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: Konrad MosoÅ„ , 2013,2015 Language-Team: Polish (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/pl/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: pl Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3); %(cache_calls)d wywoÅ‚anie w %(time).2fms%(cache_calls)d wywoÅ‚ania w %(time).2fms%(cache_calls)d wywoÅ‚aÅ„ w %(time).2fms%(cache_calls)d wywoÅ‚aÅ„ w %(time).2fms%(num)s zapytanie%(num)s zapytania%(num)s zapytaÅ„%(num)s zapytaÅ„%(num_receivers)d odbiora %(num_signals)d sygnaÅ‚u%(num_receivers)d odbiorców %(num_signals)d sygnałów%(num_receivers)d odbiorców %(num_signals)d sygnałów%(num_receivers)d odbiorców %(num_signals)d sygnałów%(num_receivers)d orbiorca 1 sygnaÅ‚u%(num_receivers)d odbiorców 1 sygnaÅ‚u%(num_receivers)d odbiorców 1 sygnaÅ‚u%(num_receivers)d odbiorców 1 sygnaÅ‚u%(num_used)s użyty plików%(num_used)s użyte plików%(num_used)s użytych plików%(num_used)s użytych plików%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms(nieznany)AkcjaAktywneAutocommitBackendCPU: %(cum)0.2fms (%(total)0.2fms)CacheWywoÅ‚aÅ„ z cache z %(count)d backenduWywoÅ‚aÅ„ z cache z %(count)d backendówWywoÅ‚aÅ„ z cache z %(count)d backendówWywoÅ‚aÅ„ z cache z %(count)d backendówWywoÅ‚anieWywoÅ‚aniaPoleceniaPołączenie:Przełączenia kontekstuIlośćBaza danychDebug ToolbarCaÅ‚kowity czasPusty zbiórBłądWykonane zapytanie SQLNagłówkiUkryjUkryj toolbarBezczynnyW błędzieW transakcjiPrzechwycone przekierowaniaPoziom izolacji:KluczLokalizacjaNazwaBrak danych GETBrak danych POSTÅ»adne zapytania SQL nie zostaÅ‚y odnotowane podczas tego zapytania.BrakProfilowanieZapytaniePrzeczytaj popeÅ‚nionePrzeczaj niepopeÅ‚nioneOdbiorcyZapytaniaZasóbSQLUstawienieUstawieniaSygnaÅ‚SygnaÅ‚yPliki statycznePliki statyczne (znaleziono %(num_found)s, użyto %(num_used)s)PodsumowanieTemplatkiTemplatkiTemplatkiTemplatkiÅšcieżka templatkiÅšcieżki templatekÅšcieżki templatekÅšcieżki templatekTemplatkiTemplatki (%(num_templates)s wyrenderowano)CzasOÅ› czasuCaÅ‚kowity czas: %0.2fmsStatus transakcji:TypNieznaneWartośćZmiennaWersjaWersjePokaż informacjepython-django-debug-toolbar-8.0.0/debug_toolbar/locale/pl/LC_MESSAGES/django.po000066400000000000000000000431001524561404200270760ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Konrad MosoÅ„ , 2013,2015 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: Konrad MosoÅ„ , 2013,2015\n" "Language-Team: Polish (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "Debug Toolbar" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:77 msgid "Alerts" msgstr "" #: panels/cache.py:168 msgid "Cache" msgstr "Cache" #: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d wywoÅ‚anie w %(time).2fms" msgstr[1] "%(cache_calls)d wywoÅ‚ania w %(time).2fms" msgstr[2] "%(cache_calls)d wywoÅ‚aÅ„ w %(time).2fms" msgstr[3] "%(cache_calls)d wywoÅ‚aÅ„ w %(time).2fms" #: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "WywoÅ‚aÅ„ z cache z %(count)d backendu" msgstr[1] "WywoÅ‚aÅ„ z cache z %(count)d backendów" msgstr[2] "WywoÅ‚aÅ„ z cache z %(count)d backendów" msgstr[3] "WywoÅ‚aÅ„ z cache z %(count)d backendów" #: panels/headers.py:31 msgid "Headers" msgstr "Nagłówki" #: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" #: panels/profiling.py:140 msgid "Profiling" msgstr "Profilowanie" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Przechwycone przekierowania" #: panels/request.py:16 msgid "Request" msgstr "Zapytania" #: panels/request.py:38 msgid "" msgstr "" #: panels/request.py:55 msgid "" msgstr "" #: panels/settings.py:17 msgid "Settings" msgstr "Ustawienia" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d orbiorca 1 sygnaÅ‚u" msgstr[1] "%(num_receivers)d odbiorców 1 sygnaÅ‚u" msgstr[2] "%(num_receivers)d odbiorców 1 sygnaÅ‚u" msgstr[3] "%(num_receivers)d odbiorców 1 sygnaÅ‚u" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d odbiora %(num_signals)d sygnaÅ‚u" msgstr[1] "%(num_receivers)d odbiorców %(num_signals)d sygnałów" msgstr[2] "%(num_receivers)d odbiorców %(num_signals)d sygnałów" msgstr[3] "%(num_receivers)d odbiorców %(num_signals)d sygnałów" #: panels/signals.py:67 msgid "Signals" msgstr "SygnaÅ‚y" #: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "Przeczaj niepopeÅ‚nione" #: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "Przeczytaj popeÅ‚nione" #: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "" #: panels/sql/panel.py:39 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "Bezczynny" #: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Aktywne" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "W transakcji" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "W błędzie" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "Nieznane" #: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" #: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Pliki statyczne (znaleziono %(num_found)s, użyto %(num_used)s)" #: panels/staticfiles.py:103 msgid "Static files" msgstr "Pliki statyczne" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s użyty plików" msgstr[1] "%(num_used)s użyte plików" msgstr[2] "%(num_used)s użytych plików" msgstr[3] "%(num_used)s użytych plików" #: panels/templates/panel.py:101 msgid "Templates" msgstr "Templatki" #: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templatki (%(num_templates)s wyrenderowano)" #: panels/templates/panel.py:195 msgid "No origin" msgstr "" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "CaÅ‚kowity czas: %0.2fms" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Czas" #: panels/timer.py:46 msgid "User CPU time" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "%(utime)0.3f ms" #: panels/timer.py:47 msgid "System CPU time" msgstr "" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "%(stime)0.3f ms" #: panels/timer.py:48 msgid "Total CPU time" msgstr "" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "%(total)0.3f ms" #: panels/timer.py:49 msgid "Elapsed time" msgstr "CaÅ‚kowity czas" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "%(total_time)0.3f ms" #: panels/timer.py:51 msgid "Context switches" msgstr "Przełączenia kontekstu" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:19 msgid "Versions" msgstr "Wersje" #: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Ukryj toolbar" #: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Ukryj" #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 msgid "Toggle Theme" msgstr "" #: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Podsumowanie" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Polecenia" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "WywoÅ‚ania" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Typ" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Backend" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Klucz" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Wartość" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "Akcja" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "Zmienna" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "WywoÅ‚anie" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Ilość" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Pokaż informacje" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "Brak danych GET" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "Brak danych POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Ustawienie" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "SygnaÅ‚" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "Odbiorcy" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s zapytanie" msgstr[1] "%(num)s zapytania" msgstr[2] "%(num)s zapytaÅ„" msgstr[3] "%(num)s zapytaÅ„" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "Zapytanie" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "OÅ› czasu" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "" #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "Połączenie:" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "Poziom izolacji:" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "Status transakcji:" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "(nieznany)" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "Å»adne zapytania SQL nie zostaÅ‚y odnotowane podczas tego zapytania." #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Wykonane zapytanie SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Baza danych" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Błąd" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Pusty zbiór" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "Brak" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "Lokalizacja" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Åšcieżka templatki" msgstr[1] "Åšcieżki templatek" msgstr[2] "Åšcieżki templatek" msgstr[3] "Åšcieżki templatek" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Templatki" msgstr[1] "Templatki" msgstr[2] "Templatki" msgstr[3] "Templatki" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Zasób" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "Nazwa" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "Wersja" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" python-django-debug-toolbar-8.0.0/debug_toolbar/locale/pt/000077500000000000000000000000001524561404200235215ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/pt/LC_MESSAGES/000077500000000000000000000000001524561404200253065ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/pt/LC_MESSAGES/django.mo000066400000000000000000000055671524561404200271220ustar00rootroot00000000000000Þ•2¬C<HI ] gu|ƒ(Œ µ'¿ç íú ÿ )- 6@G L X1e— œ¦ ®¸À ÉÖÞ çôû ) 1&;bgvŠ�—�¦®Ô·Œ¡°ÀÈÐ/Ù , @ E S [ i n ‹ ‘ Ÿ ­ µ º È 4Ü   # * 5 < D N ^ n | ‚ <‰ Æ Û â *ì   , D I V \ f n ("%$)10* .'/ &  2,+#- !(prefix %(prefix)s)(unknown)ActionActiveCommandsDisable for next and successive requestsEmpty setEnable for next and successive requestsErrorExecuted SQLHideHide toolbarIn errorIntercept redirectsKeyLocationLocation:MethodNameNo GET dataNo POST dataNo SQL queries were recorded during this request.NonePOST dataPackageReceiversRequestResourceSerializableSettingSettingsShow toolbarSignalSignalsStatic fileStatic filesStatic filesSummaryTemplatesTemplates (%(num_templates)s rendered)TimeTotal: %0.2fmsTransaction status:TypeUnknownValueVariableVersionVersionsProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: José Durães , 2014 Language-Team: Portuguese (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/pt/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: pt Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2; (prefixo %(prefix)s)(desconhecido)AcçãoAcçãoComandosDesactivar para o seguinte e sucessivos pedidosSet vazioActivar para o próximo e sucessivos pedidosErroSQL ExecutadoOcultarOcultar barraErroIntercetar redirecionamentosChaveLocalizaçãoLocalizaçãoMétodoNomeSem dados GETSem variáveis POSTNenhuma query SQL foi registada durante este pedido.Nenhumdados POSTPacoteReceptoresPedidoRecursoVariávelConfiguraçõesConfiguraçõesMostrar barraSinalSinaisFicheiro estáticoFicheiros estáticosFicheiros estáticosFicheiros estáticosResumoTemplatesTemplates (%(num_templates)s renderizados)TempoTotal: %0.2fmsEstado da transacção:TipoDesconhecidoValorVariávelVersãoVersõespython-django-debug-toolbar-8.0.0/debug_toolbar/locale/pt/LC_MESSAGES/django.po000066400000000000000000000402531524561404200271140ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # José Durães , 2014 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: José Durães , 2014\n" "Language-Team: Portuguese (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/pt/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt\n" "Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:77 msgid "Alerts" msgstr "" #: panels/cache.py:168 msgid "Cache" msgstr "" #: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/headers.py:31 msgid "Headers" msgstr "" #: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" #: panels/profiling.py:140 msgid "Profiling" msgstr "" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Intercetar redirecionamentos" #: panels/request.py:16 msgid "Request" msgstr "Pedido" #: panels/request.py:38 msgid "" msgstr "" #: panels/request.py:55 msgid "" msgstr "" #: panels/settings.py:17 msgid "Settings" msgstr "Configurações" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/signals.py:67 msgid "Signals" msgstr "Sinais" #: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "" #: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Variável" #: panels/sql/panel.py:39 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "" #: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Acção" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "Erro" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "Desconhecido" #: panels/sql/panel.py:162 msgid "SQL" msgstr "" #: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:103 msgid "Static files" msgstr "Ficheiros estáticos" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/templates/panel.py:101 msgid "Templates" msgstr "Templates" #: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templates (%(num_templates)s renderizados)" #: panels/templates/panel.py:195 msgid "No origin" msgstr "" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Total: %0.2fms" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tempo" #: panels/timer.py:46 msgid "User CPU time" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "" #: panels/timer.py:47 msgid "System CPU time" msgstr "" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "" #: panels/timer.py:48 msgid "Total CPU time" msgstr "" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "" #: panels/timer.py:49 msgid "Elapsed time" msgstr "" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "" #: panels/timer.py:51 msgid "Context switches" msgstr "" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:19 msgid "Versions" msgstr "Versões" #: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Ocultar barra" #: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Ocultar" #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 msgid "Toggle Theme" msgstr "" #: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Mostrar barra" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "Desactivar para o seguinte e sucessivos pedidos" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "Activar para o próximo e sucessivos pedidos" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Resumo" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Comandos" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Tipo" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Chave" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Valor" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "Método" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "Acção" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "Variável" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "Sem dados GET" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "dados POST" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "Sem variáveis POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Configurações" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Sinal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "Receptores" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "" #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "Estado da transacção:" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "(desconhecido)" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "Nenhuma query SQL foi registada durante este pedido." #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL Executado" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Erro" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Set vazio" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "(prefixo %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "Nenhum" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "Ficheiro estático" msgstr[1] "Ficheiros estáticos" msgstr[2] "Ficheiros estáticos" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "Localização" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "Caminho da Template" msgstr[2] "Caminho da Template" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "Processador de Contexto" msgstr[2] "Processador de Contexto" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Recurso" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "Pacote" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "Nome" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "Versão" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "Localização" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" python-django-debug-toolbar-8.0.0/debug_toolbar/locale/pt_BR/000077500000000000000000000000001524561404200241045ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/pt_BR/LC_MESSAGES/000077500000000000000000000000001524561404200256715ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.mo000066400000000000000000000214121524561404200274700ustar00rootroot00000000000000Þ•­ À JÁ  l* N— .æ . D T d y )‰ ³ Ç Ñ Û é ð ÷    "# F FL “ ž « ° ¶ ¿ Ë Ü ä ê Nò A J(X � Ž'˜À ÆÓÜä éöû'8<N Wa f r1 ± ¼ÆÖ Ûåíò ö &0@HXap� … “   ­ ºÇÏ Øåìhô] v"— º5Çý(E V&`¦‡.'3[du„Œ › §²ÁÕÚã ëùÿ ' 8àEy&4 ¢Õux`îOOŸ¯¿Ô-ä '1AQX _ ju}"˜»vÁ8IY`i r|’š£i« $&2Yi&xŸ ¤ ² ¿ËÔñøý *@ F Q_ns‰>  ß ëö   '/ 3=CR co €�©±ÁÙ Ý ëù $3C`gqn9àP\kÈNÜ+ 2 J =g ¥ ¹ *à Æî µ!/»!ë!ú!"&"."A" S"_"n"…" Š" –"£"¼" Â"Ì"Ô" Ý"ë" ü"2f"q8$e>K`UXz7b&hn?Z=|L #)6Y+4HvEo}ay(B;km<pMN V@%sWi-d,!39{OFI\0C5^. [QASG* xuDjl]_T1gP/ w~RJ:t'rc%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveArgumentsAutocommitBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsCommandsConnection:Context switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDebug ToolbarDisable for next and successive requestsElapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLocationLocation:NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo originNo session dataNonePOST dataPackagePathPerProfilingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL selectedSerializableSession dataSettingSettingsShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static fileStatic filesStatic file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime since navigation start (+duration)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: Gladson , 2017 Language-Team: Portuguese (Brazil) (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/pt_BR/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: pt_BR Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2; %(cache_calls)d chamada em %(time).2fms%(cache_calls)d chamadas em %(time).2fms%(cache_calls)d chamadas em %(time).2fms%(num)s consulta%(num)s consultas%(num)s consultas%(num_receivers)d receptor de %(num_signals)d sinais%(num_receivers)d receptores de %(num_signals)d sinais%(num_receivers)d receptores de %(num_signals)d sinais%(num_receivers)d receptor de 1 sinal%(num_receivers)d receptores de 1 sinal%(num_receivers)d receptores de 1 sinal%(num_used)s arquivo utilizado%(num_used)s arquivos utilizados%(num_used)s arquivos utilizados%(payload_count)s arquivo%(payload_count)s arquivos%(payload_count)s arquivos%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d voluntário, %(ivcsw)d involuntário(prefixo %(prefix)s)(unknown)AçãoAçãoArgumentosAutocommitBackendCronometragem do NavegadorCPU: %(cum)0.2fms (%(total)0.2fms)CacheChamadas ao cache de %(count)d backendChamadas ao cache de %(count)d backendsChamadas ao cache de %(count)d backendsAcessos ao cacheFalhas de cacheChamarChamadasComandosConexão:Mudanças de contextoCookiesContagemCumTimeOs dados para este painel não está mais disponível. Por favor, recarregue a página e tente novamente.Banco de dadosDebug ToolbarDesativar para próximas requisiçõesTempo decorridoConjunto vazioHabilitar para próximas requisiçõesErroSQL ExecutadaDados de GETCabeçalhosEsconderOcultar barra de ferramentasOciosoErroNa transaçãoInterceptar redirecionamentosNível de isolamento:ChaveArgumentosLocalizaçãoLocalização:NomeNão há dados de GETNão há dados de POSTNenhuma consulta SQL foi registrada durante esta requisição.Sem CookiesSem origemSem dados de SessãoNenhumDados de POSTPacoteCaminhoPerProfilingQueryRead committedRead uncommittedRecebedoresLeitura repetidaRequisiçãoCabeçalhos de RequisiçãoRecursoUso de recursosCabeçalhos de RespostaSQLSQL explicadaSQL perfiladoSQL selecionadaVariávelDados de SessãoConfiguraçãoConfiguraçõesMostrar barra de ferramentasSinaisSinaisUma vez que o ambiente WSGI herda o ambiente do servidor, apenas um subconjunto significativo é mostrado abaixo.Arquivo estáticoArquivos estáticosArquivos estáticosArquivo estático de appArquivos estáticos de appsArquivos estáticos de appsCaminho do arquivo estáticoCaminho dos arquivos estáticosCaminho dos arquivos estáticosArquivos estáticosArquivos estáticos (%(num_found)s encontrados, %(num_used)s sendo utilizados)ResumoTempo de CPU do sistemaTemplateTemplatesTemplatesCaminho do TemplateCaminho do TemplatesCaminho do TemplatesOrigem do Template:TemplatesTemplates (%(num_templates)s renderizados)O Django Debug Toolbar interceptou um redirecionamento para a URL acima para fins de visualização de depuração. Você pode clicar no link acima para continuar com o redirecionamento normalmente.TempoTempo desde início de navegação (+duração)Linha do tempoAtributo de CronometragemAlternar contextoTotTimeTempo total de CPUTotal de chamadasTempo totalTotal: %0.2fmsStatus da transação:TipoNome da URLDesconhecidoTempo de CPU do usuárioValorVariávelVersãoVersõesFunção ViewVer informaçãoAmbiente WSGIpython-django-debug-toolbar-8.0.0/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.po000066400000000000000000000451751524561404200275070ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Fábio C. Barrionuevo da Luz , 2013-2014 # Gladson , 2017 # Percy Pérez-Pinedo, 2009 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: Gladson , 2017\n" "Language-Team: Portuguese (Brazil) (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt_BR\n" "Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "Debug Toolbar" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:77 msgid "Alerts" msgstr "" #: panels/cache.py:168 msgid "Cache" msgstr "Cache" #: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d chamada em %(time).2fms" msgstr[1] "%(cache_calls)d chamadas em %(time).2fms" msgstr[2] "%(cache_calls)d chamadas em %(time).2fms" #: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Chamadas ao cache de %(count)d backend" msgstr[1] "Chamadas ao cache de %(count)d backends" msgstr[2] "Chamadas ao cache de %(count)d backends" #: panels/headers.py:31 msgid "Headers" msgstr "Cabeçalhos" #: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" #: panels/profiling.py:140 msgid "Profiling" msgstr "Profiling" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Interceptar redirecionamentos" #: panels/request.py:16 msgid "Request" msgstr "Requisição" #: panels/request.py:38 msgid "" msgstr "" #: panels/request.py:55 msgid "" msgstr "" #: panels/settings.py:17 msgid "Settings" msgstr "Configurações" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d receptor de 1 sinal" msgstr[1] "%(num_receivers)d receptores de 1 sinal" msgstr[2] "%(num_receivers)d receptores de 1 sinal" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d receptor de %(num_signals)d sinais" msgstr[1] "%(num_receivers)d receptores de %(num_signals)d sinais" msgstr[2] "%(num_receivers)d receptores de %(num_signals)d sinais" #: panels/signals.py:67 msgid "Signals" msgstr "Sinais" #: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "Read uncommitted" #: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "Read committed" #: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "Leitura repetida" #: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Variável" #: panels/sql/panel.py:39 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "Ocioso" #: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Ação" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "Na transação" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "Erro" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "Desconhecido" #: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" #: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Arquivos estáticos (%(num_found)s encontrados, %(num_used)s sendo utilizados)" #: panels/staticfiles.py:103 msgid "Static files" msgstr "Arquivos estáticos" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s arquivo utilizado" msgstr[1] "%(num_used)s arquivos utilizados" msgstr[2] "%(num_used)s arquivos utilizados" #: panels/templates/panel.py:101 msgid "Templates" msgstr "Templates" #: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Templates (%(num_templates)s renderizados)" #: panels/templates/panel.py:195 msgid "No origin" msgstr "Sem origem" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Total: %0.2fms" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tempo" #: panels/timer.py:46 msgid "User CPU time" msgstr "Tempo de CPU do usuário" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "%(utime)0.3f ms" #: panels/timer.py:47 msgid "System CPU time" msgstr "Tempo de CPU do sistema" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "%(stime)0.3f ms" #: panels/timer.py:48 msgid "Total CPU time" msgstr "Tempo total de CPU" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "%(total)0.3f ms" #: panels/timer.py:49 msgid "Elapsed time" msgstr "Tempo decorrido" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "%(total_time)0.3f ms" #: panels/timer.py:51 msgid "Context switches" msgstr "Mudanças de contexto" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d voluntário, %(ivcsw)d involuntário" #: panels/versions.py:19 msgid "Versions" msgstr "Versões" #: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Ocultar barra de ferramentas" #: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Esconder" #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 msgid "Toggle Theme" msgstr "" #: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Mostrar barra de ferramentas" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "Desativar para próximas requisições" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "Habilitar para próximas requisições" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Resumo" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Total de chamadas" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Tempo total" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Acessos ao cache" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Falhas de cache" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Comandos" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Chamadas" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Tipo" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Argumentos" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Argumentos" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Backend" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "Cabeçalhos de Requisição" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Chave" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Valor" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Cabeçalhos de Resposta" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "Ambiente WSGI" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "Uma vez que o ambiente WSGI herda o ambiente do servidor, apenas um subconjunto significativo é mostrado abaixo." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "Caminho" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "Ação" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "Variável" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Chamar" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "CumTime" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Per" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TotTime" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Contagem" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Ver informação" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "Função View" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "Nome da URL" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookies" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "Sem Cookies" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "Dados de Sessão" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "Sem dados de Sessão" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "Dados de GET" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "Não há dados de GET" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "Dados de POST" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "Não há dados de POST" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Configuração" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Sinais" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "Recebedores" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s consulta" msgstr[1] "%(num)s consultas" msgstr[2] "%(num)s consultas" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "Query" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Linha do tempo" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "" #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "Conexão:" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "Nível de isolamento:" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "Status da transação:" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "(unknown)" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "Nenhuma consulta SQL foi registrada durante esta requisição." #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL explicada" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "SQL Executada" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Banco de dados" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL perfilado" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Erro" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "SQL selecionada" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Conjunto vazio" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Caminho do arquivo estático" msgstr[1] "Caminho dos arquivos estáticos" msgstr[2] "Caminho dos arquivos estáticos" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "(prefixo %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "Nenhum" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "Arquivo estático de app" msgstr[1] "Arquivos estáticos de apps" msgstr[2] "Arquivos estáticos de apps" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "Arquivo estático" msgstr[1] "Arquivos estáticos" msgstr[2] "Arquivos estáticos" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s arquivo" msgstr[1] "%(payload_count)s arquivos" msgstr[2] "%(payload_count)s arquivos" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "Localização" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Origem do Template:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Caminho do Template" msgstr[1] "Caminho do Templates" msgstr[2] "Caminho do Templates" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Template" msgstr[1] "Templates" msgstr[2] "Templates" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "Alternar contexto" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "Processador do Contexto" msgstr[2] "Processador do Contexto" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Uso de recursos" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Recurso" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Cronometragem do Navegador" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Atributo de Cronometragem" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "Tempo desde início de navegação (+duração)" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "Pacote" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "Nome" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "Versão" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "Localização:" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "O Django Debug Toolbar interceptou um redirecionamento para a URL acima para fins de visualização de depuração. Você pode clicar no link acima para continuar com o redirecionamento normalmente." #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Os dados para este painel não está mais disponível. Por favor, recarregue a página e tente novamente." python-django-debug-toolbar-8.0.0/debug_toolbar/locale/ru/000077500000000000000000000000001524561404200235245ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/ru/LC_MESSAGES/000077500000000000000000000000001524561404200253115ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/ru/LC_MESSAGES/django.mo000066400000000000000000000336161524561404200271210ustar00rootroot00000000000000Þ•’¬Å< P JQ œ · lÕ NB .‘ .À Uï EUez)Š´ È Ò Üêñø ÿ  !)"8[Fa ¨ ³ÀÅË Ô$à$N,{ „(’» × ä'î X)l‚ïø (z7²Æ×Ûí ö  1%W g r|Œ ‘›£¨ ¬¶¼Ë Üæöþ )8I M [Lh µ  ÏÜäí þ hƒ œ"½ à5í#*2BUr ƒ&�¦´['`ˆ‘ ¢¯¾Æ Õ áìû %39BJ Sa rŽ…”Óª*~]©3ã;Æuæä\ A!S!e!|!?Ž!Î!ê! ""&"7"H"#]"�" ”" Ÿ"¬""Ì"ï"ùö"ð#$ $ $$1$@$•V$+ì$% %,%®?%î%&A &(b&!‹&!­&?Ï& ' 'j)'˜”'-(1( D(Q(k(z( ‹(˜(Ÿ°(%P) v)—))ª) Ô) ß) ë)ö)**†8*(¿*è*!÷*#+=+D+ I+T+]+l+ ‰+–+¥+#¶+Ú+ ê+!÷+!, ;,'H,p,�, ”,  ,ÛÁ,%�- Ã- Ð-Ý-î-.. :.G.ÜV.…3/C¹/¿ý0!½1gß1 G2 T2a29q2s«2 3@37O3è‡3 p4S{4%Ï4õ4#5(595L5[5u5‹5"Ÿ5Â5É5Ò5 ç5õ56 6 (656I6N6•f6‘ü6=<0n S 8:]g7‰~UM[rd_iI,;qwch+NWT1(�Ž5@)†%9}|zu…P'*R„ZB`!€Cbkt‘3vˆOJx"ym�a/fpƒ&#Q e�o6.4-GLD‹HA?2ŒYЇE{X^ > \F�‚KV’$jl s%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s similar queries.%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(query_count)d query in %(sql_time).2fms%(query_count)d queries in %(sql_time).2fms%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveAlertsAlerts foundArgumentsAutocommitBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDebug ToolbarDisable for next and successive requestsDuplicated %(dupes)s times.Elapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLForm contains file input, but does not have the attribute enctype="multipart/form-data".Form with id "{form_id}" contains file input, but does not have the attribute enctype="multipart/form-data".GET dataHeadersHideHide toolbarHistoryIdleIn errorIn transactionInput element references form with id "{form_id}", but the form does not have the attribute enctype="multipart/form-data".Intercept redirectsIsolation level:KeyKeyword argumentsLocationLocation:MethodNameNo GET dataNo POST dataNo SQL queries were recorded during this request.No alerts foundNo cookiesNo originNo session dataNonePOST dataPackagePathPerProfilingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest VariablesRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL queries from %(count)d connectionSQL queries from %(count)d connectionsSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static fileStatic filesStatic file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)StatusSummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime since navigation start (+duration)TimelineTiming attributeToggle ThemeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environand %(dupes)s duplicatesincluding %(count)s similarProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: Andrei Satsevich, 2025 Language-Team: Russian (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/ru/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: ru Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3); %(cache_calls)d обращение за %(time).2fms%(cache_calls)d обращениÑ� за %(time).2fms%(cache_calls)d обращений за %(time).2fms%(cache_calls)d обращений за %(time).2fms%(count)s похожих запроÑ�ов.%(num)s запроÑ�%(num)s запроÑ�а%(num)s запроÑ�ов%(num)s запроÑ�ов%(num_receivers)d получатель %(num_signals)d Ñ�игнала(ов)%(num_receivers)d получателÑ� %(num_signals)d Ñ�игнала(ов)%(num_receivers)d получателей %(num_signals)d Ñ�игнала(ов)%(num_receivers)d получателей %(num_signals)d Ñ�игнала(ов)%(num_receivers)d получатель 1 Ñ�игнала%(num_receivers)d получателÑ� 1 Ñ�игнала%(num_receivers)d получателей 1 Ñ�игнала%(num_receivers)d получателей 1 Ñ�игнала%(num_used)s файл иÑ�пользуетÑ�Ñ� %(num_used)s файла иÑ�пользуетÑ�Ñ�%(num_used)s файлов иÑ�пользуетÑ�Ñ�%(num_used)s файлов иÑ�пользуетÑ�Ñ�%(payload_count)s файл%(payload_count)s файла%(payload_count)s файлов%(payload_count)s файлов%(query_count)d запроÑ� за %(sql_time).2f мÑ� %(query_count)d запроÑ�ов за %(sql_time).2f мÑ�%(query_count)d запроÑ�ов за %(sql_time).2f мÑ�%(query_count)d запроÑ�ов за %(sql_time).2f мÑ�%(stime)0.3f мÑ�%(total)0.3f мÑ�%(total_time)0.3f мÑ�%(utime)0.3f мÑ�%(vcsw)d намеренных, %(ivcsw)d вынужденных(префикÑ� %(prefix)s)(неизвеÑ�тно)<нет view><недоÑ�тупно>ДейÑ�твиеДейÑ�твиеОповещениÑ�Ð�айдены оповещениÑ�Ð�ргументыAutocommitБÑ�кендБраузерное времÑ�CPU: %(cum)0.2fms (%(total)0.2fms)КÑ�шОбращениÑ� к кÑ�шу от %(count)d бÑ�кендаОбращениÑ� к кÑ�шу от %(count)d бÑ�кендовОбращениÑ� к кÑ�шу от %(count)d бÑ�кендовОбращениÑ� к кÑ�шу от %(count)d бÑ�кендовCache хитовПромахи кÑ�шаВызовВызовыКомандыСоединение:КонтекÑ�Ñ‚ процеÑ�Ñ�орКонтекÑ�Ñ‚ процеÑ�Ñ�орыКонтекÑ�Ñ‚ процеÑ�Ñ�орыКонтекÑ�Ñ‚ процеÑ�Ñ�орыПереключений контекÑ�таCookiesКол-воКумулВремДанные Ñ�той панели больше недоÑ�тупны. ПожалуйÑ�та, перезагрузите Ñ�траницу и попробуйте ещё раз.База данныхПанель отладкиОтключить длÑ� поÑ�ледующих запроÑ�овДублируетÑ�Ñ� %(dupes)s раз.Затраченное времÑ�Ð�ичего, ноль Ñ�трокВключить длÑ� поÑ�ледующих запроÑ�овОшибкаЗапроÑ�Форма Ñ�одержит файл, но не имеет атрибута enctype="multipart/form-data".Форма Ñ� идентификатором "{form_id}" Ñ�одержит файл, но не имеет атрибута enctype="multipart/form-data".GETЗаголовкиСкрытьСкрыть панельИÑ�ториÑ�ОжиданиеОшибкаВ транзакцииЭлемент ввода Ñ�Ñ�ылаетÑ�Ñ� на форму Ñ� id "{form_id}", но форма не имеет атрибута enctype="multipart/form-data".Перехват редиректовУровень изолÑ�ции:ЗаголовокИменованные аргументыМеÑ�тоÐ�дреÑ�:МетодÐ�азваниеÐ�ет GET данныхÐ�ет POST данныхВо времÑ� обработки Ñ�того HTTP-запроÑ�а не было запиÑ�ано ни одного SQL-запроÑ�а.ОповещениÑ� не найденыÐ�ет cookiesБез проиÑ�хождениÑ�Ð�ет данных в Ñ�еÑ�Ñ�ииÐ�етPOSTПакетПутьЗаВызовПрофилированиеЗапроÑ�Read committedRead uncommittedПолучатели Ñ�игналаRepeatable readЗапроÑ�ЗапроÑ� переменныхЗаголовки запроÑ�аРеÑ�урÑ�Потребление реÑ�урÑ�овЗаголовки ответаSQLSQL ExplainПрофилирование SQLSQL-запроÑ�Ñ‹ из %(count)d Ñ�оединениÑ�SQL-запроÑ�Ñ‹ из %(count)d Ñ�оединенийSQL-запроÑ�Ñ‹ из %(count)d Ñ�оединенийSQL-запроÑ�Ñ‹ из %(count)d Ñ�оединенийВыбранные SQL-запроÑ�Ñ‹SerializableСеÑ�Ñ�иÑ�ПараметрÐ�аÑ�тройкиÐ�аÑ�тройки из %sПоказать панельСигналСигналыТак как WSGI-окружение наÑ�ледует окружение Ñ�ервера, ниже отображены лишь те из переменных, которые важны длÑ� нужд отладки.СтатичеÑ�кий файлСтатичеÑ�кие файлыСтатичеÑ�кие файлыСтатичеÑ�кие файлыПриложение, иÑ�пользующее Ñ�татичеÑ�кие файлыПриложениÑ�, иÑ�пользующие Ñ�татичеÑ�кие файлыПриложениÑ�, иÑ�пользующие Ñ�татичеÑ�кие файлыПриложениÑ�, иÑ�пользующие Ñ�татичеÑ�кие файлыПуть к Ñ�татичеÑ�ким файламПути к Ñ�татичеÑ�ким файламПути к Ñ�татичеÑ�ким файламПути к Ñ�татичеÑ�ким файламСтатичеÑ�кие файлыСтатичеÑ�кие файлы (найдено %(num_found)s, иÑ�пользуетÑ�Ñ� %(num_used)s)СтатуÑ�СводкаSystem CPU timeШаблонШаблоныШаблоныШаблоныПуть к шаблонамПути к шаблонамПути к шаблонамПути к шаблонамИÑ�точник шаблона:ШаблоныШаблоны (обработано %(num_templates)s)Django Debug Toolbar в перехватил редирект на адреÑ�, указанный выше. Ð’Ñ‹ можете нажать на Ñ�Ñ�ылку, чтобы выполнить переход Ñ�амоÑ�тоÑ�тельно.ВремÑ�ВремÑ� Ñ� начала навигации (+продолжительноÑ�ть)ВременнаÑ� диаграммаСобытиеПереключатель темыКонтекÑ�тИтогВремÑ�Total CPU timeÐ’Ñ�его вызововОбщее времÑ�Итого: %0.2fmsСтатуÑ� транзакции:ТипURL NameÐ�еизвеÑ�тноUser CPU timeЗначениеПеременнаÑ�ВерÑ�иÑ�ВерÑ�ииView функциÑ�ViewWSGI-окружениеи %(dupes)s дубликатывключаÑ� %(count)s похожийpython-django-debug-toolbar-8.0.0/debug_toolbar/locale/ru/LC_MESSAGES/django.po000066400000000000000000000551731524561404200271260ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Andrei Satsevich, 2025 # Dmitri Bogomolov <4glitch@gmail.com>, 2014 # Ilya Baryshev , 2013 # Mikhail Korobov, 2009 # Ð�лекÑ�ей БориÑ�кин , 2013,2015,2024 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: Andrei Satsevich, 2025\n" "Language-Team: Russian (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ru\n" "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "Панель отладки" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "Форма Ñ� идентификатором \"{form_id}\" Ñ�одержит файл, но не имеет атрибута enctype=\"multipart/form-data\"." #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "Форма Ñ�одержит файл, но не имеет атрибута enctype=\"multipart/form-data\"." #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "Элемент ввода Ñ�Ñ�ылаетÑ�Ñ� на форму Ñ� id \"{form_id}\", но форма не имеет атрибута enctype=\"multipart/form-data\"." #: panels/alerts.py:77 msgid "Alerts" msgstr "ОповещениÑ�" #: panels/cache.py:168 msgid "Cache" msgstr "КÑ�ш" #: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d обращение за %(time).2fms" msgstr[1] "%(cache_calls)d обращениÑ� за %(time).2fms" msgstr[2] "%(cache_calls)d обращений за %(time).2fms" msgstr[3] "%(cache_calls)d обращений за %(time).2fms" #: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "ОбращениÑ� к кÑ�шу от %(count)d бÑ�кенда" msgstr[1] "ОбращениÑ� к кÑ�шу от %(count)d бÑ�кендов" msgstr[2] "ОбращениÑ� к кÑ�шу от %(count)d бÑ�кендов" msgstr[3] "ОбращениÑ� к кÑ�шу от %(count)d бÑ�кендов" #: panels/headers.py:31 msgid "Headers" msgstr "Заголовки" #: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "ИÑ�ториÑ�" #: panels/profiling.py:140 msgid "Profiling" msgstr "Профилирование" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Перехват редиректов" #: panels/request.py:16 msgid "Request" msgstr "ЗапроÑ�" #: panels/request.py:38 msgid "" msgstr "<нет view>" #: panels/request.py:55 msgid "" msgstr "<недоÑ�тупно>" #: panels/settings.py:17 msgid "Settings" msgstr "Ð�аÑ�тройки" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "Ð�аÑ�тройки из %s" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d получатель 1 Ñ�игнала" msgstr[1] "%(num_receivers)d получателÑ� 1 Ñ�игнала" msgstr[2] "%(num_receivers)d получателей 1 Ñ�игнала" msgstr[3] "%(num_receivers)d получателей 1 Ñ�игнала" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d получатель %(num_signals)d Ñ�игнала(ов)" msgstr[1] "%(num_receivers)d получателÑ� %(num_signals)d Ñ�игнала(ов)" msgstr[2] "%(num_receivers)d получателей %(num_signals)d Ñ�игнала(ов)" msgstr[3] "%(num_receivers)d получателей %(num_signals)d Ñ�игнала(ов)" #: panels/signals.py:67 msgid "Signals" msgstr "Сигналы" #: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "Read uncommitted" #: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "Read committed" #: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "Repeatable read" #: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Serializable" #: panels/sql/panel.py:39 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "Ожидание" #: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "ДейÑ�твие" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "Ð’ транзакции" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "Ошибка" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "Ð�еизвеÑ�тно" #: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" #: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "%(query_count)d запроÑ� за %(sql_time).2f мÑ� " msgstr[1] "%(query_count)d запроÑ�ов за %(sql_time).2f мÑ�" msgstr[2] "%(query_count)d запроÑ�ов за %(sql_time).2f мÑ�" msgstr[3] "%(query_count)d запроÑ�ов за %(sql_time).2f мÑ�" #: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "SQL-запроÑ�Ñ‹ из %(count)d Ñ�оединениÑ�" msgstr[1] "SQL-запроÑ�Ñ‹ из %(count)d Ñ�оединений" msgstr[2] "SQL-запроÑ�Ñ‹ из %(count)d Ñ�оединений" msgstr[3] "SQL-запроÑ�Ñ‹ из %(count)d Ñ�оединений" #: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "СтатичеÑ�кие файлы (найдено %(num_found)s, иÑ�пользуетÑ�Ñ� %(num_used)s)" #: panels/staticfiles.py:103 msgid "Static files" msgstr "СтатичеÑ�кие файлы" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s файл иÑ�пользуетÑ�Ñ�" msgstr[1] " %(num_used)s файла иÑ�пользуетÑ�Ñ�" msgstr[2] "%(num_used)s файлов иÑ�пользуетÑ�Ñ�" msgstr[3] "%(num_used)s файлов иÑ�пользуетÑ�Ñ�" #: panels/templates/panel.py:101 msgid "Templates" msgstr "Шаблоны" #: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Шаблоны (обработано %(num_templates)s)" #: panels/templates/panel.py:195 msgid "No origin" msgstr "Без проиÑ�хождениÑ�" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Итого: %0.2fms" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "ВремÑ�" #: panels/timer.py:46 msgid "User CPU time" msgstr "User CPU time" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "%(utime)0.3f мÑ�" #: panels/timer.py:47 msgid "System CPU time" msgstr "System CPU time" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "%(stime)0.3f мÑ�" #: panels/timer.py:48 msgid "Total CPU time" msgstr "Total CPU time" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "%(total)0.3f мÑ�" #: panels/timer.py:49 msgid "Elapsed time" msgstr "Затраченное времÑ�" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "%(total_time)0.3f мÑ�" #: panels/timer.py:51 msgid "Context switches" msgstr "Переключений контекÑ�та" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d намеренных, %(ivcsw)d вынужденных" #: panels/versions.py:19 msgid "Versions" msgstr "ВерÑ�ии" #: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Скрыть панель" #: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Скрыть" #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 msgid "Toggle Theme" msgstr "Переключатель темы" #: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Показать панель" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "Отключить длÑ� поÑ�ледующих запроÑ�ов" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "Включить длÑ� поÑ�ледующих запроÑ�ов" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "Ð�айдены оповещениÑ�" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "ОповещениÑ� не найдены" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Сводка" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Ð’Ñ�его вызовов" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Общее времÑ�" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Cache хитов" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Промахи кÑ�ша" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Команды" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Вызовы" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Тип" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Ð�ргументы" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Именованные аргументы" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "БÑ�кенд" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "Заголовки запроÑ�а" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Заголовок" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Значение" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Заголовки ответа" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "WSGI-окружение" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "Так как WSGI-окружение наÑ�ледует окружение Ñ�ервера, ниже отображены лишь те из переменных, которые важны длÑ� нужд отладки." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "Метод" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "Путь" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "ЗапроÑ� переменных" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "СтатуÑ�" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "ДейÑ�твие" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "ПеременнаÑ�" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Вызов" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "КумулВрем" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "ЗаВызов" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "ИтогВремÑ�" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Кол-во" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "View" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "View функциÑ�" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "URL Name" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookies" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "Ð�ет cookies" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "СеÑ�Ñ�иÑ�" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "Ð�ет данных в Ñ�еÑ�Ñ�ии" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "GET" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "Ð�ет GET данных" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "POST" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "Ð�ет POST данных" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Параметр" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Сигнал" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "Получатели Ñ�игнала" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s запроÑ�" msgstr[1] "%(num)s запроÑ�а" msgstr[2] "%(num)s запроÑ�ов" msgstr[3] "%(num)s запроÑ�ов" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "включаÑ� %(count)s похожий" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "и %(dupes)s дубликаты" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "ЗапроÑ�" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "ВременнаÑ� диаграмма" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "%(count)s похожих запроÑ�ов." #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "ДублируетÑ�Ñ� %(dupes)s раз." #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "Соединение:" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "Уровень изолÑ�ции:" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "СтатуÑ� транзакции:" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "(неизвеÑ�тно)" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "Во времÑ� обработки Ñ�того HTTP-запроÑ�а не было запиÑ�ано ни одного SQL-запроÑ�а." #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL Explain" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "ЗапроÑ�" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "База данных" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "Профилирование SQL" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Ошибка" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "Выбранные SQL-запроÑ�Ñ‹" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Ð�ичего, ноль Ñ�трок" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Путь к Ñ�татичеÑ�ким файлам" msgstr[1] "Пути к Ñ�татичеÑ�ким файлам" msgstr[2] "Пути к Ñ�татичеÑ�ким файлам" msgstr[3] "Пути к Ñ�татичеÑ�ким файлам" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "(префикÑ� %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "Ð�ет" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "Приложение, иÑ�пользующее Ñ�татичеÑ�кие файлы" msgstr[1] "ПриложениÑ�, иÑ�пользующие Ñ�татичеÑ�кие файлы" msgstr[2] "ПриложениÑ�, иÑ�пользующие Ñ�татичеÑ�кие файлы" msgstr[3] "ПриложениÑ�, иÑ�пользующие Ñ�татичеÑ�кие файлы" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "СтатичеÑ�кий файл" msgstr[1] "СтатичеÑ�кие файлы" msgstr[2] "СтатичеÑ�кие файлы" msgstr[3] "СтатичеÑ�кие файлы" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s файл" msgstr[1] "%(payload_count)s файла" msgstr[2] "%(payload_count)s файлов" msgstr[3] "%(payload_count)s файлов" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "МеÑ�то" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "ИÑ�точник шаблона:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Путь к шаблонам" msgstr[1] "Пути к шаблонам" msgstr[2] "Пути к шаблонам" msgstr[3] "Пути к шаблонам" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Шаблон" msgstr[1] "Шаблоны" msgstr[2] "Шаблоны" msgstr[3] "Шаблоны" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "КонтекÑ�Ñ‚" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "КонтекÑ�Ñ‚ процеÑ�Ñ�ор" msgstr[1] "КонтекÑ�Ñ‚ процеÑ�Ñ�оры" msgstr[2] "КонтекÑ�Ñ‚ процеÑ�Ñ�оры" msgstr[3] "КонтекÑ�Ñ‚ процеÑ�Ñ�оры" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Потребление реÑ�урÑ�ов" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "РеÑ�урÑ�" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Браузерное времÑ�" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Событие" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "ВремÑ� Ñ� начала навигации (+продолжительноÑ�ть)" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "Пакет" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "Ð�азвание" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "ВерÑ�иÑ�" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "Ð�дреÑ�:" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "Django Debug Toolbar в перехватил редирект на адреÑ�, указанный выше. Ð’Ñ‹ можете нажать на Ñ�Ñ�ылку, чтобы выполнить переход Ñ�амоÑ�тоÑ�тельно." #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Данные Ñ�той панели больше недоÑ�тупны. ПожалуйÑ�та, перезагрузите Ñ�траницу и попробуйте ещё раз." python-django-debug-toolbar-8.0.0/debug_toolbar/locale/sk/000077500000000000000000000000001524561404200235135ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/sk/LC_MESSAGES/000077500000000000000000000000001524561404200253005ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/sk/LC_MESSAGES/django.mo000066400000000000000000000216271524561404200271070ustar00rootroot00000000000000Þ•|ü§Üx Jy Ä lâ NO .ž .Í ü   1 )A k  ‰ “ ¡ ¨ ¯ ¹ Ä Ì "Û þ F K V c h n w $ƒ ¨ ¹ Á Ç NÏ (' P ]'g� •¢«³ ¸ÅÊÓâö  &0 5 A1N €‹›  ª¯ ³½ÃÒ ãíý-> B P ] j w„Œ •¢©h± "; ^5k¡©¹Ìé ú&¦+Ò'×ÿ(0 ? KVey~‡ ��£¬´ ½Ë ÜåéŸÏ=oÚ­žˆƒ'i«%5J3ZŽ ¢­ ÁÎÔ Ú äï÷" ,Ž2 ÁÏàèð ùW]pxd‡ ì1ö( 70Du { ‰ “�¤ ¼ÆÌÝõ '.6;MD`¥µÌ Ôßåèñ÷ $ =I _k‚•™©º ÉÓ â íøf$ƒ‹o  G‘ Ù â '÷ G!g! �!+‹!¤·!\"'a" ‰"•"§"¹"Á"Ó" ã"ñ"### #+#D# L#V#]# d#q#‡#nfU"6`dE5W>/ k!Ab+l8@uH<M]i)_gSZVD,;jK2  P'sa-Gt{hre(qv[\B CY4FOQXRz=7w10NI.o3p9%:$?J&#T^mL|y *xc %(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveArgumentsAutocommitBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDisable for next and successive requestsElapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLocationLocation:NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo session dataNonePOST dataPathPerProfilingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL selectedSerializableSession dataSettingSettingsShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime since navigation start (+duration)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: 18f25ad6fa9930fc67cb11aca9d16a27, 2013 Language-Team: Slovak (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/sk/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: sk Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3); %(cache_calls)d volanie za %(time).2fms%(cache_calls)d volaní za %(time).2fms%(cache_calls)d volaní za %(time).2fms%(cache_calls)d volaní za %(time).2fms%(num)s dopyt%(num)s dopytov%(num)s dopytov%(num)s dopytov%(num_receivers)d príjemca %(num_signals)d signálov%(num_receivers)d príjemcov %(num_signals)d signálov%(num_receivers)d príjemcov %(num_signals)d signálov%(num_receivers)d príjemcov %(num_signals)d signálov%(num_receivers)d príjemca 1 signálu%(num_receivers)d príjemcov 1 signálu%(num_receivers)d príjemcov 1 signálu%(num_receivers)d príjemcov 1 signálu%(num_used)s použitý súbor%(num_used)s použitých súborov%(num_used)s použitých súborov%(num_used)s použitých súborov%(payload_count)s súbor%(payload_count)s súborov%(payload_count)s súborov%(payload_count)s súborov%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d dobrovoľných, %(ivcsw)d nedobrovoľných(prefix %(prefix)s)(neznámy)AkciaAkciaArgumentyAutocommitBackendÄŒas prehliadaÄ�aCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache volania z %(count)d backenduCache volania z %(count)d backendovCache volania z %(count)d backendovCache volania z %(count)d backendovVolaní cacheVynechania cacheVolanieVolaniaPríkazyPripojenie:Spracovateľ kontextuSpracovateľ kontextuSpracovateľ kontextuSpracovateľ kontextuPrepnutí kontextuCookiesPoÄ�etCumTimeDáta pre tento panel už nie sú k dispozícii. NaÄ�ítajte si prosím stránku a skúste to znova.DatabázaZakázaÅ¥ pre Ä�alÅ¡ie a nasledujúce požiadavkyUplynutý Ä�asPrázdny radPovoliÅ¥ pre Ä�alÅ¡ie a nasledujúce požiadavkyChybaVykonané SQLGET dátaHlaviÄ�kySkryÅ¥SkryÅ¥ panel nástrojovNeÄ�innýChybaStav transakcie:ZachytiÅ¥ presmerovaniaÚroveň izolácie:KľúÄ�KľúÄ�ové argumentyPolohaPoloha:MenoŽiadne GET dátaŽiadne POST dátaV priebehu tejto požiadavky neboli zaznamenané žiadne SQL dopyty.Žiadne cookiesŽiadne dáta relácieŽiadnyPOST dátaCestaZaAnalýzaDopytRead committedRead uncommittedPríjemcoviaOpakovateľné Ä�ítaniePožiadavkaHlaviÄ�ky požiadavkyProstriedokVyužitie prostriedkovHlaviÄ�ky odpovedeSQLSQL vysvetlenéSQL profilovanéSQL oznaÄ�enéPremennáDáta relácieNastavenieNastaveniaZobraziÅ¥ panel nástrojovSignálSignályKeÄ�že WSGI prostredie dedí z prostredia servera, je nižšie zobrazená iba významná podmnožina.Aplikácia pre statické súboryAplikácie pre statické súboryAplikácie pre statické súboryAplikácie pre statické súboryCesta k statickému súboruCesty k statickým súboromCesty k statickým súboromCesty k statickým súboromStatické súboryStatické súbory (%(num_found)s nájdených, %(num_used)s použitých)ZhrnutieSystémový Ä�as CPUÅ ablónaÅ ablónaÅ ablónaÅ ablónaCesta k Å¡ablóneCesta k Å¡ablóneCesta k Å¡ablóneCesta k Å¡ablóneZdrojový kód Å¡ablóny:Å ablónyÅ ablóny (%(num_templates)s spracovaných)Django Debug Toolbar zachytil presmerovanie na vyššie uvedenú URL pre úÄ�ely ladenia. Pre normálne presmerovanie môžete kliknúť na vyššie uvedený odkaz.ÄŒasÄŒas od spustenia navigácie (+trvanie)ÄŒasová osÄŒasový atribútPrepnúť kontextTotTimeCelkový Ä�as CPUCelkovo volaníCelkový Ä�asCelkovo: %0.2fmsStav transakcie:TypURL meno(neznámy)Užívateľský Ä�as CPUHodnotaPremennáVerziaVerzieView funkciaZobraziÅ¥ informácieWSGI prostrediepython-django-debug-toolbar-8.0.0/debug_toolbar/locale/sk/LC_MESSAGES/django.po000066400000000000000000000460171524561404200271120ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # 18f25ad6fa9930fc67cb11aca9d16a27, 2012 # 18f25ad6fa9930fc67cb11aca9d16a27, 2013 # Rastislav Kober , 2012 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: 18f25ad6fa9930fc67cb11aca9d16a27, 2013\n" "Language-Team: Slovak (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/sk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sk\n" "Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:77 msgid "Alerts" msgstr "" #: panels/cache.py:168 msgid "Cache" msgstr "Cache" #: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d volanie za %(time).2fms" msgstr[1] "%(cache_calls)d volaní za %(time).2fms" msgstr[2] "%(cache_calls)d volaní za %(time).2fms" msgstr[3] "%(cache_calls)d volaní za %(time).2fms" #: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Cache volania z %(count)d backendu" msgstr[1] "Cache volania z %(count)d backendov" msgstr[2] "Cache volania z %(count)d backendov" msgstr[3] "Cache volania z %(count)d backendov" #: panels/headers.py:31 msgid "Headers" msgstr "HlaviÄ�ky" #: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" #: panels/profiling.py:140 msgid "Profiling" msgstr "Analýza" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "ZachytiÅ¥ presmerovania" #: panels/request.py:16 msgid "Request" msgstr "Požiadavka" #: panels/request.py:38 msgid "" msgstr "" #: panels/request.py:55 msgid "" msgstr "" #: panels/settings.py:17 msgid "Settings" msgstr "Nastavenia" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d príjemca 1 signálu" msgstr[1] "%(num_receivers)d príjemcov 1 signálu" msgstr[2] "%(num_receivers)d príjemcov 1 signálu" msgstr[3] "%(num_receivers)d príjemcov 1 signálu" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d príjemca %(num_signals)d signálov" msgstr[1] "%(num_receivers)d príjemcov %(num_signals)d signálov" msgstr[2] "%(num_receivers)d príjemcov %(num_signals)d signálov" msgstr[3] "%(num_receivers)d príjemcov %(num_signals)d signálov" #: panels/signals.py:67 msgid "Signals" msgstr "Signály" #: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "Read uncommitted" #: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "Read committed" #: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "Opakovateľné Ä�ítanie" #: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Premenná" #: panels/sql/panel.py:39 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "NeÄ�inný" #: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Akcia" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "Stav transakcie:" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "Chyba" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "(neznámy)" #: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" #: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Statické súbory (%(num_found)s nájdených, %(num_used)s použitých)" #: panels/staticfiles.py:103 msgid "Static files" msgstr "Statické súbory" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s použitý súbor" msgstr[1] "%(num_used)s použitých súborov" msgstr[2] "%(num_used)s použitých súborov" msgstr[3] "%(num_used)s použitých súborov" #: panels/templates/panel.py:101 msgid "Templates" msgstr "Å ablóny" #: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Å ablóny (%(num_templates)s spracovaných)" #: panels/templates/panel.py:195 msgid "No origin" msgstr "" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Celkovo: %0.2fms" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "ÄŒas" #: panels/timer.py:46 msgid "User CPU time" msgstr "Užívateľský Ä�as CPU" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "%(utime)0.3f ms" #: panels/timer.py:47 msgid "System CPU time" msgstr "Systémový Ä�as CPU" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "%(stime)0.3f ms" #: panels/timer.py:48 msgid "Total CPU time" msgstr "Celkový Ä�as CPU" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "%(total)0.3f ms" #: panels/timer.py:49 msgid "Elapsed time" msgstr "Uplynutý Ä�as" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "%(total_time)0.3f ms" #: panels/timer.py:51 msgid "Context switches" msgstr "Prepnutí kontextu" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d dobrovoľných, %(ivcsw)d nedobrovoľných" #: panels/versions.py:19 msgid "Versions" msgstr "Verzie" #: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "SkryÅ¥ panel nástrojov" #: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "SkryÅ¥" #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 msgid "Toggle Theme" msgstr "" #: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "ZobraziÅ¥ panel nástrojov" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "ZakázaÅ¥ pre Ä�alÅ¡ie a nasledujúce požiadavky" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "PovoliÅ¥ pre Ä�alÅ¡ie a nasledujúce požiadavky" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Zhrnutie" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Celkovo volaní" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Celkový Ä�as" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Volaní cache" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Vynechania cache" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Príkazy" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Volania" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Typ" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Argumenty" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "KľúÄ�ové argumenty" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Backend" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "HlaviÄ�ky požiadavky" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "KľúÄ�" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Hodnota" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "HlaviÄ�ky odpovede" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "WSGI prostredie" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "KeÄ�že WSGI prostredie dedí z prostredia servera, je nižšie zobrazená iba významná podmnožina." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "Cesta" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "Akcia" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "Premenná" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Volanie" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "CumTime" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Za" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "TotTime" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "PoÄ�et" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "ZobraziÅ¥ informácie" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "View funkcia" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "URL meno" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookies" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "Žiadne cookies" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "Dáta relácie" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "Žiadne dáta relácie" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "GET dáta" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "Žiadne GET dáta" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "POST dáta" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "Žiadne POST dáta" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Nastavenie" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signál" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "Príjemcovia" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s dopyt" msgstr[1] "%(num)s dopytov" msgstr[2] "%(num)s dopytov" msgstr[3] "%(num)s dopytov" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "Dopyt" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "ÄŒasová os" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "" #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "Pripojenie:" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "Úroveň izolácie:" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "Stav transakcie:" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "(neznámy)" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "V priebehu tejto požiadavky neboli zaznamenané žiadne SQL dopyty." #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL vysvetlené" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Vykonané SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Databáza" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL profilované" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Chyba" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "SQL oznaÄ�ené" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Prázdny rad" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Cesta k statickému súboru" msgstr[1] "Cesty k statickým súborom" msgstr[2] "Cesty k statickým súborom" msgstr[3] "Cesty k statickým súborom" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "(prefix %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "Žiadny" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "Aplikácia pre statické súbory" msgstr[1] "Aplikácie pre statické súbory" msgstr[2] "Aplikácie pre statické súbory" msgstr[3] "Aplikácie pre statické súbory" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "" msgstr[2] "Statické súbory" msgstr[3] "Statické súbory" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s súbor" msgstr[1] "%(payload_count)s súborov" msgstr[2] "%(payload_count)s súborov" msgstr[3] "%(payload_count)s súborov" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "Poloha" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Zdrojový kód Å¡ablóny:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Cesta k Å¡ablóne" msgstr[1] "Cesta k Å¡ablóne" msgstr[2] "Cesta k Å¡ablóne" msgstr[3] "Cesta k Å¡ablóne" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Å ablóna" msgstr[1] "Å ablóna" msgstr[2] "Å ablóna" msgstr[3] "Å ablóna" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "Prepnúť kontext" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Spracovateľ kontextu" msgstr[1] "Spracovateľ kontextu" msgstr[2] "Spracovateľ kontextu" msgstr[3] "Spracovateľ kontextu" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Využitie prostriedkov" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Prostriedok" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "ÄŒas prehliadaÄ�a" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "ÄŒasový atribút" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "ÄŒas od spustenia navigácie (+trvanie)" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "Meno" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "Verzia" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "Poloha:" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "Django Debug Toolbar zachytil presmerovanie na vyššie uvedenú URL pre úÄ�ely ladenia. Pre normálne presmerovanie môžete kliknúť na vyššie uvedený odkaz." #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Dáta pre tento panel už nie sú k dispozícii. NaÄ�ítajte si prosím stránku a skúste to znova." python-django-debug-toolbar-8.0.0/debug_toolbar/locale/sv_SE/000077500000000000000000000000001524561404200241155ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/sv_SE/LC_MESSAGES/000077500000000000000000000000001524561404200257025ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.mo000066400000000000000000000040611524561404200275020ustar00rootroot00000000000000Þ•)d;¬˜ ™£ª± ·ÃÉ ÒÜ âïôý   (- 2< BLU Yfnw~ †“› ®¸½ÅËÔÜå·ö®·ÀÉ ÏÛâê ó   !(.3BRX am t~…‰ ’Ÿ®µ¾Í Üèïóü  (%' " ! $ &)#(unknown)ActionActiveCacheConnection:CountDatabaseEmpty setErrorExecuted SQLHideIn errorKeyLocationNameNo GET dataNo POST dataNonePathProfilingQueryReceiversResourceSQLSerializableSettingSettingsSignalSignalsStatic filesSummaryTemplateTemplatesTemplatesTimeUnknownValueVariableVersionVersionsView informationProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: Alex Nordlund , 2012-2013 Language-Team: Swedish (Sweden) (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/sv_SE/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: sv_SE Plural-Forms: nplurals=2; plural=(n != 1); (okänd)Ã…tgärdÃ…tgärdCacheAnslutning:RäknaDatabasTomt setFelmeddelandeUtförd SQLDöljFelmeddelandeNyckelPlatsNamnIngen GET dataIngen POST dataIngetSökvägProfileringFrÃ¥gaMottagareResursSQLVariabelInställningInställningarSignalSignalerStatiska filerSammanfattningMallMallarMallarTid(okänd)VärdeVariabelVersionVersionerVisa informationenpython-django-debug-toolbar-8.0.0/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.po000066400000000000000000000371421524561404200275130ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Alex Nordlund , 2012-2013 # Alex Nordlund , 2012 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: Alex Nordlund , 2012-2013\n" "Language-Team: Swedish (Sweden) (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/sv_SE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sv_SE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:77 msgid "Alerts" msgstr "" #: panels/cache.py:168 msgid "Cache" msgstr "Cache" #: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "" msgstr[1] "" #: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "" msgstr[1] "" #: panels/headers.py:31 msgid "Headers" msgstr "" #: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" #: panels/profiling.py:140 msgid "Profiling" msgstr "Profilering" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "" #: panels/request.py:16 msgid "Request" msgstr "" #: panels/request.py:38 msgid "" msgstr "" #: panels/request.py:55 msgid "" msgstr "" #: panels/settings.py:17 msgid "Settings" msgstr "Inställningar" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "" msgstr[1] "" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "" msgstr[1] "" #: panels/signals.py:67 msgid "Signals" msgstr "Signaler" #: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "" #: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "Variabel" #: panels/sql/panel.py:39 msgid "Autocommit" msgstr "" #: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "" #: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "Ã…tgärd" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "Felmeddelande" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "(okänd)" #: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" #: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" msgstr[1] "" #: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" #: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "" #: panels/staticfiles.py:103 msgid "Static files" msgstr "Statiska filer" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "" msgstr[1] "" #: panels/templates/panel.py:101 msgid "Templates" msgstr "Mallar" #: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "" #: panels/templates/panel.py:195 msgid "No origin" msgstr "" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Tid" #: panels/timer.py:46 msgid "User CPU time" msgstr "" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "" #: panels/timer.py:47 msgid "System CPU time" msgstr "" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "" #: panels/timer.py:48 msgid "Total CPU time" msgstr "" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "" #: panels/timer.py:49 msgid "Elapsed time" msgstr "" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "" #: panels/timer.py:51 msgid "Context switches" msgstr "" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "" #: panels/versions.py:19 msgid "Versions" msgstr "Versioner" #: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "" #: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Dölj" #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 msgid "Toggle Theme" msgstr "" #: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Sammanfattning" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Nyckel" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Värde" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "" #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "Sökväg" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "Ã…tgärd" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "Variabel" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Räkna" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Visa informationen" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "Ingen GET data" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "Ingen POST data" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Inställning" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "Mottagare" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "FrÃ¥ga" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "" #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "Anslutning:" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "(okänd)" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Utförd SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Databas" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Felmeddelande" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Tomt set" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "Inget" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "" msgstr[1] "Statiska filer" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "Plats" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Mall" msgstr[1] "Mallar" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "" msgstr[1] "" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Resurs" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "Namn" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "Version" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "" #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "" python-django-debug-toolbar-8.0.0/debug_toolbar/locale/tr/000077500000000000000000000000001524561404200235235ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/tr/LC_MESSAGES/000077500000000000000000000000001524561404200253105ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/tr/LC_MESSAGES/django.mo000066400000000000000000000275361524561404200271240ustar00rootroot00000000000000Þ•¡$ß, ¨ J© ô l-Nš.é.UG�¯ÁØ)ê ( 2 <JQX _ l v�‰"˜»FÁ   %+ 4> W$cˆ™¬´º,ÂNï> G(U"~¡ ½ Ê'Ôü LX\lµ"+3 8EMmr{zŠ+<MQc lv-}« ° ¼1Éû   0 5?GL PZ`s‚ “�­µÇ×àï  L l y †“›¤ µÂÉhÑ: S"t —5¤Úáéù ) :&D¦k !* ;HW_ n z…”¨­¶ ¾ÌÒÛã ì ø J$Žoþ …Ž¢R1„œk¸O$?t/´Sä8 H X m )} § » È Ò à æ í ÷ ! ! !)!"A! d!mn!Ü!ñ!" "" $"." K"'W""�" ©"³"¸"+Ê"aö" X#d#+‚#%®#Ô# ñ# þ## $-$2$^H$_§$}% …% ’%�%£%º%(Ã%ì%ñ%ú%� &™&±&Ç&Ü&ò&ú&''$'A*'l'r'�'6‘'È' Ú' å'ð'( (((( 1(<(B(W(f( w(‚(’(™(¯(Â(É(Ü(î(ò()M) a) n){)‹)�)˜)®)Ç) Î)tØ)M*3j*'ž*Æ*AÖ*++$+7+J+h+ }+'ˆ+Á°+r, x,ƒ,”,©,¼, Ð,Ý,ð, -- -4-8- A-L-d- k-v- -‹-›-«- º-^Ç-Ž&.µ.È.…Ø.'œQx?H5M:ŸJlps!D‚K"—vi;8Nk<Y�o6 B ]4E›‘7rVd’O ‹ \|*ƒy( ��‡•+T†,€t…j_FzmZˆ#š^„g[~nS¡žI“R=P2u�{˜9L-.`  $)WC/ŽX�%bcaŠ&3}>Uw@–hfŒ”1AG‰q™0e%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s similar queries.%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(query_count)d query in %(sql_time).2fms%(query_count)d queries in %(sql_time).2fms%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveAlertsAlerts foundArgumentsAutocommitBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsCommandsCommunityCommunity & ContributionConnection:Context processorContext processorsContext switchesContribution GuideCookiesCountCumTimeData for this panel isn't available anymore.Data for this panel isn't available anymore. Please reload the page and retry.DatabaseDebug ToolbarDisable for next and successive requestsDjango Debug Toolbar DocumentationDuplicated %(dupes)s times.Elapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLExplore the official documentation to learn more about Django Debug Toolbar.Form contains file input, but does not have the attribute enctype="multipart/form-data".Form with id "{form_id}" contains file input, but does not have the attribute enctype="multipart/form-data".GET dataHeadersHideHide toolbarHistoryHow to Use Django Debug ToolbarIdleIn errorIn transactionInput element references form with id "{form_id}", but the form does not have the attribute enctype="multipart/form-data".Intercept redirectsInvalid query id.Isolation level:Join DiscussionsKeyKeyword argumentsLocationLocation:MethodMilliseconds since navigation start (+length)NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No alerts foundNo cookiesNo originNo session dataNonePOST dataPackagePathPerProfilingQueryRead DocumentationRead committedRead uncommittedReceiversRepeatable readRequestRequest VariablesRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL queries from %(count)d connectionSQL queries from %(count)d connectionsSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static fileStatic filesStatic file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)StatusSummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime (ms)TimelineTiming attributeToggle ThemeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView IssuesView functionView informationWSGI environWant to contribute to Django Debug Toolbar? Get involved in our community!and %(dupes)s duplicateshistory entrieshistory entryincluding %(count)s similarProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: ErtuÄŸrul KeremoÄŸlu, 2025 Language-Team: Turkish (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/tr/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: tr Plural-Forms: nplurals=2; plural=(n > 1); %(time).2f ms'de %(cache_calls)d çaÄŸrı%(time).2fms'de %(cache_calls)d çaÄŸrı%(count)s benzer sorgu.%(num)s sorgu%(num)s sorgu%(num_signals)d sinyalin %(num_receivers)d alıcısı%(num_signals)d sinyalin %(num_receivers)d alıcısı1 sinyalin %(num_receivers)d alıcısı1 sinyalin %(num_receivers)d alıcısı%(num_used)s dosya kullanıldı%(num_used)s dosya kullanıldı%(payload_count)s dosya%(payload_count)s dosya%(sql_time).2fms'de %(query_count)d sorgu%(sql_time).2fms'de %(query_count)d sorgu%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d voluntary, %(ivcsw)d involuntary(ön ek %(prefix)s)(bilinmiyor)EylemActiveUyarılarUyarılar bulunduArgümanlarAutocommitArka uçTarayıcı zamanlamasıCPU: %(cum)0.2fms (%(total)0.2fms)Önbellek%(count)d arka uçtan yapılan önbellek çaÄŸrıları%(count)d arka uçtan yapılan önbellek çaÄŸrılarıÖnbellek isabetleriÖnbellek ıskalarıÇaÄŸrıÇaÄŸrılarKomutlarKomüniteKomünite & Katkıda BulunmaBaÄŸlantı:Context iÅŸlemcisiContext iÅŸlemcileriContext switchesKatkıda Bulunma RehberiÇerezlerAdetKümülatif ZamanBu panele ait veriler artık mevcut deÄŸil.Bu panele ait veriler artık mevcut deÄŸil. Lütfen sayfayı yeniden yükleyin ve tekrar deneyin.VeritabanıHata Ayıklama Araç ÇubuÄŸuSonraki istekler için devre dışı bırakDjango Debug Toolbar Dökümantasyonu%(dupes)s defa tekrarlandı.Geçen süreBoÅŸ kümeSonraki istekler için etkinleÅŸtirHataÇalıştırılan SQLDjango Debug Toolbar hakkında daha fazla bilgi edinmek için resmi dokümantasyonu inceleyin.Form bir file-input içeriyor, ancak enctype="multipart/form-data" attribute'sine sahip deÄŸil."id" deÄŸeri "{form_id}" olan form bir file-input içeriyor, ancak enctype="multipart/form-data" attribute'sine sahip deÄŸil.GET verileriHeader'lerGizleAraç çubuÄŸunu gizleGeçmiÅŸDjango Debug Toolbar Nasıl KullanılırIdleIn errorIn transactionBir input elementi, "id" deÄŸeri "{form_id}" olan forma referans veriyor, ancak form enctype="multipart/form-data" attribute'sine sahip deÄŸil.Yönlendirmeleri yakalaGeçersiz sorgu ID'siİzolasyon seviyesi:Tartışmalara KatılAnahtarAnahtar kelime argümanlarıKonumKonum:MetotGezinme baÅŸlangıcından bu yana geçen milisaniyeler (+uzunluk)İsimGET verisi yokPOST verisi yokBu istek sırasında hiçbir SQL sorgusu kaydedilmedi.Uyarı bulunmadıÇerez yokKaynak yokOturum verisi yokNonePOST verileriPaketYolÇaÄŸrı başınaProfillemeSorguDökümantasyonu OkuRead committedRead uncommittedAlıcılarRepeatable readİstekİstek DeÄŸiÅŸkenleriİstek header'leriKaynakKaynak kullanımıCevap header'leriSQLSQL sorgu planıProfillenen SQL%(count)d baÄŸlantıdan SQL sorguları%(count)d baÄŸlantıdan SQL sorgularıSeçilen SQLSerializableOturum verileriAyarAyarlarAyarlar (%s modülü)Araç çubuÄŸunu gösterSinyalSinyallerWSGI ortamı, sunucunun ortamını devraldığından, aÅŸağıda yalnızca önemli bir alt kümesi gösterilmiÅŸtir.Statik dosyaStatik dosyalarStatik dosya uygulamasıStatik dosya uygulamalarıStatik dosya yoluStatik dosya yollarıStatik dosyalarStatik dosyalar (bulunan %(num_found)s, kullanılan %(num_used)s)DurumÖzetSistem CPU süresiÅžablonÅžablonlarÅžablon yoluÅžablon yollarıŞablon kaynak kodu:ÅžablonlarÅžablonlar (%(num_templates)s iÅŸlenen)Django Hata Ayıklama Araç ÇubuÄŸu, hata ayıklama amacıyla yukarıdaki URL'ye yapılan yönlendirmeyi durdurdu. Yönlendirmeye devam etmek için yukarıdaki baÄŸlantıya tıklayabilirsiniz.ZamanSüre (ms)Zaman çizelgesiZamanlama deÄŸerleriTemayı DeÄŸiÅŸtirContext'i aç/kapatToplam ZamanToplam CPU süresiToplam çaÄŸrılarToplam süreToplam: %0.2fmsTransaction durumu:TipURL adıBilinmeyenKullanıcı CPU süresiDeÄŸerDeÄŸiÅŸkenVersiyonVersiyonlarSorunları GörView fonksiyonuView bilgileriWSGI ortamıDjango Debug Toolbar'a katkıda bulunmak ister misiniz? Komünitemizin içinde yerinizi alın!ve %(dupes)s tekrarlanangeçmiÅŸ kayıtlargeçmiÅŸ kayıtbenzer %(count)s tane dahilpython-django-debug-toolbar-8.0.0/debug_toolbar/locale/tr/LC_MESSAGES/django.po000066400000000000000000000510571524561404200271220ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # ErtuÄŸrul KeremoÄŸlu, 2025 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-16 19:11-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: ErtuÄŸrul KeremoÄŸlu, 2025\n" "Language-Team: Turkish (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: tr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "Hata Ayıklama Araç ÇubuÄŸu" #: models.py:11 msgid "history entry" msgstr "geçmiÅŸ kayıt" #: models.py:12 msgid "history entries" msgstr "geçmiÅŸ kayıtlar" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "\"id\" deÄŸeri \"{form_id}\" olan form bir file-input içeriyor, ancak enctype=\"multipart/form-data\" attribute'sine sahip deÄŸil." #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "Form bir file-input içeriyor, ancak enctype=\"multipart/form-data\" attribute'sine sahip deÄŸil." #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "Bir input elementi, \"id\" deÄŸeri \"{form_id}\" olan forma referans veriyor, ancak form enctype=\"multipart/form-data\" attribute'sine sahip deÄŸil." #: panels/alerts.py:77 msgid "Alerts" msgstr "Uyarılar" #: panels/cache.py:170 msgid "Cache" msgstr "Önbellek" #: panels/cache.py:177 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(time).2f ms'de %(cache_calls)d çaÄŸrı" msgstr[1] "%(time).2fms'de %(cache_calls)d çaÄŸrı" #: panels/cache.py:186 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "%(count)d arka uçtan yapılan önbellek çaÄŸrıları" msgstr[1] "%(count)d arka uçtan yapılan önbellek çaÄŸrıları" #: panels/community.py:13 msgid "Community" msgstr "Komünite" #: panels/headers.py:31 msgid "Headers" msgstr "Header'ler" #: panels/history/panel.py:20 panels/history/panel.py:21 msgid "History" msgstr "GeçmiÅŸ" #: panels/profiling.py:156 msgid "Profiling" msgstr "Profilleme" #: panels/redirects.py:18 msgid "Intercept redirects" msgstr "Yönlendirmeleri yakala" #: panels/request.py:16 msgid "Request" msgstr "İstek" #: panels/request.py:36 msgid "" msgstr "" #: panels/request.py:53 msgid "" msgstr "" #: panels/settings.py:19 msgid "Settings" msgstr "Ayarlar" #: panels/settings.py:22 #, python-format msgid "Settings from %s" msgstr "Ayarlar (%s modülü)" #: panels/signals.py:59 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "1 sinyalin %(num_receivers)d alıcısı" msgstr[1] "1 sinyalin %(num_receivers)d alıcısı" #: panels/signals.py:64 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_signals)d sinyalin %(num_receivers)d alıcısı" msgstr[1] "%(num_signals)d sinyalin %(num_receivers)d alıcısı" #: panels/signals.py:69 msgid "Signals" msgstr "Sinyaller" #: panels/sql/forms.py:56 msgid "Data for this panel isn't available anymore." msgstr "Bu panele ait veriler artık mevcut deÄŸil." #: panels/sql/forms.py:68 msgid "Invalid query id." msgstr "Geçersiz sorgu ID'si" #: panels/sql/panel.py:32 panels/sql/panel.py:43 msgid "Read uncommitted" msgstr "Read uncommitted" #: panels/sql/panel.py:33 panels/sql/panel.py:45 msgid "Read committed" msgstr "Read committed" #: panels/sql/panel.py:34 panels/sql/panel.py:47 msgid "Repeatable read" msgstr "Repeatable read" #: panels/sql/panel.py:35 panels/sql/panel.py:49 msgid "Serializable" msgstr "Serializable" #: panels/sql/panel.py:41 msgid "Autocommit" msgstr "Autocommit" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "Idle" msgstr "Idle" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "Active" msgstr "Active" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "In transaction" msgstr "In transaction" #: panels/sql/panel.py:66 panels/sql/panel.py:76 msgid "In error" msgstr "In error" #: panels/sql/panel.py:67 panels/sql/panel.py:77 msgid "Unknown" msgstr "Bilinmeyen" #: panels/sql/panel.py:165 msgid "SQL" msgstr "SQL" #: panels/sql/panel.py:172 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "%(sql_time).2fms'de %(query_count)d sorgu" msgstr[1] "%(sql_time).2fms'de %(query_count)d sorgu" #: panels/sql/panel.py:184 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "%(count)d baÄŸlantıdan SQL sorguları" msgstr[1] "%(count)d baÄŸlantıdan SQL sorguları" #: panels/staticfiles.py:47 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Statik dosyalar (bulunan %(num_found)s, kullanılan %(num_used)s)" #: panels/staticfiles.py:81 msgid "Static files" msgstr "Statik dosyalar" #: panels/staticfiles.py:87 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s dosya kullanıldı" msgstr[1] "%(num_used)s dosya kullanıldı" #: panels/templates/panel.py:104 msgid "Templates" msgstr "Åžablonlar" #: panels/templates/panel.py:109 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Åžablonlar (%(num_templates)s iÅŸlenen)" #: panels/templates/panel.py:199 msgid "No origin" msgstr "Kaynak yok" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Toplam: %0.2fms" #: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Zaman" #: panels/timer.py:46 msgid "User CPU time" msgstr "Kullanıcı CPU süresi" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3f ms" #: panels/timer.py:47 msgid "System CPU time" msgstr "Sistem CPU süresi" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3f ms" #: panels/timer.py:48 msgid "Total CPU time" msgstr "Toplam CPU süresi" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3f ms" #: panels/timer.py:49 msgid "Elapsed time" msgstr "Geçen süre" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3f ms" #: panels/timer.py:51 msgid "Context switches" msgstr "Context switches" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d voluntary, %(ivcsw)d involuntary" #: panels/versions.py:21 msgid "Versions" msgstr "Versiyonlar" #: templates/debug_toolbar/base.html:22 msgid "Hide toolbar" msgstr "Araç çubuÄŸunu gizle" #: templates/debug_toolbar/base.html:22 msgid "Hide" msgstr "Gizle" #: templates/debug_toolbar/base.html:24 templates/debug_toolbar/base.html:25 msgid "Toggle Theme" msgstr "Temayı DeÄŸiÅŸtir" #: templates/debug_toolbar/base.html:34 msgid "Show toolbar" msgstr "Araç çubuÄŸunu göster" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "Sonraki istekler için devre dışı bırak" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "Sonraki istekler için etkinleÅŸtir" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "Uyarılar bulundu" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "Uyarı bulunmadı" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Özet" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Toplam çaÄŸrılar" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Toplam süre" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Önbellek isabetleri" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Önbellek ıskaları" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Komutlar" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "ÇaÄŸrılar" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:36 msgid "Time (ms)" msgstr "Süre (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Tip" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Argümanlar" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Anahtar kelime argümanları" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Arka uç" #: templates/debug_toolbar/panels/community.html:5 msgid "Community & Contribution" msgstr "Komünite & Katkıda Bulunma" #: templates/debug_toolbar/panels/community.html:8 msgid "" "Want to contribute to Django Debug Toolbar? Get involved in our community!" msgstr "Django Debug Toolbar'a katkıda bulunmak ister misiniz? Komünitemizin içinde yerinizi alın!" #: templates/debug_toolbar/panels/community.html:14 msgid "Join Discussions" msgstr "Tartışmalara Katıl" #: templates/debug_toolbar/panels/community.html:19 msgid "View Issues" msgstr "Sorunları Gör" #: templates/debug_toolbar/panels/community.html:24 msgid "Contribution Guide" msgstr "Katkıda Bulunma Rehberi" #: templates/debug_toolbar/panels/community.html:31 msgid "Django Debug Toolbar Documentation" msgstr "Django Debug Toolbar Dökümantasyonu" #: templates/debug_toolbar/panels/community.html:34 msgid "" "Explore the official documentation to learn more about Django Debug Toolbar." msgstr "Django Debug Toolbar hakkında daha fazla bilgi edinmek için resmi dokümantasyonu inceleyin." #: templates/debug_toolbar/panels/community.html:39 msgid "Read Documentation" msgstr "Dökümantasyonu Oku" #: templates/debug_toolbar/panels/community.html:44 msgid "How to Use Django Debug Toolbar" msgstr "Django Debug Toolbar Nasıl Kullanılır" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "İstek header'leri" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Anahtar" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "DeÄŸer" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Cevap header'leri" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "WSGI ortamı" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "WSGI ortamı, sunucunun ortamını devraldığından, aÅŸağıda yalnızca önemli bir alt kümesi gösterilmiÅŸtir." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "Metot" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "Yol" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "İstek DeÄŸiÅŸkenleri" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "Durum" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "Eylem" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "DeÄŸiÅŸken" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "ÇaÄŸrı" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "Kümülatif Zaman" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "ÇaÄŸrı başına" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "Toplam Zaman" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Adet" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "View bilgileri" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "View fonksiyonu" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "URL adı" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Çerezler" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "Çerez yok" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "Oturum verileri" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "Oturum verisi yok" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "GET verileri" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "GET verisi yok" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "POST verileri" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "POST verisi yok" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Ayar" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Sinyal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "Alıcılar" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s sorgu" msgstr[1] "%(num)s sorgu" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "benzer %(count)s tane dahil" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "ve %(dupes)s tekrarlanan" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "Sorgu" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Zaman çizelgesi" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "%(count)s benzer sorgu." #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "%(dupes)s defa tekrarlandı." #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "BaÄŸlantı:" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "İzolasyon seviyesi:" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "Transaction durumu:" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "(bilinmiyor)" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "Bu istek sırasında hiçbir SQL sorgusu kaydedilmedi." #: templates/debug_toolbar/panels/sql_explain.html:3 msgid "SQL explained" msgstr "SQL sorgu planı" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Çalıştırılan SQL" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Veritabanı" #: templates/debug_toolbar/panels/sql_profile.html:3 msgid "SQL profiled" msgstr "Profillenen SQL" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Hata" #: templates/debug_toolbar/panels/sql_select.html:3 msgid "SQL selected" msgstr "Seçilen SQL" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "BoÅŸ küme" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Statik dosya yolu" msgstr[1] "Statik dosya yolları" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "(ön ek %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "None" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "Statik dosya uygulaması" msgstr[1] "Statik dosya uygulamaları" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "Statik dosya" msgstr[1] "Statik dosyalar" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s dosya" msgstr[1] "%(payload_count)s dosya" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "Konum" #: templates/debug_toolbar/panels/template_source.html:3 msgid "Template source:" msgstr "Åžablon kaynak kodu:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Åžablon yolu" msgstr[1] "Åžablon yolları" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Åžablon" msgstr[1] "Åžablonlar" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "Context'i aç/kapat" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Context iÅŸlemcisi" msgstr[1] "Context iÅŸlemcileri" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Kaynak kullanımı" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Kaynak" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Tarayıcı zamanlaması" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Zamanlama deÄŸerleri" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "Gezinme baÅŸlangıcından bu yana geçen milisaniyeler (+uzunluk)" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "Paket" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "İsim" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "Versiyon" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "Konum:" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "Django Hata Ayıklama Araç ÇubuÄŸu, hata ayıklama amacıyla yukarıdaki URL'ye yapılan yönlendirmeyi durdurdu. Yönlendirmeye devam etmek için yukarıdaki baÄŸlantıya tıklayabilirsiniz." #: views.py:18 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Bu panele ait veriler artık mevcut deÄŸil. Lütfen sayfayı yeniden yükleyin ve tekrar deneyin." python-django-debug-toolbar-8.0.0/debug_toolbar/locale/uk/000077500000000000000000000000001524561404200235155ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/uk/LC_MESSAGES/000077500000000000000000000000001524561404200253025ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/uk/LC_MESSAGES/django.mo000066400000000000000000000257121524561404200271100ustar00rootroot00000000000000Þ•r¬�<° J± ü l N‡ .Ö . 4 D T i )y £ · Á Ï Ö à ë ó " % F+ r } Š � • ž $ª Ï à è î Nö E N (\ … ’ 'œ Ä Ê × à è í ú #5 >H M Y1f ˜ £­½ ÂÌÑ Õß åï÷0 4AI R_fhn× ð" 45Aw�¢¿ Ð&Ú¦¨'­ÕÞïþ  !,;OT ]kqz‚ ‹™ ª„·Ñ<U!dᆽhu&œ®À×Aé+%Gm €‹ž ·'Ä(ìÛø (5DS•k)+4G­Z>U[±ÍQë=!L n{Ž4�!Òô % B !M o x ’ g­ !+! K! l! w!…!Ž! ! ¹!#Ä! è!ó! ") "%J"p"t"ˆ"¡"6º" ñ"þ"® #o¼#U,$½‚%@&a\& ¾&Ë&=é&�''©'È'5×'{ (‰)G�)Ø)'ì)*%*4*4R*‡*¡*"¼*ß* æ*'ó*+ ,+ 9+ F+'S+4{+°+I7kV'C/B[:F3Ld#"R+6S!YgJq]Q`jormKe=2Ha- )D^Mb>.f* 1U;WO0N8AXp,n_@G%? (Zi4E$&\ 9h <PTlc5%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)ActionArgumentsAutocommitBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDebug ToolbarDisable for next and successive requestsElapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarIntercept redirectsIsolation level:KeyKeyword argumentsLocationLocation:NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo originNo session dataNonePOST dataPathPerProfilingQueryReceiversRequestRequest headersResourceResource usageResponse headersSQLSession dataSettingSettingsShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static fileStatic filesStatic file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime since navigation start (+duration)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: Illia Volochii , 2017 Language-Team: Ukrainian (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/uk/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: uk Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3); %(cache_calls)d виклик за %(time).2f мÑ�%(cache_calls)d виклики за %(time).2f мÑ�%(cache_calls)d викликів за %(time).2f мÑ�%(cache_calls)d викликів за %(time).2f мÑ�%(num)s запит%(num)s запити%(num)s запитів%(num)s запитів%(num_receivers)d отримувач %(num_signals)d Ñ�игналів%(num_receivers)d отримувача %(num_signals)d Ñ�игналів%(num_receivers)d отримувачів %(num_signals)d Ñ�игналів%(num_receivers)d отримувачів %(num_signals)d Ñ�игналів%(num_receivers)d отримувач 1 Ñ�игналу%(num_receivers)d отримувача 1 Ñ�игналу%(num_receivers)d отримувачів 1 Ñ�игналу%(num_receivers)d отримувачів 1 Ñ�игналуВикориÑ�тано %(num_used)s файлВикориÑ�тано %(num_used)s файлиВикориÑ�тано %(num_used)s файлівВикориÑ�тано %(num_used)s файлів%(payload_count)s файл%(payload_count)s файли%(payload_count)s файлів%(payload_count)s файлів%(stime)0.3f мÑ�%(total)0.3f мÑ�%(total_time)0.3f мÑ�%(utime)0.3f мÑ�навмиÑ�них - %(vcsw)d, мимовільних - %(ivcsw)d(префікÑ� %(prefix)s)<немає відображеннÑ�><відÑ�утнє>ПодіÑ�Ð�ргументиÐ�втофікÑ�аціÑ�БекендХронометраж браузераCPU: %(cum)0.2f мÑ� (%(total)0.2f мÑ�)КешВиклики кешу з %(count)d бекендуВиклики кешу із %(count)d бекендівВиклики кешу із %(count)d бекендівВиклики кешу із %(count)d бекендівКеш-попаданнÑ�Кеш-промахиВикликВикликиКомандиПідключеннÑ�:ПроцеÑ�ор контекÑ�туПроцеÑ�ори контекÑ�туПроцеÑ�ори контекÑ�туПроцеÑ�ори контекÑ�туПеремикачів контекÑ�туКукиКількіÑ�тьКумул. чаÑ�Дані длÑ� цієї панелі більше недоÑ�тупні. Будь лаÑ�ка, перезавантажте Ñ�торінку Ñ– Ñ�пробуйте знову.База данихПанель ІнÑ�трументів Ð�алагодженнÑ�Відключити длÑ� наÑ�тупного Ñ– подальших запитівВитрачений чаÑ�ПорожнÑ� множинаВключити длÑ� наÑ�тупного Ñ– подальших запитівПомилкаВиконаний SQL запитGET даніЗаголовкиСховатиСховати панель інÑ�трументівПереривати запитиРівень ізолÑ�ції:КлючІменовані аргументиМіÑ�цеМіÑ�цезнаходженнÑ�:ІмʼÑ�Ð�емає GET данихÐ�емає POST данихЖодного SQL запиту не було запиÑ�ано протÑ�гом цього запитуÐ�емає куківÐ�емає походженнÑ�Ð�емає даних Ñ�еÑ�Ñ–Ñ—Ð�емаєPOST даніШлÑ�хЗа викликПрофілюваннÑ�ЗапитОтримувачі Ñ�игналаЗапитЗаголовки запитуРеÑ�урÑ�ВикориÑ�таннÑ� реÑ�урÑ�івЗаголовки відповідіSQLДані Ñ�еÑ�Ñ–Ñ—Ð�алаштуваннÑ�Ð�алаштуваннÑ�Показати панель інÑ�трументівСигналСигналиОÑ�кільки Ñ�ередовище WSGI уÑ�падковує Ñ�ередовище Ñ�ервера, тут показано лише найважливішу чаÑ�тину.Статичний файлСтатичні файлиСтатичні файлиСтатичні файлиЗаÑ�тоÑ�унок, Ñ�кий викориÑ�товує Ñ�татичні файлиЗаÑ�тоÑ�унки, Ñ�кі викориÑ�товують Ñ�татичні файлиЗаÑ�тоÑ�унки, Ñ�кі викориÑ�товують Ñ�татичні файлиЗаÑ�тоÑ�унки, Ñ�кі викориÑ�товують Ñ�татичні файлиШлÑ�Ñ… до Ñ�татичних файлівШлÑ�хи до Ñ�татичних файлівШлÑ�хи до Ñ�татичних файлівШлÑ�хи до Ñ�татичних файлівСтатичні файлиСтатичні файли (знайдено %(num_found)s, викориÑ�тано %(num_used)s)РезюмеСиÑ�темний чаÑ� CPUШаблонШаблониШаблонівШаблонівШлÑ�Ñ… до шаблонівШлÑ�хи до шаблонівШлÑ�хи до шаблонівШлÑ�хи до шаблонівДжерело шаблону:ШаблониШаблони (оброблено %(num_templates)s)Панель ІнÑ�трументів Ð�алагодженнÑ� Django перервала перенаправленнÑ� до вищевказаного URL задлÑ� налагодженнÑ� переглÑ�ду. Ви можете натиÑ�нути на поÑ�иланнÑ� вище, щоб продовжити перенаправленнÑ� у звичайному режимі.ЧаÑ�ЧаÑ� від початку навігації (+триваліÑ�ть)ЛініÑ� чаÑ�уÐ�трибут хронометражуКонтекÑ�тЗаг. чаÑ�Загальний чаÑ� CPUЗагальна кількіÑ�ть викликівЗагальний чаÑ�Загалом: %0.2f мÑ�СтатуÑ� транзакції:ТипІмʼÑ� URLКориÑ�тувацький чаÑ� CPUЗначеннÑ�ЗміннаВерÑ�Ñ–Ñ�ВерÑ�іїФункціÑ� відображеннÑ�ІнформаціÑ� про відображеннÑ�Середовище WSGIpython-django-debug-toolbar-8.0.0/debug_toolbar/locale/uk/LC_MESSAGES/django.po000066400000000000000000000524741524561404200271200ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Illia Volochii , 2017 # Sergey Lysach , 2013 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: Illia Volochii , 2017\n" "Language-Team: Ukrainian (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: uk\n" "Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "Панель ІнÑ�трументів Ð�алагодженнÑ�" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:77 msgid "Alerts" msgstr "" #: panels/cache.py:168 msgid "Cache" msgstr "Кеш" #: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d виклик за %(time).2f мÑ�" msgstr[1] "%(cache_calls)d виклики за %(time).2f мÑ�" msgstr[2] "%(cache_calls)d викликів за %(time).2f мÑ�" msgstr[3] "%(cache_calls)d викликів за %(time).2f мÑ�" #: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Виклики кешу з %(count)d бекенду" msgstr[1] "Виклики кешу із %(count)d бекендів" msgstr[2] "Виклики кешу із %(count)d бекендів" msgstr[3] "Виклики кешу із %(count)d бекендів" #: panels/headers.py:31 msgid "Headers" msgstr "Заголовки" #: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" #: panels/profiling.py:140 msgid "Profiling" msgstr "ПрофілюваннÑ�" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "Переривати запити" #: panels/request.py:16 msgid "Request" msgstr "Запит" #: panels/request.py:38 msgid "" msgstr "<немає відображеннÑ�>" #: panels/request.py:55 msgid "" msgstr "<відÑ�утнє>" #: panels/settings.py:17 msgid "Settings" msgstr "Ð�алаштуваннÑ�" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d отримувач 1 Ñ�игналу" msgstr[1] "%(num_receivers)d отримувача 1 Ñ�игналу" msgstr[2] "%(num_receivers)d отримувачів 1 Ñ�игналу" msgstr[3] "%(num_receivers)d отримувачів 1 Ñ�игналу" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_receivers)d отримувач %(num_signals)d Ñ�игналів" msgstr[1] "%(num_receivers)d отримувача %(num_signals)d Ñ�игналів" msgstr[2] "%(num_receivers)d отримувачів %(num_signals)d Ñ�игналів" msgstr[3] "%(num_receivers)d отримувачів %(num_signals)d Ñ�игналів" #: panels/signals.py:67 msgid "Signals" msgstr "Сигнали" #: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "" #: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "" #: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "" #: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "" #: panels/sql/panel.py:39 msgid "Autocommit" msgstr "Ð�втофікÑ�аціÑ�" #: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "" #: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "" #: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" #: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Статичні файли (знайдено %(num_found)s, викориÑ�тано %(num_used)s)" #: panels/staticfiles.py:103 msgid "Static files" msgstr "Статичні файли" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "ВикориÑ�тано %(num_used)s файл" msgstr[1] "ВикориÑ�тано %(num_used)s файли" msgstr[2] "ВикориÑ�тано %(num_used)s файлів" msgstr[3] "ВикориÑ�тано %(num_used)s файлів" #: panels/templates/panel.py:101 msgid "Templates" msgstr "Шаблони" #: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Шаблони (оброблено %(num_templates)s)" #: panels/templates/panel.py:195 msgid "No origin" msgstr "Ð�емає походженнÑ�" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2f мÑ� (%(total)0.2f мÑ�)" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Загалом: %0.2f мÑ�" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "ЧаÑ�" #: panels/timer.py:46 msgid "User CPU time" msgstr "КориÑ�тувацький чаÑ� CPU" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "%(utime)0.3f мÑ�" #: panels/timer.py:47 msgid "System CPU time" msgstr "СиÑ�темний чаÑ� CPU" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "%(stime)0.3f мÑ�" #: panels/timer.py:48 msgid "Total CPU time" msgstr "Загальний чаÑ� CPU" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "%(total)0.3f мÑ�" #: panels/timer.py:49 msgid "Elapsed time" msgstr "Витрачений чаÑ�" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "%(total_time)0.3f мÑ�" #: panels/timer.py:51 msgid "Context switches" msgstr "Перемикачів контекÑ�ту" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "навмиÑ�них - %(vcsw)d, мимовільних - %(ivcsw)d" #: panels/versions.py:19 msgid "Versions" msgstr "ВерÑ�Ñ–Ñ—" #: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "Сховати панель інÑ�трументів" #: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "Сховати" #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 msgid "Toggle Theme" msgstr "" #: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "Показати панель інÑ�трументів" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "Відключити длÑ� наÑ�тупного Ñ– подальших запитів" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "Включити длÑ� наÑ�тупного Ñ– подальших запитів" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Резюме" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Загальна кількіÑ�ть викликів" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Загальний чаÑ�" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Кеш-попаданнÑ�" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Кеш-промахи" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Команди" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Виклики" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Тип" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Ð�ргументи" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Іменовані аргументи" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Бекенд" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "Заголовки запиту" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Ключ" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "ЗначеннÑ�" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Заголовки відповіді" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "Середовище WSGI" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "ОÑ�кільки Ñ�ередовище WSGI уÑ�падковує Ñ�ередовище Ñ�ервера, тут показано лише найважливішу чаÑ�тину." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "ШлÑ�Ñ…" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "ПодіÑ�" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "Змінна" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Виклик" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "Кумул. чаÑ�" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "За виклик" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "Заг. чаÑ�" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "КількіÑ�ть" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "ІнформаціÑ� про відображеннÑ�" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "ФункціÑ� відображеннÑ�" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "ІмʼÑ� URL" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Куки" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "Ð�емає куків" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "Дані Ñ�еÑ�Ñ–Ñ—" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "Ð�емає даних Ñ�еÑ�Ñ–Ñ—" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "GET дані" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "Ð�емає GET даних" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "POST дані" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "Ð�емає POST даних" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Ð�алаштуваннÑ�" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Сигнал" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "Отримувачі Ñ�игнала" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s запит" msgstr[1] "%(num)s запити" msgstr[2] "%(num)s запитів" msgstr[3] "%(num)s запитів" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "Запит" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "ЛініÑ� чаÑ�у" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "" #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "ПідключеннÑ�:" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "Рівень ізолÑ�ції:" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "СтатуÑ� транзакції:" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "Жодного SQL запиту не було запиÑ�ано протÑ�гом цього запиту" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Виконаний SQL запит" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "База даних" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Помилка" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "ПорожнÑ� множина" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "ШлÑ�Ñ… до Ñ�татичних файлів" msgstr[1] "ШлÑ�хи до Ñ�татичних файлів" msgstr[2] "ШлÑ�хи до Ñ�татичних файлів" msgstr[3] "ШлÑ�хи до Ñ�татичних файлів" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "(префікÑ� %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "Ð�емає" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "ЗаÑ�тоÑ�унок, Ñ�кий викориÑ�товує Ñ�татичні файли" msgstr[1] "ЗаÑ�тоÑ�унки, Ñ�кі викориÑ�товують Ñ�татичні файли" msgstr[2] "ЗаÑ�тоÑ�унки, Ñ�кі викориÑ�товують Ñ�татичні файли" msgstr[3] "ЗаÑ�тоÑ�унки, Ñ�кі викориÑ�товують Ñ�татичні файли" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "Статичний файл" msgstr[1] "Статичні файли" msgstr[2] "Статичні файли" msgstr[3] "Статичні файли" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s файл" msgstr[1] "%(payload_count)s файли" msgstr[2] "%(payload_count)s файлів" msgstr[3] "%(payload_count)s файлів" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "МіÑ�це" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "Джерело шаблону:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "ШлÑ�Ñ… до шаблонів" msgstr[1] "ШлÑ�хи до шаблонів" msgstr[2] "ШлÑ�хи до шаблонів" msgstr[3] "ШлÑ�хи до шаблонів" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Шаблон" msgstr[1] "Шаблони" msgstr[2] "Шаблонів" msgstr[3] "Шаблонів" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "КонтекÑ�Ñ‚" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "ПроцеÑ�ор контекÑ�ту" msgstr[1] "ПроцеÑ�ори контекÑ�ту" msgstr[2] "ПроцеÑ�ори контекÑ�ту" msgstr[3] "ПроцеÑ�ори контекÑ�ту" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "ВикориÑ�таннÑ� реÑ�урÑ�ів" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "РеÑ�урÑ�" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Хронометраж браузера" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Ð�трибут хронометражу" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "ЧаÑ� від початку навігації (+триваліÑ�ть)" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "ІмʼÑ�" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "ВерÑ�Ñ–Ñ�" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "МіÑ�цезнаходженнÑ�:" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "Панель ІнÑ�трументів Ð�алагодженнÑ� Django перервала перенаправленнÑ� до вищевказаного URL задлÑ� налагодженнÑ� переглÑ�ду. Ви можете натиÑ�нути на поÑ�иланнÑ� вище, щоб продовжити перенаправленнÑ� у звичайному режимі." #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Дані длÑ� цієї панелі більше недоÑ�тупні. Будь лаÑ�ка, перезавантажте Ñ�торінку Ñ– Ñ�пробуйте знову." python-django-debug-toolbar-8.0.0/debug_toolbar/locale/uz/000077500000000000000000000000001524561404200235345ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/uz/LC_MESSAGES/000077500000000000000000000000001524561404200253215ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/uz/LC_MESSAGES/django.mo000066400000000000000000000274001524561404200271230ustar00rootroot00000000000000Þ•¡$ß, ¨ J© ô l-Nš.é.UG�¯ÁØ)ê ( 2 <JQX _ l v�‰"˜»FÁ   %+ 4> W$cˆ™¬´º,ÂNï> G(U"~¡ ½ Ê'Ôü LX\lµ"+3 8EMmr{zŠ+<MQc lv-}« ° ¼1Éû   0 5?GL PZ`s‚ “�­µÇ×àï  L l y †“›¤ µÂÉhÑ: S"t —5¤Úáéù ) :&D¦k !* ;HW_ n z…”¨­¶ ¾ÌÒÛã ì ø J$Žoþ …£¢5F|œA­1ï!A7Z’ªÂß*÷" > I U c h n  ˜ ¤ ¶ ¾ 3Ì !)!/!H!]! f! r! |!‡!£!¬!Ä!Û! ö!""."^?"ž"±"*Â"(í"# 3# A#3O#ƒ#‹#l¤#_${q$í$ þ$ %%1%&7%^%d%u%iˆ%ò%!&0&F&_&e& ~& ˆ&“&?™&Ù&Ý&ú&='V'q' ˆ' •'¶'»'Í'Ó' Ú'å'õ'ü'(+(D(V(m(t(‹(Ÿ( ¦(³(Æ(Ê(å(%)')=)R)g) o)z)‹)©) °)iº)$*3*I*`*Eo*µ*¼*Î* à*ë*þ* +,+ÖF+, ", ,,8,J,_,z,ƒ,”, ¥,±,È,Ý,á,ê,ó, - -- &-1-E-X- n-Nz-�É-W. g.‹t.'œQx?H5M:ŸJlps!D‚K"—vi;8Nk<Y�o6 B ]4E›‘7rVd’O ‹ \|*ƒy( ��‡•+T†,€t…j_FzmZˆ#š^„g[~nS¡žI“R=P2u�{˜9L-.`  $)WC/ŽX�%bcaŠ&3}>Uw@–hfŒ”1AG‰q™0e%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(count)s similar queries.%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(query_count)d query in %(sql_time).2fms%(query_count)d queries in %(sql_time).2fms%(stime)0.3f msec%(total)0.3f msec%(total_time)0.3f msec%(utime)0.3f msec%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveAlertsAlerts foundArgumentsAutocommitBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsCommandsCommunityCommunity & ContributionConnection:Context processorContext processorsContext switchesContribution GuideCookiesCountCumTimeData for this panel isn't available anymore.Data for this panel isn't available anymore. Please reload the page and retry.DatabaseDebug ToolbarDisable for next and successive requestsDjango Debug Toolbar DocumentationDuplicated %(dupes)s times.Elapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLExplore the official documentation to learn more about Django Debug Toolbar.Form contains file input, but does not have the attribute enctype="multipart/form-data".Form with id "{form_id}" contains file input, but does not have the attribute enctype="multipart/form-data".GET dataHeadersHideHide toolbarHistoryHow to Use Django Debug ToolbarIdleIn errorIn transactionInput element references form with id "{form_id}", but the form does not have the attribute enctype="multipart/form-data".Intercept redirectsInvalid query id.Isolation level:Join DiscussionsKeyKeyword argumentsLocationLocation:MethodMilliseconds since navigation start (+length)NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No alerts foundNo cookiesNo originNo session dataNonePOST dataPackagePathPerProfilingQueryRead DocumentationRead committedRead uncommittedReceiversRepeatable readRequestRequest VariablesRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL queries from %(count)d connectionSQL queries from %(count)d connectionsSQL selectedSerializableSession dataSettingSettingsSettings from %sShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static fileStatic filesStatic file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)StatusSummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime (ms)TimelineTiming attributeToggle ThemeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView IssuesView functionView informationWSGI environWant to contribute to Django Debug Toolbar? Get involved in our community!and %(dupes)s duplicateshistory entrieshistory entryincluding %(count)s similarProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: Hojiakbar Barotov , 2026 Language-Team: Uzbek (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/uz/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: uz Plural-Forms: nplurals=1; plural=0; %(time).2fmillisekundda %(cache_calls)dta chaqiruvlar%(count)sta o'xshash so'rovlar.%(num)sta so'rov%(num_signals)dta signaldan %(num_receivers)dta qabul qiluvchilar1 signaldan %(num_receivers)dta qabul qiluvchilar%(num_used)sta fayl ishlatilgan%(payload_count)sta fayl%(sql_time).2fmillisekundda %(query_count)dta so'rovlar%(stime)0.3fmillisekund%(total)0.3fmillisekund%(total_time)0.3fmillisekund%(utime)0.3fmillisekund%(vcsw)dta ixtiyoriy, %(ivcsw)dta majburiy(old qo'shimcha %(prefix)s)(noma'lum)AmalAktivOgohlantirishlarOgohlantirishlar topildiArgumentlarAvtomatik saqlashBackendBrauzer vaqtiCPU:%(cum)0.2fmillisekund (%(total)0.2fmillisekund)Kesh%(count)dta backend'dan kesh chaqiruvlariKeshga tushgan so'rovlarKeshda topilmaganlarChaqiruvChaqiruvlarBuyruqlarHamjamiyatHamjamiyat & Hissa qo'shishUlanish:Kontekst protsessorlariKontekst almashishlariHissa Qo'shish Qo'llanmasiCookie'larMiqdorKumVaqtBu panel uchun ma’lumotlar endi mavjud emas.Bu panel uchun ma’lumotlar endi mavjud emas. Sahifani qayta yuklang va qayta urinib ko'ring.Ma'lumotlar bazasiTekshiruv PaneliKeyingi so‘rovlar uchun faolsizlantirishDjango Tekshiruv Paneli Dokumentatsiyasi%(dupes)smarta takrorlangan.O‘tgan vaqtBo'sh to'plamKeyingi va keyingi so‘rovlar uchun faollashtirishXatolikIjro etilgan SQL so'roviDjango Tekshiruv Paneli haqida batafsil ma’lumot olish uchun rasmiy dokumentatsiya bilan tanishib chiqing.Forma fayl maydonini o'z ichiga oladi, lekin enctype="multipart/form-data" atributiga ega emas."{form_id}" identifikatorli forma fayl maydonini o'z ichiga oladi, lekin enctype="multipart/form-data" atributiga ega emas.GET ma'lumotlariSarlavhalarBerkitishUskunalar panelini berkitishTarixDjango Tekshiruv Panelidan FoydalanishBo'shXatolik holatidaTranzaksiya ichidaKiritish elementi "{form_id}" formaga bog'langan, lekin unda enctype="multipart/form-data" atributi yo'q.Yo‘naltirishni to'xtatishSo‘rov identifikatori yaroqsiz.Izolyatsiya darajasi:Muhokamalarga Qo'shilishKalitKalit so'zli argumentlarJoylashuvJoylashuv:MetodNavigatsiya boshlanganidan beri o'tgan millisoniyalar (+muddat)NomGET ma'lumotlari mavjud emasPOST ma'lumotlari mavjud emasBu so‘rov paytida hech qanday SQL so‘rovi qayd qilinmadi.Ogohlantirishlar topilmadiCookie'lar mavjud emasManbasi yo'qSessiya ma'lumotlari mavjud emasYo'qPOST ma'lumotlariPaketManzilHar birigaIshlash tahliliSo'rovDokumentatsiyani o'qishTasdiqlanganini o'qishTasdiqlanmaganini o'qishQabul qiluvchilarTakrorlanadigan o'qishSo'rovSo'rov O'zgaruvchilariSo'rov sarlavhalariResursResurs sarfiJavob sarlavhalariSQLTushuntirilgan SQL so'roviTahlil qilingan SQL so'rovi%(count)dta ulanishdan SQL so'rovlariTanlangan SQL so'roviSerializatsiyalanganSessiya ma'lumotlariSozlamaSozlamalar%sdan sozlamalarUskunalar panelini ko'rsatishSignalSignallarWSGI server muhitini meros qilib olganligi sababli, quyida faqat muhim qism to‘plamlari ko‘rsatilgan.Statik fayllarStatik fayl ilovalariStatik fayl manzillariStatik fayllarStatik fayllar (%(num_found)sta topildi, %(num_used)sta ishlatilgan)StatusQisqacha ma'lumotSistema CPU vaqtiShablonlarShablon manzillariShablon manbasiShablonlarShablonlar (%(num_templates)sta ishlatilgan)Django Tekshiruv Paneli paneli nosozliklarni tuzatish maqsadlarida yuqoridagi URL manzilga yo‘naltirishni to'xtatdi. Qayta yo‘naltirishni odatdagidek davom ettirish uchun yuqoridagi havolani bosishingiz mumkin.VaqtVaqt (ms)XronologiyaVaqt ko'rsatkichiMavzuni almashtirishKontekstni yoqib o'chirishJamiVaqtUmumiy CPU vaqtiJami chaqiruvlarUmumiy vaqtJami: %0.2fmillisekundTranzaksiya statusi:TurURL nomiNoma'lumFoydalanuvchi CPU vaqtiQiymatO'zgaruvchiVersiyaVersiyalarMuammolarni Ko'rishFunksiyani ko'rishMa'lumotlarni ko'rishWSGI muhitiDjango Tekshiruv Paneliga hissa qo'shmoqchimisiz? Hamjamiyatimizga qo'shiling!va %(dupes)sta duplikattarix yozuvlaritarix yozuvishu jumladan %(count)sta o'xshashpython-django-debug-toolbar-8.0.0/debug_toolbar/locale/uz/LC_MESSAGES/django.po000066400000000000000000000504661524561404200271360ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # Hojiakbar Barotov , 2026 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-10-16 19:11-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: Hojiakbar Barotov , 2026\n" "Language-Team: Uzbek (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/uz/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: uz\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "Tekshiruv Paneli" #: models.py:11 msgid "history entry" msgstr "tarix yozuvi" #: models.py:12 msgid "history entries" msgstr "tarix yozuvlari" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "\"{form_id}\" identifikatorli forma fayl maydonini o'z ichiga oladi, lekin enctype=\"multipart/form-data\" atributiga ega emas." #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "Forma fayl maydonini o'z ichiga oladi, lekin enctype=\"multipart/form-data\" atributiga ega emas." #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "Kiritish elementi \"{form_id}\" formaga bog'langan, lekin unda enctype=\"multipart/form-data\" atributi yo'q." #: panels/alerts.py:77 msgid "Alerts" msgstr "Ogohlantirishlar" #: panels/cache.py:170 msgid "Cache" msgstr "Kesh" #: panels/cache.py:177 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(time).2fmillisekundda %(cache_calls)dta chaqiruvlar" #: panels/cache.py:186 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "%(count)dta backend'dan kesh chaqiruvlari" #: panels/community.py:13 msgid "Community" msgstr "Hamjamiyat" #: panels/headers.py:31 msgid "Headers" msgstr "Sarlavhalar" #: panels/history/panel.py:20 panels/history/panel.py:21 msgid "History" msgstr "Tarix" #: panels/profiling.py:156 msgid "Profiling" msgstr "Ishlash tahlili" #: panels/redirects.py:18 msgid "Intercept redirects" msgstr "Yo‘naltirishni to'xtatish" #: panels/request.py:16 msgid "Request" msgstr "So'rov" #: panels/request.py:36 msgid "" msgstr "" #: panels/request.py:53 msgid "" msgstr "" #: panels/settings.py:19 msgid "Settings" msgstr "Sozlamalar" #: panels/settings.py:22 #, python-format msgid "Settings from %s" msgstr "%sdan sozlamalar" #: panels/signals.py:59 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "1 signaldan %(num_receivers)dta qabul qiluvchilar" #: panels/signals.py:64 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_signals)dta signaldan %(num_receivers)dta qabul qiluvchilar" #: panels/signals.py:69 msgid "Signals" msgstr "Signallar" #: panels/sql/forms.py:56 msgid "Data for this panel isn't available anymore." msgstr "Bu panel uchun ma’lumotlar endi mavjud emas." #: panels/sql/forms.py:68 msgid "Invalid query id." msgstr "So‘rov identifikatori yaroqsiz." #: panels/sql/panel.py:32 panels/sql/panel.py:43 msgid "Read uncommitted" msgstr "Tasdiqlanmaganini o'qish" #: panels/sql/panel.py:33 panels/sql/panel.py:45 msgid "Read committed" msgstr "Tasdiqlanganini o'qish" #: panels/sql/panel.py:34 panels/sql/panel.py:47 msgid "Repeatable read" msgstr "Takrorlanadigan o'qish" #: panels/sql/panel.py:35 panels/sql/panel.py:49 msgid "Serializable" msgstr "Serializatsiyalangan" #: panels/sql/panel.py:41 msgid "Autocommit" msgstr "Avtomatik saqlash" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "Idle" msgstr "Bo'sh" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "Active" msgstr "Aktiv" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "In transaction" msgstr "Tranzaksiya ichida" #: panels/sql/panel.py:66 panels/sql/panel.py:76 msgid "In error" msgstr "Xatolik holatida" #: panels/sql/panel.py:67 panels/sql/panel.py:77 msgid "Unknown" msgstr "Noma'lum" #: panels/sql/panel.py:165 msgid "SQL" msgstr "SQL" #: panels/sql/panel.py:172 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "%(sql_time).2fmillisekundda %(query_count)dta so'rovlar" #: panels/sql/panel.py:184 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "%(count)dta ulanishdan SQL so'rovlari" #: panels/staticfiles.py:47 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "Statik fayllar (%(num_found)sta topildi, %(num_used)sta ishlatilgan)" #: panels/staticfiles.py:81 msgid "Static files" msgstr "Statik fayllar" #: panels/staticfiles.py:87 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)sta fayl ishlatilgan" #: panels/templates/panel.py:104 msgid "Templates" msgstr "Shablonlar" #: panels/templates/panel.py:109 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "Shablonlar (%(num_templates)sta ishlatilgan)" #: panels/templates/panel.py:199 msgid "No origin" msgstr "Manbasi yo'q" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU:%(cum)0.2fmillisekund (%(total)0.2fmillisekund)" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "Jami: %0.2fmillisekund" #: panels/timer.py:38 templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Vaqt" #: panels/timer.py:46 msgid "User CPU time" msgstr "Foydalanuvchi CPU vaqti" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f msec" msgstr "%(utime)0.3fmillisekund" #: panels/timer.py:47 msgid "System CPU time" msgstr "Sistema CPU vaqti" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f msec" msgstr "%(stime)0.3fmillisekund" #: panels/timer.py:48 msgid "Total CPU time" msgstr "Umumiy CPU vaqti" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f msec" msgstr "%(total)0.3fmillisekund" #: panels/timer.py:49 msgid "Elapsed time" msgstr "O‘tgan vaqt" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f msec" msgstr "%(total_time)0.3fmillisekund" #: panels/timer.py:51 msgid "Context switches" msgstr "Kontekst almashishlari" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)dta ixtiyoriy, %(ivcsw)dta majburiy" #: panels/versions.py:21 msgid "Versions" msgstr "Versiyalar" #: templates/debug_toolbar/base.html:22 msgid "Hide toolbar" msgstr "Uskunalar panelini berkitish" #: templates/debug_toolbar/base.html:22 msgid "Hide" msgstr "Berkitish" #: templates/debug_toolbar/base.html:24 templates/debug_toolbar/base.html:25 msgid "Toggle Theme" msgstr "Mavzuni almashtirish" #: templates/debug_toolbar/base.html:34 msgid "Show toolbar" msgstr "Uskunalar panelini ko'rsatish" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "Keyingi so‘rovlar uchun faolsizlantirish" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "Keyingi va keyingi so‘rovlar uchun faollashtirish" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "Ogohlantirishlar topildi" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "Ogohlantirishlar topilmadi" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "Qisqacha ma'lumot" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "Jami chaqiruvlar" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "Umumiy vaqt" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "Keshga tushgan so'rovlar" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "Keshda topilmaganlar" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "Buyruqlar" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "Chaqiruvlar" #: templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/sql.html:36 msgid "Time (ms)" msgstr "Vaqt (ms)" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "Tur" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Argumentlar" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Kalit so'zli argumentlar" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "Backend" #: templates/debug_toolbar/panels/community.html:5 msgid "Community & Contribution" msgstr "Hamjamiyat & Hissa qo'shish" #: templates/debug_toolbar/panels/community.html:8 msgid "" "Want to contribute to Django Debug Toolbar? Get involved in our community!" msgstr "Django Tekshiruv Paneliga hissa qo'shmoqchimisiz? Hamjamiyatimizga qo'shiling!" #: templates/debug_toolbar/panels/community.html:14 msgid "Join Discussions" msgstr "Muhokamalarga Qo'shilish" #: templates/debug_toolbar/panels/community.html:19 msgid "View Issues" msgstr "Muammolarni Ko'rish" #: templates/debug_toolbar/panels/community.html:24 msgid "Contribution Guide" msgstr "Hissa Qo'shish Qo'llanmasi" #: templates/debug_toolbar/panels/community.html:31 msgid "Django Debug Toolbar Documentation" msgstr "Django Tekshiruv Paneli Dokumentatsiyasi" #: templates/debug_toolbar/panels/community.html:34 msgid "" "Explore the official documentation to learn more about Django Debug Toolbar." msgstr "Django Tekshiruv Paneli haqida batafsil ma’lumot olish uchun rasmiy dokumentatsiya bilan tanishib chiqing." #: templates/debug_toolbar/panels/community.html:39 msgid "Read Documentation" msgstr "Dokumentatsiyani o'qish" #: templates/debug_toolbar/panels/community.html:44 msgid "How to Use Django Debug Toolbar" msgstr "Django Tekshiruv Panelidan Foydalanish" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "So'rov sarlavhalari" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Kalit" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Qiymat" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "Javob sarlavhalari" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "WSGI muhiti" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "WSGI server muhitini meros qilib olganligi sababli, quyida faqat muhim qism to‘plamlari ko‘rsatilgan." #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "Metod" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "Manzil" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "So'rov O'zgaruvchilari" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "Status" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "Amal" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "O'zgaruvchi" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "Chaqiruv" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "KumVaqt" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Har biriga" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "JamiVaqt" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "Miqdor" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "Ma'lumotlarni ko'rish" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "Funksiyani ko'rish" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "URL nomi" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookie'lar" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "Cookie'lar mavjud emas" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "Sessiya ma'lumotlari" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "Sessiya ma'lumotlari mavjud emas" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "GET ma'lumotlari" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "GET ma'lumotlari mavjud emas" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "POST ma'lumotlari" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "POST ma'lumotlari mavjud emas" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "Sozlama" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "Signal" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "Qabul qiluvchilar" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)sta so'rov" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "shu jumladan %(count)sta o'xshash" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "va %(dupes)sta duplikat" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "So'rov" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Xronologiya" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "%(count)sta o'xshash so'rovlar." #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "%(dupes)smarta takrorlangan." #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "Ulanish:" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "Izolyatsiya darajasi:" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "Tranzaksiya statusi:" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "(noma'lum)" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "Bu so‘rov paytida hech qanday SQL so‘rovi qayd qilinmadi." #: templates/debug_toolbar/panels/sql_explain.html:3 msgid "SQL explained" msgstr "Tushuntirilgan SQL so'rovi" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Ijro etilgan SQL so'rovi" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Ma'lumotlar bazasi" #: templates/debug_toolbar/panels/sql_profile.html:3 msgid "SQL profiled" msgstr "Tahlil qilingan SQL so'rovi" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "Xatolik" #: templates/debug_toolbar/panels/sql_select.html:3 msgid "SQL selected" msgstr "Tanlangan SQL so'rovi" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "Bo'sh to'plam" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "Statik fayl manzillari" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "(old qo'shimcha %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "Yo'q" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "Statik fayl ilovalari" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "Statik fayllar" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)sta fayl" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "Joylashuv" #: templates/debug_toolbar/panels/template_source.html:3 msgid "Template source:" msgstr "Shablon manbasi" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "Shablon manzillari" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Shablonlar" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "Kontekstni yoqib o'chirish" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Kontekst protsessorlari" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "Resurs sarfi" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "Resurs" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "Brauzer vaqti" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "Vaqt ko'rsatkichi" #: templates/debug_toolbar/panels/timer.html:37 msgid "Milliseconds since navigation start (+length)" msgstr "Navigatsiya boshlanganidan beri o'tgan millisoniyalar (+muddat)" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "Paket" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "Nom" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "Versiya" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "Joylashuv:" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "Django Tekshiruv Paneli paneli nosozliklarni tuzatish maqsadlarida yuqoridagi URL manzilga yo‘naltirishni to'xtatdi. Qayta yo‘naltirishni odatdagidek davom ettirish uchun yuqoridagi havolani bosishingiz mumkin." #: views.py:18 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "Bu panel uchun ma’lumotlar endi mavjud emas. Sahifani qayta yuklang va qayta urinib ko'ring." python-django-debug-toolbar-8.0.0/debug_toolbar/locale/zh_CN/000077500000000000000000000000001524561404200240775ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/zh_CN/LC_MESSAGES/000077500000000000000000000000001524561404200256645ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.mo000066400000000000000000000175221524561404200274720ustar00rootroot00000000000000Þ•~ ­ü° J± ü l N‡ .Ö . 4 D T i )y £ · Á Ë Ù à ç ñ ü  " 6 F< ƒ Ž ›   ¦ ¯ $» à ñ ù ÿ NV _(m – £'­Õ Ûèñù þ (<MQc lv { ‡1” ÆÑá æðõ ù  )3CK[ds„ ˆ – £ ° ½ÊÒ Ûèïh÷` y"š ½5Ê+H Y&c¦Š1'6^gx‡� ž ªµÄØÝæ îü  * ;±H.ú)8;)tž¾Úî!/Qe n |ˆ�– �ª±7Áù) *7GNU \fy‰‘?¤?ä $ .-<j q-{©°ÅÖßæöý  (,< CMTl8…¾Íãçù! "/6I \fv }‡ Ž ›¥©¼Í âï þ&^- Œ™µ ÈBÕ1 8 ER'Y—�(  I S`!p’¤ ´¾Ôä ëöý! ( 4@3#p9%d?J_TWy8a'gmjY>{K!$*7X,5GuDn|`x)B l=oLM U@&rVh.c-"4:zNE<[1e6]/ ZP~ARF+ wtCHik\^S2fO0 v}QI;s(qb%(cache_calls)d call in %(time).2fms%(cache_calls)d calls in %(time).2fms%(num)s query%(num)s queries%(num_receivers)d receiver of %(num_signals)d signals%(num_receivers)d receivers of %(num_signals)d signals%(num_receivers)d receiver of 1 signal%(num_receivers)d receivers of 1 signal%(num_used)s file used%(num_used)s files used%(payload_count)s file%(payload_count)s files%(stime)0.3f ms%(total)0.3f ms%(total_time)0.3f ms%(utime)0.3f ms%(vcsw)d voluntary, %(ivcsw)d involuntary(prefix %(prefix)s)(unknown)ActionActiveArgumentsAutocommitBackendBrowser timingCPU: %(cum)0.2fms (%(total)0.2fms)CacheCache calls from %(count)d backendCache calls from %(count)d backendsCache hitsCache missesCallCallsCommandsConnection:Context processorContext processorsContext switchesCookiesCountCumTimeData for this panel isn't available anymore. Please reload the page and retry.DatabaseDebug ToolbarDisable for next and successive requestsElapsed timeEmpty setEnable for next and successive requestsErrorExecuted SQLGET dataHeadersHideHide toolbarIdleIn errorIn transactionIntercept redirectsIsolation level:KeyKeyword argumentsLocationLocation:NameNo GET dataNo POST dataNo SQL queries were recorded during this request.No cookiesNo session dataNonePOST dataPathPerProfilingQueryRead committedRead uncommittedReceiversRepeatable readRequestRequest headersResourceResource usageResponse headersSQLSQL explainedSQL profiledSQL selectedSerializableSession dataSettingSettingsShow toolbarSignalSignalsSince the WSGI environ inherits the environment of the server, only a significant subset is shown below.Static fileStatic filesStatic file appStatic file appsStatic file pathStatic file pathsStatic filesStatic files (%(num_found)s found, %(num_used)s used)SummarySystem CPU timeTemplateTemplatesTemplate pathTemplate pathsTemplate source:TemplatesTemplates (%(num_templates)s rendered)The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal.TimeTime since navigation start (+duration)TimelineTiming attributeToggle contextTotTimeTotal CPU timeTotal callsTotal timeTotal: %0.2fmsTransaction status:TypeURL nameUnknownUser CPU timeValueVariableVersionVersionsView functionView informationWSGI environProject-Id-Version: Django Debug Toolbar Report-Msgid-Bugs-To: PO-Revision-Date: 2010-11-30 00:00+0000 Last-Translator: mozillazg , 2013-2014 Language-Team: Chinese (China) (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/zh_CN/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: zh_CN Plural-Forms: nplurals=1; plural=0; %(time).2f 毫秒内 %(cache_calls)d 次调用%(num)s 个查询%(num_signals)d 个信å�· %(num_receivers)d 个接收者1个信å�· %(num_receivers)d 个接收者%(num_used)s 个文件被使用%(payload_count)s 个文件%(stime)0.3f 毫秒%(total)0.3f 毫秒%(total_time)0.3f 毫秒%(utime)0.3f 毫秒%(vcsw)d 主动, %(ivcsw)d 被动(å‰�ç¼€ %(prefix)s)(未知)<没有 view><ä¸�å�¯ç”¨>功能活跃å�‚数自动æ��交å�Žç«¯æµ�览器计时CPU: %(cum)0.2f 毫秒 (总耗时: %(total)0.2f 毫秒)缓存æ�¥è‡ª %(count)d 个å�Žç«¯çš„缓存调用缓存命中缓存未命中调用调用命令连接:Context processors上下文切æ�¢Cookies总的调用次数调用该函数å�Šå…¶å†…部调用其他函数花费的总时间当å‰�é�¢æ�¿çš„æ•°æ�®æš‚ä¸�å�¯ç”¨ã€‚请刷新页é�¢å¹¶é‡�试。数æ�®åº“Debug Toolbar针对下一个连续的请求ç¦�用该功能耗时空集å�ˆé’ˆå¯¹ä¸‹ä¸€ä¸ªè¿žç»­çš„请求å�¯ç”¨è¯¥åŠŸèƒ½é”™è¯¯æ‰§è¡Œçš„ SQL 语å�¥GET 请求数æ�®HTTP 头éš�è—�éš�è—�工具æ �空闲错误事务拦截é‡�定å�‘隔离级别键关键字å�‚æ•°ä½�ç½®ä½�置:å��称没有 GET 请求数æ�®æ²¡æœ‰ POST 请求数æ�®åœ¨å¤„ç�†è¿™ä¸ªè¯·æ±‚期间没有记录到 SQL 查询。没有 cookies没有 session æ•°æ�®ç©ºPOST 请求数æ�®è·¯å¾„å¹³å�‡æ¯�次调用花费的时间性能分æž�查询读å�–å·²æ��交的读å�–未æ��交的接收者å�¯é‡�å¤�读å�–请求请求头资æº�资æº�使用å“�应头SQLSQL explain 分æž�SQL 性能分æž�选中的 SQL 语å�¥å�¯åº�列化Session æ•°æ�®è®¾ç½®é¡¹è®¾ç½®æ˜¾ç¤ºå·¥å…·æ �ä¿¡å�·ä¿¡å�·ç”±äºŽ WSGI 的环境å�˜é‡�继承自 server,所以下é�¢å�ªæ˜¾ç¤ºäº†ä¸€äº›é‡�è¦�çš„å­�集。é�™æ€�文件包å�«é�™æ€�文件的应用é�™æ€�文件路径é�™æ€�文件é�™æ€�文件 (%(num_found)s 个找到,%(num_used)s 个被使用)摘è¦�系统 CPU 时间模æ�¿æ¨¡æ�¿è·¯å¾„模æ�¿æº�:模æ�¿æ¨¡æ�¿ (%(num_templates)s 个被渲染)Django Debug Toolbar 为了调试目的拦截了一个é‡�定å�‘到上é�¢ URL 的请求。 您å�¯ä»¥ç‚¹å‡»ä¸Šé�¢çš„链接继续执行é‡�定å�‘æ“�作。时间导航开始å�Žçš„æ—¶é—´ (+æŒ�ç»­æ—¶é—´)时间线计时属性切æ�¢ä¸Šä¸‹æ–‡è°ƒç”¨è¯¥å‡½æ•°èŠ±è´¹çš„æ€»æ—¶é—´æ€»çš„ CPU 时间总调用次数总耗时总共:%0.2f 毫秒事务状æ€�:类型URL å��称未知用户 CPU 时间值å�˜é‡�版本版本View 函数View ä¿¡æ�¯WSGI 环境å�˜é‡�python-django-debug-toolbar-8.0.0/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.po000066400000000000000000000423351524561404200274750ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # # Translators: # mozillazg , 2013-2014 msgid "" msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-06 07:12-0500\n" "PO-Revision-Date: 2010-11-30 00:00+0000\n" "Last-Translator: mozillazg , 2013-2014\n" "Language-Team: Chinese (China) (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:18 msgid "Debug Toolbar" msgstr "Debug Toolbar" #: panels/alerts.py:67 #, python-brace-format msgid "" "Form with id \"{form_id}\" contains file input, but does not have the " "attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:70 msgid "" "Form contains file input, but does not have the attribute " "enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:73 #, python-brace-format msgid "" "Input element references form with id \"{form_id}\", but the form does not " "have the attribute enctype=\"multipart/form-data\"." msgstr "" #: panels/alerts.py:77 msgid "Alerts" msgstr "" #: panels/cache.py:168 msgid "Cache" msgstr "缓存" #: panels/cache.py:174 #, python-format msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(time).2f 毫秒内 %(cache_calls)d 次调用" #: panels/cache.py:183 #, python-format msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "æ�¥è‡ª %(count)d 个å�Žç«¯çš„缓存调用" #: panels/headers.py:31 msgid "Headers" msgstr "HTTP 头" #: panels/history/panel.py:19 panels/history/panel.py:20 msgid "History" msgstr "" #: panels/profiling.py:140 msgid "Profiling" msgstr "性能分æž�" #: panels/redirects.py:17 msgid "Intercept redirects" msgstr "拦截é‡�定å�‘" #: panels/request.py:16 msgid "Request" msgstr "请求" #: panels/request.py:38 msgid "" msgstr "<没有 view>" #: panels/request.py:55 msgid "" msgstr "<ä¸�å�¯ç”¨>" #: panels/settings.py:17 msgid "Settings" msgstr "设置" #: panels/settings.py:20 #, python-format msgid "Settings from %s" msgstr "" #: panels/signals.py:57 #, python-format msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "1个信å�· %(num_receivers)d 个接收者" #: panels/signals.py:62 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" msgstr[0] "%(num_signals)d 个信å�· %(num_receivers)d 个接收者" #: panels/signals.py:67 msgid "Signals" msgstr "ä¿¡å�·" #: panels/sql/panel.py:30 panels/sql/panel.py:41 msgid "Read uncommitted" msgstr "读å�–未æ��交的" #: panels/sql/panel.py:31 panels/sql/panel.py:43 msgid "Read committed" msgstr "读å�–å·²æ��交的" #: panels/sql/panel.py:32 panels/sql/panel.py:45 msgid "Repeatable read" msgstr "å�¯é‡�å¤�读å�–" #: panels/sql/panel.py:33 panels/sql/panel.py:47 msgid "Serializable" msgstr "å�¯åº�列化" #: panels/sql/panel.py:39 msgid "Autocommit" msgstr "自动æ��交" #: panels/sql/panel.py:61 panels/sql/panel.py:71 msgid "Idle" msgstr "空闲" #: panels/sql/panel.py:62 panels/sql/panel.py:72 msgid "Active" msgstr "活跃" #: panels/sql/panel.py:63 panels/sql/panel.py:73 msgid "In transaction" msgstr "事务" #: panels/sql/panel.py:64 panels/sql/panel.py:74 msgid "In error" msgstr "错误" #: panels/sql/panel.py:65 panels/sql/panel.py:75 msgid "Unknown" msgstr "未知" #: panels/sql/panel.py:162 msgid "SQL" msgstr "SQL" #: panels/sql/panel.py:168 #, python-format msgid "%(query_count)d query in %(sql_time).2fms" msgid_plural "%(query_count)d queries in %(sql_time).2fms" msgstr[0] "" #: panels/sql/panel.py:180 #, python-format msgid "SQL queries from %(count)d connection" msgid_plural "SQL queries from %(count)d connections" msgstr[0] "" #: panels/staticfiles.py:82 #, python-format msgid "Static files (%(num_found)s found, %(num_used)s used)" msgstr "é�™æ€�文件 (%(num_found)s 个找到,%(num_used)s 个被使用)" #: panels/staticfiles.py:103 msgid "Static files" msgstr "é�™æ€�文件" #: panels/staticfiles.py:109 #, python-format msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s 个文件被使用" #: panels/templates/panel.py:101 msgid "Templates" msgstr "模æ�¿" #: panels/templates/panel.py:106 #, python-format msgid "Templates (%(num_templates)s rendered)" msgstr "模æ�¿ (%(num_templates)s 个被渲染)" #: panels/templates/panel.py:195 msgid "No origin" msgstr "" #: panels/timer.py:27 #, python-format msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" msgstr "CPU: %(cum)0.2f 毫秒 (总耗时: %(total)0.2f 毫秒)" #: panels/timer.py:32 #, python-format msgid "Total: %0.2fms" msgstr "总共:%0.2f 毫秒" #: panels/timer.py:38 templates/debug_toolbar/panels/cache.html:43 #: templates/debug_toolbar/panels/history.html:9 #: templates/debug_toolbar/panels/sql.html:36 #: templates/debug_toolbar/panels/sql_explain.html:11 #: templates/debug_toolbar/panels/sql_profile.html:12 #: templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "æ—¶é—´" #: panels/timer.py:46 msgid "User CPU time" msgstr "用户 CPU æ—¶é—´" #: panels/timer.py:46 #, python-format msgid "%(utime)0.3f ms" msgstr "%(utime)0.3f 毫秒" #: panels/timer.py:47 msgid "System CPU time" msgstr "系统 CPU æ—¶é—´" #: panels/timer.py:47 #, python-format msgid "%(stime)0.3f ms" msgstr "%(stime)0.3f 毫秒" #: panels/timer.py:48 msgid "Total CPU time" msgstr "总的 CPU æ—¶é—´" #: panels/timer.py:48 #, python-format msgid "%(total)0.3f ms" msgstr "%(total)0.3f 毫秒" #: panels/timer.py:49 msgid "Elapsed time" msgstr "耗时" #: panels/timer.py:49 #, python-format msgid "%(total_time)0.3f ms" msgstr "%(total_time)0.3f 毫秒" #: panels/timer.py:51 msgid "Context switches" msgstr "上下文切æ�¢" #: panels/timer.py:52 #, python-format msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" msgstr "%(vcsw)d 主动, %(ivcsw)d 被动" #: panels/versions.py:19 msgid "Versions" msgstr "版本" #: templates/debug_toolbar/base.html:23 msgid "Hide toolbar" msgstr "éš�è—�工具æ �" #: templates/debug_toolbar/base.html:23 msgid "Hide" msgstr "éš�è—�" #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26 msgid "Toggle Theme" msgstr "" #: templates/debug_toolbar/base.html:35 msgid "Show toolbar" msgstr "显示工具æ �" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Disable for next and successive requests" msgstr "针对下一个连续的请求ç¦�用该功能" #: templates/debug_toolbar/includes/panel_button.html:4 msgid "Enable for next and successive requests" msgstr "针对下一个连续的请求å�¯ç”¨è¯¥åŠŸèƒ½" #: templates/debug_toolbar/panels/alerts.html:4 msgid "Alerts found" msgstr "" #: templates/debug_toolbar/panels/alerts.html:11 msgid "No alerts found" msgstr "" #: templates/debug_toolbar/panels/cache.html:2 msgid "Summary" msgstr "摘è¦�" #: templates/debug_toolbar/panels/cache.html:6 msgid "Total calls" msgstr "总调用次数" #: templates/debug_toolbar/panels/cache.html:7 msgid "Total time" msgstr "总耗时" #: templates/debug_toolbar/panels/cache.html:8 msgid "Cache hits" msgstr "缓存命中" #: templates/debug_toolbar/panels/cache.html:9 msgid "Cache misses" msgstr "缓存未命中" #: templates/debug_toolbar/panels/cache.html:21 msgid "Commands" msgstr "命令" #: templates/debug_toolbar/panels/cache.html:39 msgid "Calls" msgstr "调用" #: templates/debug_toolbar/panels/cache.html:44 msgid "Type" msgstr "类型" #: templates/debug_toolbar/panels/cache.html:45 #: templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "å�‚æ•°" #: templates/debug_toolbar/panels/cache.html:46 #: templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "关键字å�‚æ•°" #: templates/debug_toolbar/panels/cache.html:47 msgid "Backend" msgstr "å�Žç«¯" #: templates/debug_toolbar/panels/headers.html:3 msgid "Request headers" msgstr "请求头" #: templates/debug_toolbar/panels/headers.html:8 #: templates/debug_toolbar/panels/headers.html:27 #: templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "é”®" #: templates/debug_toolbar/panels/headers.html:9 #: templates/debug_toolbar/panels/headers.html:28 #: templates/debug_toolbar/panels/headers.html:49 #: templates/debug_toolbar/panels/history_tr.html:23 #: templates/debug_toolbar/panels/request_variables.html:12 #: templates/debug_toolbar/panels/settings.html:6 #: templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "值" #: templates/debug_toolbar/panels/headers.html:22 msgid "Response headers" msgstr "å“�应头" #: templates/debug_toolbar/panels/headers.html:41 msgid "WSGI environ" msgstr "WSGI 环境å�˜é‡�" #: templates/debug_toolbar/panels/headers.html:43 msgid "" "Since the WSGI environ inherits the environment of the server, only a " "significant subset is shown below." msgstr "由于 WSGI 的环境å�˜é‡�继承自 server,所以下é�¢å�ªæ˜¾ç¤ºäº†ä¸€äº›é‡�è¦�çš„å­�集。" #: templates/debug_toolbar/panels/history.html:10 msgid "Method" msgstr "" #: templates/debug_toolbar/panels/history.html:11 #: templates/debug_toolbar/panels/staticfiles.html:43 msgid "Path" msgstr "路径" #: templates/debug_toolbar/panels/history.html:12 msgid "Request Variables" msgstr "" #: templates/debug_toolbar/panels/history.html:13 msgid "Status" msgstr "" #: templates/debug_toolbar/panels/history.html:14 #: templates/debug_toolbar/panels/sql.html:37 msgid "Action" msgstr "功能" #: templates/debug_toolbar/panels/history_tr.html:22 #: templates/debug_toolbar/panels/request_variables.html:11 msgid "Variable" msgstr "å�˜é‡�" #: templates/debug_toolbar/panels/profiling.html:5 msgid "Call" msgstr "调用" #: templates/debug_toolbar/panels/profiling.html:6 msgid "CumTime" msgstr "调用该函数å�Šå…¶å†…部调用其他函数花费的总时间" #: templates/debug_toolbar/panels/profiling.html:7 #: templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "å¹³å�‡æ¯�次调用花费的时间" #: templates/debug_toolbar/panels/profiling.html:8 msgid "TotTime" msgstr "调用该函数花费的总时间" #: templates/debug_toolbar/panels/profiling.html:10 msgid "Count" msgstr "总的调用次数" #: templates/debug_toolbar/panels/request.html:3 msgid "View information" msgstr "View ä¿¡æ�¯" #: templates/debug_toolbar/panels/request.html:7 msgid "View function" msgstr "View 函数" #: templates/debug_toolbar/panels/request.html:10 msgid "URL name" msgstr "URL å��ç§°" #: templates/debug_toolbar/panels/request.html:24 msgid "Cookies" msgstr "Cookies" #: templates/debug_toolbar/panels/request.html:27 msgid "No cookies" msgstr "没有 cookies" #: templates/debug_toolbar/panels/request.html:31 msgid "Session data" msgstr "Session æ•°æ�®" #: templates/debug_toolbar/panels/request.html:34 msgid "No session data" msgstr "没有 session æ•°æ�®" #: templates/debug_toolbar/panels/request.html:38 msgid "GET data" msgstr "GET 请求数æ�®" #: templates/debug_toolbar/panels/request.html:41 msgid "No GET data" msgstr "没有 GET 请求数æ�®" #: templates/debug_toolbar/panels/request.html:45 msgid "POST data" msgstr "POST 请求数æ�®" #: templates/debug_toolbar/panels/request.html:48 msgid "No POST data" msgstr "没有 POST 请求数æ�®" #: templates/debug_toolbar/panels/settings.html:5 msgid "Setting" msgstr "设置项" #: templates/debug_toolbar/panels/signals.html:5 msgid "Signal" msgstr "ä¿¡å�·" #: templates/debug_toolbar/panels/signals.html:6 msgid "Receivers" msgstr "接收者" #: templates/debug_toolbar/panels/sql.html:6 #, python-format msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s 个查询" #: templates/debug_toolbar/panels/sql.html:8 #, python-format msgid "" "including %(count)s similar" msgstr "" #: templates/debug_toolbar/panels/sql.html:12 #, python-format msgid "" "and %(dupes)s duplicates" msgstr "" #: templates/debug_toolbar/panels/sql.html:34 msgid "Query" msgstr "查询" #: templates/debug_toolbar/panels/sql.html:35 #: templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "时间线" #: templates/debug_toolbar/panels/sql.html:52 #, python-format msgid "%(count)s similar queries." msgstr "" #: templates/debug_toolbar/panels/sql.html:58 #, python-format msgid "Duplicated %(dupes)s times." msgstr "" #: templates/debug_toolbar/panels/sql.html:95 msgid "Connection:" msgstr "连接:" #: templates/debug_toolbar/panels/sql.html:97 msgid "Isolation level:" msgstr "隔离级别" #: templates/debug_toolbar/panels/sql.html:100 msgid "Transaction status:" msgstr "事务状æ€�:" #: templates/debug_toolbar/panels/sql.html:114 msgid "(unknown)" msgstr "(未知)" #: templates/debug_toolbar/panels/sql.html:123 msgid "No SQL queries were recorded during this request." msgstr "在处ç�†è¿™ä¸ªè¯·æ±‚期间没有记录到 SQL 查询。" #: templates/debug_toolbar/panels/sql_explain.html:4 msgid "SQL explained" msgstr "SQL explain 分æž�" #: templates/debug_toolbar/panels/sql_explain.html:9 #: templates/debug_toolbar/panels/sql_profile.html:10 #: templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "执行的 SQL 语å�¥" #: templates/debug_toolbar/panels/sql_explain.html:13 #: templates/debug_toolbar/panels/sql_profile.html:14 #: templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "æ•°æ�®åº“" #: templates/debug_toolbar/panels/sql_profile.html:4 msgid "SQL profiled" msgstr "SQL 性能分æž�" #: templates/debug_toolbar/panels/sql_profile.html:37 msgid "Error" msgstr "错误" #: templates/debug_toolbar/panels/sql_select.html:4 msgid "SQL selected" msgstr "选中的 SQL 语å�¥" #: templates/debug_toolbar/panels/sql_select.html:36 msgid "Empty set" msgstr "空集å�ˆ" #: templates/debug_toolbar/panels/staticfiles.html:3 msgid "Static file path" msgid_plural "Static file paths" msgstr[0] "é�™æ€�文件路径" #: templates/debug_toolbar/panels/staticfiles.html:7 #, python-format msgid "(prefix %(prefix)s)" msgstr "(å‰�ç¼€ %(prefix)s)" #: templates/debug_toolbar/panels/staticfiles.html:11 #: templates/debug_toolbar/panels/staticfiles.html:22 #: templates/debug_toolbar/panels/staticfiles.html:34 #: templates/debug_toolbar/panels/templates.html:10 #: templates/debug_toolbar/panels/templates.html:30 #: templates/debug_toolbar/panels/templates.html:47 msgid "None" msgstr "空" #: templates/debug_toolbar/panels/staticfiles.html:14 msgid "Static file app" msgid_plural "Static file apps" msgstr[0] "包å�«é�™æ€�文件的应用" #: templates/debug_toolbar/panels/staticfiles.html:25 msgid "Static file" msgid_plural "Static files" msgstr[0] "é�™æ€�文件" #: templates/debug_toolbar/panels/staticfiles.html:39 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s 个文件" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Location" msgstr "ä½�ç½®" #: templates/debug_toolbar/panels/template_source.html:4 msgid "Template source:" msgstr "模æ�¿æº�:" #: templates/debug_toolbar/panels/templates.html:2 msgid "Template path" msgid_plural "Template paths" msgstr[0] "模æ�¿è·¯å¾„" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "模æ�¿" #: templates/debug_toolbar/panels/templates.html:22 #: templates/debug_toolbar/panels/templates.html:40 msgid "Toggle context" msgstr "切æ�¢ä¸Šä¸‹æ–‡" #: templates/debug_toolbar/panels/templates.html:33 msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Context processors" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" msgstr "资æº�使用" #: templates/debug_toolbar/panels/timer.html:10 msgid "Resource" msgstr "资æº�" #: templates/debug_toolbar/panels/timer.html:26 msgid "Browser timing" msgstr "æµ�览器计时" #: templates/debug_toolbar/panels/timer.html:35 msgid "Timing attribute" msgstr "计时属性" #: templates/debug_toolbar/panels/timer.html:37 msgid "Time since navigation start (+duration)" msgstr "导航开始å�Žçš„æ—¶é—´ (+æŒ�ç»­æ—¶é—´)" #: templates/debug_toolbar/panels/versions.html:10 msgid "Package" msgstr "" #: templates/debug_toolbar/panels/versions.html:11 msgid "Name" msgstr "å��ç§°" #: templates/debug_toolbar/panels/versions.html:12 msgid "Version" msgstr "版本" #: templates/debug_toolbar/redirect.html:10 msgid "Location:" msgstr "ä½�置:" #: templates/debug_toolbar/redirect.html:12 msgid "" "The Django Debug Toolbar has intercepted a redirect to the above URL for " "debug viewing purposes. You can click the above link to continue with the " "redirect as normal." msgstr "Django Debug Toolbar 为了调试目的拦截了一个é‡�定å�‘到上é�¢ URL 的请求。 您å�¯ä»¥ç‚¹å‡»ä¸Šé�¢çš„链接继续执行é‡�定å�‘æ“�作。" #: views.py:16 msgid "" "Data for this panel isn't available anymore. Please reload the page and " "retry." msgstr "当å‰�é�¢æ�¿çš„æ•°æ�®æš‚ä¸�å�¯ç”¨ã€‚请刷新页é�¢å¹¶é‡�试。" python-django-debug-toolbar-8.0.0/debug_toolbar/management/000077500000000000000000000000001524561404200237535ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/management/__init__.py000066400000000000000000000000001524561404200260520ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/management/commands/000077500000000000000000000000001524561404200255545ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/management/commands/__init__.py000066400000000000000000000000001524561404200276530ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/management/commands/debugsqlshell.py000066400000000000000000000020361524561404200307650ustar00rootroot00000000000000from time import perf_counter import sqlparse from django.core.management.commands.shell import Command from django.db import connection if connection.vendor == "postgresql": from django.db.backends.postgresql import base as base_module else: from django.db.backends import utils as base_module # 'debugsqlshell' is the same as the 'shell'. # Command is required to exist to be loaded via # django.core.managementload_command_class __all__ = ["Command", "PrintQueryWrapper"] class PrintQueryWrapper(base_module.CursorDebugWrapper): def execute(self, sql, params=()): start_time = perf_counter() try: return self.cursor.execute(sql, params) finally: raw_sql = self.db.ops.last_executed_query(self.cursor, sql, params) end_time = perf_counter() duration = (end_time - start_time) * 1000 formatted_sql = sqlparse.format(raw_sql, reindent=True) print(f"{formatted_sql} [{duration:.2f}ms]") base_module.CursorDebugWrapper = PrintQueryWrapper python-django-debug-toolbar-8.0.0/debug_toolbar/middleware.py000066400000000000000000000207001524561404200243250ustar00rootroot00000000000000""" Debug Toolbar middleware """ import re import socket from collections.abc import Callable from functools import cache from asgiref.sync import ( async_to_sync, iscoroutinefunction, markcoroutinefunction, sync_to_async, ) from django.conf import settings from django.http import HttpRequest, HttpResponse from django.utils.module_loading import import_string from debug_toolbar import settings as dt_settings from debug_toolbar._stubs import GetResponse from debug_toolbar.panels import Panel from debug_toolbar.toolbar import DebugToolbar from debug_toolbar.utils import clear_stack_trace_caches, is_processable_html_response _HTML_TYPES = ("text/html", "application/xhtml+xml") def show_toolbar(request: HttpRequest) -> bool: """ Default function to determine whether to show the toolbar on a given page. """ if not settings.DEBUG: return False # Test: settings return request.META.get("REMOTE_ADDR") in settings.INTERNAL_IPS def show_toolbar_with_docker(request: HttpRequest) -> bool: """ Default function to determine whether to show the toolbar on a given page. """ if not settings.DEBUG: return False if request.META.get("REMOTE_ADDR") in settings.INTERNAL_IPS: return True try: # This is a hack for docker installations. It attempts to look # up the IP address of the docker host. # This is not guaranteed to work. docker_ip = ( # Convert the last segment of the IP address to be .1 ".".join(socket.gethostbyname("host.docker.internal").rsplit(".")[:-1]) + ".1" ) if request.META.get("REMOTE_ADDR") == docker_ip: return True except socket.gaierror: # It's fine if the lookup errored since they may not be using docker pass # Some Docker runtimes (for example OrbStack) resolve host.docker.internal # to an address that is unrelated to the container network, so the check # above cannot derive the host address from it. try: # Make a reasonable guess at the gateway from the container's own # interface. This assumes the process is running inside a container. # If this were used outside a container this would grant access to # anything that appears to come from the network's gateway (router). container_ips = socket.gethostbyname_ex(socket.gethostname())[2] gateways = {ip.rsplit(".", 1)[0] + ".1" for ip in container_ips} if request.META.get("REMOTE_ADDR") in gateways: return True except socket.gaierror: # It's fine if the lookup errored since they may not be using docker pass return False @cache def show_toolbar_func_or_path() -> Callable: """ Fetch the show toolbar callback from settings Cached to avoid importing multiple times. """ # If SHOW_TOOLBAR_CALLBACK is a string, which is the recommended # setup, resolve it to the corresponding callable. func_or_path = dt_settings.get_config()["SHOW_TOOLBAR_CALLBACK"] if isinstance(func_or_path, str): return import_string(func_or_path) else: return func_or_path def get_show_toolbar(async_mode) -> Callable: """ Get the callback function to show the toolbar. Will wrap the function with sync_to_async or async_to_sync depending on the status of async_mode and whether the underlying function is a coroutine. """ show_toolbar = show_toolbar_func_or_path() is_coroutine = iscoroutinefunction(show_toolbar) if is_coroutine and not async_mode: show_toolbar = async_to_sync(show_toolbar) elif not is_coroutine and async_mode: show_toolbar = sync_to_async(show_toolbar) return show_toolbar class DebugToolbarMiddleware: """ Middleware to set up Debug Toolbar on incoming request and render toolbar on outgoing response. """ sync_capable = True async_capable = True def __init__(self, get_response: GetResponse): self.get_response = get_response # If get_response is a coroutine function, turns us into async mode so # a thread is not consumed during a whole request. self.async_mode = iscoroutinefunction(self.get_response) if self.async_mode: # Mark the class as async-capable, but do the actual switch inside # __call__ to avoid swapping out dunder methods. markcoroutinefunction(self) def __call__(self, request: HttpRequest) -> HttpResponse: if self.async_mode: return self.__acall__(request) # Decide whether the toolbar is active for this request. show_toolbar = get_show_toolbar(async_mode=self.async_mode) if not show_toolbar(request) or DebugToolbar.is_toolbar_request(request): return self.get_response(request) toolbar = DebugToolbar(request, self.get_response) # Activate instrumentation ie. monkey-patch. for panel in toolbar.enabled_panels: panel.enable_instrumentation() try: # Run panels like Django middleware. response = toolbar.process_request(request) finally: clear_stack_trace_caches() # Deactivate instrumentation ie. monkey-unpatch. This must run # regardless of the response. Keep 'return' clauses below. for panel in reversed(toolbar.enabled_panels): panel.disable_instrumentation() return self._postprocess(request, response, toolbar) async def __acall__(self, request: HttpRequest) -> HttpResponse: # Decide whether the toolbar is active for this request. show_toolbar = get_show_toolbar(async_mode=self.async_mode) if not await show_toolbar(request) or DebugToolbar.is_toolbar_request(request): response = await self.get_response(request) return response toolbar = DebugToolbar(request, self.get_response) # Activate instrumentation ie. monkey-patch. for panel in toolbar.enabled_panels: if hasattr(panel, "aenable_instrumentation"): await panel.aenable_instrumentation() else: panel.enable_instrumentation() try: # Run panels like Django middleware. response = await toolbar.process_request(request) finally: clear_stack_trace_caches() # Deactivate instrumentation ie. monkey-unpatch. This must run # regardless of the response. Keep 'return' clauses below. for panel in reversed(toolbar.enabled_panels): panel.disable_instrumentation() return self._postprocess(request, response, toolbar) def _postprocess( self, request: HttpRequest, response: HttpResponse, toolbar: DebugToolbar ) -> HttpResponse: """ Post-process the response. """ # Generate the stats for all requests when the toolbar is being shown, # but not necessarily inserted. for panel in reversed(toolbar.enabled_panels): panel.generate_stats(request, response) panel.generate_server_timing(request, response) # Always render the toolbar for the history panel, even if it is not # included in the response. rendered = toolbar.render_toolbar() for header, value in self.get_headers(request, toolbar.enabled_panels).items(): response.headers[header] = value # Check for responses where the toolbar can't be inserted. if not is_processable_html_response(response): return response # Insert the toolbar in the response. content = response.content.decode(response.charset) insert_before = dt_settings.get_config()["INSERT_BEFORE"] pattern = re.escape(insert_before) bits = re.split(pattern, content, flags=re.IGNORECASE) if len(bits) > 1: bits[-2] += rendered response.content = insert_before.join(bits) if "Content-Length" in response: response["Content-Length"] = len(response.content) return response @staticmethod def get_headers(request: HttpRequest, panels: list[Panel]) -> dict[str, str]: headers = {} for panel in panels: for header, value in panel.get_headers(request).items(): if header in headers: headers[header] += f", {value}" else: headers[header] = value return headers python-django-debug-toolbar-8.0.0/debug_toolbar/migrations/000077500000000000000000000000001524561404200240135ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/migrations/0001_initial.py000066400000000000000000000012771524561404200264650ustar00rootroot00000000000000from django.db import migrations, models class Migration(migrations.Migration): initial = True operations = [ migrations.CreateModel( name="HistoryEntry", fields=[ ( "request_id", models.UUIDField(primary_key=True, serialize=False), ), ("data", models.JSONField(default=dict)), ("created_at", models.DateTimeField(auto_now_add=True)), ], options={ "verbose_name": "history entry", "verbose_name_plural": "history entries", "ordering": ["-created_at"], }, ), ] python-django-debug-toolbar-8.0.0/debug_toolbar/migrations/__init__.py000066400000000000000000000000001524561404200261120ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/models.py000066400000000000000000000007341524561404200235000ustar00rootroot00000000000000from django.db import models from django.utils.translation import gettext_lazy as _ class HistoryEntry(models.Model): request_id = models.UUIDField(primary_key=True) data = models.JSONField(default=dict) created_at = models.DateTimeField(auto_now_add=True) class Meta: verbose_name = _("history entry") verbose_name_plural = _("history entries") ordering = ["-created_at"] def __str__(self): return str(self.request_id) python-django-debug-toolbar-8.0.0/debug_toolbar/panels/000077500000000000000000000000001524561404200231215ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/panels/__init__.py000066400000000000000000000233171524561404200252400ustar00rootroot00000000000000from django.core.handlers.asgi import ASGIRequest from django.template.loader import render_to_string from django.utils.functional import classproperty from debug_toolbar import settings as dt_settings from debug_toolbar._stubs import GetResponse from debug_toolbar.utils import get_name_from_obj class Panel: """ Base class for panels. """ is_async = False def __init__(self, toolbar, get_response: GetResponse): self.toolbar = toolbar self.get_response = get_response self.from_store = False # Private panel properties @classproperty def panel_id(cls) -> str: return cls.__name__ @property def enabled(self) -> bool: # Check if the panel is async compatible if not self.is_async and isinstance(self.toolbar.request, ASGIRequest): return False if self.from_store: # If the toolbar was loaded from the store the existence of # recorded data indicates whether it was enabled or not. # We can't use the remainder of the logic since we don't have # a request to work off of. return bool(self.get_stats()) # The user's cookies should override the default value cookie_value = self.toolbar.request.COOKIES.get("djdt" + self.panel_id) if cookie_value is not None: return cookie_value == "on" # Check to see if settings has a default value for it disabled_panels = dt_settings.get_config()["DISABLE_PANELS"] panel_path = get_name_from_obj(self) # Some panels such as the SQLPanel and TemplatesPanel exist in a # panel module, but can be disabled without panel in the path. # For that reason, replace .panel. in the path and check for that # value in the disabled panels as well. return ( panel_path not in disabled_panels and panel_path.replace(".panel.", ".") not in disabled_panels ) # Titles and content nav_icon = None """ Optional static path to an icon shown next to :attr:`nav_title` in the side bar, e.g. ``"debug_toolbar/img/history.svg"``. Defaults to ``None`` (no icon). """ @property def nav_title(self): """ Title shown in the side bar. Defaults to :attr:`title`. """ return self.title @property def nav_subtitle(self): """ Subtitle shown in the side bar. Defaults to the empty string. """ return "" @property def has_content(self): """ ``True`` if the panel can be displayed in full screen, ``False`` if it's only shown in the side bar. Defaults to ``True``. """ return True @property def is_historical(self): """ Panel supports rendering historical values. Defaults to :attr:`has_content`. """ return self.has_content @property def title(self): """ Title shown in the panel when it's displayed in full screen. Mandatory, unless the panel sets :attr:`has_content` to ``False``. """ raise NotImplementedError @property def title_bar(self): """ Optional extra HTML rendered in the panel's title bar, next to the :attr:`title`. Useful for panel-specific controls such as buttons. Defaults to the empty string (nothing extra). """ return "" @property def template(self): """ Template used to render :attr:`content`. Mandatory, unless the panel sets :attr:`has_content` to ``False`` or overrides :attr:`content`. """ raise NotImplementedError @property def content(self): """ Content of the panel when it's displayed in full screen. By default this renders the template defined by :attr:`template`. Statistics stored with :meth:`record_stats` are available in the template's context. """ if self.has_content: return render_to_string(self.template, self.get_stats()) @property def scripts(self): """ Scripts used by the HTML content of the panel when it's displayed. When a panel is rendered on the frontend, the ``djdt.panel.render`` JavaScript event will be dispatched. The scripts can listen for this event to support dynamic functionality. """ return [] # Panel early initialization @classmethod def ready(cls): """ Perform early initialization for the panel. This should only include initialization or instrumentation that needs to be done unconditionally for the panel regardless of whether it is enabled for a particular request. It should be idempotent. """ # URLs for panel-specific views @classmethod def get_urls(cls): """ Return URLpatterns, if the panel has its own views. """ return [] # Enable and disable (expensive) instrumentation, must be idempotent def enable_instrumentation(self): """ Enable instrumentation to gather data for this panel. This usually means monkey-patching (!) or registering signal receivers. Any instrumentation with a non-negligible effect on performance should be installed by this method rather than at import time. Unless the toolbar or this panel is disabled, this method will be called early in ``DebugToolbarMiddleware``. It should be idempotent. Add the ``aenable_instrumentation`` method to a panel subclass to support async logic for instrumentation. """ def disable_instrumentation(self): """ Disable instrumentation to gather data for this panel. This is the opposite of :meth:`enable_instrumentation`. Unless the toolbar or this panel is disabled, this method will be called late in the middleware. It should be idempotent. """ # Store and retrieve stats (shared between panels for no good reason) def record_stats(self, stats): """ Store data gathered by the panel. ``stats`` is a :class:`dict`. Each call to ``record_stats`` updates the store's data for the panel. To support backwards compatibility, it will also update the panel's statistics dictionary. """ self.toolbar.stats.setdefault(self.panel_id, {}).update(stats) self.toolbar.store.save_panel( self.toolbar.request_id, self.panel_id, self.toolbar.stats[self.panel_id] ) def get_stats(self): """ Access data stored by the panel. Returns a :class:`dict`. """ return self.toolbar.stats.get(self.panel_id, {}) def record_server_timing(self, key, title, value): """ Store data gathered by the panel. ``stats`` is a :class:`dict`. Each call to ``record_stats`` updates the statistics dictionary. """ data = {key: {"title": title, "value": value}} self.toolbar.server_timing_stats.setdefault(self.panel_id, {}).update(data) def get_server_timing_stats(self): """ Access data stored by the panel. Returns a :class:`dict`. """ return self.toolbar.server_timing_stats.get(self.panel_id, {}) # Standard middleware methods def process_request(self, request): """ Like __call__ in Django's middleware. Write panel logic related to the request there. Save data with :meth:`record_stats`. Return the existing response or overwrite it. """ return self.get_response(request) def get_headers(self, request): """ Get headers the panel needs to set. Called after :meth:`process_request ` and :meth:`process_request` Header values will be appended if multiple panels need to set it. By default it sets the Server-Timing header. Return dict of headers to be appended. """ headers = {} stats = self.get_server_timing_stats() if stats: headers["Server-Timing"] = ", ".join( # example: `SQLPanel_sql_time;dur=0;desc="SQL 0 queries"` '{}_{};dur={};desc="{}"'.format( self.panel_id, key, record.get("value"), record.get("title") ) for key, record in stats.items() ) return headers def generate_stats(self, request, response): """ Write panel logic related to the response there. Post-process data gathered while the view executed. Save data with :meth:`record_stats`. Called after :meth:`process_request `. Does not return a value. """ def generate_server_timing(self, request, response): """ Similar to :meth:`generate_stats `, Generate stats for Server Timing https://w3c.github.io/server-timing/ Does not return a value. """ def load_stats_from_store(self, data): """ Instantiate the panel from serialized data. Return the panel instance. """ self.toolbar.stats.setdefault(self.panel_id, {}).update(data) self.from_store = True @classmethod def run_checks(cls): """ Check that the integration is configured correctly for the panel. This will be called as a part of the Django checks system when the application is being setup. Return a list of :class:`django.core.checks.CheckMessage` instances. """ return [] python-django-debug-toolbar-8.0.0/debug_toolbar/panels/alerts.py000066400000000000000000000121171524561404200247670ustar00rootroot00000000000000from html.parser import HTMLParser from django.utils.translation import gettext_lazy as _ from debug_toolbar.panels import Panel from debug_toolbar.utils import is_processable_html_response class FormParser(HTMLParser): """ HTML form parser, used to check for invalid configurations of forms that take file inputs. """ def __init__(self): super().__init__() self.in_form = False self.current_form = {} self.forms = [] self.form_ids = [] self.referenced_file_inputs = [] def handle_starttag(self, tag, attrs): attrs = dict(attrs) if tag == "form": self.in_form = True form_id = attrs.get("id") if form_id: self.form_ids.append(form_id) self.current_form = { "file_form": False, "form_attrs": attrs, "submit_element_attrs": [], } elif ( self.in_form and tag == "input" and attrs.get("type") == "file" and (not attrs.get("form") or attrs.get("form") == "") ): self.current_form["file_form"] = True elif ( self.in_form and ( (tag == "input" and attrs.get("type") in {"submit", "image"}) or tag == "button" ) and (not attrs.get("form") or attrs.get("form") == "") ): self.current_form["submit_element_attrs"].append(attrs) elif tag == "input" and attrs.get("form"): self.referenced_file_inputs.append(attrs) def handle_endtag(self, tag): if tag == "form" and self.in_form: self.forms.append(self.current_form) self.in_form = False class AlertsPanel(Panel): """ A panel to alert users to issues. """ messages = { "form_id_missing_enctype": _( 'Form with id "{form_id}" contains file input, but does not have the attribute enctype="multipart/form-data".' ), "form_missing_enctype": _( 'Form contains file input, but does not have the attribute enctype="multipart/form-data".' ), "input_refs_form_missing_enctype": _( 'Input element references form with id "{form_id}", but the form does not have the attribute enctype="multipart/form-data".' ), } title = _("Alerts") nav_icon = "debug_toolbar/img/alerts.svg" is_async = True template = "debug_toolbar/panels/alerts.html" def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.alerts = [] @property def nav_subtitle(self): if alerts := self.get_stats().get("alerts"): alert_text = "alert" if len(alerts) == 1 else "alerts" return f"{len(alerts)} {alert_text}" else: return "" def add_alert(self, alert): self.alerts.append(alert) def check_invalid_file_form_configuration(self, html_content): """ Inspects HTML content for a form that includes a file input but does not have the encoding type set to multipart/form-data, and warns the user if so. """ parser = FormParser() parser.feed(html_content) # Check for file inputs directly inside a form that do not reference # any form through the form attribute for form in parser.forms: if ( form["file_form"] and form["form_attrs"].get("enctype") != "multipart/form-data" and not any( elem.get("formenctype") == "multipart/form-data" for elem in form["submit_element_attrs"] ) ): if form_id := form["form_attrs"].get("id"): alert = self.messages["form_id_missing_enctype"].format( form_id=form_id ) else: alert = self.messages["form_missing_enctype"] self.add_alert({"alert": alert}) # Check for file inputs that reference a form form_attrs_by_id = { form["form_attrs"].get("id"): form["form_attrs"] for form in parser.forms } for attrs in parser.referenced_file_inputs: form_id = attrs.get("form") if form_id and attrs.get("type") == "file": form_attrs = form_attrs_by_id.get(form_id) if form_attrs and form_attrs.get("enctype") != "multipart/form-data": alert = self.messages["input_refs_form_missing_enctype"].format( form_id=form_id ) self.add_alert({"alert": alert}) return self.alerts def generate_stats(self, request, response): if is_processable_html_response(response): html_content = response.content.decode(response.charset) self.check_invalid_file_form_configuration(html_content) # Further alert checks can go here # Write all alerts to record_stats self.record_stats({"alerts": self.alerts}) python-django-debug-toolbar-8.0.0/debug_toolbar/panels/cache.py000066400000000000000000000203601524561404200245370ustar00rootroot00000000000000import functools from time import perf_counter from asgiref.local import Local from django.conf import settings from django.core.cache import CacheHandler, caches from django.utils.translation import gettext_lazy as _, ngettext from debug_toolbar.panels import Panel from debug_toolbar.utils import get_stack_trace, get_template_info, render_stacktrace # The order of the methods in this list determines the order in which they are listed in # the Commands table in the panel content. WRAPPED_CACHE_METHODS = [ "add", "get", "set", "get_or_set", "touch", "delete", "clear", "get_many", "set_many", "delete_many", "has_key", "incr", "decr", "incr_version", "decr_version", ] def _monkey_patch_method(cache, name, alias): original_method = getattr(cache, name) @functools.wraps(original_method) def wrapper(*args, **kwargs): panel = cache._djdt_panel if panel is None: return original_method(*args, **kwargs) else: return panel._record_call(cache, alias, name, original_method, args, kwargs) setattr(cache, name, wrapper) def _monkey_patch_cache(cache, alias, panel): if not hasattr(cache, "_djdt_panel"): # The panel has never been monkey patched before for name in WRAPPED_CACHE_METHODS: _monkey_patch_method(cache, name, alias) if not getattr(cache, "_djdt_panel", None): # This is used for both initially monkey patching and re-enabling the # instrumentation. cache._djdt_panel = panel class CachePanel(Panel): """ Panel that displays the cache statistics. """ template = "debug_toolbar/panels/cache.html" is_async = True _context_locals = Local() def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.total_time = 0 self.hits = 0 self.misses = 0 self.calls = [] self.counts = dict.fromkeys(WRAPPED_CACHE_METHODS, 0) @classmethod def current_instance(cls): """ Return the currently enabled CachePanel instance or None. If a request is in process with a CachePanel enabled, this will return that panel (based on the current thread or async task). Otherwise it will return None. """ return getattr(cls._context_locals, "current_instance", None) @classmethod def ready(cls): if not hasattr(CacheHandler, "_djdt_patched"): # Wrap the CacheHander.create_connection() method to monkey patch any new # cache connections that are opened while instrumentation is enabled. In # the interests of thread safety, this is done once at startup time and # never removed. original_method = CacheHandler.create_connection @functools.wraps(original_method) def wrapper(self, alias): cache = original_method(self, alias) panel = cls.current_instance() if panel is not None: _monkey_patch_cache(cache, alias, panel) return cache CacheHandler.create_connection = wrapper CacheHandler._djdt_patched = True def _store_call_info( self, name, time_taken, return_value, args, kwargs, trace, template_info, backend, ): if name == "get": default = kwargs.get("default", args[1] if len(args) > 1 else None) if return_value == default: self.misses += 1 else: self.hits += 1 elif name == "get_or_set": if return_value is None: self.misses += 1 else: self.hits += 1 elif name == "get_many": keys = kwargs["keys"] if "keys" in kwargs else args[0] self.hits += len(return_value) self.misses += len(keys) - len(return_value) time_taken *= 1000 self.total_time += time_taken self.counts[name] += 1 self.calls.append( { "time": time_taken, "name": name, "args": args, "kwargs": kwargs, "trace": render_stacktrace(trace), "template_info": template_info, "backend": backend, } ) def _record_call(self, cache, alias, name, original_method, args, kwargs): # Some cache backends implement certain cache methods in terms of other cache # methods (e.g. get_or_set() in terms of get() and add()). In order to only # record the calls made directly by the user code, set the cache's _djdt_panel # attribute to None before invoking the original method, which will cause the # monkey-patched cache methods to skip recording additional calls made during # the course of this call, and then reset it back afterward. cache._djdt_panel = None try: start_time = perf_counter() value = original_method(*args, **kwargs) t = perf_counter() - start_time finally: cache._djdt_panel = self self._store_call_info( name=name, time_taken=t, return_value=value, args=args, kwargs=kwargs, trace=get_stack_trace(skip=2), template_info=get_template_info(), backend=f"{alias} ({type(cache).__name__})", ) return value # Implement the Panel API nav_title = _("Cache") nav_icon = "debug_toolbar/img/cache.svg" @property def nav_subtitle(self): stats = self.get_stats() cache_calls = len(stats.get("calls")) return ngettext( "%(cache_calls)d call in %(time).2fms", "%(cache_calls)d calls in %(time).2fms", cache_calls, ) % {"cache_calls": cache_calls, "time": stats.get("total_time")} @property def title(self): count = self.get_stats().get("total_caches") return ngettext( "Cache calls from %(count)d backend", "Cache calls from %(count)d backends", count, ) % {"count": count} def enable_instrumentation(self): # Monkey patch all open cache connections. Django maintains cache connections # on a per-thread/async task basis, so this will not affect any concurrent # requests. The monkey patch of CacheHander.create_connection() installed in # the .ready() method will ensure that any new cache connections that get opened # during this request will also be monkey patched. for cache, alias in self.initialized_caches(): _monkey_patch_cache(cache, alias, self) # Mark this panel instance as the current one for the active thread/async task # context. This will be used by the CacheHander.create_connection() monkey # patch. self._context_locals.current_instance = self def disable_instrumentation(self): if hasattr(self._context_locals, "current_instance"): del self._context_locals.current_instance for cache in caches.all(initialized_only=True): cache._djdt_panel = None def initialized_caches(self): """ Return the initialized caches and aliases. This does the same as`caches.all(initialized_only=True)`, but keeps the alias with each cache instance. """ for alias in caches: if hasattr(caches._connections, alias): yield caches[alias], alias def generate_stats(self, request, response): self.record_stats( { "total_calls": len(self.calls), "calls": self.calls, "total_time": self.total_time, "hits": self.hits, "misses": self.misses, "counts": self.counts, "total_caches": len(getattr(settings, "CACHES", ["default"])), } ) def generate_server_timing(self, request, response): stats = self.get_stats() value = stats.get("total_time", 0) title = "Cache {} Calls".format(stats.get("total_calls", 0)) self.record_server_timing("total_time", title, value) python-django-debug-toolbar-8.0.0/debug_toolbar/panels/community.py000066400000000000000000000005531524561404200255220ustar00rootroot00000000000000from django.utils.translation import gettext_lazy as _ from debug_toolbar.panels import Panel class CommunityPanel(Panel): """ A panel that provides links to the Django Debug Toolbar community. """ is_async = True template = "debug_toolbar/panels/community.html" title = _("Community") nav_icon = "debug_toolbar/img/community.svg" python-django-debug-toolbar-8.0.0/debug_toolbar/panels/headers.py000066400000000000000000000035071524561404200251130ustar00rootroot00000000000000from django.utils.translation import gettext_lazy as _ from debug_toolbar.panels import Panel class HeadersPanel(Panel): """ A panel to display HTTP headers. """ # List of environment variables we want to display ENVIRON_FILTER = { "CONTENT_LENGTH", "CONTENT_TYPE", "DJANGO_SETTINGS_MODULE", "GATEWAY_INTERFACE", "QUERY_STRING", "PATH_INFO", "PYTHONPATH", "REMOTE_ADDR", "REMOTE_HOST", "REQUEST_METHOD", "SCRIPT_NAME", "SERVER_NAME", "SERVER_PORT", "SERVER_PROTOCOL", "SERVER_SOFTWARE", "TZ", } title = _("Headers") nav_icon = "debug_toolbar/img/headers.svg" is_async = True template = "debug_toolbar/panels/headers.html" def process_request(self, request): wsgi_env = sorted(request.META.items()) self.request_headers = { unmangle(k): v for (k, v) in wsgi_env if is_http_header(k) } if "Cookie" in self.request_headers: self.request_headers["Cookie"] = "=> see Request panel" self.environ = {k: v for (k, v) in wsgi_env if k in self.ENVIRON_FILTER} self.record_stats( {"request_headers": self.request_headers, "environ": self.environ} ) return super().process_request(request) def generate_stats(self, request, response): self.response_headers = dict(sorted(response.items())) self.record_stats({"response_headers": self.response_headers}) def is_http_header(wsgi_key): # The WSGI spec says that keys should be str objects in the environ dict, # but this isn't true in practice. See issues #449 and #482. return isinstance(wsgi_key, str) and wsgi_key.startswith("HTTP_") def unmangle(wsgi_key): return wsgi_key[5:].replace("_", "-").title() python-django-debug-toolbar-8.0.0/debug_toolbar/panels/history/000077500000000000000000000000001524561404200246225ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/panels/history/__init__.py000066400000000000000000000001431524561404200267310ustar00rootroot00000000000000from debug_toolbar.panels.history.panel import HistoryPanel __all__: list[str] = ["HistoryPanel"] python-django-debug-toolbar-8.0.0/debug_toolbar/panels/history/forms.py000066400000000000000000000004711524561404200263240ustar00rootroot00000000000000from django import forms class HistoryStoreForm(forms.Form): """ Validate params request_id: The key for the store instance to be fetched. """ request_id = forms.CharField(widget=forms.HiddenInput()) exclude_history = forms.BooleanField(widget=forms.HiddenInput(), required=False) python-django-debug-toolbar-8.0.0/debug_toolbar/panels/history/panel.py000066400000000000000000000106221524561404200262740ustar00rootroot00000000000000import contextlib import json from django.http import HttpResponse, QueryDict from django.http.request import HttpRequest, RawPostDataException from django.template.loader import render_to_string from django.templatetags.static import static from django.urls import URLPattern, path from django.utils import timezone from django.utils.translation import gettext_lazy as _ from debug_toolbar.panels import Panel from debug_toolbar.panels.history import views from debug_toolbar.panels.history.forms import HistoryStoreForm class HistoryPanel(Panel): """A panel to display History""" is_async = True title = _("History") nav_title = _("History") nav_icon = "debug_toolbar/img/history.svg" template = "debug_toolbar/panels/history.html" def get_headers(self, request: HttpRequest) -> dict: headers: dict = super().get_headers(request) observe_request = self.toolbar.get_observe_request() request_id = self.toolbar.request_id if request_id and observe_request(request): headers["djdt-request-id"] = request_id return headers @property def enabled(self) -> bool: # Do not show the history panel if the panels are rendered on request # rather than loaded via ajax. return super().enabled and not self.toolbar.should_render_panels() @property def is_historical(self) -> bool: """The HistoryPanel should not be included in the historical panels.""" return False @classmethod def get_urls(cls) -> list[URLPattern]: return [ path("history_sidebar/", views.history_sidebar, name="history_sidebar"), path("history_refresh/", views.history_refresh, name="history_refresh"), ] @property def nav_subtitle(self) -> str: return self.get_stats().get("request_url", "") @property def title_bar(self) -> str: """Render the refresh control shown in the panel's title bar.""" return render_to_string( "debug_toolbar/panels/history_title_bar.html", { "refresh_form": HistoryStoreForm( initial={ "request_id": self.toolbar.request_id, "exclude_history": True, } ), }, ) def generate_stats(self, request: HttpRequest, response: HttpResponse) -> None: data: QueryDict | None = None try: if request.method == "GET": data = request.GET.copy() else: data = request.POST.copy() # GraphQL tends to not be populated in POST. If the request seems # empty, check if it's a JSON request. if ( not data and request.body and request.headers.get("content-type") == "application/json" ): with contextlib.suppress(ValueError): data = json.loads(request.body) except RawPostDataException: # It is not guaranteed that we may read the request data (again). pass self.record_stats( { "request_url": request.get_full_path(), "request_method": request.method, "status_code": response.status_code, "data": data, "time": timezone.now(), } ) @property def content(self) -> str: """Content of the panel when it's displayed in full screen. Fetch every store for the toolbar and include it in the template. """ toolbar_history: dict[str, dict] = {} for request_id in reversed(self.toolbar.store.request_ids()): toolbar_history[request_id] = { "history_stats": self.toolbar.store.panel( request_id, HistoryPanel.panel_id ), "form": HistoryStoreForm( initial={"request_id": request_id, "exclude_history": True} ), } return render_to_string( self.template, { "current_request_id": self.toolbar.request_id, "toolbar_history": toolbar_history, }, ) @property def scripts(self) -> list[str]: scripts: list[str] = super().scripts scripts.append(static("debug_toolbar/js/history.js")) return scripts python-django-debug-toolbar-8.0.0/debug_toolbar/panels/history/views.py000066400000000000000000000063051524561404200263350ustar00rootroot00000000000000from django.http import HttpRequest, HttpResponseBadRequest, JsonResponse from django.template.loader import render_to_string from debug_toolbar._compat import login_not_required from debug_toolbar.decorators import render_with_toolbar_language, require_show_toolbar from debug_toolbar.panels.history.forms import HistoryStoreForm from debug_toolbar.store import get_store from debug_toolbar.toolbar import DebugToolbar @login_not_required @require_show_toolbar @render_with_toolbar_language def history_sidebar( request: HttpRequest, ) -> HttpResponseBadRequest | JsonResponse: """Returns the selected debug toolbar history snapshot.""" form = HistoryStoreForm(request.GET) if form.is_valid(): request_id: str = form.cleaned_data["request_id"] toolbar: DebugToolbar | None = DebugToolbar.fetch(request_id) exclude_history = form.cleaned_data["exclude_history"] context: dict[str, dict[str, str]] = {} if toolbar is None: # When the request_id has been popped already due to # RESULTS_CACHE_SIZE return JsonResponse(context) for panel in toolbar.panels: if exclude_history and not panel.is_historical: continue panel_context = {"panel": panel} context[panel.panel_id] = { "button": render_to_string( "debug_toolbar/includes/panel_button.html", panel_context ), "content": render_to_string( "debug_toolbar/includes/panel_content.html", panel_context ), } return JsonResponse(context) return HttpResponseBadRequest(f"Form errors: {form.errors}") @login_not_required @require_show_toolbar @render_with_toolbar_language def history_refresh( request: HttpRequest, ) -> HttpResponseBadRequest | JsonResponse: """Returns the refreshed list of table rows for the History Panel.""" form = HistoryStoreForm(request.GET) if form.is_valid(): requests: list[dict[str, str]] = [] # Convert to list to handle mutations happening in parallel for request_id in get_store().request_ids(): toolbar = DebugToolbar.fetch(request_id) requests.append( { "id": request_id, "content": render_to_string( "debug_toolbar/panels/history_tr.html", { "request_id": request_id, "history_context": { "history_stats": toolbar.store.panel( request_id, "HistoryPanel" ), "form": HistoryStoreForm( initial={ "request_id": request_id, "exclude_history": True, } ), }, }, ), } ) return JsonResponse({"requests": requests}) return HttpResponseBadRequest("Form errors") python-django-debug-toolbar-8.0.0/debug_toolbar/panels/profiling.py000066400000000000000000000145241524561404200254720ustar00rootroot00000000000000import cProfile import os from colorsys import hsv_to_rgb from pstats import Stats from django.conf import settings from django.utils.html import format_html from django.utils.translation import gettext_lazy as _ from debug_toolbar import settings as dt_settings from debug_toolbar.panels import Panel class FunctionCall: def __init__( self, statobj, func, depth=0, stats=None, id=0, parent_ids=None, hsv=(0, 0.5, 1) ): self.statobj = statobj self.func = func if stats: self.stats = stats else: self.stats = statobj.stats[func][:4] self.depth = depth self.id = id self.parent_ids = parent_ids or [] self.hsv = hsv self.has_subfuncs = False def parent_classes(self): return self.parent_classes def background(self): r, g, b = hsv_to_rgb(*self.hsv) return f"rgb({r * 100:f}%,{g * 100:f}%,{b * 100:f}%)" def is_project_func(self): """ Check if the function is from the project code. Project code is identified by the BASE_DIR setting which is used in Django projects by default. """ if hasattr(settings, "BASE_DIR"): file_name, _, _ = self.func base_dir = str(settings.BASE_DIR) file_name = os.path.normpath(file_name) base_dir = os.path.normpath(base_dir) return file_name.startswith(base_dir) and not any( directory in file_name.split(os.path.sep) for directory in ["site-packages", "dist-packages"] ) return None def func_std_string(self): # match what old profile produced func_name = self.func if func_name[:2] == ("~", 0): # special case for built-in functions name = func_name[2] if name.startswith("<") and name.endswith(">"): return f"{{{name[1:-1]}}}" else: return name else: file_name, line_num, method = self.func idx = file_name.find("/site-packages/") if idx > -1: file_name = file_name[(idx + 14) :] split_path = file_name.rsplit(os.sep, 1) if len(split_path) > 1: file_path, file_name = file_name.rsplit(os.sep, 1) else: file_path = "" return format_html( '{0}/' '{1}' ' in {3}' '({2})', file_path, file_name, line_num, method, ) def subfuncs(self): h, s, _v = self.hsv count = len(self.statobj.all_callees[self.func]) for i, (func, stats) in enumerate(self.statobj.all_callees[self.func].items()): h1 = h + ((i + 1) / count) / (self.depth + 1) s1 = 0 if self.stats[3] == 0 else s * (stats[3] / self.stats[3]) yield FunctionCall( self.statobj, func, self.depth + 1, stats=stats, id=str(self.id) + "_" + str(i), parent_ids=self.parent_ids + [self.id], hsv=(h1, s1, 1), ) def count(self): return self.stats[1] def tottime(self): return self.stats[2] def cumtime(self): _cc, _nc, _tt, ct = self.stats return ct def tottime_per_call(self): _cc, nc, tt, _ct = self.stats try: return tt / nc except ZeroDivisionError: return 0 def cumtime_per_call(self): cc, _nc, _tt, ct = self.stats try: return ct / cc except ZeroDivisionError: return 0 def indent(self): return 16 * self.depth def serialize(self): return { "has_subfuncs": self.has_subfuncs, "id": self.id, "parent_ids": self.parent_ids, "is_project_func": self.is_project_func(), "indent": self.indent(), "func_std_string": self.func_std_string(), "cumtime": self.cumtime(), "cumtime_per_call": self.cumtime_per_call(), "tottime": self.tottime(), "tottime_per_call": self.tottime_per_call(), "count": self.count(), } class ProfilingPanel(Panel): """ Panel that displays profiling information. """ is_async = False title = _("Profiling") nav_icon = "debug_toolbar/img/profiling.svg" template = "debug_toolbar/panels/profiling.html" capture_project_code = dt_settings.get_config()["PROFILER_CAPTURE_PROJECT_CODE"] def process_request(self, request): self.profiler = cProfile.Profile() return self.profiler.runcall(super().process_request, request) def add_node(self, func_list, func, max_depth, cum_time): func_list.append(func) if func.depth < max_depth: for subfunc in func.subfuncs(): # Always include the user's code if subfunc.stats[3] >= cum_time or ( self.capture_project_code and subfunc.is_project_func() and subfunc.stats[3] > 0 ): func.has_subfuncs = True self.add_node(func_list, subfunc, max_depth, cum_time) def generate_stats(self, request, response): if not hasattr(self, "profiler"): return # Could be delayed until the panel content is requested (perf. optim.) self.profiler.create_stats() self.stats = Stats(self.profiler) self.stats.calc_callees() root_func = cProfile.label(super().process_request.__code__) if root_func in self.stats.stats: root = FunctionCall(self.stats, root_func, depth=0) func_list = [] cum_time_threshold = ( root.stats[3] / dt_settings.get_config()["PROFILER_THRESHOLD_RATIO"] ) self.add_node( func_list, root, dt_settings.get_config()["PROFILER_MAX_DEPTH"], cum_time_threshold, ) self.record_stats({"func_list": [func.serialize() for func in func_list]}) python-django-debug-toolbar-8.0.0/debug_toolbar/panels/redirects.py000066400000000000000000000050351524561404200254620ustar00rootroot00000000000000import warnings from inspect import iscoroutine from django.template.response import SimpleTemplateResponse from django.utils.translation import gettext_lazy as _ from debug_toolbar.panels import Panel class RedirectsPanel(Panel): """ Panel that intercepts redirects and displays a page with debug info. """ has_content = False is_async = True nav_title = _("Intercept redirects") nav_icon = "debug_toolbar/img/redirects.svg" def _process_response(self, response): """ Common response processing logic. """ if 300 <= response.status_code < 400 and ( redirect_to := response.get("Location") ): response = self.get_interception_response(response, redirect_to) response.render() return response async def aprocess_request(self, request, response_coroutine): """ Async version of process_request. used for accessing the response by awaiting it when running in ASGI. """ response = await response_coroutine return self._process_response(response) def process_request(self, request): response = super().process_request(request) if iscoroutine(response): return self.aprocess_request(request, response) return self._process_response(response) def get_interception_response(self, response, redirect_to): """ Hook method to allow subclasses to customize the interception response. """ status_line = f"{response.status_code} {response.reason_phrase}" cookies = response.cookies original_response = response context = { "redirect_to": redirect_to, "status_line": status_line, "toolbar": self.toolbar, "original_response": original_response, } # Using SimpleTemplateResponse avoids running global context processors. response = SimpleTemplateResponse("debug_toolbar/redirect.html", context) response.cookies = cookies response.original_response = original_response warnings.warn( "The RedirectsPanel is deprecated and will be removed in a future version. " "The HistoryPanel now provides the ability to view toolbar data for redirected requests. " "If you still have a use case for this panel, please comment on " "https://github.com/django-commons/django-debug-toolbar/issues/2216", DeprecationWarning, stacklevel=2, ) return response python-django-debug-toolbar-8.0.0/debug_toolbar/panels/request.py000066400000000000000000000037661524561404200251770ustar00rootroot00000000000000from django.http import Http404 from django.urls import resolve from django.utils.translation import gettext_lazy as _ from debug_toolbar.panels import Panel from debug_toolbar.utils import get_name_from_obj, sanitize_and_sort_request_vars class RequestPanel(Panel): """ A panel to display request variables (POST/GET, session, cookies). """ template = "debug_toolbar/panels/request.html" title = _("Request") nav_icon = "debug_toolbar/img/request.svg" @property def nav_subtitle(self): """ Show abbreviated name of view function as subtitle """ view_func = self.get_stats().get("view_func", "") return view_func.rsplit(".", 1)[-1] def generate_stats(self, request, response): self.record_stats( { "get": sanitize_and_sort_request_vars(request.GET), "post": sanitize_and_sort_request_vars(request.POST), "cookies": sanitize_and_sort_request_vars(request.COOKIES), } ) view_info = { "view_func": _(""), "view_args": "None", "view_kwargs": "None", "view_urlname": "None", } try: match = resolve(request.path_info) func, args, kwargs = match view_info["view_func"] = get_name_from_obj(func) view_info["view_args"] = args view_info["view_kwargs"] = kwargs if getattr(match, "url_name", False): url_name = match.url_name if match.namespaces: url_name = ":".join([*match.namespaces, url_name]) else: url_name = _("") view_info["view_urlname"] = url_name except Http404: pass self.record_stats(view_info) if hasattr(request, "session"): session_data = dict(request.session) self.record_stats({"session": sanitize_and_sort_request_vars(session_data)}) python-django-debug-toolbar-8.0.0/debug_toolbar/panels/settings.py000066400000000000000000000021141524561404200253310ustar00rootroot00000000000000from pprint import pformat from django.utils.translation import gettext_lazy as _ from django.views.debug import get_default_exception_reporter_filter from debug_toolbar.panels import Panel get_safe_settings = get_default_exception_reporter_filter().get_safe_settings def safe_pformat(obj): try: return pformat(obj) except ValueError as e: return f"" class SettingsPanel(Panel): """ A panel to display all variables in django.conf.settings """ template = "debug_toolbar/panels/settings.html" is_async = True nav_title = _("Settings") nav_icon = "debug_toolbar/img/settings.svg" def title(self): return _("Settings from %s") % self.get_stats()["settings"].get( "SETTINGS_MODULE" ) def generate_stats(self, request, response): self.record_stats( { "settings": { key: safe_pformat(value) for key, value in sorted(get_safe_settings().items()) } } ) python-django-debug-toolbar-8.0.0/debug_toolbar/panels/signals.py000066400000000000000000000066051524561404200251420ustar00rootroot00000000000000import weakref from django.core.signals import ( got_request_exception, request_finished, request_started, setting_changed, ) from django.db.backends.signals import connection_created from django.db.models.signals import ( class_prepared, m2m_changed, post_delete, post_init, post_migrate, post_save, pre_delete, pre_init, pre_migrate, pre_save, ) from django.utils.module_loading import import_string from django.utils.translation import gettext_lazy as _, ngettext from debug_toolbar.panels import Panel class SignalsPanel(Panel): template = "debug_toolbar/panels/signals.html" is_async = True SIGNALS = { "request_started": request_started, "request_finished": request_finished, "got_request_exception": got_request_exception, "connection_created": connection_created, "class_prepared": class_prepared, "pre_init": pre_init, "post_init": post_init, "pre_save": pre_save, "post_save": post_save, "pre_delete": pre_delete, "post_delete": post_delete, "m2m_changed": m2m_changed, "pre_migrate": pre_migrate, "post_migrate": post_migrate, "setting_changed": setting_changed, } def nav_subtitle(self): signals = self.get_stats()["signals"] num_receivers = sum(len(receivers) for name, receivers in signals) num_signals = len(signals) # here we have to handle a double count translation, hence the # hard coding of one signal if num_signals == 1: return ngettext( "%(num_receivers)d receiver of 1 signal", "%(num_receivers)d receivers of 1 signal", num_receivers, ) % {"num_receivers": num_receivers} return ngettext( "%(num_receivers)d receiver of %(num_signals)d signals", "%(num_receivers)d receivers of %(num_signals)d signals", num_receivers, ) % {"num_receivers": num_receivers, "num_signals": num_signals} title = _("Signals") nav_icon = "debug_toolbar/img/signals.svg" @property def signals(self): signals = self.SIGNALS.copy() for signal in self.toolbar.config["EXTRA_SIGNALS"]: signal_name = signal.rsplit(".", 1)[-1] signals[signal_name] = import_string(signal) return signals def generate_stats(self, request, response): signals = [] for name, signal in sorted(self.signals.items()): receivers = [] for receiver in signal.receivers: receiver = receiver[1] if isinstance(receiver, weakref.ReferenceType): receiver = receiver() if receiver is None: continue receiver = getattr(receiver, "__wraps__", receiver) receiver_name = getattr(receiver, "__name__", str(receiver)) if getattr(receiver, "__self__", None) is not None: receiver_class_name = getattr( receiver.__self__, "__class__", type ).__name__ text = f"{receiver_class_name}.{receiver_name}" else: text = receiver_name receivers.append(text) signals.append((name, receivers)) self.record_stats({"signals": signals}) python-django-debug-toolbar-8.0.0/debug_toolbar/panels/sql/000077500000000000000000000000001524561404200237205ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/panels/sql/__init__.py000066400000000000000000000001141524561404200260250ustar00rootroot00000000000000from debug_toolbar.panels.sql.panel import SQLPanel __all__ = ["SQLPanel"] python-django-debug-toolbar-8.0.0/debug_toolbar/panels/sql/forms.py000066400000000000000000000103041524561404200254160ustar00rootroot00000000000000from django import forms from django.core.exceptions import ValidationError from django.db import connections from django.utils.functional import cached_property from django.utils.translation import gettext_lazy as _ from debug_toolbar.panels.sql.utils import reformat_sql from debug_toolbar.toolbar import DebugToolbar class SQLSelectForm(forms.Form): """ Validate params request_id: The identifier for the request query_id: The identifier for the query """ request_id = forms.CharField() djdt_query_id = forms.CharField() def clean_alias(self): value = self.cleaned_data["alias"] if value not in connections: raise ValidationError(f"Database alias '{value}' not found") return value def clean(self): from debug_toolbar.panels.sql import SQLPanel cleaned_data = super().clean() toolbar = DebugToolbar.fetch( self.cleaned_data["request_id"], panel_id=SQLPanel.panel_id ) if toolbar is None: raise ValidationError(_("Data for this panel isn't available anymore.")) panel = toolbar.get_panel_by_id(SQLPanel.panel_id) # Find the query for this form submission query = None for q in panel.get_stats()["queries"]: if q["djdt_query_id"] != self.cleaned_data["djdt_query_id"]: continue else: query = q break if not query: raise ValidationError(_("Invalid query id.")) cleaned_data["query"] = query return cleaned_data def _render_row(self, row): return tuple( bytes(v).hex() if isinstance(v, (memoryview, bytes)) else v for v in row ) def select(self): query = self.cleaned_data["query"] sql = query["raw_sql"] params = query["params"] with self.cursor as cursor: cursor.execute(sql, params) headers = [d[0] for d in cursor.description] result = [self._render_row(row) for row in cursor.fetchall()] return result, headers def explain(self): query = self.cleaned_data["query"] sql = query["raw_sql"] params = query["params"] vendor = query["vendor"] with self.cursor as cursor: if vendor == "sqlite": # SQLite's EXPLAIN dumps the low-level opcodes generated for a query; # EXPLAIN QUERY PLAN dumps a more human-readable summary # See https://www.sqlite.org/lang_explain.html for details cursor.execute(f"EXPLAIN QUERY PLAN {sql}", params) elif vendor == "postgresql": cursor.execute(f"EXPLAIN ANALYZE {sql}", params) else: cursor.execute(f"EXPLAIN {sql}", params) headers = [d[0] for d in cursor.description] result = cursor.fetchall() return result, headers def profile(self): query = self.cleaned_data["query"] sql = query["raw_sql"] params = query["params"] with self.cursor as cursor: cursor.execute("SET PROFILING=1") # Enable profiling cursor.execute(sql, params) # Execute SELECT cursor.execute("SET PROFILING=0") # Disable profiling # The Query ID should always be 1 here but I'll subselect to get # the last one just in case... cursor.execute( """ SELECT * FROM information_schema.profiling WHERE query_id = ( SELECT query_id FROM information_schema.profiling ORDER BY query_id DESC LIMIT 1 ) """ ) headers = [d[0] for d in cursor.description] result = [self._render_row(row) for row in cursor.fetchall()] return result, headers def reformat_sql(self): return reformat_sql(self.cleaned_data["query"]["sql"], with_toggle=False) @property def connection(self): return connections[self.cleaned_data["query"]["alias"]] @cached_property def cursor(self): return self.connection.cursor() python-django-debug-toolbar-8.0.0/debug_toolbar/panels/sql/panel.py000066400000000000000000000310401524561404200253670ustar00rootroot00000000000000import uuid from collections import defaultdict from asgiref.sync import sync_to_async from django.db import connections from django.template.loader import render_to_string from django.urls import path from django.utils.functional import cached_property from django.utils.translation import gettext_lazy as _, ngettext from debug_toolbar import settings as dt_settings from debug_toolbar.forms import SignedDataForm from debug_toolbar.panels import Panel from debug_toolbar.panels.sql import views from debug_toolbar.panels.sql.forms import SQLSelectForm from debug_toolbar.panels.sql.tracking import wrap_cursor from debug_toolbar.panels.sql.utils import ( contrasting_color_generator, reformat_sql, ) from debug_toolbar.utils import render_stacktrace def get_isolation_level_display(vendor, level): if vendor == "postgresql": try: import psycopg choices = { # AUTOCOMMIT level does not exists in psycopg3 psycopg.IsolationLevel.READ_UNCOMMITTED: _("Read uncommitted"), psycopg.IsolationLevel.READ_COMMITTED: _("Read committed"), psycopg.IsolationLevel.REPEATABLE_READ: _("Repeatable read"), psycopg.IsolationLevel.SERIALIZABLE: _("Serializable"), } except ImportError: import psycopg2.extensions choices = { psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT: _("Autocommit"), psycopg2.extensions.ISOLATION_LEVEL_READ_UNCOMMITTED: _( "Read uncommitted" ), psycopg2.extensions.ISOLATION_LEVEL_READ_COMMITTED: _("Read committed"), psycopg2.extensions.ISOLATION_LEVEL_REPEATABLE_READ: _( "Repeatable read" ), psycopg2.extensions.ISOLATION_LEVEL_SERIALIZABLE: _("Serializable"), } else: raise ValueError(vendor) return choices.get(level) def get_transaction_status_display(vendor, level): if vendor == "postgresql": try: import psycopg choices = { psycopg.pq.TransactionStatus.IDLE: _("Idle"), psycopg.pq.TransactionStatus.ACTIVE: _("Active"), psycopg.pq.TransactionStatus.INTRANS: _("In transaction"), psycopg.pq.TransactionStatus.INERROR: _("In error"), psycopg.pq.TransactionStatus.UNKNOWN: _("Unknown"), } except ImportError: import psycopg2.extensions choices = { psycopg2.extensions.TRANSACTION_STATUS_IDLE: _("Idle"), psycopg2.extensions.TRANSACTION_STATUS_ACTIVE: _("Active"), psycopg2.extensions.TRANSACTION_STATUS_INTRANS: _("In transaction"), psycopg2.extensions.TRANSACTION_STATUS_INERROR: _("In error"), psycopg2.extensions.TRANSACTION_STATUS_UNKNOWN: _("Unknown"), } else: raise ValueError(vendor) return choices.get(level) def _similar_query_key(query): return query["raw_sql"] def _duplicate_query_key(query): raw_params = () if query["params"] is None else tuple(query["params"]) # repr() avoids problems because of unhashable types # (e.g. lists) when used as dictionary keys. # https://github.com/django-commons/django-debug-toolbar/issues/1091 return (query["raw_sql"], repr(raw_params)) def _process_query_groups(query_groups, databases, colors, name): counts = defaultdict(int) for (alias, _key), query_group in query_groups.items(): count = len(query_group) # Queries are similar / duplicates only if there are at least 2 of them. if count > 1: color = next(colors) for query in query_group: query[f"{name}_count"] = count query[f"{name}_color"] = color counts[alias] += count for alias, db_info in databases.items(): db_info[f"{name}_count"] = counts[alias] class SQLPanel(Panel): """ Panel that displays information about the SQL queries run while processing the request. """ is_async = True def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._sql_time = 0 self._queries = [] self._databases = {} # synthetic transaction IDs, keyed by DB alias self._transaction_ids = {} def new_transaction_id(self, alias): """ Generate and return a new synthetic transaction ID for the specified DB alias. """ trans_id = uuid.uuid4().hex self._transaction_ids[alias] = trans_id return trans_id def current_transaction_id(self, alias): """ Return the current synthetic transaction ID for the specified DB alias. """ trans_id = self._transaction_ids.get(alias) # Sometimes it is not possible to detect the beginning of the first transaction, # so current_transaction_id() will be called before new_transaction_id(). In # that case there won't yet be a transaction ID. so it is necessary to generate # one using new_transaction_id(). if trans_id is None: trans_id = self.new_transaction_id(alias) return trans_id def record(self, **kwargs): kwargs["djdt_query_id"] = uuid.uuid4().hex self._queries.append(kwargs) alias = kwargs["alias"] if alias not in self._databases: self._databases[alias] = { "time_spent": kwargs["duration"], "num_queries": 1, } else: self._databases[alias]["time_spent"] += kwargs["duration"] self._databases[alias]["num_queries"] += 1 self._sql_time += kwargs["duration"] # Implement the Panel API nav_title = _("SQL") nav_icon = "debug_toolbar/img/sql.svg" @property def nav_subtitle(self): stats = self.get_stats() query_count = len(stats.get("queries", [])) return ngettext( "%(query_count)d query in %(sql_time).2fms", "%(query_count)d queries in %(sql_time).2fms", query_count, ) % { "query_count": query_count, "sql_time": stats.get("sql_time"), } @property def title(self): count = len(self.get_stats().get("databases")) return ngettext( "SQL queries from %(count)d connection", "SQL queries from %(count)d connections", count, ) % {"count": count} template = "debug_toolbar/panels/sql.html" @classmethod def get_urls(cls): return [ path("sql_select/", views.sql_select, name="sql_select"), path("sql_explain/", views.sql_explain, name="sql_explain"), path("sql_profile/", views.sql_profile, name="sql_profile"), ] async def aenable_instrumentation(self): """ Async version of enable instrumentation. For async capable panels having async logic for instrumentation. """ await sync_to_async(self.enable_instrumentation)() def enable_instrumentation(self): # This is thread-safe because database connections are thread-local. for connection in connections.all(): wrap_cursor(connection) connection._djdt_logger = self def disable_instrumentation(self): for connection in connections.all(): connection._djdt_logger = None def generate_stats(self, request, response): similar_query_groups = defaultdict(list) duplicate_query_groups = defaultdict(list) if self._queries: sql_warning_threshold = dt_settings.get_config()["SQL_WARNING_THRESHOLD"] width_ratio_tally = 0 factor = int(256.0 / (len(self._databases) * 2.5)) for n, db in enumerate(self._databases.values()): rgb = [0, 0, 0] color = n % 3 rgb[color] = 256 - n // 3 * factor nn = color # XXX: pretty sure this is horrible after so many aliases while rgb[color] < factor: nc = min(256 - rgb[color], 256) rgb[color] += nc nn += 1 if nn > 2: nn = 0 rgb[nn] = nc db["rgb_color"] = rgb # the last query recorded for each DB alias last_by_alias = {} for query in self._queries: alias = query["alias"] similar_query_groups[(alias, _similar_query_key(query))].append(query) duplicate_query_groups[(alias, _duplicate_query_key(query))].append( query ) trans_id = query.get("trans_id") prev_query = last_by_alias.get(alias, {}) prev_trans_id = prev_query.get("trans_id") # If two consecutive queries for a given DB alias have different # transaction ID values, a transaction started, finished, or both, so # annotate the queries as appropriate. if trans_id != prev_trans_id: if prev_trans_id is not None: prev_query["ends_trans"] = True if trans_id is not None: query["starts_trans"] = True if trans_id is not None: query["in_trans"] = True if "iso_level" in query: query["iso_level"] = get_isolation_level_display( query["vendor"], query["iso_level"] ) if "trans_status" in query: query["trans_status"] = get_transaction_status_display( query["vendor"], query["trans_status"] ) query["is_slow"] = query["duration"] > sql_warning_threshold query["rgb_color"] = self._databases[alias]["rgb_color"] try: query["width_ratio"] = (query["duration"] / self._sql_time) * 100 except ZeroDivisionError: query["width_ratio"] = 0 query["start_offset"] = width_ratio_tally query["end_offset"] = query["width_ratio"] + query["start_offset"] width_ratio_tally += query["width_ratio"] last_by_alias[alias] = query # Close out any transactions that were in progress, since there is no # explicit way to know when a transaction finishes. for final_query in last_by_alias.values(): if final_query.get("trans_id") is not None: final_query["ends_trans"] = True group_colors = contrasting_color_generator() _process_query_groups( similar_query_groups, self._databases, group_colors, "similar" ) _process_query_groups( duplicate_query_groups, self._databases, group_colors, "duplicate" ) self.record_stats( { "databases": sorted( self._databases.items(), key=lambda x: -x[1]["time_spent"] ), "queries": self._queries, "sql_time": self._sql_time, } ) def generate_server_timing(self, request, response): stats = self.get_stats() title = "SQL {} queries".format(len(stats.get("queries", []))) value = stats.get("sql_time", 0) self.record_server_timing("sql_time", title, value) # Cache the content property since it manipulates the queries in the stats # This allows the caller to treat content as idempotent @cached_property def content(self): if self.has_content: stats = self.get_stats() colors = contrasting_color_generator() trace_colors = defaultdict(lambda: next(colors)) for query in stats.get("queries", []): query["sql"] = reformat_sql(query["sql"], with_toggle=True) query["form"] = SignedDataForm( auto_id=None, initial=SQLSelectForm( initial={ "djdt_query_id": query["djdt_query_id"], "request_id": self.toolbar.request_id, } ).initial, ) query["stacktrace"] = render_stacktrace(query["stacktrace"]) query["trace_color"] = trace_colors[query["stacktrace"]] return render_to_string(self.template, stats) python-django-debug-toolbar-8.0.0/debug_toolbar/panels/sql/tracking.py000066400000000000000000000267351524561404200261110ustar00rootroot00000000000000import base64 import contextlib import contextvars import datetime from time import perf_counter import django.test.testcases from django.apps import apps from django.core.exceptions import ImproperlyConfigured from debug_toolbar import settings as dt_settings from debug_toolbar.sanitize import force_str from debug_toolbar.utils import get_stack_trace, get_template_info Psycopg3Binary = None try: import psycopg PostgresJson = psycopg.types.json.Jsonb STATUS_IN_TRANSACTION = psycopg.pq.TransactionStatus.INTRANS Psycopg3Binary = psycopg.Binary except ImportError: try: from psycopg2._json import Json as PostgresJson from psycopg2.extensions import STATUS_IN_TRANSACTION except ImportError: PostgresJson = None STATUS_IN_TRANSACTION = None try: from psycopg2.extensions import Binary as Psycopg2Binary except ImportError: Psycopg2Binary = None _PostGISAdapter = None try: from django.contrib.gis.db.backends.postgis.adapter import ( PostGISAdapter as _PostGISAdapter, ) except (ImportError, ImproperlyConfigured): pass # Prevents SQL queries from being sent to the DB. It's used # by the TemplatePanel to prevent the toolbar from issuing # additional queries. allow_sql = contextvars.ContextVar("debug-toolbar-allow-sql", default=True) DDT_MODELS = { m._meta.db_table for m in apps.get_app_config("debug_toolbar").get_models() } class SQLQueryTriggered(Exception): """Thrown when template panel triggers a query""" def wrap_cursor(connection): # When running a SimpleTestCase, Django monkey patches some DatabaseWrapper # methods, including .cursor() and .chunked_cursor(), to raise an exception # if the test code tries to access the database, and then undoes the monkey # patching when the test case is finished. If we monkey patch those methods # also, Django's process of undoing those monkey patches will fail. To # avoid this failure, and because database access is not allowed during a # SimpleTestCase anyway, skip applying our instrumentation monkey patches if # we detect that Django has already monkey patched DatabaseWrapper.cursor(). if isinstance(connection.cursor, django.test.testcases._DatabaseFailure): return if not hasattr(connection, "_djdt_cursor"): connection._djdt_cursor = connection.cursor connection._djdt_chunked_cursor = connection.chunked_cursor connection._djdt_logger = None def cursor(*args, **kwargs): # Per the DB API cursor() does not accept any arguments. There's # some code in the wild which does not follow that convention, # so we pass on the arguments even though it's not clean. # See: # https://github.com/django-commons/django-debug-toolbar/pull/615 # https://github.com/django-commons/django-debug-toolbar/pull/896 logger = connection._djdt_logger cursor = connection._djdt_cursor(*args, **kwargs) if logger is None: return cursor mixin = NormalCursorMixin if allow_sql.get() else ExceptionCursorMixin return patch_cursor_wrapper_with_mixin(cursor.__class__, mixin)( cursor.cursor, connection, logger ) def chunked_cursor(*args, **kwargs): # prevent double wrapping # solves https://github.com/django-commons/django-debug-toolbar/issues/1239 logger = connection._djdt_logger cursor = connection._djdt_chunked_cursor(*args, **kwargs) if logger is not None and not isinstance(cursor, DjDTCursorWrapperMixin): mixin = NormalCursorMixin if allow_sql.get() else ExceptionCursorMixin return patch_cursor_wrapper_with_mixin(cursor.__class__, mixin)( cursor.cursor, connection, logger ) return cursor connection.cursor = cursor connection.chunked_cursor = chunked_cursor def patch_cursor_wrapper_with_mixin(base_wrapper, mixin): class DjDTCursorWrapper(mixin, base_wrapper): pass return DjDTCursorWrapper class DjDTCursorWrapperMixin: def __init__(self, cursor, db, logger): super().__init__(cursor, db) # logger must implement a ``record`` method self.logger = logger class ExceptionCursorMixin(DjDTCursorWrapperMixin): """ Wraps a cursor and raises an exception on any operation. Used in Templates panel. """ def __getattr__(self, attr): raise SQLQueryTriggered() class NormalCursorMixin(DjDTCursorWrapperMixin): """ Wraps a cursor and logs queries. """ def _decode(self, param): if PostgresJson and isinstance(param, PostgresJson): # psycopg3 if hasattr(param, "obj"): return param.dumps(param.obj) # psycopg2 if hasattr(param, "adapted"): return param.dumps(param.adapted) # If a sequence type, decode each element separately if isinstance(param, (tuple, list)): return [self._decode(element) for element in param] # If a dictionary type, decode each value separately if isinstance(param, dict): return {key: self._decode(value) for key, value in param.items()} # GeoDjango PostGIS geometry parameters: extract EWKB bytes and metadata # so the adapter can be reconstructed on the way back out for SELECT/EXPLAIN. if _PostGISAdapter is not None and isinstance(param, _PostGISAdapter): return { "__djdt_postgis__": base64.b64encode(param.ewkb).decode("ascii"), "is_geometry": param.is_geometry, "geography": param.geography, } # Binary data is handled by DebugToolbarJSONEncoder in store.py. # Django's BinaryField calls connection.Database.Binary() which wraps # bytes in a driver-specific adapter: psycopg2 uses .adapted, psycopg3 # uses .obj. memoryview: psycopg2/sqlite3 binary column values. if isinstance(param, (bytes, bytearray, memoryview)): return bytes(param) if Psycopg2Binary is not None and isinstance(param, Psycopg2Binary): return bytes(param.adapted) if Psycopg3Binary is not None and isinstance(param, Psycopg3Binary): return bytes(param.obj) # make sure datetime, date and time are converted to string by force_str CONVERT_TYPES = (datetime.datetime, datetime.date, datetime.time) return force_str(param, strings_only=not isinstance(param, CONVERT_TYPES)) def _last_executed_query(self, sql, params): """Get the last executed query from the connection.""" # Django's psycopg3 backend creates a new cursor in its implementation of the # .last_executed_query() method. To avoid wrapping that cursor, temporarily set # the DatabaseWrapper's ._djdt_logger attribute to None. This will cause the # monkey-patched .cursor() and .chunked_cursor() methods to skip the wrapping # process during the .last_executed_query() call. self.db._djdt_logger = None try: return self.db.ops.last_executed_query(self.cursor, sql, params) finally: self.db._djdt_logger = self.logger def _record(self, method, sql, params): alias = self.db.alias vendor = self.db.vendor if vendor == "postgresql": # The underlying DB connection (as opposed to Django's wrapper) conn = self.db.connection initial_conn_status = conn.info.transaction_status start_time = perf_counter() try: return method(sql, params) finally: stop_time = perf_counter() duration = (stop_time - start_time) * 1000 _params = None with contextlib.suppress(TypeError): # Decode params - binary data will be handled by DebugToolbarJSONEncoder # in store.py when the panel data is serialized _params = self._decode(params) template_info = get_template_info() # Sql might be an object (such as psycopg Composed). # For logging purposes, make sure it's str. if vendor == "postgresql" and not isinstance(sql, str): if isinstance(sql, bytes): sql = sql.decode("utf-8") else: sql = sql.as_string(conn) else: sql = str(sql) kwargs = { "vendor": vendor, "alias": alias, "sql": self._last_executed_query(sql, params), "duration": duration, "raw_sql": sql, "params": _params, "stacktrace": get_stack_trace(skip=2), "template_info": template_info, } if vendor == "postgresql": # If an erroneous query was ran on the connection, it might # be in a state where checking isolation_level raises an # exception. try: iso_level = conn.isolation_level except conn.InternalError: iso_level = "unknown" # PostgreSQL does not expose any sort of transaction ID, so it is # necessary to generate synthetic transaction IDs here. If the # connection was not in a transaction when the query started, and was # after the query finished, a new transaction definitely started, so get # a new transaction ID from logger.new_transaction_id(). If the query # was in a transaction both before and after executing, make the # assumption that it is the same transaction and get the current # transaction ID from logger.current_transaction_id(). There is an edge # case where Django can start a transaction before the first query # executes, so in that case logger.current_transaction_id() will # generate a new transaction ID since one does not already exist. final_conn_status = conn.info.transaction_status if final_conn_status == STATUS_IN_TRANSACTION: if initial_conn_status == STATUS_IN_TRANSACTION: trans_id = self.logger.current_transaction_id(alias) else: trans_id = self.logger.new_transaction_id(alias) else: trans_id = None kwargs.update( { "trans_id": trans_id, "trans_status": conn.info.transaction_status, "iso_level": iso_level, } ) # Skip tracking for toolbar models by default. # This can be overridden by setting SKIP_TOOLBAR_QUERIES = False if not dt_settings.get_config()["SKIP_TOOLBAR_QUERIES"] or not any( table in sql for table in DDT_MODELS ): # We keep `sql` to maintain backwards compatibility self.logger.record(**kwargs) def callproc(self, procname, params=None): return self._record(super().callproc, procname, params) def execute(self, sql, params=None): return self._record(super().execute, sql, params) def executemany(self, sql, param_list): return self._record(super().executemany, sql, param_list) python-django-debug-toolbar-8.0.0/debug_toolbar/panels/sql/utils.py000066400000000000000000000114011524561404200254270ustar00rootroot00000000000000from functools import cache, lru_cache from html import escape from itertools import cycle import sqlparse from django.dispatch import receiver from django.test.signals import setting_changed from sqlparse import tokens as T from sqlparse.exceptions import SQLParseError from debug_toolbar import settings as dt_settings class ElideSelectListsFilter: """sqlparse filter to elide the select list from top-level SELECT ... FROM clauses, if present""" def process(self, stream): allow_elision = True for token_type, value in stream: yield token_type, value if token_type in T.Keyword: keyword = value.upper() if allow_elision and keyword == "SELECT": yield from self.elide_until_from(stream) allow_elision = keyword in ["EXCEPT", "INTERSECT", "UNION"] @staticmethod def elide_until_from(stream): has_dot = False saved_tokens = [] for token_type, value in stream: if token_type in T.Keyword and value.upper() == "FROM": # Do not elide a select lists that do not contain dots (used to separate # table names from column names) in order to preserve # SELECT COUNT(*) AS `__count` FROM ... # and # SELECT (1) AS `a` FROM ... # queries. if not has_dot: yield from saved_tokens else: # U+2022: Unicode character 'BULLET' yield T.Other, " \u2022\u2022\u2022 " yield token_type, value break if not has_dot: if token_type in T.Punctuation and value == ".": has_dot = True else: saved_tokens.append((token_type, value)) class BoldKeywordFilter: """sqlparse filter to bold SQL keywords""" def process(self, stmt): idx = 0 while idx < len(stmt.tokens): token = stmt[idx] if token.is_keyword: stmt.insert_before(idx, sqlparse.sql.Token(T.Other, "")) stmt.insert_after( idx + 1, sqlparse.sql.Token(T.Other, ""), skip_ws=False, ) idx += 2 elif token.is_group: self.process(token) idx += 1 def escaped_value(token): # Don't escape T.Whitespace tokens because AlignedIndentFilter inserts its tokens as # T.Whitesapce, and in our case those tokens are actually HTML. if token.ttype in (T.Other, T.Whitespace): return token.value return escape(token.value, quote=False) class EscapedStringSerializer: """sqlparse post-processor to convert a Statement into a string escaped for inclusion in HTML .""" @staticmethod def process(stmt): return "".join(escaped_value(token) for token in stmt.flatten()) def reformat_sql(sql, *, with_toggle=False): formatted = parse_sql(sql) if not with_toggle: return formatted simplified = parse_sql(sql, simplify=True) uncollapsed = f'{simplified}' collapsed = f'{formatted}' return collapsed + uncollapsed @lru_cache(maxsize=128) def parse_sql(sql, *, simplify=False): stack = get_filter_stack(simplify=simplify) try: return "".join(stack.run(sql)) except SQLParseError: # The query either exceeds the number of tokens or depth of tokens. # Recreate the FilterStack and explicitly disable the grouping to avoid # those errors. stack = get_filter_stack(simplify=simplify) stack._grouping = False return "".join(stack.run(sql)) @cache def get_filter_stack(*, simplify): stack = sqlparse.engine.FilterStack() if simplify: stack.preprocess.append(ElideSelectListsFilter()) else: if dt_settings.get_config()["PRETTIFY_SQL"]: stack.enable_grouping() stack.stmtprocess.append( sqlparse.filters.AlignedIndentFilter(char=" ", n="
") ) stack.stmtprocess.append(BoldKeywordFilter()) stack.postprocess.append(EscapedStringSerializer()) # Statement -> str return stack @receiver(setting_changed) def clear_caches(*, setting, **kwargs): if setting == "DEBUG_TOOLBAR_CONFIG": parse_sql.cache_clear() get_filter_stack.cache_clear() def contrasting_color_generator(): return cycle( [ "#0C375A", "#21A0A0", "#FFC300", "#FF5733", "#C70039", "#900C3F", "#581845", "#F1C40F", ] ) python-django-debug-toolbar-8.0.0/debug_toolbar/panels/sql/views.py000066400000000000000000000071751524561404200254410ustar00rootroot00000000000000from django.db import DatabaseError from django.http import HttpResponseBadRequest, JsonResponse from django.template.loader import render_to_string from django.views.decorators.csrf import csrf_exempt from debug_toolbar._compat import login_not_required from debug_toolbar.decorators import render_with_toolbar_language, require_show_toolbar from debug_toolbar.forms import SignedDataForm from debug_toolbar.panels.sql.forms import SQLSelectForm from debug_toolbar.panels.sql.utils import reformat_sql def get_signed_data(request): """Unpack a signed data form, if invalid returns None""" data = request.GET if request.method == "GET" else request.POST signed_form = SignedDataForm(data) if signed_form.is_valid(): return signed_form.verified_data() return None @csrf_exempt @login_not_required @require_show_toolbar @render_with_toolbar_language def sql_select(request): """Returns the output of the SQL SELECT statement""" verified_data = get_signed_data(request) if not verified_data: return HttpResponseBadRequest("Invalid signature") form = SQLSelectForm(verified_data) if form.is_valid(): query = form.cleaned_data["query"] result, headers = form.select() context = { "result": result, "sql": reformat_sql(query["sql"], with_toggle=False), "duration": query["duration"], "headers": headers, "alias": query["alias"], } content = render_to_string("debug_toolbar/panels/sql_select.html", context) return JsonResponse({"content": content}) return HttpResponseBadRequest("Form errors") @csrf_exempt @login_not_required @require_show_toolbar @render_with_toolbar_language def sql_explain(request): """Returns the output of the SQL EXPLAIN on the given query""" verified_data = get_signed_data(request) if not verified_data: return HttpResponseBadRequest("Invalid signature") form = SQLSelectForm(verified_data) if form.is_valid(): query = form.cleaned_data["query"] result, headers = form.explain() context = { "result": result, "sql": reformat_sql(query["sql"], with_toggle=False), "duration": query["duration"], "headers": headers, "alias": query["alias"], } content = render_to_string("debug_toolbar/panels/sql_explain.html", context) return JsonResponse({"content": content}) return HttpResponseBadRequest("Form errors") @csrf_exempt @login_not_required @require_show_toolbar @render_with_toolbar_language def sql_profile(request): """Returns the output of running the SQL and getting the profiling statistics""" verified_data = get_signed_data(request) if not verified_data: return HttpResponseBadRequest("Invalid signature") form = SQLSelectForm(verified_data) if form.is_valid(): query = form.cleaned_data["query"] result = None headers = None result_error = None try: result, headers = form.profile() except DatabaseError: result_error = ( "Profiling is either not available or not supported by your database." ) context = { "result": result, "result_error": result_error, "sql": form.reformat_sql(), "duration": query["duration"], "headers": headers, "alias": query["alias"], } content = render_to_string("debug_toolbar/panels/sql_profile.html", context) return JsonResponse({"content": content}) return HttpResponseBadRequest("Form errors") python-django-debug-toolbar-8.0.0/debug_toolbar/panels/staticfiles.py000066400000000000000000000126241524561404200260120ustar00rootroot00000000000000import contextlib import uuid from contextvars import ContextVar from os.path import join, normpath from django.contrib.staticfiles import finders, storage from django.dispatch import Signal from django.utils.translation import gettext_lazy as _, ngettext from debug_toolbar import panels # This will record and map the StaticFile instances with its associated # request across threads and async concurrent requests state. request_id_context_var = ContextVar("djdt_request_id_store") record_static_file_signal = Signal() class URLMixin: def url(self, path, *args, **kwargs): url = super().url(path, *args, **kwargs) with contextlib.suppress(LookupError): # For LookupError: # The ContextVar wasn't set yet. Since the toolbar wasn't properly # configured to handle this request, we don't need to capture # the static file. request_id = request_id_context_var.get() record_static_file_signal.send( sender=self, staticfile=(str(path), url, finders.find(str(path))), request_id=request_id, ) return url class StaticFilesPanel(panels.Panel): """ A panel to display the found staticfiles. """ is_async = True name = "Static files" template = "debug_toolbar/panels/staticfiles.html" @property def title(self): stats = self.get_stats() return _("Static files (%(num_found)s found, %(num_used)s used)") % { "num_found": stats.get("num_found"), "num_used": stats.get("num_used"), } def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.num_found = 0 self.used_paths = set() self.request_id = str(uuid.uuid4()) @classmethod def ready(cls): klass = storage.staticfiles_storage.__class__ if URLMixin not in klass.mro(): klass.__bases__ = (URLMixin, *klass.__bases__) def _store_static_files_signal_handler(self, sender, staticfile, **kwargs): # Only record the static file if the request_id matches the one # that was used to create the panel. # as sender of the signal and this handler will have multiple # concurrent connections and we want to avoid storing of same # staticfile from other connections as well. if request_id_context_var.get() == self.request_id: self.used_paths.add(staticfile) def enable_instrumentation(self): self.ctx_token = request_id_context_var.set(self.request_id) record_static_file_signal.connect(self._store_static_files_signal_handler) def disable_instrumentation(self): record_static_file_signal.disconnect(self._store_static_files_signal_handler) request_id_context_var.reset(self.ctx_token) nav_title = _("Static files") nav_icon = "debug_toolbar/img/staticfiles.svg" @property def nav_subtitle(self): num_used = self.get_stats().get("num_used") return ngettext( "%(num_used)s file used", "%(num_used)s files used", num_used ) % {"num_used": num_used} def generate_stats(self, request, response): self.record_stats( { "num_found": self.num_found, "num_used": len(self.used_paths), "staticfiles": sorted(self.used_paths), "staticfiles_apps": self.get_staticfiles_apps(), "staticfiles_dirs": self.get_staticfiles_dirs(), "staticfiles_finders": self.get_staticfiles_finders(), } ) def get_staticfiles_finders(self): """ Returns a sorted mapping between the finder path and the list of relative and file system paths which that finder was able to find. """ finders_mapping = {} for finder in finders.get_finders(): try: for path, finder_storage in finder.list([]): if getattr(finder_storage, "prefix", None): prefixed_path = join(finder_storage.prefix, path) else: prefixed_path = path finder_cls = finder.__class__ finder_path = f"{finder_cls.__module__}.{finder_cls.__name__}" real_path = finder_storage.path(path) payload = (prefixed_path, real_path) finders_mapping.setdefault(finder_path, []).append(payload) self.num_found += 1 except OSError: # This error should be captured and presented as a part of run_checks. pass return finders_mapping def get_staticfiles_dirs(self): """ Returns a list of paths to inspect for additional static files """ dirs = [] for finder in finders.get_finders(): if isinstance(finder, finders.FileSystemFinder): dirs.extend(finder.locations) return [(prefix, normpath(dir)) for prefix, dir in dirs] def get_staticfiles_apps(self): """ Returns a list of app paths that have a static directory """ apps = [] for finder in finders.get_finders(): if isinstance(finder, finders.AppDirectoriesFinder): for app in finder.apps: if app not in apps: apps.append(app) return apps python-django-debug-toolbar-8.0.0/debug_toolbar/panels/tasks.py000066400000000000000000000045671524561404200246340ustar00rootroot00000000000000from django import VERSION from django.utils.translation import gettext_lazy as _, ngettext from debug_toolbar.panels import Panel if VERSION >= (6, 0): from django.tasks.signals import task_enqueued else: task_enqueued = None class TasksPanel(Panel): """ Panel that displays the tasks queued during the request. This relies on Django's built-in tasks framework (``django.tasks``), which was added in Django 6.0. On older versions of Django, the panel explains that upgrading Django is required in order to see task information. """ template = "debug_toolbar/panels/tasks.html" is_async = True def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.tasks: list = [] # populated with TaskResult instances nav_icon = "debug_toolbar/img/tasks.svg" nav_title = _("Tasks") @property def nav_subtitle(self): if VERSION < (6, 0): return _("Requires Django 6.0+") tasks = self.get_stats()["tasks"] return ngettext("%(count)d task", "%(count)d tasks", len(tasks)) % { "count": len(tasks) } title = _("Tasks") def _record_task(self, sender, task_result, **kwargs): self.tasks.append(task_result) def enable_instrumentation(self): if task_enqueued is not None: task_enqueued.connect(self._record_task) def disable_instrumentation(self): if task_enqueued is not None: task_enqueued.disconnect(self._record_task) def generate_stats(self, request, response): # TaskResult and Task aren't JSON-serializable which the toolbar's # storage mechanism requires tasks = [ { "task": { "module_path": task_result.task.module_path, "queue_name": task_result.task.queue_name, "priority": task_result.task.priority, "run_after": task_result.task.run_after, }, "backend": task_result.backend, "status": task_result.status, "args": task_result.args, "kwargs": task_result.kwargs, } for task_result in self.tasks ] self.record_stats( { "tasks_available": VERSION >= (6, 0), "tasks": tasks, } ) python-django-debug-toolbar-8.0.0/debug_toolbar/panels/templates/000077500000000000000000000000001524561404200251175ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/panels/templates/__init__.py000066400000000000000000000001361524561404200272300ustar00rootroot00000000000000from debug_toolbar.panels.templates.panel import TemplatesPanel __all__ = ["TemplatesPanel"] python-django-debug-toolbar-8.0.0/debug_toolbar/panels/templates/jinja2.py000066400000000000000000000015301524561404200266450ustar00rootroot00000000000000import functools from django.template.backends.jinja2 import Template as JinjaTemplate from django.template.context import make_context from django.test.signals import template_rendered def patch_jinja_render(): orig_render = JinjaTemplate.render @functools.wraps(orig_render) def wrapped_render(self, context=None, request=None): # This patching of render only instruments the rendering # of the immediate template. It won't include the parent template(s). self.name = self.template.name template_rendered.send( sender=self, template=self, context=make_context(context, request) ) return orig_render(self, context, request) if JinjaTemplate.render != wrapped_render: JinjaTemplate.original_render = JinjaTemplate.render JinjaTemplate.render = wrapped_render python-django-debug-toolbar-8.0.0/debug_toolbar/panels/templates/panel.py000066400000000000000000000225041524561404200265730ustar00rootroot00000000000000from contextlib import contextmanager from importlib.util import find_spec from os.path import normpath from pprint import pformat, saferepr from django import http from django.core import signing from django.db.models.query import QuerySet, RawQuerySet from django.template import RequestContext, Template from django.test.signals import template_rendered from django.test.utils import instrumented_test_render from django.urls import path from django.utils.translation import gettext_lazy as _ from debug_toolbar.panels import Panel from debug_toolbar.panels.sql.tracking import SQLQueryTriggered, allow_sql from debug_toolbar.panels.templates import views from debug_toolbar.sanitize import force_str if find_spec("jinja2"): from debug_toolbar.panels.templates.jinja2 import patch_jinja_render patch_jinja_render() # Monkey-patch to enable the template_rendered signal. The receiver returns # immediately when the panel is disabled to keep the overhead small. # Code taken and adapted from Simon Willison and Django Snippets: # https://www.djangosnippets.org/snippets/766/ if Template._render != instrumented_test_render: Template.original_render = Template._render Template._render = instrumented_test_render # Monkey-patch to store items added by template context processors. The # overhead is sufficiently small to justify enabling it unconditionally. @contextmanager def _request_context_bind_template(self, template): if self.template is not None: raise RuntimeError("Context is already bound to a template") self.template = template # Set context processors according to the template engine's settings. processors = template.engine.template_context_processors + self._processors self.context_processors = {} updates = {} for processor in processors: name = f"{processor.__module__}.{processor.__name__}" context = processor(self.request) self.context_processors[name] = context updates.update(context) self.dicts[self._processors_index] = updates try: yield finally: self.template = None # Unset context processors. self.dicts[self._processors_index] = {} RequestContext.bind_template = _request_context_bind_template class TemplatesPanel(Panel): """ A panel that lists all templates used during processing of a response. """ is_async = True def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.templates = [] # An associated list of dictionaries and their prettified # representation. self.pformat_layers = [] def _store_template_info(self, sender, **kwargs): template, context = kwargs["template"], kwargs["context"] # Skip templates that we are generating through the debug toolbar. is_debug_toolbar_template = isinstance(template.name, str) and ( template.name.startswith("debug_toolbar/") or template.name.startswith( tuple(self.toolbar.config["SKIP_TEMPLATE_PREFIXES"]) ) ) if is_debug_toolbar_template: return kwargs["context"] = [ context_layer for context_layer in context.dicts if hasattr(context_layer, "items") and context_layer ] kwargs["context_processors"] = getattr(context, "context_processors", None) self.templates.append(kwargs) # Implement the Panel API nav_title = _("Templates") nav_icon = "debug_toolbar/img/templates.svg" @property def title(self): num_templates = len(self.get_stats()["templates"]) return _("Templates (%(num_templates)s rendered)") % { "num_templates": num_templates } @property def nav_subtitle(self): templates = self.get_stats()["templates"] if templates: return templates[0]["template"]["name"] return "" template = "debug_toolbar/panels/templates.html" @classmethod def get_urls(cls): return [path("template_source/", views.template_source, name="template_source")] def enable_instrumentation(self): template_rendered.connect(self._store_template_info) def disable_instrumentation(self): template_rendered.disconnect(self._store_template_info) def process_context_list(self, context_layers): context_list = [] for context_layer in context_layers: # Check if the layer is in the cache. pformatted = None for key_values, _pformatted in self.pformat_layers: if key_values == context_layer: pformatted = _pformatted break if pformatted is None: temp_layer = {} for key, value in context_layer.items(): # Do not force evaluating LazyObject if hasattr(value, "_wrapped"): # SimpleLazyObject has __repr__ which includes actual value # if it has been already evaluated temp_layer[key] = repr(value) # Replace any request elements - they have a large # Unicode representation and the request data is # already made available from the Request panel. elif isinstance(value, http.HttpRequest): temp_layer[key] = "<>" # Replace the debugging sql_queries element. The SQL # data is already made available from the SQL panel. elif key == "sql_queries" and isinstance(value, list): temp_layer[key] = "<>" # Replace LANGUAGES, which is available in i18n context # processor elif key == "LANGUAGES" and isinstance(value, tuple): temp_layer[key] = "<>" # QuerySet would trigger the database: user can run the # query from SQL Panel elif isinstance(value, (QuerySet, RawQuerySet)): temp_layer[key] = ( f"<<{value.__class__.__name__.lower()} of {value.model._meta.label}>>" ) else: token = allow_sql.set(False) try: saferepr(value) # this MAY trigger a db query except SQLQueryTriggered: temp_layer[key] = "<>" except UnicodeEncodeError: temp_layer[key] = "<>" except Exception: # noqa: BLE001 temp_layer[key] = "<>" else: temp_layer[key] = value finally: allow_sql.reset(token) pformatted = pformat(temp_layer) self.pformat_layers.append((context_layer, pformatted)) context_list.append(pformatted) return context_list def generate_stats(self, request, response): template_context = [] for template_data in self.templates: info = {} # Clean up some info about templates template = template_data["template"] if hasattr(template, "origin") and template.origin and template.origin.name: template.origin_name = template.origin.name template.origin_hash = signing.dumps(template.origin.name) else: template.origin_name = _("No origin") template.origin_hash = "" info["template"] = { "name": template.name, "origin_name": template.origin_name, "origin_hash": template.origin_hash, } # Clean up context for better readability if self.toolbar.config["SHOW_TEMPLATE_CONTEXT"]: if "context_list" not in template_data: template_data["context_list"] = self.process_context_list( template_data.get("context", []) ) info["context"] = "\n".join(template_data["context_list"]) template_context.append(info) # Fetch context_processors/template_dirs from any template if self.templates: context_processors = ( { key: force_str(value) for key, value in self.templates[0]["context_processors"].items() } if self.templates[0]["context_processors"] else None ) template = self.templates[0]["template"] # django templates have the 'engine' attribute, while jinja # templates use 'backend' engine_backend = getattr(template, "engine", None) or template.backend template_dirs = engine_backend.dirs else: context_processors = None template_dirs = [] self.record_stats( { "templates": template_context, "template_dirs": [normpath(x) for x in template_dirs], "context_processors": context_processors, } ) python-django-debug-toolbar-8.0.0/debug_toolbar/panels/templates/views.py000066400000000000000000000047411524561404200266340ustar00rootroot00000000000000from django.core import signing from django.http import HttpResponseBadRequest, JsonResponse from django.template import Origin, TemplateDoesNotExist from django.template.engine import Engine from django.template.loader import render_to_string from django.utils.html import format_html, mark_safe from debug_toolbar._compat import login_not_required from debug_toolbar.decorators import render_with_toolbar_language, require_show_toolbar @login_not_required @require_show_toolbar @render_with_toolbar_language def template_source(request): """ Return the source of a template, syntax-highlighted by Pygments if it's available. """ template_origin_name = request.GET.get("template_origin") if template_origin_name is None: return HttpResponseBadRequest('"template_origin" key is required') try: template_origin_name = signing.loads(template_origin_name) except signing.BadSignature: return HttpResponseBadRequest('"template_origin" is invalid') template_name = request.GET.get("template", template_origin_name) final_loaders = [] loaders = list(Engine.get_default().template_loaders) while loaders: loader = loaders.pop(0) if loader is not None: # Recursively unwrap loaders until we get to loaders which do not # themselves wrap other loaders. This adds support for # django.template.loaders.cached.Loader and the # django-template-partials loader (possibly among others) if hasattr(loader, "loaders"): loaders.extend(loader.loaders) else: final_loaders.append(loader) for loader in final_loaders: origin = Origin(template_origin_name) try: source = loader.get_contents(origin) break except TemplateDoesNotExist: pass else: source = f"Template Does Not Exist: {template_origin_name}" try: from pygments import highlight from pygments.formatters import HtmlFormatter from pygments.lexers import HtmlDjangoLexer except ModuleNotFoundError: source = format_html("{}", source) else: source = highlight(source, HtmlDjangoLexer(), HtmlFormatter(wrapcode=True)) source = mark_safe(source) content = render_to_string( "debug_toolbar/panels/template_source.html", {"source": source, "template_name": template_name}, ) return JsonResponse({"content": content}) python-django-debug-toolbar-8.0.0/debug_toolbar/panels/timer.py000066400000000000000000000121301524561404200246100ustar00rootroot00000000000000from time import perf_counter from django.template.loader import render_to_string from django.templatetags.static import static from django.utils.translation import gettext_lazy as _ from debug_toolbar.panels import Panel try: import resource # Not available on Win32 systems except ImportError: resource = None class TimerPanel(Panel): """ Panel that displays the time a response took in milliseconds. """ is_async = True def nav_subtitle(self): stats = self.get_stats() if stats.get("utime"): utime = stats.get("utime") stime = stats.get("stime") return _("CPU: %(cum)0.2fms (%(total)0.2fms)") % { "cum": (utime + stime), "total": stats["total_time"], } elif "total_time" in stats: return _("Total: %0.2fms") % stats["total_time"] else: return "" has_content = resource is not None title = _("Time") nav_icon = "debug_toolbar/img/timer.svg" template = "debug_toolbar/panels/timer.html" @property def content(self): stats = self.get_stats() rows = ( (_("User CPU time"), _("%(utime)0.3f ms") % stats), (_("System CPU time"), _("%(stime)0.3f ms") % stats), (_("Total CPU time"), _("%(total)0.3f ms") % stats), (_("Elapsed time"), _("%(total_time)0.3f ms") % stats), ( _("Including DebugToolbar time"), _("%(toolbar_time)0.3f ms") % stats, ), ( _("Context switches"), _("%(vcsw)d voluntary, %(ivcsw)d involuntary") % stats, ), ) return render_to_string(self.template, {"rows": rows}) @property def scripts(self): scripts = super().scripts scripts.append(static("debug_toolbar/js/timer.js")) return scripts def process_request(self, request): self._start_time = perf_counter() if self.has_content: self._start_rusage = resource.getrusage(resource.RUSAGE_SELF) return super().process_request(request) def serialize_rusage(self, data): fields_to_serialize = [ "ru_utime", "ru_stime", "ru_nvcsw", "ru_nivcsw", "ru_minflt", "ru_majflt", ] return {field: getattr(data, field) for field in fields_to_serialize} def generate_stats(self, request, response): stats = {} if hasattr(self, "_start_time"): stats["total_time"] = (perf_counter() - self._start_time) * 1000 if self.has_content: self._end_rusage = resource.getrusage(resource.RUSAGE_SELF) start = self.serialize_rusage(self._start_rusage) end = self.serialize_rusage(self._end_rusage) stats.update( { "utime": 1000 * self._elapsed_ru(start, end, "ru_utime"), "stime": 1000 * self._elapsed_ru(start, end, "ru_stime"), "vcsw": self._elapsed_ru(start, end, "ru_nvcsw"), "ivcsw": self._elapsed_ru(start, end, "ru_nivcsw"), "minflt": self._elapsed_ru(start, end, "ru_minflt"), "majflt": self._elapsed_ru(start, end, "ru_majflt"), } ) stats["total"] = stats["utime"] + stats["stime"] # these are documented as not meaningful under Linux. If you're # running BSD feel free to enable them, and add any others that I # hadn't gotten to before I noticed that I was getting nothing but # zeroes and that the docs agreed. :-( # # stats['blkin'] = self._elapsed_ru(start, end, 'ru_inblock') # stats['blkout'] = self._elapsed_ru(start, end, 'ru_oublock') # stats['swap'] = self._elapsed_ru(start, end, 'ru_nswap') # stats['rss'] = self._end_rusage.ru_maxrss # stats['srss'] = self._end_rusage.ru_ixrss # stats['urss'] = self._end_rusage.ru_idrss # stats['usrss'] = self._end_rusage.ru_isrss if hasattr(self, "_toolbar_start_time"): stats["toolbar_time"] = (perf_counter() - self._toolbar_start_time) * 1000 self.record_stats(stats) def generate_server_timing(self, request, response): stats = self.get_stats() self.record_server_timing("utime", "User CPU time", stats.get("utime", 0)) self.record_server_timing("stime", "System CPU time", stats.get("stime", 0)) self.record_server_timing("total", "Total CPU time", stats.get("total", 0)) self.record_server_timing( "total_time", "Elapsed time", stats.get("total_time", 0) ) self.record_server_timing( "toolbar_time", "Including DebugToolbar time", stats.get("toolbar_time", 0) ) @staticmethod def _elapsed_ru(start, end, name): return end.get(name) - start.get(name) def enable_instrumentation(self): self._toolbar_start_time = perf_counter() python-django-debug-toolbar-8.0.0/debug_toolbar/panels/versions.py000066400000000000000000000041411524561404200253430ustar00rootroot00000000000000import sys import django from django.apps import apps from django.utils.translation import gettext_lazy as _ from debug_toolbar.panels import Panel class VersionsPanel(Panel): """ Shows versions of Python, Django, and installed apps if possible. """ is_async = True @property def nav_subtitle(self): return "Django %s" % self.get_stats()["django_version"] title = _("Versions") nav_icon = "debug_toolbar/img/versions.svg" template = "debug_toolbar/panels/versions.html" def generate_stats(self, request, response): versions = [ ("Python", "", "%d.%d.%d" % sys.version_info[:3]), ("Django", "", self.get_app_version(django)), ] versions += list(self.gen_app_versions()) self.record_stats( { "django_version": django.get_version(), "versions": sorted(versions, key=lambda v: v[0]), "paths": sys.path, } ) def gen_app_versions(self): for app_config in apps.get_app_configs(): name = app_config.verbose_name app = app_config.module version = self.get_app_version(app) if version: yield app.__name__, name, version def get_app_version(self, app): version = self.get_version_from_app(app) if isinstance(version, (list, tuple)): # We strip dots from the right because we do not want to show # trailing dots if there are empty elements in the list/tuple version = ".".join(str(o) for o in version).rstrip(".") return version def get_version_from_app(self, app): if hasattr(app, "get_version"): get_version = app.get_version if callable(get_version): try: return get_version() except TypeError: pass else: return get_version if hasattr(app, "VERSION"): return app.VERSION if hasattr(app, "__version__"): return app.__version__ return python-django-debug-toolbar-8.0.0/debug_toolbar/py.typed000066400000000000000000000000001524561404200233240ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/sanitize.py000066400000000000000000000006511524561404200240410ustar00rootroot00000000000000from django.utils.encoding import DjangoUnicodeDecodeError, force_str as force_string def force_str(s, *args, **kwargs): """ Forces values to strings. Will return "Django Debug Toolbar was unable to parse value." when there's a decoding error. """ try: return force_string(s, *args, **kwargs) except DjangoUnicodeDecodeError: return "Django Debug Toolbar was unable to parse value." python-django-debug-toolbar-8.0.0/debug_toolbar/settings.py000066400000000000000000000073661524561404200240650ustar00rootroot00000000000000import os import sys import warnings from functools import cache from django.conf import settings from django.dispatch import receiver from django.test.signals import setting_changed def _is_running_tests(): """ Helper function to support testing default value for IS_RUNNING_TESTS """ return "test" in sys.argv or "PYTEST_VERSION" in os.environ CONFIG_DEFAULTS = { # Toolbar options "CACHE_BACKEND": "default", "CACHE_KEY_PREFIX": "djdt:", "DISABLE_PANELS": { "debug_toolbar.panels.profiling.ProfilingPanel", "debug_toolbar.panels.redirects.RedirectsPanel", }, "INSERT_BEFORE": "", "IS_RUNNING_TESTS": _is_running_tests(), "OBSERVE_REQUEST_CALLBACK": "debug_toolbar.toolbar.observe_request", "RENDER_PANELS": None, "RESULTS_CACHE_SIZE": 25, "ROOT_TAG_EXTRA_ATTRS": "", "SHOW_COLLAPSED": False, "SHOW_TOOLBAR_CALLBACK": "debug_toolbar.middleware.show_toolbar", "USE_SHADOW_DOM": True, "TOOLBAR_LANGUAGE": None, "TOOLBAR_STORE_CLASS": "debug_toolbar.store.MemoryStore", "UPDATE_ON_FETCH": False, # Panel options "EXTRA_SIGNALS": [], "ENABLE_STACKTRACES": True, "ENABLE_STACKTRACES_LOCALS": False, "HIDE_IN_STACKTRACES": ( "socketserver", "threading", "wsgiref", "debug_toolbar", "django.db", "django.core.handlers", "django.core.servers", "django.utils.decorators", "django.utils.deprecation", "django.utils.functional", ), "PRETTIFY_SQL": True, "PROFILER_CAPTURE_PROJECT_CODE": True, "PROFILER_MAX_DEPTH": 10, "PROFILER_THRESHOLD_RATIO": 8, "SHOW_TEMPLATE_CONTEXT": True, "SKIP_TEMPLATE_PREFIXES": ("django/forms/widgets/", "admin/widgets/"), "SKIP_TOOLBAR_QUERIES": True, "SQL_WARNING_THRESHOLD": 500, # milliseconds } @cache def get_config(): USER_CONFIG = getattr(settings, "DEBUG_TOOLBAR_CONFIG", {}) CONFIG = CONFIG_DEFAULTS.copy() CONFIG.update(USER_CONFIG) return CONFIG PANELS_DEFAULTS = [ "debug_toolbar.panels.history.HistoryPanel", "debug_toolbar.panels.versions.VersionsPanel", "debug_toolbar.panels.timer.TimerPanel", "debug_toolbar.panels.settings.SettingsPanel", "debug_toolbar.panels.headers.HeadersPanel", "debug_toolbar.panels.request.RequestPanel", "debug_toolbar.panels.sql.SQLPanel", "debug_toolbar.panels.staticfiles.StaticFilesPanel", "debug_toolbar.panels.templates.TemplatesPanel", "debug_toolbar.panels.alerts.AlertsPanel", "debug_toolbar.panels.cache.CachePanel", "debug_toolbar.panels.signals.SignalsPanel", "debug_toolbar.panels.tasks.TasksPanel", "debug_toolbar.panels.community.CommunityPanel", "debug_toolbar.panels.redirects.RedirectsPanel", "debug_toolbar.panels.profiling.ProfilingPanel", ] @cache def get_panels(): try: PANELS = list(settings.DEBUG_TOOLBAR_PANELS) except AttributeError: PANELS = PANELS_DEFAULTS logging_panel = "debug_toolbar.panels.logging.LoggingPanel" if logging_panel in PANELS: PANELS = [panel for panel in PANELS if panel != logging_panel] warnings.warn( f"Please remove {logging_panel} from your DEBUG_TOOLBAR_PANELS setting.", DeprecationWarning, stacklevel=1, ) return PANELS @receiver(setting_changed) def update_toolbar_config(*, setting, **kwargs): """ Refresh configuration when overriding settings. """ if setting == "DEBUG_TOOLBAR_CONFIG": get_config.cache_clear() elif setting == "DEBUG_TOOLBAR_PANELS": from debug_toolbar.toolbar import DebugToolbar get_panels.cache_clear() DebugToolbar._panel_classes = None # Not implemented: invalidate debug_toolbar.urls. python-django-debug-toolbar-8.0.0/debug_toolbar/static/000077500000000000000000000000001524561404200231265ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/000077500000000000000000000000001524561404200257365ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/css/000077500000000000000000000000001524561404200265265ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/css/print.css000066400000000000000000000000531524561404200303720ustar00rootroot00000000000000#djDebug { display: none !important; } python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/css/toolbar.css000066400000000000000000001030351524561404200307040ustar00rootroot00000000000000/* Self-hosted fonts Alef and Geist is the primary font for the rest of the toolbar text. */ @font-face { font-family: "Alef"; font-style: normal; font-weight: 700; font-display: swap; src: url("../fonts/Alef-Bold.woff2") format("woff2"), url("../fonts/Alef-Bold.ttf") format("truetype"); } @font-face { font-family: "Geist"; font-style: normal; font-weight: 100 900; font-display: swap; src: url("../fonts/Geist.woff2") format("woff2"); } /* Variable definitions */ #djDebug { /* Font families are the same as in Django admin/css/base.css */ --djdt-font-family-primary: "Geist", "Segoe UI", system-ui, Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; --djdt-font-family-monospace: ui-monospace, Menlo, Monaco, "Cascadia Mono", "Segoe UI Mono", "Roboto Mono", "Oxygen Mono", "Ubuntu Monospace", "Source Code Pro", "Fira Mono", "Droid Sans Mono", "Courier New", monospace, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } #djDebug, #djDebug[data-theme="light"] { --djdt-accent-color: #30c16e; --djdt-nav-hover-background-color: rgba(255, 255, 255, 0.08); --djdt-font-color: black; --djdt-background-color: white; --djdt-panel-content-background-color: #f5f6f7; --djdt-panel-content-table-background-color: var(--djdt-background-color); --djdt-panel-title-background-color: #e0f8ff; --djdt-panel-title-color: #666; --djdt-panel-content-table-strip-background-color: #f9f9f9; --djdt-highlighted-background-color: rgba(92, 184, 92, 0.14); --djdt-toggle-template-background-color: #bbb; --djdt-sql-font-color: #333; --djdt-pre-text-color: #666; --djdt-path-and-locals: black; --djdt-stack-span-color: #666; --djdt-template-highlight-color: #333; --djdt-table-header-color: #666; --djdt-table-header-background-color: #f8f8f8; --djdt-table-border-color: #3d8b3d; --djdt-focus-color: #3d8b3d; --djdt-timeline-bar-color: rgba(92, 184, 92, 0.7); --djdt-button-border-color: #ccc; --djdt-button-hover-border-color: #aaa; --djdt-pre-border-color: var(--djdt-table-border-color); --djdt-raw-border-color: var(--djdt-table-border-color); } #djDebug[data-theme="dark"] { --djdt-font-color: #f8f8f2; --djdt-background-color: #121212; --djdt-panel-content-background-color: #014a5f; --djdt-panel-content-table-background-color: var(--djdt-background-color); --djdt-panel-title-background-color: #014a5f; --djdt-panel-title-color: #f8f8f2; --djdt-panel-content-table-strip-background-color: #171717; --djdt-highlighted-background-color: rgba(92, 184, 92, 0.18); --djdt-toggle-template-background-color: #353535; --djdt-sql-font-color: var(--djdt-font-color); --djdt-pre-text-color: var(--djdt-font-color); --djdt-path-and-locals: #bbb; --djdt-stack-span-color: #ccc; --djdt-template-highlight-color: var(--djdt-stack-span-color); --djdt-table-header-color: #f8f8f8; --djdt-table-header-background-color: #212121; --djdt-table-border-color: var(--djdt-accent-color); --djdt-focus-color: var(--djdt-accent-color); --djdt-timeline-bar-color: #6ec86e; --djdt-button-border-color: #666; --djdt-pre-border-color: var(--djdt-table-border-color); --djdt-raw-border-color: var(--djdt-table-border-color); } /* Debug Toolbar CSS Reset, adapted from Eric Meyer's CSS Reset */ #djDebug { color: var(--djdt-font-color); background: var(--djdt-background-color); font-weight: 500; } #djDebug, #djDebug div, #djDebug span, #djDebug applet, #djDebug object, #djDebug iframe, #djDebug h1, #djDebug h2, #djDebug h3, #djDebug h4, #djDebug h5, #djDebug h6, #djDebug p, #djDebug blockquote, #djDebug pre, #djDebug a, #djDebug abbr, #djDebug acronym, #djDebug address, #djDebug big, #djDebug cite, #djDebug code, #djDebug del, #djDebug dfn, #djDebug em, #djDebug font, #djDebug img, #djDebug ins, #djDebug kbd, #djDebug q, #djDebug s, #djDebug samp, #djDebug small, #djDebug strike, #djDebug strong, #djDebug sub, #djDebug sup, #djDebug tt, #djDebug var, #djDebug b, #djDebug u, #djDebug i, #djDebug center, #djDebug dl, #djDebug dt, #djDebug dd, #djDebug ol, #djDebug ul, #djDebug li, #djDebug fieldset, #djDebug form, #djDebug label, #djDebug legend, #djDebug table, #djDebug caption, #djDebug tbody, #djDebug tfoot, #djDebug thead, #djDebug tr, #djDebug th, #djDebug td, #djDebug summary, #djDebug button { margin: 0; padding: 0; min-width: auto; width: auto; min-height: auto; height: auto; border: 0; outline: 0; font-size: 12px; line-height: 1.5em; color: var(--djdt-font-color); vertical-align: baseline; background-color: transparent; font-family: var(--djdt-font-family-primary); text-align: left; text-shadow: none; white-space: normal; transition: none; } #djDebug button { background-color: var(--djdt-background-color); border: 1px solid var(--djdt-button-border-color); border-radius: 4px; color: var(--djdt-font-color); line-height: 1; padding: 4px 8px; text-align: center; text-decoration: none; } #djDebug[data-theme="light"] button { box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset; } #djDebug button:hover { border-color: var(--djdt-button-hover-border-color); cursor: pointer; } #djDebug button:active { border: 1px solid #aaa; } #djDebug summary { cursor: pointer; } /* Focus outline */ #djDebug :focus-visible { outline: 2px solid var(--djdt-focus-color); outline-offset: 2px; } /* Visually hidden, shown to assistive tech. */ #djDebug .djdt-sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; border: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; } #djDebug #djDebugToolbar { background-color: #111; width: 240px; z-index: 100000000; position: fixed; top: 0; bottom: 0; right: 0; opacity: 0.9; overflow-y: auto; } #djDebug #djDebugToolbar small { color: #999; } #djDebug #djDebugToolbar ul { margin: 0; padding: 0; list-style: none; } #djDebug #djDebugToolbar li { border-bottom: 1px solid #222; color: #fff; display: block; font-weight: bold; float: none; margin: 0; padding: 0; position: relative; width: auto; } #djDebug #djDebugToolbar li.djdt-logo { border-bottom: none; box-sizing: border-box; text-align: center; padding: 15px 10px; width: 100%; } #djDebug #djDebugToolbar li.djdt-logo img { width: 300px; max-width: 100%; height: auto; display: block; margin: 0 auto; } #djDebug #djDebugToolbar input[type="checkbox"] { float: right; margin-block: 10px; margin-inline: 10px 15px; } #djDebug #djDebugToolbar li > a, #djDebug #djDebugToolbar li > div.djdt-contentless { font-weight: normal; font-style: normal; text-decoration: none; display: block; font-size: 16px; padding: 7px 10px 8px 25px; color: #fff; } #djDebug #djDebugToolbar li.djdt-hide-row { display: flex; justify-content: space-between; } #djDebug #djDebugToolbar li .djdt-docs-icon { width: 1.2em; height: 1.2em; margin-inline-start: 5px; vertical-align: text-bottom; } #djDebug #djDebugToolbar li .djdt-nav-icon { width: 1.4em; height: 1.4em; margin-inline-end: 3px; vertical-align: text-bottom; } #djDebug #djDebugToolbar li#djdt-VersionsPanel .djdt-nav-icon { width: auto; height: 1.4em; } #djDebug #djDebugToolbar li > div.djdt-disabled { font-style: italic; color: #999; } #djDebug #djDebugToolbar li a:hover { background-color: var(--djdt-nav-hover-background-color); } #djDebug #djDebugToolbar li.djdt-active { background: #333; } #djDebug #djDebugToolbar li.djdt-active:before { content: "â–¶"; font-family: var(--djdt-font-family-primary); position: absolute; left: 0; top: 50%; transform: translateY(-50%); color: #eee; font-size: 150%; } #djDebug #djDebugToolbar li.djdt-active a:hover { color: var(--djdt-accent-color); background-color: transparent; } #djDebug #djDebugToolbar li small { font-size: 12px; color: #999; font-style: normal; text-decoration: none; } #djDebug #djDebugToolbarHandle { position: fixed; transform: translateY(-100%) rotate(-90deg); transform-origin: right bottom; top: 0; right: 0; z-index: 100000000; } #djDebug #djShowToolBarButton { padding: 2px; display: flex; align-items: center; justify-content: center; cursor: move; opacity: 0.85; background-color: var(--djdt-accent-color); border-radius: 4px 4px 0 0; } #djDebug #djShowToolBarButton:hover { opacity: 4; cursor: move; } #djDebug #djShowToolBarButton img { display: block; transform: rotate(90deg); width: 50px; height: 50px; } #djDebug pre, #djDebug code { display: block; font-family: var(--djdt-font-family-monospace); overflow: auto; } #djDebug code { font-size: 12px; white-space: pre; } #djDebug pre { white-space: pre-wrap; color: var(--djdt-pre-text-color); border: 1px solid var(--djdt-pre-border-color); border-collapse: collapse; background-color: var(--djdt-background-color); padding: 8px; margin-bottom: 3px; } #djDebug pre span { font-family: var(--djdt-font-family-monospace); } #djDebug .djdt-panelContent { position: fixed; margin: 0; top: 0; right: 240px; bottom: 0; left: 0px; background-color: var(--djdt-panel-content-background-color); color: #666; z-index: 100000000; } #djDebug .djdt-panelContent > div { border-bottom: 1px solid var(--djdt-table-border-color); } #djDebug .djDebugPanelTitle { position: absolute; background-color: var(--djdt-panel-title-background-color); color: var(--djdt-panel-title-color); padding-left: 20px; top: 0; right: 0; left: 0; height: 50px; display: flex; align-items: center; gap: 15px; } #djDebug .djDebugPanelTitle h3 { font-family: "Alef", var(--djdt-font-family-primary); font-weight: 700; } #djDebug .djdt-cache-note { margin: 1em 0; padding: 8px 10px; border: 1px solid var(--djdt-table-border-color); background-color: var(--djdt-panel-content-table-strip-background-color); } #djDebug .djDebugPanelTitle code, #djDebug .djdt-cache-note code { display: inline; font-size: inherit; } #djDebug .djDebugPanelContent { position: absolute; top: 50px; right: 0; bottom: 0; left: 0; height: auto; padding: 5px 0 0 20px; } #djDebug .djDebugPanelContent .djdt-loader { margin: 80px auto; border: 6px solid white; border-radius: 50%; border-top: 6px solid #ffe761; width: 38px; height: 38px; animation: spin 2s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } #djDebug .djDebugPanelContent .djdt-scroll { height: 100%; overflow: auto; display: block; padding: 0 10px 0 0; } #djDebug h3 { font-size: 24px; font-weight: normal; line-height: 50px; } #djDebug h4 { font-size: 20px; font-weight: 400; margin-top: 0.8em; } #djDebug .djdt-panelContent table { border: 1px solid var(--djdt-table-border-color); border-collapse: collapse; width: 100%; background-color: var(--djdt-panel-content-table-background-color); display: table; margin-top: 0.8em; overflow: auto; } #djDebug .djdt-panelContent tbody > tr:nth-child(odd):not(.djdt-highlighted) { background-color: var(--djdt-panel-content-table-strip-background-color); } #djDebug .djdt-panelContent tbody th { border-top: 1px solid var(--djdt-table-border-color); font-weight: 600; } #djDebug .djdt-panelContent tbody td, #djDebug .djdt-panelContent tbody th { vertical-align: top; padding: 8px 10px; border-bottom: 1px solid var(--djdt-table-border-color); } #djDebug .djdt-panelContent tbody td.djdt-time { text-align: right; min-width: 50px; } #djDebug .djdt-panelContent thead th { padding: 8px 10px; color: var(--djdt-table-header-color); border-bottom: 1px solid var(--djdt-table-border-color); background-color: var(--djdt-table-header-background-color); text-align: left; text-transform: uppercase; font-weight: 600; font-size: 11px; white-space: nowrap; } #djDebug .djdt-panelContent .djdt-codeContext tbody td { padding: 2px 3px; border-bottom: none; } #djDebug .djTemplateContext { padding: 8px; background-color: var(--djdt-panel-content-table-strip-background-color); border: 1px solid var(--djdt-pre-border-color); } #djDebug .djdt-panelContent .djDebugClose { position: absolute; top: 4px; right: 15px; line-height: 16px; border: 3px solid #4d4d4d; border-radius: 50%; background: #fff; color: #4d4d4d; font-weight: 400; font-size: 24px; height: 36px; width: 36px; padding: 0 0 5px; box-sizing: border-box; display: grid; place-items: center; box-shadow: none; } #djDebug .djdt-panelContent .djDebugClose:hover { background: var(--djdt-accent-color); border-color: #131313; color: #131313; } #djDebug .djdt-panelContent dt, #djDebug .djdt-panelContent dd { display: block; } #djDebug .djdt-panelContent dt { margin-top: 0.75em; } #djDebug .djdt-panelContent dd { margin-left: 10px; } #djDebug a.toggleTemplate { padding: 4px; background-color: var(--djdt-toggle-template-background-color); border-radius: 3px; } #djDebug a.toggleTemplate:hover { padding: 4px; background-color: #444; color: #ffe761; border-radius: 3px; } #djDebug .djDebugCollapsed { color: var(--djdt-sql-font-color); } #djDebug .djDebugUncollapsed { color: var(--djdt-sql-font-color); } #djDebug .djUnselected { display: none; } #djDebug tr.djSelected { display: table-row; } #djDebug .djdt-databaseLegend { margin-top: 1em; } #djDebug .djDebugSql { overflow-wrap: anywhere; } #djDebug .djSQLDetailsDiv tbody th { text-align: left; } #djDebug span.djDebugLineChart { background-color: #777; height: 3px; position: absolute; bottom: 0; top: 0; left: 0; display: block; z-index: 1000000001; } #djDebug span.djDebugLineChartWarning { background-color: #900; } #djDebug .highlight { color: var(--djdt-font-color); } #djDebug .highlight .err { color: var(--djdt-font-color); } /* Error */ /* Styles for pygments HTMLFormatter - This should match debug_toolbar/panels/templates/views.py::template_source - Each line needs to be prefixed with #djDebug .highlight as well. - The .w definition needs to include: white-space: pre-wrap To regenerate: from pygments.formatters import HtmlFormatter print(HtmlFormatter(wrapcode=True).get_style_defs()) */ #djDebug[data-theme="light"] .highlight pre { line-height: 125%; } #djDebug[data-theme="light"] .highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } #djDebug[data-theme="light"] .highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } #djDebug[data-theme="light"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } #djDebug[data-theme="light"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } #djDebug[data-theme="light"] .highlight .hll { background-color: #ffffcc; } #djDebug[data-theme="light"] .highlight .c { color: #3d7b7b; font-style: italic; } /* Comment */ #djDebug[data-theme="light"] .highlight .err { border: 1px solid #ff0000; } /* Error */ #djDebug[data-theme="light"] .highlight .k { color: #008000; font-weight: bold; } /* Keyword */ #djDebug[data-theme="light"] .highlight .o { color: #666666; } /* Operator */ #djDebug[data-theme="light"] .highlight .ch { color: #3d7b7b; font-style: italic; } /* Comment.Hashbang */ #djDebug[data-theme="light"] .highlight .cm { color: #3d7b7b; font-style: italic; } /* Comment.Multiline */ #djDebug[data-theme="light"] .highlight .cp { color: #9c6500; } /* Comment.Preproc */ #djDebug[data-theme="light"] .highlight .cpf { color: #3d7b7b; font-style: italic; } /* Comment.PreprocFile */ #djDebug[data-theme="light"] .highlight .c1 { color: #3d7b7b; font-style: italic; } /* Comment.Single */ #djDebug[data-theme="light"] .highlight .cs { color: #3d7b7b; font-style: italic; } /* Comment.Special */ #djDebug[data-theme="light"] .highlight .gd { color: #a00000; } /* Generic.Deleted */ #djDebug[data-theme="light"] .highlight .ge { font-style: italic; } /* Generic.Emph */ #djDebug[data-theme="light"] .highlight .ges { font-weight: bold; font-style: italic; } /* Generic.EmphStrong */ #djDebug[data-theme="light"] .highlight .gr { color: #e40000; } /* Generic.Error */ #djDebug[data-theme="light"] .highlight .gh { color: #000080; font-weight: bold; } /* Generic.Heading */ #djDebug[data-theme="light"] .highlight .gi { color: #008400; } /* Generic.Inserted */ #djDebug[data-theme="light"] .highlight .go { color: #717171; } /* Generic.Output */ #djDebug[data-theme="light"] .highlight .gp { color: #000080; font-weight: bold; } /* Generic.Prompt */ #djDebug[data-theme="light"] .highlight .gs { font-weight: bold; } /* Generic.Strong */ #djDebug[data-theme="light"] .highlight .gu { color: #800080; font-weight: bold; } /* Generic.Subheading */ #djDebug[data-theme="light"] .highlight .gt { color: #0044dd; } /* Generic.Traceback */ #djDebug[data-theme="light"] .highlight .kc { color: #008000; font-weight: bold; } /* Keyword.Constant */ #djDebug[data-theme="light"] .highlight .kd { color: #008000; font-weight: bold; } /* Keyword.Declaration */ #djDebug[data-theme="light"] .highlight .kn { color: #008000; font-weight: bold; } /* Keyword.Namespace */ #djDebug[data-theme="light"] .highlight .kp { color: #008000; } /* Keyword.Pseudo */ #djDebug[data-theme="light"] .highlight .kr { color: #008000; font-weight: bold; } /* Keyword.Reserved */ #djDebug[data-theme="light"] .highlight .kt { color: #b00040; } /* Keyword.Type */ #djDebug[data-theme="light"] .highlight .m { color: #666666; } /* Literal.Number */ #djDebug[data-theme="light"] .highlight .s { color: #ba2121; } /* Literal.String */ #djDebug[data-theme="light"] .highlight .na { color: #687822; } /* Name.Attribute */ #djDebug[data-theme="light"] .highlight .nb { color: #008000; } /* Name.Builtin */ #djDebug[data-theme="light"] .highlight .nc { color: #0000ff; font-weight: bold; } /* Name.Class */ #djDebug[data-theme="light"] .highlight .no { color: #880000; } /* Name.Constant */ #djDebug[data-theme="light"] .highlight .nd { color: #aa22ff; } /* Name.Decorator */ #djDebug[data-theme="light"] .highlight .ni { color: #717171; font-weight: bold; } /* Name.Entity */ #djDebug[data-theme="light"] .highlight .ne { color: #cb3f38; font-weight: bold; } /* Name.Exception */ #djDebug[data-theme="light"] .highlight .nf { color: #0000ff; } /* Name.Function */ #djDebug[data-theme="light"] .highlight .nl { color: #767600; } /* Name.Label */ #djDebug[data-theme="light"] .highlight .nn { color: #0000ff; font-weight: bold; } /* Name.Namespace */ #djDebug[data-theme="light"] .highlight .nt { color: #008000; font-weight: bold; } /* Name.Tag */ #djDebug[data-theme="light"] .highlight .nv { color: #19177c; } /* Name.Variable */ #djDebug[data-theme="light"] .highlight .ow { color: #aa22ff; font-weight: bold; } /* Operator.Word */ #djDebug[data-theme="light"] .highlight .w { color: #bbbbbb; white-space: pre-wrap; } /* Text.Whitespace */ #djDebug[data-theme="light"] .highlight .mb { color: #666666; } /* Literal.Number.Bin */ #djDebug[data-theme="light"] .highlight .mf { color: #666666; } /* Literal.Number.Float */ #djDebug[data-theme="light"] .highlight .mh { color: #666666; } /* Literal.Number.Hex */ #djDebug[data-theme="light"] .highlight .mi { color: #666666; } /* Literal.Number.Integer */ #djDebug[data-theme="light"] .highlight .mo { color: #666666; } /* Literal.Number.Oct */ #djDebug[data-theme="light"] .highlight .sa { color: #ba2121; } /* Literal.String.Affix */ #djDebug[data-theme="light"] .highlight .sb { color: #ba2121; } /* Literal.String.Backtick */ #djDebug[data-theme="light"] .highlight .sc { color: #ba2121; } /* Literal.String.Char */ #djDebug[data-theme="light"] .highlight .dl { color: #ba2121; } /* Literal.String.Delimiter */ #djDebug[data-theme="light"] .highlight .sd { color: #ba2121; font-style: italic; } /* Literal.String.Doc */ #djDebug[data-theme="light"] .highlight .s2 { color: #ba2121; } /* Literal.String.Double */ #djDebug[data-theme="light"] .highlight .se { color: #aa5d1f; font-weight: bold; } /* Literal.String.Escape */ #djDebug[data-theme="light"] .highlight .sh { color: #ba2121; } /* Literal.String.Heredoc */ #djDebug[data-theme="light"] .highlight .si { color: #a45a77; font-weight: bold; } /* Literal.String.Interpol */ #djDebug[data-theme="light"] .highlight .sx { color: #008000; } /* Literal.String.Other */ #djDebug[data-theme="light"] .highlight .sr { color: #a45a77; } /* Literal.String.Regex */ #djDebug[data-theme="light"] .highlight .s1 { color: #ba2121; } /* Literal.String.Single */ #djDebug[data-theme="light"] .highlight .ss { color: #19177c; } /* Literal.String.Symbol */ #djDebug[data-theme="light"] .highlight .bp { color: #008000; } /* Name.Builtin.Pseudo */ #djDebug[data-theme="light"] .highlight .fm { color: #0000ff; } /* Name.Function.Magic */ #djDebug[data-theme="light"] .highlight .vc { color: #19177c; } /* Name.Variable.Class */ #djDebug[data-theme="light"] .highlight .vg { color: #19177c; } /* Name.Variable.Global */ #djDebug[data-theme="light"] .highlight .vi { color: #19177c; } /* Name.Variable.Instance */ #djDebug[data-theme="light"] .highlight .vm { color: #19177c; } /* Name.Variable.Magic */ #djDebug[data-theme="light"] .highlight .il { color: #666666; } /* Literal.Number.Integer.Long */ #djDebug[data-theme="dark"] .highlight .hll { background-color: #f1fa8c; } #djDebug[data-theme="dark"] .highlight { background: #282a36; color: #f8f8f2; } #djDebug[data-theme="dark"] .highlight .c { color: #6272a4; } /* Comment */ #djDebug[data-theme="dark"] .highlight .err { color: #f8f8f2; } /* Error */ #djDebug[data-theme="dark"] .highlight .g { color: #f8f8f2; } /* Generic */ #djDebug[data-theme="dark"] .highlight .k { color: #ff79c6; } /* Keyword */ #djDebug[data-theme="dark"] .highlight .l { color: #f8f8f2; } /* Literal */ #djDebug[data-theme="dark"] .highlight .n { color: #f8f8f2; } /* Name */ #djDebug[data-theme="dark"] .highlight .o { color: #ff79c6; } /* Operator */ #djDebug[data-theme="dark"] .highlight .x { color: #f8f8f2; } /* Other */ #djDebug[data-theme="dark"] .highlight .p { color: #f8f8f2; } /* Punctuation */ #djDebug[data-theme="dark"] .highlight .ch { color: #6272a4; } /* Comment.Hashbang */ #djDebug[data-theme="dark"] .highlight .cm { color: #6272a4; } /* Comment.Multiline */ #djDebug[data-theme="dark"] .highlight .cp { color: #ff79c6; } /* Comment.Preproc */ #djDebug[data-theme="dark"] .highlight .cpf { color: #6272a4; } /* Comment.PreprocFile */ #djDebug[data-theme="dark"] .highlight .c1 { color: #6272a4; } /* Comment.Single */ #djDebug[data-theme="dark"] .highlight .cs { color: #6272a4; } /* Comment.Special */ #djDebug[data-theme="dark"] .highlight .gd { color: #8b080b; } /* Generic.Deleted */ #djDebug[data-theme="dark"] .highlight .ge { color: #f8f8f2; text-decoration: underline; } /* Generic.Emph */ #djDebug[data-theme="dark"] .highlight .gr { color: #f8f8f2; } /* Generic.Error */ #djDebug[data-theme="dark"] .highlight .gh { color: #f8f8f2; font-weight: bold; } /* Generic.Heading */ #djDebug[data-theme="dark"] .highlight .gi { color: #f8f8f2; font-weight: bold; } /* Generic.Inserted */ #djDebug[data-theme="dark"] .highlight .go { color: #44475a; } /* Generic.Output */ #djDebug[data-theme="dark"] .highlight .gp { color: #f8f8f2; } /* Generic.Prompt */ #djDebug[data-theme="dark"] .highlight .gs { color: #f8f8f2; } /* Generic.Strong */ #djDebug[data-theme="dark"] .highlight .gu { color: #f8f8f2; font-weight: bold; } /* Generic.Subheading */ #djDebug[data-theme="dark"] .highlight .gt { color: #f8f8f2; } /* Generic.Traceback */ #djDebug[data-theme="dark"] .highlight .kc { color: #ff79c6; } /* Keyword.Constant */ #djDebug[data-theme="dark"] .highlight .kd { color: #8be9fd; font-style: italic; } /* Keyword.Declaration */ #djDebug[data-theme="dark"] .highlight .kn { color: #ff79c6; } /* Keyword.Namespace */ #djDebug[data-theme="dark"] .highlight .kp { color: #ff79c6; } /* Keyword.Pseudo */ #djDebug[data-theme="dark"] .highlight .kr { color: #ff79c6; } /* Keyword.Reserved */ #djDebug[data-theme="dark"] .highlight .kt { color: #8be9fd; } /* Keyword.Type */ #djDebug[data-theme="dark"] .highlight .ld { color: #f8f8f2; } /* Literal.Date */ #djDebug[data-theme="dark"] .highlight .m { color: #bd93f9; } /* Literal.Number */ #djDebug[data-theme="dark"] .highlight .s { color: #f1fa8c; } /* Literal.String */ #djDebug[data-theme="dark"] .highlight .na { color: #50fa7b; } /* Name.Attribute */ #djDebug[data-theme="dark"] .highlight .nb { color: #8be9fd; font-style: italic; } /* Name.Builtin */ #djDebug[data-theme="dark"] .highlight .nc { color: #50fa7b; } /* Name.Class */ #djDebug[data-theme="dark"] .highlight .no { color: #f8f8f2; } /* Name.Constant */ #djDebug[data-theme="dark"] .highlight .nd { color: #f8f8f2; } /* Name.Decorator */ #djDebug[data-theme="dark"] .highlight .ni { color: #f8f8f2; } /* Name.Entity */ #djDebug[data-theme="dark"] .highlight .ne { color: #f8f8f2; } /* Name.Exception */ #djDebug[data-theme="dark"] .highlight .nf { color: #50fa7b; } /* Name.Function */ #djDebug[data-theme="dark"] .highlight .nl { color: #8be9fd; font-style: italic; } /* Name.Label */ #djDebug[data-theme="dark"] .highlight .nn { color: #f8f8f2; } /* Name.Namespace */ #djDebug[data-theme="dark"] .highlight .nx { color: #f8f8f2; } /* Name.Other */ #djDebug[data-theme="dark"] .highlight .py { color: #f8f8f2; } /* Name.Property */ #djDebug[data-theme="dark"] .highlight .nt { color: #ff79c6; } /* Name.Tag */ #djDebug[data-theme="dark"] .highlight .nv { color: #8be9fd; font-style: italic; } /* Name.Variable */ #djDebug[data-theme="dark"] .highlight .ow { color: #ff79c6; } /* Operator.Word */ #djDebug[data-theme="dark"] .highlight .w { color: #f8f8f2; } /* Text.Whitespace */ #djDebug[data-theme="dark"] .highlight .mb { color: #bd93f9; } /* Literal.Number.Bin */ #djDebug[data-theme="dark"] .highlight .mf { color: #bd93f9; } /* Literal.Number.Float */ #djDebug[data-theme="dark"] .highlight .mh { color: #bd93f9; } /* Literal.Number.Hex */ #djDebug[data-theme="dark"] .highlight .mi { color: #bd93f9; } /* Literal.Number.Integer */ #djDebug[data-theme="dark"] .highlight .mo { color: #bd93f9; } /* Literal.Number.Oct */ #djDebug[data-theme="dark"] .highlight .sa { color: #f1fa8c; } /* Literal.String.Affix */ #djDebug[data-theme="dark"] .highlight .sb { color: #f1fa8c; } /* Literal.String.Backtick */ #djDebug[data-theme="dark"] .highlight .sc { color: #f1fa8c; } /* Literal.String.Char */ #djDebug[data-theme="dark"] .highlight .dl { color: #f1fa8c; } /* Literal.String.Delimiter */ #djDebug[data-theme="dark"] .highlight .sd { color: #f1fa8c; } /* Literal.String.Doc */ #djDebug[data-theme="dark"] .highlight .s2 { color: #f1fa8c; } /* Literal.String.Double */ #djDebug[data-theme="dark"] .highlight .se { color: #f1fa8c; } /* Literal.String.Escape */ #djDebug[data-theme="dark"] .highlight .sh { color: #f1fa8c; } /* Literal.String.Heredoc */ #djDebug[data-theme="dark"] .highlight .si { color: #f1fa8c; } /* Literal.String.Interpol */ #djDebug[data-theme="dark"] .highlight .sx { color: #f1fa8c; } /* Literal.String.Other */ #djDebug[data-theme="dark"] .highlight .sr { color: #f1fa8c; } /* Literal.String.Regex */ #djDebug[data-theme="dark"] .highlight .s1 { color: #f1fa8c; } /* Literal.String.Single */ #djDebug[data-theme="dark"] .highlight .ss { color: #f1fa8c; } /* Literal.String.Symbol */ #djDebug[data-theme="dark"] .highlight .bp { color: #f8f8f2; font-style: italic; } /* Name.Builtin.Pseudo */ #djDebug[data-theme="dark"] .highlight .fm { color: #50fa7b; } /* Name.Function.Magic */ #djDebug[data-theme="dark"] .highlight .vc { color: #8be9fd; font-style: italic; } /* Name.Variable.Class */ #djDebug[data-theme="dark"] .highlight .vg { color: #8be9fd; font-style: italic; } /* Name.Variable.Global */ #djDebug[data-theme="dark"] .highlight .vi { color: #8be9fd; font-style: italic; } /* Name.Variable.Instance */ #djDebug[data-theme="dark"] .highlight .vm { color: #8be9fd; font-style: italic; } /* Name.Variable.Magic */ #djDebug[data-theme="dark"] .highlight .il { color: #bd93f9; } /* Literal.Number.Integer.Long */ #djDebug svg.djDebugLineChart { width: 100%; height: 1.5em; } #djDebug svg.djDebugLineChartWarning rect { fill: #900; } #djDebug svg.djDebugLineChartInTransaction rect { fill: rgba(92, 184, 92, 0.25); } #djDebug #TimerPanel svg.djDebugLineChart rect { fill: var(--djdt-timeline-bar-color); } #djDebug svg.djDebugLineChart line { stroke: #3d8b3d; } #djDebug .djDebugRowWarning .djdt-time { color: red; } #djDebug .djdt-panelContent table .djdt-toggle { width: 14px; padding-top: 3px; padding-right: 0; } #djDebug .djdt-panelContent table .djdt-actions { min-width: 82px; white-space: nowrap; } #djDebug .djdt-color:after { content: "\00a0"; } #djDebug .djToggleSwitch { box-sizing: content-box; padding: 1px 2px 3px; margin-top: 5px; border: 1px solid var(--djdt-button-border-color); border-radius: 2px; width: 12px; color: var(--djdt-font-color); } #djDebug .djNoToggleSwitch { height: 14px; width: 14px; display: inline-block; } #djDebug .djSQLDetailsDiv { margin-top: 0.8em; } #djDebug .djdt-stack span { color: var(--djdt-stack-span-color); font-weight: bold; } #djDebug .djdt-stack span.djdt-path, #djDebug .djdt-stack pre.djdt-locals, #djDebug .djdt-stack pre.djdt-locals span { color: var(--djdt-path-and-locals); font-weight: normal; } #djDebug .djdt-stack span.djdt-code { font-weight: normal; } #djDebug .djdt-stack pre.djdt-locals { margin: 0 27px 27px 27px; } #djDebug .djdt-raw { background-color: #fff; border: 1px solid var(--djdt-raw-border-color); margin-top: 0.8em; padding: 5px; white-space: pre-wrap; } #djDebug .djdt-width-20 { width: 20%; } #djDebug .djdt-width-30 { width: 30%; } #djDebug .djdt-width-60 { width: 60%; } #djDebug .djdt-max-height-100 { max-height: 100%; } #djDebug .djdt-highlighted { background-color: var(--djdt-highlighted-background-color); } #djDebug tr.djdt-highlighted { border-inline-start: 3px solid var(--djdt-focus-color); } @keyframes djdt-flash-new { from { background-color: green; } to { background-color: inherit; } } #djDebug .flash-new { animation: djdt-flash-new 1s; } /* Reduced motion (WCAG 2.3.3)*/ @media (prefers-reduced-motion: reduce) { #djDebug *, #djDebug *::before, #djDebug *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } .djdt-hidden { display: none; } #djDebug #djDebugToolbar a#djToggleThemeButton { display: flex; align-items: center; cursor: pointer; } #djToggleThemeButton > svg { margin-left: auto; } #djDebug[data-user-theme="light"] #djToggleThemeButton svg.theme-light, #djDebug[data-user-theme="dark"] #djToggleThemeButton svg.theme-dark, #djDebug[data-user-theme="auto"] #djToggleThemeButton svg.theme-auto { display: block; height: 1rem; width: 1rem; } #djDebug .djdt-community-panel { padding: 1.5em; } #djDebug .djdt-community-panel h2 { font-size: 2em; } #djDebug .djdt-community-panel p { font-size: 1em; margin: 0 0 1em 0; } #djDebug .djdt-community-panel .djdt-community-description { font-size: 1em; margin: 0 0 1.5em 0; } #djDebug .djdt-community-panel ul { list-style-type: disc; padding-left: 1.25em; margin: 1em 0; } #djDebug .djdt-community-panel li { margin: 0.5em 0; } #djDebug .djdt-community-panel a { font-weight: bold; font-size: 1em; } /* biome-ignore lint/style/noDescendingSpecificity: targets community-panel links, a different element than the higher-specificity */ #djDebug .djdt-community-panel a:hover { text-decoration: underline; } /* History panel: refresh control in the panel title bar. */ #djDebug .djDebugPanelTitle .djdtHistoryRefreshForm { display: inline-flex; align-items: center; margin-block: 0; margin-inline: auto 90px; } #djDebug .djDebugPanelTitle .refreshHistory { background-color: #131313; color: #fff; border: none; box-shadow: none; padding: 8px 18px; font-size: 14px; } #djDebug[data-theme="dark"] .djDebugPanelTitle .refreshHistory { background-color: #fff; color: #131313; } python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/fonts/000077500000000000000000000000001524561404200270675ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/fonts/Alef-Bold.ttf000066400000000000000000002642301524561404200313420ustar00rootroot00000000000000 FFTMf­°&aXGDEF®ýatBGPOSs½ùìa¸’GSUBŒ|µeLJOS/2�,Òɨ`cmap'e‰¨öcvt |‚vdXˆfpgmv½DÄ  #gaspaPglyfœÈ®ê48head ÿ””,6hheaJëd$hmtx8¶ locar»%àRmaxpÅ܈ namegÈ7åT8Ípost·Î†·W FprepÚ!?ÛÄ“ƒ¶Aû_<õÍo|èÕ+ÌÃÿ»ýVyý.hÿ»ü¬y¨¨†/Y¬%†¼3Ì™3ÌÌ–p@UKWN ûKfþfÒ ³ž ìD:Ç–­F `ùfxrbôF>¡>¡KÀÀ–º”È̪ÈEnßF[Z1xIdãPSd¢gDZ¶d¢dž»ÔÌgdÀ–gd¬xÎt®*D· s�µ§¶b¶¥s¶¯Ì|¸mÄLI&³xµx+µ÷fZü¦äqLI°[xA “5ÈÛ5´GŒ–?uSÓ±'PÉY²\øgÐaë¬}˜ømr§nf¬ß‹½dÉŒÞd¶’_Ákê‘b2)-ëP™Cgf·æ¢yy:�‚RLtx–P·æ_Úpq`Pª¹ÈÌq`o d—?ÒXF–ôGPª%n®*®*®*®*®*®*W s§¶§¶§¶§¶¯V¯Ì¯ ¯ÿÛ�ÿÄ&³xxxxx:–xü¦ü¦ü¦ü¦xAµ(ºuSuSuSuSuSuSS'P²\²\²\²\}={µ™}ÿÂÖZß‹½d½d½d½d½dÀ–½*ê‘ê‘ê‘ê‘™¬Š™®*uS®*uS®*uS s'P s'P s'P�µÉY�µÉY§¶²\§¶²\§¶²\§¶²\¥sÐa¥sÐa¥sÐaÒdë¯*}¯š}n¯Ê}µÉ _n¸r§mÄnmÄ;mÄn ‚ínx ­&³ß‹&³ß‹&³ß‹(³‹x½dx½dhx d+µ¶’+µ¶’+µ¶’÷f_÷f_÷f_ZÁkZÁkZÁkü¦ê‘ü¦ê‘ü¦ê‘ü¦ê‘LI)-xA™xA “Cg “Cg “Cg÷f_ZÁk>T>TÔ"XžÆ X�diq’fCMLfÒÓÊÊÒÒfÒ<x·æÒÒž»Êõ�…P£4ugµ…σ¨MþRrÔdBDHF=dÛ ÿrÑmlG¾?ã8‹k�Z«X§EÜS±W<ôF­FLI)-LI)-LI)-xA™  ±XX�rXXÈÌÈÌÈ̤B)ô<ôFôF®<­F²FXX‚|:¶�ƒxâªâÈíd“A†x d)bgMg±W±ÿ»±W±ÿ»õ�õ�õ�…P£4ugµ…Ï ¨KrÔBDHF=dÿrlG¾?‹k�Z§EÜS±W<σìÐp@0 ~£©±´¸»#'+37HM[gk~Çݼ¾ÃÇêô…ó    " & 0 : D _ ª ¬!"àûû6û<û>ûAûDûKÿÿ  ¥«´¶»¿ &*.69JP^jnÆØ°¾ÀÇÐó€ò    & / 9 D _ ª ¬!"àûû*û8û>û@ûCûFÿÿÿõÿãÿÂÿÁÿÀÿ¾ÿ½ÿ»ÿ¸ÿ¶ÿ´ÿ²ÿ°ÿ®ÿ¬ÿªÿ©ÿ¨ÿ¦ÿ¤ÿ¢ÿ ÿþ]þMû{ûzûyûvûnûfâÛâoácá`á]á\á[áXáPáHá?á%àÛàÚàe!ˆˆa`_^]\   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a|}�‰Ž”™˜šœ›�Ÿ¡ ¢£¥¤¦§©«ª¬®­²±³´{pdeh}s—nj‡ri~�qfž°wclkv~bx{�øùstxyuv¯·ƒ†�‚‰Š|twz€z‚yƒ€…†‡„‹ŒŠ’“‘Ý#)o%&'u*($@?XUTSRQPONMLKJIHGFEDCBA@?>=<;:98765/.-,(&%$#" ,E#F` °&`°&#HH-,E#F#a °&a°&#HH-,E#F`° a °F`°&#HH-,E#F#a° ` °&a° a°&#HH-,E#F`°@a °f`°&#HH-,E#F#a°@` °&a°@a°&#HH-, <<-, E# °ÍD# ¸ZQX# °�D#Y °íQX# °MD#Y °&QX# ° D#Y!!-, EhD °` E°FvhŠE`D-,± C#Ce -,± C#C -,°(#p±(>°(#p±(E:± -, E°%Ead°PQXED!!Y-, E°C`D-,°C°Ce -, i°@a°‹ ±,ÀŠŒ¸b`+ d#da\X°aY-,ŠEŠŠ‡°+°)#D°)zä-,Ee°,#DE°+#D-,KRXED!!Y-,°%# Šõ°`#íì-,°%# Šõ°a#íì-,°%õíì-, °` <<-, °a <<-,°C°C -,!! d#d‹¸@b-,!°€QX d#d‹¸ b²@/+Y°`-,!°ÀQX d#d‹¸Ub²€/+Y°`-, d#d‹¸@b`#!-,E#E`#E`#E`#vh°€b -,°&°&°%°%E#E °&`bch °&aeŠ#DD-, E°TX°@D E°@aD!!Y-,E±0/E#Ea`°`iD-,KQX°/#p°#B!!Y-,KQX °%EiSXD!!Y!!Y-,E°C°`c°`iD-,°/ED-,E# EŠ`D-,E#E`D-,K#QX¹3ÿà±4 ³34YDD-,°CX°&EŠXdf°`d° `f X!°@Y°aY#XeY°)#D#°)à!!!!!Y-,°CX°%Ed° `f X!°@Y°a#XeY°)#D°%°% XY°%°% F°%#B<°%°% F°%°`#B< XY°%°%°)à°%°%°)à°%°% XY°%°%CH°%°%°`CH!Y!!!!!!!-,°CX°%Ed° `f X!°@Y°a#XeY°)#D°%°% XY°%°% F°%#B<°%°%°%°% F°%°`#B< XY°%°%°)à°) EeD°%°%°)à°%°% XY°%°%CH°%°%°%°%°`CH!Y!!!!!!!-,°% F°%#B°%°%EH!!!!-,°% °%°%CH!!!-,E# E °P X#e#Y#h °@PX!°@Y#XeYŠ`D-,KS#KQZX EŠ`D!!Y-,KTX EŠ`D!!Y-,KS#KQZX8!!Y-,KTX8!!Y-,°CTX°F+!!!!Y-,°CTX°G+!!!Y-,°CTX°H+!!!!Y-,°CTX°I+!!!Y-, Š#KSŠKQZX#8!!Y-, ŠI°QX°@# Š84!!Y-,F#F`#Fa#  FŠa¸ÿ€bб@@ŠpE`h:-, Š#IdŠ#SX<!Y-,KRX}zY-,°KKTB-,±B±#ˆQ±@ˆSZX¹ ˆTX±BYY-,Eh#KQX# E d°@PX|YhŠ`YD-,°°%°%°#>°#>± ° #eB° #B°#?°#?± °#eB°#B°-@( @ð*/F@ðFïëãÞdÝÊdÊCîêâßdÄBϸ:@¿¾d@¾FõC¸0²ˆ*¸/²ˆ*¸-²Œ*¸,@+ˆ*Àˆ*”ˆ*“ˆ*‘ˆ*�ˆ*�Œ*ŽŒ*ŒC‹ˆdŠˆd¸.@ˆd‰ˆdˆBÖÐ*àDdvn)trdrC)¸C@¼DdÚBpndnBia)hedgedfedeCªcddcdca)Ùa*badaB¡QdZQdYQ)XUdWUdVUdUC) QdTQdSQd¢QdRQdQBùDdØ×*´Dd›Dd³Dd²Dd¤Dd£DdžDdœHdLD)JHdšHdIHdHC)GDdFDdDBpC€C¸ÿÀ@(CFCABAA A /ú?úOúúOó/ó¸d¶UA 76O44@¦ ÂÂ/Â:@Â26FOÂ@Â&)FÂ/Â?ÂÏÂ@ÂF ÁB�ÁOÁÁ�ÁÁ/»ºd¹Up¹�¹ ¹°¹¹à¹ð¹ ¹0¹@¹P¹¹ ¹϶߶‚2{U*{U|*{Uz*yU•*yU’*yU‡*yU�´{Uƒ*~U@€+dF€*{U„*{Uá*UÔU™*U¸2@>*§U©*§U¨*§U * U*U±dU°*®U¯*®U/¬* U*U*U¯ @ F *U*U¸³¸�±TS++K¸ÿRK°P[°ˆ°%S°ˆ°@QZ°ˆ°UZ[X±ŽY…��BK°SX° YK°€SX°±BY+++s+++s+++++++++++++++++++++++sssssttu+ssstt^s^s+st+u+^s^ssss+ssss^ss+++t+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++s+++++++++^ž%ÿèÿè ÿè'ÙÙòÍÃÐÆ¯ ýȲ¾È¨º þÍîÅ Ÿ'ÿà4þÅÿÜÿÃÿöÿèþ¾ ÿmN ÙæÙ +ú/þïSÀþ¨PÑ �Å "0þîþêþ÷ ‘ þþpÿìÿÖ¿·ÑÿhWþ–þ^Uv¦v¦ÿþ¿ýü¾‘k¦‰Z‘öQ˜ wie‘ aÿ/”ôÂÿì  kÿì¶|À"ÿ|÷­¶òðŠ­yÒ#ç³·)Áô øÙþóe*§ææ‘b«ÕE¦Âë;""""j¦L Âö*L|ž°ä ZœzÐDº–  X ˜ â  P ¾ Œ ì L ˜ Þ  8 – È ê`~FšâT¸>f¤èxÐ"fˆ°Ò$FÔ&lÐl>€º ZˆX¦`²&vÊ”öZžz ˆØ : \!!Z!þ"2"L"^# # #n#º#Ü#Ü$$2$f$Ò%N%Ì&F&æ'†((n(Þ)*)v)¾***f*¢*Ú+6+Ž,,t,æ-T-è.z.Î/L/¦00T0Ð1@1�1ú2¤3P3ö4Â5Ž6P77Š7ö8b8È9T9ˆ9¾9î:D:º;L;¶<"<ˆ== =ô>t>ä?T?¾@N@ÎA AÀB.BÈCDCîDpE&E�EôF`FÆG,GŒGêHjH¼I.IjIÆJJ„JÚKNK˜LLzMhMæNÖOPP>PŒPÚQQ,QlQÌR R$R\RÔS–$m8#A2)Û(Œ 4%'33''3G67/F/ü­"üf'33''34%Fžr¶·ãã?í?í016632#%6632#)(],7*2J2¬iþ(],7*2J2¬iz#4#*KYpN!¸ #4#*KYpN!`^«¼è@�           Ø       !  Ø  ×× P`p P ` p  //]/]ÞÄýÄ/ÞÄýÄÖÅÆÄÖÄÁ‡+Á‡}ÄÖÅÆÆÖć+Á‡}Ä013#3##7##7#737#737337#3 Nì.èFë,íN‚FÆPŠPç,çGñ1îN�NÓN|Ñ@ʼÕ}ºÓÓÓÓº}ÕÕÕþ®ºfÿ}“#1:C¨@bÙ00Ù::CÙ##Ù>cE5c+ D:g$$ gCC0P`pDgP`D2g001_ o   #g;g_o/33/]3íí2/]/3í33/]]í2/]]9/í3íÞ2ÖíÖí}Ä29í3í3í3í01&&'#5.'7.54>756654.'ÞN·VG@‰J"[a^J.&@Vag1Í-joq4JM¯eW^]J.Ly˜KAK$4"ÍGR'9$#r&%®!þp )?`†[KvX?+um !°*Ü&;\‚Y\„X1 rþ¿NC&6( ý3dQ)<- x œS'+?S–@^;ÐEÑOÐ1+()*+*)Ö(+(+)((*1UÐ#ÑÐT(,ÒÏ@@ÓJÒ6Ôà*Ñ*¶*æ*ö*T*d*t*”*¤*B* *0** ÒÀÓÒ™?ýöqí3]_]]]_qq?ýöqí2ÖýöíÆ99Á‡+Á‡}Äýöí012#".54>"32>54.5%2#".54>"32>54.„-^M22M^--_N22N_-"/ /"!/ /µü`Ø-^M22M^--_N22N_-"/ /"!/ /S=s__s?=t``s=a3G*+G32G,+G3œ•ýJ”µ=s__s?=t``s=a3G*+G32G,+G3bÿç´P^³@gi ^Q ;F:F ›:F::F >FCC`:VF5F_QQ¾­+k{ëÚ�::++0J'**'[J AšC>CoCCKJ•FFFF  ?33/]qí3]3í?í?3}/í2}/2/2/]]]qqq3/Æ2íí2Æ2í2‡+‡}ććÄÄ01]%#".'#".5467667.5467>32.#"667#5!#32>73267.JFH+$@?E(#]lw7V‹b66b‹V„?[<<[?ÑA¨É瀀çɨA6Z¤­ÁwwÁ­¤Z¡ÿ/ža@ Ú ÜÛ??9Öí23Æ01'>54.'%UŒb66bŒU„?[<<[?aA¨É瀀çɨA6Z¤­ÁwwÁ­¤ZÀ ޳±?017''7'77m é,ä†o™™n…æ,ë ³õ>‚VÊP¾¾PÌV‚@õ–h*ü /@ÆÄ Æ ÌÊ ÊÌo/]3ííýí9/ìÄýí301!!#!5!¿kþ•¾þ•küþ•¾þ•k¾k”þúäà ³ã?í0176632#¹$U(2&-D-œ_© / &EPfGÌÓü‘ ²Ý/í01!5üüБ¾¾Èÿìâ'@ߟ>ß@"%HÞ á?í+r^]ÞýÎ012#".54>U 4%'33''3'33''34%nמ/@à??ÎÖÁ‡+Á‡}Ä01#×ü|儞úbžFÿè™;'(@ #c)c(#g g?í?í9ÖíÖí9012#".54>"32>54.prÊ–WW–ÊrsÊ–WW–Ês@qT11Tq@?qT11Tq;W–ÊrsÊ–WW–ÊsrÊ–Wè2VvCDuW22WuDCvV2Z{D\@5•„ud•„udia ?2/?ÎÞí23/‡+Á‡}Ä]]]]]]]]01!'lþîËDDTü7N²x¹;,E@)"c.,c- g«»™o+f ,'g?3í2?í9/]]]]íÞíÄÞÔí016632!!54>7>54.#"†]àmS�j<,V�T1G0%üÎ2^†T/K4*8 !PTU&Þ-0FtURnP?$",ËaŒfL!'7-#. dþêåA2X@0+, + i,+,+, , 2"c423'h„ ” v  g¨2,e?3í2?í9/]]íÎÞí99//Á‡+Á‡}Ä013!5667>54.#"'#".'»%<$$_JVíIŠ174Aq›ZD}uo5OšEDvV12D((X-K}"PRP"Ašþö-37—N_”qO Ê5EX70D*•' Pþî‘MW@/ i   bbO- ff § ?3???íýÅ]]3ÎÞÕíí9Á‡+Á‡}Ä01>7!5!3#!!'˜&  þì8 ¨¨þôý›(54.#"'J_$$<%L#ORP"»&Y0L‘374Aq›ZD}uo5OšEDvV12D(2n9“! ô.47—N_”qO Ê5EX70D*j/dÿèA0,A/@7-232"32>54&'&&Ñ"d¢{T3�E-YSI17VŒ°[=yp_E&" [o}‚�<#@þ“}`3U>6Q7X|!M{Z *7¢j†±i+*Kx©tsÇ\Y‚Z9 ý{3'R ?pV2'Fc;>^ #Zþ÷ô:)@cc  ©f?2í?ÆÆ2í3í01267667!4>7667!5{?Y%$B%1`‡-.4 þî4-#_?ýÍ �ŒÚ[[ŸR)LR\9JzƳ­aK£cÍdÿèR",@PN@+‹AIFLª-27.54>">54.32654.`*``XD)Œ/M6-Mfps47updK, 9P13$)EX__(&@.2N`/0A�#3 zpo{=`x" .Ga@²r7#".'&&54>32#"&'"3276654.Ô"d¢{T3�E-YSI17'F^mx==yp_E&" ]p�9%@|6Q7X1}`3UY!M{Z *7¢jYŠfE+*KxªssÇ\Z‚[8 ˆ'Gb;>^ #3'R ?pV2»ÿìãw'@(#â)ãáã ä?í?íÞ2ý2Î012#".54>2#".54>O!7')66))5!7')66))5w)66))6!6'ý�)66))6!6'Ìþúw#·ã#ã ä?í?í012#".54>6632#‰!7')66))5z$U(2&-D-œ_w)66))6!6'ý2 / &EPfGdÿìh@7öö/?¿åoæ?]?]9/ÌÎ2/Á‡+Á‡}ÄÁ‡+Á‡}Ä015ý‡yüaþþëþèþþËœ–*O @ ÊÊ/íÞí9/33/301!5!5*ül”ülO¾¾þ„¾¾dÿìh@7ww/?¿åoæ?]?]9/ÌÎ2/Á‡+Á‡}ÄÁ‡+Á‡}Ä01dŸüayý‡þ:œþ5xÿìøµ!5@@ 1'67J ", !J?3í2?ÝÎ9í9ÄÄ33Í23Í016632>54.#"2#".54>xjãjk©v?8n£jï' üu'33''34%tÿ%XÑ_sj@)É+Ähè3sè<3<NèuXètcé8Kémé+0+s+88S¸ÿÀ@ZMSé]@ZM]éÔ/]í+/í+9/993í3/ííÞíÞí99íí]]01".54>32#".'&&'&&5##".'&&54>72232654.#"33&&#"3267667fi¨‰a55a‰¨Áji¨‰a554.##2654&##Ï^¨}I/B*/[H-N‰¼nýÒºKjC CjK¨Ìž¡¡žÌž%P~Y>bM: 8XuGx§g/žýÌ,F23F,þ�ýYp‚‚pþsÿè·´#'@%F$J # J ?3í2?3í2ÖíÖÆ01%#"$&546632&&#"3267·YÕn»þý¢HGšó­=wk]$BG¡Yk”[(,bŸrW¯K(#W³¸À¾_ É'@‚Æ…ŽÍ…? µ(ž$@F!D JJ?í?í9ÖíÖí012#!2>54.##;vÈTc†P"#R…aTÈvþz@¥Ðv,+n¼�Zž%{¨ÑzzÒ©}& žû-0vÅ––Èw2ûø¶'ž ,@ D H H H ?í?í9/íÞí2ÞÆÎ01!!!!!ý»›þeZü�žÍþºÍþÍž¶ž '@ D H H ?í?9/íÞí2ÖÎ01!!!!ý»›þeþéžÍþºÍýBžsÿè·)=@' )%D)+F *)H''J%"J ?3í2?3í29/íÞíÞí3/3901%#"$&546632&&#"3267#5!,p€ŠE¯þú®VZ¨ï”?�~u3MeÅXd‘^-.c™l6q:åöF# H¨Î×$³N 'Ã0*?�LJ�͆?[˶`ž -@D D H ????9/í/3ýÆÖí201!!!!!`þéý„þé|žúb½ýCžýìÌãž'@k{P/?D??ÖýÆ]_]]01!ãþéžúbž|þïqž@ D  —??Æ2Þí01'667665q!6QmIp5Sžü�ÄL(NKH$š/O22Ši@¸ö´ Y@/›   ›   DD  ??99.??/ÞííÁ‡+Á‡}ÄÖ‡+‡}Ä01!!!Þ´þJþ þ9þé´–ýÀý"gý™žý¦Ä ž@ DH??íÖí|Æ01!!Û1ü¸žû/ÍžIÿûžع ÿ€@0M @0M ›   ¸ÿÀ@00M  ›     @0M›¸ÿÀ@'0M  ›      ??????????Ö2‡+Á‡}Ä+Ö2‡+Á‡}Ä+9999Á‡+Á‡}Ä+Á‡+‡}Ä+]+01!#!#!!_¤þîvþËþÌþËvþî¤nKKžúb.ûÍ3ûÒžû�³tž =@"›G G  ??????99ÖíÖí‡+‡}Ä01!!!tþËý‹þé5užúb3ûÍžûÍ3xÿ莴',@F( ))#F#J J?í?í9/íÆ]Öí9012#"&&5466"32>54.´ø›DD›ø´±ø›GG›ø±i�U$$U�ih�U%%U�´mÄþ襤þïÄmj¨¨ÂjÍD‡É……ɇDC†Ê††Ê†Cµžž)@F!D D J H?í?9/íÞííÖí012#"&'!32>54.##âi¥r54.´ø›D*]”j.JJR7  6QHHZtP¨ê”CG›ø±i�U$$U�ih�U%%U�´mÄþ車ᶃ$$9.# .+, ".BZ=n ¤¨ÂjÍD‡É……ɇDC†Ê††Ê†Cµôž -9µ&F ¸C@/-D.-I +I?í??9/3íÖí2ÖíÖ2í2012!.'.'#!2>54.##Ça¤xC6b†Q(LGAÆþÅ#WWM'(-þé§AeE$$EeA�ž1b–dQ†c> Sbf+þÑ:•”$!. ý‚žý 1P::P1þ`fÿè“·=a@3»´- -**-Ÿ  - * *F1?'F=>* J=8 "J?3í2?3í299Æ2íÖí399//Á‡+Á‡}Ä]]01732>54.'.54>32&&#"#.'°S½oHxW15`ˆS]™ld€„|/.s~�<ù +8W=BN2">b�jGpS:$"®$*D0>F,Ag˜obŒ_8  %Z½ž'@D  HH??íí/Î]Î9í01!!!5½þ\þéþXžÍû/ÑͦÿéVž(@D D J ?í??/íÆ]Öí901#".5!32>5V@�奨å�=!KxWYzJ žüÚœô¨WZªó˜&ü¸_™k::l™^HqÿþsžZ@.€››????ÆÆ99Á‡+Á‡}ÄÁ‡+}Ä01]!!sþþýþcažú` û—iI�Ù@ €0M @0M ¸ÿÀ@ 0M `0M¸ÿÀ@a0M  ›     ›    ››  ??????????Ö2‡+Á‡}ÄÖ299‡+Á‡}Ä99Á‡+Á‡}ć+Á‡}Ä]+++++01!!!3!3¤þ’þµþµþ’¤v6:6v�úc€û€�ûÉ7ûÉ7[ÿèh· l@90     › ›     ??????ÆÆ99‡+‡}ÄÁ‡+Á‡}ćÄćÄÄ]01 !!e�\&þÂþýþ‘þ´þÚÜþ+·ýòõý=ý—Šúþ°}A7žp@:�Džž  ??9/3????/Æ/Æ9/‡+Á‡}ć+Á‡}Ä3í]01!!7þþèþ0KKžüêýxˆý¥[“wž W@›  V5E¸ÿè@6HY:JH ?í28]]?í]28]]Î2Î2/‡+‡}Ä01!!5!5qýn˜ü”ýƒž§ûÖÍ¡0ÍÈÿ|�"@ êëíëì?í?íÖýÝ2Æ01#3!�²²þG"ÀúÚÀ¦›(ž/@à??ÎÖÁ‡+Á‡}Ä01#bÆÇý:žúbž´ÿ|m"@ê ëíëì?í?íÖýÝ2Æ01!53#5mþG²²"ùZÀ&À«-ZU@(ww///ÆÆ9/Á‡+Á‡}ÄÁ‡+Á‡}Ä01##ö7±ÙÙ°5ZýQéþ¯–öÈ ³Ê?í01%!5öü ÈÈÈ�hƒ ³ ã ?í01.54>32Ì-D-&2(U$:_�GfPE& / ©þúSÿèî'7FR@,FQ.Q H7>T%GFAW .-W8`9p999  74W?3í2?3/39/]3í2í2Öí3/3Æ22íí01>32&&'##".54>7663354.#"#32>7»%_ks;S‘006>{? #FLR-EvW1.@'NÀdV'4Q¥KÑG�b;IBB@8Ý gNþjFm4  ;&$0 !DiG<^J8*‚%+)þÅ.K9?D.±ÿëz (&@S *(SR)W#X ??í?íÖííÖí013>32#"&'32>54.#"ÀBMZ6i�Y'>Œã¦fµ[)N$:cH(*N@(?6/ ýê%;*RŠ·dˆØ—Q •û& FtWT�f93F*PÿèÕ'!'@#S "W!W?3í2?3í2ÖíÖÆ01%#".54>32&&#"3267Õ)beb)‘È{6EŠÎŠPžHC32&#"3267667"  <;32!3267&#")ajm4þùþó6yÅ�úöýAjPF¢Xˆ×os / ýtÐ�\þ÷þðODhG%#!†÷€wgøÇ:@!RR UUUU W?3í2?íí?3ííÆ2ííÔÔÄ014>32&&#"!!!!53#53#S‹hQ¾k+Zƒ21< Nþ²Nüò®®®6i˜a/¾.RAÈý€ÈÈ€Èaþ:¨8eqp@@flioSBS,,siS:7RRZrfWblWiobKeb"W`KpKKK:=W7`1p111¯?]]3í2?]]í?339/99íí2Þ233íÎ222íí99012>7#"'3226232#"&'&&'66732>54.#"##".5467.5467>32"32654&E0D>D0 !731:6!T\_,QCI, ),)P‚]3UŒ´`E‰@2Y& 3f¸L/R<#*9! .[TH5&5);6 PX^-9d&¿XfgWXfi .c1  +S.`�2( 0 @jLWwJ! `7$" /$!/G21e2:Od>^‘3( £jgjgjghi¬g '@RRX ??í??Öí3Öí013>32!4&#"!¿BQb>w‘#þîLG(LD8þí ý¾.J5_a4‚Qý ¯Q_(!?"=--="#<..<«þî -="#<..<#"=-þûðmþFI %,@'R$&° t¬?]Í9??3|/Ö2Æý2Æ012#".54>'7>5£"=--="#<..<¬ -"H8²(1" -="#<..<#"=-þü€GsdY+ Q7Š3(JWlK�§^  `@3ZZ R  ???99??Þí2ÄÆ2Á‡+Á‡}ć+‡}Ä01!!¹¡˜þŽÞþ²þ©þî ý€¥þ¬ýÒŸþa nÿè� @ R  ??Ö2ý22Î01&&5!€B„E˜Sp*! -e<ê¬ë'B6@:)R+D R BR+C X$X?+??í?í??ÖÜý99ÜíÎí201>32!4&'&&#"!4&'&&#"!4.'6673>32U!FQ_<}�þî 9&%D=4þî 9&$B<4þî A�B  AJZ9�‘1@]<up^„ý ®';'32!4&#"!4&'.'667À!GQa;BfJ3 þîOD&ID:þîA�B ^2K37Q33wEý ¯VZ$;J&ýp�Qm*  )/8$dÿè^''(@#S)S(W W?í?í9ÖíÖí9012#".54>"32>54.aƒÀ}==}ÀƒƒÀ}==}ÀƒH\44\HH\44\'R‘ÇuuÈ‘RR‘ÈuuÇ‘RÄ6^HI^66^IH^6Œþop'25@'S42R3® "W  ,X?í?3}/í2|/?Öí22Þí01632#"&'!4.'66732>54.#"¯tÔi�Y'MŒÃv+Q)þï @rB PE;eI**N@/G&i¾R‹·f�Ù’JþyM/RJG$ &,4#ý[ HrRUŽg9&"=#dþr-'&,@SR(S'W !X®??3í?3í2ÞíÖíí01%#".54>32!&&#"32>7:—ki�Y'>Œã¦fµ[þñ)N$;bH( *NA(?6.ˆJVRжeˆØ—Q úkÄ FtWT�f93F*’z'')@ )'"R(¸3² ?3í2?Þ2í22Î20167>32&&#"!4.'667Ç$BCD!5 9T!325!þî A�B ^5"!+ ?@> *E4ýs�:eYP& )/8$_ÿè¼&=7@/ ? 9">%*W4X" W?2í2?39/íí2ÖÔíÖÄí012&&#"#".'66732>54.'.7>`¸E%3‡B&E3'AV/I]3O�¥V9rhZ"*IQU)*L9!'BV.F~^7Jv˜&"(R% ''- 4QuRXxJ 'T$  3%*2 4RuONkAkÿèqþ$1@&RR !%$­ UU# X??3í2?íí?ÞÝííÖÆ01!!3267#".'&&5#535^þ¢ *! U:KRT%#D=4,––þîÈþ 1@% 03/  +—uéÈî‘ÿèj)&@(R + R*)#X ?3í??ÞíÞ22í01.'##"&'&&5!32>7LA�B  !GQa;}� OD&ID:ý~Qm*   )/8$2K3e]6‚MaýPVZ$:K&‘2ÿö0f¹ÿ€³M¸ÿ @0MZZ??????ÆÆ99‡+Á‡}ć+}Ä01++!!0þ¦þ¶þ¦ááûæü«U-ÿòã0'z@A$##Z"!""!$''Z&&&%& &!!& "S)"('&#"!  ±?3????????ÆÖí9////9}‡ÄÄ3‡+}Ä3‡+}Ä01%>54.'>7!!!!>5)#@>># @EFþÀ^˜þÄþò Ô½jÂCxu{G$BHU7 0F!"E&B‰FF‹…|7lþ”ü±¹–Pÿè›' �@<      Z  Z  ¸ÿð@ H H?+???+??ÆÆ99//‡+‡}ÄÁ‡+Á‡}Ä01 !!.CþfOÇþ×úþê�þ–'þ‹_ýûþu™WþÁ標þ\Y/9@ .RR1&R#0?0/%)X ¶W ¯?3í]2?í9??]ÖíÖíí01#"&'66732>75##"&'&&5!32>7YK‰¿sY·N,H”E/0.# !GRb:<¨kaýPVZ$:K&‘gÏ8:@ZUU ?33í2?3í/ÆÆ9Á‡+}Ä01".'6673!!!5’/HCE, 0D>D0üþøü²îH 1c. —ýNÈ—±fÿˆy+=@î!- î!î%%!, !!ïíïì?í?í93Î2íí23Î3í01"3#"&'&&54&'665467663y?H *"#) H?da€&' 6+-4 '&€a­B+þÙC[(*[AþÙ+B­)##]6‚<]-0[;‚6]##)æÿ}Ñ#@ Ríì??ÞýÎ01#Ñë#ùZ¦¢ÿˆµ+=@î ,** î $î - +ïí*ï+ì?í?í93Î2íí23Î3í012##5267665467&&54&'&a€&' 6+-4 '&€ad?H *"#) H?)##]6þ~<]-0[;þ~6]##)­B+'C[(*[A'+B­y­6»@@ð/  ð /3|/í2|/r3/q3}/rí2}//30166323267##".#"y=…#".57"3''3 4%'3ú$m8#A2)Û(&'34%'33'ú¥67.G/S"üäLÿ$<%-m@5$&-% %%¡%/+S.&W$ W?3í2/?33í22/Öí2Ö}Æ2Á‡+Á‡}ćÄÄÄćÄÄÄÄ01&&'2>7#""'#7.5467677‡=%G"A <ª4ZRM':1omc% .Þ6QoFQO‰û9i'M<%@<þû » ý-  ÀÅç[£b•ÝI õþA ,R\¿Xxd´!8@ #R!!R"U W UU!/3íí?3í2?íÖÝí3íÖÖÄ01467>32&&#"!!!!#53&&RYW!M°g!UŠ40BWþ©'ü®®(a“3&)ÊT:pÍýüÍÑÍPFžl@=´´ D   I III ??93ýÞí3ýÞí????ÖÔýÔÆ9/‡+‡}ć+‡}Ä013!!!!!5!5!53!Fþg±þùþùþèþùþù±þg0KKžýtª�ªþÒ.ª�ªŒý¥[æÿ}Ñ#@ Ríì??Ö2í2/Î01##Ñëëë#ýbžûøýbž_ÿè½ÊLaS@.Z 47  c GP A*bWMUW54.'.7667&&55>654&'.e¯K!'A==##B3'AV/I]3("%)(DYdk3sÌU''HJQ2/K5'BV.F_61*+2Dr˜"'AV/ )"97-Ê!(M%   ('. 4QuRDa#'lHBbF, ),'K$ 5)*2 4RuO<]"'jHGjE"ý• ''. 5+2  pšj°' @)ñ#ñ(òó òó?í?íÖýÖýÆ012#".54>!2#".54>þ2&%34''4ÿ2&%34''4°&23&&33%&23&&33%`ÿ"Ñ-Qb@-Hè8.QQ>?8?)èSèR?Bé;>;QNé3.3;3;3$@ZM$é ¸ÿÀµZMé/í+/í+99//3í23í2ÞíÞí99333í012#".54>"32>54.#".54632&&#"32677— Ær4_…¡»ddº¡…_44_…¡ºeuÍ™YY™ÍutÍ™YY™Í�CEEfŒV&ƽ7m1*-M*'=;14&=g3ÑrÆþ÷—dº¡…_44_…¡ºdeº¡…_4¤Y™ÍutÍ™YY™ÍtuÍ™YüŒ  /Z…VÁ¿| tZdqªK¦¿ #@  ÷ø÷ø????9/3/3/3/01edþ¬UeþE—dþ¬UeþE¿cþªþ¨c»¹cþªþ¨c»¹šM�¶Ê/íÆÆ01#!5MÈý4�þ 7¾ÌÓü‘±/Ä01!5üüБ¾¾`ÿ"Ñ-JSq@3RèGèJNè33@J@)èUèTQé.SéGAHHG .G.G$@xM$@ZM$é ¸ÿÀ³xM¸ÿÀµZMé/í++/í++99//93ííÞíÞí993ííí012#".54>"32>54.2#.'##2654&##7— Ær4_…¡»ddº¡…_44_…¡ºeuÍ™YY™ÍutÍ™YY™ÍA4[D&6I*  *B5ÑDK-¼A?@@DÑrÆþ÷—dº¡…_44_…¡ºdeº¡…_4¤Y™ÍutÍ™YY™ÍtuÍ™YÅ0J3.G3  8ZGcx@þÏÍþÚ$44#¯ Õf€»=>?í01!5fý£€««d—»î''@½½##)()¿»¿ /í?í9/9íí012#".54>"32>54.�?nQ..Qn??mQ..Qm? 6))6 7((7î.Qn??mQ..Qm??nQ.–(7 6))6 7(—þî+ý W@5 } aÙ Ê ` À  ÌÊ Ê/oÏÌÿ/]q3í]qíýí]q?í9Äý2í2/ä2/01!!#!5!!5Àkþ•¾þ•k)ülýþ•¾þ•k¾kû¯¾¾Ò�"ƒ ³ã ?í016632#÷$U(2&-D-œ_L / &EPfG–ðݱ /Í012#".54># 4%'33''3Ý'33''34%GþUÞµ ¸5?23/Í01!#"&'732654&'7¥ZPC";R0-].6(C "GFdqF5*>)e "%-¤ªK¦¿ !@÷ø ÷ø??9/3/3/3/??01 '%'»þEeUþ¬@»þEeUþ¬¿þGþEcXVcþGþEcXVnþ]·&3?@,'213''45J112!J$'2 z?ÝÎ/3í29í9ÄÄ33Í23Í012#".54>3267#".54>757™3''3 4%'3Ðz¯p56K-K®Q ^Å]k©v?8n£jï&'34%'33'üÿ5EETC0?$+"3i6%&*X‰`V}bS-ï(*€�@H dL‚››H º96?í????9/3í2ÆÆ99//ÎÁ‡+Á‡}ÄÁ‡+}Ô]‡ÄćÄÄ01+.54>32!!!!‰-D-&2(U$:_<þæ¤þ&¤þ挣F*GfPE& / ©þúŒúbºþFžþ×þ*€’@H dL‚››Hº96?í????9/3í2ÆÆ99//Á‡+Á‡}ÄÁ‡+}Ô]‡ÄćÄÄÎ01+6632#!!!!µ$U(2&-D-œ_rþæ¤þ&¤þ挣FÙ / &EPfGþnúbºþFžþ×þ*€  @J dL  ‚  ›  ›     H  º6:²¸6?3/í?????9/3í2ÆÆ99//ÎÁ‡+Á‡}ÄÁ‡+}Ô]‡ÄćÄÄÎ01+%'!!!!×KKÿÿKÕþæ¤þ&¤þ挣FþWooWãúbºþFžþ×þ*€ #&¼@J$ dL# %$!&$‚$$!$!›"#"#!"$$›##"("' H%&&#"¸;@  / ?  ¸6@ /?º;6?í2/]?3/]í????9/3í2ÆÆ99//ÌÁ‡+Á‡}ÄÁ‡+}Ô]‡ÄćÄÄÎ01+#".#"#>323267!!!!  3E*#C@>%% w 3E*#C@>%% Hþæ¤þ&¤þ挣F (PA(+%(P@)+%þ‘úbºþFžþ×þ*€='/2›@K0 dL/,10-+20*‚00-0*-›././-.0*)(0(*›)()(*)(/(/(.)4.3,+H122)/.)(»6 6?Í?Í????9/3í2ÆÆ99//ÌÁ‡+Á‡}ÄÁ‡+}Ô]‡ÄćÄÄÌ01+2#".54>!2#".54>!!!!è2&%34''4ÿ2&%34''4Lþæ¤þ&¤þ挣F=&23&&33%&23&&33%þaúbºþFžþ×þ*€¥'*�@P( dL'$)(%#*("‚((%("%›&'&'%&("! ( "›! ! "! ' ' &!,&+$#H)**!'&!  ¸6?ÝÞÍ????9/3í2ÆÆ99//ÌÁ‡+Á‡}ÄÁ‡+}Ô]‡ÄćÄÄÌ9901+2#".54>"32654&!!!!×)G55G))G55G)#00##00gþæ¤þ&¤þ挣F¥5G))G55G))G5p0##00##0þiúbºþFžþ×þמX@-DD   ù HH  HH ?í??í99íí/Ô2Á‡+Á‡}Ô2ííÞÆÎ01!!!!!!!3Âý»›þeZü�þÀèþÂL×מÐþ¼ÐþкþFžþ|þhsþU·´:3@%7<.F;&)J% 63J7 ?333/Íí2?3í2ÖíÖÆ01#"&'732654&'7.546632&&#"3267 PC";R0-].6(C "GFW¦æ�AGšó­=wk]$BG¡Yk”[(,bŸrW¯K8Mµ`qF5*>)e "%-Ž `²®À¾_ É'@‚Æ…ŽÍ…? É ¶' 8@DHHH º96?í?í?í9/íÞí2ÞÎÖÌ01.54>32!!!!!-D-&2(U$:_Zý»›þeZü�#GfPE& / ©þú…ÍþºÍþÍž¶' 8@DHHHº96?í?í?í9/íÞýÌ3ÞÆÎ016632#!!!!!H$U(2&-D-œ_�ý»›þeZü�Ò / &EPfGþuÍþºÍþÍž¶'xD@  D H H Hº6:²¸6?3/í??í?í9/íÞýÌ3ÞÎÖÌ01%'!!!!!jKKÿÿKóý»›þeZü�xþWooWÜÍþºÍþÍž¶'6'3?@)-05*.D24.H++2*H3/H2»6 6?Í?Í?í?í9/íÞýÌ3ÞÎÖÌ012#".54>!2#".54>!!!!!{2&%34''4ÿ2&%34''4Òý»›þeZü�6&23&&33%&23&&33%þhÍþºÍþÍžVã-@P/?D º96?í??ÖýÌÆ]_]01.54>32! -D-&2(U$:_=þé*GfPE& / ©þúŒúbžÌa-@P/?Dº96?í??ÖÎýÆ]_]016632#!6$U(2&-D-œ_sþéÙ / &EPfGþnúbž £ 9@P / ?  D º6:²¸6?3/í???ÖÎýÎÆ]_]01%'!XKKÿÿKÖþéþWooWãúbžÿÛÕ='+4@P,/-?--)D+,+*»6 6?Í?Í??ÖÌýÌÆ]_]012#".54>!2#".54>!i2&%34''4ÿ2&%34''4Kþé=&23&&33%&23&&33%þaúbžÿÄ(ž'6@D)#'D(J&J$$!J!J?í?í93í3íÖí2Öí012#!#532>54.##!!;vÈTc†P"#R…aTÈvþzññ@¥Ðv,+n¼�Z'þÙž%{¨ÑzzÒ©}& y¾gû-0vÅ––Èw2þd¾þR³t %q@%#$#›$G'G!&$ %#" ¸;@  / ?  ¸6@ /?º;6?í2/]?3/]í??????99ÖýÄÖý·+‡}Ä01#".#"#>323267!!!\ 3E*#C@>%% w 3E*#C@>%% �þËý‹þé5u (PA(+%(P@)+%þ‘úb3ûÍžûÍ3xÿèŽ#78@.)F83F 993.J $J º96?í?í?í9/Æ]ýÌÖí901.54>322#"&&5466"32>54.µ-D-&2(U$:_N´ø›DD›ø´±ø›GG›ø±i�U$$U�ih�U%%U�*GfPE& / ©þúvmÄþ襤þïÄmj¨¨ÂjÍD‡É……ɇDC†Ê††Ê†CxÿèŽ#7:@.)F8 993F3.J $Jº96?í?í?í9/íÆ]ÖýÌ9016632#2#"&&5466"32>54.á$U(2&-D-œ_´ø›DD›ø´±ø›GG›ø±i�U$$U�ih�U%%U�Ù / &EPfGþ„mÄþ襤þïÄmj¨¨ÂjÍD‡É……ɇDC†Ê††Ê†CxÿèŽ-F@$ F.)F // )$J Jº6:²¸6?3/í??í?í9/Æ]ýÌÖýÌ901%'2#"&&5466"32>54.KKÿÿKK´ø›DD›ø´±ø›GG›ø±i�U$$U�ih�U%%U�þWooWÍmÄþ襤þïÄmj¨¨ÂjÍD‡É……ɇDC†Ê††Ê†CxÿèŽ /Cb@:+!5F+D?F EE!?:J& 0J¸;@  / ?  ¸6@ /?º;6?í2/]?3/]í?í?í9/Æ]ýÌÖýÌ901#".#"#>3232672#"&&5466"32>54.L 3E*#C@>%% w 3E*#C@>%% Ò´ø›DD›ø´±ø›GG›ø±i�U$$U�ih�U%%U� (PA(+%(P@)+%þ§mÄþ襤þïÄmj¨¨ÂjÍD‡É……ɇDC†Ê††Ê†CxÿèŽ=';OA@F7-AF7P#KF QQ-K(FJ2 !2#".54>2#"&&5466"32>54.2&%34''4ÿ2&%34''4Ö´ø›DD›ø´±ø›GG›ø±i�U$$U�ih�U%%U�=&23&&33%&23&&33%þwmÄþ襤þïÄmj¨¨ÂjÍD‡É……ɇDC†Ê††Ê†C–«¤¹ f@8     w  w    ///////Á‡+Á‡}Ä/Á‡+Á‡}Ä01'7†þÿ†þÿþÿ†þÿ†¹†þÿþÿ†þÿ††þÿxÿ莴%0c@/((0&  -F2%  "F1 "--(J (J /?í//?í93///Öí3}‡ÄÄÄÄÖí3}‡ÄÄÄÄ9301#"'#7&54663273&#"32>54&'Û_TD›ø´¸‚å[]TG›ø±^š@åþ�Jwi�U$€Mvh�U% bþÚµ¤þïÄm;#’a$·¨Âj$â+D‡É…g¤@¢,C†Ê†g§?¦ÿéV)4@D*(D++)#J º96?í?í??/Æ]ýÌÖí901.54>32#".5!32>5°-D-&2(U$:_ @�奨å�=!KxWYzJ *GfPE& / ©þúŒüÚœô¨WZªó˜&ü¸_™k::l™^H¦ÿéV)4@D*++(D)#J º96?í?í??/íÆ]Ö9ýÌ016632##".5!32>5Ü$U(2&-D-œ_@@�奨å�=!KxWYzJ Ù / &EPfGþnüÚœô¨WZªó˜&ü¸_™k::l™^H¦ÿéV>@D  !!DJ º6:²¸6?3/í??í??/íÆ]Ö9ýÎ01%'#".5!32>5þKKÿÿK£@�奨å�=!KxWYzJ þWooWãüÚœô¨WZªó˜&ü¸_™k::l™^H¦ÿéV='A;@6D.)3B#@DCC)A5;J. »6 6?Í?Í?í??/Æ]ýÌÖ9ýÌ012#".54>!2#".54>#".5!32>52&%34''4ÿ2&%34''4‚@�奨å�=!KxWYzJ =&23&&33%&23&&33%þaüÚœô¨WZªó˜&ü¸_™k::l™^HA7~@=�Džžº96?í??9/3????/Æ/Æ9/̇+Á‡}ć+Á‡}Ä3í]016632#!!š$U(2&-D-œ_cþþèþ0KKÙ / &EPfGþnüêýxˆý¥[µžž!4@Ú#!DDD"J !H  ??99//ííÞíííÖí01!2#"&'!32>54.##Ìi¥r32#"&'7232>54.'76654&#"!ºJ�®ed¬~GQO6X>!YޝW$F ; -WE+Bfz7.:?;j_\nþïr�b+*Y‡]b—FAXm@…²j-Â5_KM]5²/sNUZemûìSÿèî�GV^@.>QVQ'$XGNT5WVQW0>=WH`IpIII+0''0GDW º97?í?3í2?3/39/]3í2í2Öí3/3Æ22íýÌ01.54>32>32&&'##".54>7663354.#"#32>7-D-&2(U$:_þ%_ks;S‘006>{? #FLR-EvW1.@'NÀdV'4Q¥KÑG�b;IBB@8§GfPE& / ©þúÊ gNþjFm4  ;&$0 !DiG<^J8*‚%+)þÅ.K9?D.Sÿèî�GV^@.VQ>Q'$XGNT5WVQW0>=WH`IpIII+0''0GDWº97?í?3í2?3/39/]3í2í2Öí3/Î3Æ22íí016632#>32&&'##".54>7663354.#"#32>72$U(2&-D-œ_þO%_ks;S‘006>{? #FLR-EvW1.@'NÀdV'4Q¥KÑG�b;IBB@8V / &EPfGþ0 gNþjFm4  ;&$0 !DiG<^J8*‚%+)þÅ.K9?D.Sÿèîü=Lh@.LQ4QN=DT+MLGW&43W>`?p??? !&&=:W º7:²¸7?3/í??3í2?3/39/]3í2í2Öí3/Î3Æ22íí01%'>32&&'##".54>7663354.#"#32>7TKKÿÿKN%_ks;S‘006>{? #FLR-EvW1.@'NÀdV'4Q¥KÑG�b;IBB@8üþWooWþß gNþjFm4  ;&$0 !DiG<^J8*‚%+)þÅ.K9?D.SÿèîŠSb†@/JQbQ((30dSZTAcb]W323267>32&&'##".54>7663354.#"#32>7� 3E*#C@>%% w 3E*#C@>%% ý•%_ks;S‘006>{? #FLR-EvW1.@'NÀdV'4Q¥KÑG�b;IBB@8Š(PA(+%(P@)+%þS gNþjFm4  ;&$0 !DiG<^J8*‚%+)þÅ.K9?D.Sÿèîº'_ne@0#VQnQ44?!2#".54>>32&&'##".54>7663354.#"#32>7e2&%34''4ÿ2&%34''4ý‘%_ks;S‘006>{? #FLR-EvW1.@'NÀdV'4Q¥KÑG�b;IBB@8º&23&&33%&23&&33%þ# gNþjFm4  ;&$0 !DiG<^J8*‚%+)þÅ.K9?D.Sÿèî"Wfg@5NQfQ,,74hW ^TEgfaW@NMWX`YpYYY%;@77@WTW % ¸7?ÝÞÍ?3í2?3/39/]3í2í2Öí3/3ÎÆ22íýÌ99012#".54>"32654&>32&&'##".54>7663354.#"#32>7T)G55G))G55G)#00##00þD%_ks;S‘006>{? #FLR-EvW1.@'NÀdV'4Q¥KÑG�b;IBB@8"5G))G55G))G5p0##00##0þ+ gNþjFm4  ;&$0 !DiG<^J8*‚%+)þÅ.K9?D.Sÿè´'?EV«@V# ES66-@SX?KT-WSNW(65WVdFtFFF#(9Iiy‰W @V 9Iiy‰ BW ”?¤?´??¸ÿð@ H?326632!3267#"&'#".54>7663354.#"&#"32>7&&5»%_ks;l�-8’^‚À~>ý?jPF¢X@)ajm4œÝA4c`_/EvW1.@'NÀdV'4Q¥Kª×os þàG�b;IB(I@7 Ý '+'+?ƒËŒOEhG$#!¼ W[>G$ !DiG<^J8*‚%+)®÷€w�.K9?D&2*^6PþUÕ'84@#3:,S92/W38$'W# ?33/Í?3í2?3í2ÖíÖÆ01#"&'732654&'7.54>32&&#"3267MPC";R0-].6(C "GFW|«j/EŠÎŠPžHC)e "%-Ž L„ºw…Ò�LÆ3[~K®ª$Æ  \ÿèOƒ*0>@+S!20S"S1+V""-W*'W º97?í?3í2?í9/íÖííÖÆýÌ01.54>32# $4>32!3267&#"-D-&2(U$:_X)ajm4þùþó6yÅ�úöýAjPF¢Xˆ×os �GfPE& / ©þúû’ ýtÐ�\þ÷þðODhG%#!†÷€w\ÿèOƒ*0>@+S!20S"S1+V""-W*'Wº97?í?3í2?í9/íÖíýÌÖÆí016632## $4>32!3267&#"=$U(2&-D-œ_Ž)ajm4þùþó6yÅ�úöýAjPF¢Xˆ×os L / &EPfGúŒ ýtÐ�\þ÷þðODhG%#!†÷€w\ÿèOò &H@!S(&SS'!V #W W º7:²¸7?3/í??3í2?í9/íÖííÖÆýÌ01%'# $4>32!3267&#"_KKÿÿKñ)ajm4þùþó6yÅ�úöýAjPF¢Xˆ×os òþWooWû; ýtÐ�\þ÷þðODhG%#!†÷€w\ÿèO°'BHE@#CS(9JHS:S0ICV::-EW5B?W(-»7 7?Í?Í?3í2?í9/íÖíýÌÖÆýÌ012#".54>!2#".54># $4>32!3267&#"p2&%34''4ÿ2&%34''4Ð)ajm4þùþó6yÅ�úöýAjPF¢Xˆ×os °&23&&33%&23&&33%ú ýtÐ�\þ÷þðODhG%#!†÷€w=ȃ!@ R º97?í??ÖýÎÎ01.54>32!ñ-D-&2(U$:_;þí�GfPE& / ©þú�ûðµ8�!@ Rº97?í??ÖýÌÎ016632#! $U(2&-D-œ_�þíV / &EPfGþcûð—ü +@ R º7:²¸7?3/í???ÖýÎÎ01%'!LKKÿÿKåþíüþWooWîûðÿ¼°'+(@ -#(R*,)(»7 7?Í?Í??ÖÌýÌÎ012#".54>!2#".54>!P2&%34''4ÿ2&%34''4Mþí°&23&&33%&23&&33%þ`ûðZÿæ|c)@2@*4/;SB/SAX** ##W$4X ?í/íq9/íÞíÞí9901#".547>32&&'57&'7"32>54&'&&mCZ€R&E‡É„uÀ‰KŒ!NUZ-P�1]NþøI`|0b]V$BU18U:;U9"?�cæ63œÇï‡�ߘO>}½ÿu& j›3×é:œ  ýp.Pi323267>32!4&#"!4&'.'667¹ 3E*#C@>%% w 3E*#C@>%% þ~!GQa;BfJ3 þîOD&ID:þîA�B €(PA(+%(P@)+%ýÞ2K37Q33wEý ¯VZ$;J&ýp�Qm*  )/8$dÿè^ƒ#74@3S.9)S8.W$W º97?í?í?í9ÖíÖ9ýÌ01.54>322#".54>"32>54.-D-&2(U$:_LƒÀ}==}ÀƒƒÀ}==}ÀƒH\44\HH\44\�GfPE& / ©þúvR‘ÇuuÈ‘RR‘ÈuuÇ‘RÄ6^HI^66^IH^6dÿè^ƒ#74@.3S9)S8.W$Wº97?í?í?í9ÖýÌÖí9016632#2#".54>"32>54.=$U(2&-D-œ_ƒÀ}==}ÀƒƒÀ}==}ÀƒH\44\HH\44\L / &EPfGþ„R‘ÇuuÈ‘RR‘ÈuuÇ‘RÄ6^HI^66^IH^6dÿè^ò->@)S$ /S. $WWº7:²¸7?3/í??í?í9ÖíÖ9ýÌ01%'2#".54>"32>54._KKÿÿKMƒÀ}==}ÀƒƒÀ}==}ÀƒH\44\HH\44\òþWooWÍR‘ÇuuÈ‘RR‘ÈuuÇ‘RÄ6^HI^66^IH^6dÿè^€/C\@?S:+!E5S+D!:W&0W¸;@  / ?  ¸7@ /?º;7?í2/]?3/]í?í?í9ÖýÌÖ9ýÌ01#".#"#>3232672#".54>"32>54.¨ 3E*#C@>%% w 3E*#C@>%% ЃÀ}==}ÀƒƒÀ}==}ÀƒH\44\HH\44\€(PA(+%(P@)+%þ§R‘ÇuuÈ‘RR‘ÈuuÇ‘RÄ6^HI^66^IH^6dÿè^°';O;@#KSF7-QAS7P-(FW2!2#".54>2#".54>"32>54.p2&%34''4ÿ2&%34''4ÔƒÀ}==}ÀƒƒÀ}==}ÀƒH\44\HH\44\°&23&&33%&23&&33%þwR‘ÇuuÈ‘RR‘ÈuuÇ‘RÄ6^HI^66^IH^6–0*4+"@"ò ò ʯ/]í2/í3/]í012#".54>!52#".54>` 4%'33''3æülÊ 4%'33''34'33''34%þ]¾¾þ¹'33''34%*ÿ9“×%0i@2((% 0&  -S2 "S1W (W?í//?í93//Öí33/Öí3}‡ÄÄÄÄ3/}‡ÄÄÄÄ9301#"&'#&&54>3273&#"32>54&'ÐHF=}Àƒ32.'##"&'&&5!32>7!-D-&2(U$:_�A�B  !GQa;}� OD&ID:�GfPE& / ©þú�ý~Qm*   )/8$2K3e]6‚MaýPVZ$:K&‘‘ÿèjƒ92@8R!;0R-:9/3X'º97?í?3í??ÞýÌÞ22í016632#.'##"&'&&5!32>7M$U(2&-D-œ_ÅA�B  !GQa;}� OD&ID:L / &EPfGþmý~Qm*   )/8$2K3e]6‚MaýPVZ$:K&‘‘ÿèjò/<@.R1&R#0/%)Xº7:²¸7?3/í??3í??ÞíÞ22ýÎ01%'.'##"&'&&5!32>7oKKÿÿK(A�B  !GQa;}� OD&ID:òþWooWäý~Qm*   )/8$2K3e]6‚MaýPVZ$:K&‘‘ÿèj°'Q9@#PR91)SHRERQGKX4?»7 7?Í?Í?3í??ÞýÌÞ22ýÌ012#".54>!2#".54>.'##"&'&&5!32>7€2&%34''4ÿ2&%34''4A�B  !GQa;}� OD&ID:°&23&&33%&23&&33%þ`ý~Qm*   )/8$2K3e]6‚MaýPVZ$:K&‘™þ\Yƒ?E@">R'RA6R3@?@?5&9X-¶W¯º97?í?3í]2?í9??]ÖýÌÖíí016632##"&'66732>75##"&'&&5!32>7]$U(2&-D-œ_ÂK‰¿sY·N,H”E/0.# !GRb:<¨kaýPVZ$:K&‘ŠþpR &,@S (&RRR' ®W!X?í?í??ÖíííÖí013632#"'!32>54.#"›rÉi�Y'>Œã¦40þï+Z34W?#*N@'?5. ýݪR‹·f‡×–Qþ…0û" %KqKUŽg91E(™þ\Y°'WL@$#VR?R)YNRKX?XWM>7QXE4¶77W1.¯»7 7?Í?Í?3í]2?í9??]ÖýÌÖíýÌ012#".54>!2#".54>#"&'66732>75##"&'&&5!32>7�2&%34''4ÿ2&%34''4K‰¿sY·N,H”E/0.# !GRb:<¨kaýPVZ$:K&‘*€  ’@H  dL   ‚   ›   ›    H   º=<?í????9/3í2ÆÆ99//Á‡+Á‡}ÄÁ‡+}Ô]‡ÄćÄÄÎ01+!5!!!!ý£¸þæ¤þ&¤þ挣F ««þ‘úbºþFžþ×þSÿèîŠ;J^@.JQ2QL;BT)KJEW$21W<`=p=== $$;8W º=>?í?3í2?3/39/]3í2í2Öí3/Î3Æ22íí01!5>32&&'##".54>7663354.#"#32>7ƒý£k%_ks;S‘006>{? #FLR-EvW1.@'NÀdV'4Q¥KÑG�b;IBB@8Š««þS gNþjFm4  ;&$0 !DiG<^J8*‚%+)þÅ.K9?D.*€p ”@J dL‚››H  º@??í22????9/3í2ÆÆ99//ÎÁ‡+Á‡}ÄÁ‡+}Ô]‡ÄćÄÄ01+#"&'33267!!!!§��§d$rNNr$Zþæ¤þ&¤þ挣Fp‘šš‘K::Kþ.úbºþFžþ×þSÿèîí ETb@0TQ32&&'##".54>7663354.#"#32>7œ§��§d$rNNr$ýƒ%_ks;S‘006>{? #FLR-EvW1.@'NÀdV'4Q¥KÑG�b;IBB@8푚š‘K::Kýð gNþjFm4  ;&$0 !DiG<^J8*‚%+)þÅ.K9?D.*þh€ž!$†@F$#²"## !! ²####!&%!H$"$»###$#$ ???99/|/8]3í2?333/ÍÆÆ9‡+Á‡}ćÄÄÁ‡+‡}ÄÄÄ01!3267#".54>7#!!!,. +'<"&O7%?-'6"H¤þ&¤þæýø££4000' _+>'%=97 ºþFžúbƒòþSþhî'M\j@<\Q8Q"^ABBTT/]87WN`OpOOO*›AJAA>W�BJBBG\WW*""%*?3333/Íí2?3]qí2]q9/]3í2Öí3/3Æ22íí013267#".54>7&'##".54>7663354.#"'>32#32>7Ò%H%;@+'<"&O7%?-);$ #FLR-EvW1.@'NÀdV'4Q¥K=%_ks;S‘006þ÷G�b;IBB@8†Fm4 ''?:;!)3$0 !DiG<^J8*‚%+)¾ gNþÈ.K9?D.sÿè·33@"5+F4#&J"30J º96?í?3í2?3í2ÖýÌÖÆ016632##"$&546632&&#"3267Ð$U(2&-D-œ_­YÕn»þý¢HGšó­=wk]$BG¡Yk”[(,bŸrW¯KÙ / &EPfGøø#W³¸À¾_ É'@‚Æ…ŽÍ…? PÿèÕƒ13@"3+S2#&W"1.Wº97?í?3í2?3í2ÖýÌÖÆ016632##".54>32&&#"3267$U(2&-D-œ_�)beb)‘È{6EŠÎŠPžHC#"$&546632&&#"3267ò2&%34''4âYÕn»þý¢HGšó­=wk]$BG¡Yk”[(,bŸrW¯K=&23&&33%øë#W³¸À¾_ É'@‚Æ…ŽÍ…? PÿèÕ°50@&7 /S6'*W&#52W ¸7?Í?3í2?3í2ÖýÌÖÆ012#".54>#".54>32&&#"3267<2&%34''4¶)beb)‘È{6EŠÎŠPžHC32&&#"326754.##¨KþµþµKmvÈTc†P"#R…aTÈvþz@¥Ðv,+n¼�ZWþþWoþŽ%{¨ÑzzÒ©}& žû-0vÅ––Èw2ûøYÿè"…0C;@CR/RE8S'D0 3W,=X" º97?í??í?í?ÖíÆ22Ìíí016632#'.'##".54>32&#"3267667Ù(],7*2J2¬i÷  <;54.##×ý£ÁvÈTc†P"#R…aTÈvþz@¥Ðv,+n¼�Z ««þ‘%{¨ÑzzÒ©}& žû-0vÅ––Èw2ûøYÿèÉ (;:@;RR =0S<%"(# +W5X?í?í?9}/3Í2ÖíÆ22íí01.'##".54>325#535!3#&#"3267667"  <;@S&$SS %V !WW º=>?í?3í2?í9/íÖíýÌÖÆí01!5# $4>32!3267&#"Žý£Ô)ajm4þùþó6yÅ�úöýAjPF¢Xˆ×os €««ú¯ ýtÐ�\þ÷þðODhG%#!†÷€w¶'67@! D HHH ¸6?Í?í?í9/íÞí2ÌÞÆÎ012#".54>!!!!!j2&%34''4Åý»›þeZü�6&23&&33%þhÍþºÍþÍž\ÿèO°.4;@/S%6 4S&S5/V&&1W!.+W ¸7?Í?3í2?í9/íÖíýÌÖÆí012#".54># $4>32!3267&#"_2&%34''4Ã)ajm4þùþó6yÅ�úöýAjPF¢Xˆ×os °&23&&33%ú ýtÐ�\þ÷þðODhG%#!†÷€w¶þh'ž%:@!$'"D&"HH#H?í333/Í?í9/íÞí2ÞÆÎ01!3267#".54>7!!!!!!n. +'<"&O7%?-'6"ýÆ\ý»›þeZ4000' _+>'%=97 žÍþºÍþÍ\þhO'39<@4S ;9SS+:4V(6W0 W (?3í233/Í?í9íÖííÖÆí01!32673267#".54>7# $4>32%&#"OýAjPF¢X@EY.!+'<"&O7%?-!/1þùþó6yÅ�úöþî×os ¿DhG%#!¼41/0' _+>'"953ýtÐ�\þ÷þðc÷€w¶'xG@  D H H H¸:¶¸6?3/3/í?í?í9/íÞí2ÌÞÆÎ01%7!!!!!jKþµþµK¨ý»›þeZü�xWþþWoþ•ÍþºÍþÍž\ÿèOò &K@!S(&SS'!V #W W ¸:¶¸7?3/3/í?3í2?í9/íÖíýÌÖÆí01%7# $4>32!3267&#"_KþµþµK¦)ajm4þùþó6yÅ�úöýAjPF¢Xˆ×os òWþþWoú¬ ýtÐ�\þ÷þðODhG%#!†÷€wsÿèp 7M@#57#""3D79+F87H55#&J"30J  º@??í22?3í2?3í29/íÞýÌÞí3/3901#"&'33267#"$&546632&&#"3267#5!D§��§d$rNNr$7,p€ŠE¯þú®VZ¨ï”?�~u3MeÅXd‘^-.c™l6q:åöp‘šš‘K::KøÖ# H¨Î×$³N 'Ã0*?�LJ�͆?[Ëaþ:¨ã s€@Dztw}SPS::�wSHE``h€tWpzW}wp&&Ysp0W`YpYYYHKWE`?p???¯  º@A?í22?]]3í2?]]í?339/99íí2Þ233ýÌÎ222íí9901#"&'332672>7#"'3226232#"&'&&'66732>54.#"##".5467.5467>32"32654&m§��§d$rNNr$<0D>D0 !731:6!T\_,QCI, ),)P‚]3UŒ´`E‰@2Y& 3f¸L/R<#*9! .[TH5&5);6 PX^-9d&¿XfgWXfi㑚š‘K::Kþ. .c1  +S.`�2( 0 @jLWwJ! `7$" /$!/G21e2:Od>^‘3( £jgjgjghisÿè==F@";=)((9D=? 1F>=H;;),J(#96J ¸6?Í?3í2?3í29/íÞýÌÞí3/39012#".54>#"$&546632&&#"3267#5!ü2&%34''48,p€ŠE¯þú®VZ¨ï”?�~u3MeÅXd‘^-.c™l6q:åö=&23&&33%ù # H¨Î×$³N 'Ã0*?�LJ�͆?[Ëaþ:¨°y…y@C€z}ƒS$VS@@$‡ }SNKffn†zWv€Wƒ}v,,_yv6W`_p___NQWK`EpEEE¯ ¸7?Í?]]3í2?]]í?339/99íí2Þ233ýÌÎ222íí99012#".54>2>7#"'3226232#"&'&&'66732>54.#"##".5467.5467>32"32654&%2&%34''4=0D>D0 !731:6!T\_,QCI, ),)P‚]3UŒ´`E‰@2Y& 3f¸L/R<#*9! .[TH5&5);6 PX^-9d&¿XfgWXfi°&23&&33%þa .c1  +S.`�2( 0 @jLWwJ! `7$" /$!/G21e2:Od>^‘3( £jgjgjghisý›·)9I@' )%D);9F :8¸9@-¸)H''J%"J ?3í2?3í29/í?íÞýÌÞí3/3901%#"$&546632&&#"3267#5!6632#,p€ŠE¯þú®VZ¨ï”?�~u3MeÅXd‘^-.c™l6q:åöýŽ$U(2&-D-œ_F# H¨Î×$³N 'Ã0*?�LJ�͆?[ËüN / &EPfGaþ:¨§u�|@B|vyS RS<< ƒySJGbbj‚vWr|Wyr(([ur2W`[p[[[JMWG`ApAAA¯º97?í?]]3í2?]]í?339/99íí2Þ233íÎ222íýÌ9901#".54>72>7#"'3226232#"&'&&'66732>54.#"##".5467.5467>32"32654&ã_:$U(2&-D-þ0D>D0 !731:6!T\_,QCI, ),)P‚]3UŒ´`E‰@2Y& 3f¸L/R<#*9! .[TH5&5);6 PX^-9d&¿XfgWXfi§þú© / &EPfGýj .c1  +S.`�2( 0 @jLWwJ! `7$" /$!/G21e2:Od>^‘3( £jgjgjghidnžJ@&DDÊ H ????9/9í33í22/ýÄ33Ôí23013#!!!#535!!5!!Īªþéý„þé¶¶|ý„|žÒ¡ûÕ½ýC+¡ÒÒÒþ�¡g #3@R%R$X "Êʯ ?Ý]íí3?í??Öí2Öí013#3>32!4&#"!#535¿µµBQb>w‘#þîLG(LD8þí«« ¬ªì.J5_a4‚Qý ¯Q_(?í??ÖÎýÎ01!5!ný£·þ퀫«þ�ûðšþh÷ž$@D?223/Í??ÖýÆ01!3267#".54>7#!¬. +'<"&O7%?-'6"b4000' _+>'%=97 žúbnþh˰1,@30R.2#-10 ¬?Í??3333/ÍÖÌýÎ01".54>323267#".54>7#!?4''42&%3%. +'<"&O7%?-'6"Mš&33%&23&ûf4000' _+>'%=97 ûðÊã=*@P/?D  ¸6?Í??ÖÎýÆ]_]012#".54>!X2&%34''4¨þé=&23&&33%þaúbžµÈ@ R??ÖýÎ01!Èþíûð þì)ž$@D D —????ÖýÆ2Þá01!!&&'>5! þé‰ AcD/f+1C*žúbGy®ˆq;$O*4T]vVdnþAñ '+;>@=;R4#9)R+<:441°*(#¬ ¬?Í9?Í9???3|/?Ö2ý2Ö2Æý2Æ012#".54>!2#".54>!!%&&'>5!"=--="#<..<Y"=--="#<..<ýcþîI@aC/c*/B) -="#<..<#"=--="#<..<#"=-þûð�wª†n:#N)3Q\tT�¸ý›ö´ i@(›  ›   DD¸9@ ¸  ??99???í/ÞýÌíÁ‡+Á‡}ÄÖÁ‡+‡}Ä01!!!6632#Þ´þJþ þ9þé=$U(2&-D-œ_´–ýÀý"gý™žý¦ü / &EPfG§ý›^  l@(ZZR ¸9@¸ ???99???íÞýÌ3ÄÆ2Á‡+Á‡}ć+‡}Ä01!!6632#¹¡˜þŽÞþ²þ©þî1$U(2&-D-œ_ ý€¥þ¬ýÒŸþa ùª / &EPfGÄ '@DHº96?í??íÖÌí|Æ016632#!!,$U(2&-D-œ_u1ü¸Ù / &EPfGþnû/Ížnÿè  %@ " R! º96?í??Ö2ý22Î016632#&&5!ß$U(2&-D-œ_gB„EÜ / &EPfGúeSp*! -e<êÄý› ž%·D¸9· ¸H??í?íÖýÌ|Æ01!!6632#Û1ü¸$U(2&-D-œ_žû/Ížù¬ / &EPfG;ý›�  $@ "R !¸9µ¸ ???íÖ2ý22Î01&&5!6632#€B„Eþà$U(2&-D-œ_˜Sp*! -e<êùª / &EPfGÄ@’'@DHº97?í??íÖýÌ|Æ016632#%!!÷(],7*2J2¬iþ¤1ü¸V#4#*KYpN!û/Ížnÿè€Q '@ " R!¸9¶ ??9íÖ2ý22Î016632#&&5!7(],7*2J2¬i÷B„E#4#*KYpN!ü=Sp*! -e<ê‚Êž#@DH?í?9/ÍÖí|Æ01!!!!2#".54>Êü¸1Ó2&%34''4žû/Õ&23&&33%nÿè% $#@&R %  ??9/ÍÖ2ý22Î01&&5!2#".54>€B„E2&%34''4˜Sp*! -e<êýÄ&23&&33% ž `@0    ´  D   H??í993/Ö22í222|Æ2/Á‡+Á‡}ćÄćÄÄ01%!!57åHþ¸1ü¸ÄÄžþ¸Ï¸ýêÍFnÏn‰�  [@,    ZR    ??993Ö22í22Á‡+Á‡}ćÄÄ3‡ÄÄÎ017!57௯þí¯¯ þbÏbý+:bÏb—³tI@$›GGº96?í??????99ÖýÌÖí‡+‡}Ä016632#!!!ñ$U(2&-D-œ_IþËý‹þé5uÙ / &EPfGþnúb3ûÍžûÍ3‹dƒ;0@R=;;(R*<)#Xº97?í?í??Öí2ÎÖí016632#>32!4&#"!4&'.'667N$U(2&-D-œ_È!GQa;BfJ3 þîOD&ID:þîA�B L / &EPfGý»2K37Q33wEý ¯VZ$;J&ýp�Qm*  )/8$³ý›tž I@›GG¸9@ ¸ ??????99?íÖýÌÖí‡+‡}Ä01!!!6632#tþËý‹þé5uþ3$U(2&-D-œ_žúb3ûÍžûÍ3ù¬ / &EPfG‹ý›d'+;.@ R =;+R<:¸9@ /¸X?í???íÖý2ÌÖí01>32!4&#"!4&'.'6676632#À!GQa;BfJ3 þîOD&ID:þîA�B N$U(2&-D-œ_^2K37Q33wEý ¯VZ$;J&ýp�Qm*  )/8$ûì / &EPfG³tV@$  ›  G G      ¸:¶¸6?3/3/í??????99ÖýÌÖí‡+‡}Ä01%7!!!KþµþµKaþËý‹þé5uWþþWoþŽúb3ûÍžûÍ3‹dò1;@R31R 2X ¸:¶¸7?3/3/í?í??ÖýÌ3Öí01%7>32!4&#"!4&'.'667pKþµþµK°!GQa;BfJ3 þîOD&ID:þîA�B òWþþWoýÛ2K37Q33wEý ¯VZ$;J&ýp�Qm*  )/8$³ýñtžN@žDD¸ÿè@ ?/????9988ÞíÞí‡+Á‡}Ä01'667667!!t!6QmIp5Sýoþé5užû�ÄL(NKH$š/O2)gIûÍžü ó‹þFd'7!@R 97$R&8%X?í/?Öí2Öí01>32'7>54&#"!4&'.'667À!GQa;Su'6* -"H8²(1"OD&ID:þîA�B ^2K3-*;º{þ0GsdY+ Q7Š3(JWlK,VZ$;J&ýp�Qm*  )/8$xÿèŽ +:@" F, --'F '"J Jº=<?í?í?í9/íÆ]ÖýÌ901!52#"&&5466"32>54.2ý£.´ø›DD›ø´±ø›GG›ø±i�U$$U�ih�U%%U� ««þ§mÄþ襤þïÄmj¨¨ÂjÍD‡É……ɇDC†Ê††Ê†Cdÿè^€+4@"'S -S, "WWº=>?í?í?í9ÖýÌÖí901!52#".54>"32>54.Žý£0ƒÀ}==}ÀƒƒÀ}==}ÀƒH\44\HH\44\€««þ§R‘ÇuuÈ‘RR‘ÈuuÇ‘RÄ6^HI^66^IH^6xÿèŽ3GF@>/%9F/HCF II%C >J* 4J ¾9696?í?í?í?í9/Æ]ýÌÖýÌ9016632#%6632#2#"&&5466"32>54.($U(2&-D-œ_V$U(2&-D-œ_ï´ø›DD›ø´±ø›GG›ø±i�U$$U�ih�U%%U�Ù / &EPfG© / &EPfGþ„mÄþ襤þïÄmj¨¨ÂjÍD‡É……ɇDC†Ê††Ê†Cdÿè^ƒ3G@@CS>/%I9S/H% >W*4W ¾9797?í?í?í?í9ÖýÌÖ9ýÌ016632#%6632#2#".54>"32>54.„$U(2&-D-œ_V$U(2&-D-œ_íƒÀ}==}ÀƒƒÀ}==}ÀƒH\44\HH\44\L / &EPfG© / &EPfGþ„R‘ÇuuÈ‘RR‘ÈuuÇ‘RÄ6^HI^66^IH^6xÿèy´-M@)D--/%F.%* J -*J HHH?í?í9/í?3í2?3í29ÖíÞÎÆ9/í201%#"&&5466725!!!!!!&&#"3267:ƒH±ø›GG›ø±Hƒ:\ý»›þeZü�,Zi�U$$U�iZ,0%#j¨¨Ák#%2ÍþºÍþÍ…11D‡É……ɇD11dÿé<)*0Dx@K0"S@@+S F6SE+V""-W@ 1W;W {*Y*i*H*)*9**'W{YiH)9?3]]]]í2]]]]?í?í93?í9íÖíÖí9/í29901%#"&'#".54>326632!3267&#"%"32>54.ô)ajm4†ÉC?´yƒÀ}==}Àƒ}¹?<±}‚¿~=ý!?jPF¢Xˆ×os þH\44\HH\44\0 IYUMR‘ÈuuÈ‘RORQP@„ËŒLBgF%#!‚÷€wî6^}HH}^66^}HH}^6µô0=B@'6F"D!?-=D/>=I--.";Iº96?í?í??9/3íÖýÌ3ÖíÖ2í2016632#2!.'.'#!2>54.##`$U(2&-D-œ_-a¤xC6b†Q(LGAÆþÅ#WWM'(-þé§AeE$$EeA�Ù / &EPfGþn1b–dQ†c> Sbf+þÑ:•”$!. ý‚žý 1P::P1þ`’zƒ77@9227'R/)8("¸3³º97?í?3í2?Þ2í22ÌÎ2016632#67>32&&#"!4.'667Ì$U(2&-D-œ_?$BCD!5 9T!325!þî A�B L / &EPfGý»5"!+ ?@> *E4ýs�:eYP& )/8$µý›ôž -=B@&F D?=-D><¸9@1¸-I +I?í??9/3í?íÖý2ÌÖíÖ2í2012!.'.'#!2>54.##6632#Ça¤xC6b†Q(LGAÆþÅ#WWM'(-þé§AeE$$EeA�[$U(2&-D-œ_ž1b–dQ†c> Sbf+þÑ:•”$!. ý‚žý 1P::P1þ`ü  / &EPfG’ý›z''74@  9'"R786¸9µ+¸¸3² ?3í2??íÞ2Ìí22Î20167>32&&#"!4.'6676632#Ç$BCD!5 9T!325!þî A�B þý$U(2&-D-œ_^5"!+ ?@> *E4ýs�:eYP& )/8$ûì / &EPfGµô&3O@,F D5#3D%43I##$1I¸:¶¸6?3/3/í?í??9/3íÖýÌ3ÖíÖ2í201%72!.'.'#!2>54.##‚KþµþµKEa¤xC6b†Q(LGAÆþÅ#WWM'(-þé§AeE$$EeA�WþþWoþŽ1b–dQ†c> Sbf+þÑ:•”$!. ý‚žý 1P::P1þ`’zò-D@/((-R%.¸3³ ¸:¶¸7?3/3/í?3í2?Þ2í22ÎÎ201%767>32&&#"!4.'667îKþµþµK'$BCD!5 9T!325!þî A�B òWþþWoýÛ5"!+ ?@> *E4ýs�:eYP& )/8$fÿè“Mm@5»´==::=Ÿ=::".FAO7F""MN:)JMH /2J.)º96?í?3í2?3í299Æ2ýÌÖí399//Á‡+Á‡}Ä]]016632#32>54.'.54>32&&#"#.'Q$U(2&-D-œ_þ%S½oHxW15`ˆS]™ld€„|/.s~�<Ù / &EPfGùÉ +8W=BN2">b�jGpS:$"®$*D0>F,Ag˜obŒ_8  %_ÿ較MC@? (O I2N5:W-DX##2-Wº97?í?3í2?39/íí2ÖÔýÌÖÄí016632#2&&#"#".'66732>54.'.7>õ$U(2&-D-œ_`¸E%3‡B&E3'AV/I]3O�¥V9rhZ"*IQU)*L9!'BV.F~^7Jv˜L / &EPfGþƒ"(R% ''- 4QuRXxJ 'T$  3%*2 4RuONkAfþU“·T�@-»D´D@ D Ÿ@D@D@ @ HT( MT>FKVFHH5U ¸ÿà@ M @0JT¸ÿð@ MTO69J0"))//50 ?3333/Íí2?3+í299+Æ2íÖ]í3+99//Á‡+Á‡}Ä]]01&&#"#"&'732654&'7.'732>54.'.54>32òP­_F,Ag˜oP{Z>)_F5*>)e "%-Œ $° +8W=BN2">b�jGpS:$"_þU¼&TC@"$ 9V/ U'*W!4W$!GNNTT W>?22í233/Í?39/íí2ÖÔíÖíÄ01.'66732>54.'.7>32&&#"#"&'732654&'¹3bYN*IQU)*L9!'BV.F~^7Jv˜Q`¸E%3‡B&E3'AV/I]3>h‡KJPC";R0-].6(C "GF'T$  3%*2 4RuONkA"(R% ''- 4QuRMoK(]F5*>)e "%-fÿè“Cz@5»´33003Ÿ300$F7E-FCD0 JC> %(J$¸:¶¸6?3/3/í?3í2?3í299Æ2ýÌÖí399//Á‡+Á‡}Ä]]01%732>54.'.54>32&&#"#.'sKþµþµKþ=S½oHxW15`ˆS]™ld€„|/.s~�<WþþWoùé +8W=BN2">b�jGpS:$"®$*D0>F,Ag˜obŒ_8  %_ÿè¼òCP@5  E ?(D+0W#:X(# W ¸:¶¸7?3/3/í?3í2?39/íí2ÖÔýÌÖÄí01%72&&#"#".'66732>54.'.7>KþµþµK`¸E%3‡B&E3'AV/I]3O�¥V9rhZ"*IQU)*L9!'BV.F~^7Jv˜òWþþWoþ£"(R% ''- 4QuRXxJ 'T$  3%*2 4RuONkAZþU½ž/@ !HH ??33/Í?íí/ÎÎ9Ä01!##"&'732654&'7#!5½þ\ZZPC";R0-].6(C "GFd3þXžÍû/qF5*>)e "%-¤ÑÍkþUqþ9Q@09;7RR12:7l5ì5;5K55­1UU4##))** W@*2H?3+í2333/Í?íí?]]?ÞÝííÖÆ013267#"&'732654&'7&&'&&5#535!! *! U::@D!HPC";R0-].6(C "GFW1T,––^Hþ 1@% 03/ [F5*>)e "%-�+—uéÈîîÈZ½ @@ D    HH  ¸:¶¸6?3/3/í??íí/Î]Î9Ìí01%7!!!5ŒKþµþµK1þ\þéþXWþþWoþŽÍû/ÑÍkÿèK4=@"6RR0154­0UU3X"'º97?í??3í2?íí?ÞÝííÖÖÎ016632#!!3267#".'&&5#535(],7*2J2¬iýÑ^þ¢ *! U:KRT%#D=4,––Ô#4#*KYpN!îÈþ 1@% 03/  +—uéÈîZ½  3@D    HH º=<?í??íí/Î]Î9Ìí01!5!!!5»ý£_þ\þéþX ««þ‘Íû/ÑÍkÿèqþ,Q@1,.*RR$%-*l(ì(;(K((­ VV###$UU' W@*2H?3+í2?íí23íí?]]?ÞÝííÖÆ013#3267#".'&&55#535#535!!·· *! U:KRT%#D=4,””––^Hœ«¬1@% 03/  +—u¢«œÈîîȦÿéV 6@ DDJ º=<?í?í??/íÆ]Öí9Ì01!5#".5!32>5-ý£†@�奨å�=!KxWYzJ  ««þ‘üÚœô¨WZªó˜&ü¸_™k::l™^H‘ÿèj€-2@,R /$R!.-#'Xº=>?í?3í??ÞýÌÞ22í01!5.'##"&'&&5!32>7žý£ A�B  !GQa;}� OD&ID:€««þ�ý~Qm*   )/8$2K3e]6‚MaýPVZ$:K&‘¦ÿéV¥9=@.D&!+:8D;;!9-3J&  ¸6?ÝÞÍ?í??/Æ]ýÎÖ9ýÎ99012#".54>"32654&#".5!32>5þ)G55G))G55G)#00##005@�奨å�=!KxWYzJ ¥5G))G55G))G5p0##00##0þiüÚœô¨WZªó˜&ü¸_™k::l™^H‘ÿèjI;@HR1)!K@R=JI?CX,7 ¸7?ÝÞÍ?3í??ÞíÌÞ22íÌ99012#".54>"32654&.'##"&'&&5!32>7o)G55G))G55G)#00##00ºA�B  !GQa;}� OD&ID:5G))G55G))G5p0##00##0þhý~Qm*   )/8$2K3e]6‚MaýPVZ$:K&‘¦ÿéV9@@.D&!+:8D;;!9-3J& ¾9696?í?í?í??/Æ]ýÌÖ9ýÌ016632#%6632##".5!32>5#$U(2&-D-œ_V$U(2&-D-œ_i@�奨å�=!KxWYzJ Ù / &EPfG© / &EPfGþnüÚœô¨WZªó˜&ü¸_™k::l™^H‘ÿèjƒI>@HR1)!K@R=JI?CX,7¾9797?í?í?3í??ÞýÌÞ22ýÌ016632#%6632#.'##"&'&&5!32>7”$U(2&-D-œ_V$U(2&-D-œ_îA�B  !GQa;}� OD&ID:L / &EPfG© / &EPfGþmý~Qm*   )/8$2K3e]6‚MaýPVZ$:K&‘¦þhVž00@%D"12/D0$ *J ?3í33/Í??/íÆÖí9013267#".54>7.5!32>5V>‰Üž16+'<"&O7%?-!0‹¾v4!KxWYzJ žüÚ™ñ¨Z4R/0' _+>'":43 f§åŒ&ü¸_™k::l™^H‘þhjB5@@R)BD8R5CA7;X/ $?3333/Í?í??ÞíÞ22í013267#".54>7.'##"&'&&5!32>7!L!B!.!+'<"&O7%?-%4   !GQa;}� OD&ID:ŽQm*  41/0' _+>'$<76&,3 2K3e]6‚MaýPVZ$:K&‘Ið@ €0M@0M¸ÿÀ@ 0M`0M¸ÿÀ@c0M   ›   ›   ›    ›      º6:²¸6?3/í???????????Ö2‡+Á‡}ÄÖ299‡+Á‡}Ä99Á‡+Á‡}ć+Á‡}Ä]Î+++++01%'!!!3!3¦KKÿÿK¨¤þ’þµþµþ’¤v6:6vþWooWäúc€û€�ûÉ7ûÉ7-ÿòãò-Œ@B,*))Z('(('+%$--Z,$,,$#$&,'',&$( S/(.-,)('&*%$#±º7:²¸7?3/í??3??.33??????ÆÖí9////9‡+}ÄÄć+}ÄÎ01%'>54.'>7!!!!ÒKKÿÿK·5)#@>># @EFþÀ^˜þÄþò Ô½jòþWooWûÎCxu{G$BHU7 0F!"E&B‰FF‹…|7lþ”ü±¹–A7ˆ@=�  D ž    ž      º6:²¸6?3/í???9/3????/Æ/Æ9/ć+Á‡}ć+Á‡}Ä3í]01%'!!¼KKÿÿKÆþþèþ0KKþWooWãüêýxˆý¥[™þ\Yò5O@"4RR7,R)6?65+/X#¶W ¯º7:²¸7?3/í??3í]2?í9??]ÖýÎÖíí01%'#"&'66732>75##"&'&&5!32>7KKÿÿK%K‰¿sY·N,H”E/0.# !GRb:<¨kaýPVZ$:K&‘A7='0…@?�/+D**#/,-./,/.ž-,--,)(0/)/0ž()(()//(1-2(0.-+,//(*(»6 6?Í?Í??9/3????/Æ/Æ9/·+Á‡}ć+Á‡}ÄÎ3í]012#".54>!2#".54>!!Í2&%34''4ÿ2&%34''4¥þþèþ0KK=&23&&33%&23&&33%þaüêýxˆý¥[“wc@+›Y:JHV5E¸ÿè@ 6Hº96?í?í]28]]?í28]]Î2ÌÎ2/‡+‡}Ä016632#!!5!5d$U(2&-D-œ_Óýn˜ü”ýƒÙ / &EPfGþn§ûÖÍ¡0Ígσ%F@ Z%$%$%%!$&'!$ U#%Uº97?í?33í2?í3/ÆÆ9ÌÁ‡+}Ä016632#".'6673!!!5$U(2&-D-œ_¼/HCE, 0D>D0üþøü²îL / &EPfGý¥ 1c. —ýNÈ—±“w=`@+› Y:JHV5E¸ÿè@ 6H ¸6?Í?í]28]]?í28]]Î2ÌÎ2/‡+‡}Ä012#".54>!!5!5†2&%34''4ýn˜ü”ýƒ=&23&&33%þa§ûÖÍ¡0Ígϰ)C@ $##Z)()(# ))%(*+%($U')U#! ¸7?Í?33í2?í3/ÆÆ9ÌÁ‡+}Ä012#".54>".'6673!!!562&%34''4‡/HCE, 0D>D0üþøü²î°&23&&33%ý˜ 1c. —ýNÈ—±“wn@* ›  Y:J HV 5 E  ¸ÿè@ 6H ¸:¶¸6?3/3/í?í]28]]?í28]]Î2Î2/̇+‡}Ä01%7!!5!5†KþµþµKëýn˜ü”ýƒWþþWoþާûÖÍ¡0ÍgÏòS@ZU U¸:¶¸7?3/3/í?33í2?í3/ÆÆ9ÌÁ‡+}Ä01%7".'6673!!!56KþµþµK¤/HCE, 0D>D0üþøü²îòWþþWoýÅ 1c. —ýNÈ—±fý›“·=Mm@&»´- -**-Ÿ  - * *F1O'FM=NL¸9@A¸* J=8 "J?3í2?3í299?íÖÎ3íÖí399//Á‡+Á‡}Ä]]01732>54.'.54>32&&#"#.'6632#°S½oHxW15`ˆS]™ld€„|/.s~�<“$U(2&-D-œ_ù +8W=BN2">b�jGpS:$"®$*D0>F,Ag˜obŒ_8  %ÿ / &EPfG_ý›¼&=MC@ / O 9M"NL¸9@A¸%*W4X" W?2í2?39/íí2?íÖÎÔíÖÄí012&&#"#".'66732>54.'.7>6632#`¸E%3‡B&E3'AV/I]3O�¥V9rhZ"*IQU)*L9!'BV.F~^7Jv˜F$U(2&-D-œ_&"(R% ''- 4QuRXxJ 'T$  3%*2 4RuONkAû$ / &EPfGZý›½ž3@D ¸9@ ¸HH??íí?í/Î]Î9íÌ01!!!56632#½þ\þéþX•$U(2&-D-œ_žÍû/ÑÍù¬ / &EPfGký›qþ$4=@ 64RR !53¸9@(¸$­ UU# X??3í2?íí??íÞÝííÌÖÆ01!!3267#".'&&5#5356632#^þ¢ *! U:KRT%#D=4,––±$U(2&-D-œ_þîÈþ 1@% 03/  +—uéÈîúL / &EPfGT�êò»7:²¸7?3/í?%'ŸKKÿÿKòþWooWT�êò¹:¶¸7?3/3/í01%7ŸKþµþµKòWþþWo"¸²ã ²  º@A?í2201#"&'33267²§��§d$rNNr$㑚š‘K::Kžš¶° ± ¸6?Í012#".54>,2&%34''4°&23&&33% ’&³ ¸7?ÝÞÍ012#".54>"32654&c)G55G))G55G)#00##005G))G55G))G5p0##00##0�þhê ¶ ?33/Í01#".54>73267ä&O7%?-*<$s/!+'<"þ—+>''@;:" 51/0' i•û€@õ @ H õ /3í3/+í201#".#"#>323267û 3E*#C@>%% w 3E*#C@>%% €(PA(+%(P@)+%’�rƒ¿9797?í?í016632#%6632#·$U(2&-D-œ_V$U(2&-D-œ_L / &EPfG© / &EPfGfý¸ ÿ� @  º¸??/Í3/Í012#"&5462#"&546¸#1"02 #1"021# /#%/þÝ1# /#%/Cý¸+ÿ� #/;1@!!39'-- 0º$¹¸ ¸¸?????/Í2/Í3/Í/Í3/Í012#"&546!2#"&546!2#"&5462#"&5462#"&546•%/1##//F%/1##//B%/1##//þp%/1##//Õ%/1##//2 "22""02 "22""02 "22""0ë2 "22""082 "22""0Mý¸ÿ�  @ º ¾ ¶¸??í?/ÝÞÍ3/Í012#"&546!52#"&546È%/1##//ƒþ+z%/1##//2 "22""0vvþö2 "22""0Lý¸ÿ� &@  º ¾ ¶¸??í?/ÞÍ3Í/99012#"&546##7#52#"&546Ç%/1##//ƒ²�®z%/1##//2 "22""0vúúvþö2 "22""0fþÛ ÿ� ³ ¸?/Í012#"&546¸%/1##//2 "22""0ÒþÛ›ÿ� @  ¸¸??/Í2/Í012#"&546!2#"&546$%/1##//F%/1##//2 "22""02 "22""0Óýðœÿ� #!@!! ¹ ¸¸???/Í2/Í3/Í012#"&546!2#"&5462#"&546%%/1##//F%/1##//q%/1##//2 "22""02 "22""0ë2 "22""0ÊþòŸÿhµ¾¶?í/Í01!5Ÿþ+˜vvÊýøŸÿh·¾¶?í//9901##7#5Ÿ²�®˜vúúvÒžˆU ³ »?/Í012#"&546,'55'&44U4&'67&%5ÒžˆU ³ »?/Í012#"&546,'55'&44U4&'67&%5fýVTÿ� ##@!!  Á¸???q/Í2/Í2/Í012#"&5462#"&5462#"&546¸%/1##//Ç%/1##//Ç%/1##//2 "22""0Â2 "22""0Ã2 "22""0Òˈ�± /Í012#".546,'5!!4�4&""%5x7Ä ³Œy?í01!!xLý´Ùæÿ}Ñ##Ñë#ùZ¦ÒžˆU ³ »?/Í012#"&546,'55'%55U4&'67&%5ÒžˆU ³ »?/Í012#"&546,'55'%55U4&'67&%5»ÿìãw'2#".54>2#".54>O!7')66))5!7')66))5w)66))6!6'ý�)66))6!6'ÊýøŸÿh·¾¶?í//9901##7#5Ÿ²�®˜vúúv�ÿÃ<6¸@)*H M*0M*(M*HM*PM*(M*8M*(M¸ÿسM¸ÿÀ³M¸ÿà@-M0 M MXMHMPMHL0M M¸ÿÀ@rM+( M+L+0M+@M+(M+0M+M M(M0M8M0MHM+**0M* MHM@M M( M**¸-¶¸ÿè³M¸ÿÈ@ M1¸ÿسM1¸ÿè³M1¸ÿè³M1¸ÿÐ@M1@ M1@ M1¸ÿسM¸ÿð@M8‰73Œ4z%’�¸ÿà±€?8??9?íÖíÖ++Í++++++99//++Á‡+Á‡}Ä++++++‡ÄÄ+++++++++++++‡Ä++++++++++++++++++++01#4>7>7.'6676676677'7R".>+ݯý÷ÿ 6+)#!7}7(/;)¿$ ’$q²>bPD!þœYQ`e./69AOa<=j_Y-!>CK-.8XOO/Ü;/*xÑ?�P]9,@ˆ!  ŒŒ{ Œ y?3í2?ííÆ23ÖÝí014.#".'6673323!5!” &H<3NHK0!3ICJ52?z10<¸ûóDo>N, 6i3 '&†lþ$ÙÙ4ÿÜc&…¶Y(($».ÿ¸@ $M  ¸/@1  % M ()('�#=+ {$Œy?í?9/]]9?íÎ]Î+99//9Á‡+Á‡}Ä+í01]]#.''&&'6677#5Ò  ø ! @Ob<  Xv*›äþ¡E`NG+5VLK*.231#$#,$3d3=.©jÙg*9)@ˆ{ŒŒ y?3íí2?9/99í01".'6673!#!«3NHK0!3ICJ5AÊþï7 6i3 ÙüÉ7…39*6@ˆ,%)ˆ""*+"%%){{Œ y?3í2??93Ö233í2Þí01".'667332!4.#4>7!É3NHK0!3ICJ5Ö?z10<þï &H<þ" C†C þï7 6i3 '&†lýKo>N,ýù+GB@%8qJþ׃C@ ˆ{Œy?í?Öí901!#5Cþï¯ûð7ÙMT9E@$V� …  Œ Œy{??í3í2Æ]Æ99//Á‡+}Ä01]#!.'6673!Tö‚þë€";:@'!3ICJ5…7üÉ8 6i3 Rÿÿ|9#*@ ˆ%8%ˆ$Œ#y{{???3í22Þí]Þí012!4.##!467&&'6673&?z10<þñ &H<Êþñ#H/!3ICJ5'&‡mýLp>N,Es=ý¾<>€E6i3 rÿàÃ7;°@!=<552Š PMHMPM8;;8¸0@#;M;; ==HM=XM&'&'¸,@<!z;'Ž|8Žz?í?í3/9?39Æ22/‡+Á‡}Ä++Î99//+‡+Á‡}Ä+++í2/01]]667#"&'.'66723>766544'&&'? 9‡�Œ> NU9‰—¡Q55:&4:abnGþ5BfE?‡B5 6]1d€Z!@ˆOŒy?í/]Þ2ý2ÝÎ01%6676655#5Z þóåþ„6H8"'2F1‘ÙDþÅŸ9"@ˆ~Œ y?33í2?Î2Þí01".'6673!!ˆ3NHK0!3ICJ5½ þï7 6i3 -ûQrFÿÿË9,9@.-""'ˆ.!-!Œ{Œy?3í2?íÎ23Î2/í2/01]]".'667332!5!4.'4.#Õ3NHK0!3ICJ5Y=w00? ü—w &H<7 6i3 ((ˆj8ow‚J'5&Ù/gih0>N,dÿÉÅ4`µ M¸ÿØ@#M ”  ˆPMˆ ¸ÿð@ €Œy}??í3?839/ýÎ+Þí99Á‡+‡}Ä++01!'7>55!u7 _^ÿÂqHa;ý°4þÜ"*ØvÒiþ楀QkVO5³ý a9#*@ˆ%%#ˆ$Œ{ Œy?2í22?íÞí]Þí012!467&&'66734.## ?z10<ü6#H/!3ICJ5° &H<á'&‡mýM<>€E6i3 üÉ–>N,Es=þ—rÿ÷‘DIO@(3$ˆKA;:3A3:‘;A;A:;33;J;�Œ{3-Ž z •?8?í2?í?Î2/Á‡+Á‡}ÄÞí9016676632!5!>454654&'&&#"!7>76654.'r5h8" TºZ?t]A ýó  JE&L)+  þð  Â#? 1++UR&HiC6‰Q&T;E~*0Ù=`G; :QD'o x[W]=°@srtB,)*mþÅK@ ˆ~Œy?í?ÞýÝÎ01!#5KþïÍúµrÙG%@‰ŒyŒ{?í?íÎÞí901]!5!4.5!5¶  ý[±  þÿ‹.Da‰¹z &'*Ù`z†x]Ù?ÿèV9+JD¹7ÿè@$ M M( M:2B‰ L,2‰K",Œ%+y:�‚?í?3í22Þ2í2Þí901+++2#".'&45467667&&'6673332>76654&'.#ÿ?z006J«ddª~J  !,V9!/D>@,!0 "5F**G6! #E<(&‰m.H2eª}FF}ªe  /`5&N 6i3  Ù40o58/K66K.5 @>N,8ÿm�94¹.ÿà@F M.1‹ 6)..)“).‹  Ž..Žú!!zŽYC6#…Œùz?]í}?]]]]í?]í99í]//Á‡+Á‡}ÄÎ2í]01+667'667&'.''667667667à „ "*s�¢±½aHi²K1`1 x1 @ 3G1 !&1%3=, e6h6f#F#NŒ@s´‹hP=æ9"‚‚"35f3  (,5!5]p•m-_3B˜TkþÄ NŒ@O ““(M‰  ~ M�[I8•?2]]]í+?99//ÎÖí99//+Á‡+Á‡}ÄÁ‡+}Ä801]]!4&'&&'&&'%W<†‡�65Cþû (d.Tˆyþ¾N $9#&Y3üÀ*6 ÁQÆ¿Z N!@4(%M #$L0"M!M MMM0M8M(M¸ÿè³#M¸ÿø´)*L¸ÿè³(M¸ÿس'M¸ÿà´%&L¸ÿг#M¸ÿ¸@J"M“ ! ! !“!!! M !‰ #!"R D ! ! Œ{Žø •?8]2í?í99//]]Î2Öí99//+Á‡+Á‡}ÄÁ‡+}Ä++++++01+++++++++++!5!4.'&&'%_]‘ve03E)ü}«#'^<^ƒyþÂN$"!8HZ4þo,O>Ù�#1# ÃNƽXþ˜7?'й)ÿØ@M "M@ MMM0M¸ÿسM¸ÿгM¸ÿØ´L¸ÿà³M¸ÿÀ³M¸ÿ°³M¸ÿ¸³M¸ÿÀ³M¸ÿà³M¸ÿ¸³M¸ÿÀ³M¸ÿè@ M0 M ¸ÿȳM#¸ÿè@ M# M#¸ÿÀ³M#¸ÿгM#¸ÿè³M#¸ÿà@!L#M# M#( M# ) "M H M ¸ÿø@M M ("M H M 0M ¸ÿÀ³M¸ÿȳM¸ÿгM¸ÿȳM¸ÿà³M¸ÿ°³M¸ÿ¸´L¸ÿ°³M¸ÿÀ³M¸ÿè³M¸ÿسM¸ÿà@ M¸-@’~'Œz?í??39//‡+Á‡}Ä++++++++++++‡ÄÄ+++++++ÖÍ+++++++++++++++++++++++++++++01'.'7667667'®ˆ>+1‡^[ ,!,Y-'+$ þ9ñù9N ¡?Z 5Y“@K}<Ø0A,<,T*"59C))eýµ$]9&T.&E*;'%@)) MM¸ÿȳ M¸ÿ¸³M¸ÿà´L¸ÿسM¸ÿÀ³M¸ÿ°³M¸ÿˆ³M¸ÿ˜³M¸ÿȳM¸ÿà³M¸ÿгM¸ÿÀ³ M¸ÿø³M¸ÿè³M¸ÿð³M¸ÿȳM¸ÿÀ³M¸ÿ°³M¸ÿ˜³M¸ÿȳM¸ÿà´L¸ÿè³M¸ÿà´M¸ÿسM¸ÿ¸³M¸ÿè³M¸ÿг M¸ÿسM¸ÿà³M¸ÿгM¸ÿ¸³M¸ÿ°³M¸ÿ ³M¸ÿ°³M¸ÿ ³M¸ÿÀ³M¸ÿȳM¸ÿгM¸ÿØ@ M¸-µ¸ÿø@M $¸ÿè³M$¸ÿÀ³M$¸ÿسM$¸ÿà@M$@ L$ M$0 M$¸ÿà@ M) (&Œ[''z [’YŒ {?í]2?]39?]íÆÖ+Í+++++++393}‡ÄÄ+‡+Á‡}Ä++++++++++++++++2+++++++++++++++++++++++++]01!5!&&'.'667>77'7*6 (:*¥ü®!_¾^):.(7}7(.;)® ’0ç�Å/NGA!½+h+ÙnÙn0MLV8-8VNM0É$-6"yÎþÅm9+9ˆ¹ ÿà@O%! %!”  !  9*ˆ;48ˆ19@M90M90M90M90M9::8M:8M8~ €411Œy?33í223?9?++Þ+++++2í2Þí99Á‡+Á‡}Ä801".'66733!'7667>554>7!Ã3NHK0!/D>@,!S+LVV!‡3E ý- C†C þï7 6i3  -Ù8_UP)$`f`$¥™9S#126!³ýù+GB@%8qJýœS¤9@ˆ{Œ y?3í2?ÎÞí01".'667332!4.#—3NHK0!3ICJ5y?z10<þï &H<7 6i3 '&†lýKo>N,WÿàW8/L´@NM (MM M M ¸ÿ`³ML¸ÿØ·ML5‹AG¸ÿè@MGAA ‹N*/ / ¸,@)  (M 'M'MG;>z '*zŽ|z?3?í3/?39/?39Æ2+2/+‡+Á‡}Ä2Þí93+í2+01+++++]]%32>76654&'>7!"&'.'6677>544'4&'667.'¾);xl'9++>:B/ 2þNþ€B�N- ;y<‚B�B C*937'Ê6\GdÔl+T+  +e51^(þŽþ– [4O>55:&4:abnG6*;.) $-I#;BN0± <—92B¶43¸ÿð@ M!ˆ4‹!!3Œ{{*'Œ-y?2í22??íÎ2íÞí9+01]]2!4.##!53&&5467667&&'6673A?z10<þï &H<—!   þæ ,U8!3ICJ5'&†lýKo>N,EžL,MJI';*M#ÙMŽE7o926i3 Fž¸µ ³ã?í016632#o(],7*2J2¬iy#4#*KYpN!Fžr¶·ãã?í?í016632#%6632#)(],7*2J2¬iþ(],7*2J2¬iz#4#*KYpN!¸ #4#*KYpN!Iß@ €0M@0M¸ÿÀ@ 0M`0M¸ÿÀ@`0M››› › º96?í??????????Ö2‡+Á‡}ÄÖ299‡+Á‡}Ä99Á‡+Á‡}ÄÁ‡+‡}Ä]+++++01.54>32!!!3!3X-D-&2(U$:_¤þ’þµþµþ’¤v6:6v*GfPE& / ©þú�úc€û€�ûÉ7ûÉ7-ÿòãƒ7„@B433Z212214/77Z6.66./5/.6-%.061160.2S%928763210.-± º97?í?3????????ÆÖí9////9}‡ÄÄ3‡+}Ä3‡+}Ä01.54>32>54.'>7!!!!„-D-&2(U$:_5)#@>># @EFþÀ^˜þÄþò Ô½j�GfPE& / ©þúü%Cxu{G$BHU7 0F!"E&B‰FF‹…|7lþ”ü±¹–Iß@ €0M@0M¸ÿÀ@ 0M`0M¸ÿÀ@`0M››› ›º96?í??????????Ö2‡+Á‡}ÄÖ299‡+Á‡}Ä99Á‡+Á‡}ÄÁ‡+‡}Ä]+++++016632#!!!3!3„$U(2&-D-œ_E¤þ’þµþµþ’¤v6:6vÙ / &EPfGþmúc€û€�ûÉ7ûÉ7-ÿòãƒ7„@B433Z212214/77Z6.66./5/.6-%.061160.2S%928763210.-±º97?í?3????????ÆÖí9////9}‡ÄÄ3‡+}Ä3‡+}Ä016632#>54.'>7!!!!°$U(2&-D-œ_T5)#@>># @EFþÀ^˜þÄþò Ô½jL / &EPfGûCxu{G$BHU7 0F!"E&B‰FF‹…|7lþ”ü±¹–I='6ä@ +€0M5@0M4¸ÿÀ@ 0M1`0M0¸ÿÀ@a0M+++,434›*+*+4*12+,1,+›2121+223.(56()5)6›()(),*-))(80/.-0-/›.-.--.7632/.-,*)(»6 6?Í?Í??????????Ö2‡+Á‡}ÄÖ299‡+Á‡}Ä99Á‡+Á‡}ÄÁ‡+‡}Ä]+++++012#".54>!2#".54>!!!3!3·2&%34''4ÿ2&%34''4‡¤þ’þµþµþ’¤v6:6v=&23&&33%&23&&33%þ`úc€û€�ûÉ7ûÉ7-ÿòã°'O‰@CLKKZJIJJILG(OOZNFNNF(GMGFNE=FHNIINHFJ-S=QJPONKJIHFE27±»7 7?Í?Í?3????????ÆÖí9////9}‡ÄÄ3‡+}Ä3‡+}Ä012#".54>!2#".54>>54.'>7!!!!ã2&%34''4ÿ2&%34''4–5)#@>># @EFþÀ^˜þÄþò Ô½j°&23&&33%&23&&33%ûCxu{G$BHU7 0F!"E&B‰FF‹…|7lþ”ü±¹–A7|@<�Džž º96?í??9/3????/Æ/Æ9/‡+Á‡}ć+Á‡}Ä3í]01.54>32!!n-D-&2(U$:_-þþèþ0KK*GfPE& / ©þúŒüêýxˆý¥[™þ\Yƒ?C@!>R'RA6R3@?@?5&9X-¶W¯ º97?í?3í]2?í9??]ÖíÖíí01.54>32#"&'66732>75##"&'&&5!32>71-D-&2(U$:_ŒK‰¿sY·N,H”E/0.# !GRb:<¨kaýPVZ$:K&‘ÌÓü‘!5!üüÐ0Ó¾ÌÓü‘!5!üüÐ0Ó¾ÌÓü‘!5!üüÐ0Ó¾¤Ó`‘!5!`üD¼Ó¾)Õ“!5!ûðÕ¾<ž®µµã ?3í01#".54>73…(],7*2J2¬iÚ"5#*KYpNþßFž¸µ ³ã?í016632#o(],7*2J2¬iy#4#*KYpN!Fÿиçµã?3/í016632#o(],7*2J2¬i«#4#*KYpN!<žh¶@ ãã ?3í?3í01#".54>73#".54>73?(],7*2J2¬iþ†(],7*2J2¬iÜ "5#*KYpNþß»"5#*KYpNþßFžr¶·ãã?í?í016632#%6632#)(],7*2J2¬iþ(],7*2J2¬iz#4#*KYpN!¸ #4#*KYpN!FÿÏrç@ ãã ?3/í?3/í016632#%6632#)(],7*2J2¬iþ(],7*2J2¬i«#4#*KYpN!¸ #4#*KYpN!|‹± /Í012#".54>A-H46H()G6 6H6H()G66G)+I4¶ÿì�';+@=-ß7ß#ß<(Þ2áÞáÞ á?í?í?íÖýÖýÖýÆ012#".54>!2#".54>!2#".54>C 4%'33''3v 4%'33''3‚ 4%'33''3'33''34%'33''34%'33''34%x  S'+?Sg{©@i;ÐYÑcÐ1+()*+*)Ö(+(+)((*1OÐmÑwÐE}Ð#ÑÐ|(@,ÒhÏTTÓr^ÒJ6Ôà*Ñ*¶*æ*ö*T*d*t*”*¤*B* *0** ÒÀÓÒ™?ýöqí3]_]]]_qq?3ý2öq2í22ÖýöíÖýöýÎ99Á‡+Á‡}Äýöí012#".54>"32>54.5%2#".54>!2#".54>"32>54.!"32>54.„-^M22M^--_N22N_-"/ /"!/ /µü`Ø-^M22M^--_N22N_œ-^M22M^--_N22N_ý¾"/ /"!/ /N"/ /"!/ /S=s__s?=t``s=a3G*+G32G,+G3œ•ýJ”µ=s__s?=t``s==s__s?=t``s=a3G*+G32G,+G33G*+G32G,+G3ª#ç·÷ø??9/3/01�Œþ¬UŽþç‹þªþ¨‹ãÈ#8ç·÷ø??9/3/01 'UãþŽUþ¬çþþ‹XVd‰ž·????01!‰úÞþý"žúbžAÿÜ96LE@%6ŠAAŠNJˆMˆK{%"GŒ9*/y{Ž� z?3?í??399í22?/íÞíÞí9/í01%32>54&'667#"&'!467&&'>73!2&&'>54.#!!=ˆÑ�I@�E �åþͺX¤I ý8D5  -;0-…?z10< EB &H<þcþñÇYª÷ž*R+ 3z=(J Àþë³V „9<~C  402 '&‡m/Š[+%$>N,Es=ý¾xÿè´;‘@Y (=R;;R77R44:5<4''$W+8U;7U4p€ 0° °Q 0`p€4((+ W  ?3í2?3]99//]qq]q3í23í2í2]Î22í3í3íÎ23301467>32&&#"!!!!3267#".'&&55#535#53&&RYW!M°g!UŠ40BWþ©Wþ©B04ŠU!g°M!WYR&®®®®(a“3&)ÊT:*¹°¹4:TÊ)&3“aN¹°¹dã§�\@   ` ¼B B B´¸B??ÍÍ????3|/?3|/3]/Î2/3Î9Î9901###5###3ÌØ¶ÚêY´5�±�5²Vij³�wýÅ;wýO�þh˜þp±ýÿ))!!)û×)û×gÊ 5D@&*R'7+R&R1106 ¬ W2U51U,U/)+U&?í??íí?í?3í2?Í9Æ2ííÖí012#".54>4>32&&#"!!!!!53#53$"=--="#<..<ü#S‹hQ¾k+Zƒ21< †þíý�Nüò®®® -="#<..<#"=-þ+i˜a/¾.RAûðHý€ÈÈ€Èg«Ç!=@"R#RR"U WU!UU ??íí?í?3í2?íÆ2/ííÖá014>32&&#"!!!!!53#53#S‹hQ¾k+Zƒ21< Nþ²qú¼®®®6i˜a/¾.RAÈý€Øú`È€ÈWÿàWU ;X¼@ZY,(M+M ¸³M,¸ÿ`³MX¸ÿØ·MXA‹MS¸ÿè@MSMM%+ ‹%Z6; +,;, ¸,@++,++,,(M,,3M3+YS(GJz,,+36z++ Ž(|z»??3?í3/?39/?39Æ2+2/+‡+Á‡}Ä2Þí3Í93+í2+01++++]]2#"&54632>76654&'>7!"&'.'6677>544'4&'667.'»'55'&44ý));xl'9++>:B/ 2þNþ€B�N- ;y<‚B�B C*937'U4&'67&%5ûu6\GdÔl+T+  +e51^(þŽþ– [4O>55:&4:abnG6*;.) $-I#;BN0± ÿ»ÿàWU ;X¾@ZY,(M+M ¸³M,¸ÿ`³MX¸ÿØ·MXA‹MS¸ÿè@MSMM+‹%Z 33M3+6; +,;, ¸,@%+,++,,(M,,+YS(GJz,,+36z++ Ž(|z»??3?í3/?39/?39Æ2/+‡+Á‡}Ä23+3ÍÞí93+í2+01++++]]2#"&54632>76654&'>7!"&'.'6677>544'4&'667.''55'&44Ï);xl'9++>:B/ 2þNþ€B�N- ;y<‚B�B C*937'U4&'67&%5ûu6\GdÔl+T+  +e51^(þŽþ– [4O>55:&4:abnG6*;.) $-I#;BN0± WÿàWU ;XhÇ@ji,(M+M ¸³M,¸ÿ`³MX¸ÿØ·MXA‹MS¸ÿè@MSMM%+f\\‹% %j6; +,;, ¸,@-+,++,,(M,,3M3+iY·S(GJz,,+36z++ Ž(|z»??3?í3/?39/?39?Æ2+2/+‡+Á‡}Ä2Î2Íí2Í93+í2+01++++]]2#"&54632>76654&'>7!"&'.'6677>544'4&'667.'%2#".546»'55'&44ý));xl'9++>:B/ 2þNþ€B�N- ;y<‚B�B C*937'{'5!!4U4&'67&%5ûu6\GdÔl+T+  +e51^(þŽþ– [4O>55:&4:abnG6*;.) $-I#;BN0± *4&""%5ÿ»ÿàWU ;XhÉ@ji,(M+M ¸³M,¸ÿ`³MX¸ÿØ·MXA‹MS¸ÿè@"MSMM%+f\\‹%j 33M3+6; +,;, ¸,@'+,++,,(M,,+iY·S(GJz,,+36z++ Ž(|z»??3?í3/?39/?39?Æ2/+‡+Á‡}Ä23+3ÍÞí2Í93+í2+01++++]]2#"&54632>76654&'>7!"&'.'6677>544'4&'667.'%2#".546'55'&44Ï);xl'9++>:B/ 2þNþ€B�N- ;y<‚B�B C*937'{'5!!4U4&'67&%5ûu6\GdÔl+T+  +e51^(þŽþ– [4O>55:&4:abnG6*;.) $-I#;BN0± *4&""%5�þò<6:p@7+***¸-@"1<:‰;8¾7¶3Œ4z%’�¸ÿà±€?8??9?í?íÖí2ÖÍ99//Á‡+Á‡}ćÄćÄ301#4>7>7.'6676676677'7!5R".>+ݯý÷ÿ 6+)#!7}7(/;)¿$ ’$qþÄþ+²>bPD!þœYQ`e./69AOa<=j_Y-!>CK-.8XOO/Ü;/*xÑ?�ûïvv�ýø<6>x@;:>77+***¸-@"1@>‰?8¾7¶3Œ4z%’�¸ÿà±€?8??9?í?íÖí2ÖÍ99//Á‡+Á‡}ćÄćÄ39901#4>7>7.'6676676677'7##7#5R".>+ݯý÷ÿ 6+)#!7}7(/;)¿$ ’$qþIJ�®²>bPD!þœYQ`e./69AOa<=j_Y-!>CK-.8XOO/Ü;/*xÑ?�ûïvúúv�ÿÃ<6Fl@:+***¸-@1HD‰G73Œ4z%’�¸ÿà±€?8??9?í/Öí2ÖÍ99//Á‡+Á‡}ćÄćÄ301#4>7>7.'6676676677'72#".546R".>+ݯý÷ÿ 6+)#!7}7(/;)¿$ ’$qý¦'5!!4²>bPD!þœYQ`e./69AOa<=j_Y-!>CK-.8XOO/Ü;/*xÑ?�ý‚4&""%5P]9/9@-##ˆ1 0 ¸4@ ŒŒ{ Œ y?3í2?íí?Æ23ÖÝí2Í014.#".'6673323!5!2#".546” &H<3NHK0!3ICJ52?z10<¸ûóDþð'5!!4o>N, 6i3 '&†lþ$ÙÙŒ4&""%54ÿÜc&6ƒ·Y((*$».ÿ¸@ $M  ¸/@-  % 8)87'�#=+ {$Œy?í?9/]]9?í/Î]Î99//9Á‡+Á‡}Ä+í201]]#.''&&'6677#52#".546Ò  ø ! @Ob<  Xv*›ä'5!!4þ¡E`NG+5VLK*.231#$#,$3d3=.©jÙþx4&""%5g*9#2@ ˆ$%$%¸4@ {ŒŒ y?3íí2??9/99í201".'6673!#!2#".546«3NHK0!3ICJ5AÊþïñ'5!!47 6i3 ÙüÉ7Ò4&""%5…39,:>@ ˆ<59ˆ22:;2559{p{Œ y?3í2?/]?93Ö233í2Þí201".'667332!4.#2#".5464>7!É3NHK0!3ICJ5Ö?z10<þï &H<'5!!4þY C†C þï7 6i3 '&†lýKo>N,k4&""%5þd+GB@%8qJþ× C!· ˆ¸4µ{Œy?í??Öí2901!#52#".546Cþï¯'5!!4ûð7ÙþU4&""%5KT9"P@V� $…$ #¸4@ Œ Œy{??í3í2?Æ]Æ99//Á‡+}Ä301]#!.'6673!2#".546Tö‚þë€";:@'!3ICJ5…ýQ'5!!47üÉ8 6i3 þU4&""%5rÿàÃ7;K’@ML?552Š 8;;8¸0@;; M&'&'¸,@L!z<;;'Ž|8Žz?í?í3/93?39Æ22/‡+Á‡}ÄÎ99//‡+Á‡}Äí2/301]]667#"&'.'66723>766544'&&'2#".546? 9‡�Œ> NU9‰—¡Q55:&4:abnGþ5BfE?‡B5 6]1o4&""%5€Z!%@"ˆ#OŒy?í/]/Þ2ý22ÝÌ01%6676655#52#".546Z þóå '5!!4þ„6H8"'2F1‘Ùþ¹4&""%5DþÅŸ9'+@ ˆ)(¸4@ ~Œ y?33í2??Î2Þí201".'6673!!2#".546ˆ3NHK0!3ICJ5½ þïþö'5!!47 6i3 -ûQrÒ4&""%5FÿÿË9,<B@.-0""'ˆ>!=-¸4@ !Œ{Œy?3í2?í?Î23Î2/í2/201]]".'667332!5!4.'4.#2#".546Õ3NHK0!3ICJ5Y=w00? ü—w &HN,Ò4&""%5dÿÉÅ4'dµ M¸ÿØ@%M ”  ˆ))PM(ˆ ¸ÿð@ €Œy}??í3?839//ýÎ+Þí299Á‡+‡}Ä++01!'7>55!2#".546u7 _^ÿÂqHa;ý° '5!!44þÜ"*ØvÒiþ楀QkVO5³ýýh4&""%5rÿ÷‘DIYX@3M$ˆ[A;:3A3:‘;A;A:;33;ZJ¸4@;�Œ{3-Ž z •?8?í2?í??Î2/Á‡+Á‡}ÄÞí29016676632!5!>454654&'&&#"!7>76654.'2#".546r5h8" TºZ?t]A ýó  JE&L)+  þð  '5!!4Â#? 1++UR&HiC6‰Q&T;E~*0Ù=`G; :QD'o x[W]=°@srtB,)*þð4&""%5G,-@ - ‰.-¸4·ŒyŒ{?í?í?ÎÞí2901]!5!4.5!52#".546¶  ý[±  þÿ'5!!4‹.Da‰¹z &'*Ù`z†x]ÙþU4&""%5?ÿèV9+JZ9@:2NB‰ \X,2‰[K¸4@ ",Œ%+y:�‚?í?3í22?Þ2í22Þí29012#".'&45467667&&'6673332>76654&'.#2#".546ÿ?z006J«ddª~J  !,V9!/D>@,!0 "5F**G6! #E<'5!!4(&‰m.H2eª}FF}ªe  /`5&N 6i3  Ù40o58/K66K.5 @>N,Ó4&""%5kþÄ N+Ž@J-, ‰ $““) -, ~[I8•?2]]]Í2?99//ÎÆ99//3Á‡+Á‡}ÄÁ‡+}Ä3í2801]]!4&'&&'&&'%%2#".546W<†‡�65Cþû (d.Tˆyþ¾Å'5!!4N $9#&Y3üÀ*6 ÁQÆ¿å4&""%5Z N!1�@C%‰ “ ! ! !“!!! ! 3!2R D ! ! *Œ{"Ž •?82í2?í299//]]Î2Æ99//Á‡+Á‡}ÄÁ‡+}Äí201!5!4.'&&'%2#".546_]‘ve03E)ü}«#'^<^ƒyþÂ'5!!4N$"!8HZ4þo,O>Ù�#1# ÃNƽ_4&""%5E*;'7m@ )9¸-@+ $95 8&Œ[''z [’(YŒ {?í]22?]39?]íÆ2ÖÍ393}‡ÄÄ+Á‡}Ä2]01!5!&&'.'667>77'72#".546*6 (:*¥ü®!_¾^):.(7}7(.;)® ’0þB'5!!4ç�Å/NGA!½+h+ÙnÙn0MLV8-8VNM0É$-6"yÎý£4&""%5þÅm9+;I~¹ ÿà@C/*ˆ%! %!”  !  IKDHˆAI0MI0MIJJ8MJ8MI~, €DAAŒy?33í223?9/?++Þ++2í2Î99Á‡+Á‡}Äí2801".'66733!'7667>552#".5464>7!Ã3NHK0!/D>@,!S+LVV!‡3E ã'5!!4þ6 C†C þï7 6i3  -Ù8_UP)$`f`$¥™9S#126!³|4&""%5þu+GB@%8qJýœS¤9,%· ˆ.-¸4·{Œ y?3í2??ÎÞí201".'667332!4.#2#".546—3NHK0!3ICJ5y?z10<þï &HN,Ò4&""%5WÿàW8/L\¼@^] (MM¸³M ¸ÿ`³ML¸ÿØ·ML5‹AG¸ÿè@MGAAZPP ‹^*/ / ¸,@+  (M 'M']M·G;>z '*zŽ|z?3?í3/?39/?39?Æ2+2/+‡+Á‡}Ä2Þí2Í93+í2+01++++]]%32>76654&'>7!"&'.'6677>544'4&'667.'%2#".546¾);xl'9++>:B/ 2þNþ€B�N- ;y<‚B�B C*937'{'5!!4Ê6\GdÔl+T+  +e51^(þŽþ– [4O>55:&4:abnG6*;.) $-I#;BN0± *4&""%5<—92BJ@DC!6@@ˆD‹!!C3¸4@ Œ{{*'Œ-y?2í22??í?Î2íÞí9Í901]]2!4.##!53&&5467667&&'66732#".546A?z10<þï &H<—!   þæ ,U8!3ICJ5Ë'5!!4'&†lýKo>N,EžL,MJI';*M#ÙMŽE7o926i3 þU4&""%5ƒCU @ˆ  {Œ y»??í?Öí9012#"&546!#5u'55'&44ôþï¯U4&'67&%5þ»ûð7ÙÆ337; O<X ” � f­   (# K x] Õ çCopyright (c) 2012 by Hagilda. All rights reserved.AlefBold1.002;UKWN;Alef-BoldAlef BoldVersion 1.002;PS 001.002;hotconv 1.0.56;makeotf.lib2.0.21325Alef-BoldHagilda Tel AvivCopyright (c) 2012 by Hagilda. All rights reserved.AlefBold1.002;UKWN;Alef-BoldAlef BoldVersion 1.002;PS 001.002;hotconv 1.0.56;makeotf.lib2.0.21325Alef-BoldHagilda Tel Avivÿr–¨  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a£„…–膎‹©¤ŠÚƒ“�ˆÃÞª¢­ÉÇ®bc�dËeÈÊÏÌÍÎéfÓÐѯgð‘ÖÔÕhëí‰jikmln oqprsutvwêxzy{}|¸¡~€�ìîº   ýþ  ÿøù !"ú×#$%&'()*+,-.âã/0123456789:°±;<=>?@ABûüäåCDEFGHIJKLMNOPQRST»UVWXæçYZ[\ØáÛÜÝàÙß]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤²³¶·Ä´µÅ‚‡«¥Æ¾¿¼¦§¨Œ©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈglyph1uni000Duni00A0uni00ADAmacronamacronAbreveabreveAogonekaogonek Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacron Edotaccent edotaccentEogonekeogonekEcaronecaron Gdotaccent gdotaccent Gcommaaccent gcommaaccentHbarhbarImacronimacronIogonekiogonekIJij Kcommaaccent kcommaaccentLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaronEngengOmacronomacron Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Tcommaaccent tcommaaccentTcarontcaronTbartbarUmacronumacronUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccent Scommaaccent scommaaccentuni021Auni021B afii57799 afii57801 afii57800 afii57802 afii57793 afii57794 afii57795 afii57798 afii57797 afii57806uni05BA afii57796 afii57807 afii57645 afii57842 afii57804 afii57803 afii57658uni05C7 afii57664 afii57665 afii57666 afii57667 afii57668 afii57669 afii57670 afii57671 afii57672 afii57673 afii57674 afii57675 afii57676 afii57677 afii57678 afii57679 afii57680 afii57681 afii57682 afii57683 afii57684 afii57685 afii57686 afii57687 afii57688 afii57689 afii57690uni05F3uni05F4WgravewgraveWacutewacute Wdieresis wdieresisYgraveygraveuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Aafii299afii300uni2010uni2011 figuredashuni202Funi205F afii57636EurouniE000uniFB01uniFB02uniFB2AuniFB2BuniFB2CuniFB2DuniFB2EuniFB2FuniFB30uniFB31uniFB32uniFB33uniFB34uniFB35uniFB36uniFB38uniFB39uniFB3AuniFB3BuniFB3CuniFB3EuniFB40uniFB41uniFB43uniFB44uniFB46uniFB47uniFB48uniFB49uniFB4AuniFB4BÿÿÌ=¢ÏÍ�oÍo|ç :*+789:;<<==>§ @vhebrlatn zz01ÿÿzz01 ÿÿmarkzz01$zz02*zz030tÌ Ü"P+366 == âââââââââââ5l–œ¢¨®´rºÀÆÌÒxØ~Þä„êððŠü�–œ¢¨®´ºÀÆÌÒØÞäêðöü·äÞÿöd¸£!ž§´ÿèÿ¦ FÿøºÿãÒLZshYô  &7EKMPSx $wÿäEÿäÿ€ÿä�n8Ò .F45:;>X‹Ž‘¦5„Š�–œ¢¨º¨®´ºÀlÆrÌÒxØÞ~äêðöüöööö„Š�–œ¢¨¨®´ºÀÆÌÒØÞäêðöüþ¤þÞþ­ÿÿXÿ$ÿKþÕþû þÚþ¸þÒþñþOþêÿþ·ÿTÿ‡ÿ'þôþÉÿþø Tèhebrlatn zz01$ÿÿ zz01ÿÿÿÿ  ccmpDligaVzz01^zz02dzz03jzz04pzz05vzz06|zz07‚zz08ˆzz09Ž Rt¢Îè(B2<FPZdnx‚Œ– ª´¾ÈÒÜæðú‘7’7“7”7•7–7—7˜7™7š7›7œ7�7ž7Ÿ7 7¡7¢7£7¤7¥7¦7>DFJLL NO QRTXn Œ;‹: �7Ž7‹ŒŽ7;�7:W,�2�3>§4C,‰LŠOIpython-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/fonts/Alef-Bold.woff2000066400000000000000000001030041524561404200315570ustar00rootroot00000000000000wOF2†h˜…™ƒ?FFTMB‡†J`‡v… Œ# „ð„©f6$� †R …M”F ‡[è@qÝ`›ð µôfUýóão'c×€ÛáU³_8špcÜ<$¨ŸœìÿÿÿOLcì;l;EÃgUÿC‘í(k¶ÊµÖä5‘ )A}SRbª‚¡cÄç3<—SÙdá ý…gxàæë Ìp-~Ýô®‚£„“(…¦¡j|/gdÜÁÉ¿>-$ºÛ†Éhd'õàu4®¢´!AÂ0Ùd –`êº��ñ½)y£�vœ8oÑšô�¦ÙÂ&¬™½LÓS˜¤’jljï@¤efÝ3óV»x(Z¡èÅ»Ð{ð¿ô•W ïÀ±¬ ŽLâ ók“(i5´'^.J¼ãYpEuèafÅ-šùü´–T‹7…R¨%{|‡š*ý>À×0õ(Ghì“\.žç÷÷ßZû=Ù?â@iœ¨# i\­4ɨLÓ„{hnÝ�Þ€�mÀÆš±(6XÑ«€cÅz”R© D)Ø<&&¢b``Åë‹XùÿÆ·ý~ùþŸÎìóü™‘díF@‡ØÎ‹_âcNø®À¢9ÖQI-Õ Ýq·Àóñ÷’gæÝy)–Pi–Ð%À�± Z¥íóOS«þÿ¥"þ…ªb—,°,CdÇŠ,+ qi”rgÖÓ½�™N÷’²xÇ äÎRÓñ"vÞŒ‘èd ©t%ºíÍçÔ¾£ˆ ÐÀf”,J–l ‡·_öZko úe¬þ•¶~ è– ©¾X4¿öBn÷—×Ý�Ë Ñ?æÖ—€¿&-óW\Žë§½nÒFSÊ»Àö:¢Æ0¢ßõRWJÇÏ~@äÙñ€ÞøD‚£iÜE"½zUä@fN˯üçNª«È €«W "¾çIÃ^fZe[…L5÷šŒ!G«aÐ ØÛB djC@ôyz[ç5îûŽ÷´¯�q&TjÎ)9 ìvÅGãi(°ôyÞ'?)VfÈ›í0fB�cN»èšMî›ï©ºüâ­9½È½AÉ[`€3‰\ñ£ ø3Z@Žd_,ÌÓlú3«{Žb‹¥ä�ax`ÔNp›ŸºÒvÈˆÑæÒ_ö1?Ž2C�„ S›µdT'1ÓÏÀœ9CFßË(ýÌC�‰šLÕbŸÙ•<¶1ˆÂ¤»1½ú‹ljërõQ̈t0Má´»îŠ#ÏBðö]:€Û] ®Ýéùnó$ÄÇû®º,‚þö1ø«ev°Æ~Õ§6±ƒ«atçåm·˜mLxjöæ é3‰¹ìŽùwòÆ>$8мCŠý%°žG¬•¢×0rÙG{eîƒyco¬~RXLˆ´`Z‹`ÇW +xãã9ŸN™R^¨_—çvv›í§pUgOM"PÕ$ MÐÒ$MQ ï`4X  ¤Y"8nòöm7¸ÃžðòuúºÒ¬s³ßÕOí a†G=ô‚DŠû�T\*4é°Ø�»L˜rÙŒÇ^yëŸrGÛî ¥+-× ­Ô* iµÖh­Öi½6h£†õ�F´I›µE[µ Ûÿ+OT8P#^&™„¯É¦à§Ù4àZM'À k©ÏãÕTã²±öËí˜Ü*13 -ap‰¬þ¥« ¤ö�‹£DTÕ?ßàæ]í’´C^ë`×ä,»yTHgÀ ¹NÈsF!rTN« % ã$m ‹V“Ò·|OœÀÝÉ…Îùkú�”…†ºŠæFe¾[¹$gšÑgŽd€ ø{ÖEÙ óZÄÌc¸¤Y¾ia±­jÇ †ê—D§ w§ÿƒ‘…ä<hÄ|[ì´ß„£Ž—ˆ'U†…JÕkr–ÅÎq~àâR?™…©Â¹¹4¿ÌGbwð� %·ŒÜ(ˆ’¨õ£ÝhNÎ!ïŠöÄ¡üÛÿJþ�û7á_Gþ¿Ð²Ûì6á°ãN ’(]¶áJŒÖhªÙζ"0q±ïÏxaªpz.Íô| ¶ïÉù¹mäEQT‹²h*í”ú—ýoÔ)r6ãß�ò·¿yûãÃrigkcmeiqanfjÂÁN€Ëé°j¥ûè‡JreÉ4KºTz2´?zþðyábâùžëØE|@b§PBÜ\  $ªÿ°ü/Q|ñÃ8�PÐ †��€ˆ„Œ"U:&6.žp|" ‰ˆIHE‰#Vœx dä”TÔ4´tô Œ%1I–"•Y +;‡tNfÉ”%[Ž\yÖjµ@»…–Zi­5ÖÙ`½�¾±ÉˆÍ¶Øf«íFí´Û.{ŒÙë€ýš¨yTq)TR­ÔZ­Âìê¥F)€õ, Ó�ÿ¨q� ”í½ñÏÑPóÉ×dž%þòwÕZg“ÍÖÛÀ>× c§=¶ÛáBÙB]5:×6æêЬS›n=zué·À6Ë­0èIQeQY4é2¨/¶LÃò‚g˜ A¤Ÿ’�3°ù3N� û®p¦`Þ^$×�3í¢™-X‘™î/.;p‰¤WP•�hTß3ÚÿÓuÌ…‚ÊáÇ;4èzNÏG”]¸}|{îöϯ¾™â›Êù!èú‚^ÀŸ=(ˆ€s9~Õã²ß€ÂHNûߎJåf� °±àÀ#ZdÜüró™úƒæþÿÿ­ÿÛí]$§q�JÚöfè&»l4Øž„ýÿÔõkÊ`ÍIi l5&hûoºîõ's­Á€J,˜G^â¯ô±B8{û[ù‚¾�9ylú͇µ”pz‡¦ŸíuØ{ogQq/ÍfP×kOÏ#%Vጸ�9àcÁ€¿ |íÎþS7H!@±>? àg¯ î|vçÎÖ°=gû×ÊþÞáì|cµ¤™SS’MI‰Fƒ^§Õ¨UJ…\vã`owº3Ùg½n§Q«VÒ$”9+‹ÚÂÜÌôTâ»G3îqpäÂH2™SY <ÞÔƒ*»Öpó¡ÓÔK 6¬- VX«,ÕØMr30–ƒÝÞ?À¾Ñ»UÉ{&'m�D‹©Hr"ÌY†Q œÙ9Ö¤jž º�G>WΩ“4ÈÓ6Øýi{2 øu†ú£Û=z›Ò|è(¿>:$âU–aØä^+Òƒ;ºaÈý±Å|>š�q›�õ�3ÙaÁÉ]?ü¦‘Ž:1Ûƒžw_`Ø;ï¿ÃÅx Í<ÿ‹!ÏûxrÑÄñ8é|­tùAPSæÿO¨`ïß^ƒG \cý”&sÉMž`Ü®@ÓlÃУkç›EÈb'¾­Š9a“èˆuæ„Ä�:ºrwõjså[åTG�ÑNi®¾¸�6ðm‡ÝrIÁs}†“ªÓ¥ûx}²®†@ËéÒ–gf�gÏÔZžjù¸ X5Ûó lã ¤BÜá þܸ.ŠKÈ\±]Zu9 ±¹£ÓÆ}å(‡bð$ßÉ…}½%¦¼ÄÙÒ)èZ³†“²Ñàa¥÷�©º�–DêI}i!4Ë~î`¬K4Ë�1¢Ñ}ãf‚‰�––WsÇ.HÝÄøeE ­ =”Ü”êŽê?sqå�/ŰigóðiðÚ©Òˆƒªcè]•"«¢²Œ`j ‘hô~]ÆûŽrÞõ(‘Ñ‘‡`�'b5O´eKæ0aq{™¶dA¶!¤ÂôAÂ(:VE˜…0SÛöÌ×!_½+,-#dP#£äµ^=.¯2²mݶrM+a­Ì{+³¥ÌO@¾î 5`ÂÈ6ŸER-0-xtÑwó.¸Ê3¯¯Gc®ï}ÛKüÀ²üm®F×Ed ÛÓŽº¸©«Ö]¯ôç¡{‰äi¾‘z.,‘—èä„À¢““îŠï!0iˆ DSùÅ�ä{:‡³^Ô¼”#_I·î"k2½‹"Âm2Ãu†€†b³˜ ŸÂH‹(>[1‹‰Í<vÛ—ð±EŒ�g´I€Þçø9ŸÄùýn4à¢oÁâk–AMm$µhc0+}½ð͉’'Çãò'$‰sD‹"Ú "fa¿Ž‰¯·¤~¾†G"ïK&‚ä°PCý×ê‘ÕLES?ÁM "†ÀlÕÜ& “<ÄãÃ$Tžðë4Vø×*—y–œLFFB˜š%pÅÅ18Üß§jüˆx¨l2ZöÈŸ)EñJ–mp ã3©Ž6Ó”¥´õ£»CgÜ5Â.V2c¬Ð¥�àç0CØ"[ÑE�k %�§dcU®âX¼Á¸´,°Sbè’²#›zëe*zAðp k¼zÜÁ8Ò±Þ¸QmÑ ¡ovJ 5&±J¥' Œ]\y©¦ªÒc ivT9B 4 |�Êub�nab©Õ0°%Zì’váÑ%ÃfÖOSô&ÖÙC\æW¸Ê�(ñÉÄö~ò×è+5IPÄ}ouÛï!PøÜT£Ö‰#–eGr•;"nªIðÁÀ Î8Ñ™Š«Ì0.Øšš›ô•F×âLÕ4”¹Úýd¬ ‰(Pf2˜²hLP,¤X€¢`)èÍ‚Î�`úAÝë\I ¶I¾*vu.Ž3¬ˆ µDÙÃeÃ'éy˜yt£æíKOjZ�R/_¨�_=¹®4Ö#2F‚¶4ÑÖ1å]Puæ%çœÅL,‰¤µY�íuBF—£%+§åìn§³ßéØOµ7<÷“ÕjÏUGÕ)'Çjž!s‚g1Æ‘+‘ljÂUexpeÂÉÄNJÏ“Ëq)—Ñ%FX‚¨à%î°ƒöU}³.ÛÂc‚Õ\€«P}ŸÂ4Ý"<¶ÍeÖÆ»OIFdíb÷8"EŽn@½“˜ŠŸÞÆÃ=Ä`¸G~D²ÚD£5ðeÍ-¦}T­·“nÈS”♎S€fÿ°ÿÉúW}rœ‰$(Î(º n’‹ßü¥:9;¹õ+Oj‡XN–…ÌÆÞ¸Yiç·ù)‚¶ê&“¡¿ç)ìß¿ßÖ­g¿=îùï”ÕÉÚü}ùÂ’—b®5ÀÇÅh”]’¼yþM|�?‚­¼‘ô ƒ‹‹ÚîõçßeËð¤‚ØÃ§pηÉ5Õ®M>)éÁ°„ùµã2Q*)˜˜DAœYÃf’À¶²àK™7mî{IÀ/‹Ý Ø–” �””ñXHkª¨rˆP6GF^—P8È÷·ŸÅÐ�³ÜE(·+ w›â]›áÄ*N›ΩMUZ(×Ãúî.äDf²êl ns–á:¹)N9Ñ8˜S7±ÈÒ½¶TB×±Çû#®‡Þ¬Å¹”mÖÛ_”õ°ž` 3¿×T€–*¨…Á9öUI˜VÀ­*å03Egë8:mWgDLŸv$.ÍVؤ��ãÝâåøÁ-ˆuÝÍ,ÆG«£Mœ³Í&%·9n”ÑÎ~ĩêѬZÈ.™¦£•,Ö*¯Ó™«µópYûUYjgºMwk›#KÑ£ÚÊ�ïAÆÙÑŽ‡ˆ�rüœ"èØîU{ˆÁÍ�È'Ó)­ yú�bÝ ¬ÀµóвÝ3wíC¶ sHÎf Ôò<7kW½ÎmýM5ŠÒ´F,�YsÓ^ó~å9Ë,D›…˜Å0hq”ß"ŠœÔ[è˜Æw ŽêRqÉQ£Ìï݇‰ñ­çÅÅB™|7Èæ—bñí2´Kêð!Ñ=r—A¸1]LF/ƒØ-&Ð9�r´™[¯.p—á6pj·'Ö•! Ÿ…ÛÌü·ŽT«ßF_b‰“…L"n5{›ûVÜo8yÀÕ6PU÷¦ÄuînÓ³MX�d¨€z\ÕS3 6ìÁ\kÕÛ€ýY©¶õåŽRàÙÅ;wøZéØa:|'>6¢N«iwoSUÂ/=W¼H˜�ùEO¯v;^îQ¦Ë‹–ýµÁ7:·5LB1�ä©t]"Æêßg\ÌM%é$Ãí™îL&a6cCVCÕ(¦!dâLR1>~IöD‹ îéÚ;zÊ!epx<Ø+ ²áB’½w+¶¦Eë5kŒ�z„ÒoopÐ¥­—âi•ûµ£½‹ÑÃ.t¦osq§DùŒÔz "ꬪoÎDÌ4†GD4¤ o&BÑ; vV#p'¹ÎwÕíÿÿº8c !úSìóã©V¬ˆ*Áö'm PÍ «Ê.Ý“Ž"e§1Øa«úë©îÿå´Uîƒ6‹·o:ÒoZ?í5’ ³ðiý�S ¤PMùwSC8¤¦-Ëj3Ñ(}hX¦m“w sçëĹžW­WºçNó£®³oܤš¯»ÌUs%e,͆Éåµk±OÀ:F ŸãeyRX°…,õ™­÷f‡jÃù‰ÏÙ1(oÜDÐ4y:àÅ)“JÓµE–�æ¬íƒš‰ƒù+n¸=´C æBÅùF÷o3·»äfÿ–%h¬_6ÍË`c®µý¼v[^7ì#s#ÀuÃØå=¬ˆ†ø<&W²OÌ:ógÑÒä«m4É¥gö<Ò:9ë޳⾺AyÓFì Ï䯲OtÕ(º,±âCrkãÌKº¶tóOÔÀv¾»Ó+£(wä^ÿÒ%éêQ> Õ§(`!‹!¬2Ä1žä©¸H¤ßŸL Ïóœmæ+zöô‘ã§î‘h5ßœòëÕ\2ͤ]¼àp’êO£I˜ PâŽ{“µ˜1 òCXþ?åËr0´GgzˆGD,’@zpL6ˆLϵ¡úb! иžP9Ÿ�¨ìAK4:-VÚO�»ˆu¢"ÇÑP±šGJåz'.g„­‰nêŒùV—f­XAAC…hnÞ¯�ÆUûAЩё°VJž®á:„NLG*{öLRçÛRQ†Ê(Ï�X8¯ãvwÈBÔ_Üшùô²±MŒM“ÒÔ•®¶5ÇO4g†Ú;K8M*¦o—u%QÛXd]¬Eè$ìÛ4â6îÄ‘�åQ T[ŽËˆ¡VÚ;ú§ã»?«¥�õy|@ÇŠŒ7`ŠR6ó4çéWÎqfXÖDP»öòI´Kê÷òžl'�Ÿfq�éÁ Qnߌ~­jfùs³%ÙaoëØ˜õj‘UÓmºÛŸ#p­¿û]aP‡NŒ¯òˆ£ÃÆ+F³5øGéÛfòQÁ,Jël€µXfsì'û¹Ïibp¥xŸm >¡„ÇCL»ŸZá󷛸/ÝÄå1oÅÕ©Ù T]”ÁŸc%?hKÓí¥s ÎHKÌ)ØF0y_¨PV4%ïÛj*?·¦%Ó#Ž(©³¼T¹“3Š;bˆØÏà—½Ué‚—�p+YZ¥Î¾åÑ´Àç/×w’õ^Š6Æ?�ôâQ™C±®¹x|}«kÔ&ÉGA¡eÃ�\¬·ÅC&Z1¶ÝÆ1@nW¡IJ6+íepÔë!»¿ wf\Š#’‡3'´g˜šY:ŸS&„íf¼' Õè¾�Ê)G½¸dñ§ø¬{œä²1fÃèͰbuõ]g½¹v®Óáý4̳¼Z�3ümço‹®Ýq�È�q‰x-¼cà˜Ô½ÑÑn¤ú"±S>"¯ž ‚×$Š³Ô› $£E’]6rÉ!)ß̼¤E ¸ï)ˆ�çúðÌýIç8Ïò5H‹ù~ÌŒgó-N~Ë²Ž˜PØ”û„RábŠ3Æý;ÙNC7\I°qį �%á°�`nªÓ/Ä (´GIe_"âÕ§†G¡úDÓŠ�‘É"'°íïªh»ÁJMëÁ¾«)¹<Ú�Ô'µü@ÃÅ)pÓûŽ­ÐB Ì��o¶b•M„Ô¾5e¿Ms7ÍÛ´üA³ªmûúþA‚‚K#ÉÛ¨ßWC¬8v©mB݈Å)™ ™ï=`$6ÀçÄ͈ÖIíNëD÷b „n@|•ºø„ìîHÑí\ŠÏ‰‘zƒE�vÙZ­í ¿Í‰›rñr¹Î6㔩¤'OSw¹ŠláUl£É¯ª™F.QÅ-'¤Y^ )›„|ø8±½0¸}[=E¡ÏY¦œ@1õ#kð0/"Dé ±™©üÕÜB2—Ð61ô1/P›eK­‹W% Fásðþ9�%ºÂìyÞãŸgÓL"pÓ¢»vjk¦hó�>@,q‰-Øk‚=5Rà †�Û�I6€ŒŽÛ;3`ÁG†í¸ai)Jù Œü4vß’�xÓ6ùbmÈEê\`ÍP:)�t‡X ãÀðÞf™Þ÷§QÝY”ZòOµ�E; á}N\¬îÝ‹Ƹ­HØŸgÀŒNyÿ×–v0o_£nwÔL�ùä{‘ÌÔtábÃ_%ÊðXÚv†Æ–ï ˆ ~¤Ä†ôH%Ø� £X@‘tr­áPjõÝÊܨãÌ)‘qš…»xáL“ ÌÈu»;ºJ£ãÖ=Ò0 ÚTyÅ"Þe£ H±¬f3¯g+ûPh×vº¹ÍÂÙ.í&^ßOh v?o‹Î ;õñV0æÍÛBú|ôI„¤X‹ö0àT¿q 3çgkìE�!áÞ gÁ<¹‡Õ‚¸ß|µ³wóªZÓíA2Qˆ‘ž¶�m?‡•¾ÐÕÞ·…DRû*…Ýa ~´ 6w%1Ñ/›ê1ó—ã[¶€´“yÇ$šÏ×G7.8ç׿½¶�̶æÎÿ¾‡T;—þP�Ç¿ùÌßå•�›¹î/YnßæŠRëêÕ˜Þ`{ç•?À3ªM�‡…Ãq\«¤@Y6iM\œCò üE²�Êî)€"ë(ÕyQ’PHÀa@¢XÁ¥Nª,÷h+~9q _Â1ܰÔm5«5—V ãjuo“¸¡KÇ¥ ÌÑZlÍd|¬uÅZ´•¥mƒƒ"<Õ…pžÈ0Dÿ'yÎ'Qvaž,n?wy»›7òLŽ9ÒÛ¿Ù‚Ûm:3:'åö,g› 줧°ð`ú x¦Ë.2Õ ¿ÐÝHüΆºC= ¤fý¿ ||"s`Y9>(o$Ó´öà~¾^þQ�Õ {à>~Ís#2OLÓðåe:˜æ‡Ñ¤V+PÜèÔós©C¦û M€/˜¬FiR«#>IºÔŠâ2¤MÍ™$(}æZ/ã^Ùæ’Nµô}HZÕªžj“L1íHR�¯_rÕrãð$YHB”d«•îGDŠÕª‘F˳¸>FD¾Åµ­¸ÂNœ¨Èjå±) «V’†¦ÀFsü˜Ð:Ë` D [áÍuŠë5ή|J xØÈj«Ý/_�Tk®¯ÁùêÄe’(ª<ˆHÐð!+,)�N¼÷¹ud±6’@H+¢´¢4©ÀÆ ]5·%“È%æ.爐ƒ�é†ÊÓžòßGÞm…4{„üÖ Óíßx-?i&åÌÿÝ4Ó¡™¹˜2³È³×K÷kíä;AËY;’[¯ïóÌ7e“Wâ½¢Ö˜¼ÓlaÚ½ö‘ ˜Œà\fV‚!‡×=+‘V/sØrÙE�úëågKaAUd©a_~Œår{|ώ΢eÆfñÚ�™‰�MŽÕ£w�BŽ0šTô@i,îÚ5m°¹ÀÌJ,[·£±ð²�Iq599\ž”�…âñ²Q¦4Q›› !,;€›úÛY_-›ƒ®³¿†R~½ *7¾/™ùubýªÈá•÷&Nþ´òPîó¼C±&VÌ ûç�Z:�œ)šCm@ÅÕ펫™µÂ¡æ÷„'•dh#ùQ©ô$tWB-´�42íÁ9ÐÈÌÃX#BweÕÉŸÿ$Rvnï!`ö Î;Ÿ}¾4¬´©w4lôpÐ<Óe¾aæÎ“ýþ¾Ë^2ä§$fåZ™œ£L¤q‰?gSñM¼ÉƒžŸšíÅNÛä‹Fó.‹_µµ)ˆ�†vŠœ[b÷àN760`Àü7gÎÔ—Ÿ�øGwD[ñL<1'›LTsST…\í†l¨ììà”`ÊÇê�Ï^ Sýp”fø¥†óî±5Wì«VÙ¯ÔÔ*ˆRv]mͯåU› ^¥ÔYìhÉeÀìÐL­Ô[lÿLa’?ªçXÞ"¥WMªý™ÞO3¹Ïøå–eÄRMl­-�SnKiK°Pݵľ›åO;ÙŸÑŸUØ�h!ÿ`$Hó¨­ëç’))P ÊJHÓÀ&¦S"Q6Äh_÷›�\È… ‡’sä+ªªÖ%;CT¨– :X…›üj²ûZ”©BÖ‹lj�C*À©°*$“é@|g\ $?Mq3CSÐéØN÷_i©5R3Š ¾ª@%Q›�¢G=ñ}²ãú¤/²�1ÏA9d̆ˆD§L‰g(ÉèSïýÜB�û}ÈJ÷$ ð¨Õÿwّ嘞å¥äð¤xt €�]›Ès“,sƒœ”¶@ /–†Ñ³®{J6Íî±�÷—ìcÏŠo‚W²²�êFÚH-¤†r‘4‹˜žÑ^ál‰j'¶Aã¨ïΔuµæD6x˜É²ÀÊH›5"A’J—hpù± Y• Ÿ1$KwS‹0ƒ`YNÏn/C8ìkN÷Jt7³¢�ȹž0„{¸¹¡ÆìÍ ùÂë,ºG(;–ƒsðTZf®ü@õë¤Xq ¾P•ÌmL²ÆTRküEÒ:ÿÊЂc:g®9†äв¤¨|nS©J´M*g檵Žðl\6”±—þöÖjFT„ÒÄÊ þ¥î{´+˜1úAŽXŠã~øƒYÑ\_U9·f¶*ΔÃmÄ$ßJo–·ËI_¨)ÌR—±⛆í™ÔáÌl¯Ì˜/m#̇FÓÞí>ß×7ÕâòjD@uüñÑ)E%"±°ÏN$Úû ‰”ú !ÿÀ%aV°�Ý|ÝÏæŒ�‹°ÿ7¡›‚!Ñï¾ÝP¢Ü’2µr*ZÑ2åÉžj¬±.nxË 9ÈÿŠVâÕm)åÿ1{În½3¡7Ó.m)ÏÛœVÊ}ó#¶"5´STÄ3r?ÉyÜ'v#‚ǰÃÒƒÄAÄ–þN<µ\’û¨ôŒp4«¯+wD4ér)ˆ�ÞÞiáìc/—9±%K#­dyõÙAC1Ñо\³¦G~Ï·ÃTIFrƒhS~Á"® äõ80Pˆ7D ê@ Þˆn"À=¿¢ºµ&ýòÚÓ¶¦&…±¥&{­Åìwÿñ4DŒÒ¦E°Í¾Eb‚›æ×Ÿð„Ÿ¥c¼YŽÙ’Àaʧá�-“½òt÷37¿ÓvpéZÏ kIÑ·:0yáIŠè•Ð_2¤:·N×dÚÞWt<¼" ‡'…‰¥(%‡¤‰*´CwT»}x¤²£ÿ1¾öB’XÅLÇß­8±o: ó?zZKX{ò}öÞøØlT&6^qY‹¡;ç¬�e´3.t/å\ËëN¨qŒ‘ŒõÐpÃ%Œ…˜Ö=7e”2=wnèMóŽ®–\š…t)¤¡ˆ£Ýom»Á¯¯çœb_*o81�ᦠ _×h×__ÿ.ãz5à1Ìݱ¦‚å•�a®Òª ]¼ÐW³ÏC·wÔ†þîž“:zàÓJY›o+¶ŽÎL:ëâŸg¥»²Ú¸{—ñ®åw¯I(“TÁ7ÎzùíŸñv�a :|²ådpÚÝ‚æÅ»XúõÉ~׎>GN ›R�e:=µrmrZò™ýø…¥rlüˉƒ«^Ê Or/ŸÚ;ÃI84|3âº^¦Å~†j†‘^®pO”U(RÕ3ªÈm¡=Ñî�û�SÌØm/Ãã≉ÏeëΩ[·*ˆ!û?—®;£ رÃÆ¯•.VY{¨—»»0¤´d±ÒÚv¥§ëç†Ó†K·FU—Çn*­1ìZX}.º9*ßÓ.áã4þñÑT‡MŽeäè´„\Elqˆq+«ÊŸWé`=Ï<´¢£”zËeà™CË2ö>äLf¦buÏ©¨u¦Ä�ºÿ\¾âŒ¶U�E�åÖçm4æ)W¹Ìâî¼üîøTHCbš6O^¸ëBx,˾Ҿ"i~mnù¼oǽçk¶=GáB«Ô”˜…ñ¯{ÅÀHô¾¿ÒH'Ø•úF¬]*°Ç+E¦œˆ^J:3xMüœ¼Øe³uá•)i%Ñ5ÔF¸„>Û« ÝF™ÔîMÁï¡æÄ õ,†J� ÐÌât-�³‚×É«Šd«+óãû ²H; ó¼ùÓ5>­�maÇòï _ßz3øæŽë [á0}ƒìÃÒÑöm;^8ïŒ{¿†Ž×ç�×g7F;œÍц9¤5Ùz¦Cf!ùrr›6ù_kû›)Fd ¨À{*ø¿“ò§a•l÷q¶_ZxnôR³Ÿ…1 “íÃ5+ap<êŸ�z/®kœOmÇgÊ"K“Ö†~ÃAr®¦Ïÿ_l:&ë»ÈœW…Ô#”$¾v<< _5ØEñŸ†“Ã3 ?]H2QAs�Ùd`&c ²cÒ¾¤0ÁY>¼èßô©Í酥ų‹Š)+~Y…û4¢ôú]aHåá²Cs©ˆvs.rŸ91[ÇLd¨b¥:òr@Ž0PÂB¯\ÛJ]ýJ(uòÉzjè†Ç“»þA a!’ã×þîÚtÐl7=d™.µaÿš×ÅŽœ“¸„‹[5ò÷È‚Õ[«-OxÉöáo�9’›¾t-�Êè@AB…R�êÄ«}~C»â~Aâ4–¸&356׺´ŽP‰ÉêÊEŽ1®Nø/¢ÓTôo…%4È7~r˜‚~ü7ëeÈöÐå‘KY%G´…(`®£óT¿¯Œ†HgHtû@+®Q‚w˵ÆÔÈ\L¬²o�D¦þ0ãÛ ÉEî³';Õt=Um(@¶›!eÑh™©B%fªP:šÑyÊÜ2w±¾>îR€¨wf…K‘‹açô³ÄÂ,ä|½AÁ€1ôÁZƒþ^b†|(uÚ£ 0ñ�3T»â]u°ê:ÔoAluäõz+ê× ?§8b /Ú0d›ã‡ßì¡Â“àAç×ÅæE}Å ÉÓ”rñµÙ¢ï§leˆ JÁk]œáS¿Ï]dñ§�ÈX‘Úm ”�8ô¯&¥‹ž{„¢ÆÝ 3‡‘{‚•t5”qÏ(“ãl¿èó…™©‘u€t$7¶¶’ìÑÕ°â 'éɲ�ëƒRV(‹�è·Bcç)¶€û¿Va–YR&&Ãìzùj¼”"úÿ�ìËÙ"–Õ SÈV¿ æ7?<5Of˜ÅƒFUy|' =†ªÿyèòÐêó ·ÕÚJe¼nG‹Ÿ•�غÔEʤÁÛMyÈñÙÄÑÑÆÂAºÊ¸5Ĩ¢?ÊFÓ©žŸÅ)E�̺๺0/B‡±±ß={B¯$h6AÕt%¾/H¬‘-Rwiæ½’gÍY='ñ‚óS¥œ8Zº 1ù‚¡¬Ce­uO^tq ÓþwBPÛËÒÑvÍJ„w½qs_á¯Öy˜h"*89•º d ú‡ï³å~ßú€Z£92—¿ ¾tit޲7Kqj_>£±T=_Qz«NM“òÿO¿§ÿ­þcÿ_—“Wÿ>ÃÂï•éÐ LÁa¨XÁ,f†‚Á�)$Z¶×•·€™–OÊ”tĉ3÷ÜfÄvH3?m§w^œ:vôØ1W¾Õa±Éò7w”ÂZé{'ŒŸØ,SWªE•à©ÅèÏKÜËN¥lF”f…�§eÍÙÁªw$ôåÞ ß 2æûŠtŒØþÛÛ{>Àq<¨áÕƒC–ó¿í_+î0�qû‡Ü9Ž(½ü¤¤”H¹šÁ¦*ÿ¾C¤»7·ÃW3Ã1t\÷‰ÄÞx¿.ñ6=t=¯qKKP´,–2õs(+sKf%õ+õËEC¼—mcmxZ£^?½þ—Œéêcòד Û†;﮾—.X'¾F}of_²Íûeβýr�±9ý:ñRH/'a'H9îBÊEjcñÎ.Ý}çQa½3í,[G¡�65ÿþÑö„:øˆ¤Žù›«S™ÈÛ™jx\¿¶oÀCsÒˆšÁ‹éÀ^ö~ç‡Ï¬D{®nùFËB$‘Mä Íï¦ÞG—ucŠ1&Ñ\bSxi…uÁ¤šc¯RS½ÕÁ *<¸òHƒçe«Æ¤µNj¼†*³V]w¤7ÓqXÉ§èØ‚ôN_N“?Nî÷†uþ¶êÀt–�g¡Êö¶GÛcÒ^f fæZ¨G²¾ãþìµøÿ ^Ö|o`7æ²j1zKå‚MIœØiu(Ûçp<Ù'»O¿�Ä@Ä»Ä#dƒiÓü׌�?Fðc + äÏÍC»­Ç –5Z Ðls’óñ†?䪤ڀÚp’¶S÷;bC[Þ^v¡k7«5]Û“•Ÿ:”¬IsÈãä2ywúþ%¥c\G˜ÆóSÌ™3Xž¥±³MŠÌBQs`oû�å�˜šd[©3'³ÜUŽ“]£ çõ«+Ÿ�gSéöºò{üF¾ Mó»xm"ãÚÍ’è;‹†¯gï¡aOôÙŽ1¼×� Ù#…4m¨ŒãõqxÞ²ØÄùeèWÙÙ§Z;â¯.NùT㊴¥TÓÝÙq#ß«µá±]žŸ¯Í¡f{ós�`3ùñ¤Åù¿:L}à§¼Ì�¾Y’ÝIUªÙåžç½+±´3|²Ñ²ùò$\À§ ÒàŸ<mܵØUa³4H ÞÕ&lc^Ö!RhŸÞ÷EË|ô…äVôÁsQË~í¨QxÝ]‚˜Å‚‚¸+Ȇ´m¸�F_j¿ø}-‡ãAëà¤ojÿ82%w ^)ÅÎÈëÍiô.S?íY}9¹«þT|_‹ñÄ‚¯ýÌD³;}x©ËpîÁ¥™ëL‘^wÖGç çA‚׿ËóÌ„Úü£áË”Vž U§ÁUIS¬œ˜X+'JC±8ÜM8B çç6ndìª6QEÔN±u†³s"ib½ 4”ˆ-içe»6�’&]C•7!¦»’Io¤ãˆ)³c�ÞêËig±tw‘=áä^nžZ9uEû媡ñn#:ƒæÆ|l÷ˆ+BÜh¿ñò\´F¯ú®u§úâèj'‰fÜí¨åÞÏ3­vÞè>ñ)â{ZW•†rÅÒÅv\Ld3‘œ_Žl+:¹ˆl{�BN¦M)<¿A�‰¦•œöÌrƒóªì¡ª[õÎ+‹§ì�¿Û¿ê‡Ôí¢÷óZ€~:êôŠìa ÆÐªDÅÃøUÎS;¸Ø‚Óº}CæÅ%É‹ývgí>RaF%^ôþ?—Ý®‘­ø\0°}í²eÚ)Ì颫£““¡œ7)ÚùÊè ¿_éu œÆgÎO; |=ÿ*;‚í ÌÉ�l[2FJ{yu#ƒ–Tb'éaoŒNòêØüNföÄSz(¸`�®Û-s “ž9ŒŠ…»GÓHãNSè-%Ö`6ÏKosrÏ;ÌÅDHÙ.IlY¤Ö ùŒÙª"#�<­€z¡ûXÇ.|YA c,0Ú�_57xûO4•È…Þ#±Ž]•IJmyL¯ü²ê�£�Ç›† �¨ô"ÆÄÆ7Šù§+(Û%ÅBÁK¹cëî­"¤ht÷¨=)Mc¢W{wŠ °C¢^.FØæiÌr½�>jŸeœ·Åj¥´OL(/VÒ±±ÃÎì€ÎÌwG1êw§P_�Az¯Œí¬qS¥\ Þ¦ç²^™ž`=˜ÔLCOšž¡õhr‚96u<¥µcJÖÚwuqÒ3P�+JÐ(��Ú‡}ù�À&-úª–þ-¦‰>ÿ%çzê(ñ[@r‚ÚO´ÒÍz�ƒé‰_齊@ˆÄLmQƒ\]Mµšþr`’L££¦�A8,]SaPN²3„×A-AÀ»£’…�Sû‘§²æj�Ùñ%Ìr4Ú˜í’{mÛú§+aM�s© û*îuµähPhž_z  7M~tsý¼ìIñÅÆ†ÑÓ� 8•t4¬¼$˜Ô¹õlì5�ÙêýR·ñDËðo¼ áÍ×ù¡ÞSü2oüGåê2–hg/u·à¾ "?6ò�ìËæ¨K•;\P½•hçr9í¶´()¤>&>öÈ?^ü®áåR„ú GvÙ“töæ•»Wn oˆò^ù£ò*ƒ]†J¢%'‚ýUK rø¯ƒ³‹†èÙ#ñô?1ÙQL¾Ñl/6T*ÁÄPÄ$QŽURù}é©OÂöµ³6þmßè#çFˆ›ØÌ·s½X¬Ûûoùž,¬ß.|±˜Ò™õ™¥yï‚—ÂßË`ö †ÅjÅ_Һ礑hÚ)Ž)öêËÐöb­œú–G[BsÈ©‹\]¡.æ\¼�¸ÜC¶ø>Æ‚mê ‡’•ü=4ÖÖ­Ýtûñ3ƒk1~ÂÏXë¡Õ2‹Ébx­8ÔæR �døžb´ª*ªxä©ÎN­Žø-1Hê‰eý§xùÿUXôò Kw—Ñc Õ†TÖ®9Ç'\í¤‡N àâ±\ϱlØ8Íf,F"Kv`Aá¬Àÿ´dÙoµÊu“5>O_˜¼üC�öp°�ú 1GæS�=©{„ýŸJ#’Bÿý¶A+çÓ¾'‡‚Tê÷¡¡o´§•ée¿ÀoK¹ˆKi�Ý�i¸ÓÐìó"_¼4éêï�ž1ùMèGÆåK¥g\Aa_©¢ÎM^Ýp§>)˜>h(äCEght �&òý·7ï‹]<ó²éÙ,•Óvâã‚ü¾Ï…òoº‰¤‰¼¼ºI’ ›ÁZ�lc4íhjßÔM$†´:Wzà %�—¯yüel½wúψT¯Ðå‡ðôùŠå@2$çëWJʧïXª$ñE-¼<Þ“¼têÑêÿÔI-¶qC�®JhÿúâSEÔ4K�š :o#òí'rI(OWz@q¤¬çù)¶»ìñÑ~Ô\^"GÉñ1hºãlÁ‰(ãοO¾‡¿=ùƒÛûßwþ›LÍ 9|]Ðá@ÖÇm\·cö‹Ý!¥?ñŠW¥R~Å…–»ùî8PI݉öÄ“jÝßt)=»ÑJÄï*#+@&B ¤û„ˆUÒ?½©Ò@o·(Ä–uoËíéÖDºÈ6ö”OÀ«–à*\íQ¯„Ç% ¨ÃtÈ7 ~·ÎÆ� v$œ Ù»z‹ÑýØ'÷ �†µ&¨µ(JÝ—55‚1Ç5AwqB÷dSÝùè—Û›„vráy^åîZÊÕ*¨§l%–*Ò CÔKQ=Ê`1¤T;$&f¾§mE´H@�·ºÚ—nªæp šˆÁ—(˜Îªxן\²‡L! öÔ„,ŸÎøâçÏ ½î¥ °lè0b‚h´­Ý¥ù`P)†øyl…Imí<¿!ûfVÉWì™­U t©¹³cl˜dñÁÔ/¹‚‰ªÇÁ«U³ ç&ÊNû¾ÿj/e{QÏ*‹,@¬‹Ym±Nš3dµ´L�¼ÄO¹Í½ÏLÖ±÷VV ,ÚïÌÃß7W‡†’ÉX$4Õ ÒÐñý•ÛõˆŠàoý2|í~™‹Ø}Ëjª‘µPEÁ?ï¯ÒŸSÂ&™PsýAÇ…èGÅ{©`¹ð>ÔQX3àëDÓ–·=Øä�ãß ïöoôÎD�hü�²fÜçOâ>�2w?8A—açü–]—k§¦µ%Îìæ‚¢`|h΋mdSÊAª³ ÿÿñ7•ÿý÷\ ÿ>TÕüÌ·BLdH*(F�Ïfkñ6²Ñ„FÈ$œ fâ¨áqj®°ð©Ø£³é¦�ø˜(ý•¬ššƒ‹m*O9—‹Ñ½, Ùe¤ÚsÁç;AúRzc¤KPØñÏçÿ¨Zìãi59“V)XVÆ�ËÎÇ+8«a–�uÉ'ºñ=Ä6ªU¥ŒŠ´ÁÓ…¯,Ï"Œg�í05]ˆ?ñU[/d½N¯@?Œ; ›¿|ŸÀØÓ’›qO†—™uÜÿxºåJÞ·[£HJ ¾ŽõÖõ—±Ó”¹ƒ†·ì¡}½Õ·¼ölŸÿgbh£å[OáÅsÓP²ËOÞÏ*_�ÄKdØE-Ü<ÃÆ3Å$-Û{ùë}ü§vRÓ ‘ý^ÈÇJMÿLaQ´ò2¸ÄQ~Ù!VvÊÑ‚Ä[¡-ÇíÌÖž5LuZ>'÷Œ†rpFx…MÂ.ÑHý*¼›ÁуVdí·‘)ï"6 ·Œ�¸g} $‡àí’Ù‰É3¦ÚÑaÀ��f*˜®(å?�ȼ‚ Ç38–Rýý“N£6“¡ç­¼ Š}ûú¸þ Ùd!ýUãÜ~� ÕBõ-¥í_¬ ^€Jvæ–`JüþèxëÄÔ  :xçíÔ[_|ȶv…ógtqÅ®Ãá‡ÇѺ‘ˆ›�e+¶ÃHcî ¾ö^X4*�§#Šq:&‹¨µ=›1YZ¢íbY’Þ¢Ã{+ï«Ôð±uEçÜT1ʆK¡™‡Iþ T²“yëuÿ¢5ê!K}ÿ2Ðòú‡ç"n¯î…,Y5œFvÓׄôí¥›gI}ÓéKwêÿf{š3Þ¶aÕ>›¡ÍñL7ƒ,èÔ2ô‹‘¶cé[|õ^]¾—¢âà­åŒÊ×´àܳwc—w}:CìV]ž!¶‘¡ö˜�TøÅÏV ƒ¯±Qí;PÍí ºØŽIǸ†ˆb<-E @ôÁ´˜EèÂ9˜(vH:Ò̼�FXž—<696nf9Ƚ°±ñ~ìáØ‡�Ù#`úø„hÙâÕû z×Ûøù@kÝgÑr­Ã�špæÎÍsî§�Ò×F¨¾ÕŽ]}ÿ5Û­rVìÛ‹O<4ëùóÁ«ëŸoïhË÷O þãçèT‰G›ËÒ?E/U�?ŸlWtÊ¿Qçî4T!U´a|Ñš gkÕÄV¦Cðþ”ñGÏ–!ÿÞ,ÂwêÏÐÛ›×Æ9Ÿ†³Ó‰¶¯×°%@Ä]ûð”7s 5UŸ†49…Y>¿†¼µWE£iÜLŸêM”3g6"‹ªÔÉ!ïÕ ïšmC(8ÆxÒçÜÌ�Ư<-ÄÎtÂM2†Î¿HïR�rÏNždû:™™Ybåsfð‡yƒÐ"-ºÍgÖ³q…ÒN^™ÊŠpBÏf^�·å�Ágì¡Ôƒ!¡S7±¯Êû¼Q è zã0¶ÊoŒí i´}ˆ9Þ£ûT• fŬ0Aä`z*“B œ*�:¦¡ò>F[ow~`5üÓ}”£ê1÷OÙS9¢ñÇ5â&Ðx¾‰® ™°‘R‚˜§ñ\™7¤8õ·ÂÀFèL”èZ°E0i2Ôˆ–6§B[$§ �7-‰èÐf4Ûº¤‰¶%þÖdb‰_H–d`U‰ü›3†E©¿¹¨(R$Ý©öTUZÕlÄÞ‰{âEQãT�…‹ìâºÚ…h«üÆÇOÝЙ×ïÔ¥ 5¯¯ß¨6«›ƒöÎ2­íÌØ ^/Wn>>[9b~{óíãß>wÎþí£GC²´ý¾rk|¿…óÝ• û`çqß½CîÑ‹”Šª~�—=BAÄÕúý­g£Ï�¾6"¢(}àî=°,÷ÙðsC†®ë€ŒÕav¡•k§˜…Œîi3x[ЦÙõÖm•?À ÎïõöhjÈmñ¦Vw²c§57¦9�f«Ýjþ“ƒíf£Ñ’#F{L?»‰�†[k¹ÿê†Ê_ìͬÜ~^o>Ý׿bÿÉv³Ö»Øuì•­­-e=!×÷[ˆ ôù/$¾@ÏkÉ®ÿl£ÐJ|ñìÅÅųŸÿùÛyXå7ÂÄê>Qœ*ÿ¤•¥ ©Ya5šøÁKž{‚˹{‹ÝŃ]’‰wåU™Û¾8>{vï.ðx†øÙ³³hâßš‚m÷3ݯt‰ON±¿3Å~ßtÝÝÝv»¿ª·Zuâ£GÊqÇÛ÷�?÷î�_0…Ný`…_C®›˜�†^`j§¼ošÐ~»Ã°KYæ‚emì3L‡¥e$÷嵃aýÅoJÞ銈1Z"p8uÐù Jb´ßõ#°šýáõ4ÎbgÀxÀ /ÙÛ@°y[|Þ|^×\Û±Ÿ–`W‚’ø‚ò‚)ExR½ØlfÖ�¤ >‚?T)*�—7Äáhø’$bŸJ#ª;iÝ·¶“ñ¨4È^”T$â¿*~”ì€ ¢¢•�´ñO,>^r{Òìß×�÷Ûüƒn×&^lþÒä�-òÑF£SØÞ�ø¾®Ó4ÇÑ‘â¿æ¿@UÁœ³Ê¯t�†‘çjû;�àé"i—Øìœ¦¥|±+;øx­æ�M<§¨R@ŽŽ€ÓÅî‹à«¡ÍHýоÙ\h8ån6šÝ�o�îëóÝ<ï~}´ÿZöÀ%g”rú'óNÿéÉ=ó#üææQ ¥9óí‰?œs‡ÄÒþ á¿L è/QRâ£M‰d§@$]03_ ^�Ÿ.,¡ü ½4»Ð¦Nmå=Wz/š¶NÚFO? #R€èúA >@ÐթךáGúA`ŠjWv½e0 %•+™ pPWeò�K _é�±,B*kYQ¶ê±~¢®Ärš”tÄØ[fdÛ¿_ß{ùƯèo/ _÷öàù¿ò«ïò>ýÔ¯Þœ¸øEûßzúøèÑÏ~ìGí/lïì€õÕ)©÷à1'=Þ¸è‡zÎyÜè¦k®}3ͦS¬0^´8ë‘­¯Ï~•¸Å<:ît�•ºEh+=)EÓ̤6ã2ÿÆœCÅ·Þjßêǯiû�ç/8]´P²Jgnö8~Þi§ª� &9„<=öÙ¢Ú=Ð4/]Õc fžn®4‘˜­G@‘Jý"öýÏZ³Ììp®F6П(Œ¿*OÊt©MzI6H… ™s&§a&§g`ûS©êÔL«=YÑ%+BþáWXçšÆÕy³í/¸%Íe½Nö ËÄüdTËÊNÕÍa¨jó­3E "Ç!35ðÍȳym�ý[@`ÁÙ}féZ¡ã©KÎH¤8`a²"à%Ÿˆ%“ñõŒ[æFÙôâÊÿ æý2„PTZô‡sA‰¶�Opú�B†Hæ’”øàÞÓio6ƒ™]ÝuZG»ôNïó!PÀ�üº±ùîwº¿åØ[GûðÉ™" ýR–U°Ðeã�PžyÿPÏJ´Ti‡àɤ2MXT¸ø-™Ø)‹€5ó,Ôâ1eϱM¹áøœ:”)ytCµâª4¦ t´Ú�Ö¶³EU›NÉu+J;ÔЃÛ6¸h÷·D{xRß ™wkb—h½6¹RÔ®M±'�l°/i@: yQÔ„ÍtAÎÁ.6+À®jf×}ò\¿´†³ g‡sqЙ…W\‚Êg,e·¾ŠQ�äæqÛ¶Ñ´Ê›«Ébœ­¸©lUð¾|Íá⚺CRü•|sâ‚§£W¸³o¨™ß�‡½î)7ÝÁ’Æ´½RîîÉ2 Qÿ^…O-G)/oI­îÏäªá¥å|‹oi³X5«/4íàF‹wqä¶6LV�Cø‚6Å%ênðÙÞ;&ûú01WEóY,Œ¨CbGpÏ샤|ÐÄKã< Vƒö)�ÒÏIX9ŸÁ6Ul9ê÷³Æø{ZÜÄupUÎÅnÛÎÝŽCIq[@ýè8,-ätM6�µÜ APp4.”(¥)å‡Ã©¯éÑ ”su¨üí(J A–ºsŽ °z°ÝIB+ËbWÎÂk=WÞš©c«PDŸ‚Öþ6�Ùðš±…? ¬zl’Ì5뉕‡Nædí _ã膀Æ?ÀB¼ì!aϤ‡ÓäFµUø£s]‰OSlAPÍ]¹Zê‹jßGº«æZ­”Ã<Š«•¿mJ›ˆÜ¹fÑ€Sc.Ú¤+`�œG#WYØŽr¿Õ!HÏëAjEpp­ø‘y³†6�Wÿÿå4ðäȹ—xˆÜ��¨ýœ@Œʘ‘¶•q7´Û‡Gaiz/‰q¢!•Ôë÷j®éõ ÂjÔ|#ˆjq\‹‚RB®�fÒ¨ƒHAb*¢ʧ8ùU3�‚ [4{hš Ž6ýê‘)GfÈ„ýjåodG÷>Gñ,¢Ç&‚)‘€À4‹FȆ{¡ bÑ=‚ÁÁP¬È(˜‘ºúÿDsIÑ@ü�Íã´g³_*æUÕGMÙºð¨—[9ܪåiÖ‡¨Snžû´ð– å‚¥^nž2ì_ú»âîrúŠ,ß306°l*6-UÙ`�"��̈@$áš²´?ÊSÑUå矈»ÿïâÅW½wø8Æ¿?¨ö߃ߺF»:4= –k|`ÄèÍ’ 'Jèš(i™É~¼½·!q�VË4£·Rùw ×�8®mþûzõ·Göð þÆœ m;3 aÈ<yžùr!È ~UÇ+ûuhgŸ?üêY2Aȇà|ƒÐó=O&­(ÿôÐ |˜ý~ óôäMnSUj]ש:Ë@`Ûà¹Ávª?{å0°«ˆœ9íuØ Y+`©‰-d<�h¡&á! •;øöW ‘GúFÄæhV_NÍ<Ž�<wãS‚\ÈÞD°q6f tŒÑ0Eò‰­z>¤qhØÀoèÓe4 ó�^¶PÃÐmÀÎ9Ý2F:âáTTN5Í O)â´uV}BãÁöÿûú›,I:}íU)Ù,‹C±t8/ €äÅP-‰»ë¾wïá’;yÝWžÜÙl=oOÚqwöá“ûOî×)¾ ÷t÷Ù.êŠVd7ãt²ì¢y©`ÂFz~ÖJÓù�éü”ÿ ÿçþÿe °.‡Ëom��ݘíÌôæ‡óë™î{6»ùøÎý½³§óÖpïnƒŠÅ¤×¼ÇkîÕïµ{Êc]à Í�†_+žai ™ìR¨$I”³»¥ÿöÿùÏZAèO“ö·Þ &(èŽþÔÞ\$„îyòaþáß<õ!óáê�8a3ÅÎÙã­ç�-—'Š“»Ø’/ó¨–úŠP†0áP9ÈoE8ç߯mâvµí¨uçtôå¹s›²¼¨ þQóâŒWtUŒe¨AÑèJŽe9^oEA{A>K”ÕªüN%ÌâážüZFvò§×�‡ê§Šô#‘Ž™ÌÙç3(\ÅΘٷ8J*˜ÊŸ©d>�r™WÁ ‘÷gz“UÓWp fuøþé*̧þ§ÇAX*¡šMžøÌf•‚ŽãÔ[xˆ±LÖ룱±ÚÚÄÁªRtXä¡@&¶Ôcø ÃŽmè®­}ƒ g�NãÒ´°Ÿ“aÚšªØŠv©*XU4UV,Z�©zfëKÇuUZÈdTFAÜ ¸ ȸž÷ªÁ.ˆ"™–ÛD51 "ĶIûyì°¶òÁnÍJ ×2uªk‰¹¥ÂDφšð\T¬2oƒ5.‹VÞ^„QAåØa§Vh‘ n$/àzpókÌÄÑ+²ìa tMy_£aáRU+qX«ßP�3Hg|™¤Ø›qòrù^Å .{†bxi{­$~#©Gá²Z«ù)JŸñ�~÷¹�˸GpœØ Û3”³ò¬L”Ëöß…{€$}æl¨jõ‚z/Zs[./—e(WÐo¬g�N=š7oª½\tìYCˆÙð¶^ÃÞ:áï¬Bߘ£5êü½Šµ!§¾�·"²¢ï­¹ÃœÒòI¹^i6ªi«‘|CÎ �ÕËZ{³Z{¹â¨%—=Ã1KFõvÞµ¸SkWÒe³ÕŠë¨ÆÄL„v¹Ö¾íýþ”*±�¾.b—„ ¦æÄœWD]Vdñê›X—EY—ˆ%¥-yŠçÐRFcÆ¥üŸ´wmöo€89�8Ë¿±ûZíºówª“ýÞ¢¼Wk®ª±=\™Œ,ÆÄtZ¢8ªé´Ë%³eÕ°}Íœ»ž¹ÔuW[–‘µtaàcAvÊ�ÓX†Jµe!¶(�V3“wÜCš—t†æŠ&,YVa–*— Ó³|“Kx?ñ]§Ùí�[ro>õ–íö µ¢l9`8¨zÒ¥Äw0D™13�!©sëH+*59ó }®lTç²·|Ö•ºÞ¸Ãuò3ñý£fN²‹˜BIiŒ×›w:äºNs.·;mÔ* �ßš©ºž7gši}®6´•aÔV•ŠçÅÖJab÷€NN<*ó¾�j�VÒË0À¡þàTN¼ºžÄµ°UQŠ1ã3ƒˆb¶j‡­å¼tNÏh.Âi¸ˆ¦pj •ÞÊe++…¨nÙ8 ÔþsÔíöBCN…'è+Ïþì%BáªÑy.åŠÁ“áÂèÁæ"Ê`Æ7©#œuW±óÁ¬ ÙmÇÒxÑžƒÙ×Gá[ðV<óvW5¶¿òˆª©ŽÜå-&]òhÌÜIoÃù žuo7«HvÕè}¢Ù«'vï "¡eÓÀ£-  ^ ¡4§(,ñÊÄ GÄd¿¨ÝF…àçø o}5±ïe~£¡ _ãx—w» b`—«¢àB²P¶ÞIºÝ†¿2�o¬ÖÙì:ÎÃÄKŠ�¶‰Ðó¥KšOËTƒy¹%5æJ¶Õ&òQº2Yî¨!GÓ’ËMSµx‚^9û0†!G“"àþ8'ð\ ÕH‰aÌééÈY ,Gø¤¤b«œÜž÷šÃ›é!¿ËŽáqó�ÑÞªÇ6”L§’kèÁw[PŸkš… SËüéù)1ûr9,û§+Š*[–â®b#HgpZSSƒji¶à~Î¥ü;‹i<—çp®&æJˆ—P¸U © TæN*ÛIÛ¤éeͼӵ6ç“�fÑh�å p-zP�ï©ÙÉoÙ�†G<‡ÃýÌv3ÏK×!ÉV±Ãnvâú\C•b0r †ÀK§v Á¦¤ûeS…_@D �‘ |'×Xp`|)Ý?õ’Ì"3IIŽwóôT[9¦$�ƒ.:reU2ˆL£Ð ºW|ŒÃº¥ìÒ Ýo?Óð�•9ßÌd .‹?ŸaUäg9⌇5×VeƒØliœPçeIuà)à0³é¦Òà(õh ¨¼˜f‘HW•ãÁdYM•¥½ÝæÈÍͫʃäåñTz™Lï•“é`ò@öŽJ£Ò`9lvíÅ &À=’ÍEf.W**�;Èäl«¦¸(Ï!O69Òs�UNˆÓI‹•K¥r/‡ÕA¦�RVT�Z¾ƒ’Qø•ÕNõFŽh, OnÁ¤Ë�·ò–dS"vØ]Ú:-D«=±hÁ‰wÍ]ó}óÈœšQ3s•ùW%Õ%»ä}rD¦$JX|ëj >îý|ðbÀ ŒXÓ9AÖ®>†Ÿ{�kõHZ0½±EÎ2ÆfGXT¡Mì8 Õ”Ìy™!A:Üí¬ËÓAV wèJ½H#(ŸY&Mx¨bþ_Oj¯•xÐ_'k{«}7IŒnáÃV½P ºûø›öiýk^Âáe!¶&Á IÆ�›ˆ×”Õ¨Éq¼–êñ]ÛæÓB‡‘_P<ÍþA(øÑ¤ÇkætE.×1ëþé±=f·{«Û³¢Ñ¥ËŸšÁ‘xCRr «”ʬÈj©R~¸RŽ›JÑü.æ *g8š¢å•hÞib7mäd«Ó¤€8E Ã8?zÜÖ(Û[Ó7³µzdŸ·Z›Â´¨ŒÎÌ®ƒ¾ð�úèÝÎAóôÄ”o/ÇT‹ÊÎ{¸R$Æ£–ý?–T®{¡1m®ÃCé.])ñª˜ö• ‰™Åp¤† #ĤŠ1×4‰Ê *Ÿ…k£ÇSö^ Ý‚…Õ°ý ݳõn;¾%�×íyìí5º_xEWˆRÐ'vz{­•vÏÈ£µôN·±("éý¢!¶ª%+jÉzhd�Ìÿ ~ç� ÍÐ#N˜ÄlèÀo4Õ.W%ÑÜ.è×xÁå+×]AÅd­n¹ŽJŒ_˜PC(Òãf¯$„“sÍìeI i'�u¯Ÿww§ Ãs¯ÞŽŽJ¸n\=T†bs ñ™_ïz½Ü’iÛ:ž@Æ£ù]Ù‹Iøàø°Ò;yôVsM.sMš8·ÏE³î«àSH<“y=W�äí|x8;„30µpzÞ¥½·BŽù2½^Ó~ºfx loÍ6j9È•\«ëœö·­B¢ãóË`Šòò3Q%½›Ëòæ3äSybºìàIpcrv®ñ½5�“b«÷2Éþyˆ&¶h£„pÊ^1T…ÝRà "{è˜1½JT ±v�ÌOž5K–¤5'{–U¥™’« Á ¸ @„Àû&­çpouy¦(eû‰=T*ÝüëöJãlûÏ|Þ:8`ÃJ¹\¡÷vŠ q^ 7$¡Ô*¨¬ašeêªm*ß`ÂÄÑ/±Ê¢cS‘%SR.'† ¸.B2$ƒêq±£©K˶eaFf$$²í)‡€€³Û`V|÷?rwæºÕäî-7Izâ#ÂÍGRáû{Å"WW¥ƒœœ š½jµGߺéð×!ÖèÑþ—8tæù¡Ÿú¯!ö.?HÊNJD±G¯¥NÏ‘ ®U™aH€ÙŒW^V’ÊßKaj§•´D(D³ð[’}U¶s¡Jà*þ[§‘Tb¯»ÏxTXê£ $/ÞýO;‹:#ˆ„ùØ‘Riµò/v&ÅS¹)U)�§Ÿf_ÁÕxt£ø©-¸º Þ<?­p°mU•¤$©¶h�™ŸoAåòú),‰‘(c¹½°Gim•øÄ°¿Rtí©R ¡°t=&Öîà.’nõTp”f O¹láíÔ[«ZLLF+l±À–6‚÷¿‘IblORÔR8Ø¡¶arµ ›j£x!µoeëD³¶¢X–¼‚»o!‚@ês8ðŽà:-i&ÖJ£¤° X¯H6>`›'7h8XHuT�[µ€rV&“®(”·w4e9ÊÇ9?—UÕ5ní¬ëó>7,:ðà<¡U®F}ü<´÷àbo!TQ:7*^ÉZa&^ -þù\I/rbé ¿6÷«I# Ë)×.Êp|®Ò±�vu6´ßg“ŠÓ’Ù,)¨âæ’Â-iZ¢–2â—ƒ©ª�¯Ì ×%£†*Ý®…jx×4Ù¸PaP.J,=UW;/½ë^Ì™¦;"wiY�¹ Qy0|ãµIïå¸d~¶ÆÕmn´®­½qv·Vs¶ŠöÚäÛ|üدԃdîÖ’eºÁ²Œºy·ã¤K×+w«*µW6­9°7]Ãu{wtÂÆvчeŒU•¥ ®á,UÒ U‚ož`‡§%1Œ548ù—Yó”ôÚåä@µ~éÒ±=I“d8ŸL‰öÂÞ™,Çc}x ’ŸH÷󾨸ür ^�ê¹u�­bª%&&Elwk´è5¹¹%mAuŽª¹ŽÖÆ*:ÝY‹ªm°?Ê :½ô‰ÍŒû"e lŸ04Ú—kð‡ÆãYLf´:^�Ðâõ±±X×ȤºEKŒh¬ ^‚Ù«Úæ¶vZÂì¹� ë…¶Z’‹Š*zðÍ mŽÎÖ.7§ÛJ ‘S•šæx%›‰¹š*Í×éP³�ï�ôVD¶ÍOŽ˜¨£`´Å;ê�=ŒŒúkOÙÒÐ .°�Ó,qq˜@rg³Å¨ËÏŸÝ�ipÔ´84×Б˜��~qàÀÁWbVÕ¬~…¥WO:t«0J´#xôrZEÉ�ÚÊÕ÷ø<ª™ £ÌeÛ¢iÝs]‚ê;VK†¹4dš¦dÄ1£û†ƒs®‰�ÕÀNöõ7[ù7îkäðùë¹V^T|J§¬s&á;sï¼ ¡ÏÕýÿ~ºVtBë½À¼ýìŒE,9G4C#jÐòž-å¹]$U—WÝ ªïyÔП—Ÿ *hìÁà(ict2©oØÏAo�zžã`ÜÝ¢ú¤¿ÙîÊÄLµG­¸ {gæ ǘs–íüT¸ÑKz˜|T‚ÑߨCSçºÁ h°†ØE ¬AézÇ { œ½|”NÉf.·÷wÁh´õJ‹j€4ÀSæQ<þLýÞ ÛûL }Ò𭇶¶÷lÑ®uÊÀaJG�®‚ì+d¦^2bµ3þ�|=€†—�à©SX+çBäÁv2׿¾3%ÍRç26Õ%6®òëf‘|üßÏC1±õ(/qĕ鞽÷çmdp^2ñœ¾Í^m Q[ÍHÚØ$ÀÏŠÃöf�ìéG/Ó³D“Ù¬š(Ù$�J@ñ-I*FM¸CDO_!Ë¥9t)E�*-!ãYOÙN.Z›R#茪Z.ó'é¢rë—XŽàˆx¯,‡Þ 8Lpˆ (¹9XFâ8‰#¹dJ�ƒ–­Ây.Gð^çà«”_ÁÍÛ èM%Ý’ŽH–h&ÄìD,‹†eBÊL¹ƒC2çhJ`‚!©¦HåC-%;übr~´ïaE³lë2`h©ì¥,ë'†«ÛØA2f4F]Äóº¯HnÕÃâ0÷ä½½FÞÚoR•ž[–+D�þATÃXAa•¶]›cï4U¼ÚH�¯~¹–ðr.ìùqÚû»IoŸË®ü9¥ë9 –µœ%ñ’e0«7TÒ ¥"ö„WX‰“‘ˆÄ1 CËA ~C¢¹>ÜBA B SÎ9 ¯= }E5LÅ4~:Ìx2su®Ûªm ç%ÕÔº„�4›a+¡!Kïì˜Ê*5�Q™×b:©äµ�*…Ãâ Cü2¸‰Î"¡w¢.ìÖl½”¬$Ö^•ˆ�¾ª³�™§òõ5Ûud}~¶”m¥ùrØO�ò�¬*OÙ2<^�Oáiõ8º±j±£UDèÿNA·ÁXAÜÇj…Ç넬z*O×Ù²Ý(Zô¨ˆ`ê†Éª‰¯Ñêy×4ìy·Ëè–›UL¯Úò£•"ÝÖ ¬±´mÕYz ^ªÛÀ”Ù‹¼öÖž– yê5<ómo»Ÿ¬åˆö:Zl¯•[¦bBζ …ß* ¸WðôW¶à3­—ZhÍÖ´³U/¾X'ÀK€LA 4§›g9~Kz9V¨½Xƒˆ‘*ËÔ·®‘ÌãYW>˜g7NÝnWé1 ³w*˜•­:2‡)ÏK¥„îT &õzûÊ‹YÚPÚš_L üÎBáí¹5NÑp^ O•4¥*ŒÍl�΃–{FCÉP£ÑõójØ (Ã~Ÿ"öPo%¬ø`gtù—6|± Úd½g÷ÖDlÕgÖI�–#_Çg6Ò«gòùѹq%´7&­½ºë‚÷Ýö}Ðç™öàÇÈ9HÛ?Þœ[î]­í\+¤V-®W‘Ô\^ŸnÌ’>¿pk¿Ü�/*¸ã‹ü/þ¨?WýÑç}~xÉÀèÒÆ™³ T®$Î ‡Ë—ùÙ˜pñ~p{—–txãip+ݽfÞu�e£éS5¯$-Þ:.–x$.F¾¨ü¸{¥ñcê‘›z«ˆG…e�J OžJ¶Z½Åâ hùPžûù†¨§´«{‚Ö3„Xöqø3*Æ*ª}µoW¤Åäê.lûx.PCŠ]'°Õƪ\2� Q÷ø!ÜBøá¬1o÷‹t÷Üq¨FJ >Ö�ø'h«ÌÓò|Q ý%Z†HÄØu=fe-º´¾ ˆ�ðèEПJ{“ä[ƒÝ ø¬ñ§®Ïì�o�ÑøommÀf¼4m6[-–*¤ÃÖ`)é4heŽZˆ×{ÿ†ÍdçˆçiAŠd(Óü’YŠˆó¼›íø{p9«ñ©Ë3{�Û Ôø[ÑÝÒݦie6u r…Vú5šEñ2tÃ(GÇFœ8ûÀä@ aèÍI©ÈZq,Þ­ƒš²|°”�ÜÉ Uò¸×)¨Ÿ+eóŒ?XŽÀ·H¹7¯Åí]rg®ìÁ½xŠºh¸ª±�rJD´èh´Üs /é2�hÆ·åÃ<~u ÌÀñ9wB/ýÊøV¨ìè5ìç-…AF\ÿ Œ1ÍgõѶš£n›‚Õy²5Èæ°�*H–m­|JpD¯¥jU„kr˜³˜›ó¨|||LÀÞyF»º®(ú8å~NOˆNÞÜžmÃ1hÏÈÎSZ{Ë€F! /—××ye”%³ðÙw/Ä×< zsQÓæn•¦¡áèql Óï½ ©±1Rb—tXòÌõ/ÎÖÿå*5ôùúd"Ð,ÓºT5¬jªª—eÛ6ÝgT¸«®T¤ÚªµtÐ]ŽÍ[&š<¬¹­Am‰ÃIõ´=U9hïEòn™Ã( ïU+¸Z åj5®Ôêq%Ú¤”QÝ„¶?xG¹…× ~–·Í²[¾4LìáºP+ä<Ï ž1à®±2�aå¥�îºpìÞr‘Käù8wÛ„æÒ6ÚìÏ7mê¢þÐe)×lV­¶©²©SNs“z1°&ï²·Q/iÓ ¢iV•åîÒ+Ñ6-.e"ÂÍ…[žd¬°Í@fÉM‚þÔâ±õ½*u›†q¯ìb_f rÙr=Ÿq}裎/o I2BPâG^Û^yºãɃ§ž˜1�÷èj¥==�¿ð+Ö O·=™dGð~m!”P*¯m’µ]¿§ݰc@êºøÅS³mûƒ%âãNNYYZ{h/·Á�¨8³5ˆ ÒYËðŽýDºö¢µŒ÷pò³�Ó5)´uÅ~ðó)U\žë§ë ’¿–lF‚þ}^ò<þWи›÷æwì·�‹¢™,É¥R²!þf†ýM&óÅ$—kw˵—Ö4.ÙüEñ5žÍÏ®Ð�˜còê|~A”~!ü¦x¥žPú/ÓK½)-(˺ÕP"Ùî�Õ·áðägŒ­%±R|ò‰âØNr9zÚñkZ”#®Üéçàoà•Á ‚3¿‹p1ø®¥‘Cô—>ÿìöe’Ë!Ý—bˆÿ°öá‘ÿʘsO9!ņ¹ކ?A(Ï |·2dpTiZcÜÉÆ‡Ä>4ÿ-vÿEôÖìtÊ™™•îçl¬ÉÆ8³âײ˜˜Äð/†;¶ÿIÐc˜ç@ºˆ}�¸W"nÅ=çDÆÃY.ì{Mò²|sÄüâ^3îál3ˆ;Yüq<Ú‰G›«£CW4V©45r* å$>WÇü8cŽV‰Å­Š›aí1Õ�Û=sˆî …Õ` 6�KÅ/ä�¨Vh2â”/üJñˆÉÁOåþÔ £LÑj;\:¶â¥‡Êçñ¦T/þ :S˜1°EtxÿƧâ>fjész7‡!þ»*­ñà¿£JæÑf6'ð¼Íhh†Ù  Kt4lI+éq»º:á«ë h:°øKXÄN�+ÂѼKͧb3lø‹Ê¼ªÌÇ”’’… T²©Ú»)Çu`¶Lïe?-¬+�(ž2§( 5)²˜&·£¥C‘”ö´¶®–T.އ(šŸ¯¢ ª¦5IR5eE¡&RE–7Ó�ÅÓÔD´jÉ Ñh>_ñò¥hNôêpÔ°ÙeDœ£'«Â3‰Í‡Ž4ºa¹û\Å+F8î¾�_…÷:’@ýZ…I”Œ„ GŽæ&=^ò1”ŽÉÛ”Ô©'+uJP ´"ÁépFáMI„Ýö¨'"êÈáu¨®ÁååÖSà�ÀàÊ88œà:}ÐïÌ`Ó/p@å8ÐÇïÌ>w/ê©õõ8ñõkÍÊzf!Svª¾µª —¦Ë×2º�;îs(íW¾‹>êÜåŽJÎ5Ž£ ¶7ÞM£²âEÖ¾/I ï3l‘B")R"ˆ´-ž®¸¶�nS¦MÌü‡Îª‘ˆbý“h&T@¾•›\ïØFj5˜Ï—«2†Zw=¢¹Z.¤ Ö "�ˆ7œô“xÍ—e†ƒ9‡3Ò?¿\JH=U¹>Y�¡$ ãP„#œ  œ…îv�XøÌõ��[Ë–N™w6þw�½•{Êé°ƒÌÓb%­ A¢ˆÃø$=OC�ÃbWÙb‹çØíb€Înö{íÍvïASíoöúív¯ÿ9 ­I»v7uÌ1îI§Æ’Т×ËMHrâ׊E¸âsŸ –Gk².¤Z�(hš°Ë ³G(”'?TîßýÄã×°zjŒÒxŒ‹Î±öZ[Ó¸_mM©q6O«aÉ;êÝ“¿0bé0·Éy›Àö~ ê§²8õÂWëpñ6ÏÇW4ìÖµºûk*Ö\\Ç·(Ü]�ë²u÷߆Í+w¯«p[†+2DrAž“¿áyy¬k|òñlŒ>yÑ•b,‘Ñ‘¨"¾xž [e!`ØÀã‘IT“f�ø*˜˜N·1�IÄi¶Hv¶Ÿ¨Œd×½ÈÍÜõ¤ÓO ½Û¥¿š@ƒ®i õ î"6qþdÐo�§[¢N Ž(+á>mæ_–”mÌž"T°qü‹ÓNœ:ÜH�ÐÂέÂw‚ƒƒ¿Vþ£C+-|jt¬¬òÇFm‹>b9•å(³ì°€ý(Ô°sŒ•Ödà}¸6å (—¿Ààƒ Ø€*ó.Çý`{§3n©ÍôIR™÷÷599xF�>¯�{:|\XôÕ>ãäIÐÒMul(–D·ßòMÌ8Å_<2åç2c¿á¯H†Æ1tР *�0ÔqQE`|Â+…Vø‚�\�™;�sÖ30=/¨}b¤Âý‚$Æ‹‰{B±À»¬q6d¬¢°<™Q È N~ŒY¬‰º™ R;kB¹�³jÌðÞF³X<jS[è³�ÁÄQ�ÒÄíŠÒQ¢ Nd—HmK´d~°æ+TT©H-+cÓ‡™OÊ!ÑT8³Fã;áW™öï)–þ<~òœKD×…6£ÆL¨ —Ë ±?Ö#Šl³lCVjDäš\8ºkŒ ~ëœ&Žf°ýð]c4n´ÑÙü£äzƒÄ‰š”/ }ß s�˜˜¦ÓĆôN�Rg¨dGý!±sö²$\€~µQ¶1#üaoéÛ(FÎDÀ `ZtÄá\n�b–mÉ`íåÌTÇ)#Å2i¼;k°m!QT ÅÀ Œ"½¼ØòªÑ•}A„ûEÎŒ›vqîËX ,lΜ…ðf–�íyý¦�‡‰ë"Ãb†kÜæÔøÄxÔâ›\Ür÷=·þ[Ì.ôû·ªåññMdÂÙ©<]Ê1R"¹ÇS’«ƒu+�Þ_ê‹]_ƒ£nE)*�íõ:@„Cw>!"ûliq1 »#90ú£ b»zžôW\ÒÈ#âPé”2¸½ðýšµÔ7Iq�“|ª#ÈQ "Ö¡ FìÔÖiÃöÆù"(.ßÞ<ª¾˜ñ­ÍMšº=ù\¥(k0 (1÷fªTmæ$̲2îÍ2­ª3Ûß8fŒ–+Ç”‚»÷?Ñ1@Ãl¨4á©%;�â2ŒåØ Ýmå~LÕ`µö½8lŽ 1„²4Âý})cæÛè‘ö�qì ƒï*%ó•­ºü]])!NŠ4+ÞVz*îÍÌß¾¹üFÛlD�ø+½ˆ±ñÏ0E‡ºŽ½²w© ø0Os\;X¿t-Àºë–MÅÕWƒK§b˜B3TU‰lË4lú†¡Ÿa†*#×WÁ6˜Èï. ·JslŽñ¥âX¶J­ë•­4¤÷›i:ŒÖF=‘n|põÃbÌÃv5þçc©yZ�:%w˜™ÚëÌ¿µ }÷¡?ÞÕÙþÉuõÙ~Ã]E8â+-Š`ìIuIßõGâFÜSK ©6“]Xg0Œ€ŽÇ‰µf*!E„9Ü4Ô�ÀL¢6�›ŽŠÜ  Â\†CðG°ŽËœ]Èçïæ²+9 )¤�–ËwKîJI&9š.¦Ý¿åfJÙl)ãFr§ê·ª¹J™ÉŽlÉ&–‰¹Y£nQƒÉ«›C¾¢xëo�C„Ûyz¼ê&àÁÓU«ßR+ñ&ñ§¢ f· RE髸¤ñìåa úŸž:å«Wâ/¾ÂS¹*ªI)q_q�c;´ºxóÈ€êñ Ç|ù=ú)ñûÛÐ+÷F’£Gº4vÚy³àÿ"8WÊtùÍÆiMëI�iaÊù}pÉ +h½U“=c|Ì¿DZÉ2Ä_Çõå»ÿž€¹ÇÒ ÷›ÿˆåv@ �nxª»Ex£†g mÇÑžùõ©U}2ø6ïöWÒ’“ï²§N+ûrï+Á÷_ÏK“$—ŸNc6ÌÆ0úH›ä5øœeñ|ãÀÌ÷öÜ|2ñóÑhw¼?ªÃz¥hï8sÏœ¸äžùu&ŠÌ¾ùŠI<ô_ñÑ™#¿ï?çžÿu>iú¦ÏŒ°Ñ¦¹àί_è>æçWûŠûL‰@çBâ¬ñŽÚhøîu’І ‹„ʘ,Ë(*xN‡:Ïc$I*’ÿ>¼ D%ÜÞoD�ˆ«Å³ÙûcñOÅ_û / �}€p»´]�5U•Ëj­¼>iç5ëlõ·=[�ÑŠ Ï‘›1ØÚt6Õ¤Ú›X†—ÃKô÷½$’«Æº+wÒÛa|ßKDwÁ|ûƒM Ì�¿)S6RòëC${}TûÄÏÀޤiw W¼. �†ó›Ÿ+úGkÁªkm2ÑÚ,AXßY½·½'´;{áÌÚO+ïìàʇ Þaû™5ód5—Ûi·¿¢Ý¾§qidÒcóñ€¼Þ#voHaÂÃ@Ó½"àÍbo´©ó�¿yiÀ÷=ºä¶'·1#[W?“¾ÞÞo)×úúwnÝû‹•> {ØZÍß%Þ¿þ]4‚D)˰nõEØB2’aóò€= ölK« Ôþ¯XøÓ~R‹þ»#Xë)SÔïüfõ•i^ŠX‹Äî{�e �LµßÛXÅ÷7¾Áº¼²a,©6§ñáÎ8ßZ=]¡|E±V(¸"‹�l“Íà’?ïXhˆMýŠïFX�[¬=Z;nfW÷z€A�`Íg8QL—œbI¥º6¿ÀP U°ÅŸ´¶ÜuµZ½~k9ޣɇÔRGoŒ] n4KOv#›áÒK‡… ` £G‰â×ÅTQçïzV §v�k?„GP݇§Bå"BƒJ·Á&4º?žµ~4¹%�ç@OZv(yIƒ/({½�…l% ×vpqk&2¤�¡ëÏ-MÙH­×ªÉ!¡†ÀZ-¸•ªJxµë Έ1liÀaŸb·GÅÝtØ7öÈQÚY j€K(¨5H†¦‰ºR³fpé;×€.P<ˆŸîµÎmMã­kÎûæÙ\‡I¹?\ClO~7FU§¹h—O¹æiWªFªÇ1³ª5þ3Þ@æÚqÊm )ó$�òòvI›ò¦rj%7ù¶lÚâÈó;ù„•;g™Š`{Jê¨wãv¡nþ³|�+�~h®»,tlwCè�8¸VšíÏ[a‹{ÀÇ�J Ûãúìêgw†ÁŽSó[d÷¤Ý½½Èž³ûI~[;G›FÒÓ¨ßÓA©jþÝ@×V�r•Ïà–|¦ª%y{ðØÇü²Âz|½qx˜º=ùmSÜV½;{<ú.Ù`¿-˜›;PÛ†é\|Å÷•.ºco·;Æ›\«ÀÅ,©P+%E J$L í¢ºJ³¼RéJ–Õ'{røÎ>4À’�û%”�IŠÿ”>½W§×Î�ÿbŸæ2 �w8�ZÿÃ'63ûo�(Þ¸ÄãñuQLâÑk¡w ­½häæo hÐ4íòë# ] lJ.G9�Ó†ú+sÙµÞÅåÑP‘gùég‘‘šbÀ•¥Æº6Sõžvx3¹«‡9Þ·]K1.4xUÙCÓþNÝŒÁ5Gƨ�e”ÃÉçðl£vq¸÷qmái"GSÎù# æsp{M¥„3c>ELÆülŸªYæ4ãÌš&V,1—sÎzø›kbéÉb†Z&õXrËþ0HÍÎ sýgZ^~µ§[YÓå©a´A â(bOžéÏI\¹bqžr­Ã,‰œuÆœüb0ùDn¼ü*u<�µQQ¼põ^-›ÓLsÇÄ&:’FRêhš!RóêJ9롪]Mk<�I¸1» ®Ä'G•³V·Œ™Nˆ� õG@ÇV � («&ÅÃ/…V¡”p{ "ñ;[úž�Ô ¾¤˜†R„×C‘ ŠÃä”UƒØ�Á¡õPÊã{‡z-`<[:›»2ˆ€¸ÃÙðzJœ=,JÑL”åKÑl”íKohó$E8P§@1‰¸ð¥Óî®ü Œ}°»•€ ¬*ÈU*63’œ1Œ8B#–ä´56Û:êw(m{!Ú¡ð§„ ÚaIÒØIIìA@LúRôÄ©/E¿AìúR´-ˆ¢�!Α IúâÝ7õ•S\ X“ û¶ÐNg¸/Áð%ËEéªf9Àé§Ÿ0Ø”ž /Œû$ú\>^\q4ùPò;ÈòÈ' =ݤ®-ˆROqÑÝ7t®˜ò?�6jú6W”¨£G›øØõ9_ÍbßT¾ÊÐe Y~•~æ¤�Œì&=£hòØ‚à±Ì~â†MN“°(©Lv|†êvjÅ%ùuŽ‚‰±xmŒÃa I1îÀÖQª�ò¨L6Q®¹@’½Ol¦åˆá°˜^¥-4­ìÒîËûw.Yó.íG‘šà  8™âm¢Ø”Óö§|Já£Iu¨‘áf( èdتB†¶°�¨zxÌ Ÿ§ƒ¶'Ðzñ’F:Ë›�âŽPˆéÆh±óø�²±@œtµ¸×°Ò]a#7Ïûì˜n/Ýâ-J€4à6ºÁ,êFw�•¸Ñƒ¦ÊR=±áàí|. ^ÿ#T8´÷ó¬k,”gã­ñSËû?§©ÙÄc|–4k�Fkü‰Nññ.¯Npùƒž“ dÎ7¸Hë¼ 5ÝãɤXëöÆäl¾¯yŠ´Îl5Û­® Y… Ü=&‰JR³0úÄJH hh}JOY@²]`�m—òì§ZCuÁNíMT¦&¢ÚUõd|r ÍgÝÐÐ2öؽŽã§–*UöV�ö™}«Ëí ¤û|ê=¢Êªœ¦¬­É´«¦«g{úØeù*¿vyŠX‰ª­Jµ= ÓÕË�Æ;ËNp­@Sf,áXCÈ_Â=`€nŸ±Ô4ålÑ¥Û�ŸôØ7µ~;m-`‘‡:­°DŸsžÚe³½®¸dL¾\¾U貫n¸æºïü¬È-ÓnÚ§Ø[ƒîºíŽ¿úÝB³•š£\™ #*U«ÂÁ¿R׫ӠÑ/šÌÕlžV-ŽÚd�ùÚ´ûÍŽ•'èzƒ> „_ü_¾ ðüëÊ™=¢Òè2pù» &"Ëb£˜œ|ÿ¸WTE% Ê® OUM½üX|M‹ZÚ–,[±ª£«×¸¨kÖmðAàþõŸ^– …ÁH`qx‘Dîx�T½W^—“Ébwß÷yì‰çxVY\_ ‰%R™\¡T©5Z�Þ`4™-V›Ýát¹=^Ÿ†@ap…Æ`qx‘D¦Pit†ƒ£“³‹«›»‡§—·O±D®°š�Ùt˜õrêÛnÊ ­Ÿ?3¶,6‡Ëã „"±D*“+”*µF«ÓŒÎ8ëœó.¸è’ËêÞ'’Í£ TƒhN×µ€4=ñÿO&Ú,Lv  ù{§!ÃÃO(ޏíü™Ù¡®Á{ÒJ_ŠhNñišý&&@»°¶¥^1X÷³8-3«ðÒÁ-øöfõj•Åý·ºo+¾¥Å“[“¾ä䨬�d(K]Ô$³Ùf”ó·¢Ý íÃg4C^8üíYØÛtoÍíKÎyБ%øe�È2mÖIã3Lßÿ“4;–�ßÃFÿ‡™@W)ˆéJ1®ºqàMwÒ¸‹®¹;´I/˜š|zt5oãÿCS2vÆm3jöªÝ)™ýŽ÷×m£ uÄÁÔYÎîbbC�$é©;?/ÜÒ¯ú9࿟gVM;@,–A%2¹0˜|6ätxo f{˜Ã‚§A ¨sá48Q—“@®P �UJK¤²D¼R©T ‚ ‚ ÂX ãCÓz;hwGoîuØÂ> /Ø>ž5û÷ºsfçíeì`²Gà ¢”L¡Òè &ÁiG]g¥Š ¨è&c|ù¸ñÖž·ÿ÷%/cÂG=g4v—±?ë_´ËŒ¦))HcçÄ™Kj”È*�Î XlìœRKÁˆL¥1˜‹íôXWÊ™>ò·l¾¶ùºo ^ûæWéǧ.Ò“«TWU1ýñ Žôó8¯|ß8 ÆÈýÁSSî!Ÿ Äj?åÚzô±çX|~OõXzÚ¸RYÁ .˹\|pö÷¹H‹ u=\N .ÄêSÓlÒsuj¨`‘êjz�Š•ï*ù‰­sUUV„*ÍÃ()´X)Z UÒ®Ôì§ylR~žyuµÉlÌ0‹ÓÌ"¥Û@`/›*udO+ba3išëãoõ¼�Mš®Gr€­la86èg’šE2‚ëCéUièÔjáRëz«ÚT�ß'ûaª0x­ª¢W�nâpŽ@(•r þÙ?)FüS¾Rþ×üŽN=¼�+ª ¸@RJ´™�¨÷vƒŸ}t–Ö-¦÷Ù–d‘rg�µØe2ËolçÅ€�pã‚gJ¹GY ¹ܾwÆAÂYðoÁcS'7U“pàÆÈäø¤`;Ÿÿ|;ÙÎ nNÞÙd7¢&ìÆ·g%HG§y¶lZN™Ën¶­– ½fûÛ :[ómò¶¶KÛöQíÂfßW¼m/ÉÄZÛuÙ;�ýW6;UØ1½»¡­ÀÎÛ.|°}h�möéâï�pvÕVbm²±½ç@yê§­°Ë¶Üé.àà=Ð u\°Z8œÛGé¯igãLêÄqØwžf‰:åæŒqЧl¯f¥ï‡àÒñÝß½P>¨pû–ôñ‡çUøº2@øhÊ—œAÿ¤:‰|aG]]=çÅÌ®í'0ΟÅ!í ràœ~ø›u>î+sï6�”H ”˜Ãíø‚ø³zþ1python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/fonts/Geist.woff2000066400000000000000000000711501524561404200311130ustar00rootroot00000000000000wOF2rhðqõ†�Ÿ‡L?HVAR‡[?MVAR<`?STAT�8…/~ öhÞ# „B0�¨h6$‰ ˆ‹Iñ5âi'ðCvªÒ–Úyy¨Ý-Â�"!G##Ø8 Ð�LôÿŸ•tÈÐÀ\¥­®êýz”LR&¨` dec–Ô1ZCŸUí•8ì­æÄ"ÑEʤ¡„³™+Õ_¸A«aŠf€Ÿ=̵¸‰ó^E[r„ÄY=:< +Üþ1Ÿ‰Ãôÿ'ë)T¯†¶ÐÚ×%=IÎ Émøa™þÐyä§ñí¦I�o·L„6ýYÊèÁm&Ï{Û¤;8hòaV‚ø^¦›3À�©#zh­Þª×==»û�BsAG¬€Ñ��!`ûO†TX8àùy~nî{oõ–lcŒ1Æ£Æ`Á8R$Z˜Q1 ‘²A‘�£ýX�шQ…JM”ñË ¾Ÿ_@ü“ñÕ¹ý>€#0£ͬ)†ƒœFOºù%ZA� ÂJ6d�»Ë%wIî.Éå2I “5³þºÚVmKÇvÿ-tÌ�v¯ÿy§Ö_»–›:€u(âÎd€(‹ü·g?ñkϺÊŸÿ™&1ERdÙX–dàC;LAmP*2ð߃ÛXxþ¹w·±^{ÿ‰i@OÓ€5÷rÎóñ~Ó“¾4æoúCn}¾B„¨$à2ƈ~—­¸ÍR·Ë©=öÚÓŠøWG!iŒîMÙæ»+0Ñ;¿²ÙûzzfwXüOG‚#Q*‘ÃpzW`s e;ó`N+I–ÇIJ0Ðtf z@§ Ÿ×Áãw¿e¼!Ìt›”’ÔI ²d ­ZK¡ìë×1âtH­~½zëåh4êšÀ¦®úŽÊ©ß”f$ lXu ”ö/Ž{9td/_®{¹|æ)ùe7`;ŽpDÿÈíA‰ämY C¹íÀ?<üß»?vy'‘P»½Ú¯½¯·ª›ÀLU7Yu}yì“=Ó5R÷¾VÕ�ù<“dÉûEµ•�e´VçVeÃÔ/ §BK&Á�y¼X SÊ™žç¿¿÷å3ë§•;(Á¦ÒÊž?žZ@KŒq¨ F#¨ù{S­ÒÿBhp\ƒ#ó©uŸk?wÏ`m¬]œ1>ºð2ÛýÚR gMΨjg23o’cp4RÀ9c Ϲ�»÷II§–™[ŒöŒ3é¬Îûì‚ð’ÜGñÑÔÑÕav¡ ’óÿ™³óææŸ·Êæ§öOèB. ÜD8l$.ÉìžÉÏËd(mZ[zO§4YªÅ•*<]¡Bâÿ·Ö§�ÞݱpDŽuN„žûªº?ôLv`�i^×Ôô¤?,PÔF‘Ñ‘ñö÷_÷UÀ:!Tr7O²v[Œ¡=Ä/�P�'€gâOû<¥¢eá#üõJ¿óݨ¾úé»·®F )B!!ˆHpC¾+5'˜QSihÙ� ¯²fu‚hÝJ?O)Ec 1B�¤1u)mÙݳï_!Ü\ÀzÀË€e„(FJ$O>@<ÉÐa`> âÓ L,:¯æ !"ÜÛZ4$Vní*æû”FþL#* CŸ«,Dî*Y2C`3@Æ³Š ô„MoÒ|$xj² ÈDß8°7`P�ÿ°ÓÀ!¸ï^Ö¼?w˜'>÷|#±±àZ«eB£Ùj&¤ýÒãò%ùyåó £jôycÊ8jœ0.�š³fÒœ7�Z^�°¦­9;î NÜ™uº§Ýsî÷Šû)÷9ïy{#÷w=(í�<Øóàê×<,ͦÎ>Üöðì‡W<¼rÝ™—æ•ùäúÔúôúYë—l8‹Í7vmœ³éÌlîØ:Þh6‚¥pé.½ey9¶5³}ÖÉpìÄ^üį0)&ûgîž×å¥8uÒ­½¯ºv6Õ»¨ßé‰ó�|¬¿§ËŸ³ƒ³†�Ao�i©‘Æúœá¹È¹‘fÔCK”¢ åH#KF™¥ñãXˆsŒi›C¤mgvnSf0‹Ïœ…³tb'w¨¹5Òpc7wMÓÆñz¢š0VÂIxÞÌ[z‰—{ÚcÒ�RVñ1|:5`2f�ùåå€t| »–w}Ê»6gÍ%Æ8Î�IÒùüÎÎd÷ÅžWÁ1 WÃr¼(&)Ír.¤F”¦´+N )FÁ‡4àïCCjD—UÎ@,@ˆ©À Bï³ó‘å ³î{›…Øæ”øñ <ºÈIÙñá¬ù ;åwQ(À) 8Pܳåä+r2@5yÈO5Û‚ŽAf„yZé×L=L>h#è ýÒÅ¢@H4¡%4a:·¬~B€„a�€pEp !ëÄw“´ˆaÎø‘î°ÿœ¡\"S¼l·Gx�‘D½ºÀ2,·¹. \ûí‹gŽìØÊjÛÊ!·:‹œzcœ¥“°­t‚0†v‚‡h=D8E!|¼×+7[LÙ¥º¨tØÿøò!òbÝRÔWU•ÂáeñÁ®O…-9ÿír²T•ÊÜüŸõ•d! RÔÅ¥ˆ ñXëϯ!ò°ûÿæ`Û¦X²h ‹=ÓA¢Ž Äó¨ß_%BZ„‹üV=ïAr“ã$¦ETër¦Xú«þ•äÕÀl‹£³—ÌYW2-²æÁ©Ç&5ýÇ‚�³«X�w@ÆðXîÎÊz'©`7 ³�Ç2x±Áü kØ#¸ÖuÎ:t';~÷ç- Ûu½³r!fg„$¶tLTM° # šÕðåû(b6rX ?¦àΞ’î€�MãÉða129®œe V�@ŸD]m¶nv6ÙˆR‹+Àäb„‘ý1:I†«È*!x(Î�Hð:ᙓ·K„ �‡4ù q¸l"ÎÎ`˜%ÙQˆ&³LD` –êeÐ`[*£d«^ü/ìe >}ÉÊJ8°© ­¦ÿ±Æn�nzM¯‚*ô»¸ÎJÏ£çqcéËÝ¡Ø2p¾kw�^œ×Rã.Ío£²¹ÜÑòvòò|¥¤t}æØ‘â” 4´w�ÎáæG0ÚíÚžkuâèÔö´T÷üØ[¡jÕö¥¿Óø|ò¸-^=­ž ÇOýxýôêå¼&wžK¶´MÖþ–oaü¤%C]œ²îÕó1•]P·Ï)èÎtþx?˧�oïÕ'×xuÁl�ß ¶)Þqy–DžwßåžÁ0Kk¨ƒÖ}$~ŽÑûÖ¶Ásc?¶£Ú¼Ë›d¾ô=óÐyåÖSØVØ.+µB«Y)V¢T™r®¹î†›êÔkÒ¢Õ}�µëÐ¥G¯^yí�÷üíÿúÏÿ aÄjg?—’tR¸Á­&a!SÄV1‘B¥pe¤ÊY©kI�Þ'¦Ž ·î`¨ÇÔ„§G+¾ûÄž„�üD:�Ô…­©[/š>t/м z£Éò¸Þxí`äíLŽNÂ�ˆw1|¥ lbÄ®Àcê[aE|X²X«‚W¥b"q(²è‰@c%˜‘ŽBWfŸjOõꃴv™ÏRÖ?�­ç8r“ÌéTŸÿ¥PMµ>˜gx!€\ïS˜’"=“a‚éy@Š•9â¶çúú¿ú”q­±)ÔÑW êèc“ÙûKµ¯Ñ{×7P�.@kVyøýšòŽÒgvјE*÷‚�†!g Jƒ6¨QVoS�ò§rYcZSÅ„¹•â×ŧQQÀe¸Œh ÿ¨P:.x(ž;–sZúþ®zú”TúYHÑÑÁg!Es­”Oc©þç�ž.¯ •ë=–¹®¥ªÎ™RIÛ˜g^çQéwwZiNý>7jôã%“ÔðAVÓRKa–9;*RC;9Œþ‡{¹º³#=kSU®2f™JÝE ù™¥ÛÜóæÍÊn€â–ðŒxƒ¬X4ã,‘HyPsGYe?ml²•á3ïóž”» çc9‰WˆŒ�³FUY�¦¥´EåMRlJaSÛÃrt��°X`©²¥_FWëô;ã�t{~'ç‘Ó�DZÄõ.‚ñî½ÚAIiy—Qõ'ò¨ú´$ñ�Á‘ûÃ÷ù6ðáˆßÓ‚¾;�ÛQ�ló%Vá'/C °=*/ˆÖÞÀG²šM$e,j”(¸ÎRz£ë¡—<ë׸%B»ê§ šE´ÑÊEiý”l|©,gÐÍǘÄ5·/“¢D«!Z=rMú»æÌñŠÚ‰Ó-P-·š·)—Gps\l2µ½`iZ º/¬‰CzÝøwkL�ÝÀŽK“+Ôn£).Ý&Ç\+a`ƒ6M¨^äf�\ßãÈÛGd#†Å=d£`Ä}ß%‹|·íðvy•9SIQp|äMÄž Y©-1÷êª?L7Ç $µOôx·”*|°<îÅeFkpdM–n|Cƒ°nÆY½%%JQ½¨Þ0˜ºˆã�ˆ¸�iôF·'¯fÌ óЊ<ÂÅàF‡Y¾l]O±Åð–RR¢êq|³ù 8â)ד,•eíê㺜+øB/á7Bß´'=ÓÍâþ”À�0›€”äÒâ] –hZŽs#_ÅJ …{óe=¥�õ$ž¤z+tI ÅÏþW·Ñõþ%‚%#¡Yt\èyÀ[70qìÄ|6b_üü_—ªwþ¡é ÆÑ¦�¤oÍ/¹4i¥÷¢µýçã Y#v‰QC¿ã®Oü+…kO̶+‹“ö—ìð_Ì¡ºe1¶}Ûüh^#ö˜’âEöC�)¾ºÜ†îð$-¸ûÖ¶FXŒÊç7«¾Oë'ûüƾg_‹'7×éo#_áFÅÔ‹œ_ûä¬o«ø¬{\³àƒ¬¦¤ŽD€öSºKxYâ]È·™ÙÁ§élªg>JÁ¸Èb–ž{ÿ7ïZkEÛlfº”Яwaì­þf€’T�0œ½é3+úÜêâÇ«J4õ'o™iÖt»Xñý˜h=¨–"y[9ß[FÅëfß—œf*è°sËÆE—Ï¥|Rf=™”Ê{òÝŒ(nE!>%KŸHJ¢Ó}ÈþŸÎwæu•¾º`åa~*Jb”b5™âeÖ¾Ðf­›§á¦ø4ç¦5«tIÅ9ûzÁ¬F0×:õ¥Í;ÝÿUϦ¯ûäõw'µ®twú‡î�²©Å Ü:>`Óæ;aPŸw÷À'Ügî˜zšÚ¸ŽuVC–8záe½*ÏoÁˆ?%[7nMå—lÊÊà£RWJcÌJd9— :)Ì;Eðà‡üdãÚ+¯uügã=¶>¦Òñµ²}¾LI®Úu@psйöRîÃЯ”]™K‘óMïjk»èœƒkV�ݤt¯ÜÖ£¿=GšÑ‘UøðhíX3¸divÈßY²¨AÎYÛNà×–0o€^vG6uTmŽ» ñm޶úà9.s½Ã;R·ôÔg Rr„}�~ñ_­ÑÍ$!QîâŽÖÏì?ÙwÎàølµý 3…«ìÛp"ÏgÔó_å—Y(ýãÌLGIÛFDíUEÕóL´‡²¤‡Ÿ€½¾q×p…°ÒÑ2”w ãÕÜý/ ­½R¾2þMÇ÷?¢¹? 2HÿG>®#®9Fþ÷§.ù·…¢ðë-ôØZù CGGß>Ø™ˆ òþ»×„¡r·z›ËQ|ë-!g?�h‚Á!ýË‹»ßŸ7†ä)¬ŠùǃI¯Ý¨@ߺP…U®©S¦~; RÓ×jqß:�/¸Y»N[t_p»^¯íðæ€½Þ¿õ>Áa?ÌÑÓfÔ¢É-­u»AÛ«ìGdhdQ_‹Ld_rðd—%°#ëʸi2.¸ì†ZS\s¡Ò÷a%\1Kœ¯�ZsÆó²7™ŸÊÄòU§J­Èt8™�pX¥ «¦ï%w\dr>‹�f—•©‹³³§ÀV™QXÙ–³®K]ÈÝtÝq›­wÈ“l7“}ŽÄuâ[ERW»ØkL-Û—ð3^PàDÂËp‰9PÀ©âN3󑱟í¶Ú ûœ® }ú©Ü)iè•ÒɆ¢6u0EfiÔSarÖžbü�a¡#‘6ÂÃãC¬YÃIØAäìI)8`£8AœyÀ©i ZZ8Ä“'œž�—a˜Œ|qøñcÅ_®@�$‚„#Dˆ€DJ€11eÌh“ ‰’ˆ%K†˜™Y›b*šTs`æš‹fžy�4i0óÍG“.f�� ø2-İÈb,K,!²Ôr,¹rÙȳ’P¾||«P(THfµÕCãÀ…kô/°ŽjÜQ ÅÅ‘Nï±!:€õ¹çmy)ß~Q½Nì·iþ½9ÒL„±�ø¬‰xÐÑ3I6_žÛCŦ1ÆsñøÂÛ˜c#@úþ©êâS$f²4K™�Ñ#xòW ͼ9û½• îoâ•¡ˆ‹çáåCjÓ.-#+'¯ KÏþû…imè‘¥ªÝ!ÑTUUUUmmüö’ÎuŽ-£6þ,Aš,)"hõ½&‰‡ÛÑ—¾ô,�D “’&Óûqù²ás�+¬•èMdÌ"Œ–3{C�ýu>'ÿ/òIxalyQ$I[‡Ž?¦#¶;ž´sh’º[|„¯Ûg7#½ÏØ‘ÆßëÛ±ý¶†3¢^"3;KÐY 0I?7~âòhâ|”ã�Cáw‘r"’§(ñ‹NÇaÖ¢�EüiÑÍi‰ ÑÙµ�Î�Ê–„‚8¿�8|, ¼¬Rì2Üc‘ÉGHta¥Æ�ƈípÛ›æÛ#-ª’ÏÊ;=êÕR"0!X+ììt‰x9Š”é˜û~…[‚óû“ ú Á^ ?~mlöÓÊo+ÃÖþàRþˆî¦qÿ·up/¸í„9‹ŒÁ,°r›µÜ•A› DEºÈÕI83þÊ= C‚¹&óà*7\ëGì¼½Â㡵ªÿøÿu çQÀC27�; !£}9À&HÀ.°ó¯š»àôhRˆÿ=£hø‰1^ªtËX Îg&HîYHó¡ÅjêØÉXÖ¹wh¹ýhÏŠI|øÊ${V-TzõbyÅÁâÌÎ&‹ÓD­ø¥v AΓ¿|5†,äå¸\JcÊ¡K'p˜’Q ʉRRÞT1\ãèä¸Þq£“pÈ€èØë$urìà g>GDI)ù»m ü+g¹þûp´oþ?:OæBÎ'6¸à¿ï«WàûÛ_îxyýåá—³«8÷Ô‹EÜ0; Hà/ ð&ÎÒ^Ëë­ä©¤�ÜòJ³?CÀ¯=öD“¿]wß5-n¸iˆÿ ºã‰�‹OÌš„ 9GÎÔ´t<éy1òåÇ_ çZµeàmgbËOÞjÈN)ЧÆq'ԣØhX8D¬Ù‘²%ÃãÄ� Wî”þ¥2Œ�741\°0#„ %Aœ‘âM2ÎxĘj¦i¦›m†ÿ̲P–l9–™g9s2 èÖ£]§.`- "ÆB¶!f2Ý7ô·Œ­Å† v�ØEJÙø°K”�»L9ý+à *ŒÖ>·’T®¢kØÕtaã”kEÝXÆW¶·`þ§¬>Ødoݺ@y*¬_ÏNo'¹2¡ã,Íf ,*rc!lŠV%6HpèDB˜rV�ï$91Ÿ ñ̾õk-I×M+l(Ž "HÛˆ‰æÆá©Ô£˜Sàãsõd,¤ "±}áä"¶Ðptoš$vA 7™t×Už4­|¬·)ÍÚèà�Q�³ÙÈ�šÔéôÒ#¶B¤¼ÅýÐ’)ªTì•-¸GXÝcÿt¥eÒd—¨s½ÑÈ›‚W¡IY\J}3WžÆýff 2ä!Ó)—çÇRŸÙ÷kÏ{Ú0LY“®ßd)ëuŒaÚ9BËnùÒý,öÔv{Ñ6IqÖnÆáOÍ�J�%:8éž œ×óF>ãÊF† î%À�ÚÔŸ}��Ò?¼�Ávip¬8´À.¯#†.Ù†ùe`X³Eyqe„2T©Cì’Šï>¡‡‰ð'|\/MÍ])æ€|¨¢4Ö*WKrª :)×pˆ�‘œ�˜±Xɨk¸As_B;@ªý†ú�æiÉš~O�íথ×=†ÊDKrœÎ�#€@+`ËÒ:·h"£¦ Uè? ƒùZ0ºªb× —ÿJü£fcõ~²îŠòº�VqoÕ(³ö�qðuâ@œ¯‘�ÉJÝQ±ü¼Õ¢-˜;®ÃËW!%©C/ö¹¢;GÃà9zÙáu9:‡BÊ¡�ªmg!‡[í9“ÖÊr+ÛEUóÜôɽ;WŒ�ÃQÑ(9¶’ƒŒ¥0Ú�·AúÜ–kíaò?Ýßs”IfØa�ß]Ãö>ÁB/ž†{R|–扺zâ¸ö¹Ý©– „‹çö”žŠcH?ÿªF 1\VÜLj޸^ë-Že;°¯^_y¤Y‰ýª†#I]P¦^-pǤFG¼z¥­·B„Ü�b��Š .‡�LkÚAÖÇ=ôÁçW9!^„U‚é ·èã#V“ç:Þo}.@V®†Ö»—’�/såéû¸ˆ’ªø¯ÌšË mQnÞSnçQ�j"Gøð?�ó‰Ójí£Pp[Ò¸þÛ—/ú­GÇ€VôlTQa�OnèvSý�¬?‘I|ÑÑí4GÔaìÞTsIN_®ì–ÙgA_î�ž÷nAd=Ë'ì.öEïjîåðíøã‚§P¶¶ËZY¥ËKAö›°ƒ;cæüöÙ…Ò«d±~w4’ Hؾ-sS+pbKcÊš2ŠÔ¬ l©˜¹®ci½–bÌ5”V�ÿRþ Ñê}9�ÔqD(եƞǜʻQN8£®akµíÑm¾š[iIxmuud]åQS9ÈC ß¿w=›ÊÞ­ŠÆ½Ó­¦æ�ê#žÛ|Ý»O·i�›œÃÆ0æ8À@�´-åØGi󹿎adlG:ìÏ ‚æ\GêЯ"hં;5q™­jœ§ý$ºó»½ýuÕѦ¥N©–÷.uÿªAeüêäø€ëþb´�J³h ?ç¿z,ÜëöG÷}÷4Tuêjp–ë½^¹Ÿ™Jœ¯øÎœ'÷£Gâ5rÀxúó©KOûû󨛺-¨QÛ—?“&� ãß® îm‰+ÞJ…¨GÞxÓiÁá–/”‡~/ÛH«ABÍp‰£9Øg3FlQî0‰ÝõåvN¯Ãg÷yû¼üáM¯ý=æÀŠÆ…N–Ƴ|&¡ O  Ñ‚ýÄSz9�ýnúªÒ¬øó­®øÂš¿nšËr&½aaýǡ߯ؤ&,ú®#rÉ–»‰Õl×üž|ЇM ¤�õ¥÷ׇ%˜«çù°)ù2éNymºPþ}êý¹ ‹î Àù0‹\¨Eíß®9Ì÷sézµÐcVð¾8µRêå‚�ä2Å.Ç’ÚqgS¹�ÿNп¬Ñ†9i í£uòæl=Ë’ô­4ãÁ\4ƒ½ìa¥¿Žj0ÔºÆ8¸9‚ÛÕPûXkàü‰x Ù¸0ÔšÞeð›+hƒ52P�%¶ôRƒûÅ1µæ–ù”Ÿ"µj*�òÈÓZax0J�°c$,ÈÞ+›ãô?m°-ÔþÅ Äù;•SŒÝæòäL7€{ÓªVšüÏúëÑq�y‡î_‰Ø£€s Dá`¯6UUþo•ìSñÑhÙfµ•ç²kZ8Xðœä&iÆ™æQªHï0÷×—kÓâEÛÊ“öMSÐ*ÁAëîª`å2>Ó~ê½�Ÿ‡ÊÍ™ƒÃqT7“îîúÿ ÌÉØ/º`‡»” þ@ÎodáʽY[ÓÄénáZWàÒ�ÍÜë*Œ§Km©×+TRVŽ5Ó…’rL¿9%ѰÅ�à +ª–-½�Ñb»n¸Ã>O£YÈFn0>+"_zérLûI§I1c.ˆE,êóQ¬Ñ«j­tâ_êD#7(�4[ïÎò\ýiD=‰¶˜W?_)×��I– Íàjw*âg'îþÖ;µÅ�dSçV§�µ™U)…ÞzøÂKpƒ“´âË‹û,ÅüaH²F?6o9Ïj`ÊïFœóN‘Ÿ@¨™A;ü¢;&ÄOax+_S†£¤X<ŠŸI&{¸x‰ó¿eӘˤCü h3M$XFÁ�¬Xºš…-y 7èÃÛ:ì{òˆæèýÍìÚÏ£ÚTò«§,[íFÇÏIÙ§ÉzÁò�‹6¸t>^×7Ú¡©g¥aK‹Z÷_=–º+cKõ!syÚc†¼ï¦ô2ï�é˜|Ð+ûÕ¦ïûÍïý”¼÷zŸÛæ­Üö¡s*ÿ^_4áô ñ“Q¦ö›Ñ¨\åwáþÄ0FѧŸ¬ «�U 1ýÃæ�ñŒTàÄø*V¼£�hߨ¾êJp#Lz=aŦé[ˆ Q£§´þ[@7;µ'Bž&O¶Þ¸uiŒµØÓŽ"yİ%3lÎÃHk®ma ÆZèõ o°ƒÄôÛ87u÷½gOî nÛ¸qÛö�¢5zzƒÒŸ$‰Ïè{?ßL¡S[[§’ “�½1…ŸîîöœÙÝ– ­² � QÖB$ÊÄýYRz½Ï/Û’ó�¶¸^‘šÿô]MÁκýò¿`<)æi&úà壌B«Ýº"ê4ಡœUßÜaXí ;w+óìvįÉÚ¶i·¶õ.U ÷uþê�g¿Ìðo™Ú½[Üš Ö,ÿIÞðÓâóë’ýÌô–H& ع½ß©áaßé½Ñ\^4Õ­y*%ËñX·9Ómé@pŒ5ÖÙÜÌ"ÐÏ.ìiõœîíÃïDJ¨Qs!w‚Æ?±¬Ÿè;³ùåûŸ ’·z TmíÀI¢€+·iÕ–¼$¦ÿΚÁbJ÷«È»*;î¢(vP›è.°ê=ã§Ôfúgè™Ñ±Á|Þ}ïÐÞGjBŒžµ4åw§=g ø™=™|†ÃÎt¤�·;á¾²Ë*¯ä·$<™yò R¹5O¬nŽP‹¤'�¼$¦yºUÆ6HÞŒ;%þˆ7±χËfL�Ög9Cÿux«ÂÏ’XkA{X®(++Ã(žAé\áà6|ȈéJe›BìÒ˜õ±N%Fô¹ùö(+&†0žòYU ×Èz¼<²´ÃÜLª¬¶X¿¼z‡^B¿3"ìÀ›}Äÿ,ÓT“­aÕ§ÚGF%Ö !ùVáÍB\\°Gö‘{Éôfjôzvñ¶(€?K>mÏŸ«}¬6ûiêZ.¡!d€?—¿Ýžÿ—ÇÌëâF �¬_ÑO¿Ð<Él£Á»¥�6‚�>†}±¶:lºo.Gæ-Ƈ±|÷Pî­ògÙKqù’î´\¸¯�!9\Lƒ h3ª.º£�çï—’9·K/uxN]¬±&Ñ}r42�팇sý}ý+ŒXévá `EÍÔÒǤµ‚‰ÔÓ7дq}‚9;íøñ‰®ØZLS!§’ÏDçU¢«b_!<–×ë2Y@¥º�¼ké�¦ÿ’Õ:4ëÖ‡B¢áÇ'a_g<áëp(œRnØjæFP”â=°iM›Ö÷ ¸%)6ù'¬1L¯Åü‰LltM»² “”v©3 kÖ‡B¤éϧ&Üù‹žöÎ!cQ9Ÿ”Ùe ³µ!l—ÊÐ@G"è_-Ú¬èÞÜ6´Å|ÇÆ`j~–\pƒ—Zßt"õm Ök1 “”i( ƒé"RÞl¾aW/‰Q‰¤�Šb˜? áÓpJ¥ðïÃd‚Ýn'ê>à˜'gðT�4Äyç½aÖ#OZÜ^ƒ‘j¸Ãaöx Cy¤�¨ªiê+«.R�â‹øçq D,E½É@€Hjší›üÙ¹Rl ”˜)D[|ZLo÷ùp3]N—â.YùK—¢o¸ÉÏ E5ϿߩÏßós¡wœ“ÞªNÓñ%@ ÅÛŸ ßœñ‡w=ëh:O üÍÆûà†fƒO*ˆÚC4ìÖ¹u¼L-$·Ð—‚4ñ2Xf¡’l;zK Z+²~L:ÏT,ƒÊ…‹×¥Xou¢�¦Ãz`¢Mjn£FDåÕ*ä¡;‰¢ÁG� ³…ÌúäO4ÑTFŠÐꢭ—¯;ô†“,´¶¢¯S I¸a‡£) KJú%˜Ÿs”ÐàKûd�FšÊ|R0üêž7t�ŽSjÀAz�6ÀU+ðÆÁz€¢¯»¼µ­å#·&ÌâG‹‰«ÏxB’¦°ÃÑi\”ò|€*ÇçŽ-€!«^M©„Þ;›í`I)–n‰žô¬ͳ¨ö6ÁRɪ(¶((ª»:bmhDÞâÃìªIc³!Þ¸ÒŽ¼æ[ˆÅبŸ`M{›Ú‘îÍ�ƒƒk1…2¨MÞнÆNÙIÚbwy9Æf²Ùê´id¬f—Ûñ(w#t]Ìý½Á‹Kgpþ,d²+¢­>­Û`sQ.3]NÝ0ͶGQðÚ¿­Ç.nf‚=påv®?¿ñ|ìém8Ÿ½®Õû·ï û/û\QzbfÛLö±¹ÿZ”Þ÷ÊþW@þn©9‘n¨ýÏüÄÍç»û¿J_;«Þ41ìÄOî?þaLŽªÿ’´ ú–6ÕÖüê Í#ô67†ÂM,(1×[ZYÛP—î{Û(XÉ[(;4ZV/Œñ$EIƒðÅS¤Š¼vÑyµê‚H|QIß’€<´!øÐÑ�û$ÃÙÌÆ(rjh9½1Æ„Y³hØ<•3ÁDæàÎDó²ZHS7±3þFpiñAÜ,øÈ&F¦�Ù#]3ÒÛ©[pñA.璘ñ0¾W”UZؾ~+¨´ ‹¶‰ aŒŸR¦ Â�4hf�lî+GX,{DK}U¿È]­ŸžÖÛ ‹Õ»PTÓe- צ»Ü©.d‚µ¸œY�+”Z­%Ç;‰ô;‰×#tä8óe tlO�ÂÅ£¬õŒö„i�’ïÆj)b%¤»wÓ¶:ÖßéF*ù®n«©Ïå²õ Z€–M ¸�7æ"5Ç쫺 2UHTâÑùçOš"ÙCsŽTÜÞCqUh§É؃¶�³+ˆF"¤‚ç‚ù-r_âR(ø—œí3½9ð ;NÿBDrCÓš×€¶wDµ:}ñ¬§¬â߸ÒëÃ9¥Ó™WêÂzó>_á-‹e}N¨uµÌ$vØÀ£‘ n…v"¹ô•Ó„À¨Iepé›éc*±yÿ¬Ž&wƒ[à*¨àv:;-æ~œ° ô›]Ñ¿f6Z}ØÖ×a±¡ Œ'v©|¯K¢T8Å<�BÉwàfû‡£ÖSCCÖÓÃ1€Æ-§†‡Q0DÜ9AêÏ:4±3ttÒÛèÙÅ·àheÿžŸpñˆ…“EÌzó­÷¿ú„#ø�·ïµz£r:®7“<ªÁQU<é~+{&xüjÃè§þgDCÝÉ$Ýår‰®¢nÔÔÜâB©[þ“ätÙ>ðáÞ/>€aè¯PV5?-TŒ$~æÀY³8p´b¥©Š«„¿‹ ˆÝ[”rícãïÝYùo#ØkT_<Éùny‹�×VS�¬0¬¨Y±bù;õu +¾�;LFÛo²FÞ¯ÕªeסØ#ª³?Z¿Öµ±ûôí÷ ¨Úþ]˜ÏiçÕ—6Õp´T¿ÿjÀ‰’ÌåÞ*«É£·y�à¬ÑNy”ùøÝ8ùZÝ�Ïr…b~ñˆ:,+•]äycqs»®“3â÷Qܨi:b¹ë'®Ì®±X”qºKzºIƒeÚ üÔÖnãóïm7qÏ×^«^6k¢Í.«¾,&bç€H°µ:�¦_£]_ÆÚ›¯¸� ‘;‘?ž’„m°‰9hdH'e“*��1ÝO7Îkg償2Ÿ ‹s½ß~šÀ…Nc,K·@q9eõæÕÇcši[aìuŽ�-8á™ïвX[®Û€9Ò*]Ü,¾wxjíšÜãë—矜�&Ló;/¨™�¯_5»‡ôÌ+Ï}õ™|²©úD]ý‰ê&UêëÚÁ¦� (·Æ¾¦kU8º .|Á<Ô ®ÝpÅ=ÓÿK�ç+ÿO]ç;Û ½åà J|pKï”§€äwÒCV{ÿ ~&@¥úˆW.òlïÄóïô•?çÙôÚ«óm¯Z»A´×c5n÷« Ó“Žön/X†ÈXÊ”lx¯!ØðÞIлD"õ1iGàÍ¢«;!OB8¢ˆèЃ�E‘ZKzW‹ÞÌkdjŽë çz*º ƒ�§÷›Ä7è‰çO€Å½KÅíàø+•sàµ;+³xÀñv݆?ï*Lͬž¹Û±ÚÏGq 'ö‹ç©kA‚µ Bq ˜/²c“âß9øHÒ¯Õj´ý�™Î!æ\øíÏ ë�.u°Ý`Ö4·�ÄwÖ¶"g¥¶ýX.7®÷úÆÒdÌçÕ�£1iÊ7“Ds‡Ù,šjö¸ÉTh&�4Y=¦¸FÕfµª’ˆlR|…Óì+íq¯ÿK$ú]×̾øFN(1J†?dH‹q\”6D#%-ZÓ.JGhï°§ŒÚ´É¤mOìö6tûý˜n36CâŒÑ.“ÔUæ]oCVIWß®ªýeiå�µ*œßœÔ­±-[kÓv[]Nš“S|}µ^ÊOS׉ ܘœüû‚þù‚S§~œÚ02>>Z76>6ÔñúQed�2>ò_— &º_WƒQ#fgËfe¤.‚«W Uò¦†B¢@Y™’ QµQÉ+ÜÞ^½=³9ÂÂD7WíðX”õouî2fiÞ(!”fk¤WN²¡.­7-Úæ÷ ·û2]ZÈ–38³‹íQÛ¢ŒPÔÓ²5àoÙÅ!k8¾Èg•"HO§åÒoø¾lü~ªúÀ 9m[P±boŸfÃuzm$¥2{RrÙ—™÷Ÿy3Ë,oùÛgÂOG›{¾>áÝÄ4qå1MŸ$·}Ö½K¼»t†˜&€àï&úúò�­�l�‹TœòêêrZ[Ûy¯6÷fâi·ÕEå§ž¹ÖÑ7>X²4ÓWžJ_Ö‘†\†ñ'ñÒÎ'‰'K/t5 õyÓÝ/éó¬Ò•�jÈ€+gä?³oßm+O«S°Õñ@ ¿ã7 Ø4ÚÐÅ8Ðöñ¡À•^˜‰…& #¡( Å`‹h—V»K$œ¤Oõä凱ÓÿÒxüñ:�V£é-¦v ìÌSSÛ’~�FÀ, I6I3’KÁx(º9éØ $!‡Æ¢Jt,CñÌ’çwœ�Y‡~yÑ­Jþ ¯èµõW€Ý @þw>äÀ– ¶°§’ÇÜþ8nã*x`6´ ¹ˆ[l?̰1Ÿ7>äQ� ¥ATV°`l‚$ƒì¡ƒAÆÐñ ÖPò ý; ‰K±3îV Ùp-È€Û5,¸w¢Åzg˜UðàHìÅLå…ƒÊ ÕÊ çcÿÂáaT5€×ZØÓ’5Œ9ìdeCäB¥Ç‹G¤'¼)Že«ô¾$ö–4´#Ëcåbl Ó‰Ò�vÏ–üäë9&?Â4€Gú#ÅãMNNDƒ„P€› B´2â bscœÉwK2o™ƒf3„à.�—Rà–zŒ1EL©'udwc“!�‰Š ©0gT2�ÎHËžÆòÇÂ+úÛ+n^ɯ^i÷Ê–{åÿg*¦œÚ; þ¿OÕ)uZ�QgÕ9už.ÐýR›¤³écœÂiœÁYœÃy\ ZÙ�üôÝUGðΤ~üÌŠ³Ù Î¨xÔº¶@_gѧ ·¸�íu¦ÝÆ.#Ù˜œ¸ðç쾺¸1MH¬¯;tSªípM€q+ –uóR  þÇ>´/º¨< èù�³âdœçÆyq>þˆõ—_=ëÚg_·¿ù¿¾¼x×£ƒ_ºªæþ�äÊRŽ^ÕÚƒyxíº¢Ô¼t%Ú>—­i›¸.�˜­U}9”Xûˆ¼l×25jkv)§"^Šw�‡÷0“é�kØks¨Íʼnµ=ò²¯O›î‡˜™C‰=‰õôÄÈ�l÷rh:‰8m‰î^M(1]Ï™ `+ÞFÞA¢ó`°V3ñb51Zþ[µ� °aÝð¿ZÀ‚çÃfR+‹]YsF‡tºØYV”‹Ýoʆ8AäTÙ£]?ßΉÊÁÍà.IÿqæÂK7ri‹SÒpøN\ŸJ¼�5ùUÃhÉr$k³¼¥‡åÎàe©ÈÒ§amPî1¤M¦ê™©îB ø0–Ú ÜHè‰ÝÄÕ:Š�ñTyÊÅ–‚ ÄRe[Só,â„ËK§›ÃUkë C$V›FÅÀ؉ÃWì"PÄBNù3M(ñ¤õw™6¦ãu}~²ddO°;󰂪&ÃØ<¬ÒçGe§„^X›Ë†g:EU7ñùXU^{G45K¥úpMä^ךî‰~­ÖD²…¼I²ÕçòkúœVÃ)«ðÿ¿ëÈA=7F‘Æ›!G�µrÐÉÜë/ÛlQÅz¤ÉÈáÎ…Ô�P¦ŠC -Ѳ©L–êò©ô+‡°«Õ¯F×;kO7Ýeuç›KóoóÚš¶½mi‡ÚÕÖ×Gö½º�êíïô»=×Û}gÂdîšü>½4 ˜N_½&gM¦E¤)KçQ^ÄŠsüÿ‡¶¢Ã躇þwÍy6&Õð'4çY¶¹Æ3|€#œçU<-Iùœì—*u«žÕ:Í)­†Eé}PËU¢Í:­›z(Vv}¡*«ñÄ3ÛÌ7OûiÞ‹{þv¾•wùõÓËçø&?Ëïg"ÓÉ —b6PE5µÜ&GÕ/ <É3œé<—x£÷øxãbKtĆ8ß½§ßþ7ÿìbhòIþûìœýscº¦±•ÊBi*‹;fWî±ý+‡—¼Ô¤;F¾ðo5 j–×k 5xM¼f]ͱš/kµLm_íºÚ]µgkŸ¨ý¨ö;NGÀ±rBœÎÎg†óQ]IÝ¿êÑúî† ;‹¥��ã�ïh<×4¿©¯é}®•;É�æ¾ÃýŠWÊsó’¼u¼#¼Gx?ñKø üýüøÏñ?â+(,(QÁ„à ÁkÂa•0(Ì…›…û…·ï>&ü¯ðYá›ÂO…ß•M‘B�‚ ²m|ß|€C ‘Vìë_"ÿ«ÍzB¢yléw„÷ߨQÎàÿó¾C3§‰©L5sÆcõøk|þ!dø›%PPÀÁ€�+óõ'Í㢠„!ÎÂ&?es9smR�íË™üÃXa %?h ËÀ��yê:K~Mºƒ¼n:üûAùôÓsüU[ß­7ìuœ/öÆÃ~¿*[h}ê'šãŽïoy?fáqÕu¡ÉÂÁÿ#(•Oþ]™wIû´z¡°zkðÆäú;pσÿþß# ö)ûâÆ?™jPNPÊézN�Ôìªma€ �4¡‚eJ‰\U‹÷0]Gz×ì~HwÆ[BêÄdcÞíñâĹäEbÞ&)²B-¹Í�©ÀWMh `Jš' êjñ±HD;(‰ûí½ÛyÕ”²P¸»G´m»&á2_�O N.ž5.zzZþ€ �¹ºÊ¤iP9 �ÿ™}›Švüôô &5l°EÅåjíññËÅÁ}Tj¶§‚²7rð…bKXY]¹ýìlC÷—ó–Àâ x`Í#�ÅuÚ_(:`€Ù†ÝÀØ:(/V±B‰s7í_TÀ¾Å½äx¶‹I“�S ¬f PúQ^ñA³Ñ±l�ŒX)¡^Ép JB.TÝQK>üH­›âW)‡°o• Ôu½Zý_/QUeA'á®2\9¸ÇTPíD"ÜiŽÎtÏÛ�J� �Õ_Hxp×â?a>UZþ3ô6jμù`f-¥µ’�·¨îööª¥l”žp€zsü1Fºcéqúš¿óèÐÓ ÉÍx(®±–ã‹ÿèË_ÿú×__œE6oáÔÍÆ4ÚGöœ~"Šϳeõúr.Ujl ¼¾¨)\¹ùôñ‰Ë÷c áýÞR©ìêCõƧc°¬Œ‡áÞ‚CÖJIW(Å�§Pôˆ´‹Yº¨ƒŠ�§0tó¡*„g²e¸ë¦=¬£…‡lÝÂÏ D0¦Ñ=.*„5œZ„Œ‰Cø“ßë²ü,ƒ¨,�oB?^vsíϤCM\{{¯=óqlr[¶ëIï•Ý[ÀW;©|½ë, “œWÎW›- [7ãš8QìË?ׯœ‚^é¤NpÒ38ß_êˆÖÑÉ�Å¿,¼,¥ROm§Ëóá™ìžÉ�@aY€Ûµ :h)Áfåž�§„ÜáN§çÚ˜K½¶¶J>p$<×%‹è ¥Dç X"¢­úþ�Bþ�w¶–Hpâ 2ÜL­Uù ÃEåÝT” Ødª… Çß«úö°ŒÆõ‹orêùŠ®ÙJ×sÔ¨ãÍž®êìQµXø¤!ÆV÷r¸·ÂYH~¢ÁJÖ-AU©×ÍD»?kiÐ~±�gõXL�½Â9^XLѺ�iËqþÕµJýõ¯pƒ­UU9:Ž ¹ªÐwæÂÛID*F:oÕà¬r¶c'�NÕ‚˜×â…y©¢aUøë0�Ê]À 퀊£Aé<ÂŒBWÀúS€²Åj:=H8°ð©^ZWàj1ƒž s…œ©$E(蛥©!ê ×1f¾Hõ1(åÀÑÖ鮥a ´•*È-«nóÔpV5âN …4­Ï‡«á†:ž©Ã¡/Â,¢½ÚCC“Vqy'Sxf6)Œ‚ªKÓ±µC*)¶lÁP¡5‰«)÷Ú*pÉoz£K´œ»<1«dÖN-ÃË3©Ö@ýµ]ˆjÆV€X-‹”‘4�Y5],(pØ�DÕ#ø|JÒ›åʰÖóŠÏ‡�P:÷“àRuÓžrä”E‚+9¨ÝbYµ ‰n�‹´�‰Óä» —Ròs›O•>neʵjv#¢’4ó®c»õŒë…³‡”IÅ|šºðRýj(k좆æÜ)µú©«_ö&KK¨¸½il;•°¢n±’N®"6¸\<¬c»DÕòÅ2ŸE-…Þ¼îkýÌi;5ñU�²-"¤šS†"Œ+¤Ím´Ð T:Ô¦È9kXB(´—B€öŒ(,úh®êÛîjTó&‘V5½†”•^HÊ16ZdÛz*¬¬H„[O>Y’~aÈ—ŽžÔÂì²àв�êŠ}‹�&g²½�t“P l'öU0s) ªCºpØ*ýC5ò“.Щ^زv›`l™z±/üò%w‘Ù¯¾FÿriÿÒà§KýcˆsV•ú}Åô'Á*êÒq‘»šÅÔ¥#ã§1aü›Î¹÷ëÁEÃ/¡…CT�pabD1ûƒ“ý*؃«ø=¯¬övHƒ‡ÿ'3ìú†;_"`h° Ó?•Ý.Ÿ x4…QiÜVƒ¿-ãoNÆ/F�‹´èflãI˜BÊú-~ÀvÑ£Áâçÿ‡‡ïÆ>§|¾àœÂ⽕rc«Ù\ÉXW ªÛîHê¢XE6]¤‡²ÜFÝ ÷J‘iõ‚©&"9jXäawH ¦Ûˆ/ íT8Ìd´îÏJB"[#Ðs(\¸•EȩɓñÒòêb$‰@À§«¶²ä@u2Mi§£úâW3¸É›†{'!F‹ HbåW6ê* ß<3 þ ®•åkAΠÞqŠclìaàGÜ[ttd&ë©wŸÁ:U�O;M5böƒßÁŸƒ¹VN_r™‚v'¦ÛÙ\<’ÑdEªsž¯w†äI(Ž&|IŠÆJÕúÓ* ‚ñ!0ï<¿ÞO‘“°_Ib—;ªiè—ùAÑ£æÙŽà•rÕOÆ9£ËÅ´vl¿üÖ’¹u¾Ë¶9Ìx°€­Í±$ôCüØŒœmŸŠ�×–Z#‹ã„žPUß á•d„jõbèDÔd$ºúGÊ>4;ÏN OˆŒ(.$–µÍ“Œ»-æ]<�×”œ>¥£4 #ÇêÕ×¶0fÜÌñ8¦]{úi3u†ÔÀ²ž’S¶2aVÚö–sù<‚ \�Ñ‘;2O� ™ÊW(å oÛ¹°C_ÊWÉ”ãdoNYˆl¬÷rèþïƒÑfg¿ð…h( }2PÕ[$ý •©£X0Šu]ëñÚæš,¦¿ª¢½ü¦n•i‘`æÃ�E"Ý<9·w$íØ¡$YÍù:åÐí»·4+ûHœ/s]°úM±7ó}ÔF®ádgMD1lzá‰lú{:â-düNεn);Yj=9¦ƒNÁ‡¸YR(÷§ZHä}/PE1äˆC㔄mYÄfˆ»8FVrÃI “ÌÁhe'+„UØ8 4ÆðÊóI?ºî[�,U&f¤Ù,8qndÜ6ÝœX¡Âa‘‘¢³òšì cœ‡µ¦”ñ0À#=Æ¥¦¦ÐS-QEõó¤o¬B%À ¾øEþÊÆ?ð™^w“Oi",…»If¸TÁr�þRÉí(íòÈ»í4ö^¸,í6· NC›Ý ¶r‡˜ü¥žm‡ùT=Îè>õM:’›ýÀµ ˆÏ&Cp v1Ô–ºÝ{…}‹×aöFBÆÇ'(àµ{¯Àc¿`Ѿ¥«[8MÓÅ©Šß $²%�£ Ê÷ÎCàÊPU¸2. +ëGH'Ü/¿JÀy©~Àºx`\ö¬‘‹š³¦‡ëŸH'íîììP )ŸkæG 6Â?­Mý“àcÒ�pÆa®\ÿ͂ٴۡ8œsÈ3p¡KUž¿4Hõ¨Ó‘% l-ZèRÐ�ŠXX7ư9™ç¹<.Æ­é¼FÚðtFƒÄ¨v�íz=ãF3:Ÿ„Ä©”¬¸ïkcó+ÙS–è;–Ù�.­:¯vH}\pøC¹ˆI¹€Ä”¦½õÕÓ|”.S~f{_ªz¬ »gæÂ½<ÎÉïŽÐ\¼Ïä›y:b^Œ–OJÕLqÃzNz&­…äÂ�ÞÆí��Ó Tu rmK2„Á•—½ó1|átîÅˆÝ ø` ÚF =ëoy›ëzø…WÔ#"κáÞ¢¥‘ñxéÔ*¸Ø»ÃX.î>¾ *Ø¡Da©ÖèÝ Á§ŠùN•¸zÅÃtèÙø‹`OXå_"÷=g¯ÏºgKßiä2RŒ_Ð¥k†I‹;Ë­—Œs ,BYÔWæ2¬Š¸¾_hÿu..H…ðJ¾ÒLvvÎ&{i©7òe…¢†v¡,HëUk²šÌÅZè nª0”€7§Ì,z:mÉ3�pÎ<Ùm}�¨EѨVÈJ©jØ"Mh†Diàè@=ÉÃz�>ÚZ-Ê}Ý©°JÃW"WUŸ•6¤Ø˜Ñrd-ùÊÉCí�÷q¯CaóÌäôìt86> z�ØÑ™ê,ºN`þø 3𕫤W8ÊÔ¤!,ÕŽ+ÿ»Â�òÞ(É£ÑÕâLYJЂþ=p '9E–4ÿƒÄá¢4¨ñ×�Ûï<â•þæeßùÐnžž[¶-6"“Ga‘‹ß,´!ñ4(ç�î‹°VŸÜg·gólظûe#˜�†çò¦ßFtô&ÂÉCí‹_ŽD‚î«~F#‘ì>ÆÓ¥˜«ìb-³…Ê—RvÎýÙæ�HÕB;MX ìfÍ.=@¬©q9Q¦±C†–ebtÔà@ŠR\nPe³WÙAð%Ó·âZ»(ê5áÙ¦@òxÉ%Yn׳è¸]r”®Ph¶5›'wîÄ4(Û>‘ Uj—ö…¾!LuU窻'ÚkÂûŸ†CÉ¡~”�êv­uP àN¶R)–'al §N�„‹^V:tƒ&T# _=�jJ€-#µxÿA:¹q§Ø¬ïÅ ˜üùóÏ-]wj™WԗѾ­ëšñåsB÷1Þ�(,Åà�¬]†¢A*m×{äIKʯN×D49õ[Î¡à€·MÁìóD�¢U’d¹bKE4¯–d÷ª¹ Cs'ÅÇ ¯|�‰Ç’‘H<Â4PäE ¾/w=ó•Ìe*¼K‚ÃG„§Ç 1þá–Ú)HylOX–˜-£ ÝWsÆÏÏí•5ޤ>ø<ôC3 £¾ë‘,ã~ëg=X* Cxk1û¿3Oçà ªŽ,)[�\ã ÷”ÚSÎüÜóˆÝywRð…3ÝŒÙ�õÄÈÐ> €ýž[¿%ǶÀ656ÂÖÒ?¶PY ÖrÚ“/IH6¡n›ú‘ÏÝDN›"ÖG­ �T—6>½”ꚇ—$>þ|wzò± Ñ¡o�Ý‹C ìŸÉû Ã`^¾¢Læ7²cÚ}ÈãÐè�“[‰fôñÛÁ¾ëžú èa#ãÉ/áVØd¡¸¤Ü�êf Ð]»Ç ™ÛÁ  <¥� kØx¿R«üGi—û2Ïc©žÝýÜw[)Îêí¶¦ ¨Œñ'×Å_‘܆7ÒŽwÃ�Ì&ÖVïÒê{2}YKð{W <ÔwÕýßÁNºÏ[üôÓ ì%�ô:ÀÒ§áöÝhØ»0�d —qž�Y;õóv`ïžQ/P�µaž‹ß݉û?üütÇÿá“ð‰‹¢CáÏP>àÀíîÖ: G¬KJl¹\QìZ¬›ÛZÔíò:W†2’„Ëâ0É+’6޶°êŠ,j4J€ç‚û=_Ž’–l0( ÑÌBmOqK@d§Ü òññ ¨»š©°,Çd²<ŠºRmú>yðˆ < õçrÖd“ï•E`”—�i|5óŒ#nù¶šÐh§‡¾ß𵏂˜Óš.>l•·Ž”¡@m«–,Utœr‡fZÂŽzJ)¿%'ÜJ°#$v^8ЃŠa4I`g£¶n³Íjسð€¬Ãg#8ýÏ©9ðcõÅ/‰Ï•`z<…fü�D"ֹΓç�B+ÈÝaS\$ï3˜Ô€KDþ“|›1`b-@ä‘àfÝé�ŠBé�Ž´IËS¶þOU£ �ã9ß ÍWHKˆ ‘Ir'Vw2k{ˆ¥d�›cË’Rô¹¸ÎÛ�Û [òWc‡çRMûÖ*Ðsâý뎯�m…UXmß—ž‡óbXVl§u�(Œ$L-(�ÛP¬ÒÆÃ³h\¾ìлE¹‰œõÀ«Ð £PŒ b’ûÛÛ«û…ón…T²p0>ñ±ü/×ì`V®½àM®[WR˜T.ïÖ‹ššAâ¥�5/ôž¨µüP±8$ˆÏ÷ÇáÃÂÓÉ`Enbƾ9Ï—fúQ$'KB •Ûlr!iYcYÝR rd�2d \ òÝÄûÇ»Á°.Ǥüqa”—…Bdrú:Eé|Ɣ㇆íÃ;†Ýð8}íóý‹µã�#I¿K!¬�%Ï÷g÷Aàný$Jàxikí1¼Va=?ÒÉYF#�.pˆóY 6—š]|ûUÎ,ÖÜúàÜ›+ôÁu�Ÿ|ñ£pèªs„?þ]¸ðÐÃatXŒia KnâZ¿<êH¡ã“øòÔÆ¶±BIu‚¾Á § æHQrš¼x T!Öê4½–\^¦_ã) öâ…é*=äù|ΚÅV çêG˜ïèCœ|OÐj„ –qÍ‘_ÐJ]¬í—ˆÈütÞ$ï?o:yã±ÒK"„- Zü¸õš=“U:Ø£ItØÓ�“Ç’,À T‰wêi5¡†EÊÀE´ˆL²ˆu–jmÆ#l‹fà$ì()‡\(5ÄðLV” B—‰³z=sHJDä©RnÉñå—ÑC­³ŒŸr'g ˆ±¤À;”›Ë­DL _ãú¼˜Iú£E“-Ü�úkn.I±Ç$—àßкëÙ»,Ȫ�ÊÆ,€ ƶڣyYXóO3–^.óX|•«ãa¸Æ-´` º­ ù[âïp¦Ž…àQ ÷1/~ç‹¡´ð5øÚøÚ°ZÓ²øOŽ–Z³¸kk £ dJOøVÒúÔÒ lÓ™aÛöjõ÷C„©œIA£1-JÆ Äa¨Qx&«wŠGJ€ñvÆu‡v?@ f½à3 B!–GG¥§šs½¤�¦ÛúHWÊ#ì~ædÎôÄDÄ�æþÌv�%‘Ñ ²RgÖó¶0–FSm(*´�w_½Šn(@'ö/«…�yõûrÒ;;ð =8WÕ J×i—K®ËtA6XÁãþÄ'™)å°Üsf’1Ÿ+çQ�ÍHF.» ARèÿüŽ1XË6¼Þ�ŸîJ —§akR4Âq•�‡¬Eæ†&‹u–*Å݆;½¯ÉRÏe™àìÑ£Á‘¤¡†9¹’ï.¶V$‹K˜6‘æW~ÓeF À§?�£txø>÷Ã�^yµÑ�S�I_4V›¯ÊRÿBa yº|nšxÇ"ë`eó£½Ã!= ‡ÍÒÌjKÙ«ögç¦weƒv,².UöO£‚åØ v¨"„8¹œÁ‡3Ýr¶1»÷ö�âá퉸õ ö]’³Â{̰�þ—¡wª#ˆAüZ€ÆK¡­–ȕ̀ŸM€—-• A™­ê-ì£ôC!pX ž�ÑY^�õ²œ‹u³¼s³,CcUqbÖŽ'“‰o††cÁÂä‘-Fp Žíý(èvÍ :œuútÊÄÜÏÒ¸ËÙöRdY2S„1ô¾þ°Ô²[ÇÏI � ) )”¬#ð÷­Îa»ÁW*{\[ ,Jm¢`Ñôê$/Ѩ¶]GÈpRȰUWÄ1ª±€Á„±Dƒs2q7QEì‹þCc9 °v§G/ä€gsAš�1ØZqœOâú-\ÓÎø¼,쎽ùð×ïN>¶W„{ϼn¾0ÝN‡¹ßKXÚk2XÅQÐ}5Þ‚CƒHÔòÙ"g¤0îöÛõø‰mM½Ø[«SâªÎÅüºž÷ì#—óÔL)Q¢Q…Á–zØžzïˆYÙuÑ£º§# ‡i„ˆ6¬NÇŽÙ¨]ªu ê× cÂmâ•ï@[Ì·Ùº4}o°Ü.;b”º§·ˆâq“…t?9'âÌ™©�')ŠcA¨ö ‡¡ªØKWz‘¨)¬îqÇ®2˜]æô¨ô‹ÅHØ«!r¥ìùaèûPP.C¦ œÆ-I-—8 ršgœëÍæuNÃéAŽlª¦·«LçXw3%7ÏÇÒŽ«rqÙ8ˉÙУî—í7Án×ЖC’i F‘*H©ÁPžœ Ù‚‰/ÕL&.íÙ¢hˤ¨m•ƒ / áÔØ®f… Àª$‘º(«˜NÊ.u5ÈîøÑq<YDQÌ ‡¸wû#dAâž+—GÝä!È:\ñ@’Â]ïòT.vQ²�ì¸qó° Ú-$„zf·ÐRñ2×Wy¾DRÐk ÊÁAL…¤ n¯›AÖ‚ã¢9”Q@'´3VÝúRà›r ©lÛբ߲+[A¥¶±CgËeEÛmb) ÷.” Qå¥êȾH•Lsbà˜„2î�(J6,wzžø ]µÂ8nrã,+sÖ©ò‚�°Œ…Ѫ%î×Û(|0¬éB›á(Ð=TQÚŠû#{«—Ÿ�¦Æx+4›¾ŽáTTºƒ\cB§b°‘f2í(Ž÷<’gÆ€Ûëãn9¬)ÓCUeÇ‘Äqš„!˜a ¤»/Xk'‚HÇ:Ëéß~}7)ªW¯ƒ¢œ¦–$Ó¼—P: ^|ҧܪ=<�¦‰ÔYã¸çg˜H·‡2¬WÝ^Á¦™þú5#–ë"ó@*ÑÞRÄ…æ`klõ¼f-Áe ÔSa×)Ii�f"þŒ�%¤ &ç±¶0ÞÆ“/†-òO‰[†W± ªZ«äLH´7H0‚+ žNˆ o pÙ3ŽNއɬà@“b…ñ¢Ù@ü3 ˆãOPˆ`꺖êBlÙ`}‘3üÑõ'ûôÓƒv]Bš2ç4à|æ€m®“ ;c4.ØÑ´ß‡î"ß¹•ë5}ãù& ¹ÝKÚ_tX2/Šó¸ %pTñþBg¶c‘½x´îÒÁ´ë}|3\Ü«øV¬58‡Ãܘ{2Å€Å0DÝ+lF&Úf¥BØ€díðî ºÁzÎvvû‡¹F�>¸-O�=À"ÇžÞ°Ò˜ÚiaµÈ²0}9íÃ÷§w¹¦ª®ùÃ:M׃¥§;ÙÄ¡uÎŽù ûM�Á�ñÚFQ�{”.¨—¾,ö2q—�ŽF£­õ;Ÿ×«2ÏT* /ËWé½gØ «hâ¢ÅëåíL<–öT¹)À‰,~Üvdä{ä.: Ð®¿É‘‰QCH[î@3Ô {K^(®Ž>‘DE¨P=¨36õÑô„ÙAõ©i€b¨×ß„7Ã@«Ò=­VÙåã¼q›óý0D“Xæœ Ä�A¾È¢;žt`lâ#¿Y è½lÆþŒÓõÄÇ»-›Ý·�/N:lJ‚â8n-2–,ík7ú°PUº n0J¦¤pØõ:ôg>¤èX²¿Åé#^}ÕÖXE¿OàK�þÎP¦yÜ,•2;cvœáb¾ò:ÄŒé½g¼Ýx‘0ú™ŸS(½Ä=¤Pü·»NvðîŸ=ÿ7v—t%ÿ~ô4¤$z¡¼®W*û1‚ûá‘©=Qrã�ÚT.']üä;ðå>ªl܈;¾çx[½Ï(;�¡8 Tá ÇùõÄ‹¿ky;íûGv8äwªê52$GÕ™Ncli¨·�˜QÜ Ng§·‹«f_/�M�Áܾ€¬ÆÞ2¡'Ñ€»mÅÕqà söëgfüŽ}¥gu à|"'�pþVM=|ÞÆhDYgðná¼4üåÂÂ(/-/À’€É„÷ç¡ÀÆÄäûY€þv¦2铃s—¡µÎ¾úâàõæêª›e=¯àLX@�X¨®À/G+bMOÌ ä¶e& ²(hí‚«Œ&ÞzÞ¾ùgtÁ®Ò› !)@›Í7S¶˜[¾øâ\Èà0EiÚݺñø­DÇ1q{ÚE¡îÙ6¸ê+ÇÅôâîzZ�õĶÞï®­êWÀQf?a;Û·_]��®.Ødház¿çÚB< Gg±ÒŽç‡Ôá ð×Bœ×ð9 {„²L$°Q±Žì¢Üñ%ûÿzø¦›ÞÍ]Ç_ŠÓ³æ’·¶”þÜ»A{˜ø]”¾ â7øë?“W)`ïæ‹DÊ·žøÏVrâ¿3„¿´ óõôüõW¸`�-ZÞ¯—qÜöØ·ý^kÑj EôˆZ€}‰[ ‚{¯ìj*î´Þ,/‡ÐÄÍU©ýÂ{þ‡uòóív0­~Õtœ}iËßSÕ‚å„»õHf ÞN«?•ï¸4зy°í'lÙõú'ñdÎøÛ¥Òf[C�äª%ñN_uznCM@eë(±Ùùbÿ«»Âß �á‚8©t"%Äù]=Bú¾Rêt€ŒÞ‘d ÓßÏlvg€‚&ñÂñfÇÏkµø‰N‡g·±}™Aôå§áŸu^“Z×5¸€Œ9LÐK½ùWðÍ£tÇœ=Nm¹±›ÎÄ“Ô~Òô›`OdAÉŒ _ø¹OÉ^èdkaà¦lÁB­6ñm(ÿÂþÞ˜:ÂÑÃÍ3Ê ’­�¾"]I»Ø¨”ªÅ‚MCBpú™Ò¨åÊ•±˜M£ ]nŽK{˜d]‘­±®²�² PRÅM"#� ‡q¼ÒSÍs9: šÑ¿PŽ‹ˆ–6ó zaPó£K-0ÍBKVI�‡ckêk—È-T·mt»NÁi�ÿÚ¡¬ñaDŠ=pOdJE YŽÍs†jèBEÌH¦ž*ÿÒƒ{À> ¶Ðí±¼—ul‘Ç—Ó{,.¦¡œ^c5Õ•Ia÷ÄÉ%@ã9¶óŒC‡Å`‰Rb¥|°ÒR §¤#Ъdzl�ôªUy@j‡1¶Sªv¾¿ÜÅ“j˜2iS²\«à» Ù”Wp’Æ&ûŸŽ&·wW0IØib�—kt&Æ�„JBa"_Ü�ošr{uÖ¹âÇO¿ïeÕA›†ŠRã,3.›ÅØô_µ L’Ö²óqZŠ4W0´ÌaŽDB‰­aŸ •¸‡GÚu�W*¶}¹�ÎÝÑ[üéšÏ —cPãÀØ·~Út°Ÿ?Ø‹S á�bÈα%IöÕ˜¬ gã­%¨PÕÁÃüÏIÈ‘ñ“+ Ö {쎿^–šåÖi”;š4Ã&þ\Æ��¤ÿý`ýï–¸¢"o8½�©ñ‹¾Xϯn»Ô…µ/#œhíã®å‡Á¿ÅóœÎ6 b/.��ˆƒ!Å­¦— $×8vf*Å‚âDñ“°�·¯R#�[Ç!íà#»=ÈX"}a¸q~Ñ•¦¢1Å–ГmGG¤V×õ¸õˆm·Á�™P©¥L(˜nûµjFJ£4ܰÐùçí¤?Èy¤l�ÐG�üžf¼+h‰žnÌ�Êä~Ó[ÂÅpVV7ö´á|ggŽ$ÝKb9=„_²êaRƒC*ø¨S…â±úë¾¢ š‡½À˜yÆ}§©ý£œô~Ï˯Ȇ/¼š�ÆgÔôP­6)ik¹ÖºçÆÓtVýfÜpˆŒaj˜ÜN‚mF¨íŽjãã5‡:…ã>†Dˆ³ ”iØî èÏ¢jïL´/_”›Ån±¡b¬V0¯ÒôK�×–rv�r—7‚Á1D1"î"Ï“- Á.¼Ñûq§áºG]×Ì”Íp! äKf×[Ã.¢z.300¸W‰¦pþ o¹‘iŽC5 þmÈEˆÔ*…Õ0+²»_qŒdÿ¨ø,šRŒ "†@$ç6œèö~ÒJ@“CÍþj͘¢,s6)ß2LkƒáQÒa"ÌxàŽÎ;Ží«‰„°¬B•ì‡Ö, àRËÅZt†F¦åÔe�–y²d˜e–O´Ç Ô6à ýªºY>vBQ¯BŽ€¨lƒU§FråŸ^ä$ê©"Ô¦©ÄÄŠ5è;Aª¨g{]#HšBÀÁ�*–òmÜÈ.ú�L?«ˆE8’Ù ˜p;ó¿s•ýp-ÿ×·õyþ�oÓžÉ$[B= Ã=y~iu-ò Ÿæ¡L…ãÃi`¸r(e¬HI±|ÍRšC(@á]V…Kø…1¦8Õ÷jŠås¢¥°x­ôeÍ*a“Z1´O(BÔÖRPâ"�–Ëiæÿ[”ÖËÆ–¿”©9R÷ER!¡�Óò‹l‚ÖlŠ!w³Bô¯¦; /ÁTסÿï÷9 HH+i°|ždôÚ O6r-ì‡=_¶wnÐÃtÄè±�sIż)šAÖ,cº»²õ›Ž÷’LðÚè„oÙ4Ô m B¥âÕRÛÂê°Ñ:¹`šl„×:P›?~‚9@0r:¾¿vœÿTn«Œ§lV„‡wv1®/e�]Pã¹ÄêøÓHâÚÝ ±*juš‹X¢„eÍ™&U© …yo»X#³ÕJ™ÑB�Ó@å¢ûMï¥éƒØT˜ß=ÅwQ$”·›6Íé›^º°ð{éy Zåâ "ò¶U%�ìôaËBð¿4{ÆŒUÕ=â—Aõ;‘*˜B[™‚á·¦ALsÚU|bAäÓ 1¿Œ PdÐmÌ’Cü-èšê¸Öž×1z›;aœgÈtë²[«­…¶/à$\g1,�®p§øn�Ж(ãª[ºƒC î¸‚”B…ƒétõWŽÏ­ŒÌD[BSÈ}˜ �N*}\ÞWüÏ7ë\6X–˜?Ÿg\=M nT`ZK¢„¯Àgƒ�‡¡ÓxÑ¢·1­™!ÞÐdËrÏ-÷ÜzãW†aù§[ï¸G|Ç­7Ý8ÄMHÿ}'PÑÛ,…FýÌök¨±§94:¦«í4\­"�=nõ%O"2óp…ýåy&ØÀÀt»˜r“n»Í-‰À-+?†óÁ¾U›]V“{ƒ§ ¯:ò„QæÀ®Ôj%ÀîÒÏM­Õ¹îT�oÚ�ãÈzuuëˆ}Ï…)e�µ'KŽ3Ñ»wgÙŸ?Ú°ž{;²´”@ ¥°ØxÇ)4Çö3„â¸Æ.¢€ >Ö°‡û§�î"©¤ùù&õל þ½ ^< Ÿyôΰȃ!öCnd7 -æ‹pªE}pî¼W@1¦06fBî²îö¼Nt·7Ë{´^<<ç7yQóDñ9}áÉŸE†Fý2!¶]Í£ ¢J4êcÕ»§Âfj3*°ÀŠœ,�Åï«5Êmã�h£É +I»v,"ܹd(BÈœ#ÒI­Î­è]»]¹¨²6éÚÞN´ -Rá¦�›:|Öa³Î[öÇ�œŠ&kJ`yÛ™•Œ½¼É!‡f”rAZR\;ŽÐ CHL�—ÆLÀ„¼¿kû)§Iß²âûó$‰æbÓ´lÇ%´pü˦҄„8¥åC‚⪓;VUR•�X 85‘Á°Ör‡'¿Æí…]¿#K ?6=lén>´$)ºŠ*ñ >˜}ÚÈö‹P†r­ºQ"ˆ“c�µÊ˜G+<^`ÃLó-)ÐÒY »– VL'$ NÕTä ¥³4Þ�Øö�Äùi•x3"ÀÓ®@&¶ €@ÔÝ—˜?ÑÌ3ÉX¤VvŒ©p"ÉBK�ŽjÂb†aÀ0Íœs’V•%½N×°bR±MVfd€JÜŸ;j›K…T- ,'D‚ÿN†îÛUžK 0ßX¾y<FŸèæôÍÙu€ß‘ÙIÒ"ðµúúr‹Hçö‘¿xM¿Ïï]¦õlO�®Bûz›Èë¾;ø…ðþ->ã8�u#ÃQï(Ývé^Õ7œzv¬.ËèØ/Y8±Î,’Ø@yì7uÑÝ_ÿ="áeŠ.¡‘¬à# =@Þ à³g¿‚;/ç›Kâø~¹gö¸øÊÍ� ]1M�ª@ƒ@pºîôˆ›ÊËŒªãºÍ•“ˆªvÕêWþnD±ÛîùRusý mº³¶É]뒵ܒŠ éÏáÕÂÉÌ…(­÷†úì=ôZe)U9¬XïÀÚ«×z ¾¥‚SgH@Á$âære¥À¯�‘Ç…¼ÜДÚV�qŒ®F` ÏâÕ” ‚j¬mŽd´~&ŒŒVzšÁ˺…@ÅÄè”*­÷úr2ö¦Û qòPÕ$OÑuJ�¤²ßÑH’æÍU,žeëJ˜ì]Ç ªIP˜y߬G•]ã†X2Ÿ š5©æ ¨Cs@\fT:ÅaxƒA_ôŠAÉ{¥•o)%�8ÈL¶VŽXšØOA�2Ju¿¢PTõ n¼S¦«ûÌ©éOb*Ãé½ZhöÆs©L±ÿœpy¢Éã-?ÀÉ̾‘¾D•¦yYáÐ¥F•Z…"m-B´Tå§PTMÆ ‡Oje`, íõî ÊMÙâ–‘e€•”Fg™xLÌýâ–Z¹·‘ŽªÆë„+¾-ÈÌs‹–�9ÑxJ•c‚ÙÐY+‹ÐâRµÌ`zßС*&¡3%Gi CZU2ÄN¥UÛ ùÍhჰìwÙ{©¤L @*i €�0Sç?xCÀ•YF  r­HjúGÛf:84°x²dIƒ�%0^a§ÏC�åÑTÑ•¥“ÇÓb`eÂŒfŒ5â(I¢„ÆÊ7#…ôÆØ"ñä™h� ;¾‹!9�Æ©“F�@•q@®ÐP0åGÄf'„ÆgŒÆ’Ƹ"!!¥"ÿÄ °ûÞÎ/Ï©X—·â³Q"�²×Òï-&1ŸÊ5 ýÂB{š1–¼MŒ³÷v§£ �ž˜”.‰>‘pÁX{1¥‚¤&#z„“51Mú@ÚÄ‹w>cdýóÞ�ßY3cÁZæ±|Úæ‰¥fØh·ÓÉ'C‚yz‡±$’NCO …¢èÓa³%«¯Àð †o&±ëT¼³ïÂL’ÇØÔÍd²/üÎBX¸â°9XF Þ2#†½ñ¦@'„ŒGw%2(‚v²Gåã Á¢‰?Óˆ.Ög¤…&9–DJŽ“Æ”J‚ë[gð=»2À.Z…&Ó�0ÃIë¸RšÉÍ[*³4ku—;j÷Ü÷ÀCÚà§«óÝg3xä±9žZï”Ó¼}äc؉ìxÏšÂÜ3ð °öÞð9˜xií'/°W¤(™¢½#Kc²Åž&η[d‰¥)†ÅÂBôàù¡,3ÖryVȵÏJgŒóÉxLTf’Dù üd•É’$3ûàŠ)™unev« D'ä#NgçÝìÈC"6â î;ÆúÏ®•BEеV¢�Rm•i§\{:H験κèªR7®é÷§Q鮇j5jÕé©<^ôÖ+|öŽ#àd¿;JpÑ �È0�œuN6Ž©‚…¨×༠j]tLµn¢!㫟þàŒ¥T± åÖX�@ƒ˜ê ‹ëN‘-x>ûâŠ#MsP(f‚aˆ!a�¢ºt‹‰ëÑ«OB’Já~Ö¡W§.}¡rS¹û²”Õ%žÂ8Ï㈚¶@ìÃÝyUæè9'vxÎ\ü›O¿'µIÕñw¬u‡ˆ&ÎÏ~ÕWé·PÌ+Ác³8ÎRAõÇÓ-²_õ©u).©`¤rút¾@ôQ{qq §¼ †N…ͯŽè"@PQÔD” ˆÈP$îR$ÖDD "œJ€î$ " €~I ˆ€€€�ÏÄ9LÄÇ`<«»ÌEóø(`—»Kî°ȟÓxä?ÝgÆ÷R~rbRH/{ê©-+ìü”ÀùpȤü§°¿ûÐw…/ÜoþÜÁ’=±hïZÁ²/a�=<¼['RXù±ŽÃÊÏ6ì—y.ÕªßðcR–ø51>o°Ð¼{P°1å»"/Þèr�#!Ñ.e¼ƒ®‰•¥³EbKó1‰‘9©žBüéˆ.ÊÆà`/ ®,ä½á5¼±€à )ZP<ûpython-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/fonts/OFL-Alef.txt000066400000000000000000000106461524561404200311240ustar00rootroot00000000000000Copyright (c) 2012, HaGilda & Mushon Zer-Aviv (), with Reserved Font Name Alef. This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL ----------------------------------------------------------- SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ----------------------------------------------------------- PREAMBLE The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. DEFINITIONS "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. "Reserved Font Name" refers to any names specified as such after the copyright statement(s). "Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). "Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. "Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. PERMISSION & CONDITIONS Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. TERMINATION This license becomes null and void if any of the above conditions are not met. DISCLAIMER THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/fonts/OFL-Geist.txt000066400000000000000000000104431524561404200313230ustar00rootroot00000000000000Copyright 2024 The Geist Project Authors (https://github.com/vercel/geist-font.git) This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: https://openfontlicense.org ----------------------------------------------------------- SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ----------------------------------------------------------- PREAMBLE The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. DEFINITIONS "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. "Reserved Font Name" refers to any names specified as such after the copyright statement(s). "Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). "Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. "Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. PERMISSION & CONDITIONS Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. TERMINATION This license becomes null and void if any of the above conditions are not met. DISCLAIMER THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/img/000077500000000000000000000000001524561404200265125ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/img/Coloured-Dark.svg000066400000000000000000000210251524561404200316660ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/img/Coloured-Light.svg000066400000000000000000000207711524561404200320630ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/img/Green.svg000066400000000000000000000020051524561404200302700ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/img/alerts.svg000066400000000000000000000022101524561404200305200ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/img/cache.svg000066400000000000000000000015731524561404200303040ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/img/community.svg000066400000000000000000000016231524561404200312610ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/img/headers.svg000066400000000000000000000005751524561404200306550ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/img/history.svg000066400000000000000000000012351524561404200307350ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/img/profiling.svg000066400000000000000000000010771524561404200312310ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/img/redirects.svg000066400000000000000000000007521524561404200312230ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/img/request.svg000066400000000000000000000012411524561404200307210ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/img/settings.svg000066400000000000000000000005351524561404200310760ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/img/signals.svg000066400000000000000000000020461524561404200306750ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/img/sql.svg000066400000000000000000000013221524561404200300300ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/img/staticfiles.svg000066400000000000000000000016771524561404200315600ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/img/tasks.svg000066400000000000000000000004471524561404200303650ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/img/templates.svg000066400000000000000000000016661524561404200312420ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/img/timer.svg000066400000000000000000000011161524561404200303520ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/img/versions.svg000066400000000000000000000007701524561404200311070ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/js/000077500000000000000000000000001524561404200263525ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/js/history.js000066400000000000000000000073551524561404200304230ustar00rootroot00000000000000import { $$, ajaxForm, getDebugElement, replaceToolbarState } from "./utils.js"; const djDebug = getDebugElement(); function difference(setA, setB) { const _difference = new Set(setA); for (const elem of setB) { _difference.delete(elem); } return _difference; } /** * Create an array of dataset properties from a NodeList. */ function pluckData(nodes, key) { return [...nodes].map((obj) => obj.dataset[key]); } function refreshHistory() { const formTarget = djDebug.querySelector(".refreshHistory"); const container = djDebug.querySelector("#djdtHistoryRequests"); const oldIds = new Set( pluckData( container.querySelectorAll("tr[data-request-id]"), "requestId" ) ); ajaxForm(formTarget) .then((data) => { // Remove existing rows first then re-populate with new data for (const node of container.querySelectorAll( "tr[data-request-id]" )) { node.remove(); } for (const request of data.requests) { container.innerHTML = request.content + container.innerHTML; } }) .then(() => { const allIds = new Set( pluckData( container.querySelectorAll("tr[data-request-id]"), "requestId" ) ); const newIds = difference(allIds, oldIds); const lastRequestId = newIds.values().next().value; return { allIds, newIds, lastRequestId, }; }) .then((refreshInfo) => { const newCount = refreshInfo.newIds.size; const status = djDebug.querySelector("#djdtStatus"); if (status) { status.textContent = newCount ? `${newCount} new request${ newCount === 1 ? "" : "s" } added to history` : "History up to date"; } for (const newId of refreshInfo.newIds) { const row = container.querySelector( `tr[data-request-id="${newId}"]` ); row.classList.add("flash-new"); } setTimeout(() => { for (const row of container.querySelectorAll( "tr[data-request-id]" )) { row.classList.remove("flash-new"); } }, 2000); }); } function switchHistory(newRequestId) { const formTarget = djDebug.querySelector( `.switchHistory[data-request-id='${newRequestId}']` ); const tbody = formTarget.closest("tbody"); const highlighted = tbody.querySelector(".djdt-highlighted"); if (highlighted) { highlighted.classList.remove("djdt-highlighted"); } formTarget.closest("tr").classList.add("djdt-highlighted"); ajaxForm(formTarget).then((data) => { if (Object.keys(data).length === 0) { const container = djDebug.querySelector("#djdtHistoryRequests"); container.querySelector( `button[data-request-id="${newRequestId}"]` ).innerHTML = "Switch [EXPIRED]"; } replaceToolbarState(newRequestId, data); }); } $$.on(djDebug, "click", ".switchHistory", function (event) { event.preventDefault(); switchHistory(this.dataset.requestId); }); $$.on(djDebug, "click", ".refreshHistory", (event) => { event.preventDefault(); refreshHistory(); }); // We don't refresh the whole toolbar each fetch or ajax request, // so we need to refresh the history when we open the panel $$.onPanelRender(djDebug, "HistoryPanel", refreshHistory); python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/js/redirect.js000066400000000000000000000000601524561404200305050ustar00rootroot00000000000000document.getElementById("redirect_to").focus(); python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/js/timer.js000066400000000000000000000065471524561404200300440ustar00rootroot00000000000000import { $$, getDebugElement } from "./utils.js"; const djDebug = getDebugElement(); function insertBrowserTiming() { const timingOffset = performance.timing.navigationStart; const timingEnd = performance.timing.loadEventEnd; const totalTime = timingEnd - timingOffset; function getLeft(stat) { if (totalTime !== 0) { return ( ((performance.timing[stat] - timingOffset) / totalTime) * 100.0 ); } return 0; } function getCSSWidth(stat, endStat) { let width = 0; if (totalTime !== 0) { width = ((performance.timing[endStat] - performance.timing[stat]) / totalTime) * 100.0; } const denominator = 100.0 - getLeft(stat); if (denominator !== 0) { // Calculate relative percent (same as sql panel logic) width = (100.0 * width) / denominator; } else { width = 0; } return width < 1 ? "2px" : `${width}%`; } function addRow(tbody, stat, endStat) { const row = document.createElement("tr"); const elapsed = performance.timing[stat] - timingOffset; if (endStat) { const duration = performance.timing[endStat] - performance.timing[stat]; // Render a start through end bar row.innerHTML = ` ${stat.replace("Start", "")} ${elapsed}ms (+${duration}ms) `; row.querySelector("rect").setAttribute( "width", getCSSWidth(stat, endStat) ); } else { // Render a point in time row.innerHTML = ` ${stat} ${elapsed}ms `; row.querySelector("rect").setAttribute("width", 2); } row.querySelector("rect").setAttribute("x", getLeft(stat)); tbody.appendChild(row); } const browserTiming = djDebug.querySelector("#djDebugBrowserTiming"); // Determine if the browser timing section has already been rendered. if (browserTiming.classList.contains("djdt-hidden")) { const tbody = djDebug.querySelector("#djDebugBrowserTimingTableBody"); // This is a reasonably complete and ordered set of timing periods (2 params) and events (1 param) addRow(tbody, "domainLookupStart", "domainLookupEnd"); addRow(tbody, "connectStart", "connectEnd"); addRow(tbody, "requestStart", "responseEnd"); // There is no requestEnd addRow(tbody, "responseStart", "responseEnd"); addRow(tbody, "domLoading", "domComplete"); // Spans the events below addRow(tbody, "domInteractive"); addRow(tbody, "domContentLoadedEventStart", "domContentLoadedEventEnd"); addRow(tbody, "loadEventStart", "loadEventEnd"); browserTiming.classList.remove("djdt-hidden"); } } // Insert the browser timing now since it's possible for this // script to miss the initial panel load event. insertBrowserTiming(); $$.onPanelRender(djDebug, "TimerPanel", insertBrowserTiming); python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/js/toolbar.js000066400000000000000000000351531524561404200303610ustar00rootroot00000000000000import { $$, ajax, debounce, getDebugElement, replaceToolbarState, } from "./utils.js"; function onKeyDown(event) { if (event.keyCode === 27) { djdt.hideOneLevel(); } } const djdt = { handleDragged: false, needUpdateOnFetch: false, init() { const djDebug = getDebugElement(); djdt.needUpdateOnFetch = djDebug.dataset.updateOnFetch === "True"; $$.on(djDebug, "click", "#djDebugPanelList li a", function (event) { if (this.getAttribute("href") !== "#") { return; } event.preventDefault(); if (!this.className) { return; } const panelId = this.className; const current = djDebug.querySelector(`#${panelId}`); if ($$.visible(current)) { djdt.hidePanels(); } else { djdt.hidePanels(); $$.show(current); this.parentElement.classList.add("djdt-active"); this.setAttribute("aria-expanded", "true"); const inner = current.querySelector( ".djDebugPanelContent .djdt-scroll" ); const requestId = djDebug.dataset.requestId; if (requestId && inner.children.length === 0) { const url = new URL( djDebug.dataset.renderPanelUrl, globalThis.location ); url.searchParams.append("request_id", requestId); url.searchParams.append("panel_id", panelId); ajax(url).then((data) => { inner.previousElementSibling.remove(); // Remove AJAX loader inner.innerHTML = data.content; $$.executeScripts(data.scripts); $$.applyStyles(inner); djDebug.dispatchEvent( new CustomEvent("djdt.panel.render", { detail: { panelId: panelId }, }) ); }); } else { djDebug.dispatchEvent( new CustomEvent("djdt.panel.render", { detail: { panelId: panelId }, }) ); } } }); $$.on(djDebug, "click", ".djDebugClose", () => { djdt.hideOneLevel(); }); $$.on( djDebug, "click", ".djDebugPanelButton input[type=checkbox]", function () { djdt.cookie.set( this.dataset.cookie, this.checked ? "on" : "off", { path: "/", expires: 10, } ); } ); // Used by the SQL and template panels $$.on(djDebug, "click", ".remoteCall", function (event) { event.preventDefault(); let url; const ajaxData = {}; if (this.tagName === "BUTTON") { const form = this.closest("form"); url = this.formAction; ajaxData.method = form.method.toUpperCase(); ajaxData.body = new FormData(form); } else if (this.tagName === "A") { url = this.href; } ajax(url, ajaxData).then((data) => { const win = djDebug.querySelector("#djDebugWindow"); win.innerHTML = data.content; $$.show(win); }); }); // Used by the cache, profiling and SQL panels $$.on(djDebug, "click", ".djToggleSwitch", function () { const id = this.dataset.toggleId; const toggleOpen = "+"; const toggleClose = "-"; const openMe = this.textContent === toggleOpen; const name = this.dataset.toggleName; const container = djDebug.querySelector(`#${name}_${id}`); for (const el of container.querySelectorAll(".djDebugCollapsed")) { $$.toggle(el, openMe); } for (const el of container.querySelectorAll( ".djDebugUncollapsed" )) { $$.toggle(el, !openMe); } for (const el of this.closest( ".djDebugPanelContent" ).querySelectorAll(`.djToggleDetails_${id}`)) { if (openMe) { el.classList.add("djSelected"); el.classList.remove("djUnselected"); this.textContent = toggleClose; } else { el.classList.remove("djSelected"); el.classList.add("djUnselected"); this.textContent = toggleOpen; } const switch_ = el.querySelector(".djToggleSwitch"); if (switch_) { switch_.textContent = this.textContent; } } }); $$.on(djDebug, "click", "#djHideToolBarButton", (event) => { event.preventDefault(); djdt.hideToolbar(); }); $$.on(djDebug, "click", "#djShowToolBarButton", () => { if (!djdt.handleDragged) { djdt.showToolbar(); } }); let startPageY; let baseY; const handle = djDebug.querySelector("#djDebugToolbarHandle"); function onHandleMove(event) { // Chrome can send spurious mousemove events, so don't do anything unless the // cursor really moved. Otherwise, it will be impossible to expand the toolbar // due to djdt.handleDragged being set to true. if (djdt.handleDragged || event.pageY !== startPageY) { let top = baseY + event.pageY; if (top < 0) { top = 0; } else if (top + handle.offsetHeight > globalThis.innerHeight) { top = globalThis.innerHeight - handle.offsetHeight; } handle.style.top = `${top}px`; djdt.handleDragged = true; } } $$.on(djDebug, "mousedown", "#djShowToolBarButton", (event) => { event.preventDefault(); startPageY = event.pageY; baseY = handle.offsetTop - startPageY; document.addEventListener("mousemove", onHandleMove); document.addEventListener( "mouseup", (event) => { document.removeEventListener("mousemove", onHandleMove); if (djdt.handleDragged) { event.preventDefault(); localStorage.setItem("djdt.top", handle.offsetTop); requestAnimationFrame(() => { djdt.handleDragged = false; }); djdt.ensureHandleVisibility(); } }, { once: true } ); }); // Make sure the debug element is rendered at least once. // showToolbar will continue to show it in the future if the // entire DOM is reloaded. $$.show(djDebug); const show = localStorage.getItem("djdt.show") || djDebug.dataset.defaultShow; if (show === "true") { djdt.showToolbar(); } else { djdt.hideToolbar(); } if (djDebug.dataset.sidebarUrl !== undefined) { djdt.updateOnAjax(); } const prefersDark = globalThis.matchMedia( "(prefers-color-scheme: dark)" ).matches; const themeList = prefersDark ? ["auto", "light", "dark"] : ["auto", "dark", "light"]; function setTheme(theme) { djDebug.setAttribute( "data-theme", theme === "auto" ? (prefersDark ? "dark" : "light") : theme ); djDebug.setAttribute("data-user-theme", theme); } // Updates the theme using user settings let userTheme = localStorage.getItem("djdt.user-theme") || "auto"; setTheme(userTheme); // Adds the listener to the Theme Toggle Button $$.on(djDebug, "click", "#djToggleThemeButton", () => { const index = themeList.indexOf(userTheme); userTheme = themeList[(index + 1) % themeList.length]; localStorage.setItem("djdt.user-theme", userTheme); setTheme(userTheme); }); }, hidePanels() { const djDebug = getDebugElement(); $$.hide(djDebug.querySelector("#djDebugWindow")); for (const el of djDebug.querySelectorAll(".djdt-panelContent")) { $$.hide(el); } for (const el of djDebug.querySelectorAll("#djDebugToolbar li")) { el.classList.remove("djdt-active"); } for (const link of djDebug.querySelectorAll( "#djDebugPanelList a[aria-controls]" )) { link.setAttribute("aria-expanded", "false"); } }, ensureHandleVisibility() { const djDebug = getDebugElement(); const handle = djDebug.querySelector("#djDebugToolbarHandle"); // set handle position const handleTop = Math.min( localStorage.getItem("djdt.top") || 265, globalThis.innerHeight - handle.offsetWidth ); handle.style.top = `${handleTop}px`; }, hideToolbar() { const djDebug = getDebugElement(); djdt.hidePanels(); $$.hide(djDebug.querySelector("#djDebugToolbar")); const handle = djDebug.querySelector("#djDebugToolbarHandle"); $$.show(handle); djdt.ensureHandleVisibility(); globalThis.addEventListener("resize", djdt.ensureHandleVisibility); document.removeEventListener("keydown", onKeyDown); localStorage.setItem("djdt.show", "false"); }, hideOneLevel() { const djDebug = getDebugElement(); const win = djDebug.querySelector("#djDebugWindow"); if ($$.visible(win)) { $$.hide(win); } else { const toolbar = djDebug.querySelector("#djDebugToolbar"); if (toolbar.querySelector("li.djdt-active")) { djdt.hidePanels(); } else { djdt.hideToolbar(); } } }, showToolbar() { const djDebug = getDebugElement(); document.addEventListener("keydown", onKeyDown); $$.show(djDebug); $$.hide(djDebug.querySelector("#djDebugToolbarHandle")); $$.show(djDebug.querySelector("#djDebugToolbar")); localStorage.setItem("djdt.show", "true"); globalThis.removeEventListener("resize", djdt.ensureHandleVisibility); }, updateOnAjax() { const handleAjaxResponse = debounce(async (requestId) => { const sidebarUrl = getDebugElement().dataset.sidebarUrl; const encodedRequestId = encodeURIComponent(requestId); const dest = `${sidebarUrl}?request_id=${encodedRequestId}`; if (djdt.needUpdateOnFetch) { try { const data = await ajax(dest); replaceToolbarState(encodedRequestId, data); } catch (error) { console.error( `"${error.name}" occurred within django-debug-toolbar: ${error.message}`, error ); } } }, 200); // Patch XHR / traditional AJAX requests const origOpen = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function (...args) { this.addEventListener("load", function () { // Chromium emits a "Refused to get unsafe header" uncatchable warning // when the header can't be fetched. While it doesn't impede execution // it's worrisome to developers. if ( this.getAllResponseHeaders().indexOf("djdt-request-id") >= 0 ) { handleAjaxResponse( this.getResponseHeader("djdt-request-id") ); } }); origOpen.apply(this, args); }; const origFetch = globalThis.fetch; globalThis.fetch = function (...args) { // Heads up! Before modifying this code, please be aware of the // possible unhandled errors that might arise from changing this. // For details, see // https://github.com/django-commons/django-debug-toolbar/pull/2100 const promise = origFetch.apply(this, args); return promise.then((response) => { if (response.headers.get("djdt-request-id") !== null) { handleAjaxResponse(response.headers.get("djdt-request-id")); } return response; }); }; }, cookie: { get(key) { if (!document.cookie.includes(key)) { return null; } const cookieArray = document.cookie.split("; "); const cookies = {}; for (const e of cookieArray) { const parts = e.split("="); cookies[parts[0]] = parts[1]; } return cookies[key]; }, set(key, value, options = {}) { if (typeof options.expires === "number") { const days = options.expires; const expires = new Date(); expires.setDate(expires.getDate() + days); options.expires = expires; } document.cookie = [ `${encodeURIComponent(key)}=${String(value)}`, options.expires ? `; expires=${options.expires.toUTCString()}` : "", options.path ? `; path=${options.path}` : "", options.domain ? `; domain=${options.domain}` : "", options.secure ? "; secure" : "", "samesite" in options ? `; samesite=${options.samesite}` : "; samesite=lax", ].join(""); return value; }, }, }; globalThis.djdt = { show_toolbar: djdt.showToolbar, hide_toolbar: djdt.hideToolbar, init: djdt.init, close: djdt.hideOneLevel, cookie: djdt.cookie, }; if (document.readyState !== "loading") { djdt.init(); } else { document.addEventListener("DOMContentLoaded", djdt.init); } python-django-debug-toolbar-8.0.0/debug_toolbar/static/debug_toolbar/js/utils.js000066400000000000000000000116611524561404200300550ustar00rootroot00000000000000export const $$ = { on(root, eventName, selector, fn) { root.removeEventListener(eventName, fn); root.addEventListener(eventName, (event) => { const target = event.target.closest(selector); if (root.contains(target)) { fn.call(target, event); } }); }, /** * This is a helper function to attach a handler for a `djdt.panel.render` * event of a specific panel. * * root: The container element that the listener should be attached to. * panelId: The Id of the panel. * fn: A function to execute when the event is triggered. */ onPanelRender(root, panelId, fn) { root.addEventListener("djdt.panel.render", (event) => { if (event.detail.panelId === panelId) { fn.call(event); } }); }, show(element) { element.classList.remove("djdt-hidden"); }, hide(element) { element.classList.add("djdt-hidden"); }, toggle(element, value) { if (value) { $$.show(element); } else { $$.hide(element); } }, visible(element) { return !element.classList.contains("djdt-hidden"); }, executeScripts(scripts) { for (const script of scripts) { const el = document.createElement("script"); el.type = "module"; el.src = script; el.async = true; document.head.appendChild(el); } }, /** * Given a container element, apply styles set via data-djdt-styles attribute. * The format is data-djdt-styles="styleName1:value;styleName2:value2" * The style names should use the CSSStyleDeclaration camel cased names. */ applyStyles(container) { for (const element of container.querySelectorAll( "[data-djdt-styles]" )) { const styles = element.dataset.djdtStyles || ""; for (const styleText of styles.split(";")) { const styleKeyPair = styleText.split(":"); if (styleKeyPair.length === 2) { const name = styleKeyPair[0].trim(); const value = styleKeyPair[1].trim(); element.style[name] = value; } } } }, }; /** * Fetch the debug element from the DOM. * * This is used to avoid writing the element's id everywhere the element * is being selected. A fixed reference to the element should be avoided * because the entire DOM could be reloaded such as via HTMX boosting. */ export function getDebugElement() { let root = document.getElementById("djDebugRoot"); if (root.shadowRoot) { root = root.shadowRoot; } return root.querySelector("#djDebug"); } export async function ajax(url, init) { try { const response = await fetch(url, { credentials: "same-origin", ...init, }); if (response.ok) { try { return response.json(); } catch (error) { throw new Error( `The response is a invalid Json object : ${error}` ); } } throw new Error(`${response.status}: ${response.statusText}`); } catch (error) { const win = getDebugElement().querySelector("#djDebugWindow"); win.innerHTML = `

${error.message}

`; $$.show(win); throw error; } } export function ajaxForm(element) { const form = element.closest("form"); const url = new URL(form.action); const formData = new FormData(form); for (const [name, value] of formData.entries()) { url.searchParams.append(name, value); } const ajaxData = { method: form.method.toUpperCase(), }; return ajax(url, ajaxData); } export function replaceToolbarState(newRequestId, data) { const djDebug = getDebugElement(); djDebug.setAttribute("data-request-id", newRequestId); // Check if response is empty, it could be due to an expired requestId. for (const panelId of Object.keys(data)) { const panel = djDebug.querySelector(`#${panelId}`); if (panel) { panel.outerHTML = data[panelId].content; djDebug.querySelector(`#djdt-${panelId}`).outerHTML = data[panelId].button; } } } /** * Return function that delays invoking `func` until after `timeout` elapsed. * * Previous calls will be dismissed if the timeout hasn't elapsed. * * @param {Function} func - Function to be executed. * @param {number} timeout - Time to wait before executing function in milliseconds. * @returns {Function} - Debounced function. */ export function debounce(func, timeout) { let timer; return (...args) => { clearTimeout(timer); timer = setTimeout(() => func(...args), timeout); }; } python-django-debug-toolbar-8.0.0/debug_toolbar/store.py000066400000000000000000000345361524561404200233600ustar00rootroot00000000000000import base64 import contextlib import functools import json from collections import defaultdict, deque from collections.abc import Iterable from typing import Any from django.core.cache import caches from django.core.exceptions import ImproperlyConfigured from django.core.serializers.json import DjangoJSONEncoder from django.db import transaction from django.utils.module_loading import import_string from debug_toolbar import settings as dt_settings from debug_toolbar.models import HistoryEntry from debug_toolbar.sanitize import force_str BINARY_SENTINEL = "__djdt_binary__" POSTGIS_SENTINEL = "__djdt_postgis__" class DebugToolbarJSONEncoder(DjangoJSONEncoder): def default(self, o): # Handle binary data (e.g., GeoDjango EWKB geometry data) if isinstance(o, (bytes, bytearray)): return {BINARY_SENTINEL: base64.b64encode(o).decode("ascii")} try: return super().default(o) except (TypeError, ValueError): return force_str(o) def _binary_object_hook(obj): if BINARY_SENTINEL in obj: return base64.b64decode(obj[BINARY_SENTINEL]) if POSTGIS_SENTINEL in obj: ewkb = base64.b64decode(obj[POSTGIS_SENTINEL]) try: from django.contrib.gis.db.backends.postgis.adapter import PostGISAdapter adapter = PostGISAdapter.__new__(PostGISAdapter) adapter.is_geometry = obj.get("is_geometry", True) adapter.ewkb = ewkb adapter.geography = obj.get("geography", False) return adapter except (ImportError, ImproperlyConfigured): return ewkb return obj class DebugToolbarJSONDecoder(json.JSONDecoder): """Custom JSON decoder that reconstructs binary data during parsing.""" def __init__(self, *args, **kwargs): # Set object_hook if not already provided if "object_hook" not in kwargs: kwargs["object_hook"] = _binary_object_hook super().__init__(*args, **kwargs) def serialize(data: Any) -> str: # If this starts throwing an exceptions, consider # Subclassing DjangoJSONEncoder and using force_str to # make it JSON serializable. return json.dumps(data, cls=DebugToolbarJSONEncoder, skipkeys=True) def deserialize(data: str) -> Any: return json.loads(data, cls=DebugToolbarJSONDecoder) class BaseStore: @classmethod def request_ids(cls) -> Iterable: """The stored request ids""" raise NotImplementedError @classmethod def exists(cls, request_id: str) -> bool: """Does the given request_id exist in the store""" raise NotImplementedError @classmethod def set(cls, request_id: str): """Set a request_id in the store""" raise NotImplementedError @classmethod def clear(cls): """Remove all requests from the request store""" raise NotImplementedError @classmethod def delete(cls, request_id: str): """Delete the store for the given request_id""" raise NotImplementedError @classmethod def save_panel(cls, request_id: str, panel_id: str, data: Any = None): """Save the panel data for the given request_id""" raise NotImplementedError @classmethod def panel(cls, request_id: str, panel_id: str) -> Any: """Fetch the panel data for the given request_id""" raise NotImplementedError class MemoryStore(BaseStore): # ids is the collection of storage ids that have been used. # Use a dequeue to support O(1) appends and pops # from either direction. _request_ids: deque = deque() _request_store: dict[str, dict] = defaultdict(dict) @classmethod def request_ids(cls) -> Iterable: """The stored request ids""" return cls._request_ids @classmethod def exists(cls, request_id: str) -> bool: """Does the given request_id exist in the request store""" return request_id in cls._request_ids @classmethod def set(cls, request_id: str): """Set a request_id in the request store""" if request_id not in cls._request_ids: cls._request_ids.append(request_id) for _ in range( len(cls._request_ids) - dt_settings.get_config()["RESULTS_CACHE_SIZE"] ): removed_id = cls._request_ids.popleft() cls._request_store.pop(removed_id, None) @classmethod def clear(cls): """Remove all requests from the request store""" cls._request_ids.clear() cls._request_store.clear() @classmethod def delete(cls, request_id: str): """Delete the stored request for the given request_id""" cls._request_store.pop(request_id, None) # Suppress when request_id doesn't exist in the collection of ids. with contextlib.suppress(ValueError): cls._request_ids.remove(request_id) @classmethod def save_panel(cls, request_id: str, panel_id: str, data: Any = None): """Save the panel data for the given request_id""" cls.set(request_id) cls._request_store[request_id][panel_id] = serialize(data) @classmethod def panel(cls, request_id: str, panel_id: str) -> Any: """Fetch the panel data for the given request_id""" try: data = cls._request_store[request_id][panel_id] except KeyError: return {} else: return deserialize(data) @classmethod def panels(cls, request_id: str) -> Any: """Fetch all the panel data for the given request_id""" try: panel_mapping = cls._request_store[request_id] except KeyError: return {} for panel, data in panel_mapping.items(): yield panel, deserialize(data) class DatabaseStore(BaseStore): @classmethod def _cleanup_old_entries(cls): """ Enforce the cache size limit - keeping only the most recently used entries up to RESULTS_CACHE_SIZE. """ # Determine which entries to keep keep_ids = cls.request_ids() # Delete all entries not in the keep list if keep_ids: HistoryEntry.objects.exclude(request_id__in=keep_ids).delete() @classmethod def request_ids(cls): """Return all stored request ids within the cache size limit""" cache_size = dt_settings.get_config()["RESULTS_CACHE_SIZE"] return list( HistoryEntry.objects.all()[:cache_size].values_list("request_id", flat=True) ) @classmethod def exists(cls, request_id: str) -> bool: """Check if the given request_id exists in the store""" return HistoryEntry.objects.filter(request_id=request_id).exists() @classmethod def set(cls, request_id: str): """Set a request_id in the store and clean up old entries""" with transaction.atomic(): # Create the entry if it doesn't exist (ignore otherwise) _, created = HistoryEntry.objects.get_or_create(request_id=request_id) # Only enforce cache size limit when new entries are created if created: cls._cleanup_old_entries() @classmethod def clear(cls): """Remove all requests from the store""" HistoryEntry.objects.all().delete() @classmethod def delete(cls, request_id: str): """Delete the stored request for the given request_id""" HistoryEntry.objects.filter(request_id=request_id).delete() @classmethod def save_panel(cls, request_id: str, panel_id: str, data: Any = None): """Save the panel data for the given request_id""" with transaction.atomic(): obj, _ = HistoryEntry.objects.get_or_create(request_id=request_id) store_data = obj.data store_data[panel_id] = serialize(data) obj.data = store_data obj.save() @classmethod def panel(cls, request_id: str, panel_id: str) -> Any: """Fetch the panel data for the given request_id""" try: data = HistoryEntry.objects.get(request_id=request_id).data panel_data = data.get(panel_id) if panel_data is None: return {} return deserialize(panel_data) except HistoryEntry.DoesNotExist: return {} @classmethod def panels(cls, request_id: str) -> Any: """Fetch all panel data for the given request_id""" try: data = HistoryEntry.objects.get(request_id=request_id).data for panel_id, panel_data in data.items(): yield panel_id, deserialize(panel_data) except HistoryEntry.DoesNotExist: return {} class _UntrackedCache: """ Wrapper around a Django cache backend that suppresses debug toolbar tracking. The cache panel's monkey-patched methods check ``cache._djdt_panel`` and skip recording when it is ``None``. This proxy temporarily sets that attribute to ``None`` around every call so the toolbar's own cache operations are invisible. """ def __init__(self, cache): self._cache = cache def __getattr__(self, name): attr = getattr(self._cache, name) if not callable(attr): return attr @functools.wraps(attr) def untracked(*args, **kwargs): panel = getattr(self._cache, "_djdt_panel", None) self._cache._djdt_panel = None try: return attr(*args, **kwargs) finally: self._cache._djdt_panel = panel return untracked class CacheStore(BaseStore): """ Store that uses Django's cache framework to persist debug toolbar data. """ _cache_table_registered = False @classmethod def _get_cache(cls): """Get the Django cache backend, wrapped to bypass toolbar tracking.""" cache = _UntrackedCache(caches[dt_settings.get_config()["CACHE_BACKEND"]]) # Register the cache table with DDT_MODELS to filter SQL queries if not cls._cache_table_registered: cls._register_cache_table_for_sql_filtering(cache._cache) cls._cache_table_registered = True return cache @classmethod def _register_cache_table_for_sql_filtering(cls, cache): """ Add the cache table to DDT_MODELS. This ensures that when using DatabaseCache, the cache table's SQL queries don't appear in the SQLPanel. """ # Only proceed if this is a DatabaseCache backend if cache.__class__.__name__ != "DatabaseCache": return # Get the cache table name cache_table = getattr(cache, "_table", None) if cache_table: # Import here to avoid circular dependency: # store.py -> panels/sql/tracking.py -> panels/sql/forms.py -> toolbar.py -> store.py from debug_toolbar.panels.sql import tracking tracking.DDT_MODELS.add(cache_table) @classmethod def _key_prefix(cls) -> str: """Get the cache key prefix from settings.""" return dt_settings.get_config()["CACHE_KEY_PREFIX"] @classmethod def _request_ids_key(cls) -> str: """Return the cache key for the request IDs list.""" return f"{cls._key_prefix()}request_ids" @classmethod def _request_key(cls, request_id: str) -> str: """Return the cache key for a specific request's data.""" return f"{cls._key_prefix()}req:{request_id}" @classmethod def request_ids(cls) -> Iterable: """The stored request ids.""" return cls._get_cache().get(cls._request_ids_key(), []) @classmethod def exists(cls, request_id: str) -> bool: """Does the given request_id exist in the store.""" return request_id in cls.request_ids() @classmethod def set(cls, request_id: str): """Set a request_id in the store.""" cache = cls._get_cache() ids_key = cls._request_ids_key() request_ids = deque(cache.get(ids_key, [])) if request_id not in request_ids: request_ids.append(request_id) # Enforce RESULTS_CACHE_SIZE limit max_size = dt_settings.get_config()["RESULTS_CACHE_SIZE"] while len(request_ids) > max_size: removed_id = request_ids.popleft() cache.delete(cls._request_key(removed_id)) cache.set(ids_key, list(request_ids), None) @classmethod def clear(cls): """Remove all requests from the request store.""" cache = cls._get_cache() ids_key = cls._request_ids_key() request_ids = cache.get(ids_key, []) # Delete all request data if request_ids: cache.delete_many([cls._request_key(_id) for _id in request_ids]) # Clear the request IDs list cache.delete(ids_key) @classmethod def delete(cls, request_id: str): """Delete the stored request for the given request_id.""" cache = cls._get_cache() ids_key = cls._request_ids_key() request_ids = list(cache.get(ids_key, [])) # Remove from the list if present if request_id in request_ids: request_ids.remove(request_id) cache.set(ids_key, request_ids, None) # Delete the request data cache.delete(cls._request_key(request_id)) @classmethod def save_panel(cls, request_id: str, panel_id: str, data: Any = None): """Save the panel data for the given request_id.""" cls.set(request_id) cache = cls._get_cache() request_key = cls._request_key(request_id) request_data = cache.get(request_key, {}) request_data[panel_id] = serialize(data) cache.set(request_key, request_data, None) @classmethod def panel(cls, request_id: str, panel_id: str) -> Any: """Fetch the panel data for the given request_id.""" cache = cls._get_cache() request_data = cache.get(cls._request_key(request_id), {}) panel_data = request_data.get(panel_id) if panel_data is None: return {} return deserialize(panel_data) @classmethod def panels(cls, request_id: str) -> Any: """Fetch all the panel data for the given request_id.""" cache = cls._get_cache() request_data = cache.get(cls._request_key(request_id), {}) for panel_id, panel_data in request_data.items(): yield panel_id, deserialize(panel_data) def get_store() -> BaseStore: return import_string(dt_settings.get_config()["TOOLBAR_STORE_CLASS"]) python-django-debug-toolbar-8.0.0/debug_toolbar/templates/000077500000000000000000000000001524561404200236355ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/000077500000000000000000000000001524561404200264455ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/base.html000066400000000000000000000065321524561404200302530ustar00rootroot00000000000000{% load i18n static %}
{% if use_shadow_dom %}{% endif %}
python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/includes/000077500000000000000000000000001524561404200302535ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/includes/panel_button.html000066400000000000000000000017731524561404200336430ustar00rootroot00000000000000{% load debug_toolbar i18n %}
  • {% if panel.has_content and panel.enabled %} {% endif %}
  • python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/includes/panel_content.html000066400000000000000000000014361524561404200337760ustar00rootroot00000000000000{% load static %} {% if panel.has_content and panel.enabled %}

    {{ panel.title }}

    {{ panel.title_bar }}
    {% if toolbar.should_render_panels %} {% for script in panel.scripts %}{% endfor %}
    {{ panel.content }}
    {% else %}
    {% endif %}
    {% endif %} python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/includes/theme_selector.html000066400000000000000000000064101524561404200341440ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels/000077500000000000000000000000001524561404200277275ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels/alerts.html000066400000000000000000000003721524561404200321110ustar00rootroot00000000000000{% load i18n %} {% if alerts %}

    {% translate "Alerts found" %}

    {% for alert in alerts %}
    • {{ alert.alert }}
    {% endfor %} {% else %}

    {% translate "No alerts found" %}

    {% endif %} python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels/cache.html000066400000000000000000000042711524561404200316640ustar00rootroot00000000000000{% load i18n %}

    {% translate "Summary" %}

    {% translate "Total calls" %} {% translate "Total time" %} {% translate "Cache hits" %} {% translate "Cache misses" %}
    {{ total_calls }} {{ total_time|floatformat:"2" }} ms {{ hits }} {{ misses }}

    Cache hit/miss statistics for cache.get() calls may not always be accurate. See the discussion for details and to share feedback about improving cache hit/miss tracking.

    {% translate "Commands" %}

    {% for name in counts.keys %} {% endfor %} {% for value in counts.values %} {% endfor %}
    {{ name }}
    {{ value }}
    {% if calls %}

    {% translate "Calls" %}

    {% for call in calls %} {% endfor %}
    {% translate "Time" %} {% translate "Type" %} {% translate "Arguments" %} {% translate "Keyword arguments" %} {% translate "Backend" %}
    {{ call.time|floatformat:"2" }}ms {{ call.name|escape }} {{ call.args|escape }} {{ call.kwargs|escape }} {{ call.backend }}
    {{ call.trace|safe }}
    {% endif %} python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels/community.html000066400000000000000000000030171524561404200326420ustar00rootroot00000000000000{% load i18n %}

    {% translate "Community & Contribution" %}

    {% translate "Want to contribute to Django Debug Toolbar? Get involved in our community!" %}



    {% translate "Django Debug Toolbar Documentation" %}

    {% translate "Explore the official documentation to learn more about Django Debug Toolbar." %}

    python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels/headers.html000066400000000000000000000022771524561404200322400ustar00rootroot00000000000000{% load i18n %}

    {% translate "Request headers" %}

    {% for key, value in request_headers.items %} {% endfor %}
    {% translate "Key" %} {% translate "Value" %}
    {{ key|escape }} {{ value|escape }}

    {% translate "Response headers" %}

    {% for key, value in response_headers.items %} {% endfor %}
    {% translate "Key" %} {% translate "Value" %}
    {{ key|escape }} {{ value|escape }}

    {% translate "WSGI environ" %}

    {% translate "Since the WSGI environ inherits the environment of the server, only a significant subset is shown below." %}

    {% for key, value in environ.items %} {% endfor %}
    {% translate "Key" %} {% translate "Value" %}
    {{ key|escape }} {{ value|escape }}
    python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels/history.html000066400000000000000000000011431524561404200323150ustar00rootroot00000000000000{% load i18n static %} {% for request_id, history_context in toolbar_history.items %} {% include "debug_toolbar/panels/history_tr.html" %} {% endfor %}
    {% translate "Time" %} {% translate "Method" %} {% translate "Path" %} {% translate "Request Variables" %} {% translate "Status" %} {% translate "Action" %}
    history_title_bar.html000066400000000000000000000003471524561404200342700ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels{% load i18n %}
    {{ refresh_form.as_div }}
    python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels/history_tr.html000066400000000000000000000034031524561404200330230ustar00rootroot00000000000000{% load i18n %} {{ history_context.history_stats.time|escape }}

    {{ history_context.history_stats.request_method|escape }}

    {{ history_context.history_stats.request_url|truncatechars:100|escape }}

    {% for key, value in history_context.history_stats.data.items %} {% empty %} {% endfor %}
    {% translate "Variable" %} {% translate "Value" %}
    {{ key|pprint }} {{ value|pprint }}
    No data

    {{ history_context.history_stats.status_code|escape }}

    {{ history_context.form.as_div }}
    python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels/profiling.html000066400000000000000000000024651524561404200326150ustar00rootroot00000000000000{% load i18n %} {% for call in func_list %} {% endfor %}
    {% translate "Call" %} {% translate "CumTime" %} {% translate "Per" %} {% translate "TotTime" %} {% translate "Per" %} {% translate "Count" %}
    {% if call.has_subfuncs %} {% else %} {% endif %} {{ call.func_std_string|safe }}
    {{ call.cumtime|floatformat:3 }} {{ call.cumtime_per_call|floatformat:3 }} {{ call.tottime|floatformat:3 }} {{ call.tottime_per_call|floatformat:3 }} {{ call.count }}
    python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels/request.html000066400000000000000000000026171524561404200323130ustar00rootroot00000000000000{% load i18n %}

    {% translate "View information" %}

    {% translate "View function" %} {% translate "Arguments" %} {% translate "Keyword arguments" %} {% translate "URL name" %}
    {{ view_func }} {{ view_args|pprint }} {{ view_kwargs|pprint }} {{ view_urlname }}
    {% if cookies.list or cookies.raw %}

    {% translate "Cookies" %}

    {% include 'debug_toolbar/panels/request_variables.html' with variables=cookies %} {% else %}

    {% translate "No cookies" %}

    {% endif %} {% if session.list or session.raw %}

    {% translate "Session data" %}

    {% include 'debug_toolbar/panels/request_variables.html' with variables=session %} {% else %}

    {% translate "No session data" %}

    {% endif %} {% if get.list or get.raw %}

    {% translate "GET data" %}

    {% include 'debug_toolbar/panels/request_variables.html' with variables=get %} {% else %}

    {% translate "No GET data" %}

    {% endif %} {% if post.list or post.raw %}

    {% translate "POST data" %}

    {% include 'debug_toolbar/panels/request_variables.html' with variables=post %} {% else %}

    {% translate "No POST data" %}

    {% endif %} request_variables.html000066400000000000000000000010361524561404200342560ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels{% load i18n %} {% if variables.list %} {% for key, value in variables.list %} {% endfor %}
    {% translate "Variable" %} {% translate "Value" %}
    {{ key|pprint }} {{ value|pprint }}
    {% elif variables.raw %} {{ variables.raw|pprint }} {% endif %} python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels/settings.html000066400000000000000000000005101524561404200324510ustar00rootroot00000000000000{% load i18n %} {% for name, value in settings.items %} {% endfor %}
    {% translate "Setting" %} {% translate "Value" %}
    {{ name }} {{ value }}
    python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels/signals.html000066400000000000000000000005201524561404200322520ustar00rootroot00000000000000{% load i18n %} {% for name, receivers in signals %} {% endfor %}
    {% translate "Signal" %} {% translate "Receivers" %}
    {{ name|escape }} {{ receivers|join:", " }}
    python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels/sql.html000066400000000000000000000132751524561404200314240ustar00rootroot00000000000000{% load i18n l10n %}
      {% for alias, info in databases %}
    • {{ alias }} {{ info.time_spent|floatformat:"2" }} ms ({% blocktranslate count num=info.num_queries %}{{ num }} query{% plural %}{{ num }} queries{% endblocktranslate %} {% if info.similar_count %} {% blocktranslate with count=info.similar_count trimmed %} including {{ count }} similar {% endblocktranslate %} {% if info.duplicate_count %} {% blocktranslate with dupes=info.duplicate_count trimmed %} and {{ dupes }} duplicates {% endblocktranslate %} {% endif %} {% endif %})
    • {% endfor %}
    {% if queries %} {% for query in queries %} {% endfor %}
    {% translate "Query" %} {% translate "Timeline" %} {% translate "Time" %} {% translate "Action" %}
    {{ query.sql|safe }}
    {% if query.similar_count %} {% blocktranslate with count=query.similar_count %}{{ count }} similar queries.{% endblocktranslate %} {% endif %} {% if query.duplicate_count %} {% blocktranslate with dupes=query.duplicate_count %}Duplicated {{ dupes }} times.{% endblocktranslate %} {% endif %}
    {% if query.starts_trans %} {% endif %} {% if query.ends_trans %} {% endif %} {{ query.duration|floatformat:"2" }}ms {% if query.params is not None %}
    {{ query.form.as_div }} {% if query.vendor == 'mysql' %} {% endif %}
    {% endif %}

    {% translate "Connection:" %} {{ query.alias }}

    {% if query.iso_level %}

    {% translate "Isolation level:" %} {{ query.iso_level }}

    {% endif %} {% if query.trans_status %}

    {% translate "Transaction status:" %} {{ query.trans_status }}

    {% endif %} {% if query.stacktrace %}
    {{ query.stacktrace }}
    {% endif %} {% if query.template_info %} {% for line in query.template_info.context %} {% endfor %}
    {{ line.num }} {{ line.content }}

    {{ query.template_info.name|default:_("(unknown)") }}

    {% endif %}
    {% else %}

    {% translate "No SQL queries were recorded during this request." %}

    {% endif %} python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels/sql_explain.html000066400000000000000000000016461524561404200331430ustar00rootroot00000000000000{% load i18n %}

    {% translate "SQL explained" %}

    {% translate "Executed SQL" %}
    {{ sql|safe }}
    {% translate "Time" %}
    {{ duration }} ms
    {% translate "Database" %}
    {{ alias }}
    {% for h in headers %} {% endfor %} {% for row in result %} {% for column in row %} {% endfor %} {% endfor %}
    {{ h|upper }}
    {% if forloop.last %}{% endif %}{{ column|escape }}{% if forloop.last %}{% endif %}
    python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels/sql_profile.html000066400000000000000000000020431524561404200331330ustar00rootroot00000000000000{% load i18n %}

    {% translate "SQL profiled" %}

    {% if result %}
    {% translate "Executed SQL" %}
    {{ sql|safe }}
    {% translate "Time" %}
    {{ duration }} ms
    {% translate "Database" %}
    {{ alias }}
    {% for h in headers %} {% endfor %} {% for row in result %} {% for column in row %} {% endfor %} {% endfor %}
    {{ h|upper }}
    {{ column|escape }}
    {% else %}
    {% translate "Error" %}
    {{ result_error }}
    {% endif %}
    python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels/sql_select.html000066400000000000000000000017301524561404200327540ustar00rootroot00000000000000{% load i18n %}

    {% translate "SQL selected" %}

    {% translate "Executed SQL" %}
    {{ sql|safe }}
    {% translate "Time" %}
    {{ duration }} ms
    {% translate "Database" %}
    {{ alias }}
    {% if result %} {% for h in headers %} {% endfor %} {% for row in result %} {% for column in row %} {% endfor %} {% endfor %}
    {{ h|upper }}
    {{ column|escape }}
    {% else %}

    {% translate "Empty set" %}

    {% endif %}
    python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels/staticfiles.html000066400000000000000000000034161524561404200331330ustar00rootroot00000000000000{% load i18n %}

    {% blocktranslate count dirs_count=staticfiles_dirs|length %}Static file path{% plural %}Static file paths{% endblocktranslate %}

    {% if staticfiles_dirs %}
      {% for prefix, staticfiles_dir in staticfiles_dirs %}
    1. {{ staticfiles_dir }}{% if prefix %} {% blocktranslate %}(prefix {{ prefix }}){% endblocktranslate %}{% endif %}
    2. {% endfor %}
    {% else %}

    {% translate "None" %}

    {% endif %}

    {% blocktranslate count apps_count=staticfiles_apps|length %}Static file app{% plural %}Static file apps{% endblocktranslate %}

    {% if staticfiles_apps %}
      {% for static_app in staticfiles_apps %}
    1. {{ static_app }}
    2. {% endfor %}
    {% else %}

    {% translate "None" %}

    {% endif %}

    {% blocktranslate count staticfiles_count=staticfiles|length %}Static file{% plural %}Static files{% endblocktranslate %}

    {% if staticfiles %}
    {% for path, url, real_path in staticfiles %}
    {{ path }}
    {{ real_path }}
    {% endfor %}
    {% else %}

    {% translate "None" %}

    {% endif %} {% for finder, payload in staticfiles_finders.items %}

    {{ finder }} ({% blocktranslate count payload_count=payload|length %}{{ payload_count }} file{% plural %}{{ payload_count }} files{% endblocktranslate %})

    {% for path, real_path in payload %} {% endfor %}
    {% translate 'Path' %} {% translate 'Location' %}
    {{ path }} {{ real_path }}
    {% endfor %} python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels/tasks.html000066400000000000000000000026241524561404200317460ustar00rootroot00000000000000{% load i18n %} {% if tasks %} {% for task in tasks %} {% endfor %}
    {% translate "python path"|title context "noun" %} {% translate "queue"|title context "noun" %} {% translate "backend"|title %} {% translate "priority"|title %} {% translate "run after"|title %} {% translate "status"|title %} {% translate "arguments"|title %} {% translate "keyword arguments"|title %}
    {{ task.task.module_path|escape }} {{ task.task.queue_name|escape }} {{ task.backend|escape }} {{ task.task.priority }} {{ task.task.run_after|default:"—" }} {{ task.status }} {{ task.args|pprint }} {% if task.kwargs %}{{ task.kwargs|pprint }}{% else %}—{% endif %}
    {% elif tasks_available %}

    {% translate "No tasks were queued during this request." %}

    {% else %}

    {% blocktranslate %} The Tasks panel requires Django 6.0 or later. Upgrade Django to see information about tasks queued during this request. {% endblocktranslate %}

    {% endif %} python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels/template_source.html000066400000000000000000000004361524561404200340130ustar00rootroot00000000000000{% load i18n %}

    {% translate "Template source:" %} {{ template_name }}

    {{ source }}
    python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels/templates.html000066400000000000000000000033101524561404200326100ustar00rootroot00000000000000{% load i18n %}

    {% blocktranslate count template_count=template_dirs|length %}Template path{% plural %}Template paths{% endblocktranslate %}

    {% if template_dirs %}
      {% for template in template_dirs %}
    1. {{ template }}
    2. {% endfor %}
    {% else %}

    {% translate "None" %}

    {% endif %}

    {% blocktranslate count template_count=templates|length %}Template{% plural %}Templates{% endblocktranslate %}

    {% if templates %}
    {% for template in templates %}
    {{ template.template.name|addslashes }}
    {{ template.template.origin_name|addslashes }}
    {% if template.context %}
    {% translate "Toggle context" %} {{ template.context }}
    {% endif %} {% endfor %}
    {% else %}

    {% translate "None" %}

    {% endif %}

    {% blocktranslate count context_processors_count=context_processors|length %}Context processor{% plural %}Context processors{% endblocktranslate %}

    {% if context_processors %}
    {% for key, value in context_processors.items %}
    {{ key|escape }}
    {% translate "Toggle context" %} {{ value|escape }}
    {% endfor %}
    {% else %}

    {% translate "None" %}

    {% endif %} python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels/timer.html000066400000000000000000000020261524561404200317350ustar00rootroot00000000000000{% load i18n %}

    {% translate "Resource usage" %}

    {% for key, value in rows %} {% endfor %}
    {% translate "Resource" %} {% translate "Value" %}
    {{ key|escape }} {{ value|escape }}

    {% translate "Browser timing" %}

    {% translate "Timing attribute" %} {% translate "Timeline" %} {% translate "Time since navigation start (+duration)" %}
    python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/panels/versions.html000066400000000000000000000007561524561404200324750ustar00rootroot00000000000000{% load i18n %} {% for package, name, version in versions %} {% endfor %}
    {% translate "Package" %} {% translate "Name" %} {% translate "Version" %}
    {{ package }} {{ name }} {{ version }}
    python-django-debug-toolbar-8.0.0/debug_toolbar/templates/debug_toolbar/redirect.html000066400000000000000000000054031524561404200311360ustar00rootroot00000000000000{% load i18n static %} Django Debug Toolbar Redirects Panel: {{ status_line }}
    {% translate "WARNING:" %} {% blocktranslate with issue_url="https://github.com/django-commons/django-debug-toolbar/issues/2216" %} The RedirectsPanel is deprecated and will be removed in a future version. The HistoryPanel now provides the ability to view toolbar data for redirected requests. If you still have a use case for this panel, please comment on this issue. {% endblocktranslate %}

    {{ status_line }}

    {% translate "Location:" %} {{ redirect_to }}

    {% translate "The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal." %}

    python-django-debug-toolbar-8.0.0/debug_toolbar/templatetags/000077500000000000000000000000001524561404200243315ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/templatetags/__init__.py000066400000000000000000000000001524561404200264300ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/debug_toolbar/templatetags/debug_toolbar.py000066400000000000000000000021131524561404200275100ustar00rootroot00000000000000from functools import cache from django import template from django.contrib.staticfiles import finders from django.utils.html import format_html from django.utils.safestring import mark_safe register = template.Library() @cache def _svg_contents(path): absolute = finders.find(path) if absolute is None: return "" with open(absolute, encoding="utf-8") as handle: return handle.read().strip() @register.simple_tag def inline_svg(path, css_class="", label=""): """ Inline a static SVG file instead of linking to it, avoiding a network request per icon. ``label`` names the icon for assistive tech; without one the icon is treated as decorative. """ svg = _svg_contents(path) if not svg.startswith(" list[Panel]: """ Get a list of all available panels. """ return list(self._panels.values()) @property def enabled_panels(self) -> list[Panel]: """ Get a list of panels enabled for the current request. """ # Ensure TimerPanel is first in order to measure the full time of the toolbar's processing. panels = [] timer_panel = None for panel in self._panels.values(): if not panel.enabled: continue if panel.panel_id == "TimerPanel": timer_panel = panel else: panels.append(panel) if timer_panel is not None: panels.insert(0, timer_panel) return panels @property def csp_nonce(self) -> str | None: """ Look up the Content Security Policy nonce if there is one. """ return get_csp_nonce(self.request) def get_panel_by_id(self, panel_id: str) -> Panel: """ Get the panel with the given id, which is the class name by default. """ return self._panels[panel_id] # Handle rendering the toolbar in HTML def render_toolbar(self) -> str: """ Renders the overall Toolbar with panels inside. """ if not self.should_render_panels(): self.init_store() try: context = { "toolbar": self, "use_shadow_dom": self.config["USE_SHADOW_DOM"], } lang = self.config["TOOLBAR_LANGUAGE"] or get_language() with lang_override(lang): return render_to_string("debug_toolbar/base.html", context) except TemplateSyntaxError: if not apps.is_installed("django.contrib.staticfiles"): raise ImproperlyConfigured( "The debug toolbar requires the staticfiles contrib app. " "Add 'django.contrib.staticfiles' to INSTALLED_APPS and " "define STATIC_URL in your settings." ) from None else: raise def should_render_panels(self) -> bool: """Determine whether the panels should be rendered during the request If False, the panels will be loaded via Ajax. """ return self.config["RENDER_PANELS"] or False # Handle storing toolbars in memory and fetching them later on def init_store(self): # Store already initialized. if self.store is None: self.store = get_store() if self.request_id: return self.request_id = uuid.uuid4().hex self.store.set(self.request_id) @classmethod def fetch( cls, request_id: str, panel_id: str | None = None ) -> StoredDebugToolbar | None: if get_store().exists(request_id): return StoredDebugToolbar.from_store(request_id, panel_id=panel_id) # Manually implement class-level caching of panel classes and url patterns # because it's more obvious than going through an abstraction. _panel_classes: list[Panel] | None = None @classmethod def get_panel_classes(cls) -> list[type[Panel]] | None: if cls._panel_classes is None: # Load panels in a temporary variable for thread safety. panel_classes = [ import_string(panel_path) for panel_path in dt_settings.get_panels() ] cls._panel_classes = panel_classes return cls._panel_classes _urlpatterns: list[URLPattern | URLResolver] | None = None @classmethod def get_urls(cls) -> list[URLPattern | URLResolver]: if cls._urlpatterns is None: from . import views # Load URLs in a temporary variable for thread safety. # Global URLs urlpatterns = [ path("render_panel/", views.render_panel, name="render_panel"), ] # Per-panel URLs for panel_class in cls.get_panel_classes(): urlpatterns += panel_class.get_urls() cls._urlpatterns = urlpatterns return cls._urlpatterns @classmethod def is_toolbar_request(cls, request: HttpRequest) -> bool: """ Determine if the request is for a DebugToolbar view. """ # The primary caller of this function is in the middleware which may # not have resolver_match set. try: resolver_match = request.resolver_match or resolve( request.path_info, getattr(request, "urlconf", None) ) except Resolver404: return False return ( bool(resolver_match.namespaces) and resolver_match.namespaces[-1] == APP_NAME ) @staticmethod @cache def get_observe_request() -> Callable: # If OBSERVE_REQUEST_CALLBACK is a string, which is the recommended # setup, resolve it to the corresponding callable. func_or_path = dt_settings.get_config()["OBSERVE_REQUEST_CALLBACK"] if isinstance(func_or_path, str): return import_string(func_or_path) else: return func_or_path def observe_request(request: HttpRequest) -> bool: """ Determine whether to update the toolbar from a client side request. """ return True def from_store_get_response(request: HttpRequest | None) -> None: logger.warning( "get_response was called for debug toolbar after being loaded from the store. No request exists in this scenario as the request is not stored, only the panel's data." ) class StoredDebugToolbar(DebugToolbar): def __init__( self, request: HttpRequest | None, get_response: GetResponse, request_id: str | None = None, ): self.request = None self.config = dt_settings.get_config().copy() self.process_request = get_response self.stats = {} self.server_timing_stats = {} self.request_id = request_id self.init_store() @classmethod def from_store( cls, request_id: str, panel_id: str | None = None ) -> StoredDebugToolbar: toolbar = StoredDebugToolbar( None, from_store_get_response, request_id=request_id ) toolbar._panels = {} for panel_class in reversed(cls.get_panel_classes()): panel = panel_class(toolbar, from_store_get_response) if panel_id and panel.panel_id != panel_id: continue data = toolbar.store.panel(toolbar.request_id, panel.panel_id) panel.load_stats_from_store(data) toolbar._panels[panel.panel_id] = panel return toolbar def debug_toolbar_urls(prefix: str = "__debug__") -> list[URLPattern | URLResolver]: """ Return a URL pattern for serving toolbar in debug mode. from django.conf import settings from debug_toolbar.toolbar import debug_toolbar_urls urlpatterns = [ # ... the rest of your URLconf goes here ... ] + debug_toolbar_urls() """ if not prefix: raise ImproperlyConfigured("Empty urls prefix not permitted") elif not settings.DEBUG: # No-op if not in debug mode. return [] return [ re_path( r"^{}/".format(re.escape(prefix.lstrip("/"))), include("debug_toolbar.urls"), ), ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������python-django-debug-toolbar-8.0.0/debug_toolbar/urls.py���������������������������������������������0000664�0000000�0000000�00000000215�15245614042�0023174�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������from debug_toolbar import APP_NAME from debug_toolbar.toolbar import DebugToolbar app_name = APP_NAME urlpatterns = DebugToolbar.get_urls() �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������python-django-debug-toolbar-8.0.0/debug_toolbar/utils.py��������������������������������������������0000664�0000000�0000000�00000033756�15245614042�0023367�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������from __future__ import annotations import inspect import linecache import os.path import sys import warnings from collections.abc import Sequence from pprint import PrettyPrinter, pformat from typing import Any from asgiref.local import Local from django.http import QueryDict from django.template import Node from django.utils.html import format_html from django.utils.safestring import SafeString, mark_safe from django.views.debug import get_default_exception_reporter_filter from debug_toolbar import _compat as compat, _stubs as stubs, settings as dt_settings _local_data = Local() safe_filter = get_default_exception_reporter_filter() def _is_excluded_frame(frame: Any, excluded_modules: Sequence[str] | None) -> bool: if not excluded_modules: return False frame_module = frame.f_globals.get("__name__") if not isinstance(frame_module, str): return False return any( frame_module == excluded_module or frame_module.startswith(excluded_module + ".") for excluded_module in excluded_modules ) def _stack_trace_deprecation_warning() -> None: warnings.warn( "get_stack() and tidy_stacktrace() are deprecated in favor of" " get_stack_trace()", DeprecationWarning, stacklevel=2, ) def tidy_stacktrace(stack: list[stubs.InspectStack]) -> stubs.TidyStackTrace: """ Clean up stacktrace and remove all entries that are excluded by the HIDE_IN_STACKTRACES setting. ``stack`` should be a list of frame tuples from ``inspect.stack()`` or ``debug_toolbar.utils.get_stack()``. """ _stack_trace_deprecation_warning() trace = [] excluded_modules = dt_settings.get_config()["HIDE_IN_STACKTRACES"] for frame, path, line_no, func_name, text in (f[:5] for f in stack): if _is_excluded_frame(frame, excluded_modules): continue text = "".join(text).strip() if text else "" frame_locals = ( pformat(frame.f_locals) if dt_settings.get_config()["ENABLE_STACKTRACES_LOCALS"] else None ) trace.append((path, line_no, func_name, text, frame_locals)) return trace def render_stacktrace(trace: stubs.TidyStackTrace) -> SafeString: show_locals = dt_settings.get_config()["ENABLE_STACKTRACES_LOCALS"] html = "" for abspath, lineno, func, code, locals_ in trace: if os.path.sep in abspath: directory, filename = abspath.rsplit(os.path.sep, 1) # We want the separator to appear in the UI so add it back. directory += os.path.sep else: # abspath could be something like "" directory = "" filename = abspath html += format_html( ( '{}' + '{} in' + ' {}' + '({})\n' + ' {}\n' ), directory, filename, func, lineno, code, ) if show_locals: html += format_html( '
    {}
    \n', locals_, ) html += "\n" return mark_safe(html) def get_template_info() -> dict[str, Any] | None: template_info = None cur_frame = sys._getframe().f_back try: while cur_frame is not None: in_utils_module = cur_frame.f_code.co_filename.endswith( "/debug_toolbar/utils.py" ) is_get_template_context = ( cur_frame.f_code.co_name == get_template_context.__name__ ) if in_utils_module and is_get_template_context: # If the method in the stack trace is this one # then break from the loop as it's being check recursively. break elif cur_frame.f_code.co_name == "render": node = cur_frame.f_locals["self"] context = cur_frame.f_locals["context"] if isinstance(node, Node): template_info = get_template_context(node, context) break cur_frame = cur_frame.f_back except Exception: # noqa: S110, BLE001 pass del cur_frame return template_info def get_template_context( node: Node, context: stubs.RequestContext, context_lines: int = 3 ) -> dict[str, Any]: line, source_lines, name = get_template_source_from_exception_info(node, context) debug_context = [] start = max(1, line - context_lines) end = line + 1 + context_lines for line_num, content in source_lines: if start <= line_num <= end: debug_context.append( {"num": line_num, "content": content, "highlight": (line_num == line)} ) return {"name": name, "context": debug_context} def get_template_source_from_exception_info( node: Node, context: stubs.RequestContext ) -> tuple[int, list[tuple[int, str]], str]: if context.template.origin == node.origin: exception_info = context.template.get_exception_info( Exception("DDT"), node.token ) else: exception_info = context.render_context.template.get_exception_info( Exception("DDT"), node.token ) line = exception_info["line"] source_lines = exception_info["source_lines"] name = exception_info["name"] return line, source_lines, name def get_name_from_obj(obj: Any) -> str: """Get the best name as `str` from a view or a object.""" # This is essentially a rewrite of the `django.contrib.admindocs.utils.get_view_name` # https://github.com/django/django/blob/9a22d1769b042a88741f0ff3087f10d94f325d86/django/contrib/admindocs/utils.py#L26-L32 if hasattr(obj, "view_class"): klass = obj.view_class return f"{klass.__module__}.{klass.__qualname__}" mod_name = obj.__module__ view_name = getattr(obj, "__qualname__", obj.__class__.__name__) return mod_name + "." + view_name def getframeinfo(frame: Any, context: int = 1) -> inspect.Traceback: """ Get information about a frame or traceback object. A tuple of five things is returned: the filename, the line number of the current line, the function name, a list of lines of context from the source code, and the index of the current line within that list. The optional second argument specifies the number of lines of context to return, which are centered around the current line. This originally comes from ``inspect`` but is modified to handle issues with ``findsource()``. """ if inspect.istraceback(frame): lineno = frame.tb_lineno frame = frame.tb_frame else: lineno = frame.f_lineno if not inspect.isframe(frame): raise TypeError("arg is not a frame or traceback object") filename = inspect.getsourcefile(frame) or inspect.getfile(frame) if context > 0: start = lineno - 1 - context // 2 try: lines, _lnum = inspect.findsource(frame) except Exception: # noqa: BLE001 # findsource raises platform-dependant exceptions lines = index = None else: start = max(start, 1) start = max(0, min(start, len(lines) - context)) lines = lines[start : (start + context)] index = lineno - 1 - start else: lines = index = None return inspect.Traceback(filename, lineno, frame.f_code.co_name, lines, index) def sanitize_and_sort_request_vars( variable: dict[str, Any] | QueryDict, ) -> dict[str, list[tuple[str, Any]] | Any]: """ Get a data structure for showing a sorted list of variables from the request data with sensitive values redacted. """ if not isinstance(variable, (dict, QueryDict)): return {"raw": variable} # Get sorted keys if possible, otherwise just list them keys = _get_sorted_keys(variable) # Process the variable based on its type if isinstance(variable, QueryDict): result = _process_query_dict(variable, keys) else: result = _process_dict(variable, keys) return {"list": result} def _get_sorted_keys(variable): """Helper function to get sorted keys if possible.""" try: return sorted(variable) except TypeError: return list(variable) def _process_query_dict(query_dict, keys): """Process a QueryDict into a list of (key, sanitized_value) tuples.""" result = [] for k in keys: values = query_dict.getlist(k) # Return single value if there's only one, otherwise keep as list value = values[0] if len(values) == 1 else values result.append((k, safe_filter.cleanse_setting(k, value))) return result def _process_dict(dictionary, keys): """Process a dictionary into a list of (key, sanitized_value) tuples.""" return [(k, safe_filter.cleanse_setting(k, dictionary.get(k))) for k in keys] def get_stack(context=1) -> list[stubs.InspectStack]: """ Get a list of records for a frame and all higher (calling) frames. Each record contains a frame object, filename, line number, function name, a list of lines of context, and index within the context. Modified version of ``inspect.stack()`` which calls our own ``getframeinfo()`` """ _stack_trace_deprecation_warning() frame = sys._getframe(1) framelist = [] while frame: framelist.append((frame,) + getframeinfo(frame, context)) frame = frame.f_back return framelist def _stack_frames(*, skip=0): skip += 1 # Skip the frame for this generator. frame = inspect.currentframe() while frame is not None: if skip > 0: skip -= 1 else: yield frame frame = frame.f_back class _StackTraceRecorder: pretty_printer = PrettyPrinter() def __init__(self): self.filename_cache = {} def get_source_file(self, frame): frame_filename = frame.f_code.co_filename value = self.filename_cache.get(frame_filename) if value is None: filename = inspect.getsourcefile(frame) if filename is None: is_source = False filename = frame_filename else: is_source = True # Ensure linecache validity the first time this recorder # encounters the filename in this frame. linecache.checkcache(filename) value = (filename, is_source) self.filename_cache[frame_filename] = value return value def get_stack_trace( self, *, excluded_modules: Sequence[str] | None = None, include_locals: bool = False, skip: int = 0, ): trace = [] skip += 1 # Skip the frame for this method. for frame in _stack_frames(skip=skip): if _is_excluded_frame(frame, excluded_modules): continue filename, is_source = self.get_source_file(frame) line_no = frame.f_lineno func_name = frame.f_code.co_name if is_source: module = inspect.getmodule(frame, filename) module_globals = module.__dict__ if module is not None else None source_line = linecache.getline( filename, line_no, module_globals ).strip() else: source_line = "" if include_locals: frame_locals = self.pretty_printer.pformat(frame.f_locals) else: frame_locals = None trace.append((filename, line_no, func_name, source_line, frame_locals)) trace.reverse() return trace def get_stack_trace(*, skip=0): """ Return a processed stack trace for the current call stack. If the ``ENABLE_STACKTRACES`` setting is False, return an empty :class:`list`. Otherwise return a :class:`list` of processed stack frame tuples (file name, line number, function name, source line, frame locals) for the current call stack. The first entry in the list will be for the bottom of the stack and the last entry will be for the top of the stack. ``skip`` is an :class:`int` indicating the number of stack frames above the frame for this function to omit from the stack trace. The default value of ``0`` means that the entry for the caller of this function will be the last entry in the returned stack trace. """ config = dt_settings.get_config() if not config["ENABLE_STACKTRACES"]: return [] skip += 1 # Skip the frame for this function. stack_trace_recorder = getattr(_local_data, "stack_trace_recorder", None) if stack_trace_recorder is None: stack_trace_recorder = _StackTraceRecorder() _local_data.stack_trace_recorder = stack_trace_recorder return stack_trace_recorder.get_stack_trace( excluded_modules=config["HIDE_IN_STACKTRACES"], include_locals=config["ENABLE_STACKTRACES_LOCALS"], skip=skip, ) def clear_stack_trace_caches(): if hasattr(_local_data, "stack_trace_recorder"): del _local_data.stack_trace_recorder _HTML_TYPES = ("text/html", "application/xhtml+xml") def is_processable_html_response(response): content_encoding = response.get("Content-Encoding", "") content_type = response.get("Content-Type", "").split(";")[0] return ( not getattr(response, "streaming", False) and content_encoding == "" and content_type in _HTML_TYPES ) def get_csp_nonce(request) -> str | None: """ Retrieve the Content Security Policy nonce from a request if there is one. This supports both the django-csp and the built-in Django implementations. """ # django-csp uses request.csp_nonce csp_nonce = getattr(request, "csp_nonce", None) if csp_nonce is not None: return csp_nonce # Django's built-in CSP support uses get_nonce(request) return compat.get_nonce(request) python-django-debug-toolbar-8.0.0/debug_toolbar/views.py000066400000000000000000000021441524561404200233470ustar00rootroot00000000000000from django.http import HttpRequest, JsonResponse from django.utils.html import escape from django.utils.translation import gettext as _ from debug_toolbar._compat import login_not_required from debug_toolbar.decorators import render_with_toolbar_language, require_show_toolbar from debug_toolbar.panels import Panel from debug_toolbar.toolbar import DebugToolbar, StoredDebugToolbar @login_not_required @require_show_toolbar @render_with_toolbar_language def render_panel(request: HttpRequest) -> JsonResponse: """Render the contents of a panel""" toolbar: StoredDebugToolbar | None = DebugToolbar.fetch( request.GET["request_id"], request.GET["panel_id"] ) if toolbar is None: content = _( "Data for this panel isn't available anymore. " "Please reload the page and retry." ) content = f"

    {escape(content)}

    " scripts = [] else: panel: Panel = toolbar.get_panel_by_id(request.GET["panel_id"]) content = panel.content scripts = panel.scripts return JsonResponse({"content": content, "scripts": scripts}) python-django-debug-toolbar-8.0.0/docs/000077500000000000000000000000001524561404200177575ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/docs/Makefile000066400000000000000000000016601524561404200214220ustar00rootroot00000000000000# Minimal makefile for Sphinx documentation # # You can set these variables from the command line, and also # from the environment for the first two. SPHINXOPTS ?= -n -W SPHINXBUILD ?= sphinx-build SOURCEDIR = . BUILDDIR = _build # Put it first so that "make" without argument is like "make help". help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) .PHONY: help Makefile # Regenerate the brand PNG logos from their SVG sources. Run this after # changing any logo SVG in _static/brand/ so the bundled PNGs stay in sync. # Requires Google Chrome; override the binary with CHROME=. .PHONY: regenerate-brand-pngs regenerate-brand-pngs: ./_static/brand/regenerate-pngs.sh # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) python-django-debug-toolbar-8.0.0/docs/_static/000077500000000000000000000000001524561404200214055ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/docs/_static/brand/000077500000000000000000000000001524561404200224735ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/docs/_static/brand/Logo-Element-Black.png000066400000000000000000000516141524561404200265110ustar00rootroot00000000000000‰PNG  IHDRj²Õ“øIDATxœìÝ œ\e}ÿñßÎìì†d7sÛø�ˆb¡5µ¦5@Sµ‰Ä(1‚j(T.mhEZëý~CåZ$Š/D�Q4Œˆ‘$Õ¨D�41š�ÛÎnÈììLþß';ѹìî™Û9çó~½ž>g6›JvÏyžïù=çÒ™N§÷€FÛ¥VÙ³gψë;::F´]Ñö“>»í'|oIÛymg´Ý_­Vóê³j™J¥âúl$Éf2™ßŒC!”Dzê÷†„ý¶ûµ½SÛ¿Sÿ¨‚Ä£…Ba«5Bbµ�ðh­í n[ýï¢ÑèÞmUv¨¯€À! ¶+lSÿsUÒö/µ ±¹¿¿¿h|‰À«?*lQÿK×»V©T¶‹E·Ü0bÚ!@#ýª\8ø¥úŸår¹©4-GÐT U-'¸@°QÛ{›‚Áõù1ÐT„-W»=òçj6º>“ÉlR_2 CЖjÏIxÐjƒjµº±P(üDŸË .üd·Ú÷ÕîQ0¸'›Í®7n_&ŒÀÏŠ ßU�*÷äóùk›1 #B€ÀP ȨûŽ«D"‘{2™Ì/ ÀAÙï­¶t ¶&—ËýÖü !@h(ü\í+Z:XY(þÏ€�#%…�GÔ­T øJ>Ÿÿžq�!Bˆ ôúÕ}MýJ-Üm<Ÿ!A€ÇTXíAGGÇ7²Ùì€E€CP¸SÝWFFF¾<00�5 @0 Ã6ºdð-¸`À5ð=BŒŸ»õðÖáááeÅbq‹>ETø�Ú§£Ñèçûûû‹ø!êý ù+jŸÎd2÷�/† ÎTpO&¼¥Z­ÞœÏç·ЦÐ8»Ôf«2ðsÚPÄ�°³R©¼ˆ€vÖi€zÛªp2Khw„¨£={öl9™ ÁP'îuÅÙlv‘�^ ´=® €úX®ðr#ÀGàQµZý@&“9Ûx”0|†å˜ •ÿ«ê.ÌårË ð!BLLI!à4€Õø!ÆI“AÝ€uø!ÆA`{¹\žÇÛ„#€Í¥RiÞÐÐЀ»`lÖF"‘9 •8 UVd³ÙÅÚ, TàЖ*œi!`ϨË3™ÌEËðšüÝYÿbUV`„x¼bµZ]˜Ïç×p„ø³ªÌSØl@`ÔV€µ°Ý€� €ÙÆr¹<`` k@ˆ„šÎþWëìÿtmî6 d¸E@h),S8Õ)B€PRx§ÀùÚ¬R,Mþµss¹ÜrBŽ Lvwtt,T`� �ýg+•ÊüB¡°ÑìÅ5Oà× Ç¼K¥RS �Ah ›†‡‡OPØj˜°¾¾¾Þt:ýmþ8‘H¼À„�¥°&›Í¾hppp§aÂzzz¦U«ÕuÚœÛÑÑñÌH$²^�àƒïuè¹Ç `V(¼^›ÄÅãñc£Ñè·5ùýÄ?ÓÏøZfùGUYr_¢ ˆ>¢p¦Ÿ_eð$™L.Öä‹Zt<Oì{¥RéµCCC0ø© €ïiò)¨�DðÎ�ÑG"‘ÛÆý�www?˜H$N2ø!€¯iòß^.—OÈf³ë ^thmÿfõï7ú"¾­ÿ_ïr m�å~¶e÷îÝ'ªü¼ÃàE·æ‚/ª_du¤€ö-ug*  Ú•¾¤ f]µZ=�àM2™Œë¬ý^«spT˜¯öÃÞÞÞ†¶DàG«tvyR.—+&lÊ”)ÓUº@õkœc»ººþOaãTCÛ!𛥙Læ4õ%Ĺ³óîîî ÚlÆYú�¯)¸ë ¸N �pM_Ø3ê­:ûÿˆÁ•ÿÝ™ÿjMÌqk2w�€–q^—CËQ Ðö4q¸'ÿ�EðNgã 4ùßÛŠà¸ë´±IAd¦¡åÚÝcj ²Ùì ƒ'šx/ÔüMmv[ ¹Ç«mT%úÕ†–"hg;+•Êß+ÜmðDà}šxÿ×ÚÇ$Ux¾¢ÊÄCË´«­ Çiéx“Á‹¨Î¸ÝßnmFÿMªLÜ ÿ>–yZ„ m,—ËÇ+l3x1I€;Õ/¶öv…þ;oW34wh+*¯Vùÿtmî6LØÔ©SS±XÌ=±o¶ùÇZö÷÷ MA%@;Y®à*Cð ‘H­°Þüœ¹Õju�{ˆ‘¡)Ú‚*ïÍd2gk³j˜0wë]4u:Ö|H•€™î!FŸ_eðÄ•½¨Ü›'ǽŠXݧô3z½aBêm‡&­9 k žhrû¯H$r[íÊx@Ǩ[õ³:Õ0n„õ´Eà¸l6»Ùà…»s뀫v±à—‰Ä‰†q!¨ Mþë´p‚ÀvƒÝ +Õ/1Œ™B@W4ý†‚À cÆsÔêL&s–ú’aÂúúúz¤¾¥ �·çM�Âh¦\.ÿ}±Xü¥á°¨ðDƒî2€ÓŒàÉ”)S¦+¬#x£Ÿ_º««ëÞT*õtÃaxñ6•ÿÏWOEуÞÞÞÝÝÝî!@3 õp¤Úwzzzžb8$B€qs�nÕYëÙª|ÐàI<Ÿ‹ÅP8ÊP7úy£ŠÀ= 1!Àx ©½‚g·{—L&_ÙÙÙù]MXqCݹÊJ$á ‡@0;+•Ê‹µp—Á÷¤;MR_Óæ††ÑÏø„t:ýy·ixB€1ÑÀ6€ãòùü&ƒ' ïÖätsíÑ·h¼W)|Àð$ì€K`Óðð° Û ^DÜäÿ.C³½UË/g‡ç8$€5*ÿ/Òæ.ƒ“¾¢°ÀÐî¥Vj'år¹û {ÊòL&s®úŠaÂt�D"k´9ÛÐR 9u/P°}ÄÀr€«V«PpåS€:û?Jà#´Ub’êÜ=B€ÇÓ™RUí|•LßnðD`¦&� Úœahú�¬pƒÎ0y:�OèWÕ©c`eXß1@Âm­&­9CCC; ^DnSÿŸßQxšŽƒÏ[€ðZ•Éd^Ößß_4x1YëÊî–³ÅßRx¹–rÞb!ÀpZªp±zަN�šêììü¶&�YßÓ²Àˆ~—¯ccƒ…• DöŒº\ƒÜEFðDKÈGÇb±õ€àãõ„ $ÜsÓÕ�•Íf?nðDsĬh4êÎ�5Ê~ׄââNBÅjµú2€O´„:OÀ½€fš!�Üõú=ÿ—…!¾ªÌÉçók ž¤R©3ô³tN6š~ÏïO&“/²€#Áö+ fÇ«°Ùà‰»r\gˆ·«E �§ß³V"_êííí³#Áµ±ö@^™ê�»‹êM5„Íô®®®›,À@éìu&“yÉÀÀ@ÖàELÀ=x‰!¬^­*ÐÙP<'€e:û¿P›UÄõõõõêgùumÎ5„šöƒU‚žÛßßÿ¨ • @4X½Kà|#x2eÊ”éÕjÕ½L‰w}ÀT[·Z€Ð¥9«z¶À{ žÄãñc»»»7hàŸiÀŸ½Ô½!Ò†åÀÿv+œžËåVV A‡××Ïät:ýMõs �¥‰XÿtÜ\©àüSCÀÆ(j@›Ïk€½ëéé™ÖÕÕåž0ËTÔñrãðððõƒƒƒ44 !¨¿î-€*cn6x�Ç��F£ßÖÙáцÀÑqòcWòÏd2ŸÓÇaCÓ€úÚR ¼Ø£D"1+‰¸�2†Ž�ª{¶C¥R¹J•²ïZŠÔÏF­eÎã5ÀÞ¥Ói÷ w-ÅdC hòw/ïY¦cä*ž”Ù>@h€[­³ÿÓµ¹ÛàI2™\¬Ÿç-:[Œ‚`«~Ÿ×êøø”¶‡ m…x¤n™¸ �Û˜h‚{k%÷Xg^‘ݦ€ ïRx¯Á«€ëÕ/1øYIÇ„»ÈïJ?3´=B0îâ&µsr¹ÜrƒWÝ _T¿ÈàWÊåòÒb±Øoð B0~»5à�®°ÚàI2™Œkíßýçü臵’ÿ´]6ø!MþY zó …ÂFƒ'S¦L™‰D¾£ÍßÐ1à^€õUõW)Ïàk„`Œ4èmW8Q`«Á“ÞÞÞ±X̽ö(ƒ/hÿÏ«»ÙF_áûˆ!ÀhÜ\*•æ í0x’J¥\éµ–â?ø¥Ú5šø—©Ì(„àðÖªl½P€×˜z”L&hò_©ÍnC[Sð]S+ù»7q‹_@€CÐ ¸Bg@‹�‹žŽB‡ìG¢+û/VXaðj’*_Q¿ÀÐ6´�»ÉÞý^®Ò~¾Îj„àÏvU«ÕWäóùµO¦N�šŠÅbßÒælC[ÐäŸSÉÿ#‘È5ýýý�`„`Ÿ�•Jå€MOtö”&›ïhóXCËiòÿ¹Ú5*ùÆxË%ž€˜mU8™wœ{§0SÀ=hº¡ej×µ¸JŒ+ùË€ƒ  ì6–Ëåù\í]"‘˜«à^Ûkh•]jŸù„öé‡ 8 BBË= EgI �©g ‹´Öì.¦ŒšNûò#j×)„ݨ}zÀ€1" ¬–k°¯þ CSh÷íWûßáááky‘ê…€°(©p–ΜV¼š¬°Jg£ó §‰ÿA}}ï­êKÔ!�§A´ n�OG󨧧gZWW×] ³ S«Z}S?g·Þ¿Æ€! Ð4–n/—Ëóx#šw‰DâèH$²VÓцFTÅê3jŸ, Ð`„Ù/Ô^¦°Ýà‰ÀßD£Q÷Йi†ºSXݦpõqµÏär¹¢6ZyÜi D@ ¹[§Ôh@-ínñãÕÔØÏškÝÚþ%j϶qr�ŠÖ>õíSy«3B|KFVgZóu¦µÑPo] ›žk8,í‹îžþkTòÿ”ú!lo˜~ººKÕÎ×±”0oÞ¤“�ë¬ÎX€/¹ûªNVØjh„a�y¼>‰üPƒWÄp0ßÑ~x•Nоf\ŒŠ-©½DÇ�›ü_]Ç;kþI­î!€J|G`Óððð)�~ˆöžÉ¼[ƒØ» û+iüœú+uæÿ3Fui>}��žùÿ­5ÆsëýÌBüf­‚W¨ßeh†N�� /0ìÐä¿´\.ßP,û �ÞÞÞ¾X,æ.ôsÓþ?k íŸPð|³Õ!¾á®¶Ö°X›eCÓhŒx®«¾h�ë²púa­äÿcßC�ÂñóÔ¹gi¸³ÿnkŽº?3€µ>øÅGÎ4á¦Ó ós…€·[ÈèßüMþsõï¡€{�/ûÜä¦Úw5ùoV;ךœiÉdr�Õ•´½jµzQ.—[jh¥¨ÆŠ êÿƬöÚiw…¿{¸Ï#H___¯Æ¡ µùošøÿÂZëVÓs¬N¸;mËÝ«n±À C«UôûpO6ûq@ß#ð��Þâw³úÇ �x<~L$ùwíûÿ¤ý¾ÇÚëÕÜÒ\]ž>I%íª¨RìB•a×Ú†J‘РøßÜר]¥ ùMã?Ô¸7gj¿¸L›¯hÇwg¨*±PûìV„´#wö<�•m6´wÔƒêŸeþõ˜ö¯åårùÊb±¸Å€Q“´Öïª]î-~3­½}VKçZÐn¶j€>Q`»¡-iÌ8A¿£u>|»à£j×kò¿q`` k€L™2eú¤I“.Ñ>ýÏÚ¥ÓæE…€>«Ã’!íd£èù ÐíOã†{rÙÅæÜ׫]­òéíú8b€ý)̺’ÿk5ùûîú¸z½Y�€vq‡’íYÆC€ü¢GcÇ/Õ?ÕÚ×ç4PÞ �ò~j’ÉäâH$âžêwœù˜Ì-ª˜þ“yD@;X^»å¥nÀ@ãÕÓÛ¬�h`Ìé¬î&µ«ûûû5@�F—Ô^áû4 †º, ÐR:(ß«4˳é}*•Jý@ƒê Öz¿ÐY¿+ùÆF_/ ¸GúΈÅboÖ>z¶>a£}þ•µ;[&Œç %4ù»³þ –|KƒÐ¿ÖÞ4Øô‹µ¹˜oÙèƒ}î4`T‡ªTîÖ¾ËÔæY€éßw†:O!€JZa·&�Ó•`W|OcÈõê.²æq×�|¶\.b``à!FMѾøFõ—˜¿oa·$�T_± " ©tò6 îå:s[g„x<žÔzëCM¸½ê÷ �×hº1/ØÞ%©§«»Dûß¿ªo—§ú5�އ^*a, i´³n×ÙÛ<Ð,…B!§òëÛ4ßh àžI î* t_6g<–D"1·v•ÿ"í{¡}žŽ÷jõ ‡*h í¨?-•J§ í0’ÎÈÜ{þÚê糕Jå“:éßd@�ö³óÔ]®}í¹ç!- <Û&ˆJÎ�É)±ÏW(K¥úË´,p�y }%£ö?ÃÃÃ×±Oooo_,soð[¢�O1ìïYñxüXUä¶ÚÐh«TÆu*Mgì÷ª²øum.´qÒÄïÞá®òÿ¬±¯ FËLÏ× ÄåÚ?^§Ðe8 ÎÎÎꮳ í: šb©ÊT§ƒzhè Þ ØcZ·ß3Ê=öôešüÿJí&c_�æ%•ü_£ö]€Ÿèó9€CsÚqMê®6¸¿5—Ë}Ä:cx¯À –>£öI•06Àö®õOU÷Ïj®ì´aŸÿ‘£&i¿8WñRnñ«»ù6,À3 ôÛ´¾;Wƒý6€'èëë;RãÄ%jjòOB?ß§«â¶}<‡J<ÑN·ixxø”ÁÁÁ�ûQÉŽºËÜ»B4ùw¶à=S¡¢ñøTuãzr'!¦n�Rç"}¡ 8�*ùŸY+ùohšH$â®  )–+œk<Ë€�Þ‹ÅÜýÜ%�4´ÂI6úüŸ1_€ËÂ0Îd2g½ÞÞÞ*ûJàwúø~#´Ro:�~áxþ•ŒYí!@çr¹¥ Ì:Tò?UåçË´ýRCÛ¨V«'ªÛ0Öï'`¬JÚ¹ÎÊçó« @XMÑ™æùêߤö—†¶ÓÑÑ1WÝÇÆúý„ŒEÑ=�J`��D"qtí¬ß½Æwª¡m)üƒ�ãºBg‡À¼l6»Ù„Š&ÿ£Ñèejrá2è�Çã[(6Žå› 8”-µ0®‡OðµîT*õõ/p¿¿(¸¹%B&N“ÿ:÷zÊ\.W0�×ÓÓó”®®.÷¿ÕÇißÒïðDuË÷ð$šüWëìÿ4ãÝî@à%“Éçk½ÿ ÷î?]† p•€1]ÀǽðEÀ=z’WT%ÿת}Oà'ú|6 PÜu³Æò�Tð' ïTxŸ$MúSuœÿ‹&|Wö†!°¢Ñè‰êûVWBÜä_U;'—Ë-7�3uêÔgÅb±׿9šü§¯v]À'÷}„¸ð*€o€@Ñ™ÿËkú-2„ŠÆõË÷BL;I¶R©Ìëý¤|áˆd2y®Öú/Õös ¡¤ðw ���‡õ}„€�Rئp²ÀVà{}}}G긾TíBMICèE£Q÷2!BOƒÁ¶àIDATÄæááá“w_ÓYÿ‹4é_Z­VOWåÁ>ØGû‚ _8Ô÷Âg­Ê„ ŠÀ¯bšüϪ•ügp ‡Ý7!¢ ÀŠl6»X›eà;ZãMÅb±‹´éÚS 8´ã÷ „€ðXªp‘ð�T*õš@•&·$@2•ïÊf³§is—h+*ù¿0�^¡‰ÿLšLûÝßÚA.$Ãr€sÕW @»ˆªäÿ-ùÿ½­ó‚ƒý!ÀçªÕêr¹ÜÛ @[HH­Ü±ÚÓ h½çì>U{Ð Ë @˹'³iíÕ=Õïõq²mBûäÓÔõ¨ >ñÏþTRà¬|>¿Ê´RG2™|¹ÙË´ý².ñG›ÒÒÔ_kÙøûOü:!ÀgT(¨[ °Î´Êšü߉D.Ñö ÚßL5B€Ÿ)l/—ËóŠÅâÐt}}}Gª ÷ïÚ¼@'ý ücæ�¾Hð�-¥RéÄ¡¡¡ ©tÖÿbWòWxµú¨þCð+UÖ©-P(€f‰%‰×E£Q·Þÿ·ø˜Â+!À§Ve³Ù³Ô— @ÃõöööÅb±‹4h.ÑÇéÃSíwÚ˜Îþ—)\à6 @C¥R)w/õ[4ù¿^}·£e­är¹û÷ÿ! }½Màƒ ‘"étúUê]É®Áæ–íLgÿµs•Ö–€†èëëë­V«®Êö&µ¿0 t]! ½ìÒ/i‘*k @ÝÅãñc"‘Èe ÚoÔ±Öc@ˆÚ˜¥¬ÎLNÎçó› @]©ä?OÝ¥:Î^ÉSýVÚÿŸýįÚ€~1Û*•ÊÉ…Ba«¨—îT*åžã©Ú_¹/0ÿ#䎲Ñydß-¦°ixxø”ÁÁÁ�À³)S¦LïêêzSíM~i°—«‚M�:õ™¿Ú÷5B@k­Íf³¯P¿Ëx’H$fi½ÿ m¾Vc]̦p…˜�õ'4éÿ«ÚÅjG€1Qµìq·ÄšhϨ‹s¹ÜR0n½½½3b±ØhâwüaÆEs! …^§p»—t:}¼¯hòŸg¼xæþÍQ¬T* óùüZ0nÕju¶Ê˜À;® h²:ƒ™§°ÙLÔ÷ €gª¦õÙèRÚcîsÄÐH[ŽËf³À-£=¨®hàÙþ· êLàSµ§î6uS­V @}�4�ªnÿgjÚ‚ùÏ €'šßR®'Ü.%¥—g³Ù � jûµð‚p;+•Ê‹tƱƴô À„éJ»žðd[GFFNÈçó܆´©jµúS0aû–xlð~ôCÙ¤pòÀÀ@Ö´3® ¼‰«E5 k²Ùì"mî2mMÇ+Ë€Zˆôöö&Yu«ÀËŒø‚–ë¸MðHA E0ûp&“9ÇøŠª�€ ‹Åbá µ‡]¤ðVàGÜ&x 90ÖPÒ?þ´\.·ÔøÕÃÀ‹T/ ,ª0_kŠë €ŸQ <ˆD"¡ ;æe³ÙÍÀ×t,?ÜÑÑa&Æ=+ L!`K-l7A@%ð@sb8® Ð?t]µZ=�G©TâšÀƒ°,|­ö ²k×®ßOš4é=`Bt‚¼¥#�Nï±€Ò?p™À…Ú¬xœÀ.(¼Sà|#p@�[pÏR;'—Ë-7pPA »NWXmà�4ùg+•ÊüB¡°ÑÀa"(lS8Y`«€1ñ}PØ<<<|ÒàààNcæ÷»ÖF"‘9ÆÏ·•UVd³ÙÅÚ,7¿V–*œi&ÌW!`ϨË3™ÌE<ñÍr€&wÖ¿X€<óK(V«Õ…ù|~­€ºðCØ©*ÀI › ÔM»‡€­î!@ Û ÔU;‡€�åryþÀÀ@Ö@ݵePùM6›]¨ÍÝ¢o\®ðr#ÐPmTx&“9[› ÕËšü«ê.T`™€¦h‡PR8-—Ë­6Ð4- šü ê(¬3ÐT-  ÛËåò¼b±¸Å@Óµ*l)•J' í0ÐM¿;@€uÕjõ­ÕìJÀªl6{–ú’€–jfØšÉd^m -4s9àØt:ýUõÝZ®Cók"wM€š»-°` eš~a`GGÇœH$òÀ”)S¦h™V½;`Fww÷†ÞÞÞZ¢e/REà¨X,ö@*•šc éZúA�¸Ú½Édr�€¦j‡W w+Ü¡ŠÀyš¦B€«DÔnVxŸ€¦h‹°�‚ÀÛÓéômÚŒh¨¶ 5‹U¸Sý$ ÓŽ!ÀUæ©"pßÔ©SS¢-C@ÍìX,¶>‘Hm îÚ98ÇF£Ñ Z˜i ®Ú=8Ó´<°N�¹êÆ!Àé�D"w«"p†€ºðKp ÆÔnO&“K xæ›°�*7¨"ðqžø.8ªü‡‚ÀíÚŒ˜�Žt:½Çük­ÁÂþþþ¢€qñe%`?s«Õ꺞žžiÆÅï!À- ÌìêêÚ�Ç�50f¾Ž‚ÀÑÑht½‚Àlcˆà(¤:;;ïK§Óó V`B@ͤ={öÜ™L&8¤ …WˆF"‘ÛTx»€ƒ \ØÏûR©ÔÍì#æ÷çŒÅªL&ój8 úï6¢åó-aîºNmA.—+€@˜úÍþŸ M¢|LA`e2™\b&dhhh‡ÂÀëLæ(­kþ‹ÂÀÏ À˜é˜yxÿÏ„€&êpOŠDnH¥R5^ìÎårÿ«00SƒÚ|µoºç¡€CÚÿ·Ðú%¼EAàvmÆ €' w©½²R©ü¥>Þ 6dH´_ïÿ™Ð" g¤Ó黵9ÙxV(ÖRÁÅ*©�î õ¿5�óÄJ@‡&"Jh-¤�jÓððð)ƒƒƒ; @=EUq;Mýeø^dlddä/˜ÿt‹ !  (lS)óäý1ê'‘HÌŠF£—ëX;Ó]¤k@H©Zæž·QÙ÷™å€6 Aéh Pâñ8ïJ ŸÏoÒàw¶ªn* ä í÷îz€Êþ_#´ �dggçwU™™gBËnÌåroËf³OÕ€x�Úƒ„ÇÏŸøB@{™¬AéÎd2¹Ø4RIAàfµçkÛï;¸Å!°ù‰_ ´U¢‘Hä6UÞjNËßV[èn1ÔRÁuúÒ ¤ù…à#Tp÷ AgŽ ¦L™2Ý4�øOuuîðððÓ5˜¾W_ú£>r ëB€ÌèîîÞÐÛÛ;ô„»ÅPgSïR paà<µà|ã&!ÀG”䎊Åb¤R©9 •†>­6«R©œ¤Ï«ª´/*A  W»Wk” @Ëåóùï¨2ðêjµzŒ‚ÀÕúRÑ€6s ;. ô©ÚYÇ…:YfÚF___¯ÁùÚt·c@8Ð�!ÀçÞ¯ ðÐn:‰Ä«¢ÑèeÚ>Ñ€Ñ<ñ°æ‰côg,øœÎ4ÞžJ¥n6íf�– Üs>NReàú|«- yâ ïÈ €~Áç)Ü­ÍI íär¹Ÿ( œ3<<–ð8–i€¸P›Ux ÿsÔ¹ç ¼F'�†@ؽ{÷S‡††vîûx�Õ §i³dB¡¯¯ïHû—¨ý³Â@Òà[úþZcø1cù^–ð$èìàÞd2ÉëL��p·j©à¿j·.Ñ—~að«1]àp@ s"‘È G€0Ù�ËånT x®Î(¨Ý©FÅØ_¨‹ {› €àQUàNµ###3ôñFµ]†¶§ßט. t¸&cQÔ‰À| ë @h%D'ÿ¢v±ÚÓ mÇ=NÒcý~*‹^ð÷êø_dBËÝb¨¥‚�h’ù M6g©qbÐ~ÖŒç› «îH$²2™L.1aWQ¸]íï+•Êß( |^�W”·�±>$hBƬcô©B7h éC¶·:°Iaà ¥Réúø!…�Œ¡eªÕê¸B×`¢nÍd2ç<Þ$U ߨ†Ë´ýlCÓ(€åÈRãù;T0Qÿ˜J¥îV?ÙàÏÜ-†Ku’0C“Ò)jßäæ¹ÓƉ€ s¯'U¸¿§§gšÀè¬ônµWV*•¿ÔÇëÕ† £¥€q¿ –Ofuww?‘HmÀ~´Oœ4eÊ”é†Ð+ «2ðo*¸§^¡/ýÞPw [ã\€zÙ©ðw‘�fST%ú­ú©j_RX¼J“ÀŒŠjÿpï'¹LûÆ‹ õ°AÇØñ6NTP/Ó¢Ñèý •ó ¡§þ¿4¸§Ü[éÔ^§/ý@_ûA2™tÛ¼©îÃ/©½X•�¿ÖçÛ¸ÅÐwí…M•Ô•vÄŠº×ëà^a¥žžž§h‰èamN9Пkù�‚Áõª-uŸ1ÀF÷›®®®7¹'ê#×�ßßM¤ÚF@Ýíõ_¹\Ðјrƒº±ÎÂkÂK•4•»ŠUí<­õm4Åd�#¿RÿTkŽÚ�––ËåŠÅb¿¢Œ¾X,æ– Ü�)O±�ÐòÈóU%{Ð&ˆ€VØ­÷ôÚ•àð9-|LïåÖ|%…wx¥ÎfÀ¨.Íko¨-¼À‚íWªˆ<Ë<`9­0Içš<Î3øZ<?FÝ¥ÖÝÚ�Þ¨¶Yƒþ½‰Db‘¾Öa»aMŒŸQ0œ¥ªãIú¼J� j¤“©/šGTÐR:8ߣƒõÝ_Òø±FÝÉÖ&´?¹'^‰Dnænìã^p¦}â2mž§Ð8ÕÂ]‘ÏçlÐr¸—)¸Û~™ÖƒJcÇéê¾lí©¨ýêÓ:Sú„ÉmŒr/¶º@AàMÚ>Ö|Lû÷#7Ÿa±€–Óyž&”UÚœdð‹wÛžµ¯^íW—D£ÑßhßúªZÛT+ÐRCš8¯ÖrÁ_jÛ½Åð;æSÚ¿o³: €v²±\.ÏÈÚZ2™t%÷3Qhù‰�>|h¹ú’¶÷ÂÖç©»\“êÔw›OŒŒŒ¼°P(üÐ<" ÝlÕ`}¢ê톶¤1ãx÷€ š~½o§þûÿgxxøÚÁÁÁ?`ºÅð¢Ú-†Ó­�Õk)Àa9íæX„”ÎgÚQ—ÚrgšþóßÞÕÕµ]�æVU5xSÌ=sBë{µTðŒJ¥r޾äù,»�¾`uB@;š®Az]"‘˜kh+š4ß­î/-´�¹[�­e�Ÿ¸G«½VŸÇýò#N9ŸÏߪ0ðÂjµú:ëþJíñÕmCûî «–жtà•už¡r•¡åÊfiÂÜ8‘·ú…ö¹ßª]§ãÿè¬pÀÛ{ÝÀÓÕ¹[ Ï×¾·ªçR€C%mË�©E£Qwe÷%†–ÓïbY�€£ß3t>ªþøoÒ:ñ³ ¡çÞd©öfµ§éÄä_õ¥­Ö:·[Q €/(ý~\`+M Û» ðßê>`!¤}Ͻ åZíwP“L&Ö@ôRk¢J¥ò7ªŽn²:!À74¯Ð@ìÞ"W64�»¿Ö™ñÿ©uZˆiÿû¹ÚÕ¹\î}Üm€í½«`F,{‹Ž765úY'¿Èd2ϵ:"ÀoÖê x…ú]†fèÔñSõÏ1ì¥ �Õ€“Ú5ýýý� S§NM) ¸Û /R;Ò@ûÞ[t"t¥Õ!¾£aÓððð)ƒƒƒ; ¥ñáƒêÞjxí‡#6úØd÷¢uŒŠ©zvfm©`¶Õ‰{ ’ƽéõ÷ð%Û´6vr¡Phå:��Ç_�F×댗 ˆCûãz÷e-¸[·F °½Ki/ÒñãÞ²yº×‹jµ}KaóåVg„ø–+ËV«Õ“ëy‘ þd’ƆÍç/Yi·h¨‡˜&.÷Ž€3 õò�Ú5ÚG?­~ÈÛ{WÁ³:;;Ý[ ÿQ�8Ð÷T*•¹Zöü®5!�¢Ä¼,›Í^à6 ž)|Lƒiª#í£u7«]åžDg€í},w"�.Ñþq±Ž¹§í÷G�*8>Í„€ Z¥ƒæ,ã�ñu¡5Ì%”®÷ù›ÛNí¥4_SYøªF�åÁ—:u̽V‡Ûej'h?yŸÂâ;­A$8÷©-Ôú[Áà™*gh@ªë3ËñgÚW¬î öË ¨Ñq÷wê~×ÈŠ!A¶e÷îÝ' í0xæ^í¬rå×µÙkh”?(,-—Ë×»÷ÛÐ`„šÔíPçq›V}èÌd¦*îvÌé†F*Õ®ÿ¨Îf@ƒxµ ±ðh×úP8ªÆsŸ3&n­ÚÕ™Lf•úªuD@X”*•ÊYù|~•Á³d2�D".ÔíÙè84…Ù_«»V?÷Oõ÷÷ ¨BBCƒ¨Û×/à⫺™¤ªÀWTX`h¦ÁjµúiíÎW¨Ýf€„„ŽÐär¹·ê!¢ à^«{ž¡©\¨ÕÏýÚ¼JKß6`«å8Ý£†+ÏÞ¡ 齆–Pp/{r¯4¾Õx>Æ�€ÐÒÀ¹FƒæBkÐ3¹Ã&™L.V¸Åë+S1qÚ§ûÕþgxxø:n�ÅXvËåò|^ûZOæ©sϘdh�²ÂØŠJ¥ò1^µ�C!f[5XžÌEVõ�ÇgG£ÑoiJZN�àû6ºTðecù O@FíT8…³¦úP8VAàÛ GÚ‚ÂÀ#jשý¯öó¼Fö·KAà×<ëéé™ÖÕÕu—‚À,C;Ù¥öY-ƒ}BË`B�ìÇ­¥ª[¬Òé C=LÖóMõs m¥öÜŒ»lô•ÆwB‰£íÇ ¡Ani&“¹ÈPk>¢î CÛRþÍ)¬¹‡?]Ýßßÿ¨!ðÀ!hP\¡ŠÀbm– ž%“É%š`®Wë0´-í÷î.‚¯ØèRÁ÷ �Eo­æ¬…¼´¥>‰Ä¢@œ6:IDATh4úEmvü`ƒ– ®ÖRÁíFB0:3Ú\*•æñ¶úH¥Rs¬¾¥Í^ƒ_¸å�ÊåòR®„`Œ¶W*• …ÂVƒg 3Ü눧üd·Ž…å +‹[ ¾FÆAƒ_VA`¾‚ÀFƒg GÕ‚À ƒÝ£¥‚«´Tp‡¶™K|ˆŒßn |§kà[mð,™LÆV«Í1øÕ¯Ô®Íd27«2ø!˜Uªjç(,7ÔC·ª+|KÇÄ€:>™Íf1´½ˆ7MV¹M×; õPÒ¤qª&‘eßÒq1Uíßµù�`®L$<)²ÍQ Ÿ_e¨‡É©Tj•‚À燉Dn«='h�w]¹\>AA`»Oà–Ô¹ëHª„ 8>¨ pƒúÄ‹Å-¥Ré8mn1`? ïÊ2À>„ X–(¬Tßm˜°¡¡¡ÕjÕUÖ0jC.—»Ò†ç¤Éë>-¼²¿¿¿hð$•J­Ð’Ëk aö˜–‰þz``àW0T€Ò¤õ�É®›2eÊtƒ'ÙlöLu¼À)Ī/bp@@)ÌìîîÞÐÛÛ;ÃàÅ­_¤PÅ…—!¤°RAðÓP„ ÀŽŠÅbÄãñÙO´üa�³5)T ¡àîѲڹ`„ àâ���÷%“ÉO–ëçùrãN�W{QÐk‚~] !‡IÐîH¥Rç<ÑÒÀšJ¥ò"mò§Óñò.ý®×[À€�РQ»YAàÝOòùü&÷,�­†ÀQà{ ° !ãÎpn6ŽO¶•Ëåãµ¹Ñ Ùááá׸M  „ÎS¸C›“ 600�ÕãK4q¬1øž»À½Hjppð�„ ¤¤Óéû¦N�š2x±;›Íº‹—|MÇÄÛUáù®…!·Ù±Xl½ªG¼¨¨"àn|ŸÁ—\5G¿ÃYÈ«3  3 ž¨"ðNM&绲²Á7ôûú­Z( MàLWX—H$æŸgYf?„c¢ôèh4º^A`¶ÁU>¡î,倲¡)Ü� `ׇ`ÌR���k“Éä+ ž(¬PiúeÚäZ‹Æ»W?ïó OB0^“¾® °Øà‰+Më ÕÝ9°ÃÐúù>¨ýu‘á€ÆMƒjDnK¥Rï4x¢3ÔÍš¨ŽÓæVC½=Z*•æqgËÁL˜ÂÀ{n6ÆO¶—Ëåãµ¹ÑP Vùááá— ýÁpP¸Ûà‰*ÿ©îß,$Týx? ¾šNAà™±Xl]<ŸmðDAàúJ¥òjm–, 4ùïQ÷&U?Þa¨+B€–PHuvvº÷ ,0x’ÏçWižJ r[*•¢Ôë‘‚ÀfMšÇi3¯Ð-V«Õ“î04 !@[Px¯‚€{ù ã’ Û5yž 0°Î|Jÿíý^¤p¿¡¡:Òéô€6¡ `µ&²Óµ¹ÛàE·Æ÷/ª÷Õûôûddd䥿24!@;Ú¨3Áy:,¼èPuåSª²œg> °¹T*Í Òu m�²€v4;‰<  ì(ƒ{TU9_ý[û[«ßù@sQ ÐÎvèìpž»àÍà‰»C�[Ô¢ÖfÜ#�õ;vwˆ” ME%@;›®Ik]"‘˜kðDK+Ëõ³|¹6wY{ùhíÈ€ hw½*ß­ à« ÜÚQ&“YS©TÜ[wZ‹¹§V«Õ‹j�>F‹´=�ÁÆVª¤½ÄàI>Ÿß¤ pœæàmÖ:»NSub©¡¥|¡cô©B7¤R©Ð½9¯Þ¶ »‡ ýÈšÌ=@Ý\÷¨cCËqa ßáB²º™¬PµJùjž5�~o?Vwª{ ‘¡-P à;š´ÎÐ ÌÝÚœlðb—&dw±àrk¼[õ¿u ½øÕ\�ÅÞßÓÓ3ÍàE%“Éœ­5úZè쿬ÿßëã ðëŽýŠå¾æ.p«T*' …­OªÜ“or—_X}ü^¿ŸÓuöÿC[¢À×4a�F×ÇãñÙO4Y/Ó¤}ªÕáŒ]ÿ~P*•^@ho„¾§ �êìì¼O•ͦ\àd¹\nµ&ð“Ô&üÞ•ÿ¯Óäÿ’ÁÁÁ–?�‡F“4qÝé�kðDøºr¹ì^G<®‹øôýy€W)H¼IG m� 0Üsñ#‘Èmª¼ÝàI±XÜ¢r¾{¨Ð˜ÞÛ ïû®¾ÿ¹ _7ø!@½/•JÝlŒqž¸7ú¹7ûisí!¾­¤p¹ª'ò@ÿáî�¥Éiµ&§ÓŒ[Ó¼Ši®X¡þqïoÐÏ÷窾¼&“ÉüÜàK„�¦‰j�Ú•©'|¡öróÅõê—¸—ÿ¨¿Vë-ê‡ ¾ExîŒUÝ)<­Î;-³ü»ºõ³¼Ûà{„a±Ca`ž&¯1]è„Í‹éZ¿^§3Ù9`/B€0éU¸7‘H,2„¡Ó‰DV&“É%„!@èt¸7äD"7¤Óé�b„avE*•º]}Ô€"5ÎP¸S›“ B€ÐS˜§ pOOÏ4B„¶7ÌêêêÚ�Ç�5 $P£ pt4]ŸH$f„Ø�‚@JAàþt:=Ï€€#À“MÞ³gÏ�Édr±F€PE ‰DnSEàm!íý©Têfõ !CU�óTX©Ín„W ÀíÙ³g�Ú‚\.W0 ¨À©"0'‰< å�£ BŒÏ …� ½½½3 Rç³0IDATð9BŒßôX,æ*s ð1BL€ªqµ{‰Ä"|Š×‰DV&“É%ø!@€:R˜§ pOOÏ4Ú!êLA`VWW׆x<~¬mŒ   pt4]ŸH$fЦÐ )�ï¥ÓéçІÐ�ª}¸\.ÏÊd2¿0  u .öìÙSV÷uõËr¹œ»K b@#€Gšô7«[¦³þÏ‹Å~|‚ ‰@Ý´î¿,›Í>`€`Œ4ñïѤ¿¶R©,Ëçó_Ò—3ÀÇpšûªn¥&ÿ[ …ÂÃ!žÀ]à§3þïjókÚ^©rÿ#!lïÄ_P·Zý×¾‘Éd 8B€ÐÒ„ÿunÒÿšÎö×j{Ä€!�Ú…}µùµjµúµ\.÷BŒ èþ ¹ÿõw—J¥o ýÁìE4Eµµšø¿­¶Fgû€"ðµÚ£z ¶ÆMüšôÝ6�ëÆ€ÀWܺ¾:·–¿ïLß]зˌ!€ü_µZý¾úï�ŒŒÜ],3À3B€¶Q»zÿ—Ú\¯¶Áõ™LæGê‡ @Ý´Ò£6:áï�ô#‘ÈýýýEЄMážÈW»Gÿ³ü߀–!¨§’&û­šìRÿ§�F™Íf™ð�6C0.µ—ëüÚMîú¸w’w“~µZ}(ŸÏosßb|�à@~¯Éݽ9o»šë÷Nú•Jå¡���‡ @ €©]}¿ÓF'öGtöþHm{ïdï&~�Í»m¶„!ð1MÚYukšð³:{ÿÓ_(¶Ô€úڭɶ¤É×] 7\ë÷}.Ùèýî¥'|}ï×ök»Ü×ÕhÿÓ„®ïÛÛÜ׆††Ü×3ðàÿÿÿ¿¨ÑIDAT /žš7®xIEND®B`‚python-django-debug-toolbar-8.0.0/docs/_static/brand/Logo-Element-Black.svg000066400000000000000000000017101524561404200265140ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/docs/_static/brand/Logo-Element-White.png000066400000000000000000000425511524561404200265550ustar00rootroot00000000000000‰PNG  IHDRj²Õ“øIDATxœìÝ ¼Ue½ÿñïI µ«e,»tµ¤òVÜB�ÌÐćHK­0-•{Cou+¼6Øœ¦Ý©TÔ”R©ˆœBC‘ S4R4�DI@Tàÿý�µQ†gï½ÖÞ{ Ÿ÷ëõsàØÀYëy¾{=Ó¦«LZm©k…ë¹:®ëþÞr×®Ç]�Õ¾^XûõÂÕÕÕÕõ° ]„ TžÖ Á`Í�áa�+‚Â#Q s Ò@µE@x¤Voàëù + tê1ß5Ï5×u¯ë>×_\³–@!¤õ¨k¶’P0{�šã€ðœä!@+ݯBA„„{\t8xR:Ž ÝV* 3Ö¨?8<-mE�1ñ0æ¬ f:,€–!È«˜Op·Ör0xV2AP$Ë\¿sÝX«é,_šGPd±<ñ·z!ÜéP@›Ô‰ Lb—Ä›U € "(³¿ë…·“ þ&Ï#¨’X�ðK×‚ß ¨8B€ªzÈ5AI(¸… †¨"B$§,þZI(˜Äþ¨ B¬-¶4¾VI ¸Ú�`±€’"ÀÆ]§dÈà ”!êóŒ’!ƒ‹\×1‡e@€ÆÅÒÃK\cf ((B¤s›ëB×Ï–(Bd#ŽB޹ndûb!²;^ìºÀa`®€œ"@ë,u v¸W@½H€VXàÚ�€<ÛT€¬ÍqíÅPòŽÙš©$°±r�áÈÎd%C!²1εŸÀRA€ô¾åÎÿ¶FÑ0'š·Ò5Ê�ÿXD€æ,wìp­€‚"@㹆;LP`„hÌ<×0ND ~³”€ùJ€ÕPŸ)®!” !z7Þµ·À%B€�ãÎÿ0׳J†=‹cÖOp眀’bb ¬/>õ�t/ Ä°¶÷?È`Š€’#À bæ,œ% �˜ãÚÃ`ž€Š`b H3\»P5„Uíî°P@ÅTY| À2DPU_qçŒk¥€Šbb €ªYá:Ê�ÿ8GP%ñÚ?ö˜,„•ÿöu˜!ݘ  T²��ÒªU«¶Jƒ ìfºvu˜#4Í�ÿV®›ýå�¾¾U(B€2‹±ÿÝMs§¿�/Ó\C]¯uM÷ï}R(¼.ÿ W Ê'Nü�À ¡iî"vðå×€þøj×GüwüO¡�x ŒNqÇt €Á¾LWÏ àšåï{‡PH„eo6�sçÿE!wìÃ|™êê×Ë·nëºÅß’‹>¥`PË]‡;LRq·0Ò—‹]›¨1·¸>àŸÁ?„B µ(ƒE®= éÅ'z_.Uã ¼Ëu·ÿ3ö � èâøßX8Mhš;îx3|�¿ü¦Òy…ëÿg}5þ3…\c8@‘Ívíá0_hš»�>¾\î¡l]ïŠ š‹…\"(ªøä?ÜÌ"¡iîúúr­kˆZ#6i:À?§ÙBî0 ˆbìO@:ý}¹]­ !öø½ÿ»r‡ hƸvX.4Í�ò@_îp Të½Äõkÿw~“yùÂp€¢ˆ¶êDwþ§©¸Ù�Oþ1ÐWíó>èŸãBÇAìü[�Rq“?Ü— ®>ꜹJæ Ì:Šáy÷´’ €€”Fùr�:BlC<Ãÿ{Þ't!@žÅéït˜$¤â÷¾üXù±¹ë—þß5Zè†äU,-ÛË`®Ð47ñ±ó_lä†g…Ð4€>J6. q“\g¸ ÿ€â8Å�%N6k%€¾JvT" ~O».u�îçp¶J‚ä_ Ùï†gŒ�ŠÀvJ†S ¨Ïîs\cü >¡’!ù¶Üu¸Ÿ‰B*Ññ߬äP 7Ó]?p�/ú¸ÿÆ€üZäîhš�Š@¼ú�!€¾6,:û_¸Î¨ÊsGòi¾k�2�=vŠÀ_.wõгØt+VŠœYÆC‚6†äOtüÃÜÍRqˆåç»J³Ã2ëüÏt]äçm™*ˆäK¼‚Œ!€EB*ßôå$k‹‰¶q>Äüœ]¯Š#ù“ÿbàr¡iîü7ñåb×H/ˆÍµâ¾ø??c÷ Ý@>Äò¿XÈž)8ÄÞÿWº† H<ä:ÛõC?_‹…µ€ÎŠNÿD7N§©8Äéñzw°éwJvõû;ln!èœÇ\Dz@z|ù�kG¡ê~¢ä•ÿL¡W„ 3âà¡n¨æ ©8ìäËM®m„ªŠ@ý#×Ù~¦æ u#íÇ1ÀqªdÀVBÝ­ä•ÿ%L¨m!h/ŽΈÀ¡¾Œsm&TIÌ£¹ZÉ®~“…T@ûp pFFûr®P%Oº.R2Þÿ€� BМ€Ó|ù¬Pu�å:ÏÏÐ!S„ µ88#îüãµ¼þ?T¨‚©JNñû•ŸŸ•BK€ÖáàŒ8léË5®¡B™=ãºÌušŸ›»„–#­¯-÷åàôbé_ì0H(«G]?t�ãgæQ¡m@öb�rœ8KHÅ`_np ÊèN%¯üêçå¡í@¶88#ñÉ?@?¡Lb|?övˆSün:Šdg†’À1À)9Ä@1—bK¡,âðž±J:vÊÌ B��k]‡¸q[&¤âGÇ‘¯›e0GÉ¿óý|<%ä !H/>ÝŒbSz'úòm¡ â<‡ï¿’#²ó‹¤óU7p_RqçßåË9®ÑB‘Ų؟*Yâw��{„ 9ñ©ÿH7tã„Túør¹k„PT±"&¶qãgâ1¡0@ãbÜ?Æÿ¯Rqè«d>Å¡ˆþ ä•ÿe~ž ‡4f¡’M€f©8ô÷åf×@¡Hâ¬_)™å‹Ph„ ~±ö7|s„T¢ã�c`·Šâ ×JŽð}H(BPŸØý/ö˜/¤â¯þc ¯Pq�éëûÿi¡T@隸âÓô†û2ÁÕGÈ»xSãýװį¼ÀÆ�w�dÒSzGûržëEB^œºæ\IDATÅ'ýK]§ûžŸ-”!ذXîtœ�šÀ×|ùŠ�W+Yâ÷Cßó …Ê ë‹WŸŸwcxš�Š;ÿøÔÿ×H!�¦+yå?Þ÷ûsB倵Åkÿxý?^HÅ`s_~é.äItöñs‰%~Ó„J#/XêÚß ã!€8þ÷z×`!/þéú±ëLßã�!Xm�k7Ž3…TbíÿÍ®„<¸WÉ¿‹8åë"ÉQ§{qÆyz;)YZÖ_褘×obâ•ÿõ6€€ª‹í÷eFtzC}¹Òµ•Ð)1¤1¿ï{ú>½  ÊâëA¼"MÏ NŒÉ”› �Ûøž­d‰ßbu" ªâà£Ü`®RqíË9®.¡Ýbv,ñû÷2šA@}Ë æ—„ÔNñåóB;Å2Öxëò=&²"-Bª$&Kë†s¬�Š;ÿM|ù™ëP¡]S²Äï,²BV¨Šå®ÃÝxNRqØÒ—ø{&´ÃÝ®3\—øþ]. C„TÁ"×pvGKÏ`_~ã$´R¼µºFÉ¿ÉZ„€²›çƉhé9 Pr¬ò¡Užt]äú?ß³h1BÊìÏ®½Ý˜ÎRqø%›Ïl#´BlTuº’]ý–PòæÍ÷õçz£¬âÕÿ;é¹!бÿ[Dh…©®÷»¶÷½zÁÏÜ W,c~Ø×7¨…(£˜´¶§ÔEB*n€böÿu®-…¬<ãºÄõߣïvýÒµR¨´Xqã:Üõ;ÿò�®+Ù|ëhµP—ÿ W (�Xþ˹¯SrÓëÿ¿+6ÊÊ£®ºÎñýù¨u?g/õåã®ã]Ûõð-1пUA‘€29ÉÊ·…TÜ$D§;޲p§’%~ã|>#@ÝÏÙë}ù¬ë#êýMÛ�¾w®V P±ðO„ÔÜ$¼Ù—? iÅ®~±—ÿ�jü|½OɧþFöÙ¸Â÷ÑájBŠ.ÿ9ˆµÔÙr³3Õ?#4*ï¹PÉ?ަF7?O[(Ûÿ¤kG5.¶Š~¥ï©'”1BŠ,Žÿ�c€g™r³ðb_b_ú7 õˆ5ýgºÎ÷ýø”u?G¯ñåS®c\/U:Ÿð½u¶2F@Qŧ¬½üPÌZÂMÃ[}ùƒXE´17+9Åï×LFÅj~vvWÒùÇ«ÿM”�ßû¬ŒPDñ uŸVo¢�îÆìd_¾*¬)öïÿ©ë4߃÷ÐóoÏ>¨¤ó›Zã�¾çþ¬ P4±míþ~– -çæ!v�á–· qrß×¹¾ÿ îgäJ&úÅjšÿ§Öú¾ï½Ï*C„I̶é‡àY¡mÜDļ€xûòbUS ‰Ä+ÿ˸÷°šŸ‹7ù{iħÿ>j�Ì÷ `¬EqªoüÃh„ÛÏç÷úò%UÏe®¡þÿÿv×%Ü{îüsýÖ_Îr¥ö€[wW†x€"8Î ð¡cbKS_îpý‡Ê-¶š>ßu†ï¹‡¨ûþßÊ—Q®ÿvý›:+é‘Ê!yŸ¼âõÿx¡ãÜTì¤d÷»¬f;çÉ}J–ø]àûíiê¾ç·÷åÓ®�ºþEù‡L½"«Ý'@^Å�¾7 ?ü³ˆ×Ÿ§¨\b“©]c 6!NÎt]å/ïWòé?/ Ä[‰}”Þ �bö°Z§ƒ©-ƒºÛõzWtôqLk,ñ›-@Ý÷öæJöñ�%~;)ß~â{÷(e€€¼‰Íöð >OÈ%7»ú2MÅ;]ð%#Å~þ ¨û~î¯d;ßÿt½\Å�Ù�ÃÈ“X�¾  ßüó¹Ý—sUÓ]#]â”IB„Y×ÏüeL=QÅ !†öVx€¼ˆñ·ÃÙ¨ÜlÄé_\Û*¿bW¿ØØçV5¾w#Æ+ÿ�UlûÞþ¨R" b|öÈ,7À@ëÕÓK•/ÿt�§d‰ß#Ô}¯Æá=±£_ìì÷j•C&C„tÚ×}³7}A¹ù¸Í—]Õy±Ÿú®‹|?- îûs /±Íî®-T>ø~¿F)Ð)ñ©”oà±Ba¹ù¤d[ÝNLŒ¶ëz%Ÿú¯ î{2îÅý]ÿã¦r‹Ðû1¥@@'Ä'µC|ó^+ž›�˜qœÚ'æ�üDÉa*÷ P÷}ø_¢CŒ™þE^ÂÚˆx™Ÿƒj!í¶ØµŸoÚiB)¸ y™’÷Z=»úïJvõ‹%~OP÷ý÷%ÿÇ•¯M}Úexš7a,D;ÅÒ¿]åâŸgLÆ;I­÷Ëá®×ø¿ë»wþC]¿ô—u� j€°¿RàMÚå.×>nÀç ¥ä¦$Îx‹²¯üÿÏ÷ÌL5¾ÏŽVÒé¿Q÷ùÙQM" â“ܾ¾Q—¥å¦dO_nT:�»~ä:‹ÀˆÕ|o½BÉþ±Ì^ççeŽšÀpZm¢kO@ùùg|“/Wª9qNDlÛújÿçœD@pçÿf×ÅþòaW,%&ôl¸šÄ›´Ò×ñnйÇ*ÂÍI¼–¼Gõ7÷E¬qþ�ï‘ÉÔ}ŇӃ•ìê·»P�kü  &Ð qO�蛲lÇ΢nRÎV²3Û†<éºHÉxÿÔ}ßl­ämP¼ö 4b¹«¯Ÿ§åj!Y‹õªòÍ8^¨$7)ý|yеõ:ôWW„ó|, îûe{_>ãú¨ë%B³bÞÕoÔ æ K±‰Ë~€j«�Ò÷­5~kªë®üg§ÜùïãºÚ_Þ¯äÍ �¦æð&YY $üA€ºù³|ë{â�Ô}OlîËQJÆûYâ—­{ý¬½I " s]C}άÃÝÌ«”ìê7ÊÕOh•ØPk^#ÿÃH+6rÙ™`]îü‡¸.WòAá "´Ú�j!iIJ®ÝÔÝñoêú°ëvÿòw®Ã\› íÐð¼†Ьq®£Òœ^ –@±¸ x³/ŸW²©Ï‹…2¨{^o°®øp (/wü›¸>àºÅ¿ü“ëÊ$ö TÏ7°¦¯¸ó?¦‘ݦ‡;ý­]Ÿó—¸âÈïÝ„²Ú£žo" D§;~CJÇÿë]çúËG\§ºþU(»=êù&æ Äëÿ« TܼïçËÇ•ÌðGµ,r»þÒÞ¾‰Pm •lT×zRùç&} _Žr}Êõ¡Êvtû~߯¾�³ª+Î÷ÞË7È(±ö?6š+¹äf·�’“û¢ó³€Öè>á/=ýÃåÛÿÆ6À  wÜù¿Ò—OºþËõ íC=†^=•Ço\C @þ¸ó»ërù×I" ½Þ¶¡?àM@9Œså°BrÁ�þ&¾¼_É+ÿw 蜷nèÅ÷-wþ_€\pçÇ·Æëþã]¯ÐyoÚÐ01°¸âçv¬ÀXè87¥¯W²«ßG\[ È—­Ü_<¹îoò& ˜–+Ùh¢tLìêçË~®ØÜgoW—€|z‹ëwëþ&! x¹†;L€Žpç¿…’M}b¦ÿ@ù·“…7Ï5Ì`¶´�;ÿWùòi×±®— (Ž�zúMB@qDÇ¿‡À|h+wþïRòÊÿ}®M! ÀâÕ ,€¶pÇ¿™/TÒù¿M@±õX�1ù/&.€–s“ùÄÑÛ£]ý”Çz+Ø10ßbùßÁ õÜù¿Éu¡’¹7_å³Þ¦A„€ü:É�ÿ1.ÞÔ-âNÿE®÷¹nö/g¹>êê# œÖ`N@þÄÖ¿±ð8h wú[)™áÿ ׿ ¨B@Î-u�p˜,™s翽’‰~±Æÿ_T ! Çâô¿½f @¦ÜùSr�ÏbW?T׎ëþ«òa®’0G2á¦-Æöcÿèüÿ]¢¿±ûšçVÿo:/>ùïãÊHÍ�Ìê�±þ8Éïå°Z¼{­ëþÕ¿Aè¬)®ý– @*îüùòy×\› @Ob",! Æ»F:<+MqÇmXtúñÊÿЛí×ü! 3¾çÎÿóÐwþqxÏÇ]Ç»¶€z­µ$–Ð^1)ãx€1Ð0wþqlïg”LøÛBEè :\! qç¿‹/ßr €4^»æ/í±Äu�ÀhÆ`€,¬5'€³Zo¾kHåÈÂ+üfíù¡4B@kÅæ?;;Ì€4îVòF @z¯_ý! uf¸vq˜'©ø9Z)ÞYy~r ! 5®uíî†k¡deªd�ÐBç»ó�]— @–@6^»ú B@¶¾æÎ”´Âm®ç ­ç7Ø"dçX€“ %j'ŸÝ!im»ú B@zñÚ?^ÿ_ ­öHëU«¿`³ t¹†9Ì€v é½zÕªU›Åv¼ h^,ýÛ•´Õï ­8j»{H€МØü'6š-ít—‹ã·�ôº'ÛÿÆ6Àó ­j›Í€´M˜èÚÛ Û—�Ã��! Ac\ÇD è$&é½:þAèÝ*×ÜùçZ%�v§¤Õ?þÁÁ�[áú�;ÿñ�÷@Zýâ¼ ذ¥®ý@¾ø™|Ò¿8`IDAT— BÀF,píæÆf²äÑÝ�ÆËã„€õÍQ² Ë�€üºKÒè~Àœ€µEÇ¿—ÀBÈ3æéô]µjÕ‹xð‚xõ¿(†€t¢ÿY—“ËÞ¤KÜù)…AÛ¤¶#o¤ï€BzHÒèWåŸ"b  ˆX&¤óòª†€åJ¶#Eõ€¤Ñ¯Š«âðŸ}¦ @‘ñ&H§r! Žÿæ0KŠŽ7@:• ³•€yP¼ Ò©Ìœ€xõ¿+(Þéô«Â>¿vç?BJÇÍ×ÉЬÙec]£V ¬¥ÌÃ_qç €ž•qb`túGºó'°Ae Ë\‡8\+°Qe qú_l4C We s]{9̨KB@ìþ·§À€º}uÀ×�+rïÚÛ`‰@ÊƸó?Ìõ¬@SŠbwÃÜù'�J‘&Ƨþ‘ãR+Jˆqÿƒ¦d¢! fþÇÀY™Éûœ€ØüggÙËsˆíwq˜+�¹¼†€É®Ý ´DC@¼ŸÀ2€–É[ø¦;ÿ#\+Z*/«VºF¹ó+ÐyË];\+Ð6�‹\æ ´U'CÀ<×0€Ùmשÿó:¢«âÕÿ®:«Ý!`¢’s tT×*S{Ìqçÿ:€\h盀œ7~åê#Ðqí|°ZÌ Î��Õ‰X@‡uêì€�®;œ? tD'ÚÎu»ƒÀ€¶ëô)‚}]79 h«<%«®r8Z mòBüï¸ÀAàmÑ©Õ3ÎuTWW× €–Éc“]9,h‰¼†€0õ¯ƒÀB€Ìå9„9®½æ d*/7d%› í$�©¼‡€°�kšƒÀP€Ì!„­\“ÈDQB@ØÌu…ƒÀh€ÔŠV;×Aàt€Tò¾:`cÆ»Fvuu=+а"‡€0EɦBKRôf¹ötX P·"Î XWì!{ ì P·2„€0À5ÝA`°@]ÊB?×T�a½*S›»®s)°Qe a×¥_Ø 2¬ؘ±®Q]]]+ÖRö&:¼OJÇÍ×ÉЬÙUašk¸ÃÀ"(7]Ûúòˆ4ë§eœГ!®ÛÝhl'eÁÞ @:�W%„�J6(e°½¤Q©ú+y#0DŠŽ7@:• ¡¯ë&�Pd„ �J†€ÐÇ5ÁA`´Ã@:• ¡Ëu®ƒÀ· ˆx¤óxU–öfœë¨®®®�{n¶^âË“�Æ¿UùMÀšâ¬�8s`K(‚· @Z /ˆÓouè'y·“¤±Êo¿Ö6È5ÝA`€ä!HçÑø!`}1Ù(6$yõ&Hãñø! gÛ(&yÄ› B@/b’`L�ÞßWAHos×UG @«½CÒ"d,þ/p8YZ¢vÂçŽ�ÖüÕ_²õU7Tø{²7T²ðÐê/謲Ã1<°¹dé]�…VAh�˜(8µöú@6@6mK™¦;l'©ÔÞ¬½M²@h“”l*ÄÙç@:C\› @æ¬þ‚Ðz±½ðï˜Ô4ﯮŸ @Z�wuu-^ý B@{l­äà¡Ð07ZºFúËm]ßq=.Íøëš¿ ´OAG�€¦8Ìwý¯’m»ÿËu�4â�5Ah¯.×¹§ @Ó–¹~ìŠù6ûº®q­€ÞràsW¸6€T~ã:À_¾Îu®ë)Ø�×ü! sU2O`KHÍAà×ñþòU®Ï»þ&ëZëM@—;!^¡uÖL×>n¼@fÜ´mâËÁ®ÿqí&áuîož_"Hȇ¹®½ÖüÁÈŽ›¹A¾œà:LÉ$] ª6u_³bõ/ùñO×Þþáü^ZÂÍÝ+}ù”+Vé¼L@µÄRÛí×ü æäG4H¿u#5LZ ࣮“”ì7p¬ënÕqﺿAÈ—˜$x�ƒÀHh�å® \oö/#x_%–¢üf­û„€ü‰ÉL—:œ(-ç pƒë %K Ïv=) œÖ Ì È·1®ãÝ@ñ3ÚÄMâV¾Œr}ÂõZå±³û“kþ! ÿ&º�×—Ð6nãMéû”,1Ü]@ñõq_òÌš¿A(†i®áþá-€¶s3sb‰á]/P<ë­ Ì (†8Kýv7Dý íÜxÞå:Ê_¾Æõu×£ŠeVO¿I(Ž�®; @GÔ–~UI8Úu§€bèñÄMB@±Äñ©ñF`ˆtLŒ«º.tÅN„{*™»³R@~ñ& $úºnr.ç p³+&Æxë®%ò§ÇÀÄÀâŠO£ÜøŒ€Ü¨-1®kÄÃv¹®Áï' •8žôV�mëp˜äŠãŒ_ç:Çõ”ÐJ ŸËp²p¿’½æ ¨qÓ²§/÷Ö³9ªÁ÷ÄÖJ–~Úµ­�µmü¼=ÖÈ¿À›d!Rþ~À Pwcÿ_~îzÈ_ÿ̵«Pyî »¾§d��C]· Y¹£ÑÈJ ÄÐÀ0RìA”âTººnó½õA'ÕU\m‰áÏ]ïò/ßâºT,1Lë5�ádm…ëC~¸Ç •ä&啾<àzɾåa%ãÃ1yì zþ¾ù„’áæ5î~žnWƒh…¸§¾èòT¡rܤœ«äºÞ<íºÄõ}ß+³¨ûþ‰�ÉŽp}Êõf¡‹\/ósÔpN@+�qßÌ�‰brsòZ%E7Qc&¹~ຖû«ù~z�’ýb…Ã×6ÎÏÍj©h¥ø4[ o&TEì+ßh{»®výÙ÷Ëñ®-„ÊsÇv£ë½þr{×Y®'…ž45 ð&í0Åu�æ%Bi¹)ùw_êÞ®´1Wà×¾o î{,3åúo%‡!~�¡€Ej!í2KÉ^¬/)7%·ø²›²Måú�ï�[¨û^‹·Øqªi ¼[Õv›Ÿ�!jÃh—�\ÓýðJÇ?×+ûbháý®©þïøƒk¤PyîôVº&¸†ú—±?ÉOU]MÞ Ýâ•U¼˜!”Bíüˆ˜ Ø®àâmRL:=·™ÍQPN¾_¡d˜ æ"½RÕñf?w«I„tÂ2×!¾qÞçùã&$v€;Aí·\É'ÀÓ|/Ý#@Ý÷ã‹}‰7S1TðV•Ûý¾÷_¯@'ÄQ£Wùa=Z(4ÿ cÖö§Ô±ž<ެ�åÿ7¹F¸º„Js§øŒë"W Äù]+UN—+%Þ Ó¾æ‡õd¡�Ü|Löe/åGìTKÉ.`5 Vó}:@É›�øà±µÊc�ïó;•!y0Ö5*&û…á¦ã_~¡|Šp¡’Ý9ÝÝj[«d{âTlùÞþW¥D@^\å:Ô7õ2!÷Ülü‹/1ÿå_¼>Ë÷Ö j|¿OÉPÖ*¦ïøžþ_¥D@žÄŠ�}}c/rÍÍF¼rÿoËŸ\g(Ùbu¹ußËoR2±5&öQq¼Ý÷ñ”!y3ǵ‡oîyB.¹ÉØÅ—Û\E�„·Àõ#%o ç—§d‰a#é^éIDATå[&C�ÕÈ›§»ÃäNBîÔ–_�Sq@ˆcj¿äšçÿ?—¸8©±ªà1××ýet®GºRÊn¡Ë”Bò(Rø47ÎC…¼9Ùõ:•Cl'¯ý)¶'@ÝÏÐnJ¶&Žs6ÒNª½Þ÷VæsS(²x-A`¦�)7 1¶y·ŠÈJ»ÅðÀ9®²ý5VóóÃñf`”ë¥j·}OýL# èbnÀ?“…̸Yˆ p,ÍlÞÓJvV<Í÷ælê~®¶ðåcJž­� ü«O¹^ÑŠ ©¼æCÑméšä‡ë(!Kÿ.¤�},1ü³ï͸?ß/Tž;ñ§]çºb¢í�®Iuþ«—µjE oP&'ùAù¶�ZmrS|’=TÈÊ}®3]Æzsê~Ö^¯äÃ�( �=ê{æ·jBÊ&vµ;Ö ÷uÜ<|OI…ì,r]àúAìD'@ÝÏZ̈%†Ç+Ù™pµG|Ÿ¼Z-ÂpÊæh×?PE:<·ÜøÄ&(±î™P•�Ø{þ3®}ŸþÒõn¡òü¬=áúŽ¿|­ëC®Ûkt�Zˆ7(«©®ƒüP-Rs3ÙîY޵ܩdó¡±jüׇܽ[ùƈ€2‹YÙ{øš/¤V;ÚùJ×VB«üÃ5ÆuNœo/ Å(»y®a,Óʆ›‹�|‰å˜ý…VZîºÌuªïÝ{´!UCÃÙÚ5n2¶SYçŒæÅy±oÃDßÃ+dˆ€ªˆOV‡»�(¤æf#&·EÈrotl܃®³\çû>^" „TIÜëÇ2ù*µ­…é.´Ó“® ]§û^ž+ Bªè[n<¿$¤ææ#–DZºG ím÷ÕJö¸A@¨ªØ ï(7ž+„ÔÜŒ|Ù—¯ �‡=ż�K|O/P'Bª,Æ´jÕžÜUã¦d¤/+ý‘©h^,+ü‘ël–Æ¢„TÝ ×¾ûš 7'Ôì%°¹ÐIϺƻ¾ÇQÛØB ÍqíÅ$«l¸I‰×»ú yð;%C¿`ø ë"‰®}øÔ” 7+;ø“Õy[ÏžíúqìS/@„`MK]û»�œ"¤æ¦e_~ã$äIÜç?q}ß÷ú}B¥€µÅXêH7Žã…ÔܼléË5®¡BÞDÛ!-–^'T!X_<ŸsÃxº�š›˜Í”,ÉBÜ¡d‰á„áò!õ™åÆ.lÙp³3DÉ^[ EÃç*&cs­’ õ›çÚà à!57=;)Ùº¹¿P$±ÍvLôŒÝg …FŸ€b›áBjn~¶S Et£ë®«üLЗ!h\|:Ä�ÞµBjn‚úú—C„¢ºßu–ë?O …Aš³Òu¤¼qBjn†b’à×p¡È».pýŸŸ�‡„Ü{‘4#ž�KÝy}YHÍÆr_t�Šlk×§]õ³1ÁÅN‘9Ç› ½è¸F¹#[)¤æ&é$_¾)”EÊK êgä!W@6bLûàÚ'Z¤äfi¤/»6ÊâQ××Ù~Nr�dgšk¸¸EBjnš†ù2ѵ¥P&ñ6à2×i~Vî:Šd+ÖMǦBó„ÔÜ<Å1Ä7¸ú e4UÉÃ_1œÖ„ {±«`�YBjn¢vPeõW×Ù®óüÜ,Ú†´Fœ3› MRs3µ�’³ï eö¤ë"%K ZŽ´NL<Ü�ÙD!57U17 þ.‡ eýÒ5JN1œ,´ !h­x¾ŽwC6FHÍÍU¬ø™ëP¡*bX-–^âçh™�)BÐßuv¢� 7[ßõå B•<îú±ëLNóÌ!hŸØbø(7`+„ÔÜt�öåW—P%Ϻ~î:ÕÏÒL!BÐ^1¾9Â�×R!57_#|¹ÜÕG¨¢Û”,1ü…Ÿ©ç„†€ö‹O/û¸ÑZ ¤æ&,NŒû UûrÄ[¡ú¹zB¨!èŒ]{¹ž$ ¤çfì JζßV¨ºó]ß÷su¯Ð+BÐ9ÑùÇ÷ºÁú¨�Š›²í|¹Þõ&ÉÐÛ9~¶~%l!ȇh°b T:nÎbH ††HÄVÞgº.ôóõ´°B�3”ì2¸Phš›´˜$“GxÄ¡‚Ø�ð¡!È—9®½ÜHÍšæf-– Fƒ´€µÅÝ ®3üœÝ¢Š#ùsöä¢ôܼÅMßгß+Ybx¹Ÿ·gUA„ Ÿâ¢˜#0EHÅMÜH_.vm" gwÅÖÞçTm8ŽäW|2éFi¼�Š›¹8t(ÚRÀ†Å¡_±³çé~îîQ€ü;ŽˆÒsSÇÇqÄÛèÝMJ† ®ôóWÚ~’C|29AHÅÍÝ_bˆe€€úÄdݳ\çû|J%CŠ#†FVuSVÜäÅ›€x#0H@ý».T²Ä°4«w@±Ä§Øý9€(7{17 æ И•®+•,1¼IGŠç�J6âÌ�”ÜüŪ�#4g”ŸÃóU`„ ˜âudl*4GHÅM`ì#p¢€ÆÜé\ô#Œ @qÅzæ3…TÜ ŽVrm—€Þ=ãT†“ _$EÕÏukm +Ù±Ì'üóºKE°¦Í\W8ŒR©mÓ¼«’­g‘Oúçtž*Œ96ät7�'©ÔNrŒ%„; y2͵»ïñª0B€�ïé†òY¡infc¨åJs.òᯮ·ù¾þ§*Žáó&Õ:14©vM,?/tÚb×>€!@oâÓk¬ØFhZ¼Mqæ/Ç�;¾×?‡û„n„õˆñì;8,'%w@ÇùòYC±í÷iÿýOžÇœ�ˆ½ò÷­Í|G µ¥˜±ÕðfB;ÄJŽÒ^!@£–ºuƒz��Jms¦˜0Èœ‹ÖºÉ÷ë{„õ4#ÆV�tÃÊ¡9)¹ Ž¡–XBØ_h…»]ï¬MÎÄ:˜ Ñv\êì+B*µóvVr�²õˆ’31À›iÅ^ù£ÜЮšV;Òùz×`! O¸Þáûr¶°A¼ �VL¶ºÊ�ØæBÓÜYŤË8oàZ!­8¼i_@ï²0Ü5ÕA ¯Ð4wZÑyÅ „c…fÅ©ƒýw9]è!@Vâ5öíÛ M‹a×1þò«B3þÓ× uaN€¬ÍW2k–�Š›ç‘¾üD|`«×ɾï¾&Ô� bön�oRq}€/W ½9Ë÷Û'…†´Jœ<› MRq3C-±r ŸÐ“ó|Ÿý§Ð0^1h•Øw‚;°ÑB*µmšwqÍÖu6 y„­Ôå:×Aà{B*îèb3¡ØTh¦°Z€OMc8@»Œw�Œ#u…¦¹ÉÞÒ—8·a¨ª��Þh—85o’;1ËIÁ_à´·’PUU€Œ´S|z�æ °�дx›â:Ì_žªê!dˆ ÝâÔ¼é; ©¸3ü‚/ÿ­êø& [Ì Ð)±Wþ¾µ™ïHÁÍø_.wõQ9E?õIß+g ™"è¤Ø+ÿ7îš“’›ò!Jö(Ûœ‹8 &”^&dŽá�'^UÛ)¸“œæK�ù*�åJvž$´!@§E;t©ƒÀ—…Tjç5Ä^e8Bw‰k/ÿbËäb8@žÄº£â$=¡iµ#�cˆeˆŠéqמ¾îZŠ o¢óŠyË„¦¹i�I‚1Yp„Šå!×{üó¿_h9†äÍp×ÔÚ§Y4É�hŒ§¬äíJQÄpÆ.€ö!È£85ïv�턦¹3]å:Æ_þ¯òoŠkˆÿ÷–ibcî1 Ï¢CV›ð†j+0.vm¢üá\‰áM€<ë¯d›áª–“š;Øq¾ìçZª|95¶@&toAt‡º£˜(¤â&�/¿quúü†è{Ž÷ÏtŒÐ1„EA§‘7û”ŒÁPgn^jtîIDATÄÊ�ê:�áEÑå:×XOÎË”;ß¹J6ú£Ú/öJÈÞ("&’eÀÍÿ–¾Dg þ]Éз ¹DP ]ûº³™!¤â.!¶mžàê£t¢ã¯& „Üb8@ôSrÞ@»&¸•–;í8ÀiO×"5ïl×î€üãM€2Yá:ª¶;Rp×0ЗɮFÎoxÂcÿW …À›eûâ_êìKB*îÈg+ÙK Þs~ëz# XÊè¸hãR¨�è7DÉî‚3þOpíÁ €ÅÃp€2‹ñíƒYš–Ž»‰Í”lÐ4b�?º×õ~ÿýÞ+)@™ÅL÷›Ü‰õšVÛ™ñ`×êsâÃã™®A€bãM€*ˆŽjv«KÏ]Ƨ}¹Û—“„Â#¨Š¯æÎ«Þ‰n@é1 *ú»¦ùsÏèFP%[)™#0B*'¶Ã�à 0Z@ÅTQ—ë\�STT]¬ÿP©+ b�ì‘?ÂA`©€ !@b¦’½8ù•ÁœH rÝáÏE;¨B¼`€kºƒÀ @€µõsÝê 0L@É`}[º®s) ÄгM\—:œ$ ¤X½ë:¶««‹ö¥B€úLtî °\@I ~Ó\à (B4f¶k˜ƒÀ<G€ÆÍwíá 0[@�±:×ßu»?C P`„hN_×M#!š×Ç5ÁA`´€"@:]®s¾+ `˜ÙïúPWW× @€lMv�pX* ç�½™®}È1æ@ö¹îðg¬ä!Zc€kºƒÀ 9Åp´ÖS®Áø³€œáM´Æ#®X68ˆ€¼ÚT€¬<ëºÒ5ÖuK‘w„Ho–’Žÿ'îøP„hÎb×e®±îøoP@„¨_L¤ž¢äSÿÏÝù?- Àл»\\»ã@@I`}1Áï·®_»&¸ãH@  ±Èu­’Žÿjwü‹”!@•ýUI§5Åÿs*„ Jbbß Õ:~wúPa„e÷×�®I®kÜñÿCº”Í%ËønpMv§·ôˆ èb&ÿm®ÉJ:þÛØ®¨!@Ñĸ~ŒåwÒW2¡o©4Œ ~ïú]­&¹Ó\R#È“ø”ÿ×t×µëÝé?#™#è¤G”tô«;ýÛÝá/€¶ h—Ø‘/Öè?ÿ)ßþÃÐ1„YZîšãºo�ú >�?„�Š%yjýŽ>j®;ûUP„=ù»+NΛW»>ß黓¿OJ�TK|J_ ¤c_³æ­ù5›íÕ@Šm¡kñF*þüùÞ�û@ !ÈÖ2%“㢞YãëF~oiíº±Î}±;ô§)üÿÿ2tÿºIDATr2L*R»ªIEND®B`‚python-django-debug-toolbar-8.0.0/docs/_static/brand/Logo-Element-White.svg000066400000000000000000000017061524561404200265650ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/docs/_static/brand/Square-Black.png000066400000000000000000000567501524561404200254700ustar00rootroot00000000000000‰PNG  IHDR88crûØIDATxœìÝ{˜Ve½øÿ{8C#a*áV ÔRó�¡‚)@dâ0¤@('A1¥º¢«r›íÜ»Òê§&" $ A<`Â4ä$Á ‡™ßúê·ým—œçp?k^¯?æz¯‹yæqf½×ç^ë®V¿~ý“* 2BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :Õ�._|q€#±ÿþ}ûö}úñSŸ>Þ»wïÿ|òÓEEEÊEVýúõ�"›7oPf’bÙ¾}û¶Oüíyœ|,..päLT8U«V=þ‡óä’’’-[¶l8€M›6ÉÄDÒÆD… ’´ÊÿtË|°råÊåŸ°Æ ¡i#TÈtɘeíÚµI®¼ûî»ËÿΠ²*�6ŽçH¥íÛ·/[¶lÅŠŸÌ;ï¼óþûïÒK¨@Ú*‰­[·þùÏ^´hQòñ¿ÿû¿W¯^H¡i#T¨œ’‘K’+ŸFKò1™½2™P�´*�øøã�/^¼páÂ×_ý•W^Ù¶m[ £H¡ÿ¤¸¸xÉ’%sçÎ}ùå—_}õÕ�;w¢'T m„ ÄÞ½{ßzë­¤X’nY°`AòÇ@”„ ¤�P�ôk×®7Þxcî'þû¿ÿÛî“Q*�6BŽÂG}4}úôgŸ}ö¥—^Ú·o_ ¢ H¡Çbûöí3f̘6mÚìÙ³‹ŠŠD¨@Ú(üñ¬Y³’KòÑõ÷åO¨@Ú(]»wï~á…’b™>}zaaa \H¡e'™®<ùä“S¦L ”1¡i#T ¬mݺuÒ¤IãÇ�_´hQ lH¡åféÒ¥I®äååmÚ´)Pª„ ¤�P�r¶ÿþ^xaܸq3f̰ƒ$@i*�6B*ʶmÛ&NœhI@©¨€ÒP¯^½>}úlÙ²E¨;¡¥£¸¸xРAãÆ� 3¡¥`÷îÝ7ÞxãìÙ³¥A¨À±Úºuknn®_¥H¨À1Y·n]‡V¯^(=Up´–.]Ú¦M•Pê„ ¥yóæ]sÍ5v{( BŽÆ”)S:wî\XX(BŽØ¨Q£úôé³oß¾@Ùp1=�’’’»ï¾{È�!€²$TàpíÝ»·ÿþS§N ”1¡‡¥°°°[·nóçÏ”=¡‡¶yóæœœœeË–Ê…‹éàV­ZÕ¦M•Pž„ ÌÂ… ¯¼òʵk×Ê‘P€*((hß¾ý¶mÛåK¨ÀgËËË»á†ŠŠŠåN¨Àgøío{Ë-·”””*‚»~ÀÿR\\­”D³fÍfÏž�´JÈ4Yõë×@ŠlÞ¼9µwïÞþýûO�:5¤ËI'�4iÒ¤$Nþõ¯fΜ™|É;vìÂD€ÊeçÎ��;wN_¥4mÚ´  à3+%qÕUW½òÊ+ç�w^ÈB€J$9¶k×nþüù!]Î?ÿüdfr 'ä9_úÒ—òóóøÃfee€è *‹¿þõ¯É`aÉ’%!]Ú·o?cÆŒºuëò™U«VýÉO~2yòäã�?>ÄM¨P),\¸ðꫯ~ÿý÷CºôêÕkôèÑGôŸ\rÉ%sæÌ9ûì³@Ä„ é——'c‡mÛ¶…t¹óÎ;ï»ï¾£XÊÕ¨Q£éÓ§wíÚ5ÄJ¨�ryyy¹¹¹EEE!EªT©2tèÐAƒ…£U£F�‡~8éœêÕ«€øÒì÷¿ÿý-·ÜR\\R¤víÚŸÖW8f½zõJF+¿  BØGÒÆ>*ð©$N’�øqãBºÔ«WoòäÉ-Z´¥'ù¹Ñ½{÷?ýéO &*¤ÓM7Ý”¾Jù·û·Y³f•n¥$4hðüóÏ÷íÛ7DC¨�6Û·o¿æškòóóCº4oÞ|æÌ™Mš4 eã׿þõ½÷Þâ TH•uëÖ]uÕUo¾ùfH—V­Z%镌>BYêÝ»÷È‘#«U«*šP =–.]Ú¦M›+V„téСC^^^�:uBÙËÉÉ™8qbvvv¨PB€”X°`Á5×\³iÓ¦�.ßûÞ÷’)GÕªUCy¹øâ‹g̘ѰaÃPq„ i�ŸŸŸŒ CºÜ{ï½?ÿùÏ�bKÇctæ™g4mÚ4T¡@Æ5jTÏž=÷ìÙR¤ZµjcÆŒéÝ»w¨ �5š9sæùçŸ*‚P ³ýâ¿Û¶mÛ;v„t¹ûî»ï»ï¾�j_úÒ—’VI¦?ùcOIDAT+ 4b‘ ’±CH—jÕª�9ò¶Ûn •Ài§�öä“O&_r8fB€(ÜsÏ=ƒéR»ví‰'æää„Jãë_ÿúý÷ߎ™P ‚íß¿À€é;º­_¿~~~þÅ_*™ë¯¿¾_¿~àØØ™ÒÆÎôd–�;wöèÑcîܹ!]N=õÔÉ“'Ÿ|òÉ¡RJâ3777}ßV <™¨Pa’®n×®]úgÏ9çœY³fUÚJIT­Zõ±ÇsÃbàX*Æš5kÚ´i³dÉ’�.­Zµš6mÚñÇ*·ºuë>ù䓟ûÜçÀQ*T€Å‹'•²víÚ�.]ºtÉËË«U«V „fÍš�92¡@y›3gN»ví¶lÙÒåûßÿþ°aêV­ø»$Gï¼óÎpä„ å*8äææîÚµ+¤Ë<ð³Ÿý,ð/ Ô¶mÛp„„ åçþûï¿å–[Š‹‹CŠÔ¨Qc̘1Ý»wÀСC+ó­€£#T(%%%?úÑ�î¹çž�.ÇwÜ”)SÚµk8°ììì?þñ�v¬ŽˆP ÌõìÙsôèÑ!]N:餙3g^pÁ�CiÞ¼ùþç€Ã&T([Û·oÏÉÉ™>}zH—¦M›4kÖ,pxúôéãbàð ÊÐÆ�¯ºêª7ß|3¤Ëù矟ÌRN8á„À‘p± pø„ eeùòåmÚ´Y±bEH—d,0eÊ”ºuëŽ�‹U€Ã'T( ,Hf)ëׯéÒ­[·1cÆÔ¬Y3pTš7oþ«_ý*ŠP ôåçç'c‡;v„tùéOúàƒfeeŽA¯^½:tè*«~ýúH‘Í›7¨PcÇŽ½ãŽ;BºT©ReÈ�!¹¹¹�Ò�DìE]´qãÆp&*”¦{î¹'}•R»ví¼¼<•RŠŽ;î¸áÇ€*”Žýû÷0àþûïéR¯^½üüüÖ­[JÕ%—\róÍ7€°ô ÒÆÒ/*ÄÎ�;{ôè1wîÜ�.�7žúèc�=–´n8lB€CX¾|yR)ëׯérÅW<þøãµjÕ ”�×_=¡<÷ÜsÅÅÅà fÁ‚]»vݱcGH—nݺÝÿýUªØO¬ôíÝ»wòäÉøÃþò—¿€£%T8 ‚‚‚ž={îÙ³'¤Ë�~ô£ÿøÇ�Ò¶yóæÇ{ìÑGM€c#TølcÇŽ4hPIIIH‘¬¬¬d�Ò½{÷@©zûí·‡>a„ôe-PQ„ ÿlíÚµ?ýéOóóóCºÔ¬Y39Ùß¶mÛ@é™6mÚÈ‘#_~ùåPª„ ÿËâÅ‹»té²eË–�.ÇwܤI“Î=÷Ü@iرcǸq㆚dm(B€ÿgΜ9=zôصkWH—“N:)©”fÍšŽÙªU«FŒñÄOìܹ3”¡Àÿ5eÊ”~ýú¥ïN²gœqFR)'œpBàØ¼üòËÇŸ1cF({B€ÿã�øå/R§eË–ãÆ�ËÎέݻwOœ8qÈ�!ï¾ûn(/B ²+))ùäîÝ»@4„ @¥³xñâ:ìØ±#¤Kýúõ'L˜Ð¢E‹Àa())yá…’DI>€ø€Ê%­[:6iÒ$©”SN9%p(ÉädìØ±#FŒX±bEˆ•P¨Dòòò˜¾-›7o>yòäã�?>pPk×®9räèÑ£ @Ü„ @eqÿý÷ßsÏ=!uZµjõÄOÔ©S'p`¯¿þúðáçM›–¾LÒJ¨¤_Š·tìÒ¥Ë�!CªV­ø,{÷î}æ™g’—hÉ’% £€”Kñ–Žƒ ºóÎ;ŸeóæÍ�?þøˆ#’  €4Kñ–Ž÷Þ{oïÞ½ÿâí·ß>|ø„ öìÙ2–PH­´néX£F�G}´]»v�P\\üüóÏ'‰òÊ+¯€Ì'TÒ)­[:wÜqO?ýô\ø»dn6vìØ¡C‡®]»6¤…PH¡ tíÚ5}[:6lØpÊ”)Íš5 |bõêÕ�<òȸqãÜnH¡�6={öLßõ M›6�4iR£F�!¼üòËI¢¤ò Ÿ*©2vìØAƒ•””„t9ÿüóŸ~úéºuë†Êm÷îÝ'N2dÈ»ï¾RM¨¤Çý×ýþ÷¿©sÅWŒ3¦fÍš¡Û°aÃèÑ£G޹mÛ¶P €4Ø¿ÿÀ�'L˜R§[·n÷ß•*UBeµpáÂGydòäÉûöí •†PÈx»wïNŽæçÎ�Rç§?ýé~ðƒP)%ñùÜsÏ 6ì�7Þ•�PÈl[·nÍÍÍ]´hQH—d„2dÈ�äK •϶mÛþøÇ?>|Æ  ²*lÍš5;v\½zuH—š5kŽ7®uëÖ¡’Y¾|ù#�<2~üødJ*7¡�©–.]š““³eË–�.õêÕËËË;÷ÜsC¥QRRòâ‹/6ì…^|B¨d¤yóæuïÞ=}Ûü5nÜxòäÉMš4 •ÃÎ�;Ÿzê©¡C‡®\¹2ð„ @æ™2eJÿþýÓw¨æÍ›O˜0¡Aƒ¡øàƒ}ôÑÇ|ûöí€!T2Ì�!C~þóŸ‡ÔiÙ²å“O>Y§N��vo¼ñưaæM›V\\8¡�I~ô£�=:¤N‡†^½zõ�^{÷î}æ™g’Î\²dIàP*ïþY™%9ÌíÝ»w*+åÖ[o9rdŠ+eË–-¿ûÝïZ´hqË-·¨”RW­ZµÎ�;Ïš5«Y³fH€ PXXØ­[·ùóç‡Ô¹÷Þ{“ )õÎ;ï$“¢¼¼¼={öJ[½zõzõêÕ§OŸO<1ùc�=R¹**­¬úõë E6oÞH—�7vêÔiÙ²e!]’áÉA|NNNH�âââ™3g&_ÝË/¿(§Ÿ~z2ˆëÒ¥K­Zµþç“ÉO¿¯|å+%%%H€¨­ZµªC‡ëׯ©3a„K.¹$¤ËÎ�;Ÿ|òÉ!C†¼÷Þ{�2pÍ5×ôïßÿÒK/ý׿jРÁ•W^™$bRA¨ÄkáÂ…¹¹¹Û¶m i´hÑ¢4…ÊêÕ«GŒ1vìØômnƒìììnݺõë×ïà{ì$Ï*�–~AÚXú•7ÞxcQQQH©êÕ«Ï�;7@¿òÊ+ÇŸ>}z  4nÜø–[néÞ½{Ò*‡|òÞ½{Ï8ã [Ó@:¸ë@Œòòòn¸á†WJøä˜²OŸ>™{•yòÝ7n\Ë–-¿ýío«”²p饗þñ�|ë­·ú÷ï8•>©ßï|ç;HH•¸ï¾û~ó›ß„ÊáöÛo¿ë®»BFÙ¸qã¨Q£F�ýÑGJ[�5rss“8ùêW¿ŽÜŸÿüçË/¿<™O¨@Ú•ŒV\\”�ë®»î–[n)Ý‘ZòcðÌ3Ï @†*�6B%­[·.©”+V„J¬   9­¢±|ùò#FŒ7.™tJ[ݺu?ÝT¾Q£F¡ äææ¾øâ‹ÈdöQ¨`K—.M*eÓ¦M¡r»í¶ÛæÌ™SµjÕP¡JJJ’ÜáÇWÂ5xå£iӦɥk×®µk×e¦C‡B2�‰ ¤�‰Jf™7o^÷îÝmø©ÿ÷¿ãŽ;BÙ¹sçÓO?ýðï\¹2P®¼òÊþýû_vÙe¡ìmݺõŒ3Î(..@Æ*�6B%ƒäçç÷îÝÛý£þG�5^}õÕSN9%”¯>ø`äÈ‘�=ö˜�ËB�:un¸á†›o¾ùË_þr(GÉ rîܹÈX–~TŒQ£F <8ðöìÙsûí·O™2%”—  6ìÙgŸuê½,4jÔhÀ€=zô¨[·n(w:t*�ÑLT mLTâWRRòÿñøÃŸå‘GIÎ…‡²´wïÞ$‡zè¡%K–Ê@Ë–-û÷ïß¶mÛ*Uª„ ²uëÖfÍš c H¡¹ýû÷÷ë×oêÔ©�8á„’AG�:uBزeËã�?þè£�º{AY¨^½zçÎ�“DiÑ¢EˆÀ·¿ýíW^y%™ÉÒ/€ò³sçÎ=zXŽrp7n¼÷Þ{ï¾ûîPªÞyç�áÇçååíÙ³'PÚ4hЧOŸ›nºé‹_übˆÆu×]'T s™¨@Ú˜¨D+ùÖtéÒÅZ£ÃQ­Zµ×^P xIDAT{íÔSO Ǭ¸¸xæÌ™�<òˆ>,#_ùÊWn»í¶Ž;Ö¨Q#D&‰Þ³Î:+™I¨@Ú•8­Zµ*9’[»vmàð´jÕjÒ¤IáŽ7îá‡ö²—…*Uª\{íµýû÷¿è¢‹BÄ’¡Ê«¯¾€ dé@™[¼xqR)Û¶m ¶d2eÊ”œœœpäÞÿý¤Ož|òIÔ”…ìììîÝ»ßrË-�7Ñ*�¹LT mLTb3gΜ=zìÚµ+p„N<ñÄ#])7oÞ¼áÇçççÊÀi§�6`À€nݺժU+dˆ÷Þ{ï¼óÎ @ª°›Tyyy¹¹¹*åèlذá÷¿ÿýá<³¨¨hüøñ-[¶L&0*¥,\~ùåO=õÔ믿޻wï ª”Ä)§œÒ¤I“d H•xüÿßÿ÷ŸÿùŸ�cP»ví… 6hÐà@OظqãèÑ£G�õÑGJ[Ò$Ÿn*ŸÑ’üøÇ?9rd2�P�´*1())¹ãŽ;Æ�8f=zô¸ÿþûÿõó‹-zä‘G&Mš´oß¾@i;ñÄû÷ïÿÝï~·^½z!Ã=ÿüóÝ»w@¦*�6B¥ÂõíÛwúôé�R2oÞ¼3Î8ãÓÇû÷ïÏÏÏ6lØë¯¿(ßøÆ7’D¹öÚk«V­Ráã�?>í´Ó’wN2ŠP�´*kûöí]»v}óÍ7¥§eË–S§NýÛßþöÇ?þ1I” 6J[µjÕ:uêtóÍ7ŸsÎ9!ulQ™Èí‰JÍÆ�srrV¬X(UóçÏ¿ñÆgÏž½{÷î@iû¾лwï^½z�p !¥¾õ­o È8&*�6&*eùòåÉ éõë×ȧŸ~ú÷¾÷½ä}[³fÍ�jK–,¹ì²Ë�QLTJÁ‚ ºvíºcÇŽÑËÊÊjÛ¶mÿþý/¾øâP94oÞ¼AƒÎã@f±� À±ÊÏÏÏÉÉQ)Ä/;;û–[nyóÍ7ÇŒSy*åSW\qE2Љ À1;vìwÜ n§œrJ’(×_}Ò*¡RútÏÊd¡pôî¹çžÏÜââѺuë~ýú]sÍ5¡rK^‡d¡p4öïß?pàÀ &ˆRÍš5¿ó�ïÜ|óÍgžyf „ 4mÚÔMù ƒ€#¶sçÎ=zÌ�;7@|6l˜ôIÏž=¿ð…/þÁ7¾ñ ¡D¨™­[·vìØqÉ’%"sÞyç 0àºë®«VÍï÷ÏpÑE�;6Â2€#°fÍš¤RV¯^ U«VÍÉÉIåë_ÿzàÀ’‰J2‡P8\‹/îҥ˖-[Ä¡^½z½zõêӧω'ž8”ÓN;íøã�O†¢ÈBà°Ì›7ïúë¯ßµkW€4mÚô¶ÛnKʹV­Z�ÃvÉ%—<ûì³È6|8´)S¦tîÜY¥ƒ«¯¾zÒ¤I¯½öZ�=TÊ‘ºè¢‹�!LTáøÃ/~ñ‹ªN�:Ý»w¿ùæ››4i8ZB2ˆP8 ’’’Áƒ�=:@Åiܸñ-·ÜÒ­[·ãŽ;.plZ´hQ³fÍ¢¢¢DO¨|¶½{÷öîÝ{úôé*È%—\Ò¿ÿ«¯¾ºJKµKGòJ&C•9sæ zBà3&'°çÏŸ ÜÕ¨Q£K—.I¢œuÖY�Ò&T S€¶qãÆN�:-[¶,@ùjРA¿~ýnºé¦úõëÊÆyç�€L Tþ—åË—'•²~ýúå¨yóæ·Ýv[NNNõêÕeI¨@¦*ÿÏÂ… “JÙ±cG€rQ¥J•ë®»nÀ€\pA \|þóŸ?餓œŒ€ø €ÿ«  àÆot; ÊGݺuoºé¦>}ú|éK_ ”¯³Ï>[¨@ü„ Àÿ1vìØAƒ•””(c§�vÚ­·ÞÚµk×:uê*Â×¾öµ3f nB üæ7¿¹ï¾û”±6mÚ 0à²Ë. T¨$T=¡TjÅÅÅÉ eܸqÊL­ZµºwïÞ¯_¿¦M›"pöÙg zB¨¼vïÞ}ã�7Ξ=;@ÙhÔ¨Qÿþý¿ûÝïÖ­[7�“N:)ùŽlß¾=*@%µuëÖÜÜÜE‹(ßüæ7“DiÛ¶mÕªUñ9ÿüó_xá…DL¨•Ѻuë:tè°zõꥪzõê�:uJÅU‘K¾AB"'T€Jgéҥɡä¦M›”ž/|á }ûöíի׿øÅ@ô\¦ñ*@å2oÞ¼îÝ»(%_ùÊWn»í¶Ž;Ö¨Q#�!Œ¼ ~B¨D¦L™Ò¿ÿ}ûö8fYYY×^{mòŽúæ7¿È4§œrJ–{öì @¬„ PYŒ5jðàÁŽYvvö�7ÞØ·oß“O>9�±Î<óÌ?ÿùψ•PÒ¯¤¤äî»ï2dH€csÚi§%#”믿þsŸû\ Ã5kÖL¨@Ì„ �r{÷îMŽ,§N�à|ë[ßJÞHW\qEVVV ì¿ ‘*@šíܹ39ù=þüG¥V­ZÉ[èæ›o>ýôÓé’LT1¡¤ÖæÍ›»té²dÉ’GîÄOLú¤gÏžõêÕ ¤‘‰ DN¨é´jÕªŽ;®]»6Àºð û÷ïß¾}{›Ê§›‰ DN¨)´páÂÜÜÜmÛ¶8lÕªUKâ6™¢œ{î¹�J fÍš�7v:¢%T€´™3gN·nÝŠŠŠž/|á ½>qâ‰'*“¦M› ˆ–PR%//oàÀ�ÅÅÅÃé§Ÿ~Ûm·uîÜ99¹¨|’Py饗%¡¤Çï~÷»_ýêW%++«mÛ¶7ß|ó%—\¨Ä\¦1*@$#”Aƒ�7.ÀAegg÷èÑ£_¿~§œrJ Ò*3¡d¼¢¢¢ž={Ξ=;À�%eÒ¿ÿ¤RêÔ©à_þò—+¡d¶íÛ·wíÚõÍ7ß p­ZµJ媫®²©<ÿ¤Q£FU«VÝ¿â#T€ ¶nݺN�:­X±"À¿¨Y³f±I¢œyæ™>KÒ®_úÒ—ÞÿýÄG¨™jùòå999›6m ðY^zé%W pH�7*§* -X°àª«®R)ĪU«ÊÉ'Ÿ€(  óäçç'³”;v8°¤fJ2Q @”„ �aF�Õ³gÏ={ö8(¡Âá0Q�h¹FÈ$¿üå/xà�‡áÍ7ß,..®RÅ)9ÆD¢åÇ7�öïß?`À•ÂáÛ½{÷Ûo¿à „ DK¨`çÎ�¹¹¹&Lp$¬þâ�N=õÔDI¨±Û¼ys»víæÎ�à ©Zµj_üâ¡DmÍš5mÚ´Y²dI€#'T8VAœ„ ¯Å‹'•²víÚGeõêÕ[¶l pPBâ$T€HÍ™3§]»vŽ29Fo¼ñF€ƒ:ñÄ¡ÄhÊ”)¹¹¹»ví plþô§?8(ר@œ„ �x OŸ>ÅÅÅŽÙ_þò—%T N6|"RRR2xðàÑ£G(%Ë–- pP 4@|„ ‹¢¢¢¾}ûNŸ>=@éY½zuòÖªY³f€0Q�8YúD¡°°0''G¥PÞ}÷Ýf¢q*@ÅÛ¸qãÕW_ýæ›o(VqpBâ$T€ ¶|ùò6mÚ8”¤ìxwqpÙÙÙÕ«W@d„ P‘,XpÕUW­_¿>@™*’­T BB¨0999;vìP–\£Â!Yý*@Å;vì 7ܰgÏželåÊ•û÷ïp`nü*@øÕ¯~uÇw”””({ÅÅņ*œ‰ DH¨å*9d¼ýöÛ÷»ß(Gö§çà6l€ÈØð(?»wï¾ñÆgÏž |­^½:À�Õ­[7‘*@9Ù¾}{§N�-Z Ü½÷Þ{ìóŸÿ|"#T€ò°nݺ¤RV¬X "¬]»6À� ˆ�PÊÜÒ¥K“JÙ´iS€ "T88¡ʪ_¿~RdóæÍ!& ,ÈÍÍ-,, ‡Í]¿€2”ŸŸŸ““£R€#%T€²2jÔ¨ž={ÚÒ8 ®QÊÄ/ùËx ¡”²ýû÷8p„ àh  4íܹ³G�sçÎ Ç@¨¥fëÖ­;v\²dI86B(kÖ¬I*eõêÕà˜¹ëP /^ܦM•”¡«yóæµk×nË–- ”à˜L™2¥sçλví ¥G¨GïøCŸ>}öíÛJ•‹é�£QRR2xðàÑ£G€2 T€#¶wïÞÞ½{OŸ>=” ¡™ÂÂÂnݺ͟??”¡��7vêÔiÙ²e , àp­ZµªC‡ëׯeÌ]¿€Ã²páÂ+¯¼R¥åC¨‡VPPо}ûmÛ¶€r!T€CÈËË»á†ŠŠŠ@y*ÀÁüö·¿½å–[JJJ@9r1=ðÙŠ‹‹ 4nܸPî„ ðŠŠŠzöì9{öìP„ ðî¹ç•T רŸáÎ;ï¼âŠ+@*Àg¨Y³æøñã»uë*‚P>[•*U|ðÁŸüä' Ü à`~øÃ:4‰–PŽ|‡�›››——W³fÍP^„ ph­[·ž6mZ½zõ@¹*Àa9÷ÜsgÍšÕ¸qãPö„ p¸š4iRPPpÆg€2&T€#РAƒçŸ¾eË– , àÈdggOœ8±C‡ ÌàˆU¯^}äÈ‘·Þzk(B8YYYÿñÿqï½÷€2 T€£×»wïd´R­ZµPª„ pLrrr&Nœ˜��J�PŽÕÅ_~üø5j€#$T€2Ô¦M›)S¦wÜqàHdÙ£ RfóæÍ!2Ë—/ïÔ©ÓúõëT�/ù˯¿þz€˜={öw¾ó�ÄÄD(sÍš5+((8ãŒ3T�SN9%À�}ôÑGˆŒPÊà 'œðüóÏŸþù*B“&MØÖ­[¡”“ììì)S¦´mÛ6@¹3QáàLT BB(~ž¬÷IDAT?5kÖ3fL¯^½”¯SO=5À�™¨@„„ P®²²²î»ï¾;ï¼3@9*œ‰ DH¨`РAC‡­RÅ� ʉkT88¡r”TŒÜÜܼ¼¼Úµk(c_úÒ—¼Ó88K¿ BB¨0­[·ÎÏÏ·›eíôÓOpP&*!¡T¤-Z4nÜ8@™±‡‡d¢*@;ùä““ViÞ¼y€²a¢ÂÁ•””|üñLjŒP*^ƒ òóó[µj  ˜¨pp7n @|„ …:uêäååuèÐ!@i3¯ãà¬û‚8  U«V9räí·ß ô4lØðsŸû\€Û²eKâ#T€ˆdeeÝu×]÷Þ{o€RrÎ9ç8¨õë× >BˆNï޽njS£F�Çìì³ÏpPëÖ­ @|„ £víÚM™2%;;;À±*’P�8  R\pÁŒ36làXúÅ!Yúq*@¼Î<óÌ‚‚‚¦M›8* 48ñÄ”‰ ÄI¨QkÔ¨ÑÌ™3�çè|ýë_p(|ðAâ#T€ØÕ­[wÚ´iW\qE€#tá…8¨}ûö}øá‡ˆ�P2@­ZµÆ�ß­[·Gâ›ßüf€ƒr� DK¨™¡J•*>øà�ü㇧fÍšç�w^€ƒr� DK¨™äG?úÑСC³²²JR)ÕªU pPB¢%T€ “››;~üøädy€ƒºè¢‹ŠP�h  ó´iÓfÚ´iõêÕ p`-[¶ p(B¢%T€Œtî¹çΚ5뤓N pƒ~üñÇwïÞàÀÜ›¢%T€LÕ¤I“‚‚‚3Î8#ÀgY¹råøÃ3Ï<óç?ÿùš5k|–Õ«W JYõë×@ŠlÞ¼9T&………ݺu›?~€«R¥Êµ×^Û¿®ðO5j´gÏžÄÇDÈlÙÙÙ'NìСC€+..~öÙgÛ·o饗>ýôÓLùÔúõë½ ZBÈxÕ«W5jT¯^½Ê_þò—[o½õk_ûÚoûÛÊ6~ä_­X±"±*@JÜwß}wß}w€Ã�$ʯýë$Wn¿ýö·ß~;PYýõ¯ @¬„ �·ÝvÛÈ‘#íñÇaÚ³gϸqãZ·nݱcÇéÓ§*¡1*@ªäääLœ8±víÚÛË/¿üÝï~÷ë_ÿú#�yÖ¬YçœsN€#WRR’ŸŸŸ““Ó²eËñãÇR'9‘¡R fBH­ã�?~Ú´i­Zµ p´Þ}÷Ýï}ï{-Z´øÍo~³iÓ¦@ŠXô‘*@šÕªU+//¯K—.ŽÁG}tß}÷�}öÙüóŸÿH…•+W bBH¹ªU«6ìûßÿ~€c³wïÞ§žzêòË/ïСÔ)Snùò刘P*…Ÿýìg<ð@€Ò0þü>}ú|ík_:tèöíÛ™É^Ÿ9wý‚´qׯƒÈÏÏïÛ·ïž={”’:uêtëÖíæ›o>í´Óåä“OÞµkWb%T m„ÊÁ-X° k×®;vìPª®¾úêþýû»yC¦X±bÅE]€ˆYúT.\pÁÌ™3O:餥êùçŸïÔ©SrìûÄOìÞ½;·%K– nB¨tš5kVPPдiÓ¥-9O?hРæÍ›ÿ×ý׆ ±*?¡TF'œpB2W9ÿüó”�mÛ¶ýþ÷¿?çœs °páÂ@|/^€¸¹FÒÆ5*‡¯¨¨¨oß¾Ó§OP–.¼ð¤X®½öÚªU«âpÖYgmܸ1*�6B刔””ÜqÇãÆ� PÆN<ñÄþýû÷ìÙóóŸÿ| Býíoûò—¿€¸YúTjYYY>øàÏ~ö³elÆ ¿øÅ/’ùƒ¶Õ`Åzë­·=¡¾ÿýï:´J?)s»wï5jÔ7¿ùÍï|ç;/¾øb "¸@2‚ßÊÿGnnn^^^íÚµ”‹Ù³g'ïº /¼ðñÇ·í`9sË/È®Q�´q�ʱHγvìØqÛ¶mÊQݺu{õêÕ§OŸF�Ê^2Ѳúâ'T m„Ê1ZµjUÒ*k×® P¾ªV­Ú¡C‡œwÞy�2SXXؤI“’’’ÄÍÒ/€ÿ%9‚)((hÞ¼y€òµÿþÉ“'_}õÕ—]vÙ¤I“öíÛ(¯¿þºJ�Œ TþYƒ òóó[¶l ",Y²äæ›oþÚ×¾vÿý÷oݺ5Pª^{íµd¡ðêÔ©3qâÄ:¨ ›6mºçž{’áÞ~ðƒeË–JÉo¼€LàHר”¢’’’»ï¾{È�!*Úe—]6`À€+®¸"+++p´öíÛwÊ)§ zBÒF¨”ºQ£F <8@’ƒì[o½õúë¯ÿÜç>8rúÓŸ®¾úêdK¿¡wïÞcÆŒ©V­Z€ŠöÞ{ïýøÇ?>묳’YŸ{Ó…×_=B¨Z»ví&Nœ˜�� ………=ôÐ׿þõ^½z9ò>"®¤‡ bé¤�¥_egéÒ¥�:uÚ´iS€˜4oÞ|àÀ�ßþö·«W¯8¨fÍš¹‘d ¡i#TÊÔºuë:tè°zõê‘iРA¿~ýnºé&¿Ùä¯ýë7¾ñ�dK¿Ž@£F�fÍšuÎ9çˆLr’âW¿úU‹-î¸ãŽwÞy'ð/,“ƒÌ"TŽÌñÇ?mÚ´+®¸"@|öìÙ3vìØV­ZuìØqÆŒÅÅÅ�¿s� dK¿ m,ý*Éñß AƒÆ� b�78pà 7ÜàV‰dÜ´~ýúd¡i#TÊÓo~ó›ûî»/@Ü’JéÑ£G¿~ýN9å”PY­^½úüóÏ@æ°ô àèýøÇ?~à�ìNä ‡ –¦÷ìÙsþüù¡RzñÅ�Q„ À1éÞ½ûøñãkÖ¬ n%%%ùùù:t¸ôÒKŸ|òÉ={ö„Ê䥗^ @F±ô ÒÆÒ¯ ±páÂN�:íØ±#@†øÂ¾Ð·oß›nº©aÆ!í’H;å”SvîÜ€Ìa¢P Î=÷Ü™3gžtÒI�²ñÅ/~1Pª>úè£{ï½÷«_ýêÀ�—,YRíÍ7ßT)�q„ @éhÖ¬YAAÁgœ(“&Mzíµ×úôéS«V­@©zê©§.»ì²:äçç§õvÆsæÌ @¦±ô ÒÆÒ¯ŠUXXØ­[·J{½réܹóðáÃ?}ü·¿ýí‰'žHþ¸nݺ@ikÔ¨Ñ-·ÜÒ£G�ãŽ;.¤Hûöím¢G¨@Ú• ·wïÞÞ½{OŸ>=PªU«öÆoüÛ¿ýÛ?~rÿþýÉ+øàì³Ï@f²ô  œ4hÐ ??¿U«V�C¹å–[J±RÂ'÷a»òÊ+'Nœ8oÞ¼ž={Ö¬Y3PzvïÞ=räÈ‹.ºèúë¯饗B4’ïx2–‰ ¤�‰Jäöïß?pàÀ & aÆúÓŸŽîê”ôuëÖÇü‘GÙ´iS ´%s•$5»víZ¦ßÄÑÔéÂ… �™„ ¤�PÉ¿üå/xà�Àg1bDÇŽC¹ÈËË5jÔ‚ ¥­nݺ}úôéׯ_Rž¡"¬[·îk_ûZ2–P�´*™"9>¶;ç¿jݺuù/×yë­·†þÌ3ÏÄ«ŒSµjÕœœœþýûŸwÞy¡|=üðÃwÝuW2–P�´*$??¿oß¾{öì |¢V­ZÉp㤓N aÆ #GŽ=zô¶mÛ¥- •\wÝuå¶½ýÕW_ý§?ý)K¨@Ú•Ì’—çææB¸çž{’cÙP¡vïÞ=a„‡zÈ^æe¡aÆÉt¥gÏžÇ|(K›6múêW¿€L&T m„JÆYºti§N�\ÕÝ¢E‹^x!+++ÄaîܹÇþù祭fÍš×_}R,§Ÿ~z(É÷îg?ûY2™P�´*™hݺuI«TòSøsæÌ9묳BdV­Z5jÔ¨Ç|çÎ��Òvùå—ßtÓMíÚµ ¥Íº/H¡i#T2ÔöíÛ»víúæ›o†Jé{ßûÞÏþó«Â§Ÿ~ú¡‡zÿý÷¥íË_þòm·Ý–››[«V­P’¼¼à‚ �á„ ¤�PÉ\EEE={öœ={v¨dš6m:wîÜ5j„¸Ϙ1ã‘Gyå•W¥-;;»W¯^}úôiܸq86¿þõ¯ûÛß à H¡’Ñ’CáAƒ�7.TU«V}ñÅ3ëºç·ß~{øðá&LpǶRW¥J•öíÛ0à / G«yóæ6l@†*�6B%’“ÁÉ)áP9Üyç�I›… ”ü¿öøã��1Âÿte!‰�Ûn»-''§zõêGô¾öÚkIê ó HÇLé�——wë­·–””„T;ï¼óf̘Ï�¾ŽÀ.D IDATÂÞ½{Ÿyæ™!C†,Y²$PÚ4hpóÍ7ßxã�‡¸òƒü`̘1È|BÒF¨¤FAAAr|VTTRªN�:¯¾úê—¾ô¥� o¼ñưaæM›V\\(U5jÔèÚµkÿþý¿ò•¯ü™I7~ùË_v‹6H‡*€(µiÓ&9ê­W¯^H©Áƒ§¦R^xá¨Q£.\˜O×­[7PzöìÙóÄO\zé¥�;wž5kÖAž™ŸŸ¯R 5LT mLTRfÕªU;v\»vmH�† Nš4éÌ3Ï ©“+?õÔSC‡]¹re ´�rÊ)·ÜrËõ×_Ÿ��ýOÕ½{w{tBjH¡’>É÷4''gÙ²e!u’ͼ¼¼´nyQRRòâ‹/6ì…^”¶äÍóÝï~·_¿~ÿöoÿöégþö·¿5mÚ4õWvAåaé@ì4h�œ$nÙ²eH�¤ÁòóóCeee]~ùåO?ýô«¯¾Ú«W¯ÒÚÍ�O%oždfuÞyçÝxã�É+œ|&y©U ¤‰‰ ¤�‰JZíÝ»·ÿþS§N iôë_ÿºoß¾!Õ’ëÇ<9¶¶ÅGYhÞ¼ù®]»þú׿ -ªÖ©S')2xðà@U­Z5>|øá‡‹- ©SPP°{÷îV­Zeô­Š®F�^xaR›_ýêW“Vùàƒ¥gÓ¦M[·n @Š˜¨@Ú˜¨¤ÞÃ?|×]w…4êСÈ#’$ •@œ�<òȤI“öíÛøBÒF¨TS¦LIŅò7ª<ñÄ•gÚ¿qãÆÑ£G�5ê£�> ü¡i#T*‰yóæuïÞ½°°0¤NóæÍ'L˜Ð AƒPi%£•?üáï¾ûnàBÒF¨TK—.ÍÉÉÙ²eKH�Æ�Ož<¹I“&¡’IúsøðáÓ§Ow÷*¡i#T*•5kÖtìØqõêÕ!uêÕ«—´J‹-BåóÞ{ï�1â‰'žHåÄ à0 H¡RÙlݺ5777•·«]»vr°ÞºuëP)%•2~üøaÆ%Ý*¡i#T*¡Ý»wwëÖmîܹ!uªT©2dÈ�¤ÄBeURR2sæÌáǧòû pöQ�´±�J%T­Zµ.]º¬^½ú�wÞ é’¦?÷Üs5jԸ袋B¥”••Õ´iÓï|ç;:tØ»wï²eËöïß*¡i#T*§dòо}û}ûö½úê«!u’a‡~xå•W¦x;ÈCjРÁ5×\Ó«W¯ÏþóK—.ýøã�@ªYúicéW%7vìØAƒ¥òžQmÛ¶}ôÑGkÖ¬*½¤H§N�úàƒ.Y²$¤”P�´*ôìÙsÏž=!uÎ?ÿü§Ÿ~ºnݺ�OüéO6lX-Öƒé#T m„ ‰ tíÚuÇŽ!uš6m:eÊ”N8!ðwëׯ9rä¨Q£¶oßÒB¨@Ú>µ|ùòN�:%‡°!uN:é¤I“&5kÖ,ðvíÚ•——÷ðïX±"d>¡i#Tø7nÌÉÉIåaëqÇ÷ôÓO_pÁ�1gΜáÇϜ93d2¡i#TøGÛ·oïÚµë›o¾R§F��>úh»víŸå¯ýëˆ#Æ�·sçÎ��„ ¤�PáŸõíÛwúôé!�xà�îÝ» )Õ±cÇ:tݺu £ØGÒÆ>*ü“jÕªuìØ1)ØE‹…Ô™1cÆž={Zµjø,5kÖ¼à‚ ú÷ïߢE‹�7®Y³&d¡i#TøWYYYW]uU�5æÎ�Rçµ×^[¹reÛ¶m«T©ø,É Y³f7ÜpCò*%¶eË–€¸Yúicé‘——7pàÀT¤&C•'žxÂÙ·Ãñá‡>öØc#GŽô㈙P�´qäÁÁÍ™3§G�»ví ©Ó¢E‹ &ø½vø’—kÈ�!‹/ñ*�6B…CJL;tè�Êí O=õÔÉ“'Ÿ|òÉ�ÃöÚk¯ >ü¹çž³ ˆŠP�´*Žo™ü^KÉt%p$Ö¬Y3räÈÇ{¬°°0D@¨@ÚÓÆ�“VY¶lYH�Úµk?ñÄ­[·¡�?þø©§ž6lØÊ•+@…*�6B…ל;ïÒ¥K*·ƒ¬R¥Êˆ#rrrG®¤¤ä…^HråÅ_ Äí‰!mÜž˜ÃW£F�ÜÜÜ¿üå/+V¬é’jO�:µfÍš]tQàeee�vÚi]»výö·¿½ÿþä’| åK¨@ÚŽHº·ƒœ;wî‡~xå•W&GÞ�#W¿~ý«®ºªOŸ>õêÕ[¶l™ËW€òdé¤�¥_�xà—¿üeH£¶mÛ>úè£Ét%p ’¡Ê´iÓ† ¶`Á‚Pö„ ¤�Pᨥx;ÈóÏ?„ ÙÙÙ�c¶páÂáÇ?óÌ3ûöí eF¨@ÚŽEŠ·ƒ<ãŒ3&Mšt 'JÆ F}bÛ¶m  H¡Â1Z¼xq—.]¶lÙR礓NJZ¥Y³f�R²{÷î‰'2äÝwß ¥J¨@ÚŽÝ{ï½÷ä“O¾øâ‹é»sqݺuÇ�ÿ�o|#Pª^~ùå#Fäçç€R"T m„ ¥%9Y~ã�7Ξ=;¤K�5ƌӦM›@i[½zu’+cÇŽu0àØ H¡B)*..4hиqãBºdeeÝÿýÝ»w”�¤R’÷ÌÃ?¼víÚp´ì£icJQr@ß¶mÛäã¼yóBºÌ˜1cß¾}—^zi ´%3«óÎ;ïæ›o>ûì³?üðÃ÷ß?9HÊB^^Þ­·ÞZRRÒ¥K—.C† ©Zµj Ì¼óÎ;ÇOÞB{öì ‡M¨@ÚÊHAAÁ�7ÞXTTÒ¥U«VãÆ�«U«V ,mÙ²åñÇôÑG7mÚƒP�´*”�… æææ¦oߌsÎ9'9ßüñÇÊØÞ½{§L™òÐC-Y²$”P�´*”©U«VuìØ1}IŸzê©“'O>ùä“åbÁ‚ÇöÙg÷ïß>‹P�´*”µä=–““³lÙ²�.É/Ä &´hÑ"P^Ö­[7räÈÑ£Goß¾=üoBÒF¨P »uë6þü�.µk×~òÉ'/¾øâ@9Úµk×ÓO?=dÈ�•+W€¿«àeggOœ8±C‡!]’#æÎ�;O™2%PŽ’>¼ñÆ{öìþ�}T mì£Bù¨ZµjNN·~¸hÑ¢�"ÅÅÅS§NM~9^xá…�ò²jÕª›nº)yñÀß H¡Byºêª«>÷¹Ï½ôÒK!]’¯(i°+¯¼2+++PÆJJJºvíúÁ€`éÇdàÀ�#GެV­ZH—Ñ£G÷ìÙsïÞ½�26dÈ�… €ÿÍÅô�6.¦§BÌ›7¯{÷î………!]Z¶l9nܸììì@ÙXµjUò" Bà_™¨P .¾øâ3f¤ïä×üùó¯¾úê�7Ê@IIÉÍ7߬R€Ï$T(gžyfAAÁ©§žÒeÙ²emÚ´Y¾|y ´Yô„¥_�6–~Q±¶nÝš›››²[�%Ž;î¸I“&�{î¹�RbÑpp&*”¦ã�?~Ú´i­Zµ é²cÇŽöíÛ'#£@i°è 8$¡@)«U«V^^^—.]BºÝpà cÇŽ ³ßþö·}gHû¨ƒ*Uª$ó‡}ûö½úê«!]f̘Q\\|É%—ŽÖ믿>pàÀpP®Q�´q� QIæƒ *)) é’Ì‹~øá¤ÇGè£�>ºøâ‹?üðÃpP~ÂP†ºwï>~üø5j„t™0a 7ܰ{÷îÀ‘H’µwïÞ*8B€²Õ¦M›)S¦wÜq!]fϞݾ}û­[·ÛoûÛW^y%K¿ m,ý"NË—/ïÔ©ÓúõëCºœzê©“'O>ù䓇òúë¯'i—¾u€@1Q <4kÖ¬  àŒ3Îé²zõêdd´téÒÀA}ôÑG7Ýt“JŸP œœp Ï?ÿüùçŸÒeË–-×\sͼyóàÒà(ÊOvvöŒ3®½öÚ�.………999“'O|–_ÿú×.MŽ”P ¼=öØc½zõ ©Ó¯_¿Q£Fþ·gŸ}öw¿û]8B6|„´±á#ñËÊʺꪫjÔ¨1wîÜ�.³fÍÚ±cÇ·¾õ­äk „°páÂn¸aÿþýà¹ë¤�»~‘AòòòX\\Ò¥C‡Ç¯^½z¨ÜÖ­[wÙe—}ôÑGàÈYú@…ÉÍÍMZ¥víÚ!]¦N�Ú¹sçÂÂÂP‰}üñÇÉ‹ R€£&T¨H­[·ÎÏÏOßxþüùW_}u¥�p&S²ž={._¾<-¡@kÑ¢EAAAãÆ�Cº,[¶¬M›6«V­ •Ï/~ñ‹9sæ€c T¨x'Ÿ|rÒ*Í›7é²víÚ+¯¼ráÂ…¡2™0aÂ�!CÀ±*D¡AƒÓ§O¿ì²ËBºlÛ¶­}ûöÏ?ÿ|¨^~ùå€c&TˆEíÚµŸzê©.]º„t)**êÑ£G^^^H»%K–tëÖ-”û¨@ÚØG…ŒV¥J•dþ�Ù¿þúë!]ž{¬¬‹/¾8¤ÔêÕ«¯½öÚ;v€Ò T m„ )кuë Ìš5+¤Ë¼yóÖ®]{õÕW§o;È 6´k×îÃ? ¥ÄÒ/bÔ»wï1cÆÔ¨Q#¤Ë¸qãn¸á†Ý»w‡ùÛßþ–““³nݺPz„ ‘JÎÐO™2%;;;¤ËìÙ³Û·o¿}ûö� ItuéÒå¯ýk(UB€x]pÁ3fÌhذaH—E‹]uÕU)AìÛ·¯G�•íþË@ù*DíÌ3Ï,((hÚ´iH—+V´iÓféÒ¥!c•””ôíÛ÷¥—^ e@¨»F�=ÿüóÉt%¤Ë¦M›®¹æšyóæ…Ìô£ýhÚ´i l2Àç?ÿùgžyæŠ+®éRXXعsçüüü�i’Jyì±Ç@™*d†š5kŽ?>}û îÛ·¯gÏž£F� ™#©”Ñ£G€²dHû¨�bYYYmÛ¶­Zµê+¯¼ÒeÖ¬Y;wîlݺuü[¬¨ |dÕ¯_?)²yóæi———7pàÀâââ�.:t>|xõêÕC¬T Pn,ý óäææ&­R³fÍ�.S§Níܹs2Z QR)@y*d¤Ö­[O›6­^½z!]æÏŸß? Šä aIDAT®]»G£*(gB€Luî¹çΜ9óä“Oé²dÉ’+¯¼rÕªU!?ýéOU P΄ ì´ÓN›5kÖgœÒeÍš5I«Ä°ãûþýû ðÈ#�€ò%TÈl 4xþùç[¶lÒeÛ¶míÛ·Ÿ3gN¨8;wîÌÍÍ�0aB(wB€Œ—��=qâÄ:„t)**úô¶¡"lÞ¼¹]»vsçÎ Á>*�6öQ¡rªZµj*üñ‚ BŠ”””<÷ÜsÉWWÎ#£U«V]{íµ+V¬D¨@Ú*­¬¬¬o}ë[ 4˜5kVH—W^yeíÚµW_}uùl¹páÂë®»nÓ¦M âXú@ªôîÝ{äȑժU é2nܸn¸¡¨¨(”±9sæ´oß~Û¶m B Ò&''gâĉÙÙÙ!]fÏžýíoûoû[(3O<ñDçÎ�Ë!‡I¨�B_|ñŒ36lÒeÁ‚W_}õºuëBiÛ¿ÿ]wÝ5hР¡@:�yæ™§žzjH—+V´iÓféÒ¥¡ôìØ±#77÷á‡Ñ*¤V£F�fÍšuÎ9ç„tÙ´iÓ5×\SZ÷7[¹råå—_î6Ä@l„ ivüñÇO›6íŠ+®éRXX˜“““ŸŸŽÍœ9s’JYµjUˆŒP åjÕª5~üø.]º„tÙ³gOÏž=G�ŽÖðáÓ—%ižû¨@ÚØGþUVVVûöí‹‹‹çÏŸÒeÖ¬Y»wïnÕªÕm±²oß¾[o½õ¡‡ ±Êª_¿~RdóæÍ8€?þñ�ßÿþ÷Cêäææ:ô0Ÿ¼qãÆ›nº©´.q(#–~P‰|÷»ß}òÉ'kÖ¬Ò%//¯S§N;wî<ä3_|ñÅ–-[ª ~B€Ê¥M›6Ó¦M;î¸ãBºÌ�;·]»v™©îÙ³çßÿýß“ÙK™n PZ,ý‚´±ô ÇòåË“ÄúõëCº4nÜxòäÉMš4ù§Ï¿ÿþûÉ4éí·ßÂD€Ê¨Y³fgœqFH—µk×^yå•‹/þÇO>óÌ3—^z©J2‹P ’:ᄞþù–-[†tÙ¶m[»víæÌ™“<þøã�¿÷½ïõíÛ7y2Š¥_�6–~Á‘êի׳Ï>RçÎ;ï7nÜÊ•+@*�6BŽTIIÉàÁƒG�ˆ†¥_TvYYY÷Ýwß]w݈†P€ÿãöÛo9rd•*~3DÁ�cø¿rrròòòj×®¨hBþŸÖ­[çç绀 Â ø_Z´hQPPpê©§*ŽP€vòÉ'Ïš5«yóæ€ "Tà3üñùùù­Zµ T¡Ÿ­N�:yyy]ºt ”;¡TµjÕaÆ 4(P¾„ Â�wÞyï½÷Ê‘P€CëÝ»÷˜1cjÔ¨(BK»ví¦L™rÜqÇÊžP€ÃuÁÌœ9³aÆ€2&Tà4kÖ¬   iÓ¦€²$TàÈ4jÔ(™«œþù€2#TàˆÕ­[wÊ”)mÛ¶ ” ¡G£fÍšcÆŒéÖ­[  8JYYY>øàOúÓ@i*pL~ðƒ :´J¿RJ“Ÿªp¬rssóòòjÖ¬(%BJAëÖ­§M›V¯^½@i*P:Î=÷ÜY³f5nÜ8pÌ„ ”š&Mš4oÞ<pl„ ”¦uëÖ}õ«_ ›j8f}ôÑĉÇŒó—¿ü%pÌ„ ½âââ_|qܸqÏ=÷ܾ}û¥D¨ÀÑXµjÕøñã“DÙ°aC ´ 8;wî|öÙg“>™7o^ Ì8´]»v½øâ‹Ï}¢°°0PÆ„ ÐG}4sæÌ$N^xá…¢¢¢@y*ðÏÖ¬Y“ÿ‰W_}µ¸¸8Pî„ ü_ï¼óN2 python-django-debug-toolbar-8.0.0/docs/_static/brand/Square-Dark-Blue.png000066400000000000000000000607521524561404200262170ustar00rootroot00000000000000‰PNG  IHDR88crûØIDATxœìÝ ¸ÖsÞøñï9í»)¥HÖlI‘„¨ì²Ž™1Œ‡a†˜Ú¢¢BÆË0ÌkÖ´")í´k¡´¯N{�íÏ3Ïóüg¡õ,ßûw^¯ë¾Îuw×¥:ê~ߟß÷÷)�qöU &™ 2BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :¥�,§yh€]‘›——“››“û¿óþçyvNnοþ£­ÙÙŠ„P�¤Ù«s€B“ªš¬�›×nØø�Ç÷6­ýû㿟oüßçëÿñüïóòòì:¡À.(•™Y£J¥Ôcg¾8??Õº KV¯]²æû%«¿_²fíüþŸYþ}–ŒàÇ KFFÆÞÕª¤G7jðƒ_°|mÖÿ5Ìw+×ÌY²|Ö¢¥³¾[ê3„ ÅfŸêÕR�¦6üçO¦Æ, W®NËÌ…KþÞ-‹–¤ÒeeÖú@I"TˆKffÆþûÔJ=Îlväÿ}2k㦠—Ì^ü÷yËÌï–Nýö»o—¯ $—P T«T±åa�S�ÿûÌšõ'ÍývâÜo'Í[0qηó—­$HFÆÙW AòÞ!@É“¹¤ŠeÒÜç~“úøõâe€tf¢@¤F.mŽ:,õøÇ7nÙ:yÞ‚ñ_3z朑_Î\»ac ­˜¨@Ò˜¨À¿ÉËËÿò›…çÌñåŒO§ÍÞ´u[ zB’F¨ÀvdçäŽûz~ªXRÝ2fÖÜÔQ*�4BvÒæ­ÛFϘ3ü¿£eÒ¼omŸˆŠ3*”PÊ•mÛ´Iê‘z¾z݆Ac'½1zÂÐÉÓsr�YŠŸ‰ $�‰ 쉬�›ÞýbJªXOœº5;;PL„ $�P�±qËÖ÷Ç™*–÷ÇMqþ è H¡k˶ì�&M}ý³ñïŒ�¼~ó–@‘*�4B Ïã¿üÓðѯ�(dB’F¨@a[³~ã_>ûÂÐQç~(B’F¨@‘™¾`ñ ÃFýyä˜åk³J¨@Ò(b¹yyMœúüÐQï|1ÙI€‚"T i„ —µ6þåã±Ï»$   Xø£zåJ7ž{úÊuë… Àž*P0òòò¯ð\j¢ØcB À–mÙõ0xâÔ@A*°§Ö¬ßxF—Þ®ø(@BöÈ¢UkN½³×üe+G¨À`qÛ{±G À ØMŸL�uÞ½ý6lÞ(hBvÇk£Æ]Þûéœ\ …P€]öÔû#nøb ÐØùùùw<÷jß7 “P€�•�“{yïß¿þÙø@!*°SÖoÞr^�Ç>�6;Pø„ ìØÊ¬õm:÷š±pq HØ�yKWœ~÷à W¬¡Û3aÎ7gté³vÃÆ@*ð£>œðÕE=ßš�(ZB~ØË#Ç\Ù÷ùùù€"'TàÜÿ—AÝÿüV ˜øyyù× xîù¡£ÅG¨Àÿ·e[öE= ž85P¬„ ü�¬�›ÚÞýÈĹߊ›P€¿[´jMªR¾^¼,¡aú‚ÅmïydùÚ¬@„ %Ý'Sg�wo¿ ›·¢!T(Ñ��téƒOæäæ†ÉÈÈxææ«srónyúeÛ*�4%T(¹žzÄM_ ÉR¶té·ºÞ|ÖqG¥žŸrä!?ðÄŒ…‹@ºÉ Pòäççßñܫɫ”ª+ŒìÕù•’rHýºú÷¸þ¬6 ÝJœìœÜËz ìóƇ!YêÕ¬þÅcÝZÖøŸ?Y¾l™§~sÕ»ÝoM5LHB€’eÓÖmíîyäõÏÆ‡d9¸^�ñý{¤F(?øOÏiqôÔ�È� MJ�•Yë[uêùé´Ù!YN8ôÀÔ,¥NõjÛùšýö®ñYŸ{ºüôüŒŒŒ=¡@I1gñòão½÷Ëù C²\Ôê¸Ïûv­V©â¿²Tfæ}W\4üÁ;kT©â&T(&Ìùæ„Ûîûvùª�,7œ}ÚkwÝ´KÿÊ©G:å‰û�m¼ˆ˜P ù†MžÞúö×nØ’å�«.xÓ•»q)WýZ5>ïÛå§�b%TH¸—GŽ9³[Ÿ„í=ÌÌÌx©Óõwýäܰ»Ê–.ýâïþ+Õ9eJ— ñ*$Ù}÷Š>Oçå凩P®ìàû:]Þ¦eØc7œ}Úç}»nÿ>@±*$S*N®í÷l×—ÞÉR½r¥Ñ}º´mÚ$�f�÷ÿòÉžî\ ÄF¨�L?ðøóCG…dÙŸZãúu?¦QƒP ö®VeÌ£]s^Û ¡@ÒdmÜtâïî4vRH–£5øâ±îÖ­ Ç€~ñä�W€8eѪ5ÇßzߨYóB²œ~Ìá£ûtI�>Baúõ9§½ÚùÆÒ¥¯ŠŸP 9¦/Xܼã½_/^’å’“š¾¿SÅreCá»´u‹¡Ü^¹BùP¬„ 1fæÜ–¿»ùÚ¬�,·_|vjÊQ*³èþÊ>åÈCÇôíº�[�ÅJ¨�ƒÆNjӹ׆Í[B²$Kͪ•Gyø®Ôt%¡@,žzÄ¥>’¥t©R¯v¾±ÓÅg… ñ¾û¼ßã¶ÔO9ì1¡@îþÓë7 |1$K…re‡>pû¥­[„£Å!�ž¹ùê°Ç„ Å,7/⦅îõ·÷B²ÔªZetŸ.%p%âUmOúíùíÀž*§M[·�ÙµÏ+� ÉÒ¨Níñý»Ó¨A(‘½îg§}xØB€b³2k}«N=‡O™’¥YãýÇõëÞ°v­PR•ÊÌ|ãžß¸a1°'„ ÅcÁŠUÍ;öørþÂ�,§sø¨Þ÷Ô¨R)”lÕ*UüàÞÛ*•/v‹P L™¿°ù-÷.\±:$ËÏOm9øþNåË– „pHýº»ë¦°[„ EmØäé­:õ\µn}H–»/;ïÏ·__*Óß­ÿßYÇõàU—€]çSŠÔË#ÇœÙ­Ïæ­ÛB²üñ–kz^yqà?tþɹçŸÐ4ì"¡@Ñéõ·÷®èót^^~H�²¥K¿ÕõækÚŸø/uº¾$ßZØ=B€¢�ŸŸã“/Þý§×C²T­Xad¯ÎN86ðãªT(ÿv×›m¬v‰P ÐmÍξ°ç€ß0"$K½šÕ¿x¬[ËÃväèF û¯Ÿ€�&T(\Y7µéÜë�±“C²\¯Îøþ=©_7°sn:÷t‡U€�'T(DËÖfë}cgÍ Ér¡¦f)uªW ì ‡U€�'T(,³-m~K�¯/ É’ ŒìÕ¹Z¥Š�]ä° °ó„ …bÌ̹©YÊâÕkC²\Ý®õ[]n.WÆJÇÝtt£n¸<ìˆP à½=fR«N=×mÚ’åþ+.~¶ãµ�=pÃÙ§]rRó°]B€öÜ�O/ê9 $KffÆK�®¿ç§ç Âo¹Æ `û„ éž?½þ«þÏ…d©P®ìàû:]Þ¦e €T­Xá•;~~œP `äæåý¢÷Óýí½�,Õ+WݧKÛ¦MêÔ£½ùüvàG À¦­ÛÎìÚç•�Ç„diP»æ¸~Ý�iÔ P¹ö2‹h€#TØSkÖolÕ©çð)3B²ݨÁø~=¬[;P8Ê–.ýjçKez5ü4°G¬XÕ¢ã½_Î_’åä#ݧËÞÕª ÓQìw߀ÿ TØ}Sæ/l~˽ó—­ÉrÉI͇>pGÅre…ïÎKÎiyXã𯄠»iØäé­:õ\µn}H–NŸõjçË”¶=½ˆdffüåŽ_ËBàß”°ëþ<âó+ûþ!$Nÿë/ÿ­[Q¹ÏgέU­Ê«Àÿ*ì²G^ÿ óó ÉRºT©×à ÇŠÊÚ ŸüIÿAC–®ù>ü+¡À.ÈÏÏ¿iàK¿ÿ`DH–Êʿ۽ã)G(3¿[2`ÐІ}¶5;;ü¡ÀÎJ½¦¼¬×ÀwÆNɲOõjø£IÃz�B– Ý�&Më÷öGC&M Û%TØ)ë7o9£Kï±³æ…diT§öÇw®_«F 0mܲõÅá£{û£¹K–€� Tرek³ÚÞýÈŒ…‹C²4k¼ÿG=o¯Q¥R Ð,\±ú‰÷†=ýÁÈTë€�&TØ�Ù‹–¦*eñêµ!YÎlvä›]n._¶L pŒž1§ßÛ½5fb^^~ØEB€í3sîYÝú®Û´9$ËÕíZ?só5™™�‚–�“ûê§_<òúÓ, »K¨ð£>œðÕ…÷Ø–“’¥ÛÏ;ô¸üÂ@A[™µþ÷ŒxâÝa©'`Ï~ØsC>½nÀóùù‰ºh'##ã™›¯¾¦ýÉ�õÕ7ßõ4äå‘c’—µ@q*ü»…+Vßòô˃ÆN ÉR®L™W;ßxþ MçÍÑž|oøÈ¯f€%TøSæ/lOïUë’véNÕŠ†=xÇq(ë6m~~è¨ÇÞþ(•µ þ¿a“§w¸¿ÿæ­ÛB²Ô«Y=U)‡Ô¯Øcó–®xü�¡üè“M‰û>¢"Tø¯�÷³GžJÞ�doP/U)uªW 왑_Íì÷ö�w¿˜ ŸPàï~íý»^x-$ÎÉGòn�[«T(Ø][¶e¿òñ˜¾ožùÝ’PT„ @I—ŸŸÓÀ—~ÿÁˆ�8çŸÐôµ»~S¦t©ÀnYºæû�ïøÞˆµ6€¢%TJ´­ÙÙ—õøÎØ^ÌsÃÙ§=yãV:îŽ s¾é÷ö�¿�—“›ŠƒP(¹ÖoÞrF—ÞcgÍ ‰ÓëêŸÜqÉÙ�]”›—÷æè ý 3sn(VB „Z¶6«íÝ�ÌX¸8$KffÆ_îøõ¥­[vÅÚ ŸüIÿAC–®ù>D@¨”D³-MUÊâÕkC²T(WvP×[Ú6mØi³¾[šê“? ÿl˶ì ¡PâL™¿ðÔ;Z·isH–ZU« yàöc5ì„üüü�&MK%ÊG§€ø€’%©+¬[{HÏÛ¨³w`GR““g‡|úø;C¿^¼,ÄJ¨” /�sÕ£HÞJÇ£5þà�5ªT l׫Ÿ|oøï?±~ó–7¡PRôúÛ{wÿéõ�8§sø n+–+øq£gÌé?hÈ›ŸOH^¦I%T’/Á+~jË?ýîºR™™�’�“û·Qãú¼ùá—ó€´"T.Á+;ÿäܯº$ðCVf­úÑ�¿34õ$¤!¡�d ^éøä�WþúœÓÿá«o¾ë?hÈË#ÇlËÉ iK¨$VRW:–-]úÕ»nìp±�’——ÿÞ¸)ý}ôñW³@ú*ɔԕŽU+Vøð¾ßµ<¬qà¥æfÏ ùô±·?Z¸buH ¡�@cfÎ=«[ßä­tܧzµ�{u>¤~ÝÀ›¿lÅ€ACŸ:jƒÛ ‰#T’æÃ _]xÿ€ä�O8¸^�aÞQ¿V�@#¿šÙÐ�DÞ#à„ @¢<7äÓë<ŸŸŸ´]'zà‡÷ý®Z¥Š¡dÛ²-û•�Çô}sðÌï–€D*ÉÑõ¥7øë»!qÎlvä[]o.W¦L(Á–®ùþ©÷G<ùÞðµ6€@¨$An^ÞU}ŸI½×çêv­Ÿ¹ùšÌÌŒPRM˜óMÿAC^ýt\Nnn(1„ @ÚÛ²-û¼{>eFHœû¯¸øžŸžJ¤T|¾õùÄ~où|æœPò€ô¶fýÆ3ºôž8÷Û�,©ÊŸnû¯ËÛ´ %ÏÚ ÿøÑ'©DYºæûPR €4¶`ŪÓïzdþ²!YÊ•)ón÷Žm›6 %̬ï–xgè ÃF¥¦d d*éjú‚Åm:÷Zµn}H–ê•+}Ô³ÓqJŒüüü!“¦õ4䣉SÿM¨¤¥O¦Î:ïÞ~É[ó× vÍáÞy`ÝÚ¡dØ´uÛ‹Ã?{ô­�æ.Yø'B ý¼6jÜ彟NÞ= ŽnÔ`HÏÛ÷®V%”ß­\óÄ»Ãþ0øã¬�›ÿA¨¤™¾o¾ýÙ¿†Ä9ùˆC>¸ïwË• I÷ùÌ9ýÞòæçòò’¶—  €trã“/þþƒ!q.9©ùË·ßP¦t©�\Ù9¹5®Ï›~9a`G„ @zH½Ì½¼÷ï_ÿl|HœÛ.<³÷µ—ed$v¥ãªuëÿÁÈÇߺ2+iw>ˆAéR¥.=©yÇ Î¸²ïf/Z€¤*i`ýæ-çõxìÓi³Câç´�PS¿]ÔÐ�?�ø|[NN  U¯\)õÍsã9§ï[s¯ÔuÆ)‰¼*J,¡»ek³ÚÞýÈŒ…‹C²¤Þùöë/mÝ"$N^^þûã§ô{{Èȯf Áaûí›Ä]Þ¦eù²eþï“WžÞêŽç^ÍÏwòB¨DmÞÒ§ÞùÐâÕkCâ éyû©G’eÓÖmöYŸ7?üfÙÊ@!8ïø¦/hßæ¨Ãþóí]­ÊÙÍ�zÜ—H¡¯ s¾9£KŸµ6†$Jýì’*ó—­xü�aÏù4yËmbP¹BùkÚµþíùí¶¿cçê¶­… $†PˆÔ‡¾º¨çã[³³CBÝóâëç¶8æÐýê†4÷ñW³ú úè�±“… Aíš·^pÆ5íO®R¡ü¿85o©V©¢Õ4� B F/�seß?$ûjûìœÜËz=9¾�²¥Óò/£TC¾òñØ>o|8ó»%�BÐæ¨ÃnéÐ>U³™™;{G¸2¥K]yz«Ç߀ô'T¢sß+ƒz¼üV(¦~»¨ÛKoöºú'!­,[›5ð½áO}0bõº �‚– ×_œvb*QŽÜ¿~Øu¿l{’P�d*ÉËË¿nÀsÏJŒG^ÿàüšžxØA!Lœûm¿·?zõÓq9¹¹�‚¶Oõj¿9·íõgŸZ«j•°»šØð�úu-T�*±Ø²-û¢žOœJ˜ËyzÚST*_.Dìí1“ú¼ñáç3ç A³Æûß~ÉÙ?) {U_wæ)�þh¡ ¤½ŒŒ³¯ @‚ä½ÿB emÜÔöîGRo؇é7çµpÃ/B|ÖoÞòÜ�O}kðw+× ÁÅ­Ž»õÂ3 v¤¶2ký>?ÿmÒœ‰ @ñ[´jMªR¾^¼,”TO¼;쪶'¥ÞVј½hé€w†>?tTjÒ(hÕ*U¼áì67�{zýZ5BAÛ»Z•öÇ1dÒ´¤3¡P̦/XÜöžG–¯Í %Û/}fÊ÷—ÊÌ Å*???õ·ÿ !%ð¼¢qp½:·]xæ§�X¡\ÙPh.9©¹P�t'TŠÓ'Sg�wo?+Ã[Ÿ7>¼óÒsB1Ù´uÛK#F÷}sðÜ%Ë…àìæGßÒ¡]»¦G„ÂwщÇÝðÄ yyI¾Á7$žP(6ƒÆNºôÁ'Ý?êÿtÿó[?iÝâ€:{‡¢õÝÊ5O¾7ìé?¶(°0T,Wöêv­o>¿ýAõö E¥F•JmŽ:lø”H[B x<õþˆ›¾ø'Ûrr®é÷ìÈ^�CQ3sn¿ACÞ=Þ[ï…¡~­/hmû“«UªŠÜ%'5*�Ö„ @QËÏÏïüük½ßø ð>™:믟|ñÓSŽØ›iKIDAT…);'÷µÏÆõ~ãÃ/ç/ ‚“�8ä–í;œpìÎ/•/p—žÔâ×Oü)iK¨©Ü¼¼Ÿ=üÔëŸ�üˆÛžyåüšV,œ“Ö«Ö­úƒ�Ÿxo˜»†2¥KýüÔ–©D9¦QƒPÜjT©têQ‡~üÕ¬¤'¡Pt6mÝÖá¾~.GÙ¾ek³z¼üÖ#×\ ÔÔoõ4äÏ#>ß–“(h{W«rÓ¹mo8»Mí½ª†h\Òª¹P�ôeá#$�…�ÑZ™µ¾}—Þ®5Ú¥K•šõ‡‡Õ©öX^^þûã§ô4tÄ—ú°PѰþí—œuÙÉÇ—-Ý»Ÿ©èÝ÷· =™¨…yKWœ~÷à W¬서ÜÜÿð°ï{`ýæ-Ïõè[ƒý²†ÌÌŒ [6»¥Cû“šbU§zµÖGéC¨ì©Ac']öÐÀm99âV¹BùëÎ<å7ç¶= ÎÞ¡„9븣^>:éC¨ì‘ç†|ú«þψ[ªLn½àŒ_¶=)Õ*¡D:£Ù‘BÒ‹PØ}÷üéõ‡þö^€ˆµmÚä·çµ=ïø¦¡dk{L“¤¡°;róò®êûÌ+� ¥reÊ\yz«›Ïoפa½@{W«rp½:nÊiD¨ì²M[·u¸¯ßð)3ÄgŸêÕn9¿ÝugžZ³jåÀ?9©ÉÁBÒˆPØ5kÖo<ýœ¿0@dŽ?äÀŽ´¿¸Õq¥K• ü‡“šôÜ�O�&„ À.X°bÕéw=2ÙŠÑ(•™yiëæ;œÑâ�F�wÒá }€�5eþÂö÷ô^µÎ*bQ½r¥_ŸsÚ�眾oͽ;Òxß}jT©”Š €�òÉÔYgwtóÖm"pp½:·_|öåmZ–/›ð¥ò«ÍQ‡½1zBÒ�Pر×F�»¼÷Ó9¹¹ŠÛ¹-ŽéxAûÓŽ><°ëNjr°P�t!Tv ÷ÜùÜß«ŠåÊ^{Æ)7ŸßîÀºµ»«uÇT m€•ŸŸÓÀ—~ÿÁˆÅ§Aíš·^pÆÕíZW­X!°gŽiÔ°\™2[³³=¡ðòsr/}è‰wÆNPLN=êÐŽÎ8·Å1™™�‚�ú•l}ÄÁÃ&O@ô„ ÀX¿yËy=ûtÚìE®léÒ—·iyK‡öG°_  �t¸P�ô TþݲµYmï~dÆÂÅŠÖÞÕªüöüv7œÝ¦VÕ*�Âq¼m3�&„ À¿˜½hiªR¯^ ݨÁíŸuéI-Ê”¶T¾pÈ�HBàÿ›0ç›T¥¬Û´9@‘ÈÌ̸¸UóŽÚ·<¬q HìU¹b½šÕ½ñ*ÿãà _]Ôóq·¢hT«Tñú³N½éܶûí]#P´Žm¼¿P�ø €¿{nÈ§× x>???@!k¼ï>¿»èÌ+NkU±\Ù@q8¶qÃw¿pC?ˆ�P=^~ë¾W(dgwTÇ Ú·kzD X{`ÃDO¨%Z^^þuž{~訅¦|Ù2×´?ùæóÛ\¯N Ç6Þ?Ñ*@ɵe[öE= ž85@á¨_«Æ-Úÿꌓ«UªˆF½šÕS¿#Y7 bB(¡Ö¬ßxF—Þç~ ´>âà[Îoߡ履23ñ9áÐ?ò&ÄM¨%Ñ¢UkN½³×üe+¨2¥Kýì”RS”¦NAÄíØ ˆœPJœé ·½ç‘åk³œšU+ÿæ¼¶¿>û´Ú{U DÏ1ˆŸPJ–O¦Î:ïÞ~6o P@ŽhX¿ÓÅgýô”ãË–ö·jÚpã/ˆŸ?R�äµQã.ïýtNnn€=–‘‘qá‰Ín9¿}ë#¤›êì� Ëm99ˆ•PJЧÞqÓÀì±*Êÿ×Y§þæ¼¶ k× ¤­& ëMž· ±*@òåççßñÜ«}ß`Ï4ÞwŸŽÚ_Õö¤JåËÒÜ¡õë ˆ™P.;'÷òÞ¿ý³ñö@ûc�¸¥Cû3›™‘‘H„Cê× @Ä„ �d›¶n;»[ßO§Í°[Ê—-sÕé'ÝÜ¡ÝaûíH–C÷*5¡$Öʬõí»ôþrþ»®n�½R#”ëÎ<¥zåJ�$:¤^�DL¨É4oéŠÓï~xáŠÕvщ‡tK‡vµ:ÎRùd3Q�È  �&ÌùæŒ.}ÖnØ`§•.U겓[¤¦(Çt@ (W¦LƒÚ5½�Ñ*@Ò ›<ý¼{ûmÍΰsjV­üë³Oûõ9§Õ­±W $9¤^]¡Ñ*@¢¼BHW³-=µs¯åk³ü�)OÜç;Ô`ïšBâdç.�–ÆÌœ{ü­÷©¶cî’v¤aíZˆ’PÒÏ ±“ÚtîµnÓæ?n̬¹v¤a횈’K¿€4óÔû#nøb€ù|æœ;b¢Ñ*@:¹ë…×~íý;aì¬yyyù™™îôÅö4¨]#Qré�róò~Ñûi•ÂÎÛ²-û«o¿ °]&*-¡¤�M[·�ÙµÏ+� °+ÆÌtL…hTgïDI¨±[™µ¾U§žÃ§Ì°‹Sa‡J—*U{¯ªˆ�P¢¶`Ūæ{|9a€]7fæ¼;Ò`o7þ‚  ^Sæ/l~˽ W¬°[æ/[±jÝúÛåÅ'¡DjØäé­:õô*“=ôù ÇTØ�}kV@|„ £×F�;³[ŸÍ[·Ø3cg»ú‹¨]͈‘=*@t~íý»^x-@A˜öí¢ÛµOu¡1*@DòóóoøÒï? €ÌX¸$Àv™¨@œ„ ‹­ÙÙ—õøÎØÉ Îüe+RßZåÊ” ð#ÜžâäŒ …õ›·´éÜK¥Pf~·4À�«½W•ÄG¨ÅoÙÚ¬–·Ý?v–CÏŠ øq.ý‚8¹ô (f³-m{÷#‹W¯ P8Saû*W(_¦t©ìœÜÄÄD(NcfÎ=þÖûT …ÊD…Ú·†U*¡›'|Õ¦s¯u›6(L&*ì�c*!—~Åã¹!Ÿ^7àùüüü…lîÒå¹yy¥2½7Ç�rã/ˆ�?µ�bÐí¥7Õÿ9•BÑÈËËŸù�¡ Ûã<=DH¨E*õ’ñÚ~Ïöüë;ŠÐ´oSa{ö©^-‘qéPt¶l˾¨ç€Á§(Zó–®ðãöªT1‘*@ÉÚ¸©íÝ�Lœûm€"÷Íò•~œP�  (,Zµ&U)_/^ 8,\¹:À�Û«²P�è ÐM_°¸í=�,_› ˜,X±*À�3Q�  p�™9÷Œ®}6lÞ øÌY¼<óœ_Ò‡P Ñ ±“.{hà¶œœ°+„ PXžzÄM_ »N¨…â®^{øµ÷Àn*@ËÍË»ªï3¯|<&ì.¡¤M[·u¸¯ßð)3À*@�Y³~ãéw?üåü…`Ï `,X±êô»™¿lEØcB(Sæ/lOïUëÖ€‚ T€=õÉÔYgwtóÖm €`�¼6jÜ彟ÎÉÍ G¨»¯÷ÜùÜß@A*ÀîÈÏÏ¿iàK¿ÿ`D(BØeÙ9¹—>ôÄ;c'€Â!T€]³~ó–óz<öé´Ù Ð`,[›ÕöîGf,\ “PvÖ¼¥+N½ó¡Å«×€B&T€�2aÎ7gté³vÃÆPø„ °cNøê¢ž�oÍÎEB¨;ðòÈ1WöýC~~~(*BØžûÿ2¨ûŸß EK¨?,//ÿºÏ=?tT(rBø[³³/¼Àà‰S@q*À¸ûO¯« e€ÿðàU—œÙìÈPL„ ðÊ•)ó^�Û®n×:¡ü°ÌÌŒg;^{߀"'T€íéòÓó_êt}*Z@*À\Þ¦åàû:•+S&¡ìXÛ¦MFõ¾»zåJ H`§wÐãúuoP»f(|BØYÖ­=¾_�ÃÔ …L¨»`ïjUÆ<Úõä# …I¨»¦J…òC¸ã’“š€B#T€]V¦t©W;ßxÛ…g€Â!T€Ý‘‘‘ÑçW?»ÏQœIDAT}òÆ+@!*Àîûõ9§¥F+¥K• J¨{äÒÖ-†>p{å å@Á*Àž:åÈCÇôíZ«j•P@„ Pš4¬7¾÷Fuj€‚ T€‚Ѱv­qýº7k¼ØcB(05ªTÕûž3›öŒP Rù²eÞëqÛÏOmö€P XffÆŸo¿¾ËOÏ»K¨…â¾+.úã-×ddd€]'T€ÂrMû“ßëqkÙÒ¥À.*@!:븣Föê\µb…°+¼Ó ®–‡5þâ±nmï~dñ굊ÉAõö™ý‡‡üˆÁ§žÝ­obb¢ºCê×ß¿Çá ê(&¶‘²}«×m@d„ PêT¯6æÑ®'z`€âp`]¡Âö¬^/T :B("U*”Ù«óù'4 PäÕÙ;À�3Q�  è”+Sæ­.7ßpöiŠ–‰ Ûg¢*@‘ÊÈÈxÓ•^uI€"äŒ Ûg¢*@1èü“s_êt}f¦u�‘Æ&*l—‰ DH¨Åãò6-ßשB¹² Ù~{×ð�Æö™¨@„„ PlÚ6m2ºO—ZU«(L‡í·o€í2Q�  8Ó¨ÁøþÝÔ® ÐØáÙ¨@„„ PÌÖ®5¾_�£5P8Û¯n€—ŸŸ¿qËÖDF¨ÅoïjUF÷érú1‡(&*lß²µYˆ�P¢P±\ÙÁ÷wºä¤æ Ú1æul—*'¡Ä¢Tfæ«�o¼ã’³œ}ªW«T¾\€·*K¨@Œ„ ‘ŒŒŒ^Wÿäɯ P@Ž;hÿÛµxõÚÄG¨Ñùõ9§½Õõæ²¥KØcÍï`»­Z€ø FN8vd¯Î•+”°g„ ;$T NBˆTËÃ�éÛuŸêÕì�ã: Àv-ZåÒ/ˆ‘PâÕ¤a½ñýº\¯N€Ý²wµ*ukì`»LT NBˆZýZ5¾x¬›«wØ=-i`G¾*%¡Ä®Z¥Š£zßsf³#ì¢V‡`»rrsW|¿.ñ*@(_¶Ì{=n»º]뻢õ‡Ø.÷&†h  =dff<ÛñÚ—_`ç”+Sæx—~±#NÒC´„ �Nºý¼ÃK�®ÏÈȰ#©J)]ªT€ír’¢%T€4sy›–ïõ¸5õfy€íj}ÄÁvÄD¢%T€ôsÖqG�ê}wõÊ•ü¸“Pa'˜¨@´„ �–Ž;è€qýº×«Y=À�¸iàKøðã-Û²ü8÷&†h  ]X·öøþ=oP/À™»dù O¼°ÏÏ{û³]°bU€2oéŠDI¨i¬Nõjcíê ¶cýæ-}ß|൷_úàŸMÿ:À¿š¹pI¢$T€ôV¥Bù¡ÜqÉIÍü¸¼¼ü7FO8ùŽ�º±ËŸG|¾-''À/QñÍÑ*@Ú+SºÔßîºé†³O °#Ó,º²ïö»òÖûÿ2heÖú@Éöõâeˆ•PbàMW>rÍevB*Qºÿù­T®\ÛïÙ¯¾ù.PR ˆ™P’£ÓÅg½ÚùF;þØIÛrrž:ê˜ßt=ý®‡ß;9//?PˆYé� —¶nQ{¯ªgwtóÖmvÎȯf¦ j×¼íÂ3¯n׺J…ò�’A¨@ÌLT€¤9åÈCG÷éR«j•»báŠÕŸ~¹Þo{æ/ß,[(„ ÄL¨ tL£ãûwoT§v€]´aó–~oÔøWw\xÿ€O¦Î $Wn^ž%*3¡$SÃÚµÆõëÞ¬ñþv]~~þ ±“ÚtîÕ䆻_6jk¶õö 4éJ“ fBH¬U*�ê}ÏéÇ`wÍünÉ5�=[ÿÊ[{¼üÖòµY�qÝDN¨IV¾l™Á÷wúù©-ì�Õë6Ü÷Ê ¿¼í—�>3yÞ‚@"ÌY"T j¥2:& Òýò ÿ$3#ã¢VÇeçæŽšþu€=�——ÿå7ßýáÃ�G~5³RùrMÖ ¤³†}6qî·ˆ•‰ P"ô¼òâ?ÞrM€‚ðé´Ù—õØàªÛ{룬�›éÉ®OˆœPJŠkÚŸüVכ˖¶?Š‚±hÕšßýñ/õ®èxóïÿð×wþòw¿èýô„9ßâ3Åm¦!zB(¡ªUª8²WçóOh pääæ¾òñ˜ï=©Ó¯6>7// ˆŸPJ®reʼÕåæ«ÛµP˜>Ÿ9ç'=ÙàªÛz¿ñÁ÷Üθø¥~–­Í @Ü„ P¢edd<ÛñÚžW^ �-]óý�Ïýmß+n¹ià‹³- Ÿq_Ï@ô„ @¸û²ó^êt}ffF€B¶e[öSï�8ìú»ÎîÖwȤi�âàº/H ŸüÝåmZî³WÕ÷÷·Z�¢1xâÔÔ£ñ¾ûtºè¬+N;±B¹²�¢2e¾“ô�LTþGÛ¦MF÷éR½r¥Eeî’å7<ñ¾Wt¼ë…×­Z(&*�„ ÀÿwL£ãúuoP»f€"”µqÓï½ÀÕ�~öðS_Ìž(Lë7o™½hY¢'TþÅ�uk�ï×ãèF ­Ü¼¼W?ý¢åm÷7ým·¿~òENnn Œž1'???Ñ*ÿnïjUF÷érò‡(_Î_øóGžÚïªÛzýí½5ë7 ÔgÓ¿@:*? b¹²C¸ã’“š(&Ë×fÝý§×ë]ÑñúÇ_˜±pq €¤&*H¥2:& Òýò ¡Tff*T6nÙ:fæÜÅ$7/oÒÜo¾?âó™skU­Ü¸níŒ ÷ÑÞ}9¹¹7 |)õ«€è¹=1À�J½"ì}íOÕ©}ÓÀ«¡“§¥ÔÙûwžyUÛ“*•/Øuç~»5;;éÀ¥_;ðësN{«ëÍ¥K• PܾY¶ò7O½´ï/n¹ã¹W®XØE®û‚4"Tv¬Ã Ç}àöÊʈÀúÍ[ú¼ña£k;]úà^yï'é!�€�rÊ‘‡ŽéÛuŸêÕÄ!//ÿ�ÑZßþ@Óßv{yä˜ì·3Þ±O§Í@š*;«IÃzãûuoT§v€˜|9á}ž®eÇž}gÕºõ�1gñr·{†4"TvAýZ5ÆõëÞ¬ñþ"³2k}·—ެŭ¿êÿÜÔoþÃg3\÷éD¨ìšU*�ê}ϙ͎ Ÿm99Ï ùô蛺œ~×Ãï~19/Ï öÿÏH/B`—•/[æ½·]Ý®u€X�üjf‡ûú7º¶Óãï ݰyK „!“¦ }XøIcácÑÈÈÈèp±ù!ÿ“©Î毬�›Oœúø»ÃVf­?¸^�ê•+…’jþ²üõݤ€Ý×ãò ÿxË56…¹ÔD¥ßÛ5þÕõPbo{eœiG¨ì‘kÚŸü^�[Ë•) nùùùo�™tê�uc—? ûl[NN(I†Nž€´’‘qöUH�¼÷_¹ s¾i{÷#ë6m�&jV­ü›óÚÞpV›’°(iU.¾~ÓÖmH&*ฃøâ±nõjVŽÚ{U ¨Õë6ÜûòÛuqËU}ŸùrþÂ�hcgÍS)�v„ @Á8¤~Ýñý{Þ ^  {ðŽYèuã¹§—/ë*»öÒˆÑMÛíÔ;z{̤¤ÞÎxØ×}Aúq×/Hwý*F•+”¿âôVŸÏ˜³`Åê@ÁùÙ)'üúœÓjV­|vó£o:·m­jUf~·Ä…v+õMûê§_<7tTêy“†õvìªëKo.\éÿJH3Ψ@Ò8£Rì²sr/}è‰wÆN„Ò¥J}ýÌÃûïSëŸ?™›—7h̤~ƒ†XáW*–+{í§Ü|~»ëÖéoã–­Õ.½ÁîKH;&*�4&*Å®Tfæe'¿âûõæ|Øc¿9¯íOO9áß>™™‘qXƒ}¯n×úüšnÞš�°xZ€²ssÇÍžÿø;C'Í[°Ï^U¨³wHgMœú—�Ç ÝH¡ƒŒŒŒsZ]¡\YWÆï¡Ô[ûowë˜ú•ü±/¨[c¯ Olö_gžZ©|¹i ov`º@}½xÙ‹ÃGÿmÔ¸ e˶߾©éVHCO¾7|Ü×ó�n„ $�P‰G«Ã:¼Á¾o~>!ß{ý»«ÛÏ/8£Ù;ü²ÊÊŸzÔa/h`ÝÚó–®X‘µ.PpV­[ÿΓ¾?bÖ-©\©R¡|H+·þá•Õë7 Ý8£IãŒJl†MžÞáþþÞéß õjVÿú™‡·3Nù1£¦}ýÄ{Ã^5.P~qÚ‰w\rö ë‡t0wÉòƒ¯»3iÈD’ÆD%6�êÖ>§ùÑoŒž`�îz¶ãµG7jv]ÃÚ5/=©ùUmO*•™9mÁ¢’¶‚½°}õÍwO½?bØ”éU+V8¤~ÝÌŒŒ±§?üxÄ—3�†LT iLTâ´`ŪSî|h¡Ûï´S�:tÄC�ÃÛ°yËŸ†�~ô­Áß,[(hukìuëgüêŒSöª\1D©ÙÍÝ'Ï[€4$T i„J´Vf­oߥwâW€ˆÒ¥JÍúÃC�êؽqóóó?œðU¿AC†Mv{ƒ‚W¾l™kÚŸ|óùí®W'Ä仕kþò¶¤'—~AÒ¸ô+Z•Ê—»òôV_Ìžç­ýúÝEgý¤u‹Pp222ªWçŠÓZ]ÚºyvnÞô‹sóò$'7oü×ß<ñî°q_ϯ½W•x¶¯<ýáHwÞƒôe¢Ic¢¹Ôëã«ú>óÊÇc?bŸêÕæ?Û{7ÎÐï¼5ë7þáÑýߺ|mV  ¥æ*·]xæ§�X¨¿‰;£EÇ{­3‚ôe¢Ic¢¹ÌŒŒ‹Z·%;{ôŒ9�òÇ[®9æÀ†¡0¥^@ŸÔäàN�Õxß}–­ÍZ´jM à¬^¿á½qSž|oø†Í[š4¨W¹˜ngœúm½ýÙW�¶„ $�PI m�iR{¯ªŒÿ2ð¯Ú6mòðÕ? Eå¨ö»¶ýÉgwÔÆ-[g~·$ßÊ›‚³5;{Ôô¯û½=dÖ¢%õkÕH=BÑúãGŸ ™4-iË¥_�4.ýJ#ƒÆNºì¡�nžûÊ—-°/IDAT3ç��Ô«Y=‡%«¿øþð§Þ±vÃÆ@A;þ�;^ÐþâVÇÙzû–·ÝÿÅìyH[B’F¨¤—13çžÑµÏ†Í[!øzñ²@AÛ§zµŽÚ_wæ©5ªT …iùÚ¬º¿¸%éL¨@Ò•´3}Áâ¶÷<âT÷1�LpoF4ÛG|9£ßÛCÞ7%PÐÊ•)sUÛV·thØ~û†ÂÑÐ�[ÿðJÒ™P�¤*éhѪ5mï~¤„¿…?å‰û�:`¿™yKW |øÓŒÜ´u[  �ÑìÈÎnÓá„cCAsÝ$€P�¤*i*k㦳ºõ;«„¾´ºýâ³¾¦èÎÐïª ›·¼4âóÞo|ðíòU�‚vP½}Rß¿hsbù²eBAHååA¿º#iÎ]¿ iÜõ+M¥^¢ýâ´'ÎùvîÒ¡„9¸^�×TffˆUÙ2¥›|ÀoÏk×´qÃåßgÉ•‚µfýÆw¿˜2à�¡ßoØtH½:Õ*U {¦ÿ !ŸN›€4g¢Ic¢’Öòòò¯ðÜóCG…#Õ'“¿ïÈýë‡ôñÕ7ߥ^ ¿¿]ýZÕg/^¶fýÆ@Á™¿lå+�}qÄèR™™‡7Ø·l™Òÿöw½ðZ ßGIâÒ/H—~%Ïʬõm:÷š±pqHœÊÊt§–‡5I”­ ™4­ß !Mœ(h©ožëÎ<å·çµÛŸZÿøÌ÷6ÕüéM©_ö$‚‰ $�‰JòT*_îŠÓ[}>c΂«C²lËÉùóˆÏ�< þ¡õë†ÄÉÈÈh¼ï>¿hsâOO9>7/Ú‚E9¹y�’úæ;kÞ€w†~õÍwûÖ¨Þ°vÍgüᄯ�&*�4&*I•�“{yïß¿þÙø�DnøÅoÎkmýæ-øðãGßlÅGa8ºQƒM[·ÎY¼<Ia¢Ic¢’T¥23/mÝbù÷ë&Ìù&$Nê�ðÍÛ¶�~Ìáiz«â�Q®LékÜñ‚öGî_Éšï¿[¹&Pp–¯Ír"F¨@Ò•d;§ÅÑU*–2iZHœÑ3æÌX¸ä¢VÇe&·URR?»ÃÔ»¦ýÉçLªÍR?åþ�o>¿Ýq°"k�\J¡I#TJ Ò¥J]ަ弥+¦~»($K~~xë󉩗쭛J¤ŒŒŒƒëÕIµè%'5ÏÎÉ�¾pInžõö@‰ T i„JÉ”™‘qQ«ãròrGMû:$Έ/g,ÿ~ÝÙÍ�Jð:Ȫ½WÕóŽoúë³OÛ«rÅé oܲ5$šP�¤*%ÙiG¾ßÞ5Þ7%$΄9ßL™¿ð›¥ÆG¡«X®lj¸Ô±CûÃö«7wéŠåk³@B9LIã0=NøêÂûlËÉ ‰s¡~xßïªUªøo_Ìž×ïí!¯6Þõ`@òH¡Bʘ™sÏêÖwݦÍ!q®Wçã‡ïªS½Zà-^½öÉ÷†?õþˆ¬�›@RH¡Â?Ì^´´íÝ�¤^†ĩW³ú°ï8¤~ÝÀ?Ù¼uÛŸG~Þ÷ÍÁ_/^ÒŸP�¤*üŸek³N½ó¡D¾l­Z±Â‡÷ý®åa�ÿaØäéýßòþ¸/@:s˜’ÆazþOå å¯8íÄO¦ÎZ´*is•­Ù9ñù‘Ô?Ô\å?4ª[ûç§¶L=Rϧ-X”�›Ò�P�¤*ü³òeËüâ´§~»hö¢¤ÍUróò^ýô‹ýö®ÑôÀ†�ÿP³j峎;ê¦sO¯]­êŒ…Ky` H6¡I#Tø7¥K•ºìäãW|¿~œoBâ¼óÅäm99§sxà‡¤Jµåa�oéÐþ˜.]óý‚«@š*�4B…ÿ”‘‘qN‹£Ë–)=âË!q>›þõœ%Ë;´<6³¯ƒÜ¾Ô7À¡ûÕýe»Ö©_¥-ÙÙ3.ÎËËq*�4B…ÓºÉÁ�÷ÝgÐØIù‰{�:õÛEŸÏœsÉIÍË”.Ñë w¨Nõj´<öú³ÚT®P~úÂÅ›¶n ±r×/Hwýbû†MžÞáþþ›“ø õ˜F †ú±·?š»dy(VÓCÒ8LÏNúû:ÈÓ[}üÕÌä­ƒÌÉÍ}ùã1‡í·o“†õ»¢léÒÍ>à7çµ=áÐÆ+³ÖÏ[º"¡I#TØyåÊ”Nê:ÈüüðúgãË—-sR“ƒ»(##£ñ¾û¤¾7~rr‹Üܼi çæå€¢%T i„ »$Ùë ‡O™±üûug7?*Ê•ݲwµ*ç¶8æ¦sO¯Q¥òô…‹78¾!¡I#TØUÿX™>¤^Ö‡ÄIØ”ù /<±Y*É»¥BÙ²­?¨ãí�hXoñ굋V­ …O¨@ÒvÏIÉ]9{ѲTƒýääãË•)Ø]™MÖ»¶ýÉ©¬Ý¸eÛÌï–æ%ï{ˆ‰»~AÒ¸ë{"Áë oPo؃wÔ©^-P–®ù~àûþ7bí†� H¡Âš2aû{z¯Z·>$N½šÕS­rHýº�²e[ö+�éûæà™ß- Ê¥_�4.ýb¥f—œÔ|¯Ê·fç$ìÎÅë7oùóÈ1­›Ü`ïš�‚PºT©¦6¼éÜÓO>ò�¬�›g/Z ˆ‰ $�‰ %õfùE= ž85$KÙÒ¥ßêzóYÇ(hó—­xü�aÏùÔýÁ€=g¢Ic¢BAI½Yþ³SZ~·jÍ”ù C‚äæåý哱ûÕª‘ TõÊ•ÎlväoÎk›šËÍønIjÆv—P�¤* ŒŒŒ'›úøñÔY!YÞùbrN^îiG(håÊ”>þ�o>¿}³ƒö_¾vÝ·ËW€]'T i„ î”#m¼ï>o�™’eÔ´¯ç,YÞ¡å±™ÖA‚TßR¿îUmOº¨ÕqÛrr¦[oì"¡I#T( G°_‹ƒ½1zBÂ^kNývÑç3çü¤u ë Ï>{U=ÿ„¦7œÓ¦jÅŠ3¾[²qËÖ°¦‡¤q˜žÂ3aÎ7gt铼½ÍïÿQÏÛkT©(dÙ9¹¯}6®÷~™¬ƒO@a*�4B…B5oéŠÓï~xáŠÕ!YÕ©=ü¡;Ö®(cfÎí?hHòft@*�4B…¶2k}›Î½f,\’¥VÕ*C¸ý˜F EeѪ5O¾7ü÷ŒÌÚ¸)ü+¡I#T(ë7o9¯ÇcŸN›’¥B¹²Ü{Û)G(B›·n{iÄç}Þüpî’åà9LIã0=E \™Ò—·9qÖ¢¥3. ’“›ûòÈ1‡Ö¯Û¤a½@Q)SºT³ƒößš�3tòôð¿„ $�P¡h”Ê̼´u‹å߯›0ç›� yùù¯6¾Rùr'~P ¨Ì[ºââÏËËÿK¨@ÒŠÒ9-Ž®\¡üÐÉÓB²¤ÞÚO5ØÙÍ�ʰb¥ðåççŸÙµï¢UkÀ?É °~wÑ™¯v¾1y{H~ÿÁˆ {ÈÎÉ ²¾oNØ\(B€=uiëC¸=5Z ÉòÎØÉíîydýæ-�B3oéŠ{^|=ü¡@8åÈCÇôíZ«j•�,ŸN›Ýò¶û—­Í ‚üüüŸ=ü”±ðƒ„ £IÃzãûwoT§vH– 7¿¥ÇìEKÍE_Àv LÃÚµÆõëÞ¬ñþ!Y¯^{ü­÷yI]°\ôlŸP  Õ¨RiTï{N?æð�,ë6mn}ûƒNø*P\ôì�P €•/[fðý�~~jË�,[³³ÏíñØsC> ì±ûÿòŽ °}ö¨@ÒØ£B 232.ju\N^î¨i_‡dyç‹ÉyùùmŽ:,°»FϘóËGŸ Û%T i„ ñ8íèÃ÷ۻƻ㦄dùtÚì9K–_в™u�»aõº §ÜùÐÆ-[Àv¹ô €BtMû“ßëqkÙÒ¥C²¼òñ˜s{<ºe[v`Wäçç_úÐ+¾_vD¨P¸Î:½:W­X!$Ëà‰S[ßþÀšõ;íþ¿¼óñW³ÀN*º–‡5þâ±nõjVÉ2qî·-:Þ»`ŪÀN=cν¯¼vŽP (R¿îøþ=oP/$Ëüe+šßrïô‹Ûµz݆‹xº¬×ÀìœÜPâ-Zµæ¬n}·åä€]'T(6—·i9ø¾NÊ• ÉòúgãÛÝóÈúÍ[B ¶qËÖö]z¯^·!ì¡@qjÛ´Éè>]jU­’åÓi³[Þvÿʬõ¡DÊËË¿°ç€Yß- »K¨PÌŽiÔ`|ÿî j× É2cáâæ{Ì[º"”ÿê°ÉÓÀ*¿†µk�ï×ãèF B²,\±ºEÇ{'Ìù&”$¯|<¦ï›ƒÀž*DaïjU>ïÓ¥]Ó#B²¬Ý°±õí¾7nJ(F~5ó½Ÿ{L¨‹ åÊ~pßm??µeH–­ÙÙîëÿòÈ1!龜¿ðÜ�€‚`� $�=*¤µÌŒŒ‹Z·%;{ôŒ9!YÞú|bFFÆ)Gjþ²­o`ý¦}¯3  H¡B´=¦Ií½ª~0þË�,O�µpåêóZ4MÞ:È%«¿?éö–¿.—~£_ŸsÚ[]o.[ºtH–燎:·Ç£[¶e‡ù~æ6w=´hÕšPp„ ‘êp±#{u®\¡|H–Á§¶¾ý�¬�›B"¤¢«}—Þs/J¨¯–‡5Ó·ë>Õ«…d™8÷Ûão½/#ˆœÜÜ÷õ/i÷_ІP jMÖ߯ûÁõê„dùzñ²æï�¾`qH[ùùù?}ø©¡“§€B Tˆ]ýZ5Æ>Ú-5] ɲ|mÖ‰¿»ÿ“©³BzºñÉß=!¡@Ø«rÅÝyf³#C²¬ß¼¥Ý=½��ÒMªRžþpd(4B€ôP®L™÷zÜvu»Ö!Yrrs/¼ÀSï�é#U)¿ÿ �þƒ�td� $�=*$XFFF‡Ž-U*säW3C²|0þË�[·¶=¦Iü+VT P4LTH3]~zþK�®ÏÌLÚÎÄ>o|xY¯�Ù9¹!b*(2B€ôsy›–ƒïëT®L™�,¯6¾Ý=�lÚº-DI¥EI¨�–Ú6m2ª÷ÝÕ+W Éòé´Ù­:õ\™µ>DF¥EL¨�®Ž;è€/ëÖ°v­�,_Î_Ø¢ã½ó–®ÑèøôË*(bB€4Öxß}Æõë~xƒz!Y¬X•j•6¾çæåý¢÷ÓÞŠ–P ½í]­Ê˜G»ž|Ä!!YÖnØØúö‡MžŠÏ¦­ÛÎìÚç•�Ç€"'TH{U*”úÀ—œÔ<$ËÖìì3»õyydñtÂʬõ­:õ>eF(ö¨@ÒØ£BÉT*33*6o3knH�üüðÖçK•Ê,â‘Ѽ¥+Nºý�¯- ÅD¨@ÒJ¬ŒŒŒöÇQ{¯ªŒÿ2$Ëȯf.\¹ú¼M‹fä„9ßœrÇCË×f€âãÒ/å×çœöjçK—*’åù¡£ÎíñèÖììPȆMžÞúö×nØŠ•P i.mÝbè·W®P>$Ëà‰SO»ëáï7l …æÙ�>mߥwäÀ è”#Ó·ë>Õ«…d3sî ·Ý·hÕšPÐróò:ýñ¯× x.ÄA¨�LMÖ߯{£:µC²|½xYóŽ÷N_°8œu›6ŸÙµÏ£o Ñ*$VýZ5ÆõëÞ¬ñþ!Y–¯Íjù»ûSÓ•Pæ.YÞìæînC ÄF¨�d5ªTÕûž3›’eÃæ-m:÷4vRØ3Ã&OOUʼ¥+@d„ W¾l™÷zÜöóS[†dÙ–“sáýžzDØ]ý 9£kŸõ›·€øØ£Ic� ü§ŒŒŒ‹Z——Ÿÿé´Ù!Y>ÿåæmÛN?æð]Z±’“›{eßgú¼ñaˆ•P�¤*ðcÚuX½ZÕßýbJH–Ñ3æÌ[ºâ¢�Ûɯ_¶6ë¬n}?œðUˆ˜K¿(A~uÆ)ïß{[¹2eB²¼eF«N=Wf­ÿ±/Ø–“ó»?þåÌ®} ue$@A*”8ÇtÀ�u«W³zH–/ç/lÞ±ÇÞÂëÛå«Zt¼÷±·> iB¨PR¿îøþ=oP/$Ë«SA2eþÂþäßF�;òÆ{¾úæ»�>„ %T�êÕÆ<Úõä# ɲvÃÆV�z›<=õ|ã–­×<öìO{ L= i%#ãì«� yï¿€]qéƒO¼1zBHœ®ºäù¡£æ.YÒ�P�¤*°«òóóoøÒï?Øý͉8—~PÒedd ¼éÊ^Wÿ$ ¡wÇ%g¿ÚùÆÌÌ]Øï@á*ð?.mÝbð}�*”+(nBþ¿¶M›ŒîÓ¥VÕ*€b%Tà_Ó¨ÁøþÝÕ©(>Bþ]ÃÚµÆõë~t£€b"TàÔ¨RitŸ.§sx 8øaË•|§ŸŸÚ2Pä„ ü¨R™™¾ýúÎ?97P´„ ìÀƒW]òä�WŠ�P€ûõ9§½Õõæ²¥KŠ„P€�Òá„cGöê\µb…@á*°³ZÖø‹ÇºíS½Z � ؇ԯ;¾_÷ƒëÕ &¡»¦~­©¹Ê ‡(4BvYµJGöê|þ M…C¨Àî(W¦Ì[]n¾º]ë@!*°›222žíxíýW\(hBöÈ=?=ï¥N×gff ŽP€=uy›–ƒïëT®L™@*PÚ6m2ª÷ÝÕ+W ¡㸃ׯ{ƒÚ5{L¨@�9°níñýzݨA`Ï(H‹V­9rÿú€=S:{lõº ¯|<æ™ÁŸL[°(°Ç„ ì¾¼¼ü!“§=?tÔ[ŸOÌÉÍ ¡»cÞÒ/ •J”%«¿4¡»`ÓÖm¯6>Õ'ŸL�(4BvlóÖmC&O{ëó‰o~>qÃæ-€B&TàG­^·á½qSÞ3ñ£‰Ó¶fgŠŠP€·`Ū·ÇLJ=FMŸ�——(rBþÇÔo½õùÄ·ÇLœ2a X J´õ›·|6ýë¡“§§%5H ÄA¨Pâ¬Û´yÔ´¯?™6ëã¯fMœûm~¾‹»¢#T(²6núlúœ�§ÎLÅɤy Ä @ä„ ‰•Š“QÓ¿þdê,q�v„ ɱ5;ûËùß�ŸóÍø¯ç�ÿú›™ß- ¤'¡@ËÍË›¾`ñ„¿—É7©>ùrþÂÔgéO¨�Nòóóç.Y1~Îß&©Ç¤yßnÙf#@ ¢¶pÅêß-I�MR�ßýýãÆ-[I'Tˆˆ,à„ Å`ÕºõK×d-]óý²µYKV¯�³dùŒ…K¦-X$Kø¡@ÁËÎÉMHªC–®ýþž¬ùÇÇ¿ÿ0õpä€í*ìXª+²6nþ~ãÆï7lú~ã¦ÿùø¯OÖnØøŸ1` Hš6�{Ø‘¼ü¼œÜÔ#77/?õñÏÿþ1/÷Ÿ˜ê“ÔÇ­Ùn«@Q*�4ŸL�Ò\fˆŒP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#Tr‰ý5WIDAT€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆÎÿÿÿ�vIDATê¢ìûxñ IEND®B`‚python-django-debug-toolbar-8.0.0/docs/_static/brand/Square-Dark-Blue.svg000066400000000000000000000020031524561404200262130ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/docs/_static/brand/Square-Green.png000066400000000000000000000600301524561404200254760ustar00rootroot00000000000000‰PNG  IHDR88crûØIDATxœìý œ�g}Ø}_÷YfæœÙG3£Ýò"ï+Þ°‘Á2ØÂ’µÍÒ,ÏCòJöÚ†68C’–s¶çÓ‚­u–ëÜóý~ÎÇÌH4ŸsÿÎuÝ×?wþ}¿b’ ‘*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨ÑÉ ]¦¾»'À1É&I6SÔ2áÕB&yõëüàoeš½j0O¼ä@Ú Ý|o€9S/–L±)ÓÖ”i}õ‘Ï´5×?MêÔ?mkζþýLJ¾àPíÀ±*ƒ¤jc3•úã(¾¸jÙŽ–lO!Ó]¨ÿ3Û]<ôÏCrKŠ™ÎÀë*Ì•¤Þ5#ÓõGØ~à5¿ ÓÕ’ý~ò½­¹åíù•¹•ö˜à•€S=0U”^Üÿƒ¿XKB®-«:E˪ÎWÓ%×U,&B€¸$µP¯?¦}å~±˜ûûhÉ×?XÓ•_ÚH/¡@¨M”KÏì«?þþW’¶¦üºîæ“—ä×õ4­ëÎ/龜P !ÕÆff¨?^ý´¾äÒ´®-ÝMëzêéR_{I’$а„ iP_r™~b þxõÓ¤%—_ÛÝtJOóýÍg/Ͷ7ŠP …jSå™­CõÇØíÛjIhZÛÝ|î²–³—6�ÙŸ-äÑ*¤\R ¥÷×c_x:d“¦S—4Ÿ½¬åÜ¥Mëû2ùl JB€Å¤R›Ùº·þýO„¦lÓé½-ç,+œ·<ÿ†nÓ'¢"TX¬f*¯ÞŽ?òWßIÚ› ¯*^~RËyË’œe€…'T ÔFg&6¿P$ÅÜ¡b¹ì¤æó—gš½J,OÁðjå‰û¶×IK®åÂ…úË…+Ü0ÿ„ ¼†ÚTyòë/Õ!Ÿ)\°¢å²ÕÅKVeŠM€y!Tà°JÕÉGvÕûC¨¯®ߺ®õŠ5€9&TàhM}ûåúcÿŸ?ÒúæµÅ·¼¡ùÔÞÀÜ*pljc3cw>SäVw´¾õä↵¹žb`V 8Nå�#ÿâÑùháü­W¯k¹x• ’³E¨À Iªßß–´æm {ë:[ÂNœ)¼0;j㥱MÏN}ëåÀ ³¢³£–„ž\Ú¶ñ”À *0ò™¾6.Z˜ BNTÒÖÔ÷±·º5` 8!™žBÿ­×ä—wf�P€ã—[ÝÑwóFsTf�P€ãÔ|VïGÞ’)ä³M¨Àñ(\¾zÉo]‘äLx˜BŽYëµ§öüÚ%€9#TàÔB­ëŸ]ØñÞ3sI¨ÀQË&½¿yeñŠ5€9&Tà¨$…|ï‡7´œ½,0÷„ Y¦£¹ï“×4�Ô˜BŽ »¬­ÿ–�¹þ¶À|*p8ù“{ú>~u¶½90�„ ¼®æ –÷Þ°!Óìå`¾yæ€×Vܰ¶ç×ß”d’À¼*ðÚò쮟=/°@„ ü�Zz>piÛÆS G¨ÀÈgúnØP¸he`A ø¾¤˜ë»ycó©½€…&Tà�LO¡ï–�M«:*r«;êk)¹žb B€Å®ù¬þÞ�¼%SÈ¢!TXÔ —¬Zò»W&¹lH‘Zµ6üg%ÙLׯ\dZ%РÓ{ãUmO éRÞ;>pã¦Òóá¡•«{?ýÕé­C`"•sýŸ¼¦xiÚ† μt`à†M•=c¡ñÕ¦+C·~eæÅ/. JB€ez ý·]×¼¾/¤ËÔ{?|wõÀTH‹Údið–{ëàúDÌIDATõf•P :¹•‡F:®ê é2ñÀŽ¡Ol®_Ù‡t©�Î ÝüåÒžÑ0{„ qÉŸ¶dém׿zŠ!]Fïܶï�ï•F˜–r쪧?vOex"Ì¡@DZ.[½ì¶ë2­M!]öÿ§oøü7CªU÷M|ôžÊÁôìj–P ­×žÚû/ßÒ¥V®ìýÃ-c_x:,•=cCŸúJý�N˜P �?w~ϯ]’$IH‘êTiè›'\DƒKÏ ÿÙÃà„ X-ºãòŽŸ8+¤KåàäàGî™~r0,2_}qôŽ­àÄä,œ¤9ÛwÓU-ç-éRzedè–{+C‹ôæòýÿñ[ùÕ]-ç. ÇËŠ &ÓÑÜÿ©·§¯R¦ŸÝ;pã]‹¶Rê’jØûÙûX œ¡ÀÂÈö KY×Òeê;¯ ~ôžÚØLXÜj彟újeb±€ã&TXùµÝõJÉõ·…t»ï…Á[7‡R5By÷Ⱦ?¾¿VKçè`® æ[Ó¹Kû?ý¶lg!¤ËÁÿñÄþ?y0)?`úÑWþÕcàØ¹™€yUܰ¶çC—'ÙT½SV_4þÓ‡&6¿ø£ûTÓ©½ÅKW€caE€ùÓþãg.ùÍ+RV)Õ™ò¾ÏlQ)‡1ü=X ÇB¨0j¡Öõþ7výü!]ªã3ƒÿòä#»¯¯6YÚû™ûL¬މP`îå3½7^Õ~ýú�.å½ã7ÝUzf_àHJÛø�ßGM¨0·’b®ÿ“פï…™]nØTÞ=8:cw>3ñðÎpt„ s(ÓÕÒÛuÍëûBºLo¼iSõÀTàX¸Y8zB€¹’[Ùqh¤ãªÎ�.õe�Á�¹6Q#7«GO¨0'ò§-YzÛµ¹ÞÖ�.c÷>W¿Ô6Òñ¸•¶Øÿ¾ŽD¨0û —®ZvÛu™Ö¦�.þê±ýúp’À ¿ëÙ‰v€Ã*̲âÕë–ܰ!¤K­RÝ÷¹FÿæÉÀlØ÷g•‡'Àë*̦Ο;oÉ¿¸±¹6m.á|ùŸONo ?L¨pœšÎ]Úÿé·e; !]ê×Í{ÿøk¡R Ì‹¤öþ«û+“¥ðrŽ]ñªµK~ãŠ�:ßÿÆø�Ïé8ÏšOï«�N‡B>üoB€cÖþÞ3»þÙ!]jåʾ?ºò‘]�ù’´æÛÞvjû»Ög{Šà‡ ŽA-ÔºßqûõëCºT'K{?ýÕé'ó"»²£ý�ë[ߺ.ÓìRxmž8jùLïo_Y¼tuH—òðÄÐ'î-ï ̱zè¶\°¢ý]§.XK¨pT’B¾ïãom^ßÒ¥ôÊÈàǾ\ž Ì¥¤%W¼ê í?vz~EÚΈæˆPàÈ2]-}·ll:©+¤Ëô³{‡nýJml&0g2½ÅöëOk»öÔL±)5¡ÀäVvôÝ|u®·5¤Ëä·vïýì–P2}®4�Þ{h—×¥«“¬qÀ1*Nþ´%ý»:Óš¶÷ÂÇî}nøÏNÌJ™ Ù¤xåšö÷žÙ´¦;/¡Àëj¾`yï�2Mi{±8ø×��üõw�J™u™ŽæÖ·ŸÚöŽÓr]i Ì?¡Àk+^½®ç—%™T]Ïתµá?{hbó �Y•[ÓÕþ®õÅ7¯M_Ö ų ÿX¦·Øó¼±�ºcˆ«Óå}ÿêþ©oìÌž–KWµ]ZáÜå`V ~H~mwßÍoÍv¦mëNu|fð–{KÏfE!×võÉí?vz®¿-Ì¡À?h:wißMWeZò!]Ê{LJ>±¹¼ÛHÇY�]ÖÖþŽõÅ�'g iû9¢"Tø¾Âå«—üö•é;Ivæ¥C·Ü[=081Íg/m{×úÂÅ«’ÄIÀœ*Òþ¾3»~á‚�:SOìÙû[j“¥ÀqËgŠo^Ûñž3ò«Ó6ñˆ™PXìj¡Öýþ‹Û¯_Rgâá�ûþèk¡bZÊqÊtÚ®;µíºÓ²íÍ`~ €Å-Ÿéýí+‹©;à«nôÎmû?ÿ�$ؤt<ò'÷´½k}ëk’\6,¡°x%…|ßÇßÚ¼¾/¤Î�¿xtô=¥RŽU-êÕÚþcg4ŸžÂŸ  ±€E*ÓÕÒwËÆ¦“Òv×A­RÝ÷¯îŸ|pgàX$­ù¶·�Úþ®õÙžbˆ€PXŒr+;ún¾:×ÛÒ¥:Uºí¾™ÇG­þÃÐöÎõ­o]—ivUDÄSÀ¢“_ÛÝë5™Ö¦�.•ƒ“CŸøJiûþÀQ¨…ZË+Úßyzá >B`qIëHÇÒË#CŸÜ\Q>ÓvÍ)­×ŸÖ´ª3ÄJ¨,"Å k{>ty G:¾0£i]Oh(B íÒ;Òqäož<øW�•òš2Í­o?¥íës]…Ѐ„ @š¥u¤c­VÛÿï¾1~׳�‘[ÓÕþ®õÅ7¯Í4y•˜§0€ÔJëHÇêLyø_=0ùÈ®À¨%¡ðÆ•mï<½pî²Ðø„ @:¥v¤ãøÌà­›KÏì üoõu³Ö«×µÿØé¹þ¶�B …ò§-éÿØÕééXžºùÞòî‘À÷d—¶µ¿s}ëÆ“3…´ Æ*iÓ|ÁòÞ7¤ïþ„™]‡n¹·:<¨ÿ-Ÿ½´í�ë —¬J§ é$TR¥xõºž\–dÒvñ:½mhèÖ͵‰rXäò™â›×v¼çŒüê´Ýzð�€ôèø§çvþÔ9!u&¿µ{ïg·„Ò¢ž–’é.´]{jÛõ§eÛ›À" TÒ – =º¼íªu!uÆî}nøÏNjaÑÊŸÜÓöÎõ­W®IrÙ°h€Æ—Ïôä--ç-©sà¯ý›'çMõø,\ººý]§·œÑ¡ÐØ’¶¦¾�½µùÔÞ�.µJuøß<8±e{X|’Ö|Û5§´ÿØéÙžbX¬„ @ËöûnÙ˜_ÞÒ¥:]úƒ¯Î<>™ÜÊŽ¶wœÖzõÉ™f/ÐÀbçy QåVwôòšlg!¤Ketzè“›KχE£j-ç/o×… W¾G¨4¤æ³ú{?ò–ô�ù+Ž ÞroeÏXX’ælñ-‡†ÊçW¤mY à €ÆS¸|õ’ߺ"}g@ͼ0\_K©ŽL‡E ³¤ÐöŽõío;5ÓÖøB Á´½ûôî_º(¤ÎÔ{ö~ꫵéJH»¦õ½íï:½pÙê$› ¼¡ÐHºÞÿÆöëׇԙx`ǾÏ=*©ž–’MŠW¬i÷MëzG"TD6Yò›WÔ¯tCêŒ|á©ÿéÛIHí¸”¤½¹íÚSÚÞ±>ו¶“bP+W&¾þÒØíÛz~ýòüªÎ¤…PhI!ßûá -g/ ©3üç�ŒßõlZ+%wRgû»N/nX›iò‚;û*£Ócw=;¾é™ÊðdýÓ±/?—Ê]‘°hyÞˆ]¦«¥ï–�M'u…t©¿¾ï_?0ùàÎ�:µ$.ZÙö®õ…s—æ@iç�‘¿{úÐ<ÐRõïqâ«/vý³ “Lj—æ`±*QË.këÿä5¹ÞÖ�:CŸÜ<ýÄ`H—ï7üž3òËÚs`â‘�c·o›~â5†�VG¦'¿µ»xñª¤‚PˆWþäž¾�_�moi”?yIšB%»´­ý§µ^sJú†ÛÄ :Y¿÷ùÑ/m;üŒ�ñÍÏ H ¡©æ –÷Þ°!ÓœÚ'êΟ=o꛻˻GBƒk>»¿í�§.Y•$6;òàØè·Žo~¡6Y:â×¢ªc3FÓ@:€7¬íùõ7¥{·}&Ÿ]ò;Wܰ)”«¡å3Å+×v¼÷Œüê´Ý>‰ÉÇ_»cÛä7w'Glu¥6~ß íï<=�O¨D§ý§Îîú§ç…E imwÇ?9gä/¿J¦«¥íºÓÚ®=5ÛÙ˜mÕ™òÄ–í£·o-¿t°þ鱯z}íE¨@:€ˆÔ’Ðó�KÛ6ž�Ž÷�5õ�Ý3Ûö†F�?¹§í�ë[¯\“ä²�ÙVž»ó™±»Ÿ«�N‡ãUzqi×AU „ @4ò™¾6.Z“$94ÈrÏoÝQ›*‡ˆ.]Õöî3ZÎèÌ�ég÷Ž~áéɯ¿fÃØ=Ïuÿ²�*Ðð„ @’b®ïæ�ͧö†Å'·´­óçÎ?ð¾â“ò­W¯k÷¹¾žƒ‰¯ïýâÖÙ]R›¸ïE¡) T^¦§ph¤ã"Þ¬ÒöŽÓÆ¿úBéùá�ÜÊŽúÿ«Ö«ONñÁk ¨:63z×3cw>SýÞPùYþ™ž|ôåÂ+ÐÈ<ù,°ÜêŽúZJ®§±$IzþÅå{~çŽd¡«…ZËùËÛßyzË…+7<fvûâÖñû^ 3•0g&|I¨@£* ©ù¬þÞ�¼ÅˆÀº¦5]ï9sô>È¡¡òW½¡ýÝgäWtf[­V›üÖîCCåßæÞäC;k¿vI’Í a €S¸dÕ’ß½ÒùQ¯ãgΙx`Gep<̯̒BÛõ§µ¿ý4ƒçBe²4ñ•ÆîØV~e4Ì—ÚØÌô-ç-@Ã* £õÚS»õb›‹~P¦)×óÁˆn¾7Ì—üiKÚìŒâe«½õ>Ê{Ç •¿÷¹ÚÄé6ñàKBšP˜oµPëü… :ßwVàG´œ³¬påšÉûw„9•MŠoZÓþž3šÖõæÀÔ{Foß6ù�]Ç0T~¶M|ý¥î_»Ä{и„ À¼ªeBïo½¹xÅšÀëèú¥ §¾±«6='wZ'íÍmo?¥íúÓùés¤ZªL~m{=QJÛ÷‡c*?»jc3Sß(œ»,�I¨ÌŸ¤9ÛwÓU¶£^=!:~úœƒÿÏcaVåNêve‰IDATl×éÅ k3M^ûf_ùÀäØ�ÏŒßýlõàñ•ŸuS½$T qy²˜'™Žæ¾�_m¯ÑÑhÿ±ÓÇî~®20NX- …‹VÖ¥Åëܘٱô==ñÀŽP^è³¥ÄÄC;»ÞïN0hTB`>d—µõß²1×ß8 I.ÛóÏ/ºå„îªO ùâ[ßÐñî3|ÛçB­R�|xçèíÛf¶…XULM?5ØrÖÒ4 ¡0çòk»û>±1ÛÞ8jõ�Âå«'ÜŽ]¶¯µýÝg´^½Î€š¹P�˜¿÷ù‘/n­î�Ñ;tö—P�Æ$TæVÓ¹Kûnº*ÓâŠù˜uýÊ�5TšÏêo×é…KWæ@éå‘CÇ o~>”¢Ûåõz¦¾¹;üŸ  €9Tܰ¶çC—›Ñq|rKŠí?qÖèß]Þ5òê§µL(\²úÐqÃgöæÀÔSƒ£wl�|xgÒ0÷¡Áôµr5ÉÙ� F¨Ì¦¤˜ëûØÕÍëû³$I’î_½xèã÷&Å|ëÛNéø±Ó³†ÊÏ�Z¹2þµc_ÚVz~8,ôPùÙU›*×ëËäGh8B`ÖdºZú>yMÓªÎÀ¬j9{Ù’ÞÜrÁŠL³—­ÙW985v×3c›ž­˜ )5ý�W„ 4Ïø³#·²£ïæ«s½­�9P¼ì¤Àl+í<0ò¿žš¸G7||¦}9ü‚“- Á€Y�?mIÿǮδ6ˆ^­Z›|dר[§Ÿ ‹Ciû�ò�É\W!�C¨œ¨Â%«z~ûŠL“gTbW�,�ÝóÜØ—¶UÇÃ"3ýè+¹·® @ãð² pBŠW¯ëùàeI’¦{�I¡ÒžÑÑ/>=ñ•kSå°(M>úr«P�†"TŽ_çÏ�×ñgˆØÔc¯Œ~iÛÔ7w‡Åmúñ=h(BàxÔ2¡çC—·]å Z"uh¨ü}/ŽÝ±µ¼s$Pÿ†ŒLÏì:èP>h Bà˜%ÍÙ¾›®j9oy€ø”‡'ƾ´mìžçj£3�0³uH¨@*Ç&ikê¿ecÓºž‘™Þ64zûÖ‰w&ÕZàGL?=ØvÍ)hBàdûŠ}·lÌ/ï�Z¹:ñõõD)=—¶¡ò³kúé¡4¡p´òk»ûn~k¶Ó(bQ�»ëÙñMÏT†'GRÙ3V™Êv´ €£Ò|Vïï½%Ó’�™]G¿ðÔÄ–í©*?»¦Ÿ(¾iM�P8²Âå«—üÖI.`AÕjµÉoì»cÛôwÇnúé!¡�B¨Aû{ÎèúÅ ,¨Êdibóó£wl«ì ¯é§Ð „ À명Z÷û/n¿~}€…SýâÖ±ÍχÉE:T~ͼ¸¿:]Î4»þ�à_T€×‘MzwCñÒÕÈäã{ÆîØ:ùÍ݉ӆgIý;9óôPËù† A*¯!)ä{?¼¡åìeæ]u¦<ñµí£·o+ï87<Û¦ž*Є À?–éjé»ecÓI]æWùÀä¡¡òw=W�Ì�™g÷ €’[ÙÑwóÕ¹ÞÖóhæ…áÑ/<=ñõ¡b›×Üšyf_�Pøù“{úoÙ˜im 0/j•êÄC;G¿øtÉÕó|©M”Ê{ǽñ*ß×|ÁòÞ68ˆùQ›½û™±;Ÿ©î3T~¾Õׯ„ ÄÏë1À!Å«×õ|à²$ã¾eæ\éå‘Ñ¿{zâ¾kÓ•ÀB(½°?\â@?ˆ�P?sNçÏœ`.Õjµ©o¿<úÅ­Ó�ï ,¨úŠJ¢'T€E­–„ž\Ú¶ñ”s¦:]ßüÂØ[Ë/�" T !`ËgúnØP¸he€¹QÞ;>zûÖñ/?W›0T>"ÕáÉêØL¦Í±5¡,RI[SßÇÞÚ|jo€90õä@=Q&¿±+©"4ýÌÞÂ…+1¡,F™žBÿ­×ä—w˜UÕReòþõD)½¸?*±Ò‹ÃB"'T€E'·º£ïæ�¹žb€ÙS985vç3cw=S=h¨|˜~Þm*;¡,.Ígõ÷~ä-™B>À,™Ù±ÿÐPùûw„²m^ £ä~zˆžP‘Âå«—üÖI.à„ÕªµÉ‡wŽÞ¾uæé¡@£© ŽWgÊ™&B/ÿ~‹Eëµ§öüÚ%NXubfìîçÆîÜVš4¬Ò΃Í'/ @¬„ �~µPëúgv¼÷Ì'¦ôòÈØí[Ç¿úbmÊqà ¯¼{D¨@Ì„ �vÙ¤÷7¯,^±&À ˜|ôåÑÛ·N=úrâ(¯´(í @Ä„ �fIs¶÷÷ÞÒrö²ÇåÐPù¯¼0zǶÊ÷.jUJš”… ÄM¨©•éhîûøÕMëz»ÊðÄèíÛÆîy¶6^ ¤Qùe¡Q*@:e—µõß²1×ßàM==8vûÖ‰‡w*Ÿn¶~Aä„ �Bù“{êk)ÙöæG­V®Œß¿cìŽm¥ï�´Ç+ýJÕòà˜·3 ZBH›¦s—ö}ø-™fÏo­CCåïz¶þ¨îŸ ,&¥—G„ DË 9�*Å k{>ty’Í8 ¥�Fþ×Ó÷o¯¿¹X|Ê»GÃùˆ“PÒ£ý'ÏêúYY­Z›úÆ®Ñ;¶N?1XÄÊ» VBHƒZz>piÛÆSVu²4vÏsc_ÚV,z¥—G+¡4¾|¦ï† …‹Vx}¥=££·o�¸÷ùÚt%À÷”¬¨@Ä„ ÐØ’b®ïcW7¯ï ð:¦¾óÊèÛ&¿¹Ë¸Fþ‘ʾ‰Z¹šäÜÕ1*@ËôúnÙØ´ª3À�¨N—'î{qôŽ­å�†ÊóÚê?å}ãù¥íˆ�PUneGß'6æzŠ^ËÀïÞY6Ñ�#© ˆ”µN !åO[²ô¶kU ‡‘[f>GVÙ;€(  ñ.YÕÿÉk2­M^_“;—8 eç¿A¬lýLëµ§vÿêÅIâ~Ž é´ÞGR @”„ ÐH:~î¼ÎŸ8;ÀQh^ß[KBR p•![¿ R¶~�¡– Ý¿q¹JáèešsMkºVe¯­_)¡4€¤9Ûÿ±«Û®ZàX4­·û‹#(í±õ "%T€Øe:šû?õö–ó–8FB…#JªµòþÉÄG¨QËö—~öº¦u=Ž]³Pá(T÷¹Mb$T€xå×v×+%×oÇ)¿¼#iopXåA»¿ FBˆTÓ¹Kû?ý¶lg!À h>Ý¢ GP±õ ¢$T€._Ýÿ±«3-ù'¦ù4c9‚Ê�©ÄÇ :íï;³ë.0r«;Vå P�  "µPë~ÿÅíׯ0Kò«;VU¨@”„ �|¦÷·¯,^º:ÀìÉ/ï¨ÿh…R5Àë°õ âä I!ßÿÉkT s!¿Ò¢ ‡S™@|„ °ð2]-ýðöæõnzfNØýÅáÙúq²õ X`¹•}7_�ëm 07rB…êM•«¥J&Ÿ @L¬¨ )Ú’¥·]«R˜SùUB…#¨¥Ñ*À‚i¾`yÿ'¯É´6˜K¹UN(æ*#vAtlýFñêu=¸,É$æX~y{-ç~ñúü²¢,€Žrî’q¹Ja~$ÙŒƒ¿8¼ªˆ�PæU- ݼ´ó§Ï 0�òkº¼¾ê'CtlýæQ>ÓwÆÂE+̯ÜÒ¶¯¯:>€È`ž$Å\ßÍ›Oí 0ï„ ‡'T BB˜™žBß-›œËq6‡'T BB˜s¹Õõµ”\O1ÀÉôùñãp„ DH¨s+Ú’þ›7f ù §ieçê¿ý¹@ã*À*\²ªç·¯È4yªŽ�«`®´^{j÷¯^œ$†¥ÇL¨s¢ãçÎëü‰³Àq*À,«eBχ.o»j]8^B˜MIs¶ï¦«ZÎ[N€PfMÒÖÔËÆ¦u=àÄ`vdûŠ}·lÌ/ï'L¨³ ¿¶»ïæ·f; `6àD5ŸÕßû{oÉ´éÌ¡œ�Âå«—üÖI.f�PŽ_û{ÎèúÅ Àl*Àñ¨…Z÷û/n¿~}˜B8vÙ¤÷w7/]æ†PŽMRÈ÷~xCËÙËÀœ*À1Ètµôݲ±é¤®0—„ p´²ËÚú?yM®·5Ì1¡•üÉ=}¿:ÛÞæžPެù‚å½7lÈ4{Ææ‰ËàŠÖöüú›’Læ‹P§ý'ÏîúÙóÀü*Àk«%¡ç—¶m<%Ì;¡¼–|¦ï† …‹V€… T€×Ðùsç«`eÀ�8øW�M~kwX Bx-¥êЧ¿:vïs`!àµ%µ°ÿO>ðŸ óN¨‡3ú?žÜ÷¹j•j˜GB8‚‰-ÛoÝ\�.€ù"T€#›y|`ð£÷TF§À¼*ÀQ)=?Bˆ]m¢<øÑ{&¿µ;À1šÙ6à°j™$ÛÕ€ø ”ªCŸþêØ½Ï8ÓO 8¬Ü’B’$ˆ�PCR ûÿôáÿå;ŽNuº<ýŒ­_�#¿ ZBh$£ÿý‰}Ÿ{ V5’#›yvoâG…#*-¡4˜‰-Û‡>õ•ú›åkúi7¨pdB¢%T€Æ3ýè+ƒ½§2:àõM?éŽÌˆ–PRéùá�7•÷ŽxÝ¿zqëÛN y¯t޳‰!Zž¾�FUÙ3vhäK¼–üŠŽž~éÊÿø�ÿì‚lŸwÍym¹¥mˆ’PXõÀÔà‡ïžzbO€×‘)6u¼÷Ìåöž%¿{eÓé}~XnUG¢$T€ÆV›, }bóÄ;¼¾$›)¾iÍÒO¿}é¿~Gñªµ!çå�C2=…LS.QòL 4¾Jmßß?zç¶GÒ´¦{Éo\±üß½·ý'ÏÎt4·ü Ë)¯ì²_¾4)2ò×ß ‹ÒÔ·_®N• ç/p$™–|Ë9ËÚÞqZni[yp¼zp*°(µœ¿¼ðÆUˆ’åN =ƾðteplÉo]‘䲎$Ó”kÛxJý1ùø+cwl›üæîÄ|ÈE&gE"&T€T™|pçÐÈæÞß{Ký-óG§pîòú£<86òwOO|åÅÚd)°8ä–· VîQÒfúÉÁÁ�ÜS98àXäúÛzþÏ‹Wüû÷uþÒ…Ù~³5…Ü ¡ñ*@ •¶ï¸aSé•‘Ç(SÈw¼ûŒåöžÞ74ŸÕH¯Z&ä— ˆ—PÒ©241pã]ÓÏî pì’LR¸tuÿ­o[ö'ï,¾õ ÆÛ§R~i{’õ7 ñòï'�Zµ±™Á�Þ3õ�W¯üê®%zÓŠ÷¾ŽŸ9'ÓÕHû¾ rBHµRuðÖÍc÷½àd;[:æÜåþÞž]žCw ÜI‘sê�rI5ìÿ“+C�?yv€�Ég[ߺ®þ˜zbÏØ�ÏL>¸3ÐÈr+�M Q*À¢0òŸ¿SÞ3ÚóÁË’$ pbZÎ^V”÷Ž�þÝÓ㛟¯M” ¨i­Å1ˆš­_Àb1±ù…}ŸÙR�qMÉìÈõ¶vÿÊ—þÇ»þ�7f—µM~MW"&T€Edò‘]ƒÿru|&À,Éòíï\¿üOß½ä¦ Íç, 4ˆÜŠvca!rBX\JÏì¸é®òÞñ³'I’â%«û?qÍÒÿë]Å�ëg¿¼}_=ϤÀ¢SÞ=2pæ™]̶¦U�K>xùŠÿãÿôÜLw!«¦7ô nBXŒª¦oÚ4½m(Àȶ7wþÔ9+þü=Ý¿qyþdÄ1ʯuƒ ÄN¨‹Tm¢<øñ/O<ì„YæJ’˶]µnÙ^ß÷©·µ\¾ºæ%7&æá@üO ,b¥êÞÏÜ×óÁËÚ6ž`δœÑ_T†'F¿¸uìžçj¥À‚JŠù\O1qË.ûåK�"#ýÝÀQKB2õ�ݵR¥åÜåæR¦�o9yÛ;×g{ å�±êèt`�4ŸÙßú–uˆ›€0ú·OUöNô|èò$kws+Óœk¿~}Ûu§M}ûåÑÛ·NgO`Þ¹“‚P8dbËöò�ɾ›®2Z�y�$IᢕõGéå‘Ñ/<=~ß‹a¦˜/†à½C€ï›y|`ð#÷TlÈaåWtôüóKWþûïø¹ó2=Ž3ž'M묨@*ÿ ´}ÿÀ�›ÊƒcæQ¦­©ó'Î^ñÿ}oÏo]‘?uI`.%…|nEG¢'T~HeÏØ¡q�/ ˜_I.ÓúæµË>sÝÒ?º¾påšZ& Ì�¦Ó{ß[hB૎LþÞÝSO¸Ë™…Ñ´®§÷·¯\ñïÞÛþãg&mM�YÕ|F�Px µéÊÐ'6O<°#ÀÉõ»~þ‚Ÿ_×ÿç’Ü*[•fMóúÞ4§~¼ŽJmï­kh¼ã½gX ‡Ž3~û©õÇäc/�~qëÔ£/'Á¶¥ãWË$M§ h BàuÕ¯þÅ£å�±î_½8I\²� 篨?J{FÇþîéñ¯¾X›*Ž]ÓÉ=õö @#°õ àÆïzvßg¶ÔÊÆ\°ðòËÚ»õ’ÿþ}�¿p~¦·8Fͧ÷ A€#›|d×Ð'6W'K"�)6u¼ï¬ÿ÷{–üî•M§ÛÈt ÜI D¨•é'nÚTž‡$›)¾iÍÒO_»ô�®/nX²v'Yó™VT a€£UÞ92pæÒ+#bÒ´®gÉo^±üóïkÿɳ’öæÀëÈ-oÏv´ A€cPž¸ñ®ég÷ˆL®«Ðõ³ç¯øü{»?piî¤ÎÀ�hrƒ 4¡pljc3ƒ½gò[»Ä'Ó”k»æ”åŸ{Wï-W·¼qeÍv°`ß4–ì²_¾4)2ò×ß ÌµjmüþíÙÞbÓºžQÊ/mo}óÚÖ·®«Ujå]C¹½î÷_œ)6 AH¡2?êïSO}ãТJËÙKÄ*ÓÚT¸heÛ;Ög:šË/�ÔÆïÉuÙ¥m�?}N‡™Gǯž…å¡ñž\–dì°!^™B¾ãÝg´¿ëôÉGv�Þ¾uæ©Á°ø´œ¿< E¨œ�‰Í/TöOöÞ°Á¸k"WÏéâe«ë�™ûG¿ðôÄý;Õ~°–ó– ¡¸™àDM?úÊàG祈ÏhMkº—üú›V|þ}?}N¦kQ×[ µæó¬¨@ƒ*³ ôüðÀMw•÷ŽæFyÿd`Ve;[:ÿɹ+ÿ?Ñóë—ç×v…Tk:­7[È ¡¸™ÒÆÍô ¥::=ñµí-¬¨_ÿf[½ÇîØ’$Rg’ó.ÛljZÛÝvíiÍgõ×&J¥—GRy»Uë[On9ÇÖ/h0BÒF¨, ÚTyâ¾íMë—äúÛ³g|Ë‹ãw?W�™úöËcw>S™Ê¯êtÎììªÿЯ\ÛºñäP«ÍìLÛqÆ�?{n®Ï¿•Ð`„ ¤�PY`åêÄ–íù5]õ+éÀl¨•+{oÛR³ÿûŸ—ª3ÛöŽÞ±uæÅýÙž‚«ÏÙUÏ¿Â+ÚÞ±>ÛÝRze´6–†;¯’–\÷û/v44¡i#T^-L<°=ÓÑÜ|joà„�}é™Évü£_Lj¡¼{dbó “�ìJ𳹕IÖ~°Y“Ég›Oë­çJ~]wõàTe°±o¾j9yëUo@£*�6B%IH¦¾ýrmºÒâ ¡S™,íýÌ–0Sy½/¨˜š|x×ø—Ÿ«M•ó«;3-‰ž5I’äWv¶¾u]ñM'Ug*¥]CµPÛõëëÝ€F#T m„JøÒøæjÕê¡ãŒó*q65½¡»ýúÓšÏYV�üÞqÆqok{û©-ç:˜’P�´*ª˜šøúŽÂ¥«3­NÔ=Z“�ïùËÇ ¨M”¦¿³gìKÏT†'s+;²mÍ�Ù“ëkm½bMÛ5§Ô’¤´ó`(Ezœqׯ\”ë)  H¡§úEóÄ–íõwv³ÝnŸ8²Z¹2ôÉ¯ÔÆgãlÜruæ¹}‡Ž3~v_¶£%·¬=0{2…|áüåmï\Ÿí)–÷ŒVGã:Î8³¤Ðý‹ 1 H¡­Úteâ¾›N]âZùˆF¾ðôÔ×_ ³' Iù•Ñú÷â�!›É¯2Þ~6Õ¿™Í§.i»þ´ú�wåàTe`,Ä¡íÚÓœ¼�K¨@Ú•¨Ujã_{1»´­imwàu”‡'ö}ökÇpý±¨ŽLO}s÷Ø]ÏVÇgr«:ë �Yrè8ã­oYW¸bM}!ëÐqÆ•¾¥ûW.ÊÚ÷ K¨@Ú•È%µ0õð®�Ë´œÙx-ÃöPyûñÜC f*3O�ýÝÖú2K¶«�ëm ÌžlGKáâU퇎3Ηv\¨ãŒ3=…î_²ï ˜P�´* aú»•S-­¨¿ øS�½rðÄî¡?&¥Æï}~ò[»“æ\~e§‰7³(iÊÖk¼ý�§çVv”÷MT‡'Ãüj½æ”Â+а„ ¤�Pi¥ç‡KÛ÷·\²*ɺYâûªÓåÁ[î­MÎ÷ðõkèɇvÖ‹¥:S94Þ¾ÙxûYSo¿¦5Ýmo;¥åüåÕ©Ri÷ügÜõËZ+ƒ†&T m„J)ï™z|OñŠ5}¼êÀ_|ûhæÐÏ‘z ÕWºFïØZË­è0Ë|vÕ›¡ø¦5­×œ\/óC·¯ÌTÂ\Êtµtÿo @#*�6B¥±T÷MN~cç¡+‹þ®îéö ÿÛ‡’°Ð›¯ªµÒ‹ûÇï|fú©Á¤5_/ÛófQýç¼å¼åmïXŸí-–öŒÕFçj¼}ëÆ“ Ú÷�M¨@Ú•†S™ž¸GË…+ù[ø‡§œ«ËÖãPŸ¼Çø–k•ZŒU¯Ùsè8ãS–´¿c}Ó©½µ©r}i1̶Csíû‚'T m„J#ªM–'î{¡ù¬¥‹öÒêàÿ|rrËöŽ~×IDATŸÚØÌôc¯Œ}i[yïDnµñö³,¿¼½xåÚ•kj¥Ê¡ñöÕÙ¹%»¬­û/ @ƒ*�6B¥Q•ªõ7ï›ÖõäWt„Eff×Áá?¾¶.RçD¹Zz~xôKÛJ/îO:ZòKÛ³§¾–X¼xUû;×'­M¥—Gj¥pbÚßµ¾å¬¥hpBÒF¨4°jmüþíÙÞb=W¢Q+W‡n¹·º*D/ùÞù_}qâ¡�I>“[ÕáĶY”ä³-gô·¿c}þ¤®ÊðDeßD8^K~ó 7}A H¡ÒÐê—ÂSߨ]«ÔZÎY‡ƒÿù±©‡v…†R=8Uÿk¿û¹êÄLnug¦Å5ñ¬I2I=TÚ®9¥pñªÚd¹´û`8Æ•¶¦ÓûÚßuzŸP�´*)0óÔ`ù•ÑÂ%«SÞÔô¶¡áûàŸôu\jÓ•™§†ÆnßZ~y$×ß–í.fOýûY¼ü¤Ö·Ÿ’ä2¥]#GœqûOžÝ|ò’4>¡i#TÒ¡´ãÀô³{ —­®_¥…”ªL–?vO˜÷ñ޳¬ö½ñöw?7õØ+™B>·²ÃxûYT_­j9wYÛ;OËõµ•ƪ#G:.›ôüæŽhƒt*�6B%5*{Æê×¾…ËOJë ôƒÿù;Ó�¾Ò¢²obòÁ—Æ6?__˯ìLš\+Ïš$›i:¹§ýúÓš×÷UG§ëë�¯÷•õ¶o»j]RA¨@Ú•4©îŸœxè¥ÂÅ«2­M!uò'uN=úò‘ß#o(µÉòÔ«Çï›È­h϶;Îx6å–µ·nxCñª7ÔªÕò®‘P®þ£/èüùóë•€T*�6B%ejc3[¶Ù™¶q�™B¾õ-릞ØSÝ7R¦R{õ8ãémC™ö–üòöÀìɶ5.ZÙöŽõ™Žæòî8Î8)æ{>xyêïì‚ÅC¨@Ú•ô©MW&îÛÞ´~I®?mã;’|¶¸amù¥ƒs1›|Á%!©ì«wæÄý;êŸäOêJñGó¯þÃÓ¼¾¯í�ëók»*Ó•½­×œR|ãʤ…P�´*éT®Ö¯wó+;ê»!]’l¦xåÚÊÈTé¹á�RÕÑé©o¿<ö¥g*£SM'uñ1‹êë'ùU�mO.\¼ªéŒ¾lGÚa1*�6B%µjaòÁ—2Íͧö†Ô)\´2ä3S�ïiУŠ�J¹:³mïÈí[gvÈvr}­�ÙSÿ–ªH¡i#TÒ­þÆ|u¢T¸`EH�–3úëo�O<üRrŒþKýOWÞ52±ù…Éoîùl~uG’± à5H¡’z3Ïì-½t péªô]àæOêj^ß7ùÐK¡’êXùžêþÉ©Gv�Ýó\mº\/´LK:¡8nBÒF¨,õ·ä§Ÿ,\~R’ºÁv¹eí-®˜|hgmúh'‘7´ÚTyú‰ÁÑ/m+ïͯhOßÙnÇM¨@Ú•E¢24>ù��Å7�”iIÛ�ÙÙîBýÏ5ùÍݵ±™°HTk¥íÆ6=;ýÄ@¦µ)·¢Ã»BÒF¨,Ց鉯ïhyãÊôM¬_¬7¼aê±Wª¦ÂbRïωvŒõ…Zµvè8ãÔ­˜=¡i#T•ÚDi|Ëöæ³—æ–CºdšsÅ«ÖN?»·20™ÚxiúÕñöÓ¹•Ù6ãí�ÅH¨@Ú•Eg¦2~ߋͧõæ–¥müy’˶¾ymy`¬´ã@X„ÊÕÒsûFïØ:óüp¶£9}¿‡'T m„ÊbT­�íÅìÒ¶¦µÝ!]’LR¼ì¤Z©:óôPX”’�”_�¸ïʼn¯ïH²™ÜªNãí�EB¨@Ú•Å)©…©‡w…LÒrÖÒ�:-ç.Ët4O~{wšÇAIudzê›»Çî~¶:^Ê­ê0ÞH=¡i#T³é'ÊCã…7®Jß™Qͧöæ×vO>²³¾|³™J}qiôöm¥]sK۲݅�RBÒF¨,r¥÷O?»·pùê$›ºq�«:ëK+î¥jXÜ�·éàøÝÏM~ûå¤%—_Ù‘dg ¤�P�´*TöŒM=¾§xùIISêÆAö¶¶\²zòÁ—jSå@ÕáÉɇvŽÝû|=Þgœº¿q`1*�6B…ºê¾ÉÉGv.Y•)6…tÉv´¯X3õí—«£Ó�ï©M–§¿»gôŽm•Á±ìòöú·(4>¡i#TxUý:~âkÛ[.Z™¾ËÖz}µ^õ†©'ê=ø{•Zé…ýãw>3õôà÷ÆÛ·o44¡i#Tø{µ©òÄ}/4Ÿµ4×ÛÒ%iÊ7¬-¿t°¼{$ðÃ*ã“÷ï¨gjýãÜêÎŒñö@c*�6B…RªŽoy1RW~UgH—$›)\±¦¼w¼ôâþÀ�¨ŽÍL=úòئm•Sùz®¤n �zBÒF¨ð�UklÏt47ŸÚÒ%I’â%«“\fú»�×TªÎ<³oôö­¥íû3]-¹þ¶Ð „ ¤�PáG%!™úö˵RµåÜe!ušÏìÏ.k›üÆ®dqOX9Œ$„ò¯¼8ùð®$ÿ½ñö©;½H¡i#Tx=3O•_-\¼*}37šÖv7¯ï›|è¥P+‡S=05ùÈ®ñ{ž­N–ݾÒb¼=/¡i#T8ŒÒŽSÛ†Š—­Nr©±²¬½ùÂåî 3•ÀaÕ¦+3O Ž}áéòË£Ù¥­¹îbˆ�P�´*^e`|ê[/¯\“Âq�ÝÅÂe«&¿±«6Q …ÒKÆï~nê;{2…\n…ñö@\„ ¤�Páˆ^Ýÿ“Îq�íÍÅ këWÞõ?càèTöNL~ý¥ñ¯¾P+WókºÇq*�6B…£ñýq�¬Èv¦ndK¾xÕÚég÷Ö׎G­¾ 5ýøž±/=SÞ;‘[Ñ^O¾° „ ¤�Pá(}oäöæ³ûS82—m}óÚÒ®ƒå]ÆA£rµôüðè—¶M?³7ÓÑœ_ÞˆP�´*ƒrzÇAf’âkj3•™­C�c”„¤²glbËöñûw„L’_Ý™äg Ì7¡i#T86éY×rÞòúmòÛ»“à6ñãQ�žúÖËc›ž©ŽÍo_pœ10„ ¤�PáX}äL¥~YR§`ùµÝ“�ì¬'Yàø”ªõ…©‘Û·–vÈ.)¦o¯ '¡i#T8>õ+Ñ´ŽƒÌ¯êl9wÙÄ×_ åjàx%µPÞ52~ïó“ßÜš³ùUIÆ~0` H¡ÂqKó8ÈÞÖ–‹WN>´³6Uœ˜êþÉ©‡w�}ùùÚL9RW¦9æ€P�´*œˆWÇA.[•iIÛÝÙΖâk¦¾ýrut:pÂêÉ7ýÄÀè[Ëcùåíé;çXpBÒF¨p‚ª¦&|©:>“ä3)»!SljÝð†é§+{'³¢Z+½¸lÓ³ÓOfŠùô, ¡i#T8qµñRýºs|Ë‹Mëzò+:BŠ$MÙâ›×ΤHËYK³ËÚ&¿±+1aeÔVÊ/�N|õʼn_Jr™ÜªŽúZV8jBÒF¨0J;L?»·pèäâT]k6­ín^ß7ñõÆAÎ�êÁéúºÜØ]ÏU'fê¹b¼=p”„ ¤�PaŽTöŒM=öJáò“R67#·¬½åüåí 3•ÀÜ™©Ì<=4vǶòî‘ÜÒ¶lw!–P�´*Ì�êþɉ‡^*\¼*e7Iç–ë‹E“ߨU›(æT-”^:0~÷s“�¾œ´äò+:’Lªö³H¨@ÚæTmlfbËö– W¤lÀ_¶½¹¸aíÔwöTLæ^ußääƒ;Çî}¾Vª4�Ô•49ÎøÇ„ ¤�Pa®Õ¦+÷moZ¿$×ßR$Ó’/^µvfëPeh<0/j“åéïŒÞ±­þ=Ï­ì¨çbøß„ ¤�Pa>”«õu•üÊŽüI]!E’\¶¾®RÚu°¼k$0o*µÒ Ã!Ÿ-œ¿<üo à¸TjûþøþÑ;·…t©·Jï¿ÜÐöž3ó(»¬­ógÏ ?@¨pü|þ›ûÿÿß ©Óý‹v½ÿ�µàÌâùPÿ>÷þö•™¼ÛT€"T8!c·uïn©•Óv¶oûõë{o¼*d�I5çÚßsfÓ)KÀ*œ¨Éw}bsu2mgû/]ÝwóÕ‰…sɦ/àõfÁô“ƒ7mªœ éÒrö²þ?x{¦+Ug1Çæ/à0„ ³£¼sdà†M¥WÒv^VÓI]K?{]neG`¶Ùô†P`ÖT†&n¼kúÙ½!]r½­Ko»6rO`öØôžP`6ÕÆf?zÏÔw^ é’imêÿý·5_`ÐÇì°é 8"¡Àl+UoÝ4ræ¥!]òË;�ƒ\mä¸58VB€yR=05øá»§· …tÉv–Þv]óYý�×áÖà8æOm²To•‰‡^ é’)äûo}[ና¯¥óŸœçÖàX æÛÞÏn½s[H�Þßysëµ§~XËe«;Úäà˜ æ[’Ÿÿæ�¿|4¤Nϯ]ÒùKÖBÚFÇ·üÉ=K~óMàØ Æèß>µïsÔ*Õ�.ï>£¾´²î™žBßGßšiÊ€c'TX0[¶Þº¹:U éR¼bMßÍW'…|XÄ’–\ÿ-³�-à¸ÒÌヹ§rp2¤KËÙËúÿà홎æ°(Õ’Ð{ÆüªÎp¼„ ¬´}ÿÀ ›Êƒc!]šNêZúÙë²ËÚÂâÓõ ´œ¿<œ¡À« MùÂpH—\ÛÒÏ\—?¹',&Å7¯íxï™àÄ¢P™øÀìü’‘IDATÈÝ“�½Ò%ÛÞÜÿûokyãʰ84Ÿ½tÉo]N˜P 3•¡ßÿÊØ}/„tÉ4çzoºª¸amH»üÚ®Þ�\fƒP "I5ìÿ“þÍ!]’L²ä7¯hÿ©³Cze—¶õݲ1Ó²¨Ï:f‘P :#õ�á?¤VKÛØÄ®z^÷/­¥qÂJ¶§Ðë5Ù‡³F¨£ñ»žÝ÷™-Õ™rH—¶�§ô}ä-!Ÿª×ߤ˜ïýÄÆ\ok˜=B€HM>²kðã_®N¦mdᢕý¿ÿ¶¤˜–yíùLÿ-›V™Ì2¡@¼JÏì¸iSyx"¤Kó©½ý·]—é)„WË$½¾ªé”%`¶ ¢VÞ9rhÄÊ®ƒ!]šVu.ýìu¹Õ¡aÕB­÷w®,œ¿"Ì¡@ìªÃ“ƒ7Ý5½u(¤K®§¸ô®m>«?4¦î_½¤xùI`n@m¢4xó—'¿µ;¤K¦ØÔwóÕ…KV…FÓõþ7¶_wZ˜3B€Qª}ú«c÷>Ò%Ée—ܸ¡õÚSCã8T)ׯsI¨Ð0’ZØÿ§øÏ�…tI’¤ç×.éü…ók¡FǨ`~Ìèÿxrßç¨Uª!]:ÞwVïï¼9d£ž©R€y#Th<[¶Þº¹:�¶q�Å+ÖôÝ|uÒœ QR)À|*4¤™Ç?zOet:¤KËÙËú?õöLGsˆŒJæ™P Q•ž¸qSy`,¤KÓºž¥Ÿ¹.»¬-D£ëW.R)À<*4°Êž±z«Ì¼t ¤Kni[½Uò'÷„…VË„î߸¼ý]§€ù%ThlÕ‘éÁß=õÄž�.Ùöæþß[Ó¹KÃÂIš³ý»ºíªu`Þ ^m²4ô‰Íìé’iÎÕ;¡¸amX™ŽæþO½½å¼å`!d—ýò¥H‘‘¿þn€E¨&Ü‘´äšOï )’d’âe'Õ*Õ™§†Â<Ê.k[ú©·çWu€bE€”HBrð?=:üç�„ÔéúÙó»?xim¾&¬äO>t7®?¢»ù�EH¨�*ãw=»÷·ÔÊ•�.mOéûÈ[B~Î_¸›Î]Úÿûo˶Gw>2°ØÒfòÁ�CŸØ\�,…t)\´²ÿ×$Å|˜3Å�ë–ÞrM¦9šP …¦Ÿ¸iSyx"¤Kóé}ý·]›é)„ÙVË„Î_¼`É/q*¤SyçÈÀ ›J¯Œ„tiZÕ¹ô³×åVw„YT8t¼XÇ{Î Ñ*¤VuxràÆ»¦ŸÝÒ%×S\zÛuùÓ–„Ù�]Ö¶ì¯w 1¡@šÕÆf?zÏä·v‡tÉòýŸ¼¦pɪpbšÎ]ºì�®Ï¯˜Õõ€Ù TH»RuèÓ_»ï…�.™¦Ü’7´^{j8^mï\ßÿñ�™bSˆ����6>Â�JB˜zxWý?ZÎZR$I’ÂW†|fêñ=I8†1+µLÒóë—w¾ï¬úÿBˆ’‹‘ÿúÝ}öPH�Î?»ç×ßtô_ŸéjYúûok»j]ˆ˜ƒÒXD&¾ü|eßDï R6*¤í-ërÝ…½·ÝW›>Â¤Ëæó–-ù�+³mæ9±³¢Àâ2ýè+ƒ½§:>Ò¥å¼åýŸz{¦ãõ $—éü¥ ûoÞ¨R€† TXtJÏÜtWyïxH—¦u=K?{]vYÛ�þV¶¯uég®íx÷ A£òîCã g^:Ò%×ß¶ô3×å×vÿà/ÞtÒÒýަ7ô€Æ!TX¤ª¦?|÷Ô{BºdÛ›û?ý¶¦s�o–´äº?xYïï¾9ë b Ñ8žÒÆñÄp ÊÕ‰¯¼˜_Ý™_ÝR$ÉeÛÞ²®VªvÿÚ%#ç�ÆdE€Ånï}môÎm!uº~þ|#ç�Æ%TXì’�øü7üÅ£€h8dô=µ÷·Ô*Õ@„ |ßäƒ;oÝ\�*šP€0óøÀàG ,(¡?¤´}ÿÀ ›J¯ŒŽP€¬241pã]3/ ˆP€×P›ü½»§¾óJ`!xmµéÊà­›Çî{!0ï„ ¼®¤öÿɃ#ód`~ 8‚ƒõØðŸ?R«ÕóE¨À‘�ßõì¾Ïl©Î”óB¨ÀQ™|d×àÇ¿\Ÿ Ì=¡G«ô̾�›î*Oæ˜P€cPÞ=2pæ™]sI¨À±©OÞ´izÛP`Î8fµ‰òàÇ¿<ñðÎÀÜ*p\JÕ½Ÿ¹oìÞçs@¨ÀqJB²ÿO>ðW�f›P€2ú7OîûܵJ50{„ œ¨‰-ÛoÝ\�6`Ö˜3� ~ôžÊèt`6˜¥ç‡nÜT œ0¡³¦²gìÐ8Ȇ'F¨ÀlÊ.)Îì881¹œ°¤½©xåÚ¶·ŸÒ´¦;p„ ¿ZZÎ_ÞzõÉÅKW%¹l`–8Ùem­o]WO”Ü’b`¶ 8Is¶pùIõDi9gY`Î8 MÙÂùË —®.\¶:SÈæ˜P€×•´7.ZYï“–ó—gš½hÌϹð�eûŠ…KV.YÕ|f’u”?À*ð}¹“:mîºtUóº%€%TXÔ’B¾éôÞ–ó–/]�[ÚˆƒP`ñ)äZÎìo>³¿åœeùu=I& DF¨°($Å\óýÍg-m>«¿éä%â rB€Ô:'g.­¯œˆ€†#TH‘|&¿¦«ùÔÞ¦S–4�Ò“[Õ™$â ! X-ò«»šNîù^™,iZÛ�äœ& �B€FR µüòŽWLòõ®ë1‡ •<¹µLo1¿ºó{�®ú?s«:²Å¦@Ú ""Kx•P`$íÍÙî–lwáУ§�[Þž_Õ™[Ý)Kx•P`d“LסÉõ_ý S’®ÿ]&]·¼pxB€#«eB¦Ø”i­?òõ&Åü÷>þþã{Ÿæ3mͯ~AýS #œ ¡iÓ÷‰�Ž(“$ÙL}Ý#$õ’PÿøÐ¯¼ú‹ÿðq­þûÙŒcµ˜^{ mZÎYœ-Â@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@tþ_ÿÿÏÂb,IDATi‹‘†q­ºÈIEND®B`‚python-django-debug-toolbar-8.0.0/docs/_static/brand/Square-Green.svg000066400000000000000000000020051524561404200255070ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/docs/_static/brand/Square-Light-Blue.png000066400000000000000000000576751524561404200264170ustar00rootroot00000000000000‰PNG  IHDR88crûØIDATxœìÝœÜu�ðñßÌìîlɶôd7�$€ A@©R�*¨`!¡ˆ€€"¢‡Bä¨Ê â‚  ÀéÙ@z8©  B ÙMOv7›íež�Þ=g!}Ëoþû~¿æ“Íòz‘d“Ìg¾¿R°Ûý‹@LÒ 2BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :BˆŽP¢#T€è :H–Ö—Ÿ°AÒéT¦ •É„tæ¯Or©¿<)(øËGV?ÿë“tQq€A!T iê/<>À€É¥Ò™ÒòôˆŠLYeº¬<]ZžQ™)«H•Udþò<]VÑ÷ñLiÅêÏ)­XÝ?°á„  •ëímiê{t‡ùëüä\™Šê‚ê±}�Lõ˜¿<“ùË? GŽËTŒ’1¬‰P` ¤Bè]ÙÐÙ÷xûOïø ™ÊQí–Õ 3j|áøÍŠ&N)ª™b�B€!ÓÓ´¼ïÑùÖ+ûÁ\*U8zBáÄ©E5SWwËêÇÔ‚ªQ€áD¨—T.×½tAߣí…Çÿ÷ƒ%#Šj§Mؼ°fuÀd'mU4®6�\B€<�k[Õñú }�ÿÿ‘tYevÊ6ÅS·ÍNywߣhüä@‚òRoKSÛKOö=þú;‘KñÔwg7÷_ºe›¢‰SR©T o ’ oäÒöòÓmÿs�P*[’Ý|›ì´é%ïÚ±ôÝ»dÊ«y%µÛý‹� ¯ÏØ6#—Je7Ûºtún¥ÛîR¼õN™’Ò@ô„ $�P�µÉOÛ®dú®¥ÛîZ¼Õé¢@”„ $�P�õ”**îk•’黕m·[vów»} *B’F¨ÀFH�¨*ÛiŸ»ì_úž÷§ CM¨@ÒØ©’#޷ψ]÷/Ý~�tQq`ˆH¡ý"•-)Ûqï»PºÃÞöß >ÇÀ;Èu´­zòÞ¾G(Ì–m¿GÙ.û�ØißLéˆÀ *°V]-Ï>Ô÷XBé{U|àcå»`–~AÒXú-]VY¾Ç!åøhÉ´íC¨@Ò4…µÓVXö<¬°zL _ H¡ƒ,—J—m¿GÅ/{ß>n�è/ö¨À&Iåz[Ÿ¬ï‘*«¨X½$ìc–„lºtúC®eeÓ}·µþáÑÀ&3Q€þ‘K¥Æ�|Aå>G6™P€þP˜­9ãʲ÷ô¡›*]V9ñÜkmMèGB6Ifä¸Úón*?9Є l¼ÂÚi5³np� @¿*°‘J¶ÙyâÙßM—”ú›P€�Q¶ëã¿xYº 00„ l°ÊýgŒ=qN`ÀعF}æÈÃN $¡ë-S0á´o–ï~P`€ X/é’² g]]ºí.€�'T`ÝÒÕµsnÊNÚ"0(„ ¬CÁ¸Iµ³o(S,BÖ&;uzÍ9×fÊ«ƒH¨À•î°×„3®L—P€wV¾ç¡ãN½4•N�P€wP}ÄçFê‹€!"TàïäR©q'_P¹Ï€¡#Tàofkθ²lǽCJ¨ÀK•Œ¨™}}É´íCM¨Àj™‘ãjf]Ÿ­™ˆ€P€PX;­fÖ …Õcq* w%Ûì<ñìï¦KÊÑ* ke;í;þËßJ†Éõö.¾î¼T¦`Ìq_s[%�§„ ÃWåþ3Æœ0;•J…éíìXø­/µ>ÿXßó¶Wž�ð•+³“¶ùÆm» G¹FuÆØç$¬RzZ›ë.<þ¯•Ò§kÁÜyç~ªñþÛ@¾* ?™‚ _ºbäGN ÉÒµ|ÑüÙ3;^áï?Ú±ô† ë¿ùù¾† ùC¨0¼¤²Å5ç~¿|÷ƒB²tÔ¿9Ö‘}#”wüÞÖç}û¬�µýCÃDL¨0Œ¤+ªkÏ¿¥tÛ]B²´½ö|ß,¥§qÙZ>§gÅ¢ùç³ü?¾—ëí Ñ* …ã7›támÅS¶ ÉÒüÔ}uç�k[µÎÏLåzWüôêú‹Nènnq* Ù©Ó']ø“¢qµ!Yï»uá·¿²AÿIÛŸ™÷Õ�·½ñRˆ˜P ùJ¦ïV{þ3åU!Y–ÝvåÒ\´Ç–õ¬X\÷õcšýUˆ•P áÊ÷<´æœëvïa®§gÑÕ_møå÷ÃFëîZr͹‹¯¿ ·«3ÄG¨�dÕ;yüißLe2!AzÚ[ë/=¹ùñ;Ã&[ùÀíuçÓµbIˆŒP ™r©ÔØS.=ãK!Yzšë¾~lÛKO†~Ò1÷åy_;ÂÉÅ@l„ É4ñŒ«*÷9"$Kçâºy³gt¾ýjèW½+êæÕxÏ�@4„ I“*Q{Á�Gì¼_H–ö¹¯ÌŸ3£{ñü00–ÞtÉ’. q*$Jfä¸IÝZ²Õ!YZ_|¢îücúFa 5ÝÛ‚o¥·»+ 5¡@rÖN›tñíÙš©!YšŸ¸§î’“síaെT®mUÝyG¯zæÁ0è„ ù*—J�ÿÒ#?zbH–®†¥óÏ;ªí•gB|ëËÍOÞWA€<”Êלuuév»‡d騳þâÏö¬X¢‘Êõ.¼ê¬PPX¾Ó¾`°˜¨�ÒÕµçß’¼Ji{ãÅù³gFU)Õ×*‹úæ*C½ V„ y¦`ܤÉß^òô�,=Í�uç×ú‡ß†¼µðʯ´¾ütB€ˆM8ó;•û’¥kù¢y³gt¼ùRÈkÝ] .û|ÛŸž @¨©TɈÚón,ßy¿�,óÿ<Ö‘Ý‹ç‡ü—ëh_ð�SÚßz5ô7¡@Œ2#ÇMºèÖ’­vÉÒúòÓuçÕÓ¸,$Eo[KR2IDATýE'öÕWèWB€èNœ2éâÛ³5SC²4?qOý%'õ½²ÉÒ»ª±þÂã;1#â!TˆKvËíûf)…ÕcB²4Þw뢫Π=Ý!‰zV®¨û×Ït7, ýD¨‘²]öŸ|áO2¥å!Y–ÞrùÒ\­gÅ¢º=®{åŠÐ„ ±¨ÜÆ„¯|;$Kowׂo¥ñÎÃ0еhÞ‚o~¾ï‡6™P £f|yì‰sR©TH�žöÖŸÔòÔ}aØèxã¥%×}=l2¡ÀË¥Òã¾ð�‘;)$KwÓòº¯ÛöÊ3a˜i~ôW wß6�P`(¥²Åµç^W±×a!Y:Í›?kFçÛÃô‚‘¥?úfëKO€M T2éŠêÚóo)Ýn÷�,mo¼ØW)ÝË„á*•ë]pÅ—X l ¡ÀÐ(=qòÅ·OÙ&$Kë‹OÔ�\oKSÞrm«|óó=‰»44B€!P´ÙÖ“.¾­pLMH–•�ÝQwÉÉ¡«#Bׂ¹‹®:3—Ë€ 'Tl%Ów«ý×› *G…dYñ‹k÷k©\oà´>ÿØòÛ® N¨0¨Ê÷<´æœë2Å¥!Aú†‹þïìå·'ðO~u}ó3€ $T<ÕýìøÓ¾™ÊdB‚ôvv,¼âôæG~Xƒ%לӵ¤>l¡À`È…0æ„Ù£g~%$KOksÝ…Ç·<ûP`ÍzÛZ\ñE7ÖD¨0ð Š&œù�ªf†déZ¾hþ왯¿X—ηÿ´ìGß ëM¨0°R%#jÏ»±|çýB²tÔ¿9Ö‘] æÖOÓ}·Ú¬¬?¡ÀÊT�žtÑ­%[í’¥íµçûf)=�ËÂf`ý JáÄ)“.¾=[35$KßX î‚ãsm«Èf`ý DvËíûf)…£Æ‡dizøç ¯8=tw6JçÛZzÓ¥`]„ ý¯lçý&_ø“LiyH–e·]µäÚ9©À&YùÀíÍOÜÖJ¨ÐÏÊ?xø„3® É’ëéYtõW~y] ?,¾ö¼®KÀš úÓ¨#¿4þs¥R‰š:ô´·Ö_zróãwúI®½eñÕg€5*ô�\*=î ßyøÉ!Yzšë¾~lÛKOúUÛŸi¸ëæ°B€~�Êמ{]Å^‡…déZZ?oöŒÎ·_ €e?¹¢³þÍðN„ ›*]VY{þ-¥Ûí’¥}î+ófÙ½x~`€tw-¼êÌ\Owø'B€MR0z⤋o+ž²MH–Ö—Ÿ®;ÿ˜Þ• ��Ô9ïµå?½:ü¡ÀÆ+Úlë¾J)?9$Kó÷Ô_rR®£=0ðVüêú¶?=þžP`#•Lß­ö_o.¨’eůoXxÕ™Áz¤Á’Êå~ç_zÚZÀß(°áÊ÷,©²Šª}?QuȱÕcÀß*l€\cO˜]uÀÌ�,½m- .ûBÛ+ÏEáÄ©U]ñ��¥‹ŠÀ;*¬·‚¢ _º¼|çýB²t5,­¿øÄ®º7¬/tK·ß³ú�c˶ß3¬•P`½¤KÊ&žs]ÉV;„dé\4¯î‚Ïô¬XH©lIÅÞ­<øØìÄÍÀz*¬[¦jtͬ²“¶ÉÒöÆ‹ .9¥·¥)0`2£&T8³òCGfJG€õ&TX‡Â‰Sjf]_8j|H––ç]ð­/‡®ŽÀÀ(ÞjǪCޱó‡R™LØ@B€µÉn¹}Í9×fJËC²4=üóÅ×�—Êåý.SP¾ûÁÕ9!;y«°±„ kTºÃ^θ*]” ɲügß]ñ³k\–ÒïÒÕ•:²ê€£ ª’v (0ø„ ï¬üƒ‡�;ù‚T:$×ÛÛ7Hi~ä�~U4y«ªƒ�-ßãÃÉËZ`¨þQfÔ„±Ÿ9gDâŽ!îíl_tÕY-¿8ÐÊvþPå3˶Û-ô+¡Àß)Úlëšs¯+¨LÚÒ�žÖæú‹>ÛñæK�þ�*.«øàáÕþtᘚ0„ ÿ«dúnÎú·LqiH–®å‹ê/þlׂ¹�MV0nRÕ�GWìóñLIÒ¾N€¨þ[Ù®L8ýòä�$Û1ÿÏõŸØÓ¸,°iJ¶Ý¥òàcG¼oŸTÊIÀ€*¬Vý‘GuFHœÖ—Ÿ^xùi½m-��V˜-ßã�êC?“­MÚ�Ÿ@Ì„ Àp— aì ³«˜§ù™]yFèél”LÕ˜ÊfTí?#S^—PÞ Š&|éòòÄðÕ§ñ¾[—üà"K”6Nvêôªƒ�±ûAé‚Â0„ Àð•.)›xÎu%[ígÙ�¯h¸ã*eCåRé»|¨ú�O—¼kÇ0¤„ À0•©]3ë†ì¤¤í:Èõô,üÎY-OÝØ©²Šª}?QuȱÕc@„ ÀpT8qJͬë G�ÉÒÓÞºðò/¶½ôd`½NœZuðÑ{4�- Ñ*ÃNÑf[×~ý¦LiyH–î¦åõ—œÜùö«�õ� ¡tû=«>¦l‡½@|„ Àð’Ô+;¾]ÉIÝKëëT˜­ÜçˆÊ�ÊÖL ±*ÃHùž‡Žûü%ɻұ}î+õ�ØÛÒX«Ì¨ U̬ÜÿÈLéˆ7¡0\Tô³£g~%$Në‹O,¸ü´\G{`ÍŠ·Úqõqû쟼L’J¨$_‚¯t\ùØ‹®97•ë ¼£LAùîU}ø3ÅS¶ yE¨$]r¯t\ñËï/¿íJ—¥¼£tEuå~Ÿª:ð肪Q  €$Kꕎ¹\né.jºÿ¶À?)š¼UÕÁÇ–ïñátQ6ä-¡�XI½Ò±·³cÑwÎjyö¡ÀßÈ¥R#ÞûÁʃ�-›¾kÈB ™{¥cksý¥§t¼þBàôÍÍÊ?pxõ‡?]8¦&$…PH ì–Ûלsmò®tìjXZáñ] æþ¢`lmÕAÇTîsD_«€d*ISºÃ^θ*yû:ê߬¿ø³=+B(Ùv—ʃޱӾ©”Ó€d*‰RþÁÃÇ�|A*�ÉÒöÚóõ—ž’k[†¹Âlù‡Tú™lmÒ¶ü¡�#?õÅQG|.$NËs�.¸âK¡»3 c™ª1•ûYuÀÌLyU„ @äRéñ§^R±×a!qšþùâëÎKåra¸ÊN�^yÐÑåï?8]P† ¡�ÿ ³µg·t»ÝCâ,»íª†_^7<7aôÅçˆ]>T}ð±%[¿7 ?B ¿¥Ë*'ž{mÉ´íB²äzzïÜæÇï ÃOª¬¢rß�Wòé‚ê±`¸*y¬`ôÄšÙ7�Ÿ’¥·³}Áe_h{éÉ0ÌNœZuÐQøX:[†7¡�¯ k§Õι± rTH–žæÆÕW:¾ùR6r!”¾g�êCŽ-Ûa¯À_€¼T²ÍÎÏþnò®ùëZZ_wщ݋ç‡á!•-.ßë£U‡|:;qóÀß*ù§lׯñ²ä�Õ>÷•úKOê]Ù†�ÌÈñUUù¡OfÊ*ÿD¨ä™ªf̱ÿ§õå§\öù\G{HºìV;T|ìˆ]öOe2€5*ùdÌ ³«˜§ù‰{]ýÕÐÓ,SP¾ûA}�Y¶l»Ý £îÏ ¿ùaóã¿ ]ÿÿƒ+ûÕè£ÏL¥ÓH¡µ‚q“jÏ»©pÔø�8 .9©í�Ï„dIe‹+öþXÕ¡Ÿ)7)0šŸ}¨éî›Û^~úŸ¿«weCËs�Žxß�B ^Ù©Ókι6S^’¨ïG—¤P)[[uÐÑ•û|¡ùN¨ ¥’mvžxöw]Ø';yË‘‡ßðëÂIe‹Ë÷üHÕ‡�ËNÜ<Ðßr¹\Ës�6Þ}sÛ‹O„�·êéÆ~öë©L&yK¨ ™²�öÿåo9?êÿù‰/4?qO÷Òú0¸2#ÇW8³êCŸrQà@èikm~ô—�wßÒµèí0Xz[šÚþøtév» o €¡Q¹ÿŒ1'̶¸èo¥‹²ã>wQý…LJÁ’ÝrûêC>=b—ý½õ>º–-ì¡4=ô¹¶UaÐ5?yŸP�¼&T[.„Ñ3ÏùÑÿ¤tÛ]F¼ÿàU¿»; ¨LÁˆÝ¬>ôøâ)Û@ëËO7Ü}KËïÚ€KåûÛª'ïûÙó¼ùK¨ ª\*=áôÿS¾ûA�5}ÌÕV´IDATÙ-¿8×1 ;­ÓåÕ•û}²òÀ£†ù餷«sÕÞÕp÷Í�o¿6üRù~þŸiiê륲é» ? €Á“Êלuµå(kW8rìÈ�Ÿºü'ß ýªhÒ–U[¾ç¡é¢l ¿u7.o¼ïÖ•ÜÞ³rEˆFËÓ÷ È_B`�¤+ªkÎù¾µFë£ê�O7=ðïÝKêÂ&Ë¥R#vü@Õ!Ç–Nß-0:æ½ÖpÇ�ÍOܺ»BdV=ýÀ˜ãíƒ|%TCÁ¸Iµ³o(SXé‚Âq'ÿkýE›´�ç/—ʬúÃÇùi¹žžUÏ<Ðx÷-íúCˆUOã²¶Wž-}÷ÎÈCB`Àm¶u_¥dÊ«ë­oR¶ë-OÝ6\Á˜‰ÕþLÅ>悚�ÐÓºjå#?oøÍ�z–/ Ñ[õôýBò”PX%Ów›pÖ¿eŠKhìq_›»�¡R²ÍÎU‡;bçý cÁ[MwßÜôÈ/BWGÈ-¿$|æÜä!¡0€Ê÷] K›î¹¥éÁŸõ®j ü�ö?='T �€ “.«¬™}Cñ”mD¦íõïúѪ§î½=�Òöêï+÷ýxò„PØ£'öUJÑøÉ¢‘ëén~âÞÆ»ÔñÆK�5kí¹ä¡°¾Š6ÛºæÜë *]Å@,z𛏽ñ¾Ûz–Ö¥kÑ¼îæ†‚òêä¡°^J¶ÙyÂW¯É—ˆ@Gý› wÞØüøoBWG`½µ½ütùn €u+Ûõ€ñ_¼,]P`Hår¹–ß?Òx÷Ím/?Øpm¯þA¨@¾*ëPuØñcŽ>+À�êik]ùÈÏï¹¥{ñüÀÆjÿÓ�'„ ÀåB{Âìªf:]Kë~ó£•�ü"×ÞØ4ío½ÒÛÙž.*@ô„ Àd &|ù[å;ï`ˆ´¼ôTÓÝ7¯úÃ#©\.Ðú~&Û^ýCÙ{Þ€è €w�.)›pÖÕ¥Ûî`Ðõvv4ÿçoï¾¹sÞk}ßLú“P�|!TþQ¦jtͬ²“¶0¸º—7Þûã¦þ½·¹!00Úÿü_ÈBàïNœR3ëúÂQã ¢ö¹¯4Üyãª'ï =Ý��$T _€ÿ•�:½föõ™Òòƒ"×Ó³êéûîúQÇë/E®µ¹kù"oF@ü„ À+Ýa¯ g\é8 GOËÊÆþ½éÞ[{V, ®ö¹*?¡°Zùwò©t:ÀëXðVão~Øüø¯sí�¡Ð9÷•°Ó¾ˆ›P#?qê¨O|!À@Z}©üs�®¾TþÅ'Cªcî=¡ k¹Tªo�R¹ÏLoGÛÊG~ÙxÏ-] ß D ]¨@>*À0V˜­9ãʲ÷00º–-l¼û–¦‡~–k[ˆFOÃ’ž–•™²ŠDL¨ÃTº¬râ¹×–LÛ.Àhýã3}‰²êÙ‡R¹Þ@|Ú_¡l‡½1¡ G™‘ãjÏ»©hüäýª·«sÕïîj¸û–η^ .•�XÇÜW„ DN¨ÃNaí´šY7V� кW®hº÷Ö¦ûoëY¹"=ÛT ~B^J¶ÙyâÙßM—”è'ó^k¸ó¦æßݺ»yÂÁ_?¡ #e»0þ‹—¥ l²\oïªgh¼û–öWÈ7ÝKë{;;ÒEÙÄJ¨ÃEåþ3Æž8'À&ëi]ÕôàêKå»—-ä­Îº?OÝ6±*@òåB}ô™#;!À¦éXðVÓ=7¯üí¯rm�<×¹`®P�˜  é2NûfùîØ-/<Þx÷--Ï?æ ¯Äè\ðV"&T€$Ke‹'žý½Òmw °QV_*ÿè¯ïþqׂ7ƒã†“寿¦@´„ �XéŠêšs¾_ô³\ËÊ@u.|+*@2Œ›T;û†Â156PÛ«h¸ûæUO?àRùd묟€ˆ  �²S§×œsm¦¼*ÀzëíîjþÝÝM÷ü¸ãÍ—‚U^ÃAwg×Òzog@´„ �4%Ów[}¥cQq€õ³úRùûoï{ô4. '� Þ*-¡$Jùž‡Žûü%©L&Àzè¨ûsÃ76ÿç]}o®†Ÿ®…o…í÷@”„ �Õ‡Ÿ2úÈÓ¬K®··å÷7Þ}sÛŸ c�þ‚ˆ  r©Ô¸“/¨ÜçˆkÕÛÖÒôÐÏïùq÷ÒúÀ°ç*ˆ™Pò_AQÍ™W•í¸w€5ë\<¿o„²òáÿÈu´ø ¡1*@~K•Œ¨9çÚ’­v°­/>Ñp÷Í-ø­ƒ¼øÝ+åzºS/‡ F~gy,3r\ͬë³5Sü“ÞÎö•�ÝÑ7Eéª{#8n˜wÒ÷UѵlQѸÚÄG¨ùªp┚97V� ðNæ}í] ÜèÇ:t/[ T Né�‡²[n?é¢[U kQ8nR€ué^¾0Q*@þ)ÛißÚ97fJˬ™�K¬�®¥ %K¿€BˆFAÑ„/]^¾ó~úOÑøÉ}_Z¡»3Àt›¨@”ìQ¢�.)«=ïF•Â@(ª™`ÍLT NBz™ªÑµüÄéL «¿X;¡q*À+œ8eÒÅ·g'ÙñÌ@É Ö*×ÞÚÛeq DG¨C)»åö“.ºµpÔø¦¨F¨°=®R�ø`È”î°Wíœ3¥åR¡=*¬‹Õ_!§~C£üƒ‡�;ù‚TÚÛ% ¸¢ñ›åRéT®7À8ø "ä%0F~ò´ñŸ»H¥08R™Œƒ¿X;ˆ�W À Ê¥RcO¹pÔÇ?`e'o`Í\N²ô D…Ùš3®,Ûqpì¤kÖÛ²2‘*À I•Œ¨™}}É´í ºÂ±µÖ¬§µ9‘*À`ÈŒW3ëú¬} ‘‚Ѭ™‰ DH¨®°vZͬ «Ç"B…µëi1Q�è``e·Ü¾öÜï§KÊ �ìÄ)[Þör `•í´ïøÓ/OeÀ†*À@©ÜƘf§R©°�„ 0 FÎøò¨��6ŠPúY.•ê%{6–PúS*[\sÖÕ¥Ûí6�PúMº¬²fö ÅS¶ ›F¨ý£`ôľJ)?9l2¡ôƒ¢Í¶®9÷º‚ÊQ ?`S•l³ó„¯^“). ýD¨›¤lׯñ²tAaè?BØxU‡?æè³@*ÀÆÈ…0ö„ÙUÌ @¨.S0áËß*ßy¿00„ °aÒ%eκºtÛ]À€*ÀÈT�®™uCvÒ` `}Œ›T{ÞM…£Æ€&T€õ’�:½æœk3åU`à `ÝJwØkÂW¦‹ŠÀ *À:”ïyè¸S/M¥Ó`°`mª�øÜèO}1 .¡¼³\*5îä *÷9" :¡¼“‚¢š3¯*Ûqï0„ ðFÏø’J†�ݱÀ;XvÛU-Ï=†ˆPÞIwgýe§6=üó0„ ðÎR¹Ü’kç,»ý;`Ð `m~qí¢«¿šëé ƒH¨ëÐüø�õ—žÜÛÙ‹PÖ­í¥'ëÎ?®§¹1 ¡¬—Ž7_š7{F×Òú0ð„ °¾ºÏŸ7ëÈŽùL¨ weCÝyGµ¾ütHBØ0½m-õ—œÔüÄ=`À`Ãõt/¼êÌw܆P6F*„å?¾|É € T€�×tÿm ¾ý•Þî®Ð¯„ °IZžºoÁÅ'õ¶µ€þ#T€MÕöÊ3óæÌìnZú‰PúAWÝógÍè\4/ô¡ô�îe úZ¥í�À&*@¿émiª;ÿ¸–ç ›F¨ýª«£þ²SW>vGØBèg©\nñw¿¶ü?¾6–PÄŠŸ^½èÿÎÎõö€ 'T€�ÒüÈ/\vjo†9özIDATgGØ@B@­Ï?Vwáñ=­Í`C€�Ôñú ógϬ™u}á¨ñ†HÇ‚¹óÎ84À”l¿gí9× &&*À€ëZ0wþ¬#;æÿ9Àé^R`Í Ê«¡ †žÆeuçÕöÚó†B×b¡ÂÚ¤GT 2B$½m-ußü̃]×’ùÖ,3ÂD¢#T€AÔݹðŠÓï»5ÀàêZ,TX›Lyu"#T€A• aé.Zvë· "¡ÂÚYú*ÀhøÕõ‹®þj®§'À *¬]Æfzˆ�P†FóãwÖ_zrO{k€ÖµlA®³=ÀšeLT >B2m/=Y÷õc»›–H�õoX+ˆ�P†RçۯΟ5£ki}€ÓY÷F€µJ;õ â#T€!Ö½lÁ¼YG¶Ï}%ÀÀ0Qaír}•’²DF¨C¯weCÝùÇ´¾øD€`¢ÂÚT� @|„ …\G{Ý%'7?qO€þÖñö«ÖÌÙÄ'¡Ä"•ë]xÕ™Ëu}€þÓÕ°4×Ñ`Í *Üö1*@DR!¬¸õÛKn¸0—Ëèo¾`­ FŽ @|„ �¦ûo[xÅé½�6YÇ\¡Â:ˆ“PbÔòìCußÛÖ`Ót¼ùÇkU0j|â#T€Hu¼þ¼93»–Øí–~±.&*'¡Ä««î�ù³Žìp «»qyO£Öe2#Ç >BˆZÏŠÅógÏl{ãÅ®ÝWë¡`Ô„ÄG¨±Ëµ­ª;ÿ¸–ç °�Ú_{.ÀÚ¥3•£¡䃮ŽúËNmzøç6DÛ+¿°V#Ç¥R©ÄG¨ù!•Ë-¹vβ¿:ÀúéíloÿóX+;é!ZBÈ' ?ÿÞ¢«¿šëí °.í¯ÿWèí °V£„ DJ¨y¦ùñ;\vjß›åÖªíO°.#]¢‘*@þi}þ±ºó�ëin °fm¯<`]LT ZBÈKo¾4oöŒ®å‹¬Á˜ãgWì÷ÉP˜ °f®¥‡h  _u/ž¿ú:ÈùðN²7wÒùS¯}tÔÑgŒžà�Ž�€(  �õ4.«;ï¨Ö—Ÿ°™Ò#;aó«îÿåo¿ë½þ^QÍÔDI¨ù­·­¥þ’“šŸ¸'Àš¥2™òÝœô¯7O¾ìå{ ôulõØt‘Å�)¡俞îEW�Ùxß­Ö%;y«ñ§}cÊÕVñ¹tEu`x+š¸yb%T€„Xúƒ‹–Þry€õPP5jô§¾Ø—+cO¹°hòV�áªpü戕P’£ñÎ|û+½Ý]ÖCº([¹Ï›]ö‹‰³n({ß>¹T*0ÌMØ,±* ÒòÔ} V6Løê5™âÒë§l»Ýú]Kë~óÃæßþ²·­%0<NØ<±2Q’¦í•gê¾~lwÓò¢pLÍØÏœ;嚇G{vÁ˜šÀ0Ph¢*@u¾ýêüY3:Í °�Ò%eÕ>nó«î™pæwJ¶Ù9�\¹TºhÜäÄJ¨ÉÔ½lA_«´½ñb€ —J§Gì¼_í×oš|ù¯Ê÷þh(( $NѸI©L&±*@bõ¶4Õ�\ë‹OØXÙÚ-ÆŸzÉ”kù‰S3•£ bÝDN¨‰ÖÕQwÉÉ+»#À&(¨9ê_ØüêÆ}þâ¢Í· $Báx¡Q*@Â¥r½‹¿ûµ¿¸6À¦IU|àc›}ãg5sn,Ûõ€@ž+š8%s<10,,¿ý;�‹ç�;å”»2Ød¥ÛîÒ÷èZ¶°á®­|øç¹¶U�<”Ýì]ˆ˜‰ 0\4?ò‹…WœÞÛÙ ?Žž0öÓ_�rÍÃc>snáx‡G埢É[ bBFZž}¨îÂã{Z›ô“LIiÕAGoöí»&œuuɶ»òDá„Í] ‘*ÀðÒñú ógÏìZ¾(@ÿI¥R#vÚ§vÎ&_qGù>G„Âl nÖ}Aü„ 0ìt-˜;Ö‘õoèoÙš©ãO¹pê5�üÔ3Uc±Ê:½ ¢'T€á¨§qYß\¥íµç €LyÕ¨#>·ùÕ÷�ûÂ7²S§âc¢ñ*À0•k[UwÁñÍÏ<``¤ +ö:lò%·×žsÙ®äRþÎ�HÑf[ nþІ±îÎ…WœÞôðÏ ¤’­ß;ñ+ßžz̓U‡Ÿ*- µ¾_…‘c7¡ k©–\;gé­W`ÕcÇ}ÖÔï=<úøY…®RÅÓ¶ @ô„ @hüÕ÷]ýÕ\OO€–ΖTxÔfWÜ1ñ«ß+Ùîý�¡P¼¹u_�ÜL°Zóãwv7.›pÖ¿¹Z�A�J¥ÊvÜ»ïÑ±à­ÆßÜÔüعÎöÀ`±Aò‚‰ Àk{éɺ¯ÛÓÜ`°d'n>î¤ó§|ïá‘3¾œ9.0(ЧÈBàu¾ýê¼Ù3º–ÖD™²ŠQ;iÊ¿Ý7î‹ÿ'kûÄK—”N°Gò€Pø;Ý‹çÏ›udûÜW ®T¦ b�C&_|Û¤K6âý‡t&0²[í˜J{ýyÀoT€Ô»²¡îücZ_~:ÀP(ž²Í„Ó/ßü»Vô³é²Ê@¿*Ýú½ÈBàä:Úë/9©ù‰{ ‘Âê1£g~eÊ÷óÙ¯ÖL ô“â­v @>*kÐÓ½ðª3WÜñƒC']T\õ¡Om~ÅϹ®t‡½r�M“ÎoùžäǬQ*„å?¾¢{Iý˜f§R©C§lû=ú�‹ç7þ榕¿ýU®£-°á²SÞÝ×~È&*ëÐtÿm ¯8½·»+ÀP+7iì s¦|ï‘QG�‘5!°�JlP�ü!TÖ­åÙ‡\|Ro[K€dJGŒüȉS¾sïø/ËŽ‹ Rò.¡yC¨¬—¶Wž™7gfWÃÒqHe2å»8é‚[&]ú³ò= ˹׭x›÷ O€õÕU÷ÆüYGv.š &ÅS¶Ú7§|÷¡êÃOI—WÖ püf~~ € гbñüY3ÚÞx1@d ªF�>òô)ß}pìÉMÚ2ðOŠße™ä¡°az[šêÎ?®å¹GÄ']”­Ü÷ã›ýŸ_NœuCÙ{?˜sZÝß(ÙÚº/È'B`ÃuuÔ_vjÓÃ?«²ív›xöw§|çÞÊ�J—B(}Ïû�?„ ÀÆHårK®�³ügß ±Â15c�Ÿ5õ{�Œ>öì‚15a+[[8j|ò‡PØx+~vÍ¢ÿ;;×Û bé’²ê·ùU÷L8ãªâmv ÃRé{ö@^q”!À&i~ä=�Ë&œq¥ë®‰\*�±Ë‡úó^k¸ó¦æß݆Ó5¦eïÙ=yÅD`Sµ>ÿXÝùÇõ´6ÈÙÉ[�?õ’)×<4òã§f*G…a BÉv&*�g„ @?èxó¥ù³gv-_]�Ëýª bä¨O~aêµ�Ž;õ’¢ÍÞ­xËí3%N€<#TúGׂ¹ógÙ1ÿÏ�Pщo}åÃ�÷ÞÚÛÑèW{t³oþ¼fÎ�e;ï—ÔãŒK·³î òO¦öÓg AVüìšÀɵ·6?~Gß{·…c‡õñJýnåãw®|àß{W5¶>ÿhã}·ö¬l(ª™š)-ôŸ¾/Úò÷\ñÁÃs!töõv²¶¯ŒúÔ ÇL @^Iív¿… �(¯ÏØ60´2ã¿ü­ò�÷ ô‡Þî®·¿rH÷ÒûÁ\*=b§}«9¶t¸ža5 zÚZW>òóÆ{né^ä³²í÷¬ØëÐä¡I#Tb� ¡õ¹GsínÂÞD}oí/¼âô\WÇ?¡qYË3®|èg½­Eµ[¤³%�~’J¥²§T|à£#v;°·³£³~nèí y¨êÀ£Š·xOò�P�¤*ñhí¹Žù±Ëþ©´“K6ÒŠÿ¸¦íÅß­óÓrmm|¦ñî[ºÍ+7©`x¹;h *F®^h·ÿ‘©’²¾\ɵ·†¼2úس *ª�oìQ�¤±G%6%Ów›pÖ¿eŠ�ºÁº–/zû+Îu¶‡ T¼õûúÞD/ßý ÀhzôW ¿þAW]~pW8~òæWÞ€òËÆ{néZøVˆIfäø©×<€üdé$�¥_ÑÊu´7?þëâ-ÞSè­ýui¸ã¦–§î ý'B×¢yÍ�ÝÑüÄ=!SPT;-•)ô“TAañÛUxTvÚôž•+ú±07QÕ‡>åä=È_&*�4&*‘Ë¥ÒãO½¤b¯ÃkÐÕ°ôí/´{è×_º¬²òCŸ¬<è˜Âê1�þÖQÿfã]?êËÂýE\“.¾ÍuF�¿LT iLT"— ¹–gE¥[¿/ðN–\w^çÛ¯†�”ëêhÿÓsSߘ%S9ºpô„@ÿ)¨¨ñ¾V03]RÖY÷ç\G[ ™‘ãÆ{vò–P�¤*y¡í¥'{šV”î¸w*• ü�–ÿúÝò[¿Kç¼×V>òó–çMeKŠj¦ºñ¦¥‹²%ÛìTuȱ…§v/_ÔÓ°$ ®Ê}?Q¶ýÈ[–~AÒXú•GÊvÚwüé—÷½ž üEoGÛ[_>dð_ÑþU¦zlÕ3*?td¦¼*ÐßÚ^¡ñ®­zêþA»Þ¾öŸ”l¹}ò–P�¤*ù%»åöµç~?]RaÉ¿Ñt÷ÍahfË÷üpõ¡Çgk¦ú[WÃÒ¾_â¦ÖÛÒR¦rÔÔk @>*�4B%ïÖN«™uƒ]Ýísÿ8ïœOƳ®dÛ]«>¶ì}´<¯ßõv¶¯üí¯ï¾¥kÁ›a`TtÌØÏœ€|&T i„J>ÊŒW3ëúaþþÛgÞ9ïµ™‚q“ªöŸQ±ß§2%¥�þÖòücMü{˳…þf(ŽË€IDATÝ$€P�¤*y*U2¢æœkK¶Ú! K+~uÃò[¿bµúzû½>RuèñEãjý­cÁÜÆ;n\ùø�¡«#ô‡¾¼œrÕ=ÈsNý‚¤qêW¾êî\ùØ�ÅSÞ]4a³0ÌtÔ¿¹èª3CooˆVwWÇ›/5Þû㎷^IWŒ*+WúSAyõˆ�ö©:èètiEç·rm«Â¦©:øØÒwï€/{ß¾½í-� æ†Ü†�ÚŠßõÞêƒ� @þ*�4B%Ú_y¶kѼ²�öKüySm¯¿°ø{³òô™ëhoõ÷�wßܵð­‚1µÃþܶþÕ÷óY¾ëþ•û}*UPØYÿf®³}=ÿÃêÃO.žj° I`é$�¥_‰QºÃ^θ2]Tª§­õí3ëY‘�¿†²[íÐ÷Fþˆ]öOe2�~ÕÛÙÑüØ }MX÷çu|j¦`êõO8¢ ’ÁD’ÆD%1ú†*­/ü®ï…o:›ÌVY~ûUm/<’¢gù¢UOÝ×ôÈ/B*U4qŠí+ý(•)(žúîªfoµcOscßo�5}fÙ.ªÜë°$‚P�¤*IÒÓ°¤ùéûGì´O¦¬"$NѤ-[^x¬weCH�\ÛªÖþ³ñÞw-_\8~³‚òª@ÿ)7©bÏCË÷úH®·§³þÍÐÝõŸ0zæWú*1‰`é$�¥_É“®¨®�sSvÒ!qzÛZê.9©ãõBåB(}ÏÕ‡[¶Ã^�þÖ÷ÅÓôàOûš°{é‚¿~$UZ>íúߥÒé$‚‰ $�‰Jòä:Ú›¿£xËí ÇÖ„dI•ïyhçü×»Ì ‰“ ¡{ñüæÇïlþÝݫ׃Õn‘*( ô“¾/ž’­v¨:è˜ìfïênXÚ½la徟ñÞ )LT iLT+S0þ´o–ï~PH¢Å?¸hå}·†DK—”UìûÉêC�sÅÇ@hŸûJ*[œµî ÄD’ÆD%±r½«žº/S1²xÚv!qFì¸w(̶¾ôd‚ÏcÎuwµ¿þ|Ã]7wÌ=S=¦pôÄ@ÿ)¨SP^€*�4B%ÙZŸ{´·­¥lû=Bâ”nýÞ¢šiÍO?�Z½¹#±ú~t]õo4?ò‹–ßÿ6õý�SiǼ¡I#T¯ýõ:æÿ¹lçý’÷7;i‹’wí¸êéûBOwHºžÆ¥-Ï<¸ò¡Ÿõ¶·ÕNKgKÃH{T†‰’mvžxöwÓ%e!qÚç¾RéI ;¶x ŠÊßpõGNÈÖ&ðl7€�#T i„ÊðQX;­vÎ�•£Bât-­¯»èÄîÅóÃ0ÓןU‡[ö¾}œ± T i„ʰR0zbÍìŠÆO‰ÓÓÜØ×*�o¿†Ÿ‚15U]¹ï'91XOB’F¨ 7é²Ê‰ç^[’Ä£ÀzÚ[^þŶ—ž ÃRª¸´â«:äÓEã&€áÇfzH›é‡›\WÇÊÇî(Ùò=…‰{9›.(,ßãЮ%ó;罆¡î®Ž7^l¼ç–ö7_.¨™¼__€µ*�4Be8êíYùø�}/d³›½+$K*�±Ëþ«o yõaXJ…еðíæÇ~Ýüä½!SPT;-•)ÀP�¤*ÃS*äZžy ¤3¥Ûì§tún™Š‘-Ï=šàë שweCëiºÿß{[› k¦el_’N¨@Ò•á¬íå§»–-,{ïS©¤½¤/ž¶]Ñf[¯zæÁ¾ñQÆr�í}åƻop줂ê1 ¡l¦‡¤±™žÒöšpÆUé¢lHœ¶×ž¯¿ô”\ÛªÀ_d§mWuȧËw;Àz0 y„ $�P¡OvËíkι6SZ§£þÍú �ïi\ø™ê±UU¹ÿ‘™²Š�B’F¨ðW…§Ô̺¾pÔø�8]ËÕ_üÙ®s#UT\¾ç¡U>.[35ä?¡I#Tøÿ2U£kæÜ˜È—­=­Íõ—žÒñú �R2}·ªƒ�-{ï’·U Vl¦‡¤±™žÿ/×ÞºúŠ•w¹Jº0Û7=èœÿº¹Ê?ë^R·êww5ÿçoúžÖl‘., yH¨@ÒþNwçÊÇî,š´eòæ*©LÁˆÝîZ¾°ó­Wÿ¤wUSëó�5Þwk÷ÊE5Ó¹a H6¡I#TøG½=ÍOÜ�©Y” ¹À;Y}½ý‚¹Í�þjÕ3¥ ³…5SS™Lˆ›P�¤*¬Iû«èZ4¯ì}û¦Òé�,ÙÍÞUò®W=}_èé¬YOÓ²–gZùàO{ÚZ‹j¦¥‹K@¬œúIãÔ/Ö®dúnÎú·L_¡¶Ïýcý%'÷67Öψ=>\}ègЧ¼;ÄG¨@ÒÖ©h³­k¿~S"wWw.šWщÝËÖ[ñ»Þ[uð1#vþ�õ`@T„ $�Pa}$ø:Èî¦å}s•η¶a FO¬<`F凎̔Ž*�4B…õ´ú:ÈY7d'm§§½uáå_l{éÉÀJeK*öþhåÁÇf'n†”P�¤*¬¿tIÙÄs®+Ùj‡�8¹žž…ß9«å©û.Béö{VrlÙö{€!âÔ/H§~±þrÝ]‰½2�.ßý \gGûŸž l TÝ‹ç5?~góïî étѤ-R™‚0¸„ $�PaÃ$÷:È>¥ÛíÞ÷CkyîÑT`cô67´>÷hã}·õ®jêË•¾\,B’F¨°¡þû:ÈÎŽ¾—õ!qú¬h³­W=ó`_’6NWGûkÏ5ÜusÇü× FŽ+=! <¡I#TØ8íz.±×AÖL-�¾Ûª'ïÍuw6V*äºêßXùÈÏ[þðhª¨xõõöiÇÈfzH›éÙ ¾²cþŸë/>±§qY ?dªÆT0£jÿ™òª0„ $�Pam¶u͹×TŽ ‰Óµ|QýÅŸíZ07Ð_ ³å{R}èg²µ <çZ–~AÒXúÅ&êiZ¶ê©ûz[W¦ Šv#d¦tDùž‡¶½ú‡îåÞ¤ë'½=�o½Útßmm¯<›.-/JÜñqÀ2Q�¤1Q¡ßf'žqeÙŽ{‡déíìXø­/µ>ÿX ¿Œ­­:èèÊ}>î|0`Ó™¨@Ò˜¨Ðoz{VþQã‹§l$•)(ÿ!]Ëõ�ýª·eeë ÿÙtßOº—öMW2e`c H¡B?J…Ðòû‡s½¹Òmw ’J¥Fì´oHgÚ^~:ÐßrÝ]~±áž[:Þ|9]1ªh\mØpB’F¨ÐïÚ_yvõÉÅ;í×÷ú>$Hé6;Ž›¼êÙ‡R!èo}_+] ßj~ì׫žº?UPXT3ÍõöÀ±G’ÆHé{M8ãÊtQqH–ÖŸ¨¿ì ¡«#0�ÒåÕ•û}²òÀ£ «Ç€õ T i„ ';uzÍ9×&ïÞŒ¶7^\pÉ)½-M��–)±Û�Õ‡Ÿ°�OÀ@*�4B…U0nRíì ÇÔ„dé\4¯þ¢»—- Šì–ÛW|lù®û[¬‰P�¤* ´tEu휛²“’vÁ_wÓòúKNî|ÛQ`ƒ'3r\å3«ö?Òù`À?*�4B…A�.)›pÖÕ ; ¬OO{ëÂožÚöÊ3�A”**.ßë°ª&;qóð?Ò6Po[Ký%'5?qOH–LqéÄYß/Ûõ€À Êu¶¯|ð§+úYøB€�ÒÓ½èª3ï»5$Kº pâW¾]uèñ�AT0nÒ¨#OC¨°ñ–þࢥ7ÿŸ�8cŽ9kÌ ³Ý®28ú~ž'œþÒ…Eào6IãonZðí¯ôvw…d©:`æ„3¿œI5ðVŸVqjX+¡À@Yñïÿ¶èÿÎÎõö†dé{‘=î ßÈ¥R� —Q5þŒ+û’/¬•?&@Í�übÁe§övv„d©Øë°š³¯ …ÙÀ†È…0þËß*tÜ3°„ «õùÇê.<¾§µ9$KÙŽ{מÿÃtYe`½�<âóeÓw ëA¨0à:^aþì™]Ë…d)™¶Ý¤‹o+=1°lM6ˆP`0t-˜;Ö‘óÿ’¥hüä¾V)¬�X+[S€ åÏ IO㲺óŽj{íù�,•£&_xkÉ6;ÖÀÖ`#Oo[KÝyG¯zúþ�,é’²Ú¯ß4b÷ƒïdÔ'O³5ØPB€Á¶à[_n¼ïÖ�8¾tEåþ3¯l—ýG}üó` [*„¥?¸h٭߉3öÄ9£�ù—\à¿e§NÚ7À†* �†_]¿èê¯æzzB²Tú™¾ÑJÈ„a/3rÜį}/]ä¶`c†LóãwÖ_zrO{kH–òݪ9÷ûé’²0Œ¥²%µ³¾_P12l¡ÀPj{éɺ¯ÛÝ´<$Ké¶»Ô^ð“tEu–r©Ô„3¿STãÔf`ã †XçۯΟ5£ki}H–ì¤-&_|{Á¸Iaø}ÔeïyØB€¡×½lÁ¼YG¶Ï}%$KᘚÉÝ–�:= '#öøðÈÃN›F¨…Þ• u_?¦å…ÿ É’)¯ª=ÿ‡¥ïý@J¶ÝeÂ/ ›L¨‹\g{ý7>·ò±;B²¤‹Š'žuuùž‡†¤+Úì]þå» ?"’Êõ.þî×–ÿòû!YRéôøÓ¾Y}D’ï=,[[3û†LqièB€è¬¸íÊ%7\˜Ë%íâÄÑŸ:mì)ÖW_Ž6IDATæR©�8™ê±µçÝTP>LO9‚P FM÷ß¶ðŠÓ{;;B²TîsDÍÙׄÂDÝ�˜*-¯™óƒÂÑ@ÿ*DªåÙ‡ê.<¾·­%$KÙŽ{מÿÃTɈ� …ÙÚYßÏNœú•P ^¯¿0oÎÌ®†¥!YJ¦m7é¢[3#Ç…|—ÎL<ëߊ§mú›P j]uoÌŸudGý›!Y²5S']|{amßÝž aü—./Û~�0„ ±ëY±xþœ£Úþô\H–Âê1“.øIÉ6;‡ü4öÄ9廆P äZ›ë.<¡å¹GC²dJGLœõý²�ö ùfÌ ³«öŸŒP OtwÖ_vjÓÃ?É’.(œpæw*óêEÿêJ9`fHB€¼‘Êå–\;gÙíß É’J¥Æž8gÔQgäÅÅ1*B€<Óð‹k]ýÕ\OOH–‘9q—®™‚1• ¡@þi~üÎúKOîílÉR¾ûA5ç~?•-QR)À`*䥶—ž¬;ÿ¸žæÆ�,¥ÛîR{þ-éŠê• 2¡@¾êxó¥ùsfv-©ÉR©·­%$KÙŽ{×ÎùAª´< ˜ò}ލ�}Cº(Ò'�aE¨�@m¯<3oÎÌ®†¥!YJ޵㤠’9.ô·\*=êè³ÆŸ’À…s@ž*$SWÝógÙ¹h^H–lÍÔIß^X;-ôŸTqYí¹×�<ìø ¡@bõ¬X<ÖŒ¶7^ ÉRX=fò…·f·Ü>ô‡Âñ“'_úSDZ*$YoKSÝùǵ<÷hH–tIYíœËvÚ7lš’é»Mºä§E6 ‘*$]WGýe§®|ìŽ�,é¢ì„3¿S¹ÿŒ°±*:¦æÜïgJG€ødj?}VdÅÏ® ÀßK…ÐòÌ}ÿ.}÷Î!AR©TÙ{? ³­/=¹aw¬¤3ãN½täGOL ÖÝ,ÊD€ábÅϾ»øÚóBâŒúègûªcý??S5ºöë?¬Øë°1¡À0²òáÿ¨ÿÆçz;ÛC²Tîý‘šY×§²ë¾ÿ¤d»÷ovù¯KÞµcˆ›P`xi}þ±ºó�ëimÉRºÝîµçß’®¨^ãgŽ>æ_jg}?3¢2DO¨0ìt¼ùÒüÙ3»–/ ÉRTwáñ=­Í€�'T`}u¼þÂüÙ3»–˜P€ е`îüYGvÔ¿HB6LÏŠÅ}s•¶×ž ¡,×¶ªî‚㛟y000„ l”îÎ…WœÞôðÏ@¨ÀFJ…°äÚ9Ën»*Ðß„ l’†_^·èê¯æzzýG¨À¦j~üÎúKOîílô¡ý í¥'ëÎ?®§¹1Є ô�Ž7_š7{F×ÒúÀ&*ÐoºÏŸ7ëÈö¹¯6�P€þT0r|Çü×›¦ ›,=¢ª|�C*÷ûdvòV€M&T`ãåR©Ò÷ìQùÁÃËvÞ/]Pè'B6FÁ¸IøX_¢ŒèoB6@*[b玭 ÄA¨0줊ËJ¶y_É6;•n»Kvʶ©t:¡À°�*Q²õ{KÞ½sߣXœDO¨�X«ãä/“q�w„ RP”Ýl«âiÛO›ž�6½¨fZ*• ä!¡@Ë¥ÒÙI[d§n»ºL¦N/Þ|ëTÆ_mIàOsòI.„¢ñ›õMKúʤxêôì”mÒÙ’@⢖5¡¨vZ¶v‹¢I[ÕLë{ž)) $�P "²€¿* �tyuAÕèLÕ˜‚êÕ�Âñ›õ5IQí²€¿* €LA¦rtAußcì_Ÿ¬n’ª1™¾�¬~2Ú–wÖÎ߬[.•Δ–§ËÊ3eé¾'ó¼ïŸ©Ò™ÒŠôˆŠÕÿ,[ý½#l"¡IS3çÆë”JõÍ4ú¹ÿyÒé¿<ɬþ`:ó×'!Õ÷ÁLº¨8Àà*�4¥Ûîò\:DF¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡DG¨Ñ*@t„ ¡Dçÿÿÿyã[DIDATd=îæ§äÖIEND®B`‚python-django-debug-toolbar-8.0.0/docs/_static/brand/Square-Light-Blue.svg000066400000000000000000000020051524561404200264030ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/docs/_static/brand/Wordmark-Columns-Black.png000066400000000000000000001037341524561404200274270ustar00rootroot00000000000000‰PNG  IHDR�*ýIDATxœìݘ\UùÇñ7[²›­ ½Ké©¡ RD�ªR¥«ˆXPì‚R¥ H“&H¯Ò H)Ò!²›ÝÍî&ÙÊÿû&þ!l²3çÞ™¹wæ÷yžûÜÙdÊ­çž÷Ô ‰ ÂDDDDDD"PP!"""""‘(¨‘HTˆˆˆˆˆH$ *DDDDD$"""""‰‚ ‰DA…ˆˆˆˆˆD¢ BDDDDD"QP!"""""‘(¨‘HTˆˆˆˆˆH$ *DDDDD$"""""‰‚ ‰DA…ˆˆˆˆˆD¢ BDDDDD"QP!"""""‘(¨‘HTˆˆˆˆˆH$ *DDDDD$"""""‰‚ ‰DA…ˆˆˆˆˆD¢ BDDDDD"QP!"""""‘(¨‘HTˆˆˆˆˆH$ *DDDDD$’*+’–––LJU÷|ÐÇÚ—þ1cÆôñ÷‡kþm†¿‡e:Ï^Ïý;óYÝ944ônww÷¼že""""’Xc¬HTH¶2:Y½•YÞžgý�ÇË]]]¯˜ˆˆˆˆ�‚ )^óñËsÃÃÃÏÍ]l¼Æk]g""""y¦ BJ™7›ú5O³o1"X©µPãÑl""%LA…HtÝÃÃÓ (®1)oeÄruSSÓþŸw,q}�ˆH")¨‰æ}j)6îìì¼ßD$,.nllÜÚbÀýý Å`hhè&"RÂTˆ„{…Šõ©¡ø·‰¤S)5ú�O@‰¿X¬mTüÑ¢{…‚‡ûLD¤„U™ˆ„˜288¸}WWW‡‰¤WðèOd¶½ÿPÎC&ó¹êŠŠŠO±^‹ÌÿÒ–?ã ,n&°Xƒ }§êèèx°¹¹ùïlëg,…ÇšˆH‰SP!’#2C·P;±/ûL$Ý‚k*úúúNííí}Ï"hmm­'ÃýI2ìòçA,c-^KÀxMC¤ÎÛýýýÕÔÔ<î3z[îÎ#0¹ÉDDJœš?‰äæ2Š�M…”92ØÃQ[[[7÷ÓÃ> óÀÀÀ’ßåŸ#*óc;÷ljjÚ×"èééù5“ÛR ðV.ŸcÎfß¾n""e@A…H–ÈPü„ ÂV†‰Dë}0}úôi”èÿŠ{lEZŒ,Î!°h°ؾ—gÍšµ!Ûvóhïå=,ßdŽ2‘2¡ Bdd†Y¦DõG&RZ¢<òÕÉ{÷Ú)å_‹×/Z *+**¾c͘1ã]¶m¶Íû„ü”ÅGtòš•™¼~žõåüß¼gI–ÓMD¤Œmä�––•öJÌ$“°%Ž£–N&I#¢tN•òÐÜÜ|îÉ ¯¯oROOÏû–_ãØÆC·q>T4ÌZ®··wª‰ˆHìTS!²”Ú–Õ�,‹Œö^ö¯Ÿå莎Žß›ˆÍ¾~îdµ­hña`­À¨uût¤À€ûà“ÜëÏYéGaÂjR«sÌV°�$vñoíjíüÿûƒƒƒïwuuyÇûœgIO2jq×dµ ûº1ë�X¯>Òû¼†šÿû'ë'9&OtvvNáŸgXJp_ø~íÀ>ø�Ì‹ñz¯㵯2s¬¼Åë6^¿ÇúuÖwrr>¸žWóIJ9Ÿ·xõð½¿ç\þ¢µsó#ã¼×ÿ/ØÏH3Å�àz‚‹ß@=0Ò†B�!Ï{^“ûÓ¯…c8&ËY~¼È5ð®¹óMH}*¤¬‘HìŸÂ€â¬(…#áõ&Ï�oo")Ã}{Z¦@ ”÷/o)F­ÄòÞlìØ±ï’|/…ã{7c¹’ åË,_¶ª««›äÇ‚—ÿÎC@1û'øÞoUWW?Ïïä\['~ÿÔÊÊÊÿæ! p»s-ýƒó|/¿³´¥Ïï±½S9§ç1 p«ðý฼Áï}ÉdD *¤\u mI‰Ì_,=jHÌ®'Ñ?Òbà³ ³ºÅe“r\‚X y*FÔÙÙù¿·â³\÷A54Iàµ&UUU¯Fí[’£Y.$ zžc·¹Å„Ø0R)6Çb;j:ž+бðþ Wò›°矼†ßý—7–[²<ÃyÞÅŠã±*Ëã<ÏåÏIV ¶.òZ^uÑä#TH9ò6Ó1¹ßÒ£Žʽ¬w³yæÊe¾û×–®‘€$Èë&ø³qþ“EÀµŸº ¢¾¾~ÏÔ‡4ÊѪ^šMšqŒÅ Jpê"|þöÚÎç„ßû û›¨¶+3 Ç“üîV ^èÄyþÇøçöÿφÐ+Jä÷á»#5ñ‹ÛòÉÌ0ÅŰÇø~n,¹ögÿfeNA…”ƒË¦M›¶3ë>K §I@ïõI‹¬ÀøÍÕfîW�Eé‹Ò„‰âg¹VŸ´(}-XõPœ£ËÙÏàL{L"½8Ë»]8?ß$½\ÏbBú¿÷×­tDêSÁñðæNZ±�Ÿ¡àd+c *¤¤ù˜åÔPà/-%H@}bº›­ˆý<° ò^² mmmE¿§¸¿_²’Þ*SZ½…%ß~¤A“(¦½¦b.ÒË8ƒ€+-åCÏ'¸O…÷Ûáùœ¥Çñ{X™RP!%‰ÌÆ0ËÁÔPüÈR„LÄÏH@/ðQ™¬È¼ªÛ‹|wD”¢Ju)±�¾bѲiaÎØ¿¸Ó¯nÒÅçYß7Ï2ÕbPUUõ=K¨Ì¬Ñ>yÙ™‰?ß³˜‘^®Gf’ï8‚ïÚÔJKPMÏÃO²:ÅR†kì"Ÿ”ÒÊP¬Ã|‰$ÄLnê½:::n¶!óîÁÄA– ™6´÷�¸oÃñì2‘ÿWÔ!eµ%ÝÜ7�™9WrF:ô¹BÈL²y¤'öñÚáááëÉôßÅñzg¤÷ø Í øÜ{²|ÖÂlëCÞvww¿hÉpû}é–�j×;ÒÈÀoÄñÙ‘—Ÿ÷>ßu«ë,��ôÇêW&®š úÖ‰ìK´0> ÂرcÿÒÛÛ›Ú¹pB©¦BJ ‰z×ààà§SPø¨w$- ˜ÇºlÛßMÃÍJ2M³pInÞi’KÒ¿ -Omíž���^P@á|2Áööö‹Yv%ýô±ÿƒƒêêêý-GyèSñ2ËFì‹„øˆ<½ )«±sIDATz#ïy”ãóc–µøóûlK¿EàíþÖµ@µµµ?cUgñy�åDökÓ���•9·Íìó˜Y³f-NÀµ¦T,`™nù•só'ž‰ße[óD¿Øç8ë±^Ö�K÷Èr™kÞŸ¿wY|¶¢0.çû!íTS!%ƒDã-Îm))‹Ôκ�¼Ï%ˆ·[q'ñ•WÇ“ÈßÈÃ÷3ü9dR*J¡“l”´DÞQ—ýú´"Ótê £]]]O�ÚˆRâG,÷š’X~˜ËâìSÁ3à�¤Q>äè,ËÍ0Ì_PcãC–ÞÉ6µX j|¾Ä*ç|øp~÷P‹Ç½,dzO��ôŸ” ¿ç /ÿÅâ“øF­Í9~¿)ôD‚#ñš3¶ã»î…_8üfúôé#>ôP{Ðù:Ë,-²È"‹�7Îç�8Ü"âZòQÁ¼æj†• ÕTHI 1|®¯¯oý4<¸—! ðD?ÑÅ\$òÛ“Ùñ„šy[\R:Ø\ÓI­©ˆÒ¦þäЀb.oêHšz¢ån–j+¶÷/_±ÜŠ‘Á|Š‚©Íxù? Ä5µ� –'rŸŽÁ42ÑûLl½ €bAxÿ%|v%̬È̼Æ&ÒdÞ¦¿¿U®åï/  ÑŒ3ÞåXᵞ¯°hç™yœ•R îãa²1%/±t8,JbÖ¢c /W´á�¹§÷ý0‘*Pð!›³Á}¶Ž…™B†è‹éÓC–#¶»šÚ×µ¬ÀÈü=È3`?‹�÷ !C¹³…›D�QNó9ø|)¡ÁÈ<¦mB&ú/ˆ ªÓ3ŽgÜá¬[Åp,–à÷÷µøüÍìÇÖQú÷x�÷À&¼Ì)8�Ï:Ÿº~!¡THª‘x\ÅCt+^öXJPÍ<™’˜‡y9ÑRˆ‡ß—ó1Ù“Eêk�H¢”Œ½³ùHاå-%ͧ[Lø® üµ¯«[�q¼"7U™J/ðù�"�Ü6—÷ ù°çQú¬ý�€bó¸jêÉ�ÿ†ó¼Å'ë>œËc¢Œ~ÈçÿÊöïb†±�Ë‚ð¾9|ç#Èç˜ÁV&THš�KâñK—Ï{‡1^޳#¡<ŽàèË&å,)5Q:¶&µ0"hŸ2iK,¸ÇC›e.™Ë›£vÔæóçS:ÿŒÅŒÌäÉ|w‡…Ù —7G�‡� dŸéÓ§¿l1â˜þÚKü-¹ôßý¢…{‡ÜÉ9„wĵüð’î«X³Ü­�Ã{½€)ʇ—pÚï±< 3ýUŽï¿¹ ÒL�‚*Æ‚çwÈÔøÄÞ)ÚGNãù}<Çã À=±Å„ šséÛ‘V *$U¸9XíG@q�¥‰¥'F_·ƒ¦’Döo$–ëÅ]J&¥¶¡Ï’!8¨ =é¶¢”ø +"ï\ê3X>—S³Î(£?qþòáp-O<¸cûr*øÌjÙ¾—ÌêV¼?´ÍýÌÁÁÁc-O<3͵ðS^F-À˪)Ç{×Ð27o �¯àÊqOžË±8Œí˹Ï�?+á#'^j%NÍŸ$Mº)5™œ²€¢Š€âz+±€b.Ÿä§ªªêj,;‰˜,T”šŠ¤t>\ÖÂõš|ˆ´jU2N7s_Gé3Õl’©ÑÉ2’X ÌDv£âXolá.ìêê m¢• Žþ`ÑKÿ³-ÀÞÒÂÅÖŸhA8W¿µ@|6ʾ¥†‚ ImTmn‘¦¦6>¢é;y¹›•0KŸ�÷z“4ŠTDš(,™Œ[”®š%Þle»L\Îë繟?c�Vçt>¢ô©`[óþ<í¤[]]½x–o ê»âÍ€©¥È{`ï¬Ìê"Ë¿J–M,‡â) ƒ;Sg«½½ýr¶×ÂD&:5ÔüIÒànäm(Þ°”ð̵*wñÐ[ÃÊÖdJN!a�sÄI6~Da%ŠÚÚÚ,Ò•W¬|Œ£�cMÖ«’6­B t/û¿eh3§…È©9S„æO3Io¢Î#0*¶Ï'²Ë¹6�ã›m3°5-€oµÿµàz¹‚ý‰2ÂÖ¨é�íšìShžôb+ /Hù+ËW,Gì›�ŠæýgfZ SP!I7…Ò˜íó]Å'Ÿ•R*(–²2Âþ~›Àâ.ô·™”ƒ¢Žkn%‹€ÌRð8öIÕÔÔä™3Ÿ {YÖË8,ÇëUyýaFqö:OcF¤ûõ´Æ»&›f`^:ôœ`ÿï³éèèxˆ´}0B¦Ô®ÉOX îã{­@ø­P3ŸsPáê—¥¶ã+a *$±H4o!ƒº‡%§Cè¨Ö#Á¹«P£e$Д8­M­Òë&i%Wé¢!+"҈͢dŒ¹Wc׿˜Hs–¯ªªÚÙkøsÞÿOú`sš?…fösB&²mn–‹lFÁ"\2t4@¾ÿ^+¿Ï}2Ä(£T-”ÏÍx(zxÞ*À´þþþ;Ç� >à+¨)‚Ë(´äŒ…?*Jrv$Q¼Ž—c­L±ÿ�<€o°9í„‹^’-¥�ë-J&§�4æ-K!ïPÍj[2)_à|Úÿ-­#UGhþT�þ0¤gÿ³0ãG{ˤ�€ÅQƒ_ÐZ6ÎÓ¿,<¨õYÀ÷ %Ë=àÛU°|ÂŒ3Þ%¨ð~&õ–»¥­Ä©£¶$‰ÄϨ"ôñ¦ÓPJ¢x‹•q@1—¹G¦ç “4ˆ’-j-E}}}+«U-Ü¿,e(ÙÞŒ{ëq^>ÏröÜ€¢LM· 㟷 ¨) .Øe» :ÈÏå©nÔýäûCG“+ưСÇ"xŽ´PP!‰A¢2Ìr0¥‡'ZŠPü˜‡ûù&ó:œãwPI–¢�×ÔÔ|Á" ­ .´ÐVà~ú+¥Ú¾Í¡3]'R„æO…*t ݾl>œëíí-HP5WÄ bT\Û¡VA�ƒ =|n’•8’³Xv& ¸ÐÒc ¥†>9ÒM>†ãr©æ¯H¼4Ϩýe‹€ëó^K¾Z‚‰“ªªª|VãÏY‘ºÒ¤¦†9†-\¡GŠ’yϦ)lPÍ'÷E1ú\ § VâTHÑñðêÜœ€âVKØßÌz“™HõþE&I%X´Ì£�pdKì=çMkkë¤1SÈ4ýÈ¢ÍÅ‘3Òäk‡††B'ìTP‘¥áááàÀ ®®® ¥Þdˆ[-\6ÍŸ‚&ØãsQ¶+÷dÐo²­%=œ¬SP!EÅMö÷ »ººž°”hhhh¢†â–�LF³£CL’*•5Qk}8ÒéÓ§‡Nb•w¤/«±��³ŸŸ´Âê&£{<{’&‡f€Ò\ûUPnÁ™Ìššš‚f¦¹³�w#TPPšÁ�"±è±§ BІó¹¾¾¾õ»»»S3¬#%¤ËTUUyGÉ’jלO$úgX”ü¨R\KkpM}Þ"È ª�HZ¬˜éﱄ¿÷,«ï“¯ØÑÑñ‡Ì?‡Qšô”Ž{§"ø[Ô +ÛÂG’Mó§Ð¹¨ >TèHU|®ÝJœ†”•bñ‰{v-tg³(×¢ Ø›h•ü1{$“¿i’(ÆÈ/f—s,¢þþþ‹,¡(´ø“e7qZÿ!SzéÙK‹G)ØùØð¤­­­MÅ=Í¥¯§§çÔ8M*WYY¹«{¬p6³p£N~Ç1�ÛhÏæe 57’ÏEe�£<¡§§ç}‹GèlÝꈑÎ]ðȇÜGYžy_ÂL­HÞñ;Y˜Z B‡@Î÷è7#ÔÒ¦f²Í(TH¾Í Ó9™€âK�*Š«H;¾iò1>b ˯I`—á¼îE0ñ IYáÞküœ£L§HÏt…6Åùj)N¶dªæžÚÔx¡ ËÎ���O[L¨Z™s¼¡…QŸŠTVVÏ—Â9Z=Ó<7oHçO±è²ê?I`|»…;Šš›Ëù‘cq°â\¥i®` *$Ÿ^ ‘ØŒ‡]¢'™šWkkk=%£·“ìeòd\þËê(‰%XŽokk{ÇDò„ÌÒq”>Náe\Cgžì£íX<­¡‰åYöÏXŒª««¿já4¤l<õ¦1ˆëæwÜ+y™©ÙFàû··è²ê¿K^á6ŽE¿…YŒm=Ýò„€âB›Ó‡%ÄLjTˆD0epppS‰Ð6’Gé\+µ*órk“‘ÈßÁqÙ™@bEƳù§’ŸTЇ Ò,Ï’AøµÅçý���8J\ó‚à©ÑqÆÚñÜ'Þc¥Y�ò¹û»…ó™µÏ³˜y³C®­3-ÙŽô8‹åf DšqiÇŽ3j)cµ�â8þÍæì[ÉÓÍ/±ãº…Ìçæ]]]¡“Ù%…+P:7…Di 7“óx~ÿªÛSê=µ•.=Iiª2ÎÜdd^ôfqÏ$MP|P’à^ >KïZŒØ–Ë9þ5NéDŽ|øm‹À;ùsÿœe1¡Æ~ Š˜ï�«9Q.#�þÁ"`›¯mllŒmXf‚”/xm�E@úS6}35¤¬ÄŠ„è2¡‡ZŠ,Þn»²²òö8F–I;ÎßÛ‡s†††Î¡–)x¶WI�¢Ü§<ô×ñöà™aKWgÙŠ×ÁãI. ×ôEÅÁ¥Ÿ…@¦cS¡èIDAT0tŒ~j9B›d| ¨k8k[4êS‘#o¾F@í}‡Ö³@Grþªyþ~Í"˜0aÂ'¸ïä:Èy˜Û…ÈzN*¶ÿVŽ…½ºª…ǽt Çb¾ë6‹ ©©é«‡ß[4Oò(½×Ê„‚ ‰ ‰l)âU¥$×Yà ™¥‚s÷Ë<Ü®²MJ(‘×VóàO|Á×´O6uŒ%ÛÙm�È@­Ã*òl¤…>Èž�úT„ñš†‹,ÎßaœÇ- ¾Ò—‘Ïþˆï8ÉŠŒíÿ9AÒŸ-Ü8¯ñd.¦¶ýÛ¹ŽˆF¡Çr>ò#ß¹)t©ÊE¥ B"ó ´XJ@q¡¥¥û±ò„«,›rÞî 5Ž´2£ B‚qNã¦Ùžbðä=E0†ðI<‚Ç›N±I¨½‰ÓE¦œÄf?pK²S-iÓîiy.ãI–u-çñ+d–>ÍýýSîïø§Þ½·¾¾~2W{ór—sQ,LÁ&F,5ÔV\Ëy¼Çò3áœï%æþQàJÏkæÔ¬Öï_žÕ?f;dñªç;ëYÏ®•Éãq8š¼Ñ+VfTH�Ì ®[¦¥$0£–Dê:‘�¬Œp®ngù-™�[Ld\%Öü©×›0p­§nöZÎÅß9AAEƪÔ:\æ¥Ò|—÷±xƒïžçû}ŒUòÕ!~ê¨ÁàààWªªª^¶ÒÔO�Ú·“¸ž?ÃË ,Eü™Ë¶Ç6Wš(¨�œùD=}}}ÛöööNµ”ðÉ�x˜ÞÅËõ­<ø�°æuêôéÓÿc"%.ӬϊÇ,….­©©ù�Å ÓœiÙùþÍ DÍŸ"ðÒmžWßä|�f¥#皊¹($ð¾Ogš1¥Á;¸–mÿ$Ýü’«ûˆÀ7NS@á“ø� yF£ä –Dø»$j>ëõa (d¥Rªü"×þÚííí© (\ww·ïCY̺+ GÚí3Cßkâ�¶ß`µ7÷FšjöñìÝ%MstÅMA…d�{újÚ“yÙc)A‰���?Å"ލ‘tœ›G &öåa´‰ð¯4Ç„”‘›H—ÖÍd>R� ɉ–rà(_j®öôV–,ïY˜HÔó\»Ãæ–\ÝÞÇ”GoäÎåi¦›_²u.7¶wîKÍ���[ð€{„—‹Y ò!aY®dÙÄk�ÈT]ašcBʇ�=ÅgYϰ@ §€üÒ€tåP ÀçêL"ó¡Oûûû·æxþÛ€B+ïÛP´máw Û°=/ƒçtÉ£wضÍBæ)5 *d¡>˜ã8܇[ŠPìZQQq'/ë­Äø¨[¬Nfÿ–%¡Ý‡å)#Ü TpeÒ¥‹¬Ä°O?`ÿbV4‚?“®üÉÂj¥'šÄÂ'mã:ßœë¡hi<¿ÝÅjrú𙩠´¼Óvb:²û¹a›Öâø–$ãq‚æ˜�¤¦OEf’ÍËWðþB%ÜÄoØ ¼¹©�÷ë }9,ógΥ™ Ô1‰…·Ïçz؆ór�¿ùÏœµ¸Èô=ZÏ¢Mø ¶ãtÎÍ&lS›Él *dAº}ò(¯r´inn>…€âÜR™&8SStËN$ì«QržÍ™pP$‰ïüȵÿ&«_ ¬Æ=p€Og¥oЛ›²ï'Yñ{çó»;[fþþŸhii‰4²|ÌLÎË^<“¿fÂo�Åo®CìþúÜãzHĈ¡l×tÒ‚=xù9–w­À8ÏS¸±>ÛñM“�PP!#yŸ›f㔵¬" ¸ŠXâÛV¼�øy$\«�p혶ËE"šê¥€™þBË��ø¥�/Y™aßLæîS¨µðŒÙ—3³rÏóïAµ¡^b; •~ÏõàC_jùã“ïys§£çÿž¯ã,AH®cY™cò›ÓÇ*ß|4ѸOÖLÙ¤¿£y*d~¯pƒn“²‘TÆQ2æí=·´”óIYÎfù½Fp’(v�Þ,®uÏÐúòË3üýD'¯Ë—L[í½'L˜°RUUÕq¼Þ‹Ì]“ÅÀçö`u™¤S,S;1/~çu sËI–¢‘Ó"ól>°±±ñ´ÊÊÊcyýE‹×Â…<ûÏe&úfËý{óýëá˜øõ{vSSÓ�\³_fÙØâuûqqÚZnCÑ(dÓ0æp¹™BÉøöic¹¾¾¾µººú‘µ-Å2ñ~K¢å45‚“HÂPz:é̱9~ÌgHÞ 3ªSlx~n@š±#Û㣭ÌzÉl>ç�ny¯—DßÃvý‹íº{aï'“¶ ŸYÁð¹§Ëy¼þBñg Áæ^^;äC¾g]›àýg¸nîïï¿"›~\wx޵ð¯ò\[Ñ ˆü“]y¹ ûç…�¹ŽHæ…~oÜ900p£�Äe’27þ-ÜøÞF±ÏR¢¡¡aJjîÎÌ›:>$,+&ïäQJ‡D¤È’TŒ„gꪤ%Ë“¹\�´eöL¬{Ùf/Ù~}Ö¬Y¯Ï˜1£àíÏ¥°Æ�¿(m‹ñlœÈõ°ç"ËX®Ÿ°ö­¡¡¡vþÿÝ\úXd‘E7n\Hs¸»2ó[ �WKMM��Vî�‰‹_ø¯aŽM¯ßçßßç^}Ÿcó>Ç&‰ÃÖ¦‚š?‰?x.  8ÄR$SRw B‹¥L¦´ð<–³Hlß6ù˜ºººI<Ž$‘ÿ³fi‰7{Á¤¬õöözð0ÕbV[[Ô€çÝ+VdÔ´³j7É;eŽþ§?´! Ø–ÕM^úb)⓱œÙÑÑq±i§555­I‰Ñ·9N_àüÖPÚVÉ?ßDD¤hH�·±ÞGʤlhô§2ÆÍþÕÞDË'µKM@‘v{Žõ>z‡) ø?¯ÍÍÍ÷P<ßÞÙ®Æÿ�õ�&"Rfw#]¼Ä’c/ 0<<ü¤IÙPMEyòWöHã0¥ƒƒƒOSxÝ?7Ó™`>$ìŧ«ùÎÈ"&°ú ËQ,ËŽ4µÿ¶4ÖÉíííwšHq…öTÿAÉ iãR¬.biäuÏêÏYQƒ¼s`ßÅžBô'’äPME™ñöüdÌ7Oë¼$P¯Z‚›ÃøD]>f6ëÅÉ®€â㼃=�ÂÙ<¤Þa95‹‡Õ—L¤ÈBÇè÷4×Drs×[£¿`íµ¸�z?3+j�j¼–Þ¤¬(¨(#>%ç¦}Ò¢SY=n ±}Øû°mËû˜Ù>ã§ÉGð`ÜŽå&jš^æÏ#XÆgùÑÏçð^‘¼àþn°\ï…˜”KJiä�$¶˜÷ßø{Úššù¿ƒ¬À(òšäu,Ûý7“²¢!eËÄçúúú¶ÍŒ ‘z^Ú]UUõœ±oÇtÀæ {І„] ±<½_Ä1<`Ö°@ëCÔ.0‘"á™å…1ëæò®Û¸nUx'YijjÚœZ�,ì=\R÷³|¿Df¶çvËa¼†ŽkqaRE)]JìÊÃ},›–J@á2Í ¾mEà‰%�Ä/Hl—#ÑÜOÅÇ�?~1H?' x‹`âQ Çç÷7‘"i÷ýZ–#®Û÷L$ ~�q½üe´÷y-†>°…×þZž�~†ßñfÒAÍþlNŸeF5¥ï†ööö½Y÷[ "Q}€Dv3+¯íau�ÄŸM#8�ˆçâÚ<ˆŽçå^œ—Ø‚àØ NÒ̦•_£¹ð¼:šÕ–#oSNz±£‰Œ‚kÌ› íb¹{�ëì<ÖÆÑìÖg让©9Éæ4Q æ³¼ç:Áž¤Ÿj*JÛ¹»[‰ŽÄt?V½–'Ìñ÷Ì�°Ÿd9ßP̯Šàî ,WVVþ“‡É¾qŽï«¬ªªÚÝD"hhhXϯQ®Õ«-˦“|¦‰Õw-éÆ=&2 j·°€Â­Júø[–©~]³ã×¹åȃm>û{Š7-b@Áu†Šò¤šŠÅMýíL‡æ’牨'ª/þÔßßfww÷K&“©®ÿË‘^*eùwAògM$@f㧸V—÷¿I#ÿÅÊ'ÿ¼jAŸ©««›H&ëZ>³¹ vm½®®.�Ó/ D@ñIjw}à‘¸ûÎäŸÂµÛÉën^wûÚþ¿Îó‹±,Ͳïk¶xóà���OðÜl3); *JŒ7aµÊk¬|Tp=½ÈúÇï îô÷Áid&LX‰Zƒoe&¦[Ä „óÒÏ÷•°nÉ‘—ârÍ~~„ÿzxxø þïfÖ}¬ëø·Õ¸Ö>Å5··X>ÛAKFMJV-Ï®gY¯d%"3©îù&eI“ß•–<w¥4÷.+/䆿A& xø:‡Xý–ÄðZÖC&óC‰ÚŽ\_Çòz»1#ÍT—ï 3¦fhhÈ›ŒÚ™Qd^Þ¼d…›HÚáÃfUYYù‘ÿˆr™óYe¬d4Õ6§ö $ð½]EySMEéxŸ ×v���O[™âšº—Ֆپ߇„åÁÇíT�à´@ãÈ�}™L×1¼^ÅŠŒsv ­½L$K¤ «qÝ<ͽ^mÂï ö÷÷/ÑÓÓ£9*d¡¨ùm¦æ÷\Ÿ«[ŠqÍ¿FáÞ:o–ÀrîÀÀÀ<ôÿgò1­­­KpŒ|Äï@Xo Áƒw'Éž‡yc! çCƒ* �løˆvÍÍÍ›�Þþ•ëf²¥Ó»i³�BøK(®õ‹¹Ö¿l"óPP‘BÜÌ?ãf>ÑdAÆ’™¨Ñ�°#ã�µ ¬ãy`l)Å=° ç÷MiÁ¹ÖlyÆ5ù®ÉÃL$&\»{sížÅËI–\ço³FíÄÍ&25J‘LSžƒPŒj–Š�ñ!a?K0WMMÍ i(÷ÁgL$ ¤?¡Ær®™«,O†‡‡¿«€Bâæ3¶··/Ëõå3\ÿÇŠŒ{èôŠŠŠÕPÈ‚¨¦"=ú†††öîìì¼ÑD²7ž{íÖ>äÉäz¶{˜HÖ«ªª:…—ÛX |  VßÑÀR ­I�О¼<ˆõ2V >2ù�ãÕ”XF£ "|Ú{VŸáÁõ�‰d¡±±q9:ߢTéËüYg¥§— ¢÷K €àbÝÊÊÊý¹Göµ€þD¤É°œB‰mð„›"Q477oosFéóahW´øÝC É5Wø°·&’ ǃë­���m»»»_2‘QLlIféX®›]yØ”zóÆ ,7‘(ýý«Í À7c½K3÷O÷�¯½å4^ûÜ6¯’ɺ�LÖ-¤Çm&’ÉË“îoÈËUYVcY†kv"×l³_Ç û,ïigåMb_áúþ7¯$X~ÀD(¨H¶gÍšµeooïTY°î'†ðX k[™ðý¥öî ‘¢ÓŒÚ E†éaV;P¨Ã±Œ(3ìà‘>YÒ$ÖVf6aQP!""’ *’éJ`÷fÝo"óÉtÖû/÷e]cåkS‘DPó§ä9×gÕ4‘�ªàžÙ-ÓÄi “Ù8K¶µµ½c"""RTª©H–ïPüÒD2Z[[뇇‡¿bs†„]® ›8-ÇfsVy›@DDD²£ "(}bùbGGÇå&b³GóX¡¢¢ÂGqòñÈ5tê‚y("""E¦ ¢øf²ìA@q›IÙkii™L ñu‰Ï™dcc‘¢SPQ\ï m×ÙÙù´I9«mnn>�õ1,ŸT§œ¬ksú†©�–ˆˆH)¨(J£_gÙ‚€â “²TWW7©ººúh‚ˆÃXZMrÆq«& [mÚ´iÿ6)E@0ñÔÀÀÀvš•µ<566®]YYùm®ƒ½‚eU“‚#¨ø$+9âºý%«M¬H8oï±<1<<üDeeåÒÊé&‰CaÉ1<Ëö°µ··ïªÇD¤,(¨ÈŸn–Ûó�|Ĥ$µ¶¶.Á9>šå«üÙdR4dx<˜»Å$'\»krì¶´"ñÊ<–/TTTÌþ›Ìëü}Ûu9iç­&‰À9Y™UÎ×ICCCuWW—‰HyPP‘^ú¶­ÆÎ/Md|¼d÷XJW?ÇöJ­œŠ/“é‘”ã<.Ãê@ÖR‹2•tô þ¾’´ôa‘D«0‰Û‹,ë+ (9UMMMûP�dy±¢¢â&‚‰É&©Ã¹S¨2Ã9?ŠûvÊøñã3)*u4�æËíí훤%�û“1ñ‰ ëLR�ÃLrU …!ë�;öéÚÚÚÝ5J”ˆHñ¨¦"Ì,–É (Ò�Z‰±¦€¢$.m’«RyLâ^¾§¹¹yG‘¢PP‘#JC§ nN@q—I)Ðä„¥cI“\•Ò$+µ,#°ø¼‰ˆHÁ)¨ÈÅëCCCtuu=aR¦M›öçUS¾–e.3åÕÞ¬ÑDD¤ Td‰ŒçSëP¼jRj7) *d6‹‹·6)Ù¹�íM»»»ÛLJã£&©Çy\Ü$W¥ÔüéC•ø�ÅÚ&""¡ÑŸFAFåjŠýx9hRªÔ¯¢�‘ÓÜܼ÷ë[&Ù ý‰´ñ7¬z,G|®º¢¢âS¬×â”å³sýx‹› ,Ö脉ˆH^)¨Xz§’Aù¶IIx´¶¶Ö$ýȤz(Ù ®©èëë;µ··÷=‹ µµµ~xxø“œ·ùó –±¯%`þÈZ�·EDòLÍŸìå¡§§ç}V¯˜”õ«(�a‹¨­­­Ûç–hoo?œà~IŒïòÏ‘•ù±�{655ík""’W *æCíÄÀÐÐÐn<äÎ4)'ÿ6I=2¥‹šJ¬çMŸ>}ZGGǯH{W$þ©ÅˆÀâ‹‘¼QPñQÝdJ&wvvÞhRVÈļd’zd[Mrå�¯NÞ3¨½ø!iñZ¼~ÑbÀuÑXQQñ‘¼QPñÿÞ#c¹1Åý&eGAEÉPPQ8±ÖTÌ�Z‹g¨µX‡{óN‹Ç7Æ�¯š,‘TäÀ‡áµ °ØŸs{«ETQQq¨úVˆˆäGY<¤n!˜Ø¼«««Ã¤¬Í˜1ã]V}&©Fy¢I¡¢¦b®!‹=-ú(m>dí~&""±+Û ‚€âR;›2’òÿž3I5ÕTä,M3jÏ>È"¢¶â`‘Ø•åäwdxˆ× ¾ÅúÉ¡¡¡‡|Ø]+Ž s�Ë5ÒÒÒâsÌìAช^/Êzq›sOWs þÇúmþ­�×>—É[¼÷¾ÎÎÎ{MR…ûoiÎ㮜Ǖùs±L óâü=‰×ͼ~—×SmΜ5³ïþý¾ööö»L­ì‚ .ÔCy˜üÉDæÃCû$\¿7‘ò\SQŒ "ó»?d©¶�ç€O†W�NÛuuu“jjj¾Èvïßëù¿ÍÛ•eîëyþm‰Ìò‘ÿ#ñÌØkü9…¿o&ƒu‘¥ßx‚‰ƒ9~>×öðý û¼ «e2¯gÿ[ee¥#Ý|þþí<ŽÉc–gœƒ›ù­ñ¹|†àçAâï[ž³.Ë1¹ØrÄñ»‘|Ñi–GPsܾÂr ËšþoówéšçïÅ3å¼NÌœë«x}Úhë455}›kigËßßý–I�r *fq±ìÁʳŸ”¦®®.o¯­™µ¥œ¤©ùÓl>¨†³È0e�Ȱlgy*ÈC­Cï$^îj1a»—cåËçÉÜú�¿á™æ!3-EØö¥X};SãTq¼€z>ïÍâ"Óù8…CÇç³ö‚ßú´ÿf.ŸáZí¶àw<ØÙÒr—·�Jêëë[ª½eÈ�ŸëCXÂ5t?ÁÚiœëFz#ï[ÅŽÅààà8“`eѧ‚`bÊæ (DDÒ�4ý4–(5%ë³äTÚœ-2¶«‘ṉ€âI‹1 ˜™¦¥XNç·Þæ7¿gé0–í=�í~“åhþ®³xmÀq¿‡ãqý"‹,²¸IQü‡€â5‹' ø®Ÿ-8××s==K¿–I"”|PÁsç-J.6 ú ‘y¥®ù“£tò5~ÿn Äg+Èðlmñª!ƒóž9Oñý97»•é‡ñs~û_IÎ\y?2û~l³üÛmìØ±Ïñ{{˜œ÷�ñšjN~eñŽÁõôI‚‹§øÍØÉ]I$îÏõõõ­O@ñª‰ˆÈü†-†àÏÆaxx8Rß82#±Þœ‡å1¾óD–+~w ÎÉ”L³¨j‹WPðÉ3xöçØ¦=Ù¾Çy¹ŠH&غ–ßþ‘IÁdÛfš‰ÒÙœë+XGºÿ¸f5[¥|ðî›6mÚÆ½½½SMDDFRi�æf‹… "jsÖ ,dd6±9™¨¢×° U,?`›î‰y’¿àÑŸØ–SX_ßEi«ÎoŸD)öïLòŽ€bKj àeQæ â\�sýÈøñã³@|GQ KÒ®$ƒ vW···Oæe�‰ˆHìŠÙüÉù¤¥¤õO[ LGÎHÈDíÆ÷ÜÃ’¨ùQØžÍXþá#OY‘Á¼�íø¶ßá7ç›ä ™ùÉœoôóÚÜ) ëŒ;Ö›»‡ÞßEM×Ò®ƒŠs©¡Ø›õ ‰ˆH)»×ÂMjmmÍiŸy‘I=Ä;Šò²ÖÈ‡í¬©©y¬¡¡aE+žÝ-!8‡’ñ=Û$vÔŠmÆê›3c},ÁùÞܨùS4%sð>˜ã8j(7U”&LE/Ñ#ãð¤E0<<¼†  Ø˜Uâç´áøø¼wùMê†^€#8y‘«y`Îuö+¥r­EI<XíM ÅoLDDò®­­­èAiÿKAH¨ñãÇûLÏ׳÷G)$,/µhJ¦IÇâOõõõ‰j®–f܃çp�-m%B}*¢)… ¢›Ò¦Éטˆˆä"Õ¥rdŸ³h–Êñý6vìØ+Y-j)âCÜR»r¢…+™Ò[ïÿRSSó[“ȼc6«¬„¨ùS4i?xïslÜÙÙy¿‰ˆH!½D�Ú’nž�ˆÏæÔ,¨©©É›×†ÌX\td¦Âöz˜Ï¤Ú?3j—„«!¨¿ÐDæ‘æ âj(Ö§†âß&""åjš…kÊö�>C3™¨_[LhÞf¹€åþÜpæÌ™K´··�ZŽóŽ¯Ç°¾ÊbÅ�í?ÝÂäµùûy Ïó×c½¬–:?ü›Ï~þeÞs§Åó&YÖIDATë<“`¨ß$P]Þbâ³ú%ç܃öÕúûû'úuÐ××ç#˜­Î¿oÃ{¼‰{^§ Pó§hª,�¦�ÐlïC šˆˆ„J}³2].ë bìØ±ž!_Ä¢»›Ìѯ)qž jÞ_gåËC,g²Œkiiñ Àò ‹f=Jè÷â·¯¶ €ø™ÅßLŸ>}¤À°—cÑksŽ…z±Ï?Àyðf\‘dáºùã}:::®0ÉICCCÇï‹÷Âó|×Ñ\“#�===ïûÂËçYîa9Î;Û Ÿéý…L%u5\€�½n©€BD¤¨’Òy78¨È̺<*2õøÄZM7Ë<¿¶]P@±3ùÌÅ,+‘ ÿŽEÄ~üÜŠŒçø£¬V'Cÿý#êíí}�ãp�È:|Ç3SͶ ²²òH®£¨“+Îd9Š{auÎiNµP›7ò9¯Ñ;É$QRTp!¯C”:ÙDD¤˜RT «Œ‘Wnðù.oÖAæéz‹€Lø)ûZ4+Q[q�å&¶-ŽÅd·àXÅwlÊw=dѬJmEÐ|åŒ|XÔš¢™Ü;q Dš7„kàǬöà:ˆm^2uÔŽ&�¯–Ò…ëI¾f""Eê›?‘ ¨¶p£¶Ÿ&¾4™¨½-\Û¸áZ ¼¹Ž÷?°hµÜžÿq�^¼=ë~‹®×¿‹cû°EÀ¹=Ä$kÜ~þ³p3¸~·ã~¸Ïbà�zÄûó#Ô§"šTFdœô1çR%ýK‘bHJME�…˦t¤fOdz?G ¹©Î¼ø¾K£4ýàº)5þŸÍå#Ý;ünÜÃ�öö÷÷ïæ5An“\|΢9�ë÷A‹�Åu\§Y TSMÚÞ >©�.‘Ü•BGí|Á™(݉Òô;,øÞŸñýÁótP0·»ÐÐÐÐ>°Å,Ó‰÷[ÈûPú¾©IV8^¹£Áõú ÀY–Üßçû_7)ªRÈŒûxÓ·±g""’‹(µ }– ÁA™�…frëêê&’‰ �Ï`ÖÀÀÀñ–?C,_±@>!^o�Z+uCggç=–'d(ÿÄêq ·�ɨêëëWfµ„…ûªåÏ,îç#-"5Ц$Jø¹&X<äÜ™ˆˆd+JME�%C”a%{öŸ555[X¸«º»»Û-�ÈL?쥿f"ÏÌõ²|o¤-j)BçÇÈÚððp”Y²76÷Cðqâ:½-ßóŠuttÜÄê‹@ÍŸ¢Ië<C`±vUUÕãMMMÛpa½a""2š(™Å8:ÛF2~üøEYÕZ¸ÑÚâofá6jii¹×òŒLPpÉqeeåº6gˆ¼aûžŠ«SîÂðÜ¿’ãííêµÜiví,ø„ÃÁyî(A_.|n—3LŠ¢d‚ŠŒ¹à§466úÈO›ˆˆä‹??bÊ1Dmmí ÞÑJ57°p«d–¼¢@Í"X5Ë÷7â_n…áÍÁþjãy¿ ŸXÏçÁ0Y òWkZïHŸãÜ,Áúûû/§F%8¨Pó§hJ±šg"¥/XD©¶‘…+j@áȬdPòú¢-üû#-)�mй�½ß „Ìkðo�;V³3�‚ãtŒ¸�îµéîîncõ’Ró§hJõà-BBvgssóçMDD$J1w¥€(Í“¼ùÏÂ2¾Q:¥&™½OX~õ´··?f288<Ò×ÒÒ&£ :FÛ{­€ø½¼7·“‘•lDFbYÍrµ&É)M¤ñQj¤û¦M›öÖ‚þ“Úô5gù¾ÐæOÿ‰ðÙœMŸ>}Ê Îñ\K%@FÅýÐÈ1 m2<{z à¡–Õü)𒝿ñIò¨±8ÕDDd~Qj*†¬ˆêëë[-û>#ù×Âþsxx8)£[å ð–,ßz�D™”.ÔT À±˜h²@ÔE™¹>öùI†sù? ¤æOÑ”ÅÁ#òü�ÅUVzÓEDŠ¥¨çÕÔÔD�éú�…ýuuuÉ?/x6z`¬åO§ûTð¹V“Š’Ùæ³Ó­€(L*$š²‰ÈH0öjii¹Ó4IžˆÈ\ižQûËÁh�G`e€ŸñY¼-¨ ™ÉbL�Z*>Ád�Ȩ×L ú:®Qó§hÊ­ä~KŸ$¯¿¿ûžžž÷MdMMM;‘ ld’jÓ¦M;É$[QÚ»¬­üü¸W}hËõ-b†…ŽDMÅL+UUUÙŒâ|£ôŸ@fRÈ0»|.Ÿç» ÷Š×&1<êöuwwÏ¢`ÖBp�ùuð+�áááÖÐù4Ôü)š²kä“äQmþxCCÃ6]]]¯šH‰Ða¬v3I3Ÿ!ù$“l¥²¦‚tü‡‡§½SïÂÞCéjoeeØW|ÿslc›%ßyë÷Àq(xPÁqêÁ¶ÎÈò}Dœ$oØ®|Ö¶ôX B_<ËÕ?¦Hʲ�7Þ²<,ollÜF“äÉ\$|+'õa!Ù ùEÒƒÚæ5¸O# Îçoí=<:CKfq~{{{)ÍêZÒ¾¤Þâ€kbZ–o i“M³ÈHÿóü óB›œ÷…mZÌ ˆšŠÅCk*Ôü)š²­æáÂiöIòxhlk"sî…•MR�ûZAEÆ„¶•€Ï9QÿEÙ¼�Ý|ÃpX׳ÒÜü©¡¡¡`RP¸6«E,̛ټ‰}še¹+T�&˯·-̦V@ÁóרùS4å~ðậ©©i?“²ÆƒoyEŸÌK¢QMEÎRU5G!Ð#ÎMážèîî~1›7ò[ÿµ0˜ÌFáÝ–V d&·²pY���Ï­0V³0Ù¦oY˜‚]6g_¶2)в�È<#IBt�Å &e‹k@µ¥AAEÈ Uõ‡ÖpD1a„•ØÞÓ-º‹³}#¿÷‚…Yµ¾¾~+Á5S\*“­p¶·@œë¬M ›{£ )r¬×±0Y�_ŽÑË€íZÞ î¬(xØ�U�Ró§hTÍ“A¦ò—\Œ‘«Õ%�HHT”€ÚE‹}8OAâ‘Ao©ªªºÍ›­ZDýýý—gû^~ï T]]½�•Ž(Aäžd(óÝ,Ç2™Ö-™å¶ŽŽŽl›º½c¹ÛØØšáÏ×k¤ÑFÃqú§¢Æêp+Œ#-5ŠFN`q=ë’ŸIU>ŠÄ¸”JË–š?å,´OEÁfÓ&M^²¦¦æA/í´ˆØîÓº»»³¾F°p™¸Z2”‘2zÙà7މPƒöhï}×°i[577{¿…I–G¾>aá¾jyž'¬®®n÷x)ó©£ âãvã!v;7¨&Â)/ª©( iÆ3õ ÕÿˆÒgïðì™X‚~j)NÎåýÓ§O™LÊëÀGä9rœåß"ËÞ–‘:æs,Žljjj°<á,ÅojáîÍö�üNÐPô|îs–__´pYcííí�[àв>Ü-×ÀÑ–GÔžÈïDÕTÍŸ¢QP12ïTôÐøñã5) dÔ±²p§š”Ï�WUUMáe\éðÉ===ÿ³Ü]g�|> öci˾w¾ÿ',Wòúu ü6 tä£ÑDíC3‰Rî3-O8ÞO&ʰ­Ïö�CCCÏZï[Bž"_C«úyÿ‚…Ë%h¼ÛùõJAÁŠ–^SÃ÷a©ùS4:x ÀŹFmmí”B‡'Åá*ó™«ýIWÂr Ë›d8ϳ<ômⲸ¨££ãf‹€ ä·ÍgÙÇÇ|X\‹À'kå™ô ˧²xû�Óg<ÃÅñÞÍ¢‰ë:GAÝ­^eej(®‹Ú†´ÜÝi¼¤>Ó\-®šñEø¾kYª-š¬Ï/÷’©¥öÎ�ÃÎ\—þ‘jð2³ïµç…QME4±DŠe`,ËÍ<ä†Êz8BI¥�ÇŒIJ�­„âz{ù‚�JT"‚ –ÈsVí¬po{©ò1éþÅÞ)šklI äµ/ÕÕÕ/qÜ~Åë_´µµuçðñEøÜ7Yÿ4 ­ÚšŒüÖ|þŽØ—ß[q�õÚ(ŽçÅßÊe4.G€´ÁÒ9|ÇN×ÇUÓ¦M˹ ‚ãx3Ûp€`»Wçw﫯¯ßŽ}�4°çôFVyFv<ÈŽ:@À.\/±>–sp�åˆ}?‚ãø3+ÜÄ‚’…¢å¤Òð@ ñ¹~jR*Æ’°õ¦e¼~Y¨'ÚÛÛ‹ñ€M-®ýrí¯m%ȇÚ0Ó\%2ŽÕ8VWX |Ûø®óÿÈö½2Ò{|´$2®[óÞ]øós¼?޹zø¾Õx†åÔL�çõÙ¬"w‚�ÛÒáÇÔK›É¨ßNMcçHïó>"ü¿·˜Ìû÷µ˜Ô¬<}úôÿXîÆrL¼£Þ½Â>K�wSŽŸ›Ý°¦¦æÏS =Çÿ÷\_Ëå3ÜÞL1r�Sæ÷f¹�ãq÷ԽϛÎqOlksî‡5,"\bª©È™�^ÀÍ´7 W½¦20’ÿG"µ‘Š’¡þ2×,2(“ã (iþ•d$}¬ýàNÁseúCœPUUußéÃtΘï-Þñt½Ì{-.“ãÉÄ&æ>ÉJ_gýujS -y€›½Ó±Å Ó_ç› ø?K¢¡¡!¯­ØÓJ¨Aµ£QD��FfôÑ̘á’R”¸<Íâàþþ~/:‰Òj)DfRí`˘·ÏgµM¾й(ˆð!H/µôèüLH‡äõ$Çâ—�¯³ôZúE-Þ†û.¨ÃzR©¦"¼èVa™R__ûPˆRX^rÅÃæÇd|"©/³üÓ$5(1{É$W¥RMñ"™�µ¹w³àw¾Âï=m)Àv~ia�_Ë ÇbÚÌ™3½ãû ÅÀ5¾ó–~Á5XƒÛ92SP—Ū««£*Tó”†~/�dY—êÝ-I0¯cÑP¥ ÇùzѤÝä÷ª7M²Â™EÍæv¤ ±÷Ûˆ Ûæç=½ƒ¹E”éôÙª-!|ï¼?cÆŒw-FßóùîQ;Y'\¤ÂŽÁ‘¬î²‰pí©‰` *b2f̘–{w5)>›n¦Cþò$R§±¨ÿLeæ#P[Øòâý" ø¬}|ô¤¼ëééyŸ´áÓ¼¼Ç’ÇG'Ú�cs­ÏDöe+2¯¡`ÙÂ;[ôõõ})!Ô, 5#=ËïCŽÁý–�‡Yø… *"PP¯ÚŠŠŠë©±P‡ßãÕÜ,ßbñþ3G³¨ý~²¨éS!óòjWö�¬¸z؆mØžÓ-9Þc{¶¥ææïVdœ£÷fÍšå�×ãV$‹·6åxjÆo>²Quuu!›ŽˆkoO¶å +0~óM®ýõ(þbR4 *ò„Àâ--->BHI�×(úÀgBåa9¹¿¿ÕÌ3´êY"â~SP&ñUýžY`õK2l«q¿ÐÕÕõ_K ÒƒKgΜévÜ`…ç“…}“ ÝNŸ‹_ÐsŒmúðsl›wnßÛ xyŠŸó››yPc’ìÃûVžk¾þ„ßÜÄgIŸ÷xÛr¬ºy³3+ï÷Èï}ŠkÿÉyþYùÛ"ÐAϯý ,nd=Ö¤dy)˜?0 .–æOŸPICÒØÐÐпMJ‰g’OgñÌÒ2ßã>K|àè�€ÙÖÝ}€+@_ ŽÏ¿lN¿’¥9Nùl‚|Îß>�m¼šcóIo¾fyÂwßá#�äyZË(O¹â|î5jlÇE–?Þ?dCŽé�æþC’úx¡+“Ù?Ëòį–/x¿Çj.ÇY€ªªª™&ÁŠÕ’Ù.§Î0SH`¶ÏS ’$OUSSÓÞÇZ�fË-w�//°<ÃßOä{®‰BÉŒx(Çx‹on¸.ç;¯$óZ�¦6<¯Ïfu„刢iAÍÔêêê&ÕÔÔ|�ýð‘ƒ"OžæmùÉÀžÍÏ%ªã<Ï‚eØGOf‚»`™¹X.á¸^:Ò0Á\o«óÏYŽøÞß“~æcfìÙ&L˜ð 2ëG±móg�EÄö^͹>waçšcq¿·½åˆ@¨eúôé©a)E * ç–-y¼mR6HØ6aåÁÅçHà4ƒ}ð€yƒâ²&’\cyæ}†õ¶,Û±¬”í¹¾Ÿ%íø§_ë}¸´ÓØØ¸…0>râìkS¶ŸóZ Vç3W§áÙÊ5°«ÝØî]Ùæ5²üX7ᅥõU¤s·Zº�'Èòsìs…ìÀº1Ûr þÁÊ[~\™ÍDŽ<{ÿ•Ã1þבš¬G  ¢°f�ÊÁ ¡¦e¦µµu ÎýÑ,_Íå¡)Y¹‘Án&’"d¤—%=˜XYYÙÌzéB ‹×f¼MIô½/IRû�äS}}} ¥Ú‹S=‰@c ŽÉ¢‹*^{ ÍÛü{[ÿ{qÏ7Qã–àü/Ê>.–ÙßÖ¾Ÿ™Q«Þ.�ý\ Îu+çzî¾/Êâ5VuìûûüÛTŽ�ç™Þ ™ ž<¦3�S(˜ßZÎ$˜‚ŠÂëæ�±‹Ï`RŽÆRRóe¯gYÍ$2?æAp’‰ˆHÙ›0aÂJÕÕÕ!}°îòÁWL‚©£váÕ�ß©IòÊÖ¬ŽŽŽóȯNfxG’E“íD@p–ØY�ED¤°¨áØÖð(~Ò$E@&¨Ú'É£Ä:o£$ù,nó! W±9C|VàR@Í_^fÉ‘ÑQHºNssó-8âRÜÈ_íma¦˜D¢æOÅw Õmß1){$Ê()ñÑPŽ`YÆdT¯.³¬;û‰ˆH¬ÆóìòÁ–çõã;sô$ò–Þ¬8¨ßª�Î哚SMEñÏ y•é\”=µ££ãÖ>¾ùÞ,‰™7Á >{­ˆˆÌAþåw™€ÂmP]]ý¨!kEÂsó§€Ï=­€":ed€r/SÙRu(E7ä“Dùl°CCCëð÷e$x&#)‰ù DDÒ¦©©i_ò/_šïŸ?A`ñj ¾kF>jG¶gO s£Idjþ” >9U‡Ûuww·™È<|¢(j1ê0–V“Ùº¶IÚdW""¥®¡¡aŪªª§m!“:’§ñfH?¢€ì˳úúúUjjj|TÍI€m]&dèZù( ãã$³lÑÑÑñ†‰|\-¥1°>¦È3!÷É0�ExÙg""R0<‡þÉ3hílÞë8²úéõU–ä'7`õ7–E-ÌMíííŸ5‰LÍŸ†›tÙŠŠŠ)���k™ÈÇõ‘0ÿ‰åSƒƒƒ>lÞß{(/¿Â¶L°hTK# –霻_!Ú#Júµ¶¶Ö{B{Ô<£q”²=y\k""’w^ÃP[[ûl>úõ‘ßy˜•EÛ=ß2¿9‘ÕÒ,ë³,nñY�çÈ &±PP‘d¿ãC�šH–(MòÉ|¾‹-¬Dõ÷÷·vww·›ˆˆäÏ•ðLÙÜJÇÉ'˜ÄF}*R ¢¢âd‚°sL$KÞ!ŽeKJÖ`¹ÈJ¬ïûôŒ ‘‚ê²Á3ä_?6‰•‚Šôøzf’¼*É�Å¿Y¢T)Ñ“ø§©Vî0)ž%»°º×RŽgaçðð°÷£˜i+)â“äQcq'/ëL$>÷ „S2³ údEÿ´tSP!"R`)Ä ñÜÀÀÀVš$od&LøDUUÕu§ßutt\Ä?Í2ù˜ÆÆÆ-***Žáån¬•–}<Ø|Ä�~‘‚knnþÏ�“,EÈt Mîêêšb’ *RÊ'ÉóÙ„¹9^5ù»›Iì>ã¯9NÓx}>Ë™mmmï˜| ÇËGÔ8–åŽSƒ%ß]“MDDЦ¡¡a›ÊÊÊKxn,i çy& cw 0öE“¼QP‘bža&°ØžÀâ “Ùššš>MéûÇæöàX ²ú+Ëo§M›öˆÉHÆs_Äúh–•,¡†‡‡O êd‘bÏs÷W†öê { Ìc,¿%cz5šÌo ‰�9ŽÇ°$®F€‡Ãº���iï""R2¼9-µðrEKï�ÍêÛ$þѤ T”nœ!–/’I¾ÜÊá¯QZrn¶ï瘽M¦ùwdRÏ%“Úiò1õõõ«TWWÇqÚŸ?ÇYñM%€^ÌDD$qxïÏsø[¼\ÇŠëÒY³f×ÛÛ[*#¦‚‚ŠÒò}2\¿°òTG-Åd~›,w3 0þ<00pšÚ[Žl„ Í_ãå,KX‘pžÎ ÔéX‘Ä¢æb9žÇ{³|i´Ö1»kppð;j^ *JϹ‡[™! 8…„ëÛ™Ö;2M£nñ?MæWEIÔÞ™¦QZ� oιyÐDD$x>oÌj–íò`ðÌ~”å:¾ûr �Þ4)¥é‹½­L†ÜÌŒ^ô JµÅç%2°g��½Ð4AΈ8î›ØœQ£>DZ/ĤŒjú$"’buuu“jkk7ååj,« x�ÆDÖ-¬[Gùxïû7ëWX^àýñLðB&=£BAE‰âÆ{˜ˆ}{^öX‰ËL¸­åA¦£×+**N×�´#kmm]‚ãt4ËWHä›-OòÎ"È;ÚDDD$qT”0Ÿ$¯¯¯oÛRî¨ÄuôEVyŸÝÓ;óº.Ó4JÍoF6¶©©éK™¦Q«YÌ*¶àØÿÃDDD$qT”82Áo lÛÝÝý’•ªQ'ÖÔÔü§¶MÉ4�º’×&ÓÜܼƒÍiµç'ŽtFMŸDDD¬Â¤¤‘Ÿ[ªººú±†††õ¬ÄP\X¤ ×¯¨¨ø3�ñë,?ð‘‘L>bÚ´i·±ì488¸ ú0¿½Áñ&"""‰¥šŠò1‹ŒÙdônµ@Iøç (®¶dðc{5B¿Ö�´#ã|MàÆ9;’eËÁÉz]]]Ošˆˆˆ$’‚Š2B¦n˜Õ¡ZŠy•ÕóÙ)8‚»‡‡‡½ßÅM¦!iGRÉùûëc9›fù™ÚÛÛcï£!"""ñQó§2B&®‚å2u?²cÎNh@á¶©¨¨¸‘ ù%–£ø{¼É¼†j¯fÙlhhÈg\½Œ`w¡ýRÒ.2I4ÕT”)2r瓱ûª¥LSSÓædÚÓ4P�gŠ9Þ¿éìì|ÍäcYd‘Åkkk� P¶É4=»Á›F\Üo2’ZÎí¬}HÚ5ý8nwr�ng"""’h *Ê™¶‡ÈèîLF·ÓRÄ›p‘ñ<ÉRˆcþ4Û~¥ï—˜Œ¨¡¡a›ªªªc¸6¯îèè¸ÔDDD$ÑTˆó‹¶M[‹ƒXy­EZûM%À8w``àwÝÝÝm&"""’R *d®÷úûû·‚~”IDATLÛ$y;T\Ç˱–^}aýëiÓ¦ýÛDDDDRFA…|ˆŒm«ÉØ>b)âûUVVÞžà¡rqËo©5ºÁ4$­äAù3sû¯”Ò»¿’Ö}Þ¤$‘ǘŪ6—ÏäzMð�±ÚÀró2éûJ&R‚4¤¬|Èg§f¹·±±qWK‘®®®'†††6à�ð–¥ß–,בÙ{™åØÖÖÖzI82¿ÚŠŠŠë3ýRƒÀâÕ¾¾¾õ ,ž³@p·ËéìÏÛœ‹3ô–5‘„RP!3fŽ ššš~n)ÒÛÛ;•ªë�mN¢RQϹ8š@ïUªÚo ¸ØÚDDDDFA…,Ùï‘‘õá<Ót�ô´··Of}ƒ•�ÌW»VVVÞMÍÅÓ™š¤œÚ ‹ˆˆˆä‹‚ Íþd`o³te` ,vg}®• ŒOyMß›œ›ŸÔÕÕM2‘"RP!£";™ ì M–"‡ÿ¬4MäÜœXSSó&çç’¦¦¦²ÅGDDDŠOA…dkýªªªÇɸ.c)ÒÑÑñkV{W X‰"°¨au`EEÅ3Ô\üƒeOÓ½-"""¤Œ‡äbE2®SÈ´®n)2mÚ´k¨±ð~3¬Ä`lÎr çèU–o±L0‘ûöSVF2s�ìÌË;.že9Ô4$­ˆˆˆÄDA…DB)ø¹dPO±éêêê˜6mÚ¦wZ"¸ø$Ëùœ··|‚ÃñãÇ/f""""(¨�ÈÈ ~› êU–®ëi&�Ŭ/³2Åykõ kkkßhii¹¬±±qm Pe"1 ƒº�Eõ]ùs¦¥Ãp{{û”Ö¿î™k+SÞ”�Õ~•••ûqâõœÇ¿²2)iCCCsþë,O¸¯¾Ê÷ïkaNaûn±G‚O’×ØØ¸Nš&_£TôFJG·aé2™k–¯(¾Ä¹¼•eG™�‚ É—‰•••÷³~�Z‹Í,%¨±ð>>2ÔÛ&A°¸Ë-Ô\<Ïr$ÿ4ÖDDDDLA…äW™ÐFj-î¢ÖbWK ‹÷õõ­ÇËMF²*ËYÔZ¼Mpñ+ I+""" *¤j ,®'z�¥DooïTj+6dyØdDŒÍ¬¾S[[û&çö –�MDDDÊ’‚ )ˆÌŒÎ�ñü©¥„�zIJ/o0Y ÎkËXæü>ÒÔÔ´�id9‘²¢ B ŠŒçZZZ.õ—–ýííí»Scq�ɨ8¿Q+õ‚‹×8Ïßm„‰ˆˆHÉSi¢Ãþd:›©ØÃR2„+Ûz™äWxùs“Q\,Éê•••'rªÿ<88xêôéÓÿc"% ¾¾¾…UkUUU+3¤ÛH#Þ´2@9Ár¬–›û7÷øLîï6Öï—Ûœ6œû¦6¶ˆüp¼å¸²žÊqˤ,‘µ’þÔsN`êèèø—‘‚ ) .þ�Ȥ?@š¸}WWW‡¥5¿hjjz�m¿„¥Ò$ã8V_­®®ös|‚‰¤ñ&\¿[“wÜ‚?—æõDÖGz/陯zy¯ÏÔý˳¼¾g``àΞžžTÎÞÝÐа�Ó§Ù�uÙ÷µø'Àâc3°óžÙëÌ1x's ^æ3÷ø1ðÁ/LrÆõ·4«=YväX.DZ\ŒuÃÜÿŸ÷¸óüŸ÷ü/ÿtÇÐÐÐõ<[ÿk)3a„O�I^ƒ`é“ü¹ËRóü÷0û×ɺͯ1ö·}xxø}Þÿûûr÷7[Ü‹Ës¾×b×g?Åþ¯ÃþÏ{lü¸�ÕVD *¤˜Öç&yœqK2ì©•R€ËÙÞ©¼¼ÑæÌá £{�ó{¢‰¤oh‘ö¾,­þo9”F�ç½ãmNIþƼþJMMͤ÷óÀ¿„ÌõUü{�%X&#ûU–=Ù~ÏÔå²ÿn Þ¿ëµ2ßa™ZÞ‹¼_][[Û;V"ÆTSØèÍΫ8^‹_ÿéù~ϲ-M¬šXûè|;ñl=�ïyŒ¿Ï!ý½ÂÚ*Àï7ˆ]x¹Ûºëq {ÿÜc0wÍgg¯=Àâ:ëñÁUX.äYýË#Ÿ³É‡X·Ü}‰óqÉhoª««›DaÜAüÆ,X¦0ƒ´iöÿ/àZ(z³rõ©�b[‘e 7èê–$wQ*âsYL3Y(ŽÑ %+{órÀDŒZÈÏø@^ÐÁƒû¨¹ET™Œç–¬þD¦ç~ççIìkľ¯ÁrÛù†÷}›PÄÄÓùŸúü?ƒKêëëW1ùŸ(–å8–W9öWÍP„à;6duÇü¿|ï!–œ<ß8îƒÃÙ®—ü~c;IJ©�PdÁ‡±ßŽû× ÿÞcù>¿Ó` BÞჅý?ÛûiÎÕ_kkk§²¿b>c ¨ÁVd *$ ¼J÷‘4 IÚÙÙù4‰Ã<$_7Y˜ŸPbô¬‰$ñ5I{æ~³4`ùUÏï|�ÒUÏ\ÏÀÛd³ÿç³ïÿbÙËòï@jo^`ÿÿœé›’ZÞ§Âr÷±>™Roo.ök–¥-~‹ó½äwžðàÑŠgî·ãÙ†7¸~Çß+Yþ,Êò3~ç-~óg­­­õ–Üû#Ö&L˜0a%±½÷s®>gaTS!’á�îMÓ$y]]]¯ ¬Ïså)“‘<1mÚ´Ÿ™HBùä�<ÄŸ!í)t�†7�ü9™«gHóÖ±"ñÒëêêê—ØÿC­ððßf¾`eŒýÿu¦M¶¥ÑÁø�µ=x$“ýu+0®ó-Ù×¹ßNŽ«0Kuüæ÷©1ÿ/÷ûîVd#ÕT°]¿ô{�—»X4ª©™G-Qü Ü`GXJtwwû¨/›XÜa2¯™ýýýû[9‘ùù,ð¤3Sxù+"2Wk’æ=D&o?+¬1dðnõÒëL[ü¢ð 4Y®à\œc)ìã¥OE¦†èA¾â8+02ÙçpÍ�eâ5\ç÷Îß±¸�øm¯».IseešúhM%3ˆ‰‚ I¢³=r·ô˜A`ñ‹«MfãXHÀõ¢‰$LCCÃzµµµÞ$o=K†±dò.#sqšÆXÒ×Édu”˜ù|�ý¿;iíßGÚüÉû”P2ýT¦AQpÍéMÐ,Ï8¯×xM�%Df®¬¢5=œÛü‰m𦖱=q6GSó'‘8!3I^Z®ÑA‹½yÆüÚÊÇà�‹¿šHÂ�¦l[UUu�›_d…múÛw=/k,O2��ï³èÍ,bç“É|>Êö­4»H[ (ÊÌåSlp¼¯°<á»}į=-y~NáÂ6V$Þ›•×ÜL°£ B’Ì'ɻ͢�Q0d¦�þz` Vê±ÛÏs RÓ|MÊò�XÝiÉ z7Ò¼,ÈDy3§û2#%Õ*lߣ­­­KX‰Ê4ùj¶„`[¾��¦P|ça|÷—,¡(\¸4bçí g¼ÏùBðüw^޵ø©O…ÈÂ�(Mæ!ûPæ�˜ çXìNâQnèö }–u¿‰$ˆÏ½@Z’×qëãÂvîèmÐ-^‹TVVÞãu-ù– ýôšÎÄO0ا"q¼)÷ÈöɈï<Ï’mq®³S-\йç’9ÆF˜@2&jþ$2úXÖ���ËYJtvvÞH‚µ�Åt+ìë—»ºº^1‘ä¹yÞ™ˆ“ÎÛ û0£¾ëÌ̌ةà£q±ÍQ2|’#ŽùEqÍŸÂó:£þ±Ï_e—Óh§†‚ I‹)i{,M“äXxÛåMXÞ³ÒwŠúQHyæÔGY²”a›/‰#“×ÒÒ²ßuˆ¥ Û|,»¿•I¡,Î3ö‘�hĹÛÛbBaÕ3,e9ƒåÇ™ÅGpú[вÏß4‰Mê†p“²6Ñ'ÉãA³ öû-Èhÿ›‡úú¼ôcE+Mwµ··—Ì�xR:H+¶ Íø–ÅŒÌLßÛÆú6§)Ck:ÞN¤Æâ¬ƒ3h>¹ÛxAZéôð½m™c0Èß‹òÚçYˆµYûïíÞWkkkë¶ò¾s…h5ßõ6Þæ\o>Ø@Üíò¿ÞÐÐð'jœŸ°@lWägûù(5ý¿ã»nìèèèZØ{}žŸ´ñX ëy`SSÓQ£ýŽdGA…¤�ÏH{'¥!û‘a¿ÆR€ ÷Û$ÔP%|;®o%„ÄÿUV>û§æ£�¤©"­¸ÐbÀu>ÄÊû$\ÆòWîé3¹Üçë“ÁÙŸ÷ìß‹YD>Ã5…“ù½;-@uuõ‰|G,MZ8ϲ\îÇ€´÷Í‘Þã}WxÏ~¼gÿ8j‡ËW¹¾®Ïö0þ“Õ?¹O|†îëX6°ef°Ž%­(w *$uHªY]í³‚z§hKJ~:XmÎC÷:¶'+ 3vêîî.›~#’¤ßä^[Á""cw?×ùW¸Î_í½Üç>¡ž/ßöß'Cø#‹>ÚÔ¹,«± æò!Jp—eu¸EÄþ¿Ér8iíM£½7lœì û¿ Çÿ–¥-š#H7ïµ¾V8Ö>Üì¡Ï�ö^®·'Yùr<Çè|î$›S“ŒïØÂ;ms¼oÏñ£~ÍygïÐÚ“w7cŸþk¼ðŽÕVO±^)—ϲÏ[[ƒ oúŶ=@`ý iÉ+¤CÓ¼ÖÊ'ÝõÉ)4˜ÄÿMâ=+³¬ÊGz¬ÈTHjq“�Kâ·"‰ß·-úØÖ�ÙfŸÅö`K¹¡¡¡}³Éh‰Á8î±ïZtqÏ^d¹$~ ÷º�8õ¶e3 ÷ ¾Ç·ãü\>DúxR¦&–³ÙO_gYŽ2AÈ�dòNgý5 Ä>T’‘ú‰E+OŽ÷a·?X>Nmmm½œï¸’c¶¹Eãç<ç ‚k.t¶ (æ1ƒkå\ö?׉$7²äx�}øCÿïzzzþ· 7y`Áʶ﵄PGmI5�ãxà^eé �? ñ?„Dã$K·c¨vÎËxú"Q‘‘=4b³Ÿ>–í(ý¼È"ð’{–Éý¡ÿ�\Þì“ܱÿûZ!»9“IDATÞ!– îQPÌcÇÐçí‰:’Ó%>)Þìë-0 øP[[Û;\oÛYôëm[jš–±E²ø§ÙÔÌd¹ ÏZîV¶̇Å}ò-ŽÃâœÃ-, H2’z™vÇÞæ8M“äù{ÛYKJÂ~AÂw¦‰$×ѵp;…öc�g¬·æ^đƭæ}+røˆ×„ÖZ ¶õg¤Q'YL¼6ÙGï±@ì¿çUÙ¯"›]óp½=l�ÆÌq¨åˆß\ÖôõõåT 7Š à³¡¡a5+ž÷y®~šû$×–ÄQP!¥bKŸ$ÏÛZJ�€xÎ�-ZI`¡�GiÚ÷M$¡2ãÎÂy©:µp÷XÌøÞ/°ši�ø|.£@åœ!œçwžö’R‹ßyßÜ/Â;[ ☜Ò!‹ïõÎÛÁ×Ç{Ë]Î-ØÎç)•ßbÂ÷ml*++'Y°½¯³Z‡çêVÔ§BJ†W½VWWO¡Úv nÐ7,x˜ÜJ Éæ$h·³ýÍ–`$~a{¿n" VQQ±‡…{…kü{–ž&Qðá£1…6òj¾:Ú›HO–ç7Ö°>jP)�ÝŸó3ÅûIXî÷ÑŽ2�“K‚g(¹ÞŽ·<È\oßè_0×:^H—i»Ÿ­½¨å˵£vlC¹R›ç#?f8/�ä7Û9^[sM¿m%BA…”ÐeY¦PZ¹Cf¨¹Äó1ÁI¼7% º#†‘Ròåo<üö3‘„ãÚÙñ�ÿ«Ëî¡ßdFéÉyN >Cž©eÃöööÇö¾ªªªÏZ ~ã�qµm iòSìƒw^?À°oŸ±9£%BÔy*ø¸°}–'\o§s½ù(hAM‚8Þ>šÓåÙ¾Ÿß nâçzÏkCÏGfÞ�‚" Ø!†Î鉢æORŠ&Ròÿ¯m-%( z±¯¯oÅç,yî&£±§‰$_-÷Ð:€Ï½E¦èZË32/¿³@lãfY¼'Ê�Õyï+EF*¸Ý8ûuT£XEœ§b*µ WZžqÌζ@ì^Îs>Á¸¦¦¦€¦„O®5Ž2É`R)¨�Rµ‰Äm”Ò¤fÂÞÞÞ©dj¼=è}–Pxé`ÞJoEâBAÂæ™N½9ó¶íV€I£Ì­³IïÙаÿ·ç³–b.¯Aö“-çvSK¯©°pg± Yž±‰¿·pëYùèf,Û±ü”å튊Š_ZD|GÁZîødš¤±÷[JR²2ív¯¢#/mV󤇻�òRôáZIøÈy«ž‰×lè�–ž©ur·8d& *8 MûÔÂþüøñ‹†öÍâs³Â¹ÙÂÔg&õK„(5ÔØäz#ˆëd:ðÀê–œóu|²[ˆ‹(8xžÃÞÅâýÀÒdési©5{šK}*¤¤e†Æ;™„h92È‘g—-�A¶uw¶ù^¥c´Ôšx{Z’ÜëË[®w.÷iy/¥Ÿç÷îc[·´ñ¹öÿcÇŽý¤¾× „ߺ¯²2¤¯öl˱¼n)æ×yý§­@2×ÛÖ9~lv?›3T{ð(RÙàY·Q¦i›Ï ½læ>Á-é¸þóÞ̲XTH¹ðRŽ2_°”ð ˆÒ™×(A=Ù ë>Ž“×PäõA"72&ËÇ5G@VØÆû-Ÿ«¢6b±ÞÞÞ÷FúÿÐý÷Qh:::þeB†ú~2’(çIÙò%´£vèùE&öþÐ ®¾¾~éîîî—,Fuuu“jjjäåv™Ù¿ÇGëž’\2ý\ÿ±!œ *¤l�hí̓lQ2ë>þv�¥úS†^ååålµå ޞؚHú„æTß²üoUUØã—ÏygÔ÷ðß,LA÷ߑּFš¶œåˆÌqbFÈ mþD&¿ÐÇûU Äñ^‚Uä ¢¡¡aE È>Ç!Û–e+_w[ºæ¦Ê‰úTH¹ñIòIÙ$y×ðò~3,�2³èúõ ($•¼$ßÂtZuuuýÏ‘1[Ø$]ufº^Ð1 �šhéWÐãMÉø;ˆë-Òñö~>W”™�cVèã=Àõô›QŽ·õ:vìØWùŽQ'm,ÞŸÆJ˜‚ )K>IÕº�efàLïØ788¸/_±˜�ÀM÷Zм�—.’oÜ×Au7-œÛ4Û:v!ßTËÈw÷šŽ t[s�±9q(±OÓñÎùÞ ˜Øœgë‹™¡^±òwK6"¥(3²Åýiš$χ¡#°ðIòž²ˆ¼M3µë¬Ük"¥!¨‰`fÓõ•z À}»°þ`Ý ûÜŒ‰mME¸…)ÂDk.h¨a¶5§{Š€â0‚‰ðre+ LMŒOÒúwK0®_"%l¬O’GB¸Ÿ¥„�sOͦlw”kb¾+¶Z‘bãžèµ…Îä577/f�¨a]X¦:(Ã]ŒL.™«Ð¶ú©* ÄùhKæÔÈúžòÉè(¢Lî„ë×›¯ÓÞÞž†¡Zó>Áf1)¨�²ç“ä‘^F�Å÷,=fXx‡·Ë,G$À’øn“™I¤”„ö9*è„j܃Á¿Çgß]ȇ¶›_Ü o) ó®%D„µ :,nmmmðõ–mߊoødtV ><˱Ëñ,Ürîdr–¼)£ü? )+òÿ~N¸" Ô!–ÃPËò:AѨ ð ‰þ7Ø¿³M¤4½f¸/6ñ•¨‘ûu+ Ô××÷Ú‚þ� Õùn 0–td³ŽŽŽ­Hg7¶À¶öìãk–Jÿ}ÿ½_Å�Çl«ÀëÂ÷ñÍÑÞマð¾_Xþ¼Ãóë~ã!Öwñ óæU#Ë:Êèh’g *DæA¢u05-dÖ÷æÏ NŸ…FFàû<¤_æåŸò�óqí?Ç~=l"%ŠËÿ5 SÏm¿>÷ÇãVdŒ¶ Ì�ö-hâ;788øïšš Afl V *"ì¿û¯¥Ÿq›�v?`À±ÞÊqO¼6Ú{ªªªþÈ*–ô™¾x“&–ǨPÔr˜ˆu”ÑÑ$ÏÔüIäãv#“~¯…�ù^p”Ü\HiÔî¼ü؈2Þ÷¢¿¿MÞ£€BJ™êg,÷É.V”ê6efÎÙh4tww·³šjaß]�ýwìÿg-Peeeð9Ž[„æOÄäxó,›T°{>§ÂB'jkllÜ�ÕÖ¿uËçyN5²ìâ¿fÉ: ÈmV'1PP!2oá“äùÄ=–$À7z àÜñÈY³ü�z{2m&R⺺ºþi¹gBfãž?Ìæ4IÉ+2“>fh©î¨5 ÜóS,û¿)Äu,Ïø�µý·,ûöL[[[ÐWù¡ù“ïËWX…U+寛ó†ë:êµD�w�Eテ|ÊŸS,µè&›�‚ ‘ðIòjkk§Ô××th¼(H”؈Ö³$ÔÛð÷O­ÄG›™‡_ë¡5r‹655íkyFPq´"MúGï¹Õ±mÇXž‘ ý–Êfÿ )JMûB¹Uó�–GZ¸GFùÿñ,»Y ߟÚÛÛ·¢VâY‹A]]��(¶¾IÑ(¨Yþ¥ª««khhXÏR‚Z‰ &>EÍÅ}&RfȨÜb�¸ß}⬼M®F&ò8VKXŸ�› Ø­Y¼ïz w€×$XžðÝk±}ÁÃwóÙ›,A¢ÔTdüØædÌó¢¥¥åh6q ä�¢öÿáëZøw?ÂsêP‹QMMÍþ&E¥ Bd$Ê UUU�!ØÑD$Ѩ¡»Úq¯/Ë}þ+Ë!‡ÕÏ-P¦bÖhï#£ö¶ç,ÀÜáµ-?ƒ¸ÔðÝá7BóÝìÛVB8K’ñ?Õò€ ¿[{²…{‡„…ö_á| Ü§ß±x�åxž`RT *D²ã¥—7§i’<‘rD ÝëdªŸ¶@dLŽ!°ØÞâ5®²²Ò3ÔÁmèÉ„]™ÃÛ/°@lãêdtf1#í<•ï^ÍqN¯± ÁZ`_ãØìd1ãX_aÑjÝní \“¡ß?ƒûô~‹ÇЛjä§"SP!’%/aóR<2?4I²Hs±p¯ßHÆ:®ŸãI3îä;7´pÿ£Ô8ë ÂÛª³ X¸ï°Í?¶˜�á;‹´ó(‹€ýù­•(®�8FŸ±xŒåÚ½'3÷J°ÁÁÁ?eñ¶ <$çršÅˆc·&×W”Z‰‰‚ ‘‘Xÿ˜®'¸QÛÓŠHL›6í�d\Ú-\-Ëdξl466.GZqwèhGsQ"|šåPJOÒÅo^eðù²ÿ¿³h¥Ý‹xZI†/JgáÙÃb�Ö'Í8ÖÕ#¯ ÿªEÀ±^Ú¯7^neøÐÅ]]]OŒö>¶9t¤µF‹Ikkk½e&‰  B$€O’Gâ}³fH@É]Mx.ä>¿/`¸>÷£ÊÊÊç#ÖP¸÷ÈPŸa9êïïÿ ™Ã¨Í…g?^bÙÁrÄgööÏzZi }×Ê™ôßsÌ ¸Þª¿Ë±~!j EF¶³cO·0u ‘Giò!ß¹Æ=h_Þ$4£¶H ²�2“äíHÉhhâ*"yÀ=ù[îÏC}hh‹€ÏoQSSó"™6Ÿmû.21÷²¼Ó×××6cÆŒw©�h¤&abUUU+ïõQâ&óÿ[óz‚Å€ïþ†eÑA{~ÝÝÝ øLLJYìÇÒ¬neÿÿÃ~ÝÃëÛÉä¿Æ¿·uvvúü7½‚eù¿‰dŠ?Á¿{”mY/c1ð¦\”šͽ‘o>¤lô >Êkµæ¹Þîñcî×jÞ¡6£�ã?ûzãß×åýÛò>_,Opïd5Ø׿ûœs Áþø 9«sq|ÙŸë&hìÈösÊ«³ú Ëž&‰£æO"Ñ­Â’ªIòDÊ%®‘û�¥ÛÝAmÈ-‚žžž÷Ya)Å18�—(}còjL>rõEÄñ¾™Ú§{³}?ÁÀùL—…Û�ÕkeN¦æÓ‹,²Èâóþg]]Ý$‚ˆ5¼ù�¿‡åIùs, (JA…H<óIòHü66I ‹ãÈøüËRÆû"ôöö¾gÊ8ʧ1IDATQƒz1û˜»PË6•múWfŽ–ãYÖ±üÑÀ+1PP!Ÿ$�å^M’'’,CCC»³ê±”ðÚ‚�¨™µyùÌÅ/[z<Éþm WJ5ÃÃÃGpÌ_°ñ¹ ­4”T€X, *DâåCQÞL`q�‰H"tuu½Bæg_KïGáµ+#H‚ý÷μS-ù|we‰2ÏFA”JM»qqGGÇ9 ³³ó>V�[ú©¦" *Dbæ“ä±\@`ñ‘D Ót™'Ÿ¹8ç‘” è€],Øÿ7,|B¿nK®W¨UڨĽx‡ëðYK¶åJ®¹/[™Ê’â] ÀqÐðð1PP!’''¶´´\j*I2O·’yØ&î}ãÀ6�FfÚ›iõ[žXxß’�ø­ç-aئû (Ö§äûuK‰ÀæO½ƒƒƒ[%¤ŸÏåÜûXD\WXd;·EÞø}Í:/J�Id *DòkÿÌ$yµ&"EG&êaVk±üÓ’¡�ŒÐØ®oY¸<Ïo­ÇoÆÚÄ* 2¤g³M[PtZŠ„6š>}ºg~7g¹ÍŠç\®…ý-&ßg.°â™ÁòYÓ-Ì’&‘)¨É3 ³¦Qc¡?E‚ ì[d¨6#t¦‘—V“ Ú˜í¹Ê k&¿éCí®ÆrŸ ûßβÒ£¬|ÌDØç.ÎÁŽìÿ�­Àâ¾Îõ¸ÅŒý9„Õ¹V`Cï3´}fé !nyNçsd©²¡ B$f™Ò«ûXBÂ]Ïr@Ȩ"’Wž±>†õÆEhã>ƒLÐwøý5)œÊŠÄÓ%–­¼;ÇàM+ ~ï¢ÁÁÁ•9WZcÿO"°Ü’—‘‡Γýýý«МgyâÁŠ7AòŒ¾Æ\¿Ÿò&XþG¦(¤i±úúúUL"QP!Ÿÿ�–ý�õ²þ æaáUÁ©ÆR¤q¯>ʽêÍ¡öäþ}ÚòÈKQY~J&rI2A§XBø¬ÝŸ¼ó¶ï Ë#&Vâ÷ò  ¥X`ŸŠ�å»,ïç:\‰cóÍ|¹æ¾Èo¬ßÝÝÚ<(kœÛ 9Ç+òò—ù .üyëû4B?œ cX]]ýY“HªLD‚eJ÷®a¹:ÓV[DÒç2'ײ¾¶©©isòŠ_âõÞ¬'XD¤ìî¦4õ2?žVÌ´dšÅ1ðæ`g677oǾïÆë½X&Yt/°ÿõõõ]2cÆŒ ÑyÊ@Ï�ÓmÎñ߃õQœƒ-,®½XÎ%hôë.oŒ„à¥�Õ÷X~Æ=õ¥ŠŠ Ÿ{[‹î}öé‚–ó ý‡eYË�×\žj¬h£Òøl‰&’N/±\KÕý_»ºº¦˜ˆ”¤ÆÆÆ-É M&s·).Aff¯›ò‘Þó¾ÍiÊò Ë]¤w¥¹D¾¡¡aùÊÊÊumNçöõX>Å1XjAïgÿßâÿ=ã÷2Ë�”�ßÍþ§iâ½Äàú[Žëσ»9¦Ës<_P ëýSXù Ô~¬oç¸ßLûš%Ë8ŒmØ'ïÏ´ÛºëY7-ä3~/½EPú0ï½–}º×$±Tˆd!3üß_Yÿ•RŸÄŒ1."…WWW7±¶¶¶…ŒN i 2Iï{ço+#dx—%ØðZŒ1NmÕÕÕï·µµ%yŒ’áÁÇ~QŽû@UUÕÔ´ÏëAÍÌ‚ OÌ ˜¼É×Ó{\Oï˜¤Š‚ ‘dJÛîæå=^ÚVn‘\¨O…Èÿ#xðâžLuýLDDDD²¢ BÊÕKÞFó^?¨&M""""áTHÉËL†óËì bxxø‘®®®‘X(¨�’AÀðÚ˜1c^eý Ë«™×Ï«BDDD$¿TH*øh >„�rñµ >?Ä8 ½JÍÃ+&""""E¡ BŠÆÇÕ&(hgÝ–Yû8Û¾žÊúÖï0¼ÝÝÝíDR'Œ){E *È,nmRV***ú<�hKódP""""òQE›§BDDDDDJC…‰ˆˆˆˆˆD  BDDDDD"QP!"""""‘(¨‘HTˆˆˆˆˆH$ *DDDDD$"""""‰‚ ‰DA…ˆˆˆˆˆD¢ BDDDDD"QP!"""""‘(¨‘HTˆˆˆˆˆH$ *DDDDD$"""""‰‚ ‰DA…ˆˆˆˆˆD¢ BDDDDD"QP!"""""‘(¨‘HTˆˆˆˆˆH$ *DDDDD$"""""‰‚ ‰DA…ˆˆˆˆˆD¢ BDDDDD"QP!"""""‘(¨‘HTˆˆˆˆˆH$ *DDDDD$"""""ÉÿÿÿÏ pIDATʾša™jIEND®B`‚python-django-debug-toolbar-8.0.0/docs/_static/brand/Wordmark-Columns-Black.svg000066400000000000000000000210251524561404200274320ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/docs/_static/brand/Wordmark-Columns-Coloured-Dark.png000066400000000000000000001065761524561404200310550ustar00rootroot00000000000000‰PNG  IHDR�*ýIDATxœìÝ|eúðgv7 HB*ØûÙ•¢Ø�*Ø{ï½£€w¶+zêyÞ�ž�b÷l§ž½�ž]b¥Ø{„4’É–ùÿXü#†d÷�²3»¿ïÇq6d7;õ�÷ykDˆˆˆˆˆˆˆ‘ *ˆˆˆˆˆÈDDDDDäƒ """""r„A9 ‚ˆˆˆˆˆaPADDDDDŽ0¨ """""GT‘# *ˆˆˆˆˆÈDDDDDäƒ """""r„A9 ‚ˆˆˆˆˆaPADDDDDŽ0¨ """""GT‘# *ˆˆˆˆˆÈDDDDDäƒ """""r„A9 ‚ˆˆˆˆˆaPADDDDDŽ0¨ """""GT‘# *ˆˆˆˆˆÈDDDDDäƒ """""r„A9“©®®¶…òU³mÛmXëÒnYV~þy�[¨ïÁ²?/Y/û9ýY}ݘL&lnnþ¯ –%9 ‚2… £«ïÒË÷Ë­¿AàñYSSÓçBDDDD9à‚ò�Ö||„åýT*õþ²5‚�¯ðš×‘ÇTP>ÓfSc&–é‘HdZ]]ÝÛBDDDD®bPAÁEܲ¬Ùd`™†�é¨Ñ˜…_Å…ˆˆˆˆŒ0¨ Ñäo#ØxAÆ+Ñhtêüùó›…ˆˆˆˆ2 ‚h0RXimÆ+4¦¶··OjiiùIˆˆˆˆ¨C *ˆ2€c–ðò¾†††o„ˆˆˆˆ~Æ ‚({ÓS©Ô¨ÅøO}}ýwBRH‡ÿŽÕŽ’#Ôçhÿ&íÛ�F§á~Z DDJ *ˆ@†èM¬Âò 2Dß QˆTUU=…àx/ ÜOß`{j±¾÷Ó³pð½ëK¬¿ŽÇã3š››?"¢Ä ‚ÈÈéõüªf†‰ÄCÈXÌ¢€ ZP±‚¹¸ŸîÇú¯K@ �è‰D.ÀqÛ?v_ñ÷Øæ/±ÜŒš—8àD.C†"‰Õ‹Ú< Ë£ÌXPP<¨ø™fÔ±�W×ÕÕ]/¹S‚ãu%¶cL†ïŸ›L&ollœ,DD "Dä*d:¢XvÃË;‘ZPYY9AˆÈî§õ±šˆLý×XNÿEñ½OfP¨UQ£ñîÿ}„ˆ¨0¨ ò‚Š÷ÛÛÛÿ*DÁªg2õë`¹5ÝÓµ’øÅøÞ]%Kø âŠÈƒ={öÜHˆˆòƒ "ïÔÖ××ïÐÚÚ:WˆÈM[G£ÑwP 0^<¦‚ƒsÄ\·¢¢¢ QžcPAäÔPüîh¼gM,× QÉÙÈÕÕÕ,í¥0X„LÂ!(qì²t2H*ÀIçT* UUU/ Ã=R ´µµõnii™'ÞêŽm|ÒtW€Š†Åëµ¶¶Î""rk*ˆV%�M‰DbpÈ Í„½€RÙ™n §I´2ÈèûQ0´%þ»à^|@œëV\\|¡‘'Tu@;dÆãñíššš¦KH”••Õ  xMKuu”o¢FpŒ­®“PÌS�Àâ(ܓϊC¸'NvÚ·‚ˆˆ:Æ ‚hȼ¼ßÖÖ6 ¹¹ù d”Ö)**š†<âϵx]ŒÕ8O Øè)Dîò³ k�ÅAX.Îè�µG ¹ŽAÑ/鬷ÃÔ¢¢?J`5 Xw%oÙËÌòòòBôKašQ{a*•:A½r¢‘ëØQ›( 5¡4TK1¸�F`õ$–Uºz/ö¯˘†††›…H–\?/b5B ÄãñjV|†Z·!€và>Ø÷úû’ÿº£0a3R›ã˜m ¿,Hl¿Õ!P«Ãïç%‰yMMMÚñ>ëYÒƒ µ¸[aµ#öu¬·ÇzóŽÞ§5ÔøÝ»X¿ƒc2½±±qþy¡„î ݯݰ:$ójxݯWÃk]—§çXù¯çãõ¬¿ÆúEÜoHžÒs�k{8ösìo/¬{áŸu©ÁÏ5²ä´ÛóÓÇdÖót�åS|î庺º�„²Â ‚h©u. $˜G"¼KT²söUK|Û… Òá—°ÚY Z…Lhƒø Û¼&VYMB·"d/Gp�U§mÜo£�Ñ8T²ÔÞÞ~Zss³+CãvÄÖ±XlwdжAºÐÿôÉžfªfâóÓ°þ72�ˆ‡´� Žë’½‡‘ŽMìèÈ`o�ÕÉØ‡Ã±^M̽¤ƒ`y×K“LMM͸–OÇË£±¯ë‹ì[VwãïŒC õugïÅq½ß³µd çi˜ø5÷Cq=ƒ—û¥'~Äò–»±o u‰A4-¦Àê|<8¯’Áƒø÷H8ÿ.†°Û³±Ú ûý­PÁB:ü2VÃÅ@®‚ …ë<®ã‰åpý¿…kûl>ƒ յȤœ-YÂqÚÇišx¤G�«�ƶ‡eMqŽÕ«X�ÇñzP< L`û³šÛ5Ûô‹ó�ëy3�¤Çá`qW þîÍ8—ËEíÜŠ�q^×ÿß°ŸŽfŠïÀã.®F5µ£_šB Cîy^÷§^ cqLÖo|Œkàj\s· ­ûTPAC"qTŠ N …„W›ÌBB¼«… îÛkÒ¦´Q 1ÔJ¬¯MÁºuëö#Òƒ?zP(üÝ�°<€ ågXŽ—*--í­Ç/?ð  Xòø»ç}ˆïɺ¶ÊMøþ«¢Ñè—j\K¯àÿ¼ m糂ï;ûÿœøTÛ•�ã|ïâ-tÂyþ/ŽñåòÿÏÓ¶e¡Ÿ1¨ Bó92#¼î|è¦=z¬ŠØHäw�àoŸ‹—vH+*$Ùvòÿ™Óf§p;� o[ -‘/**z /7•@šq�[�…¡ýÓ¥Ô9¡“Œbÿ_òz ŠŠ ít¬£´u“ЦuØÇ§kjjÊļµÓý©þ�ž‡)×J±-ÿó3«Aòƒ *$Ó´ÓdCCÃ7(™Ü¸¤¤dšO%Tû!qœZ^^^)D]Èeó'¥�ÄÓ¥•F°ý›HH S§Ã¡>…mÔ$–X Óë¨öÔ48íd^ß`´³ÿÅ£¼Îû‰ÑhônÉ1ìçâ_ùòµFh%8ÿs2@ƒ‡.óóažš€ Ãgêêêåj´š‘Ð’I$èk‰à!öªŽÈ"DÁ7YÌõN—¾ZzݧR2û+H/néÙ³g•Êupê¶Hºù¨«P"8þ¶£&~n¶l™¦8VÁ1ž¢Á�×QØÆÿJ�cPA…àÞúúú½°n“�@â´;ÐÉ:i‘ø ß¹‚™)¬±ÈNš0¡Ä0ç™A\«ïˆ(}õ­�º)œ£û°ŸÆ™vôFz1A åº�p~~‡ôrq ÒÿµpÝ&ùÃQŸ mî´�¶qO\!ŒAå5³5GëK $ :1ÝÓ’Ãþ X r2 Z™ùóççüžÂýý‰8ô&PéÒê!|G"­0šD1ì5Ë ½t3x@B>äñ ŒûTh¿\#Jxœ�Àâ)P *(/!³‘Âr"j(.–A&â¯H@o×Q™$Ç´ª[ ¯;"RN…º”XG_gülZ˜5ìŸÛéW3Òű®]n™+.ˆÅb”€JÏ­“—MMOü9G\†ô²Ÿ™Iü�3ñ·J~1ª©ÀópK¬®”�Á5v§NJ)ÈÕa¾ˆbnêCž–Aæ]ƒ‰$@Òmh'!qßdzIˆþ_N‡”U¨-iÆ}Ó˜žs%kH'Œ>ç‡ô$kŽGzÂ>>šJ¥G¦ÿ%¯:z�ÎÐŒ�›à ,ûˆ™:ämssóÇ “°ß·#ÝÒQíZ;z2ðÛãøìŽ—kŸqë÷X=&†t¤?¬þ!¤ŠT?Œu ûuFTèÖ­ÛZ[[C;Ž)ÖTP^A¢Þ”H$‡, ÐQ-^Z@±œ­±mÿ7KÁT/æ‚ܼÏÑ$—H ÿ—L&×GmíA���ÿ^Y@¡t2Áººº»°ì‹ôSÇþ7 ŠŠŠŽ’,yЧâ3,Ûc4„!1IDAT_´ DGäi]Ùñž7q|.ÅÒ?þ ÛÒ.h»ÿòòò­ÅPIIÉ_±*÷|„å"ì×Àx<¾1ÎmöÙZ¼xñ긶Ҁ Ë-Xˆ·²nþ„gâ°r­y¢ÞØç£q ¶Áz]=XJq�¬—¾æõùû’¸g 㲾Ž5”7�h|‡„sJʵ³ö“öY@ âó’ÛI|º¤ÕñHäŸÄÃwOü˜ÊùÐIÖI Z ƒ í¨‹ý,†�iú=2ÔFF›šš¦#3´=J‰ß�ìkJvÃòçl>àfŸ <nC¥CŽ.–ì¤�ÁüjltÈÒ±MÕb5>Ça•õ:|8¾÷dqÇd,çcŸÞîè—(AŸ£ ^¾‡E'ñ; µ6Çâø]í÷D‚Ñš3lÇĸþ†Àáê tTøÐŠ€ZƒÎ¯±LÇrç*«¬²z÷îÝuÞ‰Qâ®%Lk®J�`Må$†ï·µµ S@�÷:(4Ñt@± ù]‘ÙÑ„œy›TP:ظ¦ƒZSá¤Mý¦Å2ÚÔiêE’½þXŠ$°½ÿA@qŠdPü Ì(˜Ú /C¸¦¨åqÜ'Ç ™è#L _Y@±2xÿÝøìF˜IŽ!0ÓG“ýiÿ™öööMq-ÿi%E‡.\ø#ŽÅ™Z{¡ù qfu<3Ï• ‚òA-&; äÅ•‡~@IL_”bLÃË %DðÀCæïU<ŽhŸd(÷s½Q`”Õ|:_Ši0²œ¹ˆvD&ú?bAU£f8žng„3nƒc±¾ÿqŸû1ÜIÿ­±Ã=°#^fœu@g�]¿S *(Ô�x<ˆ‡è0¼l‘�@5óH”ļޗ½$„ðð;Þ‹Éž('B_ë„4ÀIÉxÎ;›wû´¾@Ióµâü-£üj_7Ÿáx9nª²k?! äVM=2äWãüŸ/îɸOÎåX'£âó�`û÷ÃØ.£AhßüÍ7Ä�Î1GK�`PAav#�Ã$D�¸¬Æð²»„Ês/TÈ‚RSá¤ckP #Œö)�¶¸÷¸i³Ì5³y³ÓŽÚøü­(�Ÿ%.Cfò üí1³m6ov:‚’Ã,Xð™¸ÇôŸZâ/îȦÿî±bîä œ|¾#-¨±ÐQÑŒÓ œß‚ *ØQ›B �ffÎGâq•„ªÄÏÃê $0yÑ'AÛÞVTT|�ó)Ba•µó.¨À½¥£MËîSbkóq ¶á “¤ Ÿ3îälB;âŠ7´¤ûA,§Iöúeñ^-`r2ÁáÝ8í“ÄÈLŸŠãû®_š ¢ Jƒ1ãùÒ5>®wŠÖ‘Óðü>Çã1€{bHÏž=«²éÛV *(TpsƱ:ÅÃ"H,51:Cò4Q$²ÿEb¹�Û¥dä'µ m ÆAÒ“f ”ß/9¤�Ku`1€ÏeÕ¬ÓÉèO8¯ép¸â î°}YøÌf™¾™Õax¿i›ûE‰Dâlñˆf¦q-\†—N ð2jŠ„ã½¯i™›6…ö*¸R¸'oı8 Û—uŸ!}V‚Žœx�ä96¢0iF©ÉÈ�1�KžËè$?±XìÔXv1ꔓšŠ t>\W̵ ý iÕ¦È8=�ûÚIŸ©*ñIºFÇ3ÈHNCé‰ìº„c½ƒ˜»£©©É´‰VFPpt‹8/ýÏ´{¨˜s­?ÑÊà\]'†ðY'û *(ðð˜�ªÍ!ajj£#zà!ý"^î'y ‰¥ÎÆû¸P9 *Mæ†tÆÍIWÎ/Òeû"˜¸¯?Äý¼§8€´:«óá¤O¶Õóç�i'Ý¢¢¢Õ3|«QßmŒZ Ï›kge¬îïE±ì(p(f °Ñ¸3u¦êêêîÓa{ÅŒ“a¢CƒÍŸ( >Ç�¼3Šo$$4³ƒZ•—ðÐÛB ÃPdJ®DÂîæˆ!lúüp<Š%%%ˆHW>—ÂÑ…[a½)Ò¦MPÝŠýjÚÌ©Y5grÐüiÒ§ót Û§Ùe]›€ã›i3°­Ä€nj)¾àz¹ûãd„­.Ó ¶[aŸLó¤w‰?´ å,§H–°o:*šöŸY$yŒAÝ4”Æìêu¯›tfT”Ri@±–ìïy,^ƒþ9¡B�Ó€BášÛH@fÉxû ª¬¬Ô̙΄½.Öë#pX¯7ÅëŸ0d—¬=3—د™â�ÅL&ÍÀ´tÞè9�ý¯Ÿ444¼†´=á Óße®É߈!ÜÇ“Å'ø®WP3ŸuP¡Ô¯‹ÚŽ�$�1¨ ÀB¢ù 2¨Hp:„v©¼¼|$8/ù5ZFÝ�§~¨UúZ( œä*5C””B±““Œ1îUWÆõÏ%¤9ëÇb±½´Ö?î¬ãâ/ÿû 6ç ù“if?+ÈDÎ_„e#“Q°®i: þþdñ�Þç:¢“Qª:¥s³Š ð÷�†’Å= Ûå[>aáÂ…?"¨Ð~&e’½µ%ϱ£6‰¿¢ŠPÇ›S@q2Åg¤€ŠetÈ=dzÆ …�“œhNk)ÊÊÊj°ÚT̽'!ƒ’í�po½�—b™¸, (P ÄÈø{6 jÊŒ v±]¾2€çò\1×å~â&—‹a¡M�…ñaÁ ‚‰J ˉ(=¼HBÅ¥x¸ß*´¼Q8.nw¥`ÉiÑxqqñaâÒãáBýV^^¾î§GPª­Ûl:Óu 9hþäW¡“éöeò9ã'Kð• ˜¸$‹é¬ÆŠ��z@Ì„¦†9RbÎïQ„œdÞ3i kTó‰û"}.�ާž’çTPÎááÕ”H$! xVÂCöOc}”ÐÊôBõþ�BAæ$˜³Ì£Žp$Kìãñx ç¼©©©YiÌ4dš.gsqd iò£ÉdÒtÂNJ¥RÆ�Aii©¯¥ÞÈ׈¹Lš?M°‡Ï9Ù.#¸'�¾Ûš×ÃÉ*”S¸É¾ÃÃ}»¦¦¦éåå啨¡˜Š„e¡®ì‡ŒÑIBAÊš §µƒ:é‚ L'±òҗͰ�oc?·5#£{ xBšlš sí—¯¸g2‹‹‹}ÍLãzÌtÞ SFA…iß Ç¢Eòƒ Êܘﷵµ hnnͰŽ(!]'‹iGɼj×ì%$úãXäý¨ä\K[àš:XHªH(´Ø0Ýßc ñ ¾o6VBz¼aCCÃ-é6 œ4é)(8î�bÁߪâ¯LgïH&ÍŸLç¢ò}>(Ó‘ªð¹:ÉsR–rE'îÙ×ïÎfNTTTôE°6ÑÊû\öF:þV(PŒ‘ŸË&.7ˆCíííwJ@¡Ðâ_’ÙÄiN|ŠLéƒHÏ>Á±x;¿ž´¦¦¦2·§9ÿµ´´ü„£Iå¢ÑèNXMÿì$溜üÇÀtn£Þx6¯ë×ÜH:•Žòˆ{î+És *(ž¨««Ó’ÆÐÌc€Dkñ§ÄllêB´’{âñøUeX(0BÕT¥ººúXq>×ô ^“¨…9«¡â"܇ÚwäMdh^EÆísÔD|!45I&“Õ†s(°ùSv¾Ç²®d)=Ùá_ÅÚä×Îfâ!\o_á+&ð9=w‹ð]ÃÄî§/$Ï1¨ ¿Ýˆ€b”„ô݇¥H¨+?`¹ÁÄ�An³NKé0Î&•¦5NôìÙs#lïµ.|õ]@é‘Ò®à8Ý�LÚ­MMM/‹!çMÄ ›UgÇù31*ð¹±ZE û"d™á=Å™. QÓð) ÄÐHñ)¨H—öy=›¶âÍO¾°—:/lEeeåéH¼€¢sÓ�`�ó»–ËP„®ëP<ÊÊʪc±ØsØ^ÇÍ‚ÚÛÛ�¥Rœ¹¢­­­w}}ýNŠ´„<‡çâ»b¦žOÇŠp]ž)ÎdR€ÝŠc1C̪µ)â1|ÇúXí&´)j }�°0T�çp3ű:º«$DPCq5JhnêÎkËÃ&!�Ø æ½øç¸P˜˜ö©ðm6m”^®Y\\¬MwÖ‡°Ý×477²³$ÒãÉüt=ÔLôÃ}øû–––yâÓÙºÙ# 8wÆ#âž-Ó¾„éZÏá{^3%(t09c¸Gç –64“m:Á ‚¼¶™Î‘(–ðˆ! xiÇï„~EG,ÁòO$°ë༂`âU¡‚‚{ìñs–Ò�"5ÓeÚçPKq…Sî©�b@ m°ìÕØØ8S\‚š¡�qŽ·3ìS‘…h4j<_ ÎÑæéæ¹žA:¥8—QÿIÆÏ‹¹Ñ¨¹)�èÈ�8'Š!œ«0ÍÃeŒAyé#$;áaèI¦–WSSS†’Ñç‘"ô ȸ|‰Õhk`9þüù?‘G�Y:¥�ÓðÒ­¡3¯ÐÑv$€<õuÐÄrûY⢢¢¢SҔ͂¦£Ú4F ẹ÷Š'35ëÀøû»ŠsõßE^á9‹v1³¶õZñŠ;di‹P‹È ‚È�i‰Db  Ó6’¾Cé\ jU^ÇËáB?C"ÿŽË^$6DÂ8ÿ”÷³‚Rî ƒ´–ÙÈ üSÜ3/�»Qâê Ob÷§«Ïuâ=¬œ4«a¾"{ÿs:³öMâ2mvˆkk¼¸#Ó‘cyZ !Í8iÇîâ2ÔRœ†ÕÎbÇñ¿²tßòo~rn g�ùÔÔÔd:™�ïPR¸Jç¦!QÚBH-Ây¼µ½½}S»¢$Tzl+�‚ÒT¥»>¸‘‘ùX› ¸=“4‚â‚ÿb1Çt"K:ü¶8 �üqÿL— Æ~ Š×­æDÙŒ4z‹8€m~´¢¢Âµa™¤¦µAâÒŸ‚é›É!eÉUHˆnG&ôd уEÛmG£ÑçÝY&ìpþ¾Çq¸!™LÞ€Z&ãÙ^)8e–oIDAT4rrŸâ¡ß_Ûƒ§‡-ÝË0¼6O²3¸¦ïDPl\úéd:¦cô£–ôIƯ õ0ÎC?q†}*²¤Í×Pkß¡mÄP$9 ç¯ÏßÓÅ�ž={þ×㋸²æ¶ÏI…íÇB‡^ÝTÌtǽô ŽÅø[ω•••§â8Ü,μƒGéd) *È5xx_‚›øR ­*E¢ñ˜Î�™/pîÞÂ2·%D“’cƵÕxð¾à×´N65VÛÙ,†��ê�•ãÙ„‘ê ‰sìSaFkîpþNÃy‚ àt“¾ŒøìÅø—HŽaû/G�ôo1×]k<±?w¡¶ý¼lGDC¡Çz:ò#þ†ã¦T(  UžÈ)ä˜N …ÕÉ(î�A)Ä‘XiÂU�ÍqÞ4xxËu8w¯ mv“ƒyì|�}«Ã}—¦¦¦|ÆÃÜb?ÏÅêq1×™¯Ûq.”3uuuw!Pÿƒ8éLg¾F Y‹sªÍŸÁõñÒ÷•u×s¯3Ô�Àr°Ã6»…[÷`»F9ÊŸ?®¸¸x?ü­ðãˉDâÅ•5ƒÔ&_f4ˆ©ÍÉÄ8öÏ"¸{R ƒ rJ;i5c¨F6@"óg$U‚° ºìû­(‰Çœ(O-Ö¡¬P|!!€íüÒt6aÜË;!=»ipÖ#6¡Dv¸ŽjãrSöÕ4÷G,�ˆ Ò¥ìZ/ékKG™š�õü[/¼îä&¿¸G!82�ðgØGA;ZŸVTT¤Ç¢9}æâw±ôq¨Áº‡Û,(Ô8K ƒ 2†›°7Í®x OÞ“À·!ñ0o:Ä>FB­MœîŽàD²ä�›—�j‘6í¦‘çÒÞÁ²µÀy<™¥Á¸¿/Ãýýþ©ueï-++Û™«CñrosQtÆ·‰ó j+Åyœ$ÞŒ@¸Î÷Ë~ð¹†RóšY5«ÕûÏêK±�‹»Êð7˰^R+ãáqƒ¼ÑçR`T�‘ô ®CÃR˜V‚Dê1$"{HÁ¹zËuÈl<#DËÁuɳæO­Ú„×zèf¯Å¹øÎ…QP‘¶)jîÕRiü-ícñ þ^j¹¿¯ó`lâU‡øå°£¶‰Dâ”X,ö™ä£~z¨}»×óžx¹­„ˆ>s±í®�Æ& *(k:QO[[ÛˆÖÖÖ¹:9¦/áå) :$ì¿ñ€ºjÁ‚Ÿ QžK7ëÓ€â- ¡x<~Oqqñ…â‚ts¦uWø7ñ ›?9 ¥Ûx^ýçëÉY×T,ƒBíë13ÝŒ) ~@�kÁöOâÍOÙªE¾C˜ �Ä ’f4ò> Ð!a‘ÿ‰šÎz} êB¾”*Œk¿_]]]( ÕÜܬûP³îRç�vëÌГ…´Óö7XŠ{# M5ÛðìÝ;Lst¹�Ae ÷ôCxh�ÄË ”øèøÓÄáˆA‡só&‚‰#ð0Z‰ð?8Ç�§�.m�Î|„2$IÈ¡‡ù  æê m Á2GÌ8¦ϵdi`—àjÖ>¦xô:î\f¼ù)S7âÆÖÎ}¡™Ã ¢¢bpoàåj’‡tHX,`ÙQk��©º_8Ç{þû`½PòJ8µäïHWNø\©�c:ôi{{ûpÏ$Ph¥}r¶-xÆ=ŒmØ/�çtñÐض�LæÉ7 *¨SöRçâÁ=JBž‘HäE¼,“<££nauöo]$´‡cyCˆ î�[P*¸1Ò¥;%Ï`Ÿ.Äþ¹2¬¨ÿFºò/1«•î%ä �´ ×ù \9KãñÝMX� Â@:35-í´˜Žìzn°M}q|f 1¨ •KW5ЇËÕ"•••§#Ãý8j)Š$¿|„Ò�3p>ÖDÆã÷œc‚\š>éI6ïM$h¡Èu�Þb\ëš¡Õå#,³ðóô0N^ç•t[íC{öì¹Q,;¯Aæ®R\ s{`5™¤+%];±<|Ï×bæ$,—HˆF ‹ô³ù˜ŠŠŠk¢ÑèÙx}¬¸×Âxö�ïb&ú*ÉþïzýkÁ1Ñëwbeeå1¸f�Dzƒ¸ë)ìÇ]ak¹‘ 9{  †1‡ Í4”Œï¦1–ËÊÊjŠŠŠ^@"ÒOB,Ýï:$ZÚA“#8 jB¯E:sv–Ó’·M�êä7³�Çë÷‹>l‰D´vH‡|ϸ6AûÏàzxº½½ýþLúàºÓÀ³›dßñžkŠ�€ÿÇd_¼Üû§…�ÙŽH¦…zo¼�ÇŸÔ‘¸„2 ‚–À�ÿ n|m£Ø&!Q^^¾Jj^NÏ::$,V:LÞ]”QŽ)¨èž©›"-Y™Ë �¶,� ëVl³–l½xñâ¯.\è{ûsòW�=VEAÛjx6öÂõ°Î/,Ýp-脵ß%“É:üþÇlúXe•UVïÞ½»Is¸—Òó[å ¯êââb=5¸?záXTë‚_¥plæãõ<üû<Ü«óplæáØqØÚP`ó'ÒÏí(N’I—Ô=ƒ¡ZB&]Zx– Hl¿ú•ÒÒÒÞxœ…Dþßœœ¨kHK´ùØGB­µµUƒ‡¹â²’’£ÖxÞ}.9†Z˜:¬ê„<Ç ¢Àᆿ ÅŸ%DPŒÀê)-}‘ÑIŒ°Œohh¸K8‚S‡*++·B‰Ñy8N‡áü£´-Šþ“QÎ =ÞY h)¡‚ÁÑŸ nöSCPh-�Ô.4EzHØ]q¬·ÐÑ;„ůèy­ªªš‚€b~ÔÎvÅúïX#DD¦¢¢b?¤‹wKp"R©Ô;Bƒ5…IG\9 ŒÃ”&‰™(¼n_–é 0ö®x<~-›ït ADO¬NÁ2˺M-‚[Ö‘uuu/ Qn™ödÿAÊ ÒÆµ°ºK^—âY} äj�÷2ì»ØâG" ÖTmÏ�Œù °Î{€ê ps�¨KÇÌÆzud„G1 ø5í`�@a"R?`¹*ƒ‡ÕqB”c¦côkš+DÙ¹×[…¾ÀZkqßÔ~f’#¨A¾L h-½PAaPQ@t”œoöI[]…ÕÛ 8¶¯k?lÛú:f¶Îø)ô x0î‚å)Ô4}†ÏÄÒ#Ã�œÅ{‰<�û»\ àz÷cR.ÊH#/F 1dùÃÏÛŒß� >C�Ö$÷Øîÿ )[ ð@|¿­­mDzdˆÐÓÒîX,ö¾ä°oŽi\– {%‡„]©nxj¿ˆ±xÀl!†p¬OB v»åžYZ³u6ŸÁukãºeáe¤²²rj^éì=¸¤¦`ù“D¦·çyÉbî‹e´†×þêÒÁ¤Š”¿˜Ø†Z,ó% PéfPçIhb‰@âoHl×C¢y$Š_ëÑ£Çjx ]Ž€â;·8 (>”åHà¾ï+YÂu;Gˆ2 ×®—ÿtõ>­ÅÐÀC¶ÐÚ_ñÒï=ñ=ÚLÚ¨ÙŸ,퀢À°¦"ÿ=QWWw(Öí’‡�¨NE"»“ø@k{°‡@âßœ:„çb?<ˆÎÇËCp^\Ç>™H$zsfSrJ¯Ñl ð¼ƒÕ8É’¶)Gz±»uט6Ú[²÷®³›°¾Ã�f·:Cwqqñ%²´‰ª1�å=Û ö(üXS‘ßnD@±¿äi@¡�˜‰U«xÄ^êé!a·Är«0 XQ ÁÝaX^�F£ïâar„›…Âß‹Æb±ý…È�òòòmôŵú�dØtŸ©ÄêbéÆ$!êjF‰Y@¡6Eúx–¹z]c«×¹dIƒm|öfߊÀ×ý8…‰5y 7õyéÍyOQMTÅ]8ü«½½}|ssó'B¿’®®?ËYZ*%Þ{ Aò>Bd =„ñ \«ëëÏH#ßÃJ'ÿ|peŸ)--í…LÖ£øÌ 1€Úµmššš8N?­Š-Q»«�¸Ý?p®ñi¸vñº¯›u-ÿ_§ù¿Õ°¬�e{¼¯J\ ÍƒãñøoðÜœ/TpTäm&‚ÕáxP>,…#‚ëéc¬#áø}ƒE‡;½™#8u¬gÏž¡ÖàœôÄt«ˆOp^Úñð­A X³eIKqqÍÜÁ¯æ¥R©ûñ»§±núÿ¶®µ>¸æöÀÏÕbŸm@âJF�òV ž]³±ÞHòDzRÝ[… '¿Ë/ ñÜ¥¹/IaA^ õ[dŒ‡¯CBøV×!1|ë¤ÐŠ,”¨íŽëël¼ÞÅêh¦:¯7À²Š“ɤ6è²3#Ñò´yÉJ Õ i‡›9:�þâN.s|–+êJ‘,­=È xŽ>Ï€¢°±¦"ÌC†k—ÆÆÆ™R pMMÆjh¦ï×!añàÇí*Žà´RÝ‘!;™®±x½‰äÎÙÃxh"DBº°®›™¸×‹Ä'ø¾D{{û---œ£‚:…šß*Ôü¾‚ëss 1\ó_¡p¯?ž¥�B‹5ùá3dŒGâ^þZ ´³�ù�ÝÕû´Y–ãñø8<ôú•ššš5pŒtÄí@X&�ïB”9óI? ¥Cƒ2  LèˆvUUU;"½}×ÍH §ñ<ݽ¹¹™E�cMEÈ!!š�€b禦¦!m7}3æS;ú]ºcæ²!aÛ„~µ;áøi­Ä�:â’Îãn8‡Ï Q�ü×ñáâ¯E‰Db+¤ÉŸ Q�/º«3$D��exCCÃ7B�ŽiIDATCʆn䑹Ȁâÿ¡´äOX-\öszHاñr«­°Ü& (VT„`â(<ÐÞFM�ÎûqHPŠ4ŽûO]B@qp MsŽc@A&êêêF¡Æý\C¡(ñÇv¾‰gîv (hÖT„×½H€ŽÅ:%ô È _€ÌñExy'J ¯IϾM+ж¼EEEÚ¼I—Õ%$ð ûÁa¨Û“/VA`¡MJ| BqmŽÇµ9VˆÐ è�6ë(„‡I@áZ¿ ×úñB´!„›ù¯¸™/Z™nÈLsHØŽá�µ Xçã�u¢„î�up~¿¢. -ø3®õKÅc¸&oÁ5yš¹×v'àeo \çßc9 µO Ñ Øü)DÒMyNd@ѥŠ(~E‡„ÝÁüKÅÅÅ…9 P¸ö¢ -ø j,7À5ó x$•Jý�¹M'f¬««[×—Îpý©äî¡k#‘Èf (heXSmÉdòÐÆÆÆ'…(s=p¯�„µŽÃïxrÀyÛ„( åååÛÄb±+ñrgq�”�Õ8€ü€‚¡­P t^ž€õ:â™ ù�óÙ”˜ºÂ "tÚ{¬öăë5!Ê@EEÅzx蜃R¥ãñc©äŸVù¸_ä[G£Ñ£p�!ý‰�&OÅr%Jl�'Ü$r¢ªªjWY:JŸC»¡¸ojHF0q¿{+D`Ppxp}�ÇG477"D]@01™¥³qÝ싇M¾7oÜ�ÅÛBäJû`5øNXo„¥ ÷O%î]k3Êz¼Ö¹m¾@&ë d²žAz<_ˆAòúH÷·ÃËM±l†e\³½pÍVéuÜÙgñž:¬´Iì績?ÀëW,O" *‚íãÅ‹mmm�+D+WŒûI‡!<†~R tQ{7Nˆˆˆ(ç8£v@!Ãô:V»# `‡cêPzØÁ³HèdI½±–³#DDDÀ "˜ž@ ì¡X· Ñ Ò�õÎÁË#°.–Â5Pˆˆˆ(Øü)xnÔY5…è—"¸göK7q"´ŽÅšóçÏÿAˆˆˆ(§XS,D@ñw!J«©©)K¥R§ÈÒ!a×+À&N�±„•góQfTJŸ“XŽmhh¸OˆdÉhD"ÅIÇ#çЩ+§M T僊Ü[„åÏ ¼êêê‘$Î@ q P&v"""Ê9¹5/™LîÒØØ8S¨�•TUUƒõX,[²‰SV¶–¥}ÃØG‹ˆˆ(‡TäJ£¿Æ2Å7B©´´´wQQѧa©ÊŽ[²Íêëë?"""Ê9€`bF<ß…³²¦ŠŠŠ~Ñhô<\‡h¦XÈÇþX1¨ ""Ê!>CèE”ªî+KûRPሢD]ûIè�°KæW`3'w¤g¿Wˆˆˆ(gTøÅC(ÇË”PA@ Ñçýtd|uæëµ…\‡ãÚ_ˆˆˆ(§Tøç ¿*={öܨ¨¨è·xy2½«yAÛ6BDDD9ŵ=f/5ª¡¡á&¡¼‡š‰Ý°:ËnÛ7ù÷Ø:Ú¿"""Ê ÖTx ùʃ‘ÙyT(ŸuC�|2ÖgbÙTÈw*¶ÄŠAE–úÖŽù»%öŽ’#(YšcÙ2=eÙÓ–XÓ>Ûa¡ÀéW;f,ÎÖ’¥öTrï†ßÐ"DTTx§�]P¼!”—jjjÖÀ9ƒåTüX)”3Þ5˜{F(KöV8zC%G¬¥ÿ;,‚ÿ•¶-ɼ~cÛRkGå¾YƒÇ?+›\'јÍÑíˆ ƒ oÌAFsÇÎÏOUUUZ²{v*•:™Ù[9åÎÁÆBù`ÜNÇX)9¦ïä1sñúþ¤�|`ö°ë_"" ´ˆ�Û>Æ2€EÞ‰UVV‰€âMd`_Ãr¨BAÁ "Ï  X«±Q+úZßÚÑ_ ãL!"¢ÀbPá"ÔN¼Že»ºººï…òBÏž=«ª««ÿˆåëH$r/‰í„÷ƒŠVX|�Œ„ˆˆ‡A…K�©yµð°£a(++Ûµ·}‡/Dz†P`!Ø[ «b¡¬XvèžÚ<êvÔ\LÇÂùIˆˆ„A… PÜŽ`b/¼l 3«²²r//„ŒªŽèÔ](***6*¨¹ØË;¨µ/DD *œ»ÅI²dtD ©ÕÕÕgaù8‰<…`b¤Pèàܱ T�A­ÅhÓ6Ÿ4j5!"¢œbPáÌñuuu -ÔL…`b^NÀ²‘Ph¡Æp¡ìXVè CXlS‰ÎÜjò™9›oƒˆˆT˜ZŒe$Š»„B µݰ* =ÔT¬-”;|}*:d‰Õ;"‘I}^³»QN0¨ÈJCë‰Ä / åNN˜?ÖÊŽeçÍ$+( (‰$å¿}¦Œ>XˆˆÈw *²€€âëd2¹mSSÓt¡¼P__ÿ>Îk“P>`PQè,‰Elë¡~µ£�""òƒŠ !ã9#�@@ñ…P¾y[(0¨ ¥l¹«ïä1Ã…ˆˆ|à"3µ(ÑØÜÜ<_(ï `|S(ôpWÊVÞ4úËŠâÿÿí7éì~BDD¾ˆ u •‡P‰— ¡|Å~yÀ‚ªªªµp¿~'”)ãÑŸl±¯¶Äj‘lYv‘�²ú`ÝŸ÷¬s½eI±’O#°ØbÆðë…ˆˆ<Å ¢(®Bå<¡¼�Çß,)) ?ÄÚŠAEæŒk*â©äU ¿aŽ8°ÉÔóËŠ­[F%r ¢›Ò£±¹ÈZÃŽ¤nà vÞ&"ò›?­ÜX…¡¥¥eVŸ åö«ðI¬8•‡>teóìa׿>cØ„QñâØš¶¤þ€ÂG�ÊŠ5Ôgòè#„ˆˆ<Å bx Å“Éä~uuuã… ÉB¡—J¥VòE4YäêÄy ¼¶~æÐ‰ÿˆ•¶mhÛr™¸("Ö ÛL;µ\ˆˆÈ3 *~©™’‘���O “Ÿ…žeY5B³L~—ŒÆ=éä=}À- gÿç„eõEpñ±¸Á’ŠdK· „ˆˆ<àâÿÍAÆrS„ ƒŠ¼Á Â'n×T¬è½!ãfÕGûãæ|Q\`‹ýÛ-ßËš,""�0¨XJÛÓ¨¯¯g˜Å "?°¦Â?­ÉbOƒ õÝÀkÍ6aˆCÚ <Ú–ºPˆˆÈ *D¦%‰mëêê¾*Xíííî4³ œBpÈ " 6rÚ3‡Ì9ʶåYqÊ–“Ù·‚ˆÈT ò ‚‰AMMM BmáÂ…?bÕ&jÈ#÷òEd•Åž×TüÌz(+]|mG£´imE¼¥äH!""×lP�€âöúúú½„Iúï …k*²e‡fFmíÀ�9AÂCïD!""×ääwÈx\‚€âR!ZŽö«@IæÖBaÆŽ¸Y±Œk">ô©XѬa^é[;úvK,óÀÀ²ô�zæ3]ï{!B¿IgW¤¢ö$6ýÍ­f‰Ý ±ûÓÛ»ëJ¤D?ˆ-?ØbÍÁï´u2Çhä�x4òš»+9`FŸÑDIÆ×Hß×~»¦$àË6ÁU¹¾pU¬W·-kU¯"¤Í?a3¾·m«Û2G,—HªvÆà‰“…BeËÚQkÇ$¶/®ù�qC®†sŽf{uÜ›½qn«ð–ñosm=Ïú÷€‘ÚYCÆ¿$hT ãx2Š Ñ ’Éä…xpÝ,DCóŠf•Ñäb߃Š%Šb–xÒQmƒ�Œêdx¾tÚîóêé½%Q|,2ȇ‹•Ú&ò‹£fý|ô—{µ^®a-ÿ¯)[ŠSIé7yÌWØúi¨nyzÆ� wJÈõ™yn«¡ýDKk�âÉ~?_‹Ë®ÊŸ×Kþ¿^¬ó‹^@©ˆô­ÓŒ èñoš9dÂ[â±~µcžÆ9è‘Õ‡,yçëOâ±þ¯ž¹®�ˆÜ%YB öäÌaã¯i@-Vò¤8ÇàªÞJÿÍZî|¯�!À�Õ—ÿÜ?-9×"F,ûšw‡Lèt`�~“GŸ‡¿±—d)•’£g Ÿð��‘B *# 8…óÎ~”—ššš´½6gÖ¦Â�b`Ø"gf¼öû¾“ÇLÀ–�C¨ØE<*P£¢µ—HÂÚ7ý¥ÎY²þ·2Ñ÷�<ú2+"WÏ�ÅnÖQ²$DúL½¶ý“’fñC2‚`Ç*ٲij�J6}óÌê’ÅÑK‘]?sùÐÙÄ’s-r‚ “p®§à®™1dü½IÛ&xÖÇ"‘îBÆ ¢O‚‰úD"1ˆQøYvä)»³h)¹x`ËÚ³7C@ñ²Oïà{ö� 3¾rN×VÇߣTö�ëM:¾ŽÍM‘ˆõ-ŽÏ§E¶EíÅ$d8ßlÊÙ« åÎõ%‹"_!s¦¸o"¼ÇQÀ0»ÿ+£û BÞ(¾K&“Û¢zºÑÏ,µ³i/ï¶ïû [ÿ²ÂNG¬ñáâ¢Íß»¤œ¿D%5欛]˜ZÒò.GÍÅ{AÎ\i?–r«§›ÓÄ{ûÛÉ÷q>ò�ö�A@1çúŽ¿€Ë-í”5�¤� e)¯ƒ ï·µµ @@ñ…Ñ/ ¤H‰¡–îIãϺ黳¾q¶íZP¡ÍyŠç×½… ÎEXŠ%�yÛÂNZÓ�™»l›i§‰‹L;Þ$cmK>×gÊØƒ¬dômŸMÄ'láûEfób!ßh`kÅïâøMĵ¿÷â@*jqþ6òùàÕÖ××ïÐÚÚ:WˆˆèW�㋊¡òt†1WìhÂYsVÛÞV\°Õä3wŒXÖ»ÈÕç¾–À’2s&ZK&¹9ÉŸ½ä¿ìimV¿É£¯ŒØöÃø1WmÕ/A`q½�çúO=4•”©¸s2_®ýÊêêÞØ|Ò¨ÕÄP$iç´°$ìò2¨@ ÖCuuu#ñ²EˆˆÈuM9lþ¤f¾±‰ýL1ç¸Ô¼ß”1ûE$2 ¹™@Í�‚ÌÕN,^Y2òTN7$y‚­ó$÷Fõ›<æV!ÏlõÊè‘©”<ëus§®àÚï_‰Nס‰Å@{*‘Ót-ìò1¨¸5‡b�""Ê_–5Y éÜ›L=?«Q|–×§ö¬“´£(2Q%@:lg$^ôÖ–¯ŽÞPrŲö— °ää¾µc& ¹®ß”³vЦ¬tÆz k Ë’Ab (ÆæONäÍÁ³—:5£„ˆˆ2`9è¨Ý=ç%z)±ßJâ‹¶}&�¤c*IDATÞ!b‡`NËZ7——–Ìàäϸ3 nÎé(D=‘«i`nÛÖ$OØV,/®õ\É‹ ÁD«CQCqµ‘ç¢ñ–Ü7HÉ'â@$beÝDbË7Æ®ŠÙÇ‘a7î�â+v$y�8`Ú§"ˆ"vä_O:'PÍÕ¬[bñ ¨[[òûT8“AEs*•‰€âa!"¢ŒÙ†” ‚¶¢îï‹3kI–bm©P¿³ª„ˆqÛwò˜‹ÄP¾ÔT,aIM÷HûuBŽiÇlÜ GKáèO΄ýàÍC-Å���S„ˆˆ|Ó½,‘ó½�]ٌȨQÌeÕ,¨ßä³FÍXÈüý¥ÏäÑ~óH²ŽÒQ»„ŒéЭ)[î¢å„9¨ø5PCñ�QAB]K½²E*3}ï’š-ëŸâÛ–ïQSt;–“°ÛµY‘5f oY±äzøõN)Û‹í{g®�bˆÌôµbÀóæO¶ýŒm¥ŽIYÉmÚ#²®‡TEq©‹dDàÇã=/Š‹¢Vô&!cEuó‡ëi}q‰NTŒ«ìïIíÉTj³…©¢^KîËî��Èæ¸_vƽr5ÖžNÀæOÎÄ$œ¦%‰]›šš„ˆˆÌØ(¿}ûɼuŽ�qPQl'‘!·V‡�1zÙŽXÿœ5x|‡ól¼»Óõ_c¥ËkXƯõÚo»×Ä“‡"×u!‚šßˆ8ÛÛ ¶å�Ã&>$A`Ùk�Å®þ`ൿ gõ½ª+]ôXLÇr—Î?P‰i3.7déÓgʘÃg ¿PV¶zåŒJ+iýÞ¥´ãÃdÄ3{ð„ƒÆw‡L˜‡•.b™„å\íl±­ñÚ_H(PBT š}µ#ðr¡QNÌmïˆÎ»–-Mæ1…•QPÑoòØmñæÃĬfËJ;sÈÄdzùÜw¯]ô2ÔxyW¿ÉcÎǾ^!NX‘Ëñÿœ8o&%rÂ{C®û0›Ï}0ü†9X�ÙoÒÙ·J$¥Ç¤�8`¥l�m›AE–"É¢³p:�\q‘mÙçÏ2!ëa~g �ø$VO¦gK¿D(0B×ü uaý+**F åL¬­!#YV“˜²ìŒ2FÈüœ+NØZ›b�‘e@±¢ÃÆ_™²äqf£¾“Çœ�Í\í¨mË ñêª!ï Í. XÞŒá×ÍHU”¥µ9Æ�ŸØ´ï¤1Fó6ÛiMÑ"˲÷0 (–7cèøK€kʵyÉØQÛ™0¼’H$òxeeåéBDDæ¬p�þ”V$†PËÑeûé-kG­�ƒt¨Ò>‰HdÈÌ¡Þhsí X–œ,ö%?ÿÝëSa?‰Àh×¶¼¤]ÒæQ,vÅß|]@æö$¡Œõ­½+‚±Õƽ�À.ï™P+.Ð@Ývp®ˆ}*œ eD† ÚB`qcuuõß…ˆˆ|[«,(s”й.;AG$æ¨Ù“%‘ß2n–¸hæ�‰:ïÄ%bn`¿Wê÷ÉôÍîÔTØ?,ŠvwuøQ , í·´&ÈØBÙ8P°më÷^Í6þ1�\#.`M…3a?x¿G`¡‰+/"¢,YfÔ [lã Â+ƒ Â6ÎDéèN3†�{A<0cÈ�E-ˆù<){ñ2“G/ØeÚ‘7eÙçˆ)Ë*ïW;f PF�`dŒ®÷ë&ˆš’ þ„‹ìk¡œÊ‡ÌøQUUUÏaÝ]ˆˆ(c¶ljè³�&´I0–Ø�frûOÝ ï2šÏþÅmÝRç‹W¬‡’)I�"¦,Ù+Ó·ºÐüé d&'‰Gf �ø/¬Þs»u©ï+gnŒ g 1±äTñÈWÃï\lG#g‰ClþäL^”ð[–5�ÅkåååHDTèœÔTèäW¶8VÒjíì·I‰ Ó¿lɃm}�xhö°ë_×Ò_1bõÚê•1ÛdôN‡ÍŸ,Ë6š#KƳd#´ÞA¨Kv*b|œp�>‡Z%Oç›9xÜS8™Ÿ‹lþäLXç©øýb±ØÛ•••;744|#DDÔÛ8¿èFg[§¶|cìªV›]"†l«ó¶øVÊÞÉ4;mÛÖöýjGO�¡ Á¸ä8š´·–¥s@xÇ–ïu§Sngf ùñ�¾µ«_ƒ`nUÉj¬8»v,Û`|?D,ã /¨f�¨`œPNäMP‘¶a$™VQQ±KccãL!""oLº$&Ã/qm(GÖâÄbEÅJ¨»*ÕÜV !s» þ¿‰xÌI2z›fô¾¥Ñ§é·Ü'~°JZµc“‰ñ,«\'ÖKσA+�àk+£+ζ›f žð¬ø`±]|ß*VÜ8¨`ó'gò±š§W4} �…qµ5u!Ç…²¬ÈFâ„eÜé¯-{Ég¶�QÐã¤ùS*™">±%eü]±Xggî"K³cdY“Å'Ÿ ¿z¾-ö'bˆÍŸœÉ׃· j,^¬ªª:Xˆˆ¨C(©wP}ˆy�K,±v'RÖÊ3KöϼSj(ØÖoÄC:GǬAãÞŸÄ‹ŠÌGÚ²Sk uʲ-³cdÙ“ÅG–-ž7·£ŽåmDfYV–‡8IQž²mãidxÛf ŸðÝÊ~ßÿµÞkIžCMLU&ï3ýÉ’OµÍŒøäƒ�×ÖãÄšuŽOI~�õ›tvÎ¥Q“yÔÏžnIJŒ‡Zfó'gò¾šG'ÉC�ÅUBDD¿d9˜§Âz()9´ñ¤sj°ùõ è˜õ^g¿µÑ`Œnå!TTUgò>ÓæO(1v2)�KæŠÜ ½„VÊŠ&Ì\q}~’Τlû'1ÄæOÎÄÁÃçJþuL'"Ê ÛÙ0£N­‰;›éÚ’©�ý>!‘¼^àFÖ›t|7ñN£øÌ¶-£ G£Fh¥âÅãüb*% ÄOË8¨ g &"C`qHuuõ‹ÂIòˆˆÒ윎Øöñâ„•šÜÙ¯S©ö¸€n«ôèÑÕ{L›?áêò}‚D˲�JÅq#ôZ©öE1ãšI„#¾^]MjÙ6r¦ÐJî‡ê$yííí»¶´´Ì¢åTVVî�às{¡P«¯¯¿D(C–y{wÛʯh«Ú³thËâ@{¬¨Ó‘‚ŠJJI<§-¼|Ñ#ïr/óÑŸü/ý·mémÒ¨ó"ñŒí˽’LZ³ú„®·/&‹›f“vR¯ƒOÅ'–m~ݱù“3×H'É+..~»¼¼|禦¦/„( ©ñiXí'f:Cò%B²�Œš3QÛú³³ ì™K:õvÂj³[MëòmÛ~Ûùt¶ØÓÜâY¿˶}*pY˜õ�°ea&o³–dÀƒyÏ  ð¬¶åƒá7´ô«#&,‰ø}°LŽdëF£Ñ·+**væ$y´ 2;é·J¹g›ŽüB¡Ñwê™[HÒr4\¸mYÏtõžïk4ÎDYÖ­3†ŽÏ›Y}Í'¿³Ö¿Y²º@Ò_ŸÑm+•uLaI—MÌ\R!B8Õjì bóÕÄG¶¤V· KØüÉ™‚­æA¢_¥“äUWW�¢¥÷ÂÆB¡†ûšAE,1‹¢mŸšstÄJFo‡ì¨ug†oýF àèl#yĸ:Ë’š­^9Û· ûM:»¾t1�’Ô·™¼×þbÉ’eûÕ_î/Yö÷bf øÉŽÏ_ÃæOÎúÁ[%›ÏUVV)TÐÊËË×G†4ç“y‘3¬©È’®ŽÚ}jG‹•ñÜ þé³�û8Ãw)Fìm…–ˆ$SCÅ/Ñä01±£�¸aL:{Zƒ° ªP6#.|'�Êøw ,•Î&”‘iF2‰Ü‹Àâ÷B ×k)òƒŠ,àaoTÕoZÃáD¿Ú1á{¯çîÊô�¨ŽùH èü}¦ŽÝDò„ñäw²$»:Rü’’]ÅP{ÔÎ,䬬û ààù2‘"2týÅH¦5�Ögb÷íú}jÏZ_|€ûn;Ü¥bˆÍŸœa5O2•¯®®v\­Ná„DˆAEÀy̬]4-aÙáxlúæ™Õ¶ØÏ!’ÉhèδuOÞ—é{‘!~C !sr¸ä '½ùQ{xÐV¯œám³ÑZ¬³ÖG�¼»˜°eþƒÇgTS�ì÷’%¤KÝúÖŽ6Ìðg÷ˆ£ѺdÉ»b("‘Qâ+iŸ%°ù“3“F¯…LûÉbÁõäŒßlÙFCÑ#³u xµÇŠ±Ì‚±Ãƽ�‚›1bõ¬Ž'̆SËôE¡6ÅѨ¦lþä ƒŠŽi§¢×zô豪PA@BÉŽ•yçq®P^Ð y4%Ó�Ýq%F¦ëŠY;Ýô“dË’ÇÄrjÞ²vÔÚâ�¾SÎÚ Çæ/øŽPJýuß)£5ãn4òQWœNf¢%èÉÖ’ñâ+"wY†m�Zöÿ2}/j^f‹ ˹ù¤Qž ­ªçݲ­ÃÄX棹á8¿,Ƭ¿lùêè ÅZSƒÕ™â›?9÷H8¶())™V^^îÛpx”eee›à|³f*?�NBÁ¡™e”ÀÏÆÃéŸâ{^¼(v¥HJÄIPQ³£ÿu;³¯M¬”uïrÿ´2•�qÿ±oíè«úO=k q‘㚊%¬c‘ñÛS\Ögʘ“´ì,¦Põî� dúö¤1 * ÈŠ�"H¶t»›/#LáBÈ8[î‡âh"ó�2…`­…÷¸1€k*œaPÑ d4×ÒIòXäÕ˜ãôKÅÅÅž¶u%ÿ ¦‚AE6¬` )«m­‘> ËÇ–yYƒ-ÅM–œÐÕ Ú+3{è¸)¸®ŒF�ZúÝVßDKÉýnµ'ßü•1ëXñäÿðw«;ø²žÈX�c'#ß#0»{«Ú³¶¸8íúÃý§ŒvmxÑ~SÎÚ?’’Å;’]&wöàë¾Àõ0GLXraŸIc\½¶—Ô„Y¶Ãfv™gÆc=ÚîÇQ‹‹!\Ÿ;á>J&]âÊäË›L=¿¬8{Ù�>WŠ5ÎðàuA'É‹ÅbS«ªªÌF• 0`P‘ð ·3šÀŠÒl+'“ØéH8ýjG…Œï_úÖŽy¸¦=ñ-27aq- —±IDAT¿o“mß9cÈ„§Å K®ðÙ§º=ù–‹+ T~DqÒž¥/»z/²‰ÇD%2 Çøå~SÆì'¸SS±D÷TJžÕÚ(qHk(<æ´ }ÒNÞ&Y³^ZR‰Øüæ�ѮԌk jÂÅ_.G2oþ4}À-M¶XƵw ÷ù^}­úÇœÖàiÇìnÉE“ñÒµæË¬©pÆ•H±tÃòteeå1 GHြè–ˆ[rçPÛËû6*Q^@µ€i!42ÈŽ3š?ßvÝØÀ/Z»ÉXq¨)Õ|W¹Õó"læšb(]ûò ‚¨,ŽvûÛǃ®lÎô³šùJ´–ü!àeÙ+¼}8Äð¾“G¤ÁÑÌ¡n–ÒáUÌ>‹ëç®ÅÝ’çd3—ê7éìõÄJÞ€}ÚCÂõñà{CoȺ wÍÓ8G‹kóÒÅR»ñ¤svùdøÕŽ–H´v{ç×Ûad;�²“×E­¨£°Ý{'Zº}ÒgÊè³g ™ð°d ×Ï™—¿úÕì‹2“³œTuuuNJÈœBôÏõõõ— å‹n¨…jÅƒŽµvá7½®®Î÷l˜õ›<æ]<úI>²íºd4º�6Wô­=ë0K"÷‹°m¶eÝšŒÙ·½·Ó„Ï;z‹Ž–”\X<ܶ#{ã¢t×ñ\:rʤ7›5|BVÍM´\èû«í»™óûq,&[©Èó3†_רÑû´�H*iíŽ÷ŽDnôqÏÆ3†ŽÿT²´Þ¤ã»•Gzþ¤}fÄ”mnG#gÏ<î)É’N¬ˆõ‹K%ô87#Ø<=›Ï ¶ñY\“ŽkœÒ[ð:2„O$SöKï Ÿ8meïÒ¦s©”5bÉý`Y[ˆ7Œ® ZŠA…$Ì·#°ÐáëB»´TEEÅÐh4:Y(<� b¡ŒåkP�4z±eGwD&u†¸©—u îØÛØâ…Ëÿƒm[¥(Éu½/_ʶGÍ6!ë>^+µ7ö|¼˜k-mIÑË«ÆÉÈN+ÿ®ì3ÒËë7yô-pœw¼¶å;’ºzæ�‰ÏuõÖ¾SFog¥¬ýqÏþA\dTôǽðŽx�ïÜ%×�X 8÷Õx]ƒ×½Ä *`ó'ˆ�ODév% OÇ�&ï! p¥så^*•bŠ,Ù²¯’‡Mÿ"öþ3†¸P¨xÄ:¡()¸œÉÝvÅò=/Zƒ!ãøÖ¬¡n–O�KKþ­2¼X¹ó€½pQªøBquÛ×!óë<¨°dËŽìÒwò˜ï%" 6fùfqÚ´�•]ƒß7lyPnW!ï"ؼ ›c˜­ÌÒa¤­å†’öo§ÙQÛÓܲP|öî� óÚíÄ`5“$`tô+±d?”"?*9”´íݱ1ŸIŽi EÒJ ÑÎÅâ�dIä¸ PKλá'Å ²ëŠ¢ûàå ìÍi¶e8Aa*Ê Âî*‰D"�£Æâ¡¼‚Àâ[,ç`Ñþ3c°°ý~°°éSÁSÿIE7ž1dÂ�’C ¿¡AÍÎÈÄ\+�Œåp�˜1tüÿ$Ç¢›Ón'Ë’assçæ{;j œ=tâlñÈ{;Œ›kÅì�:Ù¢äŒýC"eçlHíï^»×ÜPÔÚä4�MÙö‘¸'oÊ .³–º�'ÈËO­uuu°l’J¥´d&XU¾…‹A…dBÓ§ÂÖü‚Ø÷¦$µÁÌ¡ãO[ÙDi¹€LÌïl+uŒN.'9„ ô³©hbsdî^“€@à5Û³Nàmâ3F7n'Ì4Îó¦‘ïšøÃ¢TÑö¸Nߟáº{#•’í­hÌ·&€+ƒÚ ƒ°'>ùþ6e%·™5l„r†A…GX\X]]­#„äá ðvCCÃS.F¶··oŠD]˜†UÏäî7,T6à4³€ÿý]"ÉÍ�a9zÖЉ_JÍ2ñžöHTìxB|¦“…Ùvêwnö˜=øÆq™é<ÉXÛÏŸ›1lü)b§õ#ðÒ4%rùÌTõNÔˆOt˜Z¼;à„d=Á )Û²ÿ2sØ„u–ô"+ˆü‚ȳ툵�6;àúÌJEûÌrýÿOÆ—gÃe‡º·ŽB`ñ$ÖÝ„òVssóÇõõõ§ ¸X?ê„J’ÖgÉdò¡¼±4“,צRöŽ$ÖA†ô�3_øÀQ;#CµR¬¡~ôµÀw¼§ýJb¥‹×ž9l¢gM°L;jG%¿øÜŒaŠ¥¶\Ò|Í+¶¼€Ú¬~³†Ž¿Ð­Qž²5cØ„QZ£†t§xÁö»ˆ(¶›9dÂÅËþ-n§?ÀÌÁãžjë–Ü×èñˆ^ÿØáÃLØAÍew1€4g‘�1Î¨í½½X¼’H$vmjjr½‰‚C‡¤Åêr,WTVV‰DΖ%³å’×p¬§ eM›?årFít‡â± ?b[>Âz–�’é^Ï5áµÙCÇi‡Õ�ûL½ƒ±NÆ�>Ü­Y¸5àÂê>;j=0kð8ß›Ú8õîN×k‡æÓú¼zúEV¼èt—³PÒKZÒ–ß¶&"ƒˆŽóéµ6eÌÅE){ ¶M¯GsZé\,¸GîN¤R÷t4L°ÖTØjÑøÑö××a5fóI£ÆE¢£±'¢V¹Tœ²å!7vz®-»Ê¤‚-Qó}Ї|’³«íBëaÿ9–¡uuuß Œªªª±Òàâ@$¦ â=€Œé7¨)ZWˆj½IÇw+�”í‰ áü¸ –�2ý,2’³ñ ~×ù +"oÍ2ñUÉ3ý¦ŒÙû§#'€cT™ñQ+!ûv,öÐÌ�×þÙÚ畱ÛG’ö~8§ûây°E&ŸAF©ÿ{؎ʃ³�VB¬ÏÌs{XM‹@€µ·e[»!Z‘égqÌ^±Åz2%‰2™È±ïäÑïezŒ—‡šF6Yw€A…¿æ á� ›j˜ššš5pîÇ`9 ]æMÊÄ“Ö÷¢éÿê™ëÆÛ­^шU…RÕÞ–©F„ÜC,ëû¤X_Z’ü6¨ýG¼´é›gV/Œ®.‘To”ì¯� èªøç^Ï•Tä{ÛJÍo·¢sÜžoÂok½öÛîvb�XÂZæÕpÞq ®�Tª^¿O$Sß'£±ïþŸ�ÙxÒ95Ý$¾šžëôyîÑšŒy)Ëž‹g圤�üÑd6ø~µc´Æ!»&P¶ýõŒaÖ2Æ ÂÍÉdro�ÿ@¨u«¬¬<‰å,› 9†@íRê—<Z˜u,�ÀoæÐñ#…Œ±£¶ÿÊ"‘È‹œ$¯`-nhh¸ ™àÍ‘Þ˳X8ÙŽ΂;«1ùʶd„°lû!GTä2AE:IJ¬O*X,žÃ²G"‘Ø?ê„ì f5žÌ’KDD]ë[;ºßÉcžÑ&])9T Ø–5MÈ9¢3ä!°¸±ººú ¡‚¶`Á‚OëêêF¡ÂbõT*u�v<ÊŽUSccã×BDD¾ÓÎ×X=bY²{MiÔo$G¢’ºLLØöL�]Èfd•‡ °xN 'k¡¼“D`ñ–�’Édü|/Œ¸PGX²DD”}&�>«ã~ñ�–õ›âHìÓ>“ÇüA|Öç•1»["‰®VÈ1Žþ :y<ß%=‰ÑÏJKK{éˆQ§a©ZA×Î����˜ìŠˆ¨Plùêè £qkfç“:Ú¤,¹xÖ� ‹ÇúL»‰•LMA­Io1��Ä:&C×Ò/1¨_cÒÐÐÀvõÔ‘Ôj�õX[IÃ}’BmÎ*xÙ&DDä›~“Ǽ‹d¿LÞ«8"»ù×™CÇ?(è7yì¶øŽÿ"ÀYU ض<5sØø}„cPLóP» J`g ÑJ”——ï‹ÅÎFæz/í÷/…çíºººí„ˆˆ|Ó¯vÌ?±:W²„Ìû÷øÿ-q;yËÃo˜#m>iTiQ$zj'.Rk‡YƒÇ±ž T×B{p’<êJEEź*ΉD"ÇãÇ2)¦®EMÅˆ|ÑwÊY»YväYqʶŸ±-{ rôSgŸU߸­&�µi$b�Œ ì)ÈÆöXKá.–îœ{$2Nž·G¤ð«©©)K¥R'ãåhëKþ;5� y5«[±ÙÈ9zЯÏ~™Âz±­fKìf;‚µ-Í˽¡òDkãÙ6¯W—$S©ÍfŸø‘�+T„€Î] C� Q†ªªªtòŸ3‘‘<ÕÞÞ^ÓÜÜ\'DDä¹¾“ǼbY2Hò„-ö3‡Nø½�k8¤lD"‘+„Ý DBíÖƒX†¢dg ,wJžufÆ>Íb@ADä#Ën’ÀrJõ×BFüüÓ\É/ù¥ú{#7>YÂΖFËŽìóÝÀk ¹ŠAEˆè$y¨±x/K…( :÷ ‚‹KëêêÖ‘¥“½+áÆ ‚ˆÈg3†MŽÕ]Zö”ØûÎ~ÝWB®cŸŠB‰óûñx|'Éå–±ñIDATëXÏž=‹ÅÃqº¾¡¡áNüÓb¡_©¨¨‰DÆâå~X£mŽtÄ�v!""ßõ«s1V—H˜ØvS¶G¾7|â4!O0¨)�$OgnjjúB說ªžF&yO}�ãT�×·b?þü„~Çkm¬ÎÆrŽS¹ßK*F åLŸÚ³v¶ìÈÝ–%kJÐ!Ï”ŠEv›5hÜÇBžaó§�BæoÝh4úvyyù6B?«¬¬¼, Px]…Õ©TêkdžïDzƒÐ/Ô×׋å,ú`�åS 0œK6}""ʱYC'¾lWob‹=Q‚̶_LFýPx�5á§M{öFÉíKB ³HlÞÙ›P{ñ–ëÂ� ¡YÎt–î±XW#€º­ÃÞ'„ˆ(olU;vHÔNÝŽ’¼ %(liLEä¼YCÆß&ä yä$–c‘I¾O 2§G"‘3}?ŽÙ÷È4_�Lê�Ȥ6 ýJYYÙ&EEEçâ8…»KîÍE½šQàô«}2wçXbõ—²m¹'ÙÍ:÷½Æåˈ‡¡À "¿ü ®¿Ia*E-Å7ÈüVJö!Àøw<¿¦¹¹™Õ£èÙ³g‚‹ÓñòL,kHŽà<�«¯¯?[ˆˆ(°úM:{=±R‡Še‡¬ææâd,_Bíij�Ÿ.ä;ùçF£¤À  ¸Åyâ2­/¤›F=#KÒ'ZA 5B‡¦›Fm'>K¥Rƒpn^"" …>“Fï‰X‡ã‘º‹Ôoâÿ�%%yß{CoøV(gTä§'X*2äfzô¢Ï‘É-÷|‚ ì8d`ïÀkN�Ó÷eé¨QâØû1)#›>…XŸWOïIƦR‘Í�Õc=,½ðº9ÒšÎ>‹¿¼çË–Ï‘�ü(•×¢±W9‰]p0¨ÈS¸ù^¯¯¯ß/[$Ï¥'!ÀqÔ¾·E"‘k9$mÇjjjÖÀqƒå”ôh[ž@�7AÞ!""¢ÀaP‘Çt’¼¶¶¶­­­yÛQ ×ѱâÃìžÚ«ÇÒM£Øü¦cÝ*++�K7�ÚL\† bŽý+BDDD�à"Ï!ü]<ÑÜÜü‰ä™ÒÒÒ^ÅÅÅŸæ`¶ié¦Qàu\èWªªªv“¥M£vÃùq#�aÓ'""¢ãäwyù¹µŠŠŠÞÊÇIòPÜ‘£ D"‘#0þË…:2’Ð/Ô××?‡e�D"± ~Ôa~[ÅÇ÷ k* ÇbdÌ@FïYÉ( ?ÅC zlïE�Ð?9$mÇp¾zâ�†sv–u$KN¶ijjzGˆˆˆ(�TdêRX�ŒÀâ 1Í bõ¥—�‚x9•Ji¿‹§„CÒv$Šów Ögãü Ìð3ÕÕÕ¹ÞGƒˆˆˆÜÃæO™¸–Û‘©»XB û01 …Ú9‰<‰ ù,£ñs¡å%Ô>„e§d2©3®Þ‹`·Ó~)Òî""" 4ÖT(dänEÆîT ™ÊÊÊAÈ´‡i Íãx_ÝØØø•Я¬²Ê*«—””œ‰@Q›Gu4NùZ¨©ø^ˆˆˆ(°T0dtŸA`q^¶IxX¨i¹ ™Ï%DÒMϞЦQ.¦u¤çöh¬uHÚ­ôpÜ^Ä5º‹Q 1¨(pÈ´½†Œî^Èè6Jˆh.d4l“ä!°ØAÅcxÙM« ÁŰþg}}ýBDDD2 *ègÈØ6aµ;2¶oHˆèÄ~Ñhôù�•�Z,סÖè á�´ä1å³–õ_)4HïAZw°P^Bc1V%Ù|&ÛkßñVÛJv>Cú¾‘å!)K?ÓÙ©±L®¨¨ØWB¤©©iz2™Ü„ï$ü†by ™½Ï°œ]SSS&DDDDÇ ‚VT‰DO÷W _´µµ @`ñ¾äw`¹ûó=ÎÅ8zë Q@1¨ _±–º½²²òr ‘ÖÖÖ¹¨ºÞA–6!Êe8cè}�ªö'\ """¢€aPA+…Œì‘‘Õá<Ãt�´ÔÕÕ�Äú É#é®ö�F£/£æbfº&)«öÂDDDD^aPA]9 Øç$\Ø‹ý±¾QòŒ>Z“„€ï[œ›¿”––ö"""¢bPA]Bv$2°SËËË+%DXŒJ¥RçÛ ù©ÎÍEÅÅÅßâüÜ]YYY�£øQî1¨ L ˆÅbo#㺎„HCCÃ?±:qE\ò‹b¬Ž‰D"³Psñ –ƒ„÷6ùˆÊƆȸNC¦us ‘úúú‡Qc¡ý,JžC€1ËÃ8G_`9KO!"""òƒ Ê–6¹y£¢¢bˆ„Hccã”d29/çIÀ9ZËUX¾GíÒ„òòò „ˆˆˆÈ# *ÈDj,^D)x¨f£E`15ðòs)¥8WgE£Q�Lï©êêê‘BDDDä2d%àEXB)øé" ß$ �}{†�ôÜ#{áå .fc9Y8$-¹„A9‚Rð‘A½RB¤©©©¡¾¾~ ‹¥!¸ØË­8oßé‡=zôXMˆˆˆˆ`PAŽ!ƒz2¨J¸®§E,vÃú^)P8o5:ÁaIIÉ7ÕÕÕ÷VTTô""""1!r2¨‡ °¨DF}_ü¸HÂ!UWWw4Jë¿Ö̵(mʆՑÑhôHœÃ×ðzÎã#X'…òZ2™<ç¿T<‚ûêTüý#Ä̕ؾgÄ#ض‚´�ˆÈ/ *È5:IžfJãñø.ÍÍÍó%$þ„íþ /ÿ¥¤€a÷u„¬�8ßÚ¶=?ß„c�P^jjjš&B Øb×ß'���“…ˆˆB�ÍŸÈUÈ„ö+**š¶Iò�q¾#•Jí�—mBz×FIîXÿˆŒá ={öÜHˆˆˆˆV‚A¹NçHÐIò***ú‡iò5”Š>‰ÒÑ�±4 -³ –3(~‚sù,–Ý…ˆˆˆh *È+½¢Ñ謿F­ÅN¨±Ð>:2Ô÷B¿€`q7,Ï æâC,g៺ ‘0¨ o•"Z�Z‹—Pk±¯„‹ÚÚÚ¶ÁË�…:²)– ¨µøÁÅ?8$-1¨ ?” °x™Ð$$Z[[碶b;,¯ ucV”””|‹s{?–„ˆˆˆ ƒ òEzFçÛ‘ñ¼LBBG=Â2 /ŸZ)œ×–ð¼ŽóûFeeåá‘刈ˆ ƒ ò2žVWWߣ/%ÚëêêöG�ÅíB]ÂùݵRÿApñÎó*@ˆˆˆ(ï±4‘rá(d:«P p€„dWlëIÈ$Ž—— u ÁÅšXý-�^„SýïD"qÕ‚ >¢Ãg&é1ÐÁ/„²†ëom¬²;Žåz8–«a]¾ì÷Ëwü®¿Ó¾€_âŸ^H&“�ãÙú¥„LÏž=ƒLò–¶Ä�›aYk¹_§°�XÏ×k û[—J¥æáýs°¿Ÿ…q3…{q}œï¾ØßØß>ØÿþØÿå��^Ïcµ›äƒ Ê¥¸IÞF‚8öP áŠR€û°½sñòIY:‡uí#œß‹„(ððÖ‡ö±x`�¥Fÿ-‹ÒèxoYZ’¿^ŸR\\l#͘‚þÝÈ\?ˆo‘KgdOÅr¶_3uÙì¿Zï_ë¾é¿!éZÞ;µ_Ýüùó�…íúDï7lçÅXJEtû]pÿjáß,Â÷”K€ ï`wö{lï`œ«GJJJæb?þ�ýÙSVR;Ú[rŒA�V龦!Ig"qØɯ…:ó”Í¢€ÂC|+¤=¯ãþ´4 Þ*Ã÷ü¥«š¹þ£€¶ÉÆþߊ}Ë!â½cP{óöÿßé¾)¡¥}*${¿êS‘.õÖæbÿIJ¶¸ouüÝÛð=Ó5x”ÜY÷Ûù؆op\�Ÿ7ï¬Šå¯øžïð�­©©)“À½ßamBÏž=7Â=ñ_lŠk*ˆÒ´£Ñä0M’×ÔÔôE<€çÊ ¡ŽL¯¯¯ÿ«”NÞˆ‡ø,¤=~hhÓÉË‘¹š…4¯¿äˆ–^}‚ý?Yüw´~7¶á0)`Øÿ¦›ÑdZm ßÓOƒGd²ÏŸá:Š}ý÷ÛnÕf¨ßù'Ô˜‰û}ɱŽj*°]×{/÷gXSA´œDñOà;SB¢¹¹YG}Ù �Å BË[ÔÞÞ~” ‘#Z‘Î�tf^^ 9„ÌÕVHó^C&ïHñ—… Þ³Zz�n‹Ÿ:�&–ûq.n�öñtÒ§"]Cô*þĹâ3d²oÀ57A|¢5¸Î'¯Ø±ØOøn­{,Hse¥›êhMy3ˆ ƒ ¢‰¹Kx,D`±'‹‡„–À±8×ÇB0åååÛ”””h“¼m$º!“w/2׈?º!}}™¬œŽ³‚3°ÿ/­ý{WL›?iŸ”LÏH÷#È \sgi4ñÎëÃZS ‘ž++gM—5Â6hSË×°=n6Gcó'¢•ø}z’¼°\£ ‡âóO)p8·áX<"Dƒ4eD,›âsó‹tÅIIDATŒ`›~‹í{/‹Å#éÎÀµâ¼™…ë´c22ŸobûrVší¤�5(^KÏå“kGãxß/ÁßÖ¿’ๅ ;KŽhgl¬´æ¦§äd:IÞsâ|Dß 3}~*•:ð+ô°ÛΩù<È÷ÀêE öPÐû!Í{B<€L”6sªM�T›`ûÞ¬©©YCòTºÉW•¶å0/šBáož†¿}œ îqØyÛè¯s¾ xþ^v÷±OQg�(�ÄCöµô1nB`±?�BFµ%™Lîƒu»ˆÎ½€´ÄÓqëÝ‚íÜ]Û ‹»V‰F£“´£®ßH?µ¦3ðŒö©m …{dWq‰Žd„¿y“Ûê¸Î®sFç—ÌXé`I—°ùQWôA¨cYWTT¬'!ÑØØø$¬]X,��}=¾©©és! ž§—Ÿ‰8è´ º3*.Áߟž;t4.l³“ e ÇüN·æOÁó:£þaŸOÅ.‡!Ð ¢¤í­0M’‡ÀBÛ.ïˆeŽä¿+Ù�‚‚H3§:Ê’„ ¶ùn72yÕÕÕào�$!ƒm>»?LÈ/«ãû7qHG4¹;T\‚ªYXÁ2Ë¥éEGpú¯ÐbŸ'äšÐ áF­—N’‡ÍÞȰO‘@Fû<Ôà¥J~z©®®.o†Ä£ü�´bÒŒsÄeÈÌ4àïÎÇú'YÚ”¡ÆƒŽ·½Pcq ÖÆ4�\Ûx»­tZðwç§�A?¯Š×:Ï‚«Í:°ÿÚî}³ùóç7Kiß9?Z@­p½õ�¥×›6àv»ü3ÊËËÿ…çébÛåøY€ý|5ý×ão=ÙÐÐÐÔÙ{už:iãÙbÖÿò˜ÊÊÊÑ]}e†A…�ÎHû"JCŽD†ýa d¸¿GB½-ª„ŸÇ�$� ñÿ+�ý“óQPÐÄ�VÜ!.ÀužÄJû$Ü‹åÜÓfrqŸ@ç(¼çpü¸š8¤3\£Pb$¾ïE1PTTtþ†+MZp fc¹O�ÒÞo;z�ö]Á{ŽÄ{Žr£vH5d.µ)ÍX ¯úTà¦t2X¬ïÅ5üP'×ÛÖË]o®tnÇßÓ¡�‡Š rs󰜊ëëñL?€Æw±z÷‰ÎÐý–m%Ké¬]I+ ƒ $EX=¤³‚j§h ”ü4`5Ýǰý{H~X�Ç÷hnn.˜~#H~‡{mq»)¸ÎOÁuþIWïÅ}®êérž~?2„‹óѦnIJ–D6B îºX�‡°ÿßb…´ö©®Þ›6®Ðû¿7Žÿ XÖgÎDºy³ÖúJÀ±ÖáfOF ñaWïÅõöVºœ�cô[|îYZ“a cˆvÚÆñ~>Ë�ê5§�½MkO~L$;aŸ¾Zx‡Õ03°Þ(›ÏbŸ‡Kƒ mú…m›ŠÀúU¤%Ÿ#ª×Z+�tW'OD¡Aoü®7Þ³1–Mñ‘É1Z¸ÉnDâ·!¿ó$Ú°­{a›uÛ%ä’Éä™d´ˆr ;î±?ˆs'àž½S²—@&üJÜë:âÔ°-;‰¹ßàïèvܚ͇�>^’.€1† ËD쇦¯‹%Ké äEdò®Åút1„}ˆ"#õqV 8Þ§á¸Ý"ÙKâú¸ª¦¦æ>ü�p̉3zγ*pÍ™Îý ××Ó€b9 q­ÜˆýÏv"Éí%8æ`nioo¿¾¥¥å§•½I ¬tÑ`{²;jS¨!ñ8Ü%<²�Äÿ$$—H¸�Eµ³'ãé9…ŒìÉ›ý´aÙ¥ŸwŠZr�e¤8èÿ6›7ë$wØÿ#Äí‹ îh1(–³ÇPçíq:’Óy>)Þ’ëÍ0 øÙüùóÀõ¶‹8¿ÞF ¦iÉ’ƒ!‹/ˤf&Ãm˜-ÙÛX0î“spVÇ9¼¸³€"ÈTPè¥Ûk›ã0M’§#Xœ¨mg%dPö7$|ã…(¸Æˆ¨…ÛôC4c=÷úbiÜfÚ·"‹�hMh‰¶þiÔ%â­MÖÑ{Äö_ó*�ìWá›}=¸Þ^CÖR'K–ð�ëŠ�¶¶¶¬jáº`|–——o&¹3ÏÕÁ¸O²­a ”/†ê$yÚÎPB ˆ¶áÜKœ•úí&”¦ýIˆ*=îüoÄ�–ª£n’¸ ÷0¬‰!|>›Q ²Î.÷=3µ¤T\†¿y.þ¶q¿íü-yÇd¼Iÿ… þ®vÞ6¾Þp¼÷–ìeÝbÛù!Jåç‰Kð÷vÑh´·ä¶÷k¬úã¹:UòûTPÞЪע¢¢i¨¶‚ô I`[÷Ç6߀×9é­jM´=- Üëë‹\ï¸Üë=/¥_îûj±­C%KøÜ†�ý¾[·n[Š¡T*5Y|‚ïª�FMúj/±–¯%ÄôzC^¦ø$}½ ÏòcKúñÈÒ¡Ú�G‘ÊžuÛ§›¶é¬Ðë¦ïcãÜ‚׿çÍ,s…A -å¨FÆá0 ‚P:óJP¯Õâ8i …§"·!c²¾aá±[sdÛ8E às1ÔF¬ÖÚÚ:§£ß›î¿ŽBÓÐÐðžøê)ÈHŠ¡¬'eóŠiGmÓóo ™Ø)¦A\YYÙÚÍÍÍŸˆ‹JKK{ƒ—»¤gÿîá¬{Jxà’iÇõïúÂAÁ ‚ ­Cñ [™u»EBú+ }�—÷aû‹ÄcHðîG@¡‰}BˆÂÇ4§ú�ø(‘H|‹™=~ñ9íŒ:g%¿î)f|Ý…´æ+¤iëI–�9Ìy¦ÍŸ�É÷ûx!†p¼×ÀÊqPQ^^¾! ÈÄ!�e7)\/K¸æ¦Ê ûTP¡ÑIòÞÙ$yã!¤ý,Š‡Ò³èêõ ((”´$_Ì4Š�ššš~CȘu6IW©˜Y þ3:H§zIøùz¼Q2þƒÂõæèxk?|öÇN~mÚn~uñßZbæG 3jû:,nII‰ñõ–iß¿ÕÉèÄ':<–³L¬‡gáÐe“É¡°Ì÷¦Œôÿ8¤,Ñÿ» ã†H N’pH!88µ,_#(ê2 Bœ@¢ÿ[ìßD!ÊO_‰Ü;êJ|*EÄý:L µµµ}µ²ß!Cõ%þ¶è†td§†††WÅHgwööØÇ¯$ ”þëþk¿Š¤øÇl˜áu¡ûømWïÑAO𾿉w~Àóës|ÇkX¿„g˜6¯êpXÖ.FG#�1¨ Z­QcQ�Ìú¡øÑ¨Ó§ß�øÒŸáå¿:yÈé¸öb¿^¢<…Ëÿ+1S†Û~î�·ÅÈ 3Ì�¶­lâ;•H$>(..ÈŒ ÁÊ— ÂÁþ«/%ü4ˆÛi÷TñŽõ01„{â«®Þ‹ÅnÃÊ•ôé¾SµI–·P¡þ¦d1k££‘ÇØü‰è×öC&}²˜�ùî;”ÜÜ�Ò¨ýñòW#Êhß‹ööö­ð”×�©ž%†pŸì->@©nezá¬u5@CsssVsÅìoû²ÿ û¿�ŠF£ÆçØmš?içËñƳ¬§iP�ÝÓ9:�¨­¢¢b?¬†‹Cø®°ŒçT–½uâ×ô "i¦ÍêÈ *ˆ: Í!t’<�¸GB ð“Z¸lúœÂòˆ87R(gT­„N’WRR2­¬¬Ìסñœ@¢üF<߬ÙH¨wÆÏ—Iž�6A´½ÖMkäV­¬¬%⤦"íRYš1÷DuuõlâbH;Ewö{á[‹ùß~Ï©“ÅEÅÅÅG åƒ ¢. Q.�ÅbS‘!Ø]ˆ(ÐPC÷�½¾.îóˆt„¬.CéˆÅ]½µï�a{_ ,^[¼Ä¥û?øÓ|G3öíÉ#8k"ã•x~¶ö 1÷j:í¿‚ói€â>½@ÜÕ Çó÷B9Å ‚(3Zzùt˜&É#*D¨¡û™ê™b“±,vwu�F£š¡6nC�LØY¼ýv1„mÜÝ¿ŠË�v^…¿½™Â9}X|‚Õg§ãØì!.ñ¾_œÕº=ÑÕpMšþý…¸O§ˆ‹p µY!G~Ê1DÒ6-ÅC†ãÏBDAæh.ÜëO"cíV‡ÏH3^ÄßÜNÌý„R㌃ m«Ž%.æ.À6_*.A†oÒÎÑâöç:ÉS¸6žÀ1ÚSÜÑ ×î¤ôÜ+ƉĿ2x›Qç²^\„c·®/'µ2äDYBb})¸šà:mOKD¨¯¯¿ —:1W‚ådÎŽ***ÖCZñ²éhGË DøÉ¢”H¾óAqŸÿ3öÿzqVÚ½Š¦•Èð9é,¼dX쮚ℎuޑքŸ*àX¯­×^tè⦦¦é]½Ûl:ÒZ…¸¤¦¦¦Lƒ2¡@`PAd@'ÉCâý´ø3$ eÏ�&¯5®Ÿ»8�~è°†BÍA†zœd©½½ý/È:m.4 ûñ –Ý$KøÌ¡úYM+Å¡d2ù)ȤߌcöªÁõCøë�œÖP¤e:;ö1SZ^^îx”&ò׸íë gÔ&2„„l�ô$y»£dÔ4q%"àž¼÷çÉ:4´8€Ï)..þ™6�mû%db&cù¡­­mþÂ… DmDjzÅb±¼WG‰‰ßÇëžâüíßJ´WÔÜܬÁ€Ît|š8€ýX«g±ÿŸb¿&áõóÈä…ŸßØØ¨óߴ⬋ßõB¦ø7øwí�2ëuÄÚ” ¥æFsoxM‡”u>Ô/i­Ör×Û$=æz½!@�? 6£ÇÉõ†ßï�÷éR.{'£ÁpmÎÃ9Ø´ ë`u ÖÃÑÔÈ *ˆH— ½…nD]]Ý÷BDA¢ÍIºœ0.CÛê¢#ÌhF²{÷îK… Ò/ÞèVFSgF-Åýbµ•””-î [ºök#¬OE†vÉ? Ý�ý�ÇÝ%(,–]oçëõ¤Sb,;ÞË2òn4 ˹™¾AŦA…ŸØŸÇ‰Ä‰2ýåͱú –ƒ„‡ÍŸˆœÛK¨&É#*(q} ™±«%„°Ý ¨ 9Vhii™‡Õ™R8Ç ÆÅIßOY^äêsÇûiÔ>MÎôý¾ÄgšÄÜþPµVæ ÔÀ ^e•UV_þ—¥¥¥½Dl¡Íïô=XÞÁ! Š€bPAäŽÕt’<$~;‹s‘ñyOBFû"´¶¶Î‡Pƒzößx çîy 0'3j®¹Œk)–ãd²E¥³`Ÿ��)¨ùû�ƒ½lA-Û\lÓ{é9ZÎÇÒ_¼Ã�W\À ‚È%:I–Éœ$�(X’ÉäþXµHHhí ‚§™µåéÌÅŸIx¼ƒý#—O5©TêLó�$KøÜ’ò*@ÌDîÒ¡(ŸF`q‚Q 455}ŽÌÏÚ�BkWÄE:�ö_;óΕàÓmÜ‹“y6|‘/5Ø�»n���µX½-áÇš 0¨ r™N’‡åv" dšžBæIg.Îz$%=�`oñöÿ:¡_³×ç¨UÚ>Ͻø×ál l˸æŽÒ#”Å�bÇ�Ãû€A‘GX\T]]}�°„(�yz™‡�ÝžÑ× Ø¦k�™ÖfZíâÚ·d{|ׇ0ئ)( äûk ÃæO­‰DbX@úù܇{âpq×Õ«,2�ÛÂ3z_c1�¥TÈ1DÞ:*=I^‰QÎ!õ:V}±¼+ÁІŒÐaØ®sÄ\>Äwmƒïtµ‰•È�NÄ6 E@Ñ(!bÚüiÁ‚šù„å9É�q-%.A`ñ'ìÏí’; ±ìƒÀôc1³¦�c *ˆ<†Â¬zÔXpÆO¢€@ö;d¨vB&h¼ä�–V#´¶çAñ×"|§µ»–ZÉì–Ñ!-…cI ‚}nÂ9Øû©ø AܸþG‰Ë°?'au£ø ÇPû íšBÚhˆ[<§½Yª`0¨ rYºôª«“�p—a9ÚdT "ò”f¬Çb½CÚ¸/D&è|ÿV(œŸ!9¢é–aÚ‰Çà[ñ¾ïÎD"±1ŽÁRÀ°ÿ— °ЗއÎÀ;ííí›" ¹I<¢ÁŠ6AÒŒ¾øc:®ß>ÚKH×™Ô ­VVV¶‰�# *ˆÜó)Ò²?c½®>¨ñ°ÐªàÐ cITˆp¯¾‰{U›C„ûw¦xHKQ±\†LäšÈ])¡³vãèä�c±}߈‡4˜ˆÇãáûNÐ  „˜aŸŠ_å»XNÁu¸ŽÍï¼8þ0âš;ß1 ¹¹Ù´yPÆpnïÀ9Þ/ÿîep¡Ï[ݧúá⢢}„‰ K—î=Œå¡t[m" ™“G±~´²²ròŠÇáõ¡X÷‡�F¤°z¥©w#ó£iÅ" ¦Å8Úl|UUÕ.Ø÷ýðú,½Å¹�°ÿw¶µµÝ½páB£Ñy @ ž!×ÊÒãÖ£q†ˆ¸ö¦b¹A£^wž Ð/ó±ú#–¿âž:.‰è,Ø#Ĺyا»´ÜÚI€ô)–u%{Zsy•�±œ�J£³% Q8}‚åQTÝ?ÒÔÔ4Mˆ(/UTT Efh$2wñãÈÌôÆëªN>Ò‚÷Ì“¥MYfay éÄKa.‘///_?�n-K;·oƒ¥ŽÁZ+{?öÿ;ü^3~Ÿay%ä/cÿÃ4ñ^`àú[ןw»ã˜®�ã¹úÊ]ퟂ•Î@­Çúy÷§Ä~%ÁÒÆÎØ'íÏ´¶u=¬7ĺ²“Ïè½ô‚Ò×ñÞG±O“…‹AQÒÃÿ=‚õ#(õ ÌãDä¿ÒÒÒ^%%%ÕÈèT#MXˆLÒ<íü-Þulh-†…Ài~QQѼùóçyŒ¼¡ÁŽýª8îñX,67ìóz f¦'‚ ß, ˜´É®§9¸ž~ DH—¶½Œ—“´´­Ð2 DDDDÙ`Ÿ ¢¥~Bð Ĥtuý§BDDDDaPA…êÚFó ¼~•MšˆˆˆˆÌ1¨ ¼—ž ç-,K‚ˆT*õFSSSƒ‘+TPÞ@Àð•eY_`ý9–/Ò¯?d-‘·TP(èht$åâÔ6èüßhà�L&¿@ÍÃçBDDDD9Á ‚rFÇÕFPP‡õüôZÇÙÖõ\¬Àú ß777kÔ £ˆˆˆˆ ^΂ d‡ ”H$Ò�Ç5�˜æÉ ˆˆˆˆè—r6O凈9À ‚ˆˆˆˆˆaPADDDDDŽ0¨ """""GT‘# *ˆˆˆˆˆÈDDDDDäƒ """""r„A9 ‚ˆˆˆˆˆaPADDDDDŽ0¨ """""GT‘# *ˆˆˆˆˆÈDDDDDäƒ """""r„A9 ‚ˆˆˆˆˆaPADDDDDŽ0¨ """""GT‘# *ˆˆˆˆˆÈDDDDDäƒ """""r„A9 ‚ˆˆˆˆˆaPADDDDDŽ0¨ """""GT‘# *ˆˆˆˆˆÈDDDDDäÈÿÿÿ¹žáIDATãj?ÎêÅIEND®B`‚python-django-debug-toolbar-8.0.0/docs/_static/brand/Wordmark-Columns-Coloured-Dark.svg000066400000000000000000000210251524561404200310510ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/docs/_static/brand/Wordmark-Columns-Coloured-Light.png000066400000000000000000000754641524561404200312440ustar00rootroot00000000000000‰PNG  IHDR�*ýIDATxœìݼÕÙðgöÞînÁ5†¢¸K).%x�$8+-Ð~P,‚ „(^ PœÜ‚Kn)^Ü]cwç{ÞÌ"7¹»gdgfŸÿ¯oç{ïîÎÎÌžwÎ9ï)ADDDDD$‚DDDDDD"PR!"""""‘(©‘H”TˆˆˆˆˆH$J*DDDDD$%"""""‰’ ‰DI…ˆˆˆˆˆD¢¤BDDDDD"QR!"""""‘(©‘H”TˆˆˆˆˆH$J*DDDDD$%"""""‰’ ‰DI…ˆˆˆˆˆD¢¤BDDDDD"QR!"""""‘(©‘H”TˆˆˆˆˆH$J*DDDDD$%"""""‰’ ‰DI…ˆˆˆˆˆD¢¤BDDDDD"QR!"""""‘(©‘H”TˆˆˆˆˆH$J*DDDDD$’FÔˆO�¢úŽ11ŒI­l óíl¶_3>b¼ëyÞˆˆˆˆHfy¨%RK0Þãƒé¶ï2Þ`Òñ&DDDD¤f”THXÏÇ+Œ—gŠ·™pè8I˜’ )26õ£™ñ<ã9&ÏBDDDDb¥¤BêÍdÆ8„IF¸Ëdc2DDDDĉ’ ‘`¹õ`<ÆãL2¾ƒˆˆˆˆTDI…ȬÊz3¦&ŒL2>…ˆˆˆˆ´JI…HeÆ0nfÜÈã]ˆˆˆˆÈÏ”TˆTÏæaX‚ñO&ïC$§xþ37› v>Fp>M+¤ð-DD$—”TˆDó4ãVÆ-l½‘áeøn¶GvX/àH=‚÷#ã¸ÿúr³cAÆ;Œ1|ݯBD¤)©‰‡Ï£72neÃâsˆd\“Šé}¸‰q3ϧ'‘Ügݹ9™±c®Vò?Æ_—©àƒˆÔ%"ñka<Ìø'ã5,$«2žTLÏêò\º5Â}Õ�›ó+üKŠöâkn‚ˆH(ADâÖÀØš1œñ-#C!"Q¬ÈÆséF¤ŒÏiçôݨ<¡0K0áïî‘: ¤B$Y/3Î�H6åí;`yÆ5l¨?CJËyŒ­P=Û¿·ðµ® ‘‚SR!’›pº±çyŸ@Dâ´.ã6Ö‡ aaBp<Üudü""§¤B$Vj &ßCD’2€�þçK"9¿At;ñ5.‘SR!¿Ë™LìÁ˜‘l+BÁŒõÍl´'µÞƶˆÎŠ¢l ‘SR!k �ÀdâHˆäCQ¾gŒ`b± â× ñX ""¦¤B$“Ö;q!Dò£feÅ`%_ÿÍÄâ׈WÄcaˆˆ˜’ ‘èl ›?qD¤–·2±Øñùñˆëd’’ ‘h>CPáiD$+®cbÑñ�x<‘SR!âîMÆúL(ÆC$ŸŠ4üiz¶X� …ê†èþ†èÞäub$DD ¬"ââ9ÆVl(|‘üŠRýÉæ¹”LnÇèÂèÊXÉ™‡q/‹µyž~ GüÝÑüÿá�ÛÁÝ1)¸šÝ¥âEº¥ ¥>ÝÇØ•��‰É1^†€ÛJÑf)ž#>ÿ|Ü¬ÃØŸÑÁBqq»�¯3Òäm¾N«.õ,‚½«uŸÿ·)8 ©Î Œí•Pˆ Œˆx}Çx2,ü ãwŒH‰J+vcR°7"àëû”›Íï£:ÔPˆH½PR!R¹?²�°C½l"1/œÇóêKÆÿñÇ•g#^—1±Xðµ½Á͆Œ{+x¸ ‹<Ž¿3""uBßDÚfwdaáZˆ/Ãq³Ü,ÞÁO_›Í»¸…±:âñg¾ÞS¾¶ÎÜìÎèËX•a ËÛŒ6ÿâ>×O©#J*DæÌ»³�PÉÝÉÌàéµ`”É©R"&‹óû â뛋›»áþ§7�щ¯ùˆˆHì4üIdö¾aôÊSBa�°°¡ØS9M‘ÙIüÆ�ÝíglÉoFt6 ütˆˆH"”Tˆ´Î&dnÈÍóÈ &‹r󂻺V¥æiþ»�™½¼¬Sa+dß�è‰:·BDDZ§¤BdV/#XÔî5äJ–DØÚÓ÷N´g 滋1?Dâ•ÚVž‹-Üì†`ÁÉ(¬·bˆˆHì”TˆÌÈV½í‘§q×Lº#H(V˜ÍCvB0j}ˆÌ(7+jóœüÁZQ‰�&j‹üâVÆ>l¼LANð4²Úù6‘uî >‰1�ïï¯ÁÔãçaë/¸XÄÊÀ"e|ÍW#zb°_ûË(¸p¢ûšŒµ+aƉ6gì‹0>›Ü/.«¤gVX©kÆÆŒ�ì‹ÖØñ`Õ»^`ذ×çÂD6ø>í}m� $ó’ŒÅ§ÛÚ�¿÷ÃøÁZ0ï0æ{| ~öýû‹M‹†aíÐÏÃølºx�ñ(÷Í+�ª(© \.À•<…lÇß ¨Î�Œþ|¿“ u�ÇÐ#Ül7 óú )ãk¶Eòª]„nfçòµW5i›Ïkׇ=P½Ãù\¯"|�ër³ c=†•ä]Õ³FU3‚ÞÏðµ�G‚Â9.w¡z·ñµ ›Íß\››C{!hX»²óÊÜÂçúÃ÷¹47G0öc¬7–TÚ÷È`¾Çw0ç终›uQ%þݾH _cnögìŒ qˆâ#Æ¿ç{xÒ&%Rïì8<‰Œ �#<}NáæÏp7ÁÊàïAê�£GÜÉsQ“¤Âðuá&ÊÂrÏðµoTÍ/ð9/ææTo>×sH_—5šm_üÁªäqÍÂ÷p ˜p)Ml�àcfú[Ö+óGƯ/ë½±Þ?Õ¢wnf|Ÿ�¸ù#ÒJñ­¸“q!ßããhýy�nBðï%ÞÖäk³ca£’a7lß\™-Í©�z·oŠ¡ˆ–PëË¿µDòÇî˜F¹1µ>�ýy�c|ý+†CÁìnª-ê—DBa6eÜÌçzƒq 2ˆ¯kñp_X¯JÜ …™—q<ã¿|—ÞªØðùíûêˆ?¡0»0ãs41–CðuÁ°9�–ôwBrlÎ+ù\ï2~i•’ ©Wß1ú0¡ø'r‚²ö »“t4â± ã>»(CêU”;ˆ5ëmæyû67�Â�}÷¹öÐÔ\ØkòÒ�tncõ¯ås[ú'âé.6_‹­cbó!ÒØ6?Á,k\¦Ú~²^ÆK’›¤Ù"»é´2Нm ƳüñrŸKZ,Ùn½¼aÕE™Ž’ ©GÖÕ¾1&£�¼xÙ�²&ãDãd×€Ëù÷ÿÂÈM% ‰Mî¢ün®F4¹K*xŽ®n�z¸ ÊËîfB<œ“Óð†Èƒˆ>v¾Z‡2H«·+,ÈaÈ×Fzì¦Ó¿ùÜçN÷ÝàÔfäï7"Fü{6‡ÄæýÔ²¢¡]?^ækÙò3%Ro¬ÎýúIO>Œ/ZKpc:6ArN`ü‹ÏÕROª�ä?½Z'¡QÃÛ9Þ‘A£> .‰1±paCu.GíØ"£�$½ÿ¾M:¶*mQ6´î^¾Žùàx#!ΊŠá|ª X‡©Öìfßøšª*úPdJ*¤žØdI›4ù.r‚«Õ¼î4îPY/Èã|Î… Ò¶šÛ'‰7ÃÝêÈ ž“VõFÖ±´Ä"jï©krºjÏ&ûÿ;©¡Pü»6¤ëï¨=»ÿÒïú™ÝðbüÑ 4$ål¾¶ëÓ—EJ*¤^ÜÇèY«j5.†„Ý™\é±îäÑaE‘¬k‚»Åû¯™–нÙ¸3Û›_°0Üå½doÆ_3îS+‡uˆ_œÖAP¦8uܶ“ WÎòP£}ÿF�SR!õàåS'"'xµZóM-J›•e¥‹º�ˉÚÓyѤ9FÝ•­+¥Ñž4›$;îŠ0—ë8^/×CLø·ìFÒßP1Ì©°áN"û¶ã{=uLI…Ý™LìÇÈÍÝ0^”ú#¸3YËù –X4)±�9ÈÂ9õ¢Éô¨ðnuodß>|­®‹(eͪ8“[p/×%�§eNE8oçWÈ�“øšwE�RR!EeÊâÅì÷È^ŒÎáædãÜ´®î¦¤'"JMåý.ñˈ&Í¡….â¾~Y)m«5rºøñ8Ùe«FÛâe¶¨›-üù1â×-ŽÆ$ÿÆQÜô@�¸öTð÷lÈÕùÈŸáᢔu'Ö2_"ñcw&÷"Gx²d¢?²Å‹v’ûóˆü¢Ö%eíèw<6¿FPþÒ…ëï%.\d-ŽJOw X)ùî¯gó\�¬M°cG¸ÙÜJÞò9^E6Œ@pƒæ_|M?´ö¾^›hmCMmÁ¼uÝ)ö|pVúû?ˆí‹vÜ܆ìÎ%š»gk`åv-Wê©�¢±†o¯<%aU‹‡�½„bšu”ÍS¹YÉ¢/á.ËÃû¢.ri•rVäµp7Æ?f—P[L�qc'Å\ƒ}Q½¸{ËÞ`lÄ÷b7B®Ÿ]B1õ‰=ïiÆøcWÆiŒIˆfC^'×…;멞ñy…q‚ž«$¸0߯íï¥�$TW2¾E‚‡?ýñO´óÁÖ·°¹/+„ûÁöu'Ǽ}ÿ>‚øôå±àr>äš’ )’÷òZñ×EÂóáÆ ÓÊÊ[ÂÉxÇŽyÆp†}/͸ ñøKX¹ªn(©�¢°±Õ¶¨]Ô‰›©áÅfynžEmW­ÆVŒ›µò¶„²2Á¶pI¢�©?�×ÁHh¡Žg zÝÃa+µðO¾îCàˆ¿;†›MŸÂÝ^pÇœëµÛ‡ï£ãÙj~‘�·õ0VE6ªNY�MÔÅþìfÝ|_§1*îÍäc?bؼû^Ž:gËz„N@QR!E`“ 7æ… ® ‡‰ã¯u·Û¢v+#_lÌõ5)FRQ‹’Í•è7Ïñ:x âñªg EW¤o4ß÷>ˆA8'd{¸³õOªZÏ!\/Å5™Æ¾ÿ6áëÿ'ñw¿¶Ä 17„«™¨ÍÇZOÁވƆ?÷‹2¿'ì±ÛÁ�¿(ñ=åq^ˆ%’w·ðäïËø9Á Œu±>ÉX ùt ßCì‹=IM¡×)Ê�ñšO6Ÿ�áæbÄǵ}°Òw$bÄï»ás:ÜmŽêØXÿ(sÖ¬g¥g\=õü;rsbRåœ +!¥mz;Ÿo/BÛi¬7V*ù)¸³5©�pIDATföC�PR!yv9Oú=‘#lŒ[•›06òí¾—!õ,+=Q&¶fõf„ë{úâã:,s™*5±½Šßc?BöÜl€êD]‡a/îƒ7#þ=»qKÁ“*KÊwFüýY„7,­‡>ʵ¢n’ •”•<²ÆÌI<Ù/@ŽðÂz"‚/ª¢ÌIøßÓ[üFAòªÇb“Šë �¬†oÃWŸßÂÍ"Hן�»ÓÍëÛ-üñpT¯[¥äsØ ¦( þ�¯u’qcÑì\wQÞ[n(©�¼°úÙ½ó4Ô&¬èñ0cg['+öJþ8'<£.YØp‹2ÁµîW‰·á7Œ�7òÿ‹àŽjÕ~Q†à¥ñ}à:Iw© ç:wÅzxNVŽ„…k m7cø:£L¦®”�#®C˜¢”‰Î %’o2Ö kˆçBØØ± Ouqw‚úð=Ÿ©UN¾LÊJˆæMÔ‰0y°Ÿ`œË8•ñ‚»Ðw!zÏŸŸ Õqþô¿¢®#P‰à¦Òa`�áÆqûÒi8^…ßl?¸^S®C Â)·ÃÍZáü™BÓœ É:›¬¸U ]¼± WF}„±,êˉ|ï�Ø*­�‹£dc VE4Îu쳊ç 5ÎÖ@0,ÌJÓv ÿ9jV©´nV6#ÁM›ÃÀ»ó®ß#‘[³ÄÎw§6£Ý€¨àz± Ü5!=�1…;']VªÏ %’e÷1vÍЄÐ6Ù¤e EVÕJÚMÜÝø™½Ƀ(s*ø9· ¶6E4±Ôõ¯%~–8ØbmÖ+j5õÓœÓ×cе±_­Ïᦒ*XV~×õý7!%vžó8³Ä"J•ª¶¸®ÍbÜÒJ0ÍÃp× J*DjâÆþ¼˜e¥~›xÑ݆›1:¢~Ù„í»¸/ÖÏÈ�l)¶(�œ‰I¶5—!ºáÈ®«‘üZ¯3nA°NÇÓ¼·Vžt!H¢¸ß?å÷Šë¢r¶FˤÇyM˜ ¿s]ÛhqþýÒZ)\‹ÊµÊãÛ(8%R w1~�§u x!±úÜ÷À­6u=²‰÷6‰ý‚Ù4X$r5T…çሾ×óY=&ùþú#XÄ.N6wäiÆhÆ›Œ·øþ+jRÉâm­Ñð§ê|€`¥åjÙqrRù]Ézîl_üéè wo¡à”THÚ.çÚ‘È^Pm¨Å�Œv�¶|ˆàNòåY³.?sª’zÑçáªÜ\Œè®C…•Ò.DÆovD}²»GVåÊæ¾lĸÑËÑ*ç‹"ßU¶Ò±[ò˜þÙ¥Ìí ˆÀ†žý“?©§67&Ž•ÞmNÌHk32f;¤7üìmÓù KÀÏBp_Ø ‡'Ýo¯ñ½]Á°µ,f{óІ|1bØð?+JÇÜŒûù^îFÑð'‰Ê&Y7c®*ðÂq&êìÂtl®‹Í—¬ NRPv]²RÖo!ø:ÿtà8Ù”¿{%ÿFÕ›ø{V”ªÚÄygZ7+Ý�ʸñØ& „Ç–]ë?gX’½XYî¡·…r]œžA8< ÛÖ+hûám`ÛV¤eÄïhÔ%…M|´I¼QïI/(vgöoˆVo:¯ì.Ø`cÌUÁILQ'Õî’§Ês!¶.ÜÊk›-Vw6ã®puâVñq6�eÆp_‹bNR[±hø¹Ù$ãH¦áÒa¤Î&jWÛ nç/Ïnüýñš/Œ8Óœ“�|o¢Î(©W¶‚kŸ¼Ü 4¼@Ùª›ÿbl‹úb“Ð/águDfT´»ÊÖ˜Þ†ÇzW¯µ²¢®I…±‰­7ؼֽÃÍ»˜q~ƒ­ƒa ERóW¦ÑDíhe¼�qVËß;‹Çòvüqä˃|í±UãÊ%âÂêÙœ'Í'È ?XèÆú¨ÖñÆüœ^‡HñÙ°>K(žA>Ù8òÓ�P»É¶þ�ÝÝæ÷Õqüñ"„KOÅtlÅp[->ÊZ.i²af{¡Néä—j�dlœ³„Âñ±†F=$VöwV½>\ …´¡(w•mh_·'Ö˜œ¶F‡Ô9 V‰« bûÂzÜl¸^†jNdì�§5ºâ¦¤Bªq+‚É�ß#'˜PX |[ÔnuÛÓŒ½”„ý?•„•:rcݰñ‘wg ÿÔ®ˆ‡•÷}Ùò1D­*ÈßAb1ÙeÀmŽi“ËsK'¿Têrž,{ä©ähX«û)Æ’(&û,nflÂÏÅz�nRIX©#Ÿ!X){GÆ�(¾»ògdÃ!p3/$²px›°=Ù`sjöZ¸?laÆ­mM—¤Ø�§MùG¡Î)©�¶X—ã 3ÆmHŸ•e¶ó#ȈpîÑz¾ãkíb¾)ð9d*%2;öe²EØå˜¶2(7—£8P­§èƶü,Öd\Á˜‘xäaòã{†Ùñ¿Ÿ-‡‚³aŒ6Üé¯pl‹bn?Ý:6ŸÂÍ&�ØØçÁØ�?�ô åsvg¼3Ý¿ËDÅP¾¦o»òÇ_1>BúþËXŸ¯á8È ”THk¬Ëuã<�´’uŒ[øã‰(#~cu~ÛämÅrwõ£IDAT‘ˆ¬ºœUÀ±»€Ë3Ne¼†:Ã÷l‹uAò½Ö0;ÐVå{J¦qí ­·µ€RÁÏæ¯J_�äØâ{vCq`+ÿm.d_£­;µãdí–¤Y5ÅþŒÎyZô7MJ*df¶¤eàY™Ö&&v¡³ù»#ÿlQÁS qú­JÂJÂjÝ£g½nÖóðãÆ1Œ^<î—´»€š/4µá4.ìµ°Æ“Í%‰³\¥ý­³+ó9®kå¿¿7óº¬ Û °*gŒý,”øwÄçZ†õLl6‡áN £z‰S´j” ¡Ð AON× «0·;Ÿgê<.†V�Ÿ�š}¡ð‚“‡n÷zc•G¶ÊS�eF‹rcåæº!ßìBx ãvUpÉ^k¬çäToƒ°ªSœ¯Å&«nƒ :�%ËTø«6évD/ñu=ÚÆó,ÏÍJpÓœ§ï’¼ ¿톚õm�êz¬ü^ÆM•Ì àsÙ°¸Ž¨Î[üÛ+#E|�«pcÅZl.JT_‘Ìzîìܰ›•w‡•¸¤J*d«ì°+Ož‰È Böeg'~­VŽ�Ê’›³r÷ûˆHfe)©h _ßܬˆ ˜V�醭ßa=ïðuÔbü¹¤ˆÇÁʨ/6ÝÖRh=á_0>ª¶ÐÿîRp÷Ÿk Ô_û"öâáv‘0l¨Ÿ%SŸM|½Y,[› ™˜t#5w O¢ƒ‘#á�:K„AþØÝB›/aá>€Ì‚ŸïâÜ� ´¥†€‰´�ç‰U‡{R×xXòð âç:àMÔ÷‰%R_@§¤BÎæ w&r„ ÎÍŒq¬¶¶ÖlžÊÆuªàÔ:~¶�L¶ß“ÑžÑÀ8 ""RK›Á�&4×MÔ®o‡å0¡°2r6Î1O …•„µ¹*k[õ%³²Ï•aÕÆÆ2lbûð?í‘:ÃëáÎŒ8'bGåZåHÝPOE}²Fí®9-SÚ̘„_�Ye%a­šÊžÓ:~aÎÏÍ¡Œ˜ý¼˜åø8+oø0DjËu æJUxÍ[–›áŒ­Š¯¿B ñ5l·¹‹ß§1ŸH²C=õÇÆó÷ÌiBac#ßB¶‡ÃØB]V3{)¾Ö#•PÌÊ&Ø3†!˜ôwÚþ²ú DjϵFÿ7©Ž­¿`ø³õâ>Î3«•³áæH]QRQ_¬òÆy_´…¯ß¢Ï"[žD0`E«™m+~BfÀ/Å-6æ ÆQŒy*üÕ_ó÷*}¬HR€›4å’‚àµî÷Üôžé_oÈx•ÿ­?RÆç´žäîpóoH]QIÙúñ2có°2Dî…ådí=ÕrnÅd%aÏWIØÖñs²ÏÇæE b¬ ws_‘á±l7cÖ­î·àó¸ÕÍ;©�±žÜ<ÖÆÃlîÙi<®G:¯çA¸õÒY�õØÿ©ºØÕ‡‘ŒEI(L8 êDÔ†],ÿÄèÄ×±�ŠYñËhIƹzÇlà( …Ù"5ÂcÙ†¢tEõ>†HÂcìŸ<Ôz1³ÂÖû‹„ðoo‡`q<×aÕPÔ%Åw‚ÊC…ŽÃ÷dãòG#=Ö3rcI>÷iÕ.TøEÔ�q#‚¹%§"¾uDúðï. ‘ˆìEõ@PÞ¸Zc!R™0–­âñ½òxþ/cPXø"2[¡;œóf+mGvz>¤î(©(¶ËÙðÝ…1 ŵ‚Uc“bÃôþƒ 1[‡q•JÂΈ_@�Œ=6¯äEÆÞˆ¿²œ5èv�HdÇüÌæ…H¤Ø*0Å14²ÿàqzD*Î÷¹�±òé#F?ó¯Bꚪ?åŸÝaß°Þ Ã}`/¯œÃC쿊`AžÓ”PÌŠ_n›2¬÷Ææ–ØÐ�,%f¾¾­ R[01í„Â&Èþ"²ù{ Vz9òÇÖŒÚX …%ùö0‚Eí¾‚Ls‚¹%ÓX�˜MÀ´¡a�cL„üŒ�ôvŒ}V�ÄViµáE.5ùÓ² DÚÀãÙ&eï…ôý†×˜7!R%7Ö3l%¹ó2„èi75ß…”TäÙ Œ­µbåŒÂ2vDP6Ï&fZi»Cf`cy§óGë庞±>òAI…TÂÖ—¹é²Ô·BÄ�«DfÕ nF¶]Ç×j=_@$¤9ùtOä3 ­ µj¯’°­ãþ± ×'1B~-ÏÏ÷=ˆ´�Çû™Hg8Ò•<&‡HLxìîÁÍPÆâÈŽ‡óX¿"3QOE¾X"v�Š9³¯•PÌÈJÂ2vdX¹áW�ï„Âl‘ ðZ`=—+!¨ô–”ß)¡�¸… 3®€`…ë×Q{3ÖTB!³£žŠü°y{ðd¾"âi673 ý «Iº“箩χõ¸9Ÿ±âa…2Næ±ø DÆã·37»1ú3–Gz¬2ÕI<Îß‚È(©È[ö~;žÐO@¤<½:!Xõú@+�JËŠ3ž¶ØØ¾&Å.…êYA[Ü.Ê‚›"ÎÂ*x¿BP†veÄoã6ÆM<ο„H”TdßûŒÍyR¿‘6ð´²ÅÿlÕë�Püá�VuäYˆDÀs¦ 7=›"˜ k‹‘-nm¥5¨¬ÂžÝ¥½‹q_XB$x ¯È͆Œ5¶Ø£õb,†à^¸�_·‰Ö6$Ö*–�gŒæñý8D(©È6«û܇'ø'™ žJíÜqµd¢êÇ1<7CDDDjNµ³ëIwb•PH«˜L,Ê8‹?Z¤á¨¯„ÂlÉ„FHY»MÊž‘™„“õl¾„õN´GýêÉ ÊžËÃU5E~ÆÓÅzwF0Ä©7dšex¾|©) Ê–S•PÈô˜LÌÇ8Á$º; „bf=!"""5§áOÙÐÂ8€ Å�ÁÔdÂë²^ «G®Ò©³gC ’\ÔLDDD* ¤¢ö~bìÊ„âHÝc2a5Ç‹ þ¸´mcˆˆˆHÍiNEm}ÆØ’ E3¤nñTèÀÍþŒAŒu Õ˜ÌèÀsHבROEí¼ÃèÍÆÐ»�ºÄdbqn2g, qÑÁbOã!"""5£¤¢6Æ è¡Ðª¬uˆÉ„­'q"cw�b‰¦;”TˆˆˆÔ”ª?¥ïaF%õ…‰DcwÆhþ㋌} „".õ¶èŸˆˆH樧"]·2öbBQ†Ô&óssãhÆr�$t‡ˆˆˆÔ”&j§ç<&§@êïU¹9–ñÆÜ�$}Ísk!ˆˆˆHÍ(©Hž½Ï#Ùè¹Rx<¬·F°¾„mkv~Õ¡åy޽© JÞ¯ÙØ¹RXL$:rsã(Æ�Z°R¼J*ªÔuäÀ?{ð7A�ðŽËÇž�çËžÿü�¼çÞØxè·�Ìé6rà ~Z»¢J“Ê-;ŒïwÙ÷‘º ¤"9ß1¶bBñ¤�˜L,� $ìa ¿©-KæîƒTÉï̵>¨/ø¿=Kü¿y'Nm¼¾Ë>ì‘~nÛkÈý�¬XÍå8ihôUŒB¤Ž(©HÆÇŒÍ™P¨Ìe1™°;»6ÄÉV½Ö9” «AŠ`yÏÃþ^ûwmø ¾©Åo¹y\ßKŸ„ˆˆdšJÊÆïUÆúJ(Š…‰D#cÆÓüÇ'{@ E–(©(&Kp3¨Ákx¢ëÈo±ã(ˆˆHf)©ˆ—ÝMÛ� Å�B`±0ãT+ ßÀØ’EJ* ̃·"7ØX¼ÃŒþ‘ÌQRÏÝ— …&‰ÕWñÇ÷ç2–†dÙ²ü¼ÚCªâù¹û°áQ×°çây†Ö'É%ñ¸†±=ŠI�Üb£ÔclÏxˆÿø ‚ŠNsAòbMH]`ÏźŒØk1""’ J*¢;ƒÉÄÁŒz[̯0˜DÌð¯m>Ì=Œ- y¤!Pu†½˜X<·Öˆ#—„ˆˆÔ”’Šhd2q$·˜Lì‹ Z×Pƪ�<[ R�Ü ab±^»RCs禣j¶Þ†ˆˆ(©p5�±Šë yg ×Í )‚å Uñó7§¢U¼ÅK(�èòØÀm ""5¡¤¢z_2z2¡xRZœ°8–�TÇó=¯ÉJ-øw—Q~ I�’ŠêXYÑ øåõ<¤øY¾ÌÍ7�"PRQï<4–|ïÖn#ì I•’ŠÊ�A°¨Ý[�¢yRJ*$à㺮MûADDR£¤¢2#=˜P|)¢§!E°¤Z…þ4Ïkàÿÿ»ÛˆcºADDRÑiË­Œ}˜PL�•æUƒ­3²,ÏÕ÷!•r®þäÿЃ÷=ªåùíü²×…Û®üýÄ&×{æ�×r/‹µÇô»äkˆˆH¢”TÌÙl œ):õT‡ �RRQ9瞊Éå– Æ÷»ìcD°úã'Í×~Êë4 ´?³›þ¼ÞvD¬¼¥ýRùoüA“·ED¦áO³7H E}àçü7oBŠ@ó*RÒØ¾\FD¯ö<ÿ»q}/}rLß¡GNn߸Œ�òïØÛ)Q™³¦Ýº4 Ø""’(%³šÌØ™ Í!�z2RK@RÑÐÒ.Ö…óÆ÷¸øËæ>Ãþ¯qÞ‰+û>ÎFŒJð.[ï¹Ã€ˆˆ$FIÅŒ¾C°¨ÝÝ�zó¤…TÌ‹°ø]KÃäD&y?¿þ•?6÷ræÏëÊäâUÄÁÂ-ßw<""’%¿°.÷�™PŒ‚Ô#%Å ¤"%q÷TÌì¥ÞƒÇ~Ѿ¡;|ÿaÄÀ‡ì:O RO–ˆHB”Tl<½­A<¶žIDAT¡!0õKIE1(©HÉ-íM*Ìû=.þiLß¡[2!¸Ù$ð†‰åÓ!""‰PR<‡`•ì õ,žaRkJ*ªàó‡hîýñ¾¾�û•�C4·BD$õžTÜÇèÉïÕ¯ u�ÇÀGÜL„äÝb�T”æž�xOÅϼ[[ç�°|?R•6ë­˜ü}‡} ""±«ç¤âÆöü’QCR¦y’wê©¨ŠŸ›µmwè�ˆø¥wDD$võºøÝYL&þ‘Ù¼Šu!y¦‰¸Uñœ{J)Ì©˜ÙؾCë:rÀ5<÷ÄÀóÖïúøQk7÷¼4õ›ÝF³`¹Áßœ=.Ý™Í-éÁ_Œ;q¾ŸÅ}ø‹r»½áãCÞÇüïù¶˜cCé…É ¥'¬ì.jÀwÌ>¦t¨øéúıË`Ê”]ùd«ó¨\’O¸·Kùž·÷W;~gÊ—ñ�ï{_xVXÅã~)•GŽé5¬ ’+댃„u9ð^~óTõKFóó: ë>ú¨ü)¥ëP%&jw7÷rd 5¼–CyÅÙŸGugûwÞtŸ÷L×!&XjúÃó猩Ÿ5pKÉó/z±÷Ð9ÖéÖ4àDþ�íQ¥rû�í7ô}ˆ“zJ*&0veB}²Ÿ� ¯­•µ¥~ð6°cNQ3Í=.þ kÓÀ¡|åàˆ=["ᤂ=*Öq¦x;…O�‡Nü¿NlDÿºkÓ€³½.ü¼±ñ¯V% 9ÒeÄ€eùÚOÄWâuw^DÀÝ:ÿ¯?�åþlð?ËÞ‹“’ì½`NØ‹'Í|UýNyêXÉk)1Ùñú Z^r…JÖxú¨E:Lhø›ëGMŸ:»˜úY3 :˜Ÿõ(þ‹‹ÆôrWk�å¥mu>¾ê}Q*a.ˆ³z™Sa]Æ=•PˆˆäŸç—.òyμõí.9°ÎÈcÖdBq›O/ðyvBBø}¶,[N/2yʼ+{*r Óˆ;rß\Q*yïqÿ ŒšP´bö^Œ`ƒóÎ5G³¤¦øYŸÜá§ÒÛlÜ…øõf†w'o0ŒëþØ€®�L¨‡¤Âº±¬dìó‘Ÿy&jW3^>ncú]ò6_ý£pÄ7]ò¾�Ü1Z륳ڳ�óÇ”ǰÁ\õ° WSçaxÞ¹ì¹x)Ë�+›Ç²€7¿í›Ã‘¼�Ûû-/óóØ’:›Äb?ëÿK qœ{,×ñËÞ&’I$.R¥¢'6ϵ{ ""2¦e8ú~®çß�ƒïûÑæÆù~lI… çiÿùϰ�s–ö¨~Ï­í·xϱ1wözÏÖ1r�xÓÒ8qêïu5h7¯¥áYîŸÕ‘K¶ø|w°±ù{Hj,±õ&Oy‘û¿Ò5ŒÇþM–Ü#‚rƒ§õÛ"(òÎÉØ˜ÚO ""³`‹¯ŽŒµâ7L‰6œÕ÷7@ :7µIÉó^d«¾ö½Ù˜;}ÊFĹȟ?õÕ³Þ¬nMÎ/ùþmüÇZ�U?‹‰Å¥�Äu5 O¹�ó@¬ÉzA<ö÷l÷ÅO­5âÈ%á¨Ôâ×ôfIÞ5©¸•±Šï!""±û¦†ÃŸÌ¸^—ÅÄ î"ß5ï6jàÎ%”F°5“©õQظڔ‰ÅcS+OÕô…´\ËdëDÔÞ‘Ýš^ILçÇlQ.ãþ¤‡;µ…Ç~÷ö¥†ç­41L*O©éu-T\΃zƈˆHqy^ÙÚ«?~RUU|¦×eäÑÛDQ~×t@YÙÎÒävϬ3zÀʨÏÛYáá�®#ƒÄ®Û¨£7m({ÙŠõÈoiÏCO8hרáOQiçYvyê#!""ð"LÔž«æwôÊð_@&ÿ´6t1`ã’ïeMÏ[¡q2™ºF@”?OAÜš³*DL«ÈU�,1÷}ïŸ(ßk,ı^+EI*&3¬wâBˆˆHâ&_ûae¼†J%¯ê!ë<5h ~×ÜÉ»ó|”T1±ðK-×#×9YTòKW¯6âøL W˳ŽS&\Æ^±åPšSM’ [TÆæOÜ©˜¡¤lLl7×ˈfYT©qbùföï,�±·]›žGE驘Êâs•&]‰Ì&fó\Ø¢êOÑä}ç}† ÂÓ(ˆˆHjæšoJÍïè½Úóüï˜} wU êÖtô‘N+gìÒ4 í2Ÿ™Ä$k_«Úqf¥[Ë>®…ÈtòœT¼‰` Šñ‘ºÄ¾–/áȪô±SWhö¼¿ &¾�ØSt ã`¾‰ 'z¥¥Çôây�-�øŸ7-ûþ ¾¾[|ß�­Š!ÓÃAâß|ÿ>ß+ï_öZÖ›T ¶Ê ¶Ÿ×öEK ëóò1#F ^Ãgí¾øü8O+"&<ÎßçQöç&í-åòš?–Û-6õ|ðüŧ ´Ï—Íx®\Èm¢ËhøS4�ȧç[ñhû ""âÆçýëÜlñ¿q�ãWœT´÷[Ø ÷æFDl=ê—¼¿Œí5¤Õu6^ÜôÒw¸±x‚1dÙ'Ž�kÑÉ-{°Õu:“šU?íõØÛ²û˜¾ÃnExþŸ&56^8¾Çų$†c»^ð7¶/žg\gë´/5Ú0®8 ²té2jà^c{¹ R•Î�ýv!¯Å;%¦kÇ[JþÀq½†¶š4¾Ø{¨�H±ø/cã›l_ò½!6_’)yL*žbl΄âGˆˆHM|2ižLLÞõ||ãžSx%ÝšmÀ³¾ó¼òͽ‡ÝYÍï½ßãâŸÞgƒš?^×­iàI|¯ç! ¯t.‚µœj†ûâé”ú¿Ôû’ÿVó{ãû]ö17GuqÌU(•mŸtA^Ù·Õ¶•TT©ÔÒîh‡QWüÉ÷ü“š{­ºÌïØ>Ãîææîpµô³ ™‘ÇáOÝ[@DDj¦qâWÙ¨äyßÀ•çWÔ0bãçDá[oŠßgL• ÅÌÆôr~ÙÃÞˆfÕ®MûWó ±NÔöñÐäEîýRŸêŠé�éwɘò‚í{ èÍqÆ›“kt1Ði=ƒúæGí)úÉóüm]Šé�é3äÌ wå1Ûºdš¨Mwž-4t§ïûG@DDÜyù®þjGìåhsüô:#�\Ž;i8²9SJ¥ÞÍ}†¾ˆØp›€<‡À?«âïÿøæTøw31Újü:gMBD6<ЉÅVü›O"6n†T¬ëÈ6ô|I8ód"°å‹½‡ŽD ,Q÷#œŸ3ÓœŠhòš‘Ùáå¼Xÿ""’ºÆeçËÊÚóÂ]›“ KhŒ4ìÉCéW/õ<1jî=ÌÖ�8 îzt{ìË+}p<=þ‡?5ÌkùQK,˜ íô9ÛR�_!ß÷Na"01jî;ä_¼=rb žŠhò¾óNabq=C�ˆH•¼+jg…ß9©ðáU�TøÎ�(«î4¦ïà‡�€1½?:‡ß}îët”ý]�"6&÷›Z8f6‘·ìùÇÕç-ÐmäÀ�Šð‚Qq2:3ž£™ E¾iùö4dï@jª�ñ}ðâ:DD¤b¾6uôƪC'"œ“ þ¹ÝG XŒ�rZÏ€ßI&v,Ÿ„¤x·¶”Q>®"”•ô~˜ÓmA©7\ÿ²‡[^ÙèÒ/� q}/}Òîþ‰·XçÇ®WÑ##ò<ßi}Œ*9¯’ÍÔzcH›ürÉy?ñ8}€½J‰®+ÖÜkð=ü0ßDþM^שhM7ƳL,6ó<ï]ˆˆH|çöb“m£Zç©AKxýpä{s‹ï•ýM]›Ó¾ïmÔmä€&$Œ]ÎwŽZüu¬‘c^ìϤÜ9Óû£›»Ž\ê"&sK Jì±ÒêÚð|o}çó¡ä9'}Õ`7Ãfƒ!5Q¤¤Â¬ÌxމŖL,š!""ÉqV#ú�[)GÞ„)+Ák€+Þ¡në®æpÄÆíêüÿÕ‘°(]lè­QÑã‚ìÓõYnD¼[[¼‘o‡ËÂxž·€-¬®ƒ!³Á䫳Óçûߌí5ô~¤`‚ßþƹ½ÉÎI…†?ESÄnžÅ …rî¶‘6Ô8¡0žWZQxþ«süÏž¿ŠÌ÷+Jz¢ *7”F!%>ÊÎÏÕØØN«3·�™¥Û>ò¼&¤äµ~~îà Ž4ü)š¢î¼¹3±ø5DD¤U¼Sáôîî]1ñàmŠ(ÊÞìSߟû¤Ô\ð½U� [£clÏÁÏ %“Ûµs¯´å——ƒÌ‘ç{nûÈó›�"ÏGâÃí¤uEÎÈlA¤[µHžˆHAEè‘æwÃıý†¾?»ÿÞý‰Å—EÁ±'fáJç\ýÉÃë6f)ßãâ/ùÁºMŽ/£Ø dDÝF³ ?K§!óì9p^=݉ç9—ZÖð§hê¡›ÇÉ»""2#/Â:Þ­-¨¡ÕF¿(_~EsZç½4§ÿêOiÈFu«±£j‘Jç:ü‰wŒ£,JçÆÃ'pÀ3a1Èly -V®/ž>Éœ”}ÿS8Òð§hêeçÏÄâFÑ&¦‹ˆÔ†­ÌhTs—&G[éÚÃãsúïSP*ü÷?ÀR§vDr¾FÊ|ßsJ*¸7…ÌÖäö%çöb¹Œo‘¦’çœTH4õ”‘íŽ`ž…əʯib‰ïˆ(¼rÓœþs¹ R!Ï}¼{ŠcågÖyäÑVÚr}D0©±Ý+µëÐá'L®é¯TÌÓ0¹Í*^îÕŸÒ¿ûïûXÜePæŸ�?•s¥¥Å+¹õ'´ýúñÓ×&c‹ßbÇÁëH‰ç»wþM=š~‘¼· ò‹Ã;CòÌVH> R!?JµÐšið½3£-Ðà7O�Ô;ÞDÿ×¾|~¿¼Ì†íçÈ:þóë_™Ø¼Ï÷SO*<8Î�CÓhIDATðñc%ó¦6À³yÎ0¡H¬·e|¿Ë¾ï6r \x(¥}h~L�Ô뫵<-±Ð"y2Íj�¼s«ü"¹Ñõñ£ÖF‹©\¸ïy÷µõ˜1ý.ùÚ¹åyW�é3¤0«úº/~ç-ƒ´yX ˜~YÑ}¯\uNá¡Í!f1Y b:õƒçð^˜›/‰ù(/å9ÞÐð§hê¹›ÇJéÙP¨Í!u�Ç�� J*òOIE<¸UòSÎѯ¥á2Dä7xÃ+|è»pÀ½³ Ĺ;Ëâ�;&µ»�8¦Ÿtn8(£ü^%�ã±?Uòü´ækø !IžÿÜô@šü’óú5þM½ï<»ø<Àå>�z·"£æ‹yIdJ*ªáçk¢v—‘àÆym Ãÿóc{~µÂGÿNü S•ZÊ}�–†–¾pTò*J y¸L:N´av¡¬ 'ß\xx•Iï˜Z•Îï © edACò&§@ê™z)ŠAIEøeïÔÕïÚÃE·‘Wåó^Œè®«ô�ìŽylýŒ.�Zá¼ø¦6W·@ZÊØ Ž&5ø•%šžWõî¼TRdƒ®;œTÚóè½ÇͼKýN×Q¬áîTù¨-Q3±;è-?t‚„x%\çE(ÛÚàùÿ©ô±ìyž·ÅZ#ŽL¤´ª}îžïí g•Wsã~~μ?®3zÀÊH€õÔps"Òð§h´ófomÆsL,R+‡'µÁÏØî‚ªgªœª“HvXc™wàÇñËé/ˆ�ÿÙäv�çÃA JQ’Šùý†ÇÝØ·!a^Ù»aºµ<•CÙpÿ¨ëÈtü襣È=Sy°á·bÖeÔÀC˜´lWì‰z±÷Ðñ•>¼Å+¹%ÔÎk< hù¾ãé<ØR©0Å¡âlf<Ú7L©¼PB¥˜¬ÍË›×ÇQ@B=Ñ(©˜3«Ø`Ý}…ª9.³Ht¬«¤JIE5¼l””µ±Öl ÎxÕóK÷³i°âä¡[+hÏθ>ƒGñ;À© TðÜ^×)ßw¸)®ñäk=6pyorËøwiåÉægÃêx¿¥ô³¿wytgÄ Æe×oë>j@låE»�:z—R—#¿T]#w\¯KÞâñð1\x8½Ëˆ�±ÛS{ÂÇœ+£žŠh´óÚfÕFçEÄ­ª„ä�’Šb°»©-`%!ß«É"vV §ÛÈû²áûÇ®#Þ¶è¤)ï±Qp#þ¹M¾?|Lï¡÷" — Ïóv\dRË3Vð®üæí[ü±öc[�e3qÿ”Ær?ÚmÔÀ�A<=SÍU.ã~ë�BDÖCÁŒà_QÇзø-CÕ¼‡áÀîÔ—JþÍ«<5 –žqëcOØüËíIåßž_ÿÊo|xνw†çùö]½/ÿµÏ&fwlù© 1_VOE4±dŠu #ã^&ûóË¡âr„’J*ŠáSžŸ©U%*ÏV’w» Ír䆿Ï÷GZö‚/ð­:b"ú¦üÝu xóŸÁ—¹ …½/¯1‰ú¿ ÿôjÏó¿«ôw­ñ5å‡Ç1<»Ú}Ň÷ãŽè×µiÀ+–5÷úWÔ�•We2{?�Ÿë&tl9¾šj\¦Ûˆc:Ák¹Œïi[DÄãã–—ú\Võ�ž5÷ò³ØN¼µæ�€‘«�8~Ë×ú]©°Ä”:ÞÍÏ7Ù2²­(û-—4x ‘ ðuï0åûޝu5à˜±½‡Þ†*ñø9 “qNZþ¤25ëúf½&wÈbp&/ŠgC �‡¡%Œ?@½vEð<ÏÍÔ¿`ó¬[ÓÀù-Ð Eäû_´44lhÃUƒ®#�ÞÓCé&Ä�¯Í÷¼«Zý¿½´éÐ7[{ˆUKjù±}?ß/íÀ_øïîF^ëÁ*÷ð›wͱý†V5L�‰Ð0/†I°³¼ø_±q~÷E“W.=8¦ß%_·ö8›#Rnñ¶ác·`ktoÄgµ1}†¼Ž*uq`ÇJójsfàÊ÷ßôJÇ4÷|ªd +òŽú?Óz~e²yD5¿ÃÞÆûyLFîq _Á“lÞÕRöy©ß°çf÷(:W.{›O=3¶ÏÐ+àÀKédpçß›�?¬8Ý¿K€ÿãOåö§#¯„KØø�žTxØÒóK[vmøûËoæ­Êé‡ÅÙÐ&Vþ¢ü÷ñ„] +§+“�™l^Á—㜘ÍNPFÚ›®”tzoZµ£ÑÎs·+ï†ÙîÄô‘äñÎöpnìNíµ�¼s[¤¬Ž±¡R¨ï6ò~ðËèUÉ]_ã{ y— žÄïØÇÏÿ¬-¿fÛL½ë˜ÚôQç3XZ6ö£˜ŽÍ×áùxüýtaó�öaâ¿�¹¶†W.ýÎŽ-ˆ&jG£¤"šMO3±pž¼'µÇÄ¢™a½OÖ½z´€Z^©ËºŽÙø|öPlÖÜoÈãHИ>C®còr=r‚ßO§”ýí\&$�“šý…ÿŒ0Qû­%²È=·¾1›Ã,ÕqÂz6©§"í¼èlá4[$/þRˆ’*&Ÿ3þÀ—gÈx’'¯AªãyL v¯N.yÝš{})øÆÿöP>i3òÀó3§É¯õ„ à/'y ; ßYSKÔØùs,rÏ}ŽksŸ¡ò—¯†”TÄeIÆ3L,Tš´ØÎšÄ¸Ž±.ÿÑ&r[Mn•*;W!u‡Í¡{ç�°® MBJÞî7|ïgnÉVjìó6bãc ïÊïÖÜgØÍˆÈy� ßÏÎ�D_óÿ¶øoïK>BŒÆôz÷s"ÃíÒíæÂ7åo�æò²ÄñØóü)"�’ŠøØxÇ&&;A ƒ‰Å(†MÈ·‰ƒ1¾�dÑ[üœ4¶®øŸ±п¹ï�Ÿ_ÿÊ‘²{ýl’?¥“šÈ«~;ó.ò¨¡[4Ö÷ß@�YE‹Wîm“‹‘€–¥ßd!�šú¹;þ&"°$û‹v ;òÇQȾ›Ã}Ïq�Ârƒ’Š”TÄ«ãNžØý!…Âë{Œãù£ÍŸ�ßÏ }ª#üÖ¿å†ÕÆô:54¾ßeß3©ÙŒ�˜‹‘üþù˜×ªÍÇôòÔX?žä·ôÂÔ²¹µÁÏæ¿Áë1®Ï°qHÈKþÄkô{Øb‹¨ÿÃ)e¿f%µßïqñO<æú°×¦¦‰lÙ÷÷á9y%¤&”TÄϺ¯á…] 俬` E0—ÆîÌd«Ë·~)©pÀ@næTøÖ^€C啚û 9|v ¥Õ1Çù^y[\5Äôýå†)k±q÷2‚‰×Ç|=òüRfet'ûSÖÛspâC#_ì9ìßÊí6âqú4RÆãî©ry �© œöíÆÍ`¤ŒŸõ{e¯e½±}‡þR3J*’s:Oôë}??_ÚR9[ø�qc þã ûÂtìz–(©pà!û xZc�ÿ÷g”ZÖdƒe¿±}†ýÔÜ{Øõ“J V°ã.¤Ì óýòqLn¶×ëò¯3×u*Z'þü{cú9~y�4/K@ËÀ¹ÍåE6µ¤)±2µLx7æRõƒ®|Ïÿcsß¡›Ø*éí¼–L´7˜Dã—¼mØRÀãÿ_^¹¡ËØÞ—þ²_ÁÊeç…vz²öeÜÍ‹hGHa1±xÕ VV]Ža *©$múÆC #h$ãârÙß„‰Äòl�žÚÜëÒÌ'Ž6 ˜ ª]ZàõIc®Ÿã%›WÒ8ï„åšûKl–ëDí†)fø½1}‡ÝZjW^gêðµ¤øxˆ½YÝÆörz\Užª5¦ïÐ#­G�Ðp$„Éö‹Ì(6lî=ô÷ÓþÝd?;óš{ ¾gbÇ–ÕxŒEBìøçÞ“Éô¯Z鹜 xÍù âL+j'oÆcL,¶bÃ3ö;H’V’–›sùYŸÇíŒc0uµ\IÁó�ªÙð§Z®¨N(þˆ¯á#¾–W¸ë—ñ|ÒkM$m\ŸÁ6au³.#l야C¸£÷ŠknK¸¸¹ÑoðnÛkpêCm¢zqÓKmBóá]Fq†7¹ÝÜ/Góê¹"š:–ß÷†±�™‰‰óa�Zÿµøûve _›‘Ö´²µXxŽü}J¹|}ke‚­§"Kƒ#^ÙèÒ/¸¸Öˆ#‡´+5 à8ˆß“ó"*·2™¸|ŽŸµç/ìÒÁ6¥CcêEФfG¿Lêm†ý›Œ><¡>€Ô æ› H.¬‚”’ød¼ËójˆdT§v\ 4ßvlnÎÜ’±j¥¿Ë†ä8~Q¿Èkɯ„gÆô6ÓmÔÀ�Ãʉ»r-Tñ/²W%ÿ?~cã­Í=.Îüwk—ÇmT]ÏéZIDATjñwægº¯YkWò;l(}Çÿ»ÍoÀ-c{ ¹9Ö¥ù„y¼o&ìÊkÏ÷¶f tÁJ—ûì1ÞÝeL¹¹’…»6 x©Ò}<=ö4jÈzJ*Òec;7ç�®¡u†‡ûÒªFƨüKS*q7Ï©�!’#ÝGµÂäIÞb %oaÞU]ÜóK‹ðB1»Ž{½‰´-ûıs-èOYºqŠ·ÌKòsç1å¯P*}0¥¥üAKCãyŸs²ÚˆãíˆÉKÚg~΋•ëÉø¬ìùŸðºþq‹ßò‘ËjðÝF´‡ê†@ùþ;cúíq¦¤"}ß1v°õ u'œ_s ‚cMHþÀóé,ˆˆHÝcBa=�UÏÁ²üšû ÙâLµÓ7ãa-’WŸØø�À¸‚±ÿq†ugk±�h²»ª±ˆˆ¤Ê÷°9x¾ÿ$%µÑÁ"yG@ê‹Û"XóÂJj‚˜›DVÉ‘¶u9 {צ�÷Ù�.dAyj¡”ªùž÷$%µcCÏ.+Icbñ:ãHþ¸ãdFÍ0Ê‘o¸ïÞ�ˆˆ¤Î&_ss»ça›E'·Œ\ë‰cF ­3ò˜5ùZúÁA©¡œëªsY ¤¢öNbbq CŸE�cãø[Æùüq%%i3³*n†å®¤¦ˆHQ”¾žt©oÅð7h?iÊÓk�8rÔHÊgÃ…ï7Ûªè�HÔ�͆Ý0±ÈFסÔ‹Æ­ŒMù�Ý70&CZ£;K""5Ð¥iÀÞÜüf†éy«´/5¾Þ¥iàï�².� ÜÆvƒ+W ‰LÕŸ²Å&œn.¢&ò3ž.‹#¨u8cQÈ4›ñ|ÉÄbW""õb�ÑVn˜ì5ÏyQG|ÙÃïÇözÖåñA«{-åQì5Y¦`Êò.¥keFJ*²ÇƇ÷fCIãêeæy艂ðáŸ×Ügè)�ب¤l>œÇFâe©Û·0úðǵÃE›Ì¾öüÒŽï÷¸ø'H¬”Tä‹-’÷0‹y!R[û„awe–G°XÑ‹È7%"")Ówh?n®Cnù?–áï4¦ß%oCb§¤"lHËSL,´Úlp߬ÂÇ8‚Ñò3&“g¬‹àX²‰Î-ÈÊ¥ïDDj`LŸ!"èùÎßÿfJÙï3¶ïÐÇ ‰ÐDíü²Eòl5á· 3à¡u/7Û…ÿø%ã*Æî«!³°ŠÖ»8˜±²ï~–[@DDj¦ËÈ£7óüoRad�ï¿Sn,m=¶çàW!‰QOE~ÙÚϲA¸ägܽðKBafœÌx‡ÿí&ÆÆ�°�þÃÖ¹°/+Gû:²MCŸDDjllŸa�ú µ_݇? Yæû·4L鮄"yê©È¿ ŒØ(|uއ”%ÉãkµñÐg—0nå~›™÷£]l•îAŒ,ö¬ËÏ-ïsBDD £óÈA½üò5¼Kµ2²ÂÇ×åNÛ{Èß ©PRQ 6&þ6´nD³9Ü\^ů|À¸Ô~‡ûîkÈ,¸OWçæƾŒ¹P{Ÿð³Z""’9ÝFØ—�»ã=xÝQCla^ßÒÑ;á¥�¥âa.(©(–ÓØàúêPXë]ÆB¨ž••ûã"î?u�¶‚û׆‘YÒf ê-�ÚÌÏ興HfuqL'xå=àù¿aS³­Ñ±aÃòöNœ<®×�ç!©SRQ¯13®å~Ô9­à~ßAÕ¨_1ÒX”QCŸDDr¬Ëè#/µ4ö(—KkzÁüÇNŒÅøó"l‘αT>¿s¾çcÆóvß›l@¾RnÀ_54ŽÖ"vÙ¡¤¢¸ždlÅFØ÷(8Js³9’as-l’×Å*IÛ:î5�q(‚j[IÊÏ` DDD$s”TÛËŒÍÙ+ìD%F �Õ=m2ü¿—høMëÂ…mµnµ&â×›û^‹‰ˆˆd�’Šâ{Abñ †‡ÐbÖTH{Á¶ç �º™ûu2dül¶F04ʶq\g4ôIDD$ôø]ñ-Ëx¦ ‹ä]‹Ú¬½>‚jQ¶ Þéae$™€ÛòG+Ike~@47ADDD2K=õÃÉÛ• ½ûQ<|~ÍÍ­ÈÛ·70þ¢’´­ãç5?7‡3Žf,�ê­Ç}ûDDD$“”TÔ—2ã6ήEŽ… Ôÿ!ÙIÁ®EP’ö•¤�?»Õ¢lhT� íîË$æhˆˆˆHL4ü©¾Øç} v¿G¾ C6 ³ãnÆkÜÏó@~Æä …q+cSþ£­¸j=Ç3Ül€ê¼ÁçX"¤’²2=[�º‰Ê��#¼@?�àÂþ>ò¯‚ž—7ø9Ø""""§¤Bffwvî ç+ä‹·¸YŸñ2Ša%ÆÅŒøY f¬‘ŒRR!­±aq¶HÞ¹È&6ñycCˆŠÂz*2Þâçq£DDDD2FI…ÌÉ©lÄ^ÏÈÍqÂÄ›ÛÁšEbŸ� K{”ŸG³õ$…ë:ˆˆˆˆÔœ’ i˾ŒòÔ€eb1…± ‚r­EÔ…q ã=~.d,‘RR!•°;ÿ�³ñºr„‰Å‘ÜœÄ(j¥Åg H.þΨ×*>"""RcJ*¤R6 úY6\—GŽ0±ø 7{0&£¸Ú3ögŒåçóc·< Y‘üSÃCª±2ã96X×BŽ0±¸ AoË�(¾ž {¿6±ûxÆüI˜’ ©– ¹yŠ�ÕÞÈ&£¸éÁø õÁJÐ^€ $íPÆJIˆ’ qaeNfC5W«Ñ2±hF0ŒëMÔ�yG#XLïÆ‰™’ qÕŽq+©G G˜X¼‹`õí1¨/¶öÈöŒ‡ø™�c¢’´"""%Õålœž�abñ‚¡P£>­Ã¸Šñ¾-pÈX""""(©�8œÈ†é-9[$ï'n¶fÜ€úµ(ãTÆ»üìn`tƒˆˆˆˆƒFˆÄcwÆBl˜î6Ø3�¯³ÌÍ~|Íï h\×+ʶ�÷ÅÜfÜÎýÓ)ºƒÌ»IÊaŒ½áÆz@ïCrê¥hƒˆH*”THœlðl˜nÉéçÈ ¾ÖÓøšßà�W#˜{PÏz„a ê ãö îŸo!…ÄÏö9$ˆÇжp÷__DD$4üIâfChžËá"y×r³ c"Ä,Ç8�ñ?ËË«BDDDd6”THl�K,ºçiñ5&ws³ãÈ4s3~Ëx�ŸåýŒm """2%’[$Ïœ{‡ ÑM‘L,lN� ÿù23›Ø~?Ïÿ2Žft„ˆˆˆ”TH²l肌Gl7r‚‰ÅxnÖc¼ iÍŒ¡Vëþ?•¤%’[díN6>û#'˜X|Â͆Œ'!³³0ãd“ºobl ©KJ*$-VUé6<ÏFN„U�ú2î‚̉U‘Û“ñ$?ß§{1TYNDD¤Ž(©�´�ÎçõŒ\”neb1‰aU¡®�Tb#Æ?oó3þcAˆˆˆHáén¢Ô¾Œ…ÙàÜ• ö\”påë<˜¯÷Mþx.¤Ë0þÄ8ƒûíÜ^À}ø:D €Çô"V¤·ø‘ñ9�ï÷PøÞ;qÓiºe‹�ÚºDŸÕáš6>ªWFDág°c ãî÷÷!u‰Ç‚]ƒæcX¥Í /¡†”TH­Ø¢X�ó„ØŠ'ÁWȾÎ?ñõ¾ÍÿÎh€Tb.«*Ûg| Dr„çû&ÜôcôF°vËba´öXÛü€`¥î�ã#óÚ‘ËÕ»ùžVâ¦c]FW,æ�Ããmó!‚}` ŠÚû¿�*qÚ1·ÃJywbXQŒZyœmìksÿÇxˆq'÷ûÿ�3|/«p³6cÆšŒe§ûÏ–�}�0‰e|�_η7òø~+Åý²"‚sp}FFw̸õª4ÖŒ’ ©%;9žåÉÒ‡ƒ\”på뼑¯×.ܶ¦ÅÜ�J¼Â8"9ÀóÛ®K0öFÐQ�yÂè݇ҷòÚv3â^C¾G†… Y»`�Ù5Q½¥Ãèþ „½¼Ã×ðýˆâpÆ;Çaçá|´]$t•Z( «Îg7í.âßz†ÛË7euT@x¾íÀØACy.8âß²sËŠ«\Ë÷ûO$(\³é>Tï7|moëAüû‹scÅmì†Æ˜ÍÍŒ™Ô|X¹æTH­­Œ`¡¼µ�¼ <‚`-‹/!m±îù=¸Ï&C$Ãx Ÿ¥f‚IDATÚÎ ðÇg4èªM(fǾèû0®f|Èç87‹s�øšÖfÜÂßeœ·„bvì:oE:¬ õß«Cf` Å2Nà�o1ìs¨&¡˜«`8œñ?þm›‰6_Ç\Œ#¯!8ß~�à;Õ9¡Y/š%'vóïcÆiŒ�-s2Ç×Û‹q;‚^§ÿcl‡ÊŠ6ÿv”THX—îSy*IÊFr3‚»ï@æä�ÜWã ’Q¼îtfØÝÍ{H’�}>AãúTd€�Éf\Åm,öîHÞþŒWl®U87%Ïb™SÞõ¶ábA0Ì.nK1þÆxÞ’GÔŸ{nÆI×K«"96çäÆû|Îsó!ZíMàë[•ño‹ÿ 1þí4)©�¬°¾)g‹äÙ%ëºiÍó.ê"™d‹7r3ÁP¥4ÙÐIë±Ë莱»×ÜØÝâC�¾ýì¹ùöDãû·D†ÑTz7:ŠnŒ—øœ¿EÊl˜3‚eÏC|½€•°Þ‹ÓôÖì‚Ú›%åëú3‚ópD£ž ‘éØ"ywñ; 9ÁÄÂ&ŒmŠ`bœüÂ*ÂìËýSó‹œÈÌlxÆso¬¥ÎŒ'øZöAЬ¤7ã~w¯BíØš¶pæe9]ÛÆyNEØC4š?ž€ôÙþŠ”XO7M˜ubqš¬Wì_YZ++rh=„…)b¢¤B²hX˜¹çÎVRÒÆ=Þ ™fî—W!’1¼¶X#’·²¡#ã¾®‹�>�=Ÿš¨i•˜™Ø�óG38þ½-NßÂ9%ÖÃݵstXî;Q|ŽÛôdÅé5z85åk°¡–O ¨tëß®%%’U§„‹äåâez ccbëÝ߸/n‡HÆðz²9‚1Ëi¿¨Ô±|}w2Ú#!6˜›‘ˆ>Ì" 61ùi¾ÆZÞÍNƒ{Ö˜\µ·÷÷MHÿöp„À2Ɔn†±ÉØznæGÁ(©�,³Eò°JÈ 6¦mšÝu«×a?ÿeäføšÔ^G¬ÌæÃÈv)è�w!|ÿ6ÌÉŠ ‘]vß‹¥Q\ ‡‘{&1Šópn~ƒìº>âäm×ïx[óå?z(ã¦9"mØÁ˜ãZŽû­ ‹+¸± aõVFÕj„ïÈ÷? "®½�hÝúmŽA��UÝA°]7dŸ%·ó5ça�Ñš7‰‰ …Ú 1±JFÜ\�l³ŠXÀ�ëg?sX@2" ©€}Ú"y��lXÛ˜e«—ý-êÇ�|ßoB${¬\lžÆëŸ–�Ë‹Ñå…UãŠÒà“ê �qý”¼Tý;Œï9‰vnhEmÉ [<é^ú²á:9À×9’¯wþh‹å-‰b;_ó($‹xZã´3òlj[�çÕ׈€ÃVg>ùs _û]|ÿM�4Ø�û?1ŽDá:{ >VòùuÆûŒiç‚Ý·dÀ*/FJvãH,”THžXo[$o~ÑŒBXÄ×kkYØXæ•QL–4¦$žϽÞÜ�ø}ŰrÒŸ"Ê`“oãžxk×»+¡�..w âgC?c ‚…ÆìõÆ=¬Ãƽ¯ÉëèwȦ´Æ°O¼Íƒàx³ˆ{\þo¹¿¯æþ~îâø.xÁâxwóµ|3§†ë¼Ø¢�ÇÀmEîýù7´õ¶€»3q i±2¼¿c,Ï·:cEÆŒM+Ù¿³ÿ† Q9ñ°D-ËCi’Ãn«n?Š ‡iæã­;c9†5 ­,²•"þñq.m–+ŽòÝücW¾·�ÿ¨¤¡ÏǼȰ±6�ãY¸q]ÁZf¢¤Bò¨ãV^ÀŽ@Nð¢gwšz"X9µ(l�»mùÞêiÞˆä‡ kX ÑY¯èZ<ηd ŸÓ]sþ·çÇòG›n ëýˆè.wYŽ¿³"e ½‡ CÆÿ1Þ›Ýí¿1γÇÚï„¿ÕQ|/k¡~X¹Ùu¸7g\ÓÆñöÃzâ,™;‘ñ¢ëaÒ¶ýžkïÉGŒ�ø~ðæ]_C¥ªÕÙdC¿.CP Óæ­ÆX,¼�a=ƒ6ÔÌ^»UÚº˜ñjLI…ä™}Ùæf]^&r³=’ŽP {ó=½‘Œ ËPÿÑõç1Þ§Úã<\·æ|þ¸c4¢YAIµÎBp&Ša »C~ªþŽ5‚¢V²*PD}8œûmSÆ«ù%>¾…as‡l?ŽèN„×µ&0,‰ú"¢½ÕÛÙa½œv¼/Á÷Ó•qãFÆÓŒ×6 ÎÞëç6¼Úæ1®dÇ85¦¤Bòî6 nq¹“W 6Lˆa]Úg!ßñ}$RO_$‡ Ú°»0µg„wõmøR¢9¶š‡‹Üí�hþÀ×ocÍ'À‘ý.ÃÖí‰ZÉiׂ/Š7íx»ð÷m”UlB4›s/�ê¹VR:»ÚDj\†Þ­–‘õ°Žç~XŠñ{ƧÈ!%R6IëáŒ\* Æ¸9ÁØÙ¼ù_ÿˆd×@DcÃúF †µ Qˆ24aÍ*çVص¥Ü�Ã×|b¿ew¾Ã�µU¡¸vJàx{îlxÍ!¨Þ psâãš|®‰Ú±¹$½ø¹9ÏgÉ %R},’·(r‚›DjáœïÖÀ|ݧA$£Âºó«ÀÝ<ÆG ~{"˜‡äªš*P. Âiš¿GüN`D)¾/Ši�·¿½íxÛÕs1ð_¾ÿÏŸ�áfqÔÆ; ›|ǰµšSIY)kL áß¾�çºÍ�pYÓbþî†üÏ´ñ¸áîo1ŽmŸÿö¾‡òÇýàf;F–’Ѝ¥´O x$‚ûbîo«‚æ:$Ȫ9ÝXéƒù|5«>Ä÷iåuZ$[G�œž5þ$Ed¥ÖçEfsä/,¯"¨qÿ2²Çê¥ï‘Œã9oóºÃ�­Ø¥QR©KánÓ ³-Ü¥1W*ʸñžÈ–(ëT|¸Éw ãl.%ÃÖF±°(“ùÓN*lŽ(‹ f’’ )ª¹äl‘<û’±ñ #‘–Pl—äÝ[‘Y£Óõ{ÍÆ¶§±ˆc”«›Tð˜ áæÁ${)¦ {�Ÿ†›È–(ÇËP+‹äýîÖCYu3Æ–Œ³ù�6tèψ.Í‘;ö¹'1o©æ”TH‘Ù¸]+7›È˜Õ$ðKæ{%(³P®Õ&Žm—d÷¼HÌ\KZšª×bp.„ézã Ëœþ#¯uKÀ}nÖ¿‘ž{áf¾pQ¿¬ˆÒS‘Öñö57®…2±è ?s›ßñ[Æp†%¾6Ãæ!žÎXùs}ц=M£9RtvÑ?�¢N<‰ãX]6q6¡‘›]øšm%ÍZMŒ¶„b+%’3+ÂÍ—iÜ¥ŸŽ%}P½•ÛøïëÀ]Ò¥7¶‚ ÎyfÇ[3ÒcûÛeÕh›Ç3_k”*RmâsØâsÖËh‹EZÒhçq” nY—Æ0ËšPR!õÂîr,‹ãžÈ K‚øšßæ�ç!]ö´]Ò_$" pM*bY#  £à¦‘ׄ%yn~<›ÿîúþ¿àß| )ás�âû€#—EÙ’âú&\?WQžÏЇTµ¢|[øÙ[ùÖý,ÔgÉÄ<¨“ô²’’ ©'{„Ãv‡e_çù|Ío!¨ÀÑÉ»‰±Ø["’7‹ÀÍûHW”¡6uvIÅüp“öû7o#èu¨V–*ä¹J{¿wK#†¤‚ßcÖËfe‘­€ÊÖ¨_�FY¥>ë4§Bê� 9x*g‹ä݆`žÅ�H–­¢»· É1×e_#]ŸÂÝœéšn¾Eú\÷ÁbÈ¿´÷÷‡piÛ�<†Mƒq>ê;¡0Q¼ÌSR!õȆ²µ,VBNØp•Oâ\yt«D±Ÿã ˆä[.’а§tÜ,1‡ÿæšTĶY\“ŠZ­|§T÷wX½Ïõ9�÷wXêÕÑm.ÚXG¾D�)©�ze“Áž WàÌ…pbŸMh{ñ±;f[ðo§Q/]$i® õ4†Î̵œV,víetYá:*××ZíŠÍY”§ý]õ¹ÁïÕž [{ÉJ½Î�t�ƒlSR!RP6þzTÎɳ±Ø–�Ato3Öåßl‚H1¸Lu8$¯9Ö£2ÜÌi>ØwpS‹á ®Ãjr1® µØß®¥†«:§xlÎÍcŒÕ�.뉱EZÿƒlSR!R`v×ËÉÛ9Ö¹·¡PQ*ÖX…§îü[qözˆÔÚp“v#oI¸ûÞñ¿Í‰’Št¥�ÄÚ&×IåŸSábtQwteÃíû,¥ZÓX`³f”Tˆ]Ñ7ð‚x*r",÷jÞn@õ®el.Š$R$®sŽÒ^P-Êó}4‡ÿæ:n~)¤oY¸ùÙáÚ@L»,n”ã­¢¹/üþ<Ábti±²¬Ç0l ª>Ó-&W‹¡ŒRIY‘_œkeïxq:9À×Yæf?¾f[ª’„ÈÆÔËß‘bzn6áyÄSÃKë.b_¸{{ÿ͵TmG¾ÿMùþG#|®�á>Öþmd‡ëÝÿ�¹¸¿[�޾p÷^[‹žü ɱêUÖ«þãÆcs(ËZ„‰ü¹¥¤BdFÙ"yÜîÁ‹–ë¤ÏTñužÆ×låú®Æì¿ä¬®ý¯øØ'!R\oÃ�ÍoXŸñ,ÒÑn&Îaá;3îz3RI*­‘e��¬°a·›0G:úÂÝÛ<æoˆo½õ¶Ù~±!MÏ0ž®r!Ö% 5£áO"³Ú™ÑĆºkyÆÔñ¢kCšvAëelîEg%RÆÂÝH¯+ !XEØÅ 4ðÿ‚›Oà&•÷Úî¢|Æq‹Ò³•Öñf "ö…›·ÚZ¨�ß¾/û!º‡¿æó-ȰjÏ·""U&ÆuX�Ä@I…Hëì.ÒSá ܹÀ‹ïݾ<¦�«¶áQg2¶âû"Å÷"£ÚFÈ4‡Û�$Ïjö»ÞÕ­¤'á9¸éÁ÷ß ãstCPhÂÅX^Ë\+\%Áuø“9”û¢=’gÃy]‡šUr,õG4V4¤ ?WûžºÑm©%"³7m‘¼´K5(«m •IDATã9ãEù)kYŒC0ûìlj‹ÔTx¬»öÈÙ „½‘¼�p÷X�¹î!yÇÃ]%ï?MQ®­Vâu$ïh¸{jNÿ‘ß�ó èÙwu5ÏÙ¾Œqˆ_�U[R3J*DæÌºRm‘¼õ�¼@¿Ê°;?#!Rsx®'¶¸ÿö Ü, 76Ç«’„áN¸Û/ìIHÿvWn¢”ï¾Ù¥§Âü!l˜'‚ÛØ•àî‘6þûºp÷¿£A¼ö…Ô”’ ‘¶-Àxœèm "Yw+ÜYéÍÿC 9çÂÝým�o7|Ìûܼ 7ÓÊkÇ^Ä%êóO¸·;lØÓC(–e ÜßV¶ö<¸û�ÇR[óW¢$ '#FáÍ€S 5¥¤B¤2vÁº7O‹ä‰Ô#6„¬Är3Ü ây¾bÄ¿7‚u”1ô7WñØkàn-Æ9ˆŸ5ž×„»ÛR,Áš¦#x|l‹øÝ„h™îªà1®ÿG~–£/ë•Qå§SR!R9;_ì.Þ™‘,‹ºËÝ<Ïc™ðo± lÂ�-@VMRaå¥'ÃÝÉ|Ý@Lø·†r3Ñ\‚⺋ûh;ÄÀîØ3F (6ÅÕ<Ƶ ù%bÄ÷ÛÑze$&J*Dªgã`¯¶Å² "™Ã» V7ÿ ¸ëÀxˆçø�ˆ€¿ß‰›Gá^íhš‹ª¹KÏÇZ¸[Í™|ý—F™cÂß�Û®•ˆ6YØ<\ÁPœ<³U ­'ü0DÀß_ÁñÖÑŒáþ~¾‚ǹVZ[1á{¶5f*éU‘(©qs‚/�4JŠHõâÂs-Ïñ‘ÕV€³ëã÷üñ¿ˆÖCal±»Á¨ÞQ‡ Éx�ïekT‰¿³‡ý.‚keT¿C}ø+÷Ûh‡ã­‘aûèDï¡0•®Žý-ÜÌË×¹JSXòÝ’¨!™ µEÜÙ8X[$oÞÕq½¸ŠHxN^ÂsӪˬ�hl¥éWù·lµm«†ÓÄø�ñ9Ÿã#þ{»ëj¥,eX•86e‹�Í�x[Éí™ñw,°›Ã�Ýý¾ŸëunmX̓VY¶µolüÀÿfÜm¬Â°ù(›3–G<¬ì¨ëÚIK¢\·õjM;ÞF„1íxû�ÿÞ ‡L;Þ¬úÒæa,€x<Ïç©´ØÁgpgE ªNV§á~°dý_p¯¦& PR!�ݲ’³›óBüD$Kl8I% ÆUbƒ0~®0Ãó {ˆ×•›àî Æ~Œ8Ê–®Æ CtÞ6—$Ö*A92íx;iÚ¿Háx3'TñØñp·ß�%ñÿªÒ_âïX!ë…Û ’9þ$ÝêÈÙ"y"õ€�•'¸¹ùd ­ß¿ÝI> ùµ?ßC”¹1I+Ú¼º{¹¿›*}0û?n¾�»]ôÊœÇèÅXjúÿÈ^œ±¶ ¿ ó‚rÉJ(2JI…H<–DÐc±1D$3Øð±;¯/!ìîLjˆã:D[»£V®àkÙ–J×AŠªé¥˜&Êb‹Æ†rYoŒ•˜µá]?ã?‚àܽ?|Lw$G…Wb ¤B$>6¦uê ˆH–ØÑAµ±6=›[òòÃîHDö©!z�¹WP½kQ EKkBI…H¼¬¥U…êÉ6–ÞäfoäÃCaïJlÂB6™÷dŸ½Æ�øš£¬³‘–¢4D¯ãþ¾ ø{#¹yù§žŠ(©‰Ÿ�W×0±ø#D$Øø¹AŶª+)¥Èêíï€ðý¿‹ 2ÕwÈ.Kþ6*xÑ «ä4Ùq3÷÷�ˆæXdÇGp£òð1PR!’œ3˜X\¯EòD²��'›½b^Ñ7&¶ÀÝ.ŒIHÿ¶�OßÁúYccê×çk|ùármÿÁâtY˜çs#÷÷^ˆˆÃ*¬Uº¶E’ì¼v]e^HdJ*D’µ/‚áP "5ÇГÜte¼ˆl˜ÈØ“¯ëx¤€Ïc …­§ë«ˆ†ñuõa|�|qþÄ÷i�ßžŒP;—óu싘ðo�ÆÍ5¨�;2^…›e ‘)©Iž}�hÅO‘Œ`è}n6e AmÙÝê�ùznAŠø|?1¬Ô‘¨+»_ËÔ�©‰ßó7 +êñ¤ï·|î#3þ̓¹¹é³9C[…%¤]KÜ&YYªn(©‰Ÿ}iص]`çã…n?Ǫ"’�°a=ˆ?Zè´Ç¸Û]Õ“ùü�cP#v]bôE0‰ý=¤k8c5>ÿͨc|ÿgqÓ‡¹|p¬ªÖ|Î+��0Y±!Hß"Ï3º„C°¦õ¹ô -éûþê�H”TˆÄçuÆ™Œ싚q #Oe,EêÏѧ ‡²µš‘,»‹z6c>ïùȈpÕn[¼Ó’¬w‘¬áŒUùœýÃ`ž¹Ì©˜¥ÝÅý`óIlµòã�Ìþ·„ÑR´9+®Ãƒ*Æç°2³+3þŒd“‹3ù\­ÍÃq݇;B"QR!�]¬/fôà…Íîº�ÍHûŽŸˆDÀsÖgÜÁèÆìÅøâk •#hÔ-Åç83‹søš&0†0Và?nŸ”ñ)âa=µ§0–“‰<­™‘ »Ű»#˜¸Õãæõ­Â¿ý;Α>×çŒSù£­’m½� ¶J¼ ݳ—³gó˜×áf$’šU¥ WKÉ£×w0nçEí9ˆH!ñkʆ¥XÖŒ¥‹3žÃ¯XϤ5zl(ËX ©Gò|GžûÀ惭‹ 7Ç&xwa,;‡_±ù*¶,q°dêQ%n¸ï;q³3Ãæ^Øç` ôùgóp›Ÿbk|ؾ¶•Èïå~Â÷3‚êk6ŸÉzf:!èÑXh¿fç’SV`Áÿ&Hf)©©ŒM¨¼A"‘¥ã"’2~}-ÆÍ"aØüˆÏÂÉßuƒûÀz4,ɲvÄçöA–×À(Œ0ÙX‚a ~’÷u=ø~,QZ¿$LÖKø1ßׇ�\QR!Ò:k <ÊÁx¸Þ """"Õh„ˆ;<" ë®w“)"""Rw”TH½²y6Fó)Æh iq§¤Bê�•q|¿$O1‰ø """" %R$o3Þb¼n-þ«^‘d)©�¼°jV âƒpkkAØ7S“&oBDDDDjBI…ÔÒa|>ÝÏÓjmˆ_’ˆ÷˜4üɤZ&ý õf"Â$"Ï‹A‰ˆˆˆÈŒj¶N…ˆˆˆˆˆC """"""(©‘H”TˆˆˆˆˆH$J*DDDDD$%"""""‰’ ‰DI…ˆˆˆˆˆD¢¤BDDDDD"QR!"""""‘(©‘H”TˆˆˆˆˆH$J*DDDDD$%"""""‰’ ‰DI…ˆˆˆˆˆD¢¤BDDDDD"QR!"""""‘(©‘H”TˆˆˆˆˆH$J*DDDDD$%"""""‰’ ‰DI…ˆˆˆˆˆD¢¤BDDDDD"QR!"""""‘(©‘H”TˆˆˆˆˆH$J*DDDDD$%"""""‰’ ‰DI…ˆˆˆˆˆDòÿÿÿzgIDATº"kC–¸õXIEND®B`‚python-django-debug-toolbar-8.0.0/docs/_static/brand/Wordmark-Columns-Coloured-Light.svg000066400000000000000000000207711524561404200312460ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/docs/_static/brand/Wordmark-Columns-White.png000066400000000000000000000700541524561404200274710ustar00rootroot00000000000000‰PNG  IHDR�*ýIDATxœìÝØ-UùðÅ_º¤;.ÝÒÝ�tJ Ò"R’*"! Ôé¤áÒÝ!ÝÒ-ð_Ë™.—/Îì=}ÖïyÞg>¸'æÌ™™3ïì½ßý033333‹ð033333‹à¤ÂÌÌÌÌÌ¢8©03333³(N*ÌÌÌÌÌ,Š“ 33333‹â¤ÂÌÌÌÌÌ¢8©03333³(N*ÌÌÌÌÌ,Š“ 33333‹â¤ÂÌÌÌÌÌ¢8©03333³(N*ÌÌÌÌÌ,Š“ 33333‹â¤ÂÌÌÌÌÌ¢8©03333³(N*ÌÌÌÌÌ,Š“ 33333‹â¤ÂÌÌÌÌÌ¢8©03333³(N*ÌÌÌÌÌ,Š“ 33333‹â¤ÂÌÌÌÌÌ¢8©03333³(N*ÌÌÌÌÌ,Š“ 33333‹â¤ÂÌÌÌÌÌ¢8©03333³(N*ÌÌÌÌÌ,Š“ 33333‹2<*ò ÁÚêCÆçi|ÑËò“ô1ô±T¼Çx�ñâpà ÷ÌÌÌ̬¶†CEœTXJ0^Nã•¡–/2žfÒñ ÌÌÌ̬2N*¬ Ôòñ8ãÑaây&ÞÏÌÌÌÌ æ¤ÂÚLݦa<ȸ—q“Œ»affff¹rRaÝæKÆÃH“Œtù“�/affffAœT˜%ÈÕ‚qs·0ÉøffffÖ'f?ô5’ÖŒÿ%Œ˜d¼ 3333ë•“ ³Î<À8—qŒaffffßrRa–�Æa(Á8› ÆË0k(ž†ÏÅ‚¨ÎëHާžB ÀÌÌÉI…Yœ;ç3ÎãÑK0kž†/ãbeÔ‡ZoDÒ"x%jŽÛo .¦gŒÅx�ñ×û ˜™u!'fùÐþ|+ã,Æù¼°xf5Wäbho0ÎaœËãévÔ·Ù\\ìÁX�1J/yŽñWÆq.ø`fÝÄI…Yþ¾b\Ë8›q‘/,¬®jžT MêGðXú *Âm5‡1vêð)JŠÖç:�™Yø?˜YÞ~ÄXž1˜ñ/FŽ�™Å˜Šq,�¥›£d|OÓ—¢ó„B&d\Çç® 3³.à¤Â¬X�2†Y=5í7` Æ)¼P¿7í†T–CË!;mßó¸®ÓÁ̬åœT˜GNn¸áÞ€™åinÆ}¼X?K‚_!ÜÈŒ?Â̬åœT˜C¡–aBñ̬(;ò¢ÿÆD(ÎÏo5®ã¸03k1'fù;žÉĺŒÿ¬ÞÚP0cƃ¼h/j¾�OEQ–‡™Y‹9©0Ë�.Ðvc2±Ìš¡-¿0n`b±ò7ù˜ff-æ¤Â,_2Ô:qÌš£²²âPÉ×2±Xù ùff-æ¤Â,žæ¡Ðø‰ `fUžq>‹��ŸW‘�¼^Ç̬–œT˜Åy I…§›`fuq‹%‘�[‘�›afÖbN*ÌÂ=Ø— Åc0k¦6uš&«SW¨9ï$Ä{†ç‰afÖbÃÃÌBÜÃXŽ יּbª?iüPHÉä³3æ`LŽâŒÆ¸œ‰Å,÷V¾Æ¿øçJ· ÌÌZ®²»Tc â:¿33Ë�»?™õí}Æ¢MJ(t–^(>˜S9M³¾~cHwûËòÏsOƒÀ÷�™™ÂI…Yï4 s~^ÐÜ‹†`1·!¹««*5wòÿí³¾5ež Í�}%âm;¶ÂÌÌzç¤Âì‡E2©Ý“h^()‰ÐÜC·NŒÈ8Šÿv cL˜å«´.¬<¿âb-$NÆPkņ03³Ü9©0û>Íz»P“ú]3a˜ IB1eY Iw¨yaö}�™Q›Çä'H沈µÌÌ,w¨mö�óòâå¿hFª�¯�¬£vðð/;ñóýføßþs-’ùBŒ«2°(×ùdÄ'³rÝEË¥ÝgbÌ̘ß¿‘¨1cï¤ñVOp»„Ì’^[i¥® 0~‚d[ôFûƒªwÝÇP·×{ÒD¶ø9õ¹–GR’y"ÆC-Õåïå4ÞF2Ì Œkùï@K¥ßý’Höýñ‡ŠñÒÐuèÛi¼5T<ŸžÛæqX&N*Ìǧp5!uã8�ñ#dscs~Þ/`]�ûÐu\,…0ãpz%ã:k’¼¬“Ð ë®{¦AÛ|_�ÖEvÛð½ž@ ¸Žss±c†JòN‹ìtQõ ’ÖÏ¿sÝC�Ò1.— » ¸nÇöñš³p±c}$Ö¡t|¨HÀy|¯÷Q3üœ“p±-ccÆT£¤R¿#Gñ3¾€þßïO\Ì�ŒøºK $\ÇŹ؄±:’Ä!ÆkŒ0Nçg¸6 'Öí´îÎÆáh>{rñ{„{ÉÌà/Áº÷£ë‘ÜÉ QIR!\ˆ™Xî.®ûO²<�ïy$» »ùø^÷  \/]4k[ü ɬäy»•q4?Ãy(@Z`"¤4±.‚wæµÔ*s cmäK­7jáý]­sÃâçÄÅïQ3Å÷âbÆüŒ· ÷÷ º Á×+üZ“ë¦}agÆ C7´mN„õÉc*¬ÛmÔÀ„âÄ%¢fá‡øZËÁ¬ytÇ4æÆÔ¼Ü÷GCƒqý§J»‚énª&õ+"¡�…çò½žfl†âzM�n µªä�PÈèŒ_1þÍ÷ i­Ê ß_¿WÏ!ÿ„BÖ`ÜÌ÷˜ ÀõÜ–¡1�Jú¡8š„óo|¯?ƒõÊI…u«‹3¡8 ÁÙˆ ÝIÚù‹q…Nʰns±²Öf·Ïsq=Âé·/´…¦ri«É³(wйúêŸÊ÷Ö…õ"ÈOÔ]l®‹æ1Ñxˆ2¶…Æ'(ÁÒÅe©×Oj…a<‚$¹)šºé¦Ó*¨)®ÛŒŒ»ùçñH¾—²(Ù¬VÞ´ê¢ ÅI…u#5µ/À “›Ðd¨ß† kF>x䈯§1$÷SeEC�?庬û–“ ë6ªs?oуóēք\¨BÇ‚(ÎnŒð½F‚u“¬ƒü‡Vu;Þ|h�ôŽü]H.êëàÏ9&!ÔUçxTG“Œ^Wô@|} :V•¶‘Q u­»œë1o$äYQ1Oõw$ó0UM7ûþÅuÊTô¡ÍœTX7Ñ`I š| Á“ÕôHÖ»Œ;Tj¹…ï96ÌVi±�t�øƒ7‚Ǥʡ^ƨÛ$–J,b[OC“Ó)Q= öÿgQ]¡øºêÒu:ª§»ñ·¡ü¡oé†ã_ˆ+ÐP”ƒ¸ng”Ý%®ŽœTX·¸‚±HUÕjB¤º39Ê£æä[ÓŠ,fu7á&Hï¾ÖZZB÷rÔãÎlo4¾`„kz%ÈÅDθMU7¶‹_žfER¦¸tÜš‡IÝ•ëÜÕh#Æ?ÑåœTX78IùÔÏÑ<‰ªÖü$“•Meor‹EWhä@í¡Ü‡8eöQ¥yeb.Ú‹¦A²Ç \ÆríÊóå<È _K7’NBKä0¦BÝ�æGý­ÄÏz(º˜“ k»™LlÌhÌÝ0ž”6Grg²Êñ J,†8±°~Ôá˜zqjÝ*½[½êoC®kè$Šm™³*Ï$@î5ºäñÐbÆT¤ãv~ŠæØ�ë¼&º”“ k+ (Û‚'³ß¢Ax2:˜‹SP�cSMÝCŠˆh•jú]âG§Ì®…!ò>©”¶ªGÝ8T¼�|ì…úҬњ¼L“ºiâÏב¿9ó¸˜äklÏÅBh‘Ж >O]®Có N'¥ì:¹–ù2«‰Oë0¡¸ “�’‰ÍQ/J,nÐ]HnÏ÷aö�ªKÊêè‡Ü7ßCRþ2Dèó —N²–G¥§‹�Ì”|·×«}¼× $s¬ÅXa–VÉ[¾Ç¨‡�Ü ù×éãÞÀõÕ@ku5Õ„y³"Þžz?J+ýý¦m1 ¾c‰ú£qš«±sá„rK…µ�.|mRB‘Vµ¸õK(zÌ�¤lžËÍZýáêܽ/v’KUÊ™Šçµï+¡M&È8�±’b ¡‰ÁFÈ.ïÖ²§?ágÑ��3úJ(þ÷ÆÃ w'ãþ9coƈ3?Ï“s#œZªGG~g실åC•ÇáçÕöž˜1’„êoŒP ÀîO¿A¾Ýu^óaL‡zT�R‹MìdºY7#?×ÞŒŽ[3ùØ××¢ßåØ1[jÚ ]ÄI…µ�.ÀA^ Ç^5·kR»iÐ,ês} ÌÚ‘TTQ²¹s!Ì=<î‰|܆ì”PÌ�òÝÊϽ!r�Ž Yá4ÿI¦ùÒùRB“‘úý[�ë6ñ¹ï)1CÎÂYjó±j)ØqÔýyɘñ=i‹Ý‚HnüÅØ™Ÿ©‰ãB‚8©°¦;�ÿŒ�Ð<Á¨‰õvÆøh¦ÍørŸìÉ*цV§˜;ã•6ïÃTs$òz}03Ê·rÄßÝðÙá–F6êë3fM-+‹äÕRÏ×9‚‹Ý‘“Œc*TB6æÚôB¾ß*ÃE”±í¡B\¨Tò§9f6F—pRaMv<úõÐ ¼W• Ͷ?Ëf°nV—–ŠÝÞïZIDAT˜�­u½ú™þ…ü„vËœ4ããcÛù;ðò§.dï"Ì|È&v†õ¹ žFŽøzºq”KÁ“Œ%e7E¸W#Ÿÿé KµÐÇœ+º&©pIYk"]Ìì΃ýp4O¬¿FòCÕ–1 'ñ3=Ëïá&XSµa_lcRq’î‘Y|£î+ÈÏ/f\”ëw(€îtóüvÿÜÙÍÙéùºÁ3Ááé\×PŒŸ3CIݹ-”ŒÅÌï ‰n?AÎT9�릖›ÐÜ‹ñùãdÛÑTN*¬i¾D2í4O(:…þHו*Aý“Ÿmž¼ï’Yi‚[ø�ŽzˆI*>D qÛžƒ ñ˜VŸúå&k·Î˜¯ÛB*\e ä.$©˜)Ãc—@ø\ š“i$½˜>ˆFÝÀËÐi5„;¯ÀäJŸáxn í !c†ô[¹’ý©ÕÜýÉšDË4)¡P³/COµ-¡è¡I~®ág¬í$bÖ¯à–Š >œá>†}‹ßéŒ uy‰35ÊSèEknA t"»N,€p§ö”‰-�汈ºûŸ¡ûÓâ—çx¢¾üáb>[c8©°¦PýìÅšÔÕ&­èq-cu´Û $3öZó'<c' ‹–^¸Å píúYâÕý†±ã,þç¿‘ÜQ�‘õûˆé‚WÆïAè ݉;|\èØµðÞ8¬<Kç@ZaàzÆ ¦î”Ž‘Ð.L1e¢ÃI…5Á3ŒyÒâ��^ì¨ÂSWÜ� Åù™ƒu�Œƒ/‹25â<ƒ.‘&šñySÆ!Œ½W!¹ } âËx~ûVÈ&´ûÓ§üMˆ�G ÷!L§ÝÀfCMâöÊÕ¯ÃîOÚ¡ç”ÓP‚ôFÊ…3s:~¦Õ<¦ÂêNƒ—+¡‰77ę́×1&Cwù5?ûuš¥Özy”lÌÁtˆ\Ǿ®x êâlF$ÝÂTšvPúß± X§ÊºYù ÊñÂ Ø ,½;ú;q#Ê£9Kt¼]3êDç‹inÊs3ck„Ñ12S}c8©°:»‚±f�„Hƒ–‘$u�T«hçpÌÉïìXÄŒ©ø¿ç¯P­…'—ºþUâ÷ ÄA“µ©UT5õËÓ�‡Ð}0ôb?«·¦“*X*¿úù‡ $:ιŸ)±ˆ©R5�йYTÁ­¬S®E¸ApRaV‰3›ðdV—ZøâIw.þÁÝK¶/ᶘ·&w²­Ýb.r>ç>ú2Hª‘L°¦yzE³…žãËó&ÂŒÖÁc&@¸²[ÙAàñÖáoAh)ÙGʼNà{½ÆãOãLÆ@v“£å<¦Âêè`¸7,¡Ø IËJ7'=Trï(XÄ Ô®´•‚ÇÜxHºõ„z Ãϼ0ãn$ª�EóŠ E$ˆ¹±[v‘�7¨ÃñW¡Õäª( º-bæàh'V'_3¶àÅʾhž0àâDØÐ¶ãv ­so Àï·ê‰óÖCœàr¡eã¶žš¡¢ZçÐjAuº•uÓ)tý:y^Ì5XYIU�ढC¡ VÙÛAB·ELËT#8©°ºøŒ±2ŠSѺ¨b¨Nú~°Þœáù+j¯É3jo†8CPs<~Fbì�dV㟢\ç"LcZ˜kàkâoå§(WðÅ{‡ÝŸB[>«sº-ÆDË9©°:P3î"<ñ\‰†Ð�=š$j#X_TRq0¬ÎbfÔ®ìâ1­p{ǾÖsÞð3N‚¤úÝo7Gˆ‹>a§“ŠÎ'Ü?ʾë=uØý)t‚½àõŠúže'‚¥sRaUÓ@Éùy�r/‚'ȱ‘tCX6�Õ¹½¶„ÕUS[*b[ä9't«Âñ˜™‰ ��˜åRÿôm¸mÖBøP“[¿Ês‘YöÅt§ón„jRRº->BË9©°*iâ"U jLYGþØO�äǾmýš‹t·[ë«^X9¸/ÍÂÅÚˆsjŠŸo$7-&Ayfì͘†çã¿¥ÿ/49îÒÓ…ÞC¸ Q®Ngÿ�»?…ÎEUÅ|P¡®ßA˹¤¬UE÷¬Æ“Mƒ¬‚ðÇ^U�ÔE«õrv’mö¬nê>H¶7Ç!Þ`Ô×É(~®‰§ç!™§ãNž‡{+O:6¬PÜîoòw%tR9ÍÑrÊ<'L‡“ß…Îm4_ʲæFJç¢ ­òø¾Î}Öí[¡]UJ¿päq8G"Þi¨¡´RÚÈÇ9Œy ^�p3 Œ»Ugó4Â’Š¹ÏŒÚa‚k%DèðâS· ÊK*–A¸VϦ->ø­,ê.ñë&Ûrq>œP DUj6f âw|ˆŠÆhÄo�CÝ5¿ ùt : õ´â»ʘ€Çß‘ …,+Ãý£»7E9¶G„Nª?qý˜‹fÝ´5¥P|�©¸Xaåg,{ÂÂÒ9©°2|ÉX—Ôáhž@t×ðxX_TWü$å€çcœÉøÖ$¡-¥Í¦ÍãpR$]w¦B¼?q­ë`ɘÉüTEoN~¶=o!¡³u»¤l61•wDÁÒ±„ ¢·!ŒJ.‡–@ÎbW„Ÿ33Ùf 'V45Í.ú к«ÂÐ Æ]a½QÅ’?2¦à÷ºãVX·ùJ�ŠÔEWhWœaŠâçTKèB£D^‡>ˆœp}¦çb~„ñ˜ŠlbæK™9íž[¤Ã)ÃøÉ«nGn‹£ iåÇ-®1ópÅpRaERÿÁ…yB©õ$SCã‰C±ub[6¬ç�Ü›„ßéîŒWaV‹»!éV—WéÌCUmõ¤»Á¡],�áçzùú9¹¤léyôQ„û �•BfjN #,‡HN~'êâø¨Â`c®úr*cT„Ñ|$N*Ì"èb`!ž0CûH–Ž'>M¢s;cIØÐ®a¬Œ¤†ý±ŒÖÏ jÕáq¸NU/G¸Í¹Þ+ g|Ím¸X áþ™~¶ÖóÁoEÐÄRêg:™MéxÒ˜I"4 L”8œÈ˜‘ßãrŒ1ÜWº}jÑU…Çß(úáf¨Ô«îèå=“ôæ5/ó=¼†|i ûˆçóDvg Îï·Hæ‹È-¡tâ(±Pr2˜1>2âs1Ôã"6¡�ÐEœTXô#²/Duðð¤±!’þ›#£;é\iìËOg × YÎ-m¾«¬Ò±ËrŸþõSæv7Dø&ézv6ÿÜVî§“ÇLïs£.Š;1úìÒ›~÷ÃtC øþ¨n Ýp¸ñ~Æx’Ÿí†æ²èóæ¡º|1¶`¨ûŸŠ’ä16ãJ~–KÑEÜýÉbið‘šUÙ€'ŽýÐew†¢±./q”+8YK鼤RÖÏ¢¸žÏ% 8AæsÿÆ×È\±‰ÏSQ UµÉóδoV†Û‹q!ò±BH÷-�ëßf(É?�:·Ðk¢ÜЉ‡¦"Û¤¡m¡VAm‡7�\k;¨HËhÈßè2N*,†>joÌä=¥â EwfOB\½é¦Ò]°£�ô1w'“¶ª]£I•çRê67ÂlÍs›&«;ˆqI:;q¯ø8�cY—± Âç¢èOi#¶ ¿7 2¾ÅT œ$�Òi vÖVp¿|žnüýù#�<&ÓìÏNü Ï Ë8©°PšÁuñ¦Ü ž 4ëæ?+¢»húŸù]]³ïkÛ]e]L¯À}½‰³×ª¬hhR!Øz¦þà¹î.^Ä÷Ç7h %E�_éá�Úq¶f<� íVËçíÏ}y%þ9šåj®{nÕ¸šÄI……ÐD=Kó y ñM29ÐuŒyÑÔñwÆáüžž‚Yû©[ŸŠ»ÐLêG¾ò1%ªlëîOtw›¿W»òÏ?¡%BZ*†¢Ã5[|Ì\.eR7³õÑ¥|ð[V72hXB¡I|t¡Ñ …JÂþɬ×Û8¡°´å®²ºöÍÙà„B“=stX—ã¾ J\C`ÚjqSw½&tÕüœ±J“æèÊ›“ Ëâ|$ƒ?BC0¡P |Mj7ÚíNÆHJÂþÁ%a­‹\Ƙ;½øhº}Ñ|¾®È‡Êû>Šzyb« òù× I,¾D}i¸Æ˜æ1¸¼±|ð[§ŽçÁ²n“Jަµºï`L„vÒwq.cA~/j=:Ç%a­‹¼…d¦ìUŸ ø9tä÷¨‡­ftX´tx Ø~ õ ± •­ ·‡&f\qsºE]žæ:Þ„.ç¤Â¢&ÇÝx°l‡aB±’YAÇ@ûèÇæPÆ”ü^Ögܳîò7ÆôÜ÷£}4®"¯²¢¡þÎm{2—!­Ò™'³Þñ;Pâ¼’›cUyI…Ê }¤3SkÐv�²ë»™ƒëö0ÌI…õKM�j�8 „b[..FRí¤Mgü‚1)¿“==Ç„å Ic*TÉHÕ�¦NÇ µ²‹?—>§zž�jh\Ç6éß!w…§â9xTX.ÒþùK1.@ùT–YÌס&Ò±Gó ù�¯Ú‘\õxö?N*¬/ú1Y&mrl Í ÊÅñhÏTµ]ÅX‘ßÅLŒŸÁ,Müø’.AÚÿ7ÖDqh9ucTwS”?ñ&Å\y¨ylÞD˜a¹Ñ÷ÁX‡n‹òÃ÷œ‹ñÂPÿ¯C¹N0ÖäŸ?e¼†òý›1/×aWØ÷8©°Þ¨Éu�&õTÉ:Æyüó×hõ?�1¿‡š6c¹Y$U—SÝœ‚±ãIt~fMþ5;ŠoµÐ…Ùfš•;m)éÚÚms•‚ßÍ_‘” >ÅÑä{º¡¸S/ÿ6 j„ë¨yœ7¹†IDAT§¦gì�亥hª¦¸9c¶&Mú[&'6,Í© ¼.ƒÃÄdB':�ŸXͧI÷DÒÅé. k«ºEO­njy¸�q cÆ¢Üï'Ò]@�úß…ÓÃi«….ž4–$Ïr•z­ýÓð=Nëåß_@˜-y^ö€í¨Êc$%žŽüœÊPËÄRýtwÙÚMQÕ(ê¡0IKNç U˜[‡ïó¿q\ Ï߇Ê~PxÂiB³{·Qå‘åšTc™»Ñx\¨ÜÜœh6�ÿ̸МÌê‡çµœì‚ìæK«:å¹.¬º’ê@J6&íð©t{C�p½®à}¦àbj„y°I¿%M•þꆚZ‡–A¶Öµ€_Î8§“q|/u‹Ù<Ëמ%âzNË…Šµh,ÊâÈ^‘L-w:6t³òÒ´—uÀI…õPe‡5yð|ކà.¤;øUÍKɃƬÊíþ̬¶ê”Tô†ë7#S!Iz*0}ÌÐüjqx�ëQEÿs+÷ƒ ‘”Q¨¥u)TKø;Œ×²úàëNŒ°îp×ñ½–A…¸îã"Ùã¥ËqÓPW?%So \ß:–­m„Z º±Ê�ƒhK4Hz§N‰Ð¸hÝ-Ôx „{öü~'àb$¥-ÝÌl\�‘ç@ìX¡…Pîƒu ·Tt']Ô®ÙÐ2¥2¾Àw�u¥’°ª¦r¤»ïôŽ?˜cr±5cGô=.fr>Nå ¯…YµBÇzü eÂsÞd\ fŒ¥*Z<ÿýâ:¬Œ°±‹•1žÈêÃ-ÝGýùihB¡¾‘Ï¢ÞÝa4Q—jfOÌuÝÎ Åi€=ãX$ƒþÇÀ?V?ƒYõBkô¿³l4süXéßjŽ3gV•ƒæ*XWqRÑ]Tùaþ¦OÚÂõ×…èݨ—Û‘Œ˜J5³5ã'ì{ø£¸,Ccažflϭç®ÍçuúX³¢üaʘ”ËZ‚çºßr±Ø0ÿ{~Æü·ÍQ2¾§Z’çB˜ºŠKÊv�GK§•!/-'«ÏTåØŠ/‘”„=Ì%a{ÇïIß�ÆEì̘á¶ä6>fᾬ›1sg{¾á~ë›wÖîc‹pqóÓØ³½¹_Ý‚rÖçj„µÒ©…N-öŸÂº†OvÝáFÆBmI($íõkTC'Ëß1q=6tBñCü1šˆq’Ö1Í“PÈF0«÷euE™Ù½³¤ûØÙq›IᑼǪë‘ʹ¾Çøp¨è¹ §ë¿‰“3~ÂÈ«%X݃§å~ÿ6¬ë8©hŸ¯ëó€¾]‚»’ZÜž`L‹x/2ÔôûWWpê·÷t\ü ÉìQQµ¸�ÇïåC˜e¤»¸\¬ÝË?©:Ó9Hº{|Î�1cvÆŠïÂ÷.÷UwÙ³>qŸ‰‹‡Ó¡=4©î‰°®ä¤¢]4áÚj< ¯C—áã˜òu·!ií¸ˆÛï+Ø÷pûê\±c†VuîÐÀøN3š}+í^ò”KUáö€Y4±’B*Y«ŠÕÕÕÜç—‡u-'í¡»mËò€~]Š»Ô.Ïð•„UׇÃ]Á©wܦªü±’’°3 zð»Zfâ>¬V�G@yþ˘„ûªç¨°~¥(TFvf4Û󌹸ϿëZN*ÚA“‰-Ãùt±´oêÃ<ô]ÆñH“½ ûnËI¸Ø‰¡;¼c >>æw6:Ì:�&ŪÀ”G×È,þÎýtS˜u ïs!c4ÓkŒ%¹Ï?ëj®þÔ|ºÃ>·'Âm �—ëç!ú÷­‘Lȳ·Šâ�Û µÞhl‰ºnÔ)¡�Ѹ~ËÁ¬3š0±ì„Bd€Y‡4~�¡n¥Ç£y4gÔN(LœT4ÛµH&µ{Öco$cKz¨EL0Õ5l6ÆIŒÏaßâEúŒ�ª@¢YZÕ½(¤&YV€Ù¸?kPöú(ßÏxŽyfq¿Q˰Jr7¥ Ñ�Hnj¾38©h²3Ë{ÆÊïKËØˆ¤lžfª´Ý*Œkaߣ¾¼Œ}ø§Z¹Î`Ì‹fpRa�Ðü2W¢\*A}>ÌqÿQ%2Uƒ:õv×U-ïÀ,å1Ít0ä}a½J'µÑ%a{Çí£×»3¶@sMÁï÷%˜ €ûû~(§;Ò߸On³œpß]—‹c >^alÃ}ýr˜ Ã-Í¢Dl 'ýÓŒ×N(¾O%a«2Tnøq4;¡�•`Öž Ôr95’JoEù� Ë[:1ã”Hf¸~ Õ;’1“ ë‹[*šCãÖåÁ|)Ì:ÄÃl4.¶dìˆò¬éb kÂ,ópqc)äC…2öà¾x5Ì Æýw6.ÖblΘåQeªÝ¹Ÿ? ³~8©hM{¿èÛ`Ö^ƒ�Ìz½’‚ÛÆ¥e-�M6¶’A±#;4Ðäv1nšK«àýIÚi�¿0Îá~þ˜uÀIEý½ÌXšõ“0+Mþ§Y¯WCû»7ªêÈÝ0‹Àcfv.a,Œd€¬&#;]ª¥.¨TaOwi/a\‘„0«îÃSq1?cF†&{T+ÆøHöáqxºZ«K¬*–=Ƹ•û÷-0 ढÞT÷yqàoÀ¬<”FDrÇUÉÄœè»ðØ8 fffV9Ô®¯Û‘܉uBa½b21cþ©*HƒÑ] …,333«…áau¤&v ÊþfÃHëi¼„Z'FD÷ZfffV îþT?ǧ³jš}‹‡‹ZWGÒÅi1X�Iy¼¼ 333«”»?ÕË^N(lhL&Æ`ìŠdÝEpB1¬E`fff•s÷§zøŠ±)г`†ÿ%š¬K­ªGîÒ©}S¨"'5333³8©¨Þ§Œ5™P\ëzL&TsüHê�ÛÀ€™™™UÎc*ªõcY&º…‘¸Ø„±3cVX_2Fâ1ä󉙙Y…ÜRQ�‹ñbèEXWb21;1¶aŒ 1’Éžƒ™™™UÆIE5@ÒBáYY»“ Í'ñkÆ:H.Š-Î\pRaffV)W*ßµŒ…œPt&?b¬Ã¸•ÿy?cC8¡ÈK·MúgffV;n©(×ùŒõ™P| ë L"Æäb[ÆŒÉaE˜ fffV)Ô.Ï¡L&ö„uîÞÓqñKÆÏ£ÂŠô�­±afff•qRQ<}ÎíxÑs¬õ¸[/�d~ -+;¾ºÐ<Æ^‚™™™UÂÝŸŠ·6/v.‚µ‰‘¹ØŠ±=cFXTŠ×IEFÜwÏÅ‚¨ÎëŒ{Ó¸‡çÊ`µÃýDå®×Dv«ð;ýfÖœTçCÆr<¡Þk%þÐN‚¤$ìÏî~S-%sWÀ²š�±8ªµ^Ï<¦TbûFÆY 2ÎE2×ÈpBQÓÃÚ` $A^ÁcìuÆŸu¼ÁÌÌjÏIEþž`ÌË„Âuó[„6Ã36dÜÉÿ¼�±.ÜÒW'N*ÚgB$³Ì߯ãîYÆö03³ÚrR‘¯Ûó3¡xÖ ¼�‡±’V‰3óÃêÈIE»MÅ8–Çâ ŒÍaffµã¤"?êϽ„¶/\f`œÈ?_f˜Vg“ñû–UÓ~Ô=ê~×÷2«GÃÌÌjÁIE¼}™LlÉè¶ÉüZƒ&£14ãµÆÃ\ÆXÖDîÕ}vä±{c"˜™Y¥<Ð4ÎfL&Nƒ5/F6âBŽkº©aYµáfÈ<Œy,¯Áóñí03³J¸¥"ÌgŒeœP´‚&®sBÑ“òjËoÀŒ˜X¬33«„“ŠìþÃX„ Åu°6ð\"í1),«áÐ#1þÉÄbm˜™YéœTd£²¢ó1¡¸Ö ü.åâ}X8©0ué=?íÖhff%rRѹ�Lj÷,¬m�“ ëq‹%aff¥qRÑ™ 1¡xÖFwÂÚ`bXVmêþ4´!é 5'Ì̬®þ4°ó2¡ø/¬­<®¢4ÏÈd1 ÷‰÷`ff…rRÑ¿ÃùcôkXÛ¹¥¢=ÔÊIEçbZ*t~|xÁ?³26alޤ[ž&aœÄðàm3³‚¹ûSßvvBÑø=¿ÅÅ3°6ð¸Šò|�H<ö>ÔÜŒí�|w¿aD%*½X‹ÉË03³B9©ø¡/«óGîhX7y ÖÂÊ’ëÄy<çþ‡ñþ9 ã äë8&?†™™ÆIÅ÷}ˆdR»KaÝæIXŒË"æ7 �AÞ<ÿ~ÂØɘ‹'��±{ÀÌÌ ã¤â;jr_€?f7Áº‘“ŠvpRQž\[*†ÅsñC\ÌŸùø%[+Ü’efV' õ§×îÓ½œT´ƒ“ŠòšTÏÉŸ2–åŸç"ž�ï33+„“ à$³d¿ëfyu³°j9©È¦)óTh†ì+o+�­03+F·'W0aBñ.¬«qx�‹ÏaM7>¬,…·Tôàñùk!¾J›Z+6„™™å®›“ŠS+óÇÊ’ÖãQXÓ¹¥"›ÆÌ¨­ÜH沈µÌÌ,wÝ:ùÝþü�:fß§qsÚÌq³‰im(­¥¢ÏÛ7óÍ7º!“̛β]úM¾¯ªP-�dúDHZÖÆeL€$!›ñj*¢TMæxã6•ÝE5B¿ëŽŸÇm£yJÖdÌ€dÛèXž8]jö7]{MIDATê¦ü’m£ír#·ÉX£ð»žœ‹ÕÓã»ã@ßµŽƒq�ì÷oàûÇ€¾ëë`µVÙ]*îT¥ÿ ¥¶âŽy2̆Á]Rõñ'‡5š/2:Ç}^?ÒK!Ì8UtM/>cgM?„ë^Ê m®¯.”6e¬Ï˜qžG2ðr®ÿ`”„ŸáX.¶Gvcs=ßëçuGC’ *æD•‚¿€qßë.Œë|9£e{nåºí�‚qݦäâ4dw)×ïO(PšPoÍØ„1Âè»>�ñ§� ëðý4yñÊÈnc¾vìù¥kuSKÅgŒ5¹³ä1ØÏZˆû†úk{fmë&�éþÔCE5xÁp ÿÜáTQªÐ¤‚ë¨Öˆý‘Ü‘ÍË 4Öæëk‚À#U•,4×}2.tѧdbtÄI·¸Íùºws¹{Á7Mß3‹Q%;‹#»Â •ð;QKœz†„$¥ÃÒvßRÁ×Uù%—ôñXµx…l‹Q`ÁºeL…šŒqBafÖ º«ÓÚ=oz—ëj£´j—JK·ž ³¡ �æz†±T^„™™u«ÿ cr0”±;}`:Có‘ŸWW1ne<Ìx™¿g¯ñ}Ô]iRƼHª8­„ü*꙾nVEwº‚qã1ÆÛú]Og</ Mp¦;âË ?šÙÛ31‡Û•1ò£‰Šÿޤ‚Ô›Höƒ·¹¨<­ö•‰Õ¤’ÚŠl)t÷§MM*îa,—–43³0mèÖò>ÂuœT ¹ ñ4øùûÕë<üÿ/p¡¸�q4/ª4¿ÃºH柘qæáë­Ã÷8õð;Æ\Ÿÿ ûüs¡Ð¶P‰ÐÓÒùÔ�+�‚,³óõÖçûœË„ÛMÇÍžÈÇ¿;ñ{¸¶·äÿW�”·ÒÇ©|óné`û£‘Œ²ib÷§;‹;¡03«T]ïžTð"Få­‡8ꪵ&»–î+¡è û)ã4ÆtüÏ=ïTïNÆÌüL{÷–Pô…�}�±=’¹B<϶fFì䊟2vä÷9s_ E_øøKƒøçþ°ZibR¡“IžM ff–]’ŠN/ŒvC­£n†]Œ|¾f§Þq¦c’´9²É³EKó,ÆÏòoâsàb!$­91fä¶�Ï ›Å¶)¡X‘ßcÔ¼!|þ\¬ÉÈs^2ÔŽÐÄ�§‰†.æ‰`[˜™YŒ6táì?Íß•Ë\á>Br}?r�v×Ùq4\–ßÿ¼HÝaV×å/)íµãvÄÙÖ1î7Úæ!Ü'Œeùý݈¤‰zÌñ9,�©ˆÐÔŒL?„Çsçþ=Ì̬ ui©ˆÄüQ�‰íöôS^øäÑUç[|=Í;±?Âé.ÿªŸGòù*r.?š&«#®µjMX?Eœ=ù½ÝŠñõþÁÅŸ�·TDhúÆÛ“‰Å︘™Y¢ -E'1Q§ð‚çã`ÄÍÓ±ʵqZ8Wé@Þ_!Ü�y ±¬SY’ÑaÝÊïëco$ƒú­Bm¸߈qUZ!ÃÌÌ:ÜÚÀ‹ƒÏQ1IE¿¹i9ËÐù >c쎂pûÅÅÖ·r†ÇƶJ]Âõ½ákŸÌÅÝ·,l@<¦çb„û9 Â}@ÇÛˆçîOÚr‡_·oKËœ™™Yg‚[*ÒÉ¯ê ¦¬äÇüûbw/tÞA�øúOÚ•d|~‡ótøØØ­#Q¼˜Y²€u"f;]Åýõ1ˆ¯’9Ìb¸çK„&O~7¬9wó$é ñÌÌ:|±˜Ç`ÛX<ßk¬‘n ¾ø #ÜO¸~CP¼˜;Çs#™¢Hä5(wç"éW21šg×îLÈĉ=b’¾,4ÅQ°J´)©�i÷ðD®ÊÂÌÌ Áóìð<ÏæYÊ1ÄÔˆ3Ð]Íùn†4êlÆÓýé,”@ÝÁ¸O^ˆ°r§W1‘æÁ€õg6„y?ËÜ,‘´¿Å$îþ¡�Í<ê«®P1ÍÖffÖ�$2â<1À¿Ç&-u×iÒÓýé&”'æ½<;óÀB·Ñ”„祷¹xáÜý)B[7Þ¨Œk™X¬ 33ëK̘Š¡z1Ý“¤Ï‹�ôóÅt-j‚iQ,U׺ 剩´59l ¡ÛhÊUFw;ëE›32Mˆt¾'É33k­˜éÏyWóå~þ}2´ß8>.´ûÓSÜÆ¥ÍgÂ÷ú¡ƒãÛž@FáµÔXï2<{z ˜RËîþ¡šy4IÞá03³aÅ Ôþ ây}& 7� ðïu©nU¤q;|\è~3)]¨7f|Xbf®Ï}~’¼‰pîþ¡[6Þ¯øtžÂÌÌ¢ñ|ZõÄy±3]ß2À¿wÃïÅÿñ{Åyå M*ƃõ'æzñ”+&©°Ý”‘­ƒdœ…'É33K4yFíÍgÈÿþ%ºÃh<&´ S$†ÞÖŸ˜–ɲ÷ƒ˜–wŠÐmwîGRj96Ý¿³¡p¿X‘‹ŸÀ�Çöþ°NĄ̊]Z_ùañXUi˘šù2P¥ OÑ:©âš|Vq÷„)òû.ëX ½QÜÉú}†pÚžBybö;wŠÐ�Ý�†ž$ïY˜}gÆê°&Ó ÉûÃ:ÕÔ–ŠýçÁtPošm»?(ú6êïn‡"Ç=T‘T„Ž�ø¤ÃÇU–Lw °Öî'ñº �ÊÞ<>¦"Ý:Æ@µ–{ O’g=¦‡5]håkž·gá"¶\ø=€¿ ïE\D�Èç·iVßÐ 1)Ê71 ”döéÓI³<Œ…b)Ñù,¡\¡û€¸ûS„nnæQ)=u…ZÖõ¸èXpRÑ|N*² m©¨òníqˆ7¸Ãǽˆ0ó ]‚»?ñÜZÚ‚|/õDa^êðq!݀ʯ16Šõ Â,„rÅÌ_ãîOº}ãéäsODºÝTŒ:LæeqœTdÓ¨îOX�ÅQž%®Ó2dÐqÑ-=fB˜NÏ/#Liû@Z•n X%œ‘%’grGÜÖÍÜJÑN*² mê/=á9z:.ŽD¼Ó2<öq„™‘ë;Ú#¦ej”g9„ë4Ñ ƒRÖDŠs!L§ßïÓ3�‡©PŽù£#œ»?EpRñ�ßs§Ï£YÝšÉIE;tÚ/Ú�ø à¹Y“´]…Îg€îÏY{­�öˆI"×â÷Wt·¤­+ ÌÛl½ê´¥âUd72×/ô‚?‹ØŠh¹á¶C9v@_GðÆû¾_ðÀ¿˜Ñ 3©Ú÷µé®b7sKE6¡‹¥Í¦Íó±ûÞŠ¤‹b¬?ñâ1Ë>2ÐyýÙ&#!þB¯;#|¾3Ãc_C˜P '·ZN·S÷"ÜÏ‹ž'Œ¯¯Ïߦd¾qœTü�JŠ^Í�Óát·T´CÊx¶A)ã�xÖ€g]Èä•ôšåÁL@ÔÝã„™’ë¿ Ä×ß—±.Š;0®ç�Q¾¶ºm…pC2<6´ýOQ¬M®£dŒÇÃÝ\|„0º¦Ú ÅÚñUMÝý)‚“ŠÞõL’7!¬[x`e;¼k…ô‚üF^çáCyQô&²ûÂíÇÏ19 À×]ž‹çòïºp­|4�Ø14ºƒ|4Š£q21e[ÿ•á±#Ì2ü~ )­š~ïë!\–¤ñz„;�ë: �¶Ôl�x¾.Žà�×7ÕB¿§ÌrxV�t@¥[¦Ú!´:‰Õ„.–ºpû#òóã0„‰I*Æ`ü3ï‹ý´KØ™Cý¯)Ç0^ã¿ΘùÊ£„ð¦\¯•�3¾¦Z(–B¸˜l>–áñ¡I…l�bìƒò*LeIÀ†¥®åY %t„û€fŸ�| H¸¥"‚“Šþ©Iõî´ Þګо®V*'ÙÔ¢¤¬úZ3¶a¨Ï•ŒY‘¯Í;˜A»W|ÞM¯%s0ÎÉ«?9_G „.ìÆíåŸusäWŒWø¸Ó³!yí'p�r+/Ê×Zƒ‹ã'ÓE.÷uzaöá:çºo§-a±Ýì²|¿ç0¾D¸…¹Î—1r™|™¯£Ä]­'yU—òuqo¼�©ÚÈ-ÜqC«JXý9©hÝMít+KT2‰�*á06b¨;ÄH¾·PÌØ¦Á¼¼qþŒ8«2îJËâK'k}ˆ1{ßD�ås®g¬Ž8yí'J¬®L»nEI[(ÔŠ{qz²»at§þܼÆl¦-`1F@œŽ¿_K*©Óz'+ë5b[ðÒ�ÙC�o÷e·TDpRÑ™‘—{’¼ÖrRÑoò¯´ªD-üðM>ý>$Ý4°r-ô~×=º«¼3âénvèlÂ=t‡úI~üß§wW;¦‹/†º¸èb6ë€ç%ªjøoµ¡zú=Ub1ø›¤Tp&|Î †ZjND¼óx铤Î̸‘Ÿa<Ļŗ‘íMl’-« 9ÖF>Oã'Ô²97¬6œTtQÇIDATNÛJ“äí k ~Ÿú�ë䮟՟»>eרµ3RéØeyÑø"ñ5>CÒ­(šhõ¹4¹èsÐ*ÿíÇêÞÃÐ�tíÛ!ÎŒ �·(k"¶�üŒñ×ç8ƺŒ>ÇhŒc †æÑ,ç+"û ÌÅŒnNÆü<« Ÿ7ã.þ¹4*Àãáv$óÆÄÒØ óùYTgF¿ ’ºÎ¥­›�ð?�EyãH¬C•ý ¤w«šêÆV<°šü ÉI ÙÊ Z}]Âcr XǸÿk2«9Ñ>JäþðrÄíuâ÷Fe:?æÿiàicù¶ã6É<�Ÿ[pyTÖˆ.ÔUZUÜÔ­i|†îèÇTvêË_¹-¶E n“¿!Ÿ�××0Žàº x‘Î÷ÔlÑ:Çýùʼ-¾I&ó»ÅÐ÷¯ýà]$­˜ÚÆG9¦ç¶x $—�2]h †f-ºî´/¯Á]V=�§È®­7FÖÈ;¡HiB;U Êó"·¬rÖº³}”urŒ4Š>/+‰ m¥è¡.@y$Ë*x‘®îuçâû- ºß“XýÙ»¾†Ç×ý\gíOÁ‰Y?&D~¥¤³ržN*­ÉJ³­®œ\²âw78½[«~מ·ÙB')ëfmûý˜±�똙°ûÄ×}1íË=Í¢’ºk»uý[ඈš(Seh¹/hlÅÊȇºíŠfQ‹‰ÆD•ÕŠPÔŽàŒ,ÎÂŒ;¿Ij†[CñÇáA†ZŸtbÜž@­©ÜdÝÝÔUb©¢Š|} Ú>Íñ9c¥ÀÉm¤.;¿G>~�$‘mº –(îSïq±1ÚÅ׿ñâiâ4M’WD)D+‘î\1@2‘ÔfŒûaMò$,«¶ ÔV˜9yüÞ…r¨Û˃h†Ÿq»ÜÍU² ·Ç‘ƒ4Qû%š/¸‹Ûàj.N†œTäe"$5È]š´x’üBw#*U§�ܪÉíR¥õ÷¬]Ƙ[]“P’´”úÂ1n#/ºp^‹ëz.â…^tÖ©K¢îª/ÃíñrÄ×SiÛ<*!U)öæÂŒëP/¡ûž»FpR‘  ÂÄb5Xkh6]†äkààŸ?SOÏò{r_Øî¢q›ó{_•ñ JÆ÷Ôû/ʸõ£¤gu®ãE¨–&�}ÕS Åb\Œb¨�±™—ï_x×H¾‡.êUöõN”ïŽô½KëØnUƒ: åÓø–yøþgÃ*㤢8û0±8ƒÑæk»–J32.c,ƒd¦Zý`†6=[<'ašÐÔ¯‹U뙉ÇÛÆŒçPC\/U„RÁŽKP>Ý)ß•ë°"ã]ä/ôwìÛçq½4¸}]”“x)=„±°’”$-ö¡±•™'Œp ßS=jÖõZ\op]vArÓí?(‡Æ=ÎÎ÷z2>_ßVÀ½X1.eb12¬µt,ýÁœÉ„J.I[¾Ç`m¢cH]Št±4c/FíG NguW7�2ÆZ<‚d~�Éù¾EvÁ M>¿÷<®ãù\ÌŠ¤ûZQ4Cµ*�í“W•§¬ø¾Ûq15Š�ÏDãCæç{ýv¨ÿW››ºé†$É>ÅÑþ¿žÆ=öÒr9 Â| 椢x«0nfb16¬ÕÒ»Tº;6’„²Ê~ÄÝæ^XˆªïlªuO-ê®s Cw8åq4‘º1î@¥4ÖbA$å6óœË 'áZ€ï1›Æ•0¾DCp]_P÷5$3&ë‚ø-äC}ù5OÉrEŽŸè”ZÔJø¦d�dlG,µB©kÑ|ªNÈö7¦V=#¸~ï04q:ÆÑȯ•JÉéRéþ^�aJ/úÐ&•퀼Èî¶öÏ0ç�ljÅ‚»¹.*t¡¤ RžÁ¾/ò¸šf5•¶V¯ÄXI)Úé2<]Ⱥ+­òµwq_¿-Ãí³:ªœ¸&#Ë 8µJh@úùMømåçÔ¸‡žÏ:K‡Oû�qã<~Æ+Ñ`üü£!ùŽu³uyÆXž~3ãRƹ�LäÈ÷R+F§Ûø[|mwY�ढ\=U9ÜU£ËpwŸIÕ¨Ÿ#Û�¦ ìRS«Ã¬AxNP"<>’;ª0Æeè¢KÇj½y©®ãGŠÄí¢í01’m¢ó¦Z4tCF-4Ú6o3^Ï{¾‰²ñsª{NÏçÓ\W=û€Z#^鉦ÎþpŒ‡ï>»¶ƒŽ‡Ñ‘´^éûÖ5ÓkÃÌÏ×V‹CÖ.PjE 椢|ºë =ëRÏÙJ”Þ±Ü I‚1,ðxÚffÖõø;«–À�1X×¥ÅW,�ÇT”o Ƶž$¯;i’ Æ Œ™‘L ¥ælO¶§Î³›™Y¹–F˜û`QœTTc$“äm ëZL,®R H$s^¨¡ˆ…)j–\33¯eæb\‘v骃uæXwªÞa¼°ÜÖõxHŒÉ…ÍíSÀ:ñ>�Ÿ,ƒýÌÌ,'éàk˜ IÅÃxN.k~ŠÞÖGÝŠCÇ­NšNbh�ÜRQ½ÝyœÇðwÑåx2û€q’úæºÓR›Yqk¬ŠÙkÍÌ,ñ$ …ÌǸ“×3Ó¢:!̃N(âùB¶Öa\U£¦C«Ol_i’(ÆÂüϹg2S‡¾d·ÀÌÌJÇk– ¸øÙ0ÿ[ ÅSü·ß d|O�S\ a.…Es÷§zÑ€Óe5‰̆ÂÃE%÷T1J“F�ë¡ �ʘ¹ØÌÌRüMš†‹‘”A!ý–çè Püúhl¢ªjN€0S„”®µïsRQ?/0ãÎý"̆ÁÃf$.6fì̘ Ýíkƨ‡™™•†¿E*�1g‡ט‹ƒû™ý:v]ÔíêŸHæºq×mUX4wªMˆt’9`6 ]@3NfÌŽ¤lžN¤_£;Ýë„Â̬\¼>ù#:O(D7ÀÎåó^fìǘ9àëŒÎЊ»žPÈÁ°\¸¥¢¾T^tEO’gIgæý’IõÆ@÷8’ÇÇ®03³Rð÷fy$ó+źIw¥[xÏ46Žë0#[1¶fŒ‰8n¥È‘“ŠzÓàÜ Ëè�hÍÇCJ …N´;â»jm¶��‹`ff…K[Ô•©ˆq}·3TŠöÃa¢ÇøŒÉó2&F~fâïÈã°\8©h†=ÒR£fáᥒ´šïb1´×x<.Þ�™™Ž¿+7s±ÚãPþ†ì Ë�ÇT4á<˜�ƒY‡4 ޱ8ÿœ…1˜Ñ¶±9¡03+Õûh�GÀr夢9~‘N’7<Ì:Ä ïÇ›óÏÉû3Þ@;\33+ KVábšï=ƪü<ŸÂr夢Y4IÞµªx³ 4÷ Cwe¦@2YÑýh6'ff%ãïÈ’\œ†æRœÕø9ž‡åÎIEó¨KËL,<Z¸m¦e<ÌØ–12ì[<‘~Á8�17’}I�¿B³¨+—'¼33«?6CÒòÝ4ê¾µ8×ÿfX!™™UŒ¿×s1ãXÔÛµŒ¹œPÏ-Í÷c,סËq—R’¬Ú3ðP;ùgÆùÜnÿ…}·£Î +3vfÔ±E`n~oMbfÖüÝPùòSÓ >4 û×ü½8 V 'í >ñ›òÀ9 ]Lc(¸8>ÃS^aüEÏá¶{öܦº µc#Æ(¨Þü®&‚™™Õ3ô[¡–ï¹P­3»ñ÷¢-ÁIE»ìÍèwèBiE¬c#;••û;ãOní·¯º‘)iÓ„z“ :Gñ;ÚffV[üÍÄ…&aUµÁ�zäI½64að½°Ò9©hÝuß]†»“fÿ5â©¿¾ºF]Áíè}té<)ú¡PרùQ¾Eø½Ü 33k„t,ãúŒeQL‚q'㌳4FV'ít c]•EH«=Ãùy’qãTO�Ó;n÷‘T�ú)£ŒIÝõÉ̬Áø»1 1fB’` bŒÏ—1P©ü��!ù½œqãVÿFׇ“Šöº�±¶�ÐrÜ•TÙaiCc-4ÈëH—¤í·¿ºCíÄØIµ­¢Ãï`'˜™™Yí8©h·GK·y w£MQÎìž ¯æÕ?»ûMïÒ‰ÕV]£fBþó¤Efffõ䤢ý^F’X<‰–á.¤&SÍ©Pö„m÷ éu.·ë—°àw³<’®QZæqžq×'33³óäwí7ã®–N’w*ª™z^$Õ¢4¡Þ>ie$ €«+"™Ie~?Fœs`fffµå–Šî¡IòÖä…Þ•hî>ksq>êAÛöLÆ]’¶wü¾ÆäbÆŒ)�Ý<ܶ÷ÁÌÌÌjÉIEwùš±/ÎNEƒ¥¨Ï¡ØAÁ¡®GR’ö2—¤ý!~w?BR-J]£êði�s[1FÃÌÌÌrâîOÝEß÷)¼°û-šíXÔ3¡�¥—2žävÞ‘1ì[L¾bœÏXÉŒ«jáh\Ê`˜™™Y­¹¥¢{�È »Ÿ£a¸Û,ÂE“*©¤ï`ÆÜÞÏÃ~€ßéÄHfêV÷¨Þê”OÆm÷ ÌÌ̬¶œTt·+�Œ³ø ÁÝFû¬æ�ØÍ¢®gš”P%io‚ý¿Û‘¸ØIIÚÙÒÿ}-·×²033³ZsRaš‘re^¸½‡I»pí�fz�ñ'nóÓa½â÷«ndJ.ÔUê ˜™™Y­9©0QÅ¢¥›ÖÅ„»ÐæHZ-š:6H“ªÜê_¸í߆™™™YC9©°¯3oÚ$yÜ�V@2ÓõÈh.u?;IIÚÇ`fffÖ0N*lhï3Và…íh�tb¿«QߊPY܈¤$í%.IkEã±ó¾¿Òm.ä1¶6¬•¸okþ ‘²=+Û>Á÷¸‹‹ù�ÍÓ|�é`ÖB.)kCÓìÔCx¢\ Âô½HNì/£ùGÒòò4¿‡]cÀÌÌ̬æœTذtgçât¼Bc0±x–‹y�¢¦fÉx…ßÅQŒ)afffVSN*¬7ê§IòAƒ0±ÐÀç�t!j µTìÄx–ßÇ%dá ›IDATŒ%afffV3N*¬?{ñ"ö Fcö&šln$sB´‰¾uK»žßǃjIJçu0333«œ“ ÈFŒ«štËÄ⿌5�”km£Ù§0^â÷r c˜™™™UÈI…uBwþoáÅëØh&Ûq±;£­U”Ægì‹$¹8�Ñ­U|ÌÌ̬bN*¬S}7/\§@ƒ0±ø#ë2¾D{�ÈØ„ñ¿Ÿ›k5©Ëš™™™5Ÿ/<,‹i÷ð‚uf4‹ �´¶|‚ö[„¡Ï«�Ý¿bŒ 333³‚9©°¬Ôåæ^¬.†abq 1ÞBwP ÚÑ”¤=†15ÌÌÌÌ â¤ÂB¨Ìéµ¼PmÔl´L,DÒ�ët�Ñ; ™Lï2Æ20333Ë™“ 5ã|^¤n‹abñ"’Ù·@wÑÜ#+3®áwö0c+—¤533³¼8©°XÇóâô04‹w‘t…ºÝiVƉŒ—5Á!c"˜™™™EpRayø5/LÏkØ$yŸr±<ãLt¯ñ{1^äww&cN˜™™™fùX‡16/LWK/Øk�ëù5s�_@rqÝ­Ô•mC·Åm\Ÿ�Ûç+XÛm�dÜMQ~ÎØaÔzŠÓ-EÌÌJá¤Âò¤AÀ·ñÂtY^�¾�†àºîÍu~šžŒdìA7[( M¨w,—'pû|k%~·÷ @܇VD¸'¹~C`ff�àîO–7u¡¹§�“ä�ÊÅŒÏa29ãPÆkü.�cL333³>8©°"hŽ%s5iò5&—r±ã}X�Q¿`<ÉïòJÆ 0333†“ +Š&ÉÓ„s/ðBta4 �)P÷ŸW`ÃÒÀö+ø}þ›±cd˜™™™ÁI…K@Çb\§Üh&�q1ã Xofdƒd¶î?¸$­™™™9©°2h’µ‹yñ¹9‚‰Å\ÌϸÖ—q{ Ô}c˜™™YWrRaeQU¥Sxáy"­z´ãXTEn=Æíü~ï`¬Ïpe933³.â¤Âʶ/8Ï`4¢t+‹/ª u ¬?aœÍxžßñocÁÌÌÌZÏw­ 1Æáçš¼`oD W®ç–\ßgøç!°NLÊøc_n·¿sy8·áS0kîÓã"™‘^ñ ãmîß/¡ ð³âbÐPÿK“�j^¢·ºpN›o�Ý׈”~2þËxƒÛýeXWâ¾ sÐ UÚüŠûÂ#¨�“ «Š&ź…Är<ÞEp=Çõ}žžÎø¬£ ™UYßñž0kï r±$c1$s·ŒŸFo�Õâc$3u¿Îx˜qãZž;9{7?ÓÔ\,ʘ›1’£÷óx-^E² 4¡¨>ÿ iñ ˈÛSûÜZ •òÄPQŒ÷ò8-tŽÕXÀç×0.æv ÃÏ2-³0feÌĘl¨VBöÒ$–ñ¾;Þžnâçí·ËTHŽÁy³3æÂ÷·�\�¤JceœTX•tpÜ̓eqž Q•ëy×W'nÍi1*¬�3ö…YðøÖyiSÆHZ"²-�A .Ø:yÉoT^[7#Îã9ä#ÔXz!«º˜� ÙM’Æék måÌ8…ŸÿU´GH7Þ~»�§ãÑÖdìˆ$¡ëÔØi¨:ŸnÚý‰¯u—Ç1Ωk¯€ôx[…±,’ åQˆ¯¥cKÅUNåç=JçlºÙýŒëvú@âëOÀ…ŠÛè†Æ|èãfÆ0*ïVî1Vµi�L”73‚'„ë�ÌeñØ@Ô<¿.·Ù—0«1žƒVR¡þy7’ º¬ E_ôC¿8ãdÆ«|�Cê8Öˆë4 ã<þù"c„%}Ñy^E:T†útÆ °ïÑD±ŒÝøç³ }Yо¨‚á`Æs|muá­Å5×cÆvŒ'‘o¿Eò›œP¤ÔЦäD7ÿ^gìÍø1ê¥ß.s\ßE"iuúc%t–P øÚepRau &Ý;šT’”É"¹{ð¬?r[= ³šâyg6†în^ޤÐ@‘Ô÷y/$×{¡Ô'›q"ÿT_ìuP¼M�k¬U:6¥ÉrS‘ÞõVw±?"éf—·‰'1îUòˆŠð½GeìŽ$qý c:GcNf¼Ì÷<˜1ê¡×Ö®ßtŒ"™4ø§ÈñµËä¤ÂêBü�†M’§;Jjº}Ö›{‘œÔÍjI“7rñ’®JeR×IµX<Ę ÑÝk.t·x+”oc½7×a=t1~~%êFÓéÝès2á{þ%S7g$ÊŠüZ;¡Ö‹½‘´Ö¬�êý åzýÉq¸ ⸥Âl(š$ï`Û£!˜XhÀØÂHÆÙwTf#nŸÊOrfÃÒ,ðŒ{�LÞX¥Ù·q]6D‰TÒ›q%’»×c£:š@Sg×йm‚ÇT¤-D·òÏÝP>mïcPµp1?X\&µŠý£Nse¥]ÕBØš"&N*¬ŽŽM3÷Fà…³JJªßãù°›p»<³šá¹EŒÔ%oÔÃÈŒ3¹^B ø>z?š¨´JÌ0tçüúöHP÷§tL‰Z¸BuvHË}Šïq’–‚ºØ§â®‡ÿKD¹êjy’JW¹¾v•œTX]í™N’׈}”Ðÿe¬‹¤Ol·;‰ÛâB˜Õ Ï'K#é³\f÷‹Ný’ëw1cDDƒ�¹¸ñÝ,Š �Éwr«¼›]í{º˜œÕÛ˜Ûû„¯=i°šQ×Ã¥P ÆFÒr3&ZÆI…Õ™&É»J•"м˜Ö 4ÝuëÖn?ÿf4¦ûšužGTfóZÔ»ôêŒKP~~usRB1?êKwð•XL‚ö'�ºX¯ˆ®P|Ím¸øêëŒÈÁÛ¡¿ñšóå_HZ(óæ1fXIŸã*ûýfÂÄâ.4 ¬ÛʨªFøªüü_À¬FÒ¹ ­[Ÿ£Ò>è¹QÕ$Ñ͉úSBq!×¹ ŒVÞÝ$'ê µr¢JF\œ€zSE¬Ã.ô»ßýL ÉÝŸÌ: BM’7 Á kõYV½ìÐ=6ãç~fõ£r±M꯿wZf4/G#™Œ®)T�+æ‚ϲœãü)M©ú÷s~æ&$Ú�áµ­)4yÒ]<,Á ×ÇÐ\Ϲ¾ òOM–7Úí0�£°:â1¨‹ÓÙÐ<š$nzWï!_C³3o‰æÙ…ë~ ?ÿXtçþwŒí!�c]äG%ŸŸb¼Ìè9tC\É€*/Æv%Û•±),N*¬ITÇ[“ä­Âš›ÐJ€¸¾šËB}™§A;)ijMIC­‹0ædLÆPfçf¼Ž|¬Ãϱ ÂíËÈ«K‹Êðþ†1?ꌩó1dL­ÿ§CrQù0ò¡D­Î]iŠêîY·¯GÒÂ4ìþ6cr†. UY¥ˆ_E~‚K§åŠc~›ßb¬É϶ãï�\èó1÷3T"Vã8îF˜Ð¬mN*¬‰F`œÏضhžôt§i$3§¶…&¸[‘Ÿ­›Æ�Xs¨[ÃÔˆ§VÑ™¹Ÿ/ËÜß]sþÛ=Œ_òO ×ÄzŸ Þñ!Ãñ9S"²+Kê%$fgü�ñR_Ô¿1Õcõœô¹±¶çg™ÝCåfgå6\šqÊûÛ} µÄ)™û5ãcÄ[,bжžÚzòã'ü<#@zón $]¥²Zõ¤®_Ç!©„©qFÓ3ÆOo`¨eP]ʹu$ãTÌI…5™~l3/ÏŸs±2ŠéŽP… ø™ž„Yͤe¨ƒx›s_<ë~žÎ[sÿœ‘q+âL‹¤…$«ý‘Ü€‰q,CwÈ/CFést[HU Dw؆ÛmaÆ¿³<‰�ÿŠ¡±CÚÞ· Þ¯&tî‡ÏJ¢žC„t"Úã‘ÝOPjåÔþ>!?ÏŒíg1îd<ÅP78}Ö·Õ½ZcŽcìÊØsRaM·/ Î ¹“Wub¨I{4ÛÎü…ÔÓ7ËÁVˆëö£ÿk™@„ô®¾º/ Aœ_fyp:É݈s×_}Í?C =—¡y{b+9­ÙòIñzö·¿!Ÿ¯nPª:8q–æöžÙ…VR:(k"Õ��®wÓ×d>¬_q;LÌø-ãM4�“ k Òº¶&'…Žð„q[ é;Û4¿ãú ³úÚ qÔ­ïZä ½°V…˜® 3e[¡sËHw0×y䄯¥;ßG!œ®UvF{­VÀþv;©{ÍVÈnJ„9ù M>gBu4–dQ~oÁãYêÂI…µÅâH&É Áˆ‘ª;Tð�À œÀõÞf5•Ö�Ÿáç>~ò·’qH¡²T� ¹ ìñ ã·ÈßnŒ˜rà¡�Žæþv5ò·>âö·U�]H��óó¿…ü,€0 /04ø>�nk•sIYk]LÜ£2’<@_Dp=¯äúj·~Tbëmíì´+ƒY�­‰pš¼q/@ç$ëªÆÚHj~>ЃøS!ÀBåa5V*÷T�3áº)1P¼�Ù²'æóçÖàd´‡.(wGÒýM7€Bï~Ï¥›t=}ø;¤^YjçVÊ•ë«êkÛ L7$ßa,™2o'Ö6j~Ub±¼JÍ¡Tœë»ÿ¼IÕ˜:ú'×sC˜ÕßÊ·÷ó/Q¾ö<Ö5>"dN‹qùÜùùw ð¸Uî¤û¶ÿ_û~†³ùçÆ³£NIEl)í½Ò…àkÉí­*h¡]‚TÍé¬NÌ÷«¬ú?§Êë^„pU$ËÇN¯w²6R©µ[x’Y ÁËHjÜ?ŠúQ½ôµ`Vs<æ5Ž`.„ÑŒ½1%�ú Â-ÜÁcVD¸2ÆJÅô_õ3OÅŒsQ¼cn>ÔœÆR247ŠZÀbó—�ThŽ˜IkÉI…µÕ¨Œ«6Iž~dÔôFÔ‡Ем{k–#]t†þ®©o{“8Æ”X]°ƒÇÌ�0WÙJÑ#mA¾aB½Äì/Ǩ,Š÷W„›5¤êfŒeñ?Õuè÷ˆWfÏ}ïEŒ[ªœ“ k3õÛU¹ÙBú¬�?2!)AY‡r­8¶R‘Íóf9 -i)™çb‘N„zã`öþþ‘çº >6ëŸ(Ïå3F:©_]Ä´T”µ¿½ÇEhá�ZL:Èï\ã;~ÁÌPâ«q‡¸3žÉ×™IDATcl4ÏmëöÔÃc*¬ítÒ?”'¢A<ˆó˜]¶pÐÈÅ\gͤYÕÀh%Ë9¡°†™ aþSÆ]ú¡(©XÙM3À¿ÏŠpCPž˜ÖØAH87™ö·Qmï�Y£5Žg®kL©ñ=4ùœZ5Y¤’FÇ1Üꮌn–•pRaÝBw9ÆåÉq=4„’ ®óóüóP”K?@+ýCbV€Ð¤"—92¸ a†ç9a"›¯÷ñÿ¾æ#( ßë&~ ™”­(¡"ôûó~*’iFù�ð»WùÖM�LÔ§db4t�/�´²´’“ ë&ë¦ÝVI»Õ×ó0®ó³H*pŒ€â�ÃØ$m-1kšqæe”+¦ëƒ£ö•TŒ‰0e~yI«CVuª�Úý©ìíý,ÂM‚’ þŽ©•Me‘U@eyt¯ëcf©¯;�©°n£.w4l’¼ �Œ³øÅÒ,º8¡° ½QöÊõ&Âõ7I×èóʺ ÆGó•½½_E¸¨í­y šqº;¡�˜¯öœTX7ÒÄPšËbj4„º ©|’çÌ£=T‰b}¾Ç¾0k¶F$iKé3a?ÿšTä6Y¡IEU3ç©Ôí�Vï }Ïàí�–zÕEô€“6v‘ÿ ÅœTX·Ò`°»Ò8!اmÏ ?ºc¶ _»ŒzéfE ½P/£ká°B‹ ô7cqh+cÈ ×±B×5ëŒÍuÔ¤í�ùØàïê" ͽ¤R¯£¢\£ÞœT˜µ”ú_ßÔ°IòÔ[‰Ðˆ÷ÔdrUte´”KÊš}畽ãÉiK4×ók.6æ:k"¨N"õ©ý%Ÿw,ÌÚéy„Y�Ç�áʺ‹¸Â=ßÏ¿…–ª™Ÿa~þ[Q¾×ïkÿ<ê#ôîÿÜ?âöþ åXá^èiѓߡ8ª^¥VõÛ×1nî§,kò7–“ ³ïÛB“äq¹.OZ¡ƒ>KÅõÜ›ë¬r}'£ï9Õµÿ){;ÌÚëy„Ñø†yw£K ÌçýL|'�!ÜbŒR’ Ä]äÆÌñQêv» ã”c „{¾ƒÇœ„üЫµMÛE]šîbÜ™q"Ö a•q÷'³Z�1„ê¡åKÇ“®º4­�Þ+ÊhìÅlN(¬ <„p« <¯Œ�dáýhà1þo L)Ÿ?µ*ÂÅ|Çy‹iÙ*kÓ„ˆK ̳MÔÆ××ïå’ˆw cm¾ßX MP{˜ŠˆdL($´[�åÀI…YïtéŽtîFàÉ÷R$?=ýªÕ=j?Ærü··aÖ~÷3²^„ôØF]RP<Õ콫ÛIKÂ=³?ÿ\(ßcN$…&B<ÄsYh…«"„v’­¹-FDñÔ�7´«Y'ûÒæˆ£¢!³ó{ÕïÔ…ˆ· ¬2N*ÌúÖ3I^Ù¥ñ‚ñ¤|’¹,F2û û‰›U*Ý×C[ätao'„»¹ƒÇ\‰p;£x¿B¸N>™bέ*ñº Š·ÂÝÑß?ò·q4$-û¡Næ1»ãaä€ë£ŠbóÂ*ã¤Â¬jJÕ$yó !x‚~‚¡;?7¬û\�póX/lr5¾ön\L‚0ãÕIÂp1Âmœ¶$‚¯=1å»/C½Ä´TÈé…y!øÚJ`§F¸ëø÷¹îþFm…|m«”“ ³�ý˜q OÐ+ÀÌêî|„SéÍ? i…œCîÊ�ú· ó2�"LOyíÜ‹¸¤]}ÎFøu‡º=]ƒv™”q8 Àí­²µ‡"ܫܗ¿“€î�¥7ö„UÊI…Ygtº¼I“ä™u#^©Äòƒ·3�óå�#¾Þ(H.¨cúП›á±§ ÜÌŒƒ‘?]<Ï„p”X‚µLÛrÿXù;q™.éà1¡¯ÿ ¿Ë›�/µÊ¸òSÅœT˜uNÇ‹îâí3«³Ø¹X.åqžË€Ï´{‹*°Í�pš€,KR¡òÒ_"Ü\ï�¾Ö1\ìˆ8F{]Âm´r ;öŒ�‰qr� ½†ürÄÏ;âZe,'N*̲S?Ø“5Y̬vxTuóßA¸‘×ðß øüA\\�ðjG=þ”å.=« pç!Î~\ÿ¿ÄŒ1ásGÕ¹qƒ…åÚºâ4™f�VKøÏ�ÏŸÉþ¶â<Àí}o� ­´6rÂϬ9f:iU±8©0 ³’�2JšYvytá9•Çø�Y+Àé¼Àø-ÿü7âZ(D“Ý…ìdÄvÚŽñ$?ËòȈÏYWÏEr®Œõt‡¿r»Ý°¿ ÏÐ6zñ-ÒéìØ Ìè\ßè*MiÉw%QSÁjÁ3j›…S?XM’·ïꄞ\ͬ<&ÿÌcSÕefAÍ4ý_K³m«ÎÆ«Œ·ù¯ñÿ뮫JYŽÇP•8u›Òd`c"¿ìd€ö°ø%j±Ùqt÷ûJ¾ÖS\ª[ÍÕHfYÖÜ7Úóß4À]Û`Z†Æ£,͘ùPÙÑй7ŠVD¹nµjõìo7¤Ñ³¿½Êÿ¯Â!=û›ª/-�Æ�‘�{ù>�;x áT´ s²ÚƒÛAÉú?^MÍ à¤Â,Žî ©äìÒ<¿3«u'éd¸NÌ—Æ·fxÜ£`×ð¼rÂíËØ˜‘GÙÒéÒø^�‚·�Æ’äZ%¨Azö·Ý{þG û›ì–á±�!Ürüþn§OâsTH@­pkÁjÇÝŸÌâÍ€†M’gÖ x±rG ™t¡µ)"ðóëNòöh®MøbÆÆ­mãê.çöÒéƒùØç¸xáÖ@Ò*s(cQÆÄCÿ#ÿ{Æ,ê~—>æ>$å’�PÔ”“ ³|L„¤Åb˜YmðÂGw^AóèîëˆÄ×8 qswTå®ûÕ¨·RšJ”¥•¢GÌd‹¢®\j�Q‰Yuïúÿû $Çî•écæBq\x%N*Ìò£>­ÿc3«ÝýÍq/¨c/Ö†¦±%O£9tGz'Ô_›.D·ç>÷8²;íж±N*Ìò¥R”ª µ9̬x±ô  ®I[Wr“’Ð`Þ7PZÇÕ¸Î1ól”¥-¢§q{‡|Þ�\Ü�æsKEœT˜åOÇÕ)L,„™Õ/~.CR±-s%¥©Þþ*(?ÿ‹H*S}ˆúRò÷“–½P%§‡Qçr{o†8¿D}¼†0.Ÿ'fÅÙ—‰Åž$Ϭxñ¤¾ÙK!ç}s¢ îÖ`|�‚ðµÕ?ý'HæÏ¨õ©Ÿ—ëøš#äÜþ1’Ééê0Îç,nïõ‰¯¡ k�ÎmQ$ס󢌋æ¤Â¬X!é5̬r¼º�‹9÷£>g¬ÇõúJÀ÷QB¡ù4ríbéX®×âŒ÷Ð,AÝŸø9uñ»ã*Tçx®ÇFÈ _ko.NAu>a¬Êxa&…EsRaV<ý€xÆO³šàÐË\,Ì8ÕÒÝê¸>ç¡D|¿O*µ;ãFTGåb×çºìˆîñ¿D„Ÿù}†Šz€òý‚ï½rÆ×Ü’‹ãQ>�Z.-!Zâ¶ÈÊR]ÃI…Yþô£¡j�`Çà‰nãÀªfV�ôÂzgþ©2Ðe÷q×]Õ=øþ³1@Et^b,�dûK(×`Æô|ÿsÑÅøù÷çbqFtùਪ֌|ÏP�4YQ¤PŽ{³§]°zZ�BZ�&úæ›of€EqRa–Ÿ§û1¦Ô5ãF“ÊXšu£w"é¥ µD±tõ Ƥ|ßÃPé¬Ýš¼SIÖ‹(Ö`Æt|ÏÍÓ À& Sñƒë.n�'Ñl廢˜í¯„Q)jÌJh÷ Žñ=TfvÆïQlr±ß«·q8¡ÛpUX'fqt²>’±Olºëv£ì;~f�Çì7Œ‹sò?eœ„ü.†¾f\‹ä¢nb¾Ç~u;ÀuúŒq4cJþçrŒ¿0ÞD>ÔR»'c’4™hÒœ¥Ð (†~K¦f¬ƒdàz¬[�Œë›–¯ýwíç( ßëmÆ^üS³d«õâ:äC³Ä«ëžZ\êã1O!Ìΰ(•U¥IgK4k¢'1.äIí˜Y+ñgJÝRT†u!Æ$Œ ãôóµLê¢G]YBr!u]“ïÈsh<ØÜHZs4À{vÆdýâ­tðw×à6P‹†’,]G¼�dÔyŒÖH“� š ð�¦ÏëÁÏ£DiZ|—0©•ðu~®Wa�â¤Â¬wº@¸žqãÚn»`0333Ëbx˜™¨ïð i¨¹>´O¦™™™Y×qRaÝJã"ÔGóÆ­îÒdfffÎI…u•q¼ ß%w0‰xffff– 'Ö&Ï3že<“.ÿv+„™™™Y±œTXS¨„*A¼’.5„&¸ù_òÀÄᘙ™™Y%œTX•ÞIãí¡þý*¾K"^bÒð)ÌÌÌ̬–ªL*–„u›Ï‘&Mž ÊÌÌÌ̾¯²y*ÌÌÌÌ̬þffffffœT˜™™™™Y'fffffÅI…™™™™™EqRafffffQœT˜™™™™Y'fffffÅI…™™™™™EqRafffffQœT˜™™™™Y'fffffÅI…™™™™™EqRafffffQœT˜™™™™Y'fffffÅI…™™™™™EqRafffffQœT˜™™™™Y'fffffÅI…™™™™™EqRafffffQœT˜™™™™Y'fffffÅI…™™™™™EqRafffffQœT˜™™™™Y'fffffÅI…™™™™™EqRafffffQœT˜™™™™Y'fffffåÿÿÿPùwÀIDATXÒ,åÝÿ´IEND®B`‚python-django-debug-toolbar-8.0.0/docs/_static/brand/Wordmark-Columns-White.svg000066400000000000000000000207571524561404200275110ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/docs/_static/brand/Wordmark-Inline-Black.png000066400000000000000000001021451524561404200272200ustar00rootroot00000000000000‰PNG  IHDRß,2ßÊmIDATxœìÝœ$EùÿñgÓíÞÝÆÙ#HŽ’‘$$I� ’“(øDDÁ,*$)Š¢$Iz IrÎ ™›ÙtioÓÿûÜÍù?Ï 3Ý=f?ï׫_=f¦§¦ººê©êªZ‘ª5)‚ïDŒà;#ø@ľ1‚ïDŒà;#ø@ľ1‚ïDŒà;#ø@ľ1‚ïDŒà;#ø@ľ1‚ïDŒà;#ø@ľ1‚ïDŒà;#ø@ľ1‚ïDŒà;#ø@ľ±z�y���Gkw®!*ÓFFF¦i?µ¦¦föãiz/ŸÏïn Þ;::Ú´mf(ÁwH±‘YNèêê:ÚÐÙÙ¹dmmí?kjjþžËåŽ7”„à;¤”‚îÚíS(β(ؾšv�j[YÁ÷zmg)ƒ~gX ‚ï�N}ÃÃÃÛ*ð~�%@�÷�lHŸëO»*ÿdkkë †ù"øéóþÈÈÈFÝÝÝ÷ZÚÛÛwUà}¢¶Ìç_Vlhhx²££ã³†y"øéò’¶õ …Âó–Ô¿R[[{½6.ä_ÇëÿnÌår?×ãzÃ!øT‡Cæ�ŒŒ<044´Q>ŸÇÐÙÙyªêÖH©ÏÑ¿~Mø»'L˜Ðbø‚ï@u(9XŠÔº¡P(lÕ-¿ZÞ/ÓþD @øÍ‡‡‡ïommÍf"ø ¹$ŸÏﮇ3,~cs¹ÜíÚïg!(¿fCCÃ?õZK¾@¾](³´µµu(Xþ€çÛZ4VÐk=ÜÒÒ²²�rß ###CÃÃÃûåóùS-K×××?¢`ùÚ­�544<ÔÞÞõëf ÁwˆßT½?ÓÕÕu¹% —Ë­V[[û¨.o ÏÖ^WWwŸð[Ú(Eðb4222ihhh³|>·%@ñ­ÿ§.b•5^ø¿wttìb£ÁwˆÏk ¾¯×ÝÝý„% —ËíU[[ë‹«6[Lô~W)࿎�2ß �nÐÕÕõ–% ££ã+555Wkk°x�UþŸcÞF‚ïPa###·æóùÍzzzº,¹\îLÀ/´„(à?Aïw»Ø(Að*H�÷K …ÂÎzØoñ«Wàý*¿¿aÉ[Aø[µ�{ä}"¾@…(ðþCÞ󇿱���w)ð¾·¥„Že#u\i£Áwˆ˜‚îòŸï?²´´´LP�û=ÜÂRFø=tl?³*Gð"¦àû®]]]—[Z[[WhhhxLAîµ-¥tlÇ)ÿ%«bß " º×WàýfK@{{ûZõõõÿTp{iK¿ót¼©í ‹à;D@�÷7‡††6èééyÌÐÙÙ¹M]]Ý ¼ç,tœcjkk¯ÕÃqV…¾@H ¼?900°¾ï¯[r¹Ü^:†Û-c�là?¡Nƒ‹­ |€ô¾«P(lÒ××7ÉÐÑÑñ-í®R »Î²ißööö¬Ê|€àþ¤Àûg´Ÿf èìì¼ ¶¶ö4Þk,Ãêêê.T~Y«"ß €áááŸæóùýý¡Å¯^�÷ëµ?ÒªÃxà}þ÷«ß  ###ÃÚíêêú®%£Y�÷»´ßͪË:¹\î,«õ(Õtm{ …Û,ãÇ�_¬±±ñn=\ݪˆ:3fÔÔÔüYûßX• ø%P`¸ghhh›žžžÇ,mmmËÕÕÕÝ£ õRV=>Tº^800p^R ÖV ÁwXˆßV€xˆ_¶(ð¾žïw(ðž³* ô|RŸåù|þ ý8êÁwXŠŸëïïßfÊ”)Xr¹Ü T_§‡M–a>W¾v7 ŸÓÝÝ}�U9‚ï0­­­ÝO�÷>K@ggçÁÚýβm²ïkÿóB¡ðo%¾À¼]˜Ïç�²„(ðþ]í~lÙõª¶s•†—h?ÅF‚ï0‡‘YNêêê:Ý’Ëå~«Ý¡–MwÿBéw³�Ø(EðŠtÒî _cÉÓÙÙy•ö»Y¶LWÚ]600pV__ßK‚ïP4µ¦¦f×|>·% —˵jw›¶�-;ÞÕv�‚îööö ÿAðÌ>Ú®»»û)KÀøñãSàÿ=\Ù²á‘âÔ2>JÐð?¾ÕFFFÞÔ¶¹ïoYZZZVjhhðÑöKYŠ)�<È~­¶_ … DðÀ¨¥€ò“ÛõõõM²är¹�´»­¦¦¦ÍRJiTÐñ]\[[{î¤I“Þ5”„à;€QIAå» …®z8Í Àû j_¯‡�–BJŸ´�ÓÕÕu©~œn( Áw£ÑŸx?PûaK€ï‡h÷mµ–" ¶�جE_ÏQúÜnŒà;€Ñæ´|>’%D�÷ÕÔÔ|ßÒeж? þ¼··÷Chߌ #³ÕÕÕu‘%£¦³³ó�Úïg)¡ôxKÛyê øU¡Pè5D†à;€Ñ xxxŸîîî-�¹\î:íw´PÀý~í~¡€»Ó�!r‰ß;::Úô¯c Ó1¼ÙÓÓó/T…¶¶¶õÔ[ßb ª««›’ÏçŸ1£ÉU„WWe|+“žóvooï« 6jO|Ruùœ�r>RMí™× £†®U›èº3ÆÊ488øÜäÉ“?*õÿ;;;WZÜʤç¼×××÷’@úô麹½ïYT~·ª­z·®o R è8®ÔµäŒ®®®g •äÈ÷5œø»¥€2¯2ÝcÊ|OëǧîSeáedN}}ý¯µ[צ«WjžÑõåiUjžÖþ‰B¡p§!íNVýäsV¦ÚÚÚsµ;ÖÄFåê™:÷¶7œ®íD衼�®U‹Z™t¾ì¥Ý_ÊxÊ·õ>X™ô>¿Õîp€tù@í²ml~Ö ØãR*¿½=¸Š%DíÓ.íΛ1cÆyêŒýÐ2nüøñ‹�3f}§÷YŠ1íŒÍ¬¼´j·•ö[ùÏúâ ˜ØÎЉu[rN¶ïúì× �ßÓÓó7«û©­”¶MæøõZúýIÝÑPŠ´À§/´N»]µ¿]�’g´}ÞN7ÞWRàýÑyÞçEÿ·s]]Ý#mmm‰Î)øÿT6/çS&¨<ÿ·®-g777—=Ï8Ì%µ#‘â¦àó­…Ba«„ï6}úô£u,½Ÿ×þÝ—Õgß3ë�wŸ'_ÁõojÿVmmíesÞgÒï±#ø^}™«kûsggçËÅ |ìÚÛÛ—3fÌDÇ2VžE€¿Ó¦2@šŒS™þõÆÆÆumù¹/Hn€À€¾DÁç�õp†%lêÔ©ï©Íw´U�>ïëÚ¾¦÷YRŸûkYŸý¢µµuEÅ_}Æ�÷t?]û�Ïïõ·ý-Å1î$,Ë=qË{^A’û|Þ&‹‘2œÏü1 @ÇÜ®í&=cP½2{}Qí•¥×€?Êè € ¾§ôa–¢)xòùü´»Á¢7QA÷Ïëó.¯íœI“&õY†)ꃂî×744¼¬�Ô6®„§-ªHA¾IDATçmo)•XÃ^Á…aË8}†Mµ=§LqºÅ@ïspqñ¾À¼§Hò€ê•é9UNwª£õ|•ù�zo¿JAè¡áááýèþ‰¥Pÿ—tŒQ¬÷Õ¯×ù�¶ÕõY·RÐý*˶¦ŽŽŽ/+^ù¼Ú÷êçݬ|%MÍ�„Ä‚ïXpµ>÷ÐýãÇ�_Ì*ë@‹ÆþÕ«Zæ8\G½ýO¨òY,�b�»uuu]n)5yòä�´ûŠ÷‘>ã–PÀýPmÏ[†)ŽºxggçiŠ©¾_[[{‘ï«Zp{XJ1íLD|ÂÿÆÆÆg•i6°ÊÙÊ" c]«µµ5gP�ªéú2Þ§Seä üM>88¸¾ï7[Ê)`~µŽ÷^+ÏcÃÃÃäóyŸÏýäÞÞÞ(FÏ'¦½½}mµq¯Põßúñ[ŠS†^÷L¯Ñ¡×ÜÎRˆùd#¤/z‚vkkk[ß"ÖÜܼ¨EHÇú d‚ÊìÔ¹{©þC�ì7‡††6èééyÌ2Bí»¯ø9 úÿ»¶ktÿ´‚îÞ±p™~=`ÙUßÑÑñȬ««{Biðmõ­½,…ù½æúúú¿+3mlÒÉVgÑ Ý«)U­×— ÀÀ, N?5cÆ ¼¿n¢`ú :ö çóç>ýí¬ÚÚÚ¥ …ÂÞ ºßgÖ. ºŸ¨¶ìÛúLW(ྑUÎç,…’ ¾gzA¼…hVfº3ÊðS§N}O'_di¦`þ;Õ)ó z/À�êܽØ`t»GÁéÍŠó¨gŽB|ßÓÖ5ǯ^R¬î« Ì/¦Ïu¤I“Þµ kmm]Qm׋êêêÞQÐýTýªÒëdΜ‘¤³‘„ÅÈ÷ʯ v«zv–´è÷mw)辋>Ï*]]]èOÓ,ÃÔVÝIA÷Û^VÛõËúÕ8‹‘ýÛZÊ$ PæªöàûÌ}Î;'L˜ÐbѸÚ" ãºÒFGa `t ×—ÓÔ¹›Ê[ê$ªª#)Îv¶ÕûYP°ýÂB¡°]Š]ˆ&Ý¿¢6ê ~߬öêg,!zÿ,e¢žØ¾dú"ÂN¡ò¸¶> ¦YÛz}ÎUÕƒu�†Îx:!/PF>^?fÁM›>}ú 0/h{ÑðNe/óõp«0#íþ¤ Ϊ¨=k0:=¥­Ñ*kqm+[p¾ø[EGå©­‘©ynJ×¼#Õþ¹È� &LXBíàcµ}IMÔK˦6k´ýTK‰Ä‚ïa ~¹§§çQ !—Ë­¦Ì±�¾˜½µßF¿j² Ðko¯÷:^Áó³-œi*hS/Î-�žÜ”)S>0À¼ÜžÏç²Æ�¿XccãZº¶ì¢òß·OXe4ézp­ökYÆoM€ T·®ø\ªÃ¢rü hhhèðîîî' €øT勊g}Q�÷?×Ñѱ©êGǩͻ§ÿ]û¼Eϱ9×`–j›†³Oñº-¼'΃Ú_Tû󟵵µ÷)ι§¥”ŽosK‘,ÏùyO^ww÷� ”줇i{Õ"V__IA¡cü±v>×oI#ؕ֓TP¨†# «bGï‰Ú/­ò8òÐ⬻T—�Ô†ÚHñº{ ‰h—ÎÎΓtCAíËÕþÜÐRNyfcK‘ÌŽ|�`ÎøùR�äŸÚÖÔ—õh ‰$®ã»NÛâÃÃÃ_ÖqÞ®_MŸë_¦é÷·ù|X ø,¢‚ê�£CZGzLUyü•;H¤Ó©t¦@õxM1­õ}0“!v---++àþ«ºººwõã)ŠÃ.i¡c]ßR4ÕzbÁ÷úúúPïÁÈù…™®üXí·Õ{u[D ù®E¨««ë×:ÎŠÓæ|BǺ‰ïõó8ý~G¢0 ¥ú6KŸ’Fåô*zøW‹Î*êÜÝÏ ûÜ@1­· qªQ»r'Ýï3fÌ‹ b¡ß�µìÛÙÙ¹Ž¥#ßBAì»$ñ¹Ú_¶h,¡Lü5«€îîî7ÔyÐ÷"–k‹Êén]_|�‘ÈF¬«s÷‡ÚÕd”¯Å¨¶Òf===]†¸ŒUÐý(¬_P»òfÅ\·³ìKÍÔ3£zÁÕRé„ÿWÿf*þmP&>ÉiÛµÅßK¦ßÔµå,‹Æ íííû€Ñ,Î6M¤Ô6º¤¸c¿¡â&L˜à„ÏRÐýÝÏׯV¶ê±�¥D–\�ÕäÉ“?RÐÜçé�fá-ê+ r*«3u})ào·¨Ât”Í2ÕšMm¢«mt˜¡âpßDÛUÃÃÃo©ù|¼~ÕbUFùi]K F¾—!ŸÏ¿ /ï ‹€$G m’%â#à÷Òõå I§�Ô¹»†@¨4¬íPµ‰¾o¨¤_'¬³³óaµï×¶·¶jž¶Ô×YKÅ¢«ID&{âT\í«ý*ƒ~ÙÂÙR™~i�€kiiY©¾¾~å«ìÏ ]‡F^Óþiå—§­:4·µµ-VWW·¨zZUgÔ¢úì‹èsNÓö�~÷¾~÷áÀÀÀ~׉�B*g>®t˜ 4êÔ~¥G§~Ý®ôéÓ6IéõÑÐÐPAûIÝÝÝ“ô·É†Ù²x}™¬ïu7íÕwÚ`áxçî1–ÊÇKy>ÖgË)/û9Þ©¼Ü¡ýý>ïç¹>o×ààआ††�&MšÔgÉ Úèyí¢´Y\ç³—…‹+=õ_{úèñ‡^&*}>Ôÿ|èkªŽ×ýZèå½¾ó�ùcýzÄÏ}ÿïêçIª#| óã]"0a„Õ±Q¾òò¹£Xóü׬Ç^·È«Lò»~ Ê—åóùw¬z5«žP¼FùõÉ뤞>°ÛÏ?¥Í$¥‡_³&©-É4¤ë •‡mºæ-®¼éßÜ×DÏ—;&zùÈ\У—_7•–×yÛn³Fë¶ú^eÕ©†,òéevWùz›¡"Z[[sjk©‡~—ô6JèºQë‹®ªlxÄ–dð=Ô…\‰8l Q¡ð öÑ1tXª4|U»oY™Ût呇ô?Ê?þº{kÛTÛ†úœm úÿÙ³h¨àðÝJ“Çõ»›Tˆ\o¡Ï¼ƒŽyWûg´_nöï•—ÿó?þ9}SÎü¹±±Ñ76ß©ßߨýuJÛÞ…½×øñã×Åe+߰Α{-~ͪDîªÏ¸•¶-ôóŠþËÙi3;=Üì4rÊŸ3÷ž/”6ïè÷×~âŒ3n­�Hl~Dï\Óyò =<ÁBP>8À ¾ëø÷Òûo­|¸…ö3ËϹÏñÙû9ïyYÏñ¼ìeþß´Ý£¿ßP­ÁF}ÎÏiç�-;hóÀÂ¥‡›}Þ{Z�3fæc¥¯_oWú\¯²ð‹O“‚SY*S'ZLT?ZYéø1+_—Žó)‹‰¾ŸrmÛk[Ï7g9?w™ïy£x~øþ.ýúm×”¯ï.Ð|—J“G�ŽÝª ¼³¤êß^ÏØÒëÊG‹Ì®CÌ]Ïγÿ^|¾ç½çõ¿µÿ{ÌåO¤TG\LuË™i¡·ÒöŸ2cÎ:Öl³Ócvëâ/ùuÊÓB×îõóTC`*£vS:ÞVXjö5oNó¹&z›Ñ§í»AyÒ¿‡(¦‡�]±]øq}¶ÅüÜôN =ž ßuã Sõ»¼ö3ÝÛÈÞ!ôFm{ñVÐ÷±”•IÏùHßÓsV&µÉQ»n=ÜDŸ{í×\@Ûù—Æu+S”Ÿ{´Ûaañãuc�?ßÐ9³¿~l²QHylmíFuð=ì”7IŽlôÝ$?²” v¶Áw�<Çëä){Ú½Ÿ°7³˜(˜¸Yqžü­µ÷ ?Î?gåiÎýlsÿÞ÷ªèN×ñ{PôNU4þâ‹àZ…ùE^Çz¹•IÇéw3,3¯¿©ruˆv_Ógú¤·N±âq˜^ïßz|‘Tç«òßc)¤|ð¥ã­¸pGMùÓq·è9¨úœV}æ?+�¦ÏûÌüž FÕŽúßK,˜ØÊ56–QÚx�ôpo«… ç/©Ýþ~aÕ矮†Éegõõõ½d£O&ï¬rúÎÎPÙs¬¾Ç1�žÛ®ÎέUNþÍbà�]Êoÿ§÷ýŠw¨�ÁZDÏý¼o*×ÎQÙ•Êü³“ì8ŽŠßÍb³:EÖ6Á(6Æ÷Ó~?½žw¸�¦NØó¬Â”Ÿ–TàéïÀ„ –Œ«EçΉJ“ƒ­|~®lc¦ëá¦*ól³~�èóm«�o?Óùq“®‡ç©ÁzûÞózÏ@ß�®QëèÜ{Ò�Y:w××¹ûu哽•BµûŠª«i”wêñ…êìÿeV:ûu.xÀîëÚ|Ý­F ge½ŽoG(-ºµÿµ¶s¸;¥t¾ÀŸòåÑzèm£Å,¥¹Þòïó‹¾P ^ït•‡Yºƒðc•·¶Y ›ÛÈÿ1¯ Ù¿Ÿû±w)ÿùèÿ»µÝ¡:äuª÷O² Óû£òäè2Ÿæmä¿h·W)ÿëúœé9Þ¦[ÓDê\Õ÷û¶òí¶£´½ZQ*gvÖ¹óµb½qTS> {‹L’s¾‡¹žØÈ÷™o><|®…ìUÕ‰°º÷äZQÏÚ],¿¯ лº(ÿCŸñ»Ú6±bà=„&½ÎöÚά¯¯]ïñ¼¶oè÷Í–:ÖÏhû—„CÞÿ‹^˃9?UZ¿§×ÿ¹¶PÜ(ù(ϳ:¶+,º³=¬í)å±?ƒYó¨lSÁ<ÃbàJÿŸ”6¯‚QožN‡+ ú¢Þë&m�F¬fX˜Êæ�%ÈMúî.¶�Ô0ÚÂ*ÌïfRÞºX�=o*/gvà=*ÅéwöÓgy\çËß´ÅUy Ús0Ïç)�:”N?ÓçyEÛ7ŠôЊn¿Ôk¿¥íP=®æù3̓~úŽîÐyrŸ…¼ÏÃ.Ê·éµïÓ5w­ùüOf;#œ×;UfNT�ù6k‹tÀ•—cÚ¾§òÿß>§_,¥tnl©c¼MçßÓÅι°�÷ÿâÞÚ}SmÃ7•æ—ú(C«.‘–!ÞVQ:�¦:÷«úñD xŸ‡Åô]x§äk*s¿b)™ãw¶ÖÖÖÎ{�½IDATulçkóiŒnÒösÞƒð‘ñÚü®Ã_«Þÿ‘Ò÷~åù¬‚ô^ êêø/ÎEí#ä¿Ià=”T_ÿU<×ßß¿>�÷H�ÕùóUm/{9Cà}¥Åê–Iß³¼Ø«ßŠÛ­ãJ IÉ(a‰ÒÅò~Ñ×Iîw¹í»dz�U=ïA~m'YJù¼…J—ßyãXÛ²V9c½gSû×ô~{[‚Tá[VÇðÌ®÷&«€šYC>Ðî-¥ñOìo¡ Ô9f´q)|”�Òæšb…rßš7Ñ{x¯÷ƒ:Oî®Âáü„©l¦¡¢z¾…W±Q¼Þi¬||‰w„z'O¥Ï›"¿VÞ©|üHqÊŽJŠlÎw¥Óq* =�޳ˆ>³y'¬¶ß*]žÓö)Cjø|þÞQ\ úmg¢×ÞTùìIüù”ysý9õ#ßå� µùÚ!>onÅ;a¥ÑGÆ\¢zF¤�°a¨~øIï˜ò»vŠwâVT±ƒãÀâÀ‡?û]aV"+C”7ÿO»×mÖ�ßc­2>¦2÷B½× ÊŸ¶„¦ý®¡¡áe›5×rØi äƒÞ”çÿPì˜ßÇ*@1�¨ëÊ5ú¾Ôñ¾Y€Réz¦<ô`¡PØhÊ”)Bó‰ÚÎÒæw_ù±+攊H’ðÌ�Äþƒ…Tœo0Ó¼b£ÝGðþÐâç ¬œ¢÷B[*z´fS›{s¥É³o�¤8éªâ¼Ñ±S^8J¾ü6J‹‰�¸Õç}If¥˜Žï壴ÙÓ’±µ7}´‘U¿L__òùü Ê+açŸö läÁ^åã#”�^V>>Ä’±¾¶‡}¤¥/h)Uì„|ÆGáGEÆÁ+–é;ú©!q>õ“®‡ÞÑZшs9°±±ñU¿ÕØ0ªøhb/õðŸV\G n~]P€ñ•â‹I¯ºÎyª>åS–Ÿ:­©©ée�h°qãÆ}Liñ¸þ2ê»äÀç%¿×R–Å­sâÕ8Û‚³;æ¯Ô1\ëwàY„¢ù®c[×Ûñzx©^wiÃhàk4liÌÍšOóìûôÐgX8>Æ6GÖøz™q [ ÌŽ>×Å4Ñ©œ/̨I¨¹Ç}Q:Ë0U¤NõŠMÍ h&ÁoÛó@·÷š[t�~ôÑçjtߣc*{1š(è}�õ[Ü-¾iy|ÄÂ¥Ê >b7ö…<¼²¦÷~À;<Š¿JÍ´3^áõ[¿u|gXåFù”ã[ÊO/`Êžj¦Q�è”fs¸ÔBðxÊwQv‚5ëõnP>þU*v>ÒRçëc:¦ +/ôå-˜™Ïóé?Tþû-Ó‰tê;ú¶Îo_�3 åͨäå�;mVe?n¾NÊ�s@™v¦ÊËÁ'k¬µâ—øõÂ*<Âw^|!Hå}_T- Aoï >OÇsg𦅠TâS-ª#âa=\Çà)¯‡Çùøà½ç_}wÍü�…Þ�úúzŸ®uK�#èØÓ1®e-.Ìçó»kËT¯UªAA÷ýý.·â4Ï{Æq7}Ö)&“ø@ÍÌßÕèNű+£ßj!ÔÌZ¼(ñ^˜<Øz™Íš«/M.õF¯E#PeSßé2>úÜæ·¸ë;ºÇo{· Sšß¬]”A´x‡‡Ï5oƒ¯QOŸá·<«Rù¬ÅsëwÉŠó'>ë#3­:e}Ú_xõ ©¸²{hÅ`†/p¼«¥‹ßRù„ʹÏY´Ât¼n¬rÈ7Ot=�ã;êXˆ£üÇó©ÐŠ—Äê©þÞÅèw�igªšÎs¿›î }ßi›s}Wå¿§TψmpŽÎ½]|´ûª–"Å9wŸõ ´�2¾h³>ÿCI Fšƒ×Ã?~|TóËÏ—O9ªú—/r½‹¥ÇâúîŒjjº¦�iÒùà …§-Ž€ Qž>Q�÷£ �¨=–óz�6_kë�–Ð]nY¥4K|ê™ÄÚ©hLèsüÍBÒÅ'ss2é¤÷~?K!oô°aez]‚¢uUÐ\f¤ü{¥z,%ŠsÍïa óѯ:މ–ÌÈÇ…òE^Õ1pKŒ‹XÆ)Ìõ%×–ââCï[8+YH---+)˜q_…׬£I×aŸjëó–¼u•N~ÇÑxK¿#Lå¿ÏûûèÓÑÊ‚÷©Ð,=~¬ãù±¡*Ë=_*ö;K´‚êd÷Ʊ«ê2»«Ì»ÎRZÞù ÚݓżÇÌ,˜ÕTþx;9SÄù€·ÆÆÆÛ*9ÞG¼?sƒb~nÜå*,YÍú|†í •–šÎwÞêêê:݈:õNT{,¯‡^§«èÚŠÕJes¢3uÌ<Ë¨š ®²]Ž¡¡¡¿…¨”̤ϒ©EuÁôé3RxŸM'×ï#Xè(-ÓO„â nªÀ>Ò*@��óõúYÌ'¤DG›ø‚gjpúm`‘αX>'¸ß½ƒa¦´\[Šî²Â^[|*UôÐÊ� ÃoµÔög•s_´é|a·¸¦ú*‰ŽéS>ß«¡âÔáê‹€Ÿié³»¡ê¨|>ØË½´ßj®ã[Rý)àW±�FÅNˆëŠ ž¦–¯Ë¤Ýý~W¤eHлxô¼�Ó6ÿpqšÒ¬Bð×^×Ò«YõºË-$¥aÐ6r‹OäçodˆCîæ�ªmÛîîî?Sl‹;YÃKú,\ «§§§K»7,œÌßUaÜIÌ,å¼²×ØØøs §F¾Ï¤ûl5Ô–´úUuëXs¾{S¯ã·R¦v1ȹùh1Ÿ.êGU\_”�µp_[”¼‚rwŒ £…¦cý£Ž{; ¯ªæÈVº|Féò3CÅ´µµ­¯ëìo ˆ�/¨«ëC–òÛ¢ Àßí‹nZÄŠe~EïðŒ’·OTVÜÇݘ¯-•o~oÓkzçëV–~èX¿f!�þ×G»xU>Ú$ŸÏßmë!CX‰ÏF�åàbšF'¾j!è–‰à»Ï“§ æŸ,#t¬_På"̾*F¾ùÂ{YD|Î@5.°*vÎ÷æææEîIÛHŸ4ùt•™–!©¹¶èÚêÚ"‹û-ÐV¾få¯(§rʤù)Ž€¿CA�°·{WÝÙJ—ãR25OÕiii™PWWw«Ò¸Á€ óz­ê_7Õ$¸¦@>íJSS“ßÍÙBÐííí>ŠùŽ´�xŸ‡EUfÜísƒ¡¾B»0S1TÕÈ÷Ùtýþ¥EøÂ,êpýIq:  ÒüË(Ÿs[ÏŸZ4êÔ ‘™Asórµ…½CáœÕ¢äêLù�eˆò^›®]ÇPjO?900°~WW×[†Hôõõå•®oÂÕÁ÷P#ËtBYJèDxÅÂIýȇâ”%QÍóþ¾Òìbm‡)¸´�Ï™Ïçkfoún;0ò9»OóÂÛBðÛÛB,nT‘óCŸ©WÛ¥z¸�>o�¶Å …ÂêÚ>­m ýü1ÿ½Òfýßïüÿ-"z­ïYHJÏÕ®™š¯2Å)™ö¶ óù¡u®ÿŸ�n©¹ã¥¸èjXe5,õýo`ÙŸNjE•Sß7Ìm}¿¤K„TÝÄ@ç¯/´–ôb‰a}ÍG¬[HJ‹“<˜o¦ã?Deȧ ‰ðu™´�l!)?ïª]Tw޾¨¶šwÊì944´öŒ3™³�¬ß-«¿û]lhÿ/ ç«DLùò.Å36Qf’!jL=‚òfâk˜%y›^¨ÀfйÆ*AÇò¾.Þ”žŸ³”Ó1æ3_ãmíŽW�|Õ‚þ¯··· ÝÍÅí$¯¤×ÖÖþRï¿™³—¶Ð•«(( îPÇÂç»e!ÿ:ÜÓÓó7í};Z�¤ã‹·3†šGÜ_õ¹œõ¼mé5*q7ÁåJ›ëT©|]ßõ$õ”ûjÞSt¬WzuÖÕÕyes÷bp{œUH˜igôÜ_Y„ôy_×îOÚßéiÒßß?iòäɵ¶¶æô» �Úo®¿y%|‹Î)ÍÍÍWú{YF)]jB”WiõìßÃ"�Ò¢¬Eõÿ—„-ëçòž¶;u?¨×}Rû÷Tü½éÓ˜)/¡üë�¤Mõ·Í-Â|¬×û¾®—ø{Yùâ˜væ&•wWù]O:Ö|}}}~Ò¤I}ÞÑíežþþqý~7í?¯}«EçD¥ý9S¦L©ÔV£Š/°Zñ #W¾¸B/û”:á'éÉëšØãóe766vê÷~w•wöú€ˆÀe²¥¥¥ÅïFú–EHùÌò^'Ðóš—E¾–•—Ïž×Tùô(;êÿöó�2?_ôš>_}àéÁ¼n¨Ý�-Z�éó^©Ã»o`` ¯ý$o�¨>´ˆÒb‚ÊëEŠóUï¯m‹Hq­ˆ´ßiVñk¢òØm¾€°ò¡ßœWÉ«­Ò;a„%”öô·%üš¨ÿûB”wa+ý�V]áì€u…Ù¯ñe IŸëAå¿u÷.èÿŠÇéÛ̶´:o>«ôø…¶å¬LzŽN¥ÜöJç; Õ*îiÿ üt�¡RÓöC ^ÿðkŠÚ[ïZB²6GÞœR3'«WV-œ²‚# ÙËBP¥âUfwõ[f¬Lªhøè÷O«‚ð;¥õÁV¦b#Hð=Ò°Jïx²èÝ=ïd5¼.P°êz}žM-ǾÚ�a(0t´E8t1M|.ú©óú»þöoí|ó¨íto”+oœë +Zx-jhþ@Á÷Ñ:>mó}{™&ÀVòõEçÖÊCkXtn{òåãÛçõw?Ðη'´]í¿Óy´ªvÇhûŠE@å„/~¶�¥ˆÒůEg{Pa^ÏçóïhçÛÓ6«ú(v@Gr—œÎï”þÇBñ¹·#*sgRàå<ž~4¿ÑbS§N}Ï7=|VÛ�ÚŽóÀ‹ò†_C3µ>Ê7f̘³,"Þ¹£Ý·Šu¬ÿáås±Œ~^ÛDÿ_•C[* z±E3ò~]åÝýÕ©t¡ÔÓ-"J‹›Ü=V�¯Íëï>¡8ám~]û®/P¯sÿ|‹¦ÃxE¿ãPeÿy6 ©Ü;E»3¼ƒq^/I|ókâmÚŽTÞù‚ʽs-¢ÎG½ÖI°Þáëê(íd!èù¿×¹xˆ tû«òã=z�[‚´õœÝµ+;ø®çÅZWÖçóïÿ½o—ö]úÙ·6ýìyÀ§}[.HÄ(瀢ÓTŽ�d¨åù—¢ï1º¨ží£ß!IDAT ¾'9z›×)t�^CßÁ–B^÷ÕæuRŸ¢µYŸq-m;éñ~Ú|€Ò÷”ŽÑþ‹cж¼OË£çø’É†Ø(ÍG¼ýIà½òtž¿lEmÝE-A,¸ŸÂBÐE¿6Í+Þ×××olyåJ;Ÿ¿½¬ë|LÓë]n袰‘•/ª ÜÑ<±ˆxCA»0sA¯ã·[™Ôàñ;B/&ªïðZ] 7îíí ¼˜¤J¯{G„FºØV�Wu~náGáOÑ{oªÏ*ø©ŠèEÊëŸÒk…½Ç�:Ú�8¿õÝB(uÚ™\.çwÄ„­�LñÀ¹òq¨Eä<È£`³ÍC/8«óókV¾È§Q™·–Ê­G- Ÿ&Æžú>aá5544ìķ€Ñ.ÔhG§ïóuD¯¡ïöN È/Ê_xã×Á†ª£vÆ×-¤âBmŸT~¹Ú‚›®ç¯×Ú[Û … kÛRºî|¾Ì§yÝ$Š»vÞScm}–P‹dzPé°£ö[J‹Nµ°QBiv¿¯qå��è’ÝõZ‘L…9f̘@SeøZI�Oµ£ÏɼëjS½¢×»ÏÊäë&‰AøôŽVÞ}œòÆÇµù€¤»ô»)¥>YÏyΧ~Õ=v÷ö§¡âTîùyžšu/³È§Ó³ev以hj ÊØÍM•ÀK¯À )ƒ[î(¿…(ktÄl*¨‚Üúüð f…n%=0L#»©©©ì[åÕà9ØBò…v•öÔÃ(.#JÛýµ¿Ð’ãÓ‡…ª8{ \ËÍ”.‘ŒäWè•'ÞÙö–ªC-ESû”)Ìõ%m#ßÃ^_J½¶„ílñ;.¶ñÀ¹EÀƒÍ3fÌØHŸ?lCj¿æææÄ*ZÅÎÆíõpºE@åÄqÚ}ÛÂ;ØXccãAaçz/ 6)N%š7~õšûû 4CÕðuzô�îj!x'�ÊÓ Ã¬÷3'½Î56k$~¨ ³”5½][[[‡Ïùmá¼ª×Ø°ÜÑîó£´¸Mm�m­Œá¼¨8|í+¥ÙÖÑèd½Öõš_ Ûñ¨®ƒ-}o«Z@zÏÃ,Z}€’n-KÇ5ª/­ ïÔDRgBEõé;ÛRõþ qV™v¡åQ�‘ïU ¾¾~¼…¤ž¬ÔÞ"¥Lúq ÀoS�É-�³©À 4¿¢ždúÐ Ø���¨+V3ù´$úLaF}—u'€¾àßî‚�ðP…ꋘҧ#ú«E ÜW}¡"='Ðù1›Òe�⺑ñ» ÔÜÁBðE;;;S5_ö(êú¢üµÐk‹ëéû^ÛBð‘u.þÓ"ä#ÛÔ¹½­^»¬éæ6f̘­ý3Q/¢îAgíB-4©ÏµYKKËÊ¥þ]]Ý¡zN˜õʦnU'Äl:ïîÚÏBÐçZ]u®À£¨+,’k¢w¦+í}ðOèAksÒkž£Ý9Î*>¥‘•)hÀ§‘‹zÑ?K EŒÕÎ/ù¬=}¤¾Ç½-š;åQyï+o¤ïì!C¬”îL=‚ÊÉDƒï™]p5Ms¾ë¢Õl!G)¥¶‡WÄa}F+—¾£§,BÅ©R¶±t,�æò ÃGy+xfz˜REÿ5Dö·tlåÎájQ9ŸgT»¥VºÃ`{Qßs¨yŒŒ25˧�P£íV>^ ¹ïèáO- ŸV»KmIÓµÅéxB]_¬„àžÊ‘²oýŸ‹ÏYZö‚]¥ððMMM~Fài9”†ž�ËY¬0ŠÛ©§+Èv„æ|)½¿®Î¿ôÙ–±€êëë}4íÙ†²ø”3!×Áñ2ƃ÷tá�3*û½³|Cæ)¯ªçͦ*üAÅ…z#§¼v©O£cÜÑjhhðò¹¤)÷ô>¡ÊT¥Å×{zz*2jÐé¼ó)&×u‹u®H;±#úšèÓi‹b®þyÒ5ñD¥¿ß�±¼¤¶®_Ë ãmø 7Aéy�[„Ôq°¹œ:PÇ_öT¤Qñv—¶í*ÕBôwóêûòŧ#ïÄDiOùºÚmgQ= ôšba$|�`®°ÔHtÑ ;ò=ÐmbqñM´;ƦŒÏ'(¥ü¶ˆÅLùâ·VAªèÿ]�ž7_Ö,çŸõ»X>ýP¹ É•ÃGtutt£ã µè\¹#ß-ÄÝ>ÿjq ‰ŠQÃø”bÃ8P HÏÛÉç‚,w1¬¨šig,äÈw5&K ðím)÷¨#0ª…'çÉçüT>¾Yùqg få㥕�ß*ñÿCç•yß÷µ)¬r¦*=üΪ», b¹Nð½L���¡îSº_ <x®ãŒÌ˜1cuHW¬óñP¹å‹®`©|¾®ÒSô÷÷¢úùzØdÁìe%ß\\V»0 hOÔ5 ìC ¤ôöitvÔ9>Á‚ñà{sÚ§ÑO|PˆUN¿O»¥´S¶zãärž z|îVhR0î (‰6rñ}½CfwïéÜüú¾üüÚ!â)…Q†âÀNêw•Ø´3Œ.LM€¤Ôí ÕÁ÷¯ÀË•nÚ“ ‹0çÇËQOÁ0·Y>¥ˆ2í¥þ¿òøV�™Õø /…ßn¯÷ 5¢©œ‘ïJ¾-”Ž%§á<Þ+®^ëS,oÝm‚È„½¾,°‚¬²u5åãe-¸‹dî² S0;ìTåŒÌ ;—·Š£®_Z…és·v�X@¾È³eøȤè|ÙÚò`ôiÓß�T*5Î^Ö{]eȺ ޳U| ¢)S¦| ¼x±=P\Àx�\ •ƒƒƒ¡´/E1 x�§â"´�×ÙJ±iJ›Šwô§Àø»ç�;A;‘¡¶È2���¾Ðjàÿ �Ñ]¢'ª®t«!|ª$�c[x‚ËòÈ÷ÔPp*ÌÏ/`¡é©f_Vú|[ÛÒNÙ+¹‡¡ü}“ÅãQ 8ç¦2ÞØé^Øÿµ´´t†™×\Ïõéâè,Ñ{ýLûнœÎûÍ- bpîb‹�*IW©1w¶ÒfI @Çúií®µÑ#M#ßk•þˆY×QÏŸº�¿o^nÝÈçÕøÛÒbàóÅú¼¸€Î×Í´«è¨Ç9œo1M%§49Cirµ ç5¨Ñ¾Ž‚ø�ø£Tà‘ŽJó+*5ÈÜ”7~Rœr ¥ï/p=CîÖõ?ì‚Õ%Qùz¦:H� :7}SSÓæ:/®\Ðÿ„¹Vé¹Ïª“øo¥Ã9J�o¸“r¦b�ëy«"úLZ…¦Ùš›Òÿ,¥ CžUŸÙ(ª…ã+ÉV;îhó7ôc‹…ÓZæÿόㄬ›¾Sœ« ïë}_‡[úî2%ÉOU|W�´BÈàE¤ ®d™¨â´�ÒÓ7_Œ,ª¹Úƒ|A�\�z.¿ùQZ=¢Ê—144äiûÂÂþO¯¿™… ÀÎï,&z¯K”‡ßËl,}Ú‚ó4°xxEɃŽeÝJ;›ÒdSËžª¸¾¨qõ ¥°¼Heѯ/Å t`:¾K‚–AqR:”ó9C5.”&�G�–K�¡kÔ¹6)è4º†øH?‚ï%òµgÂtF+½ãêš¹î‡òÆS:Þµ ™&øÁ¢Ì%ó…#•×üNÌ�,€â]8 ¾+-ÂԹε˜(pÛ­zè5z¸¯ k²§Elß]‰B]c»&ªÜ»Eyñ� N”þ~Mœhé3^ëësmXÜ|Ú¸¨FéÇ^gÖµð$‹x1zT†Êçï«®Yñ;‡€Ñ€W£jäûh\µ¸¹¹yl–©¯¯÷ù,7T¬ç• ÿ[�Å]+$ð�è³kí¶ò•ºÀ޾�- âÜpq®\?Uïùðì¼T®2\]ÕR¥ó^‹‘Þï!¤kØè’šk‹¾³P×§†è¯/Êó«‡ì<΄âÔ:~ •òï�O}¥FJ¬‹ùè³= Ý®€ž¸|�ÆŒ³’7]çãC#åÇ{ ¾g“¸< ¼àöÐÐPàõ ‚P^û‡¯cèy «Oy�q¡SÓÌÏÀÀ@ìu.Õ�ß-Dݲ‚Â\ ½½½¯X¼|ñ ‹ó&~MTçÁRÚ-­ób]›ÕF^G�SU‡yW}T4¤š/&¬íŸÖÕD"±à»‚ UÓÚ×h §jƒïª@|\÷2J#¿M{ÓbÛ§�7çÿ¥4øx仂/±Ü2:iÒ¤>5Ð,5 J}âR�¾×X÷a à{<ˆhT�ó€ˆÅH•Üu.êûRæ�õ©‡úúúò–Uq}Q>Y+äm½oj·°¥em”P>^Þç¶ʊ½ÌS ç>•ç�‚ï¢|¥Â¤—ÞKéü‰ŒÊ¿mÈ�׈ŒòrkqÌå> ¨f!뎴··¯lyð·¸@]œ§…Íj#U“»-fÅr/hð=¶kb[[ÛòõõõŸ(Þ™·‘¶uìËÍýil#‡œv&ÖŽAâS'î¡À{ µåÌ[–ÚJÅèD_èD»%,„jùÞÚÚº‚*û$ó€{SJ* Õ<´ó# °XŽò]©Ó2Û¬`CÜ¿g©ÓΨ¼LˆZg�â~îSÚ¯g(àå\–‚ïa¤fä{Ø)alá»Ma Κ††ÏÇ¥\oç•«™*ó,\ù>… ¾ÇÊóãh¸³¥J-cÁŞפ¹/è`Ya!œÅ@l¬”Ï*-ü®Ïqå?ÛÕ6VÛ4«±çÅÁÁÁ‡Ôµ€*|Ïår›h·G±�¼îìß§ ŒŽõâ¾+åñK}GÛ«­ú˜ˆÓ΄Å|Ȫ$v†3¶IDATd:øÞÑÑѦ Ñ*¬÷/ŽpO£ ù%PeÄÓ´xù¢©AVªo,ñÿ:, ááá�,~�§|(uÚUê·0õI¤‰{Û‚ß=@Ë:)�šà»Ïƒ¦Q¦ç.ðÚ¢Îã¨ÖÔÈ¥G©å�]ïûù­rö�#dOå0Jî¬J¢ìWð-|­Œ‡D”qwâÿH°žñ¡Í —ͧ£œ‚ º,cT™XE•Š[Ô½OŠ sêeAÐó#ÖÀŸ¾ƒ@ǩﯤsPy4SÁwU*|Wš^½4©F±¾GÕ‰Q˜k[Z÷¡ËV�ã œΨ@#2Ë188˜Äùí°S,•GmVÝÓ²E*k×â8:¤½0åsæòš:‹ç[ÏÈh�+LZTüZ£DÒ_ß{ ¯·©ÔÆmµ€ÚÛÛ·ÒóŸÖë\­·1ü¥Ëh™Â2sÔfØžŽ ²FÕ¨·¨uttìfJ§çO´ Q…âKÚ=®ãÞÑâçÁ…Ó ±Òwhd½Khdm¿U˜ÒdÐJp´qà…þôy› q;ØBðÑEù|þ…ýO˜|œEú¼ã­ò d½ª(ȼģR¯‡.LÞ@BB–Ï™Ëk ü4.ào�ëu¾0¤%#pZ”ºþPd±Ü›1cF :¯ÚÈ?«««û›¾¿5-fJç´]e)§c$øžRêô»£¥¥%kƒ­€LÉòÈ÷ÄG'êâzˆ…¤‚ÎÎÎ?è3ÿÚf-·>]°·ÕöžÃȾ€”æÓ- åïØ§4P>­øˆ!}®0S %5ÍC˜ U Qµ s¾'~miooßRemØE¿î^Ø? eí{ EeYŰSÃ;‘ó;ä¹¥äƒa hêÔ©±�SJ‡ #dK:Æ0×C=7‹e?¢ü¸ž‘T^ 3E�ŽyÊþF�+£’º&†¹csòäÉeå7X*ðþ òÿq–Œ×ôÞÛYðA6q¶‘ ¾§”òÐê �¶µµ-g*‚WêèèXCǰ‡…3½««ëAK¿±ªTøÊä›XT�º´¶¶öÛù|þ]V7°`2?t‚¬b¯t+0ÞbñÁRßcjÐ÷P¹‘T£8Ì‚e£&H›†õD”·~l!és,´cט��%­»^Ff�(¿}OOÏc RIßCôÓ¦M < + ºÐžbáy@;ðTqQàýjƱÞ}Ñín×þuP¼5ÇïëB4|L�¤ïjq‹Y˜÷,£²Þe)/fÉø˜4ÊæhL4ø®ÆÓ¶Úmf! Ý\¿•ÜÀœ—3fìÙ××W�y#pH¢Ìkhhóž%ÍǫϸÎÕßßßl1QùÚ^á:B¦®‡mÕ4…Å(¸ž¡ï<‘zF˜<®vU~¯xÑ`• ±ŸwE�ï^Ka�+Ì51ö¼ØÚÚ¸¾«üÒ[êÿ¶´´t*Py§Æx×1>¤í=¼Pmäž9~O¡y‡e}}ý}j�ì’Ïçz-€Ò%6íLØ9à|$•%ÄSÑî³Þï,åTðž¦Bxg«0å‡7|„»¶Ã|ô€zñ×Ðvüœ�w§¿áGm$¸·- 5¦BË¥<´¹¤çÎ(åÿzzz¼QèŽåá¥Ç�wcħbØÔR 7S+ß×d·õÑ M?7<<Ü®ü±±ÚǧÍxw!¦}¢�Œ¹5)ÏÝ®ü} @d2;íL‚Æ©—û2 IÚ$]ö¹B—·ôܵmÖ\øÿb/ó$L™÷F)ÿ¤`F˜ã ¾{�ve ¦¤‹œ_- =×;«|Ñߨ¦”ˆëzˆè)ý¯\.7°3yñ–––•ûúú^²˜(@8¯ùuhAŸ4iÒ»J‹A%E�vk³OY©ô|Øb&-ä}m% É‚b§£‰íNï0åžžûF)ÿ§úÚ7µÛÂ"¤óÀïD{@Û#züÏÁÁÁ×Ë9‡ý.ÚÈˆŠ¯¡£íO*?—SùùZf\MjÚUþþ¨ÝžÞ-ÅÔÉð3‹@ñ¾ µßX…w�:¶Ðv‚_«ÀûÓVbà½(ð­„ƃÌ�u΄]8²d­­­9½çFP9·ç럳භéX¿Ÿ�ŒU÷ÏF u&2˜Î“í|m ÉËÛîîî«ËxÊ \w€¥Q˜[ìsmmmëZŒBvr–Ô°/Þ툎ï¥ûZJÿ ¦¤ï\çVà©:¶Z5b?c1Ò{îhÈ*Ÿù_И1cb­gèúæýž)឵ඳ…¬s…ùœ•&8ÛÜÞÞøÎË€Ât½¸°ÿñéf”ß¿kð:¶¶hó;¾;´í¬í‡jß ó,Šø0·«�âƒz¸C)Éà{æ¨àù�*TŸ³ \l)¦FìÖÚ… ¨"1¨íçªD,©@ûQÚ?dá­ÀqÁHÁ†°ßÛuf!”:íŒS�ö~ nOï(°xøÈ…/Y@zî}–=�Ïw5¨b/+�û”Òù‹€^Ç;ˆËYÐ*L>þtÈÅ>Ó*TP9ôe‹‰‚è;o³€|t]ÿhbßú�»ZåMQ:Ç™×ÔfXNï·µ¤Ïù�…ý�^?p]DÏ�­Z¼&îfÁ-4-öš[ú«­¾§va¦v\èêØòÏÓb!(Oú”1G«m¼œ¶“µ…ÐãõÈUt�v�62HyëP�[¾–kÈ!|/‘.j¨à Ø›MÜkâ¼4U”ö·ôßñyU™øº…\Ôo6}† 2 °éú>�Ž-~ë,z¯£->aH�:Ç·¨²´—…hˆ¨“á^CÅ(@¶ŽÏ«¨‡c-¤b‡çéå<§¿¿?ð÷ëÓ!466îØ©VJ–ý'L˜ªa^*œÿÏBP9TN9ö�³�Å@龇WNð!ÌôÛ烮¸°yÉSy¸ž¡óaõbLÅ©9&ÌZ+¥Ô3J Ð/à¹KwttÄr§–³Gœg¦j¬s)>®'JûPå^)ÒúŸ°mä‡U>¯–ÏçÏÓ�‘Üɯ×ÜÁ€ ò;éÔ¦œ¨­Õ’Ùà» €Ø¦�Q!ós펴ˆèù#K¿0·�¾ª€ÎúªT»pšWÇI¨Šj)tžî­ráãB9ÓÎtuuùmÒZ@ÅB“U˜Þç AϿŲ'ðù®†olןžD °¿EØ©x‰:<Ëš“zÊ”)„¼Íý;ãÆ�«øt`:¿?oÁó+WØëŸ¡¡¡£¬Â”&›(ïí­ïý¹2§” ´è¡¯�QééÇš››Ñû„™Z¢œï<ð\PÖ××Ã*ÌG"ë­ö6dš.GwXº¾D¾nÓÜ”×|´íÁÜ{ÅúÔ Üm!(-Ž·Ê¯óî+Üäîîî‰Vef{õÇZ…§|ÛÒò)`”¸àª_ËôyV³àïq‹êiŸòu ,Za¦£�Œ’(ïo¬íaµë—4eKrÁÕP·8éâUñ[¤:::–Vs…�ඈè¸}žó4Îç÷ÅFlàBUA‡ÃÐyߢåA—07n© Ç=�oU¾ÿ™òÕ-“'OþÈ* ]”gÏ·�Ê™v¦øÿ7ê}�`÷ŽUâOU%ü8«½¾76׳€ôùžÖñ½mÙ¦c9޲¢V×—”N.§ÃgA|Ô»v�D*æã5,˜±MMMgO�:u_«¥Õ~:¾Ë”Ÿ}ý�‹§OŸîï÷žUNè< @ϸº§§çu«ŒF¥É,œ²{z?�jàë¹hwªUHccã,>¡¢>ˆ¯¤²õ«�ººº?2O�Ø7•Wž Z>ëy;yÇ¥òÚ•V! ªþN»0S_ÝXÊÿõõõåõYî×g :ý亖¡6د­Bt|çXˆ; •·Yõú¶vWäóù…ΩPƒòâŸ,œÛö!§QëWÝ òk•òõaÖ0ÚÈ(�/lÿ¨Ê»mtm < ‚Qº_ÅàŠàt�=Wù¶â�Áó“å‘ï•쥯Œýc] _Š2ð^ô=K9U^Âôè¿®ÆÂ=1Uؾî ÙYpôê‡Pœ#0ÿîÆŒs©Uˆ ¿×n‹Y©�Æ8ÖG¯Z´´´xåè '’yÈ3¦¢e…/¬ªíi]_N‹*ðîôZ—;ê}ŽçþÕBÐó¿èwžX(¯¤´º¨ø>­ÚŽW°ÿM]þ çš–^Mº–þÙ*Ô¨Õç÷ÑÃN_RV¹><<\Ê¢ˆósˆUN³¶ïXLŠçY˜…W=O\nº“CçÅ7+PwEB"¨g\àƒj¬”×ü®Æ0ó›ûç+¹ž6-t-ù™¬² Ð5pû°Ó“–“Yã£ßõùüšX‘i(•þ^ß]ÅBÐ1.ôš¨ëàŠ�À+ón³’è¸Ï´ph#£\‹+ß=¤ón#CÜV6„Q°%|Oc/k½*eG©Qûº _Å<ê)!NÍB¡*§aB‘Ïe2êÆ2IDATßÚÚº‚v¿uó×ÕÕå …ºå×çŠóµ,b:gi!A)]|J–0SÏx9xcÔAÄöööeî ÜU#Ág`ù­eSê®/>2I•ÔÛõ�ÜásñZ´>Ô÷u¢T\ ;Ôh4}¦K}Á/‹�ŒÔiç <5Ïõ^ Ú kÕÓzÏ»•¶»X:m ïÜGœFlÐçõï:Ô´6Ê/úÚ w•óœÁÁÁ0SÉ­¨´¨ÈH½®Oåf�=WV™¡²ñ* Ayx·�r�4õÚ?5T �«k +~¸+ê9·½#YepØQäïªUò�$uuu—ïò j¼Žù®¨§J+Nv�… Ï¥¤è õiçS�éšý‹øÎ{¥¿ß�jZ!¥o>Ÿ¿iaÿ§üÓhÁEÞFVzî®te¾w$¡Eyo¢Úœ»b£4'ø‚Ò/o õs¾{eTÑv…¶tQõ©+µè½¨‹ú·-T S)Šz¾äñõõõ>Ò¥Ù�(å‹‹,¼#UQ¼Ì¢ ŽÖøy›ð¢rC ÂüÌBPYÖ©í>Ô6³x�W Ô‡ÃÎ/Wù-ï6ÊÔD¸žˆ¾‹O+¿Ÿ¢|ú¤òé3!o ž/åÁCHíµt~Ÿaáø‚±õy·±øˆwŒ|aËò¯[+mÿª÷}AéÉ¢èQò[Cu\~gA$w9xg£>oÓ·xGèP9O(.tÑUO‹SÔH[Ö"ÔÖÖ¶µ^÷ë^YÁM½çEa¢Å×ðòá^}§‘¬ùP @]f±G¤�®Ãoè; 5"ZÏÿ¤:ä}”bØzÁLÊ·¾¸±>»P¸/^r9Tœ';ìÔ"+655=UYä�Jß¿éaØE¶} Ét«~»)ÿDÖñè�¯~ç_q0K>Ød¡SO†i#ë˺æ.Œb> Ÿ)Æ�¤FÕI¯W=&ÌZ(‘®Ó.Lਧ6s¢Á÷$+è¡-ªDÞ ‹÷€Tœ3~Y]+rûá<h¡´™fÁ}Â"¤ïØ+Ù«§àÞ5ú>¼á³„…³Ÿ*Ë>ÒûÈ sÞ§j¹Ð”¡ #Åu¾üÊfMy¸áUœNãú\g)M~¨_M±ò5éù3ç·hš?¼ ¨|¾¹…Ój³Ê­™wO…o.ÐeÅ;0BQ¾û�O·f½›5úø.¥ßéêl<ß§ÍPeþô2Ÿ¶ŠŽý7ú Þ‰pÎŒ3. ±ÆD¤·`ïúyNeÅÿ)�Má¥ÏåwK\ × ›7gS ÎT}†‰zîç-˜qê¼Í;h”?Þ±�ô:ŸÒ.Ô”IAùÔ3zï°#¾ÖS^Q¯u¢Ò$ÐÔlÞÓkü\߈juš¶Ý-Ô=«¼öåµó,€æææEÕ)ê�‡Fp]ûPÇq±•Iïë׆ƒ,oû©,zFך“uý 4e‡ÞR[Ôë[_µð¦ œk£Ç6º¦½ ïá8å�k-€â�vž�#éð*éœÐ5pzм¯çFÖFösQùϯA NC¢jf¹Pçä2:ŸO2TŒêzŒzIy5Ñig’ ¾‡uv>Ë Cþ‹zX¾©Ê]˜Ûµc¥ÊAàùè|xMâ#u,œ±ª˜]¯}T#EYL&Þ Ý@(Íï×…ú�ªðþFùåÞRž§¼µ…L>ºoK {·òêÉ̹èéò ¥ÉA:OQCì²¾¾¾I {N[[[‡.Æ_Ôs¿2púzÿß)¸ôœeWàóݧƒÐnË}O/è»5ýÈœ<iÅÚ ßÒ9±�^ïKªˆ—<]•!;é9gi ÜáZ\äG���?R�èKÊÇ¿±tXAÇv›Òå:=¾HÇUÒT ÅóÁÚ"Uä†zÿ@ÁoÕg®P4øîVÖû?¤Ïµ]˜…÷¼œ´Y#E+2oz)\__ÅíÖ‹kû½�\W9[ér})Oò»œtþûB¶ß4T5å‰*üEùcO Á;úµû¥^ëH�˧©úâS€L]Øó|žt=÷mž×"9çôþ¾VÙƒ}”~—Ó%:–C-œf�?g¨,9Be’O êSIM^Ø“&L˜°„þÿ âTo­¥Åɾ ¬�"ÅÁoñéø”–ç¨�|k)ÏS�×;,ÖÃ(ïzýc©‹£ë½ÃÌÙþ‹€·³uöiã®û2mäêç|þ'ª<]Bet¨ÎQÌŸÊÍ• ¡(î´ÐØJ%qkj…y+訊¤è‚xkWœ2pÐ\±ÕT¸ü^7°è°˜LtAý¥�гð£ßg;@ùí½æ:W®ÐÏOk{qÆŒ¯*p֯߭Y¼Ð¬]mv^ߊP£í,åۯꗵðÑëü\ŸÿçJ—¿«QæAºgu^½æ�N¿ÍTiæSq¬¡ÿÛ¶S™L›>}zl‹"�“ôÝoåâ]Ê_Pžûš®c!éØ|„×]:/¼ç.¯çã·ûûû?š:uê{zŸ%•·ýî³�õû-µßÚÂOað_TÁ µNE%G'ï¡téÒã+”.O(^V™÷ŠÒ¥W鲆ŽÛ™õJ/ó"™&bNÞ¹g)Xçwz!ðô|úÜKi÷‚^ç»ÊseÍO^ 8Ÿ£‡[[¬yÔçm�j¾]½ŽO=¶™Òeо£«´=¢¼ñ’ÊûWt�ùHA'ÿì+ú m_°…OÉ„*¢rá›êì |ŸÍó�ò•—÷°Y‹ÿúº/¨Cé5åë)¸·Žòšç¯Uõ¿¾¦Îº!åíçÔ6 <_¼ê(ß;vì-šk†wŒþViáÓŽÜ cóÁ Ï)½_UZ¼æwé<\^é±–~¿“þ>s�Á¨qéõÞRZœféV±6”Òñ3¾)�»õã•J�ǵ½¨¼þªê7Ýú^ÖôEN•þkè÷_(�ˆÔÀÀÀ�Ký_ÇA¿{ £Ïy¦Êó, �›»éÜõs'Ê)ri#W¯¸;VT_ByÜ&„™Ió ògý8W#•Ÿ�§ÏŒBbÁwŸöedž{Tønã·S«àÌû\Ô€„TYz\×CÕP²Ôçé=7Ös}aÕDÏDiT þ‘*Á¿²h-¦ïþk³hlœ5�YÜe„Ê¥…Î÷8?>ÊW»;-Z[)­·šýƒÎ+«4¥Á÷<8jÙVí—~•¯;(0zêŽyøŠ�LŽê]\\vuíg.¶©€ÉÌÍ)o[¥è3|߃HLÅó�Ò£C»£<™Uü¯tñŸ+Eéò3zÞ²ôçE4½ÕOT¦ùÈík•ŸïT}áïóú'�×UšøÜîl‹4–®‡')&â íøâ(ãCfŸ#q”ýH7™«Î§Ÿ*ODÝ9¾oq3<+ž×Ff5±¼Ž¢zâ|äºEk·bgÃ¥E…Ëä#-ýâ¸&¶k÷åÙE©/©1;ýg—ƒ•hø�`½½½¯”úÿºV=îy#¨â®+ªé+S¦Ly¿Ôçƒî?°G•äÃÓy@�ZÛ•r7J§´ý”!0¯(Îù¶%ˆ‘ï•sO>ŸßÑ¢_€4:¹ï·ps™®£JÂ*|ï÷[íÕ@õÛùÞÔþ]ˆøTz¼ˆ*0‹úÈ]m^ñ�êö¹y¡W?">ZIßë±>rÊð:ß}”#3Iפ‡uQ:Û�fSÕøÛQåècVÊÇ+ÀãÁÕ£-£|:åã’G²�~·„Òå’Ï�«k·OQÔdáùü•'©¾p’ZtŒÞñŸ÷cÕï—ˆèn¢Šñ>†¦n±_TÕ¿~¤ód›5{&yç�Ê¡ÐSq*-ÎVZx‡\–ƒ‘—G±f ëS~üV9Oð»!ün] w'înMMM»©É¿{ït~C׺7µ××Cinn^d̘1>²Ý¯�ŸÓ1~¾Øa_)´‘)å×µU{bó°>0Ë„ ZT¬b£ƒÖÊ’dð½šG&Þ ‹ç^ÚZFéä¾Qgè¹Lõ›j·éìQ ¾OhWå†XŽBÊG軽ϪL�Wç4cÆŒcU™ÞB?fÙ3YŸ¿*æé«Ö;«¼Ã^�–[+à÷”U�*ÊßV9ís“fnnAÞ*8üY §*¢J›c¬„9�FÁ‡.œO×9:�?·âw�Yš×Råþ·(ù\…ƒ#€Ðy| òÚƒ–M/êúRV°st9>Hí Ÿ2'±µ‚Ò÷øæàà`f;¹«�òÏ Ê�=V&}wÕ9úÎv½ÆNÚí4çïæÕFŽ¡>K‘ó)¢´=ÚÞÞ¾]¥Û-£�Ê«�ª±m³DG½»$ ÛjmÜúbY»[†ïNÁ _}~ºUzõ#¤ÊêýÊëÇY• 3팛̈i¢ÊI5žï¯ª¡¾QLØÉÊÛjÿ®eË4UN·ó‘iNÕÕn‹ Ú]a) §è5ƒNë“F�¿s/÷•ŸÕ6d@…éÜ{HåÜ®Êo™º³VÇûïiÓ¦ùZ ‘ͬ2íµWvÑkgªÍUì$Þª···`HÊeÊ?�¦ÐÔ÷÷«.´‘Q)‹ÔÕÕ= N¥m ¡0åL$þm K2ø^m�Ûiºï¥Jñ7¬ øÈ6}žó­zÐU1åõ_hWUа#ß]__ßËÅø¦XFè\ßCßgVGÒýùnÕåFuŒ¬Uμ¤aùÚÞ!ãAˤöQçÄ^U5DõÞ¦ïók­zݬz„úνCZ»,ÌÝŒ* üöWí²´¦Ô‡ê<ÞºëÉ׊Øß2ÂgèZµMˆ5IÞDÕ©_¿tþýCßãýV=h#W¯4ÔgýΤ»:::2SN§T—U×ÀØ$$>·EÃG‹®«Æí_¬ºœ¬ÊEâs#Í%ÐHÌ(‚ªø_ª¼¤êQé´³Ä7Y‚tÿ°”uºùâ¹ú÷´ (ÞU-së‡.3”Î+=~d)“Æk4ÂS~ûÝÐÐÐ�¾€˜¥˜·#ü®-u¿j¢´¸R»=Ò>¾x-Ý4ƒS0Êcú¼¦ðNÐ'T§ ;5�×ÍR7ePÐ6;m䪖šö�òÙ€�jÚ±QGåÖù:ÇÓv|•Ýy¥Ûë–0F¾‡à�5?t2¬Y-Ó5ÌI•Ù^U.RÓK©´¾OÇó f¼¡"”O|}ƒ{,%”OöÖ.ñްžžžGÕ0ö[¬?°òòKÇ÷_(Ö�FUÀby8ϰù� ÀoæSXJéØ>—’Eë×¶•¶>K‡GuÍô…ß+Öq£òÿûIwvÎ%蔑0•?Ô.Mw ž®ïçDCUR÷�ú~÷³”Ò±=¯2hÓ8Fy«.s½_ ,�ŽêRø5TÁ§ÍUFz¯ì…qfËår7TÂt5z¶Õwtµ%Ë\ÛꜼÆ6ÂÎù>758S¾]C¯û€¥‹Oͱ†ÎïÔtš`å•gµy§È®Ê?‰÷Ð;à_R#ó“) ²zZ½¥¤-‹S0¤‚¾·Gt\éáû–¬›t,›é¯xÐCeîçÒPÆùš;Úþl SºÿŸÎ—o&9"yd–t,xgJ�*æk9(¿­éå¡¥ˆŽç• ë©zÓbâ×µÍÖÒÃÄØsRZܪÝ:_°l Z–�ø(}'ŸR$½ÐÝß•7V}&²©ô|pD Ú>ž¿îô©å´Ú©°¤ñ9RøëµçŽ‹à†½ÃYÛV:ïW×v‰1%ÍB©®ô²%Œ‘ïåñ)Ο6mÚÊìGêžê[ñ£Rì`ø®%DJappp{_ÔÌfÍwÔ*†JT>ÙG…ZR#ìÞSnS�—w´Y%n½ôrBi³©%xÍIçÓÉJ'Ÿ&+µ#™#�ÅëË#:>«ïeMmAG/UŒqu\;ëá1–Ž©UÎÐñ¬’Æ$Ù¨ólõi Ðûþ°x[}¿Å£_Ÿy~[rŽ.®¹“Š)8”9SçóîIMÙ¤÷ÝWéqÖì UMùíYÕ�Ö.6ÀåuvíVþó»cøô6ªË­§‡i]Ù§rà«J‹�|Ä¢�>3ëb~]¿_Ÿ´dœªk¢ß‰yÝÅÛ>ú\IÞmû¸w€ûåû  ø.‘ËåýŽ8í¦<7QûfC(ÞæÐv˜:9½Íc �¦húã 0?Œ|/�.ªo¨òtÒŒ3–òM•X0(íô¹êÓyÄ}ë �¦SÚ¯7{®ÈÚÚÚ0 Ù� ¥àéÅXÏXLô^שsfu¨sVêë-˜Š5ýÒq.§ãM$°ê#cta^IèR¡x§Åå:g>­ü±aÒs–—BÇùKu@¯è£-7)½ÖÒqøíÞA§©8�gok[½x+x,<Øï8½oóŽO÷à·¾›Íô8¶‘%Üö…�•γ”Ñ5éFÕW×ÃØÎëbpkU•%žãwu�ûŒèéééò¸Ÿƒ vüýZeÐ :/µMš4©OÇðUÕ¹6°YwúÅNiqÅôéÓWÔ¹È 2eÊ”÷•?×QºœiñyÅó€ò·­‚ŠÓoÆ>ÀÆ;Û´ùTw3G¼+øfTÿFÄHùucà?~üb†Ð++x¬AÛ2ª쫲ំÿPzTlÝ™r$|OûA>Ÿûoµí ‹ê'Ty:m´ŒtŸŸÎCÁ»õðŒ’œî·mûˆa5`ߘýK½oàŽò¡ØÁÂù,}oŸÔÃïX)/ܯÝ>âÃ�sþMßõX @¯YÑQZ>祈÷3¾8¤~|ÉâñbqDõöº0§êVìÑÊׯÐöõb‡î~:gî³ ñhըϰ©¶¸Ž»IA�u}D·Òëiˈâ­àžN×Ze}ǃýI/äç‹°ê;ZYŸ÷ûVÁΑbí‡^?Óv§¥”ß±çyVeðu¼‘Mw0·ââ[>ú�¹× ª­­ t=t:çRÛÁ…yósÐë`>⺒yn.~Òªzß/Ï]K’¯½£óÁGÁ¢-®�S�;A÷UÀ9•kþ$IéòMí6¬ôt-Å»ðôOWÜe�’ ¾§jÔ½2çCÅ䯫—|eØ6m‡k»ÝðÞá#•.‹«b”Ò+Òù ‹ êß©R±Šß¶=÷ß}4¡·~GGǦ†X(Ÿœâ FúÈÏ;k¦ëµ~ãA8å…Í|¾³yý“þ'gÁÄ2�†/©c_EŸãÀJ�„÷9F}Ád½ÏªYQ]­ŠA±ô]üÔpªh.©¼ûim?W`î#Ë0}†´ùTûèÇÈç]×ëvióiÏVõ¦/pfTL§=U® Ïs–.‹€^§ÇÓÇï¨ñòÖRDŸ÷ÇÓ¦M[¾8 Fd\½Þ;~'¢ÊKGø‡^8/>]å½^ø^Äs{Ù²‹Òb¹ù�þ×ûuX@cÆŒIÃS(ß��¸VÞX¡¸nÓã=Ïð6“òÞ–swú¤ÈˆŽí÷ÚV,¶[´èyÝÔçÞÿ¬Þgƒ¤;AÓÎ×FñéZT&.k³…ޤ“ÈÛúÎKê.O_GŸí ŸžVÇòcý*ÒΗ‘Y ß{z­¬RØ–±öööÍëêê¾à‹긖³2×ûô!¥,œ§Ï¿‰ �@ss{Å¥§§çµRþ·¹¹yÑúúúÕ¬LªÀøí÷YLÔ[¼�òñx+“ÒâM‰m1Ñ÷æ·eî¬<²ƒö‹—ú¼bàþN}ç7(mo(eÞL½×ÅzŸÃ­L¾Ø¥Ï¹m1óòP=ÿž6[ê¶Ô¾ìÅ�‹AÞ;´Ÿ¨üp‡ß~f£”w²),AÊ«>¶�Ð5Á+Uœ;ô¹wô|¬· p=ð;OžóÑô>MÒœSgÄIåÇê*o±2é9oÏž"­„÷ðòpGm»*�&Xé|ô¦w:Þ1¿ÎÇjR=a{}Îmµ­¯ÍDWÆó=€ñ•kW*àpï‚þ±¥¥eeÕG>fåëŠ3`¦ë¶/Rîw@mç#¿Êyn±Ãö6m×”²v‡òÚáz�‹-å1¯[LµQN×èÅÕf ¼n�ò–�¾M´£HçÆJú ^>ûm›k_v§LqZ£¿iÿw•ÏwYFxSy´¬Ê‰�‹õ­-ô«²Ë{=÷9íîÖó'ê<ñs2ök}Ðö�:Lž+§ó_å•)¹Þ>[9ml½‡/ÜíùsWý¸¨•î=ïz=ϯ‰•¾Ã¬lúŽ|íƒ=u|>ç|�|æs_ëóÊû]- ùw¿Öž>¦œ|¡@ý Þ neÒs>Òuë9C,t^ù:M±M’wbúí·*¥QeÒ~Ú«2é“6ŠèZ¹k)qÆJËâ¢t£^Ú‚ïsò[”¹—W¥vY½ß²úU›Í÷pF^ÑçxÒŠ0Œ* Ž.­�¹WW˜WfHÛKOéS>ü‡^·ì¼®ã]5œ#½“*+”NË) ÖÐuó“:Ÿg®W¡Ÿu^ORúy`á5Š?3fÌ>—±U’ëó¬¦Ï¶†~œ×œä}~ ½>ÿëÊU=o¥‚%íÚ­£Ïê ¡ùDßT ë)•óe�`Öõðl姯[ù>RÚ—C†(Û-£<ç ^>·Ïç߆t¾¦²èEå=Ù^•1:G–Ò923-ôy;çóoJ†á©œ~±x­ÊÄ]7Yä�#ú>Öô2qŽ�žg^õ=| òðCÕ“?(dh![hÓÔÔ´¬Žÿúq™ùM‘©ßèó=ãmd‹Þ2  Œß½>¬�Ï<ñ;CE©œÝR׳c•æ>¨ê×ÕçüxÈ4"Að=ƒÒ|Ò@• o –=Ï­ß®ªŠîÑ@Ðõðní¶¶2©Îø°êŒŸ2�9Y ¾ÏæÓ6©þñ}CÅ)®èwÛMÛaŠ/¶Yòi:•ŸÚ-ª¾—ÀèÒÑÑá£-0ç£L €ê±¡Ã¼Õ Vj�O—…+Χ/Ôv¼6¿Óþÿ´½lÕçK ‚ïÓ…qmKZŠè‚ý9 H=£U=½ 2r¹Üjííí[YЍ3z'íš-˜‡ ~û©^u³ö�†8LËçóçk[exxx'ÅDn÷9¢­ ¤)¾Cð@ mmm>gáU Ý§ÇË[z`èstwuu=k”g¬:~¯«««û«:¤·±”Ð1h Ük PfGÕ©<ÎPöálDñ�[ …ƒƒƒ+ëç -�Å£¤|tŸ¥Á÷lj°`2}â ]êëëÿ¢ÝxhËêñ“ê�>ÌÖÑѱ‹Žg9 @Ï»É(“®¿Ôn%mãµÝ¥ŸÏ´„ù<žº®}Þ‚y­¯¯¯o=Ù±¾â �¨�¿´!V½½½¯äóù£FFF–Ðv‚¶7-c|_u$üÃR‚à{6º…X�°� ˆ€.€çj·Î¿jVþú�z§¯ommÍY2škkkn©pþ«P]¿ ëßu>ëço(øý¤®‰«XBt ç[@ºÞ`É[^müG}z?Cì¼îÕv–6วêˆYº3òKÑd‚ï¤U )>t¢L2 $v×ðèùüy·†††çŒØÙb¦ ²�Ä_Á(®‚}•P"u6¯¨ëá%óú›êjki÷‚®™G[Ìôž§j÷Y hxxø��‹¨^õP{{û憤 çóùk3ÙB±“Õµý^¿ë·KÓ”3Žà{6­j0òaùmì*h/]È¿-¦`ÄMjü?¬ |àÆ™Çõkåïí- =÷r  õõõ×i7v!ÿv®®QÿÒõð‹�ÞëpíN´àïîî~Ò@–UÅ‚™sh©««»Çï84$JøçµÒßßﱡèW©Œ3êØ&ZŠ|Ï6;ÙÂzóóŽá\¥@uk‰ÿ»�‚ð7*ðœòí—'L˜Ðbkii™ ×¿EÇô% axxøB Dê`>OמÕKù__E×Ã_é9ïéšu²wd[èõO×{]l!¨¡r�€¬«±*¤úÔŠ-|Å�¸É“'¤ üÉù|~IÅSöׯ±”P}Ö;Ÿî°©Ê2 Ôð:Nù¡±««ë´2ŸwŸV›Z+ööö¾j@Ê{g(ï�`ÁMWž¿bhh貞žžüg H†%µ;F›ßδ3j¶uÁØÍ(�O¿¦Ýu‚®‡·k÷[]ïÒ5±ËòŽm5xÕõÙG»/n!è˜ÞV#ª" >Åiïε*¥:ËÙª³|êDKKKg___Þ2N#›ªNzœ¶=-AÊ)ll)Bð=ííík×ÕÕ=á�•)nQ£i¿nYØó”‘¿©ž¾Ó-TCyoGå½[,Z�(_>¨ý} >¼¦Î¡÷¦N�úÞüþ¹­­m}�7[èáV*Ì£œS~CßSÓK H/Õá|ûSeܶPº>¯Ý?µ= ×}FõÂ÷ºººÞšßÿóÆÍ–Ú{GÀ¡ÿÁýIDAT8‹ÆÑºžg Ó|÷�jçXSýéjŸöÕÃAË0ÅZŽTÝòl}ž?žÕÛÛûŠeÜøñãojj:FŸéÕW;-fzߟ(o|ÏR„à{üÆ« |Jû9MýP™ã;ÊÖãÉs?aܸqSÆ=Y™öp îjPd@™|”¹òç3Ê�÷µy¾×ð;DôÞY赫ó.ÌyE|=í6°èå# ÞÓ50_üÙ§‹\S?·[ÄôÚOéz¸¶€Ì Á÷¢{çÚÅæGˈ±¹\î�9c-ª“ݡ휮®®[-ûs÷7êó ý1úŒkZL†‡‡7WúýÃR„à{Ì”ñ.W¦ûâþå�h/kÿ‚6Ÿ#{uýÿf’2ß•ùþl@™Š‹™†šS=¥>Ðy±²Î‹`!t=ôé]~kUhpppƒžžžG dÞ( ¾Ï@0cÆŒí|rË}O§hwÒ¼þ¦Ïõ/íÎ) ¿Ö~šeœ>ë6úLG©.ý9« ½G¯Ò¬ÍR†à{Œ”Ù|äùï-~ïª7pií‡ (Skkk®¾¾þn’U5"nhhh«îîî‰@‰€¿R×Ã}¬Š¨‘r¼)?3PFSðÝ©.ó¦Ú÷[÷ôô¼ná3\Œ;Öì� ú?}6Ÿ¢Úx þß–qíííËÔÖÖ~M�rÇ9\¦øç–2µ†X(€¹‚vXt²žaÞPoooa```;=|ɪÇ!ÞåR£çóÚÝ`U¢8ý�w�Y â.SWW÷H[[Ûz– ¼Ÿi ¼;ŸnPÛñzø¯\.wMGGǧ-ÇySuÏã´-¡½“(Ò9îÕ s�¥Á÷x4Ô××_oÑ-ˆU25ªº”©e@}}}“Tào­üô´eßwÕú{ ]Cv×õðZË8}†ëX÷TÅ+üŽýGœÞÙR®³³sCíö+ç9ú|uÚö¬­­½WAøg|:D˶)ªSÿRÛJz¼‡ê¥wYx“ÜOå ‚ï1ÐIq–N’Õ-zßô›n@H“&MzW�ôMõð2˨áááST¸ÿÔA×Ã=µû®e”87ë3TtÎM€¸)vƒðûZzùh÷Ë-}Æ5|"ñßS¼ñû---,ã¹^õÒíVRÕOµôÜ›,¥¾W˜NúÍtRcÉ8C™ø:¢3¹8–Þ³l9¶««ë;@¼3×*ÕÃ',[ÎWg¨2>B¼¶¶öO L§r�„‚å§i·¼Ecq}Þ�3æ#½î%ÚV³ ëíí}EuÔ¯ -9<<ì Ñ–sRZ\e)Å‚«1Ð ð›âôبÇçveÚ ¨œqÊÛ§&عTª�Tpï©Àû? € (.lvº¶&K1Õ¿¤úáo T­Ñ¶àêü¨ÞsIqнKÅO6Öî~ÅP*‹½GÛ9ù|Þ§_¶l«Sší®ý±J²Îuï Óê»^D-…ù?ÙÕss 2C¯Å@ïó{ïˆÁTå³c•ß6Õö€¥�ŽëÖ3f¬JàPIjàœ«ºÞªºî\aéô¢:¢×"ðF lUðöf=cÉó5 ÿ\áÀ»ÛBÛµúܯj;n„ -–]Cª»þEÛæªÇ~RõìKõ»þyý£þæÓ#§2ðîù£qãÆ}¬©©é·:×v´ PfÖömO7 fmmmë×ÕÕ}Sù{oKÞ{*œOÖ¹p‘£öööet=_~‡üö]]]ÏZr¹\«v7-lþòJS}ñ9mç+.´*à@§L™ò¾¥Á÷t«@ü¶ê±ÙL'ÀF:7_Àÿ¾¬ÿyZû[¦OŸ~ÛÔ©SËZýHR[[[‡òù&Ú6Õ�*//¦üžÓcßJè£ùôœg=ÀÐßß‹ Ù €lijooÿT]]�_7Ò5íãÚçŠ×ÄR§ªñFÆójDÞ©ýMI5$@º0ò}þTçêÑn‡B¡ð�%cŒ¾Ÿ«´ßͦ´Èû�’3fÌøeÚƒ×YGð=¥Ô k×IСFX»•cõ«·T8¼m@+NYãy¿]Á„ÿ Æ ½Û××÷²PåZZZ&x°¡¡¡C׿ñsþM¿/(ÐþŠN3€¹|_¨~Õ¯öéîî¾Ñ¢ïè펴Püe@»kƒ9Ciò¤!r߀*@ð}áFf9ª««ë"KHGGÇ·jjjNÕ–šØ¬ÒÄïøE¡Pø‹öƒ†HÔ€Ì7nܧ´ÛÑ0_5³ì¢´jš6mÚÝ–€éÓ§ß?vìØçôpOK­¥€Žc)m{é¸mjjjÔö¬Žsº!”T|¹£;;;/³„⣅Bá»?£‡S-E<_[[{j]]Ý»¹\îW---+#ø`4ÚOæÛµk Èçów m¢‡YúŒU þˆ1cƼ¨4º£££c'c ó²|0*)À¼­‚Ëø¢÷–€îî‡‡×yÓRJi´]mmíÍ���/jûª%ÔY‘EߌZ .¯ÝÐÐðhGGÇÒ–€®®®·<ÿ¤¥ÛJÚÎSg…OIs–¶�ˆà;€QMøejkkmoo_ËÐ××7©P(l¢ü]–rJ«vmÇëá¿€ÿ‹:->m˜'‚ï`¶H]]Ý���ÛX2¦)ï‹°þÉ2@ø:mŸS§Å½J³Ç´¨_�1üG�ȼqãÆ}J» a4ŒŒŒì7vìØç§M›ö¼ÅoDï{­¾ËF=ÎÒˆò�iÛCÇ}„Òn|}}ýs3f̘j£Áw  |�FMM�ϲwSSÓt¹ß üÝzÿôpgO�eG³w˺ººc„_AÛËú,Ù(Å´30x×ÖÖžÖÙÙy�%¤««ë¢áááÝõ°ß²§QIx�¶çr¹Ü=JÇ=lÆ¢ ¾Õaĵ#<¾OÛg,ÝÝÝ7*¿íÈÈH¯e”ð›kw­ÒðõŽŽŽ&L˜Ðb£Áw :diz’ÌPðxSínVàx_K@WW×}èáû–aJÇejkkÏPG»JË_¶µµ-gUŽà;,€Çu ÿIAã-}}}/k·¾¶—,ûš•–ÿWWW÷j.—»©³³s[«Rß  ŸšÔ<ðù|þ�‘‘‘ µ=hU f–�õðNáŸÕö%=n²*Bð¨ÌùŸþJK@¡PèÕ¶‰ð±*¢ üêÚ~­t}[�§Z• øTæ|�‰Åû(H×±V%¾@>]Jccã£mmmËYòùü)ÃÃÃû)h=d§Ï �2ü9=œjU‚à;¤üRuuu�(¿ž% ««ërÃg,ûAë“»»»Ÿ´*BðBPð;W___.—ÛÁ�Ïçïò…X –MO …“­Ê|€ðš´ÝÜÑѱ¯% »»û)à7PþMË–):nŸnfĪ Áwˆ@MMM­ü)—Ë}ÏÐÓÓóúÀÀÀú Àgfúë±ê8xêÁwˆ�‚ð'+ÿkK@__ߤB¡°©‚ÚwZÊé¯Ö±þÖªÁwˆ˜ð_Rþ=cñ›ª öܶ”Ò±=¤cÜϪÁw¨àwT~¢¶V‹ß°‚Ûûh†¥ŒÏK?<<¼£X#ø¢üÆÚ?~üb–€|>ÿ-º�TÀ; šê0º†††¶é«rß ²Vnll|´¥¥e%K@WW×E Àﮇý– ÞgøÝ===¯Ù(@ð*LAç¥ÎårYº»»oTð{K=ì³øÈ{¥Áçóùü?m” ø1Pð¹M›Ï¿ƒ% P(<¤¸ÿß·ø}C�÷ëm!øñiTþVà¿d Pþyà7Ðö‚ÅDïõ ½ïÏl”!ø1Sþ× ÀÿÈ @øÛÚm¤ øƒVaz�éý޳Qˆà;$@øïwvv^æ-f ˆ÷jÛRÁñ[­Ffù’Þã‡6J|€äì—ËånÖ¾Ñâ7CÁñ�$¿Ä"¤×TÇžzíߨ(Fð¤@õŽ���÷)ßjñQ�ü0í¿gј¦m§|>��rß yë+ÿ°‚ðKZ,ÿÉððð~###C\Ÿ¶-Ì¿Ó@ð¨#†¬[YÛ£kXººº.Wðý³z8ÕÊ÷�‚÷›(ˆÿˆa&‚ï@uˆ}ÑNTÄâµµµär¹�, Àß:88¸¹‚ð…RŸ£ÿ}xúôéké¹Ïþƒà;¤KKMMÍÄööö]-===� m  ú› û_ýϹ…BaÓ)S¦|`ø/ß }kkk¯ïèèøŠ%@ø×ÖWpýÉùüËým/Þ�ÕãAÃÿ ø)T# À_ØÙÙyŠ% ¯¯o’‚ë›èá=sýéæ×Ößþb˜/‚ï�n')™%Ï�–Ïç·¹ºøó�úyíÞÞÞW Dð¨#†j¶_.—»Yûq¿ÁB¡°Ïðð𮠼烈§Šà;IÍë)ºIDATPj U­¦¦fàïokkë°tuuýÕP2‚ï� À¯]__ÿHGGÇÒ†T#øÙ²|mmí£¹\n5Cj|€ìY¤¦¦æ¡öööÍ ©D𲩥¶¶ö®\.·—!u¾@FÕÔÔ4h»º££ã+†T!øW[[{a.—;Ó�ß  ÔÔÔ|Cø«ô°Þ�8‚ïP%€ß»³³ó.=kHÁw¨.[är¹ZZZ&Cð¨#ÕÔÔäëêêV7$†¹€êPcÕFFFÞÑîwÃÃÿéîî~Ó�(‚ï�Q ¸wÕÔÔüU÷«»ººn2¤ÁwÈ–'l¿EA÷› …Â?õó°!u¾Õ�9ß«ÔÈÈH¯vwi»¹¿¿ÿæ)S¦|`H=‚ï@u`Î÷*¡`ûHMM��n¿M?ÞÖÕÕõ€öC†L!ø QœÝ§ŒyIÁöÇõøqܯ­­}<ŸÏ÷2�à;P˜v&ý^Ôö’¶hÕ÷…BáIí§ªÁw©8/ûÛÅíßÅímoþ«··÷UèBð¨+ü#CÅ(}§ÖÔÔ䵆†† ¾¯­­-äóùw ˜ ‹0±Z‘"ø@ľ1‚ïDŒà;#ø@ľ1‚ïDŒà;#ø@ľ1‚ïDŒà;#ø@ľ1‚ïDŒà;#ø@ľ1‚ïDŒà;#ø@ľ1‚ïDŒà;#ø@ľ1‚ïDŒà;#ø@ľ±ÿÿÿX‚Ù IDATÛæènÖõÌ_IEND®B`‚python-django-debug-toolbar-8.0.0/docs/_static/brand/Wordmark-Inline-Black.svg000066400000000000000000000211761524561404200272370ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/docs/_static/brand/Wordmark-Inline-Coloured-Dark.png000066400000000000000000001063601524561404200306420ustar00rootroot00000000000000‰PNG  IHDRß,2ßÊmIDATxœìÝœeýÇñßìÞ]êåîöB�Þ’ Miiô&EĆ "-;bi)EQQPŠS)’FèH‡@öJ.õîvçÿ}’ ÿ)·3³;³{Ÿ÷ë5™½Í–Ùgž™yžßóÌó¤ D*e R߈Áw"Fð€ˆ| b߈Áw"Fð€ˆ| b߈Áw"Fð€ˆ| b߈Áw"Fð€ˆ| b߈Áw"Fð€ˆ| b߈Áw"Fð€ˆ| b߈Áw"Fð€ˆ| bU ì566ŽÑj¼!*K|ß_¢õbÏóV>^¢Ç‹?ðüâî׺¿³züšÖ¯»eþüùoz-‚ïðaý@ï§uÆý¡ÇïÿÇê¯úœ£`¼kqëWô¯hý‚ž~Fëgóùü³mmmÿ5T4‚ïP$ ¼o®ÕæZ�êþÛR©” Ì/u�x=5SÏ=¡ÇO477O7T ‚ï@eð 夯‚îôvË—\P¾»§üLýý¸–Gr¹ÜdzÈ—/‚ï� Â7iå–Sªªª,“ɼ¢Ç“õü¤|>?¹¥¥å5CY 5 ¨���cµg¨h¾ï?£@ü�ZßÙ=LMÞ�Hô|*ƒo¨x ¼o¯ÕöZ3“É´h}W.—»µµµõC¢¤ @%`”‹^F�÷­¾˜N§ooll|WËÅuuu[�à;”¿õ´œ¯@ü‹ Â?˜Éd>£¿« ±aبžhµ¯Vi­ïÖÒiˆ=ß ‚ø¾K6›Ý_bCð*„ï¿hnnvCÎtbŰ3PæüÎhii¹Ö�ß ¼-ËçóŸimm½Ó�ß Lù¾ß¦ÕÁ ¼O7$ Áw(C ¼¿ÑÙÙ¹_{{ûó†Ä!øåç¹eË–�\´hÑÓÜÜ|©Å@Áö´zB˶ ¾Wi¹TÁø;ôwÃZ|€djÏçóû+ð~«Å@�÷=lŸ®‡~࿎P~Æ Aƒ¶2¬ÁwHžw|ßߣµµuªÅ ¾¾þÞ'ëaí^²uuuõŒ†††OV‹à;$ËsZvknnžk1P@ý´T*u»öYÇKèuwf2™+ô¸Êð?¾•Á7”=ß÷Éår{d³Ù7-���?S@ýOzú½ôàkÁwˆÙ·›››O¶ÔÕÕ5(Xþˆçû[4¶Òg=V[[»­õrß ¾ïçòùüqÙlögƒ†††M«ªªW°|˜Eë#ÕÕÕÓëëë£þܲBðJo±‚Þµ´´Üd1Èd2;¤R©'ôpK+ý¶út:=MøQÖK|€ò}~.—Û'›Í>h1P@|´‚ãÿÖÃõ¬¸(?©¡¡ápë…¾@鼤àû®­­­OY 2™Ì§S©”›\u •ˆ¾ïfüw¶^†à;”Æ]]]»·´´¼f1hhh8Íó¼[´T[iõSþ>7Ƽõ"ß È|ß¿'›ÍîÓÖÖÖb1Èd2¿Pü‹‰þƒõýÖ‹õß ˆx¿¾¹¹ù0=\f¥W¥ÀûÍ ~ŸgñÛJø{´.uÏûX|€"QàýBÞOv­ôú566> Àû±–Ú–=Ôðë¾@ÄtÏËq ¼ÿÐbP[[;XAîGôp¤%ŒðGkÛ.· Gð"¦àû---7Y  ´Uuuõ“ r³„Ò¶�«üW¬‚|€ˆ(èÞÜÕÕµ›ïwY êë뛪ªªþ­àö¦–|µ½‰m ‹à;D@�÷Ws¹ÜîmmmOZ ÷K§Ó�(ðž±2 í¬I¥R·éa«@ß $Þgtvvî¦Àû˃L&óimÃ?­ÌÙ ÀL�×Y"ø!(èý@ssó^íííó- ßÔêf²ÓVž¾P__¼U‚ïÜx?Hë%ƒÆÆÆ«S©ÔÏx÷¬Œ¥Óék€ßÜ*Áw ŸÏÿ$›Í~Ñ=´Ò«Ràýv­O·Ê0@x7þ{µU‚ïPß÷óZNjiiù®Åc ïh}¤U–�3™Ì¥V!ª ÐSKµÝÜÜ|¯Å`À€ôéÓçA=ÜÑ*ˆ3:<Ïû³Ö¿¶ Aðz@�á¶\.·_[[Û“ƒººº-Òéô©7±Êñ®ÒõšÎÎΉqMX[,ß` ~Câý ~Þb Àû® ¼ß§À{Æ*€Òs†~Ë•ÙlöOú³Ã*ÁwX ŠŸ^¶lÙ~‹-šg1Èd2+Pý7=ìkeÌ�•¯Õù|~\kkë«pß`ÍþžJ¥ŽSà½ÝbÐØØx¢V¿µò¶P�÷ë´¾¢¹¹ùuë%¾Àê]“Ífϰ˜(ðþ]­~dåëE-㕆×k½Èz‚ï° …oµ´´\l1Éd2¿Ñê$+Oæóù+•~wé±o½Áw覠{N«Ï)p|«Å£¦±±ñf­�´ò²Tiwcggç¥íííϾ@·Åžç‘Íf´d2™AZÝ«eO+oi¹ZA÷k,XÐlxÁw0{/—ËÐÚÚ:Ób0`À€ øŸ¢‡ÛZyx¼{h×K¿Ëð!ßôj¾ï¿ªe„ï¯Y jkk·©®®v½í7±S¹ ûmZ®lnn~Ô°VßôZ (Ïèìì< ½½}¾Å “Éì¡Õ½žçÕYB)�šµ}×¥R©ñóçÏËÐ#ßôJ *?ÐÜÜ|„.±(ð~°‚Ú·ëaK ¥Ï3ZƵ´´Ü ?— Bð@oôGÞOÐ:o1PàýËZýZKÊDÁvßVLú:NéóOC`ßô6?Ïf³ß²˜(ðþCÏó¾oɲHËﻺº®X°`Á †Ð¾èüÎhii¹Öâá566þAëã,!”¯i™¨Æ€_677/0D†à;€Þ`Y>ŸÿLkkë��>™LæoZb  €ûÃZ]©€»Û¦œ!r±ßê´ƒw¶˜i^mkkû¯*Â�‡Æîš¶|­Å)—^Ôê·Í~eô¦Ì4M;sGÏ÷Ö³utåߘ;úê @ɨ>1TeùŒõr®§šê3/z möRà¨Æ ÔÕÕõôÂ… ßëéë·ËårZ�ôž·ÛÛÛŸ3Hžv]7Tà}ºÅ@çïAžç=¨‡»YŒ”�ÚŽ¿èZrIKKËlCQÅÙó}H:�žd  Ì¿@™îIe¾YúsVggç4ž7@ÙIåý_éß],NžoõÞ kš2Ædf)˜«ë‹÷ÔŒQãî7$[.u‘öÕ§¬@Õ)o¼Vg€’Qùý©Tê@ÃÅZ.0ôÊûS]z}+�Ž—Okõ×Þòm}ÏñV }Ïo´:Å Yæ)ؼ¿‚Ís,Š=n¢ó·«ng1QܳE«‰Õû®•¹lXSS³•öé4K0†�±å…—AZ�Öz´û[;εò?¥‡·*cþ¡¹¹ùuK¨ººº-T¸9FÛ¾¯þÜNëÍ]ï=~N�'ký·l6ûŒJÎ3oˆVCôà8uŒÛ®õ�ù”ýnöð  ØÜÝ8û)Hû¦Å@�÷º{¼|7Qº;�S|ó�Z/³2W__?L±ÐóõÐ5*ÏÕ2Ì,¶à»v|Ê’mçîå"âïÒö^¥LêZ¨|K€ÚÚÚÁÕÕÕWëà=öƒÿ§ç6ÕÊ-hù‰ò»Ôºwfkkë«Îó-­`w"i³jõïqé¼§@ü˺ \ÓU�¾~î^W4„—ˆ¸UR(ž÷ˆbb‡)&Öjñ¹Èb¼ë·ß–Ëå®jkkû—U€†††ãó ¡]‘JOÁç{š››GÇx·¥K—ŽÑ¶,°ÒpãÚ�SÐ}sýöcÊ=ðîÆÉWpý|­_K¥R7~ 𾜞û²%Á÷hgî¨åÏ���ÏwáK®¾¾~óšššÉڎͬ0ë)¿›˜Ê âõ÷|ûšï{ï›2æŠ]Ÿ8µÎ�)}½‚χéa‡ÅlñâÅo+Ž7ÆŠH¿÷e-çè{6Öï>§ÜG¿4hÐÖŠ¿º?ÞVÐýb­?º¦×êÿ¾h ŽqǹaåÜ·¥ Â+?Í�Ûd%¤ w§V±´ÍõZþ¡‡5•J':+[Þ9¹…}^6ù¬3Ì¿�r(Ü÷€>Ù4O6›ý½VwXô&+èþYýÞ-µŒ›?~»•1ÅYVÝcMIDATÐýöêêêçõçéZú÷àmëë}ZBÅV±Wl$oeN¿ao-O+S\l% ï9Qß7ÄBp-EÊ�c *•JVÎ<¯Ñ¼ÔUMS³O ›2vk¬“ª‚¹|>œÝ?¶Z¶lÙW´�QÌ÷µLŸó[-;ê·ŽVÐýf+o}¾ªxå\Å-ïÑßGZáz44wb ¾—Á„«…pc=<`À€ ¬¸N°h|Ñ R•uÏ÷ÿç™·³šž:yÌ' °VŠ5ÙÒÒr“%ÔÂ… ßÓê4 î=ýÆtvvn¤€ûIZæZSuÃÆÆÆŸ+¦úN*•ºVUùí-¸£-¡v&"nÀÿ>}úÌQ¦ÙÝŠg´E@ÛÚ4hРŒ@òͯ˜ë‹š¤<ïÎa“Ç\b€q½É»ººvSàý.K8ÌoÑöNµÂ<™Ïç�Ïf³n<÷‹,XEïùØÔ××SÀýOŠ£¾®?¿©8eèyÏô úÌ,�O6BÚуµúW]]Ýn±�®oÒ¶~ÌåÁó¾1lʘ ð>²_Íår»·µµ=ieB1¹ÓÜ9k{�û-·*è>\Aw×°p£žî´òUÕÐÐð9ÈM§ÓO) >§¥Ê¢õiK z¾Go`UUÕ$e¦=-B:ØÒ­Ð­J�H~e ;óaÞ à`§gvtt¸ÀûËVFLFÛ~Íþ»]ÿwi*•Ú´¹¹ùXݧY«Ý/hll|C¿éO ¸ïaÅó)K 8ƒïå=!ÞÚ Tfº?Êð‹/~Û�pAóß4¨@ ½—ý„Þk¦üä±×ônSœÞ§{õ²£ß÷´´¬òÔsŠÕ�©Àüú]ߘ?þ[VÆ ´u&“¹6�N¿© ûÏôT±çÉ\>"I1F# ‹žïÅ3@ìµìllÑyÌ"àîööö *�š)+{H5ÏNQþ|€«àÎHï»IAêQZ/´2Õ*ŠÏ}GË º®ß³]KKËÕú¯%VÆUÐýÞêêêç ÿªžêo%¤@ÿþ–0±(”¹*=ø¾¼ÅE¿óþÁƒ×Z4n±h»þb½ãd  Wªüë‹ïù?oš2&‘·ÔˆUEwFRœí2ª�³  `û5ÍÍÍ”ÃD±ëÐWA÷ÓŸQðû.Ų˜èû¶„‰z`ûÓŽ;„Ê´´[0µìj% ß¹½Z°nÕÃÐOäÕÊÈ_×Ã�XpK–.]z¡>Ä÷mž.OÏZ n¬y{­×³"óô]*tþq褱»Ï=~Ž@ï4SK+® µlkÁ¹ÉߊÚ+Ou�²ç€ tÍ;]�êk ‰0xðà�T/=[ËWÿl°жìm+zÛ/¶„ˆ-øVWW×WÛÚÚž°2™ÌÊ»kÇ«õ~zª¯�>û@}××<¿ÌÂY¢ÍÉjŹÛÒûÏ]´hÑ<|ˆBÚÿœ1r—,„�¦Ÿ½AzY¾É|ïpóüÃ(ÿ˜�®-}î¿m“GÎmzc¯+ÊúÖDBeë¢Á¥2ü—u¾½ÞÊår§´¶¶Î0J§"çXT<ëó ¼ÿÙ»†††½U>:WñÔcÜßž—œ›Ïµ-UÚ¾ÑIº› lƒïÁÉDö¹Z¹å÷w}}ý lŸ¦uˆELŸyi]]Ý$5üÇBPæ¹G•€ïëó.²Â]«÷ÿÒkú®,›³Ç8×Ày_÷2vç©cvÈûv‚>ù] -Z[îÈ�Ãì+•7Çb»³WcöTCœ\PÛu^>GËÇ-ÁÛ¡Ub‚ïå<æ{ä-y:�ïT@þP=ÜCË‹±ªªªHZè´�?ÒÊ�õÛ£ìJëù:Q��ÍfO7@I=5bÂÜ™#'\�¸lSßüè@=;¥é¡³7¨,ï)¦µ�÷øÔKccã·2™Ì+ jß”ôÀ»£<³§%HÙNÂÁ˜ñk¤ õ¿µ ÑÎoÑÚZ­D‘Àµ}Ó²a>Ÿÿª¶óŸzjé^²DÏßëÆÃR°~=�¨þ`Ð x^2{z<¹Û¯+šð¹±å-J¹ü/ *ÇKŠiíÖ=jJ¬¶¶v[Ü™N§ßÒŸ?Uvc+ÚÖÝ,A£½Ä|¯ªª õÝôœ_—¥:ÀÏÖz}W«ED­Dßµµ´´üJÛy°ñýr¹ÜÇ´­{¹µþî¯ça" ½O‚œ[ àïóüÔv:_ÿÝ"¢ÂÅvæŒ9Πü=ÑÕÕµ»bZ¯JÉkhh8TA÷ûjjjžU=óT=×ÏÊO¿ÆÆÆ�-!èù¾ b?¨`ö.zø¼Ec#eâs¬Z[[_QÀýQ·6@á·˜1úÊVá�Ô÷E×cÝ· Í?6mP¦T%»G±¸}ÚÚÚZ ¥ÒOA÷3°~&•JÝ¥˜ëVþ3ôLÙß­„³7ë€ÿï²eËöÑ àu‹€2ñ· �8¾y%»¶˜gþŒQÎ×£K- ž·UÓ”�|Áôf¥«ÓDLq·ë»çb\f(ºÁƒ»—*è>OA÷«ôÔ¶V9v·„(ç WKjáÂ…ï)h~�.±ðÖW‹Òç ¹r»¾Ì1þ|ß–ÏÝÿ Л•U}h%Õã~¤ÀûɆ¢SÀ}/-7çóù×ëüºžªµ £ü´‹%=ß �ÍfŸÑÎû’E@-J§ Y<¿ô½D<ó;ó¹OëªöŠ…¤‚ÓC'�ÝÉ  (Ζ×r’ïß7SuCCÃq����©Þø°–cµTò°¥ÛYB&]�s#ʲ%N'ƒ[Ül¿Ê _µpF)ÓoÊäpjkk·©ªªÚ]ùj+ûð±¡ë�ÿ’Ö³”_fYeXWW·A:�^_-­ë«1j}ýöõô;—h™§çÞÑsïvvvÎsw�X/¤óÌG•ƒ•F�Z¯§ôhÔÓõJŸv-ó•^ïår¹f­ç·¶¶Î×ÿ-4tKö„««3wôÕ wšzö‘U~þ mµ… _ïwÇZ �4f“”¥çS]í”õ<ßÍK5¨‘c‘Ÿ÷²–Ê¿«-nÉ{éù^Í{ÏísI»Å.ØÐC^À÷ ›tN}κ6´Tzý”ùêcÖWCŒŽuSú¤Þõrþ<«Ê½ëuU¿ëæ 0Tœ»iª+¿~:m�ÊG±¼·¾»ôë`~×|ï-ßËÏO¥ýyOí3ñ-"0xðàZ•±ÖSÙs°Ê Ýe±F•)ê±+[dUÆpwý6«ò^6›}Ó*×ÀúúzWÞråÐ-®LêÒÂõlUzÌWÚÌWzdÝZuÁH†!-#%í” úq]WW׆ʛn?l¨EçC«ïΗï¹z‚þÿ]WO`,èÞËÅQ”¶Ôq[o+zërk�«~f(Gnx™£t~½×Pƒ ÊTWWŸ®‡î.é�¬—Ðu#å&]Õ¹áq‹YœÁ÷Pr%bÞb¢“Ây Œ}FÛÐ`!¨Ðp¦Vß´¹@­.4A˜6éž²˜(Øú1¤¶PáiývWØwÛF·Ög´ä\a_7ëqve€Që·t~ØJlàÀ�ëk{w°é·-U™¾¶×(ÿ¸Ï=VËÞZ>®ßY·¶×{ݱD�8Üê)¥ÉôÜ?t¹ÝÊ„~óÁÚæ#´íi½ÅÊç•—ß�û�nQ.ÿ»OŸ>nqÁæûõü�ZÿMi»`]ß5`À€ uqÙÎ —×12ÕJo  ‘Gè7ŽÖ2Roíž\™6+ÓÃY™FŽòçòµËJ›7õü$­'wttÜÙ[-ÂóbqΈq³†Ms¥¢¸ß°”;Ž·˜‚ïC§Žùt*oûj#”�½îógÞR+o´[Ù,â{+šHüϧý¼õ³¥6lʘ÷´þ¥°ã”t•G¥›¦Œù”~þ‘ú­+}ÖO/OŸî¬×=jÒŠôñWÜ£˜×¹@ ;lòØù¾çÿS/¹}Öˆ ·Z‰l>éľõU÷°f Ÿ8ÙJdè´³·Mù¹�X�”[ž>a¦•ȰÉgï®�{´öî�ÚÏ»š+Ѻó¼ÿþÙû‹NIž»=&çéøëòľùwç¼ü­sF^½Î àЙç H-Xh¼ËŽ®ü®aÐPöTNØXåoWÎåÊ*+¬·² áÊ«–ÅV–9Vþ÷û]9c®^;YëI*‹•ìü5•7PÙryZèÏÑZÞ?g¬ZÆZiez¬L£î²øsJ‡).-TG¹S/6¦Æ�#•·롫+lRSSó¡×¬Ünÿ¬üÕ-\�Ñ Ûw‡ò¤ÛQ [rÝõÂ�ê·màŽMפǃõ\cw¼a±žËj½¼ÓMwÙ5½GÝ^A¼­´?6±é=ïi?=mR�|=ÕëöÓýô»wÖzÈZêÎŒIeEù¹M«ƒ×?A0Šn«ãç<3_ÔŸ}­R¦U¯¾‡ò&Ξ�î„~¥–ZʇY€à»ž¯ëà)xØ}Ÿ `ïc%¢`â>Ýãä﫵ËðýÝó«žV]¯ôÁçÝZÝ¥Ú~½_�¿ºIp­ÈÜE^Ûz“HÛéîfØluÿ§ÂÕ—µ:G¿i¨·swÁãd}Þëz|­*TW©ðßf ¤|ð9¥ã…Ö=q‡Wx§äZ½çSZÊýVýæ?+�/×ï�½¦7¨Ruˆ^{½S²s‹*›)m\�ômï AïßX«/º «~ÿRULnììì¼´½½ý9ëm<½,Ë›«T»ª¹¤Ÿ×y¶¶¾Æ‚ò¬~蔳ö�5r⿬v˜tƆU©ª³R¾šÇ�á’Þ[Ooÿ¬NŸõs6NAê›õäe3GNˆ­á8*;M9ã£UV5VÖõ§«TžTž Vhè8Åc�kš<öMKù?Ÿ9bÂD+²�5µ[—7ÉØyÚY—ª%Õ•¿À¼Ô‰V ¼ùîXÙÏŠlØÔ³ööó©éå~ÁÏÛ_y`ÿ*K]®<ð5ÊLœ9bâšçŒhîø˜ ^�ö]�U¹²Æ CÙª««ÛMA㯩Üt¬Ê¡ê}*_¸áZŸ¡²˜»ãî5öO(—Æ~•G]ÀîkZܼ[},œmõ9n9UiѪõ¯´Œ›?>w§ô�›àOùrŒººÑ€ÒÜuÞrûóón¢@}ÞÅ à]kÉÂ÷S^Ü×V44ìÓ]G~ßê€V>ÿÁÇ®AHùÏõþPË}*÷ÿMåþùVdúÞ±:ŸŒ)ðm®ŽüW­>ݓ׺ ýÎ/é=®N7ÄDâ'\Õþ}Cùvÿ^Y_-2�gÓ±ãâNû[/§|&ö™8Ç|Ûs=¶žïË¿<Ÿo![Uu ìèZr­‚¨em°.–ßWè-]”Òoü®–½¬;ðB_}Î�Z~QUUõ²¾c®–óôü@+ÚÖYôºÚIDATƒ´üׄCÞÿ‡>ë£ZýDiý¶>ÿ -¡¸Qr½X´=s´m²èfÌvùàD-3•Ç~ï†fYÃë�Ûtbî°pJmÿ•6/uW£Þo.�NQþY}×?´ê±Z¶üP½×s£çG_æ*M×YHÝwP•ü6yìuÕ©ªWuÀ}G_Úh‘òª—šÍû�‚ŒÿòИƒMØë¯á}C:½AÛyÚO¿ ?Ïst‹€êÞ«�i‚(^Ór’ùÇVòx�emÈ”³†èX¹ÏüÔ4í·Ñ}ÖសºWûÚÎ�iZÝküT¾<["Š+wªœ1YeæÇ]°YK¤®\¯\-ßScÿën8Nww«%”Ê££´�÷ªÌ5Ë•!-|àýè3ݰç«nøªÒü×ËÐ*K¤çWWQ:ý\eîõç0ð¾h_\®Ï~IA§Ó,!cü®4hР­µmWiqÃýCËY ¼ázÆkù´kR¹ÿ=¥ïÃÊóÇ[黊ÔÕöŸÒ=µë!>�÷P}ý×9àéeË–íFà=Rýtüœ©åywž!ð¾‚ÒbGK€8ƒïå<Ù«µŠN±�t‘Œ¬7],à.ú:ÈÝßö]}Çö.ï‚üZ¾e åÆ-TºüVÛz¯–Í­xú¹–M­_Ò÷k1R�osmÃCétúv×ÀdEà­èòq¼V¯)�l¾…*Pãœ>/xoãp½|”6·v(¿à•`r}‡kõ~TÇɃX!\=Ï\Øô|?ö‚jÎRWYX~ñzñîmýÿù¿|*ñ=ß]ë?®å WîÔŸEo„•>®÷wwǘëUΈ¸68•‡j›¦©<:©ûNÜ¢ênà8¡»ãß݈V";‡(ož¥Õ˶âÎï~VQ å}×3ÊÃ-fÝÓ~[]]ý¼­k9l‡´µr�Þ”ç]¥×Ü0¹V~ôeeOûëmï«Ú~×¥Èå<ÄMyèÑæææ=-Z4Ïšë�¨åR-îî+wGìÖ†U%"g¼ì{âäóùß[HÝã –5W°Ñ�îzð^h¥ç&Xù©¾ÿ)-‰hÑZIAèJ“9ݽlJ¢»'ÒÍJ‹+-Ê g¨À÷Œ»�ÒJDìïè÷>§ïÞÉLÛ÷ ×ËGisŒÅc_W!t½�¬Âye8áêªæŒ¼ò•JC�?­ö‡Olõ˜ȃ½ $žª ßóJá/[Ù6•÷§›:æ'†Ø¹¡Ÿ,•{Zû¥¨=ÿ—w‚×Uó¢òÀa†^Åõ&v=ÐõðßZvµ¨|óe_èb1NTÖ™¨òáLmÓÞ}ïgûöíû¼ë�h°þýûDiñ=œàE~—ܹqɧº€”ÅÄõâÖ1ñb)ë‚+¹»£µüEÛp[]]]¨yêVóÙ‘5ÈhÛvqõx=¼AŸ»©¡7ps4Œ2ÆæÍ óì:öé¡aáëÝwbáÃÜ|™Eï,¶.eÛû\ÓX‡pÜÄŒ ¦…{\ï/E¯”¢QAêg®`ã­2�fÜm{.ÐíZÍ-:A ¾ë}® ô7i�Å@ß{¶¶á>+ݰ<®ÇÂ Ê ®ÇnÉ'òp…5}÷#®Á£û©Ä ;ã ¼îÖomß%V¼^>…ø¦òƬµ ÙSöüå³T|¯ï�f+é7Ü`axVÕÿíèÁv˜tÆÀaSÆÜ¡@â/KL^µ®œÚ/·ôÉ!“Î 2±ò:„vfùð©ÜcJ«x}ïÛÃ&�¹{“GÎMÂù¦W:uì)ž¥îWNÝÈJL™°Ö÷½;Õø³<ʰ3•Oe wœd>¨¨u�q½¶é+rßÕqAª|ã&UKBÐÛ5OÔöÜŸ¤a!uqC-ª!â1=ÜÙbàR®^Ê}0xðàZ}çß]/îµL Zúþ£«ªªÜp­{Y¸8‚¶íImc“¡·¸&›Í¥uI†z­PÕ ºÑÝåÖ=Ìó1¥¸›¾Ü)&{GͲ ¾+H–ˆmWF¿ÇBèž¼(öV˜\°õF[1V_’ÜàzX4Î…æmæzŸ[Ì´ hMQ@ºè�2¥ù]ZEÙðD­kðpcÍ[À†“¨‡�q·<«P9ÇJsëw�u�Ÿ8G¡}­…ëùžŒ^ó~Uún É[1³{h ¼oUãUÍÖ'aɲuÊóžjš2æS©àÃÎ ™|æžùœ÷°›8Öâäy‡ îÈ=â†=1”ÔÐ)cœòí:/Æ2¶ûn�É®×±ñ]†�©l*¹»éžÒu=ic®¡2èL•3JÖ9Ge®Ã«««]o÷í-AºÇÜ�ã‚ÐÖ˨L¾³~ÿô¸:#­Â•Ã0`@Tã˯‘rTq 7Éõá–jܯc2’¡é"v¦¯Ž7QxÒâ(å?ŸÏ_ Àû†@Ô¸œÑ1ü]-¯*èþ‹é.·r¥4‹}è™Ø*œ´Q™Ðïø—…¤‹OÙ�ɤƒÞðÇY¹^ÝذÊz^‚n»èDs£‘òï_”æ‡XBt�5´ÅLy°IÛ1ÙVÜæ”8n’W5 Ü­c¹ò&b u}ñqm™µÏ¸çt}yÇBñ¶±�š:s›j¯jš¢y›[)÷U¨üæ¦)g}Öb替KÊR÷)è9À’À³a~*ï®OœZòÞ§½•ïç-Ÿ|8!Ô ô£”çÿÈP‘Tþrç=7ÿTÉï8ì¡­T&›ZŠÉXU–9J׃¿Y ½í{ ¢Õ”r À»˜™³ƒê ®žœˆ!â\‡·>}úÜ[Ìð®Ç{÷oNbP̸»C,^µÜ< Š-1�ï ¼©¥¥åbC jÔ»@�ËY=teº¢Î­X©tnŽu¤ŽåÛ`eÊ+â,Û…Èårÿ Q(YN¿¥¬&AÔÓ Ÿ‘ÈÀûJ:¸~ÁDG‰~",7á¦Nا[¨²s•>¿(“ù„ko7á™*œî6°HÇX,7&¸»ú`C·d\[Vð°<óC][Ü�.^.õˆ‚ÉEï)Šç¥=Kýyèä1Ÿ·)Ð9\Ç|©†úêµB}¢kQŸÛ E×4yìñ*TÿÂ’ÆóŽ2T•3NÔùæÏI¿Õ\Û·±ú§+àW´ŽFÝ�ëžð4±Ü¼LZ=ì2¢í/ÐûöLÚøÃÝÔÞaE¢˜€ûì],¹*€w“…¤4 ZG®uÃ0éý{J! wó.Ö²kkë �)¶Å�¬áÅ}®†ÕÖÖÖ¢Õ+NÙßU`}®°p*¡çûr:a_¦ŠÚÆ¡î€~EÝ:Řﮂ©Ïq·R&v2Èr½ÅTÞÓ*GE\_ô~ÂBðýà×–¡“Æl’NyZé&F M'ì? ›|öš_ùg%5 ¤Àð冢ÙiÒY»yžÿJ@å¯ÃTÎ(§ü¶¾ðºI7-b*»¸s~QïðŒ’«Ÿ¨L~)îÀ�R¾ù�ELŸé_G[òí®m=ÇB:ü¯ëíNà½Wy/—Ëí•Íf4„5ÝV죔sp1IcX¾h!èVÁw7Nž.˜´2¡mýœ a.ðÑó½››xïZ‹ˆ3P•‡«­Â„ó}àÀ�ëWWWOIZOŸè«m¾¯˜=ÓÊ…ç'cØ™åó<+ÖÖÖ–Mç ”U§^Íçó»µ¶¶Î4„ÖÑÑñ�!¬H;¢Q1={㤋mØIì·@ô„ Í—•aPñ‡–|ót�š«eš–§õwÈqž×èð'Úù•U °=ßkjj&ZùŽÃ6°ªªŠ[$ŸJ…º¶8ýóK>Zà[¬&Uu±ÁxñqIçíOæb(†Êêù¾’öé„M97²ÀVè—êø±w°ÅW­rxÙ^§Ý˜Û xþÄ¢‘V#DÙtú 7A®–°wè"œ_(hI½V�)¿¶2¢¼WW]]}¶E úôŒÎÎÎÝZZZ^3D¢½½=«t}ÅF¯¾‡êY¦:g ¡á 'ñ=º‡,‰jœ÷w”f×i9¹««kw7d6›õV.Ú·�j)ucvÿÜ�¼-w{[ˆÉ�Šr|è7-Ðrƒ ß›Ö²assóŽZ†kÙIÄ=¯´ÙO¯û­{½EDŸõ= IéyŠÒµ¬Æ«,…î!™Žµ2¦íÿ„Žõ³¬óƒ�c97骅äû…5˜›|öîVþÃImÝôІß7|€·^cgŽt‰Ð�)g ÑêTJ@×g7ÑZÜ“%†uŽë±n!)-¾å‚ùVÆ´ý_VÙq¸!n^&-YHÊÏGhÕ�£Ïª®æeŽÉårÃ:::Ö[µŽ¬ç6×ÿ»»Ø®Öú¿ΙDLùòÅ3öR°x¾!j =‚òfìs˜Å|õÝAÇ+mK¨žÊzÆNÛx’…¤ÏxÃ\pY'åSµ\ßÖÖöÄüùóßZõu ,hVKé]zÝ·ôš�UÐØÙõ ·à>m ¡ßqŸ6Óï:Q¿ÏÝ~»¦@_^ió/½î$-é}?Ðsí’›|UÁóPwZè3Šq7ÁMú�ǪÁaW—>J›�®�©ç6uû_ÿtwƒÅb+¢0ÃÎ轿´é÷¾¬åGJ�ús‡eË–­¿²qJ…ñmõ{éÿ.Ðÿ=eÑúéÀ�׳2¦zàžË^âÆ‹÷ß³0<¿ I}ó¯·h½­Oý½ïÙéù¼¿§W•Û|ÆÈñ^WoC}×.æçÝ„Íãô8Ò|ìùÞ÷w~øÌÍ,�â;ãûö-'äR¶›åS[’î;È¥‹_�Þ¤Ëóš´ ‡ëE×é•‘5¾:ÊÜì0錰“‘£[ʼ_xæEzÎP¾˜¤Nõ=ÿ¹TjËô€¥õ.o,óRåó6D'¸õª+CŸPVjkkÝÝHß´©1]Ë״쩲ÅÖ*ƒe\9céÒ¥ê¹UþrãW_¢ÇoZD<7Cl:j¼z•cÝ]?²h=©2Õù®låÊX®¬åÒ•½ô;(-Fêÿâ†R°¥R©r»¿×Dÿ^­Nt�²´l¡¿ë\ú»ZJ÷&ý}ˆþÿZ­[-BJÿ1 ž,+¼ÿ_µ�ô»uyL¿y{Õû¾¦õmn¸Ž0õÜ«úÿ›õÿg˜õHIDATj½…ÒæW_°”¶:”2*Y©‡Qü½ò¥›‡c‰¡ž4æ.(ƒŽuHÕr#oU‰“Uû1ká‰I¨¶ �¨ {„»eÆ ¤‚†ëý>\„ß*­O´é=Gj¤gC¤=`•_×)Ȥw‹ô¾‹Tñººººúvýž½-mÇ´ºÄhllcNVÑ�&n,úÕÕõ¯kå—n×rbCCÃ*è^jŽ–ÒåÛÝ Ú�k9K¿ý±Õý§kœÒª¹ûÏGµ\ì*åÊã•7²ðjûôéóƒ… öÊð~²æq�8Õ>-pcˆ‚Ú=¾¾4M{ª¾k'‹ÆTßËÿt戉ÿ\ÝÎÙcÜ<­Üâ‚î·¸çvšrÎöiË�U$ó4‹€ß™v“Ÿ}ÆDÕ‹ÕØe/î1aµAõ™{]á‚\n™¥å.-§j¿ï™?A³Hî’«NW¹IÓ¿neè¤1{¸Él-":V'.É×üðùÑ—­¶·Ø3#®TC–k̲9Zî×rîÐÉc>™òÜ|.e6? VSSs©EDe¯?iõÍî2Ö‡,Z´hž[ôp®–Éîµ PŽRÐ\ ‚‘ô¼ßEe¹/¶´´�(õb‹ˆÒâ.=Ïnkk{iuÿ¯²Ð{nÑÃg´LÕò]7A½Ê[WéñÎÞÖîŽCS'Z/¤àñOµºDy¡muÿßÝAË-îšèô§+ï|Nõ€ñzIG}Ö·,`¹C�œZå¡C-½ÿw:¿l(Ýþ®ü8EŸqw�ú¡Þs”V÷Y�ô¾’–•õûÜþSßÛ¢u‹þvK�þvyÀ û¶…oaø Rv(ú¹ë8i(åùç¶½Ž— AL”�î¡I>i!u¬>£òÂÖx_“ÖÖÖÉ*› ÑûC•eWR½âg@÷$«Ÿ·ðê·|Eépøšïk¢÷<ª´ØEïÿ±E@Ÿs¡Vý-¹"�ö¸;Ü]*ÓgM�÷5ÑëÿÜÑѱ½ÞaP~úê€Ý¦úÈh çê �÷•ôþÚŽ@Ÿ¡}0ÒHÛ5ßÝýk+†h¨ßؤåP=>N‹ë ô=僱ZÞÅ´lÙ}Ç´ë@²ÐP2JsßÕ? ¼ŸŽóç ¡(¶¾Åˆ W# �*8¢‹~*É3ÞWUUíiußžéÆo�b¸�%ú¼›,]ö°ÂE„£JKdd¹Š‚VaÆ‚ÞY…̂ǼR…ÇÝAz2QíÃÛt�ÞsÁ‚�'“TEéeס‡‘N¶dÂU§Xø^ø‹ôÝ{ë7… ~ª z­òú'ôYaïÆq“G�1ÄÎ3?\ð=ïõ¨ç{]ªö žy¡ $ .r�ó™£&†šDnÆð‰“;ý®Ýô�¡'œM§¼s¬`~äÈ´åۛ挞ø„4wôÕïÌ5áÐÃ�„£2Gßê®®/Û~ê9îZª·££F™ÙÕé�fŒw¿äsÔ@s¼ÚÉO\ã!¢ zÆ×,¤î‰Ú†ªœq‹·Tïÿº&PK—… óÐ&™L泾͕M¢¸kçm1†é·„š$Ó»‡CYf!(-U<Þz ¥ÙÃnŽ+׈a¹]r”>+’¡0kjj¾d¸¹’, 7ÔŽ>Æ" :Õ A†huó&‰A車Õýöm}ö¹ÊÕòýî!ZõôÍzÏÓ†RZ¦zçQ®þi(:�÷Üqž˜y/Ë‘òk¯ ¾‡=i'¦‚±lÙ²‚v¤B`µ%Wà �”ÁÏv-ò�‚zG¬¤U�[CC®€Y¤[IOp-ÍPß¾} ¾U^ž-$7Ñ®òÃ1zÅ…ÃWÚ~Qëk,>nø°Pg(Ïårû(]"éɯÐl�O\cSØ[ªÜ<‰Ú§žâž-¶‚–‚¡·Íô3¾2úwK-3FN87ïÛ·-¬|áC¸áÿÕø]_ ;Ö»òÆÃ�ùÜ^s÷º¢Ù"0sÄøkµM_ô#2ñróôèu� ")3¡¨ÚµÏFµ¶¶Þi(•¼Î9a'ZîÕèù^ªªªXHjÉJì-RʤµÜ-c:!GrKàJ:á_Qï 2 }è lgggÔ«åܰ$úMaz}t'€*ƒ´:ÊBp=<ÜD»1¥…Žèï�B'\ué=�Ž�•”.GwÏkwW�*ƒ[ú]ƒ5^vï䇺¾x=¨àyhì®zá0 A�Ä£f ÷o‹Ð³Ÿ¸*Ûéçö×g4<‡tÕœPÐ룛põñ™#'c£/ ÕCôƒf�ÿ3¥I¨ ž6ÞuØ”±A®‹0w\¥Â {áû¯*ð~°™"-ûÍ9þ&Ï÷¿g¨$'»;d- 7AåÒ¥Kê·<2.è¬U¨‰&õ»ö©­­Ý¶§¯O§Ó'é=aæ+[ÜÕÕu`T�+µ´´LËårÇYú];ªÌ¸u‘ErMt�éJ{×ù't§µUé3Çi5ÎÂÙÎ id ZPZÜÓ=ž}d´-»Zªç÷ø,×{útíÇc-š;åQ|ï(ï¡}6ÝPRJw†ž AçÉXƒïe;áj’Æ|×Ek …à†Ê²·ðꂘ×o´BiÍ´u•²Ÿ m 4–_®—·U ³V*è_¯ŠÈ-m[¡cø‡šTÎ�3ª†ˆ¢ÝR»lÙ²“kjjžÕ~5Žq€agBõÀÒ÷]©JÛCV®¼*rßÑßX@nlX­n°ÞÄKÖ° ž‡º¾è ¾Îà^:ç6d'Þ«d.x®žp=à‡<4æ¤tÞË‘Z1éj“ºÛ©ÃÝœ§cgi>�ÛCs�ª,ûZnaŸƒµß6³€Àw½i/3dù�3~>ø<8nVË>êÀûJ3FNøÙ°©c]cù§rM rÞJ*ÂiñâÅo[d³ÙÜÐ1ÚÆC, êêjw~îÑ�{úžPçT¥Å×ÚÚÚŠÒkÐu6R™Ë 1¸¬Û]抴;"¡‡qÃi‰b¬þÕR𥿻cK Hu]wM,¨3Œ«Ã™Qïû�EH #´ TÒö<iT\½KËŪ !ú‘"´¿ÜäÓ‘7b¢gOùšâ?¿0¢r@ø9ÅBˆ-øÁXa‰ �袶ç{ ÛÄJÅMh¢ÕX‹Yß¾}Ýxb�QÊoëY‰)_üÆŠHýIªô¼ê ¾ )äÅúŽÃ-7ü�›0ÖŠÄõèjhh«í 5é\¡=ß-ÄÝnüU\ε"RÅø§Ýã@�"½ïP7d¡“aÅ/xðÔ³d ;£+Ý€0Õ^Õ {à󎵠|¿-—îŠjâÉÕš=|ÂMSÆÜ¥}s˜³û�Ýtîðñ¯õìåáó€vÙ÷g¿òe+’'wûÕâ¡SÇžœòí H¿Ò�× ¾¨:Ÿ;*\c•wõìQWëxݯ£ò¡Ü½|ºh�ÿ( ]Ýä�[Y@*gü­ØC,[¶ìË*Ÿ¿¢‡}-˜O[‚ï .n®U˜ ´'«,ꎡuQz»atQÙi°ã‚ïQŒiŸD?v�B¬x–)ý¿¨´snueŒ‹ yƒÊñI¸[¡¯‚q×[@qÔ‘»¿×5ÈEཨ"žÃÈwÇ×Á)Œtwì¤|W¦bv&‚žë‰ �èDÔ£ íÖ"ÑÁ÷ â_,ܰ'A aŽ�çø,Eï•{-7¤ˆ*2õ=}½òøh È™Uù ï ÞnÒw…êÑTHÏw%ßH¥c�Óp5ßUªVëŸZ©T*ÐÝ&ˆL¨ëKÊó×Z@Þyê˜T4ßÜ‚ò¼ëf¿¦ÅŠ/ÔPÕy¿€ž™~ر¼[Zýö Vd³FŒP«Ç-(Ïö¶I–í�qQÁ`_ Ê·®/øn¤žš9üªçUH¾ÙPî‚68®Tô!ˆ-Z4Oå™À“í¹Îýû÷ÿȺ^§àb¨´èêê 5¡}Ot¤ÏóÔ= mày¶l‰Ò¦è ½ÝC`L²à\ãNÐF¤X¨.²Ycc£›h5p� PGŽh‚ Tw»ÇPÜPI:ÆFx‚+çžï‰¡àT˜ ž»€…𤧒544|Uéóm-›Z8Ïä†ò÷?¬4ž°€cnª"ã*;­ëz]mmmc˜qÍõ^7ÜC)Ë|}×åZ=èåè¸a¹axä:+’nVeî2¥ÍÆ€¶u¸V·Y¯‘ agü S6%»¹… KíZÇÏÌ›7"ÌÅX©5wØCg�²¢SH;gO»qq-ßÛGÿµ×ã*®Šj‚ÕuÉ{þ%)ß»Åñª‡y-;ÏÀï…TzýDÐcF'—?=3âÊ¢ òAyËÿ8m)æí(c:ß.gȃºþ‡š°º§TúE>Ÿtlú¾}ûŽX¼xñ_Öö•EFxï8Ñ{ç´µµýËJ@é0NéñíwR.×]æškD¿é‹h‚ÕuQú_ªôÔaÈå_³÷hmm�l ç&V=nŒ¶ù<ýYká *ðõËã8^ˆ;Àôþ7»ÇêGÐþº^ûëKPçW ÅÙã©b‚ï:!må…/7Ò WÊ™ZïwWÁiw¥§[Ü„‘Q�Õdžp5ê±üÖDiõ¸ _D.—siû̺^§ÏßÇBÈf³¿µÑw]¯<8ø^`ei¸çÒ¤ÓJÔ\б [iWRšìmå&ä 9)vz$û1ý–`x7?ï­ýúâûû„¹+¥¯·|in¢ ³WõÖÎc!{tUWîZ¨Y#&Ü:lòØùú��†9P€Öõô#øÞC;M?{o™¼1:•/U�Í9qö°ÉcfêÀi2”¥0Áw•CK–×ÜÄ‘jäwwbjh[]9c­Áw¥E7ž€IDAT˜2×x+n[U½U¿`(pìÒ¢dû®‡B]»ººJvMlii¹[yñÍ N”þîš8Ù’g€vÓïúx÷â†�‹ª—~ÉË̪¿~K«H'£Gqèüü}Þ‹~çÐ0áj4Bõ|ï�³8p=u7«ªªrãY~\i°«+L¸ÿ 2¹k‘Þý–§¬”~/û;êöt‚í�­- î±áJ9sýb}çc+óR¡ œpu{ H…ΩVBú¾‡‚6ÒÈNÖ‹ø~r®-é®p×§k½ÌZ¯/žïíX9Máká†Öñ�M›wKnÝ/>g€oþgîuEi'óñüGôÏ€g^àó{o”ZšßÆ‚÷¾]:sļéVB¾ySµµßË�¸.xxÂí\.x>ˆ ”¿róÄXzߺÊS.ȸΡiÖ¤³³³äe.•�ß-DÙ²ˆ—”/š,Xð‚•–C<èä¼±_Õx°‰V›ê¸ØÅVÔ‘wÖãD•ÅCÆaÞRÕ ‰æ&Ör¼ÖÕD"¶à»ASÝ×hg §bƒï*@|T'îÍ”FnBš½» Øn™þ«¾.¡U÷|W qIn�?~»*h„*=}ã&�ökI+<ÝÜØ‡�‚ïp‘ì@½j%MrձإýäœßÏ =ÔÞÞžµ2Ỉ* ¢¬ªM“…æÕ¹;]¸®¥Í­—hš¶þ–3‹|½U¾+ý9Ï×9ϳ€Á÷àç÷^*øõÐlzÏ"ä-¿Ž1”p7Ñåù¶¶¶RÌűªi�Ê&›¯íÿëëë·µ€\ð·{‚ºR œ¶¢ŽTI´S~ré4ø^²kb]]Ý–UUUó—ß�h{hÙZÛ¾Å_—Ä:rÈagJÚ0ˆ@ÜЉG+ðhn9«WÎm%¢w¢›èD«�,„Jêù>hР­T�ø‚.ÈnB2pï›�BC%÷í|ÏL–£|×Óa ™ÍJ/ðwötؘ7 QꌣR¼L›«¸£íj(àÎse|%• ñ = 5ä“>`­×–Í'�ØWßxÒàrãåª\>îÁõ6x�.ß+ý9O­ÄӃߦêüÞë¤Bfª(yÞèLÙôšÀݳÍ,¸’ç5i¦í "[­ãÿ§Ew ¶¤”s”î®Ïþ…¿ÛÖ×ÒOË« %Ï‹]]]ÓUµ€Š|Ïd2{iutwy—•Ï' ž\Ò (õ]9(Œk°Ô>:PuÕ' @¤3¾G¡’2ìLã!«�PÖÁ÷†††:2ÏR¡bzuuõ J“êé‘–¬ãƒä—@…7™¦•Ö:'M]í§>=|]ƒ”Ïçß³Ò <äCO‡�Q¡>p SßGš8oX@ ¾÷ž�Ÿ¤ W-ÔõE�àµ^[ê­>ª95ʃç÷°¡<ø„ð¾y%?¾ýt:ø9ÏüÀC9ôJ©�U¾•þ5?I“H£Ç ¸;ñCb,g¼k¹á(×ôeš�Ë\uuus^Ž£ zuàk¢ê<‘–‹¼‘êÇßW=ùE}öÃݤîbÉRÒk„»÷IçËWµv'ðc¾‡f2¤n‹ÛÛÛË2ø® »Fæ,-Ëoí«�9W4�•rŒsw¡ì ’ö*÷ô÷>Oh»5 „¡Bü=^z*LÃeÉÓÄQ>y'è1ª÷šÌ1.ž%jN�@š¦�¹£å¼À‡üÙkûß\•¥Ò½¨Wl>ÀB…óK~|×ô[üznQ°¶n)C�©q¥*pIÇóc9÷k7ë¤ò\‚RÓ5;âšW9cž¾{}  OŸ>ƒ.\¸¦@m9–¹\Zlc¨ ë®U/[ˆ#/.Z´èå§@ã¢pWðZ)àþi}ýiú¼ý*°~X÷0Pó ‰£}ótggç(öP—†Ÿ*n@ü¾+Ü<<ëäy�¯‡jÖ+yÞè\Ø'xÞ@¬T~zÅR9£äû½®®nW­‚αLAž7×ôŸJ‹�§V§»óPIËJ‹-µ <¢ê?/Z²„¸&úíÄ8 ó�¯õô…555Õjk+2¥á,×M?•Ïçë•?öTýøç«Þ�Ã>QGÆõUžûgCCà @dÊvØ™õW+÷�’Nhóuñ¼ÓL� #µú¦EL¿}ªV�©�ð¨ /ªðà ™=_Oï]?`«>ÃΤ4=ÄmÄ£­Ä´­ûY è·=¯ïj²úöí{ð¢E‹n°QáÉU>ûX@ÕÕÕ/Š.·¸Ï…Zmo!)ü›¿Ö³—ttoixyo˜­¸ƒ ÿ¯ôç¼¼í"4òJO^•®Rð=èý†¾•&ø>éÂ*ÏËn,ŽÐ³—”å_÷;c;�yÞ€žŒ±•T‰®‡ˆž‚ÑÿÍd2¾¬¶ammí¶íííÏY‰(@8¯ùëhž?þ[J‹.%E�zë@7d¥Òó1+‘0i!ïhéQG�r }æ]�’Ý馠÷¾Ò“ש\}¾V#-B:Ü�h�hy\�ÿÝÕÕõr!ǰ»Ëƒ:2¢¢¼äî¤ø£ÎŸ[èüùcZÙN¸×°3*üýA«�,<x xwi¨‘ár‹@÷-|×h½§NÞžFjù†ߦÀû,ëaà½[à[ Œ 2[@ºho¯c&ÔÄ‘…4hPFß¹‡TÈ‘zíÓÜ�VBÚÖÀß§ýÿª*¾íÖK¨ÞËP`Ã&Ÿ}€âß¶Ðümþ‚[zújϼg, T4w€%PðagT°É �zæ.VZÁþžõ¨b?{ø5�‡À��Y ©jVc¨Wm�ôlŸçõ Ü#Õs±ðÖeY ùæb(WnläÿZ@555%-g(àæûf÷à5s,¸¬„B–¹ÂüÎb œX__øÎË€Â4=»®×¸áf”ß¿kpel-?ÐâîønÐr˜– U?¾'@ãYñ àƒ~¤º¼ëÔÃ@HqßËŽN<¿V�êS�ÎÎÎë,ÁêêêöÕ*TA‰.-W¨±±ígh=Ý Z€ã‚PkkkØývª•ˆŒN¶z:쌓Ïç¶àŽq V®çÂW, ½wš•�ƒ^æK?`æÐ‡Îþ„bwX|óþðÊèßõ|B+?x>V`oøòÉ>+N¸a‹m!*"jd˜j(š¦)cvNåòÿÔÃ~–o]9뺸�·tõMÞ¿ ìy©®šÀ ;•Ê3ÿ‹ÛN;?Tżç_æŸe!,I÷íùy̳yˆ¿»•@ʼ£—Õ~/IDAT-°\| 3|Å;=<&Ð0O…Jûáòâ§²Wàr†ÊC;Ö××—dìw•gÆg¹ž”3z _Ë{7mhh(É�Z Ìžpxœå*±Ì¥|üÙRu8QÚ‡:ï¹á^zðš°uäÇR©ÔÙlv¢þŒäN~}æÁ‘Ž­CT§œ¬e�¤lƒï:”lØ�d®Ðêt‹ˆ.�?´ä sûè‹Ë–-ÛM…ŠÇ-B! ŒgN˜@ó†j8 UPí §Çê¼ðQ ¡�agZZZÜmÒïZ@Ý„¾VdúžoXzÿÝVvüÀÇ{Þ³’][Üð$žïýË"jTTøðú9#¯~½�÷ÌÙcÜ<¥V˜ÛÜ¿³ýÔsŠ>XÓ”³>»ë§�̯@^Èë…׿onÉVdæŒÝK �{{ëšúôsû\Òó!¥| 6é¡ç5 �4¦¨Ã�íö¦ÿ{ 5J’WP`ÏOy³¢VÁ÷¼ãõïϬHòyïs¥0*oùûR¡ú®ø_UÃÉfŒÿˆI:Ÿÿƒ¡ì)ûª®ãsT^t~ÖûÕû?«ëø_¬HTý­V��]9ª'¯kooÏê·<¬ßtøÉ‘ª×�ª:د¬H´}ã,Ä�†J‹{­r}[»?e³ÙuŽ©Pµòâ-œ®ëÊa†Q[¦F ÏYÄ”¯w 3Ï€QGFa¶Õò„ÎwûéÚf> t¿YÇ;�+Òuv¼òmуפœ{¾³•v€2ö�t�|.ÊÀ{·ïY©ð¦EÿeU¦XÄT`ûšöE˜[iÕAûu�Òµqû®¦¦æ+’t:ý;­Ö³ëi¥q-ÎÖ¹&êsÌrµµµ®pôS '’qÈËIÞ/êµeùĪMS²³<ó~îE:v¢]¡½ÞWÊçìï†ç}~Øä³ŠRlzèÌmÔ˜rm÷ Rº}½�Ÿ{µiòØß™rÖK(�óú*úg7¿ÁÀ·¼Ëõ%á†/Iå <¯ç{2)âê¿Ê³/[‘ì0éŒ�Z}ÇJdùqæû!&^U3�ïßT¬;9†M{¾VE¹® ô"(g\í:ÕX(èçîj 3¾¹û}=.g„M Õë.w«¬T–;0ì𤅤E¹q½ßõûþlE†RéïÊ»ÛYÚÆu^óùüÖ�ë€7þüžßmÖCÚî_X8Ô‘Q¨ •ï¦ë¸ÛÃPjÛÂh¶Å|Ob+k• eg(Ðû²N(n󨇄øY9´ªp& ùXöƒ ÚJ«¢ß:‹5kiiq…ºå×�çæN°ˆé˜�`!+A)]Ü�,a†žqçÁ;õ" "Ö××oV]]}!Ãè|�* ªcäceÉKÜõe褱;5MóOóüûÜX¼!ßüwöµ , Y£'L×þ×ÍKÝ0dÒY¡*¾ä†ñr©»”^?ðeÕÚÃǧ-5Kiú`ÓCgnÉ´û°)cÿbþ±‘š¦œåöu¨amTÓnž9|Þ½'•3”ÜÖJ‹¢ô4©NWýPù!Ì{Vð$»)»ÙÂð¼Íºõ¹7꼞I«Ÿ*†ÎÍ×i ëîüð@Ôcn+èr€ê a{‘¿¥rT�ïÀI§Ó7*)º,¸Úæú÷ïéPi®…ÒùV A¿KIÑê3’NiÔ¤zÀ_-â;ï•þîÔPà )ýd³Ù¬ëuÊ?},¸ÈëÈJÏ£”®Œ÷Ž8Ô*ïMV�óCÉ(Í ¾‡ ôËZŒzý˜ï®0*_Öò'-ótQuCW¬oÑ{Võo[P$L¡(êñ’TUU¹ž. ±R¾¸ÖÂ;]Å-šÆ7Ï·:fãœT.§õå‚Îe�Z¦)¿�EÀÝ~ª êcaÇ¿—›Ý-ïÖËx~tç°¡“Ç 6yìO‡M3#•²Ùž…º-x�ô¹_~q� ,ï §_ÊKM:uì~�å=ÞóÞc:@¶ZÛëôÛ÷õòþß›&�yf蔳"™=Rž;lʆßaÎ…‘Üå Æ† ž¥"¾Å¿Ú¼[r…¼cÖ>ãžS0फ˿ó§Ã&�³¹EHû|_³_³Ð »ã¥ËÏ]뇘[bù7š7¼kaß© ÀG2烎= ¼?éƒãRÓuø]ÏCõˆÖû‡ªAÞõR [.XNå87¹±ë|v¢p7Ax�ÏCÝãd‡Zdë¾}ûNWÀhs‹€k„PúþKÃN²í:’,µÊw¤ò�^'’†G¥¿_½ëÂLøÛÍu6YçГaêÈÚÄ‚®¹ë¢†ë…ÏcˆSÕÃoWÝ3Ì\è!×¹N«0 €½žâ6±ßã, ‡ª´¨y‡.Þ�P÷˜ñ›ëBX”ÛWã+J›%ÜÇ,BÚÇ®�½½!vÍÍÍ·j¸ŠÏFÎq*,»žÞ§ë3�yÛ=TË5®Bi ÒS\ÇË/mÅ��+^úÞAZÒïºTir¡žZd…ë«÷CŸs‘E#ÐøáåÎ3ÿ„aSÆŒ°tq¤¶wC�¬üÔbQøïÆ™£Æ‡žWŸñÛ¦Éc¤êkàù>\ïc…0P€øâ™#'|ØŒ¼‚2$›Òz;3Ý4eì%J”qjì¸æ©Î1ñÐCžwHÍüìÓMSÏ:k戉�†ðjšvæŽ^.íî •7ßW]¬1Õó'ëŸÏZ ^ßËßÛôȹûÍÜëŠ7-¤¡�ý‰T>nȤ€ÜÐ3:O¸ïÕãKÇÌ®] û<;lÊØ fŒhh¶�>s³|gú åÚ£º·bý\ËQŽ ÔÍQ9î;Ùlv¢0pàÀõkjj\ãßIác�ö®¶ã:+�¾×ì¿d!¸º_:�ž­€ÑE---�†ìp�·Tuå­3-¼%���ã­÷ØOåÕg´ÎU¸ÍP>vwÚ¹|Iƒ.—ëÑ1¡2ÿÒ y_ï�¬ŽìŽEå?w ¢sbå­p�ŽÉÍt<ËP4jè ×{HÊ«±;gð=T¯û°c±{%•@-,ç«pæví’Rá ðxtnx×›ÄõÔ±pú©`v»ÖQõ¥F W ]Aèš?¬ õTàýµòËÔž¼Oyk¤*LîöÒ/ZBhÛ[•W/Š`ÌE—.ç)M¾¤cð§ªˆÝØÞÞ>]ï©««kÐÅøózï·ÃL”¼*}ÿoÕð´•+/Ä„™žçzlf!xïÿStÏ,­êjø‘Uùžÿm°CÏÍ Ïø¦ðŸñ=ï+³FŒïñpU @ªÕ¥¢ÁUÉžÑ>ü¡%~8têX÷ý¿¶$ð¼­”-ïUÇß”?¯UãD�†Zpf/ïŸèå,²^E¾ù¿ üv“Ðëß—›·õ;º¦™tÖ³GO <Ô‘òÊ—ü¼?Áô-&]yÿGU)/ôíÖJÓ µú�òÆ)^*ÙŒoïÉûÜPV^ÚŽ÷»ìüä ´…() ño•3þª¼rŒ…àúµš Ï:]u“Ÿ«øâ†Y¼®÷¹qÒõÞ/kqó DrÌéûÝXwöQZ<£í¿^Ûr’…3Pe§KTæ:Ue7,¨JjáºÞ4xðà�ôzWNs ̃,J‹‹Ü„²Ö‹tw~û«öå?•–ãTO¾§'ïS™wWí·õ0Ê»^ÿÐÖÖÖ£ÉÑõÝaÆl?È"àêÙª ¹aãÂÍûòÿ¸‚T®RŽç�Χéªqk¦óæ6†PwZgl¥˜¸5µÈ\+h¯Š¸è‚x k§{ ÈÀAsÄvÐÉåwz¸»E‡Éd"  ê]X]…#lï÷•ŽW~;^Ÿ9OÇÊŸô÷,-Ïvtt¼XSS³LÏ é¾Ð ÓÚ|BŽë[ª´]ª|{¦¶qs o=}ÎúýW(]&©Ræ‚tst\½ä*�î6S¥™Šc'½n-Qe²déÒ¥%›¼ù6߯IðÜ^—D6y׬‘~¯ ù9 žïl!é3>¶¼üä1O+�ºJâ}]ž÷Fμ÷žqåÛM�œ»±×Õ¹yÞOíé™?Ê cá‡0ø_~>Ô<Å  ©ë�|´Ò¹E¿ùOyÏžò}ïy¥Í ÕuU lAçN^ÎßF¯ª ùgx�d˜ˆUu¦¼À1Ï1þmû»ÚöÀÃó)?l’ö¼g@ÿã Ÿ|yÀ9å�ÓÃ}ãŽÌ=ñ ÌïÕ¾Šd¼]}Î>æ§öÑgº;ŸnÖþ\ 5Ïå-ÿÂÂüâ÷ÚÀ�Rž·µ^·ƒŽ­Ïé ÛŠ’Mï¡ ãùUUU¡‚ï+¹Ž2*Gü^eŒßëÏ›´L×òLWW×K BþWÁ½�Uæpå w—›Sg‹�ÊvO«nx¼x•Q¾Û¯_¿Ï[4׌­ô£´pÃŽÜ¡ms�AžVz¿¨´xIe»UÛRéѤçÕÿ/Ÿ`0ªN\ú¼×”?·d+Ú™Féx�[”έúó/J�ÿ¸9h”×_œ?~«öË7É©Ò'=ÿ9oE‰Huvvþ¨§¯Õ6¼tß»2ú�¿P�á�ŽÍ#uìºc'Ê!r¹’T®R•NPßHyÜuL3’VCçŸÝ§X™Ñ6¿®gÖ�Emè}¨°ô\Ojmm�ÑÓ÷é;÷Ô{ÝαLž‰žQ!ø‡*ÿÒ¢µ�öý9+ÿèÓgÅpf¥>Gè¼´Îñ×DÛú­î·h�VZ�^ù‡Ž++6¥Á÷/^ü¶•1Ï*»�öѲ|Ú;xvCw|ˆg§éó§{MZÛ=¹¬[ήò}:|×kYµ]7ôiªû¸èw—¾êû³FMü¯â= )}´:#µ¼Êë[Ú ÞÚ±ò?W¾Æ¢¦_vùÜáã_³0|o¢6-Šá­~¬@óñú•·é×ß?sÔøI«{ÑЩgîb~ZÁvÿóÞò `roÏO}Ë÷rEu¼,ÿLÏhõe7—ƒû­î(©O}‹(/IDAT ƒ-u¯^ÇõÌmhhø‰ÊQ7Ž¡{1<‹^ÎðWT¿l!¸2ŠÊ‰?p=×-ZGv76üOZ¨²nÅ¢ä8Ý’¯èg¥{½V_]Yîws ¯Lí畯±¨¹¡#,XðBO_¯ºí\Þªû×­Õ€tÚ¢E‹Þééûºƒî?ÐÃÐ�#€brÃÓyD�ZôänôœÒö†À\ùCqÎ7,Fô|/ž)Ùlö‹~Ò’ÐÁý°…ËtgžÒÉ÷a}Ö½ غÛù^Õú-×«Æ •¡Ç멳¾ë¹«Åü£º}nuhÕ�ˆë­¤ýz¶ë9exŸŽ÷”.Vº|ÎÊ”®I�é¢t™!ÁüÅy/uÈìáãž´"˜9bÂc ˆºàê+_Ï(�Ûãžl½†oó;ó]?°�òéΉ©\Õ·ÿNƒàÜ04Z}K!•o-o”ñý¬² <Ï×ön¤|¸ùÿ_½“qž1úÊMSÆ^¯‡É›ìGå¯*p÷[1~{YR9c¢Ê¡‡âTZ\¦´p½ßË9y“~Gè9[X»òã7 yƒ»ÂÝ­káîÄ=²oß¾GªÉí{×èüŠ®§¯jý–êo8p½šš׳}#=ÿ)mãgµn°â¡ŽŒH)¿«®®~B Æ#tŽ ×áË <¸Vç‚í aDßi­@qß+¹ßκx~Zë.+S:¸ïÔ‰3бL÷Öjܺ½wW#Ôø_ʧjßN³ dÂÕUuttœ­ÂôH=üˆ•Ÿ…úý•1NŸïy•x…Qí¨Y§Ð}xŸiEÔéw}»ÚK»Þ¼å7¶ ‚·]ÕöI ūȊhÞü±sG_½Î1�×eöðkZ(w“†äˆç5êÐu…„mÊåö«:¾m]ÕŸê¾›(¦N•¿NеúQ+OÏ*SP°s-òò%Õ+Ü�9±Íý”öã«]]]åÜÈ]ö”¾¡üØfÒ¾û»ŽÁÐw¶ë3Ü<7‡®úÜêêÈ%¸ ˜:2"熈ÒòD}}ý­­­E­·ô:_íÁ�3¡ÅÚë݉ód[‘•[]�/Sàý(+ãÀ»“ËåÜìóK­rЪ!VV^?×*L˜agœ… ¾«ü(}N«•—¥Úæuî <b¢x~åï¾ÿ¢Š\{<5|BÑ °.@›³ÜþúÒ·¬¼,ñ=;`ÎÞ^²PüJ,ÝŽ›5jŸ,"�™ŸúæÖ'‰‚ïóY{_û®çùŸÔ1š3 Èš››§«~„®Ùeug­¶÷õ%K–¸¹="XeÑÙª¯®Ï.«:—¶7«í½`Á‚fC\nTþ 4„¦ößï­²PGF±¬—N§Q£Ò~†Pr&¯[Ìâ ¾WZåv‰.ÆŸV¡ø<«mmm-ú=WYå ©0bÊëWjUQа=ß�öööçõ9n¾EV&t¬­ýY®=é>̯´®þ�é�ËšfŒßãqIÚ3òê×ýtþ@דÜÊ„Ÿò>3sä„§,´Êêù®¦¨{•wαÍÝéœ�·ŠnŸÏ1Ñ ÕWc7£(høw­ÊiN©w»ººö-Æ|2­­­nØŽ/Z™p�3Ôx²Ÿ‚Ó—ÉÙl6ðõKÇßCÚ�[å Ž\¹’Pžuw&=ÐÐÐP6çé„j±Êê‡Ø‡@â6£h¸Þ¢»(xõW«,©pûØH¨'fAU|˜ ¯_R¹ËFÛëšJ—«¢ézÀ/°d[¦å�»îµŠRA=—}û挑Ž|r·_-¶›¹ÏUO+¿—+Ü’Ì_~§Ùa3‡�û‡ÅÈ7_òd5º¹És«.=ÆŠÀœõ{+dlýð猣&\§Õ-a”/w�Fxºnÿ6—Ë�à&³sõ•‡öX°`Á‹V$J‹¿hutÒ{Àkûܵtï2‚!PÓï}4�w‚>¥2zȡ閑¸!ƒ‚ÖÙ©#W´ÄÔ‡”Ï~¯|TÃŽõ::o]¥c|-_×BãmJ·—-fô|ÁÖÜ ƒaHÅ ×° f¨p‘˜VJ¥õ4mÏ�-˜†¢P>qóL±„P>9V«ØÂÚÚÚžPÅØÝb=ÏÈ�¿´}¹‰b ‰ãÆÍ¥R[Î5þ‹ÑÌáW=Ÿ¯òöQ/ö[õÖ$oþ§fŒû¤užyÿÑ2ZQŠvKßÂóÓ‡³áfæ¨ñß×*IÒ"š»”/Ô%æ®A·ûyïCER÷ºVg ¥m›«rûÞ¥èå­²Ìíú¾Oéaɪ{ »£àÓ•™çZù Zgwû?1C1j;fwtt ‡¡ç>ѱ÷”~[b‰úm㴺ςd@‘éüç¥R©Ÿ766^mÄÅæ´\®e+ýy´–ɆS,ÙäkBÏ÷à®íììÜÒVæã»¯� “]ƒÅ̵ð©Àäzï<1ÎJ™L棆bXªJÏþÚG·X¼\…k“·ZÀŠBØ1ß?HÎ'•owÒç>bÉâ†æØIÇwbM°‚ïÛÌš9j³‡_{ ½3kŸqÏyùôPKV�ÕyÍóüQ³FMø»%ÄŒQãOyþ:æß±)ýcáÆ¶ÏŒÑW=è±p£å¯ØÏq:n.Óïþ³ÅlæÈñgiœï[|=’Ýwç;1sä„ üTž!*XKKËŸ¢sNì·S¯JÛs«Êc»ªœñª•ˆŽGu³&=Œ½‚½*¥Å=Zí¤²ò3Vž‚žË|×Ë_ûäJƒ¸'º›¤ü¸g{{{dCé)¿]’€º�Ë_÷ë·�£uÐF…� (�Ó€¿]kî¸.ŒÖq¿£–ë�!iÖIe¥ç-fô|/Œ¢áª%K–l¤Ì~º.àɾ?"Ý ßµ˜è„ÒÜÕÕu ›ÌÒVŒwÔv†béR>ùŒNjqõ°{;—Ëí­ãòÁî¿MDVŒ[/ÝyBi³·Åx ­JÇÓEJ'7LVb{2‡å—çtð�û)ï“3G�¢€YÐÞKEジ3FŽ?LáıIZÅ÷ì’ùÕéíž1!q HÚ¦¹J£Ýµ•qõp¼Pùè“/n=a™•€ûžÖü‚ý\ðÛbâ{þ7ç%e²å£&üBéqT\C6éø…Y#Ç_ê{ù“éU8ç¨ 4¬»+Wf×êD•1Ü]ˆ%¸ámTØU“л²]åâ3•‡º‹Öû,/‹¹¹�–-[¶»òÆ ‹ÇÏTîuw¢F^vquý®8ï¶ý�¶Á5€»:LÐ |7Êd2ô~G)©<7Yë�†PÜÝTZNV#§kDs±†@C4÷ËJÙ`MèùÞº¨¾¢ÂÓ·:::6ÑÅû¬bL”túÝ?qÃy”úÖA×cXi¿ëʱ"S©T˜Šìž†¢RðâîX³­Dô]SãÌŽ:¡®Z¨¯²`ŠVQtÇ�¶s mo,�U×3Fæmt�þ�!swZÜäçm¸Û�{ÌòžPPwBG*µµ2Ô­×£»ËóšfŽÿÍ7öº"à#Å7kô„7fŒœ°£޳’ñçz)˜òRÉÇeôï–®~çÝE¥ëYâ‚Û¾wàÌ&ZÂÌ9ñÎ|uÇŽ.ÏZ©ø6#—Ïo?kÄø÷ïHWùi ȫʸ/mmm-®®2Ø>n¸‹�¾÷WjØJå�,FóçÏo×6œ©2—A-‚I¸ §´øÓÒ¥K·V¹˜!dÑ¢Eï(î¬tù…•Î .(/|ÛŠ¨{øÍ’w°q�mZF[÷0: ¾‡éÕ¿‡%¤üº§ðÓ °�!4ÅÊš]¬AËf*|Aç†Þ§ô(Ú¼3…ˆ3øžô ‚Üxî¿Ñr°.ªSáéç½¥§ûš¸á<¼ÛZ/)ÁD’Kuâ8ßõVPõ••Oê{7|è$z‚¬›ë�¥ý憨øŽ‘òÂÃZíz|¸Jçªÿ§}ÝÏÐgµ—–÷TÛ{�òöaúó9+�gõ}ŸÔ÷¨ s¢nÅî­Œ›æûù¯¥<J�›9zü4+#ÏŒ¸òí£&¸^�{ëÇ”dâ8ÀTPw×£{Έq³¬Lhÿž£ÕÞÚöÛ¬˜|ÿ;.ØÿÔð ±Näç&aU~[í/7|G–—A.ìð»>6cÔ¸û-¡fí}í».Ïæ=û¼öQdÃ|�ò×]ïÿ£Æï<{ôÄÿ™ƒ(×e�®‡NÞò‰màÂê© ö°+ƒ¹×~óܸ;�¶×÷~õƒå±8¹¹wˆp½à¿¬¥T§Ü|?Ô_PÀ9‘sþÄIér¾V/öp-Ýwynãò€•€ zutt¸;¬oÅ÷ŽòØQ®±mÕ;*ô›÷xÕ{©#£äT_ß±OŸ>O666noˆJ—ŽNç7¦ëxúGƒSª¸ËZÅ|OT¯{eÎéÝ-È_S+ù~ʰuZNÑòOÃû\„ ßTºl¨‚ýJ¯HÇ/ìnôø­ ÛéÄñ¡ÞúÞ0cîÖÐа·¡$”O~ªciK7 P„�5KõY¿VþpæìãÆ;[Ý‹ôšŒS’á4”·ïÖ¶o§ßqB±z»1FÝ„Éúžíõ}‰ïQ]©\PL«;òf?q8/�ßXÁ¸á3GM¼â©Þ³2¦Àò# Â3?ïn»Ž|Üu¥]‹ïÙå®'¯ `*¨Kư\:iÛ�éªòÝI—ºßeQðý6—> �n¡ýðSKí¯-óR[ê·ºa0" à*¨ÿ¦oùo-I÷s W?œ;úêÐ畂뉞Kwm­ôø^Äcßaž¸ò×kêý¯ |ƒ•®‰}ˆ)’s=®Uت{Þ¦ÿXô\Þø½«3©œ1J˳–L¾¶íwZ¶î®·ÿ m×V ½Ï"nwǸɒÖõzýþ½t 46·+¸´µµ½Ô“×8pýªªª¬@*À,u';+µï®|<À ¤´xÕõĶÑ~s·e¦wû™õRæžµ·®nÕ£\Î_æ5ô›5«éÒ^¼òÐé é|õ!ÊŒ£|ÏÛOŒ‚®+î<ñžV0q¦ÞÿªCg”RÓ´3wô|o=+PGWþ ƒ{t[ãЩc>íùvˆ¾çåÕÁÖso+¡n·”ߌo·2°ù¤ûJ <ÐóSû{ž¿ÅJ«ÍIDAT›žjÒ~îßÓ÷+à>Ïóì¯9óþ2{丩k{íÐigo›òs±yæµ”ò®�!�Ù?�77‡Â®çW!ïUÿ>%ʽ9/뜑W¯sSÇž’òí: =`é€'wûÕbëåt�ÞPu–Àó)Pæz߯ÚPT[[»�~Ã!Êon‚¶ZÜ(Ó=f÷¿´ž¤òúV¦¼©Þ²¹ê-‡u—·Fê©‚Ï÷zïÓZ=¨÷OVpÃu¢(ùµ>h}H &O/\¸°Ç�ÿªg¸Î"=.·¯TH[ßñ)¥©ËŸGèÏõ­çæé}·ë}÷i?÷³´�Ü]‚ÇhûܘóAò™£ø67®¼»«e/﫼xø˜Bò…õ[©N¶‰HïyOõ¬§ %¡ãj¬•tøÃP\#¦»£ý^C±ôÑ9é8­ÏÖ9i¨õ"ºVÑ“8c±•ã¤t½^Ò‚ï«r¶(so©Bíæú¾ÍõT�­qsüô;f¸‰" ½JCCæZ¹ ÷ŽÊ« Âä´<×ÙÙ93Hã˜òáCúÜ‚óºòä]Ê�‡[̺~¶ÓoØ^ËÚI¯k›Ý°2s“t«7à,Æûéò–Ú^Á¿ÿ©¤åˆJ-ï¹í/ð½Ôü¼ŸzkÎÈ+#½“ª\ yèœ-¼|×N Õ²|¾ X»Ìóæ+¡\ày^G¾ëÝ\õÀyÏísI»U$÷º|׸½“~߇Æ$×ïoW`ú-K§^ž5|\E�[9lÒ9õ¾—ßYéà*B« ˆ*-^õS¹™³F\Up榩c/SCÏ׬`þ{3FN($†2¢ Ýf „¹×ª~ /Ë©Œñ’ÊϪŒáz¶WdCŒÊŒ›¨¬µ<-ô{×ð2%Cþ¿ªß<« ¯»V•Å]7åÈ5Žh Qþªý±²#…Ë‹óõÜ<í‡y ì¿«rò¼ršÈÖu´éÛ·ïæÚþ�éÏÍÖ4D¦žïÔï›íêÈ ½f@@e|wõpUÌ�<ñ[CQé<;J׳³•æGè\Sñó€êw~4ä‘ ø^†’|’@… WA,xœ[w»ª ºc € Ð4ẽjÔÙ·À·¹�ÇfŽœð e§Ü‚ï+¹a›³ú¾¡èWtwÛ»ù©NV|±Î*�òS›òS½%@Å·rè]\ïÁ@̹^&@¥ðíã€ç'c|LÐ{¨>þ=5Üht.:¥_×òu-îNû³´p�,UUUÕj€Nh›ëñ µNŸl1khh8\Û³… ÷ýÃ(Pcgn‚gÞ6žgR¾=0lÊØ_XÌvšrÆGµMŸµ |ÿ¥™Ã¯ªÄ[�@ùØMq†ÇUÇßÔPR ,x!›ÍžáûþFZ¾¡åU+3n_5$på¿Àíú•ò÷��Þ{“P]Ý8ïýÖöϳñÃ&�ý¯‚ð§Z �:öÏì È7ÿ?3F_9Ã@9«ˆ 3WQ›N§§(¾ð9C¬€Ÿ«åËË–-s±¡è©DƵm“-A¾—�lµuTôÖâM¹Y�êA=|íî Âß©ÀøÓÊ·_ÿnmÓW,„|>�ÐCMSÆNÔµgǽس̈́ÿeÓä1o+‘�ÝŠ iêØ‹S¾]g!(ø~µ€rçYR|áOŠ-œfˆÝÂ… ßSþ¢l6»±â)_ÔS�[B(ðîŸî³©È²(`x®òCŸ–––Ÿø¾iªìímtvvn½`Á‚ @yïå½oXpK•çÿ”Ëånlkk{Äým566n¬ÕX-îvþ �Q+Ý© Æ‘@ ›zÖQæ§þf!(ÈýOÏ÷“Kç˜=üš hÛiç×öË-=I×× t�ÞÐBÐg¼1sÔ„¢4 €ÒQ}ÙÕ“Ç[…R™å2~ϳ Q[[ÛØÞÞžµ2§†‘½U=WË1#å�éÊ{Z‚|�A}}ý°t:ý”{¬Lq·Z‰Žk•u½Où|µô]l¸ •2*¢¼wˆòÞÝ­Ç•/Õzšò/©qèíÅ‹¿½¦×ÕÕí¦ãf¤ŽÖÉ<Ê1å?®à{bZiÉ5lÒ9›[*7SEèžÞÖþ\ß÷þí§ìó¼Ù]æ¿=wøø×Öôê�§ŽÙÁÏÛÞzí(½÷(mK‹€ïùcfŽ˜0Ñ@YSðÝuTgL±„[ãú‚vYS¬åtÅZ.ÓïùCWW×¥ ,xÁÊÜ€6ìÛ·ïXý¦S»i´Ó÷þXyã{– ßKo€N„ª´Ùª“¦¾«ÌñeŽ?ëñ¾¡ÿþQƽH™ö î÷ 0~É€¹^æÊŸ³•ÿ¬4ÞÑâ‚ð Üî}÷Vúìßè¸ s\z‘aSÆ>¦ÕîV ¾ŸõÍ{Ûóüå=¡|³”ç{CTz¯·¨ùþÌ£& 3PözCð½ÛŹ·ÕÄÑÊD¿L&óæª±Å(îÓ2®¥¥å+ÿ±ûûè÷¯õXýÆ!V"ù|~„Òï!K‚ï%¦Œw“2Ýç×ò’t =¯õ3ZÜÙ;êõûXHÊ|ŸWæû³êžÌ4Ô˜ê 5OÇŶ:.Ú €uhš2æ$ϼßXêÊçwŸ3zâÊ^/ ¾»`õÌŽŽŽÜäVf´Ÿ~ªÕ·V÷ú]ÿÕj\ssó¯´^beN¿u?ý¦3[ú”‘¾c�ҬΆà{ )³¹žç¿³Ò{K­�›j�3 @ƒ ÊTUU=¨“dEõˆËår£[[['=Ô4eì_TxþŒUß·¯Ï5þr¡7ß\_Uý~ß¶¶¶—­L¸.úõëçì}Öö:ý67Dµëüáñ¯[™«¯¯ß,•J�£‡')Æá0Žï»QñÏã-aR†’Ps+­®¶è`½Ä¼#  4wvv ‡ÏYåø2�w@¡fŽÿY­î° á«2Gà”3q7K§Ó�×ÕÕíjeB�÷_Ø:ïŽ~[½–¯ëá3™Ì­ íŒ)óªÎÕ²‘þt�D‘Žq¯F˜[-�¾—FuUUÕíZG2!V!xoQ¦þ¥!´··Ï× _å§YVþ¾«–ÐßÌ9þ(ßüÛ¬Ìù¾ýM� Ì{ÊžâîŽý'œ>Ì®±±ñãZWÈ{ôûÒZŽI¥RS„Ÿ­å$+o‹—™ e=>Z±¦,¼… î'²“ Á÷ÐAq©’-úÞ“µZj@HóçÏK 9{ëá�V¦òùüOurÿ‰ÂÌ‘ŽÑê»V¦Ôxp×ÌQã‹:æ&@©)v‡ð_°är½Ýo²ôwÒòñßV¼ñûµµµƒ­Œ)Fs»bMtvvn£ ¼ë<¼ØÐ{ÿa Eð½ÈtÐb¬Åãeâ¿�…Ýãg¹ ÃÛV^ÎniiùŽ�#ÇÿÄMTª@öSVF|³«Ôxp¸T×C<•JýQ�éDv’P°üçZmiÑØP¿÷‡555ïés¯×²ƒ•± ¼  üi¹\nã|>ï&¢-(椴¸ÙŠ WK@À¯»{ —ŒZ|þ©L{°ÅÓ_yûg16.õÔ{:q£ÀûC@ �Ÿªòì znÙê^¨ÿsÃ#'2ðîÐó½„ú÷ïÿ‘¾}ûþFÇÚ!VÊly-ßV ñbJ¬®®n·t:}¾ò÷±¿·ur¾Hǵ@ íüð™›å»ÒßPÁìKº&´ù¾-RiÂÌ‘ã¿e Whll£ÕxÃr®³ â‡µŠÅD�ð_¨\xž•Þb˜Îår—´µµ½denàÀ�ë×ÔÔœ®´<]n°òyý¾]´{;$Á÷444’J¥~¬‡»XDt0ý['“¯*³Í4 F ØP�L')O¦â^VZOjq3fß`ÄhèÌóxmÇ[ÞŽTImTI‡¤ñíßËÿrQïê÷˜P’;/@20ìÌj=§e?Å Þ´(N²AŸ>}TypG‹�â3¾¾ÛÝà†¤yÀÊ_µb«ŸUlõl=¨ß´½%Á÷)£ªÌ¼–#lÅ-(A¸–�+£Ýf@¸[œtŽß_ C£•ÏGjjÓç?¦åoúŽ¿¨%÷¿@ �:v?ÅG{¾ézhûXÔ|ßõfRy0uËŒQã7Ð+Ñó}�Üò¶´´Ì±d2™AZýc]ã—›â'Ok¹Jép�U×tÑ¢EïX‚|O†~ Äﯛ}tì¡qÄZ^û¼^3Kë»—.]zïâÅ‹ šýˆS]]]ƒòù^ZöÖŸW^Þ@ù=£ÇnéQ�@½ç½gŽÖ·-[¶ìn�dçedóI'ömH×~ÂÏÛÞ¾ÙžyU©<£k[¦§CÕèµïè=sõè~?ŸúǬÑãc©H€d¡çûš©üÔ¦ÕÁÍÍÍÓ-5Ú?7k}¤ÅLi‘ÕòËŽŽŽ I^—;‚ï U/:T«W ²Ÿžz̧µ� EIDATM'‡7 ¨`ÝCÖ¸¼_¯éÿ Æçr¹·ÚÛÛŸ7*Ü6“¾>¸Ê–Ô×xÕ –Î XõÿºütskUê…7öºb‰|Á÷uZ¦øÂgZ[[ï´˜h]­Õé–Š¿tju«b0—(Mf"Gð¨ß×Í_጖––k-& ßô<ïgZ›Uš¸;®lnnþ«Ö]†H¤ @Ùëß¿ÿ'´:İFÞ ‡+­ú.Y²äA‹ÁÒ¥KîׯßÓzxŒ¶%e  íØD˧µ]'õíÛ·�–9ÚÎ¥†P±s „.hll¼ÑbŠ�677ߪ`÷Az¸ØÄáS©ÔÏÒéô[™Læ—µµµÛ#ø 7:NæjÝÏb�ÍfÌår{éá{–<ýˆ?µ¦¦æY¥Ñ} ‡C˜Œà;€^Iæý\~¤¶¶v°Å µµuf>ŸßÍ÷ýW-¡”F¤R©»ŸÕr¦ÅÔXQ޾èµ\V]]ýDCC惖––×:;;]~†%Û6Z&ª±Â Is©–�ÖŠà;€^MøÍR©ÔõõõMƒöööùÍÍÍ{)ÿ€%œÒª^Ë×õð¿ ÀÿU�à «EðÌÖK§Ó�466îgñX¢¼›„õ�V€Okù”-¦*ÍžÔr‚ž®1¼/mÊ^ÿþý?¡Õ!†0ª}ß?®_¿~s—,Y2×JÏ×÷Þ¦}ÙG�Ë©GùG´­í>Ui7 ªªê鎎ŽÅÖË|*Á÷hxžçF 9¶oß¾Kåa‹�ðêûçéáaÚÏÊÇ@mî¨t:}¶‚ð[iy^¿å=ë¥vVáÞ©Têç���W[LZZZ®ÍçóGéá2+?}”„_Òòt&“™¢t<Úza,šà;P|CÔNWðxš–ƒ,­­­w*¿¿ïû ¬L)?B«Û”†/744|cðàÁµÖK|*C9 OR6<Þ[«»8þ‚Å ¥¥eZggçîzøŽ•1¥ãf©Tê5$¼¥´œPWW·…U8‚ï° §8þ£‚ÆX ÚÛÛŸ×j7-ÏYù¨´<+�N¿˜ÉdþÑØØ¸¿U(‚ïÐ ÿ,®qà³Ù웾ï\Ë£V¼ÓÃû„Ÿ£å+zÜ×*Áw 20æ{i¸qàÿb1hnn^ e/àÿjDAøµüJéú†7~f‚à;Pó½D(þŒ‚Ä“õp Å@øO+½U¥k£~×`«ß p#3™Ìôl`1Pþd­¾cD�÷ÿêw�m‚à;à†KéÓ§Ïuuu[X ²ÙìOóùüq Zç¬Ìé7è§ä?¥‡‹­B|€€€ß$�N?®ü®ƒ–––›´ Yù­/jmm�a„à;„ àw¦ªªjZ&“9Øb�ÍfÌårn"Öf+OO577_d†à;„×WË] _°´¶¶ÎT~wà_µò²HÛ톛ñ­Â|€xž—’?f2™ïY ÚÚÚ^îììÜMø²¾EÛz¶^± Dð"¤ üE ÀÿÊbÐÞÞ>¿¹¹yoµï·„Ó6Þ¢mý�U(‚ï1à¿¢üÝzXc¥·XAíƒ]pÛJÛ6]ÛxœU0‚ïP À¢üd-ƒ¬ôò nFëK,aܸôù|þ=ì´ FðŠDø=µ<6`À€ ,Ùlö› tŸ®€w"&4Õf´är¹ýZÅ*Áw(®mûôéóDmmí6ƒ–––k€?J—YŒxïpw´µµ½d½Áw(2�7©®®~,“Éìa1hmm½SÁïQzØn1p=Íf³ÿ¶^‚à;”€‚ÏuZÜð[ š››§+î‚ÿïXé�§ÀûíÖ‹|€Òé£ü= ÀÅb ü\àw×òŒ•ˆ¾ëJ}ïåÖË|€SþW ÀÿÐb @øZí¡ ø£VdúŽêûε^ˆà;Ä@øï766ÞèZ‰) ¾@Ë(Çï±"ðWøŠ¾ãB륾@|ŽËd2wiÝÇJ¯CÁñÃ$¿Þ"¤ÏëRÃÂ1úì_[/Fðb¤@õ!���Ó„d¥ç+H~²Öß³h,Ñrh6›ý›õrß ~»)ÿ˜‚ð[ ,ÿq>Ÿ?Î÷ýœ×®e¤‚ù÷¾Â7”»mµ<ÑÐа“Å ¥¥å&ß?©‡‹­pó¼ßKAüÇ Ë|*CÉ'íDQl˜J¥Éd2{X €¿§««k„‚ðÍ=}�^ûØÒ¥K›ôÞ9†÷|€d©õŸ?B�÷#õ÷bÃ:|*ƒg¨hžç¬üÃuuu ƒ–––¿zŒà;” à‡UUU=ÞÐа©!Ѿ@yÙ2•J=‘Édv0$Áw(?ëyž7½¾¾~„!‘¾@yªM¥Rd2™O‡à;”)ÏóªµÜÒÐÐpš!Q¾@™K¥R×d2™_ƒà;TÏóÎSþf=¬2ÄŽà;Tà�mll|@ûbEð*ËÈL&óHmmí`Cl¾•Á7 ›çyÙt:½£!6ŒýTÏЫù¾ÿ¦V¿Íçó¿nmm}Õ+‚ïP¦poñ<ïï ¸ßÒÒÒòCb|€òò”‚íw+è~Wssó¿õwÞ�8߀ÊÀ˜ïÊ÷ýZ= å®e˖ݵhÑ¢y†Ä#øTÆ|¯ ¶ûžç¹Þí÷êÏ{[ZZÑ:g(+ß &г»!cžS°ý?züÜÿ“J¥þ“ÍfÊÁw 20ìLò=«å9-Ï(Ðþ¢[777ÏÐz±¡â|€�ºÇe£{y½{ySË«]]]ÿ]°`Á‹†^…à;PSø‡†¢Qú.ö python-django-debug-toolbar-8.0.0/docs/_static/brand/Wordmark-Inline-Coloured-Light.png000066400000000000000000000747171524561404200310420ustar00rootroot00000000000000‰PNG  IHDRß,2ßÊmIDATxœìÝœ\UÙÇñçÎ&ôÞD@D¤HIviJK£ƒH‘b¡ˆŠJÉPD¬/¢"R(Š¢("" H7Ù$)’„PE¤ Ò{ß�ûþŸÌcH™¹çÎ-³¿ïçóän’Ù)wn9÷9ç>§b U©"ù@ÊH¾�2’奈ä;)#ù@ÊH¾�2’奈ä;)#ù@ÊH¾�2’奈ä;)#ù@ÊH¾�2’奈ä;)#ù@ÊH¾�2’奈ä;)#ù@ÊH¾�2’奈ä;)#ù@ÊH¾�2’奈ä;)`J/Žãn-ÆÒòf=Þ˜åçYÿ>§åóŠÇ�{DQô¤¡ß"ùï·p=–±„Ô!â‹GêñÅ}Šû=”˜ÿ—¡­‘|€ÖY­ÃgýG%æß²Z"~ªâ%äo5´ ’ï@{ˆ e²�¢«_ð¨�”÷dü튛!_^$ß 8:ëq ÿE ùG´˜ oµdüc†R 7 hJÒŽÒb´¡ÝyÝø+êq«’ñUC!U @;ˆ ýÁ:Šo)nR<§N—ß*v5Éw =På¢ÿYZ±¯â2%àŸQœ XÝP$ß ü–W¥xH ø{+rÄ«Ð>üˆ­Š¿(Þ5ä‚‘ïÐ^.VlEÑk†Ü�|€öq’’î{+z ¹¢ì ”_¬8DI÷³ …@òÊím…�v¿ÂP$ß ¼^Vì Äû­†B!ùåô„bk%Þ4Éw(ŸÔxÚPH”É-Š�“x/6’ïP—+†+ñþŠ¡ÐH¾@9ŒSÒ}7Å;–±8Ž—TlihÉw(¶XñM%Ý»-Jº¯¬Åßãõó7 !ùÅõ®bo%ÞO¶(Ù¾®w(ÖV Pœ¬»\±ˆažH¾@1½ªØF‰÷K,J°oªÅ­Šgû¯]SôÿkæŠä;Ï›*ñ>Ñr Äº'Ø'(ŸËCÖ´ZþS†9"ùÅò€bc%Þïµ(¡~�—)œÏCU\¡ÇŸ¦`ø$߀öÚÁÍVñþoË�’è?Õâ,EÔᮏQ¿»¸á=$߀öÐL²Åt¹b„ï/YÆ”8¯(Î×�G[2C7é9–1Ì@òòw®’î»)Þ±Œ)a¾°×*ö±0ƒÓó­b ù9ûŽ’î_¶(Q¾´ÕJÝlcéXCq›žwmëçH¾@>úû(ñþSË�ä«jq»¢ËÒõAÅ­zþ´Ÿ·TH¾@öÞPl¯Äû–%Æ×ÕâÅG­5–RLÖë ·~Šä;dë9Å–J¼ßh9PB|„S,o­µ¨b¼^ogë‡H¾@vþ©ØH‰÷»,J„ïiµÉU³ì\¤×ÝÀú’ï� /ó²‰ï�Y”?H‹‹-[ +®«×˜ï7H¾@ë]mµR3/Z”ø>I‹³,?Ë)nÔûXÊú ’ïÐZç*>©ÄûÛ–1%»(.Ò�GZþÖP\­÷“õÈû\�|€Ö9FI÷/+b˘’Ü^îåÅ^V›*þ`ýÉwH_U±�’î?´(ñîe^nV ³âÙ]ïïTks$ß }»(ñ~�å@‰m/ïr§¢ËŠë½Ï¯X#ùéyA±±ïWY”ÐîÔâoŠU­øÆéý¹ƒ ÉwHÇ£ŠM”x¿Ór DöÖV+5³Œ•ÊKõ¾±6DòÂM±Úˆ÷‡-J`ï©ÅµŠ²%²?¢8ÇÚÉwsƒbs%ÞŸ³(ñþ--.RtX9}^Ÿa?k3$ß ¹ß)¶WâýMË�’Ögjq¼"²r;KŸe5k#$ß ™Ÿ(龯¢jS¢z€â2ýx°µ‡E­Vÿ} µ ’ïÐO¶II÷ïY” ^Ìj¥nvµö²�âdk Ш·»+ñ~�å@‰÷hq£b=k/ï(.TüÂÚÉwhÌËŠ­•x¿Ór ÄûêZô(V±öñŒâ,Ÿ¼&¬m’ï0OX-ñþ å@‰÷�´¸N±Œµ‡)ŠÓ¿×:}ÇÚÉw˜·{¬–xÚr ÄûZüI±�•›×Ê¿\1Zë²ÇÚÉw˜»?+öQ²øUË�ïhñ++·×ç(NÓz|Üú ’ï0gg)Y|ˆåD‰÷ïiñ#+¯‡cçj=¾ný Éwø_±âÛJŸ`9Qâý—Z|ÉÊéF«Õs¿Jë0¶~Šä;üWŸâ³J_b9PÒ}-.Rìjåò–â|ÅÉZwH¾@ÝŠ]”<¾Ñr ÄûZ\£ØÌÊãIÅ™V+Ñó‚á=$ßÀìYŶJ Oµ(ñþ-zk[9ÜnµÒ2i�õÞ‡ä;€þîQÅP%‘³(ñ¾–Õ꤯bÅæIöK§k]Ýb˜'’ïú³)Vñþœå@‰÷M­VjfI+./'sŽbŒÖÓ“††�|Ð_Ý`µïoZ”xßA‹Ë Z1ݧ­8Oëè-CSH¾è�~§Ø_Iåªå@‰÷/jñ EÅŠ%¶ÚHüÑZ7×+Ú ­v¼Ëûæ˜xÿ¡çZ±ò³¯+ÎR¬­õ²‰÷pŒ|Ð_ø¨îC”X>Ûr ¤{¤ÅoûXqø$³ã?ÓzyÅ�’ïúƒ·{+Á|…å@‰w¯ëþ'ÅŽV 7)NWüIë¤Ï�ºÜ’ïÚØ|öÞ ,�jãú—Ú I£6ê°êâ–§¾Ž×_Š_¾û‘¿f2š’éœ|èzQ-oMz§·úĽ#Î|ÈdF׃µXÆð˜®g6ôÚö7×bkÞ=ÚVžmôÁz��i±¢5ï)½ÎÅóªb;£nµ踺„7*6¶|½«øƒâD­‹» -•çÈ÷AŠñVÚøývŠ;Óê1Y߃(�J5þ¹þÜÐòŶT´„uöt{Cfš’¹:·DwM>úzC±õUŽÕwõikÒÀJ4F‹Ã @–NRlg8Aq´¡?ñ“+XóöTü±‰ÇG±Ÿ5ï—Š ŠåiÅ6Ê÷M·(÷¸Š~=ø1ËÏ‹V+-3Nëá+9­Sï ^CŸe²egj¼çiD=fÐx——(~«/ñq+(½ÏÕµØC±•ÕvàÕ¬V§ÉGL°Úm#÷ s‘EÞÑiê¯ëé³zY�‹¬Ät ¿�âk Ÿ<ÕKíjÍk´4wæòL¾·Óˆ>¯=t“âÖZû[:ö5hW¥ùþ_‘E¨á®Áº?e€ùÙU—ƒXAé½=«ÅA–œÿþÿ)VÒs}Iq¯•˜ò¨+*Ž×�ÿQœ­XÇ’ÛÝ Š²3éñ‚ÿÓµÑlb­3ÂÒá3/cІb‹Ûæü¢n„E+QtEׄî 0'>š|c%£¯²‚Ó{¼X‹‰Öœ;ûY­žû±Š4FÏçF9É.ÅïõããŠo)Ò˜÷li=ç¶V@Ô“M×rŠ¿êËÞØR¦ç\ÁÒõ”C}³«§û<ÌÊ'ÝD é;­<|ô{ß|ãÿ‰bˆ>›w,œ¯x×JJyÍŠÏ*nÑ_ïR|V1ÀÒµ§#ßÓ·˜b¼6¦Í,]–®4z• xâö(;ó~Ñþ$àà=S­–xØJDï÷>-ΚËû„©'+VÕãöRL¶S~t)ÅÑúñ …�vßÔZçÓV@y&ßË=!Þ¼yþú4GÀkg{ÊÒ]gÿ6hCJ½·Ã„Þs¡ü„Qçôo=Š-ëuÔËèûŠgùûŠCÐgú¦âI+1åD×TxwÏ?þTÑêy2—sV•IDATÝr­¨FŠ‘ï­³¨âj}é+[zn³tøÎý€6Çm^R-²•€?ÊàýÚx0Ò{.Prz¸â5+)½÷—´ø®âÅÎúûÇg*Þ´St'Å5úñAÅ׋X¶¶±‚!ùÞZ^ÞGÀ/n鏨ÒñíÌýá`  _jŸ Wç&Žâã;{º yK€\µûüާ(§µ�µ}޳Û–a¢ØyQÞs!ÅA /§ãŸe{ËÏV0i¶oFh •¿[­R^f#ËÆ:V› !� ïLÅ7´ä¼í¼OÛÓQßo‰x­ùXÇühyk±H¯¥†Íï�µÉ´c¦ôO^çuAk­k[r>ù[«G啪Î-V¢úlC!èšt%-S|E±´Ãz_‹h;yà "Ïä{¨¯iEÞaôe¬«Å&н[+²ÖØN¯õ ½ßS,€ßz¢çù²~ü‹%w„žçi¼�RÚ×N6ö `ý[û@ÇÛÕN‹£�-ŠwV¢ü#Ö:–/¤tÿ¥«Ü|D盟Vê[ [^‚Kmï/jq®%w Þç ;í:ÇâçtN½Ð�;µ�¶ÐâÅV<žëaµø…Pæ[Q‚&ÚiïUœ§ðÚJ ëŸvU\m­q²6Î -�Þ§¿¿X2gë÷f€¹ˆ‚Ï-Ó7ýôÔac¯›:|Ì(-WWB½ØâÔByÞÒ·ærïô�1¨i·2œ^õb‰÷|)§9@ñ9Åßô×ÉVÌÄûLC­@Ê\ó=õž<íÈW(vÒ�›*²ô¥r Ð{ü‘^ë·ÑìÏ)ö×ïl€LÝ5tì½JÂݱØÛ«* Ÿ~hdvN:lg€öò¬bSå³&r¡dûRŠoëÇG(>nÅ·™H¿ù>7Ú©½g�"íÑ„kjƒM%®÷ø'…× ô™ƒ¯U¼5ÛC¼�Ï.ìõ°–WüÖ ˆ¢bŽô¸s㟿¡$üAJÀoïµå-M}Õ“ ÚÇ?{Õ C政\[áƒÇžT§XÙÊcc©o‘gò=ôµ[š\ÑÎý–Â' ØFñ’¥ç{–"½ÇŸ+v¨—ÍñºÂ›ûR÷Évd" ýOTèÛ,½$MW>¦ÆÀŸ-%:Ö¬«§{€òó97ÑuÎc†Ìè5R줸N½_ñUÅÂV>þž7°‚`äû|hG¿Q ¯Õþ ¥c%mć[ è½>¢¸Å—hžЖ�)#NIIø]õzé�X�í‹÷ê0(/ŸëpKå¶^4dB—Á +Ñ�÷Ym¢Òm­ü Sz†ä{´ÃÿK‹-�[:¾m€Â‰S˜pµa‘ÅS†�=J?�liˆ¢5:{>øyПewM“¾s}.FÅÛ†–SÂÝûõ¨—E=C±¶µ�M¬ Ê<áj¦´ãû$Û[­–z¨|†`¤Îo•³™2tÌQ±Å×Z*fŒVЕêzh?Rî툖Ó5óæŠ‹ô£—õù†bqk?ZA0ò½ :øí_°t|ÕÅÅÙ�‰,~·Ú·§Îj�X �§6<~ÔúåPU|I×2?0´Œ’íû(nÓ_oRì¥hç²¥+ʤ«y¾‰RöÄé`pq}¶ß¯Y˜ázžU™<NÛÂZV»%f {ÿ¾áÉ@Ÿå{š¶—iÖôyÓâŠf‰å­vg‰ßîôÅ3þsý®“~GëèCZ,§XÖjëÆ—K)^U<§ðõòBýçç´ž^3Ô{ÂÕ9¹wÄ™¯­?ñ°]ÄÕ;ôþZ}zïÜe0x|÷*ëX®Zé]F_ÊòQ¬í8ª,­NŽ×ãjô¼UªÚÏ£«QÇsïD <ûÀ–'¾j¹KVz(Jø{]ã_ªÏzW´JÇ ‹WÔÓ¬ £þRêÒú©<õÅOÛ€¾g¢Þ�Ïø\†¶³î¤Q«Vz«+ttزڎ>hÕh? hg~ÆâèÉ8ª>W鈟¾kËqO�µ1|t›·-¼�±´ÕÚaÞÎðö™·-ž·ÿ¶3žUãßÖ¦êmR_¾>f]¾Žü˜û\=|�x{+­2¤e‘é }Kj±¢Õ¾‡™KoÿÎØ­v�à×ÏP ºÿò<ŠµÚ¶áûê¾Ô6ñSCyy™Ýôý]ch í3Ëhq°Âï’^Éúpî“®Þn9Ë3ùz"¯Z~ŽTìmµZˆCß²&ÕµIv˜—u@»Ër¢÷ý-V·ZÒufRqføÁ Ïj Û™�þ™ Æ'õ¾o²Œéýzco]kÞ[z¿·Îç¹ýy½—q ÅÇKZcïÉþþ]q¥^ç2+ ½÷´ØÅjå›Voâ÷<w½â ÅŸô™_iàw¼±þ1k^UÏ?Ñ2V¿ðóu3B1L±¦5IÏáÆãWô×N‹pQnõ§=­kB÷éÊâ~Ó(ɽŸå”|<±{ÏJÕ¶Ò›ÐvÕ�ŸUµz*ï½¹â¨ÖE×þ½#®ÚÂö–uõt?«/à¯:Ôõt ˆ/o×dcgO÷§õñwÕgÕqQI×ë§¾éÕ«&ÕÖO\k2V;´¬ZׄQÏÅQ|­rÙ´¡c/±Œ¬6þ€…–°Ø¦–À”!ã&XFO>líJÜ÷Ak’¶Æï2vªe¤kÂaêl�w×·»�¾ç�f´h+•ÿ¶Œ£÷þ˜qHŠüö˜¾HûÇ(ß&nˆ-þK_T½dú°3ç›<õÈE+¯¼•¨Þå;½Õ;¼cÐPzj#¬lµvÆp«µ5–oò÷}q¯ÕÚãÕÆÈìø“6}¿™u]4ų¯‹=Vkwy›ë CbZ§»j±³Í8'Ú*Müž_3zپ˭ö=¤Q6sõëBtãÛæÌN ™×Êþ³o_3¯‘Ÿ›%ÉãÚ^ï׋5ü=ÍÂ;òî±&éõ|�l­ØÜjI´A6—kg=v,’JçeÅóËŸ í^¿Ýó—û*²þ©Ëúyò=´äMn#ý€®�øtýøC óIK�|·Z=¦$ek<�½¥eDëÈ_Ë­[Ymƒ_ÄÒs½¥…'E= ûÇú$¸­æ'ù ¬y~7Ççôú_ÔâpÅ`Knƒz|YÏçÞg+ÎÐ:yÙ Hïñ³ZcÉ'îðÑ Ÿ®ÇÙz¾ µÊÇîÓ9aÔ¿­?uèØqÖb‹-°øÊÖ�·6˜¢Ä~¢ïnàm�)†ÒR[`c-¾nµ¡×}ëÖã=¯'þÎRŒ-Kg¿Þ³'ì|]ø¼[ Z˜µëá×c/é¹®åh­ îNi�Oð§E·Â¯�>`Éøà­ÏÕãi=ç Zž]ä$¼ÞãÂV»6öŽ¿Vî²z>ý£â:« RzÎZϯ]º­yTìÙÈë^îׯé’(Ä«O(¶é—׫-¦}Ès�žwÚÆ’{KMž5ßCG®ç9òÝ�Q„öª®WïÉmú<Ë)~ ðÆç$Å÷¬ÖK�8ñ^ç½tÛ)NR<¬ç¿Wqd}Äpáé}n¯ðO§¹óû(‰Ÿ(žÒóŸ¦Mà¦ÆG±(¦ëÇß[z3fûvp€bªžû7õÒ,s’ôØöŽeÀ”ŠßY­œ�_¦ý½ùzò„þýz�+‰F¬–V4z½ÏrôàˆSü¢é ¤Fì0k1%ø?Ò5aÔ9+Õ÷]½è²–ªhàŒD³EW’ñ¯ƒ&ugÔxL6ao<—ß4éà¥õþOíˆ;þa>ò$ª%ÞC©ƒbeõ3�UÅcŠ/Y¼W;×k,µA=#i_¹ÎâÊd}o#,%z®�£¸r�¾ÿÉLêîœÓcâJµ¬®!@½Ý9Áj#½<1™ö€+?Ž}_ñ¸—ã¬ßÝZHzoÃ^ÊÀK7`á‰÷ÙyÙ‹£�êuΫ�2l'©CüZEq¼~|Hq´%O¼ÏΟçTÅ?õü¥ÆïLz?k*ΰڈõ+#-0ñ^ç#ã=¡í@Ïê5nRìg­Õ²¤®Þû�õZÔ>BÞ÷+ïÉýüïßñÆ$ÞÓã�{ŠCZí8Câ½f=+€<“ïežìÕ^ð.µ‹°¼i'ÿ?«•‰ñ;š¾í»IëX-ÿ¤^÷ÛVP^·Pñ+ýè�þÕ¬u|…÷lzƒs/Ë‘^5…w¼xIœVè¼1á ËÇôZ?VÌ~ UÒιä£�à£|~«¶76>oÙLnâ½Þ·èuolà Â9‹âÄ�Í(Žso¨öYå ·nï»—W2ùÜŠUÖžx`ÔâýÆy²£]ß5¡ûöZÉŽ–¾Zj5ß;'Œ<¢£oàÃzÿG¨Ý�vÂgæë~HñËΞÞ3xÒaŸ0†×ó×¾ò›«LÓµ­µˆ¾ÿ-âj4¥«§û¼Á7´Âÿü_µR†‘oH‰ÎóWÜaµvgË;a­–ÈöÑß>0æ\EÊ�°Éé½ VL¶Zi˜í­õ<Ù»¿Õ>\X/�ØR;†h�xÂùa«Ýù½°µ†_ƒú]÷éõ†XÎêÓüZГa^k9t@Úüø 7 ä×H{[k¤Ý!£æw¼¿âQ« @iq;p‹bSµ�Ÿ6󉊓õ£€õ;b›.aÛæ ‘É3Þ#q~cá†[ÉyÃFá#x�±ìyI’ãôúw) Ñ£5“ÞÏP-|ä÷–‰tQ½,RæôºÞ¨¼Ï2,od>âÖì½öúV`z^ÇÛGùìaùð[\ï¯�6jkQ '\�Õôa§ß§ &¨þ´ú>±Æ?ºSOö*‘øU%ùÔþ¢å!Š6Ö‡»­³gÔÏÖž|ÔâVPJº®¦uuwUNõ2@–}'kWªñ­]»bÈ�—~²Jß=ú^Z=qÑþQïiø¤¡_©�&þ™~ü›b#ˇŸþQ/±˜½þ¢ O>øyt ËÇgúDƒ'Tø|Uc­VÇ< ^—|b=!• Åmµ¶ÿ–=¿;øz—*Bç©›]š2Zm>³ó«úŸ£a8µùÃy™çúÀ>¯°à¥©3¹æ(!ÙòÁbóSæÑç¹–põ‰Ck�g1*¥e´ûŒâ¾ž@³Eü¶½éÞknéIÚ°ˆë£Ï}"¦$“Ѥá0½‡ë²*ËS±à�&±›ÇDÞX»¹Þáá SvƼõçáG8IDAT[¿O´Ö�òiÆ·ô~¦Í£dOéÅ'¾(ˆ£ÜKšÍ Ïpž…ˆlÀ"OE©u‚­;þ�źzº/W"ñgY%“çE½+_]¸ï­;�™dbåù+;3£üG¥ï6­«|:ãè;]ºÿ²ÊÍGáxÓ/ ž8êÀÈ*×kK]É2¦�pq�’¯PçÏŒ(egÚŸÎç~ôÚüIæƒJ›'ù|üåŠV�ð}Ÿ¸6¤—Ú)BÒÛ;ˆÇé=]_¤²� Cêµ»½ŒÈ–�ox;<Ëï@¯¥ãpüg«�â^Òòµ»Â˵nnSÏ#Ü©è4ôg)‡¶›"“R¯íHûÍ@žõ»Ü¼Ú€ì£ôäüå>P³ÌÉ÷¢¼÷«-̺Eè…iV=Ùê:mÅr^}”A’66}Í‹,~‹{�ÖG‰²«¬v«mžü"Ç?ï®–¼ã$Õ}Ñoy¶ÚÝEëdóú‰ÞYµ•µ¡°‘ïÅ5èø‹ÒA:�Z¢žx_c�hÀÝzÆ]¬XÖ¬DÑ]�=ÝŸ¶T%/;3h¡›Uû¢›|âXËSí¸Ü;}7{ÙC¦÷Œúq%¶s¢Û©þÚ:’�«}ã{”�io:�ûE·�-ZÍu?_øü<™ ÎÑkílµÑîëX±xÍÝéõ$t¿¢Ïì ÷[-¿ÁH3y;ÜK0¦U_~®¼ä¨ÕJílÅá%�¼(­Òt¡2 )|¢ð¢åÐ:Þ9ZI÷C ‰hŸYFáó)zy¦ßZ~w¹•Uî¥gÊ\v¦(µpe¬Éä;ü>VLçÔ°¡J=/A�ßÊw¾µ�ÖµÏ}°£‡×šßÝr¦õâ£8&(2ùØ ô½Ïö›ˆ%¨n{\ˆsË´-G{)¥ÿX�h- Ô9éеF&댽š�ñ )U~QgÏÈÏXÎb‹7¬Xå:%=µ"ˆ¬+®T¯Ù莯f>ú´¿RâýÈJ­Z!¨CèG•(þ‘¡-éáÇ=oƒåqÇa#f–ýhyÇ€^c7-þd­¯§�”ßmØSÒ|Ò;ý³úurQJÄùû¹¦•#à}Ä»Õ>s“b¾oÜP¿;$7õ»²½sb;C«©óý j³Ÿ`HDû�wT=¯ð6]«çVlWyWê(ur±HÉ÷Ð2¥šQ;¿—Ï(jâ}¦_§0ÑQ!ÊO¤à“Z[ èy½ÌL«&ó ‘ëhŸðÌj·�¥]c1m^ÜGÂì`¨‹ ÔP�n°‘…M°ë%]¢¾ÊÍJ&·|¤X�(ꈬráà ÝŸ³)Ñ9D™”új”z¡>Ñûú‚—Z®s¨ý*µ‰à‹%Šv3´�·ÐâB+þ­æ++nÕûmÙ@£z'„'ÞX±ù¼L7ÕïŠ,“¤ù‚ͬxõ‡ýŽÀË­uü¹7´âò6Ê.é5²wN\¯ØÔ�…"ÜÍû†bµ�kÁ�¬áò¾‹ WCé@ò¢�X˜Ò$ßÕ`ÜI‹oZñùê4 Ó#ßg:EßÝÊ–¢zB¿Ýn ®?W¿Àô[) ;äüIï{3kmr~±;,@'?· ß½JG%ºQo"«‰Ñ‚é€ýÛ® ‡mkÁâ¶Ø~fR§ÀöJ Ÿjh™õÇ�Ü8Šâ_��¯}BÝ2mo+(nôI7-ezN?æ·ôÏ”ùõÉõYÜ €¹®õÿkK™žÓ;_GXñm¢÷z¸…Iz�ì£ÝI¼÷Ï*6W¾ìFC¨[ ¡r¯FÀÈ÷t“¾Ó±«Ü|Dj‰/Ô,\yçÇZ¹ËÐbjÃyO™ÏÓ^sû'–­ ?Æ—i@Ðì|ä{èºs’¶£´®kaåâ?‡ÐS¬–xÌ� ­K¯÷þˆ!D¿N¾‡Ž,ë³âø‡…)üȇzÉ’´ê¼{rù…�8ØD±r4 ýÝ{â½f÷ñV;x‡Ø.`r£Ví¯(ÎSø­²>:U±žÂ믯ðä­_Tl­øUýñiù¾Òú¡Ï1Òú±8Š sÇ‹Oºj�â8jê²kÂa~L.{9©5;'­øÃl¢å—}·�õ’¢A=#iñU²á­å:Yb ¯�Xõm«%óËì‹ZC yñy™Žµ@úwÑ"­;Gï·Z§ÌV«O¿ül×È«)ü.6¿ûø_æPÒçóUy©™ç i£ôL˜Üç0Ë3ùúÚEµ:Ry+¾/Y¸'Ÿñä²â«Šsw(žœõAúû Š«ßVl ò˜lÉíiÅá·Ç~XŸëÅ Ñ\}þ*|½{é‡ÿS¼já|òÕÐ;-Zq7�Oþã‰k/ñaÅbõFæªVûþw·Z‡ÅÖZ!eg~fézØjÚ~+«_`®0Kç”—ªÚ\á3Ÿßeé:NÛÈòVbqm=%®^|ü¬…ˆâ¦&ý�->×Òõ”žõ7qdW«ñfÑ€¾Õ¦ õ.­¨×ÚÐâªOØò:Н+.õr³'0õ÷G)UøzòÄÿÖÌ2úìÛÚYÖe£ír[Å›†V¸ÓÂ«ËæZRµl5òfU¤š¬Ï[˜¦’#9 M`߬إ~ËLSô;>ú}ˆv~€5oWK6²!í°ßÐgizÒ;ýÎëZ«Ïï£.Slaa>oµ‹©¦é=t[º“U|Cq¶>ã“êú÷ǵððmÀ?ûz>*÷d«Õ±/½§ïXzå£nWŒÔg¿mNÿé�SZ¼Pÿ«7ÖO¨_”�Qloá¼F¸wöôËðq±Î-žˆ{^—Ÿ‰;C”ÔnøüÒ9a”:Em}KÇÄ8ª7uè¸kçôŸÓ7íå¶<<é~±ÿÛú=‡¯ÓaÕQºÚ>ÈR¿Ûᓟím¢„걯/`§<´éØ9&Õ§n~š'¹<¦)®R|UßË~‘Åcµó§r—ÜÀŽ>iú7 A�ïÞÔ'³µ”h_÷fu�>8â”9Ž»oèéêÈòÎ,›®¸^qÄà ÝŸªDž�*Ùü HâdKÏïߪ·±ÞGÿ>óøì%'øcÕÎnµ»VÓy¿¡žo_½NÒ‰RO°ôøqö0½—Îé?õïÞÉåqŸb¢â{õ êϰÚà�Pkú‡z�qÖ?§8QŸÿå9ýg}€–‡Ÿ=A°Ö×g­ÖæMk ˆßE‘¨Ý¡÷âmæ�,̯õ9¿h è÷þ¬÷àsMýÅ’]îfµ�aÍʺ­ìß¿·�^œ%¼MäÛ€—}[½ø_Y(:ÞNZ)øŽhÌýþ¤å$ÏÑ㡃"%HBo«)tÙ�Ôý¤RfÄ'ˆØ6Iâ}6žt}Úš·a½qÔ¬4OXû'I¼ÏÊG?(¶´Ú…BˆÏZri�T=Á¼¦¯“¹%ÞçF�÷NOÞlPŸ°è{–Žèó}|n‰÷¹ÑãTì V¤1ÚàP}®7bCjvhÂÕBoÛl¬ìÌjãXÈ¢8•‘„q\ýú”ac†Í-ñ>7Ó‡�~ßÔac¶Ju„¾…ð‘–‘íµþø‘[(±ú`oµºÉÔ¡cÿon‰÷¹™:|Ìo߉û>¦{µ¥¡²îÍG”ᎻB‹*©÷ŸòÑìS‡�íž[â}n¦ ûç×´u´¿$Mb¢ê¥I>eá×ÎsK¼Ï�‹bCýøcK‡O~¹ˆW+x~�—¦øîÜïs}3Qt¡ë(.·t|Më?éa#,Ì™Iï3é÷½M‘ô9†Y1ù¹ÐÛ¤^¢Õï†îTì¤ØGá�UßWŒR|®>Òú£õ;%¼|ëk†,ùuÓÁ$Þ3ñ !Ô –#&\MGhò½Rðï7³ä¼qµs³ Ö9©ßÂt�%³©5/­$\·Þ{jdù…‚…õ|n í­éšWú¿ƒ �ÉD/Ul¦Ï‘x2Iý®ßbéiO¶•dÂU¯�: ßïnØBŸ+(ù©ß÷[r}RÝÐŽ.×mÈ]dqØù¥54ò}ÉÊâŸ�, j�(øº'Χ4‰Ü”!ã&¼÷n¬' žp¶£nM‹S/#òrõÕÎé#ÆÝa Ý;âÌÿL>v§Z¹‘0:N,4°·÷ó†ÄÖ™x¸Ÿ CG;z§ÌÝï ìXÊðÑ×[BÞ™£šý¼´S\¸ÎC¤äëîÅ`íÿ[BúÝ·~׌— ìµ0«¨]ùk^wíø$]ú,A“dzÐjåPÞ¶0>ˆc?ë?n²Z’ôKÈt)|ÔvZ¥0¿`É|Â’»ÆËÇX ô<>ÿ\’­ë&ÌA´jDµï›G(>¤Ïôƒz‰Ö×ýe=öC–üØ·[ýú­çûy‘æ½,£~›|o§‘ïIv³hÅ2¡Ñaõù´45:bIn Mcÿ¸©E·’îoaû@’[å°pçh}ì¡>qè9¼´÷¾úñ,ˉ¬~ m8{¢|K}–TFòëyî¶ZgSè-U_Òç+LiŸfø–aIÅQ±ÊÎDQèù¥¡s‹ÖYhgË›qG´µ'Î-žl~káê¦Úƒ.¤Ô¡°Ïà›Ê­¡¥dè¥Sãe¶{dį߲L6öˆjlß±PÕèCb Ľ_­õ®mã¦w«}›ß»ùi/X ¦s¶ÞÓ¾qú%ó�£ú<=»Xoø]uOX ô<—Xm$~hÒ¹©òvZÞ™r÷¦óNÝ�7;Ú}nô<^ e« ¢Ñ_Âã«–2=§—#ú³¥£Ù W}¢¢¤ûÇL»×ç5HMý®‚,Œç…ª—Ý?ÅAç—¨�sË I£6Ò»,€‰»M2úo–¢û?qÆóïÆ}Ûè¹›*�ð>½ ìßÜ/¤ÖsûÔac÷°Ç„ŽýÓ†�ù©ÖIÐÏJoÔÕ3*ÉyæûU%¬ìE?ªÄûêdJµí7eؘ ¢8þ¾¡�x;2äzÍ'¨Ü¾^»<5õ¤sèD“[ª}¹v�ÿ’…ÍWæwán—V'ÄLz>q¼�…YOë"du+¥uN¼GëÊ·Å4­½GÏ7Z‹Ñæcõ’FÍJz pu½ž}š6²dšÙ[Á;ñ¼lÉ^iÜ)�LüG±©¾¯[ Y£ôL˜\“ïL¸šŽÅ,Lµà=¼I“ÐS-EõR)[[2Ikù…ðQÞ­œã\ž–L³5üC'•ó:£­¼¥Ö/NïW„Ö1nö‚ t–�î˜d-à#àµÏ|W?þÄ’óäûyÖŸDÅ*ÛŸ_ªóMîuôÅŸ Ä{¦’ÌI&ìš/?hR÷—:ª–¸,G¥¶71Y¡ßÑvsžö½·ª¡Ç‡¹°èÛ_ï{mÁô½}ØRßGÓžbhÊŒ’3q5ñ<8^¦jÕÏ¥�xŸiʰ±?íš8Ê;Ë71´ƒ¤í¼™¾ öÀSÖzÞóê¥cv´äüøÜhɽÐcê×õž[2jÐi]x‰É�¶®¯‹T;±S’F‰ï„N£VÿÜmµ»1>jÉù9±ÙÁ0I¯‘ÿn)Ò¶7Ô’'•š.Eš"¿îÚ¶U×BhI¾Ì'ŸN½ ó2t'’ ŸS,@žÉ÷v*;:ò=émb™ð M´eùózbIQË[ö~i-¤ïe¼[^S?IòeP“�ßÙÂxù¡Ð¹æÊGti]ø6:é\³#ßCîxDïûk!=ÿqõ 㤉¢�¼d³“aå/yò4²b•�Ñ™nÑ�³eµ¡[»£½,©8~¹¯£7­‰'çèî!coèìé¾JßÍ'-™MÖ�4jÕ{‡Œy¬±‡‡oúÊ~p÷�Ó¶¹s㟿1xâ¨/Wb»ÁÒ§ôã:É÷& ¬öíÖY�y÷ð3×:žÿÓk¯œÔ·oTíheç?2 ó¯O.¿†%÷§ JøD��(²dö´’ïZ«i2�ö­‹ ;†àet¼#b9KÆ“ïiÔ´/¢×Ë"¶„žûmm#ÞQrlõ6ƱÍü‚^7÷»ô¹}ß;×’ËãÙy‡Ìn$Þ[*íÚü¾í�rIa4¡>°“ö]IåYv&ôâ¶H ’†&´›‡B'ßó¦FÅ¢Š?XX¢3IÃ"dÿxPÇ,F¯\cÉ,¡uºT�aÉ=báIñFød¼¡#šù®õ7L‹fÖáì²êµ>ÎÂ$½Ûé:¿T¢xž ä &v¯«¦ùj–T�s÷�³^´Ö *¥1°7123­åýâKñ«c­Å¦ s£·[R‘maã�)ó�¹PÃ`+K*¶Þw¢JÈÝH ™:äŒÕH¾ÈPvI;gjy "µuŸ¶Úà˜¤«=õÁº.‚&´oD=!2Ï“OB2ÏVQ½itôÖK`Œ·ä6®'²KCï×`yÙ£�ÿI®‘ÓÈíïìjCYøw5œÄ;�\™G¾IÈ Ï…NÒÓ¶Ô¨ðz’>¹Üª&ÉLî!®´lÜaÉknúÅÎKó{�¾ƒe-¬®ùÉ>9ªµ˜¿†œª[žôªjÉy²òˆ'`ü¢geKfˆâRë7 Tv&>¦b=ϯfâxÞõ3« 9kmÝÛ5iäpk9¥´ûfÔ‹]Ï’ˆ£-õg«G=ÎtFZ¬ÎO5ŠO¬ÄÑÅ–H4°+zqƒ)! ü~H]3ŸHºÏèàòûû†žÞ’ ³«ZõÇVaÞŽr igܨãeЄÕMðÁ~÷aÒA+þ9ÿÐÀc’š®uñWˆ×÷ë–f卵ÉÛ\÷Z{9+­ Và%æ’òí×çÄš`WŸ|Ø'é=R±¸…YššÇñÒ¡uú‘¿³âÀ,®ç�vFò=!·„º´'\)-5&¼FéÌð #ÓªÕžd{ ™p5ÕZ~ó’4ñu{_�ÛÒÂüʲã�ƒ�ä{3KC,¹_©ó®e Þ)áIǦn¥�ÅV6QÔç—õo~þ#ú, ®ÎgB¯8Þ2ät¬5}®U³¹‰.ä[�š:Ž^\ 2 ´)ӆ޽¤k¨çô•9P‚ÖË8�|oÐú·ö�èí8qgtT©fÕdwwwׄî©Úq: e’pÎl[ó‰#ÕÎð;1w²d¼�1¿ä{H›kŒeDëâ%­‹Kôãç-_™}w M¸evNÔúÿ‹Ö¿'v“8ñsâ+¿ Üjïíãõð²qi�ÒÏ£Íüm}W©NF�–ù�¾«–ß9ôL¸šŽÐ‘ïýnÖb5"ü7¿UÎëYz#b£ú²HB2JwY6Bj 7:ÁΚ–Ü-YÎ\ﯥmë6K¾-53áê:–ÜDËVH=Åõ­‰ãâŒêèè >·XïòËÌóüÅÑzmÕ>7^Z'ޫâ‹ûæÿàäsÄÿkêæ§e;™O߬?v±"‹BŽïýNå­êZI{�|Þ©CŸ¾Õ2[4Qï–ä{ i{ñäaȄۉçƒHÈÛI“ïólOÕK�4Ršfnòhs%M¾‡´-[%¤•ð‚Úæÿ°lùúO:9oîçDmï«XíŽï ­v=³�¯-ÒV~RÛÄo Eçƒ÷Ówu�H#ßÓ±�…iÛä»>BÌ“ì>!��æðF¥7(±âK<ò]'ªLnÕë¼'¯’±lƒ�[Å’Ëú‚ÇyíÖväh�ûh䤣j\ÖëÅ'Èñ&IŽù {é!mkÏ[I(ªôXùO1êè´°š0�Þ»þ1óëPZÍú‰ÎÉ+|tj‹Ï·Úî²?æÅ:æE–0ùt|ï�¯/­ë[ëüIQ4ã|Øm(£Õ,9Ÿw(‹¹8f5Ù’[m>ÿ¿¶%÷B}‚º,…¬‹Ð2›Es£eÏ×Òä{fçDµ­}€ÅG¬vgž—»ñÄÿêV!­Ó¬;Ñé6•ùE±^ïmí›Ê;θÃ$ ÿ¼¥I¾©讪(´äS4ÏsËjãXH¯2ip©D}|;nà|›üî‡8Êþ˜§^â[ߦßû�J@b&®M˜©w+vë!ô�§[r™okjgL 2¿ò�!ë"$žˆÖÅt­ ¿ë3É@£ô» ë9Þ´öP¶ë€–%ßõ½n®ÅîV»FÞЊ#ëkd’ïÅö‚b;ƒî4©Ê¦Pkk%A’F=äR'ßÕ˜XR1Rá�¿µð‡ŠaVœÄ»K²½$mŒd=Úh¾“¦ÎÅ‚ >niKîYË^HɇFËÎ4z×Àœä±NÜ–\ÿIÐÅEšp5ìü¢Dð<Ï-KÙRiÍ©QQÜ`GyœøB4¶(óý;îèH|Ì‹-)åÐÿT:«âì�ý÷óX\¤I¤ÑŒ2¶3ž±„êå(禿µ¹Úé¸\¶ë€TÛEÚ®WRü@ñ�þz“Õ&H-RâÝe}ޏÚPT�*6!ñ´É÷p!“!¹7t€+eò] ‰-¿·Zò×'¹ü„µ—¤ÛXf5Îë’NÜÙèç ¹C&iÇ@ˆ§­õBŽ�y¬÷K.ÑdŽy‰¬8uÛ“êœ|èzE! ‰ïž×ÿö (u iÕdw5)Î|ÿ^`á7·„´§,ch˜:W’Ÿ£8—c¿¾ã eTÆvFHûk^íŒþ¶.28We&óõ¯ëjoï&m¦ÒÞÕõñž áí>(-xŸ6áe ž3Ñ=Š�õý„Ì'`ò¼ð.}�T}ýíman¶’Ñçþ˜â/VS¯ ’îY'þ’¾ÏF÷A’ïï×aÉ‘|o±ú±9‘Â$îû*ÁÇÖ>ë˜gýñŽj5d;.�J¯`-GÙïßwnüówãØ^·$¢hIÏ(U¶ó¡Ô²8'"}elg´*ùÞßÖEËÏUÊký'Mðª©/a éwG(¦éÇ‹[f×?JX–ÓvtŒ­Õ¯F½µÀ'-¬$‡›`%¢ÅW´ø»bGËž'N0d-éÈz—Ç1æmk½^K.¯ãnÈDE*!Õ?Äv€P Ӈ�~ß¼SµjÈv\>Q´¨µXÜ[Í%‘§O;²  C'^Ïê˜ÉçØ�ÑŸ2¶3B¶µy•B i×åÕ¹².�¨ ʸ-&jóêùT-þªdÙóöÞEV|$ß‹ë:mÃ¥l”M™G¾atâ-\�•€Æ¿Ñ�?W,lÙ{U±�â)K†‘}ɽeÉåQÒ ‹C!¥…ò*óÒ J6ª67Qòý½5ß»&�EQФ_Ql7Î÷AzKö½†‰-nùv•(Ÿý;`âÜi�'Ïw;¨ôƉ§í|«: ³}*¶(áÙÆîx‰,J|>ŒªùlZ'\L—íŒÿb]”W×SÛ›',·èÇ#,ÿTlkÉÙdy�Lò½¸ÖSÜ¡myuÐ!·Ïæ-׉Lë[mÆò~w‹œ>«'Û½nÝæ–�óßQ2êI½—M,&K.$a•G£;°NvCÊx!²^úM’6®ä_v&î«ü( ½Šæß±ÛûNå�‚ºàãRt¿'ަZ‹ÅQö ÖÁ7´BÒ1²:§†t®6d¡Jo†öñR­Ì#xN”ôù£j^3íT?º?¡�ñ_¬‹òÊ|ýë¼¶˜Ü= ëÍ×}¬^ëÃV›HueËž¿Om¢ÞóëqòÁ#Y¶{[Þæ@ßžoצ´“®éË3ùz O< +%ÇY¸t` )‘¯[—uâÝ'ý¸V1Zëè±Yþ½_Õ(.ˆ—-¹-{!¯ÙhcýEKî–�Zrýg¤JÎ#ßMêÞ&ªÚ–ªZ¹j~¹wÄ™¯uõŒ²¤ÞZ¨ºÇýŸ8£ ·�ä0‹3?æUû\±’¼IÕP=ÞŽq5N˜à¯Ö!Ù¸ ±ç�^Nºª#«d¾mltÇW—ì{½­JXô'elg„lãó:—„LœG;ԅܽV´ójH»(�m1¤½ûJ£TsÑ;X®·ìï·*.Wœù9鿸FF¼Ãl²¶ï�µ}Íÿ.Z ˳ìLèkçVFÄ'SÑâSîWVpú¬Ç[­¶}«=bµî_V¬¬ƒýúŠoÌ–xwIKŠPv&¹',¹ð$bó†Zrï4ò m—~QœôŽ€U¸žÁwIDATµ_ez1¢×óù–\©f¾�¢¸”û»e;ªÑ ÷Lqú#�=4þ§%4ð�ÊÖ–’o?qe~Ìë°jòc^=ÚÈÃÞ~'N^s9®´6!þ?¯…ÎÃ3oQ”ø|¨n½Ì·�w_[0ä|ˆ|=bÉeþ½«�±‘Iç�x[íªÏãÿ:NÍÅæzo™¶ ôzµ°ˆY±„¬¿!–½�×|¬‰ÇþQ±¦µžOà:ZñiÅRÚW6S?[âÝ%-µÃ52fçó\«cÙç @jÊ\v&:yÃò| ç³I_a¦Ï:L‹oYú&*n³ZÉo`>¤D£·”&mÌRv&¹Ç-¹–½­-*:-™¬ÖÙ”¿seAKë{cÁc´XÇ)ÏðˆÙ?uÕõQK ªF]V+I†ÿÊü˜UuÌKÞ]ðH#�ê ä{Òû cË&ù>þ˜QôüÚÉò�%ç*V}Dúþeµ¶k’ nEµá×VÛúËNȶ6ÏNàzÙI¿÷&Éu«ßyã%+o³ì„¬‹ÿèó64¤$¶ô ßé²þiäAúLGi1ÌÒåw¢Ý¬¸]ñ7ÅÃMîÃIïòàsâ·~ç5àµþØ+ó„«y•�ù­b% wžd oâÎÌ©–¿…ï,…÷Ô»aŠo*.ULk"ñîBn%D2Zrëè¤4qd3ôZ~«Ü¦–\3·çßcÉmgÙ y½Gµ�¾jýDY.¥Àº&¶­òß±`ñ+/ǯ\Üè£#‹î³„*éÜV@ÉËΨa³Ìà‰‡nhÙJžð�¬¡ û»‡œRã#–�A^Pgh4Ðiì;ï[bÁÄ#R#Ï…¿ôöö–¡Øâ ¥¤ó®×Fþ—%W¦vÆÝ ¡U\M¼+±7dÆdŸm'ì#Š;¾féœ0j?mîKZBQý­áÇq¢:Äz��-Q_üqk±Ú¨õø^K.³mcPÏaCÕ¹¶–¡ÌBÚ™mk>2R‹­,¹I <&¤-’Y;TëÂω»Zr�¬‹¬…¶‹²\ÿ{XX�ùFî�ðϳ¸…ñ’1Ý U|¬"d@�î�i‘´ì×ȘŸ/)®ÒvÆ2@’ï ÒÁæL OìÍtIÆ·‚&±¯…ñÚ�›ës~½™YãçEß�_X'N2 ™úè«Ä£cå+õpº-;!H^æ@ËÆžv!2ÑÐ2�=ÝTúª>¹ôÂ*¶Þ>ë=¡™_é]¨#ñ÷«Ä^Té] ¤c§-Eï»öä£B/Ì|±x¤x³c¡Æ�c‘=m‰Ä›X*ín‰5ÑᕯØvý›º•yjVG¶m BÚë©í•UíwŸ¹;$�×Èy(d]ø\;YÝ©uˆ…•umÇ6×g²p"¡Ç½F:¤C¯‘ý²®®¯Æ)Òº“ZË亂 }y �H™“�ÑAÆGoléù¡_È-“~[öÆjPÜné iXPÏ.LÈE�× m¨Î—öÓ½´ø�…i¸G_Û·ß&ýŒ%7Rïy!k½oZ˜¿Xéĉ÷÷j”ݹÅË“Dqô×�‘˳RúðÜéÃÎljŽ†é›Ž~Zk+ä6÷ï®3ñð–—ëìù™�îøjÒÉüšž/¢Eê{ók±®žQ›«$ñhoîy`Ë/)'œô0Š:�ïniù± &v/¯Ô_@i‰Æ¿ój'�ëV½Ñ‘Öbƒ&¾º^l/CÙ]gaZ1oÓÿÐqÄGÛ`É=UoOÍÏ�æÖbZ‹jq�%÷šÖÅk?Þq˜µ˜Ö¿ß±=Ü’ó2‹�Íç5ü\¶®%÷½Æ'|KWH‰1®‘ѨÍ·i?XÙ4­Ì5ß[~‹”,>RÂoù<ÜÒãu΋XÏï=úÌËkrP=PŸñ?–¢úD·! 7n© zÑsj}»j =·Oèw†…kv’«�I“½£à§ÖBZ/~±¹‘%çs2ÙŸÂ6Û13 -²Æ?ºÔ†þ 5•Ø‹+ %ÈæòRÑ~ÖBÕjôYËHÕª� ÑøkÞqb-ÔQ­þÖPz:ÿz‡WÈ5ÃNj|ÆZëWvWjCç­ /{R†g˜ÖE«ËŸŒ¶°; ¯±öõ�zi”–Ðsû|¿³0×6ð˜�2jo+R?W鳯oaƒæ¸FF3ÖVÜ¡í.¤ i½_#ÄhËQ™G¾·¬—V_Ê¢ŠéG/ “öÒ÷­øB¦>3{�¥ïëŠ�[éÕÓHƒt^ü»;ÏZç׊–%÷ç!$iéÓ±¦%I=¯7ŽŽ³0©Ô!/“jµôXá«vö§ÙQï3UûìÏ"Š>×5adKFÙvN:t-u¦œ]¡%´Þ¾±`Ü÷hç„Q¿Ô3r�”΃ )z¡á·XìÉèT½HXù’JµÉãz5qò½Ù­EÖˆOè÷]ËÈŒý,Ž&^�"ýþ­º“£k¨£,ý¶+òÚÎ83nÑà=¯ßÕRßÜ5ÓÎ]>dUk=¯'?CË“¶s›ËG¿_·® ¥·wC“û�œ×´ä|^ãw›5î$ Ã52šåwµßªýySCÖÖ6„xÁrTæ‘ï©Ód€ÂoØj³˜§]â§:é†LÔ••�„Pêµìõ�¬aÜ:‹¹Óvë…Ž~ß1®Í��*=çX ¿øKÊK²„”žñãàú ©&õ|Öâz Û—½üÊ/­”¢Â�_�µ~gO÷µÅ×iZÏR[üÌk Ùідc½}¿…ˆ*ç ?2ÕQm^J$ê«\¥õµØl/6Pßð~V™¦uzcç¤Ãv¶bÚ¤«gÔ,Þ+ÕdCgÏHÿ®ƒÊÚèJû…©Cž¾¡©ß©t„”’[Së¢%ev ø¡¶‡�ѦÖôÝ»ÈBDч{__ðš´ð^žI‹ŸÚÉ9–óÁ7Ä)×ÜÖóy™§Ÿ[/½ÑÌ�$ç+z-9/ ãë"Õ»§êƒ(.±0/¦ðEשø£_o[Šô|>‡RhY¡WW6ð¸-¹V\#ïfÔ{G>|n#¯¿‹!K$ßÃûu ÖÜ/½qßÙqÀÜ3^Ñ¢!½¯-4Q øTæ|о§Tô{=qª‰-äKçáG,|Dô`«�R mÌ çñÉ�}ðAèDá'ÔÛQ ©×É--â#—}]¬f)¨wBüÕj‰¨cõùÞ²öçƒe®‰kåDƒéy|5ï  ½®ø¥Ö#¥'CޝM�sçGŸÝ·eJŒ!OÞu™¶Å�¹.Рúàº�@äœ|ϳ�z‹ÓåÚßµäü$½š¢%·ÎÁþVoZr±ty#{CîÔ(½Dûœ_ø¬daöQ Òs¬ç¼Ù¨�2:Ëj”iJ’ û™ÕJ„\xùÌñ“ô¹NÖò­—×­IqmòVŸ\õXKG¢úáeY¼WO÷P û÷Û:^zdæ³¶ŠÒçO>&xR\=ǯ:'ŒúQ%ŸïÃG+…yƒÄ'L66ñHüe3ªvB3«MëúcJfþ¢³gÔ‰Z)£ÕÙqÖ]CÇ>k‰¤\z(Šv\à¹çïéœ8räÔ¡ã•ðêœ|èzQ_‡ß9´m¾gà€d�©Qbë©›Ÿöo 4xÒaŸ¨T«a%“òÒ3:Nøk�øÒ>³Qïk ÞßÕ3êè)ÃÆ$*ͶÁM‡~¸únÇiÚjw§toÛ:^±›…ñDÝtµ¾«ãå8K@¿ëƒ“¼óïKÎï<Çšw‚â ƯýîÖç9Vë"QÉŽú�ÞÞ:ÔÂùu×ë?¼“þ>­Ã#´þ/µâZýøqõçJC£ûDHIj×Èõ}ÑÏA NCÞ¼áq–'†µ?ÛÐJŒz—kÙ™<“ï¡£îËTÏò(ŒBn×ÎZH=ºu}4I}¤NbzMs™…M 3+®HÓá€i\ xÒü&}Ï>bãÚ^&6òKzü0-üöÒ}­ ôÞ_ò 8 ¯¹èŽT|AÏçµ+Ï×s?7¿_Ðc—Öâs ¿³&­Ùç¥×¾ÇÊjƤ© wù(òQ¶Ñ{´Ü}o X(¨üȬâ(þŽØÁs3è9¾¥üÞq}eÚÐ1 —«Rr'-¼*q‡kä%¢è‡ê”øáà‰£üõaEEkh³¼FÒöy¶:'*µà æ¨õYj£Šb‹–4ù­ãÂïõ‰'pT²yíø�Þ[�¹íÝ#Æ%.u¤må qÕKŽE-©›ÞˆÞjü£•(øvk­S¯�úkmF•ê)S†Ž»¬‘ßóRVQ‡í÷zÓÐÆ´�üMçú?êÇ=,Œwô�õÁVkÏýQÏýÆü~©^'ÝçmðùÒÚ羯×nz°�~Ç“¶çZx€'-OŒk“°z‡‚ßí÷Úü~I�÷(žü÷æ%,ÇÖ'”íO|›ò4Þ!=ZŸÿêF~I�ßH‹,Ý»^«×¸Ádž\#oo)¨ßµáeãÂæ}ù/Î í+ËzþGûñQûRhç(æn-C¨ùæVZ‰[S[ïWIGUä(¤†µó�‰“æqmöì_+6±ô0™L ´-ûE›_p„Ž~Ÿi?=§—2ð2Óž�ñÉìÞVx-t?Ñt)<áX×·5´^NÖgðÑO«Y8Ÿí4=çx«ÕC�®øgý¢ÓG¯y)//³�¥×A5“_ g6y!Ší¹x�ŽmØüÄÔ&ïš6lìo”4?\Éó ,�žã#3FÁOè¾GÛ­_$^×EOôYôì}COªóæ#VŽz`n­IDATß]­W6‹,îåc,¼„ÁÿŠ«¡óT¤NIR�¼»Öó‹úÌ¿¯FvWGjÝücà’^±WÞ]?ê‹×Òã+Iþ%ÞS)1«w+Q≘§ s¹Þû3zï‰Ëói{X¥CÇ2%п7eؘ¦ê“ÏH8WâÑúq«¼³ÓGŒ»C ókô]¥RoWϳ¥Å•-õœ~çÓEúþoWGÍU«þãµêÏ.f‹­_‰¢5õ¸uµo}V;Ù´lúO|‡&ßgòvöo<Ô¦¸@Ë[÷Y­�ñ/ý›Ÿ¼�á¡^&dCK—ŸBêÅû¼\>è �s†NŸßæ—úÜ^Þǃøàƒ‡ôÿ©ó9Z<Ééõʽƒ8í ÓëoÅÖÊ#�'¤·×z~IË?(þnÿ½ðóëo÷z›÷³88b.~ÔÄcC®‘WÖçýõS‡�?§ žxè†w(Ù.š‘,ÎîÅ•oÇQßöií/3ž3š1)ä}.ÿ¬¾—,U™m€-ãû™«c³wV¥Ý9þùzÌ�A;Ã_à‹ÀÛ(zŸÿ§Cç*™Ý®6Ë5HFm®ƒ­ø²8â,¥øšeïgÚžþÑÄãÿnaެ¢9H¯ûŸF©žt÷m>xpÐb>0ìfŸ£‘;¸Ñ”OBÄÚ&Ÿ°1ò½u<ñ¾£¾àT' ÍÐMVËÔwéÀëÏs�Âoç{Tñd}T�'|„¯÷ÜûÈ]oø§uûܜЫŸ­¤ïï0«�œB��îÕz¹Ðj#sÊê6}ŽS ¿Q�*;Þ=dô�ÖS‡Ž½M QO®v[yݧDn3#Ùú‡Øž{·Úû¨Úñî¸J߀ïüwNƒä¼ �ßVfçÛ3:eÔñ¯‚ç•x~Nïw%m‡«ý÷ì]¼Œó”§Oéìå%0Š7Ù/Ú‘~ØÛj#�Ëj\J¥8½­â£ßËœŒ¼@ë"xÎ$æw~«™_¨ß á#'CîÄ�ÑÉ£çñïÞ;�±ÿ^#ÿ[ÿ>óúØGÚjwþ.m­Ã52Òæw¬ß¡my¨¶é°˜AëÒç–û˜!DúƒÖšÄÈ÷ÖðÛ÷ÔÁ¦×Êë œH¬n‹z¼'£‘$³ �cÿËkdN¶ö“dÂÕYy§„×¥ÿ •�×:m�:}ê×nÇ3ŒŽœ/T*¶•ïS­…Þ�{¿30êðѼå«-¨ämï@û”‰ÚòB´jñ¨{Gœ9ßšÆós÷�³^T¢Ü'= Nä¿O-Õîº[«,ûp<à�ïXïÀO×ïfZF×ïª ½¿~¼ÅÊÉˉ4•ìœܤuám/™“ÛÜ<ÙZæNîvðMmG/[ó|¢Ó4îlß©ïámÄKDÝQßÒë–~"í’gýQ®£Þ]žÛvíe=E˜ÝJžxw>û|ÈŒîEC¯~Š´}û GXû );ãëÅkA·Z�Ê2ñ}};½ÿÄ J·ßþÇ)¹é]Cƶ¼ë Ú>ëÛF/ú¤•Ë›qdÛNßbì?-HÜŽƒFO>ö÷–’w–]æ¸Øâ„e}Š(ùw>m‹³Ÿ‰¢øSÚGû h1�§=ÙìƒcÊvgíãæs5¤XXÏu·;+ÊvÍå¥=Gèý¿`ÈËùZÿIKhþÆÚ ×Èh¿‹ÃKÐlmEÉ™p�[ÎòL¾·ÛÅ­7&}´û‘Öô9^Ôâ kTHM™¶‘Ó­ý ¡#ß}½<¨…OÀ÷º•ÇîzßeI÷~qÔfû{|EÇbowN6¦™º¤A¦;óñ¸£º�Õæÿ(…¸í=uØØ»,X{�|WWÔ5ÚvR�SãÞõ�yG çý¬m„}çS†Žóé2ÔnFÐù:­‘·Yñ� [µb>=§—íØ×ÊÃglí%8 y™ õŸøü¥ß�dµò¬í‚käöU„ö¬ß™ä¥YËtœ."Ï͵ÓÀØ<ä^‰ÛŒÒá£E7ÔÉø�Ö^|BµÜk#Í&éHÌà¤*ÞOÛ¼ßò{•O®54µ^þfµð¯X±½­ðÛ¯±¶ÒF#—cûÖ”acw½s㟿a›ºå÷(¿¹× ·"‹gŒzüäÔ!£¯´ÅOR¢»P�n>yî€ÅÞÚÃZÀÎú¼mR[?ü˜1eøØs¬V“»P´]ñ�@:oÿJ /ASôÎB¿ŽØTï÷!k=÷´ØÝŠ?ÞÏ¥[”°CÒmÌuíNPï ,M7CK%½fç¹}ézè7j“¦Rv¬?ÒyÃÅú\ßPÐy›ÌÖ3F¾‡ñÄšïƒÚ¦\Ã,ô™üó©—ÒkŒÿØ’YÔÐ*{Zm‚á¢ØK‘{G˜öŸ;´ØJñ´“ïßÛûD±†ÂQõÏ}•ÊG§ s¢åhê�3¬ˆ¶T/÷[õæ¦jñ§§ “û¤u‘EWŒˆk“¸å/ŽïˆâŽ[Ùq3uø˜XÎ��³IXÒ"�»´è®Aí·'ÄÕèhC[Òùû·ZìcÅu¯Õ’Í-Oè5.³Úä”™wT7ÈÏ¡>ùà½V>I¯Ùý³·â$à½L‘8 žûDÏáIü"%G+®³d–0 õü8r¼®oÎ4$â¹9Å©úq «u8O04#³;È熑ïÉ�­ø¨ïmPß}®ôÙ&X­ƒ!oÞp÷Ñ{I&Æ™AûR§mÄo�ÚFq±åË/¸¶Ñû¹Ä’_(Õ|Ÿ�ÞË�Z¬¯¸ÙŠÅ/Ö×û+R§ lF‰�éJ˜m?uøØ]îrzî=ônÚ–£ˆªƒ­XIV÷XÅç ûg+ˆ)ÃGß^‰âMu¾ù�åHÛÑ•¯­l[NqzË“¯­{Â+÷cœö›Sô¹/´œM6f¤¾€£bËoî íªÙ7§{t\©RR �é<îs9 ²ÜN=o‹m¤÷÷¨e¤^Ž§Ó p�=›«­ÖæºÏÊ)é±,®�ò÷ZÅyOtçå‰6ÓûI­”žžËGä}íã®×{ñÒrI;V6 ;«�|™‚;.ò ǽÃY1B]Oq®Q’¦ZÎùÞ/Ñà#šVÒÆ~°¢Ø·â§¤ÞÃö=Ë�OH´]}2Ë-¹�ZÂ; {ëǼFØyQ]ucýïI'"K½!àÇ Å–ï>4«cõ~¼LVaG2‡ò«=+ŸÛãJô©©ÃÇ RÂ,é襖ñ$î”ac>©tâ¨"”V‰#;ñ¹�»kèØÂu é=Ý«u´‰Þe^#�Ñvô©‡Öû¶eÀ_ç¥ê+[{òÛrGq·ö›#‹2Ùò”ácOÒúØ-¯’M:~~Ú°1'ûÏQµÂdzmN§¼éZtYíyÞmûw«Ýñá’Nà»’¡Œ~G–vULÐv·˜!ˆßM¥ø²Õ:Ñ<×�´Ds»{;ËÁsÃÈ÷Æ<¢ø¶b}i#[1aPÑé3ÿÄjå<²¾uÐGÓm4K­È� ÙÍ -¥ïé«�ÀºÛ²ó'ÅzzíYõ,™–](Ö÷¡Õ-ùm¡¡®W¬¥÷ñ†BˆkwZ\WmˆÛÏ»fy#”ÔûN¥²¦Åñ%–Ñ­ž¾Î©CÇ|ë‰ÍOKXb¤õ¦�ûÄ”ac}4ÊhËL|oT‰»´-e^wü‘¿~«–ü®z‰¢ìF–xr;޶›:tì8+˜iÃÆ]QøÎz¾ÍZVb›ÒW­®3mè˜÷îèwXBÑ€>÷%¡sû‹õ ð-­Vî#?W¬¡÷qžåH¯ÿªâP«%|S˜„;¿#aM½J,ØŒïä?Š ôãI–¿b½îw¬…ôü^~3�6ÞÙ6b–2:!£ú75 [ž—¹U ø‚é8ðB=×ðaÅç3̪eóÎ4#Ïä{Ñô>Bá—Š´!Dq|é>7õrk*ü6»V�àð$èQ>bXñÈ,ÿÒñ‘Æ;˜�¥ðßµÖºI±»^ëÓ~Ñ9Ûÿ-lÉ´t”–×=Ul¯?©xÀ²áóQ|J¯ëw�íVì~IɸÉq\ýz%ŠWQ¢tŸ©#ÆL¶¹oèéOM>Ö;c·Ð‡Édâ8O`*©»¡�èž>tô4+ }¿~+øzï—Z+Åñw=Ù×�±¹Näç“°* ¿¶¾/¯ßÂΑØÛ Ǽ÷~dÊðÑ×[AMÛâìg|›­Fö9}G©•;˜�¶¯ùèÿ)ÃÇlp÷ˆqÿ3Q_oâó¡U­ZØ.Ì™ÎóÞ6ò6˜'Ÿ[¶ÍÍÆï@ZG¯ýµ9´ÇrSŸ{ÇGÁÑ®šá¯Ù¥×þ¼¢¨sþäFëä(->n­/×âwy®UßZ®žôò;¬c­çeívóζÙî¨ñÊ52òàƒTîT~C*êÕ~¯ð5ïàø�Áe•w™§<“ïEu«Õz�¿®ØZì’Š×ÞS/¡á̬¨8D‘výBoDüJñ1½ÎIsxý�š�ë྅!ú®ŽÓâ£Vù™Vg�'Ç¡ð²)[Ö'Øš“e,™LÊiè}ÿEá�ôý­u#á½Æè¾z¿ .üˆêvåI1-.¯šýÄpQGue%ã†L>î´»†Ž}ÖJL‰å›•„ﲸº·Ok)Óº{1ŽìTÉë L%uóÁÄדÞû½bŸ édÿ\–†8~Ù×�¤«ë{8Î Dß×�ÞŽ*ÕgõvUj \%õÿ[õÛov,ìW?¼wÄ™ÁçeÁG¢÷uô®©õñ}í+iÖ>¾Ü¢xgm_«Ïmô¿’òK[R ä^b ÍÓ9¿¯>âÚ�9>oÓß-}¾mx¢Ñ¯™†+î·ÒûòJt¿¶Úà!¿n¹ÅÒçmSéî6©×9Ç\hýÜ^/ײšÂï˜M«“ȯ5ü8˜Ë]žzÍ_Ð�+)~¤H»óÅËEúúZ[¯sùþ?dbãtnJzí„ðr)·hûÛÈ�*'nUì«?¨ðÂþ<�¸çåÜêâÖo1)B/×S~²´Ѻû™_µæÝä KK™ÞÏP->«ð½«[ó<áIÔ?Õ'KšßëmnÉks?®×øg#Ô묠źּ·ü`gÑûôÛjµæ=ê#±-#zŸ~[¦�øÞÁj�7�òÆ´�lô†æåQ€`nIDATu3õZçhq 5ÏGí²ŒÕ�‡¾n†×#ÉäÀþ]z"‚/ýö3맺&ŽÜBg·�–£¾¾øíhé…§Më<¹ß$¯M:xéŽêÀµAW¶cë¨Éó�ö%0¢{”Lœªß¿~ÖÒYêœ|èzJ×,oMz§·ú„’Á ÝÖ8xb÷žQl;êuvѶºœ5î)­¨Ë¬_7eè¸Ë¬VÀBKTÛ.Š+Û(¶±Í˜1Z¤ÑßWÂýé(²?öYô‡»‡�ž8¯Çž|ØÚ•¸ïƒÖ¤È¢³¼k`Фîm:ªæs(l«cõzÍü®ø×i¥\ÓU/™>ìÌùÎÝ1xâ¨+±�c t,úÖ¢wnüó7¬ŸÓ±ÉÛ,!óÝ1Kiˆ\è3¬¥ÅŽ Ÿ ÍÛíI:e¼¼ß_­6yå yÔtOƒÖÅjöß6×0EÓÇ{¹Gáó M°Z›+ós}ÀõÐ=z¿ wþëu|Ûo¦Ý>SÃרz ¯[îÛç.Ьqžàös¡­½Ã,}.¿KpÅV–l;óÅþ¹þX¿«e^¯µ�…•�ix»ÐkyÇÞ*Ö¼gõ÷2¡ïi”eZþ0ˆŸOüŽök -¡íaA-öQfµ;äú“]É3¶Z'¥ë÷Š–|ŸU}Âí¼Z=–œÛC­V‹oŠOaèW´�¬jµÚðžt˜S¦Ïj·MMÒ9¦çŸdµº§ÍºJ¯·³å¬Þñã;ÞA9¯D’'^|´Ù½EºÕp3’ñqǺU«¬£äßÿ\¤UÍ^«Ì¹¿G•çªqåÉéÃNOûNªR4éðÕ£jïúJV̘¯B Ö^óRwÕ‰ç§ß©ö>Ó7p±§ØòÄW­ x’<ê�½s{}}¾÷Õ$×çU‰é'­£òð´!£Ûºne×øÃ—Š£êZ~!4Ç„¨ÖÅ£q¥oê´¡g4=‚¹sâ¨SÔÑóukZüì”ac›I‚¡DÔÎðº°3ÛKÍåaÞó+Þθ_팶ìˆÑºðóÓÌu±ì\¦ÓÖŒA¾.îË»3¥�Õ;GüÁ�‰3Rø¶è£6Ÿ®Ç3¾ŒJ4‘m} ÍjŠ�X­.óÜJ‚½kµ¹³üù1*YòÝùqÖ+OüÊÐRÚ6†[- ïžýaÐVÐHÉ÷*rò(í#~�˜¤Îí8í#Ý@èìé¾Q�:[5ùkÞrÛÔac?a tJ˜|ŸéGºÿ�¡å´�øÝö>?•Oؾ¤µ§—µ=-eÐz9ô#:‰øH™¤ÌM1ÚEcIÄñ?§9£o=å±±âv]ã¯jÈ”ðÿP¢WR|Sñ¨•�Oâ;É ‚ä{9%º…Xž5 :ŽÑbƒYþÉ·É_èß/S,c9Ðëú{8Í’û³ЄÁG}6ªMT5«#»&tO4~äÇ,'qÇ–P\‰.7€üùöwèZ]C攀Eq²Õ8î¡(Ó�‘wë½f2É÷rJZâã9éÄ·›Ýsùï]÷ê1Ÿ´ìùHü5,Ÿû" A]=£Ö¬Ävîÿ3Š:;*•û:'Œê¶ŒuöŒú©ÎiŸ²„¢¾Êo  –WܪÃPC.Ô®¬*.U Ó_×SüZñ¶[aJÎ8’ïå´Ž%ÃÈwÑ ïCZœ7Ÿ‡}@q¥{›"ñÅ3ô:?×b;Kî  :÷x�÷…çõ˜(²1]FýKIø¯ZOu`dv´%[ü÷)#NŸb ÌÚeÂÌ™Wô¨íõYC®”€¿WñEý蹡ÿ³âæ'X��|/l|öá…-™ÆG‡/Ñàc7Q\¡möÅ׋[ÊôœË)þ¢¿baÎ2ÔÙ3jœ.<ÖkèÁ‘­¦$üÏ:'t?¥$ü±^�ÝZ sâ¨*±�c”|?Ó@ÙEÖž~¯ëÿƒ ¹S;øYűúqežŠÛ­8¼óé:+�vÝ! OŒ#´XPëñMþžß:±…%³¦^ï!жw¢Õ&ÛHê-Åïç+nÖ¶ø–%¤÷âøQV+“´3j¦+ô^v5Ð5qänWþd”ä¾6Šã_öuôÝp÷�³^´„Öž|Ôâ ÷½õ%��Ö¹lE  çxbêð±-éÙÑ9ݯ“ÇXû:Eíž#­MèûZVŸçy+9}ÏUz®sË×­ZŸ›Y��|Ï�6È.-îªÿÕGíî£ ã¥~ï(-N°džÐkpA…D´ííhµm5MÞ3z‹ÕjqýSñ”¶Ñ§lîïÁg;÷c#iÖ”ÿ¸^·H½´€‚êøjV雪&t£w�5 ¾7Ž£¿Å»Ù¢èî^‹ŸºwÈ˜Çæöè &v¯Wm =v¸~w7½—E,qwO:vœ€RÓµ³TmííbÅçu-ßk%¦ïê`-NQøœ;'ëóüÃJNŸÉ„ø6èe—µìýXëñûV $ß3¦�pQ-tÑö?“¦>£ø®âBm ¯Íáw>¨…ßÎq %÷=÷ hR}”ùÝŠ¥-ÿQxþ•úßTlj­ñKí!û éêu›Õʪµ^?[¤ŽéxÆH¨Ø¬ÅÑ µÞ—²´ÅñÔ)ÃÇv(½~’|w=Š�ç”G+}O~¿—‡ž5×âåRü»»ZŸ«Ôµûõù<—³ŸÕñƒ,;Cµî&Y��|Ϙ6>ŸØñsóxˆ÷r=¨¸Ïj“Jx=Ñ--Üç´ñ]h@“ê“™†ÖT/¢§kk¿xÙ˜�Ξî/EýÒÚPoµºÉôãî0Pzý(ùî|pë¶^ƒÜJFßÓqZ|{.ÿý/«}‡?×g{ÓJNŸuk-Q|ÚZë­¯%­`H¾gH›�<ÿµeïIŪÚû h’¶Ûe´¸QÑn#âFhŸ˜`4¨³gÔÔxÞÛÚHÛ7¦sª€¶ÐÏ’ïîQÅVº¾ØJ¢^áÂì Îç¡^¢ÚŒÖç{ÜJNŸûÃZ®ø’"Å2Žï9_ëi?+˜Š!ÚÀÖÐâLËlj$Þ‘”¶�´ØVñ€µ�/’x4kê°1ŸÑârk±.æH¼€’ó„îíÊ»mdåq’Í?ñî¼Üà7ÿÒç»D1ÄJLy˜G>)ëJV+G“v�ûK¬€ùží­6Áêz–½+iã~Ë€ÚŽýàxµb°•Û÷´?üÄH¨³§û�‘E­¾m¶¥âØþ¤Ä{©?x¿~8ò}V^þ*+0}?×âo–ÜtÅiúœçZÐúØM‹CÛX˜×´N·bä{6N¶|ïîË$Þ‘mG^¾h ÅùV^Ç‘x„š:lìZ|ÏJ*¶ø*ï  ]®dîç­ ê“�^`aÖWüRÏõ”âŠå¬Ä”£¹LáÕÖRüLñ†%s¥É÷ÓNà“¥Ž²|x¹™?�ŸE¼^?Ë“OY¹¦÷þ] S†�ù‰OTªDö]V"±Ùê<ØÙÚO‡âwÊÅu�ÄñŠ�Z:VTüPñ¬>﹊u­Ä”¯ù‡â ý¸²Õ&¢m6çt‘eg2 àZ|Ù²u­6Ú hm׋hñS˯s©Q>ëùÚ&-0xB÷(5ªOйf!+°jd_™6tÌ/ ´­~^vfV^–å@µÏb+}/›iq“µ6Ûcµïþr}˜Ö—w¤xIšÃó«uïÓ.¯ÏÜkÄÈ÷ èË?P‹ý¯X6~Mâ­¦mì …½ÍÍVL^£~ï€Vš6|ì˜(îXGW ¿·ÒÅËý½QÔIâô#_R\¥vЖ³úàÅ ­õƒ ‡).U<¤×0Ëm¨ÏWØR�$ßs �Å“ï?Vlhéñ™’¿¦�mª9ÒöíuǼ‡ù“ŠÍ-[w*Æj?8ÏÈÑà©G.½üÎ~Vµ]uvžiI𨉣êÏ^_0:ó¡MÇfuç%(ÊÎÌÑŠ­Õû·å@߉'ŠoT¬gùðÒ;W)FkÜ`%§õ9P‹ÏX­$ÍbúLëX�‘|Ï‘6–�´ðÉ+wQ,bÉxÏÎ�µ¡]j@ÁÔoqÚF1Âj·? ¶ôݦð‰…ÿ ýà_@ ž8jk]öŒˆbE¶¥¥-Ž}4“Úƒ•‹§ }»€~‰‘ïsåwÈo§¼ÁtË�¾—%´¸Òæ_¿¼ÕîQœ¡õp–µªÏò+0’ï  ea«%(ýBlSÅÐy<üAÅ4Å_×hkvö_ 7ÚÖ—¶Úhx¯ÿq«Ý&´L=øˆÂO–ÞáôíO%²ÚøZºcñOÄUÛ"VÛ/²èCj•/£óä2�–ªÑcÿ£ß¹W?]W+WN1&— IP,Œ|Ÿ§—;¨½u«å ^þ"Å®–¿ç?³Zõ€B'¯ËŽä{Ai‡\J OTúÒ“ó�igx€6V/Y³T=fOÆ?©}àA Í­5þË °7—Z ¸´uô-:ëÿõÆ/¼4 ò�'6?íM˜ É÷ùòI;÷V~á ˉ¾£3­V·¼ÞU\bµºðS ©#ù´’ï ñè‡(Ù|¶åDßÓ·´ø©+7ëwœ®ø£ÖM¯!€þÁÞg)þSˉ’Û'h±·¢ÏŠÃKa_¨ø—ÖÍÑõªDò@ã æó¹äG•€÷r/Û+Þ°bYÅj£òŸÔºù™bmCb$ßôGû(®U‚yaË�ð7j±¹âY+_'_Uܯõs�b'%Ì›Dò@µ�âf%–—³(?U‹��Zqm«¸Êj‰øCóê¬(#’ïú³¢ï¢6 0IDAT.ÅJ*¯j9Pþ1«%à§X±­¥gµ’4'+>d˜'’ïú»[-ßi9Pþ9«• ¹ÁŠÏ'cý†Õ&gý£bˆaŽH¾€ÙòV+A³µå@ ø7­6 ëï¬:ŸVLÔ:»S±¿bÃ{H¾@Í"V›„uOË�ðUžúñ§V.*ÎS<¦u÷yÕÐ/’ïð_>¢û"%�¿e9Qþ;Z¬ˆ­\> 8Fñ„Ö߯ëZ?FòþW¤8^Éã3-'JÀŸ­ÅnŠ·­|T|Aq�Öa�bwE¿ËE“|ÚCÙFI—ÁÁJOVlo9Pþ -¶Q¼bå5Tq©âa­Ço*·~‚ä;Ð"C+l¡¸JIãÏ[”€Ÿ¬Å&ŠÿX¹}Xq¢âI­Ë±ŠÕ­Í‘|€yó:ð¿SÂøhË�ðj±±â+¿Å#i}^©ØÆÚÉwhÌOóª¯ü¿µø¸âk~§Æ'×k�NW|E±�µ’ï@{ æ{6¼ü,JÀ¿¢Ø\?þÑÚËzŠŸ+žÐºý©µ ’ï@{ æ{vöV’x‚b1Ë�ð{jq®µŸeËY› ùͦ¸U øX”€ÿ²ßµöò/ÅaÖ&H¾@2^.å%àW·(œû(ú¬üªŠOë3½am‚ä;$·Šâv%à7²(Y}�Û+Êž´>VŸeе’ïfÅd%àw°(i}£>ë VNw)޵6CòÂ-¤¸J øÏ[”€ŸªÅ&ŠG­\^·Z¹™ØÚ ÉwH‡ç[§ü÷-J`?¬ÅÆŠ2•o9LïûkC$ß ]Ç*ÿsË�ÙÏi±…âz+¾‹õ~imŠä;¤ï+JÀÿE±€eL mŸ|ÕëÏ_lÅu«bkc$ß 5vTLP~ ˘ðUÅÞúñD+¯K¿£Þ߻֯H¾@ël¦¸M øX”àþ–+Š2¡é‹Š­õ¾^²6GòZkmÅJÀ¯e9P¢ûl-vS¼mùzÇj#ÞÿiýÉwh½U¬6~SË�ÞWh1\ñªåÃGÞFïãoÖO�|€l,iµð;X”øöIN=ùÿËÞ‘zýˬ!ùÙYPqµð_±(~¯›(î³ìœ®×=Õú’ï�½Ÿ+ÿCË�áOXmü-Öz?ÔëaýÉwÈÇ”€?_YÆ”Åj5௶Öðï_ÑëcýÉwÈÏ>Š«”€_Ð2¦Äø;Z|Rq®¥«W±‡žÿÖ�‘|€|í¨˜¬ü–1%ÈcÅ—õã÷-o*vÒsþÉú9’ï�¿�·)¿²å@Éò[m~Ÿ%÷ªb˜žëzÉw Mò[[q‡ðë[”4¿@‹O)Þ°æ=­Ø\Ïq»a’ï@{È|ÒN´ÄŠŠ›•€ßÔr ä¹OÀ:TñB¿v›¢S¿;Ýð’ïP,‹+&(¿‹å@Iô;µØDñh£ØB¿ó´á�|€âYPq™ðY”LØjuè§Ìå!¯+öÔãSôÞ‡ä;“—:K øã,Jª?§Å択ÙþëŠ.ýÿ sEòŠíÛJÀŸ¯È<Ÿ«û›Zl£¸¸þOWX-ñþ�ažH¾í!6´³}W)¿ˆeÌËÊ(öÖ�»h¹«â Ã|‘|ÚCdhw;(nR~iË�’î64Œä;”G—âv%àW5Éw(—�*îP~]Ca‘|€òY^q«ðC …DòÊiqÅ JÀïi(’ïP^+�¡PH¾@ù�¥üI†Â ùíáH%à/R 0äŽä;´�½¬V~aC®H¾@{¦¸Y øå ¹!ù´‡Ø€ÿz^±ž!7ÔþÚCdèïþ­ø•âQ=jÈÉw(¯V\¬„û•†Â ùår—â/Š«SÒ½j(’ï@{ æ{ûzEqƒÕ’íW)Ùþ´¡ðH¾í�šïíÃ;R|tû5õ¸Y ÷>C©�|€üxɘŸ5”lÅPj$߀ö@Ù™â»ßj‰öûÕ—S”hÃÐvH¾@8©þD=¯Ç¿�*þ¥ûC†~…:P@ˆãøZìhh%¡þ¼â…YC‰õ0’郎b U$ßHÉwRFò€”‘| e$ßHÉwRFò€”‘| e$ßHÉwRFò€”‘| e$ßHÉwRFò€”‘| e$ßHÉwRFò€”‘| e$ßHÉwRFò€”‘| e$ßHÉwRFò€”‘| e$ßHÉwRöÿÿÿ^×­íIDAT‡F³‘úJ7IEND®B`‚python-django-debug-toolbar-8.0.0/docs/_static/brand/Wordmark-Inline-Coloured-Light.svg000066400000000000000000000211421524561404200310350ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/docs/_static/brand/Wordmark-Inline-White.png000066400000000000000000000663171524561404200272760ustar00rootroot00000000000000‰PNG  IHDRß,2ßÊmIDATxœìÝ ümSùÇñï­üK†¤4 I™“YBæ™ *S„Š’Jƒf�Æ”!”�H2“1Ô%óÊœyQ*¥âþ¿�½on·{ïö|>ï×ëyíÃ=¿söÙgŸ=�8–uâýb5À‰õH°�wÌ4•§Ì«,ÿ.aŠH¾@»ÜæXʉ÷›Õ'Ô?ìÅiŽ—ŽñÔgøùßq¼Dø/$߀~˜ ôÁeÊz¼?¨8‰¾§‡:Æ ñgw\è¿�Iø’ï@? “,E;�îXʼn÷?©fNœ¿Èq¬î®bVt\êטUxÉwhÞ‘Nºoäø§jæ„ùô^œçØRiq\é×›S ù û¼“îÛ«N”¿RY©›ÕUŽ·8®òëίGòšñ¬cK'Þ÷Tœ ŸË‹«‹©\¯w\á×/ûu;…ä;ÔïiÇZN¼§81¾�×8Þ¬jÌâ¸Äï³²FÉw¨×㎜x¿P pB|/®țjÍàø•ßo}� ’ïPŸ;K:ñ~�àDø¦Ê&W�Qõ9ÁﻸF Éw¨G”yYÚ‰÷ûÔ'À?ìʼnŽéT¯é¿ÈkÌ� ’ïP½s”•šyR pâ{_/Us^í¸Ðë1‹FÉw¨Ö‘ŽõœxF5s²û%ŽüðSjÞ[çx}êîyß’ïP�=œtßÞ1A5s’;ʽ\àØLí±¬ãg$ß |Ï9¶tÒý«j€ïQæå2ÇJjŸ�½~û«çH¾@ù6pâý85À‰í(ïr­c1µ×'¼ž;ªÇH¾@yžp,åÄûYj€Ú‹zq¥c.µßÁ^ß67$!ùå¸×±´ïתNd¯¦¬Ô̬ê†ÿsœâõ~¹zˆä;¤»^Y�÷»Ô'°7õâÄ‹½ãÔm‡ú³Ì­!ùÅ|ÓI÷­Ï©fNT¿Äqšî¤~˜AYý÷éÔ$ß`8‘lÿ€“î_Tœ žQY©› Õ/‹;öSO¼D€Aýñ±ïçªN¼¿Ö‹  «_þé8ÞñCõÉwÌŸ«9ñ~­àÄû<^\ä˜SýñÇ¡Žƒ›š°¶*$ß`l(K¼ß®8ñ¾¤¿p̪~¸Þñ]ÇO½Mÿ©"ùÓv“²Äû£j€ïk{qªãe궨•ºãoË‹Ôs$ß`ê~îØÒÉ⿨N¼oëÅQê¶¿:w|ÇÛñ~�’ï0e‡:Y¼³âÄû½øººëÇ�Ž#½ÿ¦CòþÛÇçœ0Þ[ qâý/> nºPY=÷³¼ 'hD‘|€<ëx¯“Æ'©NºÿŸ'86T·üÃq¬c?o»Û’ï�{Ú±�“ǪN¼ÏìŹŽw¨;r¢¬DÏÂ�|é1ÇN ß 8ñþZ/.r̯n¸ZYi™¼Íþ-ü’ïFݽŽ�D¾O pâ}>euÒçT»E’ýÇw½­.¦‰ä;€Qv½²ï�«N¼/«¬ÔÌ+Ô^QNæpÇ�ÞN !ù`T] ¬ÆûßÕ'Þ×öâ4ÇKÕN·8pímôa($ߌ¢Ÿ8¶qRù95À‰÷í¼ø¡ãEj— ÊzâàmsžPXÛ¾X¨Ú^N,oÕ`âý«^©vågÿæ8Ô1¿·Ëº$ÞÓÑóÀ¨ˆ^Ý;;±|˜à¤û8/Žql©öˆIfv|ßÛå)¡4$ߌ‚g›;Á|†àÄ{Ôu?Õ±ŽÚáRÇw§z›<+”®±ä»w¶˜½wq5ï^ï\w Ð >¿,éÅLjV Õû“Ñt�÷Ÿ…½˜MÃ{Àß÷Pÿ^߿ŬÂ}>þÜ%Œ ïûËyñÞMÞWôÉ~Ÿ¼x�†÷°ßç6@ûüű¦�QW¨>®ÎìÅ…Ž¥Ô¬9~æØÇÛâwB¥šìù¾ˆãWjïü1œâZÇoó¸Ä;ßítÑK¨|~‰ ™‰ç–ë|n9_h»¯9Þ­áèØUê´¯cMaoÇîÂ(‰“¯Ñð6uœ<Äó?ïØZÃ;±ƒ ]u¬î{²ÕßÎéEÜ. æ<©¬´ÌÁÞPÇy›Fñ[üY.Q‹Qv&-O«äñ<�×yq’ã‰÷«¥¼žóx±‰cUe?๕ÕiŠžã• ¹E€&,’Çóµü|ÌŽž1¼ñG>6_ @Õ"G¶šïÁT|¸�²ïEF•!:ƒàø‰·Á3ê8oÏżøŒ²F囋©ÅšœM·M3ùNI”Äù¦ãn©§;ÖÌ'Dh¯Ë«'øá�Ž}k+K¼‡¹k([ÿ›ý¼3oŒ†«½¢N$âÏ÷qùNǧ”LP– ¤.s,ÛTâ=£k›H¼Ÿ¢¬ÑaQÇ‘]O¼ûÞyKGÔ¨�ÓïsLçXÔÿï­j±¶'ÀÛ ’88ÎsüÎ_è{�n7¿ÿ|^\ãØlÀ?YÏqµÿ®éšR€ÄÈ¥(™p¿�Ïßv©3“jMÇÑ8Ç±Š“ÎR³vq<¥zÄhëèå>·?÷&Ž_ªÃ¢N¾ã3ލòq¬c¹)!9 ¸#ë9ùüO5Ìëð°²|•bòõ�;æðû}Üq¯:Ì÷Åó:ñÃØv1¿Í¦ñô­šî(=-M®X—[âÞì8Þ_ì%yݦ:E­à׫˜YQ‚æÿýÕåóK\,E9š�Û|ñ-ö%'Ÿ·w´¦�×åÇ^œ®ò�w¼Ç¯ÿfÇŽ¿¨Ã|¼¶ã4?¼Ý±“²Îjc‰IÈ×TK5ycÿœºoyÇMÞ)öV ü>Û*›¸/E´}LÐ_]¯qø*Ç÷×Dk¿ƒxÖ±¥ÐßP;íèxBé¢vûQŽ…ýY£¬Î ê0ß÷¾Ìñ!GLž¥‚6Ôð-Í];&\-GÔºÔñZUk•c+@õ¥ÆaLü}�Ï-ï`,:}œZÊëö˜Vqñ÷_qÌî×ú€ãfu˜ïu_çØËqæXPÅm¬–¢ìLy¢àÿ�Þi–VuVQ9b&àYýÔ§óË Ž3|ÌÞG€)‰ÞäK9}–ZÎëx¢k8×:¶VVÏýkŽ2zÏ7Æ÷·‹9~ê‡÷;>ë(cÞ³Wú5×P QO¶\¯vüÒ_öR*™_ó5*×›èŠOû!Þ´Dþü2{ÀûÇö°ÊÝf ú©zOM$àŒ¶‹+äuÔ»èKŽ''ùïÛq¼ÖŸéÓŽ‡Ôa¾o�×uÜ#ÿ¸§£êy2뫨F’ŠžïÕ‰:½çøKŸCå¹Jåˆ÷ïýÔ÷’j;øÜòÀÿêsg¤‰ŽsrzeÇ_ÕQ^÷?yñÇŽõýß 8qü]æ{ÕuçúáíŽ9^®z­®–!ù^­¨=àgR9NT9~æó(ŒŒ¦Q8¿ìå_þ‚±IDATsK+‡ÔhTß;#}Û9­-Õþ‡:ÖèÂD±Óâ{Ó—9>ìˆr:ñYÖRsÖVË”]Ø~©%T~£¬RQfIÕcAe$”±ãâØÍñz-h{0%�:nU1‘ô�cþlª^¼×O|qõ oŒ¦¨óúRUëuŽùU\LþVu¯¼NÕ¹ ÁN¾ÿ9Lhß�ÎîŮޝT;,ïõz¹÷“§ÕM&ßS}Èò%ð—±�K;6s¬æx™ª±¦ßk7¯ï·• †žøu¶÷óUÜ'ü:� 0%çùù~%ðq:jÙ-êX?�7©qÎ:Åï·hׇ&@>öU^‚ËÇØí¼8RÅíàõ¼^Ô§¯s,¾ÏçÔã…Æùúhy/>áØDí¹îU”õÀo….EI>˜øG{³ãhGÔVšÞÿkCÇ9ªÆ~Þ9—P"¯g¬ß—UÌaþûï 05eœ[uüÂñ1Ç<þ_ ;övüQå›×q  Ó·2œQõb%ïÍrNó%Ž÷9®ô^¢v&Þ'ZQ-Òåšï¥·äù‡|†c]?\Öq‡ÊWÊ�Âëøu/¢Öï =Øwlã¿ÛI€Zå ½»ûá\Ž*@cÖõýò˜cYßO],4Â÷š³8>ç‡÷8Žs,£ö{‡Zd¤{¾O�ÔÑŠ³ˆÊïM8¯wØRà^ÇSQƒ2f>Ïñ�Éž%bvᨇ5›ãÀhheO�¨9çø°²9@Ê.ÿµ¯ ?ît,�™„Ú99¿#:�=äø–cuÇRÑS_-Ñdò=õ½+M®øÇýGL°ºãO*ÏU"¯ãkçes¢®ðr±ôÇäë0€Ôêa–Q’Æ‹?WyðÅÅ–€î‹9—ö½Ó}Bm|O9α®#îYou|Ð1½º'Öyqµ=ßÇàú…^D­öÛUŽÙ½\ðºÞã¸<–Q×¹%ucž‘2{¬ïáóË‹Ýs®à{¦'…Zø>rzÇÎ~x‹²‰J×P÷µ¦ô É÷ø·+8îW9>'@Õyn™àøŒî§r¼Å±…Œ²Úîi*pdÌÅèxF¨œîÑA8îG£,ê÷ó«?–VKtyÂÕZù‡“qº˜'Ìq•ÿóRÇfŽ>—-] -“®6¹�l‰óÁàÄ|¶ß)ÍÊ~�¹˜<ÁûÂ|ʆÄDوɑ˜‹Y¾ëýå·êÞ½x­ã5“ÄlÊF–Äp§GˆÇù¨“‘ãmô/^íx•²mËYq<îˆíòDþøqo§¿ uîüߟ¿ó¨ M§4Ѹû1µ€?ÓœÊöãYõÂ~üJÇßTö;�ZŽÏïÓÞQóŠ6Àú;o£ø]¿NÙqpâ2þßÄíóh¾üC>Wz&®•}ïñûx}þ8ö§øÞRöûˆóáCJà}.z·Å19ŽÏqLž¸ÿÅõY\[ÄñgâuF›TOåפ±b{Lº-bÅ1÷ñ^¡)ŸŸßõßçDjA�¨ü¼ùfeûFüVgŽ¥÷‰=….Šò2ùû;W¨„3q/¶“²QÒ³ktD‡ó˜tõj5¬Éä{ê‰ü95çSŽÍ•] ¥øˆã³Rž¨-òƒù³hש!^ï7y1�²¤ëĤâĈƒÁ³Ê.l'^ôOL0>äõ¾T5óúÆÅÞBÞ?¼¾WŒñÚñºÑʸ¼cÇ+4Ø:Å"¾Ãß8Îôûœ¦Žðº¯íÅÊÊ7Í3ÄßE2î|ÇŽSý™Ÿàoâb} ï9¿þŪY~ãÛfÇJŽy5$¿FÜÿÊ1Þqƨ6Z” ±úˆÑ¸æïñ»~øi¥ÙZ %ß½þуUeûñÐÇOÿ}ì·¿t\ä8½¯ÉFÎw+›p7Ž‹¯âïâ¼%ŠNó¶9I5ñû¾Ì‹eU€×s¼jâõŒ•¯×ðžôzÞ šx=£±}cÇšŽ%‡ø»X\à8ÛqÒ I@ÿÍ *^ïòvûÁûÁÊ®3VVv­1Û�‹›•]cüªÎãOÙüYâ>dÒm1Ô1#ß·);OÅuW\s=-–w>X_Ù9qÎ!þ.îãœxº²ï¡Œò°µËï £ÓMì›�&Þ+ÇãØ¿&Þ#?>IÜÓĽ½×7:‹ ü=M"ònÒ�ü~±MVs,§,‰¶ˆ¦rïìçÄy«sþìX{¬ü ŠÉ¯�#¹•ãeM‹©É÷Æzz'ˆ\JËÖ¢MööúÇp˜¯*ÍMþ C—È{Þ)[s©ßoÕÄëïßs$bb‡¹Šû‡#’¢‘„=9Ÿ·Ry]þã4¼û¼~oœÊknçÅÇoS9âÆû0Ç÷üžV ù3¿×‹=TÎıïØßŸ÷wšú{Æv>Røuk;.z=c?‰$éÊzl”%¶Ó±ŽýüqnÓˆñv�Ï<ŸŠ9ÂÛl5Äë7[Ñ�òJ³š?Ç/Uƒ¼±ë£Ž+»Q,Ë¿Q‡ðÛuÞ\úóDRi ï¯çǧñºqc¿÷m•ÝT§Šýd/¿çÁª˜×=z—Ý¡b樫Åëy”²í;¬_zWSż~Ñàþue ¿2œé8Øë~Þ4Þ3®3§b÷k_¯—rM‘kl;zÝ—òâ“Ê:|”Ùé*‡:êJc¿·E$ìb[ÄõýKUžèÿeç€ÚŒýy¢øÀ�·“ØÔëyò OöûíÅ6Þ4¯§b‚?/vqÄïëµJÛcoÇamNÂûsO¯ìÞ8â^y1¥‰Þÿ:~¡¬“Ò㪘?Ã�ʾ»aÅ=ü¦ƒ<1o�ˆr¿ë(K¶j&’ïoÃøŽT»=àX}ïW«æï=ey§Õ…¸V.rÌ*U“5ßS{®7Ùó=Ä�,õÀ¾pÞ’Û‘8І G\|þÚñEe­Ô)‰÷­tÑCl_Ç]~ý›ŸÊ{ ·^469¢Á nÞÊJ¼‡Hæ|Óñ°_ÿ;Ž2¸I¢‹ãF?ü©Ê›1;öƒm7øµœ'³¦¤è±íŸªA\P:~¢¬œPÜ–ý½ÅvŠž[ý>g: õXí°”ÞëϪAùMÓáJ·’*£™±®÷:¾ rï!Êïléø�ßç—Žº.‹6ÀMñï¼Þ¯tìWÖó¤ŒÄ{ˆž¬ùµïs|ÀÑçz��I?G$F.Qy‰÷=EÏõk_âXt*Ïéê„kH�_wŽWÖÓ+’Íe�vŽãØ—÷G§ |tk+yÝVvD‡¯è´µ­ÊM¼‡({§ß‰ê¼—aŸ”z ‰{Ç^ÊtwW9‰wå¯çÚ;ýúnK�߉¼>ó:¾§¬á*N£ÓBjâ=DÏøHhGÐc~�K[«Z•�õºï�×¢Žòñ»&ñŽÿÖöó|ÇK‘x/O4î9>â¸]Ùq†Ä{faµ@“É÷.Oöª¼îêÏ”®Ì›°FùGþeebbD@‘aßÃXPY"þ!¿ïçÔRQ·0ï‰ýs«:Ñ‹"Z6ã‚s35Èï?·#^¢$NUº¸˜ˆ ËH:}#/‰0©¢�s©½�§)zùä½jãbc Õ3¹I´z_î÷½°‡7„S“r±Ù† Õï)]e½x£ÑØ ‰w)kä©ôw“‹såù~ß«ó’U*­æ»×õʶS,ËNøL��G8nòû½]h ³DC±²¤ßªNô¨¿>OüMÞ¶±RZ¨Ÿ¿ÿe1wH\wVޫ츣q£cÌ‘Ž²a óº¼-¦”•†YKÕ‹doô�ŽÇç£Âú ´cˆ·I$œãœeW§W5â4FeÜâ÷{§–wL‹{ÁH†E­åÔic‰No?Îæ7W5Ên�çØÆ�9¢SGÕ×yhÞåŽe�S{THû)›'(FÄ]¶çZ‘i2Þ‡ž8?Vº•Õqqa㈼{¨~1ÁÊ·üþ×9ZÑ¢5‘×gE/¢ç÷¶ªOôD:aBV7ºv~߸¨¼EÙ0ʺD�ÛÛò¡õ­åõ‹:ÞÑ˧H9‹2Ä×[óÞF}×éó‹/Dã7”Zúíþ®KOöú5#É7�Û©QB᪼§åLj©¼2J}D/¼YT�¸°¼ÂïûM¡qþ☠­U÷@œT$þîȇc„佉£,å•b�’Åyá÷y™žÆøýgpDò!Σ˫ïqÜ=…øN^ïˆùªRù£ä¦&ê’_œ'¤½¸•]ûo«úEÃüϼ§Ä<•«Ì™%”Ígå�æFAÌѰ2å�Òù÷³BÞ±/*,ì¦úî9º&:@ÖÑYlšºÜû¼ÑÒ!Ÿ˜1µöx½R*ã�8f�í0ðš‰a{7F«¹ÊS¸÷cÞû<&b*2Mv�!îj*Ë“÷Xˆ‹¦è±ÛÄDq±vYÞàZSv&/91Þ÷Qu½|†ñY¯Ïo§Q²§Rn š.i6ÑÑJ=ðJk‹c‰#.–#¹Ó† »h¸ÖëTdbå±$•�ÉËÄ�é¦?ïu8{BVW È.1GÍìª_4J�1I”²3=—£¦|‘ù ÊI¾èº£ê¾ÿcB6d”ÚiCÒ;~‹{�bÔVkÊB�t ™�ÕîŽsââjÆnq^çw�?WÖ‹ûjVLîåZ—SËäy„k‹ £âPçÐ6rÔRêµ�ü»™Î±U>Ê-ª DÇ>JOŽ­ñŽš]N¾·eÝÏQš…ÚÐ 3¬<Ù:î®v9:¿é-Cы͘Dó5/†¸_ÃÞU½³Tl2¦2ÅMN|Þ U<ùZêo1†<+ýжF¶¨ŸxcÞ3³�º^v&œ­teÔ�˜Ìˆ^ܨ]bHeŒzz·Ê•Òðú//u4=ŸKLPvYMÇL"J¡)K¸4]Ú1 1ïegzÌßqÜtG¯Ñ¶Õ\�óEÌÏS[ç¿WÌ�½ÝT»DÍÝó$ôHñgŽ„ûj®3ÒDq%˪/?U~�H¶G©£õÕQéüKÓ¥6ȼÌ…·-�€êĵÈîNºï,âß̬ùu]”g:FÍ�rëªÆKÏt¹ìL[n&~©t]¬É?ø-ÕN‡ç ØT�ž— CùŽU…¼­cîƒuÔQk~c5,ïý:^Íô|DôŠÞ±}œˆ%åüÒŠsK>ùÐ#J3Ÿyÿˆ×ˆš¹s«�b¤M”Úz�šÇÛ˜TsµC4¾œÛDïÓQåmê~Aíñõ<ÐCùq/®Ášq8ˆ‰e?*oð{läÅ©ª¾žvQ1Úð¢Ž&à‹ŽŒÏ÷Ém¤©u¸IDAT)ësn•=àórxñ™Û˜‹ßÆy‡ŠÆä£²£qbM¡jmj|¿ïmö ñï&ªþ¨ìš®ê¹ûªéJ�N.¶)ùžZ¦ S“ úÇå3ÚšxŸèGÒ':jKù‰Tëy[ì¤ øu£ÌLU“ù¤h´·‰·Ë2ʆ�•]c±lQ·xˆ ” UßÄhe8Æë½†Òõ­FöZÞ.û •ñö�‰€�Pƒ|BÝ.ío¯q\“nªdù1¿Òž%‹û“óë €©ZÙÛÿG*™_3_WQû-íuý¸Ò½GŽÞî$ÞGÇcŽåœ/»PHu…�ªñjô|/ÇJÓ‰ä{^'ï'êŽ÷z�SNð}éùbâ½ÃT’¼fà!꟤šïÞ.qƒív­u:†¬ÿ¢ÊžiÒ§sËëò!ÐCɇÇ…r[K&MMô�ý8u¸wkd¢%¥yzÇÛ5z³Æü?Ó ¨X~]{¦ºweW.(s"h¿VôbŽR_mïñ>¹‰�MOÄ9ÊÞïí¿½Jâ×ZÑ‹O©;öð:w©sº'ê’/åÄû B~-¤*µ#j}êÙÛ¤ÔIãC ômu/©øUµß£Ž›•ÕU¾Iéuž§fý'Úù�ú)µçûÁên¶H¸2$°]RÏ-á ^ÔdL®ß ŸúX—RŠ¡o=ß':¨ÌÄþ#&X}µ€Šù÷ <]>OGÍíoªù1¾K‚&=ßSGè";%NJþCuK4üì* ×+K¼ß'”ÂÛ2ê½ß#¤éä{jϲgÕ¿WšÖ÷|ÈK–”Uç=’ˇ;¢ÇÁÒŽ9ÆMBY™ƒ¨Ù½—²ƒwŠ5&7ªê÷ñ”ãhG •}±?òë ;Þéx«#’·qS±šã¨üùeù’y{îàE×êUV./É´™ºííþÕhk͈—|ÒÕTCÝXúû�cr×ËIÅŽ/ “›Ml—Rù÷²ˆP�˜h­ÑÉKðñ¼ÇzªÏ)KæwÙvÞïšó2}M‰ün ìº£ ·*k”ÙDY}úÙ&»GžÛ£ØbôñÝJóå‹ùª¢ÔÌãBÙ(=“¦ñ9ÌšL¾§¾w›zí§öTžUí÷¥{ÀñžH.;>è8Òq�ã¡IŸäÿ~Âq–ãsŽÅý¿".Qq›ª=bxìý¹¶u\à˜b¢/þ¿ã—ŽØîQúá+Ž¿(Ýzy-çUŒ&ˆÉ"qå"Þè˜1¿ÈœKÙ÷¿±²‹§U­”²3ßW¹îRv£CYãó5“4NE©ªå1óùu*×·¼�̦nKé¹Ü¶^Ï�)Ͱ“þ©r=ìø±#戈yæÎ÷ã˜;&%‹ ›Pùûñ—½¿QÅÔQv&ÊFlãˆZáÑræ|»ÄñyQe ÐÑH]fãkؽ„ÉÈñ‚¨ñ[ö1ãWÊú1RíÍŽYò}#®"Ù5s¿«ôc:Ä¿Û�ôY•+nä?©ìØÉÃY'9>/¬¬~õ>ŽUžxý¤zõÞ1¢ëë*×µŽÏ(»¶Šk¬WåÛ"JÄÄ5ØJÊzíß«ru¡vçÄsÛ*ë”5�ãùö�Î_qN\GYùÌ?©\»$\+Lô!¥»Ü±’?ò‚ŽO:N‰r“'0ýß÷:Np|ÄÛ)ÿw©˜YýÙ×ú¬î2Š?ö~¹†ãïB®RŒó1¯Ñ’ªÔ|/Ç•fØäHRØ—9‹  És}ô ÷é˜ ULÙ=`wóçXË1Ô…£Ÿÿ7Gô̈‹¬K•n äÖ.*·ônŽüù¶tœäøM Q‹Ïÿèåýù÷ZÞ`1ƒ²ž­:©{»|^å•�ºÚñvÖ7;¾ìøµãÇó‰–¼qêvÇ厽‘ÀŒÅóTލþ�®¶Õû®íüâý8~oU9.v¬íýsvÇû‡9®ˆÇøG/u\ç8Ñññ|?ŽGisS(KŒ¶MË#©ð.Ç1Žk÷8žo\õòAÇoóèh¤Ž‘q‘¤ÿ³ÊÓ…IÓ[/¯½½–ÊeË¢—㪎ÃW9îr<ÿÝ{ù°ãFÇùŽO8")‰—‡„Q°ŸÊóSÇ\Þ‡ÞáøN~l¾Ãñdüc~|¾Ù1ÞñYG\ßD"¾ŒRha ÿ~¶Rq{«õ|/’°›Ütj¯” �v¶—ߊ½_\Ã+ã÷q©?ÿÁ*_”!Hù *¿­ÒÅPúMÉ'¿ÆG [>T ñkÇR/œ#Q¾‚?K)=ùý:‘̉ƦÔRðçKmThJŸz¾§ž_=·¤6¶Dãèjyâ•�Ií™Xt˜X-bB/>¦æÅ�ꢉ¨ÙT¿#T!/¿òÅVôž+’|YdÈ篯4»;‘Ü0¢G—·E죩“Î Ûó=e4À=y ‰Êøõ¿•ßM­µ ‡� «úTv¦òžïÊê÷ûFYONQÔüô~M¯§b–ößÏå×¹oÀç—±|9Ÿ›¢Ñ;ÌŸ)/Pqq\'ù>¼ÔQ`‡¤Ô:K”d³HØVÙø�ø{ŒÉåߢâN­¡$@Lôx�²¹$ŠØT$ß½-æV6HQã½-RG �%ÊèDCÄ«UL$ß˨ißFßÈË"V¯ýL~ÜK9¶Æ5Æ×†ù¿oã£ü¹ã·w¤Škâ9DƒÌF$Þ+Uvmþø}­]rIa !ïØÉõ]G5Yv&õæ¶M ’A'´›šV'ߛ拊?SÚ o‘ ‹”ßÇíe—`˜ŠsUÌÌÞ¦³ ñüUTÜ=JOŠ"†Û§öh¸ç»·ßJ^ ³ 'WW«õ·”¦èh”#õü2Í dïÇ1§ÇÜ*.Fø<©ê¥–Ò¦gfêÍJl�ƒT1o÷ ½¸ZÅ-ïï¿Ë# ›²ªŠ‹dCÊh¤�x߈aÉ']W´Áq¢ÊKy_{TY瘢ޖ�&Kê¶HšÐ~yB*ež§9ósrßÄœ0•7ôæ%0~¥â–ÊÙ�áõ�XQö(¥Ç‘{ä2ò0»û;;G芺ØÝbIDATø®V&ñ×åžïm’r ©“ôô–/*¢ždL.7—Ò™É=Å™ªÇ5*^s3nvþ4Ö“ü¼JiuÍ÷‹žxªXÞÛoÕ�ôÊ­¨â"9w¸ê ˜¸é™CżSÙ¤‘£¢5 »ÞŸ£pn¥«~fÊ~nöz®¬zÄä« «˜”^'}Pß«±”Ü>ŽULLÆó¨¤$ðGQJOÇŸVUd ¾!æí躔ãó…Þ×R'¬Tt&ˆÑ‡E;­ÄçüÙÏ)êFo‹_ªQ{<î[†I9Q\sݬ~9´Â2[“‹sE; Åþsb�WËå“Ç$½Ÿr̤43kx©yœ(ý�Z§õ‰‘;Ôq?ôÉ÷r¤ eO¸ÒY¾˜ˆ¥#êÙ–U«½Èþ–2áj©µü¦!%iÛö–ž·‚Ò¥úÄÅAJò}˜›¥wª¸£|ó/Õ o”ˆ¤ãPCi'±¼º§/ç—79^¬4c�_Rß)C�ë4ÌçL½¹Hé:ÿ¾Oòï;Jz-seH¾(Ÿ{&¥1º® ‰ó~ÄÜ;‹ ]•’p®s_{ÈûZŒÄ\WÅÄuÆXÉ÷”k®Uo‹?y[œä‡[¨˜Øµ}wêÒ9ñloÿHìípçÄñj™®lÝ–É#ÊÆ•ÕK¿‰kæÏ•==*e+9Œ&\-GjÏ÷‘›µØ1Ä-†ÊE=˸ˆX2_¶IJÙ™ëT�”šÂƒN°3¯Š»¼Î™ëó:ÈW©ø¾4Ì„« ª¸‹U¯”zŠoÕhéÓ¹%Œu~)Ú“¼kæö±áÅ>F<;ÀsSnDïö{Ô=™ÏeÊ&Š+"åø>ŠæSq1â Õ+Î5$ß;ÈÇ«H¦L¸�2Dq�Q4ù>Í멼È ¥i¦¦‰k®¢É÷”k˪¤œŸð9ñ÷ªWlÿ¢“ó6~Nôþ>§²ßK(»Ÿ‰jm»O¹V~ÈûÄ1BÛE'Ä­ý]'¥ ç{9WšÞ&ß}=Ä"Éô£7G\TÆÅËÕ~…{¾ûDUË�Q¿Ï_¼�UЫ|Þœ*®îžµ+mȉ$žŠ÷ª uo—˜ 'z˜9æO¥‡¼¯ýQÝÑ—óKjÒì^oc5(Í­Ñ�UŸo›:æM¾§ßGQÊöºbÀÆŸ2ž±‹ÐEs«¸Ûkš‹cR—¨¸¹Çø÷ùUÜùuuJÙ©e6ÛæBÕ/¶Ñä{mçD_[Ç5IŒpŒ‘yQî&ÿó¨R®³ënÄð¢³ÀÆ>v�[ÀÐó=Q>ÑÉìJӛ价G”à‰Þ1!Y$ÜÛ2qMŸ{&÷˜ŠM–3h™‚”$sݽüRßsв3ñ»/ºOÕ~Sì÷{&/?°¤Š‰ÏÛ¥ä{Š6õ|O- 3ÍsKÞ›0eÒஉýx�ómÊ>еc^Êñ}%%ßU¿&Þåx£Š«ý{÷uÆ% �AÆ*ß™²-Rá…x[Üèm£>‹t4z�ÿvz¿ÆßÕ];îU–|÷÷ºœ+»G^BíQ÷=2É÷v{±¦�A× @©H¾§+£r§“リˆÉL·vl¥´‰ÈªTd)z1Rwo£˜4µHòý¥>ï•*î1Õ/¥äàeg50%Ml“ð€Š'ß#AW×<MkSò=õü2Ö¹¥¬95ºbІò”Ñ®óRJ9Œ¢”ƪÚ÷ ß<ß7!ˈö¹B_uñ:ãŽ×¨€(GéýujëÝÕk®¢eªâ¸œRV²MºvN,õºÈûu\wìàØF唬BÝ×½çmu¯cU‹ûrüZ…ä{º”É�ÂÓ>Àu2ùî ŠH }TŇöµ]Ñ}¬¶ç¹¢wúùRŽRýUõRæhb›„GT\ÑɛҦz!>¾F-ö”„CøÝÿž²wQ‘FÊa5ñû¾_ÅÍ* £kçýØR�%¨_¯3âú«Pò]ÙuÆÔµ]ÝE“ïq®êKò«öíïûêGK¹ÞõÛoêŇ« “Š2P� mt“ce¾ :MÞxw¾ŽO¬±ý6WšËÔ1þÜ 8ÎVZM½.(úû¨;ñWt=ý ’|ÿ_/Vq$ß«—rnkK⾌cëXõÇSöã.*šF‰†h€ý›Šy…ÏçôŠ\“ïuœQ¾.^g¤ìkӺεmQǹª.Mmÿ¢ Äùœ8³ òß®âø­ž(ïS2*%,»hMï@µF­×[ÙÖSZIŽ0^â Š••ŸXGõ‹äÂÞBÝŠö¬McžQõþ­âš:î¦Lô×–¹FɶJ½‹nã9)ûqÍ ê5•ÈN9Nwaô¶èÚù0¤¬3šÓÅ댔}mZ¥S®ëºxLtþ¡.èâ¾Xèš×÷Èû{ñKÇ"ª_\ï� ö#ùÞ^¿ð>ܵÎV@§t¹ç{z'n§t©|0žÎñc?ü�czÕï/ŽÕ«zö÷×DIƒ:z ¥”jªÌCÊUÑ^µMIù½7~nñ±ve¥OúuáÏéÚ÷šªŽ ìšú}®EîFšAöƒçT\�¿©¢=d]Ç®�7ÓÝÄuÆ ØÝÕÅí?Ôþ KÇå~ø 5ãNÇ*ÞɦÎ{d’ïíå.¯ñ¾<�T‚šïEß|„·*›±>­sÉ*®‰crH½Ö¶ójÊ9±‰}1åz÷©AŸèãk4°œ¯úïW8Nwêk°IÏIÜ#£ Ñ`v‰÷ïõ½ 2ŠÀ€š,;“úÞ�•‰ÉT¼x—Ò¥–ógÝKYmûªÝ£¬‡ûöŽ9|°«c·Éï¡h?ÊÎ÷€Š+#‰8¬UÜ?y’÷˸).Úr.ÿ®j½ñûÅùò*î.uK'ïQÞË‹•î"ï£÷ øÜ;UÜâê§”ý§kǼ{|^JÍåªâ“J�‡g,£t>D³îQqµï>-©âóG<ãsÖƒÓø÷A�SS²\Ý“JûýÞ¬´ˆw¨]R¶ß;U¿”÷¼oˆçžì˜WÕ‹ \p¼Û1‹+ïpì5Yâ=-µÃ=2&óœçcÙPš.—�i„Bqay¬ÒÅlÒg¨ÅüYWòâ³*ßÅŽ«”•܉ Ì;|1è�Ò¢³”�)î~·Šê·šêq»cQ³¶²Æ¦ºÄÈ•—ª¸ß uØÃ± Ò1Äs#ùþf³˜²’dxA׎y÷ ø¼Ö'ß}Í×´ó«˜A“)çÃŽŽ3 Xc¿,u�Q¾»•]»IŒ½ÎûÚüÞ×nS}Röµi6çe'cÚ"÷­1ò&JV^¥ú¤l‹GüyêÒ+D�šGzW~NôgúŒ+©\1í2ÇÕŽ+w ù.:ʃ{dLItÜúIÔ€÷~ø HÖå W›*;sŒcv¥;Ú²«ÝöW9bß¡Žh©+9>í8ÅñÛ!ï!e(!й]Å-è“vêÄ‘ó{ÅP¹eUÜ0ÃóoRqkª^)ïw¯£Ñèh¤˜÷ݘ,ëóJÇÛ‡xþ-*®Œ`m”r#:«¿Ë%T¯”„ÿ@7öùhŸ¢Þ¤zDcèt*fÐï<¥Gj\s¯¥z­#t’sQùn×¥ëŒß ðœUܪWʶHùœUI9'FãGÊÈË"R’ï·Žõ„¼ÜÌUŽÕñGŒø~¥c=ÇŽs 4ž•‘Ÿ&÷uïóGÔ=‚è£&“ï�ãƒÎ• ù*Ãáj1ÖU½HM DãÂw”•‘ÙÙq…Ò½€ã„Q\ê÷öAÕg{¥¦·Ñ¥*n“¼¡ ryÉ™UÜ%êž”ß{íÇ GoWV¿³ ÇäI›A¥ìÇïLœì³­R÷�©&Þþ[{ñ wåÏ-Z‡x)ÕcU,ïµ~³Š«s߈Ò#ó ]–r|®s_›Ç‹UUܯxNʵHmסù9qC7ȶ¨[ê9±Îí¿‰ÒêÌ2B">ÏLJ%cvqD¯â¯9R:ôÄç^@ÅË®q�Œ±|Àq–÷3æ��|�6‡(=±7ÑI5-b+¥‰Ú�Ëùs~r˜Yã§ÅßAÜX§$P@žÈKé»cž®Ã.ªOÊ R”€ÙAõØTi7" •ño#ê¦ÇäÒÓ+]4xî­á¤|¿qÖҰÓW[ù{M½1ÔG•f˜ãØ£*fiÕcc7Lò!¥|Åy=è:¤îh^ÊuÆÂyL>¦´Þ ç¡”msíÔ5Rkg¥•uíã5×{êêp¢ôãÞ Ò©÷ÈqYÈ÷W;ÊÉ¿¶€jÅHºñþ-Ï,…t9ù^[Ùd¢÷öN*ÏWÕ~)C&cXöR¾ ¸ZåJ¹° ž]š”›ž¨A˜z¡:&ÿN7óâ J3p‹¾÷ï&ý÷Q¯óËT½O+ÍÙêž”ß{�ç–]ôK•רx¤÷Ë¡jRûù‘PMæþŽÊË�ù=ޓϹR‡ÔóE¬çΪ˜·GÌå�ÒÛû¦!KJ�ôpѪË�ùõgSZi‰a¾ó”¸‘ ü”*–÷DÞLèº_(Mó6ýïkÑÛv[÷p~=5– •f7U,ætðâÃ*î¯ÞãÕ?ѱ«*–_S­¬â¢Ìâ}c¼GœËRqgû=Þó¨\)%ƸGÆ Þá¸Ê¿ƒ9`h]®ù^ù)X¢§D ùü¸ÊuÎÛXÏï?ò›Ø”ƒêþŒ�¨DyÒ%åÂ�!uiRozöÏ÷«JøµcB¿ï)ݰ“\¥Lš {ªBÞ.q³¹¤Š‹9P÷¤œÛê8·¼ÈI‘˜tº¬É(£×{Ñ ‘Röãè±ÿmUÈÛjK/Žw<ìÇûÕ�ì/cØ#O€V¯£g~¬4Ã&öI�MÍÖªÖ{UŸÔ„è‡ò†“*#tžÏ¿Ñà•rϰn4\ªZG)­y ó�·E”½J)ó’·EÕåOPÚHÃsÕ_ŸÏK£T¯ó}üDiÎà9)eÔbâòÒÏUþìoUZ§9î‘1Œ˜Øþïw)�P(ÈÛý„ Hq€Ôåžï•µÒúK™Áñue‘•}ƒô%µ_ÊÁ4ff¿Håû¤#eÈ"­úi¹ �–øîŽVu~ä¨,¹? )I˰넊’0~ݸ8ú–Ò”U‡¼K*¢*IDAT=VLÈ&Vý­c/ 7ÁïX¶×û$~®4ï›��<)�_7jV–ÿg u�¥{ýÿìXDí£ZŽŸPÝU1!zjù’a�ë)É÷íToã˜Ðï ªIþ;K™x5ö‰ã&T4’ïû•íŠæ¤^g2¡¢Î~ÝÕ˜Rß< s�‘º-¢#È\ª€_7’Ÿ©åIû|ͽßãœXUʸÞMMîrNœWÅ�2äh³Aí«4Ü#cX1ªý ÿž—ê6¿�â 5¨Ë=ßKçÈK1Tü.e³˜—]bOŸtS&êªKJB¨ôZöþNÞ¢†Îbê¼ßÆÄ@©½ß×™�Í�P*¿æAJ¿ù+*J²¤”ž‰ãàe'ýzoôâ|¥ý–£üÊê¦6ž_Þꈻè5»°Êûàî*(Ÿ ûV¥9zBɽÚò„ÑYŽ'û§èá=©ëç\èX_íµÎVv²Á¯ßujY›¸ø¼@ÃI)%7¯×»ª²QÊ/¥·iö˜q‚ÒÄ1úܲð²^Îßúäp¥%Ç¢óÃJ®¹�7$ÿ@i¢ôÆ0#IŽU6Ê«¨( Û¢ÔÑSy'Š“”æÉ^£íuœ÷Û*‘_/æPJ-+ô”ãÌž÷RWÅ=òF¢Þ;šs�÷>¸�P'’ïiþ¨�|Í÷¸ulçø©²ÉÄ¢tÅkT¾[�àø¼º!墨Ôzɲú‰ÑÓeF¡i‡)ÝNþN�-£7h¼Fþ»mlR9ÿ¦ŸUÖ5Å«—ø³¬ LȆŸÆdN©õïOȇ¼�šÒŽaþ.Þéø–ãze½†S†OËvþ®žRš}”&ÊÏÄEøj*AÞã=öã·ŒñÔU?÷óoq”5)z™bD@¬_)£òÆÆ2ÊU’¿–O_tÒÕ¿…¹U"¿^|ÿŸTºa“›‡ø›É½Óq±?C)s>ä ¨8'–šØB³ü»»Gé=¢ß¦¬—bêuÁóü:1¹qt>H�(|ïaŽCy�ìÔÒ"ÑsùвŽEy#DÌÝ’:ÉöAþ|ÿPÿEg™Òý:Ñø T©÷GxûRz2åø:Ô9w,þì±/Sb MŠÆ¨Ó¼/¦Ìu�å�ëRÑpò½É ôÔ›–Ó½þKÅÅIznG%ç`uÇßUÜ›T®¸È^Phœ/JOòo.n|fWš¨ß¼ˆ_k'¿æe* ïet¨²Ê2I�}_YɃ”¯(§ñk®ý¼ÜÃÛåoÒ„lòÖ˜\õk*GÑúá]·�·åŠJßg·ê˜P÷Xï/É“âú5ŽÊË­¥Ì÷½�£Wa$T ÷ÄÏËfì­áD¯ûúo£!êùêuxLÅ”=;&B»ÉëöQ¯S¡^þÛ-#‡R÷͉Š6¦Žw­!É–Hº¬æíð ùuÞ®ô’I…D鿼wj�¯˜“ãÖÍà×,Tš-¿ûŽcc¡¯¢LÙFJ‰º½¿|ÁûÚÁ*À�“¢ñïJ#¶×ðâÜð~¥‰{¿ßùó|ÍÛ¢PÉŽ|$A\o}Déâ¾ë@�Žh¤�óOxûŸ¢ò‘vç¯U†A) $¥Ý#ç¿Å8Ñ9 M‹œÚ¡q-âßóç„*Ñë=]£egšL¾§öºïR=ËÏø`”2\»n)õèŠÞ$yO�ÂüÑ›æ4•×S”ÉdÊ7€eÜ DÒüRÏÑcã‡Þ_.ä�üü•¼ˆÞ}[©%¼îŠ8¥×\ Ÿr¼?zK+Kª>>Öø¹¯ôâ}ŽYSÖìóGù½oRw¥üÞߘGÜ¢ôò#“Š}¨Œ¹>ëýrs/wô~4p¹*ÿͺ^DTJƒk$D¢'ÜWýzñþ?T;DþH<Ÿêåa^¯�J-ä æmeö*ú~Bò;zV§Là7Ñët ¯CáRGþûH¾Å(€Jê¦(«ÊnµS”÷\ÿ¶·ËiƒüQ>Ê)Ê/}Fè5ïWúû>Ù7Qšh>(:?(»ž;Ù¯ýôX”×I�yb_+ë7÷%¿÷Ð�}ü7‘´=Ré ‘´ÜgB6 k4(Äh¿¿ŽõG~~t@‰ãO40Ϭr|-ŸPv”Ä>ur^Žïþsù#??,·U¹£^�ñûß5àsSî‘×R òQQ6.uÞ—‰¸Gî¯:ëùïÇGÿ–RG1uó ©ÆÌ­T‰¡©Õ;ªh¯Š¥Ô°Q²pÒ|B6{ö�”ÕË- “É”ÀûòAy½áÔÞïEâ`k¿f”2ˆ¤NLD ™˜ÌîGÔB�ÍbÊ>©u}+áí²Ÿ?Cô~š[é¢ÎuôbüŽ_óWÊê¡Þè¸3¿éŒÞk‘È‹ÄËê*¿”IÜ ×6y! ‹‹‡5Êœ¼Ë¯“˜~ÜWºèá½à£'nc?~Àñ˜ßçaÿÿh(šÛñÇÊÊÊǤ–0˜\ê<UˆÞÉûóG}ß8æ]ç¸Ýñ{e5gãwǼh Œc^)e"&Sx"fw1ê0®RÊóÍ©¬×ãýzCÕ'ÏÎ1²aU5Ìë~�×ç\•Wo7J�­à׌‘OQS>:mD©ŸØ7bG|ö8þÇ5Ò{5vI&ôK$¾S“ïÅ>ôãïoÇyó~Dcn\gÜíÿç€Ø¿¢!4Ê„,¡rÝä÷I©órE§ƒ2Îñ9c~›#ü¹£¼Ot‰óÖ^Ç;óQG‘äŒzåÑ@\öƒ÷ù}öR»Uy éµ¼�ÿäåÏ¿Ñ ÷ñÿâ> Ž{qü‹ã^�#¾>ÄsSî‘çðçÜ×ß÷§U�ÿ>~�ñÛ)³D.÷ÈýUwÃÊ6yåEW1¦¥„T)å3“5™|…VÖ‹”õÒí”|8uôÀx•ŠYÃOðk]?èùo" «65y&½J¿¯rERýãjÞ õ§fGe“œ–i•<žç߈j½ÑV·õýü Sk—Qºc ¢‡u$bÊÚ† çñŸÉ6kÚ�¿I$SÇþ#Vʵ0¨ý½]îSšž_Fy«ox_ˆØ(;p¾×ëWSz’Ÿ‰¿H¶G²­ì$`ªbÉ£2÷™˜ëf»<€çEÏ\ÿ¢±ªìÆñ-òx^ Ççxƒ¤};oÀýŠÒç*™Ü†šä¤¦sÕNj¿:Ή³8>¤úÅH°ßñüß(ͧòN4öû>2èåI÷ØçËèT):†]–�pl´—q½]H1ÁûäjP—'\m»H¼¯ã/¸Ô Hkt©ÒÄÅÁu>ðÆD’_tláXÞñ|½»(•êÅ$“Q²Ã=¢þwU‰wZõK’÷VºYø/Þ.Ñ»÷xuÛUþßÚ,J¬éïéZUÀ¯“œªÜ"·øs Ó“mTÄMÐW”.ö�²&Œ24‘Àþå„ÌãŽÛQ–,zàÆ¹;öõAضĻòG ¨Gt~&QØF—TŠ3®U®S·WÆœ-(,F~v˜?ˆÑJï9÷ºÑ€t–#’ñ›:–ÎGÆ=òl1â"’—ލ¥5Š£YU‰wî‘Q¶±~M^² %𶌹åRTÑim(ô|¯F [ÜÔ'è«»ÎP9µL—Ïã?jêI29šÊ52/Qÿ™puRÑ»7êÒ¿^ݵNûR§¯¯ç—¸[Õç–T­¨ý½y»X[0Fm½Kiúz#ú±Aj�ůñdLª«rù“{U]Ú÷â÷òne£€Êø·÷/ÿö¶ñÃËÕMQNd¨dçÔDç¦|ÕäÜEÝëØEhÒ§½ýYˉNËÙ¾nÿÁ=2z$JD]“÷€¯ú¾e”]òl5Úë=4y°íëÍmL–µQÇï!†�—Õ³­ hÕ/‘÷ïñ õOJÙ™Ø.Q reeu*»$~ëk¦L€Ø2}ü½Çè e븀Í´1lô!uKÔ—\#ï™–¢��71¡ÝOUž¨_´¬OþÎóã~4ø<+ bÞß"Ù�cº6²ö~e�Ç¥Õöký΋õ]»çŠFâU¼þOM9ÖÛ¿h Í«_¸GFUb³(A³š�Š’3éîWÚL¾÷íæ6.&£·û§Ôѳ͋ï©?˜É½dÞG¾«þ]€¦ö|�í“'Æ|SwlìõîjOº)éÛï=F"-:d]Ò$1÷‡²É|ÿ¨îØÜë]F‚¾ÝˆžëíRêœ~½h¨ÜZý‘ô�ç Ò]¨ÝŒðþVVÏÛºDÕªUÌ'“ϱ•º#:g¬–0' Ò�÷ö/|þòßþZéåYÛ„{äþjÃõlŒLºÀ ø.§Û(rs}êÛ„Ô9¯’1̨Ñ[t ŸŒOV¿Ä„j�×FšLÑž˜ÉIUü/ïó1ä÷,µO£54½]®TÖþ)µ[LÜ=…ÏU¿ôéFâ³þ~6t<­šù=oòb9eµÂÛ,z=®çõ=SÍŠò¶5ºE/ÙMT�<áÜ—ÚúÉÇ o�ÕÕän›6ž£‘ÈûÛQ^D š¶7Æ}DŒÚºCñkÿÌ‹�Õþðq.]¾ƒ%ŠîcÑ©£m#A£�>µ4]hcÉ ¢÷ìÜ#÷W›î‡~ì|)eÇF‘ÏÑ)öµŽÝÔ¯‘§uºK £ç{šH¬Å`‘•kø¦ø|mj¥ŒãßP13UÙTÙÃm±™£ñ†0ÿ~®ñbU¥OÌT•ø}¯•O‹ö‰ž�oö÷³�”�äXA-ª7 ïnɤu¿q¬¢l·6ˆcÐ:U6Üøµ¿¬†;'S´¤E) Lo�=Ô®QƒQ›w¡—¼¿ãÅ–j¯›•%›+Oø=bBʘ{¡ö†êÅ9tE¯çÍꞢ÷ìñYWV{ðQ¦h�’æ>‰$~›‰8~¡bfP½8Žìåü!B!‘›sìï‡oQÖà<^FãÖÓó½¸Ã”%FöïA}÷©òg¯¬�¡iqá½÷ŠLŒó<ìß ”ÎûH �ŠúÐ'ªYqõº×ç$¿QHªù>9¯Ëµ^¼Õq™Ú%nÞêõkS£ 27*kÙÀÑx }ðzÜæÅÛÔ®$kˆáƒ+ç%ZÁërµ²I‘Q³bÀ ^Ÿ:’‘ðjÃ1îÛŽãÕ0oó�zñ5Û#9Þ;&ŒÄ;%z,ŸËaµ`8õdâZlI¯ß½ªI~.XT-¸ÁžÌ9Ê®¹nQ7=–MÈ{ùG­â¦'º‹òDïðú”VJ/ïÑô½O8?/-W´QaõÙÉ9™ÓŒ¸((&�gGtøYØq¤(I3ˆÛÕ0z¾'J4D�¦Ù½³ïähûPüRä-l_TsbB¢5óIÍžTq •ˆ(Çæj®‡]Ô�ÞUæÿ]t"²Ò/â8áX^Íþ†&õ5¯ÏyMï¾êâù%’¶ïò÷#©Šö^ªL$qëùáÇÔŽÒ*qÓ»@�òž�K+ëõׄ=¼±/=£äï“i}[ÍÙ%Ÿs§%8¼.ûz±‘š+Ù´…×a¿ü1“éõœ¿ëh´]LÙ xÓâš}[¯ÓfyçŒZååm–t´¡weÏú©'IDATŒ‚úˆ×iÝ|4ñ¨yþZ,AçÄëÕŒ=½1ç@é×.ù½O“£mcÄÝ»óÇE'ð�݉Pz¿£N:Æ{¿›QH÷Ží•5¢E®¡h‰æ¾{¦ÎÎSCÏ÷ÁÜãøœcÎèÑTÅ„AmçÏüMeå<ê:½é–œ¤VdÊ�ì;„Jù{Š!îÑëwªÏ©Ž…ýÞ“^Ô¿DÅTv£˜ÿ†æQña¡©ÎwÌçõøŠÐ1Òâ8Ç;ý½,Ó‚šåcò:äżÊz56!¶QL>µð‹–©œ×íGôF9@õ‰dÿb~ßÚëŽG’-O~G‰¢:{–Ä5A4ά–ñ:ÅDɱÔù»Žóà‚~ïIG¼XÅ‘¸ïçOæ7àñlªáx=ŽVƒüþq|DY·ŒI¸‹ˆ óz=(± ç¿“G‹ûᾪOŒ€XÚïûyUȯå7›è`�m«LRF'¥Wÿ²êy™+œ€­�ÌÇ�'ò\Ã[8®&UÙ¼3Ãh2ùÞö úè¡p„cmïÈorì5*=ݧ&/çI—èqXuŽH‚~&z ;î™äÿ§4|”1ÁÆ=°Q¢â ªVLö·±ß+ê=O>"bzSi/­¨{êXË£ñmªGÌG½`#AÕ¶¡Ø£*æ¯ø¤²Ý-—¨C¢:z5úaŒè¨kâ¸H`.‘÷èþ­:" ÛéUë ‘ì×ðD~~ÿKóûaÔ‚¯²q$®AöpÄõÙùj©±û¬¾Oi‰‘±Di¾èý¿ø¸ÿ�ƒ¨èù0´¶� S6.›9®Á"ù\å>7©��>šÂõXcÆesïD/øí”vÿ0ŒxÏh�Ñ'm�ó§1Þ&Q’kU_®%FyΗï•Ë“^1ÂúǪ^”µÛ(Û&Q‘Òã•{d4!:(\ëü‚B)òj?uDƒZ4püDuå]¦©Éä{ÛzÝ_¡¬9"«y‡}…cÇyÂä%4b‚™×9vv”]¿0."ŽRVN`ß)¼JÍÀ¥|p_^¨…¿«oyñfe=?Ëj¬‰äø•%ᢞñiSyÞ¬*¦–r^ï³q‘¾�ªë 5F·òû,Ø…Õ=I±Óqc ¸9ü}DO÷ï8S‡yý/sD©ƒv]EÝõHâDÙ³ó¤{S=“äÛ)æ,‰ ’¢HYÉ©˜%¶Ï<ùñ¶5¼>_Wvü�ëª2¸ê…‘ˆ_WÂÄyuÈ{¢Gç…/©ÜÚÇqlY߯?Ï4zÿ¿Rŵ¡Ä†ä}áÙ¼Çusbަߨ|±oD¢1î™VžB£O+x½¢îø�”ýþâ¾år•/®M£§{œ§–nº´í¼}®Î˵̭lR貉â^#Žƒ�Œòô{Þæx¿Îîˆs`Ù�/Q.2¶×ü~ŸÓ§ðï)oë{ä¢÷N@Š(—r¹÷¿%…Rù8q…c+?|½²ûÐQîHÜŠórcuqó!&mhåŠ|­h ”·Ý÷½ø †=ÒVPɼ>+zñ^Gôè�GËDD$QO7ÀÄy~¿åT¼6÷ý~�;y¢ßç5^,¤áÅðû+T¯g «�Aû7zb«&^Ï–=¾×VÖx3¨¸˜Žž�q¡yú¸êfú½÷b /zí/¢šåÇÃØ6+çQdràø.#‘?>–1üL#*od›NÍŠ:Ø¿WA�Ѷòv�$ß:Êöá¨>ìù 7)»@:Ü—Ψ�?GôÄ™MËR3 kÌ�‡±­6p¼Zƒ‹Þ›q¾üÅ4[ÅŸõe^¬©lbMˆøò!^"QS÷gþÌ�ñ^ÑëþõÞ“u&̼ž±-☿†²ž_Èãü¹Ž“Æ 0w‡ß+Î…‡«˜üOkÄyÆ5KʼA×4ÝPäÏ0Ÿ²cNLÐ×íEe¢¬Ñ/•M^yÁ¸jº—ÁÛbn½p͵’Šïã\ó �Wv<®ý\Ÿp?tÓ0�ÿ~ŸØ÷‡¹nŸhà{l¿GÔ-ŸxN|�燉çĪG˜ ÍŸ+F Fãûª*¶ŸE�âø\'ç£Z¦õ^q®M)3ð~á÷І½95¼Çü7 µð÷ó4ÕYþ0EœObDû¹B%¼?¼Ô‹-»*!7J6$ÏXµ.NJ7òÚ–|ŸT>aKôv›;�WLí©Êjñ]?.›œ#ÄûÉ\ÊjÃGÒaJI˜g• º¡Hã˜_ÿ×Êêžë,¿ßújXÞð7;Ñ@9­DR$^¢·ÙÍmê „< ˜±O~“‰¨è¹�iÑã!ïÃe�¤êo§h¤x«² á‰óUü[Ùvy4�˜püQo£¿¨ò$yìñ¹§T“<>g ¡¿ËŸ¹×u+½-fñ"j!Ç÷?µ„h$`â|8tf¿~L„ûI /’$Ã$ÁÐ!Þ/¢.ìÄëŒY¦ò´¸‹+q�qk_b¼-âü4q[¼j*O{NY'‡Ø·teÔMå�#q�Çĉ)b_œÒ9±3Ùæmæv¼IY]æ©•û—²¹³âù>u,ùâ8•'Ž*å}ceeIøhð…y@ß�XA£$ß;¨ÍÉw  ü‰Ä"unöodÐ>FïÜU5¼«|>|»@çt0ù>Ñ×}ýñe¡rÞGb´}ÌO¶¿BýôgïO³¨F¡•ÀñI$zÊ�`îzÐ˨êV€º}É÷óÇ:è(\±(_船ab¤ýG·«®VK�|P˜OŠ;æP»¼[Åõº¼ >.äXE-âõY׋UÌU¨_Ô&?+¯SŽŠ9ÿwÇ÷”•`‹kÇ󔕉îƒÖäwH¾(Ä'èYxŒã?~³Úckó'ŸtnCð90F[�êø¹¯¦öØFÅ],€fÄ$Ì—äsH¡Î…LpœãXÛÿó3ê¨}Bñ’]¢– ùÞMÓ©˜®ÿpÐ.';fP6yÐõ>1n¯†yb²ÔyTÌ™`x9æSvN¼Àç¢}Õ°¼Žç{TÌ�¾ñêãÐcÐK9®ö5Í\B­|ø{ÇÎ~8»ãÓŽ{Õ=1‰ï¯Õ$ß»©èâÇ”À'À½X|’ÿûäýÿOs̪ø}c¾£â~.†àsÏ{•MT5©OùÿG£ôjÎ÷TÜéh^Œ°¿&Êû µsþ)Ç~Ê:8n¢n�Œü�×½5�I¾wSÑ� HäßF^ì2•ÞÐq³Ÿ³žê=ñߢbbìÀ€|®›×‹#§òÏ‹:nñsvQÍüž{zñ.wŒÚa6Ǿ¾YQh„s%Ï9Nq¬äÿ\Øñ#Ç3j·Ö”œ $ß»iACÏw$ɇ±=ÆÓ^ë8ÓϽʑró?0¿Ï¼XSÅ'†uÞ§ã9úu·ãƒª�ßg/vWq¿ñ�Õõ]Ö— 3'šÉqQ>â òuâÍŽíü0rC_Q{óŒãÕ"$ß;Æ›˜}x¬½©yP@šè>ó€Ï]Úq†÷Ù›r̤’ù5_í8ÛwTšCÀ€|î9XYÏŸAÌíø¾ÿæaÇ×ò†ì*Öio/WšCºnœúé§¾Þù°Ð8'às|Íçplå¸Zí�O¿P‹�|oˆŸpé™ôyתaèï¯ûx±¬†õÙsüÁ¯q¤cUÇË”À?Gžd¸OÙLè)ÎðIãw`yùµ�hx¯s|ÉqŸ_ã\ÇfŽW*A4l;v�ľÿó3Jó€Ï‡Gt]ßz¾OêP_÷ì§ñçy•:Ê׎ÿrüıŒÿse倛veÔ«W‹ôµ5¬ÕüÃZÌ‹ëòÿŒ^»[zÇøÓ7U{«˜¸¡ª¤§úÏû^$¸ÏV¹¢eôre�Bw:ö>ú°¦¾1ÛyÔ[ÅQfMùeü¾mj¥´”ÏEs{qƒ6ˆ›W:.sDcpœïÓÔ×!µ—w¬ìˆ†€—«»ø}è4_+|Ì‹Ôo':¶ðµË¿Õaþ®vòâÛÊæÜÙÏŸç÷ê8¦èpû`”]l¢aáÞŽ_R‹�|¯™w”ݴM:iê_pïä¯Sø›×{Ã9vPq?ök¿_À�¢—¹²d@Rï¼!<âˆ$üÄ–Ê—ªX�ûAáßEÊï 0Bb>eeÕêðGeçÃ?æÿ#VqÌ¢òÝàóáb�7"É÷p‘cý)åѺÀßS””ŽòГæZ¢\J|wçøsuzƒ?_är¶V–ˆ_DõYÑÛî×j’ï5óÎ;¾oO‰V®Û·(›T"ꉮ tïóÎw¼€!å“™¦ÖTo£Góûwñg0Ÿ?àE_˲,íóá5�7BÉ÷�[׈äêOßòâsSù绕}‡?ðgû»:Οu5/vv¼[ÕzÊÛëj’ï5òÎ=Ϥú=ä˜Ë;ೆäývV/.tô­GÜ*þMŒò9ñg^l®~ÙÍçÃýzaÄ’ïá^Ǫ¾ž¹K‘W¸ˆûKÇxj”¨ŽÎøóݯŽóç~£wD§–2Ë8Nt¬·ÓÖj&\­‰w°·xqˆš±‰wå}ç /ÖpܦþØŽÄ;`X>w¼Ç‹ÓÕG�x Ý«�w[Rݱ¯ÆN¼‡(7¸›ãn¾“ïT‡ùºó^Ç'üpveåhÊ®q’Zˆžï5ð�c:e¬.¬ú=é˜Ý;÷?$ð~ÇsoS·}Ñ¿‡o €‚|Nvý3€ÉŒ`Ï÷IE ø³Ôbþ~–ñâJw£ã;þœGª¼=6òâ#ŽÕ•æ¯Þ&3©…èù^�ýÔLâ=lOâeð~å‹–w«îú‰w@*ŸK6ñâ‹ê®³H¼€:ÝÉÜ-ÔRù$¤Ç)Í[Gøµv|Ùñju˜¯IOsDµ…ùßw<­bÎTK‘|¯˜1YêÇÔŒ(7sª€’Ä,âyý¬H:<¬nÙÕëþP‚¼1wie£»ä{^÷õÐ?/vüŸ¶v’ØËñf•ãuޝ:óç=Ò±�:Ì×§¿w|ØçP6í°9§ÔR”�©�?ôb{Õë<ï´k ¨ˆ÷ë—{±§šk\TÌz¾‰¿ȇwïíx™ÚmGŸ(Ð[#^vfRQ–e_ûLP ø{y‡—ªÚ\ìEʾûÓý¹ŸS‡y{ECJ”¤ÙÕ1V­û˜˜v6æ«…èù^ù;x±�ã)ÕãG$ÞQ5ïcO;â ¥h.S;E�úI¼ªäóÌ�^,èø©ÚéVÇ¢$ÞÀù€ã,'qÿO Ë;/¯ê;A¯ä8Åq‡ßóŽVÖ@„¯[ŸuœìXQÙ܃G;ž™ÊÓ�mkâ=�|¯‰w‚c¼X@Y2°*Ѫµ»ßk;5ñþv™#ð1ôþDµC OÚÉ!Ñ+z ßÜ㈣s;¾çø«š÷7Ç^^¯hˆþ­À(hEOï–XÇñ+'¡gQ³¢<Ì\ªÏ›û;ñgÿ¾£¬R7�ðuìïÛ*Û†{8�ì)­ž|–²3 ðN?þo8–Pyb¦äyg¼A@ƒ¼Gݱha^ϱœêu­ã ÿŽ òùp/bž” +«Þ’4÷(›°êŸëy Z€²3St›c5_=¨ø;y­:V3¢Aæ,ÇÞ¨ã¼=§óâ=ÊJÒÌMÔb$ßä�e]e7e8^®bb’¯oxG;E@ËäCœVw¬¢løÓÛT¾«1±ðÏü;¸[´�ω«é…óá *ß�ʆŸèóáÕ#É×»xq 0¹!¿¦¯“nTü½ÌìÅ™»~yÕnr|ÏÛáPõ@tõgyD-Fò½¼£L¯,A7bË:VœÆÓowİá³çzvö_ 1Þ×_©¬7|”©YÆ­¿³æ1h�À{q²ŒÃÙþ <*:ÄçÃ8ç½]Ùù0®ýÞ ·3ø2q“q³ã|Ç™MÝH€v¡çû4ýÙ±¶¯›®Pòúó'(Ù´(Ñ#%j{òºëH¾·T^�*•±Œäü}þ1<  Çò’5³ä1y2þ!ÿn=çóá«•� ãZp†Éþù Çï}Nü»&Cò}L1içæ¾–:C ñwtˆ;©þå8ɱ�·ÉõBéH¾=@ò} Q}g'›SCü=}Ö‹=Õ®ÜlŒø®ãdo› ¥x‘`4DÂûP'À÷TCœÜÞÛ‹ÍϪ=¢âñŽ»½mvÏ«r Éw£&ÌÇ:É�:å^Ör<­v™SY¯ü‡¼m¾ï˜_(Œä;€Q´¥ã<'˜§Wœ€¿Ð‹å�©}b›|Ðq«·Ï/ë:(a>$’ïFÕêŽËòIïkçü ^,å¸Wíµ†ã,e‰ø�4ÕXÑE$ߌ²Å×8©<—àü}Êð×«Ýæs¬¬$Í~Ž7ÓDòÀ¨{£²ü¢j€ð�++As�Ú/&cÝMÙä¬';Þ)LÉw�fSV‚f55À ø¿+›„õ'ê†;Þí¸ØÛìZÇ6Žÿþƒä;d^®lÖMÕ'àŸslå‡{ª[–pí¸ÏÛî+MÕÐo’ïð‚èÑ}‚ÈŸUCœ€ÿ¼;9&¨[^ëØÃñ€·ß� i„‘|€ÿ6α—“LJ¨!NÀæÅFŽgÔ=/u¼ßq“·áEŽ�#—‹&ùôC×zIwÁNN_âXK pþ /Vw<¥îZÑqŠã.oÇO;fÒˆ ùôÃ8¡ Ë;ÎrÒx 5À øK¼XÚñˆºí�Ž}y[ä˜G=Gò¦-êÀÿÄ ãÝÕ'ào÷b)Çmê¾uÜáíy¦cuõÉwÌžMÕ�wþA/–q\®~ˆ‘ë9Î÷6½Ñ±£ãeê’ï@?Pó½Qþgj€ðO9–óÓÕ/ ;~àxÀÛvOõÉw ¨ù^ŸÍ�$ï˜Q p~S/ŽTÿ¼ÊñjõÉwÞJŽ+œ€­àüö^|Aýr·cWõÉw(&Ê¥\ãüÌ‹�ϨYÿTÖãýN�’ïP½9•õ€_V pÂû /VvüE͈ž÷ïñz\©Aòêñ e5à×VœøŽIN#ùÿˆê÷)¿ÿi!$ß >/uœãüŽj€à7{±´ãÕç»~ßý5bH¾@ý~àüWÕ'ÂPÖþrUï«~¿Oh‘|€f|Ù øcãT3'ÄŸRVþU#j¼ïè÷ÙC#Šä;4gKÇYNÀ¿T5sbüŸ^¬ç8Råú·c¿þ5ÂH¾@³Öq\âü̪™äÛûá—TŽ¿;ÖõkžªGòš·”ã*'àçPœ,ÿ†²^øÏª¸¿8Vòk�/�|zb‚Ðuó;®qþ­j€“æÇyñ.ÇÓÞ£ŽåüW Ï#ùôCí“v¢¯s\æü²j€“ç1늎'†ø³«‹úooþƒä;´ËLŽñNÀo 8‰~­K;îàé:–÷ß<*ü’ïÐ>/uœæü‡Õ'ÓïRV‡þú©<åoŽMý¼]ÿþÉwh§(%t¨ðßRœTÜ‹åMöO¿w,æ?Y˜*’ïÐnŸsþXGíù\'ØÿîÅêŽóÿu†²ÄûÂ4‘|úa‚Ðg[:ÎrþåªY”•qlî‡x¹¡ãiaL$߀~'ôÝÚŽK�€¥à¤ûÏ…�‘|€îXÌqµðs ­FòºåÍŽkœ€_Hh-’ïÐ=³9®p~E¡•H¾@7Íä¸À øM…Ö!ùÝ5�ãD'à?,´ Éwè¾C�€ßWh ’ïПrþÇK„Æ‘|€þØLYøé…F‘|€~YÉq™ð¯Còè‡ ^ðGÇÂBc¨ýôÃ8aÔ=è8ÊñÃqãÆÝ+4Šä;t×“ŽŸ;NtÂýL¡5H¾@·\ç8Ûq–ãJ'ÝŸZ‡ä;ÐÔ|ﯧ(K¶Ÿådû£Bë‘|ú�šïý )Ñ»ýÜ<.sÂýY¡SH¾@s¢dÌmŽßLN¶?%tÉw (;Ó~·*K´ßâ¸#_^ïDûÓBï�|€tÑSý�<îÏãAÇ½Ž»�`¿C)Ô�z`„ o÷b¡JÑCý�Ž'& 'Ö0’ï”ìE¥"ù@ÉH¾P2’ä;%#ù@ÉH¾P2’ä;%#ù@ÉH¾P2’ä;%#ù@ÉH¾P2’ä;%#ù@ÉH¾P2’ä;%#ù@ÉH¾P2’ä;%#ù@ÉH¾P2’ä;%#ù@ÉH¾P²ÿÿÿ¡ÇVœIDATUÝÀ’»IEND®B`‚python-django-debug-toolbar-8.0.0/docs/_static/brand/Wordmark-Inline-White.svg000066400000000000000000000211301524561404200272710ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/docs/_static/brand/Wordmark-Stacked-Black.png000066400000000000000000000722251524561404200273650ustar00rootroot00000000000000‰PNG  IHDR6F‰4IDATxœìÝ ˜#U½÷ñ§»§{–^ÒYŽ ² è  ‚"\}¹ ¸!.èuÁ WPdSDAE@ÙEaPAD˜$ÝÓÓ3ÓKÒïïÏï0twN%•t*ù~ž§žJwW'•ªJåüêœ:'e�p)€„#ØH<‚ €Ä#ØH<‚ €Ä#ØH<‚ €Ä#ØH<‚ €Ä#ØH<‚ €Ä#ØH<‚ €Ä#ØH<‚ €Ä#ØH<‚ €Ä#ØH<‚ €Ä#ØH<‚ €Ä#ØH<‚ €Ä#ØH<‚ €Ä#ØH<‚ €Ä#ØH<‚ €Äë0(c``àä¶¶¶÷ZÁŠÉÉÉ1íïÑÒ|LóÑÒÜ^]ZfXó§MOþ^Ëå‹Åâ#ƒƒƒ7ê€`XÛ…’'L7_÷ñÚÖþ}{{»e2SØY¦ÿ¹ÖôHiþÐøøøÃÃÃ÷U"Ø(KÓÔtY ; 5óé%ëþmΜ9~¼vÈÃͽšþäsýü§|>ï¿3l”¥‚iÑ€ÚéÒ1ö"Í_ôä/)ðìí÷ñ8ÕîxعNÓµ ;×åóù ¥lÍÀÃΡ>yÍŽ‚ÎýªÑ¹Î§ñññki¾Í�` ,î±Am¦ãÖ§#¼ùÚœ9sîVÈù¹js.ºÃM‡FóÊJ§Ó§è*ø{ h 8hv‰BÏ�³Ùìmh ) …(ÐlªéÃzxëÀÀÀƒšNÒ´ƒq±�`hY 8ÏÑtŒ¦›=äd2™zzzžg€Ä!Ø`O„œ�4ûØœ9s–*à,ÑôÞÞÞÞ$Á€§ÛVÓ7;::UÀ¹Lµ9oÒÏs а6LCµ8�ší£ùqétz®Ý=0ƒÉÉÉ+s¹Üþz¸Ú ‹¦¡Ps¶BÍÞF¨€†G°` 5Ç+Ô®‡ P @S4Ö¢@ãAæ…š³ �þÏj›ýóùü•H‚ öDMÍP¡PX444t»‡`hy 5���/^j€D"ØZšBÍ=£££‹FFF5@bÑ+ •ݘJ¥¶'Ô@òQchU—e³Ù47@âQchEg(Ôìg„h@˘ôAjŠÅãjŽò Ð4hŠh Ê4ÍÎçó él­`e[[Û¾ª©¹ÆM‰¦hBÐd‰¥šše;'1Ôô÷÷ïk€ !Ú H …š‹Åâ¶CCCwX²ÌËd27´··_:00ð#ÿÙ3"Øš’BÍ]cccÛ >h ²`Á‚õfnÖÃ]üç¶¶¶rþ ßmm€ilMG¡æš\.·ãŠ+·éëëÛlΜ9Kf¶YçO›éw·§Óéw`J@SQ¨¹X¡fO=\i Òßß¿M{{ûm 0O³Hw*•:Cµ7?Õãx ‚  ™|E¡æ@Í – +‹jnV¨Xü�ZþNM[à?6€Ä+ ¼yT6›ý¨%L:�>D«•Eë `sMKô¿¯3À6€DS(W¨Ù/ŸÏŸa £Z—�¥R©óTSÓnÑ-Ðÿý\áæ# ØmX¡f÷ÁÁÁË,YÚjN×ü«‚‚�rQêËéÇn€F°P– OEÏ£ 5;(ÔÜh S "GZLô=@Aé¦ùóç¯oТ6Êšœœä\�F³TÇåvù|þ�– .ìQ¨¹EAäÍ¿m»ººnëííÝÜ QX$Ííª©yE.—{ØÄkS´Þ‹j¶·ÑsoÔÑÑñÛþþþ—´‚ 1TKse6›ÝY55C– ===[ª6ÅÞÜÚjL¯‘ioo¿I5C¯5h!@"(Ôœ­Zš½õpµ%H__ß¶���·*plhõ3_Ó/Òéô[ ZÁ@Yt€Ù¦Pó…šÃõ0QÇ¢‚Åë;::~­ÏPŸÕ™^³#•J] š›´‚ €²è<³ÅÇÝÔt¸BÍñ–0 ‡)\üLçÚ,Ò:|]ë8€&GaШV+Ôì­Ps¶%ŒBͧ(Îòqf¬¨ææ‹„Í®Ãh0 4C…BaÑÐÐÐí–,)…š3h³S 7–Ïç¿dЄ¨±4…š‡ÇÇÇ_‘ÀPÓ­Psy#†š'Qs ™l C¡æžÑÑÑ톇‡—Z‚(,ôe2™›jö²W 7‡4‚  !(Ô,V¡{û‘‘‘G-ATK³¡ÖûV=ÜÖBìœþþþ} šÁÐ.Ëår»-[¶lØD¡fk…„%z¸¥%ˆÖ¹]aìbÕÜìdÐ$6€ÙvF6›ÝOóQK…šíëáú–@Z÷9 7W(ܼР l³¦X,§Ps”NZ‚ô÷÷ï«`p½öX²õ(ÜüjÞ¼yÏ2H8‚  î&'' 5‡æóù/[¨†ãH…�Ÿêa—5‡guww_a³<�(T‹`¨·•ªíØS¡æ|K˜L&s‚BÍéZÿ6k"z;Ûè½]h�`@==^(vÌf³×X²´«àžæ³æµÏÀÀÀ§ Š`¨‹ÉÉÉj¶¼Ë’ež üWi~ˆ59ÕÜO7Ð’Š`¨9…𻯯Æ<ÔðæfÖš6×6øž@‚lµò…š5/X‚¨¦f—ÒÀ›ëY Ó68Páæp€„ Øb¥ZšÉb±xT6›ý¨%Œ ò¤R©«-ùoÆBáæTm“$Áešq…šýòùü–0>ð¦ òiê4<©[ÛÃ#å~ �`ˆË°BÍƒ—Y¨Vâk>ð¦a*ÏËd2'48‚ �ª¶f{…š-Y:j¼–æXÃLÞÝ××÷j€F°Të~…šír¹Ü=–,óTqµB͆²:::ÎUì5hP@5n¹BÍÖ ,XÏÞÔÃ] ¡6PLܽSZÁPÕÒ\™Ífw^¾|yΤ¯¯o³9sæ,iÁ�7ãðVÕr½Ñ l•8_µ4{k¾Ú¤¿¿›öööÛj66TD�ö €D°D¢‚ígUSs¨-ATÓ°H¡æf…šCTÞãÝ)›)ÐlЀ: €>î¦fG¨`{¶%L:�>Dëÿ}…švCK5�ª û=ÍG Ábµ‚Áþù|þJK…šãR©Ô A<À*^¡ù) ±¿2H‚ `F*à …ECCC·[²´e2™Ó4?ÒP–öó fg‹Åo>h�0À´TØ}x|||ÑðððRK–.…ši¾¯aFÚÇ÷h:Uµqß×�« Š` ¬¶¶¶DÝ$Žx¨°{óêÕ«X¹rå¿,AJƒH^¡iGÔ´o ú\ÿ|bbâÕÄ]gÐ6ÊR!(¥B�¡5L®q´®à'n0Æùó篯Ù5:^·6<�öë„f?Öü£¹\îM„`XÛh±X?d £Póé¶¶¶ã­Å)”ú˜3§júŽÂér€E°€¥ñ•*ïoÉ»÷"¥Ps¦BÍaÖ´ÿ~ckš›ýTsºdÐò6ЂT(>[â#,yân…šŸ(Ôìe-HûmLïýGªeûªjÙî6Àl Å¨p|¼BÍg,aÒét_*•ºF·µÖó¸öÛ·ÆÆÆN]±bÅcx‚ ´Œ½væ…š³-aTK³¡j*<Ôli-Dûì÷š�¬}v¾æc˜ÁZÃj’÷ÏçóWZÂ(Ôl] 5ë[ ðª÷ûóB¡ð�ÁÁÁ „`MNå!’ Ýn £P³½ ù¿ÔÃkrÚOÞ£ÙÙÅbÑ̓ˆ„`ML…å‡ÇÇÇ /µ„éïïß×o”×Ã.kn÷k?�’Ëå¾kkÆ¢T€`MJ…å{FGG�ŒŒHóQK–öL&ó}ͱæó/š3&&&N[¾|yα#Ø@s9#›ÍmÉkÚäoz“¬EÖ\~ç�äóy¿WhÜ5C°€&¡ôÇT€þ’%Looï@gg§÷|Öoªf¦ ÙO5?Yûã7¨ ‚ $œ¤5½]…èó-aúûû7noo¿V7³„Ó>Ô컩TêëË–-{ÄuE°€d[ÙÖÖ¶o.—»Æ¦4ðæõz¸ž%ÛRÕ–}SÁò{z¼Ê³"eP† ŸECÃQ A~bbbçl6›¸P£ššÝt\-¶‡mÿ«höÖößJ¡æt#ÔL«··w Ù“õ°Û F¨±P– p)B �CûäÁB¡ðš¡¡¡û-aTÀ=@3o6×iɳJÛþ ”'._¾ü/†™´¥Óé×éÜñ>=Þ]sÿù¶$6™� eQcÓXT°¾kllìµ+V¬xÜÆÞÔñt–%Œ¶ùÃZïÓÇÇÇ¿MwÍ3[¸pa�j²×öòÞù6_ûoúÝÛmM¨€Øl”E�MC¹1—˽Nó•–@:ŽîÖñTÔ<M¡µ®¿ÕìÚæ—h>a˜–77ëìì|¿wd¡ý»`šÅ)Ün¨íù°@̸ÇB|fFIDATÆ‹³Ùìî–ÐPã´þKTèýª50mç M …—ª¾½&ƒ†P35o^öz…•«:::–êg¯¥Y0íÂkü·@ p @Y*¸œ’J¥Þc˜5*hMì[s˜£‚ð]*à>߈¶qVëô�Õ«WsddäQôJÍͼY¡Ÿ6�ò¿ÚÎèXN|÷ÞMÑ Á©yT>Ÿ?ÚǘÞÓÁ Ëw4B“4´ïÑìd¶ÏÕ|µaZÞܬ½½ý}Úfÿo†æf3Òÿmª`ûJmïßĈ` J…ÇqÍQ¨¹ØšÌàààïU¸=A?a³@ÛvR³+lM ¹Ú0£L&óFm²#J^k1Ðó¼M3‚ €XÑ @Y4E›Ã…Bá 7ZóêP¸ùC�›¤­Ðôý‰‰‰“†††0LË››)̼Cý³¿…ÅHÏ«<™[è bB� 4žÇUðÛM¡ækn¥&i·+ÜÔôûHÛóïš�ªéL¨—¦Õ××·©öÉ1Þ»™~ì±ÐþèïïßUÇøõ1!ØÁUÕú¹O55¯U�ïAk¥&i_ÐÃO[ ¨pþM§çóù 3ñÞÍö, ¦¹G[úwooo÷�Z 6bCS4eÑ­nnߣ€ìÊd2Þ,l‹�‚̘Êåª6èk 4w¦UËæfåÐ @ܨ±P– ‰ECM©�w… y~;±cÔTaT!ä# ÏçYuÓvüöèèèi###ÿ6L«ÔÜìÞ»™Õ¨¹Y9¥æh»¨Öî€l”¥ÂOª-SZÙù 5~?CÁZ”jVÎW­Í±zøR‹HÇçïu|~#›ÍþP?ަåÝ5wtt«íõ.k¥æh7Ä€`³H…òÏ+Ô|ÒàÛâ(¸.[Ô²?+ 'sÅ¿,¿f/m¯÷ÇÕ]sŒö×t´@ 60 J㨼S¡ælÃ|ÀÆ���‹Tø>pºe´Ù¼G³³‹Åâ7Z¥ƒ…*ÌU-Øaš{‡Ï³Æ´~__ß¶CCC·T‰`õç÷”¤‚ùe†§ð{mÚÛÛ÷Õîuþt¿¦o*üœ¥ùˆaZ ‡iö~M‡kê·×Ñѱ»fUK nTã0T£†P3…R-Ì××úÕu…Baßl6»…¦o¡fZétzg…šKôðoªõòûh>Ô”4Zó8 E� €²T@jÙ›Úã¤@ó°f{¨Öá^ô`¾�ÉdzU{sF>Ÿÿ£aFÚVoÓ±uŒ>§ÛXiÝwÒl¾ZT‰` ,<Úé­jK5-R¨yØPÎ …n(ŸAOOÏÂÎÎΣõ¹3ÉŸO­{‡j›vQˆ½Â  ¨1ÃÅšöRÁmÈ€*(¼¨ÔÌì-öôû�«Ô[Á@U6PC 4Wª–f?=5 2©L&³¯Ž¥(¼Êš÷Ù¨ÁjDѳjŽÐâ-\¸°§X,úñó^M›4ssP½·çÏ›7ïY+W®ü—@…è jã“ 5ÞÝ.¡‘ôõõmšN§OQ0~Dþ5mb- »»{'€*Pc1Ra´¨émù|þ|"ðñ\|ü™×µµfo;hºØ BˆÏj…šýj®4 L·jgÞ¦ó>M[[kÛÁ  ˆ�M®P(ì144Äê(kþüùëwww¿_ÇÍ 4ƒ{©¦¹šVT€`Uò�7jvU¨¹ß€ ¼ÒÖ47{³¦Ƈú?Ú�ª½ÚV5ž7T€`UP¨¹gtttÑÈÈÈ£LÍ <@÷÷kz…a&Þ�` "¨Ü�©Tê 5죷·w ³³óÝ ¿G)Ð<ÛP–>OÜg b¨ÌeÙlöÍÇ XKOOÏ– 4R˜9D?Î¥¹Y8…À *D°€èÎP¨9ZóIÖhK§Ó¯W�Ãôø5†ŠxG ær¹‡ ""Ø@ É5>šÏç¿jÀó3™Ìaš¿OÓæ†ªé3¶�f‘l € [ÍV¨aAxïfivŒ¦Ã5õb£Zïöùr€ˆ6PÞJ¶öÍf³×ZZÿ®ííí>þÌ>:&R†ZØÆ ˜Ùã…BᵃƒƒwZÕÕÐxGÞ]óKütPS/5¨Á¦¡«ò‹Å]j4´œ ÃPÚÞÏÕlž¦•l` 5w���½vÅŠ�ZJ:�~Q*•ú°Ž�ƒTÈžc¨»þþþítAáF€6°h¯ÉårûWŒ[IûÀÀÀ~¶¦¹ÙNþ š›ÍžööökF° ÁÖ¢Ps±BÍÁzX04=…™^íów)ļGÓs �b+€ˆ6ð¾¬Psœ¡éõöönÑÙÙéÝ5¿M�f¾¡¡(l>Ï "‚ €–Wxóè|>†¡©©†fÍ> Éç´5k\‘l´4šñb±xÀàààe†f57�N¿=•J½ßh┥f�]šF l´²a…š7ÐûRsZ¸pá ®>˜æ*(§ ‰¢0ú<Õ¢Þmˆ` U=ªï"…š{ MEâdޯк¿æíôn–LªaÛB3‚ €`­h©‡š\.÷°¡Yt*ÐTjn¶­!ñL¹Ï@$eéŠwÑš„Ím{-_¾^â­šN*•z¶@ ‚ €¦£BîÐÄÄÄÎù|þJC+okk»ËÐŒhŽ Á@SQ¨yx||üCCC·ZF±X¤9Zs"ØF°Ð4jîÝnxxx©¡ÕlšÁ@0‚ €²’0@§BÍMšvyÔÐr …ÂCÓѹ‡ñ‰#Ø(Ëè´ÆvY.—Û=ŸÏZÒòåËÐqZ04íÓg"ØHº3²Ùì~š�ZYAW÷04›…�6’ìã 5Gi>ihyººŸ¡Ùl#ØHorT,U¨ù¢ÿ‡`ÓdT G°¬Ã YVª°³o.—»Æ€µx��Ž CóÐ>]Ï 56C…œ\¡PØQ55„<�jñ¨±i2 ªm}}}i€‰ Pó BÍËaSjoo'Ø4!}öiŽ Á@ÃSÁæ®±±±í†††î7`¹\îa£w¼¦ÓÑÑA°„{l4ºU`}�æ+ (#›Ív %Qc a©¦æbTw7B (ƒ` !)Ôœ¨ššõpÜÊ )€†S,�Êçóg@ ‚ €†¡Z¯�9D¡æbˆ€` Q «¦æ ƒƒƒ7@D�àqÕÖì¦Ps�T€``¶Ý_(^£Pó Tˆ``6Ý>>>¾ÇòåËsP‚ €Y199yM.—{ƒ®6€*1Ž €Ùp¾BÍžF¨1!ب«b±xB6›=T 𢍋IÑì�ù|þlˆÁ@=Œª¦æ ÁÁÁË  6jJ5Cší¥P³Øj„{l”ÕÖÖV´ éoÈår„PSe©Ö¥šsžWkÞm5B°PsªµY”Édnêíí0€ ب—m;;;oëïïߨbF°PO›µ··/Q¸ÙÆbD°Poë)Üܬp³‹Ä„``6ÌK¥RW `1 ؘmmm�šý(�NتD°0knÚTsó•L&sºÿh"ØhG*ÜüTóN¨Á@£ØWáæê… ö@D�d—b±¸xþüùë@ ¥­­më®®®%===[@ ‚ €†£p³aggç­}}}Û@‚ €†¤pÓ×ÑÑqS:�ÞËÊè0(C!£h³£;•J]¡pó®|>ÿÊÈd2?׌(šH±X|¯>ÿw”A°PÖäädJáÆf‹ÂÍ·6ÌårŸ2`z 4ím€–DS4‰ `õI]�?Ï8oa:>¶64�ööö¬@ ’äÕÜ\®y·ë( Ï34�eb€` QTs³—®ÌßÔÛÛ;`ÀZtlÐExóY©iÌ Á@mÛÙÙy[ÿÆ”(ØPcÓd&''i† Á@RmÖÞÞ¾DáfÖ Ø4‚ €`I¶žÂÍÍ 7»Zžjl¶24íÓœ@ ‚ €²fq›ónnH§Óo5´,ï\³.CS¡)€(6Êòql¬Á)|�§Âí‡ -©X,þ—¡éèÜó¨@ ‚ €¦Ð¶ÆW3™Ìéþ£¡¥¨Öfô°@ ‚ €fs¤ÂÍO5ï4´‚Ms"ØF°ÐŒöU¸¹záÂ…=†Vàße¯04�ÉÉI‚ €`Íj—b±¸xþüùëšZ:�~¡fs MGÁæ!€@M«­­më®®®%===ŒHßÜh†Ö„j&‡††6‚l45…› ;;;oíëëÛÖД´� 6MHûõqÍ& l4=�ú:::nJ§Ó{šÁ¦9q €H6ZE·Î凚ÊäääAšý@ó1C3ù‡@-CÁ&¥é,…›ÏšF>Ÿ¿;›Í¾}||üÙ 7¾o3$žöå_ " Øh9 7ŸÊd2ççÀ¦2<<¼,—˯�³‘~|‡ Æw’ì>€øRЪQÍÍåšwšÍ˜ÂÍ9 9/- »êçKrІD)‹‘l´,ÕÜ쥚››z{{ MippðF…œýôp…›¯kZnH„±±1‚ €H6Zݶ���·õ÷÷olhZª½yHÓ5m ß§‰û7ÛèÊ•+ÿeÁÌ6koo_200°µ¡Ù�¨çMÏ+‹ûèçk �è^€ˆ6°Æzmmm‹Us³‹¡LæóùŸ+à,Ûjrrò,ýnµ¡!hÐ @dø?=©TêjÕÜ`hÃÃÃKs¹Ü;½»hýø M�fÛR€ˆ6°ÕÚtjö#…›ZÊòåËsªÁù‚¦MŠÅâ¡úÕÃl¹ÛÁ;+àIDAT "‚ ¬£m�3™Ìé†V4žÏçÏWÀyùää䎚.Ö4a¨›‰‰ Æ Á¦w¤jn.Ò¼ÓÐ’r¹Ü-šL¥RÞkÞWpò†Z[¥Ú3z­Áf š›TssõÂ… { -kÙ²e�¨ç£ 9Ï.‹GêW6Ô„Âãï *@°€òvQavñüùó×7´ºUù|þ[ 9ÏW|/MWiš4ÄF›óN€ l €jn¶îêêZÒ××·™öD3µ«4í511±¥~ü–¦•†ªé³Æý5*B°€@*pmØÞÞ~›ÂͶ”,_¾ü/ªÁ9R5 ÏRÍÞG5ÈP1mCjlT„`(Ü tttÜ”N§÷2`-ª½YžÏç¿¢ùsnÔt‹!²ÁÁA‚ €Šl ºnœË3àé 7kÚ±P(¼T?Ÿ¯�3n(KÛéV€ l  6)Mg)Ü|Ú€i¨öá®l6{èØØØ†Åbñ *¸/3Ìä7"Ø@nŽW¸9Ë8Ÿb+V¬x,ŸÏBµ8*ܼSÓ݆§Ñç‰` b|@•T;Láær=ì6`f£ 7giz±/Òôs…œ¢á ªÙºÉ Bˆ�ÂÍ^™Læ¦ÞÞÞd³Ùk5íS,7ÕtŠ~5l­méððpÖ BˆÏ¶���·©öfC >˜Ïçß§pülÕÞ|PÓ߬é}Ó @U6¯ÍT@]¢p³µ,[¶l8—Ë}]Óæúq?M7Z áþÕ"Ø@üÖW!mqÿ.DWÌf³—jÚUµ[k:G¿µ&711Áý5ªB°€ÚèI¥RW«ææ*¤Ú›{5½Ã»‹VÀ9^¿ú·5!½·‡‡††î7¨ÁjDµ6�š.J§ÓGP…áááe 8ŸQ-ÎsôãÛ5ÝiÍåJ€*l ÆTssºjn¾f@õÆn~ éeÅbñUªéø‰¦‚%ßÕU"Ø(KµŒ³Q%mÃcn.4ñ ˜Éd^c˜V>Ÿ¿Iµ8oRÀÙLáÆƒó K É5~eP%‚ €²Tèà\…›ƒTX¿aáÂ…=†iù}Iõð=þ½¦Ãô¸Ë0%ï.ZçêÅY_?¾WÓ_,A´¯§�6dP% +P_»è ûâ ¬g˜J§¦ÿ4ÛS¡÷ÅšÎR |Hç³ÚnÏ0LgDáæTM[êÛ[$®±d €Xl ÎTPßzΜ9Kúúú63¼Ì &˜]Ý*Ü]®psˆµ0“hv„U@ÛoM'êêÿ#ÚŽßìëëÛÔ0�‰|>�BÎFÚ^iºÅf‘j,/1ˆ Áf™ å)9O…ûOYë:CÛ¡ÚæÑ ´ßÛÞÞþ×L&ósº‹žQAµ7iÚQáâ¥úù|…œq«¯UªHºÂ &!& 5§rýgnδÓßß¿�Þû«,&¥€´·¦kn–j›VTÔ*.îR Ρccc*ÜxsÀÇ­ôZ~oT½Ã€&F°‚ŽFêDeòwª îW±»­è½öª†å»V;ÏÓ6ýŽÎcz­ÏÑ]ôôV¬Xñ˜jp>Yj¦v¸¦?X i¿\l#‚ 4øöRAÜ;húÞ¢ô^ÏЬcúxwÑŸ˜3gÎÃÚ¶çÒ]ôŒFpÎÖô’B¡°›~¾L!'î^çV)@]n#‚ 4¦mS©Ô­ªeØÐšTÿ¾š½ÕêHáÆ=TÛöÚ¶7iz“ñ]8­ÁÁÁ@ÞX,7U¸ùº~µÂb çòÞÐh† VœÌ qm©‚ø¾·¶&Ó××—V¸øžÍ"mÛ�4ýXÛ÷MÇz³8ÔpT ÎrÖ×�ïÓôW«‚‚Íy1#Ø@c[_…ïÅªÝØÅšHGGÇ÷ô¾ÒÖ´kúš¦f2™Sé.zF# 7§hzžjqÞ Ÿ¯µèÏçóWÄŒ`�¯GµW—šn%^:�>X³F|/ 4íÝE«öær…œE†éL*œ\®€³hlll+ÕÀxo~«‚þqròÍâ¾g6�~oˆÂÍO Ž´[°`�ßÄš5°¶5^¯‡W+àÜ­é�zÜe˜ÒðððÒ\.÷?…Baýøq—δ¼–;× 6ÊR!�««  mÍHž§« ý5K¨9sæl®·‘˜®¬µ®/Ôt¦¶ùà •_ »èé Šjp¾¨�³I±X¡öõöÚ×/õ¦gšžèÍC¢@�PXP56�Gûä°ekî Ié^Þ—«°ûwK˜Rwч´··ß©py³öÁ~†iù¾VÀy«B¡×✠é|€a4qe¥ÓéST0y�¡á(Ü566öÚ+Vø‡f§húŽ ñË 0+¨±€óP p°¤¯¯o3Kc ;êá�–`ÚÏÑôUM�¨ç4º‹€ÙA°€„óqXÚÛÛoS�z[Kž•ÙlvwÕz\lÉ7_ÓQ¥î¢¡iwÔ Áš€ÂÍ@GGÇM {e\57j~†5�RwѯÓô+…›?j:B¿NLOp�TíeÌ�;× i/74ºÕ|ÒÝÝ}ÿêÕ«ï¶„YµjÕ/t¬­ÐÃÝ=XÐÛx†¦7è}©ýÒ§Úœ{ÇÇÇW vel’ǺѴÿ¼yó ¿¶„Ñ:/Öñv¯¾Qï£i¾£ô^æiÚYÁæýÚ7[uuu= ðù¨bCS4hNŸ8ËxžÏår‹E¿?e¥5™RwÑo}²»hM hR*D¦‚óåzØe 388xc¡PðÓ×�u(íŸ4]¤}ô@:�þˆæ½¨Áš˜ Î{©À|½ Î}–0¥�<·ÓÃû­‰ywÑ©TêË¥î¢O§»h¨ Ášœ ÌÛ«à|«Ά–0 7Ž��¿Ü"µæçÝEYê.ú M¯5@0‚ ´†-p–¨°¼µ%ÌòåËs>�§ÂÍ5ÖJÝEï¥é—Ú_÷¨¶íŒî¢ ,‚ ´ŽõUX^¬Âòö–<+nöl’�<ƒi½@µmßÖ>{8“Éœ0þüõ 0%‚ ´––¯ïïïß×’§PÈóËÖb´Ï2š}¬««ë!…œjÿmc€§ Ø@ëéR-ÀOÓéô‘–@Ùlö¸b±x”jo&­Å(àth:¸Ô]ô-š2º‹€'p2Pt6ŸÒ}¯Ÿ'«V­Jܽ+«W¯¾]µwé=¼©™òŒBï{#MoÖçóÝÝÝs4Ý£í²Ú EQc­ÍÇO¹Èx¡kppð²Ò@žÃÖÂ<à¨îKªÅùg&“9£··w €D°€§‚ñ 7Wéá}~*•ú–Ž7Sû"ÝEhfÀ¨ ¼q{{ûmIìNØòÌf³;«öæJÃSh¿hv\©»è T‹s°~î0h"ôŠ ¬yóæy³–WZ‚öõ\]åÿoí÷ 4¿C5!+,9&V­ZuþܹsŸ£÷ñRÃSh›¤4½Ð{“Óþ}§¦¹���÷ŒŽŽ®2H8jl”¥+àœ+ZÏ|MGë R›¦®ãöó†™l éó 6ÿT-Îw5½À Á(¬¦¥+ûzÓ4…›m-an>©psx+äQ·öóášîÉd2×õ÷÷ï«ßµ$ Á0#¿?£££ã¦t:½—%ŒÂÍÙÅbq?=5„ØMAöRÕÞüUÓ1 .ì1H‚ „_Õ¿\…ÝÃ,a| OUÚì¦iÈDûzSM'i›=¢@{Šjì65hp@�Ò�çg)Ü|ÎF57‹ÇÇǽ òŒfA*•z�jq¼ǃíî Š` ÷(à?n>¡î9–0ÃÃÃK} OM÷") úùzM¿Êd2Q NÚ Ál„àFb<… ¸oW¸¹ZçY‚ø@ž 6;hZl¨ˆ¶ÝõCCCy€C°TDáf‘ÂÍͽ½½– ù|~Hg7òŒNÛìÚvÇ4 ‚  b 7ÛtvvÞÖßß¿±%˨ è{« ~¶!H©Ûìƒ5�4 ‚  Z›µ··/Q¸ÙÆ’¥XÈóÓ†_ÓöºÅ AlqXOáææL&³ÈF…õÏ‹ÅCpІéüYÛé Œ`ˆË<…ƒ«Òéô!–0ù|þ|­ûÞz¸Úð4 ~h6fÐÀ6€Ø´µµµ§R©óTsóqK…›+'&&vf ϧy¯¶Í ÁP _8ËÖUøÐÐÐí>�§ÂÍÃï0àŠl6{ª@l5¡Ú›ÃTsóS=ì²ñ�b�@@]©Ö¦SÓEétúHKÈSë¾§®´æ²J¡mï4Á ¡6€Y¡š›ÓUsó5KÕÜ\S(vTÍMΚÀäš.ÐThûƒ@‚l³FµÇ*Ü\¤‡�– ƒƒƒw)ܼ\™àAK¾+Ô\n�pÀ¬R¸9 “É\½páÂK�¡¡¡ûÇÆÆ’>�çi¹\îD€&@°4‚]ŠÅââùóç¯o ²bÅŠÇ} O=¼Ñ’œã›eIDATçgÙlö½M‚` ,]Q§ëWÔœŽ³­»ººnSíÍV– >�§®ª¹¹ÀBëú­³÷L7iÐ$6ÊR!ˆsêBáf#o¿íëëÛÖ&—˽Õ0�§‡Õ2½NÇ š…@CQ¸éëèè¸)�Nïe ãy*8|Ø{³ä¡Fl¯e2h2@#êVÀ¹|``à0KïÂú …ˆqk ZŸ[=ÔXó�ÁO Ø’‚MJÓY 7Ÿ³„Q€¸¸X,în�"îÐ:-2B €&F°‚Œ1kn>¡psŽ%Ìààà�…Ba'Õ”,³Y¤×¿M!ëÕz¸Â ‰l„h3`)ܼ]áæj=œg ¢ps§B…w„p¿ÍŽëUSóê|>?dÐä6€DP¸Y¤pssooï€%ˆÂ̓ããã/WÍÉ]VGz½Ÿd³Y¿§fÄ l‰¡p³Mggçmýýý[‚,_¾\'¹6®±:Ðë|_¯÷f=l¨  –6€¤Ù¬½½}‰ÂÍ6–,+6öTè¸Øjë‹z�ÿgÜ Ål„ €„F³žÂÍ-{X²:T¸ùªÕÆû²ÙìÇ ZÁ@:@#š«éétúK…›�‹Å£bÈÓ{<Û]¡æ€E°$V[[[{*•:/“É$®–"ŸÏŸ¡p³_µyêÿÿ®Ùv 5u¹ÁÐ ¾000p–%ì{mppð²Ò@žÃV…š[ …ÂËjþlÐâ6€¦ Ú›Ãn.×Ã.KÈSe{=|Ô¢9?—Ëí244”7Á@y*0 H«{)Ü\›N§û,APîQÍË+õpi࿼Gµ4‡j>a€'l”¥«Éœ+� 7;¦R©[p6´) 乃Þ>Ý2ú,þ£Ôôì4<…@3ÚRg‰ÂÍÖ– >�§BËÎÓ äù3ýþÅ @wài6€fµ¾ÂÍâþþþ],YVû@žšŸï?x¯iš>¨À³o>Ÿ2À”6ÊRá°`@2õ´··ß š›ƒ,Y ¥{h>©ÏßN :_7ÀŒ: ÊÐÕâv® H*¿¦Óé;ÆDáæóB�  %¤R©ÓUss¢šÁÐ2TsóA…›‹ô°ÓM…`h) 7d2™«.\Øc€¦A°´¢]ŠÅââùóç¯o€¦@°´$ÕÜlÝÕÕµ¤§§gK$Áвn6ììì¼u```{$ÁÐÒnú4]ŸN§÷2@bl0ëR¸¹\57‡ ‘6Ø57)Mg©æ†A1 �6¬%•Jýo&“9OÛ �žî����«4Ÿg€D Ø0…¶¶¶E 77/X°`=4<‚ ÓP¸ÙfΜ9Kúûû76@C#Ø0…›�ÛÛÛ=Ülc€†E°P– vEZØäää¿S©ÔK а: ÊP¡Î»Á5 •è¸ÒqÁÄÄÄYCCC· ¡l(Q˜™T˜¹±X,ž•Ïç/ѯV 6BLÐÄ”gîÕì’B¡pŽjg0@âl„ šŠ×Ìhö[Í.UíÌ% 3÷ Ñ6€– 3¦ÙõfÆÆÆ.yÔMƒ` ,zECR)ÄÜ£Ùµ~ߌæ×är¹åhJeÑ+’ Ô¼ì�šÝàA¦P(\744”7@K ØAçhH 1‹5»EAæ=¾6ŸÏ %l„ º³ªÔ óRÍnõ©X,Þ¦Ú˜»ô§‚`a¨±A=­Ð´´4yÓ²ÛS©Ôo—-[6lLƒ` 56ˆUé~˜‡4y-ÌŸ5ÿ³Â‹™?g³Ùl±RPÉjö/M�øÔÖÖöÄcýþ‰y±X|dppÐ�1!Ø(‹îž›ÞêÒ/cÚ×cþ¸4]ëg_Æ{ËêqNá䉹¦¬/ÓCG¦R©Ó-fú\.×ì:ïÜT(~©Ïç�†'ô÷÷o£óå�å–Ëf³]š�Q&“9M³£,t®xm.—»ÚP�Ã_¤mø‡€EçiZ5Ís¼Xß¿·2tNšk”³°–f¬±ÙBŸÞ¬–¨?éwjúžNTY�èu>¤×Ÿ—H´Ù¼Ç¦Íê@…™çkúŒþ]™s{{{7·õõõ¥`ë5¾jk…šÒk÷iöQÍoÓÑ� @ˆºœįôí£Ïç�õþ»¦wÍsH¬¦6ÿy±¶6¯‡vttüIç=î²èÊïzîW–YlKU©^gÊÒg¥®ç§ÏðÆšÎT¸ùƒ.Vü—€Ä™Í`3i³@…¿"ëÍPîV!fk«‚þÏ€PóäënšN§ßefT›%^ë‹·ëüð%‰ÒÊÝ=û}8·*œ¼É*499ùº(Ëëõ^kf¤›F8/}T熫ûÅ@"Ìf¢ /ó5]¬̧­ *ϲh63åÔ½)ÚTôù^¤Œug__Ÿ[`6ÃŬ57Y[ÛÇ+ÜœiÑ­°hè’H�6iooÿ]µÍV@íÍf°i·¢Ì;Ux9&â¿ÝbÑüÚ”Ó56O*õnx%ÍÒhl ßµéäääÍ*XL,×®å^fk|ªˆþÿ¤t:}{>Ÿ¿)dù\.÷ýL&s¼­ÓÍó4VŽŽŽždÊ êXDŸùê3û×ÀeŸáX…ô¿©ææ'zøj™>ƒ÷ésTÍ ¸ 4…öXXÕà»…B!g©áƒM±XÜ{PB—W0Ù)•Jyïc‡Ztâý�fÞìdeÀâc:â]9{{¶™ÔûxçÈÈÈ£ .—d³Ù÷‡.¼`Á‚õ:;;÷×çÕkf·´èvÓ…Œ÷è5O5‘èBàÉš�lR…éKuqáŽrË)@=¨×ÚÕ´¤†ïM…�H÷⨶å7*xü·jGž©Üw-"oS?00ðÅÐ啹nP¸y¹^ë÷Ó,òWýýÕZ¯ @ˆš4E[±bÅãú~[燭ô™ÜWŸÙXt_ÑÅ“çh8I6�w£BÌcºjs„jJvVæ�(ÿ«pó¾(=! Ý®×ÚF¯ófMÇkúLi~  Q/Rø¹Þ4 }&¦ÏìVúŒFm:Wç‡Ïh8 ß­Z^ƒÓÛÛ»]GGÇ/BÓtZÞ /‡X*(]¢Ù% ªäw•>³Çªæwº€r~è?é<òvÕê~Uÿ{�€†1k56*Ôíµ—/_žSÍÍ^zø—Ðÿѕ܃½M¾¨+}öêz^ÒÅ�jö‹æJÃ7E‹K©oW_¶‡5ç�tvvF-ìH l6{ŽfQjmÞb-Pã @’4üó²e˪mnò*¼üi``à=üTÈò*¼ü?;Rn¹þþþ]Ë-“J¥îÈårË-& .왘˜ØVÏ; ûJS�•ªÜcÞ®æ·êŠô�Å �N¿PÏ·p¦e¼Gš¡¡¡¿­ûûL&ó|¯ÓÃÝ´^Þ±ÃBÍÓšç5÷®5óz|�¦‹µ¾¿°:ÒþÛDÛñMz¸‡¦ ´>Í××´Jëóĺiò®…¨cèÇ6M�yÚ>;jùΙ^k||üO###ÿ¶xÌÕkî¦ùžZ·m}{újhzféïÞ ß`é=ܪé*ƒ¿²æë ¿Ú7ïëèèØCÛqaÀâ t.ÙOÛób‹‰öåζf_î¤yf­ý9WÓã¶æ3âÇâ5]©éê8Ï)�ƦûƒÖÿ`}ŽÖ:nì?jýýÜ4_Ó¿ýÔÏ~Ü_­í|±jуkϧS:–ëþwR×´ªêú×ÍŸ?ÿ™ºÐ5cwázã:wÝl1ж|½žïM[kÛùùhÀÇS*mÇœæYýî·š¾£càÞ©žCÇç†Åbqó™^§½½}Dç´%†²úúúÒ:¾ýüàŸÑèWýÚéÒùbeé³éßgËôØÇ¬»Rûæ·6K¼‡XÍöZç|âcqù�~>,­óÝš®Òô«Y8ŸÌ¤ê²Ÿ>ê}R:' ÔúœT í§iæÒx®×çZ/?çû9Å{Þ}HŸÓ¥úœÞf1 )³zÇXe™¯íûDÙC�7ÔöôrÇ34ùçaHÇÒ¬ j=ká© ;lkú¥Ÿ‘v¦/3bñ™£×ö‚wÈØ3^ØÙBXtU»IDATü´ceè ìÓÉ®lwÔÚé;jGGÐó)J£Ÿï¯iwL;‡þŸ^{±–¿B�ót°þÝ*¤ív™fûÌ´Œ¾H¿ /÷O¬õ?oÓëP¯ÿ ç_iÛixxx©ÕˆÖm?Í>®iÛÿ6¢u;ttôÓëvß­ý³¬Ц¥íóßÚ>çYô»­NtÓkíoÑyX»LÓ Z�»­i;~@ïíëå–Ó{øº>S´éó|¤>ϧ‡,«×¿P¯°UAûò¹Ú—~ úp¯E¤u¸Z³“´WYôE·�ÖãÎrËé|ܶÎÿõk{}Zß^*8ÑzÿQŸ…¯è|t®UHŸßWØšÂýŒÖ]çJèmþ·¶ÏfZÆÃ†öCH(ž’‡§îînß–o³5…¯PK´-OÒçùµéNûØleþ÷ÏÚ>�ïTO»{ÞÄb¢×ÝWÇø±Q¾s×Z¿qžþ÷+Z§‡­ÆJç“ãôð-•œOäZ­ïת=Ÿxa]Ûìå–Ó±ç!kU•Ïá!`õ“?—ÎI~N}GàEª'ÄqN ¥s×õz¯×CÊ…ü�–÷Ðéçû‹´.² é¼°‘^³l� *ã<Ã{]ç×ÝÚ/oÖÿ¿UÓ^3üûýÚ/3^T©¥$4E‹­Æ¦dLï7BÖIâµ6Ët ¾I„ëu ýÑ{dŠz‚ÕòÛkö9½—¿éyNííí°Êtð¿NëíòûC�›çµesæÌù³‡)¿òh1ÒÉÿ¿ôœ2}ÀÅ(¡ÆÍ׺ý� ÷ù˜&VGZçWjºZµ K* 5Î{õz‹ahý®ýôbK®¸Ï ~¿Í™¥«˜!ö´ y¯‹Ú—j_> ýñÎ !þÙö‹Wj_.Ñóínu¤×;\ÇÑ_õúˆjœ–¡=Ç�*‡¼ÊZœ¶ÃguNñÞ;�´h¡Æm§ýp�Ÿt\mjˆ…_øÒ6ý½ŽÓK+ 5Î?Ú7ïÕü!=×ÙzÎg[ ø~×sŸ_:ŸüO¥çyÍZç“Y/ûDå ´½ÿ¢÷ðá(¡Æ­uNº«礞žž…zîOiÛ>¦Z:ï…šÒúõjz“¦éyþáïÕ* òoP¹�{]Ûý¢ŸÖýÚ¾ç– 5³n6ƒÍ¬Õ©&àí´ B‘vb] kóR 4ÞüiW‹ÇÑ:ùÝï…‹®ì6ÓºNê¹ýJÉÏ}L «Þ>z?ɾÀbà�Kïÿ7¥°W oöwJé øäT)½Îњݤõ^dñÙ»´mßl�eÖÎ 2¡mraÈ‚Z®_Š—YDÚ—¯Ñ1x—þÿ ‹�7Eü•öåñVcú‚Îèu~­×ûn¹Êrôÿ^St£>—‘z l"óu<\«íðI[ÓD¨b~nðs{é\�Êy!îÍ¢mÛ…=×;|¼;¯q·ùù¤TÛúV‹�ŸO~©Ïùç,üœ$7x0‰hÖåbýœTip˜Š×úéB­‡ÎÏèǪ;¥ò@äïÕˇzî�­†¼ì¥éw¥– ‰èP«klž¨OFÙ*í’—Û,ð¦!���ÞThW‹™ȼPâW -~^Eyv̽Þùý.‹+)D®M'uÞïßé¶øø—Ô�Ú–;X@�\_lQ í)¿Ò§ù©Ú¦±ß§çœ£ébm¿÷l6E%b?78]Ñúyè²:ž"�¼y�Ž�_Z@3ÜJh_~ZûòR=ì²h‚¶¥7ÒyéÎJ¯`OGÛñ<¿"h-Ä›Ìh_ݤ‡¯¶x�êçŒr÷ûáéü¾-š:kRïT ½YÇz,!Dëú>?ŸTQC3#=ï'J瓹֠T.ØÚÏIz¸‹ÅȃCç$=Çç½ÖÏÖ\ �Û®:Vo×Eð-¬tŠÚMÇÀï*hu3«Z2Ø<ñ¤““¡7”ú½8s¬Ž¼é•>¿²Àû€*åW #V7—-øê9kÒÂOÜÚ&~£vEW5KÍtj2Æ�Yiº¹tcb¹e#ÏÞ\ɯôYí}L¯u¦%KMÎ ù|þ&�‚:&о þBQáýžMíV[ûêµ®Ð<Êë…Z/”Ei>…_Ô1g-VCÓûõ}ôR«?g”î}B¸y¥rA¬äuùÅ$7KÇúaV˜ý^š“ëq>Ѻzy¤!ƒr©FÍÎIÕ„Pm·é9þ×jÈk¨ìüb\Ðq õ)„,×Ýݽ½Î÷q_®‹–éîy Á½•(µÖûæJ?˜êUå÷]‹Þ¦{VxhÒ‰"øþ¨'•îщ­÷ªjD©±ñû¡¼g$«½ÖázÍOXBh}cím-+4ݲ`h°)5µú¼ÕÏ«uÜ_`ñ«é•[¯íõÞ­ÉésvF ÍaË©ªi[‹i÷{­FAsgê3º‡UÀÏ'* ~ÑêÄ{VÓöù±ÕWèweM ÞÚÎ�“¼‰ ¶ÛW­>¶Ôë¸lèvý©5pMÝL’lV[  …B—Õ�]·Þ¼}tœízËñ+:¹†~ f�Ö÷ï:Ú¢¹Bÿ×g ´Æ¦Ô1Ál´•ÿœwÛk³+èÄ[A³¾ðhkûkÈrZ‡²çÿ‚ó¦VVgŠõÚu+üÄÄ;ñfÓÊKŸ¯w†¾¿mñ7 œ‘7×ÖtUÔ&ֺкËlœOdm§²Ã_4¡.í§Ë-â9Iß '[}}~þüùë—[(´ó€$kÙ¨÷‡.«´n7Léµ¢„Œ¥ZþSšöRPÛÄ»5õi||<£ƒ÷ úûe!O⽨X˜Ššþhýþ®Ù—µŽ»éñs|ÇÆÆ¶ÔÏ>`ê·#ôBõäóº¬NÄï×û{‘UÆ»�¾[Ó]6M—”µà]vZÀøIÓðu¾Ë»®´iÆÛ)GÛëtïzÖfOÐqVÃ?ÆBÏåÎ Þ¼å{V™ßiò¦17ê9n²Ê§pSÏûWk]½¶Ëïa¬¨›~ïtD…ÿ�[sZ BiÅmÛ‡5ýVÓ? ±(�ÅQIg:Ovçìã‹Ügjooÿ~„Åçêøù�U·OXRê:82ïmÌ{ç´úˆ«©±Ÿ“þdkΧ+¬zßGiÍàÝ9ë‚Çqññû4y9ì•*õ¥ðà]u*0¾L¯ï÷J¼Âj¤££ã,‹V|­ÖëÄÑÑÑ»V®\ù¯µÿàÍðÚÖ  å'årƒ>Á;—èêê:eddä@›¡ç†šÕØèø·¶CÈ¢¥õ˜òKXÛÿ QÚëuÒòßÖþ<7ŸÏ¯;ÖÀ�#ü ó¨(͘ôœ~©ç>Ñf~mïFø‹×+ôúeGË-}9|H…¶;ü¦J ÐÙÙé…ž3Ó2:i¥ šNþïÒ fÚ/¹RÐñéçú"z¯æß´˜y·�ší¸¸ówÍt,”…óéÒÀûžà͘´?vŒk$õ©Ù¹Aï?¸\J!;=UÈÖï7/÷E´6¯½, 8:]MÛŠÒà®çù�Çzî³,€œ¼wýï3}f>¢ç�¶¹b[ÈöW¥ûüž¾ 6ñ¥›nCk“^iü°�Fø—u±â m¿O·€ «^3v‡¸T öÎQªê9²ÕøEµþ­@s  ¶¿žní¯éõé{Þet„ÞÕ¾  qßÑ¿eÓ-àcÕh]ƒ$Öùäó:Ÿ|rº¿—_¼Á'­ëÞ>’ôÖ¨ux�7•Ö÷ΩրtN:Nç¤/O÷wÿ<•>S×xÇzß~�rN:"`Ñ�f�÷���¿r¦}¾6íËc´Ý_§‡Ï›nï>ß»¾Ös}U¢T»tÙÄÄÄUµ|�jÌfS´ÐBɸÕÎpàr5éšu e¯Âꀺ&4ÔÎÁ~¡ã!­õZ3VèÄT�ÓóLh/Šr,èÄøuý_p¯SZ—wYc«YS4 nª¡å”ç…ïàæ-Ú/_Õþñû.‚šjYïÎ7x€P}bÝ—“k0S¨Y—–=_ÇìkõAçt­ó[¬‰šKë8‰2^Ôuúl/š)Ԭͯ"kùWyÓYC°ÐÏ…¶kVÓv3…šuéx÷‹_ÁMŠu¾˜ñûJçã(ç“Ãg 5ëÒº^®ï@¯i mr]�û?+i!rÀL¡f]^æˆxNòïÏ{‡+Ý3U¶C&½î1¡¡æIZÏ{Ê-£ãèeež£¢–hV­Zµ�Ž«ý\Þ¨¡ÆÍæ—Fèk׬VI;*(°è`®WµÚ3–ù®E¤bÙž^ôC:H½©û:ðƒjÖ¥Íñ8ËÕny;àÍúŽÓÖõ‘ —ê½Fº9{¦ÎJÍÆ^gaÏsL%µ)Ú¾…†Gy³Ö©&ã#”zâ­å¸;ÁcŒÉ4 ê¦[ûãBí—�XDúŸ_†¾†�CàcÐXLô|_ÑëGî%É»ÒÖ,ô½öèŠjpxkt:¿%d9¿�F篹�°hFô¾½*º� Õø½5š=+dYo.¤ãý!‹HûÑkè® \|Æà¢}z>9Ë/|XDú¼S…íÐÒ­T€jÚ\…¨ O¬ôœÚ ÞÖœ“f,{h?•½?UëºL¯<^ÚZ¶)·€ÞËóÊü½’–§y Y·©{£jÙql\è V:+º ;*½Î¡~ƒýL“ªÿ®¶h¼ qȇ6dÌœ }¡÷ám<ƒúJŸ‚)Ÿ°ÜúÞFx†¿ïo¼ ²>°_³ éäô/ˆX ô>þ^«�Žƒs4 åúÂ=Ôbà7®ëu#Ý»¶6ß¹òè"¶ýoX*¦-°‰©Þóû­Âp²lÙ²G´m¿&€¶sèÈòçVÓ$W×=‚j7¼‰—Ì=ÕßJã°• a¥óoò§ZIDATIŽœzSW=Ç-!˪2tûÕÃ#Qj¨Öå-0Bk;Ë}'jûÿ®\9Nϱ·EäMyõÏ-·œÞnjȣöЦç»@Û§&ÖÖÊlÞcÚ÷x¥äAWeu0 YÄ}?C©÷’oiýŸ°¸w.àÕ§3õdTö ùäšv]ÕŽãáí¨r uttx{|ª¿é=µ5÷+­:^¨õ�¯‡,i¤d6ƒÍ¨¦®€å<]Æ^€ñÞÂB—Õÿˆ%€}_©‹Á=4÷­¶Šòÿ===suRœ)Ø„\!ÿC¹ÞÊÊYµjÕ­sç–ïàGsï³ý÷Óü¹ìX7Þå¥ÂdƒzµP°™©8pü¢Ç«-ø8¿Q]³²ÁÆf¡`éá¯-¬G²Z6EÛ2p¹)Ï ~§…ùH&“‰Ü ­Ú®/±5çü¨MœžBÇ_äf.ëò6Ú:û´ý3-W:ŸùE°šŒgV/º:öV7dûwë9š‚o4o5 .ìÑçaÓrËéø».ŽžùôZ§‡›þ|4¶�¾¿eUò&®úlþ- vÀú_­U‹–(5òA©ÌDç¤ õ¾O+wA@÷ϲPj6„ù sÆ6:nÔëyGIÁcèhùî2Þ®z}oMPËÊ…šHBS´š¬£vØ&¡ËêŠÍ߬ÁøH¸šU¡èËú0^®ù}:© ê ½Y“75Šj…| þbUòvœÞµÜrZfº¯×<•mZ§ít»Å tÅþº�eg¨±ñWÙûœôÿ¿³xwçÞµu¹å¼yD™&³FÇ{-Ï_›„,¤mø·i~ßp½Si_vê ³ª«¬¥ñ‘⺇ã—! éüÙ Bòîi-Ú×W¦511ZƒËþ(Ý[2®ÓtÍCîgyÜ›"Z tþ"d9}6w²Ú ½§÷ÞijÍ£¿`[[Ùš*§²W,çw¿‡µ¿¿7Í? é»š~­²Üc 5>€üOJa8ÖÁŠCƒ��ϤíõÖ‡†0›56!µ5®ª«‹Ó)�íD姪 ëUš«ƒýï ¬t%ø)'åÀ«Ûq([�Ô:†Ü» O3Ž4Ý• �tʶCu¡m‰CŸKëS¶‹ÇéN*:¹Õxpµø,Ö´c¹…ººº6)u ÚPjÙÍ»H\ô/ÓüðØ5õÔÞÞ¾±U'îã/¤—¾8›VÌ– ãA‰ßZ T«v‹¾3 SÓç lm�Ó)&¶ãÝ/$é¼ðÚ2‹MyMà½Á=¶ðïÆ�û*ª=ŸÌ$´f!¶ïñÒs½µÜB:&z @¡Åï•ÙÖkÐý{BÇ¢Åi²Â^ϦòQƱ©‰7o —Æ©;¿‘P¡êH­«ÐÔ1ÀL'äDו“Ñ�ŦùßÐ{§‚ºR |® 6µ3œt‚nV×mœmwCßÿlôŒ¢&�ø@¹Ð]gÉÓn‚/�WÒ¨‚ÇušFlÇ_„APõø‹"ä=ÄuQÈy3¿8T¯¡ ’&è˜Ò÷olÇ{èw„,½ö}2¡=S†>ˆï»ÚóÉLBklbû×s=VƒsR·ö¡—á×sïðä/g«<ç�„„©¸j�gì™T;vNÀ¢±ßc£‚‹�ÜTc£õü�ՙͫtbùª¶ÏË-Þ‹Q`å„|kÙSÕº¦\ŸB¡0WWE¬?‰YLB iÓÕØè÷AÕÍq~Ñê÷ï�œ¶gh!?.¡MÌjòÍ mÔ;]ÉÓ®èêØ‹µé@œtœUUÐ�³ðZ ÑkÖûø‹�ÞkwÀ�ê±ÖŠ– i›)èÜ7/¤%ëÄÄDlû$´Ð\ë?Áfttt^wwù¾–âü>ó h�-}ky|•%fã;Ñ/|©Öôí—£¢ >=×CÕ¶Ðö *Ok¹¿ZBÍÚ=6�¡ÆÅÞÜÄkAB—Õ�t£Õ‘>ÿOëw]Œ¡æa�ßn-DË�¶Ì.¶“öWùÞlÆ› Ábý Ùb¢ã,¨gB�èëÒÝùZB?ó±‡h¿©X³Ð�W«6wñº¿Ô>ø·îªm¦çñWî&×'i�§»I·nQô¨j»é½Ž,t‰ðš¡=�¶�û‚>£ÚïqïAÍ咽r¬ŒŒŒ„žOêþÝ Ïfèwm%B?s±}�ë}‡~�ÏØq€.N÷«–Æ/z},®P#_Ösݰ܌Û-´»g½ÇÄŽ‡ÕrMÑJÍD‚GÍÕAP·›§T“ä½#}9®*J˜'���Ÿ ‚~Ð='ÍBï9ÛÙÙ²hlM†´­V³ßôeöØœ9å³¾N¼±­³ÖwaÈr~Ëê+ÞFÇè½!¤NÙaD>Ÿ ¹¿ÁÇPÒì"«¯k¬ qþ™ YNûcºŽDêY;<`ëT|äú€›X›0V{Njf¡µ'qî“�ýáÝKOq?ãH` —ØÖUçÁ…!56Z¦Þß OSï}äf8'=ÑtP÷{åB{Ö,ç~­×q>ø¨¾W¾_na½v,•º >n ÕrÁF…ü�[ø—Ô_‡††î°:P¨yƒN_¶Ê­.Õ.]£“Ò’ÁÁÁÛ¬Ô¡.¼ÈZˆ>ØÙÀEã:ñ¸ ^�¦£+ƒAÕéÚ·u_gÅYÿòšŠös¬ÝPΟ?ÿ™zÎ….¯e4Ýß¼¦4àÓ1}YoÉÛñ§c>èøÓ1?e!¯ÜË�Ï"mU9'y7³===™áááÐó×´úúú6‹Ð*¢åxS«�&GÚ†~¼ßdñ({¼Ïpß§÷v¶‰Í,¶Ï¦÷†²\œ÷·Tª´�âRÕ9ÉÖ¬�ÇPñ:•nø™z8º-›Íþy­¿õ„ã–¿šÑRÁFi×û?Öùˆ«V>*µBÍ-ºËµŽ× …»À¦ínX„õ­…h[äC®˜Ç9À˜žk—À妼ÊìÝ/®óΓR/{e—+ 8Öôº»»}´àf 3�'¤íú/+Ó›—–ñqej:BÜtÌÄÖ½«þrüéü6eáÉ»·×sX9ú\õk_Ulô:[WSûá÷Ï„ü¿jmýœôS«Ri GLCÇÔ¿ƒ�Ÿo¿kUòÀªç ¹Àø¯~¿‰Í@ÏïŸÍXÆ| ýnÔqý/«�ÐÙ]-&¡ßã:v¦<'©¶ÆË—¯±h|x‹ùPzý;u±ëž–}f¹'k‹0NM³JÂ86±Ð·‘œ qž¤T^õ O!ô!9ÜÂoÂ{Tëõ1]EÏèËú úœ`Ñ*{-�æo°@^UYîõz® TŽ;FÛò¼2¡Æ•†€› 6*xzŸõ7EìMâü8FzÏϵúl¡À—ôeŸ³påúÎo:“�}úë˜ø˜U©££ã¡ËÎt5E Þ���·*)ì~4pÑHâ u =1ÇreJuÐösQþGûêk3ý]W„eaÏ|¿ßt¼ �Õ‘Ö9ôØ™–öñÇõù°UIßgÇ„4c,­SÍÆ³çw�O>bUÒæãÏIþY~ÚºéâØ~m�ãÛ(Т³§ÊrÁéê8ÜAÏ_¶›ijlZ Øè`8\Ô?hgGHJï V ,xFÈ—¦ßhì54qÔïR�DÃ�‚^kÚ¦AÝtk¹ƒuŒT|5VÛ×›*_u/s5%ôÆî·©ðRñ>Õ x‘Þwè® /Ô˜Õ劓ö´ï¯Ð¶øL”ÿÓ>¼XŸÅ?Í´Œ.ŠÌX‹ú$½öŽZ‡­BÚ—¯èîî~TÏq•މ²ÄÆd7½nÅ5M>>—f‡‡,[®WJÛÊ?ÇÛ¬ *ðT]°-ݾ4dY}_�j•kÓÿÇ"´c OU36•>+ÿRþÐqZÐycÊï€oÐßËVî5ú:¼Ó*䵡÷j}jݱR”ï�]ô¾+®­Òÿ¾@ïçˆ�eg¸hú ûÿjVrëÁa! QcÓÄÁÆ œ:X¥©·��Ô ŒÏ*MßkuÐÕÕ¸´N§Xmñ£ÚšÅØØXp7ÝÚFçxh‹Hãõô¿çFùŸ™®¦¨°ì…´²7cê9ÚTØú�w)iéêþú:–¾¸ø¿ã =¢š^qò.�un8fΜ9÷jSîå½ùŠ®¾¿7`Ñ¡_üZ‡ïé|õb‹ÈïÍÓk\XzŽ=T ½VïëNM¡ÝUWL¯{ê¼yóžõÿô>ûtuõ\?„ÿåÊ2/;2¼�á¥mr�U@ç…-õÿA!,@Ð… ß—•NõŸÔ쥆厭'hô«–<ôœù¥fÊŸ\üz›¾Òzáëk b[XtÝúlžßØé„–»ÜˆÖç›~Ë�ETêâÿÂÐsÒt·4è÷›X}§~Ý"ÒWý&¡ç!jlš,ØèÊÈkt`NóÛõýµvðî�ß¼õi«U=‡–[DÚoÓ6ØÏZP©g¡Ðб¥ ¹¿Ñ—Pp·ØÚ¶[én‹Z ¨¦P¯»µŽñ[JƒÍѲ/T�^Z]._°Æ|÷+‘^XÔôÃb±è=–�¤)r˜•ÿ ê HŸí/Y˜yZ—ë¢ÜïåWnï\·¶W?o£ébŸÑó½[¿ ;#* ª)ºÍ�©ÐÿñcUÇìoõ¿AÿãWFÚð— 6N¯ù� .Ì«´@;�ÓBÔúžYº9˜–ÿj«^Ȫ„¾ç.Ý+b¯õ®|—÷ã}/]l¾ÀæTËü=è|ìã¦èuë<ž7gÕò^fÚ1dy¿8¦í÷�ÕVÔúšn‰xÝHß·vìàïûfÕªÝ9Õßôe›ëÿ£ÜBð:oþÈlÖ‚�W»†,§Ûdè¤Å¯ÑÁå÷;ü—UfD!IDATX…‘º°ËB–ÓûŠÔôHßá~óè·­…i_žañ­ôeð€7°:rð+Î>š°þ)¤ aTªµù¦Mß3ÎSèõŸ¯ãçÏZ'¿çaÚÁÙ¼@§uþ²–½;B¨ù—Öå›AWÎô^Ž=7(üÝ ‹Þô0¤�òTtÎú޾Ì/]Þ;õ(µÇy/ÞkÒM^“dkzJ›’×’øñ§eË…ê͵¿ÏвÿÐTõ}dSñcÉ�)_ÿ\̰è-óq-ë÷,ne�´í¾°LèUìõu x ZP'-¥fŠWé=†ÜLÄ›/j}ƒj œßÇ¥uøM¹f§Þ´TËý±-BWåXC…Úφ.ë5iš–êX?t¦åü™öÇ…:Þýþ‰ Ö"^»«?ã¹B÷æÕ×ZغúE›[ulœêÇòLËj™÷ê‚—7“ÜÎi}�·T:'ýAïéKe.dÌóó¢ïÏÐ -¥çŸöÞJm“G­üÿ”:)Rúîþy[L¶·ŠYëî9BS„zz[; xBi¼‹�Eß¡æi*,=0ÓBªVÝ@'ëSôœû[‹Ó¾¼K'ÿ"ˆÒýâç=Üh¿x•üïµ-ÿ¦¥�öéUÜ~â¯yoCzÍÏë5C¯îÎÕ²_Ò:Ò»'÷Þ—ôÿ/­³×æø 1rOKz®OÖv‡BÍû-"í‹O¨@tÕ¶mÍÕ'i_zÓ�ê7ú�² ío^ô_î�zÒ3ô<±�Ì=��éxû˜Öû\­çºç§gk�ýø ôt-VA®lS—Ò`¨?ÐÃ�ûh¶õš,ÍOPÈð&ÊOkÚëÍRôÞ¡és•à™h_|UÇCpóG¿‚® .¿Ózûxj?ÕÅšµ­Õï7Ð:nZÚ¶›µ1gEüû^!Ä/xÝ_!ë{SJí�“´ý}°Äû4ýC“vŸSjÚù^7ýßÿ†,§×ü”–�ò}v´BËÑsæÌñ&«·jòZo&»©ÞÇ 5÷�Öñø9MŸ»Xcû¨>g�áœt°E¼EAîÓyãÒþþO àßך\n9oR¬õ<ÙÖÔD!‚Y 6:ØŠ!=PÔ‹¾pÞ­ë¥Vg~‚ЇÏÇX˜ñC¦m•ö¦':ØýŠÁµ*dù�÷W?O¿ó&T[kÚCÛÕ¯HG-D4­‰‰‰wi»ÝÛm°º¹Zþ‰6î!£/GrcŸŽ‰ÓuLx0�ò6?®uöÞnt|Õ¥«ói^¿­Á j÷���{³ÖÈãC¨àôk}>OÖû‰мömíÇ}žüEÛÃBp¯}Uúï8öÛäšÁi‚ïkQaÿ{úŒ‡vàcz}SŸ/oÖsž�@ï¿Ôz?C�7ö±�lMÓ@«×ëx¸HϵïµyÙÚc¯fâ¡sݵOv�X¿^\5d*{œ Ïè’�eµ®·h]½í--ÿÍÞ²ÖÏO™GðWî«îy-Pxœç¤w”Y,¨sßÚ‡ê)OÓ¹ëö'»³÷Úøîîîçê÷;k™7„6 œju­ÅÍf�M#…š£ub™Íf[~űlÏ;¥+ˆ^uþÙ�Á£šlÂÞ4TÃu¿¶ÕñxïJ£;¨³³óÏÚç ­Ž|ÔcM÷ÒÕl´-þ¨€±GÄîÕŸB…‘ë‹l¿ÿÅêk¥Ž£D�“Sò /À….¬°pƒ¶ïâˆÍÆü†á#×.ôÔ+(èbË‘ª…ñž +îi ±Z¡2Àõ9¿-â°ªéü²8ê…}6>¢ã}§Yhž4ªÉ{fMÌ€Â1:¥Ü9IÇÏ…ÚŸß°š…?IûÎ÷ßN~rݲ\µç!­C#¶†ª«– s#JÌoô+ä6»fë^†§hÖÞ4t…é‹!ÝÂÖCè6öÎtlVÔ“S5´~oòæ=ç]6ï¸lÙ²G¬:ã*8í8 `l¼›cGAWÈŸU€ˆ+Þ¤fÄ ’ÿÇÐ0޵$�ŽŽŽú=½Q¿wýþä7ëó�·úú}—þÙê§QÊ#Õ9é¸r é{bX³sl–é8®åØB‰0›�ÌöA»DWÎ^¤Úe6ËJ7•ßÄX� 15ºººêzµªžTðñ‘”kyRþ’öaÖbä7Ÿk¶È"¬†Ö}HÓö:oµÙ7Û5‡£ÚÒ¶X¤/´È½NE癿���û8eo0���uåë~I„ÿ :û V;]½zµ,¹ÉŸß{¨ÏxÕãÍÔ‹ï…Ý£¬F´Ÿþ®çoô^ Š>ï§i›Y§²Éýz­W„ö°¸.ï‘Lç“Wú=ºVcÞÑ“(©íók@~®¶ñÏ‘&?'ÕRiÙ�iªÕ}Ú«õÜe‡_Ð25é 3If-ØÌV#z?h:LÒWêËðoÖ J]L_o1Ó{½J'Àw‡,«‚A]›=Õ“öu~llÌÓŒ5Ü”¾ߣãÉ{ž*{LGmî§ç½Vûe‡J»‰ ០#/Ÿ¥1k¦2[ç÷#mï­´-N´˜¯ªöä>=ÿvšj9F–ßÌür?n¬| ­ÿ[B ŒÈCÍN*èUüÏõ˜ß¿iñzTÁ>°\¤ãE5£gh]�±˜é9ïÖ¹îúŠ­÷ýÄÓ>ù–7K³5Í®jåvOÛU{¾ŸOTã³­ö÷=V;+½7¸ ”¬ ?W×âœä¡Æ›‹y·à¡ÿSºö« ïp ä;z=kq­Ôíz¿w@ÞFš|l‚†«®SaäÕZÇs,>ÞÉ€÷¬Ô¥´÷ÿžDú"XæáæÉA cð/=×>~¥/ô*iîçÍ$ôeû_z­[Ì|ÿrô/Iku­ÍõÚ*mßSUØØRŸ—·xíŠÕHiìŒô°Í_¿¥cñ%^lчI½‡i{½6®+“zž‹J¡¦¢«×kó˜žï ¾O-Kõ\/O¥R!Í#rmËoh[¾U¯zŽžQi\–�V¬Xá�"´üMÄ•Ðçÿgší\ƒæË~Õÿ‹ú|¾Ê/´Y JŸ™¼'T‹™Þÿ/üBL­.’Ĩ»tNzÍ= U¤tNÚAï=¨§³µùB]{™ß¯j1ÑsQê‘-¤9sS—ãB4u°ñ+Wš}IW£·ðÐe ŠÙ¢uô®FÐÃ;¬r�éC~¨7¥Ñã‘Г¨ Ý»Y“óp£m|°¶Ï«,°“uù•!M'jûn¾v—´Ú~!7 ŽY¼°­õ>@…ïmõcð oÓÑúÿÄ?zÎÃã(PƬç%o}©×Þjôk?¾wùòå±:ð{˜tì­/?ïÍðüjk|Ð8=×6zNoйWDO4WõÞ½´Ý¶ÔkºŠ×ü‹Ö{=ÏAqƒÚ¾Wø¶Õº}SÓ¸U Ô‰Æ1Ú¦Ûx³ŸÉv¬¢õ½@³Íô'OŽï¶®R-à+üó¼VóÉ�îl[ñFð²´ß—h;¾Bßo(•#*¦ÿ÷sþiº¨ö=¯ß?ë6÷ý­cè}¥óɹ1ÔXÞ®é•zÞ½5Õ²v¹œHŸ9ï�Rëû|=ô¡ *ÝÆÿ9'­\¹2h<¹iÖåN}W¿xrÍX\ÃV!oq£õÙDëóÝÒÏ!cå¤åÅÖÂf³»çã-æ&'^hÔóÞ¯á¯*ÌûUËšß›P :ˆýÊü�¼—ï¡j_½·ç–û?½÷Ÿj¹ótòüÉöªäg—yŠûK×IÞÇI¹£Ì2¿¶xœª÷S®iÜb«Pi0´­tð._§÷åÛxëþÅ oWëýýB'¬K< ­ów/Dt[yUÝ@®ãúwšíÚ××çãxÏJ^_S®‡%/¨ioÖv�ÍÕÕ4ù©5mãâîfÛéý?®ÙŸµ î¯e­L¨Ò:º`Á‚c:;;_£÷ìcÔøþ|V™Ñþü�ÞÏ/µ­~®c¹ª‚—Ó1ñ¨^ÿ3‹®ÌGu®ú¬>C'—ÆÍz½æ~/Û´j/$jòç~¥ç³¨JsÞßßßÿu½¯}õxGoVbe¶­Öí Mh›ž·öï}L+ýþ3eþ·âï›Rù€Ž…/Ì™3Ç{žÚ[¯é]Œ/˜áõ|�àŸi~Y©éä:_/ ÅwÍš¸ÆMÇè¿�ÑØ:é(]¸ú…�f_Ú~Îõ‹bå.bùE3<öZí‡ë´jÞ!Ké|ò6CÇê|òäwƒwc½ÑLÿWêÔäzͯÑwÛ5qÔÞ···gõ|!µÒÓÁwuu…ìïµ/¬Œ©üóyí¯'ÇòÛ«4¶ÐLŸ£?jòZº+´¿o¶˜”: ùˆ¦Ïê<´Ÿ¶É›õxŸ€½_ÓÅúžºÈÒÚÐñ—…]Øôsݦúƒ¶Ç`¹s™Sa…%áWÉGÜÖÁVöDªiÇj¾ÈK¯ó,ìÏÒ�é“�ÇÐæWêt2z �½5œOÛrs�€üjïsµ�ýf½¿øö}²¯ùéøŸ�xð2/¨°©ÐŒæÏŸÿÌîîîçh}}Tc˜ÓljzPëþ  ¿z/k†Dèííбäƒým ùf>À¦{Ó¢‡µ?ÿV¯š¥JùÈë›j½·Ð�=Zw¿±ÿo ^`šÕ/Ëžžž… ÏÕºm¦7Ѻ�êñ2mçk—ÄÕD(.*m¢Ùsµ~›–.ôø�h�—–ë½0“ÉxÇ83¤<Äé{é­†HtÑq#m;?Ïúùv#íôò~¿€¤ýâß S6ÅùÄÇi{Ðÿ]µjÕ?ª©™HŠ)ÎIÓçý�Ù8'ù ê éÏÒ¾x¦ïMëyMŒ¦ûæþÚ€-(‡`S¥z46ïÖqpF¹åjüJÍ?ÔR› ßyšúÊ,÷qïß I´ú86h Gz�ŒÕˆ e«˜Kíà 5@‹SMÌÆ:'l5âMlB�Ÿ“î4h"›*…ÞTª/™Šn Eõ2™Ì"Õ¦œ®}u½?ßb¦+£/(µã�‘^¿Ñ{—P:] é‡ ¶Ðs²œÎIß§�ˆ`S¥ööö�žgüÆÇÄܤÙL¼M½fç–~ü/M÷*ˆfñ:9p¹‹ @KÓùçsºâÃxùŠ.¶\¿`Á‚ØÆžÐó½F³7,ú³r÷é@ÒlªT(6Y.ÂX2ˆQgg§÷n´þÚ¿Ó¾8K_þ—zM‹UIW\¿Yê}fFÞƒ‘ ¿1-«¿¿W�/>±Î¯wíêêú}\¼FZçšKB–Õr 9’<Tƒ`3} ½ªÜ2ºâv¨•·ªÑzÛi*(ë£&OógïÞù-óK¿ÿ&êÓùó篯ÿ½Zûÿ½!Ë«ñ вô}Ò¯þó§ù³÷ty–Î)+œ|Yç¤�-"?�iö»À{kÎår?5h2ôŠ6 }Ál­/ïßÜOþÿo­AÏÖ^f{-S¶§3dIÿ_ö ħ¯¯oÛŽŽŽ%QþGûÉ»k¾Îï…ñn;Z|0Oï&¹Me’õT(ñðóýí �{jÖzÞ¬žÇÇ ã Eéûâr�7^º¼ÎÞL¸(CöIDATì:ý�Ÿ“î÷sÑ2ïº]bž1gÎ?ùØc>þQÐXgk=÷A:'Ñ4@Ó!ØL­[_B~åëɦJ> Þ™š{¯V/‹*äî ÇÇÙ ?=Iÿ{¬¾DN2ÔË\í¿{µÿ6± ý¿§öÿ/ @KÒùèý:5J­í�ÙlvW€&ÔaxšL&ã!díû/|€¼<ùƒB�…R¡vbttô‡†ºÒþòÎ6±Y¦ýÿUB ÐÚtxLç$›mZ�œj¢�@Óâ›u¤Ói¯Ö?Òâóý‘‘‘G õ´JöööméõoR¨ùˆhiù|þÕôÔfßÁË–-{Ä I…W=´€… z{åktem®Å@Û¼¦ƒW¯^M—šu6>>¾¢««ë|íË—j ê¹.NÚï7—î«3-Oß7Ï›7ïoz¸»¦9V_Ú^¯sÒ5MŒ›µ …—©œ¶˜è ÝþºR÷ì}‘ï©ýà=×ýÛêD¡æ'z]ïz…@I6›ý�j“Ÿçç«“RÍõËõÚ   éÑyÀ:Òéô nÎд“Un• Ó(ÔüÂÐ(æg2™ÿÕüMÝV*@ j:Nûý;þ£À4úûûwI¥R§é»fk«�‹ütŠ.²|ب9Ð"6Óx‡fßЗN¯EsŸj~TeÁï GÁõ9*L¼[ßùoÓ¾}¶Åã~M'ë9¿?U·à0}פÙa:½Öbâ5BšNÒE–› ZÁf>hcWW×[ôp‘¾$^¥/žþé–ÕßÔß¿£êþ ‰ …Þ¹§¦m5½8Jˆ-�ysƒjæ~¢{£@T£ül¿'S_©sÑ6šoáßWjZ¢ÿÿµægêËC-ˆ`�®ö¿HWû7WaöYš÷ëKÄ{;{hllì÷+V¬xÌ�h}}}›j¶IGG‡ØMtz´ŸŸ¸ÑWóÕÚ÷· ݪG jgž.¾¼Dç�Œ­9õ”.¾xç6Ëõ8¯ó‘wPó°.®Üi‚ €ä£W4‰G°�x‰G°�x‰G°�x‰G°�x‰G°�x‰G°�x‰G°�x‰G°�x‰G°�x‰G°�x‰G°�x‰G°�x‰G°�x‰G°�x‰G°�xÿÿÿ‹pÀØIDAT¢ T�rO4"IEND®B`‚python-django-debug-toolbar-8.0.0/docs/_static/brand/Wordmark-Stacked-Black.svg000066400000000000000000000211541524561404200273730ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/docs/_static/brand/Wordmark-Stacked-Coloured-Dark.png000066400000000000000000000754021524561404200310040ustar00rootroot00000000000000‰PNG  IHDR6F‰4IDATxœìÝœuýÿñÏìÞåÒ®ìí¡(H¤$A£t~Eá¯?ÁFI+v,`¥%AT°€¥$!B„P’PADÈÝÞårI®ìÎÿýM6üB¸»ýn½�Ý×óñ˜ÌÞenwvvvæûžïw¾ß˜@ÄÅ "Ž` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"¯Á ‡ööö ‚ ˜c¨«Â0ÐçÝŸ�hÞŸ�»Ÿ×f—éÕüÓ†ßk¹T&“y®»»û) 6€�MV(Y÷`¤ù¦�7¶ñïãñ¸%“ISØY¡ÿ½Ñô\vþÌààà“½½½�E"ØÈIÓØHY í;š¹iê¦ÿ7nÜ8~\í� 7�hú››ëç¿¥R)÷»ÀÁ@N*˜f (Ÿ&íc»i¾Û†_¸ íj{ä 9éçû2™ÌªáY²jÕª €MläD� ÆÐÚ÷vÐüðX,fMMMnrMÙî×~y¿ÂÎýúýý]]]Ï ®lQ³…›xu÷ñ8ªÝqaçvM·)ìÜžJ¥þe€ºB°ÔvŽs“«ÙQÐyB5:·»ippð6š¯@í#ØÈ‰{lAÛi¿uÓG]óµqãÆ=¨�óÕæü¦§§ç~ÔÍÈ)‘HÌÓUðS ¨ 8Ojö…ž_wvvÞc€š3êˆͶš>£‡w···?­é\M{û Ò6€º¥€ó:M§kºÓ…œd2yvssó 9l]Èy­fŸ7nÜ£ 8K4Íniii7@$lx¥éšæ644<¯€s½jsÞ«ŸÇ jl�jq5{·æg$‰ ¨Zt÷ À(Â0¼©««ë=\k€ªE� #P¨¹B¡æP#Ô@Õ#Ø0 …š3jNÐC¨€ )Q qAæ£ 5W 26üŸµ 6G¤R©› )l]MMO:�žÕÓÓs¯"‡`¨{ 5ÏÎêíí}Ô‘D°Ô5…š‡ûûûgõõõ=o€È¢W4@=[‹Åö"Ô@ôQc¨W×wvv©ù "�@=ºD¡æp#Ô@Í ØêFè©ÉdÎP¨9Éýh€šAS4@]P¦IkvL*•ºÖ5‡`¨«ƒ 8L55· &Ñ €šì ²TS³bhhh¿(†š¶¶¶Ã à…`ÀG`@)Ô<�Éd¦÷ôôÜoÑ21™L.ˆÇã×µ··ÿÊýl€Ql5I¡féÀÀÀ[º»»Ÿ¶™«V­zÑ"¤µµu»qãÆ-Q˜™¶Ém§ßÝ›H$>a€al5E¡æZ…šƒõpµEH[[Û´x<~�ÌÖ#,2>‹]¢Ú›ßéñd¼ ÁPK¾«Ps”æi‹…•Y 5w*Ô´{,þ-ÿ€¦� ð‚ ò²ožÔÙÙù9‹˜D"q¬Vÿf˯ƒ€í5-Ñß¾Ãël‘¦P0¨Psx*•ºÄ"Fµ.Ÿ�ÅbW©¦&nù›¬¿ûƒÂÍg @°DZ¯BÍ�ÝÝÝ×[´ 5k~¶AÁF¹(ö�ööökôãx€:F°�“ OªÏó 5{+Ô,´ˆÉ‘­Dô=RAiѤI“67¨S9…aȱÕæQí—oI¥RY„ttt4+ÔÜ¥ ò>+½éMMM÷´´´loP‡(¬¢æ^ÕÔìÑÕÕõ¬Eˆ«MÑz/V¨ÙËÊDÏýÚ†††¿¶µµínPg6€ÈP-ÍM���û©¦¦Ç"¤¹¹yGÕ¦¸�7w±2Ók$ãñø"Õ ½Ý Žl‘ Ps…jiÕõ!­­­ÓïVàØÊ*g’¦?&‰÷Ô ‚ €œè<cM¡æk 5'èa¤öE‹w644Ü¡ïP«U˜^³!‹ýB57§Ô‚ €œè<cÅ�»©é…š3-b(ŽW¸ø½N°1¤u8Oë €GaP­Ö*ÔªPs…EŒBÍW(.wãÌXPÍÍ·7j]ƒPehzÒéô¬žžž{-Zb 5—)ÐoU&n,•J}Û Qc¨* 5ÏîÁP3^¡æ†j 5Ps –lUC¡æáþþþ·ôöö>j¢°ÐšL&)ÔbU.nŽ3¨1@UP¨Y¬B÷^}}}Ï[„¨–f+­÷Ýz8Ý"Bìʶ¶¶wÔ‚  \ßÕÕuÀŠ+z-BjvQHX¢‡;Z„h�ã cתæf_€A°ŒµK:;;×¼ß"D¡f/„Åz¸¹E�Ö}œÂÍ� 7»Ô‚ `Ìd2™3jNÒÃÐ"¤­­í0ƒùzØlÑÖ¬póç‰'¾Æ â6€Š Ã0­Ps\*•úŽEŒj8NTø�6YmxÍøñão´1HŠE°TÚjÕv¬PsµEL2™<[¡æb­`5DogšÞÛ/ "Œ`¨¤Óéô>���·Z´ÄUð¿JóÏ[ízw{{ûW "Š`¨ˆ0 ŸV¨yKww÷R‹–‰*ð߬ù±VãTss&Ý@ˆ*‚  ìj– ¸Pó´EHKK‹2Mû�*ðϲ:�Ç麱6ˆ‚  ¬jníêêÚgÕªU/Z„¨æbëÆÆÆ{Üý'V_&è=_§ùD€!ØÊF¡æZ…šƒõpµEˆ«±PÍ…xs;«OÛküØ B6€rù®BÍQš§-BTS3#;ðæfVÇ´ ŽR¸9Á "6€’R-M˜ÉdNêììüœEŒ òGÆb±[,úo–„ÂÍ…Ú&;DÁP2Ê4ƒ 5‡§R©K,bÜÀ›*È_£©Ñ°Áxm7)÷Û¨z@©ô*ÔØÝÝ}½EŒj%¾ïÞ4 ç Édò€*G°”Âóª­ÙK¡f¡EK£B�«¥ù”a4Ÿhmmý€*F°ë …š·tuu=lÑ2Q5·(ÔiÈ©¡¡ág �-UŠ`(ƽƒƒƒoU¨yÖ"dòäÉ›¹�7õp†Á× �‘»w @ý Ø ¢Zš›:;;÷[¹re—EHkkëvãÆ�[R‡o–ÂTËõ€*D°âjÕÒªùZ‹�¶¶¶iñxü…š­ Q =Ú  lyQÁö목9N3!ªi˜¥Ps§BM»!_®Ç»yCCCÛ)ÐcP… nÜMÍ>ª‚í1‰DâX­ÿOjâ†|<ªéBÙkÞgPÅ6k ŽH¥R7YÄ(Ôœ‹Å¾eðâ¬à�šÏSˆý³@Dl£R·'�NÏêéé¹×¢%H&“i~¢!'}ÎÝš]‘Édævww?m1ÀˆTØ}vpppVooï£-M 5¿Òü0èô?¬éBÕÆýD?®1ˆ(‚ €œ‚ ˆÔMâ( vï\»ví‘«W¯þ�EHvÉ5íc–>Û´¾×š§š¸Û jÁ@N*ÅT2Ô‡p½“u?rƒ1Nš4isÍnÕþº‹áô¹iökÍ?×ÕÕõ/€B°l¬?“ÉÝÝÝ}½ELssóŽ���.Ôlex™Nm—Kûûûçöõõ=oPƒ6€ zU>H¡f±ELkkëôx<îBM«á%ú<Ñt�jß~jLòE°8Ï«<«««ëa‹˜D"qH,û­Ž7¬kJ¨™ë–û|}ž·Ô ‚ àÑl¨yÖ"¦½½ýxÍ.Ó3¸4¯L§ÓçöôôS¡æk1‰D¢5‹Ýª‡Ó­þ¼¨Ïí®Zµê¼Áê„ Æ®væ£ 5WXĨ–f+ÕT¸P³£Õ}fË4»@ŸÙÕš`D¨kUH>"•JÝd£P³K6ÔlnuÀP½ß?¤Óéó»»»À Ájœ Ê=*$Ïêéé¹×"F¡f/òÿ¤‡ÍVãô9¹Í®Èd2.Ы‰�7U3“Öìwš_ Ïã/¨‚ Dœ+Hkú� ÑW[Ä´µµm�ÇoÓÃí,âôtkö£X,vÞŠ+ž3@El ÚVApXWW×­1Ù�7çëáfm�ª¶l®‚å�õx�ÆDÌ >3†ª£‚ÔÐÐÐ~���‘ 5ª©9@ûÕb‹p¨Ñö¿E�æPmÿ�j.6B͈ZZZvP�½@Ç” 56rR.¦B¨¡zè3y:�N¿­§§ç ‹p�ÔÌ5›k´èY£mÿSÊsV®\ùÃh‚D"ñ;æèñ�š»Ÿï‰b“IÑ@°�56ÕEë¥o_µjÕ‹1nàMíO—[Äh›?«õ¾xppð‡t×<ºŽŽŽfÕd� íåzçÛ~ãÿÓï>dëC-”Á@NÔØT•…]]]ïÐ|µE�ö£µ?e4�DSh­ë_5;_Ûü7šFäš›566žê:²Ðç;y„Åf)Ün¥íù¬@‰q� D„ z$ 0IDATŒ×vvvh 5ŽÖ‰ ½ß³*¦í<¤éétzwÀ÷Ò䯠!Ô Ï5/{§ÂÊÍ �êgWK3yÄ…×ûeÀ%X9©à2/‹�b3*h_ìÏXm§‚ðRpßhUDÛ¸SëtéÚµkçöõõ=oQ¶¹™kVèŽ Ûçó·ÚÎOj_Ž|÷ÞªMÑ Ê©yR*•ºÄjÇ€ÞÓ1 Ë÷WC“4´Ö춦ùZÈ\s³x<>GÛìGin6*ýݶ ¶{j{ÿÕ „6P¥TxÔìX…šk­Ætww/Sáöl=ü’�mÛP³m} ¹Å0ªd2ùm²JÞn% çù f%ES49ÑmLô¦Óéw),´ÚÕ p³¼ÂMÒViúÉÐÐй===OFäš›)Ì|XÝw+!=¯òdW‡{hP"ÔØ@õyQ¿j¶Ú6”m’v¯ÂMYÏGÚžOiv¡¦ËT ^iQkkë¶úLNw½›éÇf+}Þímmm3µ�Ï7(‚ \U­œÇTSóvøž¶:�m’v–~ÕÊ@…ó¿hº8•JýÂ0×»ÙÁÙÁ4 *п{<wµl” MÑäDS´Š¹wppð :²)™Lºfa[X (È ¨\þKÕ}_�æAÈÊÙÜ,š£(5jlä¤BbÆPV*äݨBž»‚Ù1jŠÐ¯òY…竬8/h;þ°¿¿ÿ¢¾¾¾ÿF”mnvšëÝÌÊÔÜ,—ls´ªµ[`P9©ð«@Ë”zvµB�»Ÿ!muJ5+W«ÖæSz¸»åIûç2íŸçwvvþ\?Fäºknhhø”¶×Ç­ d›£-0(‚ Œ!Ê¿©PóeƒÛ'©À½ØsÙŒ–ý}:�¾€+þ9¹ûgÑö:µTÝ5—КN6(‚ Œ�ì8*Q¨¹Â°Ž°±½½ý¾�im6×£Ù™Læüzé`¡T v¼æ®C€7XuÚ¼µµuzOOϽE"Ø@å¹{JŽVÁüzÃ˸{mâñøazØ´É=¡i®ÂÏåš÷F¤pøZÍNÕt‚¦6«r jF°P´˜*F5=Ù1j5ÃÈÖœ·Ñ¯nO§Ó‡uvvî i®jF”H$öS¨ù�þSµ^î>šª5YÕÖ<@DQc '�êö¦öRR yV³ƒTëðˆaD 0g%“ÉÕÞ\’J¥2ŒJÛêƒÚ·N×÷tšE�Ö}_Í&¡@‘6rRÁ#N¯hE{TÓ,…šg ¹¬R¸á†òQ477w466ž¬ïå‰úñÕQþ~jÝTÛ4C!öF€"l Ì k:D·Š °[¶™Ùûí•÷!EV¶·6‚ €¢l ŒhnR-ÍázØo@abÉdò0íK§)ìoµ‰ûl�`e¢‚è 5ÕÃŒyêèèhÎd2nÿ™­i›Znª÷öƉ'¾fõêÕÿ1(½¢@y|Y¡Æu·K¨A^Z[[·M$óŒŸS�ÿMÛX?~ü¾E ÆJH…ÑŒ¦¦R©« ÈC{{»ÏÅ�?óŽ >{ëØ[Óµ"Ø@é¬U¨9B¡æ&üŒWíÌ•cæhÚÅêÛÞE Ø@ (Ðt¥ÓéƒzzzA9Mš4ióñãÇŸªýæ£ 4Iƒ³»¦ šÖ€`Ero*ÔÌT¨y€Q´··ïië››½OSãCým‹FÕ^MW�ç"€l  5÷÷÷Ïêëë{Þ€á¹(�TÁýTM{F㚣l„`…[‹ÅÞ¥PÓkÀ&ZZZÚ?¡ð{’Í–†œô}â>#Ø@a®ïììp´ Ùã ×ÖÖö]PXh�‚ lBÚ[»ºº3®דx{{ûá¶¾¹Ù¾î47;ñx|Šfy!ØÀFj®U¨9FÓ†š§0Ó¢Ïüã 1§hz�¡Zìd�'‚ üŸï(Ôœa¨y---;466ºîš?¨@3ÉPU6ß`�'‚ €º—xóäT*u‰¡¦©†æ ÍNÓäæ´5«^y#بk 4ƒ™LæÈîîîë µjB"‘øP,;Õhâ Ùf�Mšú <lÔ³^…šwÑûRmêèèØBÁÕ ¦ùQ”†HQ}ƒjQ4ðD°P¯žW�w–BÍÆš¢ñ> 2§*´¡yœÞÍ¢I5l;hF°à�` =êBMWW׳†ZѨ@st¶¹ÙtCä)˜rŸ €¼lä¤+Þ« 4÷ ²råÊ.CMhooÿ²öÑ“ôpsCÍÐgºƒ@6rRˆÕBs½�›TKs„®5Ô’�¡¦æè˜³µ@bu@¡æ …šC�PS‹þj¨E[ä�` æ)Ô|]¡æ=¬™&ux‚Mm"ØÈ Á@ÍR Éh:A¡æ«†ZF°©M“ÚÄÀÁ@­Z«Ps¨B͆š¦Ïx‰hÕPsb±Ø–ž6jŽ ¹=CCCû¥R©› õ`0‚¥†ZDs4Þ6jŠBͳƒƒƒ{ôôôÜk¨™L†æhµ‰`ÀÁ@ÍP¨y¸¿¿ÿ-½½½�ê Á¦6lx#ØÈ) t*Ô,Ò´O__ß󆺓N§—jŽŽ=ŒOÀÁ@Nn€N«n×wuu˜J¥z uiåÊ•Oj?MjŠ>ÓWx"؈ºK:;;×¼ßPÏÒººÿ¤¡Ötx"؈²/(Ôœ¤yh¨{ººÿ˜¡Ölx#؈×ä(“ɧPó-þÁ¦Æ¨Ž`À[ƒ@´¬Vaç°®®®[ ؈«±Ñ¾a¨úL73ðD� €ÈP!§+�NB ^AµxÔØÔÕ µµ5aà�` jžV¨ykww7#ÌcXñxœ`Sƒôݧ9/UO›¥oéééy€tuu=kôŽWs6¼p� €j·PÖwh¾Ú€:;;Ç .Qc j©¦æZT4B È�` *)Ôœ£šš£ôpÐr )€ª“ÉdNJ¥R—€'‚ €ª¡ZW;s¬B͵�‚ €jÑ«ššwuww/4€<lTƒU[s€BÍÃP‚ €±öD:�~›BÍÓP ‚ €±tïàààA+W®ì2€"lŒ‰0 oíêêz—®5€"1Ž €±pµBÍÁF¨%B°PQ™LæìÎÎÎãô0m%BS4ŠfI¥RW@‰lTB¿jjŽîîî¾ÞÊ€` ¬TQÓ£Ù! 5‹  L¸Ç@NAd¬@úÛ]]]„PV9©Ö¥˜cÅaííí·h>ÞÊ„` ìTk3+™L.jiii7€2 ب”é���÷´µµmm%F°PIÛÅãñ% 7Ó  „6*m3…›;nf@‰lŒ…‰±Xì–ööö#  6ÆD�šý*‘H|ÆŠD°0fnÕÜ|7™L^ì~4€lTƒn~§y£€` Z¦psKGGG³ä‰` šÌÈd2‹'Mš´¹ä�` ªA°KSSÓ’æææ ÀÁ@ÕQ¸Ùª±±ñîÖÖÖéà�` *)Ü´644,J$‡@ 9(ddllŒ�Åb7*Ü|<•J]j@ÉdòšÑE Éd2³õýÐ ‚ €œÂ0Œ)ÜØXQ¸ùa{{ûV]]]_1`d“5j€ºDS4‘ `õe]�¿Ê8naÚ?v1Ôœx<Þià�€(9V577h>Þ€M¤Óé7jÎ 1ð@°)ª¹9DWæµ´´´°ít^{Vk0ð@°EÓïikkÛÚ€,jljL†4Cà�` ª¶‹ÇãKn¦°Á¦ölx#؈²ÍnîT¸™a¨{ª±ÙÉPSô™vx"ØÈi DZñ1QáfA"‘ø€¡n¹îÀ5k2Ôš¢ÈÁ@Nn«r _W©pûiC]Êd2o6Ô{ž7ðD°P‚õ¾—L&/v?êŠjíö4Ô¢g <lÔšn~§y£¡žljÁ€7‚ €Zt˜ÂÍ-͆zàÎe{jN†Þ6jÕŒL&³xÒ¤I›jZ"‘ØU³ †š£`óŒ€'‚ €šÁ.MMMKš››‘¾¶Ñ ­)Ô„===Þ6jšÂÍV���w·¶¶N7Ô$}Æ›¤ÏõE͆ <lÔ<�Z%‰C µˆ`S›¸¿@^6êÅxœÚÛÛ�7Ô”0 �Öì§šjÉ¿ ò@°P7lbš.W¸ùš¡f¤R©;;;?488¸¥Â�ûl_0Dž>ËÇ ò@°Pwn¾’L&¯2Ž�5¥··wEWW×™ 9¯Õ�VÁx©!Ê3È'uõêXÕÜÜ ùxC­P¸¹R!g÷t:=S?_§�“1DJ&“!ØÈ Á@ÝRÍÍ!ª¹YÔÒÒÒn¨IÝÝÝ r×ÃmnÎÓ´Ò y!بwÓïikkÛÚP³T{óŒ¦OjÚB?ÎÑÄýÕ­õêÕÿ1ÈÁ̶‹ÇãKÚÛÛw1Ôº>ÕàÌÓô†L&óný|›¡=b�'‚ ¬·Y‹Us3ÃPÂT*õœY;…ax¹~·ÖPôyÐ @Þ6ðšc±Ø-ª¹9ÒP7z{{íêêúˆë.Z?~IÓs†±ö¨@ž6°ÕÚ4jö+…›OêÊÊ•+»Tƒs–¦m2™ÌqúÕÃXyÐ O¤#øjIDATØD°Þ9ÉdòbC=L¥RW+à¼5 Ã}4]«iÈP1CCCŒA oÙ‰ª¹¹FóFC]êêêºKÓQ±XÌõš÷]œ”¡ÜÖ¨öŒ^ëä�`£PÍÍ‘ª¹¹¥£££ÙP·V¬Xñœjp>§�³e&“9Q¿ú»¡,ï3(Ár›¡ÂìâI“&mn¨wkR©ÔrÞ¨ø!šnÖJF›ó€lÀƒjnvijjZÒÚÚº�¶®™ÚÍšÚQ?þ@ÓjCÑô]ãþ!Ø€'¸¶ŠÇã÷(ÜL7 kåÊ•ÿP Ήªix�jö>§ù3†‚iRc  ȃÂM{CCâD"qˆQíÍÊT*õ]Í_¯ps”¦» yëîî&Ø(Áò7^ç†öööã x¥´Â͵šöI§Ó»ëç«r 9i;ÝmP ‚ @Á&¦ér…›¯0Õ>,íìì+ÀZ J€#*`¶744,Rp<Ä`ª�ù¦y†GÛo?Í~ÓÞÞþ„¦OrïÒȺEðl…ˆm2™Ìô«ÿXÐgx½@‰l`l�Wáî…›c­Ž)˜ì¬ÙG­Ú~Ûh:GWÿŸÓvœÛÚÚº­a$C©Tê 9¯Õö:ZÓ]6†Tcù€!ØÀS¡<&W©pÿ«_—h;ÛåšÅ†¥€ó´jp>©�³¹~œ£éq+‚‚ÍU%F°€ê¶¹ ß‹U»1ÃjHCCÃ�õ¾V´[kú¾¦'“É é.zT} 7ó4½Aµ8ïÒÏ·Yþ^L¥R7”Áª_³j7nÉ6ÝŠ¼D"qŒfÕø^&k:Ùu­Ú›rfF*œÜ €3k```'ÕÀ¸ÞüÖxýaþB³Rß³ˆwoˆÂÍï N´›ë½ôYïîšžiZך ‰eBa@NÔØT}&Gª€ýg[_H¤¸‘îUà}« »OYÄd»‹>6�? py§>ƒÃ #rŸµÎ ]-ÎÙš®6(F�S"‘˜§‚É)†ª£p°t``àí«V­zÑ"ÆÝo£�?+,DºöCŸÁ¿4›§éRâW`LPcæB�ÂÁ’ÖÖÖí,b\SØGZ„é3x�¦ïizN58Ñ]4Œ ‚ Dœ‡%�ߣõt‹žÕ���ªÖãZ‹¾IšNÊvýGM b6PnÚEtì•AÕÜ¥ù%V²ÝE¿CÓŸnÒôQý:2=Á@TÅ r˜0a‚+¤½ÕPíTóqìøñãŸX»víƒ1kÖ¬ù£öµUzx KVô6^¥é]z_'êsiUmÎ#ƒƒƒ« Pr9l¢Ã u£éˆ‰'¦î°ˆÑ:/Öþöˆ¾Gï£fÎQz/5í§`sª>›�šššžTø|Þ%CS4¨Mßhoo¿Ü"xœïêêº6“ɸûSV[�Évý� ÝEk:Ò¸È%A°€¥Bôñ*8ß ‡M1ÝÝÝ Óé´ë1-rÝXûÒç³·¦kô=™H$>«y‹ F°€¦‚ó!*0ÏWÁ¹Õ"&;�ç[ôð «a®»èX,ö�lwÑÓ]4†`5Næ½Tp¾[g+‹…›§ßê"µÚ纋>1Û]ô�šÞno¨;*à,Qay‹˜•+Wv¹�<nnµ:�í.úMÒçõ°jÛ>ft 9l ~l®Âòb–÷²èY­psp� äéMŸ×Ϊmû¡>³g“ÉäÙ“&MÚÜÃ"Ø@}iVay~[[Ûa=éì@žß±:£Ï,©Ù盚šžQÈù¹>¿ix‚ ÔŸ&Õü.‘HœhÔÙÙyF&“9Iµ7¡ÕœMÇd»‹¾KÓÑFwѰC91@gíÉÞÇñΉ²fÍšÈÝ»²víÚ{U{±Tïá½µ4�g>ô¾_«é}ú~~xüøñã4=¬í²Ö NQcõÍ�Ÿr�EðBWww÷õÙ�<{­Ž¹€£¸o«çßÉdò’––– êÁêœ ÆG*Üܬ‡-bÜ@žaºÎž7¸Ïï �êó¼IÓAu„`páf– ÂwNžß�hšÐØØøpÿ€ˆ£Æ@Nºα¢þLÒt²®ðGµiÚ Úo¿iÍš¾©`óoÕâüHÓÎFa0"]ÙßÊ5MS¸™n£póe…›êq Ï<�×ç|‚¦‡“Éäímmm‡éw�@Äl£r÷g444,J$‡XÄ(Ü\‘Éd×Ã~ƒ�d¯SíÍãšNïèèh6ˆ‚ À‡»ªƒ »Ç[ĸ��çE]]]çÔ‚  ÌÈd2‹'Mš´¹EȪU«^tyêáB‹žß–??LIDATwvvÎ6¨9éŠ:]¿¢ì´ŸíÒÔÔt�jov²qy* ÌTÍÍ/,"´®Ñ:»žéB€A°�“ A+P 7¯Õþö×ÖÖÖé1]]]° äéB�j™Þ¡‡5„  ª(Ü´644,J$‡Xĸ�<>ãz³*äB�ØA®–É ÆlÕh¼Î íííÇ[Ä(8¸.¬�Vˆ´*¢õ¹Û…«½1x`‚  *)ØÄ4]®pó ‹ˆk3™Ì�V=!â~­Ó,#Ô¨a>¸ÁcFáæK 7WZÄtww/L§Óûª¦d…�!½þ= Yÿ£‡« jÁ€�À€1¤pó!…›[ôp¢EˆÂÍ ®#„'llÌWMÍÿ¤R©€G°D‚ÂÍ,…›;[ZZÚ-Bnž|«jN–Zéõ~ÛÙÙéî©é3¨@d(ÜLkll¼§­­mk‹�•+Wªâ¤k…�[­ô:?Ñë½O«ª('‚ j¶‹ÇãKn¦Y´¬VØ8X¡ãZ+¯oéuþ׸7@�!ØðA Õf3…›»ÚÛÛ²hI+t¥pó=+�9���_0¨C>è<Õh‚¦?&‰c-bn>›ÉdN*á@ž®Ç³jæÔ)‚ ²‚ ˆÇb±«’Édäj)R©Ô% 7‡;�§þþ)ÍÞ¢PS‘ûw Zlµà¬öööË-bçµîîîë³yöZjîJ§ÓoR¨ù»@�#Øj‚joŽW¸¹A›,BÜ@ž ({éáó–Ÿ«»ººfôôô¤ @°�› Œ"@ûê! 7·%‰V‹”‡Uó²§>êù'§¨–æ8͇ °Á@NºšÌ±‘¡p³O,»[g+‹�ì@ž{ëá½#-£ï⿲MÏ.2ÀËPXÔ¢p–(ÜìbâòThÙo„�<¯ßOQzÀ¯@°ÔªÍn·µµÍ°hYëòÔüj÷ƒë5MÓ'xK¥R=Á@N*¦ ˆ¦æx<¾@57G[´¤³÷Ð|Yß¿}tÎ3À¨ rÐÕ⸠WD•öß_&‰v7vŒEˆÂÍ7 à…@]ˆÅb«ææÔ$‚  n¨ææ“ 7×èa£j ÁPWnŽL&“·ttt4 flõhF&“YÑ‘@°`AÌR¸¹sòäÉ› êl�ÂÍ´qãÆ-ikkÛÚU�`À(n¶ŽÇã.ÜL3@Õ"ØÈI»Œu, ÃÿÆb±Ý Pµ rP¡Îuƒk@=Ñ~ߣýþCCC—÷ôôÜk€ªF° Ka&T˜Y˜Éd.O¥R¿Ñ¯Ö 6|„Ô0å™G4ûM:�¾Rµ3O r6|Ð 5ÅÕÌhöWÍ®SíÌofž0@¤luA!f@³ù.Ì \×××÷¼jÁ@NôІ¨RˆyX³ÛÜ}3šßÚÕÕµÒ5‰` 'zECd›—=¤ÙdÒéôí===)Ô‚ t€ª¤³X³»dîÒãÛR©T�êÁ€ªk0¦²Ý0?ªÙÝnÊd2÷¨6f©þ+mÁ€jlPI«4=š�\Ó²{c±Ø_W¬XÑkŒ€`À56(©ìý0Ïhrµ0×üï /.Èü½³³óß@ž6€’RPéÔì?šžsSëë÷ëæ™Læ¹îîn÷xÀ(‚ €œèî¹æ­ÍŽñ2 ÏzÀ=ÎÎû7úÙ-ãzëÔã.…“usM�z¼BóT'cÃÆ ÍKD^Ì â6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"�` ò6"¯Á€éèèhε̊+z (±1 6ííí+‚ HZéý# Ãeš®�Çã·ë‹óœUP"‘ØW¯í¶kØÝÝ}·æk €·) fŸ ‚‹­ä•a,̱ðOì?o¡a�ióO›f±Ì¹–H¶7=²ë™ä)™L^¤ÙI:‡¿½««ëCATÚMÛp¹Ç¢5­á9¦Äb±e–Cgg磜…�Ôb�Í LnzŸ¾X.@ýM¿û¥¦ë@õŒ•‰^çÓzÍÓõp‹�~×£ßý@ëq¶^{¥CAKؾz ‹Áç§-œ£jxK&ˆýtùþüÆ@¤�å=6�U€‚Å5}MŸÒ£Ÿµ´´lo%ÔÚÚšP€Y¬×øžmj²¯ÝªÙç4¿§­­mk�SÌŠDWú‚wÇÂð×ÓÌ~jÊs>bóϤy.UóÁæ¥ ÷^�khhø›ÎÙzÜd%�ÇoÔsï™c±U¥z»È-ˆUôذþ5ƒ­c¡]6-Öµ|·EsÞl rÆ2Ø„6BÜÙÏ+Ü<¨š–]¬úûƒ=B͆×Ý6‘H|ÜŒ*†;oŒgìÞ© gÛ@¤ÔswÏî>œ»NÞk Ãðù,¯×{»Ul}íê˜ ,øÜ´³o™6ÿ´6‘0–ˆjU“4]«póU+€‚Êk,?Û€Q…AXù¦hà ‚YdØõÎÙ|oˆ€± cÙÜä%Ázg*Ü\fù[eù¡KB JÛ¦aÐî›ú—“‹j¶ Êo,ƒMܪˆÂÍGnNÏóÏî²üÜaF— ª£Æf×»a:vÍÒ¨nUßµi†w*t y,×ro²õ>Dn"‘¸7•J-òY¾««ë'ÉdòLÛ¤›ç¬îïï?׌.†>=>k©Aø¸y ^¥Þh ,xmd~«‡ÿcò¦sôc:Ç3(îdM¾=5øn:�î2‘TõÁ&“ÉÚ-¾Ë+˜ì‹Å\ïcÇYtàý©f®ÙÉj�Åt<ÖuåìÚ³�¶ ÞÇGúúúž7¥„¿Y:cÞ©¾‹ï~ÇìÍ2¡¡Ðtº¾­;Zžô7L½cö)ËöŸw¡È‹.^ ÙV ¶¶¶Ýãñøý¹–S€zZ¯5ÓÔ¥ªïM¡!¯{qTÛò—ÎÎÎÿ§Ú‘Wë÷#Ë“òÉ6íííßò]^™k�ÂÍ[õZËFXäqýÿÿh½~ar+SS´öŸ÷â²ó~¸læÜ�2–9L¿ú—å)ƒïî¼hÎë T�(›‚Æ»YµjÕ ºjóQÕ”ì§Ðñd>«p3§µµÕ»'¤žžž{õZÓô:ïÓt¦¦¯eçG)dí¦ð3ßT�å3.üýŠÆøNa`ù6�0.c_7Puj~Wƒ344ô…Œ¿æów y^n~£ékšÎÌί5zBÊ"Pý‰áÙ½Ï[³lÿ¹ŸÒÃc-?¢—4ªÏ˜› ‚ƒð­\¹²K57‡èá?|ÿFAè˜É“'of***{\Z:cîÏ•‘>œÏßCñÓ T•š¯±Ù ÛÁa ,9{Xs\g���yvDÓÒýç]ZxµïòZöý6ÿ̪ï|€zRõ'æ+VÕÜdc���koo?[¿â³¼²ÍÿjöÝ\˵µµÍ̵L,»¿««k¥•HGGGóÐÐÐt=o»~lÍNÍ– « p/hý×üîT*Õc%�H$vÕóuŒ¶Œë‘¦§§çŸ›þ>™L¾ÑÕ‚éáZ/×±C‡æ ÍSš»®5Szü°¦kµ¾´ Òç·�¶ã{õð M[h}’šo®i�Ögݺiú·~ÿsíC¿¶zÌÓöÙGË7ŽöZƒƒƒëëëû¯•ƽ暬u›î¶§[ M¯Îþ¿ë…¯;ûîÖt³öÁ?[�ÃÒò;ØØ0gÜ@ú ¬#ײÚÖ“§ÙŠÃ—š]k%2eÁìýb1;ØÂ`_}fIÕ\é³\÷™Nл}1\·n_|( ‚›V�ËÜòøžóJvLññÈ®gŒôZÿc³c´m¶VðKè}´ë=LÒçô_Í»ô�¹ýþm¼kUKæ]{>’ÿòÙæ áêQ»ÿ  |`ÿyEuýëìú×S_Ý0˜½»ðЗîá�VÓî˜ýNm¿#µÍv K¡µ»ñ”´tú>ëóïÔ¶þk„—êý=2ÜsL™?{«XC¸ý¨/”Ž÷-�yÁCN­­­ �'Òþ펷;ëWmúž&ôØ/V»s™æî|¶B�ݘu7éx›WøRr=ÄjvˆÖÇÍ“Ùóƒ‹Ë ‰ñ¢­?7¸u~PÓÍýfceIDATšþ\Ê2J ]öSyï(½ïcõ>·v?ê±+/MÒô_w^ÔÏëŽI:/_»råÊ¢�I…Ðç´›f®CW†kqs­×÷š»žwŸ‰Çã�ªìq�•ˆO™ÕuŒ•c‘IÚ¾ëÊz¼•¶§+w¸aÜ÷¡GûÒ˜5×Ë`ãÛóQÉ‚�£�}– Ù1�±gô�½±¥¥e{íð#Ž•¡�²U»œ�èCßÇòÐóe´¹åMêùöÓÎ>â²zŸvsýÝbÍoÔä*í¬OY�ô>ÏÒìÝ£-“ÉdÜ2_Úð³¶õµ®ŸÔé÷ˆ½Ñúm(Œ[¶pþ!ý�;I\£ƒÍ·{{{µ2Ñë®Ù4Ma‘ ZŸ-5wÓ®šÒß\¬u»º¿¿ÿ«›vß­e¯×6JŽò’n™ÿ§¿»ÊŠ ìt}öŸ×s‘cQÎ6Ïnë½5�®õwaízMg+@>hÕH¥QŸqlJ푽ÏëRáü+1 .öY>´˜ÛþE›) Oy},Œ}Aïù(½ñ– G»Wöl¦ßlh»‡ ·'LîlÚ‚9·dâvîòýæÞlc`Ý ¥±ôWµÚ Ö‡°õkëïÙ· ·âNx¯Ö fj:kê‚9iþÝe3çþÌ Ôöïl™Ñ�½6§)¾6|»±ŸŽºPvšåÅ#YžÖf´-ƒjÅ'­ûe¬_ù ÛÒÖœvÍ]`Ù# ƒS§-œ³$hØî/7~>…ž#µ}FíC×þnEŒïTTŸk¬@zž×ê5s–Y'OžüªU«V½¸É¯Ç«Ìû>ýý4²ñl²�ÇôÞò(4E+i°‘í¼çû.¬�êí6Æ´#¾W_„ùÚqÒôõá°£Ñò{iö ½—êy.TXk·Âx´ó¿Cëíjn~¢×Ÿjùq'‰ÿ7nÜßµ¾×ëy¶²ÒÁÿÍzN2Ý€‹ÓóüóIZ·��?þ1­Û)VAZç=5ÝÒÐаÄ#Ԍąµ÷ëÀ¿\ëÿ}NS,ªb%?6Øò0y™jR>ËêËp°h×;go7uáì_Æ,ö¤žè#ëBM!;0–±›¦-˜½dÚ‚S´ R(;Á‚´.ú§mj|踫¦Ÿ*˜=°ÛÂS÷·:§ ÷õ†þŒö…àDWËeùyK,´_h¸e·E§mk( wáKÇÛe:o^—ï9wwáNÇÚÙš?£çºBϹ¥•�ÎiÛ깯ֹáIw~ÊjFó6ýíMz®%Zß1/ûäK™æÿi{ÿCïá3B�/-¿«>ëŸê}/Õó”ü˜ÔÜÜÜ¡çþжí úñwz½�ä 5›¬_‹¦÷jú•žç_î½ZTþõ*÷+xm¼\\e…µîÿÒöýÙ¦¡¦ÚŒe°©ü%Ù,Õ\©Í«P¤±¢……�¹’ 4®ùÓL+�“uð{B_Œ,9·™Ö5Ôs»+%pcYñÞ­çqÙ�­\àÒûÿK6ìÃ5û›—=xœ ¥×9Y³EZïYV:‡f·íû¬Š„™pÌŽ vÀ™CAh¿ôZ6°¶)wœü&ËÓ”;æ¼->hK޶RqÍ‚ðϺz¦•ÙNwŸœT(»C¡ìG¶¾ÙfáTé·pá´…³óí™®&LYöéIÚ–·)Ì|Yc¢Cdžx&ó„ö�“ Åp…¸yšÿVÇÇ’]øÑs}Ø�wçjÜ­„tnx› äèá¬t\ë‰?éÜð ‹…m†äLò 4›rbõ< Ãqµ~ºPëBç×ìÿjÞ æ‘{¯®|¨çÞÚÊÈ•½4ݧ²°kɉµê±ÆÆ�qó¢vŒœ#g½ÕÆ€vÖiªuM…fZ‰é½·iú‘vÖrŒÇáª(¯(q¯w®IÕb�ò.DnL�#ôåt÷Òq'©´-]S¯œr�Øò-´ÇÜ•>Í/Ô6-yÓQ=ç8M×jÛ¸{ÏÆ.PÂóâD¾ÒþÁwÙÀây¦.8åôX&ü“»GÇÊã«*Ø^·ý?f7åóGACÚk[ª¾{ÓÚØ e]Áe ®š²`ö‰VG\3¾ »‘¶åÿXi]¨ +‹5òâî]uͱtž(Km¼»SÒ;œJB´®stüS54£Òó~I¯q�­»Ï¯:©\°‹ÊJ.ØÍ°rÁÁÕRX‘ôßtµ~¶þbh©ÍÔ¾z¯.‚ï`e rèÚî+ Õ͘ªË`³îIÃÐ÷†Rw/Î8« ×ôJ_„?›Ç}@ÅÐÎúå<«›s|õœei áÜÚ&î~†‚®jê}ºš·ßX¸“•¦;³7&æZ6¯ýYëýKw¥ÏÊïóz­Ë,BŠÇf$é0³HOìÛ1�÷ E�ã‹Êûçj'ˆ[y6é9»ÑÂ#½_'Š{…Zmó;5•¥†2O]xJéj±ª],}£¶åîVªú°¾_5äcb¶\PÒò¦ÜÅ$F¯Öñöx+‚ Ìî^š ‚ O´®®­çø¢•‘«¡R°sã¼ö­OÚg¹ñãÇï¥2W©/WDÝt÷< ïÞJ”Z+}s¥Û™*Uå÷#³¼Ût� št ð¾?jƒì=:%뽪ùÔØ¸û¡ôž�´ Ñk� ×ü’E„¶dI{EÛà‘.^¥Ë)�x-œ ½‚M¶©Õ7­B\-À´…¯ù…•^Y¯Üj½¯˜2ήVã¦.œs‰Þm±Ías(²i[}‰»{5/KÐÁe:7dPaûXP¿eâzVÓöùµU–ï¹²¬omç+\�°–'×DPÛí{V;êõÎð\Öw»þΪ¸¦n4Q6eé]!�N?黬vìí­Bܽ¥l×›‹»Ò¡ƒ«ïbÌi}?꺎¶üܨ¿kµ*à[c“í˜`,ÚÊCñclLÅüjÊx/N`áã^ËAÎcƒ»§Æ5µ²J ìH +Vø)�`¢>ý?¼ùÞ�Õl¡<Û-ö' UCçÀjVê&�£r͵5Ýœok]h�¡2Iå�'fïÖvÊ9üE jÒçtƒåÙZD1/°Êúæ¤I“6ϵ�oçQV·56ÚQŸð]V;hÅn˜Òkå2Õò_Ñtˆ‚Ú6����›“Úyߥÿ¿ÞçI\/*æ§ ¦?Z¿§4ûŽÖñ=~�[Ç���õ³0õ‡Ù¾ôóy¾Ó}—Õ�øT½¿Ý¬0®Ûé5-Õã5V!®ËNó?in�—jrÝé®.ä ´½.ÖòÕ6f2^ûY¹jl²Ïíw|G¯Yuô l…¬Ch÷éß…n -\dPúŒ©wÌ®Ø}‚Úït!*|Dë{¿Ö¿Ï Ø6ƒ}ã¿`5hçù'MVp+¸À£íû¬¦¿jÛþÛPÙ±8 éLÇ}®;g7¾ÈcV x<þ“<Ÿ PóS+œ>a‰Ö¹ ñj\oc®wN«ŒR55^«÷û7Íu<µUV½ï­óiÍàºsÖßx�ãâÆïÓäÊa{ª|Ô¼¡,§ŸwÖï?•]ÿœÆ�_TóÆZ1–ãØø†*wË€•X·hçsµA9«1u )ª— _ºRîÓòíÚø Úñ‡½»råJ7 £»ÂpƒûFÏé¼£]mx•°Éc@¦¼¯�ë yZWW×+Nä½½½îDà¦ßk?ëšÖóS>ÏéjmZZZÎȾϹî5ûšå·¾wjú¶>ó´}_Vxp]u*0¾I¯ÿEM{X™444\nùUߦõ:§¿¿éêÕ«ÿ³ñ¸fxÁú´ÜAùÍ>Oæ:—hjjš×××w”�ߎ'†œ d«Ú}öv v�~Ý`#Þ„Ó}MgåsOŠÁ3Zþ‡1ûÙ#ûÍýׯÿç Å�ñØ{‚08)¯fL™ÀíO…†ûÜB[á7cÁ½�ì7oÓuÞ¼1w5ПÔûònv£à‹»ßyòeìsÑÓVC´-¾äÆ$òþƒ0ìÑîuN&È\÷àŒ _1î”ë•/–‰¿OûßiÑf#cÌm³K-??×E¹ê±tÓ-uQj;×UðW|{uÝ ëÜâÎçgçZVÇóojù×™'W Öô �þºéÀÙ“'OÞLçš]\G ®aóçŽ'c6ø¢�ìÅÈoj¾$•J½ì˜ä.Ú)ì¦ÿû´Þw>M?¯rÒ¥žcz ­Ã“šÓ:>4Üÿ»Aå5sÓ¹úìÏÓúž–ãù\ÓõQ÷#}Þ%» èzùÓ:uoòëÍõû’—Ùó1–ÁÆWYnÎrãœ7è»QÀ­òø’}H;¼×UxÖâËzîslô×vÝ/°ÒÚC¯Ÿs´ÜìÉáÓ v÷»›*ÍCcc£(ôÊÑ–ÑAûô|š éàÿq`F<ÉeƒŽ›þ ÑlÍçZ‰¹n!5;ÀsqÌ?>Ú¾�ÎM×i?pÛã\�çuûÑú<öÑö(ÉHêeQ¦^ÑÖ=u`�>©IËÄv^|zâ;ï![…úíÝ/æI¡æ‡ “ú?yßôK‡­i[wï�™k‚rÕÔ…³�WP¸Üçyݘ1®Ç±å3ç]b¥†Ÿ]:sÞˆíȵÎn[7ýÙÝg¤OìGÚ·¼Úćƒënºõ­M®z;ßuz{0˜þœÿ_„ ‡ÆÇŽ~hÏ þ;ÒË÷¿Èõîyÿ´ù§]ÆÒ¿Ñ>QTÏ‘õÆ]TËãÆóÿ*Ð¥‚í#- ðàjzÝôc×et½«�¥ q—ê‚ߊ‘pcÕh]?ižtxü¦Žÿ_éÿ³ƒ/.p“ÖõP­«»'/go�Z‡�]Si�w.´*¤óø:o}g¤ÿ×»ÿºIouè}»ã¨×1)ÛÀG=õiÖøÄàààž£}æÓgéØ~‡¾a¤eôÙLs]_ë9;­L²µK× Ý\Î×)ÆX6Eó-” Zùôz.W®®Y7•ó*¬v¨[}CÍú¢çìÚZ_Ÿ«ùÞI½ægµž9CÍÆt0ú¹Þß9>Ëj¹™¹–Ñ{ú yÐsé|•þŸÑBͦôÞÜ8‡‡y®su §WANÏ3¤m<+Ÿ}AÆóôwÞ½Ni]>nUL5ålŠæßT#�öøÐkðoÞ†ß[6cÞ'F 5›Ò²Wèí{ª}I?K…°0„GŽj6µtƼ«õey»‹,>ˇAð~ Ϭ™æÒ�iïñ¢´}o_šIÎ-Ôlléç?¶5í¯¿{ÐàMç¯ï…Ž›�šÞ2Z¨Ù”Î'îâ—w“b]¬õ|¥ã±÷ñDëzÂh¡fSZ×tt5M¾M®3“MIDAT+qÿg!-DŽ-ÔlÊ•9t}»þÎ똤ýÅ�?Gí.{ÏTΙôº§û†š ´žçZFûÑ›r(¯À¢�¹RÕj¯òXæG–'söôâs´yh´]ÿ¥ß«f`SúÒœi�3Wí–kœG³¾3tšoyR¨¸Nï5¯›³Gë< Ûlìæ÷<§R›¢í{�ox”÷i�Ê2>ÂhBókbåw'Èþc |Í«›nEã_* |Öò´lÿ ÿ¤tç×xLucÐXé|wùþóòî%IµF‹ô©y½W}¸ÍÓîèòoð~Ÿ…Ü}4ƒ™ôan°XËÃò©ßï‹ÅÃõ÷ÝGPoܽ5š½ÆgY×\HÇÎg,O:G¸ºÛ<5¸è<îy< /׺^ayÒ9ð¶}kHwRÞ«isò½hxŽÞwÞÇ$�Gù6ƒ—fÕòŒZöÐç”óþT­ë ½®÷xi™–k½—7äøÿBZ:\äͦMÝ«UÝŽcãøj¥�° ›°ó¥×9ÎÝ`?Ú¤ê¿[,?® ±Ï—ÖgÌ¿›ºÃеñôê+}î¤ü3�å6wm„Gùÿ#̃kƒ¬/ì÷­@:8�å "Vz¯ÞÈ´Üòbšèý~ÅÖ7Êe‚¾#^Ûq,èð\Æcƒyº� ñW¦,šs°ž#w aس&lœmZºÿ¼+ŒüByg%àn\ïllÈëÞµ�i�Ï÷¹ò¸îµ,̧íÕÚmщ í~ML;5Ûì0oì{ászƯñ c›ïÈò?+¦IîÀÀ€Wí†kâåæîÿ²ã°å aú^õ ÜË©ÞçUzŽ»|–�Çã¾Û¯žË§†jS®†ë(ÈgÙ\çDmÿûr•ãô‡Zž\ßú»×çZNïcÔ äùöЦçû…¶OY¬-—±¼ÇÆ·ïñB È>¼®Êjgê± (õý ÙÞK~ õßÒcq×¹€«>­'£œWÈÃõíºŠ3Æ…·“r-ÔÐÐàÂØ‹ÃýŸÞ³W[swc¥Çj] Èy> �V ¬uöêmFË\¨ÌZ­ƒÛùº²ôí\ j}]ó„+­ eÊÚ+ZØxÖØ?¾ç¼W4[‹eÌë³ cÁÛÿœ¼š#l*cŸTÓ9—ˬû,‹¦°ñÝg÷>¯¨^UÈw5�¹»¬ ­l�tTR�‰{Õ–iÛ>¶lƼßZú¶ /šô\ðEí½9 ®g:¶í™«ÿw>Ó±²à³ÓÛÛûhv åœ5vÙŽ–ó_¾=‘ÍÍ·yÓ0¾®éæ\ éý”äx2ÚKø.¨�É]œ,ê˜ä.Èê=ùŒý5êg±jÕª4{ÁJg‚öŸ“óÇ·¥Š�G«)ÀzË`Ó¯©Éc9—.K^€q½…ù.«þ9‹%úÖlƒiîz´Ú)Ÿ¿onnž ƒâhÁÆç ùò\½•å²fÍš»'LÈÝÁ� æ®Ïöe#üwαn\—— “¥ÄÐUû{›Ñª�=Ç/zQWOŠ*ø8®›mÍr©xÁ2æÂŸGk´XP¾ql´§ïè¹àHdžœMí Ÿ�¶pNÞÍÐ^ÎóðØT›fC¾Mœ65¦ónæ²)w¿Í´s.Ô:µ�¶œ;žm3ÿÇ?uÀ•eϬRbó{+ о!ûñæõO½cΕڇ½o4¯7Í:n›k9í·wwwÝ3Ÿ^ëbŸ`c#o½Æ¶Ó9ñV$dÿ¤òÑ?=j\XwDËÕ¢%Ÿy¯ŽTF£²À/õ¾/Òûõ‚€þß}—]¥lC@¸!távšö›£ôz®£$ï1truÎ’OS4½¾kMPÎÊ…²ˆBS´²¬£>°m|—Õ›Z•q#áj:.™L~G_Æ4Lµní´wjrM�ò 5ž|¾ÿ°"¹vœ® j®å´ÌH^Wó”³i�¶Ó½VÙ^Ýn÷Yv”wàÊyŸ“þþ>+×ݹëÚ:×r®yDŽ&cF›²ŒÇ¯`Ÿ¥ô…øçð¿«°wª qJlEQWYÃÐ*´™Ô+ž+ÿä³\‹5{…Ä*·³ÏB®{Z+í—7F444ä{¿YI>w‡™×¸N#5Wô¹ŸåÅ+V”ä"¬öÃ?ú,§²Ç¾V>¾÷ô>²i·Û¿`䬩rTö*ÉñÝÝÃÚÖÖv€æ§iú‘¦;T–{A¡Æ ÿÛl.é`žÁÆ�Ϥíšï­Ua,kl|jkœ¢®.Ž$;¶‡†¢ ëEš �ýHטëÎÏÖ_)yIP¾á<6•³ ©uô¹wÇ+<�:~ÐHW&tÐÉÙÕñmKìû\ZŸœ]<ŽtPÑÁÍ«†ÀW+�ÅšöɵPSSÓ6Ù®A«Š6eÙš¢©d¸«ÏiUŸæ°Ç†|Æ®©¤ ŒmmÅÂ’íÚFnÿËÝK_¼¤M+Æ„Ž¯õ9N/?`Þ_­ºâwu FîBkÅÄãñœµ5Ž.j–lw’´¼=ÇbÃÞGãyo…w�mܹÑ羊âŽ'£ó­Y(Ùy<û\ȵP½LKKËö -î^™éú¼¦º®Æµ/Z)…aÉZ2x…¼j…qlÊ"�›·z³c�Tœ»‘P¡êD­«û¢M®`€‰Ï�¦TWNú}áo}ï�òêJÕó¹¼ÚÔŽrÐñºY]'ÚR¶Ýõ}ÿïÍG&,¨w—œv[pÊ!úªåì®sÝ:Á+n‚wã•X•*ƒXè=®Ó°Â dû_&°ÿÆ<>A}ÊU¹ÿåç3Š^2wTrÁìU:.Uj¨‚¨ñÚ§tþ-Ùþî{ŽpKo|ŸŒoÏ”¾Ïï#�÷]Üñdt¾56%;�ë¹^ð,gåsL¯ÏЕáNÐsï½á—cUžs�ø„©RÕ�…1 6ndR}°ã<-ù=6º¢ïFîõª±ÑzþÅ*L�fX¾§íóV+½‡{v �‹Ï7±œªnjØõI§ÓtUÄrq1+wpõ9P�Tc£ß{U7—òD«Ü}pÚž^…üRQô‹ùìhåºÇ&f1¯Þéœ0L¿âŠnCÿÐD¿wPyaXä˜\±Ò}g‚Œ‚µ×%¨èþW¡ãs¾ÕÀJ[+º¾ K°†Ž}u,͹ÜÐÐPÉ>ßB³ŽÉî3{)Øô÷÷O?>w_K¥<Ÿ¹ h>ÛÇÊ»y•%Æâœhæwá+™Lž­Ïå¤| �žë™<”–¶—WyZË=n5f÷Øx†§äÍM\-ˆï²Ú‘Zé‹ð¿Z¿ÛKjžÕ�ñCVGj|Ú2;%+0éóÊÝÛ��Zcã5X¬;![‰h?óê™PúŠtw¾�¢Ÿ×w¾56;þå³Í*{x ¤¨Ïríƒ3/Z¼éï›û}þ­¼°¸Ë„A&(Ùþ—±Œ×þƆ¿I73»ˆ¢ÃœÇ$íÍ^Ç_�…¾=�Öû¼¾£:ö•l×9«ù½ÂÔËö•¾¾>ßãIÅÏ :úžk áû�+Ùy\ïÛ÷<>jǺ8ݦZwÑëó¥ 5ò=×�åFÝn¾Ý=Gy<¬ºkŠÖÒÒâz¼ð5W;AÅnžRM’ëé;¥ª¢ÔŽyîàààÙ*è{ÝsR+ôž;}-Yw¨ÚÖÅ|n:™½0n\oÉÖYëÛ᳜»Še¤Bd¼ŒcoŽjBz­óÉëäæzLî÷÷M¿´gÚÂ9æáoš®± ÊXúV+‚ëÛJD5c^û_Ì2Ãv$db¡•É61ËcÀÖa(uæÚ¥Ã½1åK§£:ë Çžo퉖«è9Âu/=ÌýŒ}ž-\J¶®:æwøÔØh™Šž†SéÏÈÑ2#vnäšêÿݽrž=kæô„Öë 7ø¨.|ÿ$×Âzí’Tè‚ø ETÝò¿`žã×Èã===÷[(Ô¼K‰ïXáÖfk—nÕAiIww÷=–íŽPv³:¢/v§ç¢¥:ð8^½�DW½ªÓõÙV|�Çüä5œ Kz#Ë®=õÕáÚðÓ¾ù4cá¯Fú?WSšóSV–Μw¦EH–ð;xö–Ž lb™>Ÿûd§,ûô¤åS¿_Ô•åÐÂD1a[«Ù™ë¯Ý¸3;Ý}ròï{\ä{üÑ®wÎÞ.2ßVuÇ5µòir¤ï°ÛßYiäÜßG¹ïÓõv¶��®dßMצÏr¥¼¿¥PÙϨT¼Þ·öŸƒ�ÖÇ ÇPð:eoø½ºptOggçß7ú¿f�p\÷×3ê*Ø(íºþÇÝY/nÄU«€ÖÖÖ„BÍÏ-7hoM§Ó*€�ØÝ°¾›[ѶHé³Î¹\)ÓsÍð\nØKÌ®ûeÏuÞÏJ$ÛË^Î岎ռøÚð{¾�8C™ôˆã i»þÇr ”S·ºëô ÅvYYAɺwÕžçõý b#tr »-íquµ/íÆÊ)®ÉLìRT%bh/úü}Óšu4þΊÔ±�êšéœùÏ`㎷?²"577'õ\>ÿ3Êï·±QèùÝwÓ5!+zÌ'ßs£Î!ÿ±òñ­Ž�i%â{×¾3ì1Iµ5®|ù6Ë�ÞâWn(½þª™yx”e_�ëÉ‚ ¨ä}ÎU) ãØ”„v¸×jÇñ7a¥ò¢}ò¡/É æÞóZ¯Ïë*zRIþ]ú\0Z¨qš¦ZýñïeGÕ”]›¥`êÆØÎgÙÑ®¦øtשƒÖT�$ß`ErT]V–²Kìj6uáì/)Ôx�°¬+øWŒ6ž‹Î,÷˜‡ö�¡÷X”Ö1õŽS²"í~çÉ[‡£©»–9K÷Ÿ;ìM¬±ñÝæ!L§‹þŽþ#¿�ðáR¿åìX+�È�^I½½½�ißòÙ·õa¡(ãÆ�ËÙ…pÖHÝ}{Ot>{¯Éõʦms°Ç¢}©Tê!+ßhÞ¬÷ý+’Ή®ëê½<]¥²×£#üßiæÉ•GU–{§žk •ãN×¶¼*G¨qvõxÞº¿¤QÁFO×gý¢<{“¸º#{ò½çç6} vÐàÛ+W®ì2¹úί9¡gŸþÚ'>oEjhhø’ï²£]MÑÿyïÆÆÆ/X‘v?ç¹h^J! ýº JÔyÀÔ³¿Xð�|þ&mñï�öÿ¡eþl¦¼ï÷‰kBg•”ñÞwF~Š¡øŸóO` Ý]ðÃý×}Ó/õêÔ"–¶¢jfw[4çÍZ‡m¬Ú£½š3i›¼wçù'å¨w4»Î?eºö« ¹øÜ?Û¬‹¢Þ� �Dç#¯–"ªIºy„¿÷<žŸ±"é|vºOçNÙu*ßXbyô°ªóÙg­HºÀ|†Þ·ÏX}î»üŠuK&“‡žãÛ(Ыs°ÊrÞéj?Ü[ÏŸ³›ijlê Øhg8A_Ôåú°óHJ;ïÙVK.Ÿ¸IDAT“'O~•Öm›\Ëi}þæjhlýÀ•Þ²5U8 zyi›zuÓ­åŽÑ>RðÕXm_×TÁûª{Ž«)¾7vPa½àÏTàYzß¾W¸¼N¨¥³Ê\qšrç'^5mÁìµ-¾–׆víC3ÎÿÛh‹ e2£Ö¢n @µÏÔ…s޲MYtê ýáóªqºyÊÂSr[ ®Ð<íŽS ®iš6ÿ´iAžà³¬NÑ£öJ©š³œW²u–ÿ !–±¢ ¶ì?ïÅ0´G}–mŒÅ/´B…ÄcÁ¥¾}%ÛéPAt¼ý¢OùC熴.¦{Px�þ?ç`å®F_ç³�X�\­…žãÓ>Ëj}ÊݱR>ç�zß×VéowÖûù¨Ï²£\4ÝÃüþþ“ú< ¹õàxŸ…¨±©á`ã œÚYÿ¬/©k›Ww€Ú1¾®4ýˆU@SS“WàÒ:Í3³¼Ûâç]h« }—Õ6ºÒµ�¶<)”n¦¿ýY>3ÚÕWWHËy3¦ž#ÐÕ¥Ÿº.%-O“&MÚ\ûÒ�=ÿ¯¾% =™2wuåºtžºà”Ócƒ��hc’ׇÖ=4>˜�k±uÍÔB¿‚“*$~¼ë§N±<í¶èÄD,þrýsÅ,vÛ´s˜rÇl¯îª‹fb¾ñŽÓ^“ïß½ùÞ�µ†AægÚî^ƒEdÂà¦Qƒœ#Ã+ˆm9uá)G[¦üåÔUJð a9~.Üg9åŽ9Np¿¬¿ßÝàã&Ÿ…t¸mS-¹ï1óe²Í”¿é¹ø|M#ÕBºßû^øú¾‚Ø–¿ñªù¸:ðŠCËÝ`UDë3×Ýr`yêèèp�Iý2ð<&�tKƒ~¿�yÐ9õ<Ë“NõÛhýü.QcS[ÁFWFÞ¦ûšß«/èú€´ü¹›·¾j¢ªgßÂÁJË“¶Ãµ ·:ÔÛÛëzò ;Ž7î/: yw‹­m»“þæž|k=xÕêuwÑ>~Wv°Y/ZvWé%¾Õår–U7︻§ÃUCóó é5ÏAì\mļìŠÚ{hÏ ¼zÊ™o›—`bƒjxv[xŠ÷½ »ß1{çxºá�W4‘ lZ, ®ÕûüÇÔ;æ|bûÌö;#_.,ŒË¤ï™2NÎ6ßì¼hÎë†V5ýUëû7w,?`î¨møÃXî`³~Áà|Õåu!@!lb,�)¨@;œ´Å.ò]6Úe )ÞÝ8ÓÎù^½^È*„ÎóϪ0z…çâïVÙâfו¯çòîx{HCCƒ÷6wA5Çÿ{�ݸ)zÝÅ:Gy�…§ ^¯Öò®Ì´�Ïòî☶ß3V^ùзÐtW>÷ͺ ”ÉdîòìØÁ½ï;U«öÀpÿ§çÈÙ$XŸÏ-/ѹþWocÖ+š«võIÈú²åµs9L¯‚FEƒ€vØ>Ëé}¹¦GW›'%|wóè­Žé³W³£íàî%ʧò´.ól è‚Sܳ™*Ì�é³ kÄ[ÿäV(ˆ.]6óÂk}—_>ãÂÛU8]¤+è¹{²SÈŠ‡¶H5I_ë×øƒ‘zJsµ$M™ÌìLÆæŒÚƒ[l¯ëv—Lzξ6eÁœó—Ïœû-+1�µª–è[ñÉk¿ãÆïn¹�çŸ4y\Ÿ£ª¸³òÙþ -ß˵LãÄ5·¦ûrßÛ½¾gÈô-Z—Fëôa×Lq¨¯ñ×úì|n&öâš/*pÞä[K¨×þ¾öŸÃUÃ5gùþ�8ìÀn‹fÏŠ¥í|=ÜÅ�j¿®c£WíC®ÓŒGu¼ýŒ»Ñ{¤åÜ2=ç·´¼w-¡kÖ¥çõ>,ýÿ_tn¸ÍXÁÖÉŽwá³è‡uÀ¼¨§§çÉÑRµê:XÏÓsauNŸåRßÁF¾éÚDësqUòË´-ÿ© ãFûtUÜo± ô6¤×ü¦^Ó÷êî-ûm­ó—]÷äZç¥úû§²ëìjsÜ1ïž–ô\_6¼$´ðþžLï©yþ™Êò±/Å-ô»j«+­*ÌžÛ18ôÍŽ…³oÕ‹þE¯üTh1×¶~w&Þlaæ.óùÆ=߫ t#s�ð"ŸW¸øüÔs~¦u|ùñ)´-³=}yÖýYþ}Ù~ss6uY?êìŸj%rßGÓ-þ­çÙ�ãâ?.<ºfŠMCk>¬-®‚^à}uÞWhÁ÷ôÙy7t÷`)çß§€ã‚ÍïTóô´~÷¼áand´m3Ávtí\w¾×UûËtÜôº¿B6×±õg:Þž«}ô'úù1Mÿ²õ¡àuÁúК÷½nú»/ú,§×üŠ–Íç|v²jéO7nœk²z·&W˲Jϳ­ÞÇ®š§Ÿ[ò¼Hw‘BÖ¿¬º}N�àsúœ~¦÷¸i™iKwo­YÞÇÅÇt±ïºQþÿßæÁ�¯5;&×rÚ/ß§õtY·0äe,kl2>=PTŠ ƒŸÐ—õ:«0w€Ð—Ï�±0ê—LÛ*¡/êÚÙ݃ÛT ìNt®¿ú‰ú�kBå®Ö¤ízŒ–Í«Qˆ††>®íöˆo»á¬ Z~]wŸÑ—óáscŸö‰‹µO¸`šÏ lR©ÖÙõv£ý«"]�¿APM5…šÇ|jï+óâÁÜ¡Z%wrÊ#õÏ»µ Þ½®hk…saùÌyÞ½öcØî² Xymïз=ù:±ðÇ*Ü{u°¾æÆæ&Ógu,˜}•~±þJv¾Ê\³Òôš™šO´2Y6sîü© ç\£Í’W‡Ú \�ý›ÖoÏõ�‚00Mñt¬û¤Î¡útⳑÍ|o²ÏEe�³uÌ_ⳬÖõ.­ë¹zíOZ´üû5{ÿF?¿lž‡ÇU¸/ºç5O¥Ø»ÿ_)ZVè8ê¾tα˜Wç î³Ðg¸•žò"Õ*Ý»råÊuÝÙOœ8ñ5ãÇ�½~¿Ÿ–y—o³ÀáV×êÜXÖØTS¨9Y–±l¶¥+޹{ÞÉvõçÚá~Ýg0Ç|ÕboªázBÛêLó¼w¥Z ÝØØøw}æVAnÔcM÷ÒUkt:{(ÖôÈÞçÔ6Ú‰OZû™ôªñ3Üý/VQáê°!­qrœ08é̹Þã'-Ý蝹Yly4Ó�®YÔÿ;æ¾Tø)ÿ!p°1~bã`z–^©àž¶PR«Tx�.ݓ簢éX»Xe�¼.<(Ü|Vã}µ®•nžÔ¯ÉõÌ¡…Kfž •£- ýç—ú<]“МFÜ`ªnr!7-ËÄ´ÕØª¢êf€Îô)1¿Ç]!·±5&÷2lªV{ÓЦoéËî5ÀY¹ùnc×ù�öÍ‚zr*†Öï½ú>ô\ÍÁí}ãÃ}Ø÷Âç¬÷M¿tÐÂØá®G5« Lûàò}/ðºŠX-\ SO¸2ïqšÒ±øq ¡}.$«Jêc†ªÑÝݽ,ßZ�x¾¿¿ßÝÓ›ïy7­é}ú®¤¬²>¦séß­rª¥<ò¸B͹Z±bE¯fWÚÓ~\α…"aÌ‚M¶jo,-ÚM´ëmŒé`ñ·\=¢ÉkL�¦¦¦Š^­ª$…7’r9ÊßÖgØi%¤Ú&÷¹Í²‘»-­{�¦½´/Þmcnlkµúj>½lÿy³ßs^Þ½géç?ÆÓ{¸L­Ìô«2�ÍZ¾ÿ¿ñý› !íu<ÃLù aøø`˜>à© hò·ßù®}ÑãÍTŠûl2ax’•KhOe,Sí½Vû.RÍ͉*›<¡×Ú£¯¯Ï«‡ÅM¹É÷t÷èZ™¹ŽžÜ€’Ú>?µ*¤õ+I“Àžû)M˜g-•–ý¼¦rݧ½VÏ�sø-S–ž0£dÌ‚MPІ�pMÇëKº§ Žÿ´*‘íbz¾•˜ÞëÍ:~ÂgYþ+Úì©’ôY§\ïT% 7Ù“à)ÚŸ\¯c9÷é|›ûéyoÓç²w¡ÝDúpß í#o‹1k†3fÇ·%,üUÆwZ6cÞ9#�x_¨eû]ô˜^à-z¥²�‘åîJñ·.ßîmVËf^x^h™÷ë…r˜…š¡ñ±}9à₃߲™s]ïAdž% }] 2ŸË½d~5ÞËgλDrº•˜ö�3�{TúŠ~ä©¶ú®Yš­ovU.÷ê¢ê[н_µú�©Ægºöχ­|V»Þà P²"tÞ:GÛàý>˜æÃ…×\Ìu îû7ZÖ]{¿•‡ëpÀç½™Õ¹zjŠ6ßÝ; ïµšÜØUW]§Bìÿh¯´Òq� ¸ž5¼º”ïþߣH'‚.ÜhÿÒJã?z®w»+}¾PHs?×LB'Û7ëµ~m%æÆqp'Gw’´*QñÚ\W[eá…*î¨@ó~W»be²ü€yÏÆ'õï­‡%oþª�öƒžLïT×­°å)Š{‡Ée3.ü•^ëíV¢+“z®k\¨ñh4KgÌýyàîÐgj% =ñÑt�~«ÖÑ£9bþ5�K÷Ÿw¾jn> �à{Œ} ,¼¢¯Éö]¾Ï^ÐêÔýMÄ…Ðñö÷šíW†æËîªÿ·t¾Øß]h³ÈÖøìízBµÓûÿ£¦·¸‹kVÝÆ«œó+mƒ· ÓZAô<׬]»vo½w¯žÎ6æ.êbä›ÜýªV"z®�f{dóiÎ\Óå85l´3<¨Ù·u5z´Ãy�A1V´ŽÖz©‡÷[á^Зü8½g׌©Ï÷ ªB÷Vã\¸Ñ6>FÛgóìÅdSîÊ�¦s´}·×•¬—º¤ jVºN:²®þèF³×gq »c®»(–ë"–»hv«¦Ûtì½]çô²wÈâ.~iöÁÉ“'ª±±qùÁíC¯íï´~n{¹-·êÜvk)jïãñx§žÏ§VzÄ¢ øß¦¦&ŸÏ{ã +*ÿ|SŸ×†±üÉŽ-4â÷Hëù�&WKw£>ï;­DV®\é¾[nP쯷µµ®mò>sÝøçö„¦ku®¾Æ¤�ÿCûÿRó»°éŽuˇûm�î0ç±l]m`Î�Œ«½à);}Ωv¤}ruèñ:¯ÑÎþ혯ɎÇèyÑÁèIŒ"ÕûQ5êèèhÖ¶Ü^ ×—üëµ�ÝÍzÿpÛwC_ó#q'>}>Ë=^fg×Y„•ؤI“^=~üø×i}·¶õsºq¢žÖº?­0ö´ëeÍ ;ßuzû¸þðu*�o¡³�…uã­<XðÏJÕ,jÊÂS^oAl[�\v2as&{ÒlèŸCéð±G¸xLO–o˜ÿ©Ž‰ÁÐë3±p» Ìl£( p[¡#é3±¡%Ù@T5̶QÐz½&mÏ # Ü�á“ ûu5£þíÂÙ×k¿½ †¿P�å yÑEÇ×êX뎳îxûZûÝ —O¸ H*»sEÕÔ„µ´´´kýÜà¡[h¾�Înœ¶§5=µfÍšS3ºøú†††mõÞwÐ�ÍzïÿTYêI](t!®¢Ç$7ˆºBúkôY¼Ú}&š6s51šS˜{¼ÚZPDÁ¦H• 6¨nÚ>¡ýà’\Ë)Ô¸+}4ÿP>¡ 6)]žmm±Lh_X>sî· jD½�cƒ:¡àq¢«‘±2ÑU—œUÌ®vÍ5@ÝÛýΓ·ž²`ö1V&SÌÙ'W¨Y'nÔ‚M‘|»ïUÁ·À›BQ¬d29Kµ)볚¯Ço´kooß9ÛŽwTzýjï]@„C±_Ä‚àçÓÌþŒ•A„ŸòY®qÂÚ‚ïS€jD°)R<ÏÝ󌭻ñ127iÖ’ææf×Áϲ?¾YÓ# "Ç[i]à¹Ü5 ®M]8ûŠ{­û!¾«p3÷;f—lì‰)wÌy›ž÷=¹— Ÿë>ˆ‚M‘Òéôö>Ëå1– J¨±±Ñõn´ùÆ¿Ógq¹jn®s5-V¤D"17Ûų̂T[ó·T*õP·¦-:ef`Á—^öË ˜©Šÿe ›ï�¶ŒÇŸ5]§µ_¯ZµêEó4iҤ͛šš~æjœL&óq›K @]š6ÿ´6‹¥ÖiwÄnõ×�Ÿ³«ÃLxÃò™óY¦,˜}b,ÎÑà ¹–Õ1ïÙe3’[[pfÕ T Å ØŒ@…â]Thuý›ÿN?þ¯k˜eöÒ29{:sƒ,éïsÞƒ�Òimm�ÞÐа$Ÿ¿Ñçäºk¾ÝÝ ãºíŒÅbn0O×Mr �»Y<wÍEvÖÿísOÍFÏÛ©çqc ÐqP§T#sƒjkÞéýaØZp»ÅÂÛƒ0¸?:‡Vü}�‹:§Üù‰Wa|³`¨a 2ïÝXg–{¬³—žÚìèe3æÒ4@Í!Ø o¼BË}*¼nhªÔ§Âéeš»^­žÒÕ÷!r÷Öã3l”�Ÿ6Ðß~JÛs •2AŸß#úü¶±* Ïÿ`}þ2uiÚÂ9§jv¾U…páÒófÔ Ã+$“IB6¾ÿb’ ɧmøA¡Æ|©P;ÔßßÿsCEéór�5lccLŸÿ÷5@}Ë„á ±`ì¯#ª¦¦+�@Í¢ó€M$‰whv¢•ÎOúúúž7TÒ9ÔݰocH¯¿H¡æ³ ®-Ÿ9ïJŸ³1óÀ¾>gP£6éèèØBWú¯²QÁ6¥é놊[½zõ2™ÌÞÚþcR[¢×½S¡æ²tæÜïf,ü�Ž «¬ÂTSÓ› lÖ²óþlPÃ6I§ÓoR°IX‰¨`}D*•ú—aLt‹ÂÅÁúŽÓ�ÿµ QÁå·z]×[ZÅ 0ª×òó~:‹¿!´ð·V9Ó1ð­Ë÷ŸËÁj�l"‘Hìªps‰¦}­pkt"9R¡æ�†j1)™L~QóÓ5�·2P éÖtF¶[çÐ`»ß1{F&cé\³‹•Aè:�6›7˜L~æ‘]Ï0¨›´··X³óuÒi±ü<¦šŸ£TY°ÌPu\_‹Å>¡òA}¶[Zi<¡é=çO†ëF2uá)GëT||`ÁÛ­D\�P„ç.ÝÿÂ; êÁf“'OÞ¬©©éýz8K…ÖýUniYýÿÓúÿK;;;Ï6D‚ÂëAš¬iº¦)ù„Øì˜7 T3÷[…Ø…E˜z×é[†ƒéctRÞ3ÃiÛùÿu¸Zÿ, ÃàŽt0tÙC3.~Æ lò «ý»éjÿö*̾Fó6n]ogÏ ,[µjÕ †HkmmÝV³m\€mÖä‚N³>çqîÿ5_«Ïþžžžž»õcŸ@™¼ùÞ�MXÕ85oH†éL³jtšÃÀZ‚Ð&�­ÌX˜RÕLJ�Ÿ]6cÞ ؈>zEy‘G°y‘G°y‘G°y‘G°y‘G°y‘G°y‘G°y‘G°y‘G°y‘G°y‘G°y‘G°y‘G°y‘G°y‘÷ÿÿÿäúIDAT±(°ÎÌÎIEND®B`‚python-django-debug-toolbar-8.0.0/docs/_static/brand/Wordmark-Stacked-Coloured-Dark.svg000066400000000000000000000211541524561404200310120ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/docs/_static/brand/Wordmark-Stacked-Coloured-Light.png000066400000000000000000000647351524561404200312010ustar00rootroot00000000000000‰PNG  IHDR6F‰4IDATxœìݼUÝÿñßìM €iŠ€‚€‚”$<"ˆ@ƒDDøë#ˆJI»ˆŠ¢X�$€‚ "‚¨ÒÒèE’Ð�&¢ôNÊÝù™�†äîÝ3»³åì~Þ¯×�½äΖ»eö|çœ9§d¹’@ä6¢G°=‚ €èlD�` zÑ#؈Á@ô6¢G°=‚ €èlD�` zÑ#؈Á@ô6¢G°=‚ €èlD�` zÑ#؈Á@ô6¢G°=‚ €èlDoˆ@ išž ‹ †^ð’j®jNårñŸ_«lób�zVõx’$-@°,ê V …b¿xJõ�EêñÊ壪~î3D°‚a«hÄÊ•9Ð/~¼GÈÃÍ]ª»¹¼O¡g®€` DÙ€æYZµq¥^G¡çoº¸Cu«ê6ÕÍ ;O‹!ØA� Úå�•Úuá?(ìøP¶¿.Z ;� §l±Y­R;-ü‡JعZu•_*èªPs©¢B° 㓌S¨¹ÅÑ!Ø`ö˜e¡æ^D‰`èuwZjž0@´˜ Ð˦©¶ Ô@ü6€^u¡j[…š =‚  �¬ÚU¡fžºÁÐKRÕ×hP¥èLèýª=hÎ7@×!ØzÁ+ª]j®4@Wb(€ ÙAÌžRmc¨IÓt!Ø‘§‡U›*ÔüÕ"¢@³¬jª~ü£.ëÿo€AlÝj¦ê½ 5[DbVÑŵª1•Ú]5[ÿ¾¡ª"غ‘;ÛR¡æI‹ˆÂË:º¸Y5j±_ù¿ß¢ßÁ"غ�Ïz¶½BÍ+…37©Ö¬²É0ÕÉÚîª7àu6€nòšÝUý•q– ?[1`ó�¨nÓuÖ7ÀlÝÀgîóE7¿f‘Q@ÙK—©òL°®êf]wG,@°ÄnžjW…š“-2 &ßÐÅYª>Ëχ£]¤Ûøª6€¨½¨ÚV¡æB‹ˆÂH¢:I?e�ñïñë¶ÎS 3èa!Êtž'TïW¨™fñ9Oµ¿g7Õ …›U zÁ@öè4÷Z¶FÍ�áªëôãÇ­x›ªnÒí¯kЃh¬bs‹js…šÇ,"•Þ”ëU[Xó¼Muƒîk€C°ÄäRÕÖ 5Ï[D4Ö³láÍ ­ùV²lXÚ zÁ‹ÓU;)Ô¼fQÀð!b7ªÖ°ÖYNõgÝ÷' zÁ@&@»}W�f_UTïE‹ébºjyk½!ªsô1èC jã ÚŃÌ~ 4§[d(öÑÅ©ÖþÏÏq>´žÃt1+€NåCÎvŠ4Ô|G§Yç|ÏþP�éë]Œ@'òÉÆ)ÔÜbQxð ã½4ûXçñpcôÜèV@§ñiœ=ÔÜkñá^ºø½jë\„]‹¡h€Nr§e oÆj|r€ÖÙ¡f!7{t‚  S,X¼R¡æ ‹ˆB‚OãìÓ9ojñ8C�{g€.B°t‚ UÛ(Ô¼hQ8ð7}áÍõ,.}ªóõø·2è@»�¬ÚU¡fŽED¡` Ëz™Vµ8-¥ºDÇF]€`h§¯+РJ-" »èbŠj¸ÅÍÿåú{Þj9‚  úU{+ÐüØ"£°¿.þ ZÚºƒ‡ï¹YÆ b@«½¢Ú^¡æl‹ŒÿGéâ$UbÝe”ê\€ˆl­ô¤jK…š+-" 4}ª³ôã7¬{í¬¿ñ;‘"ØZåaËÖ¨™iQcY]\¦Ú˺ßL V@+x˜ñPó°ED�üuq­jœõŽs+ÓX@T6€fóag>üìI‹ˆ÷kêâ&ËÎ?é%>‰À+=U ‚  ™Î·l¢€W,"‹,¼¹Žõ¦uU¿4ˆÁÐ,?Q Ù]ÕoQ¨cÙ›«XoÛ]Ïž‘ ØŠæ‹mú¢›_³È¨!¿›.®°øÞ,Êd='D€`(Ò<Õ® 5'[d* ož§jXh˜êœo @Q^Tm«Ps¡EF ÷c,[xKz—êX€G°á Õ 5Ó," 4CUÞKó%Ã`¾ çé :ÁШ,[£æN‹Hex•ŸO³›!įõœ½Ñ Cl�¸Eµ™BÍc5Ð}Æ3_xsŒ!ÔjªèÎ�Ð;6€z]ªÚZ¡æ‹ˆB�¯MãkÔôÚ›Eø¤ž¿�t ‚  g«vR¨yÍ"¢F¹‡™›Tk굇@"ØòúžÍÞª²ED¡fœeÃÏV4äå3ÞMR­£×}O€4ÄãAf?5lO·È(Ô쥋_©ú yÜ«š¬ú¥^÷— :Á‡œ}T�ÛK-2 5_×Å ¡<À^¢š¤×ûr€Hlµ<¯§Fî-šD'ªö7„xNå½qõZ?l‚ `0>�³‡š{-" 5Këâ·ª] µøúC>ÜìWz�_5ˆÁ@ˆ¨NGaüDûÝÔØý§E¤²ˆ¤¥ÚÒPM¿ê"ˆ›]mÐ6B0ƒboIUªÁÝbŒ 5«êâJÕ††�ÌWýNõ5½¾�t‚ `QsT{¨Ñ{¡EF¡f=ËB͆Å=­:Ųógž0èBÀB¾VÉvjø^o‘Q¨ÙÔ²P³¼aQw©NP�Ûbª�Áàü(¾Op§EF¡f]ü^5Ìà|(¡OË}¼^Ï+ zÁà3žy¨yÌ"£P³�.N5Îs¾€æªŸêµ|РÇl ·ùÚ4jž·È(Ô|GG|ÍŸ®ù½Ž/ô(‚ ô.®ôÑØÎ½P ñÞï¥ÙÇzÛ5ªãUÐkÈ”ìzÁz“¯0¿_l b…?�ÆÏ§ÙÁzÓ\Ë=Z¯Ýíø‚ ôž#Ô(þ®EF¡Æg<ó™Ï6µÞó¤êgªÉzíþm€%l wxïŒ÷Òœn‘Q¨ñµi<Ô¬g½e–eÓ5Ÿ­×m®ª"Ø@oðóhü|šK-2 5ZjVµÞàô"˦kžj€ è~>ã™Ï|v‹EF¡f ]üE5ܺŸÏhæ½ih6@.èn¾6�‡š{-2 5»Xv¢üÒÖÝPMRýB¯Ó˨ Áº×�–…š',2•…7¡J¬{M±lºæ‹ô¥hÁºÓõªíÔ`~Ñ"£Pó]fÝÉÏuú�êX½6w 0è>ªöPÃyŽED�¦O¿RíeÝ矪“U'êuyÆ…#Ø@wñÆó�± mª,¼é3��³îr«eÃÍ~«×džš†`Ýãj<ÿÈ"£P³¢e3ŸuË›ýª?¨NÐëq�Z‚`ñó†ô§Õˆ>Û"£P³¦.®R­cñ{β ŽÓkñ¸ZŠ`q{Eµ‹ÒWZd* oúÌ`«XÜ|*퉪_êuxÕmQ2¨­lèDϪ¶Ž4ÔlcÙÌm1‡š+T;éù__u¡¦:½ÞïT�P9— š‚!8Òy|eú¨1ý€EF�ÛÝtáÃæ†Z|<¼œiÙtÍ3T¥×Ù× ÚQ5Aµ­ekÝdÙk…#ØA�Mg™©ú ÖOZd* ožfñyLu’êçL×<8½ÆÃu±¯ê@Õº‹ýúÓF°Ð$!è±éÓT;ªqýŠÅévË‚r,ï©,›®ù=çó Uùp3]lYxyC•ÍÆi»5ô\>fP0+�óUÛFjL�ýf]m�ÍÌ9ªMôx·Pý–P30n¦ú�ê2Ë&Qð^š7 rŽöÿ š€`q8F�ëÝ»d‘Ço«î¶Îó´ê‡ª·éyþ¤j¦a@>ÜLå½3÷©.VmgYh ñY€&`(t¾ÔÈ>Ùº„þ–¹jï©ÿj�q€íNÕ ª_ë±½f¨ª2ÜÌ'ø?¼gf0këvÞ§çú€Ñc�Ë{gvï¦P³�þ¦Yº8ÊÚ'UýÙ²I6R�J¨©NAä#ª¿XÖCs�Õjú”@ÁB»�ô05h&YÖ˜A뼨ú°ÛÓ¬Ké}å£f«Þm­ó’êWªŸê¹}ÐPUev³ÏXöÙ§Ëg–[Y¯AjP†¢@çñiœ·Q£ïNëb~B~eHÚ-ÖüT“UÞ3ó‚¡*½&këâPËf7nͱ¢j¬jŠ@AŠ GU[LJú¼·ÛCÍB•!i?°æ¹Få¼Cu,¡f`•ÙÍvP]ªÿ½ß²^šf…š…v3(CÑÔÄP´–ñž‹ízmH½¿–Ö… [ÍŠ1Wu®e3ÉÝn¨ªÉÃÍja8€BÑc DÙÐl—¨Æôâªöú›çèâ«Ö¸«ŽT½]·ùiBMu>ÜL5Q?þòáZjœGcP‚ €ì+šëlÕÎ1/¼Ù(ýíþÜfõñálÞëàëÏ|[õ/À|ºfÕÏôãªñÖüáfµ0 @ah¬@{}_ ñ½Uý†rl뽈´l’…Qª3|}Ã*çÏì¸ÈtÍŸ·ÎñQ€‚l =ü¼‚}Õÿ–a�Ê‚�çÕØÌOþ?^µ¶¶ßU5Õ0 ™eTêÇ{¬²f�užUõ75(Ó=@ëù9%{¨Q~¡aq~®Í.ª¥ûw:å焜¦çíeCU oÓÅÁª}Uo²Î·­egoÇO IDAT@Cè±€ÖzÞ²áS„šèyyXÇ-òOW[tÞ©ßM$ÔT§@³µêýøwÕ—,ŽPã:±' @„豂ó?Šñ˜eÓ9ßeŒ¯kóFÕÉz®î0 JaæS–-¨9Êâ´•þ†å­E°¢ÏШ{UãÔx{Ì0(=G/éâ@CU +[öí¯z‹ÅÍÛ">íó% `(4ßõªÍ 5h”ÍÆª3,ëý;Ââ5 1 @Ãè±€æºTµkeJ 7?éç¢m݉` ahžÓUû)Ô” ÈI�ÆÏÜϲ…4ײîöný½oÕgåŸub(4Ç·ÔHÛ—Pƒ¼ÔÀ_[5I?>®:Öº?Ô,´•@6P,2{+Ð|߀f¶U]¬ïW¤zƒõ–÷4€¡hPœ×TU¨¹Ô€ 2ÃtáÓ5OPmh½�` !(Æ3–­Qà ê¨I�fU]lÙ94+Ü&z^–ÑgèU€:l q>õîX5È0`j¸¿Ï²@óqã;xqCU›ªfÔ�sl 1wªÞK¨A5 3CT{ªn°lM£O¡¦†£¨;V¨ß4Õ‡j^4`1 2+êâ ªT«BlÔ�`õ¹Pµ›BÍ<¡@³ž.¾¬ÚKµŒ!�- êÄP4ÈïdÕ®„,¤0“¨vR]©ÿ½GõY#ÔÔc%=‡kÔ�—ª¾¦@s´¶ Ð,§‹},›®y]CFY6!äB°€0ýª=jÎ7ô<š·éâPÕ¾ª7Š´‰êb€œ6PÛ+ª]j®4ô4š±–M×¼³1œ»YFÔ�`ƒ{RõA…š™†ž¤0³”ex ih¶M ê@°€êV�Q¨yØÐshÞ¬‹-›²ù͆Vy‡žûeõ¹{Å ºÑ``ÞCó^BMïQ£zcÕ™úñQÕ·�PÓï5ȉ`Kòsi¶T¨yÒÐdúTWÍÐÿÎVý?ÕR†va�CÑàõ|Ö3Ÿý¬ßÐõd|F³Ï«R½ÝÐ)Ö7ȉ`ÿõcš¯ºžÍ;-›®ùSªå �æ]9l [xó@…š“ ]M�f;]¢òËÄЩ6r#ØèuóT»)Ô\hèJ 3ËèâÓ–M×̧8¼]¯ÛÒú\Î1D°ÐË^T}X�§i†®£†ñj–…™ýT+bã½6·"ØèUO¨Æ)ÔÜiè* 4[Zh>ªê3ÄÊσ"ØF°Ћîµ,Ô«¢Ç@Lž±læ3B B°é>Iš¦+ ؈ÅêÍjXaÕlºÃÑ!؈�‡_xóªÐûã1]0;^÷!ØÂ96:Ý4ÕŽj´¾b@ zŸ 3@O¢Ç@';ß²…7 5`P�êXšÝUó  †¢èD¾èæÉˆ` “xïÌ^ 5ç@�âEÕ‡j¦@N�àIÕ6 5w@˜<@»ùÚ4ï%Ô€Fl´Ó-ªÍj6€l´Ë•ª­jž1€l´ÃÙªíj^3€l´ÚQ 4{«ú   ÌŠ URÕghN7€‚l´ÂÕ 5@l4Ûóªj®7€&!ØQ¶úM%Ô€fcò!ÙWì’¦éªaÐ$­0N5CáfEh‚ €VÙTu“ÂÍšP0‚ €VZGu³ÂÍ((Á@«­¢ºVáfŒ„` –Uù„»@6Úe¨ê· 7_1€l´S¢ú‰ÂÍIªÄêD°Ð öWýAáf¨Ô�` SìbÙy7à '‚ €Nâ3¥]¯p³ªä@°Ði6´l­›õ Á@'ZCu£Âͦ€` S-¯š¡p³ƒÔ0Ä ¶²µÇ0Õ% 7ŸO’äjÐ{å"]0Ew¯Ïÿí5l„hwïîÏÕ`]C�›oP…Þ#oÐÅNèI E‹o©áz–ŠýªÙÐÐ�ž6@@LöR]¬p3Ì€%½ËÐ�ž2@°ŸLÀ'XÑ€×cŠðîóJ’$s lÄȧ�¾IáfMþ‹›îÃ04Á6bµŽe yŽ2 C°é>Á6b¶ŠêZ…›1˜­oè6Ï"ØÑ®ulB,«šªpóICÏòéÀu±´¡ÛÐc Á@ˆö>ô— ½ê=†nô„@ ‚ €n‘¨ŽV¸9I•zÍû Ýè1€@ÝfÕn†z Á¦;l#ØèF»¨®P¸nèzz�ý»lsC7"ØF°Э|¦´ëÕè]ÕÐí6R-cèF�"ØèfZ¶Ö +Òw7†¡u§Ô6r Øèv> ð� 7›ºÁ¦;=™$É|€@½`yÕ …› ݈`Ó�8¿@.½b˜êb…›} ÝfÕ™ª¹†nòˆ@½Ä÷y§)Ü|×Ð5’$¹]õiý¸ºÊ_ÛºÁý9lô¢o+ÜœU™&]Báæ)ÕúñmªÏ¨fbvŸ@|©èU{Y64m˜¡«(ÜÌU�¡ÚDÿ;VõGUÙ‚ €\6z™O&à“ ¬hèJ 7ÓT»êǵTÇ©^0Ä‚` ‚ €^çÓ@ߤp³¦¡k)Ü<ªú¢~\M5Á8£ÓÍÑëõO€6`¶Že ynhèjj,¿¬š¤ߥÚYu•¡Ýe�Á2«¨®W¸cèz 7©ê"Õ8ýïúªÓT¯:ÃÐäF°€ÿ®ºBáf7CÏP¸¹WõY˦‹>\õ¸¡Ýî5ȉ`¯7Tõ[…›/zŠÂÍ3ªX6ÑÀÞª› ír»@NXR¢:Váæ$CÏQ¸™§:[µ™þwKÕùªù†Vb "¹l ºýnÎS 5ô$…›ëT»ëGŸ5ï'ªg Íöªžsf­�ÁççÛøy7à =K íÇU_³ì<œýU÷šåV€:l 6Ÿ)ÍgL[ÕÐÓn¼7ágªw[¶ÀëeªÔP¤Û ê@°€0¾Æ�¯u³Ž¶ ä\¦òp³žêgªW Eàüu!Ø@¸5T7)Ülj@…ÂÍßT><í­*®ö¨¡ôب ÁòYQ5Cáf¡pó‚Ê'x‡Ê'¸Î�›žC‚ €ºl ¿aª‹nö1`1j˜÷«ÎWùTÑ›¨ÎVÍ3„¸Ñ N¨�ï?OS¸ùŽU(ÜÌTùbŸ>ŒÑÿ|Ê0˜k êD°€Æ¡pã‡ý)ªR¸ù·êpËÎgU·B°P7¾ˆ q>$͇¦ 3` 7sT§©FèÇ©.R• Í0¨ÁŠá“ ø¤+@áæ*ÕÎúqmÕ$Õ‹ÖÛîÕóñ´@�6PŸÚ§ƒ^À@jÌ?¬š WW}QõwëM CЂ Ëðô…<74 …›UÇéÇuU»ª¦Yo!ØhÁŠ·ªêz…›1ä¤pSVýQ5Vÿëù Õë~œ_ !hŽáª+nv3 N 7w©>cÙljG¨þeÝé1ý�4€`Í3TužÂÍþ4@�þ§TßÕ�oW}Zu›u—K D°€æ;Iáæ¤p3Wu¦êô¿£U¿Wõ[ü®0hÁ@ÖÙhÜ—nÎ5ñ ¨ú€¡*…›ª�Y6a…ç—,N©êr€l„`_QŒ=ÔXŸªn¨ªr^Ò—TWêçYª}TKT™.ú+–MZ1^õ7‹Ë­züÏ4ˆÆ ´–Ï”æ3¦­bX‚ž?/iÑa{#T§©Õï¾§z³a@ /«&ëÇõT;©®´80 @!6Ðz>…¯¯u³Žaq¾@åÛøw‚ß²,àœ©ÚØ0 …›TõgÕ¶úßõU§ª^µÎÅ04…H jP#r’.2íÕvj€Þb°J/–Où:TÏ×=9^åk¾pØ ôܾITjuë/èµ[Þ ôØ@û¬¨š¡Fç÷} 5nkÕªô~‘s—ªSxxNu”~\KõIÕ?­3\hP‚ ´×0ÕÅj”ïe=LÿºØÏê³–êXÕãº�‰ªµ R¸™¯:G?¾Mµ‡ê:k¯ B°€öó}ñYj�Ûz×ÉÖøðè7X6+Øýz./bºèênúUç©¶Ôÿn¢:[5ÏZËÏû¹Ä  !RC+|W�ñS­ÇèoÞÙ²Å&‹âiÁ¬`ºí{Uõöõ…›™ª½õã– |ÒZÃÏ�ju˜ÐÅ6B0ÑHë|V ñKTìèï|£.~aÍó.Õ)ºŸ«Ždºèê2þ­ò™ç|˜Ú¾ªÙÖ\çˆ`�Ç'ðIza¶(‚ÖŠ5}ü>W=¦çõ×L]�ÂÍÕ骑úßm,;Á¿èYç|ÚÅ"Ø@gÚTu£àkX—Òß¶‹e3tµ’/êîfëþ=<~LÅwa 7SUÑ�>!Ãqª—¬2 @ÑØ™@çòä}!Ï ­ËèoZA¿´öÚJõ;Õƒz<_ª ‹ÃBVùâ©«ª&¨î·ÆœeP0‚ t6oH^¯F÷ë.jV°Î°¦êÕ?ô9Á¥#Ø@çó…'¯¨ ÝŠžþŽ=uщ­½¤àIDAT‹O} eÓEûÚBã R¸IU«ü9Z_å³ù½xõst½¢ÏÙ‚ DÂÏ ùƒÛû[Äôøý$þ­³ù,€²,LÞ®ò™ê–6 H!å^ÕçôãjªÃTÿ¨q•_4Á@Ž®vopŸ¤Fö1¯uU1Me½‘e½>›Ú˜.º:…›çT?Ô�k©¼Wî†6û»¶¹Å  6B°¯è,~¢ûyª¡5j¯×ÅûUÏX\V¶¬7ÂÎYªQ†é5ž¯:Wµ…þwÕ9ª…3 õÜ´Z‡Æ €ôØtžÝT—«�ý‹Œ¯t¯‹ÍTY|•OG|¸EHáæX]ìaÿ�¸[¬dÙtÑ�èµ9›é¢ xèNGªñ|š*ºý¼Â�Ÿoãç§¼bÝǧ‹öé�N½›ªÏ #Ø@÷ÚGu±ÎK[dn|¦4Ÿ1-ºi¬sð…JÏS=¨×諪7 nèn;¨¦¨Ñ¼¼E¦²�ç{UXwóé¢lÙtÑ'1]4Ô‡`Ýo Õ�j0¯a‘Q¸yX›Y¶i·óé¢÷·lºèKT4@0‚ ô†õ,[ÈsC‹ŒÂÍ3– K»ÒzƒOí=mÑëu§êsL µl wøTÃ׫‘¼…E¦²�çöÖ yæ±�êç–M}ÓE@uè-Ã-;çf‹ŒÂMe!Ï[ïñ颿¡zT¯Ýo˜.–D°€Þ㳤ýA�ãý-B 7_×…/æÙM y†¢ÚӲ颯SíÁtÑ�!Ø@oòó8|®({?nNÖÅ®Ö} yæáC ÏUý]¯ã×To2èaèm¾~Êy1õW¸¹Ð²…<_´Þö6Õ�TÿÐëx²ê�=ˆ`ØMu™ÄËZd* yzÏÅý¾ ºW¯å¥ªí zÁàÆ©®Ucx‹ŒÂÍ�Ö y†òa†>ƒœ‡Õ»TŸgºh½€`XÈgÚòµnÖ±È(Ü›œO}ŽjOÕ€.B°¢lè%Þ¾F ßɱáW¸yMµ£~<Ý03ŸPýFõ°^ßoªV4è!ØWôžåTZ¼CÓöÕÅ÷ ƒYͲçȇ©ýBµ�@Äh¬³†eCÓ6µÈ(Ü|Kpzq!Ï<|bžîÔë|µjUb‚  ª4C�Ý,2 7>$Íòœc±�ê�ªûõzªn ‚ „Õ¿X Ý},2•…<½Áþ¼!ÔÚªŸª×k>Iµ¶@‡#ØBùwÆijäi‘Q¸¹^› yæõÕA–õàx°ÝÖ Cl„à,êp5pϰÈ(ÜÜkÙBžwòòsn>¤º\¯ýßT+t‚ €œHŒÅ}Z�Û+TËZD* y¾_u½¡^Sô<>kÐa6€z�S]Û:(j”û¹6~Î yæ÷ˆêP€D°4b”eÓA¯iQ¸ñYÒv2òÌǤî©çîe€D°4Êðô…‘Àe 7{YdnζlhÚk†�ì¦çh®@#ØŠÔ§:Káæ0‹Œî>™ÀÖÆBž‹¯çæ€G°4Ãn|1Ϩ¦ WþËò|Ìà.Ñs2Ù @³ì£úƒÂÍÒ‘Eò¼ÓzÛªè†è]@3í¢š¢p³¼EDáÆõ[Xï.äé)øy5ÏD‚`h67*ܬaQ£þEËò¼ÐzÏ÷ô÷_c‚  Ö³l­› -"•…•µ@— ØÁ¾­ò6Õ 7›Zd>iq,äé¡fG=Þ¹]„Æ  Ó,¯š¡p³ƒE¦²�çW,›i¬y¨ñi�_4è2@'¦ºXáf‹ŒBƒOa½‡jžu–- 5ݶ,@°t*ÿŽ:MáæH‹ŒÂÃùºØÖ:g!Ï¿ªÆjt3‚ €œ`Œv:\áæ ‹ŒB„Ï”¶•ê)k¯›Tÿ«Çó’@#Ø‘Ð^ŸV¸ñµn–µˆ(Lܦ Ÿák�)–…šç ºÁ‹qªknV´ˆ(T<¬‹ÍT3­µ~oÙ95/ô‚ &£,[ëfM‹ˆÂÅ3ºØRu¥µÆ¯T×ývÚÐ4@lÖQݬp3Ê"R9q{ÕùÖ\?Ô}ý‹oè5!h ¡Ó¬¢ºNáf;‹ˆÂF¿jwýx´5ÇÝþa=ˆ` “ -£ú³ÂÍ^…�¯êÂó,ê �Ïx¶­nw’@�"ØbÖ§:Ká&º^ …�“u±«5¾�çCª÷êöZuþt$‚  ü@áÆóŒê{MaäBËò|Ñês�êt;÷ô8‚  [죺Xáfi‹He!Ï-TOX>g«ÆèúÏ€` HÙ€8ì ºJáfy‹ˆÂÉ�ºxŸêÞÀ«¤ëì­šo€6B°¯@L|½˜nÖ°ˆTò|¿ê–A6{IJ¡g'àuh¬ºÑz–­u³¡E¤²�çÖ6ðBžR�Ð6·` @·ZUu½ÂÍ‹ˆ‚Ëk–-äyvåŸ|Ö´/êßwQ=o€ 1¨­ß€8 WMU¸ù„BÁo-¾�§.öÖãöÙÎ.×ÿßd€Al„è3 nç*$¬XY;&z¼ß7@†¢zÅI 7Ç +l½ä‹ 7穆 «l½f7Õ 7à Ð56€^ä3¥ùŒi« +l½Ê׸ñµnÖ3@ô6€^¶†êF…›- 5‚  ×-¯š¢p³ƒ¢E°ÀliÕÅ 7û J2þ�xšÂ ‹b@„6¼Þ7nÎRõ –´—ê2…›e ‚ §ºVáft<‚ Õ�²l­›5 ÐÑ6 ÎC�‡›QèX!Êô¶©61@ÇbPAЋžW�£:-I’[ ÐÑ6üWªš¦:Mu�Í«ˆÁ@ˆÔ€îv—êÕ 3 :!º‹‡õT´¬gæD�`èsUS, 3T˜yÂ]ƒ` ³¢!Vwª®²ì¼™+f^0@W"ØÁ¬hˆ�/»C5Õ² sµ‚̳è !˜<�êzÕu•ºJAæyô$‚ €L€vóp}¯êÆJݤš© ÓoÁ@zlÐJ/Yb¼|h™/ŽyƒBÌ‹@!è±AÑ<,?jYx¹§R ~V€ù‡�ÁP´§UÿT=^©.v¹àg˜¹@A6B0Ýsw{Ͳ5^¯9‹üìÛø cZžYìò©…¿cm@»0¼@ôX›@ô6¢G°=‚ €èlD�` zÑ#؈Á@ô6¢G°=‚ €èlD�` zÑ#؈Á@ô6¢G°=‚ €èlD�` zÑ#؈Á@ô6¢G°=‚ €èlD�` zÑ#؈Á@ô6¢G°=‚ €èlD�` zÑ#؈Á@ô6¢G°=‚ €èlD�` zÑ#؈Á@ô6¢G°=‚ €èlD�` zÑ#؈Á@ô6¢G°=‚ €èlD�` zÑ#؈Á@ô6¢G°=‚ €èlD�` zÑ#؈Á@ô6¢G°=‚ €èlD�` zÑ#؈Á@ô6¢G°=‚ €èlD�` zÑ#؈Á@ô6¢G°=‚ €èlD�` zÑ#؈Á@ô6¢G°=‚ €è 1  iš¯µM’$/P°ÄÚDoú§t±’ïoªYª UWëƒó¸µ�þ®­, Œ©êFÝÿk ؈©ã÷/%ÉIV¸ô…4Mfk§7#)¥¹mô¤i†FM9d”•Ê·ÕÚnîJ+.}×FGÌ5 '}7ž¨‹,Ôw÷†ºèµÞX³6]VÏó«Unc„em¹Z–¡�I„)IDAT…Euc�Í;+õqÿ}8îÖŹª_êÍÿ¨5‰îç˺8TµÚ"ÿü¼þýgºá³6å†ç©^6 ùߺ·ên…Œ£TK[1.Q½¯Æ6ë©®6µ%¥Ö‘M’5K©�:ªôÌì�gLx�€è´3ؤÖ~DöªÛn6´èúÛ[íP³ÐÚÚþó`På4-[û¼»¯l·Œœ6þG¢ÒËÓ=ûy87*l|Ìê·£åóA0¨R’´}¿”XòµQSÇ_1jÊ!o2…v6 :!T-§:_áæ;VŸ·Z>ë€A¥IÚ¶Ù_'IÆYR¾m£kÇó¹ í ín²(oD¡psªå÷’åÔ„@L[kÈ<»uä564l4_;ƒMŸu–Ï*Üšó:×Y>Ó ÀàÊIgôØ,”$Ë[éR†¥ÐÙb˜ÚôZÕü€í<(ý�jY«ßOnnI’dFàö¿RaKNó<�Wüö ÀàJi2ã³¶úG’¤÷[�äÍ–Mý^—Ä’·¥Iù÷úñ @=îS5²(îT¡36ºøî3 J1›�4ž ÝXÁÄàóÙÇö¶úœé³¥é>_©µ¡¶™«m÷²l*çZ-±Ïjû' @1’ô‚™c&ºù&ÓǯRNí£ M‡ªOh=ËI×ÙfäôñÍ=i²ÈEß'èâ«“¾k7ÑÅ_6}X÷5Öô¤fEËu.ŽvhרþŸ~|‹ê–ßZª†n¬ûšª‹ÍT³ªlâG”ÿWÛ�cjkÒP´ÛFOzrÖ˜I?Ÿ5vâúe+ï¢zÄrJÒä'̘ðv'†`S×z7 ÿVí§·V=hùLÐÑ¡à™�t?>|m”~ü¸eCÓ¾[¹Ü]µ±~7ÅtŒÙc&ÿé©¡}ë§Iîá¡Ë,U¶ïè8]¿Ž�÷àè⽪,ŸÜ�Ýת搜¨\ž¯b&4  õŸX{ÿq¯Î=ñKúq¯|×´O3K�§'Ö±Q¸ðwPý-ÇÕöT¯Í* ¥’¤µû¥™c&þFé3y®“Ìï;Ä@Géú›…*ø¸ú�Ö\E•«± N3GO:#µôìÐíµí'lÊ1L¾@ψዹ¡á&‹R¸¹[½0GéÇo^åÿT?©µ‘ns¬ÕöWÝÿ VÝçp]lªZQµ|¥ü߆Õ[6qÁ�ºßç­ºÏ�t±r�Í|Fš¿p]ŸjwOÕ6–Mìà·³‚êY˦ÖôË;U>|ïÏÖBzlkéâcªí,›º{%ÕªªWylÿPýFõ»j3æév¶ÔÅÐww·®ÿ/+æq/cÙó¹½eï…*õ–Ê&> ŸzÿnT]¦û¾ÜºDš»ÈAC&,5·;Ò¨õ÷}ÉFÙS»ÎÔûÕ 2bêø­K%½–i²•^Û•Ôs¥×2ñ×S¯súdºà}˜ø{ñŽ4I.}e©ò÷¿oRaû”wmtÄÜj¿ÓãßSGƒöÔs³¦‚ß ú;VÔß°œ^§éò½`þ¾¿BOÞùê%ËÓ{> õ®ùêðeÒW�þ7I“ô¶Ñ“�ú×6ºáà· ™×?øtá©Í›9zòµV€QÓÇHÏßnzÎ6L[)IµŸO’åõx&IÓgôú?­çú†$IOÑßw×@·1bÊø5JCÒu½£þ¾—gŽ=áfCMúLúgÑ¿#|»�Ê×µòóý…'<[©§,[³îR}ò�/Le†X©â—+U«?f_ãI˾üñÞ®ºLuy‘m”4ÜöÓsàç9ûPã5-k+y-§ò}Ñ3•Ë+,kw4¼Oªó1n¬ Ÿ�ÆÛpo¬\.SùµïoUÝ«Çw“$¤ÍZ™k°ÛðçqaÛc ËÚ¾¬‚ž×õÛ6\»�Á&tæ£Â‚MÅTŸµ°µgÞ­o]½@U×ÊÐïýM29€7zó.è¹ø}ù壪m-›!ôz×ëâÕYú[²úùs·sÀ6‡/rߟÒÅU#«l¿°1îüòi]Ç¿$ÎSýH�÷^kÝÏ®º8¬r¿ñ�Ëê•òPç_j'éz~dÿ;Lß}¡e_ ƒñûβèþýñ~ò÷Â`V­”{¿êP]÷ÕÊã�Ö ¾×ÒZR:sÐ�Òôi«}৪áéµ²žËäSzàË-øÇ$ÉüÂçÒœué�eó4M5mÂÍåDï�ÑÏ]ôözvÓó3èä:6p�5°¾S/Ð>ÓGzø¹xƒ}ç.[©Õ+ÿ?Võm]׃ƒïï¢ÏôcÖdº¿wèâëªOXÖH®fûïþÄguÝ·rý«tqŒk[ö'EÐßàáÍ¿×}ÄMµÏã[*õŸ}’®·`Ÿ¤¿½î}RŽÇø]|Ȳ6ÅÛ¯ã¡ÓCØyzŒçY�t;~S¶{³îçÉÅþm˜e“d}Ò²Ð\M[Ï-ïÚYѪñµgtq|Ž«|ÐÚLo¦�©ü�è<ŸÔ 8ÔTl¡:RõwÝÎdÕŠVŸà‚îcG•÷Üø"¦#-ÿ‚ø?Õ=º� UkX�t{ïQyÈô7Íyuop|NuŸnã k!ÝßûT¾có#¬µBM5ÖüKo¶në"Õ‹U©ðƒzRV:U½ φl›dG«ê²Ñµã×9mü¹%+=¨úì‚PS�Ķ-•íÒQSÇßï-¥vŽÞWl<ã�µ …ð_*_Æá�–ÿ;w!ÿ\ŒW=ªÛ:]µº5�nwíÊ7ŸÖ¿ŸêÛŸ˜}@u©nëfUÛÛ>yé1û�CïyùŠå?Èà/}ÙªÂ÷IºÍ•Uv}4Í,;Àj*ü5õ‘%¿ÕmÕþ–-‘àÁoë`í 6­?$û_gXx`jicaQ@*�æw–U(Â�ªt»ûZ~!Ï™nzÁ‰ØY¶&P£¼‡Èw²XÒ"àCwUSõ£÷ªÖÝkZáb§5–PéõóÐéK�1)•·9<„MQ­iMTi{ݪò‘ QL¨Õs=6®Ò½²‚±ÛÌÚ@o&_LJ �µâyWí/tÍX�Ãw®§[±ï-Nu½oîFä¢t}ïåðów†Yqü à6ݶõ i�çj´ëvK~¤O?új÷Í:º”ê|?÷LÕ΃ ùé[ô[zQ趉õåÚ?ŒœzС¥rú?GÇšã;jØþqÝ¿�_:Ï•’!ýAÏ¥á›,ýZé6…²z�`W{g�˜:~ë!>Œ/ynÎ =—ÿkÅš¬ Ó+Õ:ß‹©œ»êñšÕï®ÕýBt;tñ«¿‡¦–Ãu¬œÏÙ©|ˆ¾»1V¬3+½ Ñm|ß²^¿áV¼±ª[tï´&Ðíú9¼jòŽºi«ž 6¡'”®¦w)k¡ÊÐ+?É;ä< F|+gwsH÷YC!|Çí ðºŽjêzÞóv�5Ç‚/+ËNL¬ùP,ï=hÅì|~ÎΩ‘F×±©¦?-ÏÐ ‡NLü…¢ÀñÍ$)ýTGVú¬¹vYîq»ÄÒÝ‚ï'�ßjõœ_«jJe)IN9í âz±:]©ÿ=—›X¨è3úx|ǬòÝâ킢ȋóöÄÙº¿}¬º¾ŸKs‚ªéûÕ庿N Ê>£Y£&Nj$„êº_ÖÅ7­¹¼‡Ê‡•‡¾ú·óQ-En‰ž™îyyf+iõÉ•þfjU—ß/*³[ÄÀCSžó£¨ÅÂf¯jPžó”¼—f7k�}uŸ‡[$Ô¿Tè¬h ݵÍI/)~Þ´q9ìHYe¨Õ÷­E¼`Ô´·žcÅkê‘[=îÓGL™°‘u¹‘Ó&œ¬¿¶Ñá°548´­‡T…ÞSÛ” YÅ©ºßí¬ºžïO~h­ã3«ýÎZ+ô»²Ù o?7*÷>©2Dðhk�õ,›4"DèóêçurO]Ul’$iÖì æØv]k‘ʹ­<¡Û�t„~ :Á~i6ut>#ÜòÖ‚z*´c¬ü‘ºï=­­Ja½M<'±ôþ í’¤æ¾ÁÏ©ñ¡VÖj‰í¦t+?H–Õ«Ñ{nù\×6Ê+ÓbÁÐI~®*zH`-Þþº,ïkmï=J­ßŸ˜í¬û®¹üEòa½×1Zäk­ïë1®°]×whôr�Í9¶må SyB†O…ìkòø k%– �ú°eÓú†ø\àvõýyHõcËÖ\y{å1úïâö/” Y¨qhè†ú ¬‹�­>>í´Ÿç4Ó²5mZ¢2eg½_ þ˜ýñÞQù¹Þýþk›rXøkR�Må¶Ãöéàûo 'iúK«ç1¤>¶9�æ•Z:Ãê Ú×GNß²óõ¾Ñ�¨ô.=Þ¿êñ¿lõHl­y/;̺ÐSxƒ‚[Ý =¿�©nÐsûC!ô|úì†õL¦ãü»Ë×¹Ïê÷«Ð +纜iõó6ƒÏªYïz5_ñÙ9­5ŠjìÇï¶ì\‘—¬>~‚~ðh†ÊtÎyÖqñ%Þóçvø"m9?qß§¿;ðvÞØ-Ú¹ŽMP¨òó[*S4J·ù\ö%Ô�Ùè,Aôx< „Nm|˜þ†�Æêß}á©‹-;Êà.ßñv´áÍÚnl­™¬¾™ìÑíž0Àcô/¯?龿jY@û’…ñ^›¯WþΪ|zEËf!ÉÃÏ•ù‘ê6Ýþ?»=ŸªÓ�®ù˜ÙÍ­yN³|]À~²ë±ª™zÌÿ\ô•ax>Á�ï”ßx{>¹„Ï ´»µC’„pYr±—âBjÿ y·+­¨¯__l;9cIDATdÀ/áþ——þAžsRÕö?Ÿ[²_ßµõÄGý�7Їö•>’¤É¹†1•?ÕîkKmfš¤GÎ+%·Üµõ¤ÅóªCK}ÞýEý]ÁÃnôøæ&×xêm[žø°u=‡ûšDÁWHÓçõö:¶œ”ÿxû˜ÉK¬;å³ò•Ê}×ûï‹tØH;U‚Â)–�/Ôìäf.¾ ¥no]øTÁþ}¶–…ÙH×óïó£¶õá¬o·pÞ ö™ÍnX|álݧ¿½}à£>fáN³|�övðƒ{þ\ݬ¿ûuû¤ÊA;ßúù/y†~C×=%p-ÀЀá#‡vÑmÞ1Ð/}QyË^ßê¾�Óå!5nχ®×zy@ЧCn±ó^£ÂÛìy´3Ø„jÖäÎÆ!'è76¥i¸ÐÙ§õ†:j£íîÔâ[–5|ãÓOµbm²ZnåËáËzœ>SÝÙƧ�>£Æ6Þ³“gÚçõXª~ÉU‚Ž—Ÿ¨çkL´‚U¦…Ü&psæŸì½PYÎËg¶ñçã§f7m¿¥®_ÈJêMѤYÑÜtbONqWÚàúCW¸ËŽ["d«Q¿®¯ñb�j~>d¹9_¼uÓSìi[pîO6å¬‘ÓÆï£ pZÈíúš1>ãØì±“N¶¢é Ä̱“ªŽ#×cöEl½.÷óŒôŠýBï© 1ñé¼’@íMîx\wèŠÉ¼þ¯…_#�6Xi�;Þw¿ªm1{ô‰¾Ïüë¨)‡œ’–ú/Ð{¢¡™#{�T =ðà¯ÃîzÿN¯¶�~ç=½^¿¬L:»Ú*�槪màkÕX¶Øu¨ïëö¾Uí—•Ùa§zé¶}ê?'/d¶Æ |¨´®?Ù:“ôüqµ_êwþ:z]Y™À÷£¡çéø>i¿€íB†5úûä}ƒ½æ‹Òv‡V–«x× ›�ò©¯µíÓÖ<Þ»ä£�.kòýÔ­�CÑ‚%zâæYó¼¸]³¦f]\ÈQØ+CCÍ"B¦¶9šŸ§!ùÕ�P³(mïGÂj°…Æló) 㳄üï`¡fqÚÖ¿´vµüÁ»V{9´!7_5.Ï{AÛúŸ<³N}Þ:˜z.š9-|¨Fÿ€û‡¡¥!áÃ[ÒôèYc&}¡Z¨Yœ¶=]~𡥂_K…°´œ¤» j7s̤³Ó §Aûô4I>aé]3\zèÜþàõ¢ôü^=³¼Ò¸ÁBÍ¢fnsüCé›–­ëÝnÈ#ôsá ¸÷j§mýàWž!ŵ¾¯ò —Ûw°P³8më#<¼§)tÈu+Îÿ¬§G~·ÁBÍw�µ9|fØÐvæµf‡«œ32!Ó¡¡¡fwlSëàF½#<Ь¦ÇìáþìN 5®�_¡CÑšÙ«XZÕ­öæ€m~aù…Ìô2ABè»~C{w„…ÎA{·*ã€C‡õùž)–“®ãsÓç=9»jª ÛÑÂZOoŠ®sž…‡Ç�ë15k}„ªR b–&Í[ä7)'ákÌŸ?ðþ! ›¦[½ç* |Õrš5zò_”î¦O’‘¾�ç'³GOÊ=K’z�fèU ú[õâ5ý™àð�O„läçÑÌ+÷ïâ‹ÅZ³Gór©/Ý^ׯ÷<‚žR9·æ­�›ûp¡G-']Ç{è® Ü¼Vp �öÿ4Ýïé–“®ãkÁ„X[_Ï_èÐæzå=hx¬þ†Üû$]ÇÏ_ ïß µFÖ„œŸú”î7x½´EŒ Øæ]5~_ÏH‡+�æŸ�^^ÇÆ…6Úê= ;¯½-†4X]a9TƇ|hC†ä…¾Gé:Wúëèzþ¥üë€MW­Œ®æ£ænÝç1V¿X6Ô«¡³‘Ínp€�ÿ~"`;ï„>�-—¤ÍÛ7(Zº¹Ëô-±1cÂöº�Ú_piúü«éÐñV§™£'�¡`Ê“do+€Ÿ¸þôÐ!yÏ]û=æãõÙ 9òè=yÆþw¬�gì¿‚ÞaCL;¸2ì0·Û¶šü¸n€õk„®,ÿë‡ä†önlPY˜{ •uØBBØóÖÀ,§ú;}¨ëu�›‡>­ ÷½÷P-®2#´·³Öw¢ORP«·“åT™âû›Ö:@ž·ÝŽžŸf-XÛí 6Acëm  =*û¼µ€ï<ýþõLèíUz-®W­°ù²ëÙ„!÷Æf£kÆ„†·ÁÂXèXó#­z=¼QÚ²à*ƒü.t¶™º• @ö˜C×mªÜÔYÑÒ�ÅV¸ÿ}“–¶V*‡½–i)ùù}Û›w8Âë$i)hÜ}RN y-6~òØû�kh–@5òÃz:Ó¦NÒÑ2I¹/¨·LÏí}³ÆLú½5àåÕÓÓìüQ .ä3êßgu7˜�ö·>Ù¹�›WûŒ†~7L¬cxÓ⾸]³¿òôÈ£¿»Ñ™KC&opƒ¾zÿhÇÝh�üàte¡ÏÐ)¾CGª„ð÷n'Ø íœ<`ŽeóƒJ/hIo‚Â0•ÙÂB=nÐßä'Êûßå]¥>£Õú–�¡lŠÖ�#ä³ó„¯*B?ô>ûƬ*¿ Yëæ=Ö"1ônÿã·ì9 Y¿èI=æ†>>«Ï�¶kyò”ú ³Úßi¥¤yëØèUZ/pÃjû†�!ÞëôÕQÓ&ä†öz�»ÇÄFÚ”#†äâ´¸ùiîa.‹óómFM�0Y�éMƒm§÷ú†kMù¿amsF³Ö3k‰’•ÂÖÞJ?!ûþwNš3rú„3ôÎs¢yOÑw¥Ô\;`Ó«õ,bf¾“,l(bµýmèÚv?³éïý‹žŸA­VïÀ&¾¶Kå@Y3ä鑚He0ú;ÎÕßs¢~¬uPëÝ6 RUU–|ðïoÇùDIyÖЩÕi�çyßäÎ…¦ˆa(Z³ãZ9¶ý»u_ Wµ·êÇ*ŸÖÙ§Nöi÷¼Ë܇å 5Aw°Í߬A•qœ!G�ÜñVzžB†ÖÝb¨Ìêvuèæýceñ¯�óœnµøtç–½WjÙ Æ�¿¶Qþiâþ+Y+d«´Ê¾AGÞ;pvªdèˆÒS eMS»£ÞaRKÜV’þ%d»7Úð �Øá6ÙHŸµ›­i¶(1ª =߬�×£rGȺNÕ†+†œÏ⽊:ûçÀí¶²æ =puW²Ø´Û ¸,p»Böï~«jÕ!ª_¨¦«þmÙ4Ð~ÓÃpÑ‹‡››ô¼æ:õ¡S´³Ç¦fo�ÓÛÐÑÅAlšcÛ†ë�¨œ'ãó“�µ,Åyp! É�s7Bxã©ÖúAÕŽL„ŒCu¡c‰Co+dŠÇj;•À+rúe¦¸eÀvk©ž´“$iÓ†¢éUÚ(äkU=.îò¬]ÓJIZZÓ‘¤…½ÿôùû¯ö,}}…­h íÃß²ìÒìm&Ý`xfHßu+Ï‹î@k+…ôÖ¸"÷·~[¬±MµóhB¾Ó‚gl àßg!çU4¶?\h¼èïñOlW×>Iû?xéçÊxûs¤…O5žGQ#BC^lja›f =yëÅÊZ -W9‘pË>h­šrz0!;š¢ŽœÌ Ø¦Ú8ôÜ© ©Tý;p»j�9ôdõÐû ú÷·|f´eò·&ØxêA;¨ 2]§•“d‰“à}½ëÐFeRJó¬ë´¤4)ìýWNì_¥€WP¯rG¾ÿò™ŒBûû¢ ™ŸµÒÔñ/黫¾7:Q;ö·A·å K/zžLŽ™)[þX-ß:qy…6ÐÛñ=¼OÒëç`½ ç³Þ½ßÚ/t¤C!½•íÐÎ`ãS¤.Uk£fœc£Ûô•{C{l®±Óãóá"¾>ÄfV _T2d�ZB'h•j�'tîv„„jÏOhws;sP#¿(ib¥�7Z³Î±)Y)tv:}Vû—8¢;dÎüeÃþ‚ÖKÓ�”ÒÂÞÚ«ÿ+l�’´ôý× ©%Ãjþ©IÁ½¢É‚J°Xèþ¶È×$ô³ã¯Ù¢C±ÛñÝ�ç±6Kh[¢c¿Õ–ó °â O9Þh/Oh{ú~‹T;ϱ©j\3&°¬$Ô4k!}þϲó5Š 5ÞÛôië-!c™]‘ ¦Ð0U­}ºXl‘ãmCW[nÕtç è}Ðg¾=6ë]óÕá:º´�¢>«¯Ý>öÄëÿ÷¡Ã焾–­—& %®¤œöþ+[9èý—–^40IË-;ˆ’6¢Óšû$½›C÷!AKC?ß½¨ûÛ á÷¶ä÷W'7„~×Ö#ô3׎ïñA'ÐwÛT~ÐëV\¨ñ…G§lWëy m÷G»VÏ EÓ›Íg¼È³jnËNžÒcóÙ‘‚WÍ à‹dúƒÐsNºE芸ÁSú¨u>P-¡G�Úñ˜‹ìê¯I�Ⱦ&®½9¨eú_ó5Ÿ‚¾ÜtÐeÀ #nÝô”çGM›`îV�g-T¶þ+­y¦Á®E=cAï¿’•œH$)—RKZ“mJ–cÁÖ(=]ë-­ÌYägÛ{‰VîÌ~ÎЩû[½ ’×õéÿ_VÛ d„K×7TÑŽ¿»êäF•¡ƒ~®\èy³µ<`Ù"â¿Ómÿ*`û¢:æY¤zñ›Ã,üŒûõfú«µ€Þ°¶ÆB�O‡ê½KÞpñ±‘7-œŽP·½±õ–Ð`SÔŽÇÍz4ˆÐ/Úv<æNøòZB’¤…žÈ²Ñ ¿%}-ýrhŸFÙÒßVû�¯¯Ïßà'˜ª±2sì¤#,"IZàû/ œ)¬¿4p°)•_N:RFÌúòr³GÓБåÔÒ Ûz˜O׺¶~¿âú7¸Ò=›Ÿºÿªj£kǯ“ÌÑ£òìogX1BÞïÕöµ>ÛÙZ6¸^ýnhÇß=ج­>›Y#�ÉOø“eáÈÛq÷,ò»�¶kÏÏè©`£Æ†¯%àGdC±ÆIMz\+èâ7–ßÅ–™Û«=®XÕzˆž‹gõœ†lZäcc·ð�ùôË��yk+ÎØ��’¤¸Æ;YßkéÑ¡“¸ùåþªë U¦,<Ø$ÉÈ5®;t™F»l­¤°é]“ÀÏ_RªÒx*¥ÏYíïðäå~_+§±!3i²aCÍ…Ôž ¹þÒ¯öùsòkPß¼d4Í›Aý3p;ßßþ¤}ûJº9ÀøÏAþ}-ÜV~¢ºö=E¬ùúÝú<Ö#´;v¬'ô{|À}’žo_~ÀòñçÐ’ùR·%LH³ˆ·Xm­<Ϲ#ŰŽM!|ºM]­›°ˆ†} ä³e„ž„ç3çø¸Í•ôø°ê„¡Æ�´Þ²ÞËzEôfé6|��u7¬¹2]çHÝß»¬A• *B¦¬,r*ÍŽ5rÚøÃj‚WXÖüÓ[ÏEß,7Y€çÎÿˆÅ$±•GN?h;kÐ&׸f°šºÞ§/Í=qÀ“XKÃæ>¹/e#IDATgÒþþ†?ãIøÊïUn �¶Ý‚©`‹Ýjá­¤ïÌ…ë¾Õ²keV«F…L!ìªM÷´?‘�Yƒ|V6]l°©,¸Ãš'4š×cÞѤÛð©«·ØÔ÷û÷VùÝ!ÎÛ£Ò{q5Õ¡ª³j„·‘ÕÖó‡4z"Øè ësÖ{wržÙ$Î.hÅá¡çü\¥z§×�TÏX¸Zsçw£Ð9ý¿a�;<ǶƒM Þ‡Y㾸]Þƒ ó‰C¶K š<`äÔñßN,92Ïuú­ï˜Á~ŸZùr  0•ç|¿ù:k¥r)ô½Sý&æ÷–„|ÿ$6ÍÏ‚èW·nzJФ¥þÆzf7ž1á=z kYôŽΤçäcL9 d¡Þª6šrЦz_mc¨%äüYú“g²¡jBGŠT[;$h"_±Æja“;]Þ¤É�ʳÿª5îëÖ&ž¡¿{‰Ç¦v殾¾Í^º�íUÁ éêö}ªè�i¦é±±.§7ƒ÷†Ì¶ü Ie- Ç÷f³ /M?ÑØ{hrÍTQé‘èÀUЛ.tšî=õÕ}4V×õ¡ yŽºÖh=±ûSºßº_S]wœ.B�p…~¡¦diKŽ8�¸ö o5uü%úL}7×S;ÿŽ1Çß=Ø&óËåZ½¨ (Pm9rÚ„Ý­N#f¼ù�9éêqºlÄ´ƒBˆm˜7šGM?¨îž¦QS•dûåÚ÷•>+¥zÎjÉÖ·ü§¬¥rã ÛÛFOz2M«å}�¡¥¾ÉV¯Ô’¾RrŠ!DèÄ@ß®L:T]÷›Öþðs«}LU…,Vî=úŸµ:Uz-¾¸y³'VÊó=0F�½îÞ*]×Ï­Ù/pójM7·0_ÔwN=§ì¸=6Ö¥¼Á©òF™��Í;à÷ôÆ»ËZ#4pMZ8@NùmÝ#Ï4ÝgTÆ@ç¢ë¬¢‹_[>U�¦èõõFZÈɘ¾ã:Ó§”´œt?ßê—�›ÿK�©�•Ðó(7yª+ŸÒyäÔƒ-Íz—žôr]9µçæKÆ×ÚlÁ0µ4ì‹_¿ÜhúÁ#,§�gì¿B©?=7»�d»’•®5uÂm#¦�š®ºi¹4ùÝÓykÞë½ç–Ï-Ÿ&å_ëyï Ù¾œ&—ºAšÔ\^Alõ‘ÓÚÃê0⚃×K²¡Â�KÂ\øk9bú„º§ ¸ßÒõ71„¸4p;ßφî3_§2Lùû�›OÑþvÀ^ÈÊ¿‡ø:F÷ûNË©2äîl³àI'.¶Î2±rÊA.ºŽ÷Êù~4hŸdÕG1¬eôZg9é1®eáû!zl¬‹èÅÿ€êHÕ-–¥êm-??yë;Ö:¡�ƒ,'=~¤rWëAz }f¡ÐÐá3˜\£ç+xZlm»¾eãžóöÖÚS¸¡êºÊb³A´­�ÏõóB»Ë`�-xîçtxcQ=4¿Y¦ÿÕÇ’¤ôS½Ir‡Y5µ?wÇûNš ¨œ”dA’e‡¨‡gãiŸ ²Éôñôõ¹m‰!R‰�*¥Éùú;ÿ6rú„/¬û·ñ¡kgäâaa©rÿM#¦Ló½À3&¼}þKKß ë†^gúìm&:†?-Õ6Ù†Éñê)Êu @!lÙR¹®í@ú­tbè¶¥ÔNUHÉ3Ñ��š6áèܽ�=LÏ•¯ñvzàæ;kÿyYe*ß ÚÖšä9Àö½¿Ýûº)×ëþƒ×ÂÓ¶>œÕÛL[^å—zþµæÊÛ@_ͲïÄàýh%ùy¤¡×¹V÷mU~2$8Ï)‹ú­!X;ƒMÐT­i–ÑðóÞcõñ…°Zž Ü.×Ð#=~òèÏ­·ý4ǶTôaªª9èwËWVö¡HkYÁ´Óœhá3Íø,÷èñ|MUuq¶Êba>•øíjþ©Ç2ÉÚ IÒÐ#gG¨1—†T:¿ï!o,êÆ÷Ô=7N¥Ì)3ÇN>?tûÙc&_�Z6U¬BV_šÌðž$Ÿ)­ÚfÞK¢^™£Êeõî%ÉšƒÜÞºê÷:y¹Çí‘S'qÙw‘¬Q*Ùíþx¼'¦ÚvL9à Z‡-U¶‡u�õ-�BËѵ¶ºì«a½ I²ª%ýWøc ÙÞ‡)ÎyéËtÍ�“‰ƒ,¾˜¦¡½ÞssŒÂÍ5#¦8è¾ããÇ�œ:Þ`è"üW­0±(Ÿ4ã^íK÷l#?@¦ò?"t´Èz�º¯Ðï}xõUÆÚܨÇ1¹2ܽ*ýÞ{ }˜ä{-ÜÖ™üûm¶þ¦ 6¢Á¿/U¾_ô¿;øàŒ vnåVÛŠ•á~A*ßÝYq ¶÷„vN÷Úxi¥Oµp€… Üî3zƒŸ¨Ç÷à`i?já Ò�Z�Ós5Sχä™~ч x¸ñ.ùYª¿«†Z6ñ„ïø[1Û�?†Ð£»Þöž�oé1ûôä>ûÒC–=fïÍñb=3-}Ëð (}¾üâÁ–SÙJ‡÷YvÔ6I–Wcö§+Ï›ÿý•§�¿Rwª†LúPj%[¿‰z:ÞciyGˆ:ˆZ·÷æ4)teî�îäý/ûÆÈ©~­ÇøúýSj«Wfú ]Ñ;»ZšÞ3kë‰5‡ºd‹¡Ž?S¢öy4I²éPëû›çQO/Õ÷‹�¦ÙöaŠKÏõ3zÆ�¬7&µäh½vÁÃý,åü[p|=µ?¨çéaýÛ–¤«¥IºvRÖs[NÖaT}}üû^ïµS-üü Êûk]Çšùb‰>»Ú#–õ’øþÖ_ÛzÎuûfàvß¶|ßg>9É�• u£Ê{Yü<]ŸPÉôÒò¾Ï½òˆu6ŸàÄøù¨�ÅÛL««t€+÷~ñ>ýÝä÷ÿ°0?ªÜÿ ôØ}Hñ –õD!‡vŸM£“†Â}¡Æ›¶)|¡7°O›XëCækÝܦmýˆ�7ÖÿêóÕWŽÔû*šäG”ü“«Ñå>¯òó¥ò,VçÏ_Ý'`ÖP³ ¢×õ$½®Ló|�ùû§¨Çì³Ý´jªó%¥IÒI 5…šûæ ²íCï?#÷ú·�9aºzŒüË)G(Jü3½³žƒ�4m­~f��”gÖ¾º 8]v^Ï·¯¾~^K)ý¥÷A,è¹1›¸Ò¼þ¬¡×Ð{–üàå-zMLg¯óÓ¼-çù‚í¡Ãm€ÇÚÓÚl:)Ô¨7W;‡méˆcÐÌ;~då{•²4-üýÛu_“z]Ðót„µh–»ùÉξâðÊÖZ~Ô©îYºº�>bw”†¤ÛÝõþãêm}˽ö•þ—†�ñó_¬¥ÒWÒ!¥¸ÖÉqirü̱ƒ×Oš¹õä©êµ¹>ϰ±Ä§ñM’ÿîs“ä¿¿i²yCûö:¯œî©î™¶PŸiTßþ9ñs&ó+‚Þ·–÷ÀƒOmì å¶zxÒËff�hAáÂøäMµöIÞ+v¼*äÀÈV•jF;®GCµTÏ,ÐY…÷”|Ä��[{µå\†teÒ×ëûC _à¬Ù‚žãÊäuÍäÔ �龟7xÏÁÕ/K·¼m«É�[nÝô”y––võÕ¬…ÊIéS³·:!ô(bGð¦çÓr¯ÓÔ_êÛ[탗-’Õ%õ9CÇÐ>χçíi”Ÿ“±ë@k¢ FÛûùÉ>LéYk­Ïé¾ï±Öé”öˆ÷¨|½ÖFznüí3¬ýš¹¶PÚlÚý¦õ®ß�õf¼ÐÚL�ÁODÏsc^AkjXë�Vµ’¯¤ÜÌ�²�›}Ú ¤÷…¿n¾æLÐB„ ò0³…îóFk»´­=‡j\ÏQ¨ùò¬Ñ“ÆÝÿ¾I¹g#ÈÌmŽ(íëß\·r‚iCt/•7{ô „^'Ò´?NÓróizÿ¼´›‡¶©cÈßÖÇû8ú"Rl mÊiz€5Kj•­Üé³víû|h�¿‡ZÑ6y@µ¹î3h†ÅÅUf$óõ×BÏÑm„)_PòLëLÍœ4ã!Õ69z©|B‚f�§íûÅ�åš2fLÚlÚÕxñ�/tô>½Yÿn¢2Åô+ž¯dü…Àm[=ì©eôüúÑ-»Zt¸ñ/Áƒtû¾C yOçzßëvý|*_q¸î¡Pü3±Y;Ö¬ˆG[ö é‚Aéo“´oýYc&[mÅûzÍÚúÄûtïÕ=5m�,?¨?éÛlö艡³'å2kìäãR+Bw²X`8…šùÃJ[ݵÍIu¿Yc'ú‰Â{¥±\F“ò×jo™ïÈû챓NÖUµ‚é=p{yèÜÍKZ}D?zÚõü̲—çXóørïmô|]ß'.ØTu§5�TÛ®Î%[B�íXËÎ*vŸ”…š­*Ó‚‡>–¬˜s™âçO‡|G¯b=®—†¢yhØ]o¼·©|öŽë®ÓcòÙTΰâxãÆ»¬C§”žÿ=Fz~ýyðps®çeÞ¹r¤/TîÆre˜„Oaþ;+ž¯ã°iåK²#¤Mt\ãŸWcp²‚ë)Ð|Â{W¬Ifo3é±¾åæxP-|ø«ž´Ÿ=_~qä‚i…ó^w~_p˜œ5fòou_ÔóVÈ‘IÝÖyjB×ÌÌ1“ø‰·zM­z'ÞÛŸôo¦Ç01OãÌÑ“ŽWÏÍ'õ$„žþòÒ¶Õì-öo=œž?‰¸Úþɲ‡/ûQ=ºr ­a•ߟ4c8ûŸ- `M9HR_XT�Ñ×yñÉv´bœ§z¿n7t¦³ÿ¨ ôÉ>r_wûU&· ÎÜÕí¸Ýl|Ý"ôN ªà5(ÚE�ÑgÞØMõW«ŸÏô³·nkœêå;Ñm¬Ëy¸I¬eb£-|“Åù‘!?J´®nkÑ)iCNœkuÐý<¤ò÷…¡Ë³è[5¿·ìs±o½Ã!šE�§éû¥Ô׬JÓ?ªáºÏ̱“Þ¤@3^�â¿Y øź¯­\z‡¢g7Úà۸6)¥£f�™¸=øòØàŽ# WõÙ½^ZÝÖS£â;ªzïóoý–ŒÑãÞ£ˆP³�žÛKúûæûs;QÏÎ<«ƒÞÿðÞ”çÓFÝ1æ¤GõZ5­Q=7ç¼4,]Ç|j×4 ZßmIé]Ê1›ë}¼ï"Ã'kOg›X/ž^“ÏR¦Úܲ٩n·Æø>ß~½]·yXÑ'ß{/�j‚e3jy¯e£m½GÉG´ì¤jZïr€¼£|�Q_ÛÍ—*¨÷9öï€1º­=T¡ëÉ ôX|Ï*_‹ëE«Ÿ�¸YK·÷‹Êÿ‡ôh¯ }òëamÅÞø JIDATËî_ˆM¸ß�øØU?Ùën½š~n‚/Øha)zË€Y5¿mŸåÇg¨ÚŲ�V-P�¥ûùý·å벬^ãú¯èº;ZõÇã�`=Üôʹ! Ñ}dµ‡ÆýE÷u½5v?>¥¢ÿÍþo8ȦÞx»Â²£XTz½oD¼dµy·þåÖ ÝŸ¯C0®R~¤ªÖ K~ôÈ�¼ù‚†¾\ÓÏõ¨×¨�UCr¬ïÉrb÷”úK4³W&¯M¦�_E ü¨yÇ$Yðz¾u°íý$ymw«~øK’^tû˜É�6¼|ÍU—* ©9dU¡áˆÅÿÍçœÿÒ°�joþ!¥¬í“AÖÍñaRúýEêMø³n+×þ°£¦²–•ʻ获ÔãóYˆÞZã*—¤IùœY£'Ÿµè?n4ýàC²)Ø«Kí•™c'þÄàï…rê=NÉNºÁmõ9lAÑ»õ|þ©œ–/¼}̉7,>träÔ õ\�·A²]¥`9Î" }žOÕ2¬ú9=oÇ[At¿ÞNñ£à>%´?W~P¬ÖA,?hæûZßç^ÝÊ Yôx}(ÒÂïÌo«qo¿øˆ¼WÑ{_YO¯æÚ<º¯¹�·XÀysº�#¸®·ËüóºC¥ûùâ¶ÞKw‰nëZ+XeÁo_øÝGÏìpoÃúAøó*iÑÛò°ýã€Û8¯Ú¤X•ç&dìÑ~`Ü"Ä,ø jf°à~ÞºHùNÞ_??¢ò n;ªÙ�:‘žãáºXײéåaÆ�à<¸p®ùA®ë_|³­¶ *“Eªò%à Ä­Y¹ô£v/¬Ê,kˆÀ׺âRsÒ·«A¾šBÌ:–”¬·òXbÉß[Õ³T¯Óz‡%¥µï,§ÃË¥Òƒêäüûüþô¾»¶9)$ü7Í»¦|iåe“ùï(—Òu’´¼–ZösÌJO©wæ_åÒü›oßúäŽ:/Ń™‚Ö;Tz>“•ÓÄèL²ìœ{½çoÐëN¡Þ7ƒ7¤ÒôõX~Ò�‹ö·îoýg_{ƒÔ ÝŸtДÈz¬~ÐË«‡ ïôuÚü{á!Õ#�ôLÄBÏ�ŸûÁÀwšOõž-¼íÃÖ|ÑÍ–î“*¡ÏÛpþ�í?{õ�(ïï´1"Ø4¨UÁ�Mï?’xrÀ¦ËvÒ—€.”Z¢`ó¬g/?Øfê:lö؉?4è½¾Ž z„‚Çþ•™f éb¾‹P`“k\sÄÔñ{Z“Œœ:aËZ¡f�>»Í ‹lÚëUçI¡h”��5öñ¦Sôó»­`ºÍ ,Ç[KGÏ. 5Òù¥sJIò›QSÇÅš IÒ/…l7t™×:G: Á¦qµgžÉ4sT¡Ðáüºò¿>eò]ú·}¬X'nwžèi#§�?RÑc‹ÿ“$?Q¸™â“XAFLŸðÝîGjo™þ©Öy:‚MãÖ Ü®�u �›Ïn´êbÿvZº`ªß=- ÑmL´lö™Z|–¾k @ÏòÿKÝ?&ÉØ4Mf)ð4|Àe£i‡¼»TN/Ù¶œ”:u%y¨“ B�ÖÑ•¹ÑÛæT]|Ö÷ªn'd�H¯�Ç8¦Æf>õ²/|õ;½FOZøm{Xòž Ð©R?¯Û?Åô¤QSy“•úïÔ×îjÕ¶Y°~NÉÎNËéųÇNša9Œ˜:~ÿR¶ û2µ¶Õþë±YcVZÓ’#:n¡jhÁ¦ íø}MŸßÜ׆ù?_k€m|8AÈLg—éú!ç`  zm|!Ë›-Ÿ®Ù×àñsa|ÚNïeói’ýs²J¥¼—g ;§f!¿�·1qлÔ#s±zk>|…4}>µäj+¥W'iò×r_òôÜ¡óŸºgóŸqíÞœ¤}«$ó‡¬fIyÇÔlÝvÈZgÙMk6kÌD†Æè:›¨QYÃZÖ~Gj€ÞVNÓ—’öGTOÍ3¥¾”9t-&XŒŽö廓ý­8¿RÃö CËT†|í¤ºÛÚk†ËW @O›=vÒ9J_³¶K÷¼m«É�t)†¢-B¡ÆOêôójV°b<«¥Æí#†–Óëù&]œ«ÚÎZïZˆ ½d #¦�ÿT’Ú‰Ú/„ a.Œzj^LÛuö艬¥ «ÑcózÿcÅ…÷QBMûè¹Nµ½~Ü[õ/k�ß«Æj,jö˜IgÎ-õ½+µô÷Ö:w—ËåÍ5z=6‹ÑQþ�tq²j+«Ÿ…ÚM Û?:‚^W?OꛪCUì9ž³lB‰SôÚ§Ul2}ü˜ryAï͆Ö©Om6iÞJ+}å®�Ž˜kÐ6U¨!üËf±y£åsŸjw}YÍ2t½®o×ÅTŸR­nÅx@u‚eçS½`hä´ƒöÐWñ>‰%´‚x��Ž­ütæèÉ×ô‚Í ÔöuK>aÙ"Œ£Uodó‡-;R”! z}ýܪækÞŒ°|!Ö×¼™ªR"™fЀ‘׺z:¯O})¿/IÓQ–$ë„_;}Eÿ¹9M“éýÉüSïsÒ£=ˆ`“ƒÂëb]Õ[- 9>Û™�ÌRãö߆¨éõ]Û²)¢ýµnYÐñË¥*›¼¦ºIu£^ï— šä=·|nÙ¹/ Yê²RÚ_®�áiboLR[&Iì…²¥ÏªkæYýüج1“n3Á@ü˜ @ô6¢G°=‚ €èlD�` zÑ#؈Á@ô6¢G°=‚ €èlD�` zÑ#؈Á@ô6¢G°=‚ €èlD�` zÑ#؈Á@ô6¢G°=‚ €èlD�` zÿÿÿßœ7IDATƒ~óíöËZIEND®B`‚python-django-debug-toolbar-8.0.0/docs/_static/brand/Wordmark-Stacked-Coloured-Light.svg000066400000000000000000000211201524561404200311710ustar00rootroot00000000000000 python-django-debug-toolbar-8.0.0/docs/_static/brand/Wordmark-Stacked-White.png000066400000000000000000000603761524561404200274350ustar00rootroot00000000000000‰PNG  IHDR6F‰4IDATxœìÝ ¼msýÿñÏù#CI)%‘‰h¸ % ý® ‰THüHEóH¥RŠJ*•HEDB„Ì×TDWn!S(R’9Îÿý¾k�_ÇuöÙßµ÷ÚÃwí×óñø<ö¹÷¬=œ=¬½Þk}×çûÿ2÷ÿ2G°�=‚ €ìld�` {Ù#ØÈÁ@ö6²G°�=‚ €ìld�` {Ù#ØÈÁ@ö6²G°�=‚ €ìld�` {Ù#ØÈÁ@ö6²G°�=‚ €ìld�` { ´1>>¾Ÿ.ÞÿV=¨z ¼œÿçûËeînSÿPÝ266v}ÐÀdOˆ)ûâÕ_&Õ-ååMªë~þt‰` ÃVÑ�§–õ¢©~©ðã#B7W©þ0éò� = 6R<@ï,¬zAY�¢Ðó']ü^õÕeªKvnæC°�‚#6”•ÊÚrâ?v<”í·“Ka禌4‚ 7Ë”µÙÄ”aç,Õ™¾Tй1#…`h�íËrй6Š 3/ì0| š�` çØ 7+–µ“ÿ¡ s¥.NT«�óÛ4ãæ¤`]�ܹ1Á'U¿ñÑÕWTk 1ØXŒšTS]¤psƒêkª—«Æ�-‚ `”=Kõ!Õù*‡œ½TÏ @v6–S}B5WáæÕûTK k Õ7U·)Üœ zƒêqZtE µ…T›GÑNú ÕƒJ±`z§¨Ö»+C‹`@k‡ª6S¨¹?C�`ÀÔöP ÙQŵ�αàÑdvR 94Ù Øð_röz…šS�‚ 7˜¥Psi²C° âæ(BÍÜd‰`us¢5· [tEŒ²sUkj À¨:Aµ¡BÍÝÈÁ0ŠRm©PóP�`%ãªÝhvQ� 1h«¶U 9&�C°Œ‚{U[(Ôœ€Fb(€ ÙAÎîP­›c¨ß"I6RŒ�§Tk(Ôü62¢@³˜êýx¼.â`Z@S]®ZS¡æ†ÈˆBÌRº8_µ^ù_[«®Ðÿ¯€–6€&ò°³ujn�Œ(¼¬¨‹KT3çû•ÿÿRýþݘÁÐ4îz¶±Bͽ‘…‡™‹UË·XdÕAZî8Õð(@“|E�fkÕÑ•YQ ?[2añש.ÓuV Àÿ!ØšÀ�û<éæ®‘”ítqªªJƒ€ç¨.Ñu7 À<@îRm©PsPdFÁäº8\µ@Tçáh'ê6>‚ kw«6T¨9!2¢02¦:P?îÝñ÷ø—u[G« a) `øÜ¦z¹B͹‘Ÿ£U;G}¶R�§p³tÀˆ"ØHÁºÃfnsÔü>2¢à±¸êýøÆ¨ßª‹uûÏ Al¬rs©ê¥ 57GFÊ£)³UkGï,§ºP÷µzÀˆ!ØrrŠj]…š»"# +G1ñæjÑ{O‰bXÚ«FÁ�‹CU›)ÔÜQÀð±‹TËFÿ<^õ Ý÷›FÁ@ š`Ð>§@³£*«÷¢‚Åktñ+ÕÑ ªŽÔcø`ÀX0 =v‚`PdvR 942£@±ƒ.ŽÁ~¾îVÐz¿Ð`l¬†•‡œm–i¨ù¬.‰áùžÝ[�i·€㈠`¹9À,…šK## 2>J³C ‡›àÈ €¦"؆�Û8;ÔÌ�Œx¸—.~¦Ú$†á@c1 0LæD1ñfn¡ÆÍ΋á5n¶h‚ `XÌ›¼R¡æ¶ÈˆB‚Û8»�ó‘�Ãô¸7h‚ `œ Ú@¡æîȈÂ�'ÜôÄ›+G^P£ÇÿŠ€† Øí Õ– 5DF ÖŽâ(ÓÒ‘§Ç©NÖßñü€ Øi7š]Tã‘…�-tq¶jñÈ›ÿiú{ž�9‚ `Vm¯@óåÈŒBÀκ8Nµp4ƒC��Ü,�1‚  ßîUm¬PsDdFÿ{éâ@ÕX4ËLÕQ#ØúévÕ: 5gDFhP®?͵¹þÆÏdŠ`è—¢˜£æòȈ6öÓÅ©ªí¢ùö  4€\lýà0ãPsCdDùKêâ|Õ¬G•m¬ +@¯yØ™‡ŸÝÑÆýòº¸8ŠóOF‰›_©€ll½tL�î�ŒLšxsÅMÏQ}? #@¯|E�fkÕÑ…šõ¢˜xs©m[ë¹Ø1 @Ý<Ù¦'ÝÜ52£ ù­tqzä?ñf]Ðs²j@6€:=¤ÚR¡æ ÈL9ñæÑª…QÇù6r@°ÔånÕ† 5'Df´áþÕ(&ÞÄc=WµoÀ�#Øêp›jm…šs## 4 ©|”æ#�é¼[ÏÓ«†ÁЭk£˜£fNd¤^åói¶ ¤ø‘ž³' )‚  —ªÖR¨¹92¢ tw<óÄ›ëR-£ÊîÜ)£ƒ`èÔ)ªuj(ÔxnÏQ3joÖáÍzþ^0„6€N¡ÚL¡æþȈ6Êf.V-èÔ6Cˆ`¨êó 4Û«‰Œ(ÔÌŠbøÙ’�ªÜñnÕŠzÝ· B idvÒ†í¡‘…šítñÕ�*æªP}_¯û=CŒ`Há!g¯×Æí)‘…šÝt±w •ìɪýõzŸ� ‚  �»T³´‘{idD�fLßRíHñO•�Æ}S¯õ ™!ئã6Î5s## 5 ëâ'ª-íxþ!7û�^çû2E°�"«“ÄQŸh¿•6vo�Œ”“Hz(Õ:�VV�Åp³³€` G˸ê=ÚàÍn2F…š¥uq†jµÀTþ£ú©jW½¾74Á0Ùªm´Ñ{BdF¡få(BͲ�ùý]õÝ(Ο¹- �6€ ž«d#møÎŽÌ(Ô¬E¨Y"0ÙUªýT?Ìm2U¨Š`0ïÅw“€9‘…šMtñ3Õ"óPB·åþ†^ÏÓFÁàŽg57GfjvÐÅÁÁy`æ 4S}M¯åu#†`£ÍsÓ8ÔÜ™Q¨ù¬.öxηkþ®^ÇŒ(‚ Œ.Wz}nç^(ÐøèŒ�Òì£íתo¨ŽÓkHKv#�`£É3Ìï”Û±B�Ï£ñù4›Ähz0ЉG÷ÑkweþÁFÏÚ(þ\dF¡ÆÏÜùl�=·«¾­:@¯Ýßð>:ã£4‡Ffj<7�CÍÊ1Z~E»æ#ôº=€–60|�ϧ9%2£P³Z¡fé  'FÑ®ùœ$!Ø@ó¹ã™;Ÿ]™Q¨Y[¿T-ÍçŽf>šæ@sC*!Ø@³yn‡š¹‘…š-¢8Q~áh¶kUû«¾§×éžt„`Í5'ŠPs[d¦œxó{ª±h®³£h×|¢^£ñt…`Í4[µ‘6˜ïŽÌ(Ô|QŸŒfò¹N?Ví«×æªÔ†`Ís‚jm8?Q Y@?PmÍs«ê Õ·ôºÜ€Úl Y¼ñüžÜ†6•oºجh–ßD1Üì'zM @Ïl 9>¡�ç/Efj–Œ¢óYS&Þ|Xuœj?½¿@_l Þ�~«6¢�ˆÌ(Ô,¯‹3U+FþþEï뵸%}E°€¼Ý«ÚBÒgDfʉ7Ýl©È›[iSõ}½÷` þ_@{�†Ñ?Tëfj6ˆ¢s[ΡætÕfzþWQH¨iM¯÷JªýÊs© '8b ;A†�g¦ÿmL_™ÑÆíVºð°¹…"?/?Œ¢]óŸ-éuöD›ªÞ¯Ú0Š9‰.Žâµ€Úl¤àˆÍp¹\õjmXß™)'Þ<$òs³ê@Õwh×<=½Æ‹ëbGÕ{TÏ™ï×o ‚ €!ØHÁ›áq®jSm\ßyº2Š œË{êÂ(Ú5«çü?�–<ÜLˆ"¼<¡Åb³´Ü²z.o¨+��cTfjB�ý]ìÃÍæHÕêz¼k«~B¨™š‡›©^£:5Š& >Jó„i®âáhÿÐÈÃWµq½uC&yüŒê1|þ®Ú[µœžç7«.LÉÃÍT>:óGÕIª�¢-)ÞÐ E€á·‹6²ІÐßò 6Š·Õ�¿�áØÁ6GµŸêGzl÷Z*‡›¹ÀÛbú#3ÓYA·ó2=×Ôˆ#60¼|tfë&…š ú›~§‹½bpÆU¿ˆ¢ ÃóUjZSy�ê—Q¡yotj&¼% f©‡�Œ0mÐìÅÆ úçnÕkµ±}n4”ÞW5p…êyÑ?ÿVý@õ5=·×Z*»›½=ŠÏþJQ/w–{ª^ƒñ€š0 †�Û8o �¾9Ñ`>!¿’viôþûèzÕ*™ùW %½&+èâCQt7[ŸÐ†¢@ïÍV½”Pƒn)м@uXGÿöˆüC͆£èGl ·NQmYNB T¦ ã��>Ï胪WF3lt�`½s¨j'…šG¨H�Æ“gîÅDš3¢Ùž§¿÷ú¬ÜÐ!†¢@o|Zi;jP•6ðWPí¯oQíÍ5^Ђ ÔËAf{š/P�Â̆ª“ôã5ª÷ªž£åå]`(Ôç~ÕëjN �‚Ì"ºp»æ÷«V‹ÑF°Ð‚ ÔãÎ(æ¨au´¥@³´.>Å94O Øêz^Õgè¾€l {n½»¾6È® `ÚpY�æ�ÁwðüR­¡:/ œcÝ™£Z“PƒVfTm«º0Š9�Þ„šVŽ c¬X sçª^«PswóQ�YRïVí¢zf Á@Ç6ЙT[)Ô<À$ 4+ë⣪íT‹ªX' C E€êRmI¨Á…™1Õfª3ôÏ«UïBM'ž¢çpÙ€pÄÒ�«vU Ù'€˜h¯‹¢h×üœ@fFÑ�*!Ø@š‡UÛ*Ôy 4ËéâCªUO ÔiuÕIl ½{U[(Ôœi 4ëGÑ®yó`8w¯Ì èÁ¦w»êÕ 5—F’ÂÌã¢hà@ó¢@¯­Ð‚ ´vƒj=…š#G�æiºxO-›Ÿè—gë¹_LŸ»{*à0:LÍGhÖ$ÔŒmT¿@õCýx“ê3A¨„5*"ØÀcù\šujnŒ™ToT�§^¡ú_Õãƒò€ŠŠ�æ®gî~öp ñdÜÑì]ª÷ªž«TD°€ÿú²Ín�ÆS Y)ŠvÍoQ=>0lžPÁЉ7ߣPsP Ñh6ÒÅU¾ +‚ €Ê6FÝCª­jN4’ÂÌ¢ºxkíš┇géu[XŸËlŒ²»U¯ÕÆÓ¹�ÆÑ†ñ2Q„™�TOäÆGm® HD°0ªnSÍR¨™hšu¢4¯W-ȕσ"ØHF°0ŠæFjn4‚ÂÌBºØ&Š@³F  8Ï@%)‰æ¸Xµ‰BÍ��FP¨ù´.vQ-h’•*`‚N)š²®8Eµ¡¦q| ¡¦y–¨€``TªÚL¡æþ@Ó\h¢e* ØŸW ÙQÕ¤!uø/‚M3lTÂ96šÌAf'šCMF°i¦Ç���?IŸß$àˆ €¦ò�³Í5#á’(&ZEó<3 Á@Ý¥ZW¡æ”@ãéuv¨¹<ÐD G�Œ` i<7ÍKµ±{i`”0­™6’l4ÉÕš 5s£†`ÓLÉ6RäÐMì<Õ: 5·FÑ%�&b~"É6R ûºâÕ† 5wFÕuª‡Mó´€D¹;Hµ¥BÍ�‘¥×ß¡æº@Ó<5 Á@Î>© Ú]TãDü1Ð4É6rä½óÛ+ÐìÀlš‡` Ù‚y¹Wµ…BÍ<Á¦y– HÄ9¹3ŠÎg„L…`ÓÿW´A°�bÐGw¿£ Öeµqó™ZÐ{ä ºØ,#‰¡hrñim¸®b½…VV 4Ñß°� 'Û©NR¸Y$€Çzn ‰îH@°�7pS�%x4Z„7Ͻccc$ ØÈ‘Û@_¬p³|ÿÅ›æa€d¹Z1ЉÚ0XuŒÊ­¢WW¡z(�⢀l 3^¢póÙZP¸¹\åÉ>=ŒÑ“ޘί:D°€îì¡pã€Ãú-)ÜüMµ{çª+S!Øè_ÄÐ=IóдE˜†ÂͪCT/Ô?g©NT=˜p^@‡6P7pS�%H ps¦jsý¸‚jÕÝ1Úæêùø{@‡6P·�v;èeH¤�ùTï×�ÏT}XõçM CЂ ÔËxz"ÏÕ¨@áænÕ×õãsT[ªÎ�ÑB°Ð‚ ÔoiÕl…›õ¨HáæÕñªõõOäÃTDóq~ €®l 7W�®p³UR¸¹Jõö(º©í¡úk4ÓÍú;¯ èÁzg!ÕÑ 7;Ðmôß¡úœ~|–꭪ˢYN èÁzï@…›¯Ð%…›U?T½Xÿ|¥êgª‡#§t‰` óltï# 7G’8ªþ'Ð’ÂÍyª7DѰÂÁùß‘§qÕi]"ØHÁº¢ÛhcýÕâ�–Êó’>¢:C?ÿNµƒjáÀ”ÊvÑ‹¢iÅûTмüF�ÿ®€.±±ýåNiTà1ô¼ø¼¤ÉÃö^¨:Du“~÷yÕÓSR8¸Gu€~\Yµ™êŒÈÃÐÔ‚`ý羞ëfÅÀü7ªßa @ƒl¤ ÑHÿ¼Câ'«‰ ¿ó‰ºø^ôÎsUßÕýüMµ'í¢[SÈø›Ê�ç*wá‹ýYË\Ð)XW Ÿè~´j¡ÈŒ6jgëâåª;#/O�âh„Î᪙�)é5þ�ê(ÕÚúçêª#UÐFnZýÃÆ €±>[©NÓö"3žé^k©®�ü8Ln§ºLÏýùª--ùµV¹¥÷ Õ^ª#z„ÙÄ´¥�7wAzo`9$¼Z�·GfÊómNSå~ôãF•?#ßÕëð¯ Gl ožëfÅÈLÆÖQ�y{–jÕ-z¾E»h ‚ äÏó°\¬ ê5"3 7÷êbCÕ1‘¿Ç«v‰¢]ô/T o6Ð KªÎËqî…›‡T[ëǃ¢<Ì{Ó(Î�ú½j'UN�à Kho<Ÿª�èí"C 7>ÚñQÕx4ÇjªïÆÛE/€ž Ø@³, r;âÝ#C 7ûêb›øo{à¦xJí¢oÔksí¢ ~h¦=µñ|ˆ*»õ¼Â�Ï·ñù)÷Fó¸]´ÛO´‹ÞJµ@ºF°€æÚAu’6œŽÌ(ܸSš;¦eׯºOTz´ê:½FW=1#Ø@³m¢:[ÍKDfʉ<×T]ÍævÑ_Ž¢]ô�´‹€Îl ùÖV]¤ æe#3 77èb­(&"m:·‹Þ9ŠvÑ'«^€d +G1‘çj‘…›;£–vFŒ·‹ö‘¶_êõš£z'í¢ =‚ Œ·ž­�äµ#3åDžG3&ò¬bUÕw¢h½í¢ 5‚ Œ–Å£8çf‹ÈŒÂÍÃåDž_ŽÑãvÑŸPݤ×îÇ´‹€Ç"ØÀèq—´ã´q¼sdHáf7]x2Ï&Mä™jAÕ¶Q´‹¾@µ í¢ @°€Ñäó8Ü�+Ë£ 7ébËhÞDžUxHáQª?ëuÜUõ¤€F°€ÑæùSŽÎq¯¿ÂÍ QLäywŒ¶åT_RýE¯ãAª•FÁ°•êTm/™)'òô‘‹Û~ýÞ­š«×òÕF#„`°Yªóµ1¼TdFáfNŒÆDž©<ÌÐäV¯R½‹vÑFÁ0Á�¶<×ÍŠ‘…››£˜ÈóÒÀdÏS};Šaj{Ó.@“l“-¯º8ÇvÂåDžëªN ÌoI•»É¹]ô‘ªmU 4Á@ŠG£ÄÁ¿Ö†ï¹íáW¸¹_µ©~<40‡™7©~¬ºA¯ï§TK4Á@ Ö£çñª÷D¾CÓvÔÅÓY&ŠçÈÃÔ¾§Z5 cl¬¦³lCÓÖˆÌ(Ü|Z8£8‘gn,àçiŽ^ç³T[¨Æ2C°´ã¡Jçicw“ÈŒÂ�‡¤y"Ï)6P¯ºF¯÷‡T‹d‚`Há½ú'iCw‡ÈL9‘§7Øï ¤ZAõ5Õ-zÍ÷W­0ä6€TþÎ8D¹{Ffnfëâ¥ÁDžU=AõÞ(Žà8Øn0¤6RpŽ&Û]¸‡EfnæF1‘çU�ª|ÎÍkT§éµÿ“êÉC†` 'c~oÕÆíéªÅ"#åDž/WÍtêl=�ÿ2@§f©ÎÏmm”û\ŸsÃDžÕݨúPÀ"غ13ŠvÐËGFnÜ%m³`"Ï*<$u[=w÷ !‚  [žÀÓyÎŒŒhý‘r"ÏÏR|UÏ×CŠ`¨ÃRQ K›™ÑÆúçu±½ê‘@+W«vb@]ÜHàT…›í"3 7GD14íþÀT¶Òsô`À#Øê´€êp…›OFf´áîfëyÎï}zn~0ä6€^ø¢Â�'ó̪U¸6à/�b"Ï›v²ž“2@°ôʪãnŽŒLšÈsNŒ¶ÛTÙ +0º6€^ÚBu¶ÂÍ‘…oÔ¯£;‘§)ø¼šd‚`è5„‹n–�Œh£þî(&ò¯h#ý�÷dˆ`è·…TG+Üì™)'òÜXuo4Ë}Q„šÛ2E° Ê� 7_�Ìhãÿ ]¬£º3ša\µµþ®+2F° ÒGn|ôf¡ÈˆBÀåºXKuCäïcú{N ÈÁ0h>߯çÝ,Q¸6òŸÈó[ú;ö h‚ `¸Sš;¦-Q(¸=ŠyzÎ�üü\õ¾€† ØHAëWôƒç¸¹Xáf•Ȉ'òT­¯�Œ|xòÍ­ÜÊ: !6R°®@¿,§ºPáf�ÈŒB›#�‰<j6Õã}0 AØX ›%Tç)Ül™)'òüX�Ɔ‘C�Û:ßÐ0À0ZDu’ÂÍ‘…·°ÞFõP —‹¢5M›ƒæ!؆•¿£Q¸Ù32£ðpŒ.6Œá™Èó·ªY„MF°�‚Œ1H»+Ü™Qˆp§´W¨îˆÁºXõ*=ž4Á@бë­ 7žëf±ÈˆÂÄeºp#„kc0ÎŽ"ÔÜÐp@.f©ÎW¸Y22¢Pqƒ.ÖR]ýõ³(Ω¹'`l9™Å\7ËGF.îÔÅ:ª3¢?~ z£îwØ@Ïl¹YQu‰ÂÍÌÈHyâþƪc¢·öÖ}½�É7Œ‚ €l aØ,¥º@áf£ÈˆÂÆÃª­õã>Ñï×í2`l¤ y†Ñ¢ª_(Ül™Qøø¸.<™g]; ÜñlCÝîþ#Š`ÈÙªÃn²;J¡r�.¶Œî'ò¼^µ¦n¯_çïÀP"Øšà‹ 7žÌ3«ï5…‘¢˜Èóîè̪ëv®q@Sì :IáfáÈH9‘çÚªÛ¢š#TëéúÿÁ@’GÈÃ&ª3n–ˆŒ(œÌÑÅËTs¯ò^]g{Õ0Á@ Öȉ狹HáfÙÈH9‘çËU—N³Ø�Q =ûV…�@­Å\7«EFʉ<×�©'òü¹ê…Zæ²<ÁÐTK«f+ܬQp¹?Љ<�(ÿË]Ó>¬ÿßBuW¦´`@{�§ÅUç(ܼI¡à'‘ Oä©‹íõ¸Ýíì4ýûâL‹` Åäí(…„%˹c²¡Çû…$a(`T¨p³o‰`%V¸9ZµP…`5[©NW¸Y<�A°Œ"wJsÇ´¥ÐÀ¨ò7žëfåd�`e˪.R¸Y;Y#ØFݪ³n6 @¶6D,¬:Iáf‡d‰`@Á߉‡(Ü0)&dˆ`À£}JáæpÕÈÁ€ÇÚNuªÂÍbÈÁ€©ÍR�¯p³T†Á€ÖfF1×Íòj¦çPãp33C‹` Å#Œ¶¿ªVÀÐZ0 =v‚`Ý¥:RuÈØØØ¥jþk\u®êÕ± 4÷ )Æh¶«TǪS˜¹.Ù!ØH1@³8¬_¨:>Š#3× kÀ¨xPuvaæx…™ÛÐ)芆\ÍQ�Åy3g(Ìü+�D°�‚®hÈ�‡—ý^uNAæ,™`$l¤ y†ÕlÕe�© sWFÁ@ š`Юçª.*ëbÕå 2A°�†#6è§Gb\ZæÉ1/Tˆ¹;h�` GlP7‡å›¢/W—5ïg˜¿luû»êVÕ-eÝ:ß弟` jB°�‚vÏÍvs¼Ì_LúÙ˸ØCË�ó]Þ1ñ;æ† ÃKd�¹)d�` {Ù#ØÈÁ@ö6²G°�=‚ €ìld�` {Ù#ØÈÁ@ö6²G°�=‚ €ìld�` {Ù#ØÈÁ@ö6²G°�=‚ €ìld�` {Ù#ØÈÁ@ö6²G°�=‚ €ìld�` {Ù#ØÈÁ@ö6²G°�=‚ €ìld�` {Ù#ØÈÁ@ö6²G°�=‚ €ìld�` {Ù#ØÈÁ@ö6²G°�=‚ €ìld�` {Ù#ØÈÁ@ö6²G°�=‚ €ìld�` {Ù#ØÈÁ@ö6²G°�=‚ €ìld�` {Ù#ØÈÁ@ö6²G°�=‚ €ìld�` {Ù#ØÈÁ@ö6²G°�=‚ €ìld�` {Ù#ØÈÁ@ö6²G°�=‚ €ìld�` {Ù#ØÈÞ‚Ôd|||ñvËŒ��Ý@ÍÆb@ô¦¿CO‰úýIõ;Õ ª³ôÁ¹%úH×+¢Œãª‹tÿ÷€dú í¬‹£~ÿR]¡:OõK}6Ï Ì£ç|¦..KXta=oP‘ÞcßÒÅ.‘‡Wë}~z #z­_ź¶�Åô<ß×â6^Ŷ\;‹²�…Éš8m%ÕU?RýEŽ«TŸQ-=¤Ûÿ¨‡UùÎIDATê/Ql4�­:Gu›þïKª'€AóçÐ;>¡:GŸË{U'¨Þ {ƒ 6ý:Zô<ÕçT×kæGªçD�t{OVÍÖ�û¨–™ï×K¨vU]¬e–)úµnXTµ¹ê§ú|zýðÃsÈÔ(› þ[·WýA/{©Žzœ¬zY›eVV�R bˆ¬w<¬ºB놗ÈÎ ƒÍx †÷Èz(ʕڀY-º ëoíCÍ„´ü»@;�Äàøï¥B +£ÜîÙçâ\ÔåøúM£šW€v†a½´«Ö §«ž ƒÜ€†�—Ç«ŽÑÆËg£3ψjV í ¬[ã|f©.Óú�Ï-d¸äp“ɼµ‡6^ŽêþÕÐ’ÈË Õoº¶ zo�Áf�.îˆô¡¨æ‚¨æW �a9b3ÁÝ OaXÃ-‡Ö¦ç«þ“°œƒÒ‹U‹E羦�—KÇÆÆÎK\þª=â±mž§r¯o?´“ÚXÄóF]“¸ìÓ¢h Ð)σõ3Õ«@'þ¨êfRÜ'¨R;v;ùî� K9›Í4þ™º°‚‰'às÷±í£3?ô°Ýç½íô ÜZv»(Z9·ÛËü-[¨Ë±úL} ua}V—ÒÅëU>2»rT·�n㽺Ï@%úÜì§‹ý¢Cúì­®‹ß&,zƒîký0’rèŠVé\­Ð~­ú_ýøtÕ÷¢ºª½SÖ}�£‹µT¿k±ˆ÷(¿JËRôd(š>ƒ·«¾£ZEÿÜBucT÷m`=+ÀÐÉ!Øt4ß�6^þ¦ÚI?®«º.ªy•NHº_›©ßÅдϕ—[«^ ß�††>“?×…NÕá¡‹ª>`èä0­+>‚£�²¦~üE¤O¦iÞxÙ®Âò¾¯cuql臮&ùÕçõ>]|Dë‡ßèòˆ W}«®³�®?'ÀЉyl´â7Qý©ÂÕ¶-Çä课®—´~ø±.ÞÕ|0ÀPÉa(Z-ÊWŸÒamÞU¢úÆ€ iýpXT;jó&íøhüor’ÃsWÃM&ÓÆË´1²—~üLâUÞ¦úJ»…t›ëG{¿Õýÿ+j¢û\\k¨–Œbž —ÿo"¬þ-ŠÆé~ïŠè>Ÿ¯‹§¶YÌiþ<ÅuÝjw[ÕQ4vðíŠÇíuÓãU~¿ßY^žÅg¼ÊÑóV÷çõ]»ö¿ãº¯n[ÿú¾ü™j×.ü!Ý×ùQÝßkt±•ÊÃú½0±ž¿³¬¿«.T}W÷yU‹ÛXVÏisW÷èú—ÚÒóé÷´×þŒ®ªò¼Vþ?¯/ü�0ñù¼#Š9ëNÑs{a HÙ!Ö#U&¯Oü˜=%†×'þnðã½Ruªê´~¯OÚèzÛOÏ�Ïsö)^'-=^'uø_  7¤ñçû‰åå¢å¯½¾½I5W�ïâ¨IÊ6kÙkºÛðó8±íáu�בžVÁŸ‡»tý�Mj=°‰ðô¤ÜÅÆA;OÐtOÔD÷û8]xÃ;eî[I÷Í4·ç7aJ;êut;U'ôœÿ¾üFq»Ú £hŠ�j¶êdÕáz ×G‡tÿ'èbó6‹}Q÷±û¤ë¼EV½(ÒùKâhÕ—t[s£GôؼaúÉ(>˜©ü^ôžýÏÎß¾[·ç/´§´¹þÿêz‡Gt?~¼Ÿˆâ½P•Ú_ǽô8®Œ!¤¿Ïü¾ž°è×õ7|8j¤ûÞY&.~”îÛè‚îïÙQ¼ýüĨÎ_Ê_Óã85º Çáæ'—µ[N÷36ßõ¼¡ôYÕ[£ØpJåpöÝÜ�¢Cºï—F±q?­ùs‡÷åN›?l³ØßuW)¡¸Õ}xÃÀÏ¥×™�¯pU¿ŽšïöÜÖ¼]sŒ«u½næwꛊížgDMt¿éñ‘¨ö�;ÁÁÁë{¿×oŽ+×'»©Þ�­OÎT}µ†õ‰7Ö¯HXt±ò\ÇnncQÝÆý“®çu’שqSåóØõ:)•ãëtá�ÊË%^Í¡Óëû£õ�Žé¾})AŸæN¢ó]w‘(šd½9ŠÐÜʵºn»�*=ÓØ®h­”{¿Qá*¯ŽÓ›é *wVóÏM ª®`×Ví©ú³nçÕ’Ñ™ä ÝǦ*HObZ%Ô˜÷(½MuµÃT¹ç±6º½—¨2=áb•PcÞàx§ê�žÓ$úH÷÷2•WlÞ�é$Ô˜÷ùKï ÝÖ‰ªF¾j]7”Žbc$ÅÆÑ!w]TyCÔß�m„˜wrœ¢ÛºDµaô‘îoÇ(Ž ;ˆV 5棿ž3ì2Õ+cÄé9ðzÝïë*¡ÆÜçH¯T+já_*Oãp|tjÌŸ‹÷©nÒmªzfô€_w•w¸ù=äï§N×'ÿÿ]Ÿ |Û§ªr„�¼|,ª…›X']Þ‹u’nó©ªÏ¨<šæ¸(Öû©¡ÆüšzdÉOt7–k'R·ûÿo9Ý×åN?"¿Mbˆ 2Ø ìh‘éE}ÝX˜Ì¤ 4?U­õx�êÚr£¤ª”çL7=î=%'F1'P·|„È+ÙU£\ºøua¯³ùPeåÔ݇_·óT³¢>›Eñܾ1†ËÀÖ ÚñásðŽJ\üIzî^é:Þx¸\µMÔÇý4ÝöÑcº�§¨<ÔÆó„µ;BÙŽ��[NtñÑÖ7G}ü©ÛÞ32P®“Ήâ¨jÇGMKÞ{nÁá1Ê£~�ž ¤Ž¦TÞæp;[µ|ôP¹íåΡÉ�EC­‘;bcåáµ”CÚ¶V @94ÄC…Ö�úùPí÷ʽ„uóÊõШ÷½åó]fw²9™®ï£>g‘¨�¿¼×ùå‘¶A^i£]·ûÿ¼§O?z¶û^œç¡™Çè>öR rgC'zqÄÆN¬°l¥õC9<è—‘6 ·ŸÕ}¯Z8ªIz.Ëá@Þˆêtv+‡—{GF9dÆ;+^õ: \g´;ßó/ÎÛrÐìÕÑxï8_÷SKÑíø¼@¯O:=BÓÎîåúdÑ^¢ïuÒzQ¯Ö±NÒm|!Š£~‹GýÖW]ªûX)z@·ësxjªŽº¨‘ 6¥ÔJ—/ÎËé›rè•OòN=¨SŸ®x¸9e÷WC!¼âöxG{5Ëa:½šchÞ—U'&¶}(Q��ô£;ŸÏÙ98òÒ«uƒ76S$¡è=ø©(ÎyX zË{Oöžç ×I µ~Ÿ÷êå�zÌuÅv>ïqõè ¯3>HV~·x» î äùy{âÝßÑ]ßçÒìýYŸøhð°e�Àèå:©ãªë~TŸŠÞòª+¬ïN\ΣZêÞÜ#Óîy Uº•ôûäJ¿™úuÈÏGnªŽé‡¦*çGÍSÅÚºWu©ÊyJ>J³UôÏŽºÏÝ#uwE›GGtÿ­‹«O 6åP«/Dÿø(À‘Q¿^ï¹õyÏ�†ÓßxPt?¶�n‡¶�Œr£ÐGj{4§r°îw£è@¹>Ù;úÇ�Õ~ý•ú]Ùë ïŽÖIåÁ}¢?VŽ¢iDŠÔçÕç 󑺖†>ØLîvQ³ë*,Û·îåøè~žÐí=©ˆa°ÓxÑ:º ï]"†Cê�…ÄXù=Ç‹¶½ƒ”ºâíåйk—k»n(¿àºê„ס­tßýÜø©ƒ7ÆOìôÈlÊÏ×»Ãä;Qÿ�Àv¼ýujÕ!ÖZÞG”±>Ù\÷Ývú‹ò°Þ“:X'íýõ=Æ¥–kü�Q>bsm…eûyÂT•�áVÈž“Ç*fŒ•¢õÚ(Úú¦xgâr�ý¹^õå(æ\yVù½‡Á‡¸ý…’Ú…j‡RÔýºxAtÆm§}ž“Oô¾/úd¼hÙÙ鈳ïïËŸ;áÃïO�ÁI}ŸõäˆM)uý0íº¡ü2ü~tÆc›Ï-ë¼èÌnz ýf?Þøç(ŽÈy¾žßT¸=ŸÔ¼ Nêz©—GlR'Q]²MÓ…/Fµñßþ|ø ty½~k¨Ö/ËíG}ò©;õÌŽj‰Þr�vR?fÏ)±šê%*oÄ?#й~Õ|ª×Ý~įm•ež\Ù;¯^Xnë,§Z[µl¹áã J}T®o;^š¤ ß�jÒw&Y¯Oºí«rgÌ®®â�„•Ë�WSN¦«ÿÿ­ÊÅÞðIíô‰ÿúx¤ïxðÎŽõô|o§ú•¿·æ_@ÿç‰ ¿ï�yQt²LõÅrG\KãÅEUÖá_(7è�Týyþ_º;l¹³ÑÀ;óR�f¬:Þç9Ü*Ú­\'Ûb�ôWÕå:ÉÛ½X'¥ kô¨o#ý>aY?noÏ´;28Ó­¯£·|tÉëò§ê1Íœ´óm¢ü6ÐùñJî àIDATl’6Jô=½swâr½jÍ:¿”“Iý�¬z(:å ï% ËTÙ�ôÏÅ–÷kí=a©GnÖOXæ-‘Æ]B^¥ûOÞs§e}DÃGBªn\·;Ê�:,Ðó­Ìªò^в_�js§¼+†[/‡¢UªÑjýP%|ì㣗ª¤=]ZÎí|«LZ÷ké÷ýVzÉ'ÇjYO è.Œ©ëô7¹Ýy4G•ù¢ÎŠâó�täPË]¯ Õ»2PEêçÂ;:Öt I\Þ¯‰'æ¬2¤¸Ý÷U•õÉŽºÿ”šóxg^ïŸÔ#ý8ÿ³“#ò^'}9uár›£Ê:i›vÝáÊs¦R2}H÷GT3'a™vçlu:ÒÁ�f™òèÒªÔ�}—ÃP´^ÌÝ1!5°<ýñ´„e¾Õ¥tzIi��ú�ð^’¯Egöˆ´À9íÑ­rpê°>ïá9;*ò‘�¨Þ™¦e*»·mi¼RÅÿ§®O¾YÃúäóªS–«k}ÒJ•#ò_­a�´W¤Íý5ík¡Çñ7]ü-jRîœv8Nö›:R%… S€M2È#6¤,Ô«1ÖºÝ*­øn‰ èoZBõrÕçTî†âîI/ªpí:q¥ì!÷фԦ ­¤v›®g{Ê\7nZPÇ$†UûO÷¦œpw{ >ö�Äå±a9 CÑVN\®Õº!eÈ€}|¼K‘jìE5 í­<Ìe~åù6ÿLXt5=æìf¾žBêÜ[݉�GÏ­¿[ ´¤÷”wj®�°èYc“:ŽváÀÄåZ­oSOÆþvt©âúç„EWïí|SUŽÈwÝ©M·ÃgʶËóʰÑ3žòAµ¥ÊÛ'ªU&úl·¾¬ò¼¾¯Çz"‡¡h½zŒ3*,›ò!ï+½áÝéh{Õ—Už<ÊÝ2¼¡à£>j´JÔ/åñ§èR9Ž3e¯Ó”‡e}ä)Ò†Ö]5(÷ØŸ•ºøTÿY~A¤œçT¥msëQ´;O9B¸j›!ƒÔËõ׌ÄåZ­*Mº×'>éµÛ½¬¿ït˜ÔRÛ­¦†Äa¶jâr—D=NL'õZ-¯GyGʼN­†+¦œÏr{9±¿H\îÑ;©;®®jqÔ¼)Gª¬–õ»ÏaUm ú ê{ª_©|´Çm ½ÓGùê�©Áæb=¯•N}ƒжpÊBUO ¬`� Ëv½±Þ�rï€û“¯Å—|�'W‘²!™rîF o<µ›?¨Õž‰”q¨–:–8õ¶RZ<¶Z©¤!¨s¸¢�襴tž­‡ü R/‡¢=?q¹Vë†*s×ôS·sÃÔýþKéÒWçЊAIz?èûî¨G�ë¶&J9Zcu¾ß}[¯n³L«óhR¾Ó’;¶%ðû'弊^Î5•º^÷÷ø›–ëh�TNàse¼ýéÑ4½øž¨k$CjÈ:ƒ 6ƒ–zòÖÝú²©ëäðJÊ =ÿ„?hýj9=�”M]{NR†*¶ú§ž;•: cŠÔ1µ­sêÉêµ�Ý�ô¿�ÑRô¤yÀx1QnJ»N›3Åõ‡ù܆*ó:M…÷_gRþ†ºv 9 ݧ÷¡w Ã÷Æ0Äú6é¶<ŸÍäód*t¦ìûc�î×'ÓIÝ@Ä÷xò:©Jëm8w½{y ^êH‡ºŽ÷Ý ƒ�[¤>®ÝB>ÇFòZ÷Ìê6=soê›_GŸéñy¸ˆÇT®õp£”í¤6è—V�'uüë 6ÒZ=?©‡›ñ˜S7òë’ºâíÕ96©Ýélª=º½wÞ­n7tGáý× )ç Õ}TÔ¯Áfj©ŸÑ:_“ÔÏŽ_³ÉC±ñÝPå±öJê¶ÄЮ“´-ç†n„TWtËñn�ò¤nO_™ä96mC�ÕjJUfá>7úH„·Eq¾F]¡ÆG›Þ£%e,³Õ¹Á”¦ZmŒ§N[çFsêIÙýjw>!õ3_{ˆ.O*N�Hñ~­ŸfOñÿ©¯å tñþkÕíhv¢¤JY'Õ}Brš.ôÊ Ö·IÃïã±ï•aþnHý®íDêgnßãÓv`Ó÷È“TÞéõ‰¨/ÔxâÑs–k÷¼¥n÷g;ÖÈ E+‡‰T™5·o'Oé±yâºäYsx’Lï1H=ç¤)RgÄ­sÈP»ó�ÚIÝë4ˆÇ\ç¡þ ÄàxΧÔ/·)F(ìÜU4+kË� �Žþ:#º3ˆ÷_«F"ý 6U&l�JÊ:©î!ŒÝ®“šlX×·ãZ<ê(‘§`Ðú$e„Ë(|7Le˜ÖIC}®\êy³í\Å$â?Õmÿ aùº<™Åsl>é_R×èÍôÛè½a_Ý…šû£8ºä ��¼x¢¯»nû1ZRƒM]+KízÔJêí ó0|yM¥Ö6”úœxBÍ�V¸ÊO¦ù��”¶;ÁôA}F÷ˆ¼ âý×j#"ioqÂü\)žÝI 6z¬OÑcM]µ¤ÛY1GEŒ¨*ëÛó¢)ï÷VëZw;›ÓÕï†aZ'™»™uó˜|êÀÏ£GÞŽ»zÒïR¶]{9 BF*Øheï¹¼G6Usœ´5^ÌJýã¨î¤(‚Ì•zóO×nxºù^GÏÅ?÷˜×9ÁØz‰ËMùÀÜ~9ñ1¯õY?e¡r±QàóÚª k˜n>!·,ol<¯Ì¢5L,×Ou¶wMýüµÚxJ™ÇžÝ™©2ïÙTRÏÕðsr\t¯×“'æîÖÄå¼¾ý^tÉ�U);o�æÿgÄô^áÕµ>¹?º—úþI};‘zDvý¨Oê÷ø”ë$=ÿÞ¾üŸ¨ÆÏ¡w’y*‡ËôúÍ™fÙ§G{ý<’=”r˜Ç¦zÃù„«Ôy&t=éS"wËH= Ï�siÃOëQs§ UÖï�îíië¤ó¦Z'és·e¤Ïo³�nccUòDºº}·ŠNi3Í›h8½|4䊨>‘Ô^Ñz|O‹´/MŸhüÚª³~—G$†qô^KmÓ½­ž£Ž÷ÆêºªPe¯ûtí©'v¿E÷ÛñkªëÎÒEê®Ô/Ô:õe�“?{*±|.ª9FŸÃ?´Y¦ÝQÔ ëè1lÒu_ª‹Ûtyª*e‚Ø:x¦ìŽ�4•ós호x»®”){²ßÝézöö΃ٺÿä¹ðÊá¬ÞfZ'ñ*ß×ówSôVÕ ôe¢øN¬²uòy¤©×9_÷e-~—2$¸Ê)“ý$�l�Á&©UëxQìÑðù/‰Îx"¬~�;—«4ôHO‡OýNŒ¶¯UXÖAå:Pµläà=ÎãÅlŠ4#j¦•æ7#½ÓŒ»ü]­Ç³k¹6¥ñb²0·¿2ÒCÍ­z,ûÇ`¤î9ۣºázÕÁªm#mœòT¾«çä˜Ô…˦˜ðY�IDAT©çV8d�§‡ú!UËytô»g”ï¿v¡Úçi¤ºQË×qÙTü^ºÒ�g¼83%žT>§Æç,®éöIX&u/¶�Tž>Ýg{²ñbˆ°ÏwH9™8I9|1õ(�yÏ»w¸L»î×ïg©«´*G¡]˜˜ÌGEçê¹Þ~º…ôûg«|ÀÃ\SG‹œ®÷Ç´ë ýÞëό4^Ÿ\¤Çq@ù^nI¿÷h“\3ÒíÃÉë¤+ô7}iºþ¾,׋þ»“wÎÄôçVÞí¹¥{òÎÐò»ûĨoÂö‘0Èvσœ„¯•·ô±aÀ„›—{»ÞàßÒã»nº…´Œ÷Zxƒôõ1âô\]®çÃ_UÚ/zØ€Ã�ÉÿNõgÕBQ4žðŠ¿݆üR÷îz#ØG>­Çìöäî¾t}�Ù{ȽBì¤ÓÒ§“y>«DuÞÑ’º×ÖáÀaü z-½Áî ™ë£[ïáEÞaSµû�7jꜙ{*Þ@ø„³��ο~ò‘¿ÿR'=�pµ>¿m‡º”“¡þ0ÒΣñIõ*ƒá÷¦Ú;^ Ky{Í$: ÀÓqX«2üÑ{УÇå÷ŸÛ@ûûÉP^Ï»)ŽŸÛÔŽŒ˜�¿ïõÜz‡GêùÈ?Òuü9õd‰î®vcŸ]¯oýÚvr®Û§—s£“*ßgnNòž2h]¤òQ“õ{ÇôiUßçÞ¹1†›œì:Í:É;¸ª®ÿ¨¿ûøi~ÿ—Hó¥òþ§5^ )Þ/ŠÏ:*d°q7�a ÷î6oÚžð Bo`·Ml÷!óxz�Ÿ÷o¬ÿÖýêË=õBå¡IÞ£äLÕ�ˆ&{WçRT™¬ÎÏ_Ç'`¶ÑöÄ>½®êuu0­òæ÷O]�ÙÝnúÕê|*Ãvò£7^6ìd~]çWz-ýåT%ù3½yYÝr@¨Òµ¯u…~a«r^‹‡‹¥6ð†©�Š~Q¯Ëáñ߉½'uý(žÿžÐkq¶î÷hýXµaÄ‹c4›ÀôÇ£¶>£Âu|~e]GÈöÒûâ’”µÜe¨úpT󦲺åÖëut^KQÇ÷@�뤷·Y&µ9È›ôúÈ’w^^ª×t^;ûñâœEo˹!‘'lOS<Ö‘6È`3L¡æ=zs rØ–÷8¦tÞñž•Ï—ã㵿×MC¯ëµzžöˆ>u¹«‘OvöŒÃO�þò^§Ž»t5�‡ølT±½úü¼!à‰ßfFù„ãܿɱox.ua-{Ž>ã³£Ú°±ºÚøvÂ÷ë΄wÚB}Üèc¼èòçá�Uv€ÕÁïÛª;ÜÚØåö{xÒQtfÍiBáºìŸ°NòQ±oDÚŽ‘W”Õ‹í¸a ÕW#3Ag >Rò:ï!�ÁÔ¹ ókdÒ×ë»w¤OpÖkIÏqÙü £NN]zƒ‡÷ÌçȬ£çã–è‚®ÿPçî¥N(Y­MÝ‹8,æ;™§ÉCjî‰ ”!ù��¡¡×ÄÃŽ«é–‡nÙjž¦V´¼ÏOö0¥D¹qÊÕÑ?ò=â#*»µ[HÏ�ÏÑ>,¯—s ea�ÁfÐoZú}�ÞŒ'Ä€•'•V9‰±ªÔ95ú½·ªŸ<“r/WÊ7û÷¨Qyò¹÷ì¦NDØ ‡™µuŸÅà úÈ¡÷Lz˜É,=•»NE·s}ó¤œ`Ú-�¡÷c?¶ÂuR×Ç½ÜøóÄùó8úA�©¬|mv‰Þ¹>†¿«áPÑkâ¡A~õcÛäZÕK+tX|”²#™ç_K=G·RžPò‡1œzÙ4ãú(ÖI©G©|¾a¯ÎÓöz1eú…^uÂÌÆ ƒÍ 6^¼"ðDG/Ó›õÏ1$ÊÓgGýÜÙç݉Ëö{ØSßèùõÞ-�]­;ÜøKð½º}¯ÐRÞÓ•Þ÷º]ŸO击 ÕŽ?k hΚ© jÝà×Òm5WÑs±oÕ=©íèö|®ŽPôrŽ,ßÇZåû¦vå «Ÿ2Y`5¯Ðíwüt]Ÿ(ì“éëÞcéÇ´kÂrU÷¼»k݇¢~î~èÝï=úÙÓkòí(†o>½ãé(Öìöür}â†s¢w¼Sm£'”ì ¯«£7ë¤ë£X'%‡ÇrGXç2MÅçO§|G/#n”†¢94l­7Þr*÷`ºÃuzLî¦rXÔÇ7>d�ÚR:¹ÿ{Žôüúyp¸9*êá¶Ì›—{úRUÞX.‡I¸#ÖO£~žÇa�òKrXôûh®�Vy¶÷•õ<¼©<ºÒå—¤ƒj/†¿z£ìEå઒änßáïÕQßžIŸLÿŠN÷^OVn€ùÄÛº†Sz(ŸÏeHŽX9�ëñzLþ›#}ÝŽ?Ï~.ÝaäO"»ŸGñ=Q÷ðeïõ÷°èW–;ÚºV~f¼>éÅpö_DÀz²“¤.ããã‹”ë$7Û¹.êáuÒËu»©�ÎþO¹ƒÐ�>*_w;•Í­R†37z;.EÓƒ�÷\yˆÐJ Uæ =FwÞØ*Šö²�ò—Úöº-G¹§ÂJtƒh8‡•÷|¼2Ò»˜ÌÏ{†¼—è9óµ¤M9iðÁè€7¶U~_x]•IßZùYŸ‹ëØ ¬Y?ÖKí/Šô÷?Iõ>ÕŸ¢|“ÊmXÝÇmÅ»ÝÉâI*gê6wîdWÚˆ˜7\Õݽ¢˜ØÖGš;½O?ßëé¶¶©ó=¨Ûòü!~nÝýì¡èŒ7J|4ef9ì§gGuûnÓî–Íîž—4¿Û|ð¥åçybødJ;ÛQ<¼-w)Sù¨—Cò•ѯó½óëYºÍOŽÕ|ò½_oÕû£xÏû¨e·ëQòˆ–ÍT½<ºÜNÕÑ ž`Ôs»yª‚NŸãÉë¤Ôùä¦z,žÄó…Q´w¿;:ç73t{ß+ÿ�rDûÉZO¿0FØÀƲë‰ÿlîß+�]õ°†?èÍÐósʉéRRô:c:ý”·í.?îPµE+­v<ÏÁẟŸMq[Þ€zf›ëß«ën:Íãq X9¦÷«òÜ�®è¾Þí‡ÆýR÷5;º»·TôßìçxµiõÆÛéQìÅ:¶<ú3ùv¼ñïhχõO‹.éþ<Á¬²¼§ª]‡%o¨yÏ›çG9½›!?½¦¿mý(ÚîÖíö(†"^ÛË£2Uéïõп†~úõ|F›«ø$ùߨ~©:QK·^~ nƒÜvȪîk�)®ëu Û“¿&ŠsÙ¦Û öcõ„s¿¨º>ì„ÛŒ(>Ûþœ» Q»çÖ¡èH=¶Ãç»o(´›ÌëϯDÊ÷‚7¦7‹¢ñtŠúÈœ�.ø<Ñ ç:©Ûr°{_LïLï‹ ¤¾GåŸå‘°ºî×Û)Þ î×ÃÏ•wŠµÛ‰å�f^×z�{ÖX²”ï?æåÚ\ÅÛ/ÞQáÇ{FGïËùôÚÎÍSîàiuO�„óæÚ¬“6)kºÏ‘;_úst²nëü¨Y9)°›ÇxôLJ oÃz'üÑe@š|[Û_N¸ _÷À�ÇÏMÊØ}¼c<2Ô¸ö¾ýÖË`3Åý6qña�I:F°™†¾$^™°Øö ËÜ7lÝvF�^?ÇØ¨Å¯ÝvŽ–ùeyþM¥=¦n=ªrûçvíT'ÔÖ~@~´¾xRóMÅ]’¼ÃåfÕ—UëFõÛwk\·O9·ÆöŽ hº¢µ / Ïiâþæ^ù¿mÒ¤g“—ñp‚”Ng§êú)ç` &zm<‘å%Q�Û5{Ÿ ã¶�>Êæ6Éþœ,U–�òliçÔLðm,Gã`ti�äÉ|_Sá*&vVYž°ÙëO0üwÝÖÓ¢X¹]ìÄ<\)s�Mð„ �Ð8›)èKc‘(ö|M Uò$EG1gÌõQÌ<ÿrÕn1ýÄO>¢/‘¯úB¯ŸûôûµšÃac½þ¿ #Ië¤Äðµ=Wë£õhÁÀTB&ŸáŒÎ8ý8ÐonÖ0#oB 0òþÃÁëE&äÐXœc3íYóaý�£>?Іím�¾)‡|m¦úC Öyz,#Më·wÞ5o[=–[Š¡h“(Ôx¼²Ï«yrÔà fê‹äÆ@ß•'ë­ôÒùQ Aûw@Ì['½Eߊ´!Ìuº[µ¥ÖGÌ¥ Ñ8bóh/ŽúB�½žP38zîÿ©Ú8ŠÎu�þù™j¡ÀdZ'¸Åòs£XGô‹�\¯E¨0 6“hÅï®5/Pu;ßȼ¡Pº½s§×Á-VWTí­º?z矪w«Þ¨ûìåýÈ”Ö ·ªÞÅü5s¢wÆUžgË£® Eka||üíQt±ybTóGÕÖú"ù]`èèu}VáÃCBžõ¸Vµ_çSý+ ‘ÖInïÉ9_õñ¡¯i}t~À!ØL£œ´ñMQÌ,ïÉ:Ÿ4Íâ7¨¾«/’½YÐëëso python-django-debug-toolbar-8.0.0/docs/_static/brand/regenerate-pngs.sh000077500000000000000000000021311524561404200261150ustar00rootroot00000000000000#!/usr/bin/env bash # # Regenerate the PNG logos from the SVG sources. # # The SVGs are the source of truth. Whenever a logo SVG changes, re-run this # script so the bundled PNGs stay in sync. # # Each SVG is rasterized with headless Chrome at 3x its intrinsic size, keeping # a transparent background (the square app icons stay opaque via their own # background rect). # # Usage (from this directory): # ./regenerate-pngs.sh # # Requires Google Chrome. Override the binary with the CHROME env var, e.g. # CHROME=chromium ./regenerate-pngs.sh set -euo pipefail CHROME="${CHROME:-/Applications/Google Chrome.app/Contents/MacOS/Google Chrome}" cd "$(dirname "$0")" for f in *.svg; do w=$(grep -oE 'width="[0-9]+"' "$f" | head -1 | grep -oE '[0-9]+') h=$(grep -oE 'height="[0-9]+"' "$f" | head -1 | grep -oE '[0-9]+') out="${f%.svg}.png" "$CHROME" --headless --disable-gpu --screenshot="$PWD/$out" \ --window-size="${w},${h}" --force-device-scale-factor=3 \ --default-background-color=00000000 "file://$PWD/$f" >/dev/null 2>&1 echo "${f} -> ${out} (${w}x${h} @3x)" done python-django-debug-toolbar-8.0.0/docs/architecture.rst000066400000000000000000000077141524561404200232040ustar00rootroot00000000000000Architecture ============ The Django Debug Toolbar is designed to be flexible and extensible for developers and third-party panel creators. Core Components --------------- While there are several components, the majority of logic and complexity lives within the following: - ``debug_toolbar.middleware.DebugToolbarMiddleware`` - ``debug_toolbar.toolbar.DebugToolbar`` - ``debug_toolbar.panels`` ^^^^^^^^^^^^^^^^^^^^^^ DebugToolbarMiddleware ^^^^^^^^^^^^^^^^^^^^^^ The middleware is how the toolbar integrates with Django projects. It determines if the toolbar should instrument the request, which panels to use, facilitates the processing of the request and augmenting the response with the toolbar. Most logic for how the toolbar interacts with the user's Django project belongs here. ^^^^^^^^^^^^ DebugToolbar ^^^^^^^^^^^^ The ``DebugToolbar`` class orchestrates the processing of a request for each of the panels. It contains the logic that needs to be aware of all the panels, but doesn't need to interact with the user's Django project. ^^^^^^ Panels ^^^^^^ The majority of the complex logic lives within the panels themselves. This is because the panels are responsible for collecting the various metrics. Some of the metrics are collected via `monkey-patching `_, such as ``TemplatesPanel``. Others, such as ``SettingsPanel`` don't need to collect anything and include the data directly in the response. Some panels such as ``SQLPanel`` have additional functionality. This tends to involve a user clicking on something, and the toolbar presenting a new page with additional data. That additional data is handled in views defined in the panels package (for example, ``debug_toolbar.panels.sql.views``). Logic Flow ---------- When a request comes in, the toolbar first interacts with it in the middleware. If the middleware determines the request should be instrumented, it will instantiate the toolbar and pass the request for processing. The toolbar will use the enabled panels to collect information on the request and/or response. When the toolbar has completed collecting its metrics on both the request and response, the middleware will collect the results from the toolbar. It will inject the HTML and JavaScript to render the toolbar as well as any headers into the response. After the browser renders the panel and the user interacts with it, the toolbar's JavaScript will send requests to the server. If the view handling the request needs to fetch data from the toolbar, the request must supply the store ID. This is so that the toolbar can load the collected metrics for that particular request. The history panel allows a user to view the metrics for any request since the application was started. By default, the toolbar maintains its state entirely in memory (``MemoryStore``) for the process running ``runserver``. If the application is restarted the toolbar will lose its state. To persist data across restarts, configure ``TOOLBAR_STORE_CLASS`` to use ``DatabaseStore`` or ``CacheStore``. See the :ref:`TOOLBAR_STORE_CLASS ` configuration option for details. Problematic Parts ----------------- - ``debug.panels.templates.panel``: This monkey-patches template rendering when the panel module is loaded - ``debug.panels.sql``: This package is particularly complex, but provides the main benefit of the toolbar - Support for async and multi-threading: ``debug_toolbar.middleware.DebugToolbarMiddleware`` is now async compatible and can process async requests. However certain panels such as ``RequestPanel`` and ``ProfilingPanel`` aren't fully compatible and currently being worked on. For now, these panels are disabled by default when running in async environment. follow the progress of this issue in `Async compatible toolbar project `_. - Django Channels incompatibility: The toolbar does not currently support Django Channels' consumers due to the difference in middleware design. python-django-debug-toolbar-8.0.0/docs/changes.rst000066400000000000000000001235101524561404200221230ustar00rootroot00000000000000Change log ========== Pending 8.0.0 (2026-09-02) ------------------ * Refreshed the toolbar's visual design with self-hosted Alef (panel titles) and Geist (body text) fonts, an updated color palette, and per-panel navigation icons. * Added a new project logo and brand identity, designed by Robin of `RBNX Studio `_. * Added a "Docs" link to the toolbar that opens the documentation. * Changed the highlight color for the current request and other "relevant to you" rows from yellow to a green tint, with a left border accent for legibility in dark mode. * Added a design guidelines page to the documentation describing the project's logo, color palette and typography. * Improved toolbar accessibility: visible keyboard focus, keyboard-operable scroll regions, reduced-motion support, ``aria-expanded`` on panel toggles, an ``aria-live`` status for history refreshes, and WCAG 2.1 AA contrast in both themes. * Added a talk to the resources documentation. * Updated the example screenshot. * Updated the screenshot capture logic to find the toolbar elements in the shadow DOM. * Track and display processing time of application, including the toolbar's time, in the timer panel. * Fixed the History panel rendering a duplicate Refresh button below the one in its title bar. * Fixed the History panel's Refresh button submitting its form when clicked before the panel's script had loaded. * Documented the ``USE_SHADOW_DOM`` setting, which was added in 7.0.0 but was missing from the configuration documentation, and added test coverage for it. 7.1.1 (2026-08-14) ------------------ * Serialize ``TaskResult`` in the Tasks panel to accommodate the storage mechanism. * Removed whitespace on Task panel's ``kwargs`` column. 7.1.0 (2026-08-10) ------------------ * Added a Tasks panel that shows tasks queued during the request via Django's built-in tasks framework (``django.tasks``, Django 6.0+). On older versions of Django, the panel explains that upgrading is required. * Fixed the Django version check in the SQL panel test suite for Django's boolean parameter handling. * Fixed ``show_toolbar_with_docker`` on Docker runtimes such as OrbStack that can resolve ``host.docker.internal`` to an address outside the container network. * Restored the select and explain buttons for queries that run without parameters. * Fixed the error shown when panel content fails to load, which could not find the toolbar window inside the shadow root. * Stopped the history panel buttons from submitting their form when clicked before the panel script has loaded, which navigated away from the page. * Added support for Django 6.1. * Improved cache hit/miss reporting in the Cache panel for ``cache.get()`` calls with a supplied default value, while documenting the remaining ambiguity when a cached value equals the supplied default. 7.0.0 (2026-06-17) ------------------ * Prevent check from failing when ``ROOT_URLCONF`` is not defined. * Prevent toolbar storage from failing when serialized panel data contains mapping keys that are not JSON-compatible. * Prevent debounce race conditions in the history panel for rapid fetch requests. * Added a note to the prerequisites section of the installation docs about requiring an up-to-date browser. * Dropped support for Django 4.2 and Django 5.1 . * Updated to render the toolbar in a shadow DOM for better isolation from the rest of the page. This can be disabled with the setting ``USE_SHADOW_DOM``. * Note that custom themes overriding CSS variables on :root must move those overrides to ``#djDebug``, and custom panels that rely on external styles or DOM lookups reaching into the toolbar will need updates to work with the shadow DOM. * Added graceful degradation for SQL queries that exceed sqlparse's token limits. When ``SQLParseError`` is raised, the SQL panel now automatically disables grouping and retries formatting, preventing crashes with large queries. * Upgraded the JavaScript code to use modern ECMAScript features using ``esupgrade``. * Updated tox configuration to treat ``DeprecationWarning``, ``ResourceWarning``, and ``PendingDeprecationWarning`` as errors. * Clarified configuration documentation about ``SHOW_TOOLBAR_CALLBACK`` needing to respect ``django.conf.settings.DEBUG`` to match ``debug_toolbar_urls``. * Fixed cookie ``expires`` calculation in ``djdt.cookie.set``. * Account for the new ``CULL_PROBABILITY`` in Django 6.2 in tests. * Support Django 6.2's handling of booleans for non-PostgreSQL databases. * Changed the SQL panel to show the "Select" and "Explain" action buttons for all queries, not just ``SELECT`` statements. * Fixed SQL panel handling of binary parameters (e.g. from ``BinaryField``) and GeoDjango PostGIS geometry parameters. EWKB geometry adapters are now serialized and reconstructed so that Select and Explain work correctly on spatial queries. 6.3.0 (2026-04-01) ------------------ * Replaced ``requirements_dev.txt`` file for ``pyproject.toml`` support with dependency groups. * Updated ReadTheDocs Python version to 3.13. * Modernize some panel styles and colors. * Standardize use of time/duration units and labels across panels. * Added translations for Lithuanian, Turkish and Uzbek. * Update the translations. * Expose a ``py.typed`` marker file. * Updated ``RedirectsPanel`` to emit the deprecation warning when it's used rather than on instantiation. * Highlighted the documentation about disabling the browser's caching to ensure the latest static assets are used. * Fixed bug with ``CachePanel`` so the cache patching is only applied once. * Added ``debug_toolbar.store.CacheStore`` for storing toolbar data using Django's cache framework. This provides persistence without requiring database migrations, and works with any cache backend (Memcached, Redis, database, file-based, etc.). * Added ``CACHE_BACKEND`` and ``CACHE_KEY_PREFIX`` settings to configure the ``CacheStore``. 6.2.0 (2026-01-20) ------------------ * Deprecated ``RedirectsPanel`` in favor of ``HistoryPanel`` for viewing toolbar data from redirected requests. * Fixed support for generating code coverage comments in PRs. * Added Django 6.0 to the testing matrix. Removed Django 5.0 to save CI resources. * Show the cache backend alias and cache backend class name instead of the cache instance in the cache panel. * Dropped support for the Python 3.9, it has reached its end of life date. * Toggle tracking the toolbar's queries when using ``debug_toolbar.store.DatabaseStore`` with ``SKIP_TOOLBAR_QUERIES``. * Fixed font family for code blocks and stack traces in the toolbar. * Added test to confirm Django's ``TestCase.assertNumQueries`` works. * Fixed string representation of values in settings panel. * Declared support for Django 6.0. 6.1.0 (2025-10-30) ------------------ * Added support for async to timer panel. * Added a note about the default password in ``make example``. * Removed logging about the toolbar failing to serialize a value into JSON. * Moved the the import statement of ``debug_toolbar.urls`` to within the if statement's scope on the installation documentation. * Changed ``StoredDebugToolbar.from_store`` to always create a panel key and class instance, regardless if any data was generated. * Fixed selenium tests for CI by using psycopg for Python 3.13 runs. * Added ``CommunityPanel`` containing links to documentation and resources. * Upgraded CI ``postgis`` version to 17-3.5. * Added how to generate the documentation locally to the contributing documentation. * Updated logic that forces values to strings (``force_str``) to render "Django Debug Toolbar was unable to parse value." when there's a decoding error. * Updated docs to show incompatibility with Django Channels. * Hide the toolbar's migrations unless ``debug_toolbar.store.DatabaseStore`` is being used. This may change in the future. * Hide ``debug_toolbar.HistoryEntry`` as a model unless ``debug_toolbar.store.DatabaseStore`` is being used. This may change in the future. 6.0.0 (2025-07-22) ------------------ * Added support for checking if pytest as the test runner when determining if tests are running. * Added ``show_toolbar_with_docker`` function to check Docker host IP address when running inside Docker containers. * Defines the ``BaseStore`` interface for request storage mechanisms. * Added the setting ``TOOLBAR_STORE_CLASS`` to configure the request storage mechanism. Defaults to ``debug_toolbar.store.MemoryStore``. * Rename ``store_id`` properties to ``request_id`` and ``Toolbar.store`` to ``Toolbar.init_store``. * Support ``Panel`` instances with stored stats via ``Panel.load_stats_from_store``. * Swapped ``Toolbar._store`` for the ``get_store()`` class. * Created a ``StoredDebugToolbar`` that support creating an instance of the toolbar representing an old request. It should only be used for fetching panels' contents. * Drop ``raw_params`` from query data. * Queries now have a unique ``djdt_query_id``. The SQL forms now reference this id and avoid passing SQL to be executed. * Move the formatting logic of SQL queries to just before rendering in ``SQLPanel.content``. * Make ``Panel.panel_id`` a class member. * Update all panels to utilize data from ``Panel.get_stats()`` to load content to render. Specifically for ``Panel.title`` and ``Panel.nav_title``. * Extend example app to contain an async version. * Added ``debug_toolbar.store.DatabaseStore`` for persistent debug data storage. * Deduplicated static files in the staticfiles panel. 5.2.0 (2025-04-29) ------------------ * Added hook to RedirectsPanel for subclass customization. * Added feature to sanitize sensitive data in the Request Panel. * Fixed dark mode conflict in code block toolbar CSS. * Properly allowed overriding the system theme preference by using the theme selector. Removed the ``DEFAULT_THEME`` setting, we should always default to system-level defaults where possible. * Added support for using django-template-partials with the template panel's source view functionality. The same change possibly adds support for other template loaders. * Introduced `djade `__ to format Django templates. * Swapped display order of panel header and close button to prevent style conflicts * Added CSS for resetting the height of elements too to avoid problems with global CSS of a website where the toolbar is used. 5.1.0 (2025-03-20) ------------------ * Added Django 5.2 to the tox matrix. * Updated package metadata to include well-known labels. * Added resources section to the documentation. * Wrap ``SHOW_TOOLBAR_CALLBACK`` function with ``sync_to_async`` or ``async_to_sync`` to allow sync/async compatibility. * Make ``require_toolbar`` decorator compatible to async views. * Added link to contributing documentation in ``CONTRIBUTING.md``. * Replaced ESLint and prettier with biome in our pre-commit configuration. * Added a Makefile target (``make help``) to get a quick overview of each target. * Avoided reinitializing the staticfiles storage during instrumentation. * Avoided a "forked" Promise chain in the rebound ``window.fetch`` function with missing exception handling. * Fixed the pygments code highlighting when using dark mode. * Fix for exception-unhandled "forked" Promise chain in rebound window.fetch * Create a CSP nonce property on the toolbar ``Toolbar().csp_nonce``. 5.0.1 (2025-01-13) ------------------ * Fixing the build and release process. No functional changes. 5.0.0 (2025-01-11) ------------------ * Added Python 3.13 to the CI matrix. * Removed support for Python 3.8 as it has reached end of life. * Converted to Django Commons PyPI release process. * Fixed a crash which occurred when using non-``str`` static file values. * Documented experimental async support. * Improved troubleshooting doc for incorrect mime types for .js static files * Added toolbar time to the timer panel. Please see everything under 5.0.0-alpha as well. 5.0.0-alpha (2024-09-01) ------------------------ * Support async applications and ASGI from `Google Summer of Code Project 2024 `__. * Added Django 5.1 to the CI matrix. * Added support for the ``LoginRequiredMiddleware`` introduced in Django 5.1. * Support select and explain buttons for ``UNION`` queries on PostgreSQL. * Fixed internal toolbar requests being instrumented if the Django setting ``FORCE_SCRIPT_NAME`` was set. * Increase opacity of show Debug Toolbar handle to improve accessibility. * Changed the ``RedirectsPanel`` to be async compatible. * Increased the contrast of text with dark mode enabled. * Add translations for Bulgarian and Korean. * Update translations for several languages. * Include new translatable strings for translation. * Fixed a crash which happened in the fallback case when session keys cannot be sorted. 4.4.6 (2024-07-10) ------------------ * Changed ordering (and grammatical number) of panels and their titles in documentation to match actual panel ordering and titles. * Skipped processing the alerts panel when response isn't a HTML response. 4.4.5 (2024-07-05) ------------------ * Avoided crashing when the alerts panel was skipped. * Removed the inadvertently added hard dependency on Jinja2. 4.4.4 (2024-07-05) ------------------ * Added check for StreamingHttpResponse in alerts panel. * Instrument the Django Jinja2 template backend. This only instruments the immediate template that's rendered. It will not provide stats on any parent templates. 4.4.3 (2024-07-04) ------------------ * Added alerts panel with warning when form is using file fields without proper encoding type. * Fixed overriding font-family for both light and dark themes. * Restored compatibility with ``iptools.IpRangeList``. * Limit ``E001`` check to likely error cases when the ``SHOW_TOOLBAR_CALLBACK`` has changed, but the toolbar's URL paths aren't installed. * Introduce helper function ``debug_toolbar_urls`` to simplify installation. * Moved "1rem" height/width for SVGs to CSS properties. 4.4.2 (2024-05-27) ------------------ * Removed some CSS which wasn't carefully limited to the toolbar's elements. * Stopped assuming that ``INTERNAL_IPS`` is a list. * Added a section to the installation docs about running tests in projects where the toolbar is being used. 4.4.1 (2024-05-26) ------------------ * Pin metadata version to 2.2 to be compatible with Jazzband release process. 4.4.0 (2024-05-26) ------------------ * Raised the minimum Django version to 4.2. * Automatically support Docker rather than having the developer write a workaround for ``INTERNAL_IPS``. * Display a better error message when the toolbar's requests return invalid json. * Render forms with ``as_div`` to silence Django 5.0 deprecation warnings. * Stayed on top of pre-commit hook updates. * Added :doc:`architecture documentation ` to help on-board new contributors. * Removed the static file path validation check in :class:`StaticFilesPanel ` since that check is made redundant by a similar check in Django 4.0 and later. * Deprecated the ``OBSERVE_REQUEST_CALLBACK`` setting and added check ``debug_toolbar.W008`` to warn when it is present in ``DEBUG_TOOLBAR_SETTINGS``. * Add a note on the profiling panel about using Python 3.12 and later about needing ``--nothreading`` * Added ``IS_RUNNING_TESTS`` setting to allow overriding the ``debug_toolbar.E001`` check to avoid including the toolbar when running tests. * Fixed the bug causing ``'djdt' is not a registered namespace`` and updated docs to help in initial configuration while running tests. * Added a link in the installation docs to a more complete installation example in the example app. * Added check to prevent the toolbar from being installed when tests are running. * Added test to example app and command to run the example app's tests. * Implemented dark mode theme and button to toggle the theme, introduced the ``DEFAULT_THEME`` setting which sets the default theme to use. 4.3.0 (2024-02-01) ------------------ * Dropped support for Django 4.0. * Added Python 3.12 to test matrix. * Removed outdated third-party panels from the list. * Avoided the unnecessary work of recursively quoting SQL parameters. * Postponed context process in templates panel to include lazy evaluated content. * Fixed template panel to avoid evaluating ``LazyObject`` when not already evaluated. * Added support for Django 5.0. * Refactor the ``utils.get_name_from_obj`` to simulate the behavior of ``django.contrib.admindocs.utils.get_view_name``. * Switched from black to the `ruff formatter `__. * Changed the default position of the toolbar from top to the upper top position. * Added the setting, ``UPDATE_ON_FETCH`` to control whether the toolbar automatically updates to the latest AJAX request or not. It defaults to ``False``. 4.2.0 (2023-08-10) ------------------ * Adjusted app directories system check to allow for nested template loaders. * Switched from flake8, isort and pyupgrade to `ruff `__. * Converted cookie keys to lowercase. Fixed the ``samesite`` argument to ``djdt.cookie.set``. * Converted ``StaticFilesPanel`` to no longer use a thread collector. Instead, it collects the used static files in a ``ContextVar``. * Added check ``debug_toolbar.W007`` to warn when JavaScript files are resolving to the wrong content type. * Fixed SQL statement recording under PostgreSQL for queries encoded as byte strings. * Patch the ``CursorWrapper`` class with a mixin class to support multiple base wrapper classes. 4.1.0 (2023-05-15) ------------------ * Improved SQL statement formatting performance. Additionally, fixed the indentation of ``CASE`` statements and stopped simplifying ``.count()`` queries. * Added support for the new STORAGES setting in Django 4.2 for static files. * Added support for theme overrides. * Reworked the cache panel instrumentation code to no longer attempt to undo monkey patching of cache methods, as that turned out to be fragile in the presence of other code which also monkey patches those methods. * Update all timing code that used :py:func:`time.time()` to use :py:func:`time.perf_counter()` instead. * Made the check on ``request.META["wsgi.multiprocess"]`` optional, but defaults to forcing the toolbar to render the panels on each request. This is because it's likely an ASGI application that's serving the responses and that's more likely to be an incompatible setup. If you find that this is incorrect for you in particular, you can use the ``RENDER_PANELS`` setting to forcibly control this logic. 4.0.0 (2023-04-03) ------------------ * Added Django 4.2 to the CI. * Dropped support for Python 3.7. * Fixed PostgreSQL raw query with a tuple parameter during on explain. * Use ``TOOLBAR_LANGUAGE`` setting when rendering individual panels that are loaded via AJAX. * Add decorator for rendering toolbar views with ``TOOLBAR_LANGUAGE``. * Removed the logging panel. The panel's implementation was too complex, caused memory leaks and sometimes very verbose and hard to silence output in some environments (but not others). The maintainers judged that time and effort is better invested elsewhere. * Added support for psycopg3. * When ``ENABLE_STACKTRACE_LOCALS`` is ``True``, the stack frames' locals dicts will be converted to strings when the stack trace is captured rather when it is rendered, so that the correct values will be displayed in the rendered stack trace, as they may have changed between the time the stack trace was captured and when it is rendered. 3.8.1 (2022-12-03) ------------------ * Fixed release process by re-adding twine to release dependencies. No functional change. 3.8.0 (2022-12-03) ------------------ * Added protection against division by 0 in timer.js * Auto-update History panel for JavaScript ``fetch`` requests. * Support `HTMX boosting `__ and `Turbo `__ pages. * Simplify logic for ``Panel.enabled`` property by checking cookies earlier. * Include panel scripts in content when ``RENDER_PANELS`` is set to True. * Create one-time mouseup listener for each mousedown when dragging the handle. * Update package metadata to use Hatchling. * Fix highlighting on history panel so odd rows are highlighted when selected. * Formalize support for Python 3.11. * Added ``TOOLBAR_LANGUAGE`` setting. 3.7.0 (2022-09-25) ------------------ * Added Profiling panel setting ``PROFILER_THRESHOLD_RATIO`` to give users better control over how many function calls are included. A higher value will include more data, but increase render time. * Update Profiling panel to include try to always include user code. This code is more important to developers than dependency code. * Highlight the project function calls in the profiling panel. * Added Profiling panel setting ``PROFILER_CAPTURE_PROJECT_CODE`` to allow users to disable the inclusion of all project code. This will be useful to project setups that have dependencies installed under ``settings.BASE_DIR``. * The toolbar's font stack now prefers system UI fonts. Tweaked paddings, margins and alignments a bit in the CSS code. * Only sort the session dictionary when the keys are all strings. Fixes a bug that causes the toolbar to crash when non-strings are used as keys. 3.6.0 (2022-08-17) ------------------ * Remove decorator ``signed_data_view`` as it was causing issues with `django-urlconfchecks `__. * Added pygments to the test environment and fixed a crash when using the template panel with Django 4.1 and pygments installed. * Stayed on top of pre-commit hook and GitHub actions updates. * Added some workarounds to avoid a Chromium warning which was worrisome to developers. * Avoided using deprecated Selenium methods to find elements. * Raised the minimum Django version from 3.2 to 3.2.4 so that we can take advantage of backported improvements to the cache connection handler. 3.5.0 (2022-06-23) ------------------ * Properly implemented tracking and display of PostgreSQL transactions. * Removed third party panels which have been archived on GitHub. * Added Django 4.1b1 to the CI matrix. * Stopped crashing when ``request.GET`` and ``request.POST`` are neither dictionaries nor ``QueryDict`` instances. Using anything but ``QueryDict`` instances isn't a valid use of Django but, again, django-debug-toolbar shouldn't crash. * Fixed the cache panel to work correctly in the presence of concurrency by avoiding the use of signals. * Reworked the cache panel instrumentation mechanism to monkey patch methods on the cache instances directly instead of replacing cache instances with wrapper classes. * Added a :meth:`debug_toolbar.panels.Panel.ready` class method that panels can override to perform any initialization or instrumentation that needs to be done unconditionally at startup time. * Added pyflame (for flame graphs) to the list of third-party panels. * Fixed the cache panel to correctly count cache misses from the get_many() cache method. * Removed some obsolete compatibility code from the stack trace recording code. * Added a new mechanism for capturing stack traces which includes per-request caching to reduce expensive file system operations. Updated the cache and SQL panels to record stack traces using this new mechanism. * Changed the ``docs`` tox environment to allow passing positional arguments. This allows e.g. building a HTML version of the docs using ``tox -e docs html``. * Stayed on top of pre-commit hook updates. * Replaced ``OrderedDict`` by ``dict`` where possible. Deprecated features ~~~~~~~~~~~~~~~~~~~ * The ``debug_toolbar.utils.get_stack()`` and ``debug_toolbar.utils.tidy_stacktrace()`` functions are deprecated in favor of the new ``debug_toolbar.utils.get_stack_trace()`` function. They will removed in the next major version of the Debug Toolbar. 3.4.0 (2022-05-03) ------------------ * Fixed issue of stacktrace having frames that have no path to the file, but are instead a string of the code such as ``''``. * Renamed internal SQL tracking context var from ``recording`` to ``allow_sql``. 3.3.0 (2022-04-28) ------------------ * Track calls to :py:meth:`django.core.cache.cache.get_or_set`. * Removed support for Django < 3.2. * Updated check ``W006`` to look for ``django.template.loaders.app_directories.Loader``. * Reset settings when overridden in tests. Packages or projects using django-debug-toolbar can now use Django’s test settings tools, like ``@override_settings``, to reconfigure the toolbar during tests. * Optimize rendering of SQL panel, saving about 30% of its run time. * New records in history panel will flash green. * Automatically update History panel on AJAX requests from client. 3.2.4 (2021-12-15) ------------------ * Revert PR 1426 - Fixes issue with SQL parameters having leading and trailing characters stripped away. 3.2.3 (2021-12-12) ------------------ * Changed cache monkey-patching for Django 3.2+ to iterate over existing caches and patch them individually rather than attempting to patch ``django.core.cache`` as a whole. The ``middleware.cache`` is still being patched as a whole in order to attempt to catch any cache usages before ``enable_instrumentation`` is called. * Add check ``W006`` to warn that the toolbar is incompatible with ``TEMPLATES`` settings configurations with ``APP_DIRS`` set to ``False``. * Create ``urls`` module and update documentation to no longer require importing the toolbar package. 3.2.2 (2021-08-14) ------------------ * Ensured that the handle stays within bounds when resizing the window. * Disabled ``HistoryPanel`` when ``RENDER_PANELS`` is ``True`` or if ``RENDER_PANELS`` is ``None`` and the WSGI container is running with multiple processes. * Fixed ``RENDER_PANELS`` functionality so that when ``True`` panels are rendered during the request and not loaded asynchronously. * HistoryPanel now shows status codes of responses. * Support ``request.urlconf`` override when checking for toolbar requests. 3.2.1 (2021-04-14) ------------------ * Fixed SQL Injection vulnerability, CVE-2021-30459. The toolbar now calculates a signature on all fields for the SQL select, explain, and analyze forms. * Changed ``djdt.cookie.set()`` to set ``sameSite=Lax`` by default if callers do not provide a value. * Added ``PRETTIFY_SQL`` configuration option to support controlling SQL token grouping. By default it's set to True. When set to False, a performance improvement can be seen by the SQL panel. * Added a JavaScript event when a panel loads of the format ``djdt.panel.[PanelId]`` where PanelId is the ``panel_id`` property of the panel's Python class. Listening for this event corrects the bug in the Timer Panel in which it didn't insert the browser timings after switching requests in the History Panel. * Fixed issue with the toolbar expecting URL paths to start with ``/__debug__/`` while the documentation indicates it's not required. 3.2 (2020-12-03) ---------------- * Moved CI to GitHub Actions: https://github.com/jazzband/django-debug-toolbar/actions * Stopped crashing when ``request.GET`` and ``request.POST`` are dictionaries instead of ``QueryDict`` instances. This isn't a valid use of Django but django-debug-toolbar shouldn't crash anyway. * Fixed a crash in the history panel when sending a JSON POST request with invalid JSON. * Added missing signals to the signals panel by default. * Documented how to avoid CORS errors now that we're using JavaScript modules. * Verified support for Python 3.9. * Added a ``css`` and a ``js`` template block to ``debug_toolbar/base.html`` to allow overriding CSS and JS. 3.2a1 (2020-10-19) ------------------ * Fixed a regression where the JavaScript code crashed with an invalid CSS selector when searching for an element to replace. * Replaced remaining images with CSS. * Continued refactoring the HTML and CSS code for simplicity, continued improving the use of semantic HTML. * Stopped caring about prehistoric browsers for good. Started splitting up the JavaScript code to take advantage of JavaScript modules. * Continued removing unused CSS. * Started running Selenium tests on Travis CI. * Added a system check which prevents using django-debug-toolbar without any enabled panels. * Added :meth:`Panel.run_checks() ` for panels to verify the configuration before the application starts. * Validate the static file paths specified in ``STATICFILES_DIRS`` exist via :class:`~debug_toolbar.panels.staticfiles.StaticFilesPanel` * Introduced `prettier `__ to format the frontend code. * Started accessing history views using GET requests since they do not change state on the server. * Fixed a bug where unsuccessful requests (e.g. network errors) were silently ignored. * Started spellchecking the documentation. * Removed calls to the deprecated ``request.is_ajax()`` method. These calls were unnecessary now that most endpoints return JSON anyway. * Removed support for Python 3.5. 3.1 (2020-09-21) ---------------- * Fixed a crash in the history panel when sending an empty JSON POST request. * Made ``make example`` also set up the database and a superuser account. * Added a Makefile target for regenerating the django-debug-toolbar screenshot. * Added automatic escaping of panel titles resp. disallowed HTML tags. * Removed some CSS * Restructured the SQL stats template. * Changed command line examples to prefer ``python -m pip`` to ``pip``. 3.0 (2020-09-20) ---------------- * Added an ``.editorconfig`` file specifying indentation rules etc. * Updated the Italian translation. * Added support for Django 3.1a1. ``fetch()`` and ``jQuery.ajax`` requests are now detected by the absence of a ``Accept: text/html`` header instead of the jQuery-specific ``X-Requested-With`` header on Django 3.1 or better. * Pruned unused CSS and removed hacks for ancient browsers. * Added the new :attr:`Panel.scripts ` property. This property should return a list of JavaScript resources to be loaded in the browser when displaying the panel. Right now, this is used by a single panel, the Timer panel. Third party panels can use this property to add scripts rather then embedding them in the content HTML. * Switched from JSHint to ESLint. Added an ESLint job to the Travis CI matrix. * Debug toolbar state which is only needed in the JavaScript code now uses ``localStorage``. * Updated the code to avoid a few deprecation warnings and resource warnings. * Started loading JavaScript as ES6 modules. * Added support for :meth:`cache.touch() ` when using django-debug-toolbar. * Eliminated more inline CSS. * Updated ``tox.ini`` and ``Makefile`` to use isort>=5. * Increased RESULTS_CACHE_SIZE to 25 to better support AJAX requests. * Fixed the close button CSS by explicitly specifying the ``box-sizing`` property. * Simplified the ``isort`` configuration by taking advantage of isort's ``black`` profile. * Added :class:`~debug_toolbar.panels.history.HistoryPanel` including support for AJAX requests. **Backwards incompatible changes** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Loading panel content no longer executes the scripts elements embedded in the HTML. Third party panels that require JavaScript resources should now use the :attr:`Panel.scripts ` property. * Removed support for end of life Django 1.11. The minimum supported Django is now 2.2. * The Debug Toolbar now loads a `JavaScript module`_. Typical local development using Django ``runserver`` is not impacted. However, if your application server and static files server are at different origins, you may see CORS errors in your browser's development console. See the "Cross-Origin Request Blocked" section of the :doc:`installation docs ` for details on how to resolve this issue. .. _JavaScript module: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules 2.2 (2020-01-31) ---------------- * Removed support for end of life Django 2.0 and 2.1. * Added support for Python 3.8. * Add locals() option for SQL panel. * Added support for Django 3.0. 2.1 (2019-11-12) ---------------- * Changed the Travis CI matrix to run style checks first. * Exposed the ``djdt.init`` function too. * Small improvements to the code to take advantage of newer Django APIs and avoid warnings because of deprecated code. * Verified compatibility with the upcoming Django 3.0 (at the time of writing). 2.0 (2019-06-20) ---------------- * Updated :class:`~debug_toolbar.panels.staticfiles.StaticFilesPanel` to be compatible with Django 3.0. * The :class:`~debug_toolbar.panels.profiling.ProfilingPanel` is now enabled but inactive by default. * Fixed toggling of table rows in the profiling panel UI. * The :class:`~debug_toolbar.panels.profiling.ProfilingPanel` no longer skips remaining panels or middlewares. * Improved the installation documentation. * Fixed a possible crash in the template panel. * Added support for psycopg2 ``Composed`` objects. * Changed the Jinja2 tests to use Django's own Jinja2 template backend. * Added instrumentation to queries using server side cursors. * Too many small improvements and cleanups to list them all. **Backwards incompatible changes** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Removed support for Python 2. * Removed support for Django's deprecated ``MIDDLEWARE_CLASSES`` setting. * Restructured :class:`debug_toolbar.panels.Panel` to execute more like the new-style Django MIDDLEWARE. The ``Panel.__init__()`` method is now passed ``get_response`` as the first positional argument. The :meth:`debug_toolbar.panels.Panel.process_request` method must now always return a response. Usually this is the response returned by ``get_response()`` but the panel may also return a different response as is the case in the :class:`~debug_toolbar.panels.redirects.RedirectsPanel`. Third party panels must adjust to this new architecture. ``Panel.process_response()`` and ``Panel.process_view()`` have been removed as a result of this change. The deprecated API, ``debug_toolbar.panels.DebugPanel``, has been removed. Third party panels should use :class:`debug_toolbar.panels.Panel` instead. The following deprecated settings have been removed: * ``HIDDEN_STACKTRACE_MODULES`` * ``HIDE_DJANGO_SQL`` * ``INTERCEPT_REDIRECTS`` * ``RESULTS_STORE_SIZE`` * ``ROOT_TAG_ATTRS`` * ``TAG`` 1.11 (2018-12-03) ----------------- * Use ``defer`` on all ``

    Index of Tests (htmx) - Page {{ page_num|default:"1" }}

    For the debug panel to remain through page navigation, add the setting:

    DEBUG_TOOLBAR_CONFIG = {
      "ROOT_TAG_EXTRA_ATTRS": "hx-preserve"
    }
          

    Home python-django-debug-toolbar-8.0.0/example/templates/index.html000066400000000000000000000046001524561404200244550ustar00rootroot00000000000000{% load cache %} Index of Tests

    Index of Tests

    {% cache 10 index_cache %}

    Django Admin

    {% endcache %}

    Value {{ request.session.value|default:0 }}

    {% comment %} {% endcomment %} python-django-debug-toolbar-8.0.0/example/templates/jinja2/000077500000000000000000000000001524561404200236355ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/example/templates/jinja2/index.jinja000066400000000000000000000004701524561404200257620ustar00rootroot00000000000000 jinja Test

    jinja Test

    {{ foo }} {% for i in range(10) %}{{ i }}{% endfor %} {# Jinja2 supports range(), Django templates do not #} python-django-debug-toolbar-8.0.0/example/templates/jquery/000077500000000000000000000000001524561404200237775ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/example/templates/jquery/index.html000066400000000000000000000010141524561404200257700ustar00rootroot00000000000000 jQuery Test

    jQuery Test

    If you see this, jQuery is working.

    python-django-debug-toolbar-8.0.0/example/templates/mootools/000077500000000000000000000000001524561404200243335ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/example/templates/mootools/index.html000066400000000000000000000011021524561404200263220ustar00rootroot00000000000000 MooTools Test

    MooTools Test

    If you see this, MooTools is working.

    python-django-debug-toolbar-8.0.0/example/templates/prototype/000077500000000000000000000000001524561404200245255ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/example/templates/prototype/index.html000066400000000000000000000011201524561404200265140ustar00rootroot00000000000000 Prototype Test

    Prototype Test

    If you see this, Prototype is working.

    python-django-debug-toolbar-8.0.0/example/templates/tasks.html000066400000000000000000000007021524561404200244720ustar00rootroot00000000000000 Tasks

    Tasks Test

    {% if tasks_available %}

    Two tasks were just enqueued. Check the Tasks panel to see them.

    {% else %}

    django.tasks requires Django 6.0+. Check the Tasks panel to see the upgrade message.

    {% endif %} python-django-debug-toolbar-8.0.0/example/templates/turbo/000077500000000000000000000000001524561404200236135ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/example/templates/turbo/index.html000066400000000000000000000036111524561404200256110ustar00rootroot00000000000000{% load cache %} Index of Tests

    Turbo Index - Page {{ page_num|default:"1" }}

    For the debug panel to remain through page navigation, add the setting:

    DEBUG_TOOLBAR_CONFIG = {
      "ROOT_TAG_EXTRA_ATTRS": "data-turbo-permanent"
    }
          

    Value {{ request.session.value|default:0 }}

    Home python-django-debug-toolbar-8.0.0/example/test_views.py000066400000000000000000000006041524561404200232300ustar00rootroot00000000000000# Add tests to example app to check how the toolbar is used # when running tests for a project. # See https://github.com/django-commons/django-debug-toolbar/issues/1405 from django.test import TestCase from django.urls import reverse class ViewTestCase(TestCase): def test_index(self): response = self.client.get(reverse("home")) assert response.status_code == 200 python-django-debug-toolbar-8.0.0/example/urls.py000066400000000000000000000034171524561404200220260ustar00rootroot00000000000000from django.contrib import admin from django.urls import path from django.views.generic import TemplateView from debug_toolbar.toolbar import debug_toolbar_urls from example.views import ( async_db, async_db_concurrent, async_home, cache_view, increment, jinja2_view, tasks_view, ) urlpatterns = [ path("", TemplateView.as_view(template_name="index.html"), name="home"), path( "bad-form/", TemplateView.as_view(template_name="bad_form.html"), name="bad_form", ), path("jinja/", jinja2_view, name="jinja"), path("async/", async_home, name="async_home"), path("async/db/", async_db, name="async_db"), path("async/db-concurrent/", async_db_concurrent, name="async_db_concurrent"), path("jquery/", TemplateView.as_view(template_name="jquery/index.html")), path("mootools/", TemplateView.as_view(template_name="mootools/index.html")), path("prototype/", TemplateView.as_view(template_name="prototype/index.html")), path( "htmx/boost/", TemplateView.as_view(template_name="htmx/boost.html"), name="htmx", ), path( "htmx/boost/2", TemplateView.as_view( template_name="htmx/boost.html", extra_context={"page_num": "2"} ), name="htmx2", ), path( "turbo/", TemplateView.as_view(template_name="turbo/index.html"), name="turbo" ), path( "turbo/2", TemplateView.as_view( template_name="turbo/index.html", extra_context={"page_num": "2"} ), name="turbo2", ), path("cache/", cache_view, name="cache"), path("tasks/", tasks_view, name="tasks"), path("admin/", admin.site.urls), path("ajax/increment", increment, name="ajax_increment"), ] + debug_toolbar_urls() python-django-debug-toolbar-8.0.0/example/views.py000066400000000000000000000031441524561404200221730ustar00rootroot00000000000000import asyncio import django from asgiref.sync import sync_to_async from django.contrib.auth.models import User from django.core.cache import cache from django.http import JsonResponse from django.shortcuts import render TASKS_AVAILABLE = django.VERSION >= (6, 0) if TASKS_AVAILABLE: from django.tasks import task @task def example_task(x=1, y=2): return x + y def tasks_view(request): if TASKS_AVAILABLE: example_task.enqueue(1, y=2) example_task.enqueue(3, y=4) return render(request, "tasks.html", {"tasks_available": TASKS_AVAILABLE}) def increment(request): try: value = int(request.session.get("value", 0)) + 1 except ValueError: value = 1 request.session["value"] = value return JsonResponse({"value": value}) def jinja2_view(request): return render(request, "index.jinja", {"foo": "bar"}, using="jinja2") async def async_home(request): return await sync_to_async(render)(request, "index.html") async def async_db(request): user_count = await User.objects.acount() return await sync_to_async(render)( request, "async_db.html", {"user_count": user_count} ) async def async_db_concurrent(request): # Do database queries concurrently (user_count, _) = await asyncio.gather( User.objects.acount(), User.objects.filter(username="test").acount() ) return await sync_to_async(render)( request, "async_db.html", {"user_count": user_count} ) def cache_view(request): cache.set("foo", "bar") cache.get("foo") cache.get("baz") return render(request, "cache.html") python-django-debug-toolbar-8.0.0/example/wsgi.py000066400000000000000000000003201524561404200220000ustar00rootroot00000000000000"""WSGI config for example project.""" import os from django.core.wsgi import get_wsgi_application os.environ.setdefault("DJANGO_SETTINGS_MODULE", "example.settings") application = get_wsgi_application() python-django-debug-toolbar-8.0.0/package-lock.json000066400000000000000000002453221524561404200222530ustar00rootroot00000000000000{ "name": "django-debug-toolbar", "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "django-debug-toolbar", "version": "0.1.0", "license": "BSD-3-Clause", "devDependencies": { "@emnapi/core": "^1.11.3", "@emnapi/runtime": "^1.11.3", "@vitest/browser-playwright": "*", "@vitest/coverage-istanbul": "*" }, "engines": { "node": ">=24.0.0", "npm": ">=11.0.0" } }, "node_modules/@babel/code-frame": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.7", "@babel/helper-compilation-targets": "^7.29.7", "@babel/helper-module-transforms": "^7.29.7", "@babel/helpers": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/template": "^7.29.7", "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/babel" } }, "node_modules/@babel/generator": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.29.7", "@babel/types": "^7.29.7", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.29.7", "@babel/helper-validator-option": "^7.29.7", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-globals": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", "dev": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7", "@babel/traverse": "^7.29.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-string-parser": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.29.7", "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.29.7" }, "bin": { "parser": "bin/babel-parser.js" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/template": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.7", "@babel/helper-globals": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/template": "^7.29.7", "@babel/types": "^7.29.7", "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@blazediff/core": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@blazediff/core/-/core-1.9.1.tgz", "integrity": "sha512-ehg3jIkYKulZh+8om/O25vkvSsXXwC+skXmyA87FFx6A/45eqOkZsBltMw/TVteb0mloiGT8oGRTcjRAz66zaA==", "dev": true, "license": "MIT" }, "node_modules/@emnapi/core": { "version": "1.11.3", "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.3.tgz", "integrity": "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==", "dev": true, "license": "MIT", "dependencies": { "@emnapi/wasi-threads": "1.2.3", "tslib": "^2.4.0" } }, "node_modules/@emnapi/runtime": { "version": "1.11.3", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz", "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==", "dev": true, "license": "MIT", "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@emnapi/wasi-threads": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz", "integrity": "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==", "dev": true, "license": "MIT", "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@istanbuljs/schema": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.6.tgz", "integrity": "sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "node_modules/@jridgewell/remapping": { "version": "2.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.31", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@oxc-project/types": { "version": "0.146.0", "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.146.0.tgz", "integrity": "sha512-XC0QsnnhVe7sLIWmYmdPw7x5P0h4W8vUU3Nv1ySgWXtvCz8NizoAEpGXA0sOYoJQV2Rl13LgURAHQ5cI5ILCSA==", "dev": true, "license": "MIT", "peer": true, "funding": { "url": "https://github.com/sponsors/Boshen" } }, "node_modules/@polka/url": { "version": "1.0.0-next.29", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", "dev": true, "license": "MIT" }, "node_modules/@rolldown/binding-android-arm-eabi": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.5.tgz", "integrity": "sha512-DLe/i+l8ynIBY7XEQ191TeZvCoowIGa18R+dIV30GW7DiOtp74i/xX8hs8GUjW5ARV7VZuie3d6AumSmCwbeRA==", "cpu": [ "arm" ], "dev": true, "license": "MIT", "optional": true, "os": [ "android" ], "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-android-arm64": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.5.tgz", "integrity": "sha512-zXcwKlQApYAOELHd8PwKDFkagYF9Wy4e0RJ+0qnzl9Pjnpj75TEG8ufv40p2J7kCEfwZAsNiuzRIyNNMWT38ig==", "cpu": [ "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "android" ], "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-darwin-arm64": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.5.tgz", "integrity": "sha512-dK4QakI42nzWgJT5sm4y4y/O//D4OxM75/cH28RLV+nzIN9AY+YsbuUVrUTjlLjXR6vpyxFbSsbmNuJ6BP9sww==", "cpu": [ "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" ], "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-darwin-x64": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.5.tgz", "integrity": "sha512-fqSALaUu1Wjd1nK2uW2kJDWdLCc8lx1IcY+MTY26Aurfdx19anlzhqXOgCFbBFQnlFDTn4TC1/7Nz4Bl2mLP3A==", "cpu": [ "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" ], "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-freebsd-x64": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.5.tgz", "integrity": "sha512-/vCnNxlkxs9tKxNDcyWUePpJ/PgTzxIaVhoM5SmG8UV+GR/IcPam4VYxi7GIMo7PSDuNqlJqvprqii9NqqVCMw==", "cpu": [ "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "freebsd" ], "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-linux-arm-gnueabihf": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.5.tgz", "integrity": "sha512-abk0NLA519LxRCszmbE0jYKuQ9YPocOXTiOXOo6Yr+YAT95VH+PtqYAjOJvGKt3viEd/x4qzabAlwd5bHOOARg==", "cpu": [ "arm" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-linux-arm64-gnu": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.5.tgz", "integrity": "sha512-Y7eALiJ8lr0M2HH103Js+g7V34wf6snlpZLAsHI90uLhr3PVlNsbFVAXJC9d/V6BnPyKtpSwI+NcB/RLxsQxuA==", "cpu": [ "arm64" ], "dev": true, "libc": [ "glibc" ], "license": "MIT", "optional": true, "os": [ "linux" ], "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-linux-arm64-musl": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.5.tgz", "integrity": "sha512-xMvZgnbZg4YVnR/AX2b3oOPDTFYJvUVaJg5FedA/LuvexAtXibZQej4cnTkw3rjsJ/ggUROB64TdtETiim+FYA==", "cpu": [ "arm64" ], "dev": true, "libc": [ "musl" ], "license": "MIT", "optional": true, "os": [ "linux" ], "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-linux-ppc64-gnu": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.5.tgz", "integrity": "sha512-GRjeqTUDHTo5GwntsLaAMcBahG3nlpjftXWZLN73HiYQlhwEowvarFgQnRnQZtIp4keXX7quXFbG38uPZBa2EA==", "cpu": [ "ppc64" ], "dev": true, "libc": [ "glibc" ], "license": "MIT", "optional": true, "os": [ "linux" ], "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-linux-s390x-gnu": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.5.tgz", "integrity": "sha512-vLNTR45F2Uwc8AufkNXPmB4VliaXs+FvcheEogIzOXzO4l+LzieXF5A/TWxLy5HtqpsRCHUfd0lPVrrdgXdLHQ==", "cpu": [ "s390x" ], "dev": true, "libc": [ "glibc" ], "license": "MIT", "optional": true, "os": [ "linux" ], "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-linux-x64-gnu": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.5.tgz", "integrity": "sha512-Mgj59/HTuYeK9Gz2MA+mBWKnHsAgkBSec15ZMb1st3oIfFbX7gCjOae7GydHhzcyQi9Z/7M1QuN9bR3oFqF0jQ==", "cpu": [ "x64" ], "dev": true, "libc": [ "glibc" ], "license": "MIT", "optional": true, "os": [ "linux" ], "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-linux-x64-musl": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.5.tgz", "integrity": "sha512-mY8AP0/ichsbhAxGnLa3d3+MwV0EfgrPND2bplI3Ym8T6R2pJ0N87bvrKVwNXmdy3jnr6eQBecdqx/HMknBmpA==", "cpu": [ "x64" ], "dev": true, "libc": [ "musl" ], "license": "MIT", "optional": true, "os": [ "linux" ], "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-openharmony-arm64": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.5.tgz", "integrity": "sha512-8SLssA2oweAxyRgDp789ACfRb/3P+zNRJpzZxSizxF9m8NUDQ4+3xjo8ttjhVGGw6Qxb70oZiEtIjaKikCO7Yw==", "cpu": [ "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "openharmony" ], "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-win32-arm64-msvc": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.5.tgz", "integrity": "sha512-vGbruD5zquhoc8D9SViXgN2FBJtNdTyQ4DtG+SWiEGlJiAzoKcZ2xp+xuXCffhubVdt0NJlTZqkeRuERy7g8Cw==", "cpu": [ "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "win32" ], "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/binding-win32-x64-msvc": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.5.tgz", "integrity": "sha512-e/SXpgISz+IoqVcSSI0rx/d/he8zqLex+/rCWpnHpmVfmPIUjag9H6P7zotf0gJHwPUhQxZ/mF8tr6acebT9yw==", "cpu": [ "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "win32" ], "peer": true, "engines": { "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@rolldown/pluginutils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", "dev": true, "license": "MIT", "peer": true }, "node_modules/@standard-schema/spec": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", "dev": true, "license": "MIT", "peer": true }, "node_modules/@types/chai": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "@types/deep-eql": "*", "assertion-error": "^2.0.1" } }, "node_modules/@types/deep-eql": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", "dev": true, "license": "MIT", "peer": true }, "node_modules/@types/estree": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", "dev": true, "license": "MIT" }, "node_modules/@vitest/browser": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-4.1.11.tgz", "integrity": "sha512-bwMovvAeuTFOK5kIFevw4VEf+1gVEICv4SYK4k3knJOxl6b1zEWud8mYKD73e1B0odAn174h1MofURy2TPWf3w==", "dev": true, "license": "MIT", "dependencies": { "@blazediff/core": "1.9.1", "@vitest/mocker": "4.1.11", "@vitest/utils": "4.1.11", "magic-string": "^0.30.21", "pngjs": "^7.0.0", "sirv": "^3.0.2", "tinyrainbow": "^3.1.0", "ws": "^8.19.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "vitest": "4.1.11" } }, "node_modules/@vitest/browser-playwright": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/@vitest/browser-playwright/-/browser-playwright-4.1.11.tgz", "integrity": "sha512-riLBxPqwnJ0lWs2DN2WeUfYeKLoAjbP2Xx8cLQdSddzMi20sksIa6K2mPz79DyMZKKVKH2ksOC2yJvtNcZg8cg==", "dev": true, "license": "MIT", "dependencies": { "@vitest/browser": "4.1.11", "@vitest/mocker": "4.1.11", "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "playwright": "*", "vitest": "4.1.11" }, "peerDependenciesMeta": { "playwright": { "optional": false } } }, "node_modules/@vitest/coverage-istanbul": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/@vitest/coverage-istanbul/-/coverage-istanbul-4.1.11.tgz", "integrity": "sha512-pK9LJtOS534bmUwdwLpGD9qL52DeqVWSInrXFMNqrvWLbbAhuIPAlRup3UbsjFOMqCC/p3MmmX7uXV7ZTkcFfQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.29.0", "@istanbuljs/schema": "^0.1.3", "@jridgewell/gen-mapping": "^0.3.13", "@jridgewell/trace-mapping": "0.3.31", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-reports": "^3.2.0", "magicast": "^0.5.2", "obug": "^2.1.1", "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "vitest": "4.1.11" } }, "node_modules/@vitest/expect": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.11.tgz", "integrity": "sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.11", "@vitest/utils": "4.1.11", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/mocker": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.11.tgz", "integrity": "sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==", "dev": true, "license": "MIT", "dependencies": { "@vitest/spy": "4.1.11", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "msw": { "optional": true }, "vite": { "optional": true } } }, "node_modules/@vitest/pretty-format": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.11.tgz", "integrity": "sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==", "dev": true, "license": "MIT", "dependencies": { "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.11.tgz", "integrity": "sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "@vitest/utils": "4.1.11", "pathe": "^2.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/snapshot": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.11.tgz", "integrity": "sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "@vitest/pretty-format": "4.1.11", "@vitest/utils": "4.1.11", "magic-string": "^0.30.21", "pathe": "^2.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/spy": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.11.tgz", "integrity": "sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==", "dev": true, "license": "MIT", "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/utils": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.11.tgz", "integrity": "sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==", "dev": true, "license": "MIT", "dependencies": { "@vitest/pretty-format": "4.1.11", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/assertion-error": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, "license": "MIT", "peer": true, "engines": { "node": ">=12" } }, "node_modules/baseline-browser-mapping": { "version": "2.10.37", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.37.tgz", "integrity": "sha512-girxaJ7WZssDOFhzCGZTDKoTa1gk6A1TbflaYTpykLJ4UU9Fz9kx1aREM8JCuoVHbL8X8T/mJg7w2oYSq72Oig==", "dev": true, "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.cjs" }, "engines": { "node": ">=6.0.0" } }, "node_modules/browserslist": { "version": "4.28.2", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", "dev": true, "funding": [ { "type": "opencollective", "url": "https://opencollective.com/browserslist" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" }, { "type": "github", "url": "https://github.com/sponsors/ai" } ], "license": "MIT", "dependencies": { "baseline-browser-mapping": "^2.10.12", "caniuse-lite": "^1.0.30001782", "electron-to-chromium": "^1.5.328", "node-releases": "^2.0.36", "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, "node_modules/caniuse-lite": { "version": "1.0.30001799", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz", "integrity": "sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==", "dev": true, "funding": [ { "type": "opencollective", "url": "https://opencollective.com/browserslist" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" }, { "type": "github", "url": "https://github.com/sponsors/ai" } ], "license": "CC-BY-4.0" }, "node_modules/chai": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", "dev": true, "license": "MIT", "peer": true, "engines": { "node": ">=18" } }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, "license": "MIT" }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" }, "engines": { "node": ">=6.0" }, "peerDependenciesMeta": { "supports-color": { "optional": true } } }, "node_modules/detect-libc": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "dev": true, "license": "Apache-2.0", "peer": true, "engines": { "node": ">=8" } }, "node_modules/electron-to-chromium": { "version": "1.5.373", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.373.tgz", "integrity": "sha512-G2Hym8JIf/QreuseqkDibgH8Ci8KfJzqGDKdakbhSx9UltwRBH2cBLAWU/lBX0sCdv0TlhyxQyDCnSfxgMWsjA==", "dev": true, "license": "ISC" }, "node_modules/es-module-lexer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", "dev": true, "license": "MIT", "peer": true }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } }, "node_modules/expect-type": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", "dev": true, "license": "Apache-2.0", "peer": true, "engines": { "node": ">=12.0.0" } }, "node_modules/fdir": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, "license": "MIT", "peer": true, "engines": { "node": ">=12.0.0" }, "peerDependencies": { "picomatch": "^3 || ^4" }, "peerDependenciesMeta": { "picomatch": { "optional": true } } }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ "darwin" ], "peer": true, "engines": { "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, "license": "MIT" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-report": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "engines": { "node": ">=10" } }, "node_modules/istanbul-reports": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" }, "engines": { "node": ">=8" } }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT" }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { "node": ">=6" } }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "license": "MIT", "bin": { "json5": "lib/cli.js" }, "engines": { "node": ">=6" } }, "node_modules/lightningcss": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", "dev": true, "license": "MPL-2.0", "peer": true, "dependencies": { "detect-libc": "^2.0.3" }, "engines": { "node": ">= 12.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" }, "optionalDependencies": { "lightningcss-android-arm64": "1.33.0", "lightningcss-darwin-arm64": "1.33.0", "lightningcss-darwin-x64": "1.33.0", "lightningcss-freebsd-x64": "1.33.0", "lightningcss-linux-arm-gnueabihf": "1.33.0", "lightningcss-linux-arm64-gnu": "1.33.0", "lightningcss-linux-arm64-musl": "1.33.0", "lightningcss-linux-x64-gnu": "1.33.0", "lightningcss-linux-x64-musl": "1.33.0", "lightningcss-win32-arm64-msvc": "1.33.0", "lightningcss-win32-x64-msvc": "1.33.0" } }, "node_modules/lightningcss-android-arm64": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", "cpu": [ "arm64" ], "dev": true, "license": "MPL-2.0", "optional": true, "os": [ "android" ], "peer": true, "engines": { "node": ">= 12.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, "node_modules/lightningcss-darwin-arm64": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", "cpu": [ "arm64" ], "dev": true, "license": "MPL-2.0", "optional": true, "os": [ "darwin" ], "peer": true, "engines": { "node": ">= 12.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, "node_modules/lightningcss-darwin-x64": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", "cpu": [ "x64" ], "dev": true, "license": "MPL-2.0", "optional": true, "os": [ "darwin" ], "peer": true, "engines": { "node": ">= 12.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, "node_modules/lightningcss-freebsd-x64": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", "cpu": [ "x64" ], "dev": true, "license": "MPL-2.0", "optional": true, "os": [ "freebsd" ], "peer": true, "engines": { "node": ">= 12.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, "node_modules/lightningcss-linux-arm-gnueabihf": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", "cpu": [ "arm" ], "dev": true, "license": "MPL-2.0", "optional": true, "os": [ "linux" ], "peer": true, "engines": { "node": ">= 12.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, "node_modules/lightningcss-linux-arm64-gnu": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", "cpu": [ "arm64" ], "dev": true, "libc": [ "glibc" ], "license": "MPL-2.0", "optional": true, "os": [ "linux" ], "peer": true, "engines": { "node": ">= 12.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, "node_modules/lightningcss-linux-arm64-musl": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", "cpu": [ "arm64" ], "dev": true, "libc": [ "musl" ], "license": "MPL-2.0", "optional": true, "os": [ "linux" ], "peer": true, "engines": { "node": ">= 12.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, "node_modules/lightningcss-linux-x64-gnu": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", "cpu": [ "x64" ], "dev": true, "libc": [ "glibc" ], "license": "MPL-2.0", "optional": true, "os": [ "linux" ], "peer": true, "engines": { "node": ">= 12.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, "node_modules/lightningcss-linux-x64-musl": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", "cpu": [ "x64" ], "dev": true, "libc": [ "musl" ], "license": "MPL-2.0", "optional": true, "os": [ "linux" ], "peer": true, "engines": { "node": ">= 12.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, "node_modules/lightningcss-win32-arm64-msvc": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", "cpu": [ "arm64" ], "dev": true, "license": "MPL-2.0", "optional": true, "os": [ "win32" ], "peer": true, "engines": { "node": ">= 12.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, "node_modules/lightningcss-win32-x64-msvc": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", "cpu": [ "x64" ], "dev": true, "license": "MPL-2.0", "optional": true, "os": [ "win32" ], "peer": true, "engines": { "node": ">= 12.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "license": "ISC", "dependencies": { "yallist": "^3.0.2" } }, "node_modules/magic-string": { "version": "0.30.21", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "node_modules/magicast": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.2.tgz", "integrity": "sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.29.0", "@babel/types": "^7.29.0", "source-map-js": "^1.2.1" } }, "node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "license": "MIT", "dependencies": { "semver": "^7.5.3" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/make-dir/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, "node_modules/mrmime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", "dev": true, "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, "node_modules/nanoid": { "version": "3.3.18", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], "license": "MIT", "peer": true, "bin": { "nanoid": "bin/nanoid.cjs" }, "engines": { "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, "node_modules/node-releases": { "version": "2.0.47", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.47.tgz", "integrity": "sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==", "dev": true, "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/obug": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", "dev": true, "funding": [ "https://github.com/sponsors/sxzz", "https://opencollective.com/debug" ], "license": "MIT" }, "node_modules/pathe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", "dev": true, "license": "MIT", "peer": true }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", "dev": true, "license": "MIT", "peer": true, "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/playwright": { "version": "1.60.0", "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.60.0.tgz", "integrity": "sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==", "dev": true, "license": "Apache-2.0", "peer": true, "dependencies": { "playwright-core": "1.60.0" }, "bin": { "playwright": "cli.js" }, "engines": { "node": ">=18" }, "optionalDependencies": { "fsevents": "2.3.2" } }, "node_modules/playwright-core": { "version": "1.60.0", "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.60.0.tgz", "integrity": "sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==", "dev": true, "license": "Apache-2.0", "peer": true, "bin": { "playwright-core": "cli.js" }, "engines": { "node": ">=18" } }, "node_modules/playwright/node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ "darwin" ], "peer": true, "engines": { "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, "node_modules/pngjs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz", "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==", "dev": true, "license": "MIT", "engines": { "node": ">=14.19.0" } }, "node_modules/postcss": { "version": "8.5.26", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz", "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==", "dev": true, "funding": [ { "type": "opencollective", "url": "https://opencollective.com/postcss/" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" }, { "type": "github", "url": "https://github.com/sponsors/ai" } ], "license": "MIT", "peer": true, "dependencies": { "nanoid": "^3.3.17", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" } }, "node_modules/rolldown": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.5.tgz", "integrity": "sha512-VD2IE5PUG4Oj8zz2VGykiYd5wbnjdIiSsNQb8Qu5B+noEp+A78mu2iVvpp27g8es14Tk9rofNs5Tku9iQCS4fA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "@oxc-project/types": "=0.146.0", "@rolldown/pluginutils": "^1.0.0" }, "bin": { "rolldown": "bin/cli.mjs" }, "engines": { "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { "@rolldown/binding-android-arm-eabi": "1.2.5", "@rolldown/binding-android-arm64": "1.2.5", "@rolldown/binding-darwin-arm64": "1.2.5", "@rolldown/binding-darwin-x64": "1.2.5", "@rolldown/binding-freebsd-x64": "1.2.5", "@rolldown/binding-linux-arm-gnueabihf": "1.2.5", "@rolldown/binding-linux-arm64-gnu": "1.2.5", "@rolldown/binding-linux-arm64-musl": "1.2.5", "@rolldown/binding-linux-ppc64-gnu": "1.2.5", "@rolldown/binding-linux-s390x-gnu": "1.2.5", "@rolldown/binding-linux-x64-gnu": "1.2.5", "@rolldown/binding-linux-x64-musl": "1.2.5", "@rolldown/binding-openharmony-arm64": "1.2.5", "@rolldown/binding-win32-arm64-msvc": "1.2.5", "@rolldown/binding-win32-x64-msvc": "1.2.5" } }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/siginfo": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", "dev": true, "license": "ISC", "peer": true }, "node_modules/sirv": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", "dev": true, "license": "MIT", "dependencies": { "@polka/url": "^1.0.0-next.24", "mrmime": "^2.0.0", "totalist": "^3.0.0" }, "engines": { "node": ">=18" } }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", "dev": true, "license": "MIT", "peer": true }, "node_modules/std-env": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.1.0.tgz", "integrity": "sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==", "dev": true, "license": "MIT", "peer": true }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/tinybench": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", "dev": true, "license": "MIT", "peer": true }, "node_modules/tinyexec": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.1.1.tgz", "integrity": "sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==", "dev": true, "license": "MIT", "peer": true, "engines": { "node": ">=18" } }, "node_modules/tinyglobby": { "version": "0.2.17", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" }, "engines": { "node": ">=12.0.0" }, "funding": { "url": "https://github.com/sponsors/SuperchupuDev" } }, "node_modules/tinyrainbow": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", "dev": true, "license": "MIT", "engines": { "node": ">=14.0.0" } }, "node_modules/totalist": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, "license": "0BSD" }, "node_modules/update-browserslist-db": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "dev": true, "funding": [ { "type": "opencollective", "url": "https://opencollective.com/browserslist" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" }, { "type": "github", "url": "https://github.com/sponsors/ai" } ], "license": "MIT", "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" }, "peerDependencies": { "browserslist": ">= 4.21.0" } }, "node_modules/vite": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/vite/-/vite-8.2.2.tgz", "integrity": "sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "lightningcss": "^1.33.0", "picomatch": "^4.0.5", "postcss": "^8.5.26", "rolldown": "~1.2.4", "tinyglobby": "^0.2.17" }, "bin": { "vite": "bin/vite.js" }, "engines": { "node": "^20.19.0 || >=22.12.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.4.0 || ^0.5.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, "@vitejs/devtools": { "optional": true }, "esbuild": { "optional": true }, "jiti": { "optional": true }, "less": { "optional": true }, "sass": { "optional": true }, "sass-embedded": { "optional": true }, "stylus": { "optional": true }, "sugarss": { "optional": true }, "terser": { "optional": true }, "tsx": { "optional": true }, "yaml": { "optional": true } } }, "node_modules/vitest": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.11.tgz", "integrity": "sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "@vitest/expect": "4.1.11", "@vitest/mocker": "4.1.11", "@vitest/pretty-format": "4.1.11", "@vitest/runner": "4.1.11", "@vitest/snapshot": "4.1.11", "@vitest/spy": "4.1.11", "@vitest/utils": "4.1.11", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "bin": { "vitest": "vitest.mjs" }, "engines": { "node": "^20.0.0 || ^22.0.0 || >=24.0.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.11", "@vitest/browser-preview": "4.1.11", "@vitest/browser-webdriverio": "4.1.11", "@vitest/coverage-istanbul": "4.1.11", "@vitest/coverage-v8": "4.1.11", "@vitest/ui": "4.1.11", "happy-dom": "*", "jsdom": "*", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "@edge-runtime/vm": { "optional": true }, "@opentelemetry/api": { "optional": true }, "@types/node": { "optional": true }, "@vitest/browser-playwright": { "optional": true }, "@vitest/browser-preview": { "optional": true }, "@vitest/browser-webdriverio": { "optional": true }, "@vitest/coverage-istanbul": { "optional": true }, "@vitest/coverage-v8": { "optional": true }, "@vitest/ui": { "optional": true }, "happy-dom": { "optional": true }, "jsdom": { "optional": true }, "vite": { "optional": false } } }, "node_modules/why-is-node-running": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" }, "bin": { "why-is-node-running": "cli.js" }, "engines": { "node": ">=8" } }, "node_modules/ws": { "version": "8.21.3", "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.3.tgz", "integrity": "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==", "dev": true, "license": "MIT", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { "optional": true }, "utf-8-validate": { "optional": true } } }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true, "license": "ISC" } } } python-django-debug-toolbar-8.0.0/package.json000066400000000000000000000016051524561404200213170ustar00rootroot00000000000000{ "name": "django-debug-toolbar", "version": "0.1.0", "description": "A configurable set of panels that display various debug information about the current request/response.", "homepage": "https://github.com/django-commons/django-debug-toolbar#readme", "bugs": { "url": "https://github.com/django-commons/django-debug-toolbar/issues" }, "repository": { "type": "git", "url": "git+https://github.com/django-commons/django-debug-toolbar.git" }, "license": "BSD-3-Clause", "author": "Django Commons", "type": "module", "engines": { "node": ">=24.0.0", "npm": ">=11.0.0" }, "scripts": { "test": "vitest" }, "devDependencies": { "@vitest/browser-playwright": "*", "@vitest/coverage-istanbul": "*", "@emnapi/core": "^1.11.3", "@emnapi/runtime": "^1.11.3" } } python-django-debug-toolbar-8.0.0/pyproject.toml000066400000000000000000000067251524561404200217550ustar00rootroot00000000000000[build-system] build-backend = "hatchling.build" requires = [ "hatchling", ] [project] name = "django-debug-toolbar" description = "A configurable set of panels that display various debug information about the current request/response." readme = "README.rst" license = { text = "BSD-3-Clause" } authors = [ { name = "Rob Hudson" }, ] requires-python = ">=3.10" classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 5.2", "Framework :: Django :: 6.0", "Framework :: Django :: 6.1", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3 :: Only", "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 :: Software Development :: Libraries :: Python Modules", ] dynamic = [ "version", ] dependencies = [ "django>=5.2", "sqlparse>=0.2", ] urls.Changelog = "https://django-debug-toolbar.readthedocs.io/en/latest/changes.html" urls.Documentation = "https://django-debug-toolbar.readthedocs.io/" urls.Download = "https://pypi.org/project/django-debug-toolbar/" urls.Homepage = "https://github.com/django-commons/django-debug-toolbar" urls.Issues = "https://github.com/django-commons/django-debug-toolbar/issues" urls.Source = "https://github.com/django-commons/django-debug-toolbar" [dependency-groups] dev = [ "black", "coverage[toml]", "daphne", # async in Example app "django", "django-csp", # Used in tests/test_csp_rendering "django-template-partials", "html5lib", "jinja2", "pre-commit", "pygments", "selenium", "sqlparse", "tox", "whitenoise", # To avoid dealing with static files ] docs = [ "sphinx", "sphinx-rtd-theme>1", "sphinxcontrib-spelling", ] [tool.hatch] version.path = "debug_toolbar/__init__.py" build.targets.wheel.packages = [ "debug_toolbar", ] [tool.ruff] target-version = "py310" fix = true show-fixes = true lint.extend-select = [ "ASYNC", # flake8-async "B", # flake8-bugbear "C4", # flake8-comprehensions "C90", # McCabe cyclomatic complexity "DJ", # flake8-django "E", # pycodestyle errors "F", # Pyflakes "FBT", # flake8-boolean-trap "I", # isort "INT", # flake8-gettext "PGH", # pygrep-hooks "PIE", # flake8-pie "RUF100", # Unused noqa directive "SLOT", # flake8-slots "UP", # pyupgrade "W", # pycodestyle warnings ] lint.extend-ignore = [ "B905", # Allow zip() without strict= "E501", # Ignore line length violations "RUF012", # Allow mutable class attributes "UP031", # It's not always wrong to use percent-formatting ] lint.per-file-ignores."*/migrat*/*" = [ "N806", # Allow using PascalCase model names in migrations "N999", # Ignore the fact that migration files are invalid module names ] lint.isort.combine-as-imports = true lint.mccabe.max-complexity = 16 [tool.coverage] run.source = [ "debug_toolbar", ] run.branch = true run.parallel = true run.relative_files = true paths.source = [ "src", ".tox/*/site-packages", ] # Update coverage badge link in README.rst when fail_under changes report.fail_under = 94 report.show_missing = true html.skip_covered = true html.skip_empty = true python-django-debug-toolbar-8.0.0/setup.py000077500000000000000000000004541524561404200205470ustar00rootroot00000000000000#!/usr/bin/env python3 import sys sys.stderr.write( """\ =============================== Unsupported installation method =============================== This project no longer supports installation with `python setup.py install`. Please use `python -m pip install .` instead. """ ) sys.exit(1) python-django-debug-toolbar-8.0.0/tests/000077500000000000000000000000001524561404200201715ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/tests/__init__.py000066400000000000000000000000001524561404200222700ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/tests/additional_static/000077500000000000000000000000001524561404200236505ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/tests/additional_static/base.css000066400000000000000000000000331524561404200252700ustar00rootroot00000000000000body { color: green; } python-django-debug-toolbar-8.0.0/tests/base.py000066400000000000000000000101541524561404200214560ustar00rootroot00000000000000import contextvars import html5lib from asgiref.local import Local from django.http import HttpResponse from django.test import ( AsyncClient, AsyncRequestFactory, Client, RequestFactory, TestCase, TransactionTestCase, ) from debug_toolbar.panels import Panel from debug_toolbar.store import get_store from debug_toolbar.toolbar import DebugToolbar data_contextvar = contextvars.ContextVar("djdt_toolbar_test_client") class ToolbarTestClient(Client): def request(self, **request): # Use a thread/async task context-local variable to guard against a # concurrent _created signal from a different thread/task. data = Local() data.toolbar = None def handle_toolbar_created(sender, toolbar=None, **kwargs): data.toolbar = toolbar DebugToolbar._created.connect(handle_toolbar_created) try: response = super().request(**request) finally: DebugToolbar._created.disconnect(handle_toolbar_created) response.toolbar = data.toolbar return response class AsyncToolbarTestClient(AsyncClient): async def request(self, **request): # Use a thread/async task context-local variable to guard against a # concurrent _created signal from a different thread/task. # In cases testsuite will have both regular and async tests or # multiple async tests running in an eventloop making async_client calls. data_contextvar.set(None) def handle_toolbar_created(sender, toolbar=None, **kwargs): data_contextvar.set(toolbar) DebugToolbar._created.connect(handle_toolbar_created) try: response = await super().request(**request) finally: DebugToolbar._created.disconnect(handle_toolbar_created) response.toolbar = data_contextvar.get() return response rf = RequestFactory() arf = AsyncRequestFactory() class BaseMixin: _is_async = False client_class = ToolbarTestClient async_client_class = AsyncToolbarTestClient panel: Panel | None = None panel_id = None def setUp(self): super().setUp() self._get_response = lambda request: HttpResponse() self.request = rf.get("/") if self._is_async: self.request = arf.get("/") self.toolbar = DebugToolbar(self.request, self.get_response_async) else: self.toolbar = DebugToolbar(self.request, self.get_response) self.toolbar.stats = {} if self.panel_id: self.panel = self.toolbar.get_panel_by_id(self.panel_id) self.panel.enable_instrumentation() else: self.panel = None def tearDown(self): if self.panel: self.panel.disable_instrumentation() super().tearDown() def get_response(self, request): return self._get_response(request) async def get_response_async(self, request): return self._get_response(request) def assertValidHTML(self, content): parser = html5lib.HTMLParser() parser.parseFragment(content) if parser.errors: msg_parts = ["Invalid HTML:"] lines = content.split("\n") for position, errorcode, datavars in parser.errors: msg_parts.append(f" {html5lib.constants.E[errorcode]}" % datavars) msg_parts.append(f" {lines[position[0] - 1]}") raise self.failureException("\n".join(msg_parts)) def reload_stats(self): data = self.toolbar.store.panel(self.toolbar.request_id, self.panel_id) self.panel.load_stats_from_store(data) class BaseTestCase(BaseMixin, TestCase): pass class BaseMultiDBTestCase(BaseMixin, TransactionTestCase): databases = {"default", "replica"} class IntegrationTestCase(TestCase): """Base TestCase for tests involving clients making requests.""" def setUp(self): # The HistoryPanel keeps track of previous stores in memory. # This bleeds into other tests and violates their idempotency. # Clear the store before each test. get_store().clear() super().setUp() python-django-debug-toolbar-8.0.0/tests/commands/000077500000000000000000000000001524561404200217725ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/tests/commands/__init__.py000066400000000000000000000000001524561404200240710ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/tests/commands/test_debugsqlshell.py000066400000000000000000000023341524561404200262430ustar00rootroot00000000000000import io import sys from django.contrib.auth.models import User from django.core import management from django.db import connection from django.test import TestCase from django.test.utils import override_settings if connection.vendor == "postgresql": from django.db.backends.postgresql import base as base_module else: from django.db.backends import utils as base_module @override_settings(DEBUG=True) class DebugSQLShellTestCase(TestCase): def setUp(self): self.original_wrapper = base_module.CursorDebugWrapper # Since debugsqlshell monkey-patches django.db.backends.utils, we can # test it simply by loading it, without executing it. But we have to # undo the monkey-patch on exit. command_name = "debugsqlshell" app_name = management.get_commands()[command_name] management.load_command_class(app_name, command_name) def tearDown(self): base_module.CursorDebugWrapper = self.original_wrapper def test_command(self): original_stdout, sys.stdout = sys.stdout, io.StringIO() try: User.objects.count() self.assertIn("SELECT COUNT", sys.stdout.getvalue()) finally: sys.stdout = original_stdout python-django-debug-toolbar-8.0.0/tests/context_processors.py000066400000000000000000000001001524561404200245000ustar00rootroot00000000000000def broken(request): _read = request.non_existing_attribute python-django-debug-toolbar-8.0.0/tests/forms.py000066400000000000000000000003341524561404200216710ustar00rootroot00000000000000from django import forms from django.contrib.auth.models import User class TemplateReprForm(forms.Form): user = forms.ModelChoiceField(queryset=User.objects.all()) def __repr__(self): return str(self) python-django-debug-toolbar-8.0.0/tests/js/000077500000000000000000000000001524561404200206055ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/tests/js/utils.test.js000066400000000000000000000260161524561404200232660ustar00rootroot00000000000000import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { $$, ajax, ajaxForm, debounce, replaceToolbarState, } from "../../debug_toolbar/static/debug_toolbar/js/utils.js"; describe("utils.js", () => { describe("$$", () => { let root; beforeEach(() => { root = document.createElement("div"); document.body.appendChild(root); }); afterEach(() => { document.body.removeChild(root); }); describe("on", () => { it("attaches an event listener with delegation", async () => { const fn = vi.fn(); const selector = ".target"; const target = document.createElement("button"); target.className = "target"; root.appendChild(target); $$.on(root, "click", selector, fn); target.click(); expect(fn).toHaveBeenCalledTimes(1); expect(fn.mock.contexts[0]).toBe(target); }); it("does not call fn if target is not within root", () => { const fn = vi.fn(); const selector = ".target"; const outside = document.createElement("button"); outside.className = "target"; document.body.appendChild(outside); $$.on(root, "click", selector, fn); outside.click(); expect(fn).not.toHaveBeenCalled(); document.body.removeChild(outside); }); }); describe("onPanelRender", () => { it("calls fn when djdt.panel.render event is triggered for the specific panel", () => { const fn = vi.fn(); const panelId = "test-panel"; $$.onPanelRender(root, panelId, fn); const event = new CustomEvent("djdt.panel.render", { detail: { panelId }, }); root.dispatchEvent(event); expect(fn).toHaveBeenCalledTimes(1); }); it("does not call fn when djdt.panel.render event is triggered for a different panel", () => { const fn = vi.fn(); const panelId = "test-panel"; $$.onPanelRender(root, panelId, fn); const event = new CustomEvent("djdt.panel.render", { detail: { panelId: "other-panel" }, }); root.dispatchEvent(event); expect(fn).not.toHaveBeenCalled(); }); }); describe("visibility functions", () => { let element; beforeEach(() => { element = document.createElement("div"); root.appendChild(element); }); it("show removes djdt-hidden class", () => { element.classList.add("djdt-hidden"); $$.show(element); expect(element.classList.contains("djdt-hidden")).toBe(false); }); it("hide adds djdt-hidden class", () => { $$.hide(element); expect(element.classList.contains("djdt-hidden")).toBe(true); }); it("toggle shows or hides based on value", () => { $$.toggle(element, true); expect(element.classList.contains("djdt-hidden")).toBe(false); $$.toggle(element, false); expect(element.classList.contains("djdt-hidden")).toBe(true); }); it("visible returns true if djdt-hidden class is not present", () => { expect($$.visible(element)).toBe(true); element.classList.add("djdt-hidden"); expect($$.visible(element)).toBe(false); }); }); describe("executeScripts", () => { it("creates and appends script elements to document head", () => { const scripts = ["/test1.js", "/test2.js"]; const appendSpy = vi.spyOn(document.head, "appendChild"); $$.executeScripts(scripts); expect(appendSpy).toHaveBeenCalledTimes(2); const firstCall = appendSpy.mock.calls[0][0]; expect(firstCall.tagName).toBe("SCRIPT"); expect(firstCall.src).toContain("/test1.js"); expect(firstCall.type).toBe("module"); expect(firstCall.async).toBe(true); appendSpy.mockRestore(); }); }); describe("applyStyles", () => { it("applies styles from data-djdt-styles attribute", () => { const element = document.createElement("div"); element.setAttribute( "data-djdt-styles", "backgroundColor:red; display : block" ); root.appendChild(element); $$.applyStyles(root); expect(element.style.backgroundColor).toBe("red"); expect(element.style.display).toBe("block"); }); }); }); describe("ajax", () => { const url = "/test-ajax/"; beforeEach(() => { vi.stubGlobal("fetch", vi.fn()); const djDebugRoot = document.createElement("div"); djDebugRoot.id = "djDebugRoot"; const djDebug = document.createElement("div"); djDebug.id = "djDebug"; const win = document.createElement("div"); win.id = "djDebugWindow"; djDebug.appendChild(win); djDebugRoot.appendChild(djDebug); document.body.appendChild(djDebugRoot); }); afterEach(() => { vi.unstubAllGlobals(); const djDebugRoot = document.getElementById("djDebugRoot"); if (djDebugRoot) document.body.removeChild(djDebugRoot); }); it("returns json data on success", async () => { const mockData = { key: "value" }; fetch.mockResolvedValue({ ok: true, json: () => Promise.resolve(mockData), }); const result = await ajax(url); expect(result).toEqual(mockData); expect(fetch).toHaveBeenCalledWith(url, { credentials: "same-origin", }); }); it("throws error and updates djDebugWindow on non-ok response", async () => { fetch.mockResolvedValue({ ok: false, status: 404, statusText: "Not Found", }); await expect(ajax(url)).rejects.toThrow("404: Not Found"); const win = document.getElementById("djDebugWindow"); expect(win.innerHTML).toContain("404: Not Found"); }); it("throws error and updates djDebugWindow on invalid json", async () => { fetch.mockResolvedValue({ ok: true, json: () => { throw new Error("JSON parse error"); }, }); await expect(ajax(url)).rejects.toThrow(/JSON parse error/); const win = document.getElementById("djDebugWindow"); expect(win.innerHTML).toContain("JSON parse error"); }); it("throws error and updates djDebugWindow on fetch failure", async () => { fetch.mockRejectedValue(new Error("Network Error")); await expect(ajax(url)).rejects.toThrow("Network Error"); const win = document.getElementById("djDebugWindow"); expect(win.innerHTML).toContain("Network Error"); }); }); describe("ajaxForm", () => { it("calls ajax with form data and method", async () => { vi.stubGlobal("fetch", vi.fn()); const form = document.createElement("form"); form.action = "http://localhost/test/"; form.method = "post"; const input = document.createElement("input"); input.name = "field"; input.value = "val"; form.appendChild(input); const element = document.createElement("button"); form.appendChild(element); document.body.appendChild(form); fetch.mockResolvedValue({ ok: true, json: () => Promise.resolve({ success: true }), }); const result = await ajaxForm(element); expect(result).toEqual({ success: true }); const calledUrl = fetch.mock.calls[0][0]; expect(calledUrl.toString()).toContain("field=val"); expect(fetch.mock.calls[0][1].method).toBe("POST"); document.body.removeChild(form); vi.unstubAllGlobals(); }); }); describe("replaceToolbarState", () => { it("replaces toolbar state and panels", () => { const djDebugRoot = document.createElement("div"); djDebugRoot.id = "djDebugRoot"; const djDebug = document.createElement("div"); djDebug.id = "djDebug"; const panel = document.createElement("div"); panel.id = "panel1"; djDebug.appendChild(panel); const buttonContainer = document.createElement("div"); buttonContainer.id = "djdt-panel1"; djDebug.appendChild(buttonContainer); djDebugRoot.appendChild(djDebug); document.body.appendChild(djDebugRoot); const data = { panel1: { content: '
    New Content
    ', button: '
    New Button
    ', }, }; replaceToolbarState("new-id", data); expect(djDebug.getAttribute("data-request-id")).toBe("new-id"); expect(document.getElementById("panel1").innerHTML).toBe( "New Content" ); expect(document.getElementById("djdt-panel1").innerHTML).toBe( "New Button" ); document.body.removeChild(djDebugRoot); }); }); describe("debounce", () => { beforeEach(() => { vi.useFakeTimers(); }); afterEach(() => { vi.useRealTimers(); }); it("debounces sync function calls", async () => { const fn = vi.fn((val) => val); const debounced = debounce(fn, 100); debounced("first"); debounced("second"); vi.advanceTimersByTime(50); debounced("third"); vi.advanceTimersByTime(100); expect(fn).toHaveBeenCalledTimes(1); expect(fn).toHaveBeenCalledWith("third"); }); it("debounces async function calls", async () => { const fn = vi.fn(async (val) => val); const debounced = debounce(fn, 100); debounced("first"); debounced("second"); vi.advanceTimersByTime(50); debounced("third"); vi.advanceTimersByTime(100); expect(fn).toHaveBeenCalledWith("third"); }); }); }); python-django-debug-toolbar-8.0.0/tests/loaders.py000066400000000000000000000005211524561404200221720ustar00rootroot00000000000000from django.contrib.auth.models import User from django.template.loaders.app_directories import Loader class LoaderWithSQL(Loader): def get_template(self, *args, **kwargs): # Force the template loader to run some SQL. Simulates a CMS. User.objects.all().count() return super().get_template(*args, **kwargs) python-django-debug-toolbar-8.0.0/tests/middleware.py000066400000000000000000000007101524561404200226560ustar00rootroot00000000000000from django.core.cache import cache class UseCacheAfterToolbar: """ This middleware exists to use the cache before and after the toolbar is setup. """ def __init__(self, get_response): self.get_response = get_response def __call__(self, request): cache.set("UseCacheAfterToolbar.before", 1) response = self.get_response(request) cache.set("UseCacheAfterToolbar.after", 1) return response python-django-debug-toolbar-8.0.0/tests/models.py000066400000000000000000000011211524561404200220210ustar00rootroot00000000000000from django.conf import settings from django.db import models from django.db.models import JSONField class NonAsciiRepr: def __repr__(self): return "nôt åscíì" class Binary(models.Model): field = models.BinaryField() def __str__(self): return "" class PostgresJSON(models.Model): field = JSONField() def __str__(self): return "" if settings.USE_GIS: from django.contrib.gis.db import models as gismodels class Location(gismodels.Model): point = gismodels.PointField() def __str__(self): return "" python-django-debug-toolbar-8.0.0/tests/panels/000077500000000000000000000000001524561404200214535ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/tests/panels/__init__.py000066400000000000000000000000001524561404200235520ustar00rootroot00000000000000python-django-debug-toolbar-8.0.0/tests/panels/test_alerts.py000066400000000000000000000105441524561404200243620ustar00rootroot00000000000000from django.http import HttpResponse, StreamingHttpResponse from django.template import Context, Template from ..base import BaseTestCase class AlertsPanelTestCase(BaseTestCase): panel_id = "AlertsPanel" def test_alert_warning_display(self): """ Test that the panel (does not) display[s] an alert when there are (no) problems. """ self.panel.record_stats({"alerts": []}) self.assertNotIn("alerts", self.panel.nav_subtitle) self.panel.record_stats({"alerts": ["Alert 1", "Alert 2"]}) self.assertIn("2 alerts", self.panel.nav_subtitle) def test_file_form_without_enctype_multipart_form_data(self): """ Test that the panel displays a form invalid message when there is a file input but encoding not set to multipart/form-data. """ test_form = '
    ' result = self.panel.check_invalid_file_form_configuration(test_form) expected_error = ( 'Form with id "test-form" contains file input, ' 'but does not have the attribute enctype="multipart/form-data".' ) self.assertEqual(result[0]["alert"], expected_error) self.assertEqual(len(result), 1) def test_file_form_no_id_without_enctype_multipart_form_data(self): """ Test that the panel displays a form invalid message when there is a file input but encoding not set to multipart/form-data. This should use the message when the form has no id. """ test_form = '
    ' result = self.panel.check_invalid_file_form_configuration(test_form) expected_error = ( "Form contains file input, but does not have " 'the attribute enctype="multipart/form-data".' ) self.assertEqual(result[0]["alert"], expected_error) self.assertEqual(len(result), 1) def test_file_form_with_enctype_multipart_form_data(self): test_form = """
    """ result = self.panel.check_invalid_file_form_configuration(test_form) self.assertEqual(len(result), 0) def test_file_form_with_enctype_multipart_form_data_in_button(self): test_form = """
    """ result = self.panel.check_invalid_file_form_configuration(test_form) self.assertEqual(len(result), 0) def test_referenced_file_input_without_enctype_multipart_form_data(self): test_file_input = """
    """ result = self.panel.check_invalid_file_form_configuration(test_file_input) expected_error = ( 'Input element references form with id "test-form", ' 'but the form does not have the attribute enctype="multipart/form-data".' ) self.assertEqual(result[0]["alert"], expected_error) self.assertEqual(len(result), 1) def test_referenced_file_input_with_enctype_multipart_form_data(self): test_file_input = """
    """ result = self.panel.check_invalid_file_form_configuration(test_file_input) self.assertEqual(len(result), 0) def test_integration_file_form_without_enctype_multipart_form_data(self): t = Template('
    ') c = Context({}) rendered_template = t.render(c) response = HttpResponse(content=rendered_template) self.panel.generate_stats(self.request, response) self.assertIn("1 alert", self.panel.nav_subtitle) self.assertIn( "Form with id "test-form" contains file input, " "but does not have the attribute enctype="multipart/form-data".", self.panel.content, ) def test_streaming_response(self): """Test to check for a streaming response.""" def _render(): yield "ok" response = StreamingHttpResponse(_render()) self.panel.generate_stats(self.request, response) self.assertEqual(self.panel.get_stats(), {"alerts": []}) python-django-debug-toolbar-8.0.0/tests/panels/test_async_panel_compatibility.py000066400000000000000000000023021524561404200303060ustar00rootroot00000000000000from django.http import HttpResponse from django.test import AsyncRequestFactory, RequestFactory, TestCase from debug_toolbar.panels import Panel from debug_toolbar.toolbar import DebugToolbar class MockAsyncPanel(Panel): is_async = True class MockSyncPanel(Panel): is_async = False class PanelAsyncCompatibilityTestCase(TestCase): def setUp(self): self.async_factory = AsyncRequestFactory() self.wsgi_factory = RequestFactory() def test_panels_with_asgi(self): async_request = self.async_factory.get("/") toolbar = DebugToolbar(async_request, lambda request: HttpResponse()) async_panel = MockAsyncPanel(toolbar, async_request) sync_panel = MockSyncPanel(toolbar, async_request) self.assertTrue(async_panel.enabled) self.assertFalse(sync_panel.enabled) def test_panels_with_wsgi(self): wsgi_request = self.wsgi_factory.get("/") toolbar = DebugToolbar(wsgi_request, lambda request: HttpResponse()) async_panel = MockAsyncPanel(toolbar, wsgi_request) sync_panel = MockSyncPanel(toolbar, wsgi_request) self.assertTrue(async_panel.enabled) self.assertTrue(sync_panel.enabled) python-django-debug-toolbar-8.0.0/tests/panels/test_cache.py000066400000000000000000000171501524561404200241330ustar00rootroot00000000000000from django.core import cache from debug_toolbar.panels.cache import CachePanel from ..base import BaseTestCase class CachePanelTestCase(BaseTestCase): panel_id = CachePanel.panel_id def test_recording(self): self.assertEqual(len(self.panel.calls), 0) cache.cache.set("foo", "bar") cache.cache.get("foo") cache.cache.delete("foo") self.assertFalse(cache.cache.touch("foo")) cache.cache.set("foo", "bar") self.assertTrue(cache.cache.touch("foo")) # Verify that the cache has a valid clear method. cache.cache.clear() self.assertEqual(len(self.panel.calls), 7) def test_recording_caches(self): self.assertEqual(len(self.panel.calls), 0) default_cache = cache.caches[cache.DEFAULT_CACHE_ALIAS] second_cache = cache.caches["second"] default_cache.set("foo", "bar") second_cache.get("foo") self.assertEqual(len(self.panel.calls), 2) def test_hits_and_misses(self): cache.cache.clear() cache.cache.get("foo") self.assertEqual(self.panel.hits, 0) self.assertEqual(self.panel.misses, 1) cache.cache.set("foo", 1) cache.cache.get("foo") self.assertEqual(self.panel.hits, 1) self.assertEqual(self.panel.misses, 1) cache.cache.get_many(["foo", "bar"]) self.assertEqual(self.panel.hits, 2) self.assertEqual(self.panel.misses, 2) cache.cache.set("bar", 2) cache.cache.get_many(keys=["foo", "bar"]) self.assertEqual(self.panel.hits, 4) self.assertEqual(self.panel.misses, 2) def test_get_default_counts_as_miss(self): """ Using get that fetches a cached value that's the same as the default results in a miss despite it being a hit. """ cache.cache.clear() # cached None with default None is ambiguous cache.cache.set("foo", None) self.assertIsNone(cache.cache.get("foo")) self.assertIsNone(cache.cache.get("foo")) self.assertEqual(self.panel.misses, 2) self.assertEqual(self.panel.hits, 0) # cached value equal to default is ambiguous cache.cache.set("bar", "baz") self.assertEqual(cache.cache.get("bar", "baz"), "baz") self.assertEqual(cache.cache.get("bar", "baz"), "baz") self.assertEqual(self.panel.misses, 4) self.assertEqual(self.panel.hits, 0) def test_get_with_args(self): """ Test get to calculate the default in a variety of ways. """ cache.cache.clear() self.assertIsNone(cache.cache.get("foo")) self.assertEqual(self.panel.misses, 1) self.assertEqual(cache.cache.get("foo", "bar"), "bar") self.assertEqual(self.panel.misses, 2) self.assertEqual(cache.cache.get("foo", default="bar"), "bar") self.assertEqual(self.panel.misses, 3) self.assertEqual(cache.cache.get(key="foo", default="bar"), "bar") self.assertEqual(self.panel.misses, 4) self.assertEqual(self.panel.hits, 0) def test_get_or_set_value(self): cache.cache.get_or_set("baz", "val") self.assertEqual(cache.cache.get("baz"), "val") calls = [ (call["name"], call["args"], call["kwargs"]) for call in self.panel.calls ] self.assertEqual( calls, [ ("get_or_set", ("baz", "val"), {}), ("get", ("baz",), {}), ], ) self.assertEqual( self.panel.counts, { "add": 0, "get": 1, "set": 0, "get_or_set": 1, "touch": 0, "delete": 0, "clear": 0, "get_many": 0, "set_many": 0, "delete_many": 0, "has_key": 0, "incr": 0, "decr": 0, "incr_version": 0, "decr_version": 0, }, ) def test_get_or_set_does_not_override_existing_value(self): cache.cache.set("foo", "bar") cached_value = cache.cache.get_or_set("foo", "other") self.assertEqual(cached_value, "bar") calls = [ (call["name"], call["args"], call["kwargs"]) for call in self.panel.calls ] self.assertEqual( calls, [ ("set", ("foo", "bar"), {}), ("get_or_set", ("foo", "other"), {}), ], ) self.assertEqual( self.panel.counts, { "add": 0, "get": 0, "set": 1, "get_or_set": 1, "touch": 0, "delete": 0, "clear": 0, "get_many": 0, "set_many": 0, "delete_many": 0, "has_key": 0, "incr": 0, "decr": 0, "incr_version": 0, "decr_version": 0, }, ) def test_get_or_set_none_counts_as_miss(self): """ Using get_or_set to set a None value is counted as a miss even though it was a hit on the second try. """ cache.cache.clear() self.assertIsNone(cache.cache.get_or_set("foo", None)) self.assertIsNone(cache.cache.get_or_set("foo", None)) self.assertEqual(self.panel.misses, 2) self.assertEqual(self.panel.hits, 0) def test_insert_content(self): """ Test that the panel only inserts content after generate_stats and not the process_request. """ cache.cache.get("café") response = self.panel.process_request(self.request) # ensure the panel does not have content yet. self.assertNotIn("café", self.panel.content) self.panel.generate_stats(self.request, response) self.reload_stats() # ensure the panel renders correctly. content = self.panel.content self.assertIn("café", content) self.assertValidHTML(content) # ensure traces aren't escaped self.assertIn('', content) def test_generate_server_timing(self): self.assertEqual(len(self.panel.calls), 0) cache.cache.set("foo", "bar") cache.cache.get("foo") cache.cache.delete("foo") self.assertEqual(len(self.panel.calls), 3) response = self.panel.process_request(self.request) self.panel.generate_stats(self.request, response) self.panel.generate_server_timing(self.request, response) stats = self.panel.get_stats() expected_data = { "total_time": { "title": "Cache {} Calls".format(stats["total_calls"]), "value": stats["total_time"], } } self.assertEqual(self.panel.get_server_timing_stats(), expected_data) def test_backend_alias_is_recorded(self): cache.cache.get("foo") self.assertEqual(self.panel.calls[0]["backend"], "default (LocMemCache)") def test_patching_only_applied_once(self): """ Confirm that reapplying and disabling the cache patching only wraps the cache methods once """ for _ in range(2): self.panel.enable_instrumentation() self.panel.disable_instrumentation() nested_wraps = 0 wrapped = cache.cache.get.__wrapped__ while wrapped is not None: try: wrapped = wrapped.__wrapped__ nested_wraps += 1 except AttributeError: break self.assertEqual(nested_wraps, 0) python-django-debug-toolbar-8.0.0/tests/panels/test_custom.py000066400000000000000000000030741524561404200244020ustar00rootroot00000000000000from django.test import override_settings from debug_toolbar.panels import Panel from ..base import IntegrationTestCase class CustomPanel(Panel): def title(self): return "Title with special chars &\"'<>" @override_settings( DEBUG=True, DEBUG_TOOLBAR_PANELS=["tests.panels.test_custom.CustomPanel"] ) class CustomPanelTestCase(IntegrationTestCase): def test_escapes_panel_title(self): response = self.client.get("/regular/basic/") self.assertContains( response, """
  • """, html=True, ) self.assertContains( response, """

    Title with special chars &"'<>

    """, html=True, ) python-django-debug-toolbar-8.0.0/tests/panels/test_history.py000066400000000000000000000177261524561404200246020ustar00rootroot00000000000000import copy import html from django.test import RequestFactory, override_settings from django.urls import resolve, reverse from debug_toolbar.panels.history import HistoryPanel from debug_toolbar.panels.redirects import RedirectsPanel from debug_toolbar.store import get_store from debug_toolbar.toolbar import DebugToolbar from ..base import BaseTestCase, IntegrationTestCase rf = RequestFactory() class HistoryPanelTestCase(BaseTestCase): panel_id = HistoryPanel.panel_id def test_disabled(self): config = {"DISABLE_PANELS": {"debug_toolbar.panels.history.HistoryPanel"}} self.assertTrue(self.panel.enabled) with self.settings(DEBUG_TOOLBAR_CONFIG=config): self.assertFalse(self.panel.enabled) def test_post(self): self.request = rf.post("/", data={"foo": "bar"}) response = self.panel.process_request(self.request) self.panel.generate_stats(self.request, response) data = self.panel.get_stats()["data"] self.assertEqual(data["foo"], "bar") def test_post_json(self): for data, expected_stats_data in ( ({"foo": "bar"}, {"foo": "bar"}), ("", {}), # Empty JSON ("'", {}), # Invalid JSON ): with self.subTest(data=data): self.request = rf.post( "/", data=data, content_type="application/json", CONTENT_TYPE="application/json", # Force django test client to add the content-type even if no data ) response = self.panel.process_request(self.request) self.panel.generate_stats(self.request, response) data = self.panel.get_stats()["data"] self.assertDictEqual(data, expected_stats_data) def test_urls(self): self.assertEqual( reverse("djdt:history_sidebar"), "/__debug__/history_sidebar/", ) self.assertEqual( resolve("/__debug__/history_sidebar/").url_name, "history_sidebar", ) self.assertEqual( reverse("djdt:history_refresh"), "/__debug__/history_refresh/", ) self.assertEqual( resolve("/__debug__/history_refresh/").url_name, "history_refresh", ) @override_settings(DEBUG=True) class HistoryViewsTestCase(IntegrationTestCase): PANEL_KEYS = { "VersionsPanel", "TimerPanel", "SettingsPanel", "HeadersPanel", "RequestPanel", "SQLPanel", "StaticFilesPanel", "TemplatesPanel", "AlertsPanel", "CachePanel", "SignalsPanel", "TasksPanel", "CommunityPanel", "ProfilingPanel", } def test_history_panel_integration_content(self): """Verify the history panel's content renders properly..""" store = get_store() self.assertEqual(len(list(store.request_ids())), 0) data = {"foo": "bar"} self.client.get("/json_view/", data, content_type="application/json") # Check the history panel's stats to verify the toolbar rendered properly. request_ids = list(store.request_ids()) self.assertEqual(len(request_ids), 1) toolbar = DebugToolbar.fetch(request_ids[0]) content = toolbar.get_panel_by_id(HistoryPanel.panel_id).content self.assertIn("bar", content) self.assertIn('name="exclude_history" value="True"', content) def test_history_sidebar_invalid(self): response = self.client.get(reverse("djdt:history_sidebar")) self.assertEqual(response.status_code, 400) def test_history_headers(self): """Validate the headers injected from the history panel.""" DebugToolbar.get_observe_request.cache_clear() response = self.client.get("/json_view/") request_id = next(iter(get_store().request_ids())) self.assertEqual(response.headers["djdt-request-id"], request_id) def test_history_headers_unobserved(self): """Validate the headers aren't injected from the history panel.""" with self.settings( DEBUG_TOOLBAR_CONFIG={"OBSERVE_REQUEST_CALLBACK": lambda request: False} ): DebugToolbar.get_observe_request.cache_clear() response = self.client.get("/json_view/") self.assertNotIn("djdt-request-id", response.headers) # Clear it again to avoid conflicting with another test # Specifically, DebugToolbarLiveTestCase.test_ajax_refresh DebugToolbar.get_observe_request.cache_clear() def test_history_sidebar(self): """Validate the history sidebar view.""" self.client.get("/json_view/") request_id = next(iter(get_store().request_ids())) data = {"request_id": request_id, "exclude_history": True} response = self.client.get(reverse("djdt:history_sidebar"), data=data) self.assertEqual(response.status_code, 200) self.assertEqual( set(response.json()), self.PANEL_KEYS, ) def test_history_sidebar_includes_history(self): """Validate the history sidebar view.""" self.client.get("/json_view/") panel_keys = copy.copy(self.PANEL_KEYS) panel_keys.add(HistoryPanel.panel_id) panel_keys.add(RedirectsPanel.panel_id) request_id = next(iter(get_store().request_ids())) data = {"request_id": request_id} response = self.client.get(reverse("djdt:history_sidebar"), data=data) self.assertEqual(response.status_code, 200) self.assertEqual( set(response.json()), panel_keys, ) @override_settings( DEBUG_TOOLBAR_CONFIG={"RENDER_PANELS": False, "RESULTS_CACHE_SIZE": 1} ) def test_history_sidebar_expired_request_id(self): """Validate the history sidebar view.""" self.client.get("/json_view/") request_id = next(iter(get_store().request_ids())) data = {"request_id": request_id, "exclude_history": True} response = self.client.get(reverse("djdt:history_sidebar"), data=data) self.assertEqual(response.status_code, 200) self.assertEqual( set(response.json()), self.PANEL_KEYS, ) # Make enough requests to unset the original self.client.get("/json_view/") # Querying old request_id should return in empty response data = {"request_id": request_id, "exclude_history": True} response = self.client.get(reverse("djdt:history_sidebar"), data=data) self.assertEqual(response.status_code, 200) self.assertEqual(response.json(), {}) # Querying with latest request_id latest_request_id = next(iter(get_store().request_ids())) data = {"request_id": latest_request_id, "exclude_history": True} response = self.client.get(reverse("djdt:history_sidebar"), data=data) self.assertEqual(response.status_code, 200) self.assertEqual( set(response.json()), self.PANEL_KEYS, ) def test_history_refresh(self): """Verify refresh history response has request variables.""" self.client.get("/json_view/", {"foo": "bar"}, content_type="application/json") self.client.get( "/json_view/", {"spam": "eggs"}, content_type="application/json" ) response = self.client.get( reverse("djdt:history_refresh"), data={"request_id": "foo"} ) self.assertEqual(response.status_code, 200) data = response.json() self.assertEqual(len(data["requests"]), 2) request_ids = list(get_store().request_ids()) self.assertIn(html.escape(request_ids[0]), data["requests"][0]["content"]) self.assertIn(html.escape(request_ids[1]), data["requests"][1]["content"]) for val in ["foo", "bar"]: self.assertIn(val, data["requests"][0]["content"]) for val in ["spam", "eggs"]: self.assertIn(val, data["requests"][1]["content"]) python-django-debug-toolbar-8.0.0/tests/panels/test_profiling.py000066400000000000000000000101051524561404200250520ustar00rootroot00000000000000import sys import unittest from django.contrib.auth.models import User from django.db import IntegrityError, transaction from django.http import HttpResponse from django.test.utils import override_settings from debug_toolbar.panels.profiling import ProfilingPanel from ..base import BaseTestCase, IntegrationTestCase from ..views import listcomp_view, regular_view @override_settings( DEBUG_TOOLBAR_PANELS=["debug_toolbar.panels.profiling.ProfilingPanel"] ) class ProfilingPanelTestCase(BaseTestCase): panel_id = ProfilingPanel.panel_id def test_regular_view(self): self._get_response = lambda request: regular_view(request, "profiling") response = self.panel.process_request(self.request) self.panel.generate_stats(self.request, response) self.assertIn("func_list", self.panel.get_stats()) self.assertIn("regular_view", self.panel.content) def test_insert_content(self): """ Test that the panel only inserts content after generate_stats and not the process_request. """ self._get_response = lambda request: regular_view(request, "profiling") response = self.panel.process_request(self.request) # ensure the panel does not have content yet. self.assertNotIn("regular_view", self.panel.content) self.panel.generate_stats(self.request, response) self.reload_stats() # ensure the panel renders correctly. content = self.panel.content self.assertIn("regular_view", content) self.assertIn("render", content) self.assertValidHTML(content) # ensure traces aren't escaped self.assertIn('', content) @override_settings(DEBUG_TOOLBAR_CONFIG={"PROFILER_THRESHOLD_RATIO": 1}) def test_cum_time_threshold(self): """ Test that cumulative time threshold excludes calls """ self._get_response = lambda request: regular_view(request, "profiling") response = self.panel.process_request(self.request) self.panel.generate_stats(self.request, response) # ensure the panel renders but doesn't include our function. content = self.panel.content self.assertIn("regular_view", content) self.assertNotIn("render", content) self.assertValidHTML(content) @unittest.skipUnless( sys.version_info < (3, 12, 0), "Python 3.12 no longer contains a frame for list comprehensions.", ) def test_listcomp_escaped(self): self._get_response = lambda request: listcomp_view(request) response = self.panel.process_request(self.request) self.panel.generate_stats(self.request, response) content = self.panel.content self.assertNotIn('', content) self.assertIn('<listcomp>', content) def test_generate_stats_no_profiler(self): """ Test generating stats with no profiler. """ response = HttpResponse() self.assertIsNone(self.panel.generate_stats(self.request, response)) def test_generate_stats_no_root_func(self): """ Test generating stats using profiler without root function. """ response = self.panel.process_request(self.request) self.panel.profiler.clear() self.panel.profiler.enable() self.panel.profiler.disable() self.panel.generate_stats(self.request, response) self.assertNotIn("func_list", self.panel.get_stats()) @override_settings( DEBUG=True, DEBUG_TOOLBAR_PANELS=["debug_toolbar.panels.profiling.ProfilingPanel"] ) class ProfilingPanelIntegrationTestCase(IntegrationTestCase): def test_view_executed_once(self): self.assertEqual(User.objects.count(), 0) response = self.client.get("/new_user/") self.assertContains(response, "Profiling") self.assertEqual(User.objects.count(), 1) with self.assertRaises(IntegrityError), transaction.atomic(): response = self.client.get("/new_user/") self.assertEqual(User.objects.count(), 1) python-django-debug-toolbar-8.0.0/tests/panels/test_redirects.py000066400000000000000000000100621524561404200250470ustar00rootroot00000000000000import copy from django.conf import settings from django.http import HttpResponse from django.test import AsyncRequestFactory from debug_toolbar.panels.redirects import RedirectsPanel from ..base import BaseTestCase class RedirectsPanelTestCase(BaseTestCase): panel_id = RedirectsPanel.panel_id def test_regular_response(self): not_redirect = HttpResponse() self._get_response = lambda request: not_redirect response = self.panel.process_request(self.request) self.assertTrue(response is not_redirect) def test_not_a_redirect(self): redirect = HttpResponse(status=304) self._get_response = lambda request: redirect response = self.panel.process_request(self.request) self.assertTrue(response is redirect) def test_redirect(self): redirect = HttpResponse(status=302) redirect["Location"] = "http://somewhere/else/" self._get_response = lambda request: redirect response = self.panel.process_request(self.request) self.assertFalse(response is redirect) self.assertContains(response, "302 Found") self.assertContains(response, "http://somewhere/else/") def test_redirect_with_broken_context_processor(self): TEMPLATES = copy.deepcopy(settings.TEMPLATES) TEMPLATES[1]["OPTIONS"]["context_processors"] = [ "tests.context_processors.broken" ] with self.settings(TEMPLATES=TEMPLATES): redirect = HttpResponse(status=302) redirect["Location"] = "http://somewhere/else/" self._get_response = lambda request: redirect response = self.panel.process_request(self.request) self.assertFalse(response is redirect) self.assertContains(response, "302 Found") self.assertContains(response, "http://somewhere/else/") def test_unknown_status_code(self): redirect = HttpResponse(status=369) redirect["Location"] = "http://somewhere/else/" self._get_response = lambda request: redirect response = self.panel.process_request(self.request) self.assertContains(response, "369 Unknown Status Code") def test_unknown_status_code_with_reason(self): redirect = HttpResponse(status=369, reason="Look Ma!") redirect["Location"] = "http://somewhere/else/" self._get_response = lambda request: redirect response = self.panel.process_request(self.request) self.assertContains(response, "369 Look Ma!") async def test_async_compatibility(self): redirect = HttpResponse(status=302) async def get_response(request): return redirect await_response = await get_response(self.request) self._get_response = get_response self.request = AsyncRequestFactory().get("/") response = await self.panel.process_request(self.request) self.assertIsInstance(response, HttpResponse) self.assertTrue(response is await_response) def test_original_response_preserved(self): redirect = HttpResponse(status=302) redirect["Location"] = "http://somewhere/else/" self._get_response = lambda request: redirect response = self.panel.process_request(self.request) self.assertFalse(response is redirect) self.assertTrue(hasattr(response, "original_response")) self.assertTrue(response.original_response is redirect) self.assertIsNone(response.get("Location")) self.assertEqual( response.original_response.get("Location"), "http://somewhere/else/" ) def test_deprecation_warning(self): """Test that a deprecation warning is shown when RedirectsPanel used.""" redirect = HttpResponse(status=304) redirect["Location"] = "http://somewhere/else/" self._get_response = lambda request: redirect with self.assertWarns(DeprecationWarning) as cm: self.panel.process_request(self.request) self.assertIn("RedirectsPanel is deprecated", str(cm.warning)) self.assertIn("HistoryPanel", str(cm.warning)) python-django-debug-toolbar-8.0.0/tests/panels/test_request.py000066400000000000000000000212641524561404200245610ustar00rootroot00000000000000from django.http import QueryDict from django.test import RequestFactory from debug_toolbar.panels.request import RequestPanel from ..base import BaseTestCase rf = RequestFactory() class RequestPanelTestCase(BaseTestCase): panel_id = RequestPanel.panel_id def test_non_ascii_session(self): self.request.session = {"où": "où"} response = self.panel.process_request(self.request) self.panel.generate_stats(self.request, response) self.assertIn("où", self.panel.content) def test_object_with_non_ascii_repr_in_request_params(self): request = rf.get("/non_ascii_request/") response = self.panel.process_request(request) self.panel.generate_stats(request, response) self.assertIn("nôt åscíì", self.panel.content) def test_insert_content(self): """ Test that the panel only inserts content after generate_stats and not the process_request. """ request = rf.get("/non_ascii_request/") response = self.panel.process_request(request) # ensure the panel does not have content yet. self.assertNotIn("nôt åscíì", self.panel.content) self.panel.generate_stats(request, response) # ensure the panel renders correctly. content = self.panel.content self.assertIn("nôt åscíì", content) self.assertValidHTML(content) def test_query_dict_for_request_in_method_get(self): """ Test verifies the correctness of the statistics generation method in the case when the GET request is class QueryDict """ self.request.GET = QueryDict("foo=bar") response = self.panel.process_request(self.request) self.panel.generate_stats(self.request, response) # ensure the panel GET request data is processed correctly. content = self.panel.content self.assertIn("foo", content) self.assertIn("bar", content) def test_dict_for_request_in_method_get(self): """ Test verifies the correctness of the statistics generation method in the case when the GET request is class dict """ self.request.GET = {"foo": "bar"} response = self.panel.process_request(self.request) self.panel.generate_stats(self.request, response) # ensure the panel GET request data is processed correctly. content = self.panel.content self.assertIn("foo", content) self.assertIn("bar", content) def test_query_dict_for_request_in_method_post(self): """ Test verifies the correctness of the statistics generation method in the case when the POST request is class QueryDict """ self.request.POST = QueryDict("foo=bar") response = self.panel.process_request(self.request) self.panel.generate_stats(self.request, response) # ensure the panel POST request data is processed correctly. content = self.panel.content self.assertIn("foo", content) self.assertIn("bar", content) def test_dict_for_request_in_method_post(self): """ Test verifies the correctness of the statistics generation method in the case when the POST request is class dict """ self.request.POST = {"foo": "bar"} response = self.panel.process_request(self.request) self.panel.generate_stats(self.request, response) # ensure the panel POST request data is processed correctly. content = self.panel.content self.assertIn("foo", content) self.assertIn("bar", content) def test_list_for_request_in_method_post(self): """ Verify that the toolbar doesn't crash if request.POST contains unexpected data. See https://github.com/django-commons/django-debug-toolbar/issues/1621 """ self.request.POST = [{"a": 1}, {"b": 2}] response = self.panel.process_request(self.request) self.panel.generate_stats(self.request, response) # ensure the panel POST request data is processed correctly. content = self.panel.content self.assertIn("[{'a': 1}, {'b': 2}]", content) def test_namespaced_url(self): request = rf.get("/admin/login/") response = self.panel.process_request(request) self.panel.generate_stats(request, response) panel_stats = self.panel.get_stats() self.assertEqual(panel_stats["view_urlname"], "admin:login") def test_session_list_sorted_or_not(self): """ Verify the session is sorted when all keys are strings. See https://github.com/django-commons/django-debug-toolbar/issues/1668 """ self.request.session = { 1: "value", "data": ["foo", "bar", 1], (2, 3): "tuple_key", } data = { "list": [(1, "value"), ("data", ["foo", "bar", 1]), ((2, 3), "tuple_key")] } response = self.panel.process_request(self.request) self.panel.generate_stats(self.request, response) panel_stats = self.panel.get_stats() self.assertEqual(panel_stats["session"], data) self.request.session = { "b": "b-value", "a": "a-value", } data = {"list": [("a", "a-value"), ("b", "b-value")]} response = self.panel.process_request(self.request) self.panel.generate_stats(self.request, response) panel_stats = self.panel.get_stats() self.assertEqual(panel_stats["session"], data) def test_sensitive_post_data_sanitized(self): """Test that sensitive POST data is redacted.""" self.request.POST = {"username": "testuser", "password": "secret123"} response = self.panel.process_request(self.request) self.panel.generate_stats(self.request, response) # Check that password is redacted in panel content content = self.panel.content self.assertIn("username", content) self.assertIn("testuser", content) self.assertIn("password", content) self.assertNotIn("secret123", content) self.assertIn("********************", content) def test_sensitive_get_data_sanitized(self): """Test that sensitive GET data is redacted.""" self.request.GET = {"api_key": "abc123", "q": "search term"} response = self.panel.process_request(self.request) self.panel.generate_stats(self.request, response) # Check that api_key is redacted in panel content content = self.panel.content self.assertIn("api_key", content) self.assertNotIn("abc123", content) self.assertIn("********************", content) self.assertIn("q", content) self.assertIn("search term", content) def test_sensitive_cookie_data_sanitized(self): """Test that sensitive cookie data is redacted.""" self.request.COOKIES = {"session_id": "abc123", "auth_token": "xyz789"} response = self.panel.process_request(self.request) self.panel.generate_stats(self.request, response) # Check that auth_token is redacted in panel content content = self.panel.content self.assertIn("session_id", content) self.assertIn("abc123", content) self.assertIn("auth_token", content) self.assertNotIn("xyz789", content) self.assertIn("********************", content) def test_sensitive_session_data_sanitized(self): """Test that sensitive session data is redacted.""" self.request.session = {"user_id": 123, "auth_token": "xyz789"} response = self.panel.process_request(self.request) self.panel.generate_stats(self.request, response) # Check that auth_token is redacted in panel content content = self.panel.content self.assertIn("user_id", content) self.assertIn("123", content) self.assertIn("auth_token", content) self.assertNotIn("xyz789", content) self.assertIn("********************", content) def test_querydict_sanitized(self): """Test that sensitive data in QueryDict objects is properly redacted.""" query_dict = QueryDict("username=testuser&password=secret123&token=abc456") self.request.GET = query_dict response = self.panel.process_request(self.request) self.panel.generate_stats(self.request, response) # Check that sensitive data is redacted in panel content content = self.panel.content self.assertIn("username", content) self.assertIn("testuser", content) self.assertIn("password", content) self.assertNotIn("secret123", content) self.assertIn("token", content) self.assertNotIn("abc456", content) self.assertIn("********************", content) python-django-debug-toolbar-8.0.0/tests/panels/test_settings.py000066400000000000000000000040051524561404200247230ustar00rootroot00000000000000from django.test import RequestFactory, override_settings from debug_toolbar.panels.settings import SettingsPanel from ..base import BaseTestCase, IntegrationTestCase rf = RequestFactory() class SettingsPanelTestCase(BaseTestCase): panel_id = SettingsPanel.panel_id def test_panel_recording(self): self.request = rf.post("/", data={"foo": "bar"}) response = self.panel.process_request(self.request) self.panel.generate_stats(self.request, response) settings = self.panel.get_stats()["settings"] self.assertEqual(settings["USE_THOUSAND_SEPARATOR"], "False") self.assertEqual(settings["ABSOLUTE_URL_OVERRIDES"], "{}") self.assertEqual(settings["EMAIL_HOST"], "'localhost'") self.assertEqual(settings["EMAIL_PORT"], "25") @override_settings(DEBUG=True) class SettingsIntegrationTestCase(IntegrationTestCase): def test_panel_title(self): response = self.client.get("/regular/basic/") # The settings module is None due to using Django's UserSettingsHolder # in tests. self.assertContains( response, '