From 3235c72af6ef3a86f9fb8543e4b2a7906c73492c Mon Sep 17 00:00:00 2001 From: kpcto Date: Sun, 1 Dec 2024 23:24:10 +0000 Subject: [PATCH] prvi commit --- Dockerfile | 0 README.md | 0 app/__init__.py | 0 app/models.py | 0 app/static/style.css | 0 app/templates/add_book.html | 0 app/templates/index.html | 0 app/views.py | 0 docker-compose.yml | 0 nginx.conf | 0 requirements.txt | 4 + .../MarkupSafe-3.0.2.dist-info/INSTALLER | 1 + .../MarkupSafe-3.0.2.dist-info/LICENSE.txt | 28 + .../MarkupSafe-3.0.2.dist-info/METADATA | 92 + .../MarkupSafe-3.0.2.dist-info/RECORD | 14 + .../MarkupSafe-3.0.2.dist-info/WHEEL | 5 + .../MarkupSafe-3.0.2.dist-info/top_level.txt | 1 + .../__pycache__/peewee.cpython-310.pyc | Bin 0 -> 260626 bytes .../__pycache__/pwiz.cpython-310.pyc | Bin 0 -> 6925 bytes .../site-packages/_distutils_hack/__init__.py | 128 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 5107 bytes .../__pycache__/override.cpython-310.pyc | Bin 0 -> 213 bytes .../site-packages/_distutils_hack/override.py | 1 + .../blinker-1.9.0.dist-info/INSTALLER | 1 + .../blinker-1.9.0.dist-info/LICENSE.txt | 20 + .../blinker-1.9.0.dist-info/METADATA | 60 + .../blinker-1.9.0.dist-info/RECORD | 12 + .../blinker-1.9.0.dist-info/WHEEL | 4 + venv/Lib/site-packages/blinker/__init__.py | 17 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 452 bytes .../__pycache__/_utilities.cpython-310.pyc | Bin 0 -> 2150 bytes .../blinker/__pycache__/base.cpython-310.pyc | Bin 0 -> 17587 bytes venv/Lib/site-packages/blinker/_utilities.py | 64 + venv/Lib/site-packages/blinker/base.py | 512 + venv/Lib/site-packages/blinker/py.typed | 0 .../certifi-2024.8.30.dist-info/INSTALLER | 1 + .../certifi-2024.8.30.dist-info/LICENSE | 20 + .../certifi-2024.8.30.dist-info/METADATA | 67 + .../certifi-2024.8.30.dist-info/RECORD | 14 + .../certifi-2024.8.30.dist-info/WHEEL | 5 + .../certifi-2024.8.30.dist-info/top_level.txt | 1 + venv/Lib/site-packages/certifi/__init__.py | 4 + venv/Lib/site-packages/certifi/__main__.py | 12 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 267 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 405 bytes .../certifi/__pycache__/core.cpython-310.pyc | Bin 0 -> 2098 bytes venv/Lib/site-packages/certifi/cacert.pem | 4929 ++++++++++ venv/Lib/site-packages/certifi/core.py | 114 + venv/Lib/site-packages/certifi/py.typed | 0 .../INSTALLER | 1 + .../LICENSE | 21 + .../METADATA | 695 ++ .../charset_normalizer-3.4.0.dist-info/RECORD | 35 + .../charset_normalizer-3.4.0.dist-info/WHEEL | 5 + .../entry_points.txt | 2 + .../top_level.txt | 1 + .../charset_normalizer/__init__.py | 46 + .../charset_normalizer/__main__.py | 4 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1563 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 247 bytes .../__pycache__/api.cpython-310.pyc | Bin 0 -> 11718 bytes .../__pycache__/cd.cpython-310.pyc | Bin 0 -> 9659 bytes .../__pycache__/constant.cpython-310.pyc | Bin 0 -> 30435 bytes .../__pycache__/legacy.cpython-310.pyc | Bin 0 -> 2168 bytes .../__pycache__/md.cpython-310.pyc | Bin 0 -> 15986 bytes .../__pycache__/models.cpython-310.pyc | Bin 0 -> 12020 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 8907 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 249 bytes .../site-packages/charset_normalizer/api.py | 668 ++ .../site-packages/charset_normalizer/cd.py | 395 + .../charset_normalizer/cli/__init__.py | 6 + .../charset_normalizer/cli/__main__.py | 320 + .../cli/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 250 bytes .../cli/__pycache__/__main__.cpython-310.pyc | Bin 0 -> 6727 bytes .../charset_normalizer/constant.py | 1997 ++++ .../charset_normalizer/legacy.py | 65 + .../charset_normalizer/md.cp310-win_amd64.pyd | Bin 0 -> 10752 bytes .../site-packages/charset_normalizer/md.py | 628 ++ .../md__mypyc.cp310-win_amd64.pyd | Bin 0 -> 122368 bytes .../charset_normalizer/models.py | 359 + .../site-packages/charset_normalizer/py.typed | 0 .../site-packages/charset_normalizer/utils.py | 421 + .../charset_normalizer/version.py | 6 + .../click-8.1.7.dist-info/INSTALLER | 1 + .../click-8.1.7.dist-info/LICENSE.rst | 28 + .../click-8.1.7.dist-info/METADATA | 103 + .../click-8.1.7.dist-info/RECORD | 39 + .../site-packages/click-8.1.7.dist-info/WHEEL | 5 + .../click-8.1.7.dist-info/top_level.txt | 1 + venv/Lib/site-packages/click/__init__.py | 73 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2596 bytes .../click/__pycache__/_compat.cpython-310.pyc | Bin 0 -> 15664 bytes .../__pycache__/_termui_impl.cpython-310.pyc | Bin 0 -> 16294 bytes .../__pycache__/_textwrap.cpython-310.pyc | Bin 0 -> 1530 bytes .../__pycache__/_winconsole.cpython-310.pyc | Bin 0 -> 7648 bytes .../click/__pycache__/core.cpython-310.pyc | Bin 0 -> 91172 bytes .../__pycache__/decorators.cpython-310.pyc | Bin 0 -> 17194 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 10242 bytes .../__pycache__/formatting.cpython-310.pyc | Bin 0 -> 9443 bytes .../click/__pycache__/globals.cpython-310.pyc | Bin 0 -> 2415 bytes .../click/__pycache__/parser.cpython-310.pyc | Bin 0 -> 13660 bytes .../shell_completion.cpython-310.pyc | Bin 0 -> 16831 bytes .../click/__pycache__/termui.cpython-310.pyc | Bin 0 -> 26116 bytes .../click/__pycache__/testing.cpython-310.pyc | Bin 0 -> 15189 bytes .../click/__pycache__/types.cpython-310.pyc | Bin 0 -> 33673 bytes .../click/__pycache__/utils.cpython-310.pyc | Bin 0 -> 18833 bytes venv/Lib/site-packages/click/_compat.py | 623 ++ venv/Lib/site-packages/click/_termui_impl.py | 739 ++ venv/Lib/site-packages/click/_textwrap.py | 49 + venv/Lib/site-packages/click/_winconsole.py | 279 + venv/Lib/site-packages/click/core.py | 3042 ++++++ venv/Lib/site-packages/click/decorators.py | 561 ++ venv/Lib/site-packages/click/exceptions.py | 288 + venv/Lib/site-packages/click/formatting.py | 301 + venv/Lib/site-packages/click/globals.py | 68 + venv/Lib/site-packages/click/parser.py | 529 + venv/Lib/site-packages/click/py.typed | 0 .../site-packages/click/shell_completion.py | 596 ++ venv/Lib/site-packages/click/termui.py | 784 ++ venv/Lib/site-packages/click/testing.py | 479 + venv/Lib/site-packages/click/types.py | 1089 +++ venv/Lib/site-packages/click/utils.py | 624 ++ .../colorama-0.4.6.dist-info/INSTALLER | 1 + .../colorama-0.4.6.dist-info/METADATA | 441 + .../colorama-0.4.6.dist-info/RECORD | 31 + .../colorama-0.4.6.dist-info/WHEEL | 5 + .../licenses/LICENSE.txt | 27 + venv/Lib/site-packages/colorama/__init__.py | 7 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 441 bytes .../colorama/__pycache__/ansi.cpython-310.pyc | Bin 0 -> 2967 bytes .../__pycache__/ansitowin32.cpython-310.pyc | Bin 0 -> 8479 bytes .../__pycache__/initialise.cpython-310.pyc | Bin 0 -> 2224 bytes .../__pycache__/win32.cpython-310.pyc | Bin 0 -> 4434 bytes .../__pycache__/winterm.cpython-310.pyc | Bin 0 -> 5130 bytes venv/Lib/site-packages/colorama/ansi.py | 102 + .../Lib/site-packages/colorama/ansitowin32.py | 277 + venv/Lib/site-packages/colorama/initialise.py | 121 + .../site-packages/colorama/tests/__init__.py | 1 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 161 bytes .../__pycache__/ansi_test.cpython-310.pyc | Bin 0 -> 2253 bytes .../ansitowin32_test.cpython-310.pyc | Bin 0 -> 11564 bytes .../initialise_test.cpython-310.pyc | Bin 0 -> 6861 bytes .../__pycache__/isatty_test.cpython-310.pyc | Bin 0 -> 2652 bytes .../tests/__pycache__/utils.cpython-310.pyc | Bin 0 -> 1561 bytes .../__pycache__/winterm_test.cpython-310.pyc | Bin 0 -> 3154 bytes .../site-packages/colorama/tests/ansi_test.py | 76 + .../colorama/tests/ansitowin32_test.py | 294 + .../colorama/tests/initialise_test.py | 189 + .../colorama/tests/isatty_test.py | 57 + .../Lib/site-packages/colorama/tests/utils.py | 49 + .../colorama/tests/winterm_test.py | 131 + venv/Lib/site-packages/colorama/win32.py | 180 + venv/Lib/site-packages/colorama/winterm.py | 195 + .../site-packages/distutils-precedence.pth | 1 + .../flask-3.1.0.dist-info/INSTALLER | 1 + .../flask-3.1.0.dist-info/LICENSE.txt | 28 + .../flask-3.1.0.dist-info/METADATA | 81 + .../flask-3.1.0.dist-info/RECORD | 58 + .../flask-3.1.0.dist-info/REQUESTED | 0 .../site-packages/flask-3.1.0.dist-info/WHEEL | 4 + .../flask-3.1.0.dist-info/entry_points.txt | 3 + venv/Lib/site-packages/flask/__init__.py | 60 + venv/Lib/site-packages/flask/__main__.py | 3 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2267 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 192 bytes .../flask/__pycache__/app.cpython-310.pyc | Bin 0 -> 50863 bytes .../__pycache__/blueprints.cpython-310.pyc | Bin 0 -> 4147 bytes .../flask/__pycache__/cli.cpython-310.pyc | Bin 0 -> 29894 bytes .../flask/__pycache__/config.cpython-310.pyc | Bin 0 -> 13385 bytes .../flask/__pycache__/ctx.cpython-310.pyc | Bin 0 -> 14833 bytes .../__pycache__/debughelpers.cpython-310.pyc | Bin 0 -> 6571 bytes .../flask/__pycache__/globals.cpython-310.pyc | Bin 0 -> 1560 bytes .../flask/__pycache__/helpers.cpython-310.pyc | Bin 0 -> 22082 bytes .../flask/__pycache__/logging.cpython-310.pyc | Bin 0 -> 2527 bytes .../__pycache__/sessions.cpython-310.pyc | Bin 0 -> 14223 bytes .../flask/__pycache__/signals.cpython-310.pyc | Bin 0 -> 790 bytes .../__pycache__/templating.cpython-310.pyc | Bin 0 -> 7064 bytes .../flask/__pycache__/testing.cpython-310.pyc | Bin 0 -> 9784 bytes .../flask/__pycache__/typing.cpython-310.pyc | Bin 0 -> 1790 bytes .../flask/__pycache__/views.cpython-310.pyc | Bin 0 -> 5528 bytes .../__pycache__/wrappers.cpython-310.pyc | Bin 0 -> 8370 bytes venv/Lib/site-packages/flask/app.py | 1536 +++ venv/Lib/site-packages/flask/blueprints.py | 128 + venv/Lib/site-packages/flask/cli.py | 1133 +++ venv/Lib/site-packages/flask/config.py | 367 + venv/Lib/site-packages/flask/ctx.py | 449 + venv/Lib/site-packages/flask/debughelpers.py | 178 + venv/Lib/site-packages/flask/globals.py | 51 + venv/Lib/site-packages/flask/helpers.py | 634 ++ venv/Lib/site-packages/flask/json/__init__.py | 170 + .../json/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 5974 bytes .../json/__pycache__/provider.cpython-310.pyc | Bin 0 -> 7666 bytes .../json/__pycache__/tag.cpython-310.pyc | Bin 0 -> 11624 bytes venv/Lib/site-packages/flask/json/provider.py | 215 + venv/Lib/site-packages/flask/json/tag.py | 327 + venv/Lib/site-packages/flask/logging.py | 79 + venv/Lib/site-packages/flask/py.typed | 0 venv/Lib/site-packages/flask/sansio/README.md | 6 + .../sansio/__pycache__/app.cpython-310.pyc | Bin 0 -> 28623 bytes .../__pycache__/blueprints.cpython-310.pyc | Bin 0 -> 22913 bytes .../__pycache__/scaffold.cpython-310.pyc | Bin 0 -> 23830 bytes venv/Lib/site-packages/flask/sansio/app.py | 964 ++ .../site-packages/flask/sansio/blueprints.py | 632 ++ .../site-packages/flask/sansio/scaffold.py | 792 ++ venv/Lib/site-packages/flask/sessions.py | 398 + venv/Lib/site-packages/flask/signals.py | 17 + venv/Lib/site-packages/flask/templating.py | 219 + venv/Lib/site-packages/flask/testing.py | 297 + venv/Lib/site-packages/flask/typing.py | 90 + venv/Lib/site-packages/flask/views.py | 191 + venv/Lib/site-packages/flask/wrappers.py | 257 + .../idna-3.10.dist-info/INSTALLER | 1 + .../idna-3.10.dist-info/LICENSE.md | 31 + .../idna-3.10.dist-info/METADATA | 250 + .../site-packages/idna-3.10.dist-info/RECORD | 22 + .../site-packages/idna-3.10.dist-info/WHEEL | 4 + venv/Lib/site-packages/idna/__init__.py | 45 + .../idna/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 815 bytes .../idna/__pycache__/codec.cpython-310.pyc | Bin 0 -> 3236 bytes .../idna/__pycache__/compat.cpython-310.pyc | Bin 0 -> 718 bytes .../idna/__pycache__/core.cpython-310.pyc | Bin 0 -> 9670 bytes .../idna/__pycache__/idnadata.cpython-310.pyc | Bin 0 -> 194411 bytes .../__pycache__/intranges.cpython-310.pyc | Bin 0 -> 1947 bytes .../__pycache__/package_data.cpython-310.pyc | Bin 0 -> 175 bytes .../__pycache__/uts46data.cpython-310.pyc | Bin 0 -> 152339 bytes venv/Lib/site-packages/idna/codec.py | 122 + venv/Lib/site-packages/idna/compat.py | 15 + venv/Lib/site-packages/idna/core.py | 437 + venv/Lib/site-packages/idna/idnadata.py | 4243 ++++++++ venv/Lib/site-packages/idna/intranges.py | 57 + venv/Lib/site-packages/idna/package_data.py | 1 + venv/Lib/site-packages/idna/py.typed | 0 venv/Lib/site-packages/idna/uts46data.py | 8681 +++++++++++++++++ .../itsdangerous-2.2.0.dist-info/INSTALLER | 1 + .../itsdangerous-2.2.0.dist-info/LICENSE.txt | 28 + .../itsdangerous-2.2.0.dist-info/METADATA | 60 + .../itsdangerous-2.2.0.dist-info/RECORD | 22 + .../itsdangerous-2.2.0.dist-info/WHEEL | 4 + .../site-packages/itsdangerous/__init__.py | 38 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1441 bytes .../__pycache__/_json.cpython-310.pyc | Bin 0 -> 959 bytes .../__pycache__/encoding.cpython-310.pyc | Bin 0 -> 1910 bytes .../__pycache__/exc.cpython-310.pyc | Bin 0 -> 3375 bytes .../__pycache__/serializer.cpython-310.pyc | Bin 0 -> 11707 bytes .../__pycache__/signer.cpython-310.pyc | Bin 0 -> 8986 bytes .../__pycache__/timed.cpython-310.pyc | Bin 0 -> 6546 bytes .../__pycache__/url_safe.cpython-310.pyc | Bin 0 -> 2840 bytes venv/Lib/site-packages/itsdangerous/_json.py | 18 + .../site-packages/itsdangerous/encoding.py | 54 + venv/Lib/site-packages/itsdangerous/exc.py | 106 + venv/Lib/site-packages/itsdangerous/py.typed | 0 .../site-packages/itsdangerous/serializer.py | 406 + venv/Lib/site-packages/itsdangerous/signer.py | 266 + venv/Lib/site-packages/itsdangerous/timed.py | 228 + .../site-packages/itsdangerous/url_safe.py | 83 + .../jinja2-3.1.4.dist-info/INSTALLER | 1 + .../jinja2-3.1.4.dist-info/LICENSE.txt | 28 + .../jinja2-3.1.4.dist-info/METADATA | 76 + .../jinja2-3.1.4.dist-info/RECORD | 57 + .../jinja2-3.1.4.dist-info/WHEEL | 4 + .../jinja2-3.1.4.dist-info/entry_points.txt | 3 + venv/Lib/site-packages/jinja2/__init__.py | 38 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1581 bytes .../__pycache__/_identifier.cpython-310.pyc | Bin 0 -> 2056 bytes .../__pycache__/async_utils.cpython-310.pyc | Bin 0 -> 2670 bytes .../__pycache__/bccache.cpython-310.pyc | Bin 0 -> 13955 bytes .../__pycache__/compiler.cpython-310.pyc | Bin 0 -> 54552 bytes .../__pycache__/constants.cpython-310.pyc | Bin 0 -> 1517 bytes .../jinja2/__pycache__/debug.cpython-310.pyc | Bin 0 -> 3973 bytes .../__pycache__/defaults.cpython-310.pyc | Bin 0 -> 1317 bytes .../__pycache__/environment.cpython-310.pyc | Bin 0 -> 53459 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 5516 bytes .../jinja2/__pycache__/ext.cpython-310.pyc | Bin 0 -> 25848 bytes .../__pycache__/filters.cpython-310.pyc | Bin 0 -> 51935 bytes .../__pycache__/idtracking.cpython-310.pyc | Bin 0 -> 11068 bytes .../jinja2/__pycache__/lexer.cpython-310.pyc | Bin 0 -> 20420 bytes .../__pycache__/loaders.cpython-310.pyc | Bin 0 -> 20478 bytes .../jinja2/__pycache__/meta.cpython-310.pyc | Bin 0 -> 3797 bytes .../__pycache__/nativetypes.cpython-310.pyc | Bin 0 -> 4992 bytes .../jinja2/__pycache__/nodes.cpython-310.pyc | Bin 0 -> 40307 bytes .../__pycache__/optimizer.cpython-310.pyc | Bin 0 -> 1937 bytes .../jinja2/__pycache__/parser.cpython-310.pyc | Bin 0 -> 27780 bytes .../__pycache__/runtime.cpython-310.pyc | Bin 0 -> 32139 bytes .../__pycache__/sandbox.cpython-310.pyc | Bin 0 -> 11977 bytes .../jinja2/__pycache__/tests.cpython-310.pyc | Bin 0 -> 6677 bytes .../jinja2/__pycache__/utils.cpython-310.pyc | Bin 0 -> 24511 bytes .../__pycache__/visitor.cpython-310.pyc | Bin 0 -> 3956 bytes venv/Lib/site-packages/jinja2/_identifier.py | 6 + venv/Lib/site-packages/jinja2/async_utils.py | 84 + venv/Lib/site-packages/jinja2/bccache.py | 408 + venv/Lib/site-packages/jinja2/compiler.py | 1960 ++++ venv/Lib/site-packages/jinja2/constants.py | 20 + venv/Lib/site-packages/jinja2/debug.py | 191 + venv/Lib/site-packages/jinja2/defaults.py | 48 + venv/Lib/site-packages/jinja2/environment.py | 1675 ++++ venv/Lib/site-packages/jinja2/exceptions.py | 166 + venv/Lib/site-packages/jinja2/ext.py | 870 ++ venv/Lib/site-packages/jinja2/filters.py | 1866 ++++ venv/Lib/site-packages/jinja2/idtracking.py | 318 + venv/Lib/site-packages/jinja2/lexer.py | 868 ++ venv/Lib/site-packages/jinja2/loaders.py | 667 ++ venv/Lib/site-packages/jinja2/meta.py | 112 + venv/Lib/site-packages/jinja2/nativetypes.py | 130 + venv/Lib/site-packages/jinja2/nodes.py | 1206 +++ venv/Lib/site-packages/jinja2/optimizer.py | 48 + venv/Lib/site-packages/jinja2/parser.py | 1041 ++ venv/Lib/site-packages/jinja2/py.typed | 0 venv/Lib/site-packages/jinja2/runtime.py | 1056 ++ venv/Lib/site-packages/jinja2/sandbox.py | 429 + venv/Lib/site-packages/jinja2/tests.py | 256 + venv/Lib/site-packages/jinja2/utils.py | 755 ++ venv/Lib/site-packages/jinja2/visitor.py | 92 + venv/Lib/site-packages/markupsafe/__init__.py | 395 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 15386 bytes .../__pycache__/_native.cpython-310.pyc | Bin 0 -> 391 bytes venv/Lib/site-packages/markupsafe/_native.py | 8 + venv/Lib/site-packages/markupsafe/_speedups.c | 204 + .../markupsafe/_speedups.cp310-win_amd64.pyd | Bin 0 -> 13312 bytes .../site-packages/markupsafe/_speedups.pyi | 1 + venv/Lib/site-packages/markupsafe/py.typed | 0 .../peewee-3.17.8.dist-info/INSTALLER | 1 + .../peewee-3.17.8.dist-info/LICENSE | 19 + .../peewee-3.17.8.dist-info/METADATA | 168 + .../peewee-3.17.8.dist-info/RECORD | 59 + .../peewee-3.17.8.dist-info/REQUESTED | 0 .../peewee-3.17.8.dist-info/WHEEL | 5 + .../peewee-3.17.8.dist-info/top_level.txt | 3 + venv/Lib/site-packages/peewee.py | 8213 ++++++++++++++++ .../pip-22.0.4.dist-info/INSTALLER | 1 + .../pip-22.0.4.dist-info/LICENSE.txt | 20 + .../pip-22.0.4.dist-info/METADATA | 92 + .../site-packages/pip-22.0.4.dist-info/RECORD | 1053 ++ .../pip-22.0.4.dist-info/REQUESTED | 0 .../site-packages/pip-22.0.4.dist-info/WHEEL | 5 + .../pip-22.0.4.dist-info/entry_points.txt | 5 + .../pip-22.0.4.dist-info/top_level.txt | 1 + venv/Lib/site-packages/pip/__init__.py | 13 + venv/Lib/site-packages/pip/__main__.py | 31 + .../pip/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 606 bytes .../pip/__pycache__/__main__.cpython-310.pyc | Bin 0 -> 568 bytes .../site-packages/pip/_internal/__init__.py | 19 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 727 bytes .../__pycache__/build_env.cpython-310.pyc | Bin 0 -> 9571 bytes .../__pycache__/cache.cpython-310.pyc | Bin 0 -> 8354 bytes .../__pycache__/configuration.cpython-310.pyc | Bin 0 -> 11100 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 23099 bytes .../__pycache__/main.cpython-310.pyc | Bin 0 -> 592 bytes .../__pycache__/pyproject.cpython-310.pyc | Bin 0 -> 3511 bytes .../self_outdated_check.cpython-310.pyc | Bin 0 -> 4551 bytes .../__pycache__/wheel_builder.cpython-310.pyc | Bin 0 -> 9113 bytes .../site-packages/pip/_internal/build_env.py | 296 + venv/Lib/site-packages/pip/_internal/cache.py | 264 + .../pip/_internal/cli/__init__.py | 4 + .../cli/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 247 bytes .../autocompletion.cpython-310.pyc | Bin 0 -> 5282 bytes .../__pycache__/base_command.cpython-310.pyc | Bin 0 -> 6322 bytes .../__pycache__/cmdoptions.cpython-310.pyc | Bin 0 -> 22522 bytes .../command_context.cpython-310.pyc | Bin 0 -> 1281 bytes .../cli/__pycache__/main.cpython-310.pyc | Bin 0 -> 1345 bytes .../__pycache__/main_parser.cpython-310.pyc | Bin 0 -> 2131 bytes .../cli/__pycache__/parser.cpython-310.pyc | Bin 0 -> 9918 bytes .../__pycache__/progress_bars.cpython-310.pyc | Bin 0 -> 9207 bytes .../__pycache__/req_command.cpython-310.pyc | Bin 0 -> 13508 bytes .../cli/__pycache__/spinners.cpython-310.pyc | Bin 0 -> 4921 bytes .../__pycache__/status_codes.cpython-310.pyc | Bin 0 -> 326 bytes .../pip/_internal/cli/autocompletion.py | 171 + .../pip/_internal/cli/base_command.py | 223 + .../pip/_internal/cli/cmdoptions.py | 1018 ++ .../pip/_internal/cli/command_context.py | 27 + .../site-packages/pip/_internal/cli/main.py | 70 + .../pip/_internal/cli/main_parser.py | 87 + .../site-packages/pip/_internal/cli/parser.py | 292 + .../pip/_internal/cli/progress_bars.py | 321 + .../pip/_internal/cli/req_command.py | 506 + .../pip/_internal/cli/spinners.py | 157 + .../pip/_internal/cli/status_codes.py | 6 + .../pip/_internal/commands/__init__.py | 127 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 3110 bytes .../__pycache__/cache.cpython-310.pyc | Bin 0 -> 6151 bytes .../__pycache__/check.cpython-310.pyc | Bin 0 -> 1544 bytes .../__pycache__/completion.cpython-310.pyc | Bin 0 -> 3111 bytes .../__pycache__/configuration.cpython-310.pyc | Bin 0 -> 8293 bytes .../__pycache__/debug.cpython-310.pyc | Bin 0 -> 6660 bytes .../__pycache__/download.cpython-310.pyc | Bin 0 -> 3958 bytes .../__pycache__/freeze.cpython-310.pyc | Bin 0 -> 2609 bytes .../commands/__pycache__/hash.cpython-310.pyc | Bin 0 -> 2123 bytes .../commands/__pycache__/help.cpython-310.pyc | Bin 0 -> 1284 bytes .../__pycache__/index.cpython-310.pyc | Bin 0 -> 4607 bytes .../__pycache__/install.cpython-310.pyc | Bin 0 -> 17770 bytes .../commands/__pycache__/list.cpython-310.pyc | Bin 0 -> 10234 bytes .../__pycache__/search.cpython-310.pyc | Bin 0 -> 5337 bytes .../commands/__pycache__/show.cpython-310.pyc | Bin 0 -> 6090 bytes .../__pycache__/uninstall.cpython-310.pyc | Bin 0 -> 3081 bytes .../__pycache__/wheel.cpython-310.pyc | Bin 0 -> 4813 bytes .../pip/_internal/commands/cache.py | 223 + .../pip/_internal/commands/check.py | 53 + .../pip/_internal/commands/completion.py | 96 + .../pip/_internal/commands/configuration.py | 266 + .../pip/_internal/commands/debug.py | 202 + .../pip/_internal/commands/download.py | 140 + .../pip/_internal/commands/freeze.py | 97 + .../pip/_internal/commands/hash.py | 59 + .../pip/_internal/commands/help.py | 41 + .../pip/_internal/commands/index.py | 139 + .../pip/_internal/commands/install.py | 771 ++ .../pip/_internal/commands/list.py | 361 + .../pip/_internal/commands/search.py | 174 + .../pip/_internal/commands/show.py | 178 + .../pip/_internal/commands/uninstall.py | 105 + .../pip/_internal/commands/wheel.py | 178 + .../pip/_internal/configuration.py | 366 + .../pip/_internal/distributions/__init__.py | 21 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 774 bytes .../__pycache__/base.cpython-310.pyc | Bin 0 -> 1831 bytes .../__pycache__/installed.cpython-310.pyc | Bin 0 -> 1208 bytes .../__pycache__/sdist.cpython-310.pyc | Bin 0 -> 4420 bytes .../__pycache__/wheel.cpython-310.pyc | Bin 0 -> 1575 bytes .../pip/_internal/distributions/base.py | 36 + .../pip/_internal/distributions/installed.py | 20 + .../pip/_internal/distributions/sdist.py | 127 + .../pip/_internal/distributions/wheel.py | 31 + .../site-packages/pip/_internal/exceptions.py | 658 ++ .../pip/_internal/index/__init__.py | 2 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 201 bytes .../__pycache__/collector.cpython-310.pyc | Bin 0 -> 18039 bytes .../package_finder.cpython-310.pyc | Bin 0 -> 28095 bytes .../index/__pycache__/sources.cpython-310.pyc | Bin 0 -> 7094 bytes .../pip/_internal/index/collector.py | 610 ++ .../pip/_internal/index/package_finder.py | 1004 ++ .../pip/_internal/index/sources.py | 224 + .../pip/_internal/locations/__init__.py | 520 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 12361 bytes .../__pycache__/_distutils.cpython-310.pyc | Bin 0 -> 4629 bytes .../__pycache__/_sysconfig.cpython-310.pyc | Bin 0 -> 6212 bytes .../__pycache__/base.cpython-310.pyc | Bin 0 -> 1511 bytes .../pip/_internal/locations/_distutils.py | 169 + .../pip/_internal/locations/_sysconfig.py | 219 + .../pip/_internal/locations/base.py | 52 + venv/Lib/site-packages/pip/_internal/main.py | 12 + .../pip/_internal/metadata/__init__.py | 62 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2267 bytes .../metadata/__pycache__/base.cpython-310.pyc | Bin 0 -> 20821 bytes .../__pycache__/pkg_resources.cpython-310.pyc | Bin 0 -> 9837 bytes .../pip/_internal/metadata/base.py | 546 ++ .../pip/_internal/metadata/pkg_resources.py | 256 + .../pip/_internal/models/__init__.py | 2 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 235 bytes .../__pycache__/candidate.cpython-310.pyc | Bin 0 -> 1387 bytes .../__pycache__/direct_url.cpython-310.pyc | Bin 0 -> 7264 bytes .../format_control.cpython-310.pyc | Bin 0 -> 2712 bytes .../models/__pycache__/index.cpython-310.pyc | Bin 0 -> 1204 bytes .../models/__pycache__/link.cpython-310.pyc | Bin 0 -> 10136 bytes .../models/__pycache__/scheme.cpython-310.pyc | Bin 0 -> 1003 bytes .../__pycache__/search_scope.cpython-310.pyc | Bin 0 -> 3458 bytes .../selection_prefs.cpython-310.pyc | Bin 0 -> 1665 bytes .../__pycache__/target_python.cpython-310.pyc | Bin 0 -> 3420 bytes .../models/__pycache__/wheel.cpython-310.pyc | Bin 0 -> 4311 bytes .../pip/_internal/models/candidate.py | 34 + .../pip/_internal/models/direct_url.py | 220 + .../pip/_internal/models/format_control.py | 80 + .../pip/_internal/models/index.py | 28 + .../pip/_internal/models/link.py | 288 + .../pip/_internal/models/scheme.py | 31 + .../pip/_internal/models/search_scope.py | 129 + .../pip/_internal/models/selection_prefs.py | 51 + .../pip/_internal/models/target_python.py | 110 + .../pip/_internal/models/wheel.py | 89 + .../pip/_internal/network/__init__.py | 2 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 223 bytes .../network/__pycache__/auth.cpython-310.pyc | Bin 0 -> 7503 bytes .../network/__pycache__/cache.cpython-310.pyc | Bin 0 -> 2904 bytes .../__pycache__/download.cpython-310.pyc | Bin 0 -> 5470 bytes .../__pycache__/lazy_wheel.cpython-310.pyc | Bin 0 -> 8378 bytes .../__pycache__/session.cpython-310.pyc | Bin 0 -> 10709 bytes .../network/__pycache__/utils.cpython-310.pyc | Bin 0 -> 1419 bytes .../__pycache__/xmlrpc.cpython-310.pyc | Bin 0 -> 2036 bytes .../pip/_internal/network/auth.py | 323 + .../pip/_internal/network/cache.py | 69 + .../pip/_internal/network/download.py | 185 + .../pip/_internal/network/lazy_wheel.py | 210 + .../pip/_internal/network/session.py | 454 + .../pip/_internal/network/utils.py | 96 + .../pip/_internal/network/xmlrpc.py | 60 + .../pip/_internal/operations/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 171 bytes .../__pycache__/check.cpython-310.pyc | Bin 0 -> 3984 bytes .../__pycache__/freeze.cpython-310.pyc | Bin 0 -> 6169 bytes .../__pycache__/prepare.cpython-310.pyc | Bin 0 -> 14867 bytes .../_internal/operations/build/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 177 bytes .../__pycache__/metadata.cpython-310.pyc | Bin 0 -> 1404 bytes .../metadata_editable.cpython-310.pyc | Bin 0 -> 1438 bytes .../metadata_legacy.cpython-310.pyc | Bin 0 -> 2349 bytes .../build/__pycache__/wheel.cpython-310.pyc | Bin 0 -> 1194 bytes .../wheel_editable.cpython-310.pyc | Bin 0 -> 1418 bytes .../__pycache__/wheel_legacy.cpython-310.pyc | Bin 0 -> 2734 bytes .../_internal/operations/build/metadata.py | 39 + .../operations/build/metadata_editable.py | 41 + .../operations/build/metadata_legacy.py | 74 + .../pip/_internal/operations/build/wheel.py | 37 + .../operations/build/wheel_editable.py | 46 + .../operations/build/wheel_legacy.py | 102 + .../pip/_internal/operations/check.py | 149 + .../pip/_internal/operations/freeze.py | 254 + .../_internal/operations/install/__init__.py | 2 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 235 bytes .../editable_legacy.cpython-310.pyc | Bin 0 -> 1522 bytes .../__pycache__/legacy.cpython-310.pyc | Bin 0 -> 3306 bytes .../install/__pycache__/wheel.cpython-310.pyc | Bin 0 -> 21068 bytes .../operations/install/editable_legacy.py | 47 + .../_internal/operations/install/legacy.py | 120 + .../pip/_internal/operations/install/wheel.py | 738 ++ .../pip/_internal/operations/prepare.py | 642 ++ .../site-packages/pip/_internal/pyproject.py | 168 + .../pip/_internal/req/__init__.py | 94 + .../req/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2571 bytes .../__pycache__/constructors.cpython-310.pyc | Bin 0 -> 12136 bytes .../req/__pycache__/req_file.cpython-310.pyc | Bin 0 -> 13466 bytes .../__pycache__/req_install.cpython-310.pyc | Bin 0 -> 22151 bytes .../req/__pycache__/req_set.cpython-310.pyc | Bin 0 -> 5813 bytes .../__pycache__/req_tracker.cpython-310.pyc | Bin 0 -> 4279 bytes .../__pycache__/req_uninstall.cpython-310.pyc | Bin 0 -> 18921 bytes .../pip/_internal/req/constructors.py | 490 + .../pip/_internal/req/req_file.py | 536 + .../pip/_internal/req/req_install.py | 858 ++ .../pip/_internal/req/req_set.py | 189 + .../pip/_internal/req/req_tracker.py | 124 + .../pip/_internal/req/req_uninstall.py | 633 ++ .../pip/_internal/resolution/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 171 bytes .../__pycache__/base.cpython-310.pyc | Bin 0 -> 1023 bytes .../pip/_internal/resolution/base.py | 20 + .../_internal/resolution/legacy/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 178 bytes .../__pycache__/resolver.cpython-310.pyc | Bin 0 -> 12265 bytes .../_internal/resolution/legacy/resolver.py | 467 + .../resolution/resolvelib/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 182 bytes .../__pycache__/base.cpython-310.pyc | Bin 0 -> 6425 bytes .../__pycache__/candidates.cpython-310.pyc | Bin 0 -> 18336 bytes .../__pycache__/factory.cpython-310.pyc | Bin 0 -> 19190 bytes .../found_candidates.cpython-310.pyc | Bin 0 -> 4842 bytes .../__pycache__/provider.cpython-310.pyc | Bin 0 -> 7684 bytes .../__pycache__/reporter.cpython-310.pyc | Bin 0 -> 3151 bytes .../__pycache__/requirements.cpython-310.pyc | Bin 0 -> 7440 bytes .../__pycache__/resolver.cpython-310.pyc | Bin 0 -> 8202 bytes .../_internal/resolution/resolvelib/base.py | 141 + .../resolution/resolvelib/candidates.py | 547 ++ .../resolution/resolvelib/factory.py | 739 ++ .../resolution/resolvelib/found_candidates.py | 155 + .../resolution/resolvelib/provider.py | 248 + .../resolution/resolvelib/reporter.py | 68 + .../resolution/resolvelib/requirements.py | 166 + .../resolution/resolvelib/resolver.py | 298 + .../pip/_internal/self_outdated_check.py | 189 + .../pip/_internal/utils/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 166 bytes .../utils/__pycache__/_log.cpython-310.pyc | Bin 0 -> 1494 bytes .../utils/__pycache__/appdirs.cpython-310.pyc | Bin 0 -> 1592 bytes .../utils/__pycache__/compat.cpython-310.pyc | Bin 0 -> 1482 bytes .../compatibility_tags.cpython-310.pyc | Bin 0 -> 4051 bytes .../__pycache__/datetime.cpython-310.pyc | Bin 0 -> 489 bytes .../__pycache__/deprecation.cpython-310.pyc | Bin 0 -> 3291 bytes .../direct_url_helpers.cpython-310.pyc | Bin 0 -> 2057 bytes .../distutils_args.cpython-310.pyc | Bin 0 -> 1073 bytes .../__pycache__/egg_link.cpython-310.pyc | Bin 0 -> 2122 bytes .../__pycache__/encoding.cpython-310.pyc | Bin 0 -> 1279 bytes .../__pycache__/entrypoints.cpython-310.pyc | Bin 0 -> 1276 bytes .../__pycache__/filesystem.cpython-310.pyc | Bin 0 -> 5134 bytes .../__pycache__/filetypes.cpython-310.pyc | Bin 0 -> 916 bytes .../utils/__pycache__/glibc.cpython-310.pyc | Bin 0 -> 1645 bytes .../utils/__pycache__/hashes.cpython-310.pyc | Bin 0 -> 5168 bytes .../inject_securetransport.cpython-310.pyc | Bin 0 -> 961 bytes .../utils/__pycache__/logging.cpython-310.pyc | Bin 0 -> 9607 bytes .../utils/__pycache__/misc.cpython-310.pyc | Bin 0 -> 18689 bytes .../utils/__pycache__/models.cpython-310.pyc | Bin 0 -> 1962 bytes .../__pycache__/packaging.cpython-310.pyc | Bin 0 -> 2054 bytes .../setuptools_build.cpython-310.pyc | Bin 0 -> 4569 bytes .../__pycache__/subprocess.cpython-310.pyc | Bin 0 -> 5748 bytes .../__pycache__/temp_dir.cpython-310.pyc | Bin 0 -> 7271 bytes .../__pycache__/unpacking.cpython-310.pyc | Bin 0 -> 6640 bytes .../utils/__pycache__/urls.cpython-310.pyc | Bin 0 -> 1567 bytes .../__pycache__/virtualenv.cpython-310.pyc | Bin 0 -> 3262 bytes .../utils/__pycache__/wheel.cpython-310.pyc | Bin 0 -> 4387 bytes .../site-packages/pip/_internal/utils/_log.py | 38 + .../pip/_internal/utils/appdirs.py | 52 + .../pip/_internal/utils/compat.py | 63 + .../pip/_internal/utils/compatibility_tags.py | 165 + .../pip/_internal/utils/datetime.py | 11 + .../pip/_internal/utils/deprecation.py | 120 + .../pip/_internal/utils/direct_url_helpers.py | 87 + .../pip/_internal/utils/distutils_args.py | 42 + .../pip/_internal/utils/egg_link.py | 75 + .../pip/_internal/utils/encoding.py | 36 + .../pip/_internal/utils/entrypoints.py | 27 + .../pip/_internal/utils/filesystem.py | 182 + .../pip/_internal/utils/filetypes.py | 27 + .../pip/_internal/utils/glibc.py | 88 + .../pip/_internal/utils/hashes.py | 144 + .../_internal/utils/inject_securetransport.py | 35 + .../pip/_internal/utils/logging.py | 343 + .../site-packages/pip/_internal/utils/misc.py | 629 ++ .../pip/_internal/utils/models.py | 39 + .../pip/_internal/utils/packaging.py | 57 + .../pip/_internal/utils/setuptools_build.py | 195 + .../pip/_internal/utils/subprocess.py | 260 + .../pip/_internal/utils/temp_dir.py | 246 + .../pip/_internal/utils/unpacking.py | 258 + .../site-packages/pip/_internal/utils/urls.py | 62 + .../pip/_internal/utils/virtualenv.py | 104 + .../pip/_internal/utils/wheel.py | 136 + .../pip/_internal/vcs/__init__.py | 15 + .../vcs/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 489 bytes .../vcs/__pycache__/bazaar.cpython-310.pyc | Bin 0 -> 3316 bytes .../vcs/__pycache__/git.cpython-310.pyc | Bin 0 -> 12519 bytes .../vcs/__pycache__/mercurial.cpython-310.pyc | Bin 0 -> 5035 bytes .../__pycache__/subversion.cpython-310.pyc | Bin 0 -> 8423 bytes .../versioncontrol.cpython-310.pyc | Bin 0 -> 21118 bytes .../site-packages/pip/_internal/vcs/bazaar.py | 101 + .../site-packages/pip/_internal/vcs/git.py | 526 + .../pip/_internal/vcs/mercurial.py | 163 + .../pip/_internal/vcs/subversion.py | 324 + .../pip/_internal/vcs/versioncontrol.py | 705 ++ .../pip/_internal/wheel_builder.py | 377 + .../Lib/site-packages/pip/_vendor/__init__.py | 111 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2889 bytes .../__pycache__/distro.cpython-310.pyc | Bin 0 -> 38207 bytes .../_vendor/__pycache__/six.cpython-310.pyc | Bin 0 -> 27560 bytes .../typing_extensions.cpython-310.pyc | Bin 0 -> 66572 bytes .../pip/_vendor/cachecontrol/__init__.py | 18 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 617 bytes .../__pycache__/_cmd.cpython-310.pyc | Bin 0 -> 1555 bytes .../__pycache__/adapter.cpython-310.pyc | Bin 0 -> 3131 bytes .../__pycache__/cache.cpython-310.pyc | Bin 0 -> 1821 bytes .../__pycache__/compat.cpython-310.pyc | Bin 0 -> 731 bytes .../__pycache__/controller.cpython-310.pyc | Bin 0 -> 8191 bytes .../__pycache__/filewrapper.cpython-310.pyc | Bin 0 -> 2767 bytes .../__pycache__/heuristics.cpython-310.pyc | Bin 0 -> 4691 bytes .../__pycache__/serialize.cpython-310.pyc | Bin 0 -> 4226 bytes .../__pycache__/wrapper.cpython-310.pyc | Bin 0 -> 662 bytes .../pip/_vendor/cachecontrol/_cmd.py | 61 + .../pip/_vendor/cachecontrol/adapter.py | 137 + .../pip/_vendor/cachecontrol/cache.py | 43 + .../_vendor/cachecontrol/caches/__init__.py | 6 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 268 bytes .../__pycache__/file_cache.cpython-310.pyc | Bin 0 -> 3342 bytes .../__pycache__/redis_cache.cpython-310.pyc | Bin 0 -> 1548 bytes .../_vendor/cachecontrol/caches/file_cache.py | 150 + .../cachecontrol/caches/redis_cache.py | 37 + .../pip/_vendor/cachecontrol/compat.py | 32 + .../pip/_vendor/cachecontrol/controller.py | 415 + .../pip/_vendor/cachecontrol/filewrapper.py | 111 + .../pip/_vendor/cachecontrol/heuristics.py | 139 + .../pip/_vendor/cachecontrol/serialize.py | 186 + .../pip/_vendor/cachecontrol/wrapper.py | 33 + .../pip/_vendor/certifi/__init__.py | 3 + .../pip/_vendor/certifi/__main__.py | 12 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 250 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 429 bytes .../certifi/__pycache__/core.cpython-310.pyc | Bin 0 -> 1524 bytes .../pip/_vendor/certifi/cacert.pem | 4362 +++++++++ .../site-packages/pip/_vendor/certifi/core.py | 76 + .../pip/_vendor/chardet/__init__.py | 83 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1874 bytes .../__pycache__/big5freq.cpython-310.pyc | Bin 0 -> 27153 bytes .../__pycache__/big5prober.cpython-310.pyc | Bin 0 -> 1104 bytes .../chardistribution.cpython-310.pyc | Bin 0 -> 5714 bytes .../charsetgroupprober.cpython-310.pyc | Bin 0 -> 2203 bytes .../__pycache__/charsetprober.cpython-310.pyc | Bin 0 -> 3457 bytes .../codingstatemachine.cpython-310.pyc | Bin 0 -> 2876 bytes .../__pycache__/compat.cpython-310.pyc | Bin 0 -> 375 bytes .../__pycache__/cp949prober.cpython-310.pyc | Bin 0 -> 1111 bytes .../chardet/__pycache__/enums.cpython-310.pyc | Bin 0 -> 2558 bytes .../__pycache__/escprober.cpython-310.pyc | Bin 0 -> 2605 bytes .../chardet/__pycache__/escsm.cpython-310.pyc | Bin 0 -> 8352 bytes .../__pycache__/eucjpprober.cpython-310.pyc | Bin 0 -> 2409 bytes .../__pycache__/euckrfreq.cpython-310.pyc | Bin 0 -> 12037 bytes .../__pycache__/euckrprober.cpython-310.pyc | Bin 0 -> 1112 bytes .../__pycache__/euctwfreq.cpython-310.pyc | Bin 0 -> 27157 bytes .../__pycache__/euctwprober.cpython-310.pyc | Bin 0 -> 1112 bytes .../__pycache__/gb2312freq.cpython-310.pyc | Bin 0 -> 19081 bytes .../__pycache__/gb2312prober.cpython-310.pyc | Bin 0 -> 1120 bytes .../__pycache__/hebrewprober.cpython-310.pyc | Bin 0 -> 2997 bytes .../__pycache__/jisfreq.cpython-310.pyc | Bin 0 -> 22109 bytes .../__pycache__/jpcntx.cpython-310.pyc | Bin 0 -> 37616 bytes .../langbulgarianmodel.cpython-310.pyc | Bin 0 -> 47897 bytes .../langgreekmodel.cpython-310.pyc | Bin 0 -> 46087 bytes .../langhebrewmodel.cpython-310.pyc | Bin 0 -> 44536 bytes .../langhungarianmodel.cpython-310.pyc | Bin 0 -> 47857 bytes .../langrussianmodel.cpython-310.pyc | Bin 0 -> 60990 bytes .../__pycache__/langthaimodel.cpython-310.pyc | Bin 0 -> 44712 bytes .../langturkishmodel.cpython-310.pyc | Bin 0 -> 44553 bytes .../__pycache__/latin1prober.cpython-310.pyc | Bin 0 -> 4403 bytes .../mbcharsetprober.cpython-310.pyc | Bin 0 -> 2224 bytes .../mbcsgroupprober.cpython-310.pyc | Bin 0 -> 1107 bytes .../__pycache__/mbcssm.cpython-310.pyc | Bin 0 -> 18734 bytes .../sbcharsetprober.cpython-310.pyc | Bin 0 -> 3053 bytes .../sbcsgroupprober.cpython-310.pyc | Bin 0 -> 1676 bytes .../__pycache__/sjisprober.cpython-310.pyc | Bin 0 -> 2447 bytes .../universaldetector.cpython-310.pyc | Bin 0 -> 5799 bytes .../__pycache__/utf8prober.cpython-310.pyc | Bin 0 -> 1956 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 413 bytes .../pip/_vendor/chardet/big5freq.py | 386 + .../pip/_vendor/chardet/big5prober.py | 47 + .../pip/_vendor/chardet/chardistribution.py | 233 + .../pip/_vendor/chardet/charsetgroupprober.py | 107 + .../pip/_vendor/chardet/charsetprober.py | 145 + .../pip/_vendor/chardet/cli/__init__.py | 1 + .../cli/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 170 bytes .../__pycache__/chardetect.cpython-310.pyc | Bin 0 -> 2669 bytes .../pip/_vendor/chardet/cli/chardetect.py | 84 + .../pip/_vendor/chardet/codingstatemachine.py | 88 + .../pip/_vendor/chardet/compat.py | 36 + .../pip/_vendor/chardet/cp949prober.py | 49 + .../pip/_vendor/chardet/enums.py | 76 + .../pip/_vendor/chardet/escprober.py | 101 + .../pip/_vendor/chardet/escsm.py | 246 + .../pip/_vendor/chardet/eucjpprober.py | 92 + .../pip/_vendor/chardet/euckrfreq.py | 195 + .../pip/_vendor/chardet/euckrprober.py | 47 + .../pip/_vendor/chardet/euctwfreq.py | 387 + .../pip/_vendor/chardet/euctwprober.py | 46 + .../pip/_vendor/chardet/gb2312freq.py | 283 + .../pip/_vendor/chardet/gb2312prober.py | 46 + .../pip/_vendor/chardet/hebrewprober.py | 292 + .../pip/_vendor/chardet/jisfreq.py | 325 + .../pip/_vendor/chardet/jpcntx.py | 233 + .../pip/_vendor/chardet/langbulgarianmodel.py | 4650 +++++++++ .../pip/_vendor/chardet/langgreekmodel.py | 4398 +++++++++ .../pip/_vendor/chardet/langhebrewmodel.py | 4383 +++++++++ .../pip/_vendor/chardet/langhungarianmodel.py | 4650 +++++++++ .../pip/_vendor/chardet/langrussianmodel.py | 5718 +++++++++++ .../pip/_vendor/chardet/langthaimodel.py | 4383 +++++++++ .../pip/_vendor/chardet/langturkishmodel.py | 4383 +++++++++ .../pip/_vendor/chardet/latin1prober.py | 145 + .../pip/_vendor/chardet/mbcharsetprober.py | 91 + .../pip/_vendor/chardet/mbcsgroupprober.py | 54 + .../pip/_vendor/chardet/mbcssm.py | 572 ++ .../pip/_vendor/chardet/metadata/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 175 bytes .../__pycache__/languages.cpython-310.pyc | Bin 0 -> 7937 bytes .../pip/_vendor/chardet/metadata/languages.py | 310 + .../pip/_vendor/chardet/sbcharsetprober.py | 145 + .../pip/_vendor/chardet/sbcsgroupprober.py | 83 + .../pip/_vendor/chardet/sjisprober.py | 92 + .../pip/_vendor/chardet/universaldetector.py | 286 + .../pip/_vendor/chardet/utf8prober.py | 82 + .../pip/_vendor/chardet/version.py | 9 + .../pip/_vendor/colorama/__init__.py | 6 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 418 bytes .../colorama/__pycache__/ansi.cpython-310.pyc | Bin 0 -> 2979 bytes .../__pycache__/ansitowin32.cpython-310.pyc | Bin 0 -> 7877 bytes .../__pycache__/initialise.cpython-310.pyc | Bin 0 -> 1665 bytes .../__pycache__/win32.cpython-310.pyc | Bin 0 -> 3925 bytes .../__pycache__/winterm.cpython-310.pyc | Bin 0 -> 4542 bytes .../pip/_vendor/colorama/ansi.py | 102 + .../pip/_vendor/colorama/ansitowin32.py | 258 + .../pip/_vendor/colorama/initialise.py | 80 + .../pip/_vendor/colorama/win32.py | 152 + .../pip/_vendor/colorama/winterm.py | 169 + .../pip/_vendor/distlib/__init__.py | 23 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1037 bytes .../__pycache__/compat.cpython-310.pyc | Bin 0 -> 31511 bytes .../__pycache__/database.cpython-310.pyc | Bin 0 -> 42591 bytes .../distlib/__pycache__/index.cpython-310.pyc | Bin 0 -> 17292 bytes .../__pycache__/locators.cpython-310.pyc | Bin 0 -> 38358 bytes .../__pycache__/manifest.cpython-310.pyc | Bin 0 -> 10205 bytes .../__pycache__/markers.cpython-310.pyc | Bin 0 -> 4929 bytes .../__pycache__/metadata.cpython-310.pyc | Bin 0 -> 26537 bytes .../__pycache__/resources.cpython-310.pyc | Bin 0 -> 11011 bytes .../__pycache__/scripts.cpython-310.pyc | Bin 0 -> 11229 bytes .../distlib/__pycache__/util.cpython-310.pyc | Bin 0 -> 52549 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 20126 bytes .../distlib/__pycache__/wheel.cpython-310.pyc | Bin 0 -> 27284 bytes .../pip/_vendor/distlib/_backport/__init__.py | 6 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 458 bytes .../__pycache__/misc.cpython-310.pyc | Bin 0 -> 1080 bytes .../__pycache__/shutil.cpython-310.pyc | Bin 0 -> 21517 bytes .../__pycache__/sysconfig.cpython-310.pyc | Bin 0 -> 15872 bytes .../__pycache__/tarfile.cpython-310.pyc | Bin 0 -> 62455 bytes .../pip/_vendor/distlib/_backport/misc.py | 41 + .../pip/_vendor/distlib/_backport/shutil.py | 764 ++ .../_vendor/distlib/_backport/sysconfig.cfg | 84 + .../_vendor/distlib/_backport/sysconfig.py | 786 ++ .../pip/_vendor/distlib/_backport/tarfile.py | 2607 +++++ .../pip/_vendor/distlib/compat.py | 1122 +++ .../pip/_vendor/distlib/database.py | 1339 +++ .../pip/_vendor/distlib/index.py | 509 + .../pip/_vendor/distlib/locators.py | 1300 +++ .../pip/_vendor/distlib/manifest.py | 393 + .../pip/_vendor/distlib/markers.py | 147 + .../pip/_vendor/distlib/metadata.py | 1058 ++ .../pip/_vendor/distlib/resources.py | 358 + .../pip/_vendor/distlib/scripts.py | 429 + .../site-packages/pip/_vendor/distlib/t32.exe | Bin 0 -> 96768 bytes .../pip/_vendor/distlib/t64-arm.exe | Bin 0 -> 180736 bytes .../site-packages/pip/_vendor/distlib/t64.exe | Bin 0 -> 105984 bytes .../site-packages/pip/_vendor/distlib/util.py | 1969 ++++ .../pip/_vendor/distlib/version.py | 739 ++ .../site-packages/pip/_vendor/distlib/w32.exe | Bin 0 -> 90112 bytes .../pip/_vendor/distlib/w64-arm.exe | Bin 0 -> 166400 bytes .../site-packages/pip/_vendor/distlib/w64.exe | Bin 0 -> 99840 bytes .../pip/_vendor/distlib/wheel.py | 1053 ++ venv/Lib/site-packages/pip/_vendor/distro.py | 1386 +++ .../pip/_vendor/html5lib/__init__.py | 35 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1277 bytes .../__pycache__/_ihatexml.cpython-310.pyc | Bin 0 -> 13834 bytes .../__pycache__/_inputstream.cpython-310.pyc | Bin 0 -> 21653 bytes .../__pycache__/_tokenizer.cpython-310.pyc | Bin 0 -> 37335 bytes .../__pycache__/_utils.cpython-310.pyc | Bin 0 -> 4771 bytes .../__pycache__/constants.cpython-310.pyc | Bin 0 -> 161236 bytes .../__pycache__/html5parser.cpython-310.pyc | Bin 0 -> 88494 bytes .../__pycache__/serializer.cpython-310.pyc | Bin 0 -> 10718 bytes .../pip/_vendor/html5lib/_ihatexml.py | 289 + .../pip/_vendor/html5lib/_inputstream.py | 918 ++ .../pip/_vendor/html5lib/_tokenizer.py | 1735 ++++ .../pip/_vendor/html5lib/_trie/__init__.py | 5 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 327 bytes .../_trie/__pycache__/_base.cpython-310.pyc | Bin 0 -> 1579 bytes .../_trie/__pycache__/py.cpython-310.pyc | Bin 0 -> 2242 bytes .../pip/_vendor/html5lib/_trie/_base.py | 40 + .../pip/_vendor/html5lib/_trie/py.py | 67 + .../pip/_vendor/html5lib/_utils.py | 159 + .../pip/_vendor/html5lib/constants.py | 2946 ++++++ .../pip/_vendor/html5lib/filters/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 175 bytes .../alphabeticalattributes.cpython-310.pyc | Bin 0 -> 1305 bytes .../filters/__pycache__/base.cpython-310.pyc | Bin 0 -> 845 bytes .../inject_meta_charset.cpython-310.pyc | Bin 0 -> 1843 bytes .../filters/__pycache__/lint.cpython-310.pyc | Bin 0 -> 2551 bytes .../__pycache__/optionaltags.cpython-310.pyc | Bin 0 -> 2704 bytes .../__pycache__/sanitizer.cpython-310.pyc | Bin 0 -> 20009 bytes .../__pycache__/whitespace.cpython-310.pyc | Bin 0 -> 1351 bytes .../filters/alphabeticalattributes.py | 29 + .../pip/_vendor/html5lib/filters/base.py | 12 + .../html5lib/filters/inject_meta_charset.py | 73 + .../pip/_vendor/html5lib/filters/lint.py | 93 + .../_vendor/html5lib/filters/optionaltags.py | 207 + .../pip/_vendor/html5lib/filters/sanitizer.py | 916 ++ .../_vendor/html5lib/filters/whitespace.py | 38 + .../pip/_vendor/html5lib/html5parser.py | 2795 ++++++ .../pip/_vendor/html5lib/serializer.py | 409 + .../_vendor/html5lib/treeadapters/__init__.py | 30 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 916 bytes .../__pycache__/genshi.cpython-310.pyc | Bin 0 -> 1528 bytes .../__pycache__/sax.cpython-310.pyc | Bin 0 -> 1435 bytes .../_vendor/html5lib/treeadapters/genshi.py | 54 + .../pip/_vendor/html5lib/treeadapters/sax.py | 50 + .../_vendor/html5lib/treebuilders/__init__.py | 88 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 3307 bytes .../__pycache__/base.cpython-310.pyc | Bin 0 -> 11300 bytes .../__pycache__/dom.cpython-310.pyc | Bin 0 -> 9387 bytes .../__pycache__/etree.cpython-310.pyc | Bin 0 -> 11687 bytes .../__pycache__/etree_lxml.cpython-310.pyc | Bin 0 -> 13006 bytes .../pip/_vendor/html5lib/treebuilders/base.py | 417 + .../pip/_vendor/html5lib/treebuilders/dom.py | 239 + .../_vendor/html5lib/treebuilders/etree.py | 343 + .../html5lib/treebuilders/etree_lxml.py | 392 + .../_vendor/html5lib/treewalkers/__init__.py | 154 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 3957 bytes .../__pycache__/base.cpython-310.pyc | Bin 0 -> 6918 bytes .../__pycache__/dom.cpython-310.pyc | Bin 0 -> 1689 bytes .../__pycache__/etree.cpython-310.pyc | Bin 0 -> 3447 bytes .../__pycache__/etree_lxml.cpython-310.pyc | Bin 0 -> 6534 bytes .../__pycache__/genshi.cpython-310.pyc | Bin 0 -> 1895 bytes .../pip/_vendor/html5lib/treewalkers/base.py | 252 + .../pip/_vendor/html5lib/treewalkers/dom.py | 43 + .../pip/_vendor/html5lib/treewalkers/etree.py | 131 + .../html5lib/treewalkers/etree_lxml.py | 215 + .../_vendor/html5lib/treewalkers/genshi.py | 69 + .../pip/_vendor/idna/__init__.py | 44 + .../idna/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 822 bytes .../idna/__pycache__/codec.cpython-310.pyc | Bin 0 -> 2793 bytes .../idna/__pycache__/compat.cpython-310.pyc | Bin 0 -> 722 bytes .../idna/__pycache__/core.cpython-310.pyc | Bin 0 -> 9565 bytes .../idna/__pycache__/idnadata.cpython-310.pyc | Bin 0 -> 38200 bytes .../__pycache__/intranges.cpython-310.pyc | Bin 0 -> 1959 bytes .../__pycache__/package_data.cpython-310.pyc | Bin 0 -> 186 bytes .../__pycache__/uts46data.cpython-310.pyc | Bin 0 -> 150921 bytes .../site-packages/pip/_vendor/idna/codec.py | 112 + .../site-packages/pip/_vendor/idna/compat.py | 13 + .../site-packages/pip/_vendor/idna/core.py | 397 + .../pip/_vendor/idna/idnadata.py | 2137 ++++ .../pip/_vendor/idna/intranges.py | 54 + .../pip/_vendor/idna/package_data.py | 2 + .../pip/_vendor/idna/uts46data.py | 8512 ++++++++++++++++ .../pip/_vendor/msgpack/__init__.py | 54 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1402 bytes .../__pycache__/_version.cpython-310.pyc | Bin 0 -> 193 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 1783 bytes .../msgpack/__pycache__/ext.cpython-310.pyc | Bin 0 -> 6291 bytes .../__pycache__/fallback.cpython-310.pyc | Bin 0 -> 25420 bytes .../pip/_vendor/msgpack/_version.py | 1 + .../pip/_vendor/msgpack/exceptions.py | 48 + .../site-packages/pip/_vendor/msgpack/ext.py | 193 + .../pip/_vendor/msgpack/fallback.py | 1012 ++ .../pip/_vendor/packaging/__about__.py | 26 + .../pip/_vendor/packaging/__init__.py | 25 + .../__pycache__/__about__.cpython-310.pyc | Bin 0 -> 565 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 421 bytes .../__pycache__/_manylinux.cpython-310.pyc | Bin 0 -> 7275 bytes .../__pycache__/_musllinux.cpython-310.pyc | Bin 0 -> 4587 bytes .../__pycache__/_structures.cpython-310.pyc | Bin 0 -> 2680 bytes .../__pycache__/markers.cpython-310.pyc | Bin 0 -> 9264 bytes .../__pycache__/requirements.cpython-310.pyc | Bin 0 -> 3950 bytes .../__pycache__/specifiers.cpython-310.pyc | Bin 0 -> 21502 bytes .../__pycache__/tags.cpython-310.pyc | Bin 0 -> 12171 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 3550 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 12900 bytes .../pip/_vendor/packaging/_manylinux.py | 301 + .../pip/_vendor/packaging/_musllinux.py | 136 + .../pip/_vendor/packaging/_structures.py | 61 + .../pip/_vendor/packaging/markers.py | 304 + .../pip/_vendor/packaging/requirements.py | 146 + .../pip/_vendor/packaging/specifiers.py | 802 ++ .../pip/_vendor/packaging/tags.py | 487 + .../pip/_vendor/packaging/utils.py | 136 + .../pip/_vendor/packaging/version.py | 504 + .../pip/_vendor/pep517/__init__.py | 6 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 288 bytes .../pep517/__pycache__/build.cpython-310.pyc | Bin 0 -> 3571 bytes .../pep517/__pycache__/check.cpython-310.pyc | Bin 0 -> 4535 bytes .../__pycache__/colorlog.cpython-310.pyc | Bin 0 -> 2939 bytes .../pep517/__pycache__/compat.cpython-310.pyc | Bin 0 -> 1512 bytes .../__pycache__/dirtools.cpython-310.pyc | Bin 0 -> 1330 bytes .../__pycache__/envbuild.cpython-310.pyc | Bin 0 -> 4353 bytes .../pep517/__pycache__/meta.cpython-310.pyc | Bin 0 -> 2935 bytes .../__pycache__/wrappers.cpython-310.pyc | Bin 0 -> 12281 bytes .../site-packages/pip/_vendor/pep517/build.py | 127 + .../site-packages/pip/_vendor/pep517/check.py | 207 + .../pip/_vendor/pep517/colorlog.py | 115 + .../pip/_vendor/pep517/compat.py | 51 + .../pip/_vendor/pep517/dirtools.py | 44 + .../pip/_vendor/pep517/envbuild.py | 171 + .../pip/_vendor/pep517/in_process/__init__.py | 17 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 896 bytes .../__pycache__/_in_process.cpython-310.pyc | Bin 0 -> 10043 bytes .../_vendor/pep517/in_process/_in_process.py | 363 + .../site-packages/pip/_vendor/pep517/meta.py | 92 + .../pip/_vendor/pep517/wrappers.py | 375 + .../pip/_vendor/pkg_resources/__init__.py | 3296 +++++++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 99865 bytes .../__pycache__/py31compat.cpython-310.pyc | Bin 0 -> 635 bytes .../pip/_vendor/pkg_resources/py31compat.py | 23 + .../pip/_vendor/platformdirs/__init__.py | 331 + .../pip/_vendor/platformdirs/__main__.py | 46 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 10451 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 1211 bytes .../__pycache__/android.cpython-310.pyc | Bin 0 -> 4243 bytes .../__pycache__/api.cpython-310.pyc | Bin 0 -> 5177 bytes .../__pycache__/macos.cpython-310.pyc | Bin 0 -> 3165 bytes .../__pycache__/unix.cpython-310.pyc | Bin 0 -> 6866 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 270 bytes .../__pycache__/windows.cpython-310.pyc | Bin 0 -> 6409 bytes .../pip/_vendor/platformdirs/android.py | 119 + .../pip/_vendor/platformdirs/api.py | 156 + .../pip/_vendor/platformdirs/macos.py | 64 + .../pip/_vendor/platformdirs/unix.py | 181 + .../pip/_vendor/platformdirs/version.py | 4 + .../pip/_vendor/platformdirs/windows.py | 182 + .../pip/_vendor/progress/__init__.py | 189 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 5707 bytes .../progress/__pycache__/bar.cpython-310.pyc | Bin 0 -> 2670 bytes .../__pycache__/colors.cpython-310.pyc | Bin 0 -> 1463 bytes .../__pycache__/counter.cpython-310.pyc | Bin 0 -> 1534 bytes .../__pycache__/spinner.cpython-310.pyc | Bin 0 -> 1364 bytes .../site-packages/pip/_vendor/progress/bar.py | 93 + .../pip/_vendor/progress/colors.py | 79 + .../pip/_vendor/progress/counter.py | 47 + .../pip/_vendor/progress/spinner.py | 45 + .../pip/_vendor/pygments/__init__.py | 83 + .../pip/_vendor/pygments/__main__.py | 17 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2975 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 563 bytes .../__pycache__/cmdline.cpython-310.pyc | Bin 0 -> 15428 bytes .../__pycache__/console.cpython-310.pyc | Bin 0 -> 1858 bytes .../__pycache__/filter.cpython-310.pyc | Bin 0 -> 2629 bytes .../__pycache__/formatter.cpython-310.pyc | Bin 0 -> 2985 bytes .../__pycache__/lexer.cpython-310.pyc | Bin 0 -> 24341 bytes .../__pycache__/modeline.cpython-310.pyc | Bin 0 -> 1167 bytes .../__pycache__/plugin.cpython-310.pyc | Bin 0 -> 2019 bytes .../__pycache__/regexopt.cpython-310.pyc | Bin 0 -> 2931 bytes .../__pycache__/scanner.cpython-310.pyc | Bin 0 -> 3532 bytes .../__pycache__/sphinxext.cpython-310.pyc | Bin 0 -> 4517 bytes .../__pycache__/style.cpython-310.pyc | Bin 0 -> 4554 bytes .../__pycache__/token.cpython-310.pyc | Bin 0 -> 4626 bytes .../__pycache__/unistring.cpython-310.pyc | Bin 0 -> 31180 bytes .../pygments/__pycache__/util.cpython-310.pyc | Bin 0 -> 9137 bytes .../pip/_vendor/pygments/cmdline.py | 663 ++ .../pip/_vendor/pygments/console.py | 70 + .../pip/_vendor/pygments/filter.py | 71 + .../pip/_vendor/pygments/filters/__init__.py | 937 ++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 29492 bytes .../pip/_vendor/pygments/formatter.py | 94 + .../_vendor/pygments/formatters/__init__.py | 153 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 4643 bytes .../__pycache__/_mapping.cpython-310.pyc | Bin 0 -> 5510 bytes .../__pycache__/bbcode.cpython-310.pyc | Bin 0 -> 3060 bytes .../__pycache__/groff.cpython-310.pyc | Bin 0 -> 4333 bytes .../__pycache__/html.cpython-310.pyc | Bin 0 -> 29046 bytes .../__pycache__/img.cpython-310.pyc | Bin 0 -> 17472 bytes .../__pycache__/irc.cpython-310.pyc | Bin 0 -> 4563 bytes .../__pycache__/latex.cpython-310.pyc | Bin 0 -> 13469 bytes .../__pycache__/other.cpython-310.pyc | Bin 0 -> 4779 bytes .../__pycache__/pangomarkup.cpython-310.pyc | Bin 0 -> 2079 bytes .../__pycache__/rtf.cpython-310.pyc | Bin 0 -> 4109 bytes .../__pycache__/svg.cpython-310.pyc | Bin 0 -> 6307 bytes .../__pycache__/terminal.cpython-310.pyc | Bin 0 -> 3974 bytes .../__pycache__/terminal256.cpython-310.pyc | Bin 0 -> 9224 bytes .../_vendor/pygments/formatters/_mapping.py | 84 + .../pip/_vendor/pygments/formatters/bbcode.py | 108 + .../pip/_vendor/pygments/formatters/groff.py | 168 + .../pip/_vendor/pygments/formatters/html.py | 983 ++ .../pip/_vendor/pygments/formatters/img.py | 641 ++ .../pip/_vendor/pygments/formatters/irc.py | 179 + .../pip/_vendor/pygments/formatters/latex.py | 511 + .../pip/_vendor/pygments/formatters/other.py | 161 + .../pygments/formatters/pangomarkup.py | 83 + .../pip/_vendor/pygments/formatters/rtf.py | 146 + .../pip/_vendor/pygments/formatters/svg.py | 188 + .../_vendor/pygments/formatters/terminal.py | 127 + .../pygments/formatters/terminal256.py | 338 + .../pip/_vendor/pygments/lexer.py | 879 ++ .../pip/_vendor/pygments/lexers/__init__.py | 341 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 9159 bytes .../__pycache__/_mapping.cpython-310.pyc | Bin 0 -> 58097 bytes .../lexers/__pycache__/python.cpython-310.pyc | Bin 0 -> 29358 bytes .../pip/_vendor/pygments/lexers/_mapping.py | 580 ++ .../pip/_vendor/pygments/lexers/python.py | 1188 +++ .../pip/_vendor/pygments/modeline.py | 43 + .../pip/_vendor/pygments/plugin.py | 69 + .../pip/_vendor/pygments/regexopt.py | 91 + .../pip/_vendor/pygments/scanner.py | 104 + .../pip/_vendor/pygments/sphinxext.py | 155 + .../pip/_vendor/pygments/style.py | 197 + .../pip/_vendor/pygments/styles/__init__.py | 93 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 3195 bytes .../pip/_vendor/pygments/token.py | 212 + .../pip/_vendor/pygments/unistring.py | 153 + .../pip/_vendor/pygments/util.py | 308 + .../pip/_vendor/pyparsing/__init__.py | 328 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 7100 bytes .../__pycache__/actions.cpython-310.pyc | Bin 0 -> 7157 bytes .../__pycache__/common.cpython-310.pyc | Bin 0 -> 10080 bytes .../__pycache__/core.cpython-310.pyc | Bin 0 -> 175274 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 9047 bytes .../__pycache__/helpers.cpython-310.pyc | Bin 0 -> 34742 bytes .../__pycache__/results.cpython-310.pyc | Bin 0 -> 24760 bytes .../__pycache__/testing.cpython-310.pyc | Bin 0 -> 12077 bytes .../__pycache__/unicode.cpython-310.pyc | Bin 0 -> 9789 bytes .../__pycache__/util.cpython-310.pyc | Bin 0 -> 8580 bytes .../pip/_vendor/pyparsing/actions.py | 207 + .../pip/_vendor/pyparsing/common.py | 424 + .../pip/_vendor/pyparsing/core.py | 5789 +++++++++++ .../pip/_vendor/pyparsing/diagram/__init__.py | 593 ++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 15632 bytes .../pip/_vendor/pyparsing/exceptions.py | 267 + .../pip/_vendor/pyparsing/helpers.py | 1069 ++ .../pip/_vendor/pyparsing/results.py | 760 ++ .../pip/_vendor/pyparsing/testing.py | 331 + .../pip/_vendor/pyparsing/unicode.py | 332 + .../pip/_vendor/pyparsing/util.py | 235 + .../pip/_vendor/requests/__init__.py | 154 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 4013 bytes .../__pycache__/__version__.cpython-310.pyc | Bin 0 -> 530 bytes .../_internal_utils.cpython-310.pyc | Bin 0 -> 1282 bytes .../__pycache__/adapters.cpython-310.pyc | Bin 0 -> 17018 bytes .../requests/__pycache__/api.cpython-310.pyc | Bin 0 -> 6629 bytes .../requests/__pycache__/auth.cpython-310.pyc | Bin 0 -> 8072 bytes .../__pycache__/certs.cpython-310.pyc | Bin 0 -> 614 bytes .../__pycache__/compat.cpython-310.pyc | Bin 0 -> 1649 bytes .../__pycache__/cookies.cpython-310.pyc | Bin 0 -> 18674 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 5223 bytes .../requests/__pycache__/help.cpython-310.pyc | Bin 0 -> 2882 bytes .../__pycache__/hooks.cpython-310.pyc | Bin 0 -> 969 bytes .../__pycache__/models.cpython-310.pyc | Bin 0 -> 24288 bytes .../__pycache__/packages.cpython-310.pyc | Bin 0 -> 483 bytes .../__pycache__/sessions.cpython-310.pyc | Bin 0 -> 19604 bytes .../__pycache__/status_codes.cpython-310.pyc | Bin 0 -> 4646 bytes .../__pycache__/structures.cpython-310.pyc | Bin 0 -> 4428 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 24371 bytes .../pip/_vendor/requests/__version__.py | 14 + .../pip/_vendor/requests/_internal_utils.py | 42 + .../pip/_vendor/requests/adapters.py | 538 + .../site-packages/pip/_vendor/requests/api.py | 159 + .../pip/_vendor/requests/auth.py | 305 + .../pip/_vendor/requests/certs.py | 18 + .../pip/_vendor/requests/compat.py | 77 + .../pip/_vendor/requests/cookies.py | 549 ++ .../pip/_vendor/requests/exceptions.py | 133 + .../pip/_vendor/requests/help.py | 132 + .../pip/_vendor/requests/hooks.py | 34 + .../pip/_vendor/requests/models.py | 973 ++ .../pip/_vendor/requests/packages.py | 16 + .../pip/_vendor/requests/sessions.py | 771 ++ .../pip/_vendor/requests/status_codes.py | 123 + .../pip/_vendor/requests/structures.py | 105 + .../pip/_vendor/requests/utils.py | 1060 ++ .../pip/_vendor/resolvelib/__init__.py | 26 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 581 bytes .../__pycache__/providers.cpython-310.pyc | Bin 0 -> 6632 bytes .../__pycache__/reporters.cpython-310.pyc | Bin 0 -> 2552 bytes .../__pycache__/resolvers.cpython-310.pyc | Bin 0 -> 15105 bytes .../__pycache__/structs.cpython-310.pyc | Bin 0 -> 7138 bytes .../pip/_vendor/resolvelib/compat/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 176 bytes .../collections_abc.cpython-310.pyc | Bin 0 -> 352 bytes .../resolvelib/compat/collections_abc.py | 6 + .../pip/_vendor/resolvelib/providers.py | 133 + .../pip/_vendor/resolvelib/reporters.py | 43 + .../pip/_vendor/resolvelib/resolvers.py | 482 + .../pip/_vendor/resolvelib/structs.py | 165 + .../pip/_vendor/rich/__init__.py | 172 + .../pip/_vendor/rich/__main__.py | 280 + .../rich/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 5866 bytes .../rich/__pycache__/__main__.cpython-310.pyc | Bin 0 -> 7300 bytes .../__pycache__/_cell_widths.cpython-310.pyc | Bin 0 -> 7789 bytes .../__pycache__/_emoji_codes.cpython-310.pyc | Bin 0 -> 360029 bytes .../_emoji_replace.cpython-310.pyc | Bin 0 -> 1169 bytes .../__pycache__/_extension.cpython-310.pyc | Bin 0 -> 470 bytes .../rich/__pycache__/_inspect.cpython-310.pyc | Bin 0 -> 6587 bytes .../__pycache__/_log_render.cpython-310.pyc | Bin 0 -> 2615 bytes .../rich/__pycache__/_loop.cpython-310.pyc | Bin 0 -> 1267 bytes .../__pycache__/_lru_cache.cpython-310.pyc | Bin 0 -> 1550 bytes .../__pycache__/_palettes.cpython-310.pyc | Bin 0 -> 5072 bytes .../rich/__pycache__/_pick.cpython-310.pyc | Bin 0 -> 615 bytes .../rich/__pycache__/_ratio.cpython-310.pyc | Bin 0 -> 5134 bytes .../__pycache__/_spinners.cpython-310.pyc | Bin 0 -> 15188 bytes .../rich/__pycache__/_stack.cpython-310.pyc | Bin 0 -> 813 bytes .../rich/__pycache__/_timer.cpython-310.pyc | Bin 0 -> 662 bytes .../rich/__pycache__/_windows.cpython-310.pyc | Bin 0 -> 1853 bytes .../rich/__pycache__/_wrap.cpython-310.pyc | Bin 0 -> 1491 bytes .../rich/__pycache__/abc.cpython-310.pyc | Bin 0 -> 1289 bytes .../rich/__pycache__/align.cpython-310.pyc | Bin 0 -> 7943 bytes .../rich/__pycache__/ansi.cpython-310.pyc | Bin 0 -> 5992 bytes .../rich/__pycache__/bar.cpython-310.pyc | Bin 0 -> 2958 bytes .../rich/__pycache__/box.cpython-310.pyc | Bin 0 -> 7732 bytes .../rich/__pycache__/cells.cpython-310.pyc | Bin 0 -> 3474 bytes .../rich/__pycache__/color.cpython-310.pyc | Bin 0 -> 16730 bytes .../__pycache__/color_triplet.cpython-310.pyc | Bin 0 -> 1412 bytes .../rich/__pycache__/columns.cpython-310.pyc | Bin 0 -> 6172 bytes .../rich/__pycache__/console.cpython-310.pyc | Bin 0 -> 70419 bytes .../__pycache__/constrain.cpython-310.pyc | Bin 0 -> 1729 bytes .../__pycache__/containers.cpython-310.pyc | Bin 0 -> 6461 bytes .../rich/__pycache__/control.cpython-310.pyc | Bin 0 -> 6804 bytes .../default_styles.cpython-310.pyc | Bin 0 -> 6004 bytes .../rich/__pycache__/diagnose.cpython-310.pyc | Bin 0 -> 330 bytes .../rich/__pycache__/emoji.cpython-310.pyc | Bin 0 -> 3242 bytes .../rich/__pycache__/errors.cpython-310.pyc | Bin 0 -> 1502 bytes .../__pycache__/file_proxy.cpython-310.pyc | Bin 0 -> 2239 bytes .../rich/__pycache__/filesize.cpython-310.pyc | Bin 0 -> 2591 bytes .../__pycache__/highlighter.cpython-310.pyc | Bin 0 -> 5318 bytes .../rich/__pycache__/json.cpython-310.pyc | Bin 0 -> 4722 bytes .../rich/__pycache__/jupyter.cpython-310.pyc | Bin 0 -> 3801 bytes .../rich/__pycache__/layout.cpython-310.pyc | Bin 0 -> 14653 bytes .../rich/__pycache__/live.cpython-310.pyc | Bin 0 -> 11543 bytes .../__pycache__/live_render.cpython-310.pyc | Bin 0 -> 3377 bytes .../rich/__pycache__/logging.cpython-310.pyc | Bin 0 -> 9271 bytes .../rich/__pycache__/markup.cpython-310.pyc | Bin 0 -> 5888 bytes .../rich/__pycache__/measure.cpython-310.pyc | Bin 0 -> 5033 bytes .../rich/__pycache__/padding.cpython-310.pyc | Bin 0 -> 4457 bytes .../rich/__pycache__/pager.cpython-310.pyc | Bin 0 -> 1470 bytes .../rich/__pycache__/palette.cpython-310.pyc | Bin 0 -> 3683 bytes .../rich/__pycache__/panel.cpython-310.pyc | Bin 0 -> 6366 bytes .../rich/__pycache__/pretty.cpython-310.pyc | Bin 0 -> 25084 bytes .../rich/__pycache__/progress.cpython-310.pyc | Bin 0 -> 33312 bytes .../__pycache__/progress_bar.cpython-310.pyc | Bin 0 -> 6682 bytes .../rich/__pycache__/prompt.cpython-310.pyc | Bin 0 -> 11276 bytes .../rich/__pycache__/protocol.cpython-310.pyc | Bin 0 -> 1346 bytes .../rich/__pycache__/region.cpython-310.pyc | Bin 0 -> 502 bytes .../rich/__pycache__/repr.cpython-310.pyc | Bin 0 -> 4015 bytes .../rich/__pycache__/rule.cpython-310.pyc | Bin 0 -> 3712 bytes .../rich/__pycache__/scope.cpython-310.pyc | Bin 0 -> 2963 bytes .../rich/__pycache__/screen.cpython-310.pyc | Bin 0 -> 1854 bytes .../rich/__pycache__/segment.cpython-310.pyc | Bin 0 -> 20544 bytes .../rich/__pycache__/spinner.cpython-310.pyc | Bin 0 -> 4374 bytes .../rich/__pycache__/status.cpython-310.pyc | Bin 0 -> 4568 bytes .../rich/__pycache__/style.cpython-310.pyc | Bin 0 -> 20497 bytes .../rich/__pycache__/styled.cpython-310.pyc | Bin 0 -> 1738 bytes .../rich/__pycache__/syntax.cpython-310.pyc | Bin 0 -> 19013 bytes .../rich/__pycache__/table.cpython-310.pyc | Bin 0 -> 26957 bytes .../rich/__pycache__/tabulate.cpython-310.pyc | Bin 0 -> 1731 bytes .../terminal_theme.cpython-310.pyc | Bin 0 -> 1695 bytes .../rich/__pycache__/text.cpython-310.pyc | Bin 0 -> 39271 bytes .../rich/__pycache__/theme.cpython-310.pyc | Bin 0 -> 4675 bytes .../rich/__pycache__/themes.cpython-310.pyc | Bin 0 -> 268 bytes .../__pycache__/traceback.cpython-310.pyc | Bin 0 -> 19514 bytes .../rich/__pycache__/tree.cpython-310.pyc | Bin 0 -> 7292 bytes .../pip/_vendor/rich/_cell_widths.py | 451 + .../pip/_vendor/rich/_emoji_codes.py | 3610 +++++++ .../pip/_vendor/rich/_emoji_replace.py | 32 + .../pip/_vendor/rich/_extension.py | 10 + .../pip/_vendor/rich/_inspect.py | 210 + .../pip/_vendor/rich/_log_render.py | 94 + .../site-packages/pip/_vendor/rich/_loop.py | 43 + .../pip/_vendor/rich/_lru_cache.py | 34 + .../pip/_vendor/rich/_palettes.py | 309 + .../site-packages/pip/_vendor/rich/_pick.py | 17 + .../site-packages/pip/_vendor/rich/_ratio.py | 160 + .../pip/_vendor/rich/_spinners.py | 848 ++ .../site-packages/pip/_vendor/rich/_stack.py | 16 + .../site-packages/pip/_vendor/rich/_timer.py | 19 + .../pip/_vendor/rich/_windows.py | 72 + .../site-packages/pip/_vendor/rich/_wrap.py | 55 + .../Lib/site-packages/pip/_vendor/rich/abc.py | 33 + .../site-packages/pip/_vendor/rich/align.py | 312 + .../site-packages/pip/_vendor/rich/ansi.py | 228 + .../Lib/site-packages/pip/_vendor/rich/bar.py | 94 + .../Lib/site-packages/pip/_vendor/rich/box.py | 483 + .../site-packages/pip/_vendor/rich/cells.py | 147 + .../site-packages/pip/_vendor/rich/color.py | 581 ++ .../pip/_vendor/rich/color_triplet.py | 38 + .../site-packages/pip/_vendor/rich/columns.py | 187 + .../site-packages/pip/_vendor/rich/console.py | 2211 +++++ .../pip/_vendor/rich/constrain.py | 37 + .../pip/_vendor/rich/containers.py | 167 + .../site-packages/pip/_vendor/rich/control.py | 175 + .../pip/_vendor/rich/default_styles.py | 183 + .../pip/_vendor/rich/diagnose.py | 6 + .../site-packages/pip/_vendor/rich/emoji.py | 96 + .../site-packages/pip/_vendor/rich/errors.py | 34 + .../pip/_vendor/rich/file_proxy.py | 54 + .../pip/_vendor/rich/filesize.py | 89 + .../pip/_vendor/rich/highlighter.py | 147 + .../site-packages/pip/_vendor/rich/json.py | 140 + .../site-packages/pip/_vendor/rich/jupyter.py | 92 + .../site-packages/pip/_vendor/rich/layout.py | 444 + .../site-packages/pip/_vendor/rich/live.py | 365 + .../pip/_vendor/rich/live_render.py | 113 + .../site-packages/pip/_vendor/rich/logging.py | 268 + .../site-packages/pip/_vendor/rich/markup.py | 244 + .../site-packages/pip/_vendor/rich/measure.py | 149 + .../site-packages/pip/_vendor/rich/padding.py | 141 + .../site-packages/pip/_vendor/rich/pager.py | 34 + .../site-packages/pip/_vendor/rich/palette.py | 100 + .../site-packages/pip/_vendor/rich/panel.py | 250 + .../site-packages/pip/_vendor/rich/pretty.py | 903 ++ .../pip/_vendor/rich/progress.py | 1036 ++ .../pip/_vendor/rich/progress_bar.py | 216 + .../site-packages/pip/_vendor/rich/prompt.py | 376 + .../pip/_vendor/rich/protocol.py | 42 + .../site-packages/pip/_vendor/rich/region.py | 10 + .../site-packages/pip/_vendor/rich/repr.py | 151 + .../site-packages/pip/_vendor/rich/rule.py | 115 + .../site-packages/pip/_vendor/rich/scope.py | 86 + .../site-packages/pip/_vendor/rich/screen.py | 54 + .../site-packages/pip/_vendor/rich/segment.py | 720 ++ .../site-packages/pip/_vendor/rich/spinner.py | 134 + .../site-packages/pip/_vendor/rich/status.py | 132 + .../site-packages/pip/_vendor/rich/style.py | 785 ++ .../site-packages/pip/_vendor/rich/styled.py | 42 + .../site-packages/pip/_vendor/rich/syntax.py | 735 ++ .../site-packages/pip/_vendor/rich/table.py | 968 ++ .../pip/_vendor/rich/tabulate.py | 51 + .../pip/_vendor/rich/terminal_theme.py | 55 + .../site-packages/pip/_vendor/rich/text.py | 1282 +++ .../site-packages/pip/_vendor/rich/theme.py | 112 + .../site-packages/pip/_vendor/rich/themes.py | 5 + .../pip/_vendor/rich/traceback.py | 678 ++ .../site-packages/pip/_vendor/rich/tree.py | 249 + venv/Lib/site-packages/pip/_vendor/six.py | 998 ++ .../pip/_vendor/tenacity/__init__.py | 517 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 16349 bytes .../__pycache__/_asyncio.cpython-310.pyc | Bin 0 -> 2589 bytes .../__pycache__/_utils.cpython-310.pyc | Bin 0 -> 1202 bytes .../__pycache__/after.cpython-310.pyc | Bin 0 -> 1206 bytes .../__pycache__/before.cpython-310.pyc | Bin 0 -> 1084 bytes .../__pycache__/before_sleep.cpython-310.pyc | Bin 0 -> 1386 bytes .../tenacity/__pycache__/nap.cpython-310.pyc | Bin 0 -> 1174 bytes .../__pycache__/retry.cpython-310.pyc | Bin 0 -> 8404 bytes .../tenacity/__pycache__/stop.cpython-310.pyc | Bin 0 -> 3992 bytes .../__pycache__/tornadoweb.cpython-310.pyc | Bin 0 -> 1739 bytes .../tenacity/__pycache__/wait.cpython-310.pyc | Bin 0 -> 7936 bytes .../pip/_vendor/tenacity/_asyncio.py | 92 + .../pip/_vendor/tenacity/_utils.py | 68 + .../pip/_vendor/tenacity/after.py | 46 + .../pip/_vendor/tenacity/before.py | 41 + .../pip/_vendor/tenacity/before_sleep.py | 58 + .../site-packages/pip/_vendor/tenacity/nap.py | 43 + .../pip/_vendor/tenacity/retry.py | 213 + .../pip/_vendor/tenacity/stop.py | 96 + .../pip/_vendor/tenacity/tornadoweb.py | 59 + .../pip/_vendor/tenacity/wait.py | 191 + .../pip/_vendor/tomli/__init__.py | 6 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 354 bytes .../tomli/__pycache__/_parser.cpython-310.pyc | Bin 0 -> 16308 bytes .../tomli/__pycache__/_re.cpython-310.pyc | Bin 0 -> 2398 bytes .../pip/_vendor/tomli/_parser.py | 703 ++ .../site-packages/pip/_vendor/tomli/_re.py | 83 + .../pip/_vendor/typing_extensions.py | 2296 +++++ .../pip/_vendor/urllib3/__init__.py | 85 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2164 bytes .../__pycache__/_collections.cpython-310.pyc | Bin 0 -> 10838 bytes .../__pycache__/_version.cpython-310.pyc | Bin 0 -> 188 bytes .../__pycache__/connection.cpython-310.pyc | Bin 0 -> 13619 bytes .../connectionpool.cpython-310.pyc | Bin 0 -> 25349 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 10969 bytes .../__pycache__/fields.cpython-310.pyc | Bin 0 -> 8160 bytes .../__pycache__/filepost.cpython-310.pyc | Bin 0 -> 2725 bytes .../__pycache__/poolmanager.cpython-310.pyc | Bin 0 -> 15177 bytes .../__pycache__/request.cpython-310.pyc | Bin 0 -> 5601 bytes .../__pycache__/response.cpython-310.pyc | Bin 0 -> 20902 bytes .../pip/_vendor/urllib3/_collections.py | 337 + .../pip/_vendor/urllib3/_version.py | 2 + .../pip/_vendor/urllib3/connection.py | 569 ++ .../pip/_vendor/urllib3/connectionpool.py | 1108 +++ .../pip/_vendor/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 174 bytes .../_appengine_environ.cpython-310.pyc | Bin 0 -> 1354 bytes .../__pycache__/appengine.cpython-310.pyc | Bin 0 -> 8170 bytes .../__pycache__/ntlmpool.cpython-310.pyc | Bin 0 -> 3609 bytes .../__pycache__/pyopenssl.cpython-310.pyc | Bin 0 -> 15513 bytes .../securetransport.cpython-310.pyc | Bin 0 -> 21916 bytes .../contrib/__pycache__/socks.cpython-310.pyc | Bin 0 -> 5576 bytes .../urllib3/contrib/_appengine_environ.py | 36 + .../contrib/_securetransport/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 191 bytes .../__pycache__/bindings.cpython-310.pyc | Bin 0 -> 10687 bytes .../__pycache__/low_level.cpython-310.pyc | Bin 0 -> 9074 bytes .../contrib/_securetransport/bindings.py | 519 + .../contrib/_securetransport/low_level.py | 397 + .../pip/_vendor/urllib3/contrib/appengine.py | 314 + .../pip/_vendor/urllib3/contrib/ntlmpool.py | 130 + .../pip/_vendor/urllib3/contrib/pyopenssl.py | 511 + .../urllib3/contrib/securetransport.py | 922 ++ .../pip/_vendor/urllib3/contrib/socks.py | 216 + .../pip/_vendor/urllib3/exceptions.py | 323 + .../pip/_vendor/urllib3/fields.py | 274 + .../pip/_vendor/urllib3/filepost.py | 98 + .../pip/_vendor/urllib3/packages/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 175 bytes .../packages/__pycache__/six.cpython-310.pyc | Bin 0 -> 27635 bytes .../urllib3/packages/backports/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 185 bytes .../__pycache__/makefile.cpython-310.pyc | Bin 0 -> 1285 bytes .../urllib3/packages/backports/makefile.py | 51 + .../pip/_vendor/urllib3/packages/six.py | 1077 ++ .../pip/_vendor/urllib3/poolmanager.py | 536 + .../pip/_vendor/urllib3/request.py | 170 + .../pip/_vendor/urllib3/response.py | 821 ++ .../pip/_vendor/urllib3/util/__init__.py | 49 + .../util/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1084 bytes .../__pycache__/connection.cpython-310.pyc | Bin 0 -> 3412 bytes .../util/__pycache__/proxy.cpython-310.pyc | Bin 0 -> 1319 bytes .../util/__pycache__/queue.cpython-310.pyc | Bin 0 -> 1039 bytes .../util/__pycache__/request.cpython-310.pyc | Bin 0 -> 3447 bytes .../util/__pycache__/response.cpython-310.pyc | Bin 0 -> 2332 bytes .../util/__pycache__/retry.cpython-310.pyc | Bin 0 -> 16117 bytes .../util/__pycache__/ssl_.cpython-310.pyc | Bin 0 -> 11286 bytes .../ssl_match_hostname.cpython-310.pyc | Bin 0 -> 3256 bytes .../__pycache__/ssltransport.cpython-310.pyc | Bin 0 -> 7374 bytes .../util/__pycache__/timeout.cpython-310.pyc | Bin 0 -> 8916 bytes .../util/__pycache__/url.cpython-310.pyc | Bin 0 -> 10659 bytes .../util/__pycache__/wait.cpython-310.pyc | Bin 0 -> 3068 bytes .../pip/_vendor/urllib3/util/connection.py | 149 + .../pip/_vendor/urllib3/util/proxy.py | 57 + .../pip/_vendor/urllib3/util/queue.py | 22 + .../pip/_vendor/urllib3/util/request.py | 143 + .../pip/_vendor/urllib3/util/response.py | 107 + .../pip/_vendor/urllib3/util/retry.py | 620 ++ .../pip/_vendor/urllib3/util/ssl_.py | 495 + .../urllib3/util/ssl_match_hostname.py | 161 + .../pip/_vendor/urllib3/util/ssltransport.py | 221 + .../pip/_vendor/urllib3/util/timeout.py | 268 + .../pip/_vendor/urllib3/util/url.py | 432 + .../pip/_vendor/urllib3/util/wait.py | 153 + venv/Lib/site-packages/pip/_vendor/vendor.txt | 25 + .../pip/_vendor/webencodings/__init__.py | 342 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 9721 bytes .../__pycache__/labels.cpython-310.pyc | Bin 0 -> 5211 bytes .../__pycache__/mklabels.cpython-310.pyc | Bin 0 -> 1916 bytes .../__pycache__/tests.cpython-310.pyc | Bin 0 -> 5018 bytes .../x_user_defined.cpython-310.pyc | Bin 0 -> 2567 bytes .../pip/_vendor/webencodings/labels.py | 231 + .../pip/_vendor/webencodings/mklabels.py | 59 + .../pip/_vendor/webencodings/tests.py | 153 + .../_vendor/webencodings/x_user_defined.py | 325 + venv/Lib/site-packages/pip/py.typed | 4 + .../site-packages/pkg_resources/__init__.py | 3288 +++++++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 100017 bytes .../pkg_resources/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 168 bytes .../__pycache__/appdirs.cpython-310.pyc | Bin 0 -> 20229 bytes .../__pycache__/pyparsing.cpython-310.pyc | Bin 0 -> 198784 bytes .../pkg_resources/_vendor/appdirs.py | 608 ++ .../_vendor/packaging/__about__.py | 27 + .../_vendor/packaging/__init__.py | 26 + .../__pycache__/__about__.cpython-310.pyc | Bin 0 -> 684 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 530 bytes .../__pycache__/_compat.cpython-310.pyc | Bin 0 -> 1130 bytes .../__pycache__/_structures.cpython-310.pyc | Bin 0 -> 2674 bytes .../__pycache__/_typing.cpython-310.pyc | Bin 0 -> 1486 bytes .../__pycache__/markers.cpython-310.pyc | Bin 0 -> 9171 bytes .../__pycache__/requirements.cpython-310.pyc | Bin 0 -> 4076 bytes .../__pycache__/specifiers.cpython-310.pyc | Bin 0 -> 20437 bytes .../__pycache__/tags.cpython-310.pyc | Bin 0 -> 17316 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 1621 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 13001 bytes .../_vendor/packaging/_compat.py | 38 + .../_vendor/packaging/_structures.py | 86 + .../_vendor/packaging/_typing.py | 48 + .../_vendor/packaging/markers.py | 328 + .../_vendor/packaging/requirements.py | 145 + .../_vendor/packaging/specifiers.py | 863 ++ .../pkg_resources/_vendor/packaging/tags.py | 751 ++ .../pkg_resources/_vendor/packaging/utils.py | 65 + .../_vendor/packaging/version.py | 535 + .../pkg_resources/_vendor/pyparsing.py | 5742 +++++++++++ .../pkg_resources/extern/__init__.py | 73 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2876 bytes .../__pycache__/setup.cpython-310.pyc | Bin 0 -> 296 bytes .../data/my-test-package-source/setup.py | 6 + venv/Lib/site-packages/playhouse/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 156 bytes .../__pycache__/apsw_ext.cpython-310.pyc | Bin 0 -> 6681 bytes .../__pycache__/cockroachdb.cpython-310.pyc | Bin 0 -> 9208 bytes .../__pycache__/dataset.cpython-310.pyc | Bin 0 -> 16175 bytes .../__pycache__/db_url.cpython-310.pyc | Bin 0 -> 3329 bytes .../__pycache__/fields.cpython-310.pyc | Bin 0 -> 2018 bytes .../__pycache__/flask_utils.cpython-310.pyc | Bin 0 -> 7769 bytes .../__pycache__/hybrid.cpython-310.pyc | Bin 0 -> 2168 bytes .../playhouse/__pycache__/kv.cpython-310.pyc | Bin 0 -> 6335 bytes .../__pycache__/migrate.cpython-310.pyc | Bin 0 -> 28510 bytes .../__pycache__/mysql_ext.cpython-310.pyc | Bin 0 -> 4304 bytes .../__pycache__/pool.cpython-310.pyc | Bin 0 -> 10070 bytes .../__pycache__/postgres_ext.cpython-310.pyc | Bin 0 -> 19302 bytes .../__pycache__/psycopg3_ext.cpython-310.pyc | Bin 0 -> 6250 bytes .../__pycache__/reflection.cpython-310.pyc | Bin 0 -> 23012 bytes .../__pycache__/shortcuts.cpython-310.pyc | Bin 0 -> 9273 bytes .../__pycache__/signals.cpython-310.pyc | Bin 0 -> 3182 bytes .../__pycache__/sqlcipher_ext.cpython-310.pyc | Bin 0 -> 3941 bytes .../sqlite_changelog.cpython-310.pyc | Bin 0 -> 4193 bytes .../__pycache__/sqlite_ext.cpython-310.pyc | Bin 0 -> 42851 bytes .../__pycache__/sqlite_udf.cpython-310.pyc | Bin 0 -> 15597 bytes .../__pycache__/sqliteq.cpython-310.pyc | Bin 0 -> 11310 bytes .../__pycache__/test_utils.cpython-310.pyc | Bin 0 -> 3070 bytes venv/Lib/site-packages/playhouse/apsw_ext.py | 158 + .../site-packages/playhouse/cockroachdb.py | 223 + venv/Lib/site-packages/playhouse/dataset.py | 462 + venv/Lib/site-packages/playhouse/db_url.py | 131 + venv/Lib/site-packages/playhouse/fields.py | 60 + .../site-packages/playhouse/flask_utils.py | 241 + venv/Lib/site-packages/playhouse/hybrid.py | 53 + venv/Lib/site-packages/playhouse/kv.py | 176 + venv/Lib/site-packages/playhouse/migrate.py | 944 ++ venv/Lib/site-packages/playhouse/mysql_ext.py | 117 + venv/Lib/site-packages/playhouse/pool.py | 377 + .../site-packages/playhouse/postgres_ext.py | 515 + .../site-packages/playhouse/psycopg3_ext.py | 167 + .../Lib/site-packages/playhouse/reflection.py | 858 ++ venv/Lib/site-packages/playhouse/shortcuts.py | 332 + venv/Lib/site-packages/playhouse/signals.py | 79 + .../site-packages/playhouse/sqlcipher_ext.py | 106 + .../playhouse/sqlite_changelog.py | 128 + .../Lib/site-packages/playhouse/sqlite_ext.py | 1413 +++ .../Lib/site-packages/playhouse/sqlite_udf.py | 536 + venv/Lib/site-packages/playhouse/sqliteq.py | 359 + .../Lib/site-packages/playhouse/test_utils.py | 64 + .../psycopg2-2.9.10.dist-info/INSTALLER | 1 + .../psycopg2-2.9.10.dist-info/LICENSE | 49 + .../psycopg2-2.9.10.dist-info/METADATA | 123 + .../psycopg2-2.9.10.dist-info/RECORD | 30 + .../psycopg2-2.9.10.dist-info/REQUESTED | 0 .../psycopg2-2.9.10.dist-info/WHEEL | 5 + .../psycopg2-2.9.10.dist-info/top_level.txt | 1 + venv/Lib/site-packages/psycopg2/__init__.py | 126 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 3288 bytes .../__pycache__/_ipaddress.cpython-310.pyc | Bin 0 -> 1971 bytes .../__pycache__/_json.cpython-310.pyc | Bin 0 -> 6183 bytes .../__pycache__/_range.cpython-310.pyc | Bin 0 -> 14373 bytes .../__pycache__/errorcodes.cpython-310.pyc | Bin 0 -> 12891 bytes .../__pycache__/errors.cpython-310.pyc | Bin 0 -> 485 bytes .../__pycache__/extensions.cpython-310.pyc | Bin 0 -> 6225 bytes .../__pycache__/extras.cpython-310.pyc | Bin 0 -> 42310 bytes .../psycopg2/__pycache__/pool.cpython-310.pyc | Bin 0 -> 4879 bytes .../psycopg2/__pycache__/sql.cpython-310.pyc | Bin 0 -> 14991 bytes .../psycopg2/__pycache__/tz.cpython-310.pyc | Bin 0 -> 4461 bytes venv/Lib/site-packages/psycopg2/_ipaddress.py | 90 + venv/Lib/site-packages/psycopg2/_json.py | 199 + .../psycopg2/_psycopg.cp310-win_amd64.pyd | Bin 0 -> 2416128 bytes venv/Lib/site-packages/psycopg2/_range.py | 554 ++ venv/Lib/site-packages/psycopg2/errorcodes.py | 450 + venv/Lib/site-packages/psycopg2/errors.py | 38 + venv/Lib/site-packages/psycopg2/extensions.py | 213 + venv/Lib/site-packages/psycopg2/extras.py | 1340 +++ venv/Lib/site-packages/psycopg2/pool.py | 187 + venv/Lib/site-packages/psycopg2/sql.py | 455 + venv/Lib/site-packages/psycopg2/tz.py | 158 + venv/Lib/site-packages/pwiz.py | 228 + .../requests-2.32.3.dist-info/INSTALLER | 1 + .../requests-2.32.3.dist-info/LICENSE | 175 + .../requests-2.32.3.dist-info/METADATA | 119 + .../requests-2.32.3.dist-info/RECORD | 43 + .../requests-2.32.3.dist-info/REQUESTED | 0 .../requests-2.32.3.dist-info/WHEEL | 5 + .../requests-2.32.3.dist-info/top_level.txt | 1 + venv/Lib/site-packages/requests/__init__.py | 184 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 3899 bytes .../__pycache__/__version__.cpython-310.pyc | Bin 0 -> 513 bytes .../_internal_utils.cpython-310.pyc | Bin 0 -> 1589 bytes .../__pycache__/adapters.cpython-310.pyc | Bin 0 -> 22003 bytes .../requests/__pycache__/api.cpython-310.pyc | Bin 0 -> 6689 bytes .../requests/__pycache__/auth.cpython-310.pyc | Bin 0 -> 8085 bytes .../__pycache__/certs.cpython-310.pyc | Bin 0 -> 590 bytes .../__pycache__/compat.cpython-310.pyc | Bin 0 -> 1741 bytes .../__pycache__/cookies.cpython-310.pyc | Bin 0 -> 18690 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 6192 bytes .../requests/__pycache__/help.cpython-310.pyc | Bin 0 -> 2812 bytes .../__pycache__/hooks.cpython-310.pyc | Bin 0 -> 957 bytes .../__pycache__/models.cpython-310.pyc | Bin 0 -> 24181 bytes .../__pycache__/packages.cpython-310.pyc | Bin 0 -> 594 bytes .../__pycache__/sessions.cpython-310.pyc | Bin 0 -> 19699 bytes .../__pycache__/status_codes.cpython-310.pyc | Bin 0 -> 4707 bytes .../__pycache__/structures.cpython-310.pyc | Bin 0 -> 4401 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 24589 bytes .../Lib/site-packages/requests/__version__.py | 14 + .../site-packages/requests/_internal_utils.py | 50 + venv/Lib/site-packages/requests/adapters.py | 719 ++ venv/Lib/site-packages/requests/api.py | 157 + venv/Lib/site-packages/requests/auth.py | 314 + venv/Lib/site-packages/requests/certs.py | 17 + venv/Lib/site-packages/requests/compat.py | 94 + venv/Lib/site-packages/requests/cookies.py | 561 ++ venv/Lib/site-packages/requests/exceptions.py | 151 + venv/Lib/site-packages/requests/help.py | 134 + venv/Lib/site-packages/requests/hooks.py | 33 + venv/Lib/site-packages/requests/models.py | 1037 ++ venv/Lib/site-packages/requests/packages.py | 23 + venv/Lib/site-packages/requests/sessions.py | 831 ++ .../site-packages/requests/status_codes.py | 128 + venv/Lib/site-packages/requests/structures.py | 99 + venv/Lib/site-packages/requests/utils.py | 1096 +++ .../setuptools-58.1.0.dist-info/INSTALLER | 1 + .../setuptools-58.1.0.dist-info/LICENSE | 19 + .../setuptools-58.1.0.dist-info/METADATA | 119 + .../setuptools-58.1.0.dist-info/RECORD | 296 + .../setuptools-58.1.0.dist-info/REQUESTED | 0 .../setuptools-58.1.0.dist-info/WHEEL | 5 + .../entry_points.txt | 56 + .../setuptools-58.1.0.dist-info/top_level.txt | 3 + venv/Lib/site-packages/setuptools/__init__.py | 242 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 8572 bytes .../_deprecation_warning.cpython-310.pyc | Bin 0 -> 529 bytes .../__pycache__/_imp.cpython-310.pyc | Bin 0 -> 2055 bytes .../__pycache__/archive_util.cpython-310.pyc | Bin 0 -> 5825 bytes .../__pycache__/build_meta.cpython-310.pyc | Bin 0 -> 9097 bytes .../__pycache__/config.cpython-310.pyc | Bin 0 -> 20885 bytes .../__pycache__/dep_util.cpython-310.pyc | Bin 0 -> 836 bytes .../__pycache__/depends.cpython-310.pyc | Bin 0 -> 5249 bytes .../__pycache__/dist.cpython-310.pyc | Bin 0 -> 36232 bytes .../__pycache__/errors.cpython-310.pyc | Bin 0 -> 829 bytes .../__pycache__/extension.cpython-310.pyc | Bin 0 -> 1925 bytes .../__pycache__/glob.cpython-310.pyc | Bin 0 -> 3714 bytes .../__pycache__/installer.cpython-310.pyc | Bin 0 -> 2732 bytes .../__pycache__/launch.cpython-310.pyc | Bin 0 -> 886 bytes .../__pycache__/monkey.cpython-310.pyc | Bin 0 -> 4614 bytes .../__pycache__/msvc.cpython-310.pyc | Bin 0 -> 42618 bytes .../__pycache__/namespaces.cpython-310.pyc | Bin 0 -> 3597 bytes .../__pycache__/package_index.cpython-310.pyc | Bin 0 -> 32471 bytes .../__pycache__/py34compat.cpython-310.pyc | Bin 0 -> 461 bytes .../__pycache__/sandbox.cpython-310.pyc | Bin 0 -> 15737 bytes .../__pycache__/unicode_utils.cpython-310.pyc | Bin 0 -> 1091 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 303 bytes .../__pycache__/wheel.cpython-310.pyc | Bin 0 -> 7329 bytes .../windows_support.cpython-310.pyc | Bin 0 -> 1004 bytes .../setuptools/_deprecation_warning.py | 7 + .../setuptools/_distutils/__init__.py | 15 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 435 bytes .../__pycache__/_msvccompiler.cpython-310.pyc | Bin 0 -> 13814 bytes .../__pycache__/archive_util.cpython-310.pyc | Bin 0 -> 6542 bytes .../__pycache__/bcppcompiler.cpython-310.pyc | Bin 0 -> 6529 bytes .../__pycache__/ccompiler.cpython-310.pyc | Bin 0 -> 33256 bytes .../__pycache__/cmd.cpython-310.pyc | Bin 0 -> 13929 bytes .../__pycache__/config.cpython-310.pyc | Bin 0 -> 3570 bytes .../__pycache__/core.cpython-310.pyc | Bin 0 -> 6637 bytes .../cygwinccompiler.cpython-310.pyc | Bin 0 -> 8723 bytes .../__pycache__/debug.cpython-310.pyc | Bin 0 -> 231 bytes .../__pycache__/dep_util.cpython-310.pyc | Bin 0 -> 2752 bytes .../__pycache__/dir_util.cpython-310.pyc | Bin 0 -> 5863 bytes .../__pycache__/dist.cpython-310.pyc | Bin 0 -> 34028 bytes .../__pycache__/errors.cpython-310.pyc | Bin 0 -> 4973 bytes .../__pycache__/extension.cpython-310.pyc | Bin 0 -> 6987 bytes .../__pycache__/fancy_getopt.cpython-310.pyc | Bin 0 -> 10613 bytes .../__pycache__/file_util.cpython-310.pyc | Bin 0 -> 5957 bytes .../__pycache__/filelist.cpython-310.pyc | Bin 0 -> 10803 bytes .../__pycache__/log.cpython-310.pyc | Bin 0 -> 2288 bytes .../__pycache__/msvc9compiler.cpython-310.pyc | Bin 0 -> 17543 bytes .../__pycache__/msvccompiler.cpython-310.pyc | Bin 0 -> 14762 bytes .../__pycache__/py35compat.cpython-310.pyc | Bin 0 -> 607 bytes .../__pycache__/py38compat.cpython-310.pyc | Bin 0 -> 404 bytes .../__pycache__/spawn.cpython-310.pyc | Bin 0 -> 2874 bytes .../__pycache__/sysconfig.cpython-310.pyc | Bin 0 -> 12541 bytes .../__pycache__/text_file.cpython-310.pyc | Bin 0 -> 8450 bytes .../__pycache__/unixccompiler.cpython-310.pyc | Bin 0 -> 6808 bytes .../__pycache__/util.cpython-310.pyc | Bin 0 -> 14194 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 7338 bytes .../versionpredicate.cpython-310.pyc | Bin 0 -> 5168 bytes .../setuptools/_distutils/_msvccompiler.py | 561 ++ .../setuptools/_distutils/archive_util.py | 256 + .../setuptools/_distutils/bcppcompiler.py | 393 + .../setuptools/_distutils/ccompiler.py | 1123 +++ .../setuptools/_distutils/cmd.py | 403 + .../setuptools/_distutils/command/__init__.py | 31 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 510 bytes .../command/__pycache__/bdist.cpython-310.pyc | Bin 0 -> 3644 bytes .../__pycache__/bdist_dumb.cpython-310.pyc | Bin 0 -> 3625 bytes .../__pycache__/bdist_msi.cpython-310.pyc | Bin 0 -> 19701 bytes .../__pycache__/bdist_rpm.cpython-310.pyc | Bin 0 -> 12267 bytes .../__pycache__/bdist_wininst.cpython-310.pyc | Bin 0 -> 8610 bytes .../command/__pycache__/build.cpython-310.pyc | Bin 0 -> 3872 bytes .../__pycache__/build_clib.cpython-310.pyc | Bin 0 -> 4849 bytes .../__pycache__/build_ext.cpython-310.pyc | Bin 0 -> 16246 bytes .../__pycache__/build_py.cpython-310.pyc | Bin 0 -> 9868 bytes .../__pycache__/build_scripts.cpython-310.pyc | Bin 0 -> 3991 bytes .../command/__pycache__/check.cpython-310.pyc | Bin 0 -> 4988 bytes .../command/__pycache__/clean.cpython-310.pyc | Bin 0 -> 2127 bytes .../__pycache__/config.cpython-310.pyc | Bin 0 -> 10309 bytes .../__pycache__/install.cpython-310.pyc | Bin 0 -> 13843 bytes .../__pycache__/install_data.cpython-310.pyc | Bin 0 -> 2326 bytes .../install_egg_info.cpython-310.pyc | Bin 0 -> 3067 bytes .../install_headers.cpython-310.pyc | Bin 0 -> 1749 bytes .../__pycache__/install_lib.cpython-310.pyc | Bin 0 -> 5151 bytes .../install_scripts.cpython-310.pyc | Bin 0 -> 2178 bytes .../__pycache__/py37compat.cpython-310.pyc | Bin 0 -> 1023 bytes .../__pycache__/register.cpython-310.pyc | Bin 0 -> 8662 bytes .../command/__pycache__/sdist.cpython-310.pyc | Bin 0 -> 14478 bytes .../__pycache__/upload.cpython-310.pyc | Bin 0 -> 5354 bytes .../setuptools/_distutils/command/bdist.py | 143 + .../_distutils/command/bdist_dumb.py | 123 + .../_distutils/command/bdist_msi.py | 749 ++ .../_distutils/command/bdist_rpm.py | 579 ++ .../_distutils/command/bdist_wininst.py | 377 + .../setuptools/_distutils/command/build.py | 157 + .../_distutils/command/build_clib.py | 209 + .../_distutils/command/build_ext.py | 757 ++ .../setuptools/_distutils/command/build_py.py | 392 + .../_distutils/command/build_scripts.py | 152 + .../setuptools/_distutils/command/check.py | 148 + .../setuptools/_distutils/command/clean.py | 76 + .../setuptools/_distutils/command/config.py | 344 + .../setuptools/_distutils/command/install.py | 678 ++ .../_distutils/command/install_data.py | 79 + .../_distutils/command/install_egg_info.py | 77 + .../_distutils/command/install_headers.py | 47 + .../_distutils/command/install_lib.py | 217 + .../_distutils/command/install_scripts.py | 60 + .../_distutils/command/py37compat.py | 30 + .../setuptools/_distutils/command/register.py | 304 + .../setuptools/_distutils/command/sdist.py | 494 + .../setuptools/_distutils/command/upload.py | 214 + .../setuptools/_distutils/config.py | 130 + .../setuptools/_distutils/core.py | 234 + .../setuptools/_distutils/cygwinccompiler.py | 414 + .../setuptools/_distutils/debug.py | 5 + .../setuptools/_distutils/dep_util.py | 92 + .../setuptools/_distutils/dir_util.py | 210 + .../setuptools/_distutils/dist.py | 1257 +++ .../setuptools/_distutils/errors.py | 97 + .../setuptools/_distutils/extension.py | 240 + .../setuptools/_distutils/fancy_getopt.py | 457 + .../setuptools/_distutils/file_util.py | 238 + .../setuptools/_distutils/filelist.py | 355 + .../setuptools/_distutils/log.py | 77 + .../setuptools/_distutils/msvc9compiler.py | 788 ++ .../setuptools/_distutils/msvccompiler.py | 643 ++ .../setuptools/_distutils/py35compat.py | 19 + .../setuptools/_distutils/py38compat.py | 7 + .../setuptools/_distutils/spawn.py | 106 + .../setuptools/_distutils/sysconfig.py | 578 ++ .../setuptools/_distutils/text_file.py | 286 + .../setuptools/_distutils/unixccompiler.py | 332 + .../setuptools/_distutils/util.py | 535 + .../setuptools/_distutils/version.py | 347 + .../setuptools/_distutils/versionpredicate.py | 166 + venv/Lib/site-packages/setuptools/_imp.py | 82 + .../setuptools/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 165 bytes .../__pycache__/ordered_set.cpython-310.pyc | Bin 0 -> 16301 bytes .../__pycache__/pyparsing.cpython-310.pyc | Bin 0 -> 198781 bytes .../_vendor/more_itertools/__init__.py | 4 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 246 bytes .../__pycache__/more.cpython-310.pyc | Bin 0 -> 109976 bytes .../__pycache__/recipes.cpython-310.pyc | Bin 0 -> 17946 bytes .../setuptools/_vendor/more_itertools/more.py | 3825 ++++++++ .../_vendor/more_itertools/recipes.py | 620 ++ .../setuptools/_vendor/ordered_set.py | 488 + .../setuptools/_vendor/packaging/__about__.py | 27 + .../setuptools/_vendor/packaging/__init__.py | 26 + .../__pycache__/__about__.cpython-310.pyc | Bin 0 -> 681 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 527 bytes .../__pycache__/_compat.cpython-310.pyc | Bin 0 -> 1127 bytes .../__pycache__/_structures.cpython-310.pyc | Bin 0 -> 2671 bytes .../__pycache__/_typing.cpython-310.pyc | Bin 0 -> 1483 bytes .../__pycache__/markers.cpython-310.pyc | Bin 0 -> 9165 bytes .../__pycache__/requirements.cpython-310.pyc | Bin 0 -> 4070 bytes .../__pycache__/specifiers.cpython-310.pyc | Bin 0 -> 20434 bytes .../__pycache__/tags.cpython-310.pyc | Bin 0 -> 17313 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 1618 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 12998 bytes .../setuptools/_vendor/packaging/_compat.py | 38 + .../_vendor/packaging/_structures.py | 86 + .../setuptools/_vendor/packaging/_typing.py | 48 + .../setuptools/_vendor/packaging/markers.py | 328 + .../_vendor/packaging/requirements.py | 145 + .../_vendor/packaging/specifiers.py | 863 ++ .../setuptools/_vendor/packaging/tags.py | 751 ++ .../setuptools/_vendor/packaging/utils.py | 65 + .../setuptools/_vendor/packaging/version.py | 535 + .../setuptools/_vendor/pyparsing.py | 5742 +++++++++++ .../site-packages/setuptools/archive_util.py | 205 + .../site-packages/setuptools/build_meta.py | 281 + venv/Lib/site-packages/setuptools/cli-32.exe | Bin 0 -> 65536 bytes venv/Lib/site-packages/setuptools/cli-64.exe | Bin 0 -> 74752 bytes venv/Lib/site-packages/setuptools/cli.exe | Bin 0 -> 65536 bytes .../setuptools/command/__init__.py | 8 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 354 bytes .../command/__pycache__/alias.cpython-310.pyc | Bin 0 -> 2356 bytes .../__pycache__/bdist_egg.cpython-310.pyc | Bin 0 -> 13082 bytes .../__pycache__/bdist_rpm.cpython-310.pyc | Bin 0 -> 1569 bytes .../__pycache__/build_clib.cpython-310.pyc | Bin 0 -> 2445 bytes .../__pycache__/build_ext.cpython-310.pyc | Bin 0 -> 9872 bytes .../__pycache__/build_py.cpython-310.pyc | Bin 0 -> 7849 bytes .../__pycache__/develop.cpython-310.pyc | Bin 0 -> 6132 bytes .../__pycache__/dist_info.cpython-310.pyc | Bin 0 -> 1374 bytes .../__pycache__/easy_install.cpython-310.pyc | Bin 0 -> 63706 bytes .../__pycache__/egg_info.cpython-310.pyc | Bin 0 -> 22000 bytes .../__pycache__/install.cpython-310.pyc | Bin 0 -> 4031 bytes .../install_egg_info.cpython-310.pyc | Bin 0 -> 2408 bytes .../__pycache__/install_lib.cpython-310.pyc | Bin 0 -> 4151 bytes .../install_scripts.cpython-310.pyc | Bin 0 -> 2409 bytes .../__pycache__/py36compat.cpython-310.pyc | Bin 0 -> 4516 bytes .../__pycache__/register.cpython-310.pyc | Bin 0 -> 820 bytes .../__pycache__/rotate.cpython-310.pyc | Bin 0 -> 2487 bytes .../__pycache__/saveopts.cpython-310.pyc | Bin 0 -> 906 bytes .../command/__pycache__/sdist.cpython-310.pyc | Bin 0 -> 6507 bytes .../__pycache__/setopt.cpython-310.pyc | Bin 0 -> 4668 bytes .../command/__pycache__/test.cpython-310.pyc | Bin 0 -> 8112 bytes .../__pycache__/upload.cpython-310.pyc | Bin 0 -> 793 bytes .../__pycache__/upload_docs.cpython-310.pyc | Bin 0 -> 6162 bytes .../site-packages/setuptools/command/alias.py | 78 + .../setuptools/command/bdist_egg.py | 456 + .../setuptools/command/bdist_rpm.py | 40 + .../setuptools/command/build_clib.py | 101 + .../setuptools/command/build_ext.py | 328 + .../setuptools/command/build_py.py | 232 + .../setuptools/command/develop.py | 193 + .../setuptools/command/dist_info.py | 36 + .../setuptools/command/easy_install.py | 2290 +++++ .../setuptools/command/egg_info.py | 734 ++ .../setuptools/command/install.py | 125 + .../setuptools/command/install_egg_info.py | 62 + .../setuptools/command/install_lib.py | 122 + .../setuptools/command/install_scripts.py | 69 + .../setuptools/command/launcher manifest.xml | 15 + .../setuptools/command/py36compat.py | 134 + .../setuptools/command/register.py | 18 + .../setuptools/command/rotate.py | 64 + .../setuptools/command/saveopts.py | 22 + .../site-packages/setuptools/command/sdist.py | 189 + .../setuptools/command/setopt.py | 149 + .../site-packages/setuptools/command/test.py | 252 + .../setuptools/command/upload.py | 17 + .../setuptools/command/upload_docs.py | 202 + venv/Lib/site-packages/setuptools/config.py | 749 ++ venv/Lib/site-packages/setuptools/dep_util.py | 25 + venv/Lib/site-packages/setuptools/depends.py | 175 + venv/Lib/site-packages/setuptools/dist.py | 1150 +++ venv/Lib/site-packages/setuptools/errors.py | 16 + .../Lib/site-packages/setuptools/extension.py | 55 + .../setuptools/extern/__init__.py | 73 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2915 bytes venv/Lib/site-packages/setuptools/glob.py | 167 + venv/Lib/site-packages/setuptools/gui-32.exe | Bin 0 -> 65536 bytes venv/Lib/site-packages/setuptools/gui-64.exe | Bin 0 -> 75264 bytes venv/Lib/site-packages/setuptools/gui.exe | Bin 0 -> 65536 bytes .../Lib/site-packages/setuptools/installer.py | 97 + venv/Lib/site-packages/setuptools/launch.py | 36 + venv/Lib/site-packages/setuptools/monkey.py | 177 + venv/Lib/site-packages/setuptools/msvc.py | 1805 ++++ .../site-packages/setuptools/namespaces.py | 107 + .../site-packages/setuptools/package_index.py | 1119 +++ .../site-packages/setuptools/py34compat.py | 13 + venv/Lib/site-packages/setuptools/sandbox.py | 530 + .../setuptools/script (dev).tmpl | 6 + venv/Lib/site-packages/setuptools/script.tmpl | 3 + .../site-packages/setuptools/unicode_utils.py | 42 + venv/Lib/site-packages/setuptools/version.py | 6 + venv/Lib/site-packages/setuptools/wheel.py | 213 + .../setuptools/windows_support.py | 29 + .../urllib3-2.2.3.dist-info/INSTALLER | 1 + .../urllib3-2.2.3.dist-info/METADATA | 155 + .../urllib3-2.2.3.dist-info/RECORD | 79 + .../urllib3-2.2.3.dist-info/WHEEL | 4 + .../licenses/LICENSE.txt | 21 + venv/Lib/site-packages/urllib3/__init__.py | 211 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 6089 bytes .../_base_connection.cpython-310.pyc | Bin 0 -> 5664 bytes .../__pycache__/_collections.cpython-310.pyc | Bin 0 -> 16230 bytes .../_request_methods.cpython-310.pyc | Bin 0 -> 9073 bytes .../__pycache__/_version.cpython-310.pyc | Bin 0 -> 477 bytes .../__pycache__/connection.cpython-310.pyc | Bin 0 -> 24012 bytes .../connectionpool.cpython-310.pyc | Bin 0 -> 29194 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 13217 bytes .../__pycache__/fields.cpython-310.pyc | Bin 0 -> 9699 bytes .../__pycache__/filepost.cpython-310.pyc | Bin 0 -> 2329 bytes .../__pycache__/poolmanager.cpython-310.pyc | Bin 0 -> 18185 bytes .../__pycache__/response.cpython-310.pyc | Bin 0 -> 33479 bytes .../site-packages/urllib3/_base_connection.py | 172 + .../Lib/site-packages/urllib3/_collections.py | 483 + .../site-packages/urllib3/_request_methods.py | 278 + venv/Lib/site-packages/urllib3/_version.py | 16 + venv/Lib/site-packages/urllib3/connection.py | 1033 ++ .../site-packages/urllib3/connectionpool.py | 1182 +++ .../site-packages/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 162 bytes .../__pycache__/pyopenssl.cpython-310.pyc | Bin 0 -> 17337 bytes .../contrib/__pycache__/socks.cpython-310.pyc | Bin 0 -> 6123 bytes .../urllib3/contrib/emscripten/__init__.py | 16 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 701 bytes .../__pycache__/connection.cpython-310.pyc | Bin 0 -> 7551 bytes .../__pycache__/fetch.cpython-310.pyc | Bin 0 -> 11874 bytes .../__pycache__/request.cpython-310.pyc | Bin 0 -> 1217 bytes .../__pycache__/response.cpython-310.pyc | Bin 0 -> 8203 bytes .../urllib3/contrib/emscripten/connection.py | 254 + .../emscripten/emscripten_fetch_worker.js | 110 + .../urllib3/contrib/emscripten/fetch.py | 418 + .../urllib3/contrib/emscripten/request.py | 22 + .../urllib3/contrib/emscripten/response.py | 285 + .../urllib3/contrib/pyopenssl.py | 552 ++ .../site-packages/urllib3/contrib/socks.py | 228 + venv/Lib/site-packages/urllib3/exceptions.py | 321 + venv/Lib/site-packages/urllib3/fields.py | 341 + venv/Lib/site-packages/urllib3/filepost.py | 89 + .../site-packages/urllib3/http2/__init__.py | 53 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1399 bytes .../__pycache__/connection.cpython-310.pyc | Bin 0 -> 10882 bytes .../http2/__pycache__/probe.cpython-310.pyc | Bin 0 -> 2533 bytes .../site-packages/urllib3/http2/connection.py | 356 + venv/Lib/site-packages/urllib3/http2/probe.py | 87 + venv/Lib/site-packages/urllib3/poolmanager.py | 637 ++ venv/Lib/site-packages/urllib3/py.typed | 2 + venv/Lib/site-packages/urllib3/response.py | 1265 +++ .../site-packages/urllib3/util/__init__.py | 42 + .../util/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 942 bytes .../__pycache__/connection.cpython-310.pyc | Bin 0 -> 3461 bytes .../util/__pycache__/proxy.cpython-310.pyc | Bin 0 -> 1074 bytes .../util/__pycache__/request.cpython-310.pyc | Bin 0 -> 6196 bytes .../util/__pycache__/response.cpython-310.pyc | Bin 0 -> 2328 bytes .../util/__pycache__/retry.cpython-310.pyc | Bin 0 -> 15741 bytes .../util/__pycache__/ssl_.cpython-310.pyc | Bin 0 -> 12453 bytes .../ssl_match_hostname.cpython-310.pyc | Bin 0 -> 3697 bytes .../__pycache__/ssltransport.cpython-310.pyc | Bin 0 -> 9413 bytes .../util/__pycache__/timeout.cpython-310.pyc | Bin 0 -> 9601 bytes .../util/__pycache__/url.cpython-310.pyc | Bin 0 -> 11237 bytes .../util/__pycache__/util.cpython-310.pyc | Bin 0 -> 1202 bytes .../util/__pycache__/wait.cpython-310.pyc | Bin 0 -> 2381 bytes .../site-packages/urllib3/util/connection.py | 137 + venv/Lib/site-packages/urllib3/util/proxy.py | 43 + .../Lib/site-packages/urllib3/util/request.py | 256 + .../site-packages/urllib3/util/response.py | 101 + venv/Lib/site-packages/urllib3/util/retry.py | 533 + venv/Lib/site-packages/urllib3/util/ssl_.py | 513 + .../urllib3/util/ssl_match_hostname.py | 159 + .../urllib3/util/ssltransport.py | 276 + .../Lib/site-packages/urllib3/util/timeout.py | 275 + venv/Lib/site-packages/urllib3/util/url.py | 471 + venv/Lib/site-packages/urllib3/util/util.py | 42 + venv/Lib/site-packages/urllib3/util/wait.py | 124 + .../werkzeug-3.1.3.dist-info/INSTALLER | 1 + .../werkzeug-3.1.3.dist-info/LICENSE.txt | 28 + .../werkzeug-3.1.3.dist-info/METADATA | 99 + .../werkzeug-3.1.3.dist-info/RECORD | 116 + .../werkzeug-3.1.3.dist-info/WHEEL | 4 + venv/Lib/site-packages/werkzeug/__init__.py | 4 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 303 bytes .../__pycache__/_internal.cpython-310.pyc | Bin 0 -> 7033 bytes .../__pycache__/_reloader.cpython-310.pyc | Bin 0 -> 12891 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 27657 bytes .../__pycache__/formparser.cpython-310.pyc | Bin 0 -> 12799 bytes .../werkzeug/__pycache__/http.cpython-310.pyc | Bin 0 -> 39388 bytes .../__pycache__/local.cpython-310.pyc | Bin 0 -> 21020 bytes .../__pycache__/security.cpython-310.pyc | Bin 0 -> 5489 bytes .../__pycache__/serving.cpython-310.pyc | Bin 0 -> 30639 bytes .../werkzeug/__pycache__/test.cpython-310.pyc | Bin 0 -> 42990 bytes .../__pycache__/testapp.cpython-310.pyc | Bin 0 -> 6584 bytes .../werkzeug/__pycache__/urls.cpython-310.pyc | Bin 0 -> 5803 bytes .../__pycache__/user_agent.cpython-310.pyc | Bin 0 -> 1841 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 22294 bytes .../werkzeug/__pycache__/wsgi.cpython-310.pyc | Bin 0 -> 19933 bytes venv/Lib/site-packages/werkzeug/_internal.py | 211 + venv/Lib/site-packages/werkzeug/_reloader.py | 471 + .../werkzeug/datastructures/__init__.py | 64 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2209 bytes .../__pycache__/accept.cpython-310.pyc | Bin 0 -> 12480 bytes .../__pycache__/auth.cpython-310.pyc | Bin 0 -> 10489 bytes .../__pycache__/cache_control.cpython-310.pyc | Bin 0 -> 10263 bytes .../__pycache__/csp.cpython-310.pyc | Bin 0 -> 4909 bytes .../__pycache__/etag.cpython-310.pyc | Bin 0 -> 4242 bytes .../__pycache__/file_storage.cpython-310.pyc | Bin 0 -> 6772 bytes .../__pycache__/headers.cpython-310.pyc | Bin 0 -> 23353 bytes .../__pycache__/mixins.cpython-310.pyc | Bin 0 -> 13207 bytes .../__pycache__/range.cpython-310.pyc | Bin 0 -> 7503 bytes .../__pycache__/structures.cpython-310.pyc | Bin 0 -> 44440 bytes .../werkzeug/datastructures/accept.py | 350 + .../werkzeug/datastructures/auth.py | 317 + .../werkzeug/datastructures/cache_control.py | 273 + .../werkzeug/datastructures/csp.py | 100 + .../werkzeug/datastructures/etag.py | 106 + .../werkzeug/datastructures/file_storage.py | 209 + .../werkzeug/datastructures/headers.py | 662 ++ .../werkzeug/datastructures/mixins.py | 317 + .../werkzeug/datastructures/range.py | 214 + .../werkzeug/datastructures/structures.py | 1239 +++ .../site-packages/werkzeug/debug/__init__.py | 565 ++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 14991 bytes .../debug/__pycache__/console.cpython-310.pyc | Bin 0 -> 8327 bytes .../debug/__pycache__/repr.cpython-310.pyc | Bin 0 -> 9022 bytes .../debug/__pycache__/tbtools.cpython-310.pyc | Bin 0 -> 11923 bytes .../site-packages/werkzeug/debug/console.py | 219 + venv/Lib/site-packages/werkzeug/debug/repr.py | 282 + .../werkzeug/debug/shared/ICON_LICENSE.md | 6 + .../werkzeug/debug/shared/console.png | Bin 0 -> 507 bytes .../werkzeug/debug/shared/debugger.js | 344 + .../werkzeug/debug/shared/less.png | Bin 0 -> 191 bytes .../werkzeug/debug/shared/more.png | Bin 0 -> 200 bytes .../werkzeug/debug/shared/style.css | 150 + .../site-packages/werkzeug/debug/tbtools.py | 450 + venv/Lib/site-packages/werkzeug/exceptions.py | 894 ++ venv/Lib/site-packages/werkzeug/formparser.py | 430 + venv/Lib/site-packages/werkzeug/http.py | 1405 +++ venv/Lib/site-packages/werkzeug/local.py | 653 ++ .../werkzeug/middleware/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 166 bytes .../__pycache__/dispatcher.cpython-310.pyc | Bin 0 -> 2815 bytes .../__pycache__/http_proxy.cpython-310.pyc | Bin 0 -> 6910 bytes .../__pycache__/lint.cpython-310.pyc | Bin 0 -> 13059 bytes .../__pycache__/profiler.cpython-310.pyc | Bin 0 -> 5607 bytes .../__pycache__/proxy_fix.cpython-310.pyc | Bin 0 -> 6008 bytes .../__pycache__/shared_data.cpython-310.pyc | Bin 0 -> 9322 bytes .../werkzeug/middleware/dispatcher.py | 81 + .../werkzeug/middleware/http_proxy.py | 236 + .../site-packages/werkzeug/middleware/lint.py | 439 + .../werkzeug/middleware/profiler.py | 155 + .../werkzeug/middleware/proxy_fix.py | 183 + .../werkzeug/middleware/shared_data.py | 283 + venv/Lib/site-packages/werkzeug/py.typed | 0 .../werkzeug/routing/__init__.py | 134 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 4604 bytes .../__pycache__/converters.cpython-310.pyc | Bin 0 -> 9189 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 5656 bytes .../routing/__pycache__/map.cpython-310.pyc | Bin 0 -> 31239 bytes .../__pycache__/matcher.cpython-310.pyc | Bin 0 -> 5136 bytes .../routing/__pycache__/rules.cpython-310.pyc | Bin 0 -> 28061 bytes .../werkzeug/routing/converters.py | 261 + .../werkzeug/routing/exceptions.py | 152 + .../Lib/site-packages/werkzeug/routing/map.py | 951 ++ .../site-packages/werkzeug/routing/matcher.py | 202 + .../site-packages/werkzeug/routing/rules.py | 928 ++ .../site-packages/werkzeug/sansio/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 162 bytes .../sansio/__pycache__/http.cpython-310.pyc | Bin 0 -> 4146 bytes .../__pycache__/multipart.cpython-310.pyc | Bin 0 -> 7476 bytes .../__pycache__/request.cpython-310.pyc | Bin 0 -> 17294 bytes .../__pycache__/response.cpython-310.pyc | Bin 0 -> 24851 bytes .../sansio/__pycache__/utils.cpython-310.pyc | Bin 0 -> 4735 bytes .../Lib/site-packages/werkzeug/sansio/http.py | 170 + .../werkzeug/sansio/multipart.py | 323 + .../site-packages/werkzeug/sansio/request.py | 534 + .../site-packages/werkzeug/sansio/response.py | 763 ++ .../site-packages/werkzeug/sansio/utils.py | 167 + venv/Lib/site-packages/werkzeug/security.py | 166 + venv/Lib/site-packages/werkzeug/serving.py | 1125 +++ venv/Lib/site-packages/werkzeug/test.py | 1464 +++ venv/Lib/site-packages/werkzeug/testapp.py | 194 + venv/Lib/site-packages/werkzeug/urls.py | 203 + venv/Lib/site-packages/werkzeug/user_agent.py | 47 + venv/Lib/site-packages/werkzeug/utils.py | 691 ++ .../werkzeug/wrappers/__init__.py | 3 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 281 bytes .../__pycache__/request.cpython-310.pyc | Bin 0 -> 21761 bytes .../__pycache__/response.cpython-310.pyc | Bin 0 -> 28339 bytes .../werkzeug/wrappers/request.py | 650 ++ .../werkzeug/wrappers/response.py | 831 ++ venv/Lib/site-packages/werkzeug/wsgi.py | 595 ++ venv/Scripts/Activate.ps1 | 420 + venv/Scripts/__pycache__/pwiz.cpython-310.pyc | Bin 0 -> 6939 bytes venv/Scripts/activate | 69 + venv/Scripts/activate.bat | 34 + venv/Scripts/deactivate.bat | 22 + venv/Scripts/flask.exe | Bin 0 -> 106340 bytes venv/Scripts/normalizer.exe | Bin 0 -> 106365 bytes venv/Scripts/pip.exe | Bin 0 -> 106353 bytes venv/Scripts/pip3.10.exe | Bin 0 -> 106353 bytes venv/Scripts/pip3.exe | Bin 0 -> 106353 bytes venv/Scripts/pwiz.py | 228 + venv/Scripts/python.exe | Bin 0 -> 263120 bytes venv/Scripts/pythonw.exe | Bin 0 -> 251856 bytes venv/pyvenv.cfg | 3 + 1998 files changed, 374701 insertions(+) create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 app/__init__.py create mode 100644 app/models.py create mode 100644 app/static/style.css create mode 100644 app/templates/add_book.html create mode 100644 app/templates/index.html create mode 100644 app/views.py create mode 100644 docker-compose.yml create mode 100644 nginx.conf create mode 100644 requirements.txt create mode 100644 venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/LICENSE.txt create mode 100644 venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/METADATA create mode 100644 venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/RECORD create mode 100644 venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/top_level.txt create mode 100644 venv/Lib/site-packages/__pycache__/peewee.cpython-310.pyc create mode 100644 venv/Lib/site-packages/__pycache__/pwiz.cpython-310.pyc create mode 100644 venv/Lib/site-packages/_distutils_hack/__init__.py create mode 100644 venv/Lib/site-packages/_distutils_hack/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/_distutils_hack/__pycache__/override.cpython-310.pyc create mode 100644 venv/Lib/site-packages/_distutils_hack/override.py create mode 100644 venv/Lib/site-packages/blinker-1.9.0.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/blinker-1.9.0.dist-info/LICENSE.txt create mode 100644 venv/Lib/site-packages/blinker-1.9.0.dist-info/METADATA create mode 100644 venv/Lib/site-packages/blinker-1.9.0.dist-info/RECORD create mode 100644 venv/Lib/site-packages/blinker-1.9.0.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/blinker/__init__.py create mode 100644 venv/Lib/site-packages/blinker/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/blinker/__pycache__/_utilities.cpython-310.pyc create mode 100644 venv/Lib/site-packages/blinker/__pycache__/base.cpython-310.pyc create mode 100644 venv/Lib/site-packages/blinker/_utilities.py create mode 100644 venv/Lib/site-packages/blinker/base.py create mode 100644 venv/Lib/site-packages/blinker/py.typed create mode 100644 venv/Lib/site-packages/certifi-2024.8.30.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/certifi-2024.8.30.dist-info/LICENSE create mode 100644 venv/Lib/site-packages/certifi-2024.8.30.dist-info/METADATA create mode 100644 venv/Lib/site-packages/certifi-2024.8.30.dist-info/RECORD create mode 100644 venv/Lib/site-packages/certifi-2024.8.30.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/certifi-2024.8.30.dist-info/top_level.txt create mode 100644 venv/Lib/site-packages/certifi/__init__.py create mode 100644 venv/Lib/site-packages/certifi/__main__.py create mode 100644 venv/Lib/site-packages/certifi/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/certifi/__pycache__/__main__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/certifi/__pycache__/core.cpython-310.pyc create mode 100644 venv/Lib/site-packages/certifi/cacert.pem create mode 100644 venv/Lib/site-packages/certifi/core.py create mode 100644 venv/Lib/site-packages/certifi/py.typed create mode 100644 venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/LICENSE create mode 100644 venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/METADATA create mode 100644 venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/RECORD create mode 100644 venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/entry_points.txt create mode 100644 venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/top_level.txt create mode 100644 venv/Lib/site-packages/charset_normalizer/__init__.py create mode 100644 venv/Lib/site-packages/charset_normalizer/__main__.py create mode 100644 venv/Lib/site-packages/charset_normalizer/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/charset_normalizer/__pycache__/__main__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/charset_normalizer/__pycache__/api.cpython-310.pyc create mode 100644 venv/Lib/site-packages/charset_normalizer/__pycache__/cd.cpython-310.pyc create mode 100644 venv/Lib/site-packages/charset_normalizer/__pycache__/constant.cpython-310.pyc create mode 100644 venv/Lib/site-packages/charset_normalizer/__pycache__/legacy.cpython-310.pyc create mode 100644 venv/Lib/site-packages/charset_normalizer/__pycache__/md.cpython-310.pyc create mode 100644 venv/Lib/site-packages/charset_normalizer/__pycache__/models.cpython-310.pyc create mode 100644 venv/Lib/site-packages/charset_normalizer/__pycache__/utils.cpython-310.pyc create mode 100644 venv/Lib/site-packages/charset_normalizer/__pycache__/version.cpython-310.pyc create mode 100644 venv/Lib/site-packages/charset_normalizer/api.py create mode 100644 venv/Lib/site-packages/charset_normalizer/cd.py create mode 100644 venv/Lib/site-packages/charset_normalizer/cli/__init__.py create mode 100644 venv/Lib/site-packages/charset_normalizer/cli/__main__.py create mode 100644 venv/Lib/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/charset_normalizer/cli/__pycache__/__main__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/charset_normalizer/constant.py create mode 100644 venv/Lib/site-packages/charset_normalizer/legacy.py create mode 100644 venv/Lib/site-packages/charset_normalizer/md.cp310-win_amd64.pyd create mode 100644 venv/Lib/site-packages/charset_normalizer/md.py create mode 100644 venv/Lib/site-packages/charset_normalizer/md__mypyc.cp310-win_amd64.pyd create mode 100644 venv/Lib/site-packages/charset_normalizer/models.py create mode 100644 venv/Lib/site-packages/charset_normalizer/py.typed create mode 100644 venv/Lib/site-packages/charset_normalizer/utils.py create mode 100644 venv/Lib/site-packages/charset_normalizer/version.py create mode 100644 venv/Lib/site-packages/click-8.1.7.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/click-8.1.7.dist-info/LICENSE.rst create mode 100644 venv/Lib/site-packages/click-8.1.7.dist-info/METADATA create mode 100644 venv/Lib/site-packages/click-8.1.7.dist-info/RECORD create mode 100644 venv/Lib/site-packages/click-8.1.7.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/click-8.1.7.dist-info/top_level.txt create mode 100644 venv/Lib/site-packages/click/__init__.py create mode 100644 venv/Lib/site-packages/click/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/click/__pycache__/_compat.cpython-310.pyc create mode 100644 venv/Lib/site-packages/click/__pycache__/_termui_impl.cpython-310.pyc create mode 100644 venv/Lib/site-packages/click/__pycache__/_textwrap.cpython-310.pyc create mode 100644 venv/Lib/site-packages/click/__pycache__/_winconsole.cpython-310.pyc create mode 100644 venv/Lib/site-packages/click/__pycache__/core.cpython-310.pyc create mode 100644 venv/Lib/site-packages/click/__pycache__/decorators.cpython-310.pyc create mode 100644 venv/Lib/site-packages/click/__pycache__/exceptions.cpython-310.pyc create mode 100644 venv/Lib/site-packages/click/__pycache__/formatting.cpython-310.pyc create mode 100644 venv/Lib/site-packages/click/__pycache__/globals.cpython-310.pyc create mode 100644 venv/Lib/site-packages/click/__pycache__/parser.cpython-310.pyc create mode 100644 venv/Lib/site-packages/click/__pycache__/shell_completion.cpython-310.pyc create mode 100644 venv/Lib/site-packages/click/__pycache__/termui.cpython-310.pyc create mode 100644 venv/Lib/site-packages/click/__pycache__/testing.cpython-310.pyc create mode 100644 venv/Lib/site-packages/click/__pycache__/types.cpython-310.pyc create mode 100644 venv/Lib/site-packages/click/__pycache__/utils.cpython-310.pyc create mode 100644 venv/Lib/site-packages/click/_compat.py create mode 100644 venv/Lib/site-packages/click/_termui_impl.py create mode 100644 venv/Lib/site-packages/click/_textwrap.py create mode 100644 venv/Lib/site-packages/click/_winconsole.py create mode 100644 venv/Lib/site-packages/click/core.py create mode 100644 venv/Lib/site-packages/click/decorators.py create mode 100644 venv/Lib/site-packages/click/exceptions.py create mode 100644 venv/Lib/site-packages/click/formatting.py create mode 100644 venv/Lib/site-packages/click/globals.py create mode 100644 venv/Lib/site-packages/click/parser.py create mode 100644 venv/Lib/site-packages/click/py.typed create mode 100644 venv/Lib/site-packages/click/shell_completion.py create mode 100644 venv/Lib/site-packages/click/termui.py create mode 100644 venv/Lib/site-packages/click/testing.py create mode 100644 venv/Lib/site-packages/click/types.py create mode 100644 venv/Lib/site-packages/click/utils.py create mode 100644 venv/Lib/site-packages/colorama-0.4.6.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/colorama-0.4.6.dist-info/METADATA create mode 100644 venv/Lib/site-packages/colorama-0.4.6.dist-info/RECORD create mode 100644 venv/Lib/site-packages/colorama-0.4.6.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/colorama-0.4.6.dist-info/licenses/LICENSE.txt create mode 100644 venv/Lib/site-packages/colorama/__init__.py create mode 100644 venv/Lib/site-packages/colorama/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/colorama/__pycache__/ansi.cpython-310.pyc create mode 100644 venv/Lib/site-packages/colorama/__pycache__/ansitowin32.cpython-310.pyc create mode 100644 venv/Lib/site-packages/colorama/__pycache__/initialise.cpython-310.pyc create mode 100644 venv/Lib/site-packages/colorama/__pycache__/win32.cpython-310.pyc create mode 100644 venv/Lib/site-packages/colorama/__pycache__/winterm.cpython-310.pyc create mode 100644 venv/Lib/site-packages/colorama/ansi.py create mode 100644 venv/Lib/site-packages/colorama/ansitowin32.py create mode 100644 venv/Lib/site-packages/colorama/initialise.py create mode 100644 venv/Lib/site-packages/colorama/tests/__init__.py create mode 100644 venv/Lib/site-packages/colorama/tests/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/colorama/tests/__pycache__/ansi_test.cpython-310.pyc create mode 100644 venv/Lib/site-packages/colorama/tests/__pycache__/ansitowin32_test.cpython-310.pyc create mode 100644 venv/Lib/site-packages/colorama/tests/__pycache__/initialise_test.cpython-310.pyc create mode 100644 venv/Lib/site-packages/colorama/tests/__pycache__/isatty_test.cpython-310.pyc create mode 100644 venv/Lib/site-packages/colorama/tests/__pycache__/utils.cpython-310.pyc create mode 100644 venv/Lib/site-packages/colorama/tests/__pycache__/winterm_test.cpython-310.pyc create mode 100644 venv/Lib/site-packages/colorama/tests/ansi_test.py create mode 100644 venv/Lib/site-packages/colorama/tests/ansitowin32_test.py create mode 100644 venv/Lib/site-packages/colorama/tests/initialise_test.py create mode 100644 venv/Lib/site-packages/colorama/tests/isatty_test.py create mode 100644 venv/Lib/site-packages/colorama/tests/utils.py create mode 100644 venv/Lib/site-packages/colorama/tests/winterm_test.py create mode 100644 venv/Lib/site-packages/colorama/win32.py create mode 100644 venv/Lib/site-packages/colorama/winterm.py create mode 100644 venv/Lib/site-packages/distutils-precedence.pth create mode 100644 venv/Lib/site-packages/flask-3.1.0.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/flask-3.1.0.dist-info/LICENSE.txt create mode 100644 venv/Lib/site-packages/flask-3.1.0.dist-info/METADATA create mode 100644 venv/Lib/site-packages/flask-3.1.0.dist-info/RECORD create mode 100644 venv/Lib/site-packages/flask-3.1.0.dist-info/REQUESTED create mode 100644 venv/Lib/site-packages/flask-3.1.0.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/flask-3.1.0.dist-info/entry_points.txt create mode 100644 venv/Lib/site-packages/flask/__init__.py create mode 100644 venv/Lib/site-packages/flask/__main__.py create mode 100644 venv/Lib/site-packages/flask/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/__pycache__/__main__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/__pycache__/app.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/__pycache__/blueprints.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/__pycache__/cli.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/__pycache__/config.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/__pycache__/ctx.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/__pycache__/debughelpers.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/__pycache__/globals.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/__pycache__/helpers.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/__pycache__/logging.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/__pycache__/sessions.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/__pycache__/signals.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/__pycache__/templating.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/__pycache__/testing.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/__pycache__/typing.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/__pycache__/views.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/__pycache__/wrappers.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/app.py create mode 100644 venv/Lib/site-packages/flask/blueprints.py create mode 100644 venv/Lib/site-packages/flask/cli.py create mode 100644 venv/Lib/site-packages/flask/config.py create mode 100644 venv/Lib/site-packages/flask/ctx.py create mode 100644 venv/Lib/site-packages/flask/debughelpers.py create mode 100644 venv/Lib/site-packages/flask/globals.py create mode 100644 venv/Lib/site-packages/flask/helpers.py create mode 100644 venv/Lib/site-packages/flask/json/__init__.py create mode 100644 venv/Lib/site-packages/flask/json/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/json/__pycache__/provider.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/json/__pycache__/tag.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/json/provider.py create mode 100644 venv/Lib/site-packages/flask/json/tag.py create mode 100644 venv/Lib/site-packages/flask/logging.py create mode 100644 venv/Lib/site-packages/flask/py.typed create mode 100644 venv/Lib/site-packages/flask/sansio/README.md create mode 100644 venv/Lib/site-packages/flask/sansio/__pycache__/app.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/sansio/__pycache__/blueprints.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/sansio/__pycache__/scaffold.cpython-310.pyc create mode 100644 venv/Lib/site-packages/flask/sansio/app.py create mode 100644 venv/Lib/site-packages/flask/sansio/blueprints.py create mode 100644 venv/Lib/site-packages/flask/sansio/scaffold.py create mode 100644 venv/Lib/site-packages/flask/sessions.py create mode 100644 venv/Lib/site-packages/flask/signals.py create mode 100644 venv/Lib/site-packages/flask/templating.py create mode 100644 venv/Lib/site-packages/flask/testing.py create mode 100644 venv/Lib/site-packages/flask/typing.py create mode 100644 venv/Lib/site-packages/flask/views.py create mode 100644 venv/Lib/site-packages/flask/wrappers.py create mode 100644 venv/Lib/site-packages/idna-3.10.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/idna-3.10.dist-info/LICENSE.md create mode 100644 venv/Lib/site-packages/idna-3.10.dist-info/METADATA create mode 100644 venv/Lib/site-packages/idna-3.10.dist-info/RECORD create mode 100644 venv/Lib/site-packages/idna-3.10.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/idna/__init__.py create mode 100644 venv/Lib/site-packages/idna/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/idna/__pycache__/codec.cpython-310.pyc create mode 100644 venv/Lib/site-packages/idna/__pycache__/compat.cpython-310.pyc create mode 100644 venv/Lib/site-packages/idna/__pycache__/core.cpython-310.pyc create mode 100644 venv/Lib/site-packages/idna/__pycache__/idnadata.cpython-310.pyc create mode 100644 venv/Lib/site-packages/idna/__pycache__/intranges.cpython-310.pyc create mode 100644 venv/Lib/site-packages/idna/__pycache__/package_data.cpython-310.pyc create mode 100644 venv/Lib/site-packages/idna/__pycache__/uts46data.cpython-310.pyc create mode 100644 venv/Lib/site-packages/idna/codec.py create mode 100644 venv/Lib/site-packages/idna/compat.py create mode 100644 venv/Lib/site-packages/idna/core.py create mode 100644 venv/Lib/site-packages/idna/idnadata.py create mode 100644 venv/Lib/site-packages/idna/intranges.py create mode 100644 venv/Lib/site-packages/idna/package_data.py create mode 100644 venv/Lib/site-packages/idna/py.typed create mode 100644 venv/Lib/site-packages/idna/uts46data.py create mode 100644 venv/Lib/site-packages/itsdangerous-2.2.0.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/itsdangerous-2.2.0.dist-info/LICENSE.txt create mode 100644 venv/Lib/site-packages/itsdangerous-2.2.0.dist-info/METADATA create mode 100644 venv/Lib/site-packages/itsdangerous-2.2.0.dist-info/RECORD create mode 100644 venv/Lib/site-packages/itsdangerous-2.2.0.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/itsdangerous/__init__.py create mode 100644 venv/Lib/site-packages/itsdangerous/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/itsdangerous/__pycache__/_json.cpython-310.pyc create mode 100644 venv/Lib/site-packages/itsdangerous/__pycache__/encoding.cpython-310.pyc create mode 100644 venv/Lib/site-packages/itsdangerous/__pycache__/exc.cpython-310.pyc create mode 100644 venv/Lib/site-packages/itsdangerous/__pycache__/serializer.cpython-310.pyc create mode 100644 venv/Lib/site-packages/itsdangerous/__pycache__/signer.cpython-310.pyc create mode 100644 venv/Lib/site-packages/itsdangerous/__pycache__/timed.cpython-310.pyc create mode 100644 venv/Lib/site-packages/itsdangerous/__pycache__/url_safe.cpython-310.pyc create mode 100644 venv/Lib/site-packages/itsdangerous/_json.py create mode 100644 venv/Lib/site-packages/itsdangerous/encoding.py create mode 100644 venv/Lib/site-packages/itsdangerous/exc.py create mode 100644 venv/Lib/site-packages/itsdangerous/py.typed create mode 100644 venv/Lib/site-packages/itsdangerous/serializer.py create mode 100644 venv/Lib/site-packages/itsdangerous/signer.py create mode 100644 venv/Lib/site-packages/itsdangerous/timed.py create mode 100644 venv/Lib/site-packages/itsdangerous/url_safe.py create mode 100644 venv/Lib/site-packages/jinja2-3.1.4.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/jinja2-3.1.4.dist-info/LICENSE.txt create mode 100644 venv/Lib/site-packages/jinja2-3.1.4.dist-info/METADATA create mode 100644 venv/Lib/site-packages/jinja2-3.1.4.dist-info/RECORD create mode 100644 venv/Lib/site-packages/jinja2-3.1.4.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/jinja2-3.1.4.dist-info/entry_points.txt create mode 100644 venv/Lib/site-packages/jinja2/__init__.py create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/_identifier.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/async_utils.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/bccache.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/compiler.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/constants.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/debug.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/defaults.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/environment.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/exceptions.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/ext.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/filters.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/idtracking.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/lexer.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/loaders.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/meta.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/nativetypes.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/nodes.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/optimizer.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/parser.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/runtime.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/sandbox.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/tests.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/utils.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/__pycache__/visitor.cpython-310.pyc create mode 100644 venv/Lib/site-packages/jinja2/_identifier.py create mode 100644 venv/Lib/site-packages/jinja2/async_utils.py create mode 100644 venv/Lib/site-packages/jinja2/bccache.py create mode 100644 venv/Lib/site-packages/jinja2/compiler.py create mode 100644 venv/Lib/site-packages/jinja2/constants.py create mode 100644 venv/Lib/site-packages/jinja2/debug.py create mode 100644 venv/Lib/site-packages/jinja2/defaults.py create mode 100644 venv/Lib/site-packages/jinja2/environment.py create mode 100644 venv/Lib/site-packages/jinja2/exceptions.py create mode 100644 venv/Lib/site-packages/jinja2/ext.py create mode 100644 venv/Lib/site-packages/jinja2/filters.py create mode 100644 venv/Lib/site-packages/jinja2/idtracking.py create mode 100644 venv/Lib/site-packages/jinja2/lexer.py create mode 100644 venv/Lib/site-packages/jinja2/loaders.py create mode 100644 venv/Lib/site-packages/jinja2/meta.py create mode 100644 venv/Lib/site-packages/jinja2/nativetypes.py create mode 100644 venv/Lib/site-packages/jinja2/nodes.py create mode 100644 venv/Lib/site-packages/jinja2/optimizer.py create mode 100644 venv/Lib/site-packages/jinja2/parser.py create mode 100644 venv/Lib/site-packages/jinja2/py.typed create mode 100644 venv/Lib/site-packages/jinja2/runtime.py create mode 100644 venv/Lib/site-packages/jinja2/sandbox.py create mode 100644 venv/Lib/site-packages/jinja2/tests.py create mode 100644 venv/Lib/site-packages/jinja2/utils.py create mode 100644 venv/Lib/site-packages/jinja2/visitor.py create mode 100644 venv/Lib/site-packages/markupsafe/__init__.py create mode 100644 venv/Lib/site-packages/markupsafe/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/markupsafe/__pycache__/_native.cpython-310.pyc create mode 100644 venv/Lib/site-packages/markupsafe/_native.py create mode 100644 venv/Lib/site-packages/markupsafe/_speedups.c create mode 100644 venv/Lib/site-packages/markupsafe/_speedups.cp310-win_amd64.pyd create mode 100644 venv/Lib/site-packages/markupsafe/_speedups.pyi create mode 100644 venv/Lib/site-packages/markupsafe/py.typed create mode 100644 venv/Lib/site-packages/peewee-3.17.8.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/peewee-3.17.8.dist-info/LICENSE create mode 100644 venv/Lib/site-packages/peewee-3.17.8.dist-info/METADATA create mode 100644 venv/Lib/site-packages/peewee-3.17.8.dist-info/RECORD create mode 100644 venv/Lib/site-packages/peewee-3.17.8.dist-info/REQUESTED create mode 100644 venv/Lib/site-packages/peewee-3.17.8.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/peewee-3.17.8.dist-info/top_level.txt create mode 100644 venv/Lib/site-packages/peewee.py create mode 100644 venv/Lib/site-packages/pip-22.0.4.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/pip-22.0.4.dist-info/LICENSE.txt create mode 100644 venv/Lib/site-packages/pip-22.0.4.dist-info/METADATA create mode 100644 venv/Lib/site-packages/pip-22.0.4.dist-info/RECORD create mode 100644 venv/Lib/site-packages/pip-22.0.4.dist-info/REQUESTED create mode 100644 venv/Lib/site-packages/pip-22.0.4.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/pip-22.0.4.dist-info/entry_points.txt create mode 100644 venv/Lib/site-packages/pip-22.0.4.dist-info/top_level.txt create mode 100644 venv/Lib/site-packages/pip/__init__.py create mode 100644 venv/Lib/site-packages/pip/__main__.py create mode 100644 venv/Lib/site-packages/pip/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/__pycache__/__main__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/__pycache__/build_env.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/__pycache__/cache.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/__pycache__/configuration.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/__pycache__/exceptions.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/__pycache__/main.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/__pycache__/pyproject.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/build_env.py create mode 100644 venv/Lib/site-packages/pip/_internal/cache.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/cli/__pycache__/main.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/cli/__pycache__/parser.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/cli/autocompletion.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/base_command.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/cmdoptions.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/command_context.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/main.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/main_parser.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/parser.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/progress_bars.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/req_command.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/spinners.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/status_codes.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/commands/__pycache__/cache.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/commands/__pycache__/check.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/commands/__pycache__/completion.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/commands/__pycache__/debug.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/commands/__pycache__/download.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/commands/__pycache__/hash.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/commands/__pycache__/help.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/commands/__pycache__/index.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/commands/__pycache__/install.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/commands/__pycache__/list.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/commands/__pycache__/search.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/commands/__pycache__/show.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/commands/cache.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/check.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/completion.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/configuration.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/debug.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/download.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/freeze.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/hash.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/help.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/index.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/install.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/list.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/search.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/show.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/uninstall.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/wheel.py create mode 100644 venv/Lib/site-packages/pip/_internal/configuration.py create mode 100644 venv/Lib/site-packages/pip/_internal/distributions/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/distributions/__pycache__/base.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/distributions/base.py create mode 100644 venv/Lib/site-packages/pip/_internal/distributions/installed.py create mode 100644 venv/Lib/site-packages/pip/_internal/distributions/sdist.py create mode 100644 venv/Lib/site-packages/pip/_internal/distributions/wheel.py create mode 100644 venv/Lib/site-packages/pip/_internal/exceptions.py create mode 100644 venv/Lib/site-packages/pip/_internal/index/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/index/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/index/__pycache__/collector.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/index/__pycache__/sources.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/index/collector.py create mode 100644 venv/Lib/site-packages/pip/_internal/index/package_finder.py create mode 100644 venv/Lib/site-packages/pip/_internal/index/sources.py create mode 100644 venv/Lib/site-packages/pip/_internal/locations/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/locations/__pycache__/_distutils.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/locations/__pycache__/base.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/locations/_distutils.py create mode 100644 venv/Lib/site-packages/pip/_internal/locations/_sysconfig.py create mode 100644 venv/Lib/site-packages/pip/_internal/locations/base.py create mode 100644 venv/Lib/site-packages/pip/_internal/main.py create mode 100644 venv/Lib/site-packages/pip/_internal/metadata/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/metadata/__pycache__/base.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/metadata/base.py create mode 100644 venv/Lib/site-packages/pip/_internal/metadata/pkg_resources.py create mode 100644 venv/Lib/site-packages/pip/_internal/models/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/models/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/models/__pycache__/candidate.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/models/__pycache__/format_control.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/models/__pycache__/index.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/models/__pycache__/link.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/models/__pycache__/scheme.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/models/__pycache__/target_python.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/models/__pycache__/wheel.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/models/candidate.py create mode 100644 venv/Lib/site-packages/pip/_internal/models/direct_url.py create mode 100644 venv/Lib/site-packages/pip/_internal/models/format_control.py create mode 100644 venv/Lib/site-packages/pip/_internal/models/index.py create mode 100644 venv/Lib/site-packages/pip/_internal/models/link.py create mode 100644 venv/Lib/site-packages/pip/_internal/models/scheme.py create mode 100644 venv/Lib/site-packages/pip/_internal/models/search_scope.py create mode 100644 venv/Lib/site-packages/pip/_internal/models/selection_prefs.py create mode 100644 venv/Lib/site-packages/pip/_internal/models/target_python.py create mode 100644 venv/Lib/site-packages/pip/_internal/models/wheel.py create mode 100644 venv/Lib/site-packages/pip/_internal/network/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/network/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/network/__pycache__/auth.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/network/__pycache__/cache.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/network/__pycache__/download.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/network/__pycache__/session.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/network/__pycache__/utils.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/network/auth.py create mode 100644 venv/Lib/site-packages/pip/_internal/network/cache.py create mode 100644 venv/Lib/site-packages/pip/_internal/network/download.py create mode 100644 venv/Lib/site-packages/pip/_internal/network/lazy_wheel.py create mode 100644 venv/Lib/site-packages/pip/_internal/network/session.py create mode 100644 venv/Lib/site-packages/pip/_internal/network/utils.py create mode 100644 venv/Lib/site-packages/pip/_internal/network/xmlrpc.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/operations/__pycache__/check.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/operations/build/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/operations/build/metadata.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/build/metadata_editable.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/build/wheel.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/build/wheel_editable.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/check.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/freeze.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/install/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/operations/install/__pycache__/legacy.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/install/legacy.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/install/wheel.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/prepare.py create mode 100644 venv/Lib/site-packages/pip/_internal/pyproject.py create mode 100644 venv/Lib/site-packages/pip/_internal/req/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/req/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/req/__pycache__/constructors.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/req/__pycache__/req_file.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/req/__pycache__/req_install.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/req/__pycache__/req_set.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/req/__pycache__/req_tracker.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/req/constructors.py create mode 100644 venv/Lib/site-packages/pip/_internal/req/req_file.py create mode 100644 venv/Lib/site-packages/pip/_internal/req/req_install.py create mode 100644 venv/Lib/site-packages/pip/_internal/req/req_set.py create mode 100644 venv/Lib/site-packages/pip/_internal/req/req_tracker.py create mode 100644 venv/Lib/site-packages/pip/_internal/req/req_uninstall.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/__pycache__/base.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/base.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/legacy/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py create mode 100644 venv/Lib/site-packages/pip/_internal/self_outdated_check.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/_log.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/compat.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/distutils_args.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/inject_securetransport.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/logging.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/misc.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/models.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/urls.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/utils/_log.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/appdirs.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/compat.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/compatibility_tags.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/datetime.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/deprecation.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/distutils_args.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/egg_link.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/encoding.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/entrypoints.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/filesystem.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/filetypes.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/glibc.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/hashes.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/inject_securetransport.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/logging.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/misc.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/models.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/packaging.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/setuptools_build.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/subprocess.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/temp_dir.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/unpacking.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/urls.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/virtualenv.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/wheel.py create mode 100644 venv/Lib/site-packages/pip/_internal/vcs/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/vcs/__pycache__/git.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_internal/vcs/bazaar.py create mode 100644 venv/Lib/site-packages/pip/_internal/vcs/git.py create mode 100644 venv/Lib/site-packages/pip/_internal/vcs/mercurial.py create mode 100644 venv/Lib/site-packages/pip/_internal/vcs/subversion.py create mode 100644 venv/Lib/site-packages/pip/_internal/vcs/versioncontrol.py create mode 100644 venv/Lib/site-packages/pip/_internal/wheel_builder.py create mode 100644 venv/Lib/site-packages/pip/_vendor/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/__pycache__/distro.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/__pycache__/six.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/__pycache__/typing_extensions.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/compat.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/cache.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/compat.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/controller.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py create mode 100644 venv/Lib/site-packages/pip/_vendor/certifi/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/certifi/__main__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/certifi/cacert.pem create mode 100644 venv/Lib/site-packages/pip/_vendor/certifi/core.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/compat.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/big5freq.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/big5prober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/chardistribution.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/charsetprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/cli/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/compat.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/cp949prober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/enums.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/escprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/escsm.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/euckrprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/euctwprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/jisfreq.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/jpcntx.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/langrussianmodel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/latin1prober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/mbcssm.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/metadata/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/metadata/__pycache__/languages.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/metadata/languages.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/sjisprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/universaldetector.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/utf8prober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/version.py create mode 100644 venv/Lib/site-packages/pip/_vendor/colorama/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/colorama/ansi.py create mode 100644 venv/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py create mode 100644 venv/Lib/site-packages/pip/_vendor/colorama/initialise.py create mode 100644 venv/Lib/site-packages/pip/_vendor/colorama/win32.py create mode 100644 venv/Lib/site-packages/pip/_vendor/colorama/winterm.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/_backport/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/misc.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/shutil.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/sysconfig.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/tarfile.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/_backport/misc.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/_backport/shutil.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/_backport/tarfile.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/compat.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/database.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/index.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/locators.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/manifest.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/markers.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/metadata.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/resources.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/scripts.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/t32.exe create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/t64-arm.exe create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/t64.exe create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/util.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/version.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/w32.exe create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/w64-arm.exe create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/w64.exe create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/wheel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distro.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/_ihatexml.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/_inputstream.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/_tokenizer.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/_utils.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/constants.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/html5parser.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/serializer.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/_ihatexml.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/_inputstream.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/_tokenizer.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/_trie/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/_trie/__pycache__/_base.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/_trie/__pycache__/py.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/_trie/_base.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/_trie/py.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/_utils.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/constants.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/alphabeticalattributes.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/base.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/inject_meta_charset.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/lint.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/optionaltags.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/sanitizer.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/whitespace.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/base.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/lint.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/optionaltags.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/sanitizer.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/whitespace.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/html5parser.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/serializer.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/genshi.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/sax.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/sax.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/base.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/dom.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/etree.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/etree_lxml.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/base.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/dom.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/etree.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/base.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/dom.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/etree.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/etree_lxml.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/genshi.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/base.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/dom.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/etree.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/genshi.py create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/__pycache__/core.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/codec.py create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/compat.py create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/core.py create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/idnadata.py create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/intranges.py create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/package_data.py create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/uts46data.py create mode 100644 venv/Lib/site-packages/pip/_vendor/msgpack/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/msgpack/__pycache__/_version.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/msgpack/_version.py create mode 100644 venv/Lib/site-packages/pip/_vendor/msgpack/exceptions.py create mode 100644 venv/Lib/site-packages/pip/_vendor/msgpack/ext.py create mode 100644 venv/Lib/site-packages/pip/_vendor/msgpack/fallback.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/__about__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/_manylinux.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/_musllinux.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/_structures.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/markers.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/requirements.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/specifiers.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/tags.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/utils.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/version.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/build.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/check.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/colorlog.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/compat.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/dirtools.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/envbuild.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/meta.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/wrappers.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/build.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/check.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/colorlog.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/compat.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/dirtools.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/envbuild.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/in_process/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/in_process/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/in_process/__pycache__/_in_process.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/in_process/_in_process.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/meta.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/wrappers.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pkg_resources/__pycache__/py31compat.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pkg_resources/py31compat.py create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/__main__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/__main__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/android.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/unix.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/android.py create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/api.py create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/macos.py create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/unix.py create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/version.py create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/windows.py create mode 100644 venv/Lib/site-packages/pip/_vendor/progress/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/progress/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/progress/__pycache__/bar.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/progress/__pycache__/colors.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/progress/__pycache__/counter.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/progress/__pycache__/spinner.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/progress/bar.py create mode 100644 venv/Lib/site-packages/pip/_vendor/progress/colors.py create mode 100644 venv/Lib/site-packages/pip/_vendor/progress/counter.py create mode 100644 venv/Lib/site-packages/pip/_vendor/progress/spinner.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/__main__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/__pycache__/__main__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/__pycache__/cmdline.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/__pycache__/console.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/__pycache__/filter.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/__pycache__/plugin.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/__pycache__/regexopt.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/__pycache__/scanner.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/__pycache__/style.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/__pycache__/unistring.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/cmdline.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/console.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/filter.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatter.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/groff.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/html.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/irc.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/latex.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/svg.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/_mapping.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/bbcode.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/groff.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/html.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/img.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/irc.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/latex.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/other.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/rtf.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/svg.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/terminal.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/formatters/terminal256.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/lexer.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/lexers/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/lexers/__pycache__/python.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/lexers/_mapping.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/lexers/python.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/modeline.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/plugin.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/regexopt.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/scanner.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/sphinxext.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/style.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/styles/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/token.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/unistring.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pygments/util.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/actions.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/common.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/core.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/exceptions.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/helpers.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/results.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/testing.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/unicode.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/util.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing/actions.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing/common.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing/core.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing/diagram/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing/exceptions.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing/helpers.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing/results.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing/testing.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing/unicode.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing/util.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/__pycache__/api.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/__pycache__/help.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/__pycache__/models.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/__version__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/_internal_utils.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/adapters.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/api.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/auth.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/certs.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/compat.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/cookies.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/exceptions.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/help.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/hooks.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/models.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/sessions.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/status_codes.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/structures.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/utils.py create mode 100644 venv/Lib/site-packages/pip/_vendor/resolvelib/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/resolvelib/compat/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py create mode 100644 venv/Lib/site-packages/pip/_vendor/resolvelib/providers.py create mode 100644 venv/Lib/site-packages/pip/_vendor/resolvelib/reporters.py create mode 100644 venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers.py create mode 100644 venv/Lib/site-packages/pip/_vendor/resolvelib/structs.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__main__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/__main__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/_cell_widths.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/_emoji_replace.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/_inspect.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/_loop.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/_lru_cache.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/_stack.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/_timer.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/_wrap.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/abc.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/align.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/bar.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/box.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/color.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/color_triplet.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/columns.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/console.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/constrain.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/control.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/default_styles.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/diagnose.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/emoji.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/filesize.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/json.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/jupyter.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/live.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/live_render.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/logging.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/measure.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/pager.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/palette.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/panel.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/pretty.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/progress_bar.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/protocol.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/region.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/scope.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/screen.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/spinner.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/status.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/style.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/styled.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/syntax.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/table.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/tabulate.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/text.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/theme.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/themes.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/traceback.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/__pycache__/tree.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/_cell_widths.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/_emoji_codes.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/_emoji_replace.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/_extension.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/_inspect.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/_log_render.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/_loop.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/_lru_cache.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/_palettes.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/_pick.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/_ratio.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/_spinners.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/_stack.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/_timer.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/_windows.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/_wrap.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/abc.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/align.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/ansi.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/bar.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/box.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/cells.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/color.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/color_triplet.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/columns.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/console.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/constrain.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/containers.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/control.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/default_styles.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/diagnose.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/emoji.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/errors.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/file_proxy.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/filesize.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/highlighter.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/json.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/jupyter.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/layout.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/live.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/live_render.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/logging.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/markup.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/measure.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/padding.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/pager.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/palette.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/panel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/pretty.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/progress.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/progress_bar.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/prompt.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/protocol.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/region.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/repr.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/rule.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/scope.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/screen.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/segment.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/spinner.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/status.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/style.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/styled.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/syntax.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/table.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/tabulate.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/terminal_theme.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/text.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/theme.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/themes.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/traceback.py create mode 100644 venv/Lib/site-packages/pip/_vendor/rich/tree.py create mode 100644 venv/Lib/site-packages/pip/_vendor/six.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/__pycache__/_asyncio.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/__pycache__/_utils.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/__pycache__/after.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/__pycache__/before.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/__pycache__/before_sleep.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/__pycache__/nap.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/__pycache__/retry.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/__pycache__/stop.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/__pycache__/wait.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/_asyncio.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/_utils.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/after.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/before.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/before_sleep.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/nap.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/retry.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/stop.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/tornadoweb.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/wait.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tomli/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/tomli/_parser.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tomli/_re.py create mode 100644 venv/Lib/site-packages/pip/_vendor/typing_extensions.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/_collections.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/_version.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/connection.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/appengine.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/exceptions.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/fields.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/filepost.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/packages/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/packages/six.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/request.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/response.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/connection.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/proxy.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/queue.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/request.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/response.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/retry.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/ssltransport.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/timeout.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/url.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/wait.py create mode 100644 venv/Lib/site-packages/pip/_vendor/vendor.txt create mode 100644 venv/Lib/site-packages/pip/_vendor/webencodings/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pip/_vendor/webencodings/labels.py create mode 100644 venv/Lib/site-packages/pip/_vendor/webencodings/mklabels.py create mode 100644 venv/Lib/site-packages/pip/_vendor/webencodings/tests.py create mode 100644 venv/Lib/site-packages/pip/_vendor/webencodings/x_user_defined.py create mode 100644 venv/Lib/site-packages/pip/py.typed create mode 100644 venv/Lib/site-packages/pkg_resources/__init__.py create mode 100644 venv/Lib/site-packages/pkg_resources/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/__init__.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/appdirs.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/__about__.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/__init__.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/_typing.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/tags.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/_compat.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/_structures.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/_typing.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/markers.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/requirements.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/specifiers.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/tags.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/utils.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/version.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/pyparsing.py create mode 100644 venv/Lib/site-packages/pkg_resources/extern/__init__.py create mode 100644 venv/Lib/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pkg_resources/tests/data/my-test-package-source/__pycache__/setup.cpython-310.pyc create mode 100644 venv/Lib/site-packages/pkg_resources/tests/data/my-test-package-source/setup.py create mode 100644 venv/Lib/site-packages/playhouse/__init__.py create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/apsw_ext.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/cockroachdb.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/dataset.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/db_url.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/fields.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/flask_utils.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/hybrid.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/kv.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/migrate.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/mysql_ext.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/pool.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/postgres_ext.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/psycopg3_ext.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/reflection.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/shortcuts.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/signals.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/sqlcipher_ext.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/sqlite_changelog.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/sqlite_ext.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/sqlite_udf.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/sqliteq.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/__pycache__/test_utils.cpython-310.pyc create mode 100644 venv/Lib/site-packages/playhouse/apsw_ext.py create mode 100644 venv/Lib/site-packages/playhouse/cockroachdb.py create mode 100644 venv/Lib/site-packages/playhouse/dataset.py create mode 100644 venv/Lib/site-packages/playhouse/db_url.py create mode 100644 venv/Lib/site-packages/playhouse/fields.py create mode 100644 venv/Lib/site-packages/playhouse/flask_utils.py create mode 100644 venv/Lib/site-packages/playhouse/hybrid.py create mode 100644 venv/Lib/site-packages/playhouse/kv.py create mode 100644 venv/Lib/site-packages/playhouse/migrate.py create mode 100644 venv/Lib/site-packages/playhouse/mysql_ext.py create mode 100644 venv/Lib/site-packages/playhouse/pool.py create mode 100644 venv/Lib/site-packages/playhouse/postgres_ext.py create mode 100644 venv/Lib/site-packages/playhouse/psycopg3_ext.py create mode 100644 venv/Lib/site-packages/playhouse/reflection.py create mode 100644 venv/Lib/site-packages/playhouse/shortcuts.py create mode 100644 venv/Lib/site-packages/playhouse/signals.py create mode 100644 venv/Lib/site-packages/playhouse/sqlcipher_ext.py create mode 100644 venv/Lib/site-packages/playhouse/sqlite_changelog.py create mode 100644 venv/Lib/site-packages/playhouse/sqlite_ext.py create mode 100644 venv/Lib/site-packages/playhouse/sqlite_udf.py create mode 100644 venv/Lib/site-packages/playhouse/sqliteq.py create mode 100644 venv/Lib/site-packages/playhouse/test_utils.py create mode 100644 venv/Lib/site-packages/psycopg2-2.9.10.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/psycopg2-2.9.10.dist-info/LICENSE create mode 100644 venv/Lib/site-packages/psycopg2-2.9.10.dist-info/METADATA create mode 100644 venv/Lib/site-packages/psycopg2-2.9.10.dist-info/RECORD create mode 100644 venv/Lib/site-packages/psycopg2-2.9.10.dist-info/REQUESTED create mode 100644 venv/Lib/site-packages/psycopg2-2.9.10.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/psycopg2-2.9.10.dist-info/top_level.txt create mode 100644 venv/Lib/site-packages/psycopg2/__init__.py create mode 100644 venv/Lib/site-packages/psycopg2/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/psycopg2/__pycache__/_ipaddress.cpython-310.pyc create mode 100644 venv/Lib/site-packages/psycopg2/__pycache__/_json.cpython-310.pyc create mode 100644 venv/Lib/site-packages/psycopg2/__pycache__/_range.cpython-310.pyc create mode 100644 venv/Lib/site-packages/psycopg2/__pycache__/errorcodes.cpython-310.pyc create mode 100644 venv/Lib/site-packages/psycopg2/__pycache__/errors.cpython-310.pyc create mode 100644 venv/Lib/site-packages/psycopg2/__pycache__/extensions.cpython-310.pyc create mode 100644 venv/Lib/site-packages/psycopg2/__pycache__/extras.cpython-310.pyc create mode 100644 venv/Lib/site-packages/psycopg2/__pycache__/pool.cpython-310.pyc create mode 100644 venv/Lib/site-packages/psycopg2/__pycache__/sql.cpython-310.pyc create mode 100644 venv/Lib/site-packages/psycopg2/__pycache__/tz.cpython-310.pyc create mode 100644 venv/Lib/site-packages/psycopg2/_ipaddress.py create mode 100644 venv/Lib/site-packages/psycopg2/_json.py create mode 100644 venv/Lib/site-packages/psycopg2/_psycopg.cp310-win_amd64.pyd create mode 100644 venv/Lib/site-packages/psycopg2/_range.py create mode 100644 venv/Lib/site-packages/psycopg2/errorcodes.py create mode 100644 venv/Lib/site-packages/psycopg2/errors.py create mode 100644 venv/Lib/site-packages/psycopg2/extensions.py create mode 100644 venv/Lib/site-packages/psycopg2/extras.py create mode 100644 venv/Lib/site-packages/psycopg2/pool.py create mode 100644 venv/Lib/site-packages/psycopg2/sql.py create mode 100644 venv/Lib/site-packages/psycopg2/tz.py create mode 100644 venv/Lib/site-packages/pwiz.py create mode 100644 venv/Lib/site-packages/requests-2.32.3.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/requests-2.32.3.dist-info/LICENSE create mode 100644 venv/Lib/site-packages/requests-2.32.3.dist-info/METADATA create mode 100644 venv/Lib/site-packages/requests-2.32.3.dist-info/RECORD create mode 100644 venv/Lib/site-packages/requests-2.32.3.dist-info/REQUESTED create mode 100644 venv/Lib/site-packages/requests-2.32.3.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/requests-2.32.3.dist-info/top_level.txt create mode 100644 venv/Lib/site-packages/requests/__init__.py create mode 100644 venv/Lib/site-packages/requests/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/requests/__pycache__/__version__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/requests/__pycache__/_internal_utils.cpython-310.pyc create mode 100644 venv/Lib/site-packages/requests/__pycache__/adapters.cpython-310.pyc create mode 100644 venv/Lib/site-packages/requests/__pycache__/api.cpython-310.pyc create mode 100644 venv/Lib/site-packages/requests/__pycache__/auth.cpython-310.pyc create mode 100644 venv/Lib/site-packages/requests/__pycache__/certs.cpython-310.pyc create mode 100644 venv/Lib/site-packages/requests/__pycache__/compat.cpython-310.pyc create mode 100644 venv/Lib/site-packages/requests/__pycache__/cookies.cpython-310.pyc create mode 100644 venv/Lib/site-packages/requests/__pycache__/exceptions.cpython-310.pyc create mode 100644 venv/Lib/site-packages/requests/__pycache__/help.cpython-310.pyc create mode 100644 venv/Lib/site-packages/requests/__pycache__/hooks.cpython-310.pyc create mode 100644 venv/Lib/site-packages/requests/__pycache__/models.cpython-310.pyc create mode 100644 venv/Lib/site-packages/requests/__pycache__/packages.cpython-310.pyc create mode 100644 venv/Lib/site-packages/requests/__pycache__/sessions.cpython-310.pyc create mode 100644 venv/Lib/site-packages/requests/__pycache__/status_codes.cpython-310.pyc create mode 100644 venv/Lib/site-packages/requests/__pycache__/structures.cpython-310.pyc create mode 100644 venv/Lib/site-packages/requests/__pycache__/utils.cpython-310.pyc create mode 100644 venv/Lib/site-packages/requests/__version__.py create mode 100644 venv/Lib/site-packages/requests/_internal_utils.py create mode 100644 venv/Lib/site-packages/requests/adapters.py create mode 100644 venv/Lib/site-packages/requests/api.py create mode 100644 venv/Lib/site-packages/requests/auth.py create mode 100644 venv/Lib/site-packages/requests/certs.py create mode 100644 venv/Lib/site-packages/requests/compat.py create mode 100644 venv/Lib/site-packages/requests/cookies.py create mode 100644 venv/Lib/site-packages/requests/exceptions.py create mode 100644 venv/Lib/site-packages/requests/help.py create mode 100644 venv/Lib/site-packages/requests/hooks.py create mode 100644 venv/Lib/site-packages/requests/models.py create mode 100644 venv/Lib/site-packages/requests/packages.py create mode 100644 venv/Lib/site-packages/requests/sessions.py create mode 100644 venv/Lib/site-packages/requests/status_codes.py create mode 100644 venv/Lib/site-packages/requests/structures.py create mode 100644 venv/Lib/site-packages/requests/utils.py create mode 100644 venv/Lib/site-packages/setuptools-58.1.0.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/setuptools-58.1.0.dist-info/LICENSE create mode 100644 venv/Lib/site-packages/setuptools-58.1.0.dist-info/METADATA create mode 100644 venv/Lib/site-packages/setuptools-58.1.0.dist-info/RECORD create mode 100644 venv/Lib/site-packages/setuptools-58.1.0.dist-info/REQUESTED create mode 100644 venv/Lib/site-packages/setuptools-58.1.0.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/setuptools-58.1.0.dist-info/entry_points.txt create mode 100644 venv/Lib/site-packages/setuptools-58.1.0.dist-info/top_level.txt create mode 100644 venv/Lib/site-packages/setuptools/__init__.py create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/_deprecation_warning.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/_imp.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/archive_util.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/build_meta.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/config.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/dep_util.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/depends.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/dist.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/errors.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/extension.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/glob.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/installer.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/launch.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/monkey.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/msvc.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/namespaces.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/package_index.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/py34compat.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/sandbox.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/unicode_utils.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/version.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/wheel.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/__pycache__/windows_support.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_deprecation_warning.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__init__.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/_msvccompiler.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/archive_util.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/bcppcompiler.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/ccompiler.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/cmd.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/config.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/core.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/cygwinccompiler.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/debug.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/dep_util.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/dir_util.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/dist.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/errors.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/extension.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/fancy_getopt.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/file_util.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/filelist.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/log.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/msvc9compiler.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/msvccompiler.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/py35compat.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/py38compat.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/spawn.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/sysconfig.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/text_file.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/unixccompiler.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/util.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/version.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__pycache__/versionpredicate.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/_msvccompiler.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/archive_util.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/bcppcompiler.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/ccompiler.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/cmd.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__init__.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/bdist.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/bdist_dumb.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/bdist_msi.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/bdist_rpm.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/bdist_wininst.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/build.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/build_clib.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/build_ext.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/build_py.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/build_scripts.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/check.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/clean.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/config.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/install.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/install_data.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/install_egg_info.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/install_headers.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/install_lib.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/install_scripts.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/py37compat.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/register.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/sdist.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/upload.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/bdist.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/bdist_dumb.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/bdist_msi.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/bdist_rpm.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/bdist_wininst.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/build.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/build_clib.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/build_ext.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/build_py.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/build_scripts.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/check.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/clean.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/config.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/install.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/install_data.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/install_egg_info.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/install_headers.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/install_lib.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/install_scripts.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/py37compat.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/register.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/sdist.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/upload.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/config.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/core.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/cygwinccompiler.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/debug.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/dep_util.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/dir_util.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/dist.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/errors.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/extension.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/fancy_getopt.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/file_util.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/filelist.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/log.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/msvc9compiler.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/msvccompiler.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/py35compat.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/py38compat.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/spawn.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/sysconfig.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/text_file.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/unixccompiler.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/util.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/version.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/versionpredicate.py create mode 100644 venv/Lib/site-packages/setuptools/_imp.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/__init__.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_vendor/__pycache__/ordered_set.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_vendor/__pycache__/pyparsing.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/more_itertools/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_vendor/more_itertools/__pycache__/more.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_vendor/more_itertools/__pycache__/recipes.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_vendor/more_itertools/more.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/ordered_set.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/__about__.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/__init__.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/__about__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/_compat.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/_structures.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/_typing.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/markers.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/requirements.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/tags.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/utils.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/version.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/_compat.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/_structures.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/_typing.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/markers.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/requirements.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/tags.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/utils.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/version.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/pyparsing.py create mode 100644 venv/Lib/site-packages/setuptools/archive_util.py create mode 100644 venv/Lib/site-packages/setuptools/build_meta.py create mode 100644 venv/Lib/site-packages/setuptools/cli-32.exe create mode 100644 venv/Lib/site-packages/setuptools/cli-64.exe create mode 100644 venv/Lib/site-packages/setuptools/cli.exe create mode 100644 venv/Lib/site-packages/setuptools/command/__init__.py create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/alias.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/build_clib.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/build_ext.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/build_py.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/develop.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/dist_info.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/easy_install.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/egg_info.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/install.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/install_lib.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/install_scripts.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/py36compat.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/register.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/rotate.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/saveopts.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/sdist.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/setopt.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/test.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/upload.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/__pycache__/upload_docs.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/command/alias.py create mode 100644 venv/Lib/site-packages/setuptools/command/bdist_egg.py create mode 100644 venv/Lib/site-packages/setuptools/command/bdist_rpm.py create mode 100644 venv/Lib/site-packages/setuptools/command/build_clib.py create mode 100644 venv/Lib/site-packages/setuptools/command/build_ext.py create mode 100644 venv/Lib/site-packages/setuptools/command/build_py.py create mode 100644 venv/Lib/site-packages/setuptools/command/develop.py create mode 100644 venv/Lib/site-packages/setuptools/command/dist_info.py create mode 100644 venv/Lib/site-packages/setuptools/command/easy_install.py create mode 100644 venv/Lib/site-packages/setuptools/command/egg_info.py create mode 100644 venv/Lib/site-packages/setuptools/command/install.py create mode 100644 venv/Lib/site-packages/setuptools/command/install_egg_info.py create mode 100644 venv/Lib/site-packages/setuptools/command/install_lib.py create mode 100644 venv/Lib/site-packages/setuptools/command/install_scripts.py create mode 100644 venv/Lib/site-packages/setuptools/command/launcher manifest.xml create mode 100644 venv/Lib/site-packages/setuptools/command/py36compat.py create mode 100644 venv/Lib/site-packages/setuptools/command/register.py create mode 100644 venv/Lib/site-packages/setuptools/command/rotate.py create mode 100644 venv/Lib/site-packages/setuptools/command/saveopts.py create mode 100644 venv/Lib/site-packages/setuptools/command/sdist.py create mode 100644 venv/Lib/site-packages/setuptools/command/setopt.py create mode 100644 venv/Lib/site-packages/setuptools/command/test.py create mode 100644 venv/Lib/site-packages/setuptools/command/upload.py create mode 100644 venv/Lib/site-packages/setuptools/command/upload_docs.py create mode 100644 venv/Lib/site-packages/setuptools/config.py create mode 100644 venv/Lib/site-packages/setuptools/dep_util.py create mode 100644 venv/Lib/site-packages/setuptools/depends.py create mode 100644 venv/Lib/site-packages/setuptools/dist.py create mode 100644 venv/Lib/site-packages/setuptools/errors.py create mode 100644 venv/Lib/site-packages/setuptools/extension.py create mode 100644 venv/Lib/site-packages/setuptools/extern/__init__.py create mode 100644 venv/Lib/site-packages/setuptools/extern/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/setuptools/glob.py create mode 100644 venv/Lib/site-packages/setuptools/gui-32.exe create mode 100644 venv/Lib/site-packages/setuptools/gui-64.exe create mode 100644 venv/Lib/site-packages/setuptools/gui.exe create mode 100644 venv/Lib/site-packages/setuptools/installer.py create mode 100644 venv/Lib/site-packages/setuptools/launch.py create mode 100644 venv/Lib/site-packages/setuptools/monkey.py create mode 100644 venv/Lib/site-packages/setuptools/msvc.py create mode 100644 venv/Lib/site-packages/setuptools/namespaces.py create mode 100644 venv/Lib/site-packages/setuptools/package_index.py create mode 100644 venv/Lib/site-packages/setuptools/py34compat.py create mode 100644 venv/Lib/site-packages/setuptools/sandbox.py create mode 100644 venv/Lib/site-packages/setuptools/script (dev).tmpl create mode 100644 venv/Lib/site-packages/setuptools/script.tmpl create mode 100644 venv/Lib/site-packages/setuptools/unicode_utils.py create mode 100644 venv/Lib/site-packages/setuptools/version.py create mode 100644 venv/Lib/site-packages/setuptools/wheel.py create mode 100644 venv/Lib/site-packages/setuptools/windows_support.py create mode 100644 venv/Lib/site-packages/urllib3-2.2.3.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/urllib3-2.2.3.dist-info/METADATA create mode 100644 venv/Lib/site-packages/urllib3-2.2.3.dist-info/RECORD create mode 100644 venv/Lib/site-packages/urllib3-2.2.3.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/urllib3-2.2.3.dist-info/licenses/LICENSE.txt create mode 100644 venv/Lib/site-packages/urllib3/__init__.py create mode 100644 venv/Lib/site-packages/urllib3/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/__pycache__/_base_connection.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/__pycache__/_collections.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/__pycache__/_request_methods.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/__pycache__/_version.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/__pycache__/connection.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/__pycache__/connectionpool.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/__pycache__/exceptions.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/__pycache__/fields.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/__pycache__/filepost.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/__pycache__/poolmanager.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/__pycache__/response.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/_base_connection.py create mode 100644 venv/Lib/site-packages/urllib3/_collections.py create mode 100644 venv/Lib/site-packages/urllib3/_request_methods.py create mode 100644 venv/Lib/site-packages/urllib3/_version.py create mode 100644 venv/Lib/site-packages/urllib3/connection.py create mode 100644 venv/Lib/site-packages/urllib3/connectionpool.py create mode 100644 venv/Lib/site-packages/urllib3/contrib/__init__.py create mode 100644 venv/Lib/site-packages/urllib3/contrib/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/contrib/__pycache__/socks.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/contrib/emscripten/__init__.py create mode 100644 venv/Lib/site-packages/urllib3/contrib/emscripten/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/contrib/emscripten/__pycache__/connection.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/contrib/emscripten/__pycache__/fetch.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/contrib/emscripten/__pycache__/request.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/contrib/emscripten/__pycache__/response.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/contrib/emscripten/connection.py create mode 100644 venv/Lib/site-packages/urllib3/contrib/emscripten/emscripten_fetch_worker.js create mode 100644 venv/Lib/site-packages/urllib3/contrib/emscripten/fetch.py create mode 100644 venv/Lib/site-packages/urllib3/contrib/emscripten/request.py create mode 100644 venv/Lib/site-packages/urllib3/contrib/emscripten/response.py create mode 100644 venv/Lib/site-packages/urllib3/contrib/pyopenssl.py create mode 100644 venv/Lib/site-packages/urllib3/contrib/socks.py create mode 100644 venv/Lib/site-packages/urllib3/exceptions.py create mode 100644 venv/Lib/site-packages/urllib3/fields.py create mode 100644 venv/Lib/site-packages/urllib3/filepost.py create mode 100644 venv/Lib/site-packages/urllib3/http2/__init__.py create mode 100644 venv/Lib/site-packages/urllib3/http2/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/http2/__pycache__/connection.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/http2/__pycache__/probe.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/http2/connection.py create mode 100644 venv/Lib/site-packages/urllib3/http2/probe.py create mode 100644 venv/Lib/site-packages/urllib3/poolmanager.py create mode 100644 venv/Lib/site-packages/urllib3/py.typed create mode 100644 venv/Lib/site-packages/urllib3/response.py create mode 100644 venv/Lib/site-packages/urllib3/util/__init__.py create mode 100644 venv/Lib/site-packages/urllib3/util/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/util/__pycache__/connection.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/util/__pycache__/proxy.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/util/__pycache__/request.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/util/__pycache__/response.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/util/__pycache__/retry.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/util/__pycache__/ssl_.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/util/__pycache__/ssl_match_hostname.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/util/__pycache__/ssltransport.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/util/__pycache__/timeout.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/util/__pycache__/url.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/util/__pycache__/util.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/util/__pycache__/wait.cpython-310.pyc create mode 100644 venv/Lib/site-packages/urllib3/util/connection.py create mode 100644 venv/Lib/site-packages/urllib3/util/proxy.py create mode 100644 venv/Lib/site-packages/urllib3/util/request.py create mode 100644 venv/Lib/site-packages/urllib3/util/response.py create mode 100644 venv/Lib/site-packages/urllib3/util/retry.py create mode 100644 venv/Lib/site-packages/urllib3/util/ssl_.py create mode 100644 venv/Lib/site-packages/urllib3/util/ssl_match_hostname.py create mode 100644 venv/Lib/site-packages/urllib3/util/ssltransport.py create mode 100644 venv/Lib/site-packages/urllib3/util/timeout.py create mode 100644 venv/Lib/site-packages/urllib3/util/url.py create mode 100644 venv/Lib/site-packages/urllib3/util/util.py create mode 100644 venv/Lib/site-packages/urllib3/util/wait.py create mode 100644 venv/Lib/site-packages/werkzeug-3.1.3.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/werkzeug-3.1.3.dist-info/LICENSE.txt create mode 100644 venv/Lib/site-packages/werkzeug-3.1.3.dist-info/METADATA create mode 100644 venv/Lib/site-packages/werkzeug-3.1.3.dist-info/RECORD create mode 100644 venv/Lib/site-packages/werkzeug-3.1.3.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/werkzeug/__init__.py create mode 100644 venv/Lib/site-packages/werkzeug/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/__pycache__/_internal.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/__pycache__/_reloader.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/__pycache__/exceptions.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/__pycache__/formparser.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/__pycache__/http.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/__pycache__/local.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/__pycache__/security.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/__pycache__/serving.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/__pycache__/test.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/__pycache__/testapp.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/__pycache__/urls.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/__pycache__/user_agent.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/__pycache__/utils.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/__pycache__/wsgi.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/_internal.py create mode 100644 venv/Lib/site-packages/werkzeug/_reloader.py create mode 100644 venv/Lib/site-packages/werkzeug/datastructures/__init__.py create mode 100644 venv/Lib/site-packages/werkzeug/datastructures/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/datastructures/__pycache__/accept.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/datastructures/__pycache__/auth.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/datastructures/__pycache__/cache_control.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/datastructures/__pycache__/csp.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/datastructures/__pycache__/etag.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/datastructures/__pycache__/file_storage.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/datastructures/__pycache__/headers.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/datastructures/__pycache__/mixins.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/datastructures/__pycache__/range.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/datastructures/__pycache__/structures.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/datastructures/accept.py create mode 100644 venv/Lib/site-packages/werkzeug/datastructures/auth.py create mode 100644 venv/Lib/site-packages/werkzeug/datastructures/cache_control.py create mode 100644 venv/Lib/site-packages/werkzeug/datastructures/csp.py create mode 100644 venv/Lib/site-packages/werkzeug/datastructures/etag.py create mode 100644 venv/Lib/site-packages/werkzeug/datastructures/file_storage.py create mode 100644 venv/Lib/site-packages/werkzeug/datastructures/headers.py create mode 100644 venv/Lib/site-packages/werkzeug/datastructures/mixins.py create mode 100644 venv/Lib/site-packages/werkzeug/datastructures/range.py create mode 100644 venv/Lib/site-packages/werkzeug/datastructures/structures.py create mode 100644 venv/Lib/site-packages/werkzeug/debug/__init__.py create mode 100644 venv/Lib/site-packages/werkzeug/debug/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/debug/__pycache__/console.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/debug/__pycache__/repr.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/debug/__pycache__/tbtools.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/debug/console.py create mode 100644 venv/Lib/site-packages/werkzeug/debug/repr.py create mode 100644 venv/Lib/site-packages/werkzeug/debug/shared/ICON_LICENSE.md create mode 100644 venv/Lib/site-packages/werkzeug/debug/shared/console.png create mode 100644 venv/Lib/site-packages/werkzeug/debug/shared/debugger.js create mode 100644 venv/Lib/site-packages/werkzeug/debug/shared/less.png create mode 100644 venv/Lib/site-packages/werkzeug/debug/shared/more.png create mode 100644 venv/Lib/site-packages/werkzeug/debug/shared/style.css create mode 100644 venv/Lib/site-packages/werkzeug/debug/tbtools.py create mode 100644 venv/Lib/site-packages/werkzeug/exceptions.py create mode 100644 venv/Lib/site-packages/werkzeug/formparser.py create mode 100644 venv/Lib/site-packages/werkzeug/http.py create mode 100644 venv/Lib/site-packages/werkzeug/local.py create mode 100644 venv/Lib/site-packages/werkzeug/middleware/__init__.py create mode 100644 venv/Lib/site-packages/werkzeug/middleware/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/middleware/__pycache__/dispatcher.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/middleware/__pycache__/http_proxy.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/middleware/__pycache__/lint.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/middleware/__pycache__/profiler.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/middleware/__pycache__/proxy_fix.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/middleware/__pycache__/shared_data.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/middleware/dispatcher.py create mode 100644 venv/Lib/site-packages/werkzeug/middleware/http_proxy.py create mode 100644 venv/Lib/site-packages/werkzeug/middleware/lint.py create mode 100644 venv/Lib/site-packages/werkzeug/middleware/profiler.py create mode 100644 venv/Lib/site-packages/werkzeug/middleware/proxy_fix.py create mode 100644 venv/Lib/site-packages/werkzeug/middleware/shared_data.py create mode 100644 venv/Lib/site-packages/werkzeug/py.typed create mode 100644 venv/Lib/site-packages/werkzeug/routing/__init__.py create mode 100644 venv/Lib/site-packages/werkzeug/routing/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/routing/__pycache__/converters.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/routing/__pycache__/exceptions.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/routing/__pycache__/map.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/routing/__pycache__/matcher.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/routing/__pycache__/rules.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/routing/converters.py create mode 100644 venv/Lib/site-packages/werkzeug/routing/exceptions.py create mode 100644 venv/Lib/site-packages/werkzeug/routing/map.py create mode 100644 venv/Lib/site-packages/werkzeug/routing/matcher.py create mode 100644 venv/Lib/site-packages/werkzeug/routing/rules.py create mode 100644 venv/Lib/site-packages/werkzeug/sansio/__init__.py create mode 100644 venv/Lib/site-packages/werkzeug/sansio/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/sansio/__pycache__/http.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/sansio/__pycache__/multipart.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/sansio/__pycache__/request.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/sansio/__pycache__/response.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/sansio/__pycache__/utils.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/sansio/http.py create mode 100644 venv/Lib/site-packages/werkzeug/sansio/multipart.py create mode 100644 venv/Lib/site-packages/werkzeug/sansio/request.py create mode 100644 venv/Lib/site-packages/werkzeug/sansio/response.py create mode 100644 venv/Lib/site-packages/werkzeug/sansio/utils.py create mode 100644 venv/Lib/site-packages/werkzeug/security.py create mode 100644 venv/Lib/site-packages/werkzeug/serving.py create mode 100644 venv/Lib/site-packages/werkzeug/test.py create mode 100644 venv/Lib/site-packages/werkzeug/testapp.py create mode 100644 venv/Lib/site-packages/werkzeug/urls.py create mode 100644 venv/Lib/site-packages/werkzeug/user_agent.py create mode 100644 venv/Lib/site-packages/werkzeug/utils.py create mode 100644 venv/Lib/site-packages/werkzeug/wrappers/__init__.py create mode 100644 venv/Lib/site-packages/werkzeug/wrappers/__pycache__/__init__.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/wrappers/__pycache__/request.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/wrappers/__pycache__/response.cpython-310.pyc create mode 100644 venv/Lib/site-packages/werkzeug/wrappers/request.py create mode 100644 venv/Lib/site-packages/werkzeug/wrappers/response.py create mode 100644 venv/Lib/site-packages/werkzeug/wsgi.py create mode 100644 venv/Scripts/Activate.ps1 create mode 100644 venv/Scripts/__pycache__/pwiz.cpython-310.pyc create mode 100644 venv/Scripts/activate create mode 100644 venv/Scripts/activate.bat create mode 100644 venv/Scripts/deactivate.bat create mode 100644 venv/Scripts/flask.exe create mode 100644 venv/Scripts/normalizer.exe create mode 100644 venv/Scripts/pip.exe create mode 100644 venv/Scripts/pip3.10.exe create mode 100644 venv/Scripts/pip3.exe create mode 100644 venv/Scripts/pwiz.py create mode 100644 venv/Scripts/python.exe create mode 100644 venv/Scripts/pythonw.exe create mode 100644 venv/pyvenv.cfg diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/app/__init__.py b/app/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/models.py b/app/models.py new file mode 100644 index 0000000..e69de29 diff --git a/app/static/style.css b/app/static/style.css new file mode 100644 index 0000000..e69de29 diff --git a/app/templates/add_book.html b/app/templates/add_book.html new file mode 100644 index 0000000..e69de29 diff --git a/app/templates/index.html b/app/templates/index.html new file mode 100644 index 0000000..e69de29 diff --git a/app/views.py b/app/views.py new file mode 100644 index 0000000..e69de29 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e69de29 diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..e69de29 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..be63726 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +Flask +psycopg2 +peewee +requests \ No newline at end of file diff --git a/venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/INSTALLER b/venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/LICENSE.txt b/venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/LICENSE.txt new file mode 100644 index 0000000..9d227a0 --- /dev/null +++ b/venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/LICENSE.txt @@ -0,0 +1,28 @@ +Copyright 2010 Pallets + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/METADATA b/venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/METADATA new file mode 100644 index 0000000..82261f2 --- /dev/null +++ b/venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/METADATA @@ -0,0 +1,92 @@ +Metadata-Version: 2.1 +Name: MarkupSafe +Version: 3.0.2 +Summary: Safely add untrusted strings to HTML/XML markup. +Maintainer-email: Pallets +License: Copyright 2010 Pallets + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Project-URL: Donate, https://palletsprojects.com/donate +Project-URL: Documentation, https://markupsafe.palletsprojects.com/ +Project-URL: Changes, https://markupsafe.palletsprojects.com/changes/ +Project-URL: Source, https://github.com/pallets/markupsafe/ +Project-URL: Chat, https://discord.gg/pallets +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Web Environment +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Classifier: Topic :: Text Processing :: Markup :: HTML +Classifier: Typing :: Typed +Requires-Python: >=3.9 +Description-Content-Type: text/markdown +License-File: LICENSE.txt + +# MarkupSafe + +MarkupSafe implements a text object that escapes characters so it is +safe to use in HTML and XML. Characters that have special meanings are +replaced so that they display as the actual characters. This mitigates +injection attacks, meaning untrusted user input can safely be displayed +on a page. + + +## Examples + +```pycon +>>> from markupsafe import Markup, escape + +>>> # escape replaces special characters and wraps in Markup +>>> escape("") +Markup('<script>alert(document.cookie);</script>') + +>>> # wrap in Markup to mark text "safe" and prevent escaping +>>> Markup("Hello") +Markup('hello') + +>>> escape(Markup("Hello")) +Markup('hello') + +>>> # Markup is a str subclass +>>> # methods and operators escape their arguments +>>> template = Markup("Hello {name}") +>>> template.format(name='"World"') +Markup('Hello "World"') +``` + +## Donate + +The Pallets organization develops and supports MarkupSafe and other +popular packages. In order to grow the community of contributors and +users, and allow the maintainers to devote more time to the projects, +[please donate today][]. + +[please donate today]: https://palletsprojects.com/donate diff --git a/venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/RECORD b/venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/RECORD new file mode 100644 index 0000000..0c652a7 --- /dev/null +++ b/venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/RECORD @@ -0,0 +1,14 @@ +MarkupSafe-3.0.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +MarkupSafe-3.0.2.dist-info/LICENSE.txt,sha256=RjHsDbX9kKVH4zaBcmTGeYIUM4FG-KyUtKV_lu6MnsQ,1503 +MarkupSafe-3.0.2.dist-info/METADATA,sha256=nhoabjupBG41j_JxPCJ3ylgrZ6Fx8oMCFbiLF9Kafqc,4067 +MarkupSafe-3.0.2.dist-info/RECORD,, +MarkupSafe-3.0.2.dist-info/WHEEL,sha256=IqiWNwTSPPvorR7mTezuRY2eqj__44JKKkjOiewDX64,101 +MarkupSafe-3.0.2.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11 +markupsafe/__init__.py,sha256=pREerPwvinB62tNCMOwqxBS2YHV6R52Wcq1d-rB4Z5o,13609 +markupsafe/__pycache__/__init__.cpython-310.pyc,, +markupsafe/__pycache__/_native.cpython-310.pyc,, +markupsafe/_native.py,sha256=2ptkJ40yCcp9kq3L1NqpgjfpZB-obniYKFFKUOkHh4Q,218 +markupsafe/_speedups.c,sha256=SglUjn40ti9YgQAO--OgkSyv9tXq9vvaHyVhQows4Ok,4353 +markupsafe/_speedups.cp310-win_amd64.pyd,sha256=RTvh-UzJTX7J_4j-A5jZmnqwRKBe0pQiDPd_j60jft8,13312 +markupsafe/_speedups.pyi,sha256=LSDmXYOefH4HVpAXuL8sl7AttLw0oXh1njVoVZp2wqQ,42 +markupsafe/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/WHEEL b/venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/WHEEL new file mode 100644 index 0000000..c4388f8 --- /dev/null +++ b/venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (75.2.0) +Root-Is-Purelib: false +Tag: cp310-cp310-win_amd64 + diff --git a/venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/top_level.txt b/venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/top_level.txt new file mode 100644 index 0000000..75bf729 --- /dev/null +++ b/venv/Lib/site-packages/MarkupSafe-3.0.2.dist-info/top_level.txt @@ -0,0 +1 @@ +markupsafe diff --git a/venv/Lib/site-packages/__pycache__/peewee.cpython-310.pyc b/venv/Lib/site-packages/__pycache__/peewee.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b9e5980b3fddb5c4bab9a428a66170be0ad76bc0 GIT binary patch literal 260626 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�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

lcm0^d7?N{ur|-p+{8zFGJWb5`WAZo%H~JA z3GE~lbC>h}clJ*glrFA1gr9G*x@x*qE0c_F81LU<{CML#M zxTZRaukWfVUcGp74p-Mz*YkIEbwhO{e@95pwyC-q-_SMHtEyLXXOuhFRJU+vEoawO zE1ZpSc3pKVXX`k-zIp>^>p8_U8=zLZ+#X;xU4}K=yX*ex z{(JV`8=RKzdHCSuu2%0o`}W;GxoZj?$KD4f4;cJ?VVF6!qHbo2>tOD!@@#dRb@)HDpqc;L7eJx@l~ea` zI*5i6;b9IOjy|H<%zy9uxPudE>o8HX>RaQ5=7h%~fuUaY2tLB;NGR{?z z2?W$pIlXZ9B+k)NmDL+}r<7}(cQh23j1ILs8cyT55O{`$CG~{`xs#fHW)E$%%qE>p zHBqx~(i&ttFzuXkxEgMFaH-zFn-%F!hz_rp^#I+qXdNn@U>I;+Ac@M+SYbki45XjsN{}qI34Zs`*(QLg3;-51JtyRiC9;)o? zN_P_sns!XB-a}J+C-&{0oE{2JcJ1H4>tXj7yg9vAPFiy(7VzPTFvR_3^h+93zCe>$ z?+-IDJ`+KfMqNwTw`=$-JSM6+P?X>4umoOcuZBSf3BmL&;x-lnt_>~Bg);5sNcSVV zAS;@E2E$@@UfS1`P-1JkARrC=4+~QZe?OZ;^_=(X?Li^z{}NQ=1;P;aS?>LCh_LdG zg|1&}-jvlc!RvXF;;5k$d@cF~*aAl>^`O@=N7$Qd6pxjT(^R*W7npRWVEd$6C!kKR z*M7Dw3Z})DKUH^stHIe!6z{16yCx1ol4hV;2M-;X!Od#_{(bxD>|rXO9w4S~_)e<3 zinH?Lad*iuR~pDQZ_em$W+oKP(eR`5NGGk0b(7HS;-QZhT))!sXj7QdMjH)78+~=C zjn;sn!Zl5FDNFzCKA@2s(;?LrF%mzkuBZ`t+|NhBDwMg`Wpw6wf?SJOY1rIPs2*{A z?k9EDO^5t3s&zlb6U|CSWtZ0;hjrDbsYY_#L^8XaTkW;UPvsZkx(St%h&l?1f*`dA zrW62)I(k!Dfh*1P4PNuyhA@@A2lm~+OQ=)1fAXQp`$Mg?yM@k#v)hRKJA{oXh>KzS zWkFnq7@FM@Y%3DFMJ3&s0Sd33)~pCW6dO_bi`%%6!bxCYy~`~VoMayUJ`|6p#MsRP zfhNZ!*rK0a@dpXSS#Fj@Dmys!I?h1(>aA1kQ8~cITG*%vBFmgQg122lbfp#xza{8& zAEw(eC@uuDYLg?U03-$M9|$*00egD}Kx}3!P+oU2Tqq|p#cQmTNL3|n`FAuH#yI3g z*&R2pxom}r-Cp}JxWA_?i8&t$z$>kyKt__d+Pq~~Lsnr*?j)p5`}ll-4hwUirj`Vd z1z-tCO`2Tc!~~>6Sn`1qK12{ZP_&9?@_}eH*DO@}Ujdnu`n6R;+_A6>)=IN9-LHyF zZ|D6)Q}EKz{7DF}GQ#1pOU>K5z{~oTB@Fjs($6ID!EZ6NZ}}q?FJe?=IJ~9@wO_RM zN1Tsvz^X`y0Vp8W#>z;^*11{av8d{R{^HSX#!+nR zcuchf=mgTJ%V8bcf+}iH(uRfV_R8_fEtT81R}St!G&!DGj-lRBa!BFzgjemUBlS53 zzEKZLB2?-2%I)KF{63ypK%}=ljzsR}?KdZ@$-r#OMWgZ>iSqVNvCvk&V&C4WN^&Mx z-}F3vQ?`x9j-`ca<*pE#*3l~~DXMuv6=QtrvVZG>pLP+ zNcoKrF--AoKU+Bg1�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�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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/_distutils_hack/__init__.py b/venv/Lib/site-packages/_distutils_hack/__init__.py new file mode 100644 index 0000000..5f40996 --- /dev/null +++ b/venv/Lib/site-packages/_distutils_hack/__init__.py @@ -0,0 +1,128 @@ +import sys +import os +import re +import importlib +import warnings + + +is_pypy = '__pypy__' in sys.builtin_module_names + + +warnings.filterwarnings('ignore', + r'.+ distutils\b.+ deprecated', + DeprecationWarning) + + +def warn_distutils_present(): + if 'distutils' not in sys.modules: + return + if is_pypy and sys.version_info < (3, 7): + # PyPy for 3.6 unconditionally imports distutils, so bypass the warning + # https://foss.heptapod.net/pypy/pypy/-/blob/be829135bc0d758997b3566062999ee8b23872b4/lib-python/3/site.py#L250 + return + warnings.warn( + "Distutils was imported before Setuptools, but importing Setuptools " + "also replaces the `distutils` module in `sys.modules`. This may lead " + "to undesirable behaviors or errors. To avoid these issues, avoid " + "using distutils directly, ensure that setuptools is installed in the " + "traditional way (e.g. not an editable install), and/or make sure " + "that setuptools is always imported before distutils.") + + +def clear_distutils(): + if 'distutils' not in sys.modules: + return + warnings.warn("Setuptools is replacing distutils.") + mods = [name for name in sys.modules if re.match(r'distutils\b', name)] + for name in mods: + del sys.modules[name] + + +def enabled(): + """ + Allow selection of distutils by environment variable. + """ + which = os.environ.get('SETUPTOOLS_USE_DISTUTILS', 'stdlib') + return which == 'local' + + +def ensure_local_distutils(): + clear_distutils() + distutils = importlib.import_module('setuptools._distutils') + distutils.__name__ = 'distutils' + sys.modules['distutils'] = distutils + + # sanity check that submodules load as expected + core = importlib.import_module('distutils.core') + assert '_distutils' in core.__file__, core.__file__ + + +def do_override(): + """ + Ensure that the local copy of distutils is preferred over stdlib. + + See https://github.com/pypa/setuptools/issues/417#issuecomment-392298401 + for more motivation. + """ + if enabled(): + warn_distutils_present() + ensure_local_distutils() + + +class DistutilsMetaFinder: + def find_spec(self, fullname, path, target=None): + if path is not None: + return + + method_name = 'spec_for_{fullname}'.format(**locals()) + method = getattr(self, method_name, lambda: None) + return method() + + def spec_for_distutils(self): + import importlib.abc + import importlib.util + + class DistutilsLoader(importlib.abc.Loader): + + def create_module(self, spec): + return importlib.import_module('setuptools._distutils') + + def exec_module(self, module): + pass + + return importlib.util.spec_from_loader('distutils', DistutilsLoader()) + + def spec_for_pip(self): + """ + Ensure stdlib distutils when running under pip. + See pypa/pip#8761 for rationale. + """ + if self.pip_imported_during_build(): + return + clear_distutils() + self.spec_for_distutils = lambda: None + + @staticmethod + def pip_imported_during_build(): + """ + Detect if pip is being imported in a build script. Ref #2355. + """ + import traceback + return any( + frame.f_globals['__file__'].endswith('setup.py') + for frame, line in traceback.walk_stack(None) + ) + + +DISTUTILS_FINDER = DistutilsMetaFinder() + + +def add_shim(): + sys.meta_path.insert(0, DISTUTILS_FINDER) + + +def remove_shim(): + try: + sys.meta_path.remove(DISTUTILS_FINDER) + except ValueError: + pass diff --git a/venv/Lib/site-packages/_distutils_hack/__pycache__/__init__.cpython-310.pyc b/venv/Lib/site-packages/_distutils_hack/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e0078e687752ad7b7774d754d736b5724c2f1a77 GIT binary patch literal 5107 zcmbtY&vVy@HK4xNe*Qk|b zX_wWGiQ{4p?`FjbaT53Af-kf3YfpiSRcnstb+@`(o|oFeY9~^%|3>9!t_b3!mjq$F zQm3BmD%tQ8DH`bZ zJ8=(tNm_p5#`%WuIY7mUABNa3;1Tdd`65VysN;vw$Cmr9tgKetPL#NQ$CY@c!3{nu zW9g1q0Km4tF5Q9J zPAz(R!qhaZsGDzZEL~aot&kfl^`IUGQ6ks1!}136c(qH~z5 zd*G>NCS2|@BOWiYUB1J%*%JH8-qFn7=D%PMPigKJs*1$*e>@^0*)1d60ee>(AanjB z95$|HT=AP|RyN4P|WezZnk=cnI%L-w73|;c^Xl>d-ZKvhZcR4_2(NPv>GX~vKU4U_{dc}4Cj|EMer24p`!Sv zrqGm)ngtHTYK}&7<7TTJJ0#Y{oZKcwKFb{r>pWK{F@C@%q!$akDGq+h{trdi^n7u)m+~LC7 z=40}mBY3noD zqnCMkii|*{^1KlfXsj887%Llkh14RshZS-v3uvBJ;=9+Xej+uC--QOPNb&FQfktZP*)Q5tPEDUfFF#-K~S{fNLURG!d^6QX>Q} zH#2*ssKqQx>9&%j8(&#iSPha^uMWMn7myhJg^`*Uvber*;p~U=`Vn)8Y-i42K6mc& zr3>$$)xwaUkXsPf+ffp1_(au=h1IgD*`cG8-v5{awNq*Dof45p5LF=LBGeE&XzU46 zob^nRLm!|Q`Z}^*!#zHSMlvcdP+Am)AGrlv{7(a9JXLKFsfRxb3sll*Z@qwrZ4@s(u52Qt;A>1+0jRsn{?7lxcdP`Y z-bOhC1Z>ybDQp*ZGvfA7#9i6&pe673&0ZK1*LIHVh=@Qj@;?NDR(QgzhqX0QnX?%B z?Yi)zSZIp0Bk@*h)wM*I;Ind0e+GwWJ3$Vr5((+X zBr%uJAZ)UbeUsh!H|#U^XVye0g#jF4e$Cd5H4}#5c%m{4k!6?dQ+P!xBW)is0ZFD` z?4lWxO3Q@Q#|~(vQzd9sfE2s`(Tl+6wiZKvjTE2HzZLnQTZ8O2{0)QV2@Gg0ea-f; zwS6jGjjE!|S?203x*6&WZmeXLM!H|S>Rfxe?eq_Yl2=P!Nu!C9BGiPA~LA67Fov3kT^U&6OBg5~j2 zy^H;<;!;$)^v}IgJ%n$pP|RW_!sP3C;SG;vp6DrT$*cE*Q0M|feGJiXQS!|(4BBYZ zxzR`lCS>L+Scrio-go~Oo&$TQedl?}MThFgknO-oS%8A!465y^p5G-y75aB_LoLY! z)ubCV$qrP(*Cm-|xGy?>`8Z%=S8m);K{u(mU&y9AfA0LnizBn?09rl39}`F@KF4&u zjpmP3=+CSeJA4NPKGG$7ol1U$v@cQFJOo5QGu4kUweRSn1LvM9%KXWuw;D!u6zZuX zJ0jjhfr5$0F)=MP71C#Fg+b>?H8#1pDm(H~S6z(=1Em_{4;HhH((~f;{y5T-8EB3Gz6PYsbyT}P8n14a@w23eTa9m6v6grDHWFLCMm)WI>*ah#G-EOA9| z4iF9f(Q$wF)R62>}eJ?8#a5k4JNoVt;hxh5t>e7ubUIZ(3 ze1S5h6|^5gnod}ATz!t`BZx?mwBeY1x<8p=0wT`YeO)+NI9F_);NTc%ztba|Svo=% z&_})7_%OAVY*W#BhdRYC{jeu*(4QMGL^qX9)&RF@ZOtt{$EV@I#&fldvGQCd{d;&; z$EeYXnP#RZ$)S>+AVl9q7HNTkaDP?%d9{P%<^`hNB=LsmZ1X)>#(=jn+& zOq)#aK&wi_cp-jgF-x#l$yPDtXGbRsN*G1cHVyoVU_EmR&a5*DK1`LS?K6%!ZT%P7 CDgxmE literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/_distutils_hack/__pycache__/override.cpython-310.pyc b/venv/Lib/site-packages/_distutils_hack/__pycache__/override.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1cc860a9ef49448b2d1a317174ca3ea6dab90578 GIT binary patch literal 213 zcmd1j<>g`kf-P@-(sh9JV-N=!FabFZKwK;UBvKht7@8RuFfL?ZWJqBQX3%7c;*U?s zEG{W6$;>H^&qz$p_S0m##T6f)nOl%wR1zN_#hsELpI??*RFs*Lx{{#?WE`0ID004nJJD&gm literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/_distutils_hack/override.py b/venv/Lib/site-packages/_distutils_hack/override.py new file mode 100644 index 0000000..2cc433a --- /dev/null +++ b/venv/Lib/site-packages/_distutils_hack/override.py @@ -0,0 +1 @@ +__import__('_distutils_hack').do_override() diff --git a/venv/Lib/site-packages/blinker-1.9.0.dist-info/INSTALLER b/venv/Lib/site-packages/blinker-1.9.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/venv/Lib/site-packages/blinker-1.9.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/Lib/site-packages/blinker-1.9.0.dist-info/LICENSE.txt b/venv/Lib/site-packages/blinker-1.9.0.dist-info/LICENSE.txt new file mode 100644 index 0000000..79c9825 --- /dev/null +++ b/venv/Lib/site-packages/blinker-1.9.0.dist-info/LICENSE.txt @@ -0,0 +1,20 @@ +Copyright 2010 Jason Kirtland + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/venv/Lib/site-packages/blinker-1.9.0.dist-info/METADATA b/venv/Lib/site-packages/blinker-1.9.0.dist-info/METADATA new file mode 100644 index 0000000..6d343f5 --- /dev/null +++ b/venv/Lib/site-packages/blinker-1.9.0.dist-info/METADATA @@ -0,0 +1,60 @@ +Metadata-Version: 2.3 +Name: blinker +Version: 1.9.0 +Summary: Fast, simple object-to-object and broadcast signaling +Author: Jason Kirtland +Maintainer-email: Pallets Ecosystem +Requires-Python: >=3.9 +Description-Content-Type: text/markdown +Classifier: Development Status :: 5 - Production/Stable +Classifier: License :: OSI Approved :: MIT License +Classifier: Programming Language :: Python +Classifier: Typing :: Typed +Project-URL: Chat, https://discord.gg/pallets +Project-URL: Documentation, https://blinker.readthedocs.io +Project-URL: Source, https://github.com/pallets-eco/blinker/ + +# Blinker + +Blinker provides a fast dispatching system that allows any number of +interested parties to subscribe to events, or "signals". + + +## Pallets Community Ecosystem + +> [!IMPORTANT]\ +> This project is part of the Pallets Community Ecosystem. Pallets is the open +> source organization that maintains Flask; Pallets-Eco enables community +> maintenance of related projects. If you are interested in helping maintain +> this project, please reach out on [the Pallets Discord server][discord]. +> +> [discord]: https://discord.gg/pallets + + +## Example + +Signal receivers can subscribe to specific senders or receive signals +sent by any sender. + +```pycon +>>> from blinker import signal +>>> started = signal('round-started') +>>> def each(round): +... print(f"Round {round}") +... +>>> started.connect(each) + +>>> def round_two(round): +... print("This is round two.") +... +>>> started.connect(round_two, sender=2) + +>>> for round in range(1, 4): +... started.send(round) +... +Round 1! +Round 2! +This is round two. +Round 3! +``` + diff --git a/venv/Lib/site-packages/blinker-1.9.0.dist-info/RECORD b/venv/Lib/site-packages/blinker-1.9.0.dist-info/RECORD new file mode 100644 index 0000000..e6ed9e3 --- /dev/null +++ b/venv/Lib/site-packages/blinker-1.9.0.dist-info/RECORD @@ -0,0 +1,12 @@ +blinker-1.9.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +blinker-1.9.0.dist-info/LICENSE.txt,sha256=nrc6HzhZekqhcCXSrhvjg5Ykx5XphdTw6Xac4p-spGc,1054 +blinker-1.9.0.dist-info/METADATA,sha256=uIRiM8wjjbHkCtbCyTvctU37IAZk0kEe5kxAld1dvzA,1633 +blinker-1.9.0.dist-info/RECORD,, +blinker-1.9.0.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82 +blinker/__init__.py,sha256=I2EdZqpy4LyjX17Hn1yzJGWCjeLaVaPzsMgHkLfj_cQ,317 +blinker/__pycache__/__init__.cpython-310.pyc,, +blinker/__pycache__/_utilities.cpython-310.pyc,, +blinker/__pycache__/base.cpython-310.pyc,, +blinker/_utilities.py,sha256=0J7eeXXTUx0Ivf8asfpx0ycVkp0Eqfqnj117x2mYX9E,1675 +blinker/base.py,sha256=QpDuvXXcwJF49lUBcH5BiST46Rz9wSG7VW_p7N_027M,19132 +blinker/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/venv/Lib/site-packages/blinker-1.9.0.dist-info/WHEEL b/venv/Lib/site-packages/blinker-1.9.0.dist-info/WHEEL new file mode 100644 index 0000000..e3c6fee --- /dev/null +++ b/venv/Lib/site-packages/blinker-1.9.0.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: flit 3.10.1 +Root-Is-Purelib: true +Tag: py3-none-any diff --git a/venv/Lib/site-packages/blinker/__init__.py b/venv/Lib/site-packages/blinker/__init__.py new file mode 100644 index 0000000..1772fa4 --- /dev/null +++ b/venv/Lib/site-packages/blinker/__init__.py @@ -0,0 +1,17 @@ +from __future__ import annotations + +from .base import ANY +from .base import default_namespace +from .base import NamedSignal +from .base import Namespace +from .base import Signal +from .base import signal + +__all__ = [ + "ANY", + "default_namespace", + "NamedSignal", + "Namespace", + "Signal", + "signal", +] diff --git a/venv/Lib/site-packages/blinker/__pycache__/__init__.cpython-310.pyc b/venv/Lib/site-packages/blinker/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e8c45845be35e8bfd4c1fc4c1eb3d07a29c7c908 GIT binary patch literal 452 zcmaKoJx{|h5QfkBa6Z~f@H099JE90A#;QvfYDF>*b|b5fQ^iRo{tg>|DJxS4W+W!g zK~zkfrPt4Uw$Ju8vsn%ppC8L=K>*&p`5OV6I{@OI5F|)qpeBqEkbw+MP=_oWIYN$D zG;)j_vv_2ROc@T31#Ww3)ZRYxI<+?q>sSBP`j*UZ|JEOX?*f*pbjJ3s9cQzfrcG%f4Zsvyv zo399=S^>Zbrv(|(lv0G9!Wp`$H-lSg%i`Lp535@Q!-aIg(ma5}G^9lMuNQgi4NW^w z32$@%jBtPIq)YrJ@9?EFFYWSMe3jqeD`%~=$DM5w-~I!&iD|um#)LK-^T&T!A z&&ufFpz6O6xp^2L93;_qVk9ync$8;Fp(7>CSe3vi!U%@Wh9Z*ou3RLc#cgbCM2)0} z4+d5BAdaN|C&IGrsBv@0HGWHmlXg9Q-z1wwru7e*+T}7gyV|I=*?s%_wcl8vYp(=d zY8R+=yU{XttT&sULjkVXofj84=N+6N={=b0rCA2%q9}mnZA_Pu1p{lKQB}cS`N*P3ZuN$+RZK zw2eP-rjEKZ!NLQsDFi8|rw31kiLwaV6G(|97p0K{3C(FxDZnd{3waD%*lAI60nNZv zQC~!34P7eJz=LhVHjg85f_$>X3x!E6G7f4VTGj|!TpdU~Y`U={ImTizF2T_VVL@P2 zq`vHL3d2{svNSOm2JoC)ZK?Rf>_{-lKLuJ-tlllR>v(S9s?YFjfK9Xy)qe3oo@@e) zHtz1i+pxQ{zrPk?0q;i>yIw#SL-e(RcHyQ?Ea-axTsb;K7f$FD-RoXLw#XqRKLSqm zF-{mIg*QMNS`*d~@isl0lDBq%_;ny^Ol#~qp`#w-L9aRZAs)1Oe;*-iCvm$WwGd%1 zesslzEjM1qBp;0734tV6*h}hOUKNl{_MuF&eqOsc(cJ1>x6R2&mWMSpwf_>HPSD9} zZ|$i4os*G(cR^W!sHb(aRddcJYh7d5dQ)K=*q$_2W`}f~fCjV!U+8q*@ZR#u-)xKQ AYXATM literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/blinker/__pycache__/base.cpython-310.pyc b/venv/Lib/site-packages/blinker/__pycache__/base.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d37e3a6c118c4fc3f5727e910d427c41d3c5b4b5 GIT binary patch literal 17587 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 gwUR2beYtjm+@pf^1OCl^>> Symbol('foo') is Symbol('foo') + True + >>> Symbol('foo') + foo + """ + + symbols: t.ClassVar[dict[str, Symbol]] = {} + + def __new__(cls, name: str) -> Symbol: + if name in cls.symbols: + return cls.symbols[name] + + obj = super().__new__(cls) + cls.symbols[name] = obj + return obj + + def __init__(self, name: str) -> None: + self.name = name + + def __repr__(self) -> str: + return self.name + + def __getnewargs__(self) -> tuple[t.Any, ...]: + return (self.name,) + + +def make_id(obj: object) -> c.Hashable: + """Get a stable identifier for a receiver or sender, to be used as a dict + key or in a set. + """ + if inspect.ismethod(obj): + # The id of a bound method is not stable, but the id of the unbound + # function and instance are. + return id(obj.__func__), id(obj.__self__) + + if isinstance(obj, (str, int)): + # Instances with the same value always compare equal and have the same + # hash, even if the id may change. + return obj + + # Assume other types are not hashable but will always be the same instance. + return id(obj) + + +def make_ref(obj: T, callback: c.Callable[[ref[T]], None] | None = None) -> ref[T]: + if inspect.ismethod(obj): + return WeakMethod(obj, callback) # type: ignore[arg-type, return-value] + + return ref(obj, callback) diff --git a/venv/Lib/site-packages/blinker/base.py b/venv/Lib/site-packages/blinker/base.py new file mode 100644 index 0000000..d051b94 --- /dev/null +++ b/venv/Lib/site-packages/blinker/base.py @@ -0,0 +1,512 @@ +from __future__ import annotations + +import collections.abc as c +import sys +import typing as t +import weakref +from collections import defaultdict +from contextlib import contextmanager +from functools import cached_property +from inspect import iscoroutinefunction + +from ._utilities import make_id +from ._utilities import make_ref +from ._utilities import Symbol + +F = t.TypeVar("F", bound=c.Callable[..., t.Any]) + +ANY = Symbol("ANY") +"""Symbol for "any sender".""" + +ANY_ID = 0 + + +class Signal: + """A notification emitter. + + :param doc: The docstring for the signal. + """ + + ANY = ANY + """An alias for the :data:`~blinker.ANY` sender symbol.""" + + set_class: type[set[t.Any]] = set + """The set class to use for tracking connected receivers and senders. + Python's ``set`` is unordered. If receivers must be dispatched in the order + they were connected, an ordered set implementation can be used. + + .. versionadded:: 1.7 + """ + + @cached_property + def receiver_connected(self) -> Signal: + """Emitted at the end of each :meth:`connect` call. + + The signal sender is the signal instance, and the :meth:`connect` + arguments are passed through: ``receiver``, ``sender``, and ``weak``. + + .. versionadded:: 1.2 + """ + return Signal(doc="Emitted after a receiver connects.") + + @cached_property + def receiver_disconnected(self) -> Signal: + """Emitted at the end of each :meth:`disconnect` call. + + The sender is the signal instance, and the :meth:`disconnect` arguments + are passed through: ``receiver`` and ``sender``. + + This signal is emitted **only** when :meth:`disconnect` is called + explicitly. This signal cannot be emitted by an automatic disconnect + when a weakly referenced receiver or sender goes out of scope, as the + instance is no longer be available to be used as the sender for this + signal. + + An alternative approach is available by subscribing to + :attr:`receiver_connected` and setting up a custom weakref cleanup + callback on weak receivers and senders. + + .. versionadded:: 1.2 + """ + return Signal(doc="Emitted after a receiver disconnects.") + + def __init__(self, doc: str | None = None) -> None: + if doc: + self.__doc__ = doc + + self.receivers: dict[ + t.Any, weakref.ref[c.Callable[..., t.Any]] | c.Callable[..., t.Any] + ] = {} + """The map of connected receivers. Useful to quickly check if any + receivers are connected to the signal: ``if s.receivers:``. The + structure and data is not part of the public API, but checking its + boolean value is. + """ + + self.is_muted: bool = False + self._by_receiver: dict[t.Any, set[t.Any]] = defaultdict(self.set_class) + self._by_sender: dict[t.Any, set[t.Any]] = defaultdict(self.set_class) + self._weak_senders: dict[t.Any, weakref.ref[t.Any]] = {} + + def connect(self, receiver: F, sender: t.Any = ANY, weak: bool = True) -> F: + """Connect ``receiver`` to be called when the signal is sent by + ``sender``. + + :param receiver: The callable to call when :meth:`send` is called with + the given ``sender``, passing ``sender`` as a positional argument + along with any extra keyword arguments. + :param sender: Any object or :data:`ANY`. ``receiver`` will only be + called when :meth:`send` is called with this sender. If ``ANY``, the + receiver will be called for any sender. A receiver may be connected + to multiple senders by calling :meth:`connect` multiple times. + :param weak: Track the receiver with a :mod:`weakref`. The receiver will + be automatically disconnected when it is garbage collected. When + connecting a receiver defined within a function, set to ``False``, + otherwise it will be disconnected when the function scope ends. + """ + receiver_id = make_id(receiver) + sender_id = ANY_ID if sender is ANY else make_id(sender) + + if weak: + self.receivers[receiver_id] = make_ref( + receiver, self._make_cleanup_receiver(receiver_id) + ) + else: + self.receivers[receiver_id] = receiver + + self._by_sender[sender_id].add(receiver_id) + self._by_receiver[receiver_id].add(sender_id) + + if sender is not ANY and sender_id not in self._weak_senders: + # store a cleanup for weakref-able senders + try: + self._weak_senders[sender_id] = make_ref( + sender, self._make_cleanup_sender(sender_id) + ) + except TypeError: + pass + + if "receiver_connected" in self.__dict__ and self.receiver_connected.receivers: + try: + self.receiver_connected.send( + self, receiver=receiver, sender=sender, weak=weak + ) + except TypeError: + # TODO no explanation or test for this + self.disconnect(receiver, sender) + raise + + return receiver + + def connect_via(self, sender: t.Any, weak: bool = False) -> c.Callable[[F], F]: + """Connect the decorated function to be called when the signal is sent + by ``sender``. + + The decorated function will be called when :meth:`send` is called with + the given ``sender``, passing ``sender`` as a positional argument along + with any extra keyword arguments. + + :param sender: Any object or :data:`ANY`. ``receiver`` will only be + called when :meth:`send` is called with this sender. If ``ANY``, the + receiver will be called for any sender. A receiver may be connected + to multiple senders by calling :meth:`connect` multiple times. + :param weak: Track the receiver with a :mod:`weakref`. The receiver will + be automatically disconnected when it is garbage collected. When + connecting a receiver defined within a function, set to ``False``, + otherwise it will be disconnected when the function scope ends.= + + .. versionadded:: 1.1 + """ + + def decorator(fn: F) -> F: + self.connect(fn, sender, weak) + return fn + + return decorator + + @contextmanager + def connected_to( + self, receiver: c.Callable[..., t.Any], sender: t.Any = ANY + ) -> c.Generator[None, None, None]: + """A context manager that temporarily connects ``receiver`` to the + signal while a ``with`` block executes. When the block exits, the + receiver is disconnected. Useful for tests. + + :param receiver: The callable to call when :meth:`send` is called with + the given ``sender``, passing ``sender`` as a positional argument + along with any extra keyword arguments. + :param sender: Any object or :data:`ANY`. ``receiver`` will only be + called when :meth:`send` is called with this sender. If ``ANY``, the + receiver will be called for any sender. + + .. versionadded:: 1.1 + """ + self.connect(receiver, sender=sender, weak=False) + + try: + yield None + finally: + self.disconnect(receiver) + + @contextmanager + def muted(self) -> c.Generator[None, None, None]: + """A context manager that temporarily disables the signal. No receivers + will be called if the signal is sent, until the ``with`` block exits. + Useful for tests. + """ + self.is_muted = True + + try: + yield None + finally: + self.is_muted = False + + def send( + self, + sender: t.Any | None = None, + /, + *, + _async_wrapper: c.Callable[ + [c.Callable[..., c.Coroutine[t.Any, t.Any, t.Any]]], c.Callable[..., t.Any] + ] + | None = None, + **kwargs: t.Any, + ) -> list[tuple[c.Callable[..., t.Any], t.Any]]: + """Call all receivers that are connected to the given ``sender`` + or :data:`ANY`. Each receiver is called with ``sender`` as a positional + argument along with any extra keyword arguments. Return a list of + ``(receiver, return value)`` tuples. + + The order receivers are called is undefined, but can be influenced by + setting :attr:`set_class`. + + If a receiver raises an exception, that exception will propagate up. + This makes debugging straightforward, with an assumption that correctly + implemented receivers will not raise. + + :param sender: Call receivers connected to this sender, in addition to + those connected to :data:`ANY`. + :param _async_wrapper: Will be called on any receivers that are async + coroutines to turn them into sync callables. For example, could run + the receiver with an event loop. + :param kwargs: Extra keyword arguments to pass to each receiver. + + .. versionchanged:: 1.7 + Added the ``_async_wrapper`` argument. + """ + if self.is_muted: + return [] + + results = [] + + for receiver in self.receivers_for(sender): + if iscoroutinefunction(receiver): + if _async_wrapper is None: + raise RuntimeError("Cannot send to a coroutine function.") + + result = _async_wrapper(receiver)(sender, **kwargs) + else: + result = receiver(sender, **kwargs) + + results.append((receiver, result)) + + return results + + async def send_async( + self, + sender: t.Any | None = None, + /, + *, + _sync_wrapper: c.Callable[ + [c.Callable[..., t.Any]], c.Callable[..., c.Coroutine[t.Any, t.Any, t.Any]] + ] + | None = None, + **kwargs: t.Any, + ) -> list[tuple[c.Callable[..., t.Any], t.Any]]: + """Await all receivers that are connected to the given ``sender`` + or :data:`ANY`. Each receiver is called with ``sender`` as a positional + argument along with any extra keyword arguments. Return a list of + ``(receiver, return value)`` tuples. + + The order receivers are called is undefined, but can be influenced by + setting :attr:`set_class`. + + If a receiver raises an exception, that exception will propagate up. + This makes debugging straightforward, with an assumption that correctly + implemented receivers will not raise. + + :param sender: Call receivers connected to this sender, in addition to + those connected to :data:`ANY`. + :param _sync_wrapper: Will be called on any receivers that are sync + callables to turn them into async coroutines. For example, + could call the receiver in a thread. + :param kwargs: Extra keyword arguments to pass to each receiver. + + .. versionadded:: 1.7 + """ + if self.is_muted: + return [] + + results = [] + + for receiver in self.receivers_for(sender): + if not iscoroutinefunction(receiver): + if _sync_wrapper is None: + raise RuntimeError("Cannot send to a non-coroutine function.") + + result = await _sync_wrapper(receiver)(sender, **kwargs) + else: + result = await receiver(sender, **kwargs) + + results.append((receiver, result)) + + return results + + def has_receivers_for(self, sender: t.Any) -> bool: + """Check if there is at least one receiver that will be called with the + given ``sender``. A receiver connected to :data:`ANY` will always be + called, regardless of sender. Does not check if weakly referenced + receivers are still live. See :meth:`receivers_for` for a stronger + search. + + :param sender: Check for receivers connected to this sender, in addition + to those connected to :data:`ANY`. + """ + if not self.receivers: + return False + + if self._by_sender[ANY_ID]: + return True + + if sender is ANY: + return False + + return make_id(sender) in self._by_sender + + def receivers_for( + self, sender: t.Any + ) -> c.Generator[c.Callable[..., t.Any], None, None]: + """Yield each receiver to be called for ``sender``, in addition to those + to be called for :data:`ANY`. Weakly referenced receivers that are not + live will be disconnected and skipped. + + :param sender: Yield receivers connected to this sender, in addition + to those connected to :data:`ANY`. + """ + # TODO: test receivers_for(ANY) + if not self.receivers: + return + + sender_id = make_id(sender) + + if sender_id in self._by_sender: + ids = self._by_sender[ANY_ID] | self._by_sender[sender_id] + else: + ids = self._by_sender[ANY_ID].copy() + + for receiver_id in ids: + receiver = self.receivers.get(receiver_id) + + if receiver is None: + continue + + if isinstance(receiver, weakref.ref): + strong = receiver() + + if strong is None: + self._disconnect(receiver_id, ANY_ID) + continue + + yield strong + else: + yield receiver + + def disconnect(self, receiver: c.Callable[..., t.Any], sender: t.Any = ANY) -> None: + """Disconnect ``receiver`` from being called when the signal is sent by + ``sender``. + + :param receiver: A connected receiver callable. + :param sender: Disconnect from only this sender. By default, disconnect + from all senders. + """ + sender_id: c.Hashable + + if sender is ANY: + sender_id = ANY_ID + else: + sender_id = make_id(sender) + + receiver_id = make_id(receiver) + self._disconnect(receiver_id, sender_id) + + if ( + "receiver_disconnected" in self.__dict__ + and self.receiver_disconnected.receivers + ): + self.receiver_disconnected.send(self, receiver=receiver, sender=sender) + + def _disconnect(self, receiver_id: c.Hashable, sender_id: c.Hashable) -> None: + if sender_id == ANY_ID: + if self._by_receiver.pop(receiver_id, None) is not None: + for bucket in self._by_sender.values(): + bucket.discard(receiver_id) + + self.receivers.pop(receiver_id, None) + else: + self._by_sender[sender_id].discard(receiver_id) + self._by_receiver[receiver_id].discard(sender_id) + + def _make_cleanup_receiver( + self, receiver_id: c.Hashable + ) -> c.Callable[[weakref.ref[c.Callable[..., t.Any]]], None]: + """Create a callback function to disconnect a weakly referenced + receiver when it is garbage collected. + """ + + def cleanup(ref: weakref.ref[c.Callable[..., t.Any]]) -> None: + # If the interpreter is shutting down, disconnecting can result in a + # weird ignored exception. Don't call it in that case. + if not sys.is_finalizing(): + self._disconnect(receiver_id, ANY_ID) + + return cleanup + + def _make_cleanup_sender( + self, sender_id: c.Hashable + ) -> c.Callable[[weakref.ref[t.Any]], None]: + """Create a callback function to disconnect all receivers for a weakly + referenced sender when it is garbage collected. + """ + assert sender_id != ANY_ID + + def cleanup(ref: weakref.ref[t.Any]) -> None: + self._weak_senders.pop(sender_id, None) + + for receiver_id in self._by_sender.pop(sender_id, ()): + self._by_receiver[receiver_id].discard(sender_id) + + return cleanup + + def _cleanup_bookkeeping(self) -> None: + """Prune unused sender/receiver bookkeeping. Not threadsafe. + + Connecting & disconnecting leaves behind a small amount of bookkeeping + data. Typical workloads using Blinker, for example in most web apps, + Flask, CLI scripts, etc., are not adversely affected by this + bookkeeping. + + With a long-running process performing dynamic signal routing with high + volume, e.g. connecting to function closures, senders are all unique + object instances. Doing all of this over and over may cause memory usage + to grow due to extraneous bookkeeping. (An empty ``set`` for each stale + sender/receiver pair.) + + This method will prune that bookkeeping away, with the caveat that such + pruning is not threadsafe. The risk is that cleanup of a fully + disconnected receiver/sender pair occurs while another thread is + connecting that same pair. If you are in the highly dynamic, unique + receiver/sender situation that has lead you to this method, that failure + mode is perhaps not a big deal for you. + """ + for mapping in (self._by_sender, self._by_receiver): + for ident, bucket in list(mapping.items()): + if not bucket: + mapping.pop(ident, None) + + def _clear_state(self) -> None: + """Disconnect all receivers and senders. Useful for tests.""" + self._weak_senders.clear() + self.receivers.clear() + self._by_sender.clear() + self._by_receiver.clear() + + +class NamedSignal(Signal): + """A named generic notification emitter. The name is not used by the signal + itself, but matches the key in the :class:`Namespace` that it belongs to. + + :param name: The name of the signal within the namespace. + :param doc: The docstring for the signal. + """ + + def __init__(self, name: str, doc: str | None = None) -> None: + super().__init__(doc) + + #: The name of this signal. + self.name: str = name + + def __repr__(self) -> str: + base = super().__repr__() + return f"{base[:-1]}; {self.name!r}>" # noqa: E702 + + +class Namespace(dict[str, NamedSignal]): + """A dict mapping names to signals.""" + + def signal(self, name: str, doc: str | None = None) -> NamedSignal: + """Return the :class:`NamedSignal` for the given ``name``, creating it + if required. Repeated calls with the same name return the same signal. + + :param name: The name of the signal. + :param doc: The docstring of the signal. + """ + if name not in self: + self[name] = NamedSignal(name, doc) + + return self[name] + + +class _PNamespaceSignal(t.Protocol): + def __call__(self, name: str, doc: str | None = None) -> NamedSignal: ... + + +default_namespace: Namespace = Namespace() +"""A default :class:`Namespace` for creating named signals. :func:`signal` +creates a :class:`NamedSignal` in this namespace. +""" + +signal: _PNamespaceSignal = default_namespace.signal +"""Return a :class:`NamedSignal` in :data:`default_namespace` with the given +``name``, creating it if required. Repeated calls with the same name return the +same signal. +""" diff --git a/venv/Lib/site-packages/blinker/py.typed b/venv/Lib/site-packages/blinker/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/venv/Lib/site-packages/certifi-2024.8.30.dist-info/INSTALLER b/venv/Lib/site-packages/certifi-2024.8.30.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/venv/Lib/site-packages/certifi-2024.8.30.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/Lib/site-packages/certifi-2024.8.30.dist-info/LICENSE b/venv/Lib/site-packages/certifi-2024.8.30.dist-info/LICENSE new file mode 100644 index 0000000..62b076c --- /dev/null +++ b/venv/Lib/site-packages/certifi-2024.8.30.dist-info/LICENSE @@ -0,0 +1,20 @@ +This package contains a modified version of ca-bundle.crt: + +ca-bundle.crt -- Bundle of CA Root Certificates + +This is a bundle of X.509 certificates of public Certificate Authorities +(CA). These were automatically extracted from Mozilla's root certificates +file (certdata.txt). This file can be found in the mozilla source tree: +https://hg.mozilla.org/mozilla-central/file/tip/security/nss/lib/ckfw/builtins/certdata.txt +It contains the certificates in PEM format and therefore +can be directly used with curl / libcurl / php_curl, or with +an Apache+mod_ssl webserver for SSL client authentication. +Just configure this file as the SSLCACertificateFile.# + +***** BEGIN LICENSE BLOCK ***** +This Source Code Form is subject to the terms of the Mozilla Public License, +v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain +one at http://mozilla.org/MPL/2.0/. + +***** END LICENSE BLOCK ***** +@(#) $RCSfile: certdata.txt,v $ $Revision: 1.80 $ $Date: 2011/11/03 15:11:58 $ diff --git a/venv/Lib/site-packages/certifi-2024.8.30.dist-info/METADATA b/venv/Lib/site-packages/certifi-2024.8.30.dist-info/METADATA new file mode 100644 index 0000000..0a3a772 --- /dev/null +++ b/venv/Lib/site-packages/certifi-2024.8.30.dist-info/METADATA @@ -0,0 +1,67 @@ +Metadata-Version: 2.1 +Name: certifi +Version: 2024.8.30 +Summary: Python package for providing Mozilla's CA Bundle. +Home-page: https://github.com/certifi/python-certifi +Author: Kenneth Reitz +Author-email: me@kennethreitz.com +License: MPL-2.0 +Project-URL: Source, https://github.com/certifi/python-certifi +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0) +Classifier: Natural Language :: English +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Requires-Python: >=3.6 +License-File: LICENSE + +Certifi: Python SSL Certificates +================================ + +Certifi provides Mozilla's carefully curated collection of Root Certificates for +validating the trustworthiness of SSL certificates while verifying the identity +of TLS hosts. It has been extracted from the `Requests`_ project. + +Installation +------------ + +``certifi`` is available on PyPI. Simply install it with ``pip``:: + + $ pip install certifi + +Usage +----- + +To reference the installed certificate authority (CA) bundle, you can use the +built-in function:: + + >>> import certifi + + >>> certifi.where() + '/usr/local/lib/python3.7/site-packages/certifi/cacert.pem' + +Or from the command line:: + + $ python -m certifi + /usr/local/lib/python3.7/site-packages/certifi/cacert.pem + +Enjoy! + +.. _`Requests`: https://requests.readthedocs.io/en/master/ + +Addition/Removal of Certificates +-------------------------------- + +Certifi does not support any addition/removal or other modification of the +CA trust store content. This project is intended to provide a reliable and +highly portable root of trust to python deployments. Look to upstream projects +for methods to use alternate trust. diff --git a/venv/Lib/site-packages/certifi-2024.8.30.dist-info/RECORD b/venv/Lib/site-packages/certifi-2024.8.30.dist-info/RECORD new file mode 100644 index 0000000..6107ac3 --- /dev/null +++ b/venv/Lib/site-packages/certifi-2024.8.30.dist-info/RECORD @@ -0,0 +1,14 @@ +certifi-2024.8.30.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +certifi-2024.8.30.dist-info/LICENSE,sha256=6TcW2mucDVpKHfYP5pWzcPBpVgPSH2-D8FPkLPwQyvc,989 +certifi-2024.8.30.dist-info/METADATA,sha256=GhBHRVUN6a4ZdUgE_N5wmukJfyuoE-QyIl8Y3ifNQBM,2222 +certifi-2024.8.30.dist-info/RECORD,, +certifi-2024.8.30.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91 +certifi-2024.8.30.dist-info/top_level.txt,sha256=KMu4vUCfsjLrkPbSNdgdekS-pVJzBAJFO__nI8NF6-U,8 +certifi/__init__.py,sha256=p_GYZrjUwPBUhpLlCZoGb0miKBKSqDAyZC5DvIuqbHQ,94 +certifi/__main__.py,sha256=xBBoj905TUWBLRGANOcf7oi6e-3dMP4cEoG9OyMs11g,243 +certifi/__pycache__/__init__.cpython-310.pyc,, +certifi/__pycache__/__main__.cpython-310.pyc,, +certifi/__pycache__/core.cpython-310.pyc,, +certifi/cacert.pem,sha256=lO3rZukXdPyuk6BWUJFOKQliWaXH6HGh9l1GGrUgG0c,299427 +certifi/core.py,sha256=qRDDFyXVJwTB_EmoGppaXU_R9qCZvhl-EzxPMuV3nTA,4426 +certifi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/venv/Lib/site-packages/certifi-2024.8.30.dist-info/WHEEL b/venv/Lib/site-packages/certifi-2024.8.30.dist-info/WHEEL new file mode 100644 index 0000000..57e56b7 --- /dev/null +++ b/venv/Lib/site-packages/certifi-2024.8.30.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (74.0.0) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/venv/Lib/site-packages/certifi-2024.8.30.dist-info/top_level.txt b/venv/Lib/site-packages/certifi-2024.8.30.dist-info/top_level.txt new file mode 100644 index 0000000..963eac5 --- /dev/null +++ b/venv/Lib/site-packages/certifi-2024.8.30.dist-info/top_level.txt @@ -0,0 +1 @@ +certifi diff --git a/venv/Lib/site-packages/certifi/__init__.py b/venv/Lib/site-packages/certifi/__init__.py new file mode 100644 index 0000000..f61d77f --- /dev/null +++ b/venv/Lib/site-packages/certifi/__init__.py @@ -0,0 +1,4 @@ +from .core import contents, where + +__all__ = ["contents", "where"] +__version__ = "2024.08.30" diff --git a/venv/Lib/site-packages/certifi/__main__.py b/venv/Lib/site-packages/certifi/__main__.py new file mode 100644 index 0000000..8945b5d --- /dev/null +++ b/venv/Lib/site-packages/certifi/__main__.py @@ -0,0 +1,12 @@ +import argparse + +from certifi import contents, where + +parser = argparse.ArgumentParser() +parser.add_argument("-c", "--contents", action="store_true") +args = parser.parse_args() + +if args.contents: + print(contents()) +else: + print(where()) diff --git a/venv/Lib/site-packages/certifi/__pycache__/__init__.cpython-310.pyc b/venv/Lib/site-packages/certifi/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d33dc494ee4e2c8de686e9afd712c180cf69877f GIT binary patch literal 267 zcmYk0F;BxV5QS|gX``Y_`~=nvq)}l&2oM8f#nJ^u7N;b>2CGh7*(M175r4@m69Y36 z6ZY08-S_l#r>E1)<$?tL{%rc^;9oHui-m9>#-0TTBB&w*t?9sOMu}h|=~hCywjt@(OI9py`Vu8drT7Wu~=8@%d)yEFRI5P^J%A#*M1JrCJi|Rn0YLS_`7|$=1&4A-pW=W>Z VyU%Y1EnXGg#aHbt;FRPnr~f_gVRY^R+ks%SUsLZBi6TB&|r=Pgc>IrL6W+j}joe z(KAVX@E3vfch_=&}>qfEyQ}t-4d1Aya!OF1pa=sz&T} zf1zD4Txz#3q|EW*uyf&%_TISBpnj)SV_%4ldQ>l8r7M3DgL$l6i zYMvQoA?ZZ16eXDK=O0ITUJKRa`C<3y_(|Q$RRw1hVP=ZL$&_(6rJM#Vq7nNB;ni{Y literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/certifi/__pycache__/core.cpython-310.pyc b/venv/Lib/site-packages/certifi/__pycache__/core.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..301ffef29a89e7321376920c7650dd3d7e851c6e GIT binary patch literal 2098 zcmZ`)OK%)S5bo}I?Ck9NwSL5QUJC@!3SvOw5F&(#3{r%QWo#qD$kJ#$-D{7%JF|4R zoj7v1IM;~3uzU1h>MJK7IOTw30->sR*AHxZ)YaA9Gu2gJebrNpjD!T*pMNZEeK$eK z?>M>GDlqvPy1GRP;UprQa@L{|wIhodzr|hdy>uf-&>ffiyPo_M_DU_U?MHsQ6qP99 zED4~Oxg)|R;{h+j`<1~gb9lx)gd(=Blo@MLo-v zPFk%*XGLCb6=`27n)Nh6OA8&*t{1YNX;n{)T#H<*h42K^vuymnp%iBqn+KCc=&A-n zlP=|uHcomDfJoLzgDy9isl`bDvrNbFF_HMS6{lZ(^Kjz{7yBEV z*=8#%wAf8H_C>zGv6O9Ys7#Cdoh02&wuIUkMEyxxNCBanF>9_LL!9bo$S}n~)Tk`M z&|oJH3@6AfaHf=~xS6$t@ldKO5xMZ1jp%bwG(@pS@1toz{%6_9NR`{szV@F9<4u?=%_@mOt4dAc_-1^5E#jTbY728`n8{ea**Dy{FqkifK?4nh%0nrAkBUGKp(fg2m%(urr`Q zuoxm#T#xQB?r`@Ng>bxOIRd+K6ol~-m1fy7HG#;}f@k?w!?7{QaojFTk?-{@>$|VRw+8DQ)kEBbG4jXx4QHY4N(gE)CNn zt9VWz$6zqQmeBDT;1aGPB9Xyz62%k>bmh7rERYXia{zEy?E`$p(_v}6M&J-z-pABg zBNE|0rV=B(_6)>i75Z!B@hELjonYGDP4vXt$LQ*Tc{g;&?QT?DGf>l zd7_Fv2^^e*&y5d+DWpn~*~5m;A>uaq4?)pH(<5>SEPus*tG;j#-7f2qp9q5raN#+E zie4k15jFD^c#hA{&~1&gWjPBL8jf*`j>s)Q#ziJHJo!HC$PZAUFY-eW#^s4lF2s$@ zwOAyeD4dP^KE3zWu3f?v{tDpBz->fNlO5WHtoP`PzV03Z(mlA{8{ifq-|!48l)Me9 zDe+9^Nn7A0gw+qVQfO}XsY`{D#(7E<;}uOX6;TPbt~Ik z80J}>-zD}2u_W)a8l$i!W)YBgaB6Ay5nA^2K}RU#!vLi$-^I1?d;9BHhaFQ|>EF60 zSRGR8n&3?EW&d~c73N1h2H}#x4`|3jcbvJ*1@vljp>w9s2W~(S(<)_UM%_1zvbT(} Tf0)Dmh7aB_FZ^q?QuF==6 None: + _CACERT_CTX.__exit__(None, None, None) # type: ignore[union-attr] + + +if sys.version_info >= (3, 11): + + from importlib.resources import as_file, files + + _CACERT_CTX = None + _CACERT_PATH = None + + def where() -> str: + # This is slightly terrible, but we want to delay extracting the file + # in cases where we're inside of a zipimport situation until someone + # actually calls where(), but we don't want to re-extract the file + # on every call of where(), so we'll do it once then store it in a + # global variable. + global _CACERT_CTX + global _CACERT_PATH + if _CACERT_PATH is None: + # This is slightly janky, the importlib.resources API wants you to + # manage the cleanup of this file, so it doesn't actually return a + # path, it returns a context manager that will give you the path + # when you enter it and will do any cleanup when you leave it. In + # the common case of not needing a temporary file, it will just + # return the file system location and the __exit__() is a no-op. + # + # We also have to hold onto the actual context manager, because + # it will do the cleanup whenever it gets garbage collected, so + # we will also store that at the global level as well. + _CACERT_CTX = as_file(files("certifi").joinpath("cacert.pem")) + _CACERT_PATH = str(_CACERT_CTX.__enter__()) + atexit.register(exit_cacert_ctx) + + return _CACERT_PATH + + def contents() -> str: + return files("certifi").joinpath("cacert.pem").read_text(encoding="ascii") + +elif sys.version_info >= (3, 7): + + from importlib.resources import path as get_path, read_text + + _CACERT_CTX = None + _CACERT_PATH = None + + def where() -> str: + # This is slightly terrible, but we want to delay extracting the + # file in cases where we're inside of a zipimport situation until + # someone actually calls where(), but we don't want to re-extract + # the file on every call of where(), so we'll do it once then store + # it in a global variable. + global _CACERT_CTX + global _CACERT_PATH + if _CACERT_PATH is None: + # This is slightly janky, the importlib.resources API wants you + # to manage the cleanup of this file, so it doesn't actually + # return a path, it returns a context manager that will give + # you the path when you enter it and will do any cleanup when + # you leave it. In the common case of not needing a temporary + # file, it will just return the file system location and the + # __exit__() is a no-op. + # + # We also have to hold onto the actual context manager, because + # it will do the cleanup whenever it gets garbage collected, so + # we will also store that at the global level as well. + _CACERT_CTX = get_path("certifi", "cacert.pem") + _CACERT_PATH = str(_CACERT_CTX.__enter__()) + atexit.register(exit_cacert_ctx) + + return _CACERT_PATH + + def contents() -> str: + return read_text("certifi", "cacert.pem", encoding="ascii") + +else: + import os + import types + from typing import Union + + Package = Union[types.ModuleType, str] + Resource = Union[str, "os.PathLike"] + + # This fallback will work for Python versions prior to 3.7 that lack the + # importlib.resources module but relies on the existing `where` function + # so won't address issues with environments like PyOxidizer that don't set + # __file__ on modules. + def read_text( + package: Package, + resource: Resource, + encoding: str = 'utf-8', + errors: str = 'strict' + ) -> str: + with open(where(), encoding=encoding) as data: + return data.read() + + # If we don't have importlib.resources, then we will just do the old logic + # of assuming we're on the filesystem and munge the path directly. + def where() -> str: + f = os.path.dirname(__file__) + + return os.path.join(f, "cacert.pem") + + def contents() -> str: + return read_text("certifi", "cacert.pem", encoding="ascii") diff --git a/venv/Lib/site-packages/certifi/py.typed b/venv/Lib/site-packages/certifi/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/INSTALLER b/venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/LICENSE b/venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/LICENSE new file mode 100644 index 0000000..ad82355 --- /dev/null +++ b/venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 TAHRI Ahmed R. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/METADATA b/venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/METADATA new file mode 100644 index 0000000..b19096b --- /dev/null +++ b/venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/METADATA @@ -0,0 +1,695 @@ +Metadata-Version: 2.1 +Name: charset-normalizer +Version: 3.4.0 +Summary: The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet. +Home-page: https://github.com/Ousret/charset_normalizer +Author: Ahmed TAHRI +Author-email: tahri.ahmed@proton.me +License: MIT +Project-URL: Bug Reports, https://github.com/Ousret/charset_normalizer/issues +Project-URL: Documentation, https://charset-normalizer.readthedocs.io/en/latest +Keywords: encoding,charset,charset-detector,detector,normalization,unicode,chardet,detect +Classifier: Development Status :: 5 - Production/Stable +Classifier: License :: OSI Approved :: MIT License +Classifier: Intended Audience :: Developers +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Topic :: Text Processing :: Linguistic +Classifier: Topic :: Utilities +Classifier: Typing :: Typed +Requires-Python: >=3.7.0 +Description-Content-Type: text/markdown +License-File: LICENSE +Provides-Extra: unicode_backport + +

Charset Detection, for Everyone 👋

+ +

+ The Real First Universal Charset Detector
+ + + + + Download Count Total + + + + +

+

+ Featured Packages
+ + Static Badge + + + Static Badge + +

+

+ In other language (unofficial port - by the community)
+ + Static Badge + +

+ +> A library that helps you read text from an unknown charset encoding.
Motivated by `chardet`, +> I'm trying to resolve the issue by taking a new approach. +> All IANA character set names for which the Python core library provides codecs are supported. + +

+ >>>>> 👉 Try Me Online Now, Then Adopt Me 👈 <<<<< +

+ +This project offers you an alternative to **Universal Charset Encoding Detector**, also known as **Chardet**. + +| Feature | [Chardet](https://github.com/chardet/chardet) | Charset Normalizer | [cChardet](https://github.com/PyYoshi/cChardet) | +|--------------------------------------------------|:---------------------------------------------:|:--------------------------------------------------------------------------------------------------:|:-----------------------------------------------:| +| `Fast` | ❌ | ✅ | ✅ | +| `Universal**` | ❌ | ✅ | ❌ | +| `Reliable` **without** distinguishable standards | ❌ | ✅ | ✅ | +| `Reliable` **with** distinguishable standards | ✅ | ✅ | ✅ | +| `License` | LGPL-2.1
_restrictive_ | MIT | MPL-1.1
_restrictive_ | +| `Native Python` | ✅ | ✅ | ❌ | +| `Detect spoken language` | ❌ | ✅ | N/A | +| `UnicodeDecodeError Safety` | ❌ | ✅ | ❌ | +| `Whl Size (min)` | 193.6 kB | 42 kB | ~200 kB | +| `Supported Encoding` | 33 | 🎉 [99](https://charset-normalizer.readthedocs.io/en/latest/user/support.html#supported-encodings) | 40 | + +

+Reading Normalized TextCat Reading Text +

+ +*\*\* : They are clearly using specific code for a specific encoding even if covering most of used one*
+Did you got there because of the logs? See [https://charset-normalizer.readthedocs.io/en/latest/user/miscellaneous.html](https://charset-normalizer.readthedocs.io/en/latest/user/miscellaneous.html) + +## ⚡ Performance + +This package offer better performance than its counterpart Chardet. Here are some numbers. + +| Package | Accuracy | Mean per file (ms) | File per sec (est) | +|-----------------------------------------------|:--------:|:------------------:|:------------------:| +| [chardet](https://github.com/chardet/chardet) | 86 % | 200 ms | 5 file/sec | +| charset-normalizer | **98 %** | **10 ms** | 100 file/sec | + +| Package | 99th percentile | 95th percentile | 50th percentile | +|-----------------------------------------------|:---------------:|:---------------:|:---------------:| +| [chardet](https://github.com/chardet/chardet) | 1200 ms | 287 ms | 23 ms | +| charset-normalizer | 100 ms | 50 ms | 5 ms | + +Chardet's performance on larger file (1MB+) are very poor. Expect huge difference on large payload. + +> Stats are generated using 400+ files using default parameters. More details on used files, see GHA workflows. +> And yes, these results might change at any time. The dataset can be updated to include more files. +> The actual delays heavily depends on your CPU capabilities. The factors should remain the same. +> Keep in mind that the stats are generous and that Chardet accuracy vs our is measured using Chardet initial capability +> (eg. Supported Encoding) Challenge-them if you want. + +## ✨ Installation + +Using pip: + +```sh +pip install charset-normalizer -U +``` + +## 🚀 Basic Usage + +### CLI +This package comes with a CLI. + +``` +usage: normalizer [-h] [-v] [-a] [-n] [-m] [-r] [-f] [-t THRESHOLD] + file [file ...] + +The Real First Universal Charset Detector. Discover originating encoding used +on text file. Normalize text to unicode. + +positional arguments: + files File(s) to be analysed + +optional arguments: + -h, --help show this help message and exit + -v, --verbose Display complementary information about file if any. + Stdout will contain logs about the detection process. + -a, --with-alternative + Output complementary possibilities if any. Top-level + JSON WILL be a list. + -n, --normalize Permit to normalize input file. If not set, program + does not write anything. + -m, --minimal Only output the charset detected to STDOUT. Disabling + JSON output. + -r, --replace Replace file when trying to normalize it instead of + creating a new one. + -f, --force Replace file without asking if you are sure, use this + flag with caution. + -t THRESHOLD, --threshold THRESHOLD + Define a custom maximum amount of chaos allowed in + decoded content. 0. <= chaos <= 1. + --version Show version information and exit. +``` + +```bash +normalizer ./data/sample.1.fr.srt +``` + +or + +```bash +python -m charset_normalizer ./data/sample.1.fr.srt +``` + +🎉 Since version 1.4.0 the CLI produce easily usable stdout result in JSON format. + +```json +{ + "path": "/home/default/projects/charset_normalizer/data/sample.1.fr.srt", + "encoding": "cp1252", + "encoding_aliases": [ + "1252", + "windows_1252" + ], + "alternative_encodings": [ + "cp1254", + "cp1256", + "cp1258", + "iso8859_14", + "iso8859_15", + "iso8859_16", + "iso8859_3", + "iso8859_9", + "latin_1", + "mbcs" + ], + "language": "French", + "alphabets": [ + "Basic Latin", + "Latin-1 Supplement" + ], + "has_sig_or_bom": false, + "chaos": 0.149, + "coherence": 97.152, + "unicode_path": null, + "is_preferred": true +} +``` + +### Python +*Just print out normalized text* +```python +from charset_normalizer import from_path + +results = from_path('./my_subtitle.srt') + +print(str(results.best())) +``` + +*Upgrade your code without effort* +```python +from charset_normalizer import detect +``` + +The above code will behave the same as **chardet**. We ensure that we offer the best (reasonable) BC result possible. + +See the docs for advanced usage : [readthedocs.io](https://charset-normalizer.readthedocs.io/en/latest/) + +## 😇 Why + +When I started using Chardet, I noticed that it was not suited to my expectations, and I wanted to propose a +reliable alternative using a completely different method. Also! I never back down on a good challenge! + +I **don't care** about the **originating charset** encoding, because **two different tables** can +produce **two identical rendered string.** +What I want is to get readable text, the best I can. + +In a way, **I'm brute forcing text decoding.** How cool is that ? 😎 + +Don't confuse package **ftfy** with charset-normalizer or chardet. ftfy goal is to repair unicode string whereas charset-normalizer to convert raw file in unknown encoding to unicode. + +## 🍰 How + + - Discard all charset encoding table that could not fit the binary content. + - Measure noise, or the mess once opened (by chunks) with a corresponding charset encoding. + - Extract matches with the lowest mess detected. + - Additionally, we measure coherence / probe for a language. + +**Wait a minute**, what is noise/mess and coherence according to **YOU ?** + +*Noise :* I opened hundred of text files, **written by humans**, with the wrong encoding table. **I observed**, then +**I established** some ground rules about **what is obvious** when **it seems like** a mess. + I know that my interpretation of what is noise is probably incomplete, feel free to contribute in order to + improve or rewrite it. + +*Coherence :* For each language there is on earth, we have computed ranked letter appearance occurrences (the best we can). So I thought +that intel is worth something here. So I use those records against decoded text to check if I can detect intelligent design. + +## ⚡ Known limitations + + - Language detection is unreliable when text contains two or more languages sharing identical letters. (eg. HTML (english tags) + Turkish content (Sharing Latin characters)) + - Every charset detector heavily depends on sufficient content. In common cases, do not bother run detection on very tiny content. + +## ⚠️ About Python EOLs + +**If you are running:** + +- Python >=2.7,<3.5: Unsupported +- Python 3.5: charset-normalizer < 2.1 +- Python 3.6: charset-normalizer < 3.1 +- Python 3.7: charset-normalizer < 4.0 + +Upgrade your Python interpreter as soon as possible. + +## 👤 Contributing + +Contributions, issues and feature requests are very much welcome.
+Feel free to check [issues page](https://github.com/ousret/charset_normalizer/issues) if you want to contribute. + +## 📝 License + +Copyright © [Ahmed TAHRI @Ousret](https://github.com/Ousret).
+This project is [MIT](https://github.com/Ousret/charset_normalizer/blob/master/LICENSE) licensed. + +Characters frequencies used in this project © 2012 [Denny Vrandečić](http://simia.net/letters/) + +## 💼 For Enterprise + +Professional support for charset-normalizer is available as part of the [Tidelift +Subscription][1]. Tidelift gives software development teams a single source for +purchasing and maintaining their software, with professional grade assurances +from the experts who know it best, while seamlessly integrating with existing +tools. + +[1]: https://tidelift.com/subscription/pkg/pypi-charset-normalizer?utm_source=pypi-charset-normalizer&utm_medium=readme + +# Changelog +All notable changes to charset-normalizer will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). + +## [3.4.0](https://github.com/Ousret/charset_normalizer/compare/3.3.2...3.4.0) (2024-10-08) + +### Added +- Argument `--no-preemptive` in the CLI to prevent the detector to search for hints. +- Support for Python 3.13 (#512) + +### Fixed +- Relax the TypeError exception thrown when trying to compare a CharsetMatch with anything else than a CharsetMatch. +- Improved the general reliability of the detector based on user feedbacks. (#520) (#509) (#498) (#407) (#537) +- Declared charset in content (preemptive detection) not changed when converting to utf-8 bytes. (#381) + +## [3.3.2](https://github.com/Ousret/charset_normalizer/compare/3.3.1...3.3.2) (2023-10-31) + +### Fixed +- Unintentional memory usage regression when using large payload that match several encoding (#376) +- Regression on some detection case showcased in the documentation (#371) + +### Added +- Noise (md) probe that identify malformed arabic representation due to the presence of letters in isolated form (credit to my wife) + +## [3.3.1](https://github.com/Ousret/charset_normalizer/compare/3.3.0...3.3.1) (2023-10-22) + +### Changed +- Optional mypyc compilation upgraded to version 1.6.1 for Python >= 3.8 +- Improved the general detection reliability based on reports from the community + +## [3.3.0](https://github.com/Ousret/charset_normalizer/compare/3.2.0...3.3.0) (2023-09-30) + +### Added +- Allow to execute the CLI (e.g. normalizer) through `python -m charset_normalizer.cli` or `python -m charset_normalizer` +- Support for 9 forgotten encoding that are supported by Python but unlisted in `encoding.aliases` as they have no alias (#323) + +### Removed +- (internal) Redundant utils.is_ascii function and unused function is_private_use_only +- (internal) charset_normalizer.assets is moved inside charset_normalizer.constant + +### Changed +- (internal) Unicode code blocks in constants are updated using the latest v15.0.0 definition to improve detection +- Optional mypyc compilation upgraded to version 1.5.1 for Python >= 3.8 + +### Fixed +- Unable to properly sort CharsetMatch when both chaos/noise and coherence were close due to an unreachable condition in \_\_lt\_\_ (#350) + +## [3.2.0](https://github.com/Ousret/charset_normalizer/compare/3.1.0...3.2.0) (2023-06-07) + +### Changed +- Typehint for function `from_path` no longer enforce `PathLike` as its first argument +- Minor improvement over the global detection reliability + +### Added +- Introduce function `is_binary` that relies on main capabilities, and optimized to detect binaries +- Propagate `enable_fallback` argument throughout `from_bytes`, `from_path`, and `from_fp` that allow a deeper control over the detection (default True) +- Explicit support for Python 3.12 + +### Fixed +- Edge case detection failure where a file would contain 'very-long' camel cased word (Issue #289) + +## [3.1.0](https://github.com/Ousret/charset_normalizer/compare/3.0.1...3.1.0) (2023-03-06) + +### Added +- Argument `should_rename_legacy` for legacy function `detect` and disregard any new arguments without errors (PR #262) + +### Removed +- Support for Python 3.6 (PR #260) + +### Changed +- Optional speedup provided by mypy/c 1.0.1 + +## [3.0.1](https://github.com/Ousret/charset_normalizer/compare/3.0.0...3.0.1) (2022-11-18) + +### Fixed +- Multi-bytes cutter/chunk generator did not always cut correctly (PR #233) + +### Changed +- Speedup provided by mypy/c 0.990 on Python >= 3.7 + +## [3.0.0](https://github.com/Ousret/charset_normalizer/compare/2.1.1...3.0.0) (2022-10-20) + +### Added +- Extend the capability of explain=True when cp_isolation contains at most two entries (min one), will log in details of the Mess-detector results +- Support for alternative language frequency set in charset_normalizer.assets.FREQUENCIES +- Add parameter `language_threshold` in `from_bytes`, `from_path` and `from_fp` to adjust the minimum expected coherence ratio +- `normalizer --version` now specify if current version provide extra speedup (meaning mypyc compilation whl) + +### Changed +- Build with static metadata using 'build' frontend +- Make the language detection stricter +- Optional: Module `md.py` can be compiled using Mypyc to provide an extra speedup up to 4x faster than v2.1 + +### Fixed +- CLI with opt --normalize fail when using full path for files +- TooManyAccentuatedPlugin induce false positive on the mess detection when too few alpha character have been fed to it +- Sphinx warnings when generating the documentation + +### Removed +- Coherence detector no longer return 'Simple English' instead return 'English' +- Coherence detector no longer return 'Classical Chinese' instead return 'Chinese' +- Breaking: Method `first()` and `best()` from CharsetMatch +- UTF-7 will no longer appear as "detected" without a recognized SIG/mark (is unreliable/conflict with ASCII) +- Breaking: Class aliases CharsetDetector, CharsetDoctor, CharsetNormalizerMatch and CharsetNormalizerMatches +- Breaking: Top-level function `normalize` +- Breaking: Properties `chaos_secondary_pass`, `coherence_non_latin` and `w_counter` from CharsetMatch +- Support for the backport `unicodedata2` + +## [3.0.0rc1](https://github.com/Ousret/charset_normalizer/compare/3.0.0b2...3.0.0rc1) (2022-10-18) + +### Added +- Extend the capability of explain=True when cp_isolation contains at most two entries (min one), will log in details of the Mess-detector results +- Support for alternative language frequency set in charset_normalizer.assets.FREQUENCIES +- Add parameter `language_threshold` in `from_bytes`, `from_path` and `from_fp` to adjust the minimum expected coherence ratio + +### Changed +- Build with static metadata using 'build' frontend +- Make the language detection stricter + +### Fixed +- CLI with opt --normalize fail when using full path for files +- TooManyAccentuatedPlugin induce false positive on the mess detection when too few alpha character have been fed to it + +### Removed +- Coherence detector no longer return 'Simple English' instead return 'English' +- Coherence detector no longer return 'Classical Chinese' instead return 'Chinese' + +## [3.0.0b2](https://github.com/Ousret/charset_normalizer/compare/3.0.0b1...3.0.0b2) (2022-08-21) + +### Added +- `normalizer --version` now specify if current version provide extra speedup (meaning mypyc compilation whl) + +### Removed +- Breaking: Method `first()` and `best()` from CharsetMatch +- UTF-7 will no longer appear as "detected" without a recognized SIG/mark (is unreliable/conflict with ASCII) + +### Fixed +- Sphinx warnings when generating the documentation + +## [3.0.0b1](https://github.com/Ousret/charset_normalizer/compare/2.1.0...3.0.0b1) (2022-08-15) + +### Changed +- Optional: Module `md.py` can be compiled using Mypyc to provide an extra speedup up to 4x faster than v2.1 + +### Removed +- Breaking: Class aliases CharsetDetector, CharsetDoctor, CharsetNormalizerMatch and CharsetNormalizerMatches +- Breaking: Top-level function `normalize` +- Breaking: Properties `chaos_secondary_pass`, `coherence_non_latin` and `w_counter` from CharsetMatch +- Support for the backport `unicodedata2` + +## [2.1.1](https://github.com/Ousret/charset_normalizer/compare/2.1.0...2.1.1) (2022-08-19) + +### Deprecated +- Function `normalize` scheduled for removal in 3.0 + +### Changed +- Removed useless call to decode in fn is_unprintable (#206) + +### Fixed +- Third-party library (i18n xgettext) crashing not recognizing utf_8 (PEP 263) with underscore from [@aleksandernovikov](https://github.com/aleksandernovikov) (#204) + +## [2.1.0](https://github.com/Ousret/charset_normalizer/compare/2.0.12...2.1.0) (2022-06-19) + +### Added +- Output the Unicode table version when running the CLI with `--version` (PR #194) + +### Changed +- Re-use decoded buffer for single byte character sets from [@nijel](https://github.com/nijel) (PR #175) +- Fixing some performance bottlenecks from [@deedy5](https://github.com/deedy5) (PR #183) + +### Fixed +- Workaround potential bug in cpython with Zero Width No-Break Space located in Arabic Presentation Forms-B, Unicode 1.1 not acknowledged as space (PR #175) +- CLI default threshold aligned with the API threshold from [@oleksandr-kuzmenko](https://github.com/oleksandr-kuzmenko) (PR #181) + +### Removed +- Support for Python 3.5 (PR #192) + +### Deprecated +- Use of backport unicodedata from `unicodedata2` as Python is quickly catching up, scheduled for removal in 3.0 (PR #194) + +## [2.0.12](https://github.com/Ousret/charset_normalizer/compare/2.0.11...2.0.12) (2022-02-12) + +### Fixed +- ASCII miss-detection on rare cases (PR #170) + +## [2.0.11](https://github.com/Ousret/charset_normalizer/compare/2.0.10...2.0.11) (2022-01-30) + +### Added +- Explicit support for Python 3.11 (PR #164) + +### Changed +- The logging behavior have been completely reviewed, now using only TRACE and DEBUG levels (PR #163 #165) + +## [2.0.10](https://github.com/Ousret/charset_normalizer/compare/2.0.9...2.0.10) (2022-01-04) + +### Fixed +- Fallback match entries might lead to UnicodeDecodeError for large bytes sequence (PR #154) + +### Changed +- Skipping the language-detection (CD) on ASCII (PR #155) + +## [2.0.9](https://github.com/Ousret/charset_normalizer/compare/2.0.8...2.0.9) (2021-12-03) + +### Changed +- Moderating the logging impact (since 2.0.8) for specific environments (PR #147) + +### Fixed +- Wrong logging level applied when setting kwarg `explain` to True (PR #146) + +## [2.0.8](https://github.com/Ousret/charset_normalizer/compare/2.0.7...2.0.8) (2021-11-24) +### Changed +- Improvement over Vietnamese detection (PR #126) +- MD improvement on trailing data and long foreign (non-pure latin) data (PR #124) +- Efficiency improvements in cd/alphabet_languages from [@adbar](https://github.com/adbar) (PR #122) +- call sum() without an intermediary list following PEP 289 recommendations from [@adbar](https://github.com/adbar) (PR #129) +- Code style as refactored by Sourcery-AI (PR #131) +- Minor adjustment on the MD around european words (PR #133) +- Remove and replace SRTs from assets / tests (PR #139) +- Initialize the library logger with a `NullHandler` by default from [@nmaynes](https://github.com/nmaynes) (PR #135) +- Setting kwarg `explain` to True will add provisionally (bounded to function lifespan) a specific stream handler (PR #135) + +### Fixed +- Fix large (misleading) sequence giving UnicodeDecodeError (PR #137) +- Avoid using too insignificant chunk (PR #137) + +### Added +- Add and expose function `set_logging_handler` to configure a specific StreamHandler from [@nmaynes](https://github.com/nmaynes) (PR #135) +- Add `CHANGELOG.md` entries, format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) (PR #141) + +## [2.0.7](https://github.com/Ousret/charset_normalizer/compare/2.0.6...2.0.7) (2021-10-11) +### Added +- Add support for Kazakh (Cyrillic) language detection (PR #109) + +### Changed +- Further, improve inferring the language from a given single-byte code page (PR #112) +- Vainly trying to leverage PEP263 when PEP3120 is not supported (PR #116) +- Refactoring for potential performance improvements in loops from [@adbar](https://github.com/adbar) (PR #113) +- Various detection improvement (MD+CD) (PR #117) + +### Removed +- Remove redundant logging entry about detected language(s) (PR #115) + +### Fixed +- Fix a minor inconsistency between Python 3.5 and other versions regarding language detection (PR #117 #102) + +## [2.0.6](https://github.com/Ousret/charset_normalizer/compare/2.0.5...2.0.6) (2021-09-18) +### Fixed +- Unforeseen regression with the loss of the backward-compatibility with some older minor of Python 3.5.x (PR #100) +- Fix CLI crash when using --minimal output in certain cases (PR #103) + +### Changed +- Minor improvement to the detection efficiency (less than 1%) (PR #106 #101) + +## [2.0.5](https://github.com/Ousret/charset_normalizer/compare/2.0.4...2.0.5) (2021-09-14) +### Changed +- The project now comply with: flake8, mypy, isort and black to ensure a better overall quality (PR #81) +- The BC-support with v1.x was improved, the old staticmethods are restored (PR #82) +- The Unicode detection is slightly improved (PR #93) +- Add syntax sugar \_\_bool\_\_ for results CharsetMatches list-container (PR #91) + +### Removed +- The project no longer raise warning on tiny content given for detection, will be simply logged as warning instead (PR #92) + +### Fixed +- In some rare case, the chunks extractor could cut in the middle of a multi-byte character and could mislead the mess detection (PR #95) +- Some rare 'space' characters could trip up the UnprintablePlugin/Mess detection (PR #96) +- The MANIFEST.in was not exhaustive (PR #78) + +## [2.0.4](https://github.com/Ousret/charset_normalizer/compare/2.0.3...2.0.4) (2021-07-30) +### Fixed +- The CLI no longer raise an unexpected exception when no encoding has been found (PR #70) +- Fix accessing the 'alphabets' property when the payload contains surrogate characters (PR #68) +- The logger could mislead (explain=True) on detected languages and the impact of one MBCS match (PR #72) +- Submatch factoring could be wrong in rare edge cases (PR #72) +- Multiple files given to the CLI were ignored when publishing results to STDOUT. (After the first path) (PR #72) +- Fix line endings from CRLF to LF for certain project files (PR #67) + +### Changed +- Adjust the MD to lower the sensitivity, thus improving the global detection reliability (PR #69 #76) +- Allow fallback on specified encoding if any (PR #71) + +## [2.0.3](https://github.com/Ousret/charset_normalizer/compare/2.0.2...2.0.3) (2021-07-16) +### Changed +- Part of the detection mechanism has been improved to be less sensitive, resulting in more accurate detection results. Especially ASCII. (PR #63) +- According to the community wishes, the detection will fall back on ASCII or UTF-8 in a last-resort case. (PR #64) + +## [2.0.2](https://github.com/Ousret/charset_normalizer/compare/2.0.1...2.0.2) (2021-07-15) +### Fixed +- Empty/Too small JSON payload miss-detection fixed. Report from [@tseaver](https://github.com/tseaver) (PR #59) + +### Changed +- Don't inject unicodedata2 into sys.modules from [@akx](https://github.com/akx) (PR #57) + +## [2.0.1](https://github.com/Ousret/charset_normalizer/compare/2.0.0...2.0.1) (2021-07-13) +### Fixed +- Make it work where there isn't a filesystem available, dropping assets frequencies.json. Report from [@sethmlarson](https://github.com/sethmlarson). (PR #55) +- Using explain=False permanently disable the verbose output in the current runtime (PR #47) +- One log entry (language target preemptive) was not show in logs when using explain=True (PR #47) +- Fix undesired exception (ValueError) on getitem of instance CharsetMatches (PR #52) + +### Changed +- Public function normalize default args values were not aligned with from_bytes (PR #53) + +### Added +- You may now use charset aliases in cp_isolation and cp_exclusion arguments (PR #47) + +## [2.0.0](https://github.com/Ousret/charset_normalizer/compare/1.4.1...2.0.0) (2021-07-02) +### Changed +- 4x to 5 times faster than the previous 1.4.0 release. At least 2x faster than Chardet. +- Accent has been made on UTF-8 detection, should perform rather instantaneous. +- The backward compatibility with Chardet has been greatly improved. The legacy detect function returns an identical charset name whenever possible. +- The detection mechanism has been slightly improved, now Turkish content is detected correctly (most of the time) +- The program has been rewritten to ease the readability and maintainability. (+Using static typing)+ +- utf_7 detection has been reinstated. + +### Removed +- This package no longer require anything when used with Python 3.5 (Dropped cached_property) +- Removed support for these languages: Catalan, Esperanto, Kazakh, Baque, Volapük, Azeri, Galician, Nynorsk, Macedonian, and Serbocroatian. +- The exception hook on UnicodeDecodeError has been removed. + +### Deprecated +- Methods coherence_non_latin, w_counter, chaos_secondary_pass of the class CharsetMatch are now deprecated and scheduled for removal in v3.0 + +### Fixed +- The CLI output used the relative path of the file(s). Should be absolute. + +## [1.4.1](https://github.com/Ousret/charset_normalizer/compare/1.4.0...1.4.1) (2021-05-28) +### Fixed +- Logger configuration/usage no longer conflict with others (PR #44) + +## [1.4.0](https://github.com/Ousret/charset_normalizer/compare/1.3.9...1.4.0) (2021-05-21) +### Removed +- Using standard logging instead of using the package loguru. +- Dropping nose test framework in favor of the maintained pytest. +- Choose to not use dragonmapper package to help with gibberish Chinese/CJK text. +- Require cached_property only for Python 3.5 due to constraint. Dropping for every other interpreter version. +- Stop support for UTF-7 that does not contain a SIG. +- Dropping PrettyTable, replaced with pure JSON output in CLI. + +### Fixed +- BOM marker in a CharsetNormalizerMatch instance could be False in rare cases even if obviously present. Due to the sub-match factoring process. +- Not searching properly for the BOM when trying utf32/16 parent codec. + +### Changed +- Improving the package final size by compressing frequencies.json. +- Huge improvement over the larges payload. + +### Added +- CLI now produces JSON consumable output. +- Return ASCII if given sequences fit. Given reasonable confidence. + +## [1.3.9](https://github.com/Ousret/charset_normalizer/compare/1.3.8...1.3.9) (2021-05-13) + +### Fixed +- In some very rare cases, you may end up getting encode/decode errors due to a bad bytes payload (PR #40) + +## [1.3.8](https://github.com/Ousret/charset_normalizer/compare/1.3.7...1.3.8) (2021-05-12) + +### Fixed +- Empty given payload for detection may cause an exception if trying to access the `alphabets` property. (PR #39) + +## [1.3.7](https://github.com/Ousret/charset_normalizer/compare/1.3.6...1.3.7) (2021-05-12) + +### Fixed +- The legacy detect function should return UTF-8-SIG if sig is present in the payload. (PR #38) + +## [1.3.6](https://github.com/Ousret/charset_normalizer/compare/1.3.5...1.3.6) (2021-02-09) + +### Changed +- Amend the previous release to allow prettytable 2.0 (PR #35) + +## [1.3.5](https://github.com/Ousret/charset_normalizer/compare/1.3.4...1.3.5) (2021-02-08) + +### Fixed +- Fix error while using the package with a python pre-release interpreter (PR #33) + +### Changed +- Dependencies refactoring, constraints revised. + +### Added +- Add python 3.9 and 3.10 to the supported interpreters + +MIT License + +Copyright (c) 2019 TAHRI Ahmed R. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/RECORD b/venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/RECORD new file mode 100644 index 0000000..fffd10a --- /dev/null +++ b/venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/RECORD @@ -0,0 +1,35 @@ +../../Scripts/normalizer.exe,sha256=LhghjEIDudCOiSoq10D58i9CeIj32PDOYDy3LH5tEb0,106365 +charset_normalizer-3.4.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +charset_normalizer-3.4.0.dist-info/LICENSE,sha256=znnj1Var_lZ-hzOvD5W50wcQDp9qls3SD2xIau88ufc,1090 +charset_normalizer-3.4.0.dist-info/METADATA,sha256=2QS4C4DhTVUvM6D7xbkbYXoqvcMOB1pC3VhZwLLTK5U,34854 +charset_normalizer-3.4.0.dist-info/RECORD,, +charset_normalizer-3.4.0.dist-info/WHEEL,sha256=0ZjvOlAkRhiFz0IEm5kQrC9Db9zGCLzyOcgLl0kpzxU,101 +charset_normalizer-3.4.0.dist-info/entry_points.txt,sha256=ADSTKrkXZ3hhdOVFi6DcUEHQRS0xfxDIE_pEz4wLIXA,65 +charset_normalizer-3.4.0.dist-info/top_level.txt,sha256=7ASyzePr8_xuZWJsnqJjIBtyV8vhEo0wBCv1MPRRi3Q,19 +charset_normalizer/__init__.py,sha256=m1cUEsb9K5v831m9P_lv2JlUEKD7MhxL7fxw3hn75o4,1623 +charset_normalizer/__main__.py,sha256=nVnMo31hTPN2Yy045GJIvHj3dKDJz4dAQR3cUSdvYyc,77 +charset_normalizer/__pycache__/__init__.cpython-310.pyc,, +charset_normalizer/__pycache__/__main__.cpython-310.pyc,, +charset_normalizer/__pycache__/api.cpython-310.pyc,, +charset_normalizer/__pycache__/cd.cpython-310.pyc,, +charset_normalizer/__pycache__/constant.cpython-310.pyc,, +charset_normalizer/__pycache__/legacy.cpython-310.pyc,, +charset_normalizer/__pycache__/md.cpython-310.pyc,, +charset_normalizer/__pycache__/models.cpython-310.pyc,, +charset_normalizer/__pycache__/utils.cpython-310.pyc,, +charset_normalizer/__pycache__/version.cpython-310.pyc,, +charset_normalizer/api.py,sha256=UTUEjC-tSRJidpK_EtoKUyz0ZCSGo48c0Y4kQQk3mRU,23227 +charset_normalizer/cd.py,sha256=Yfk3sbee0Xqo1-vmQYbOqM51-SajXPLzFVG89nTsZzc,12955 +charset_normalizer/cli/__init__.py,sha256=COwP8fK2qbuldMem2lL81JieY-PIA2G2GZ5IdAPMPFA,106 +charset_normalizer/cli/__main__.py,sha256=kjtGg9jjjstm6n-Krwl9RHRLUuqt3TBhj2HTANgHeoA,10731 +charset_normalizer/cli/__pycache__/__init__.cpython-310.pyc,, +charset_normalizer/cli/__pycache__/__main__.cpython-310.pyc,, +charset_normalizer/constant.py,sha256=Me7a2oelmsWf1Qxxx5plYiBAGTi80Rsno5vY5J8KCPA,42496 +charset_normalizer/legacy.py,sha256=4GdkmwaDlS1ZIjaviydyNLGy6NBGn8ls2EOclmqty7Q,2392 +charset_normalizer/md.cp310-win_amd64.pyd,sha256=RaBDxLfGVW8qz8gn8v83k2UIjDR56O6Ax_CizrhY3MY,10752 +charset_normalizer/md.py,sha256=Cowcdx3IZsA0JvV78T54mT0G_v5fgV0ru2v_FPEHHhw,20766 +charset_normalizer/md__mypyc.cp310-win_amd64.pyd,sha256=9kbDtytefAhaZrSES1rXqaRRHWGy10FTR5syx64LGkw,122368 +charset_normalizer/models.py,sha256=VK66OdSgzOeU5_FYUU20g_luLd4euUS1ht4xt70P4XU,12784 +charset_normalizer/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +charset_normalizer/utils.py,sha256=jjvfSXHJD6QPgxcxIx4utsOFx3PxFssWef1IYxA3uKs,12315 +charset_normalizer/version.py,sha256=xn34_xESX5WRojjgDI7kfulQHYH443JYyR18Ns1DM8c,85 diff --git a/venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/WHEEL b/venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/WHEEL new file mode 100644 index 0000000..d538e59 --- /dev/null +++ b/venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (75.1.0) +Root-Is-Purelib: false +Tag: cp310-cp310-win_amd64 + diff --git a/venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/entry_points.txt b/venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/entry_points.txt new file mode 100644 index 0000000..65619e7 --- /dev/null +++ b/venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/entry_points.txt @@ -0,0 +1,2 @@ +[console_scripts] +normalizer = charset_normalizer.cli:cli_detect diff --git a/venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/top_level.txt b/venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/top_level.txt new file mode 100644 index 0000000..66958f0 --- /dev/null +++ b/venv/Lib/site-packages/charset_normalizer-3.4.0.dist-info/top_level.txt @@ -0,0 +1 @@ +charset_normalizer diff --git a/venv/Lib/site-packages/charset_normalizer/__init__.py b/venv/Lib/site-packages/charset_normalizer/__init__.py new file mode 100644 index 0000000..55991fc --- /dev/null +++ b/venv/Lib/site-packages/charset_normalizer/__init__.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +""" +Charset-Normalizer +~~~~~~~~~~~~~~ +The Real First Universal Charset Detector. +A library that helps you read text from an unknown charset encoding. +Motivated by chardet, This package is trying to resolve the issue by taking a new approach. +All IANA character set names for which the Python core library provides codecs are supported. + +Basic usage: + >>> from charset_normalizer import from_bytes + >>> results = from_bytes('Bсеки човек има право на образование. Oбразованието!'.encode('utf_8')) + >>> best_guess = results.best() + >>> str(best_guess) + 'Bсеки човек има право на образование. Oбразованието!' + +Others methods and usages are available - see the full documentation +at . +:copyright: (c) 2021 by Ahmed TAHRI +:license: MIT, see LICENSE for more details. +""" +import logging + +from .api import from_bytes, from_fp, from_path, is_binary +from .legacy import detect +from .models import CharsetMatch, CharsetMatches +from .utils import set_logging_handler +from .version import VERSION, __version__ + +__all__ = ( + "from_fp", + "from_path", + "from_bytes", + "is_binary", + "detect", + "CharsetMatch", + "CharsetMatches", + "__version__", + "VERSION", + "set_logging_handler", +) + +# Attach a NullHandler to the top level logger by default +# https://docs.python.org/3.3/howto/logging.html#configuring-logging-for-a-library + +logging.getLogger("charset_normalizer").addHandler(logging.NullHandler()) diff --git a/venv/Lib/site-packages/charset_normalizer/__main__.py b/venv/Lib/site-packages/charset_normalizer/__main__.py new file mode 100644 index 0000000..beae2ef --- /dev/null +++ b/venv/Lib/site-packages/charset_normalizer/__main__.py @@ -0,0 +1,4 @@ +from .cli import cli_detect + +if __name__ == "__main__": + cli_detect() diff --git a/venv/Lib/site-packages/charset_normalizer/__pycache__/__init__.cpython-310.pyc b/venv/Lib/site-packages/charset_normalizer/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d0eb8168a13ca026c8063970a1101acca61c27bd GIT binary patch literal 1563 zcmcIkOHUj}5T03KOua=98#KG_HzjjAo z)g0$fE8PC7D13^)et{%(JSTL+if}zQoC~X>63=;aan-BF^WJ=1^J=bx`gu{08(yR2 zYoZwwkHjsnRmyd-5HEU*CEpPD;``qHc*$Erx#_*f+*ivXIdfkM z*~>Y{AL7;j2VWs2RdW+o}nl9m_ou%fu^aFG>8zO5U{h^ z-z@#oz%T`vJR~$`8jhuc(})LA>FV=|i6r8aid|=gZpJ)BQ^d*w4HVCGmZnl6+zug6 zspbJ>8Zq_=0Bme*OcS1E=_l7!1|HjM<*`4U7^dG|zUUg)yw?ygVj!1 zf3~)onPdOs)pq+WnjzE1A7xBiKr?6^t6aM_(MGM^n3d}P8!jRH*lwjEX4s_=JCTIb zx=))z$CL{?6b#m}!PD6|&anBR46>Ldh8ivtf;0LgGA7l%Zg<2@lnpz9jJx}pR?Kwo zHf^IrdVx$QijN}GgSDUyk3W3;ksY|rD8`9B+T1?aAw9tZmT1<4y`7^+C4k+XXIuTl zt#Zau*yIK&tAJcg#>Lq`i7R{1Lsfmgv*ZzoH9=I|yDc$|mJe{seIZ99TnazJVhN`3TK&tdgTtNue$n!MyVO_{-)|FT zUnn(i2|f{y!bi+ebxRtSG%Z=Mq-BYH?7Zc>#cID_)O{Zd?)yc37Q2|EDW5vMiDBIr zHNi$Sn3Q3PT8#T8^i8;8J~LRYGFDNaL7j%TKx`l?1O{r3nAycVnJNek!|iFRMXQg^ zp9w!YYQ^HV$5jU5AJ5z^?jajCD;Dd%F5EeW&tbA literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/charset_normalizer/__pycache__/__main__.cpython-310.pyc b/venv/Lib/site-packages/charset_normalizer/__pycache__/__main__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5c48069ba5592b0eb2c9122009f335dc002f0a1d GIT binary patch literal 247 zcmd1j<>g`kf^Tnq(tUySV-N=!FabFZKwPW@BvKes7;_kM8KW2(8B&>2n6jCQ_){61 z85kK-n1jJsljS8NP@yK{Ew1F8%=nbllGNmqTO9H6xrv#1@$r6|%(s|<5=9_mLBe^7 zxvBB-D;bK|fC6CRmxqg0Ohig*Sxi!9Qch-mNosatOj&APS&UC+QcQ7XNvdu^Vsdt3 zdTMb@az|Uy9tI93E=HFB E01OF19RL6T literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/charset_normalizer/__pycache__/api.cpython-310.pyc b/venv/Lib/site-packages/charset_normalizer/__pycache__/api.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fb05eb83d9215d79c812de8d3b79fbe41298df5c GIT binary patch literal 11718 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 F{~ue`?o0px literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/charset_normalizer/__pycache__/cd.cpython-310.pyc b/venv/Lib/site-packages/charset_normalizer/__pycache__/cd.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..404e43e4383aa204a591c8d9f45f1d5e24acd1db GIT binary patch literal 9659 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/charset_normalizer/__pycache__/constant.cpython-310.pyc b/venv/Lib/site-packages/charset_normalizer/__pycache__/constant.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4071183ea4193a941f4f90e710b46aae7b3243d4 GIT binary patch literal 30435 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 SJ?|mS!Lw)2`$!vl=Klj%kyC8| literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/charset_normalizer/__pycache__/legacy.cpython-310.pyc b/venv/Lib/site-packages/charset_normalizer/__pycache__/legacy.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1c4770d6e502a8f327cbcb2158fc1ccfbdb4aa40 GIT binary patch literal 2168 zcmZ`*TW=IM6duoIcXqOy1PB3okt|gztVGhPs?-*t0!lVOK>>vz(P_|VcI@2@nXwn! zld$RLrQu(+mBM5Hl3)8orAmG315z)?p3UW<9ck_3b8Me;zH{;NPA78U`}6mQ!)GnW z`PD4Wem*R2I}Vb&KoEzZ!YNUVkfGheExp(){n#&qIIujgXq3&k3A9gwA}m{R%hHV^ zDre#ugNLsHQ(xRP1FP?2huSUhzGL|a{zM#<|f!4>S%+?s!-;}{m!v<-$^B&>yWaHlbj8;2WuS`DH~Sl zknYc&>>Ct3RnK*laW=>a?5FEpUx!J;(vl{Lj*_J0q$&*EPLh{ZT1+K#Npc3RB>BY= z3t+b$-mR_P*m_3j?p8nV7dcmSC*9hmY4%2MBJQ|A`xUmC28Nv`bAqr6&S?-z+4cLisEU>Wa1-Z?uf+T`k6YE>F-{-v0 zjU5QqPzsZ8x*@2l1j}4l9Dhw9%qcO9Z1P%S@n#dXy*+yh6=nE9yv#yRjN9tkQW zzM6P1It-EEz@KvN0%w*qc06GzkTnm2sceIUAf3DH*b|K@H=FpRwd0BmWb-ikB>KXE z`w*F_9Kk2PI=2h6IydpJ7`{IVCJoa5$%7>7q~8D(5r)r1gHVNQ@Nh}hHYZlHN)^o% zR@)RGrxoS{yB_8cTWo@WAsmoz%lN*+bu@6F;*v{MjBy`A4pAUW881grW&MIK+pBxi zG{q)vcrPysT&619#w$~6_#VT1B3E!V-rJ^(?oxqATuOTfzP8R4=Iqoidr!q=H5zfD zC;{7WuDVv)=5{XepkkS+V+=H*BSEv&Y)ctAV|FEhr8qA0p#U)+^9r;I{=(ouQ<)dz z>lg~hl%K_c@T@8+t2+oDaA6e=DgmGgoHO8nU!Zmw8;eI!j|@}*8w*{{N~i$XUsgHT4vx!P_Ky8))1qEFEow}1DWI+epe%+KCW)`UL)Z5| zyb919C)`P3APE8HYu)|Nd#^@70ZzPckvB;PJ=9_$F<@svNrgxu8bhvb;O{>@Sl7*` zY==SKXlGcL_#d})P^m%krS=n<57)Y$XoEz|nqdxx?s@Hj6QTjM_FwRvX}`#&(*6z| zOC9AhXHumAyl$PS6qn3y+thnPaG@J@khO1Y6sB!K2ci(f6J>D#=y0jMJ}(8liB7jE z7GV;X&G4Q%fyC){YujmS6&KBhMh(vepye_Q;jD`;BmbXS-$gEpkpFiSK&y1myC0xM zwCIOu-VKrK8ENA$u>?ofyJ)Q&)|!nIwfZZDGB(&wDc(1fX~Nxk^Arp!=$r5q2-7)r z16+iP6z1Kkw+DtDnr9LCvPRNNN4doz4o$59fXaFupR122^p&Danm1RN{|Z)}weXD7 j_GPi2hd1l@=xg)tO2cnE3vL^HZ6n`ngP(45{-1vVHN;`R literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/charset_normalizer/__pycache__/md.cpython-310.pyc b/venv/Lib/site-packages/charset_normalizer/__pycache__/md.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..635cadd54c8790c7e54abbbca87b4bd6f9b867ab GIT binary patch literal 15986 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/charset_normalizer/__pycache__/version.cpython-310.pyc b/venv/Lib/site-packages/charset_normalizer/__pycache__/version.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9a70886a966bf6197571dcf0c721e6e67980580b GIT binary patch literal 249 zcmd1j<>g`kf^Tnq(nEptV-N=!FatRbKwK;aBvKfn7*ZIc7*iP+Fr_dpWQ<}?VGd@{ zWT_J1a;+%HFHTh`OD!tS%+KShVl~z?(KEQksOP82a*I7aJ|#anKK>SWd^}VIki%MB zkds+*i#^OWDA?2AZzV$!8_*6g@yp%CDkdT&wJatnGbtxCza%v~F{UgvuPnwVGbyGx zvm{lwATc>RF+H_7COIRqs5rGGJ} CharsetMatches: + """ + Given a raw bytes sequence, return the best possibles charset usable to render str objects. + If there is no results, it is a strong indicator that the source is binary/not text. + By default, the process will extract 5 blocks of 512o each to assess the mess and coherence of a given sequence. + And will give up a particular code page after 20% of measured mess. Those criteria are customizable at will. + + The preemptive behavior DOES NOT replace the traditional detection workflow, it prioritize a particular code page + but never take it for granted. Can improve the performance. + + You may want to focus your attention to some code page or/and not others, use cp_isolation and cp_exclusion for that + purpose. + + This function will strip the SIG in the payload/sequence every time except on UTF-16, UTF-32. + By default the library does not setup any handler other than the NullHandler, if you choose to set the 'explain' + toggle to True it will alter the logger configuration to add a StreamHandler that is suitable for debugging. + Custom logging format and handler can be set manually. + """ + + if not isinstance(sequences, (bytearray, bytes)): + raise TypeError( + "Expected object of type bytes or bytearray, got: {0}".format( + type(sequences) + ) + ) + + if explain: + previous_logger_level: int = logger.level + logger.addHandler(explain_handler) + logger.setLevel(TRACE) + + length: int = len(sequences) + + if length == 0: + logger.debug("Encoding detection on empty bytes, assuming utf_8 intention.") + if explain: + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level or logging.WARNING) + return CharsetMatches([CharsetMatch(sequences, "utf_8", 0.0, False, [], "")]) + + if cp_isolation is not None: + logger.log( + TRACE, + "cp_isolation is set. use this flag for debugging purpose. " + "limited list of encoding allowed : %s.", + ", ".join(cp_isolation), + ) + cp_isolation = [iana_name(cp, False) for cp in cp_isolation] + else: + cp_isolation = [] + + if cp_exclusion is not None: + logger.log( + TRACE, + "cp_exclusion is set. use this flag for debugging purpose. " + "limited list of encoding excluded : %s.", + ", ".join(cp_exclusion), + ) + cp_exclusion = [iana_name(cp, False) for cp in cp_exclusion] + else: + cp_exclusion = [] + + if length <= (chunk_size * steps): + logger.log( + TRACE, + "override steps (%i) and chunk_size (%i) as content does not fit (%i byte(s) given) parameters.", + steps, + chunk_size, + length, + ) + steps = 1 + chunk_size = length + + if steps > 1 and length / steps < chunk_size: + chunk_size = int(length / steps) + + is_too_small_sequence: bool = len(sequences) < TOO_SMALL_SEQUENCE + is_too_large_sequence: bool = len(sequences) >= TOO_BIG_SEQUENCE + + if is_too_small_sequence: + logger.log( + TRACE, + "Trying to detect encoding from a tiny portion of ({}) byte(s).".format( + length + ), + ) + elif is_too_large_sequence: + logger.log( + TRACE, + "Using lazy str decoding because the payload is quite large, ({}) byte(s).".format( + length + ), + ) + + prioritized_encodings: List[str] = [] + + specified_encoding: Optional[str] = ( + any_specified_encoding(sequences) if preemptive_behaviour else None + ) + + if specified_encoding is not None: + prioritized_encodings.append(specified_encoding) + logger.log( + TRACE, + "Detected declarative mark in sequence. Priority +1 given for %s.", + specified_encoding, + ) + + tested: Set[str] = set() + tested_but_hard_failure: List[str] = [] + tested_but_soft_failure: List[str] = [] + + fallback_ascii: Optional[CharsetMatch] = None + fallback_u8: Optional[CharsetMatch] = None + fallback_specified: Optional[CharsetMatch] = None + + results: CharsetMatches = CharsetMatches() + + early_stop_results: CharsetMatches = CharsetMatches() + + sig_encoding, sig_payload = identify_sig_or_bom(sequences) + + if sig_encoding is not None: + prioritized_encodings.append(sig_encoding) + logger.log( + TRACE, + "Detected a SIG or BOM mark on first %i byte(s). Priority +1 given for %s.", + len(sig_payload), + sig_encoding, + ) + + prioritized_encodings.append("ascii") + + if "utf_8" not in prioritized_encodings: + prioritized_encodings.append("utf_8") + + for encoding_iana in prioritized_encodings + IANA_SUPPORTED: + if cp_isolation and encoding_iana not in cp_isolation: + continue + + if cp_exclusion and encoding_iana in cp_exclusion: + continue + + if encoding_iana in tested: + continue + + tested.add(encoding_iana) + + decoded_payload: Optional[str] = None + bom_or_sig_available: bool = sig_encoding == encoding_iana + strip_sig_or_bom: bool = bom_or_sig_available and should_strip_sig_or_bom( + encoding_iana + ) + + if encoding_iana in {"utf_16", "utf_32"} and not bom_or_sig_available: + logger.log( + TRACE, + "Encoding %s won't be tested as-is because it require a BOM. Will try some sub-encoder LE/BE.", + encoding_iana, + ) + continue + if encoding_iana in {"utf_7"} and not bom_or_sig_available: + logger.log( + TRACE, + "Encoding %s won't be tested as-is because detection is unreliable without BOM/SIG.", + encoding_iana, + ) + continue + + try: + is_multi_byte_decoder: bool = is_multi_byte_encoding(encoding_iana) + except (ModuleNotFoundError, ImportError): + logger.log( + TRACE, + "Encoding %s does not provide an IncrementalDecoder", + encoding_iana, + ) + continue + + try: + if is_too_large_sequence and is_multi_byte_decoder is False: + str( + ( + sequences[: int(50e4)] + if strip_sig_or_bom is False + else sequences[len(sig_payload) : int(50e4)] + ), + encoding=encoding_iana, + ) + else: + decoded_payload = str( + ( + sequences + if strip_sig_or_bom is False + else sequences[len(sig_payload) :] + ), + encoding=encoding_iana, + ) + except (UnicodeDecodeError, LookupError) as e: + if not isinstance(e, LookupError): + logger.log( + TRACE, + "Code page %s does not fit given bytes sequence at ALL. %s", + encoding_iana, + str(e), + ) + tested_but_hard_failure.append(encoding_iana) + continue + + similar_soft_failure_test: bool = False + + for encoding_soft_failed in tested_but_soft_failure: + if is_cp_similar(encoding_iana, encoding_soft_failed): + similar_soft_failure_test = True + break + + if similar_soft_failure_test: + logger.log( + TRACE, + "%s is deemed too similar to code page %s and was consider unsuited already. Continuing!", + encoding_iana, + encoding_soft_failed, + ) + continue + + r_ = range( + 0 if not bom_or_sig_available else len(sig_payload), + length, + int(length / steps), + ) + + multi_byte_bonus: bool = ( + is_multi_byte_decoder + and decoded_payload is not None + and len(decoded_payload) < length + ) + + if multi_byte_bonus: + logger.log( + TRACE, + "Code page %s is a multi byte encoding table and it appear that at least one character " + "was encoded using n-bytes.", + encoding_iana, + ) + + max_chunk_gave_up: int = int(len(r_) / 4) + + max_chunk_gave_up = max(max_chunk_gave_up, 2) + early_stop_count: int = 0 + lazy_str_hard_failure = False + + md_chunks: List[str] = [] + md_ratios = [] + + try: + for chunk in cut_sequence_chunks( + sequences, + encoding_iana, + r_, + chunk_size, + bom_or_sig_available, + strip_sig_or_bom, + sig_payload, + is_multi_byte_decoder, + decoded_payload, + ): + md_chunks.append(chunk) + + md_ratios.append( + mess_ratio( + chunk, + threshold, + explain is True and 1 <= len(cp_isolation) <= 2, + ) + ) + + if md_ratios[-1] >= threshold: + early_stop_count += 1 + + if (early_stop_count >= max_chunk_gave_up) or ( + bom_or_sig_available and strip_sig_or_bom is False + ): + break + except ( + UnicodeDecodeError + ) as e: # Lazy str loading may have missed something there + logger.log( + TRACE, + "LazyStr Loading: After MD chunk decode, code page %s does not fit given bytes sequence at ALL. %s", + encoding_iana, + str(e), + ) + early_stop_count = max_chunk_gave_up + lazy_str_hard_failure = True + + # We might want to check the sequence again with the whole content + # Only if initial MD tests passes + if ( + not lazy_str_hard_failure + and is_too_large_sequence + and not is_multi_byte_decoder + ): + try: + sequences[int(50e3) :].decode(encoding_iana, errors="strict") + except UnicodeDecodeError as e: + logger.log( + TRACE, + "LazyStr Loading: After final lookup, code page %s does not fit given bytes sequence at ALL. %s", + encoding_iana, + str(e), + ) + tested_but_hard_failure.append(encoding_iana) + continue + + mean_mess_ratio: float = sum(md_ratios) / len(md_ratios) if md_ratios else 0.0 + if mean_mess_ratio >= threshold or early_stop_count >= max_chunk_gave_up: + tested_but_soft_failure.append(encoding_iana) + logger.log( + TRACE, + "%s was excluded because of initial chaos probing. Gave up %i time(s). " + "Computed mean chaos is %f %%.", + encoding_iana, + early_stop_count, + round(mean_mess_ratio * 100, ndigits=3), + ) + # Preparing those fallbacks in case we got nothing. + if ( + enable_fallback + and encoding_iana in ["ascii", "utf_8", specified_encoding] + and not lazy_str_hard_failure + ): + fallback_entry = CharsetMatch( + sequences, + encoding_iana, + threshold, + False, + [], + decoded_payload, + preemptive_declaration=specified_encoding, + ) + if encoding_iana == specified_encoding: + fallback_specified = fallback_entry + elif encoding_iana == "ascii": + fallback_ascii = fallback_entry + else: + fallback_u8 = fallback_entry + continue + + logger.log( + TRACE, + "%s passed initial chaos probing. Mean measured chaos is %f %%", + encoding_iana, + round(mean_mess_ratio * 100, ndigits=3), + ) + + if not is_multi_byte_decoder: + target_languages: List[str] = encoding_languages(encoding_iana) + else: + target_languages = mb_encoding_languages(encoding_iana) + + if target_languages: + logger.log( + TRACE, + "{} should target any language(s) of {}".format( + encoding_iana, str(target_languages) + ), + ) + + cd_ratios = [] + + # We shall skip the CD when its about ASCII + # Most of the time its not relevant to run "language-detection" on it. + if encoding_iana != "ascii": + for chunk in md_chunks: + chunk_languages = coherence_ratio( + chunk, + language_threshold, + ",".join(target_languages) if target_languages else None, + ) + + cd_ratios.append(chunk_languages) + + cd_ratios_merged = merge_coherence_ratios(cd_ratios) + + if cd_ratios_merged: + logger.log( + TRACE, + "We detected language {} using {}".format( + cd_ratios_merged, encoding_iana + ), + ) + + current_match = CharsetMatch( + sequences, + encoding_iana, + mean_mess_ratio, + bom_or_sig_available, + cd_ratios_merged, + ( + decoded_payload + if ( + is_too_large_sequence is False + or encoding_iana in [specified_encoding, "ascii", "utf_8"] + ) + else None + ), + preemptive_declaration=specified_encoding, + ) + + results.append(current_match) + + if ( + encoding_iana in [specified_encoding, "ascii", "utf_8"] + and mean_mess_ratio < 0.1 + ): + # If md says nothing to worry about, then... stop immediately! + if mean_mess_ratio == 0.0: + logger.debug( + "Encoding detection: %s is most likely the one.", + current_match.encoding, + ) + if explain: + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) + return CharsetMatches([current_match]) + + early_stop_results.append(current_match) + + if ( + len(early_stop_results) + and (specified_encoding is None or specified_encoding in tested) + and "ascii" in tested + and "utf_8" in tested + ): + probable_result: CharsetMatch = early_stop_results.best() # type: ignore[assignment] + logger.debug( + "Encoding detection: %s is most likely the one.", + probable_result.encoding, + ) + if explain: + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) + + return CharsetMatches([probable_result]) + + if encoding_iana == sig_encoding: + logger.debug( + "Encoding detection: %s is most likely the one as we detected a BOM or SIG within " + "the beginning of the sequence.", + encoding_iana, + ) + if explain: + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) + return CharsetMatches([results[encoding_iana]]) + + if len(results) == 0: + if fallback_u8 or fallback_ascii or fallback_specified: + logger.log( + TRACE, + "Nothing got out of the detection process. Using ASCII/UTF-8/Specified fallback.", + ) + + if fallback_specified: + logger.debug( + "Encoding detection: %s will be used as a fallback match", + fallback_specified.encoding, + ) + results.append(fallback_specified) + elif ( + (fallback_u8 and fallback_ascii is None) + or ( + fallback_u8 + and fallback_ascii + and fallback_u8.fingerprint != fallback_ascii.fingerprint + ) + or (fallback_u8 is not None) + ): + logger.debug("Encoding detection: utf_8 will be used as a fallback match") + results.append(fallback_u8) + elif fallback_ascii: + logger.debug("Encoding detection: ascii will be used as a fallback match") + results.append(fallback_ascii) + + if results: + logger.debug( + "Encoding detection: Found %s as plausible (best-candidate) for content. With %i alternatives.", + results.best().encoding, # type: ignore + len(results) - 1, + ) + else: + logger.debug("Encoding detection: Unable to determine any suitable charset.") + + if explain: + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) + + return results + + +def from_fp( + fp: BinaryIO, + steps: int = 5, + chunk_size: int = 512, + threshold: float = 0.20, + cp_isolation: Optional[List[str]] = None, + cp_exclusion: Optional[List[str]] = None, + preemptive_behaviour: bool = True, + explain: bool = False, + language_threshold: float = 0.1, + enable_fallback: bool = True, +) -> CharsetMatches: + """ + Same thing than the function from_bytes but using a file pointer that is already ready. + Will not close the file pointer. + """ + return from_bytes( + fp.read(), + steps, + chunk_size, + threshold, + cp_isolation, + cp_exclusion, + preemptive_behaviour, + explain, + language_threshold, + enable_fallback, + ) + + +def from_path( + path: Union[str, bytes, PathLike], # type: ignore[type-arg] + steps: int = 5, + chunk_size: int = 512, + threshold: float = 0.20, + cp_isolation: Optional[List[str]] = None, + cp_exclusion: Optional[List[str]] = None, + preemptive_behaviour: bool = True, + explain: bool = False, + language_threshold: float = 0.1, + enable_fallback: bool = True, +) -> CharsetMatches: + """ + Same thing than the function from_bytes but with one extra step. Opening and reading given file path in binary mode. + Can raise IOError. + """ + with open(path, "rb") as fp: + return from_fp( + fp, + steps, + chunk_size, + threshold, + cp_isolation, + cp_exclusion, + preemptive_behaviour, + explain, + language_threshold, + enable_fallback, + ) + + +def is_binary( + fp_or_path_or_payload: Union[PathLike, str, BinaryIO, bytes], # type: ignore[type-arg] + steps: int = 5, + chunk_size: int = 512, + threshold: float = 0.20, + cp_isolation: Optional[List[str]] = None, + cp_exclusion: Optional[List[str]] = None, + preemptive_behaviour: bool = True, + explain: bool = False, + language_threshold: float = 0.1, + enable_fallback: bool = False, +) -> bool: + """ + Detect if the given input (file, bytes, or path) points to a binary file. aka. not a string. + Based on the same main heuristic algorithms and default kwargs at the sole exception that fallbacks match + are disabled to be stricter around ASCII-compatible but unlikely to be a string. + """ + if isinstance(fp_or_path_or_payload, (str, PathLike)): + guesses = from_path( + fp_or_path_or_payload, + steps=steps, + chunk_size=chunk_size, + threshold=threshold, + cp_isolation=cp_isolation, + cp_exclusion=cp_exclusion, + preemptive_behaviour=preemptive_behaviour, + explain=explain, + language_threshold=language_threshold, + enable_fallback=enable_fallback, + ) + elif isinstance( + fp_or_path_or_payload, + ( + bytes, + bytearray, + ), + ): + guesses = from_bytes( + fp_or_path_or_payload, + steps=steps, + chunk_size=chunk_size, + threshold=threshold, + cp_isolation=cp_isolation, + cp_exclusion=cp_exclusion, + preemptive_behaviour=preemptive_behaviour, + explain=explain, + language_threshold=language_threshold, + enable_fallback=enable_fallback, + ) + else: + guesses = from_fp( + fp_or_path_or_payload, + steps=steps, + chunk_size=chunk_size, + threshold=threshold, + cp_isolation=cp_isolation, + cp_exclusion=cp_exclusion, + preemptive_behaviour=preemptive_behaviour, + explain=explain, + language_threshold=language_threshold, + enable_fallback=enable_fallback, + ) + + return not guesses diff --git a/venv/Lib/site-packages/charset_normalizer/cd.py b/venv/Lib/site-packages/charset_normalizer/cd.py new file mode 100644 index 0000000..4ea6760 --- /dev/null +++ b/venv/Lib/site-packages/charset_normalizer/cd.py @@ -0,0 +1,395 @@ +import importlib +from codecs import IncrementalDecoder +from collections import Counter +from functools import lru_cache +from typing import Counter as TypeCounter, Dict, List, Optional, Tuple + +from .constant import ( + FREQUENCIES, + KO_NAMES, + LANGUAGE_SUPPORTED_COUNT, + TOO_SMALL_SEQUENCE, + ZH_NAMES, +) +from .md import is_suspiciously_successive_range +from .models import CoherenceMatches +from .utils import ( + is_accentuated, + is_latin, + is_multi_byte_encoding, + is_unicode_range_secondary, + unicode_range, +) + + +def encoding_unicode_range(iana_name: str) -> List[str]: + """ + Return associated unicode ranges in a single byte code page. + """ + if is_multi_byte_encoding(iana_name): + raise IOError("Function not supported on multi-byte code page") + + decoder = importlib.import_module( + "encodings.{}".format(iana_name) + ).IncrementalDecoder + + p: IncrementalDecoder = decoder(errors="ignore") + seen_ranges: Dict[str, int] = {} + character_count: int = 0 + + for i in range(0x40, 0xFF): + chunk: str = p.decode(bytes([i])) + + if chunk: + character_range: Optional[str] = unicode_range(chunk) + + if character_range is None: + continue + + if is_unicode_range_secondary(character_range) is False: + if character_range not in seen_ranges: + seen_ranges[character_range] = 0 + seen_ranges[character_range] += 1 + character_count += 1 + + return sorted( + [ + character_range + for character_range in seen_ranges + if seen_ranges[character_range] / character_count >= 0.15 + ] + ) + + +def unicode_range_languages(primary_range: str) -> List[str]: + """ + Return inferred languages used with a unicode range. + """ + languages: List[str] = [] + + for language, characters in FREQUENCIES.items(): + for character in characters: + if unicode_range(character) == primary_range: + languages.append(language) + break + + return languages + + +@lru_cache() +def encoding_languages(iana_name: str) -> List[str]: + """ + Single-byte encoding language association. Some code page are heavily linked to particular language(s). + This function does the correspondence. + """ + unicode_ranges: List[str] = encoding_unicode_range(iana_name) + primary_range: Optional[str] = None + + for specified_range in unicode_ranges: + if "Latin" not in specified_range: + primary_range = specified_range + break + + if primary_range is None: + return ["Latin Based"] + + return unicode_range_languages(primary_range) + + +@lru_cache() +def mb_encoding_languages(iana_name: str) -> List[str]: + """ + Multi-byte encoding language association. Some code page are heavily linked to particular language(s). + This function does the correspondence. + """ + if ( + iana_name.startswith("shift_") + or iana_name.startswith("iso2022_jp") + or iana_name.startswith("euc_j") + or iana_name == "cp932" + ): + return ["Japanese"] + if iana_name.startswith("gb") or iana_name in ZH_NAMES: + return ["Chinese"] + if iana_name.startswith("iso2022_kr") or iana_name in KO_NAMES: + return ["Korean"] + + return [] + + +@lru_cache(maxsize=LANGUAGE_SUPPORTED_COUNT) +def get_target_features(language: str) -> Tuple[bool, bool]: + """ + Determine main aspects from a supported language if it contains accents and if is pure Latin. + """ + target_have_accents: bool = False + target_pure_latin: bool = True + + for character in FREQUENCIES[language]: + if not target_have_accents and is_accentuated(character): + target_have_accents = True + if target_pure_latin and is_latin(character) is False: + target_pure_latin = False + + return target_have_accents, target_pure_latin + + +def alphabet_languages( + characters: List[str], ignore_non_latin: bool = False +) -> List[str]: + """ + Return associated languages associated to given characters. + """ + languages: List[Tuple[str, float]] = [] + + source_have_accents = any(is_accentuated(character) for character in characters) + + for language, language_characters in FREQUENCIES.items(): + target_have_accents, target_pure_latin = get_target_features(language) + + if ignore_non_latin and target_pure_latin is False: + continue + + if target_have_accents is False and source_have_accents: + continue + + character_count: int = len(language_characters) + + character_match_count: int = len( + [c for c in language_characters if c in characters] + ) + + ratio: float = character_match_count / character_count + + if ratio >= 0.2: + languages.append((language, ratio)) + + languages = sorted(languages, key=lambda x: x[1], reverse=True) + + return [compatible_language[0] for compatible_language in languages] + + +def characters_popularity_compare( + language: str, ordered_characters: List[str] +) -> float: + """ + Determine if a ordered characters list (by occurrence from most appearance to rarest) match a particular language. + The result is a ratio between 0. (absolutely no correspondence) and 1. (near perfect fit). + Beware that is function is not strict on the match in order to ease the detection. (Meaning close match is 1.) + """ + if language not in FREQUENCIES: + raise ValueError("{} not available".format(language)) + + character_approved_count: int = 0 + FREQUENCIES_language_set = set(FREQUENCIES[language]) + + ordered_characters_count: int = len(ordered_characters) + target_language_characters_count: int = len(FREQUENCIES[language]) + + large_alphabet: bool = target_language_characters_count > 26 + + for character, character_rank in zip( + ordered_characters, range(0, ordered_characters_count) + ): + if character not in FREQUENCIES_language_set: + continue + + character_rank_in_language: int = FREQUENCIES[language].index(character) + expected_projection_ratio: float = ( + target_language_characters_count / ordered_characters_count + ) + character_rank_projection: int = int(character_rank * expected_projection_ratio) + + if ( + large_alphabet is False + and abs(character_rank_projection - character_rank_in_language) > 4 + ): + continue + + if ( + large_alphabet is True + and abs(character_rank_projection - character_rank_in_language) + < target_language_characters_count / 3 + ): + character_approved_count += 1 + continue + + characters_before_source: List[str] = FREQUENCIES[language][ + 0:character_rank_in_language + ] + characters_after_source: List[str] = FREQUENCIES[language][ + character_rank_in_language: + ] + characters_before: List[str] = ordered_characters[0:character_rank] + characters_after: List[str] = ordered_characters[character_rank:] + + before_match_count: int = len( + set(characters_before) & set(characters_before_source) + ) + + after_match_count: int = len( + set(characters_after) & set(characters_after_source) + ) + + if len(characters_before_source) == 0 and before_match_count <= 4: + character_approved_count += 1 + continue + + if len(characters_after_source) == 0 and after_match_count <= 4: + character_approved_count += 1 + continue + + if ( + before_match_count / len(characters_before_source) >= 0.4 + or after_match_count / len(characters_after_source) >= 0.4 + ): + character_approved_count += 1 + continue + + return character_approved_count / len(ordered_characters) + + +def alpha_unicode_split(decoded_sequence: str) -> List[str]: + """ + Given a decoded text sequence, return a list of str. Unicode range / alphabet separation. + Ex. a text containing English/Latin with a bit a Hebrew will return two items in the resulting list; + One containing the latin letters and the other hebrew. + """ + layers: Dict[str, str] = {} + + for character in decoded_sequence: + if character.isalpha() is False: + continue + + character_range: Optional[str] = unicode_range(character) + + if character_range is None: + continue + + layer_target_range: Optional[str] = None + + for discovered_range in layers: + if ( + is_suspiciously_successive_range(discovered_range, character_range) + is False + ): + layer_target_range = discovered_range + break + + if layer_target_range is None: + layer_target_range = character_range + + if layer_target_range not in layers: + layers[layer_target_range] = character.lower() + continue + + layers[layer_target_range] += character.lower() + + return list(layers.values()) + + +def merge_coherence_ratios(results: List[CoherenceMatches]) -> CoherenceMatches: + """ + This function merge results previously given by the function coherence_ratio. + The return type is the same as coherence_ratio. + """ + per_language_ratios: Dict[str, List[float]] = {} + for result in results: + for sub_result in result: + language, ratio = sub_result + if language not in per_language_ratios: + per_language_ratios[language] = [ratio] + continue + per_language_ratios[language].append(ratio) + + merge = [ + ( + language, + round( + sum(per_language_ratios[language]) / len(per_language_ratios[language]), + 4, + ), + ) + for language in per_language_ratios + ] + + return sorted(merge, key=lambda x: x[1], reverse=True) + + +def filter_alt_coherence_matches(results: CoherenceMatches) -> CoherenceMatches: + """ + We shall NOT return "English—" in CoherenceMatches because it is an alternative + of "English". This function only keeps the best match and remove the em-dash in it. + """ + index_results: Dict[str, List[float]] = dict() + + for result in results: + language, ratio = result + no_em_name: str = language.replace("—", "") + + if no_em_name not in index_results: + index_results[no_em_name] = [] + + index_results[no_em_name].append(ratio) + + if any(len(index_results[e]) > 1 for e in index_results): + filtered_results: CoherenceMatches = [] + + for language in index_results: + filtered_results.append((language, max(index_results[language]))) + + return filtered_results + + return results + + +@lru_cache(maxsize=2048) +def coherence_ratio( + decoded_sequence: str, threshold: float = 0.1, lg_inclusion: Optional[str] = None +) -> CoherenceMatches: + """ + Detect ANY language that can be identified in given sequence. The sequence will be analysed by layers. + A layer = Character extraction by alphabets/ranges. + """ + + results: List[Tuple[str, float]] = [] + ignore_non_latin: bool = False + + sufficient_match_count: int = 0 + + lg_inclusion_list = lg_inclusion.split(",") if lg_inclusion is not None else [] + if "Latin Based" in lg_inclusion_list: + ignore_non_latin = True + lg_inclusion_list.remove("Latin Based") + + for layer in alpha_unicode_split(decoded_sequence): + sequence_frequencies: TypeCounter[str] = Counter(layer) + most_common = sequence_frequencies.most_common() + + character_count: int = sum(o for c, o in most_common) + + if character_count <= TOO_SMALL_SEQUENCE: + continue + + popular_character_ordered: List[str] = [c for c, o in most_common] + + for language in lg_inclusion_list or alphabet_languages( + popular_character_ordered, ignore_non_latin + ): + ratio: float = characters_popularity_compare( + language, popular_character_ordered + ) + + if ratio < threshold: + continue + elif ratio >= 0.8: + sufficient_match_count += 1 + + results.append((language, round(ratio, 4))) + + if sufficient_match_count >= 3: + break + + return sorted( + filter_alt_coherence_matches(results), key=lambda x: x[1], reverse=True + ) diff --git a/venv/Lib/site-packages/charset_normalizer/cli/__init__.py b/venv/Lib/site-packages/charset_normalizer/cli/__init__.py new file mode 100644 index 0000000..d95fedf --- /dev/null +++ b/venv/Lib/site-packages/charset_normalizer/cli/__init__.py @@ -0,0 +1,6 @@ +from .__main__ import cli_detect, query_yes_no + +__all__ = ( + "cli_detect", + "query_yes_no", +) diff --git a/venv/Lib/site-packages/charset_normalizer/cli/__main__.py b/venv/Lib/site-packages/charset_normalizer/cli/__main__.py new file mode 100644 index 0000000..e7edd0f --- /dev/null +++ b/venv/Lib/site-packages/charset_normalizer/cli/__main__.py @@ -0,0 +1,320 @@ +import argparse +import sys +from json import dumps +from os.path import abspath, basename, dirname, join, realpath +from platform import python_version +from typing import List, Optional +from unicodedata import unidata_version + +import charset_normalizer.md as md_module +from charset_normalizer import from_fp +from charset_normalizer.models import CliDetectionResult +from charset_normalizer.version import __version__ + + +def query_yes_no(question: str, default: str = "yes") -> bool: + """Ask a yes/no question via input() and return their answer. + + "question" is a string that is presented to the user. + "default" is the presumed answer if the user just hits . + It must be "yes" (the default), "no" or None (meaning + an answer is required of the user). + + The "answer" return value is True for "yes" or False for "no". + + Credit goes to (c) https://stackoverflow.com/questions/3041986/apt-command-line-interface-like-yes-no-input + """ + valid = {"yes": True, "y": True, "ye": True, "no": False, "n": False} + if default is None: + prompt = " [y/n] " + elif default == "yes": + prompt = " [Y/n] " + elif default == "no": + prompt = " [y/N] " + else: + raise ValueError("invalid default answer: '%s'" % default) + + while True: + sys.stdout.write(question + prompt) + choice = input().lower() + if default is not None and choice == "": + return valid[default] + elif choice in valid: + return valid[choice] + else: + sys.stdout.write("Please respond with 'yes' or 'no' " "(or 'y' or 'n').\n") + + +def cli_detect(argv: Optional[List[str]] = None) -> int: + """ + CLI assistant using ARGV and ArgumentParser + :param argv: + :return: 0 if everything is fine, anything else equal trouble + """ + parser = argparse.ArgumentParser( + description="The Real First Universal Charset Detector. " + "Discover originating encoding used on text file. " + "Normalize text to unicode." + ) + + parser.add_argument( + "files", type=argparse.FileType("rb"), nargs="+", help="File(s) to be analysed" + ) + parser.add_argument( + "-v", + "--verbose", + action="store_true", + default=False, + dest="verbose", + help="Display complementary information about file if any. " + "Stdout will contain logs about the detection process.", + ) + parser.add_argument( + "-a", + "--with-alternative", + action="store_true", + default=False, + dest="alternatives", + help="Output complementary possibilities if any. Top-level JSON WILL be a list.", + ) + parser.add_argument( + "-n", + "--normalize", + action="store_true", + default=False, + dest="normalize", + help="Permit to normalize input file. If not set, program does not write anything.", + ) + parser.add_argument( + "-m", + "--minimal", + action="store_true", + default=False, + dest="minimal", + help="Only output the charset detected to STDOUT. Disabling JSON output.", + ) + parser.add_argument( + "-r", + "--replace", + action="store_true", + default=False, + dest="replace", + help="Replace file when trying to normalize it instead of creating a new one.", + ) + parser.add_argument( + "-f", + "--force", + action="store_true", + default=False, + dest="force", + help="Replace file without asking if you are sure, use this flag with caution.", + ) + parser.add_argument( + "-i", + "--no-preemptive", + action="store_true", + default=False, + dest="no_preemptive", + help="Disable looking at a charset declaration to hint the detector.", + ) + parser.add_argument( + "-t", + "--threshold", + action="store", + default=0.2, + type=float, + dest="threshold", + help="Define a custom maximum amount of chaos allowed in decoded content. 0. <= chaos <= 1.", + ) + parser.add_argument( + "--version", + action="version", + version="Charset-Normalizer {} - Python {} - Unicode {} - SpeedUp {}".format( + __version__, + python_version(), + unidata_version, + "OFF" if md_module.__file__.lower().endswith(".py") else "ON", + ), + help="Show version information and exit.", + ) + + args = parser.parse_args(argv) + + if args.replace is True and args.normalize is False: + if args.files: + for my_file in args.files: + my_file.close() + print("Use --replace in addition of --normalize only.", file=sys.stderr) + return 1 + + if args.force is True and args.replace is False: + if args.files: + for my_file in args.files: + my_file.close() + print("Use --force in addition of --replace only.", file=sys.stderr) + return 1 + + if args.threshold < 0.0 or args.threshold > 1.0: + if args.files: + for my_file in args.files: + my_file.close() + print("--threshold VALUE should be between 0. AND 1.", file=sys.stderr) + return 1 + + x_ = [] + + for my_file in args.files: + matches = from_fp( + my_file, + threshold=args.threshold, + explain=args.verbose, + preemptive_behaviour=args.no_preemptive is False, + ) + + best_guess = matches.best() + + if best_guess is None: + print( + 'Unable to identify originating encoding for "{}". {}'.format( + my_file.name, + ( + "Maybe try increasing maximum amount of chaos." + if args.threshold < 1.0 + else "" + ), + ), + file=sys.stderr, + ) + x_.append( + CliDetectionResult( + abspath(my_file.name), + None, + [], + [], + "Unknown", + [], + False, + 1.0, + 0.0, + None, + True, + ) + ) + else: + x_.append( + CliDetectionResult( + abspath(my_file.name), + best_guess.encoding, + best_guess.encoding_aliases, + [ + cp + for cp in best_guess.could_be_from_charset + if cp != best_guess.encoding + ], + best_guess.language, + best_guess.alphabets, + best_guess.bom, + best_guess.percent_chaos, + best_guess.percent_coherence, + None, + True, + ) + ) + + if len(matches) > 1 and args.alternatives: + for el in matches: + if el != best_guess: + x_.append( + CliDetectionResult( + abspath(my_file.name), + el.encoding, + el.encoding_aliases, + [ + cp + for cp in el.could_be_from_charset + if cp != el.encoding + ], + el.language, + el.alphabets, + el.bom, + el.percent_chaos, + el.percent_coherence, + None, + False, + ) + ) + + if args.normalize is True: + if best_guess.encoding.startswith("utf") is True: + print( + '"{}" file does not need to be normalized, as it already came from unicode.'.format( + my_file.name + ), + file=sys.stderr, + ) + if my_file.closed is False: + my_file.close() + continue + + dir_path = dirname(realpath(my_file.name)) + file_name = basename(realpath(my_file.name)) + + o_: List[str] = file_name.split(".") + + if args.replace is False: + o_.insert(-1, best_guess.encoding) + if my_file.closed is False: + my_file.close() + elif ( + args.force is False + and query_yes_no( + 'Are you sure to normalize "{}" by replacing it ?'.format( + my_file.name + ), + "no", + ) + is False + ): + if my_file.closed is False: + my_file.close() + continue + + try: + x_[0].unicode_path = join(dir_path, ".".join(o_)) + + with open(x_[0].unicode_path, "wb") as fp: + fp.write(best_guess.output()) + except IOError as e: + print(str(e), file=sys.stderr) + if my_file.closed is False: + my_file.close() + return 2 + + if my_file.closed is False: + my_file.close() + + if args.minimal is False: + print( + dumps( + [el.__dict__ for el in x_] if len(x_) > 1 else x_[0].__dict__, + ensure_ascii=True, + indent=4, + ) + ) + else: + for my_file in args.files: + print( + ", ".join( + [ + el.encoding or "undefined" + for el in x_ + if el.path == abspath(my_file.name) + ] + ) + ) + + return 0 + + +if __name__ == "__main__": + cli_detect() diff --git a/venv/Lib/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-310.pyc b/venv/Lib/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8af236d3d5434f84e07289aa13f9cbaabd3dc5f9 GIT binary patch literal 250 zcmYk0u}TCn5QdZNq08ZcrLVAscfE*MSS~g;vIK_gW;n-7cF!cYu)dM6l-A0^*22n3 z=MVD@{|wCh(`K_4te@|8|H}QdnEz62?z!R>!wM^%@UoL$bxN}9DyyDEQ+-KZH!80O zM_@7Gkn+Xb3Bv*lMi{5ZW|eCIZ)gMvK#o9 z4@S>8&bp;uM@o2oG{eE{G3w#Pgoueh1aBO@W7u(o9RQ7#0Jg^^*SCJMCx>?>V_Y#V HMXmk-=-orf literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/charset_normalizer/cli/__pycache__/__main__.cpython-310.pyc b/venv/Lib/site-packages/charset_normalizer/cli/__pycache__/__main__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b3154e5788e4a997c82d74bda536c49f95e5dc12 GIT binary patch literal 6727 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 aA(Ua1eujeI{?wt@jn9nFa=Ty^oBs>;#9pcZ literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/charset_normalizer/constant.py b/venv/Lib/site-packages/charset_normalizer/constant.py new file mode 100644 index 0000000..f8f2a81 --- /dev/null +++ b/venv/Lib/site-packages/charset_normalizer/constant.py @@ -0,0 +1,1997 @@ +# -*- coding: utf-8 -*- +from codecs import BOM_UTF8, BOM_UTF16_BE, BOM_UTF16_LE, BOM_UTF32_BE, BOM_UTF32_LE +from encodings.aliases import aliases +from re import IGNORECASE, compile as re_compile +from typing import Dict, List, Set, Union + +# Contain for each eligible encoding a list of/item bytes SIG/BOM +ENCODING_MARKS: Dict[str, Union[bytes, List[bytes]]] = { + "utf_8": BOM_UTF8, + "utf_7": [ + b"\x2b\x2f\x76\x38", + b"\x2b\x2f\x76\x39", + b"\x2b\x2f\x76\x2b", + b"\x2b\x2f\x76\x2f", + b"\x2b\x2f\x76\x38\x2d", + ], + "gb18030": b"\x84\x31\x95\x33", + "utf_32": [BOM_UTF32_BE, BOM_UTF32_LE], + "utf_16": [BOM_UTF16_BE, BOM_UTF16_LE], +} + +TOO_SMALL_SEQUENCE: int = 32 +TOO_BIG_SEQUENCE: int = int(10e6) + +UTF8_MAXIMAL_ALLOCATION: int = 1_112_064 + +# Up-to-date Unicode ucd/15.0.0 +UNICODE_RANGES_COMBINED: Dict[str, range] = { + "Control character": range(32), + "Basic Latin": range(32, 128), + "Latin-1 Supplement": range(128, 256), + "Latin Extended-A": range(256, 384), + "Latin Extended-B": range(384, 592), + "IPA Extensions": range(592, 688), + "Spacing Modifier Letters": range(688, 768), + "Combining Diacritical Marks": range(768, 880), + "Greek and Coptic": range(880, 1024), + "Cyrillic": range(1024, 1280), + "Cyrillic Supplement": range(1280, 1328), + "Armenian": range(1328, 1424), + "Hebrew": range(1424, 1536), + "Arabic": range(1536, 1792), + "Syriac": range(1792, 1872), + "Arabic Supplement": range(1872, 1920), + "Thaana": range(1920, 1984), + "NKo": range(1984, 2048), + "Samaritan": range(2048, 2112), + "Mandaic": range(2112, 2144), + "Syriac Supplement": range(2144, 2160), + "Arabic Extended-B": range(2160, 2208), + "Arabic Extended-A": range(2208, 2304), + "Devanagari": range(2304, 2432), + "Bengali": range(2432, 2560), + "Gurmukhi": range(2560, 2688), + "Gujarati": range(2688, 2816), + "Oriya": range(2816, 2944), + "Tamil": range(2944, 3072), + "Telugu": range(3072, 3200), + "Kannada": range(3200, 3328), + "Malayalam": range(3328, 3456), + "Sinhala": range(3456, 3584), + "Thai": range(3584, 3712), + "Lao": range(3712, 3840), + "Tibetan": range(3840, 4096), + "Myanmar": range(4096, 4256), + "Georgian": range(4256, 4352), + "Hangul Jamo": range(4352, 4608), + "Ethiopic": range(4608, 4992), + "Ethiopic Supplement": range(4992, 5024), + "Cherokee": range(5024, 5120), + "Unified Canadian Aboriginal Syllabics": range(5120, 5760), + "Ogham": range(5760, 5792), + "Runic": range(5792, 5888), + "Tagalog": range(5888, 5920), + "Hanunoo": range(5920, 5952), + "Buhid": range(5952, 5984), + "Tagbanwa": range(5984, 6016), + "Khmer": range(6016, 6144), + "Mongolian": range(6144, 6320), + "Unified Canadian Aboriginal Syllabics Extended": range(6320, 6400), + "Limbu": range(6400, 6480), + "Tai Le": range(6480, 6528), + "New Tai Lue": range(6528, 6624), + "Khmer Symbols": range(6624, 6656), + "Buginese": range(6656, 6688), + "Tai Tham": range(6688, 6832), + "Combining Diacritical Marks Extended": range(6832, 6912), + "Balinese": range(6912, 7040), + "Sundanese": range(7040, 7104), + "Batak": range(7104, 7168), + "Lepcha": range(7168, 7248), + "Ol Chiki": range(7248, 7296), + "Cyrillic Extended-C": range(7296, 7312), + "Georgian Extended": range(7312, 7360), + "Sundanese Supplement": range(7360, 7376), + "Vedic Extensions": range(7376, 7424), + "Phonetic Extensions": range(7424, 7552), + "Phonetic Extensions Supplement": range(7552, 7616), + "Combining Diacritical Marks Supplement": range(7616, 7680), + "Latin Extended Additional": range(7680, 7936), + "Greek Extended": range(7936, 8192), + "General Punctuation": range(8192, 8304), + "Superscripts and Subscripts": range(8304, 8352), + "Currency Symbols": range(8352, 8400), + "Combining Diacritical Marks for Symbols": range(8400, 8448), + "Letterlike Symbols": range(8448, 8528), + "Number Forms": range(8528, 8592), + "Arrows": range(8592, 8704), + "Mathematical Operators": range(8704, 8960), + "Miscellaneous Technical": range(8960, 9216), + "Control Pictures": range(9216, 9280), + "Optical Character Recognition": range(9280, 9312), + "Enclosed Alphanumerics": range(9312, 9472), + "Box Drawing": range(9472, 9600), + "Block Elements": range(9600, 9632), + "Geometric Shapes": range(9632, 9728), + "Miscellaneous Symbols": range(9728, 9984), + "Dingbats": range(9984, 10176), + "Miscellaneous Mathematical Symbols-A": range(10176, 10224), + "Supplemental Arrows-A": range(10224, 10240), + "Braille Patterns": range(10240, 10496), + "Supplemental Arrows-B": range(10496, 10624), + "Miscellaneous Mathematical Symbols-B": range(10624, 10752), + "Supplemental Mathematical Operators": range(10752, 11008), + "Miscellaneous Symbols and Arrows": range(11008, 11264), + "Glagolitic": range(11264, 11360), + "Latin Extended-C": range(11360, 11392), + "Coptic": range(11392, 11520), + "Georgian Supplement": range(11520, 11568), + "Tifinagh": range(11568, 11648), + "Ethiopic Extended": range(11648, 11744), + "Cyrillic Extended-A": range(11744, 11776), + "Supplemental Punctuation": range(11776, 11904), + "CJK Radicals Supplement": range(11904, 12032), + "Kangxi Radicals": range(12032, 12256), + "Ideographic Description Characters": range(12272, 12288), + "CJK Symbols and Punctuation": range(12288, 12352), + "Hiragana": range(12352, 12448), + "Katakana": range(12448, 12544), + "Bopomofo": range(12544, 12592), + "Hangul Compatibility Jamo": range(12592, 12688), + "Kanbun": range(12688, 12704), + "Bopomofo Extended": range(12704, 12736), + "CJK Strokes": range(12736, 12784), + "Katakana Phonetic Extensions": range(12784, 12800), + "Enclosed CJK Letters and Months": range(12800, 13056), + "CJK Compatibility": range(13056, 13312), + "CJK Unified Ideographs Extension A": range(13312, 19904), + "Yijing Hexagram Symbols": range(19904, 19968), + "CJK Unified Ideographs": range(19968, 40960), + "Yi Syllables": range(40960, 42128), + "Yi Radicals": range(42128, 42192), + "Lisu": range(42192, 42240), + "Vai": range(42240, 42560), + "Cyrillic Extended-B": range(42560, 42656), + "Bamum": range(42656, 42752), + "Modifier Tone Letters": range(42752, 42784), + "Latin Extended-D": range(42784, 43008), + "Syloti Nagri": range(43008, 43056), + "Common Indic Number Forms": range(43056, 43072), + "Phags-pa": range(43072, 43136), + "Saurashtra": range(43136, 43232), + "Devanagari Extended": range(43232, 43264), + "Kayah Li": range(43264, 43312), + "Rejang": range(43312, 43360), + "Hangul Jamo Extended-A": range(43360, 43392), + "Javanese": range(43392, 43488), + "Myanmar Extended-B": range(43488, 43520), + "Cham": range(43520, 43616), + "Myanmar Extended-A": range(43616, 43648), + "Tai Viet": range(43648, 43744), + "Meetei Mayek Extensions": range(43744, 43776), + "Ethiopic Extended-A": range(43776, 43824), + "Latin Extended-E": range(43824, 43888), + "Cherokee Supplement": range(43888, 43968), + "Meetei Mayek": range(43968, 44032), + "Hangul Syllables": range(44032, 55216), + "Hangul Jamo Extended-B": range(55216, 55296), + "High Surrogates": range(55296, 56192), + "High Private Use Surrogates": range(56192, 56320), + "Low Surrogates": range(56320, 57344), + "Private Use Area": range(57344, 63744), + "CJK Compatibility Ideographs": range(63744, 64256), + "Alphabetic Presentation Forms": range(64256, 64336), + "Arabic Presentation Forms-A": range(64336, 65024), + "Variation Selectors": range(65024, 65040), + "Vertical Forms": range(65040, 65056), + "Combining Half Marks": range(65056, 65072), + "CJK Compatibility Forms": range(65072, 65104), + "Small Form Variants": range(65104, 65136), + "Arabic Presentation Forms-B": range(65136, 65280), + "Halfwidth and Fullwidth Forms": range(65280, 65520), + "Specials": range(65520, 65536), + "Linear B Syllabary": range(65536, 65664), + "Linear B Ideograms": range(65664, 65792), + "Aegean Numbers": range(65792, 65856), + "Ancient Greek Numbers": range(65856, 65936), + "Ancient Symbols": range(65936, 66000), + "Phaistos Disc": range(66000, 66048), + "Lycian": range(66176, 66208), + "Carian": range(66208, 66272), + "Coptic Epact Numbers": range(66272, 66304), + "Old Italic": range(66304, 66352), + "Gothic": range(66352, 66384), + "Old Permic": range(66384, 66432), + "Ugaritic": range(66432, 66464), + "Old Persian": range(66464, 66528), + "Deseret": range(66560, 66640), + "Shavian": range(66640, 66688), + "Osmanya": range(66688, 66736), + "Osage": range(66736, 66816), + "Elbasan": range(66816, 66864), + "Caucasian Albanian": range(66864, 66928), + "Vithkuqi": range(66928, 67008), + "Linear A": range(67072, 67456), + "Latin Extended-F": range(67456, 67520), + "Cypriot Syllabary": range(67584, 67648), + "Imperial Aramaic": range(67648, 67680), + "Palmyrene": range(67680, 67712), + "Nabataean": range(67712, 67760), + "Hatran": range(67808, 67840), + "Phoenician": range(67840, 67872), + "Lydian": range(67872, 67904), + "Meroitic Hieroglyphs": range(67968, 68000), + "Meroitic Cursive": range(68000, 68096), + "Kharoshthi": range(68096, 68192), + "Old South Arabian": range(68192, 68224), + "Old North Arabian": range(68224, 68256), + "Manichaean": range(68288, 68352), + "Avestan": range(68352, 68416), + "Inscriptional Parthian": range(68416, 68448), + "Inscriptional Pahlavi": range(68448, 68480), + "Psalter Pahlavi": range(68480, 68528), + "Old Turkic": range(68608, 68688), + "Old Hungarian": range(68736, 68864), + "Hanifi Rohingya": range(68864, 68928), + "Rumi Numeral Symbols": range(69216, 69248), + "Yezidi": range(69248, 69312), + "Arabic Extended-C": range(69312, 69376), + "Old Sogdian": range(69376, 69424), + "Sogdian": range(69424, 69488), + "Old Uyghur": range(69488, 69552), + "Chorasmian": range(69552, 69600), + "Elymaic": range(69600, 69632), + "Brahmi": range(69632, 69760), + "Kaithi": range(69760, 69840), + "Sora Sompeng": range(69840, 69888), + "Chakma": range(69888, 69968), + "Mahajani": range(69968, 70016), + "Sharada": range(70016, 70112), + "Sinhala Archaic Numbers": range(70112, 70144), + "Khojki": range(70144, 70224), + "Multani": range(70272, 70320), + "Khudawadi": range(70320, 70400), + "Grantha": range(70400, 70528), + "Newa": range(70656, 70784), + "Tirhuta": range(70784, 70880), + "Siddham": range(71040, 71168), + "Modi": range(71168, 71264), + "Mongolian Supplement": range(71264, 71296), + "Takri": range(71296, 71376), + "Ahom": range(71424, 71504), + "Dogra": range(71680, 71760), + "Warang Citi": range(71840, 71936), + "Dives Akuru": range(71936, 72032), + "Nandinagari": range(72096, 72192), + "Zanabazar Square": range(72192, 72272), + "Soyombo": range(72272, 72368), + "Unified Canadian Aboriginal Syllabics Extended-A": range(72368, 72384), + "Pau Cin Hau": range(72384, 72448), + "Devanagari Extended-A": range(72448, 72544), + "Bhaiksuki": range(72704, 72816), + "Marchen": range(72816, 72896), + "Masaram Gondi": range(72960, 73056), + "Gunjala Gondi": range(73056, 73136), + "Makasar": range(73440, 73472), + "Kawi": range(73472, 73568), + "Lisu Supplement": range(73648, 73664), + "Tamil Supplement": range(73664, 73728), + "Cuneiform": range(73728, 74752), + "Cuneiform Numbers and Punctuation": range(74752, 74880), + "Early Dynastic Cuneiform": range(74880, 75088), + "Cypro-Minoan": range(77712, 77824), + "Egyptian Hieroglyphs": range(77824, 78896), + "Egyptian Hieroglyph Format Controls": range(78896, 78944), + "Anatolian Hieroglyphs": range(82944, 83584), + "Bamum Supplement": range(92160, 92736), + "Mro": range(92736, 92784), + "Tangsa": range(92784, 92880), + "Bassa Vah": range(92880, 92928), + "Pahawh Hmong": range(92928, 93072), + "Medefaidrin": range(93760, 93856), + "Miao": range(93952, 94112), + "Ideographic Symbols and Punctuation": range(94176, 94208), + "Tangut": range(94208, 100352), + "Tangut Components": range(100352, 101120), + "Khitan Small Script": range(101120, 101632), + "Tangut Supplement": range(101632, 101760), + "Kana Extended-B": range(110576, 110592), + "Kana Supplement": range(110592, 110848), + "Kana Extended-A": range(110848, 110896), + "Small Kana Extension": range(110896, 110960), + "Nushu": range(110960, 111360), + "Duployan": range(113664, 113824), + "Shorthand Format Controls": range(113824, 113840), + "Znamenny Musical Notation": range(118528, 118736), + "Byzantine Musical Symbols": range(118784, 119040), + "Musical Symbols": range(119040, 119296), + "Ancient Greek Musical Notation": range(119296, 119376), + "Kaktovik Numerals": range(119488, 119520), + "Mayan Numerals": range(119520, 119552), + "Tai Xuan Jing Symbols": range(119552, 119648), + "Counting Rod Numerals": range(119648, 119680), + "Mathematical Alphanumeric Symbols": range(119808, 120832), + "Sutton SignWriting": range(120832, 121520), + "Latin Extended-G": range(122624, 122880), + "Glagolitic Supplement": range(122880, 122928), + "Cyrillic Extended-D": range(122928, 123024), + "Nyiakeng Puachue Hmong": range(123136, 123216), + "Toto": range(123536, 123584), + "Wancho": range(123584, 123648), + "Nag Mundari": range(124112, 124160), + "Ethiopic Extended-B": range(124896, 124928), + "Mende Kikakui": range(124928, 125152), + "Adlam": range(125184, 125280), + "Indic Siyaq Numbers": range(126064, 126144), + "Ottoman Siyaq Numbers": range(126208, 126288), + "Arabic Mathematical Alphabetic Symbols": range(126464, 126720), + "Mahjong Tiles": range(126976, 127024), + "Domino Tiles": range(127024, 127136), + "Playing Cards": range(127136, 127232), + "Enclosed Alphanumeric Supplement": range(127232, 127488), + "Enclosed Ideographic Supplement": range(127488, 127744), + "Miscellaneous Symbols and Pictographs": range(127744, 128512), + "Emoticons range(Emoji)": range(128512, 128592), + "Ornamental Dingbats": range(128592, 128640), + "Transport and Map Symbols": range(128640, 128768), + "Alchemical Symbols": range(128768, 128896), + "Geometric Shapes Extended": range(128896, 129024), + "Supplemental Arrows-C": range(129024, 129280), + "Supplemental Symbols and Pictographs": range(129280, 129536), + "Chess Symbols": range(129536, 129648), + "Symbols and Pictographs Extended-A": range(129648, 129792), + "Symbols for Legacy Computing": range(129792, 130048), + "CJK Unified Ideographs Extension B": range(131072, 173792), + "CJK Unified Ideographs Extension C": range(173824, 177984), + "CJK Unified Ideographs Extension D": range(177984, 178208), + "CJK Unified Ideographs Extension E": range(178208, 183984), + "CJK Unified Ideographs Extension F": range(183984, 191472), + "CJK Compatibility Ideographs Supplement": range(194560, 195104), + "CJK Unified Ideographs Extension G": range(196608, 201552), + "CJK Unified Ideographs Extension H": range(201552, 205744), + "Tags": range(917504, 917632), + "Variation Selectors Supplement": range(917760, 918000), + "Supplementary Private Use Area-A": range(983040, 1048576), + "Supplementary Private Use Area-B": range(1048576, 1114112), +} + + +UNICODE_SECONDARY_RANGE_KEYWORD: List[str] = [ + "Supplement", + "Extended", + "Extensions", + "Modifier", + "Marks", + "Punctuation", + "Symbols", + "Forms", + "Operators", + "Miscellaneous", + "Drawing", + "Block", + "Shapes", + "Supplemental", + "Tags", +] + +RE_POSSIBLE_ENCODING_INDICATION = re_compile( + r"(?:(?:encoding)|(?:charset)|(?:coding))(?:[\:= ]{1,10})(?:[\"\']?)([a-zA-Z0-9\-_]+)(?:[\"\']?)", + IGNORECASE, +) + +IANA_NO_ALIASES = [ + "cp720", + "cp737", + "cp856", + "cp874", + "cp875", + "cp1006", + "koi8_r", + "koi8_t", + "koi8_u", +] + +IANA_SUPPORTED: List[str] = sorted( + filter( + lambda x: x.endswith("_codec") is False + and x not in {"rot_13", "tactis", "mbcs"}, + list(set(aliases.values())) + IANA_NO_ALIASES, + ) +) + +IANA_SUPPORTED_COUNT: int = len(IANA_SUPPORTED) + +# pre-computed code page that are similar using the function cp_similarity. +IANA_SUPPORTED_SIMILAR: Dict[str, List[str]] = { + "cp037": ["cp1026", "cp1140", "cp273", "cp500"], + "cp1026": ["cp037", "cp1140", "cp273", "cp500"], + "cp1125": ["cp866"], + "cp1140": ["cp037", "cp1026", "cp273", "cp500"], + "cp1250": ["iso8859_2"], + "cp1251": ["kz1048", "ptcp154"], + "cp1252": ["iso8859_15", "iso8859_9", "latin_1"], + "cp1253": ["iso8859_7"], + "cp1254": ["iso8859_15", "iso8859_9", "latin_1"], + "cp1257": ["iso8859_13"], + "cp273": ["cp037", "cp1026", "cp1140", "cp500"], + "cp437": ["cp850", "cp858", "cp860", "cp861", "cp862", "cp863", "cp865"], + "cp500": ["cp037", "cp1026", "cp1140", "cp273"], + "cp850": ["cp437", "cp857", "cp858", "cp865"], + "cp857": ["cp850", "cp858", "cp865"], + "cp858": ["cp437", "cp850", "cp857", "cp865"], + "cp860": ["cp437", "cp861", "cp862", "cp863", "cp865"], + "cp861": ["cp437", "cp860", "cp862", "cp863", "cp865"], + "cp862": ["cp437", "cp860", "cp861", "cp863", "cp865"], + "cp863": ["cp437", "cp860", "cp861", "cp862", "cp865"], + "cp865": ["cp437", "cp850", "cp857", "cp858", "cp860", "cp861", "cp862", "cp863"], + "cp866": ["cp1125"], + "iso8859_10": ["iso8859_14", "iso8859_15", "iso8859_4", "iso8859_9", "latin_1"], + "iso8859_11": ["tis_620"], + "iso8859_13": ["cp1257"], + "iso8859_14": [ + "iso8859_10", + "iso8859_15", + "iso8859_16", + "iso8859_3", + "iso8859_9", + "latin_1", + ], + "iso8859_15": [ + "cp1252", + "cp1254", + "iso8859_10", + "iso8859_14", + "iso8859_16", + "iso8859_3", + "iso8859_9", + "latin_1", + ], + "iso8859_16": [ + "iso8859_14", + "iso8859_15", + "iso8859_2", + "iso8859_3", + "iso8859_9", + "latin_1", + ], + "iso8859_2": ["cp1250", "iso8859_16", "iso8859_4"], + "iso8859_3": ["iso8859_14", "iso8859_15", "iso8859_16", "iso8859_9", "latin_1"], + "iso8859_4": ["iso8859_10", "iso8859_2", "iso8859_9", "latin_1"], + "iso8859_7": ["cp1253"], + "iso8859_9": [ + "cp1252", + "cp1254", + "cp1258", + "iso8859_10", + "iso8859_14", + "iso8859_15", + "iso8859_16", + "iso8859_3", + "iso8859_4", + "latin_1", + ], + "kz1048": ["cp1251", "ptcp154"], + "latin_1": [ + "cp1252", + "cp1254", + "cp1258", + "iso8859_10", + "iso8859_14", + "iso8859_15", + "iso8859_16", + "iso8859_3", + "iso8859_4", + "iso8859_9", + ], + "mac_iceland": ["mac_roman", "mac_turkish"], + "mac_roman": ["mac_iceland", "mac_turkish"], + "mac_turkish": ["mac_iceland", "mac_roman"], + "ptcp154": ["cp1251", "kz1048"], + "tis_620": ["iso8859_11"], +} + + +CHARDET_CORRESPONDENCE: Dict[str, str] = { + "iso2022_kr": "ISO-2022-KR", + "iso2022_jp": "ISO-2022-JP", + "euc_kr": "EUC-KR", + "tis_620": "TIS-620", + "utf_32": "UTF-32", + "euc_jp": "EUC-JP", + "koi8_r": "KOI8-R", + "iso8859_1": "ISO-8859-1", + "iso8859_2": "ISO-8859-2", + "iso8859_5": "ISO-8859-5", + "iso8859_6": "ISO-8859-6", + "iso8859_7": "ISO-8859-7", + "iso8859_8": "ISO-8859-8", + "utf_16": "UTF-16", + "cp855": "IBM855", + "mac_cyrillic": "MacCyrillic", + "gb2312": "GB2312", + "gb18030": "GB18030", + "cp932": "CP932", + "cp866": "IBM866", + "utf_8": "utf-8", + "utf_8_sig": "UTF-8-SIG", + "shift_jis": "SHIFT_JIS", + "big5": "Big5", + "cp1250": "windows-1250", + "cp1251": "windows-1251", + "cp1252": "Windows-1252", + "cp1253": "windows-1253", + "cp1255": "windows-1255", + "cp1256": "windows-1256", + "cp1254": "Windows-1254", + "cp949": "CP949", +} + + +COMMON_SAFE_ASCII_CHARACTERS: Set[str] = { + "<", + ">", + "=", + ":", + "/", + "&", + ";", + "{", + "}", + "[", + "]", + ",", + "|", + '"', + "-", + "(", + ")", +} + + +KO_NAMES: Set[str] = {"johab", "cp949", "euc_kr"} +ZH_NAMES: Set[str] = {"big5", "cp950", "big5hkscs", "hz"} + +# Logging LEVEL below DEBUG +TRACE: int = 5 + + +# Language label that contain the em dash "—" +# character are to be considered alternative seq to origin +FREQUENCIES: Dict[str, List[str]] = { + "English": [ + "e", + "a", + "t", + "i", + "o", + "n", + "s", + "r", + "h", + "l", + "d", + "c", + "u", + "m", + "f", + "p", + "g", + "w", + "y", + "b", + "v", + "k", + "x", + "j", + "z", + "q", + ], + "English—": [ + "e", + "a", + "t", + "i", + "o", + "n", + "s", + "r", + "h", + "l", + "d", + "c", + "m", + "u", + "f", + "p", + "g", + "w", + "b", + "y", + "v", + "k", + "j", + "x", + "z", + "q", + ], + "German": [ + "e", + "n", + "i", + "r", + "s", + "t", + "a", + "d", + "h", + "u", + "l", + "g", + "o", + "c", + "m", + "b", + "f", + "k", + "w", + "z", + "p", + "v", + "ü", + "ä", + "ö", + "j", + ], + "French": [ + "e", + "a", + "s", + "n", + "i", + "t", + "r", + "l", + "u", + "o", + "d", + "c", + "p", + "m", + "é", + "v", + "g", + "f", + "b", + "h", + "q", + "à", + "x", + "è", + "y", + "j", + ], + "Dutch": [ + "e", + "n", + "a", + "i", + "r", + "t", + "o", + "d", + "s", + "l", + "g", + "h", + "v", + "m", + "u", + "k", + "c", + "p", + "b", + "w", + "j", + "z", + "f", + "y", + "x", + "ë", + ], + "Italian": [ + "e", + "i", + "a", + "o", + "n", + "l", + "t", + "r", + "s", + "c", + "d", + "u", + "p", + "m", + "g", + "v", + "f", + "b", + "z", + "h", + "q", + "è", + "à", + "k", + "y", + "ò", + ], + "Polish": [ + "a", + "i", + "o", + "e", + "n", + "r", + "z", + "w", + "s", + "c", + "t", + "k", + "y", + "d", + "p", + "m", + "u", + "l", + "j", + "ł", + "g", + "b", + "h", + "ą", + "ę", + "ó", + ], + "Spanish": [ + "e", + "a", + "o", + "n", + "s", + "r", + "i", + "l", + "d", + "t", + "c", + "u", + "m", + "p", + "b", + "g", + "v", + "f", + "y", + "ó", + "h", + "q", + "í", + "j", + "z", + "á", + ], + "Russian": [ + "о", + "а", + "е", + "и", + "н", + "с", + "т", + "р", + "в", + "л", + "к", + "м", + "д", + "п", + "у", + "г", + "я", + "ы", + "з", + "б", + "й", + "ь", + "ч", + "х", + "ж", + "ц", + ], + # Jap-Kanji + "Japanese": [ + "人", + "一", + "大", + "亅", + "丁", + "丨", + "竹", + "笑", + "口", + "日", + "今", + "二", + "彳", + "行", + "十", + "土", + "丶", + "寸", + "寺", + "時", + "乙", + "丿", + "乂", + "气", + "気", + "冂", + "巾", + "亠", + "市", + "目", + "儿", + "見", + "八", + "小", + "凵", + "県", + "月", + "彐", + "門", + "間", + "木", + "東", + "山", + "出", + "本", + "中", + "刀", + "分", + "耳", + "又", + "取", + "最", + "言", + "田", + "心", + "思", + "刂", + "前", + "京", + "尹", + "事", + "生", + "厶", + "云", + "会", + "未", + "来", + "白", + "冫", + "楽", + "灬", + "馬", + "尸", + "尺", + "駅", + "明", + "耂", + "者", + "了", + "阝", + "都", + "高", + "卜", + "占", + "厂", + "广", + "店", + "子", + "申", + "奄", + "亻", + "俺", + "上", + "方", + "冖", + "学", + "衣", + "艮", + "食", + "自", + ], + # Jap-Katakana + "Japanese—": [ + "ー", + "ン", + "ス", + "・", + "ル", + "ト", + "リ", + "イ", + "ア", + "ラ", + "ッ", + "ク", + "ド", + "シ", + "レ", + "ジ", + "タ", + "フ", + "ロ", + "カ", + "テ", + "マ", + "ィ", + "グ", + "バ", + "ム", + "プ", + "オ", + "コ", + "デ", + "ニ", + "ウ", + "メ", + "サ", + "ビ", + "ナ", + "ブ", + "ャ", + "エ", + "ュ", + "チ", + "キ", + "ズ", + "ダ", + "パ", + "ミ", + "ェ", + "ョ", + "ハ", + "セ", + "ベ", + "ガ", + "モ", + "ツ", + "ネ", + "ボ", + "ソ", + "ノ", + "ァ", + "ヴ", + "ワ", + "ポ", + "ペ", + "ピ", + "ケ", + "ゴ", + "ギ", + "ザ", + "ホ", + "ゲ", + "ォ", + "ヤ", + "ヒ", + "ユ", + "ヨ", + "ヘ", + "ゼ", + "ヌ", + "ゥ", + "ゾ", + "ヶ", + "ヂ", + "ヲ", + "ヅ", + "ヵ", + "ヱ", + "ヰ", + "ヮ", + "ヽ", + "゠", + "ヾ", + "ヷ", + "ヿ", + "ヸ", + "ヹ", + "ヺ", + ], + # Jap-Hiragana + "Japanese——": [ + "の", + "に", + "る", + "た", + "と", + "は", + "し", + "い", + "を", + "で", + "て", + "が", + "な", + "れ", + "か", + "ら", + "さ", + "っ", + "り", + "す", + "あ", + "も", + "こ", + "ま", + "う", + "く", + "よ", + "き", + "ん", + "め", + "お", + "け", + "そ", + "つ", + "だ", + "や", + "え", + "ど", + "わ", + "ち", + "み", + "せ", + "じ", + "ば", + "へ", + "び", + "ず", + "ろ", + "ほ", + "げ", + "む", + "べ", + "ひ", + "ょ", + "ゆ", + "ぶ", + "ご", + "ゃ", + "ね", + "ふ", + "ぐ", + "ぎ", + "ぼ", + "ゅ", + "づ", + "ざ", + "ぞ", + "ぬ", + "ぜ", + "ぱ", + "ぽ", + "ぷ", + "ぴ", + "ぃ", + "ぁ", + "ぇ", + "ぺ", + "ゞ", + "ぢ", + "ぉ", + "ぅ", + "ゐ", + "ゝ", + "ゑ", + "゛", + "゜", + "ゎ", + "ゔ", + "゚", + "ゟ", + "゙", + "ゕ", + "ゖ", + ], + "Portuguese": [ + "a", + "e", + "o", + "s", + "i", + "r", + "d", + "n", + "t", + "m", + "u", + "c", + "l", + "p", + "g", + "v", + "b", + "f", + "h", + "ã", + "q", + "é", + "ç", + "á", + "z", + "í", + ], + "Swedish": [ + "e", + "a", + "n", + "r", + "t", + "s", + "i", + "l", + "d", + "o", + "m", + "k", + "g", + "v", + "h", + "f", + "u", + "p", + "ä", + "c", + "b", + "ö", + "å", + "y", + "j", + "x", + ], + "Chinese": [ + "的", + "一", + "是", + "不", + "了", + "在", + "人", + "有", + "我", + "他", + "这", + "个", + "们", + "中", + "来", + "上", + "大", + "为", + "和", + "国", + "地", + "到", + "以", + "说", + "时", + "要", + "就", + "出", + "会", + "可", + "也", + "你", + "对", + "生", + "能", + "而", + "子", + "那", + "得", + "于", + "着", + "下", + "自", + "之", + "年", + "过", + "发", + "后", + "作", + "里", + "用", + "道", + "行", + "所", + "然", + "家", + "种", + "事", + "成", + "方", + "多", + "经", + "么", + "去", + "法", + "学", + "如", + "都", + "同", + "现", + "当", + "没", + "动", + "面", + "起", + "看", + "定", + "天", + "分", + "还", + "进", + "好", + "小", + "部", + "其", + "些", + "主", + "样", + "理", + "心", + "她", + "本", + "前", + "开", + "但", + "因", + "只", + "从", + "想", + "实", + ], + "Ukrainian": [ + "о", + "а", + "н", + "і", + "и", + "р", + "в", + "т", + "е", + "с", + "к", + "л", + "у", + "д", + "м", + "п", + "з", + "я", + "ь", + "б", + "г", + "й", + "ч", + "х", + "ц", + "ї", + ], + "Norwegian": [ + "e", + "r", + "n", + "t", + "a", + "s", + "i", + "o", + "l", + "d", + "g", + "k", + "m", + "v", + "f", + "p", + "u", + "b", + "h", + "å", + "y", + "j", + "ø", + "c", + "æ", + "w", + ], + "Finnish": [ + "a", + "i", + "n", + "t", + "e", + "s", + "l", + "o", + "u", + "k", + "ä", + "m", + "r", + "v", + "j", + "h", + "p", + "y", + "d", + "ö", + "g", + "c", + "b", + "f", + "w", + "z", + ], + "Vietnamese": [ + "n", + "h", + "t", + "i", + "c", + "g", + "a", + "o", + "u", + "m", + "l", + "r", + "à", + "đ", + "s", + "e", + "v", + "p", + "b", + "y", + "ư", + "d", + "á", + "k", + "ộ", + "ế", + ], + "Czech": [ + "o", + "e", + "a", + "n", + "t", + "s", + "i", + "l", + "v", + "r", + "k", + "d", + "u", + "m", + "p", + "í", + "c", + "h", + "z", + "á", + "y", + "j", + "b", + "ě", + "é", + "ř", + ], + "Hungarian": [ + "e", + "a", + "t", + "l", + "s", + "n", + "k", + "r", + "i", + "o", + "z", + "á", + "é", + "g", + "m", + "b", + "y", + "v", + "d", + "h", + "u", + "p", + "j", + "ö", + "f", + "c", + ], + "Korean": [ + "이", + "다", + "에", + "의", + "는", + "로", + "하", + "을", + "가", + "고", + "지", + "서", + "한", + "은", + "기", + "으", + "년", + "대", + "사", + "시", + "를", + "리", + "도", + "인", + "스", + "일", + ], + "Indonesian": [ + "a", + "n", + "e", + "i", + "r", + "t", + "u", + "s", + "d", + "k", + "m", + "l", + "g", + "p", + "b", + "o", + "h", + "y", + "j", + "c", + "w", + "f", + "v", + "z", + "x", + "q", + ], + "Turkish": [ + "a", + "e", + "i", + "n", + "r", + "l", + "ı", + "k", + "d", + "t", + "s", + "m", + "y", + "u", + "o", + "b", + "ü", + "ş", + "v", + "g", + "z", + "h", + "c", + "p", + "ç", + "ğ", + ], + "Romanian": [ + "e", + "i", + "a", + "r", + "n", + "t", + "u", + "l", + "o", + "c", + "s", + "d", + "p", + "m", + "ă", + "f", + "v", + "î", + "g", + "b", + "ș", + "ț", + "z", + "h", + "â", + "j", + ], + "Farsi": [ + "ا", + "ی", + "ر", + "د", + "ن", + "ه", + "و", + "م", + "ت", + "ب", + "س", + "ل", + "ک", + "ش", + "ز", + "ف", + "گ", + "ع", + "خ", + "ق", + "ج", + "آ", + "پ", + "ح", + "ط", + "ص", + ], + "Arabic": [ + "ا", + "ل", + "ي", + "م", + "و", + "ن", + "ر", + "ت", + "ب", + "ة", + "ع", + "د", + "س", + "ف", + "ه", + "ك", + "ق", + "أ", + "ح", + "ج", + "ش", + "ط", + "ص", + "ى", + "خ", + "إ", + ], + "Danish": [ + "e", + "r", + "n", + "t", + "a", + "i", + "s", + "d", + "l", + "o", + "g", + "m", + "k", + "f", + "v", + "u", + "b", + "h", + "p", + "å", + "y", + "ø", + "æ", + "c", + "j", + "w", + ], + "Serbian": [ + "а", + "и", + "о", + "е", + "н", + "р", + "с", + "у", + "т", + "к", + "ј", + "в", + "д", + "м", + "п", + "л", + "г", + "з", + "б", + "a", + "i", + "e", + "o", + "n", + "ц", + "ш", + ], + "Lithuanian": [ + "i", + "a", + "s", + "o", + "r", + "e", + "t", + "n", + "u", + "k", + "m", + "l", + "p", + "v", + "d", + "j", + "g", + "ė", + "b", + "y", + "ų", + "š", + "ž", + "c", + "ą", + "į", + ], + "Slovene": [ + "e", + "a", + "i", + "o", + "n", + "r", + "s", + "l", + "t", + "j", + "v", + "k", + "d", + "p", + "m", + "u", + "z", + "b", + "g", + "h", + "č", + "c", + "š", + "ž", + "f", + "y", + ], + "Slovak": [ + "o", + "a", + "e", + "n", + "i", + "r", + "v", + "t", + "s", + "l", + "k", + "d", + "m", + "p", + "u", + "c", + "h", + "j", + "b", + "z", + "á", + "y", + "ý", + "í", + "č", + "é", + ], + "Hebrew": [ + "י", + "ו", + "ה", + "ל", + "ר", + "ב", + "ת", + "מ", + "א", + "ש", + "נ", + "ע", + "ם", + "ד", + "ק", + "ח", + "פ", + "ס", + "כ", + "ג", + "ט", + "צ", + "ן", + "ז", + "ך", + ], + "Bulgarian": [ + "а", + "и", + "о", + "е", + "н", + "т", + "р", + "с", + "в", + "л", + "к", + "д", + "п", + "м", + "з", + "г", + "я", + "ъ", + "у", + "б", + "ч", + "ц", + "й", + "ж", + "щ", + "х", + ], + "Croatian": [ + "a", + "i", + "o", + "e", + "n", + "r", + "j", + "s", + "t", + "u", + "k", + "l", + "v", + "d", + "m", + "p", + "g", + "z", + "b", + "c", + "č", + "h", + "š", + "ž", + "ć", + "f", + ], + "Hindi": [ + "क", + "र", + "स", + "न", + "त", + "म", + "ह", + "प", + "य", + "ल", + "व", + "ज", + "द", + "ग", + "ब", + "श", + "ट", + "अ", + "ए", + "थ", + "भ", + "ड", + "च", + "ध", + "ष", + "इ", + ], + "Estonian": [ + "a", + "i", + "e", + "s", + "t", + "l", + "u", + "n", + "o", + "k", + "r", + "d", + "m", + "v", + "g", + "p", + "j", + "h", + "ä", + "b", + "õ", + "ü", + "f", + "c", + "ö", + "y", + ], + "Thai": [ + "า", + "น", + "ร", + "อ", + "ก", + "เ", + "ง", + "ม", + "ย", + "ล", + "ว", + "ด", + "ท", + "ส", + "ต", + "ะ", + "ป", + "บ", + "ค", + "ห", + "แ", + "จ", + "พ", + "ช", + "ข", + "ใ", + ], + "Greek": [ + "α", + "τ", + "ο", + "ι", + "ε", + "ν", + "ρ", + "σ", + "κ", + "η", + "π", + "ς", + "υ", + "μ", + "λ", + "ί", + "ό", + "ά", + "γ", + "έ", + "δ", + "ή", + "ω", + "χ", + "θ", + "ύ", + ], + "Tamil": [ + "க", + "த", + "ப", + "ட", + "ர", + "ம", + "ல", + "ன", + "வ", + "ற", + "ய", + "ள", + "ச", + "ந", + "இ", + "ண", + "அ", + "ஆ", + "ழ", + "ங", + "எ", + "உ", + "ஒ", + "ஸ", + ], + "Kazakh": [ + "а", + "ы", + "е", + "н", + "т", + "р", + "л", + "і", + "д", + "с", + "м", + "қ", + "к", + "о", + "б", + "и", + "у", + "ғ", + "ж", + "ң", + "з", + "ш", + "й", + "п", + "г", + "ө", + ], +} + +LANGUAGE_SUPPORTED_COUNT: int = len(FREQUENCIES) diff --git a/venv/Lib/site-packages/charset_normalizer/legacy.py b/venv/Lib/site-packages/charset_normalizer/legacy.py new file mode 100644 index 0000000..3f6d490 --- /dev/null +++ b/venv/Lib/site-packages/charset_normalizer/legacy.py @@ -0,0 +1,65 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING, Any, Optional +from warnings import warn + +from .api import from_bytes +from .constant import CHARDET_CORRESPONDENCE + +# TODO: remove this check when dropping Python 3.7 support +if TYPE_CHECKING: + from typing_extensions import TypedDict + + class ResultDict(TypedDict): + encoding: Optional[str] + language: str + confidence: Optional[float] + + +def detect( + byte_str: bytes, should_rename_legacy: bool = False, **kwargs: Any +) -> ResultDict: + """ + chardet legacy method + Detect the encoding of the given byte string. It should be mostly backward-compatible. + Encoding name will match Chardet own writing whenever possible. (Not on encoding name unsupported by it) + This function is deprecated and should be used to migrate your project easily, consult the documentation for + further information. Not planned for removal. + + :param byte_str: The byte sequence to examine. + :param should_rename_legacy: Should we rename legacy encodings + to their more modern equivalents? + """ + if len(kwargs): + warn( + f"charset-normalizer disregard arguments '{','.join(list(kwargs.keys()))}' in legacy function detect()" + ) + + if not isinstance(byte_str, (bytearray, bytes)): + raise TypeError( # pragma: nocover + "Expected object of type bytes or bytearray, got: " + "{0}".format(type(byte_str)) + ) + + if isinstance(byte_str, bytearray): + byte_str = bytes(byte_str) + + r = from_bytes(byte_str).best() + + encoding = r.encoding if r is not None else None + language = r.language if r is not None and r.language != "Unknown" else "" + confidence = 1.0 - r.chaos if r is not None else None + + # Note: CharsetNormalizer does not return 'UTF-8-SIG' as the sig get stripped in the detection/normalization process + # but chardet does return 'utf-8-sig' and it is a valid codec name. + if r is not None and encoding == "utf_8" and r.bom: + encoding += "_sig" + + if should_rename_legacy is False and encoding in CHARDET_CORRESPONDENCE: + encoding = CHARDET_CORRESPONDENCE[encoding] + + return { + "encoding": encoding, + "language": language, + "confidence": confidence, + } diff --git a/venv/Lib/site-packages/charset_normalizer/md.cp310-win_amd64.pyd b/venv/Lib/site-packages/charset_normalizer/md.cp310-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..b91d794532cbc6ce15ba9acc067f0764e61964a2 GIT binary patch literal 10752 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 yKT-udigt)QN_Ld*aPHW? bool: + """ + Determine if given character should be fed in. + """ + raise NotImplementedError # pragma: nocover + + def feed(self, character: str) -> None: + """ + The main routine to be executed upon character. + Insert the logic in witch the text would be considered chaotic. + """ + raise NotImplementedError # pragma: nocover + + def reset(self) -> None: # pragma: no cover + """ + Permit to reset the plugin to the initial state. + """ + raise NotImplementedError + + @property + def ratio(self) -> float: + """ + Compute the chaos ratio based on what your feed() has seen. + Must NOT be lower than 0.; No restriction gt 0. + """ + raise NotImplementedError # pragma: nocover + + +class TooManySymbolOrPunctuationPlugin(MessDetectorPlugin): + def __init__(self) -> None: + self._punctuation_count: int = 0 + self._symbol_count: int = 0 + self._character_count: int = 0 + + self._last_printable_char: Optional[str] = None + self._frenzy_symbol_in_word: bool = False + + def eligible(self, character: str) -> bool: + return character.isprintable() + + def feed(self, character: str) -> None: + self._character_count += 1 + + if ( + character != self._last_printable_char + and character not in COMMON_SAFE_ASCII_CHARACTERS + ): + if is_punctuation(character): + self._punctuation_count += 1 + elif ( + character.isdigit() is False + and is_symbol(character) + and is_emoticon(character) is False + ): + self._symbol_count += 2 + + self._last_printable_char = character + + def reset(self) -> None: # pragma: no cover + self._punctuation_count = 0 + self._character_count = 0 + self._symbol_count = 0 + + @property + def ratio(self) -> float: + if self._character_count == 0: + return 0.0 + + ratio_of_punctuation: float = ( + self._punctuation_count + self._symbol_count + ) / self._character_count + + return ratio_of_punctuation if ratio_of_punctuation >= 0.3 else 0.0 + + +class TooManyAccentuatedPlugin(MessDetectorPlugin): + def __init__(self) -> None: + self._character_count: int = 0 + self._accentuated_count: int = 0 + + def eligible(self, character: str) -> bool: + return character.isalpha() + + def feed(self, character: str) -> None: + self._character_count += 1 + + if is_accentuated(character): + self._accentuated_count += 1 + + def reset(self) -> None: # pragma: no cover + self._character_count = 0 + self._accentuated_count = 0 + + @property + def ratio(self) -> float: + if self._character_count < 8: + return 0.0 + + ratio_of_accentuation: float = self._accentuated_count / self._character_count + return ratio_of_accentuation if ratio_of_accentuation >= 0.35 else 0.0 + + +class UnprintablePlugin(MessDetectorPlugin): + def __init__(self) -> None: + self._unprintable_count: int = 0 + self._character_count: int = 0 + + def eligible(self, character: str) -> bool: + return True + + def feed(self, character: str) -> None: + if is_unprintable(character): + self._unprintable_count += 1 + self._character_count += 1 + + def reset(self) -> None: # pragma: no cover + self._unprintable_count = 0 + + @property + def ratio(self) -> float: + if self._character_count == 0: + return 0.0 + + return (self._unprintable_count * 8) / self._character_count + + +class SuspiciousDuplicateAccentPlugin(MessDetectorPlugin): + def __init__(self) -> None: + self._successive_count: int = 0 + self._character_count: int = 0 + + self._last_latin_character: Optional[str] = None + + def eligible(self, character: str) -> bool: + return character.isalpha() and is_latin(character) + + def feed(self, character: str) -> None: + self._character_count += 1 + if ( + self._last_latin_character is not None + and is_accentuated(character) + and is_accentuated(self._last_latin_character) + ): + if character.isupper() and self._last_latin_character.isupper(): + self._successive_count += 1 + # Worse if its the same char duplicated with different accent. + if remove_accent(character) == remove_accent(self._last_latin_character): + self._successive_count += 1 + self._last_latin_character = character + + def reset(self) -> None: # pragma: no cover + self._successive_count = 0 + self._character_count = 0 + self._last_latin_character = None + + @property + def ratio(self) -> float: + if self._character_count == 0: + return 0.0 + + return (self._successive_count * 2) / self._character_count + + +class SuspiciousRange(MessDetectorPlugin): + def __init__(self) -> None: + self._suspicious_successive_range_count: int = 0 + self._character_count: int = 0 + self._last_printable_seen: Optional[str] = None + + def eligible(self, character: str) -> bool: + return character.isprintable() + + def feed(self, character: str) -> None: + self._character_count += 1 + + if ( + character.isspace() + or is_punctuation(character) + or character in COMMON_SAFE_ASCII_CHARACTERS + ): + self._last_printable_seen = None + return + + if self._last_printable_seen is None: + self._last_printable_seen = character + return + + unicode_range_a: Optional[str] = unicode_range(self._last_printable_seen) + unicode_range_b: Optional[str] = unicode_range(character) + + if is_suspiciously_successive_range(unicode_range_a, unicode_range_b): + self._suspicious_successive_range_count += 1 + + self._last_printable_seen = character + + def reset(self) -> None: # pragma: no cover + self._character_count = 0 + self._suspicious_successive_range_count = 0 + self._last_printable_seen = None + + @property + def ratio(self) -> float: + if self._character_count <= 13: + return 0.0 + + ratio_of_suspicious_range_usage: float = ( + self._suspicious_successive_range_count * 2 + ) / self._character_count + + return ratio_of_suspicious_range_usage + + +class SuperWeirdWordPlugin(MessDetectorPlugin): + def __init__(self) -> None: + self._word_count: int = 0 + self._bad_word_count: int = 0 + self._foreign_long_count: int = 0 + + self._is_current_word_bad: bool = False + self._foreign_long_watch: bool = False + + self._character_count: int = 0 + self._bad_character_count: int = 0 + + self._buffer: str = "" + self._buffer_accent_count: int = 0 + self._buffer_glyph_count: int = 0 + + def eligible(self, character: str) -> bool: + return True + + def feed(self, character: str) -> None: + if character.isalpha(): + self._buffer += character + if is_accentuated(character): + self._buffer_accent_count += 1 + if ( + self._foreign_long_watch is False + and (is_latin(character) is False or is_accentuated(character)) + and is_cjk(character) is False + and is_hangul(character) is False + and is_katakana(character) is False + and is_hiragana(character) is False + and is_thai(character) is False + ): + self._foreign_long_watch = True + if ( + is_cjk(character) + or is_hangul(character) + or is_katakana(character) + or is_hiragana(character) + or is_thai(character) + ): + self._buffer_glyph_count += 1 + return + if not self._buffer: + return + if ( + character.isspace() or is_punctuation(character) or is_separator(character) + ) and self._buffer: + self._word_count += 1 + buffer_length: int = len(self._buffer) + + self._character_count += buffer_length + + if buffer_length >= 4: + if self._buffer_accent_count / buffer_length >= 0.5: + self._is_current_word_bad = True + # Word/Buffer ending with an upper case accentuated letter are so rare, + # that we will consider them all as suspicious. Same weight as foreign_long suspicious. + elif ( + is_accentuated(self._buffer[-1]) + and self._buffer[-1].isupper() + and all(_.isupper() for _ in self._buffer) is False + ): + self._foreign_long_count += 1 + self._is_current_word_bad = True + elif self._buffer_glyph_count == 1: + self._is_current_word_bad = True + self._foreign_long_count += 1 + if buffer_length >= 24 and self._foreign_long_watch: + camel_case_dst = [ + i + for c, i in zip(self._buffer, range(0, buffer_length)) + if c.isupper() + ] + probable_camel_cased: bool = False + + if camel_case_dst and (len(camel_case_dst) / buffer_length <= 0.3): + probable_camel_cased = True + + if not probable_camel_cased: + self._foreign_long_count += 1 + self._is_current_word_bad = True + + if self._is_current_word_bad: + self._bad_word_count += 1 + self._bad_character_count += len(self._buffer) + self._is_current_word_bad = False + + self._foreign_long_watch = False + self._buffer = "" + self._buffer_accent_count = 0 + self._buffer_glyph_count = 0 + elif ( + character not in {"<", ">", "-", "=", "~", "|", "_"} + and character.isdigit() is False + and is_symbol(character) + ): + self._is_current_word_bad = True + self._buffer += character + + def reset(self) -> None: # pragma: no cover + self._buffer = "" + self._is_current_word_bad = False + self._foreign_long_watch = False + self._bad_word_count = 0 + self._word_count = 0 + self._character_count = 0 + self._bad_character_count = 0 + self._foreign_long_count = 0 + + @property + def ratio(self) -> float: + if self._word_count <= 10 and self._foreign_long_count == 0: + return 0.0 + + return self._bad_character_count / self._character_count + + +class CjkInvalidStopPlugin(MessDetectorPlugin): + """ + GB(Chinese) based encoding often render the stop incorrectly when the content does not fit and + can be easily detected. Searching for the overuse of '丅' and '丄'. + """ + + def __init__(self) -> None: + self._wrong_stop_count: int = 0 + self._cjk_character_count: int = 0 + + def eligible(self, character: str) -> bool: + return True + + def feed(self, character: str) -> None: + if character in {"丅", "丄"}: + self._wrong_stop_count += 1 + return + if is_cjk(character): + self._cjk_character_count += 1 + + def reset(self) -> None: # pragma: no cover + self._wrong_stop_count = 0 + self._cjk_character_count = 0 + + @property + def ratio(self) -> float: + if self._cjk_character_count < 16: + return 0.0 + return self._wrong_stop_count / self._cjk_character_count + + +class ArchaicUpperLowerPlugin(MessDetectorPlugin): + def __init__(self) -> None: + self._buf: bool = False + + self._character_count_since_last_sep: int = 0 + + self._successive_upper_lower_count: int = 0 + self._successive_upper_lower_count_final: int = 0 + + self._character_count: int = 0 + + self._last_alpha_seen: Optional[str] = None + self._current_ascii_only: bool = True + + def eligible(self, character: str) -> bool: + return True + + def feed(self, character: str) -> None: + is_concerned = character.isalpha() and is_case_variable(character) + chunk_sep = is_concerned is False + + if chunk_sep and self._character_count_since_last_sep > 0: + if ( + self._character_count_since_last_sep <= 64 + and character.isdigit() is False + and self._current_ascii_only is False + ): + self._successive_upper_lower_count_final += ( + self._successive_upper_lower_count + ) + + self._successive_upper_lower_count = 0 + self._character_count_since_last_sep = 0 + self._last_alpha_seen = None + self._buf = False + self._character_count += 1 + self._current_ascii_only = True + + return + + if self._current_ascii_only is True and character.isascii() is False: + self._current_ascii_only = False + + if self._last_alpha_seen is not None: + if (character.isupper() and self._last_alpha_seen.islower()) or ( + character.islower() and self._last_alpha_seen.isupper() + ): + if self._buf is True: + self._successive_upper_lower_count += 2 + self._buf = False + else: + self._buf = True + else: + self._buf = False + + self._character_count += 1 + self._character_count_since_last_sep += 1 + self._last_alpha_seen = character + + def reset(self) -> None: # pragma: no cover + self._character_count = 0 + self._character_count_since_last_sep = 0 + self._successive_upper_lower_count = 0 + self._successive_upper_lower_count_final = 0 + self._last_alpha_seen = None + self._buf = False + self._current_ascii_only = True + + @property + def ratio(self) -> float: + if self._character_count == 0: + return 0.0 + + return self._successive_upper_lower_count_final / self._character_count + + +class ArabicIsolatedFormPlugin(MessDetectorPlugin): + def __init__(self) -> None: + self._character_count: int = 0 + self._isolated_form_count: int = 0 + + def reset(self) -> None: # pragma: no cover + self._character_count = 0 + self._isolated_form_count = 0 + + def eligible(self, character: str) -> bool: + return is_arabic(character) + + def feed(self, character: str) -> None: + self._character_count += 1 + + if is_arabic_isolated_form(character): + self._isolated_form_count += 1 + + @property + def ratio(self) -> float: + if self._character_count < 8: + return 0.0 + + isolated_form_usage: float = self._isolated_form_count / self._character_count + + return isolated_form_usage + + +@lru_cache(maxsize=1024) +def is_suspiciously_successive_range( + unicode_range_a: Optional[str], unicode_range_b: Optional[str] +) -> bool: + """ + Determine if two Unicode range seen next to each other can be considered as suspicious. + """ + if unicode_range_a is None or unicode_range_b is None: + return True + + if unicode_range_a == unicode_range_b: + return False + + if "Latin" in unicode_range_a and "Latin" in unicode_range_b: + return False + + if "Emoticons" in unicode_range_a or "Emoticons" in unicode_range_b: + return False + + # Latin characters can be accompanied with a combining diacritical mark + # eg. Vietnamese. + if ("Latin" in unicode_range_a or "Latin" in unicode_range_b) and ( + "Combining" in unicode_range_a or "Combining" in unicode_range_b + ): + return False + + keywords_range_a, keywords_range_b = unicode_range_a.split( + " " + ), unicode_range_b.split(" ") + + for el in keywords_range_a: + if el in UNICODE_SECONDARY_RANGE_KEYWORD: + continue + if el in keywords_range_b: + return False + + # Japanese Exception + range_a_jp_chars, range_b_jp_chars = ( + unicode_range_a + in ( + "Hiragana", + "Katakana", + ), + unicode_range_b in ("Hiragana", "Katakana"), + ) + if (range_a_jp_chars or range_b_jp_chars) and ( + "CJK" in unicode_range_a or "CJK" in unicode_range_b + ): + return False + if range_a_jp_chars and range_b_jp_chars: + return False + + if "Hangul" in unicode_range_a or "Hangul" in unicode_range_b: + if "CJK" in unicode_range_a or "CJK" in unicode_range_b: + return False + if unicode_range_a == "Basic Latin" or unicode_range_b == "Basic Latin": + return False + + # Chinese/Japanese use dedicated range for punctuation and/or separators. + if ("CJK" in unicode_range_a or "CJK" in unicode_range_b) or ( + unicode_range_a in ["Katakana", "Hiragana"] + and unicode_range_b in ["Katakana", "Hiragana"] + ): + if "Punctuation" in unicode_range_a or "Punctuation" in unicode_range_b: + return False + if "Forms" in unicode_range_a or "Forms" in unicode_range_b: + return False + if unicode_range_a == "Basic Latin" or unicode_range_b == "Basic Latin": + return False + + return True + + +@lru_cache(maxsize=2048) +def mess_ratio( + decoded_sequence: str, maximum_threshold: float = 0.2, debug: bool = False +) -> float: + """ + Compute a mess ratio given a decoded bytes sequence. The maximum threshold does stop the computation earlier. + """ + + detectors: List[MessDetectorPlugin] = [ + md_class() for md_class in MessDetectorPlugin.__subclasses__() + ] + + length: int = len(decoded_sequence) + 1 + + mean_mess_ratio: float = 0.0 + + if length < 512: + intermediary_mean_mess_ratio_calc: int = 32 + elif length <= 1024: + intermediary_mean_mess_ratio_calc = 64 + else: + intermediary_mean_mess_ratio_calc = 128 + + for character, index in zip(decoded_sequence + "\n", range(length)): + for detector in detectors: + if detector.eligible(character): + detector.feed(character) + + if ( + index > 0 and index % intermediary_mean_mess_ratio_calc == 0 + ) or index == length - 1: + mean_mess_ratio = sum(dt.ratio for dt in detectors) + + if mean_mess_ratio >= maximum_threshold: + break + + if debug: + logger = getLogger("charset_normalizer") + + logger.log( + TRACE, + "Mess-detector extended-analysis start. " + f"intermediary_mean_mess_ratio_calc={intermediary_mean_mess_ratio_calc} mean_mess_ratio={mean_mess_ratio} " + f"maximum_threshold={maximum_threshold}", + ) + + if len(decoded_sequence) > 16: + logger.log(TRACE, f"Starting with: {decoded_sequence[:16]}") + logger.log(TRACE, f"Ending with: {decoded_sequence[-16::]}") + + for dt in detectors: # pragma: nocover + logger.log(TRACE, f"{dt.__class__}: {dt.ratio}") + + return round(mean_mess_ratio, 3) diff --git a/venv/Lib/site-packages/charset_normalizer/md__mypyc.cp310-win_amd64.pyd b/venv/Lib/site-packages/charset_normalizer/md__mypyc.cp310-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..6c902edd1053b50d8365987e00dd2385ade80dd2 GIT binary patch literal 122368 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 Dfdg&b literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/charset_normalizer/models.py b/venv/Lib/site-packages/charset_normalizer/models.py new file mode 100644 index 0000000..6f6b86b --- /dev/null +++ b/venv/Lib/site-packages/charset_normalizer/models.py @@ -0,0 +1,359 @@ +from encodings.aliases import aliases +from hashlib import sha256 +from json import dumps +from re import sub +from typing import Any, Dict, Iterator, List, Optional, Tuple, Union + +from .constant import RE_POSSIBLE_ENCODING_INDICATION, TOO_BIG_SEQUENCE +from .utils import iana_name, is_multi_byte_encoding, unicode_range + + +class CharsetMatch: + def __init__( + self, + payload: bytes, + guessed_encoding: str, + mean_mess_ratio: float, + has_sig_or_bom: bool, + languages: "CoherenceMatches", + decoded_payload: Optional[str] = None, + preemptive_declaration: Optional[str] = None, + ): + self._payload: bytes = payload + + self._encoding: str = guessed_encoding + self._mean_mess_ratio: float = mean_mess_ratio + self._languages: CoherenceMatches = languages + self._has_sig_or_bom: bool = has_sig_or_bom + self._unicode_ranges: Optional[List[str]] = None + + self._leaves: List[CharsetMatch] = [] + self._mean_coherence_ratio: float = 0.0 + + self._output_payload: Optional[bytes] = None + self._output_encoding: Optional[str] = None + + self._string: Optional[str] = decoded_payload + + self._preemptive_declaration: Optional[str] = preemptive_declaration + + def __eq__(self, other: object) -> bool: + if not isinstance(other, CharsetMatch): + if isinstance(other, str): + return iana_name(other) == self.encoding + return False + return self.encoding == other.encoding and self.fingerprint == other.fingerprint + + def __lt__(self, other: object) -> bool: + """ + Implemented to make sorted available upon CharsetMatches items. + """ + if not isinstance(other, CharsetMatch): + raise ValueError + + chaos_difference: float = abs(self.chaos - other.chaos) + coherence_difference: float = abs(self.coherence - other.coherence) + + # Below 1% difference --> Use Coherence + if chaos_difference < 0.01 and coherence_difference > 0.02: + return self.coherence > other.coherence + elif chaos_difference < 0.01 and coherence_difference <= 0.02: + # When having a difficult decision, use the result that decoded as many multi-byte as possible. + # preserve RAM usage! + if len(self._payload) >= TOO_BIG_SEQUENCE: + return self.chaos < other.chaos + return self.multi_byte_usage > other.multi_byte_usage + + return self.chaos < other.chaos + + @property + def multi_byte_usage(self) -> float: + return 1.0 - (len(str(self)) / len(self.raw)) + + def __str__(self) -> str: + # Lazy Str Loading + if self._string is None: + self._string = str(self._payload, self._encoding, "strict") + return self._string + + def __repr__(self) -> str: + return "".format(self.encoding, self.fingerprint) + + def add_submatch(self, other: "CharsetMatch") -> None: + if not isinstance(other, CharsetMatch) or other == self: + raise ValueError( + "Unable to add instance <{}> as a submatch of a CharsetMatch".format( + other.__class__ + ) + ) + + other._string = None # Unload RAM usage; dirty trick. + self._leaves.append(other) + + @property + def encoding(self) -> str: + return self._encoding + + @property + def encoding_aliases(self) -> List[str]: + """ + Encoding name are known by many name, using this could help when searching for IBM855 when it's listed as CP855. + """ + also_known_as: List[str] = [] + for u, p in aliases.items(): + if self.encoding == u: + also_known_as.append(p) + elif self.encoding == p: + also_known_as.append(u) + return also_known_as + + @property + def bom(self) -> bool: + return self._has_sig_or_bom + + @property + def byte_order_mark(self) -> bool: + return self._has_sig_or_bom + + @property + def languages(self) -> List[str]: + """ + Return the complete list of possible languages found in decoded sequence. + Usually not really useful. Returned list may be empty even if 'language' property return something != 'Unknown'. + """ + return [e[0] for e in self._languages] + + @property + def language(self) -> str: + """ + Most probable language found in decoded sequence. If none were detected or inferred, the property will return + "Unknown". + """ + if not self._languages: + # Trying to infer the language based on the given encoding + # Its either English or we should not pronounce ourselves in certain cases. + if "ascii" in self.could_be_from_charset: + return "English" + + # doing it there to avoid circular import + from charset_normalizer.cd import encoding_languages, mb_encoding_languages + + languages = ( + mb_encoding_languages(self.encoding) + if is_multi_byte_encoding(self.encoding) + else encoding_languages(self.encoding) + ) + + if len(languages) == 0 or "Latin Based" in languages: + return "Unknown" + + return languages[0] + + return self._languages[0][0] + + @property + def chaos(self) -> float: + return self._mean_mess_ratio + + @property + def coherence(self) -> float: + if not self._languages: + return 0.0 + return self._languages[0][1] + + @property + def percent_chaos(self) -> float: + return round(self.chaos * 100, ndigits=3) + + @property + def percent_coherence(self) -> float: + return round(self.coherence * 100, ndigits=3) + + @property + def raw(self) -> bytes: + """ + Original untouched bytes. + """ + return self._payload + + @property + def submatch(self) -> List["CharsetMatch"]: + return self._leaves + + @property + def has_submatch(self) -> bool: + return len(self._leaves) > 0 + + @property + def alphabets(self) -> List[str]: + if self._unicode_ranges is not None: + return self._unicode_ranges + # list detected ranges + detected_ranges: List[Optional[str]] = [ + unicode_range(char) for char in str(self) + ] + # filter and sort + self._unicode_ranges = sorted(list({r for r in detected_ranges if r})) + return self._unicode_ranges + + @property + def could_be_from_charset(self) -> List[str]: + """ + The complete list of encoding that output the exact SAME str result and therefore could be the originating + encoding. + This list does include the encoding available in property 'encoding'. + """ + return [self._encoding] + [m.encoding for m in self._leaves] + + def output(self, encoding: str = "utf_8") -> bytes: + """ + Method to get re-encoded bytes payload using given target encoding. Default to UTF-8. + Any errors will be simply ignored by the encoder NOT replaced. + """ + if self._output_encoding is None or self._output_encoding != encoding: + self._output_encoding = encoding + decoded_string = str(self) + if ( + self._preemptive_declaration is not None + and self._preemptive_declaration.lower() + not in ["utf-8", "utf8", "utf_8"] + ): + patched_header = sub( + RE_POSSIBLE_ENCODING_INDICATION, + lambda m: m.string[m.span()[0] : m.span()[1]].replace( + m.groups()[0], iana_name(self._output_encoding) # type: ignore[arg-type] + ), + decoded_string[:8192], + 1, + ) + + decoded_string = patched_header + decoded_string[8192:] + + self._output_payload = decoded_string.encode(encoding, "replace") + + return self._output_payload # type: ignore + + @property + def fingerprint(self) -> str: + """ + Retrieve the unique SHA256 computed using the transformed (re-encoded) payload. Not the original one. + """ + return sha256(self.output()).hexdigest() + + +class CharsetMatches: + """ + Container with every CharsetMatch items ordered by default from most probable to the less one. + Act like a list(iterable) but does not implements all related methods. + """ + + def __init__(self, results: Optional[List[CharsetMatch]] = None): + self._results: List[CharsetMatch] = sorted(results) if results else [] + + def __iter__(self) -> Iterator[CharsetMatch]: + yield from self._results + + def __getitem__(self, item: Union[int, str]) -> CharsetMatch: + """ + Retrieve a single item either by its position or encoding name (alias may be used here). + Raise KeyError upon invalid index or encoding not present in results. + """ + if isinstance(item, int): + return self._results[item] + if isinstance(item, str): + item = iana_name(item, False) + for result in self._results: + if item in result.could_be_from_charset: + return result + raise KeyError + + def __len__(self) -> int: + return len(self._results) + + def __bool__(self) -> bool: + return len(self._results) > 0 + + def append(self, item: CharsetMatch) -> None: + """ + Insert a single match. Will be inserted accordingly to preserve sort. + Can be inserted as a submatch. + """ + if not isinstance(item, CharsetMatch): + raise ValueError( + "Cannot append instance '{}' to CharsetMatches".format( + str(item.__class__) + ) + ) + # We should disable the submatch factoring when the input file is too heavy (conserve RAM usage) + if len(item.raw) < TOO_BIG_SEQUENCE: + for match in self._results: + if match.fingerprint == item.fingerprint and match.chaos == item.chaos: + match.add_submatch(item) + return + self._results.append(item) + self._results = sorted(self._results) + + def best(self) -> Optional["CharsetMatch"]: + """ + Simply return the first match. Strict equivalent to matches[0]. + """ + if not self._results: + return None + return self._results[0] + + def first(self) -> Optional["CharsetMatch"]: + """ + Redundant method, call the method best(). Kept for BC reasons. + """ + return self.best() + + +CoherenceMatch = Tuple[str, float] +CoherenceMatches = List[CoherenceMatch] + + +class CliDetectionResult: + def __init__( + self, + path: str, + encoding: Optional[str], + encoding_aliases: List[str], + alternative_encodings: List[str], + language: str, + alphabets: List[str], + has_sig_or_bom: bool, + chaos: float, + coherence: float, + unicode_path: Optional[str], + is_preferred: bool, + ): + self.path: str = path + self.unicode_path: Optional[str] = unicode_path + self.encoding: Optional[str] = encoding + self.encoding_aliases: List[str] = encoding_aliases + self.alternative_encodings: List[str] = alternative_encodings + self.language: str = language + self.alphabets: List[str] = alphabets + self.has_sig_or_bom: bool = has_sig_or_bom + self.chaos: float = chaos + self.coherence: float = coherence + self.is_preferred: bool = is_preferred + + @property + def __dict__(self) -> Dict[str, Any]: # type: ignore + return { + "path": self.path, + "encoding": self.encoding, + "encoding_aliases": self.encoding_aliases, + "alternative_encodings": self.alternative_encodings, + "language": self.language, + "alphabets": self.alphabets, + "has_sig_or_bom": self.has_sig_or_bom, + "chaos": self.chaos, + "coherence": self.coherence, + "unicode_path": self.unicode_path, + "is_preferred": self.is_preferred, + } + + def to_json(self) -> str: + return dumps(self.__dict__, ensure_ascii=True, indent=4) diff --git a/venv/Lib/site-packages/charset_normalizer/py.typed b/venv/Lib/site-packages/charset_normalizer/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/venv/Lib/site-packages/charset_normalizer/utils.py b/venv/Lib/site-packages/charset_normalizer/utils.py new file mode 100644 index 0000000..e5cbbf4 --- /dev/null +++ b/venv/Lib/site-packages/charset_normalizer/utils.py @@ -0,0 +1,421 @@ +import importlib +import logging +import unicodedata +from codecs import IncrementalDecoder +from encodings.aliases import aliases +from functools import lru_cache +from re import findall +from typing import Generator, List, Optional, Set, Tuple, Union + +from _multibytecodec import MultibyteIncrementalDecoder + +from .constant import ( + ENCODING_MARKS, + IANA_SUPPORTED_SIMILAR, + RE_POSSIBLE_ENCODING_INDICATION, + UNICODE_RANGES_COMBINED, + UNICODE_SECONDARY_RANGE_KEYWORD, + UTF8_MAXIMAL_ALLOCATION, +) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_accentuated(character: str) -> bool: + try: + description: str = unicodedata.name(character) + except ValueError: + return False + return ( + "WITH GRAVE" in description + or "WITH ACUTE" in description + or "WITH CEDILLA" in description + or "WITH DIAERESIS" in description + or "WITH CIRCUMFLEX" in description + or "WITH TILDE" in description + or "WITH MACRON" in description + or "WITH RING ABOVE" in description + ) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def remove_accent(character: str) -> str: + decomposed: str = unicodedata.decomposition(character) + if not decomposed: + return character + + codes: List[str] = decomposed.split(" ") + + return chr(int(codes[0], 16)) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def unicode_range(character: str) -> Optional[str]: + """ + Retrieve the Unicode range official name from a single character. + """ + character_ord: int = ord(character) + + for range_name, ord_range in UNICODE_RANGES_COMBINED.items(): + if character_ord in ord_range: + return range_name + + return None + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_latin(character: str) -> bool: + try: + description: str = unicodedata.name(character) + except ValueError: + return False + return "LATIN" in description + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_punctuation(character: str) -> bool: + character_category: str = unicodedata.category(character) + + if "P" in character_category: + return True + + character_range: Optional[str] = unicode_range(character) + + if character_range is None: + return False + + return "Punctuation" in character_range + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_symbol(character: str) -> bool: + character_category: str = unicodedata.category(character) + + if "S" in character_category or "N" in character_category: + return True + + character_range: Optional[str] = unicode_range(character) + + if character_range is None: + return False + + return "Forms" in character_range and character_category != "Lo" + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_emoticon(character: str) -> bool: + character_range: Optional[str] = unicode_range(character) + + if character_range is None: + return False + + return "Emoticons" in character_range or "Pictographs" in character_range + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_separator(character: str) -> bool: + if character.isspace() or character in {"|", "+", "<", ">"}: + return True + + character_category: str = unicodedata.category(character) + + return "Z" in character_category or character_category in {"Po", "Pd", "Pc"} + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_case_variable(character: str) -> bool: + return character.islower() != character.isupper() + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_cjk(character: str) -> bool: + try: + character_name = unicodedata.name(character) + except ValueError: + return False + + return "CJK" in character_name + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_hiragana(character: str) -> bool: + try: + character_name = unicodedata.name(character) + except ValueError: + return False + + return "HIRAGANA" in character_name + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_katakana(character: str) -> bool: + try: + character_name = unicodedata.name(character) + except ValueError: + return False + + return "KATAKANA" in character_name + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_hangul(character: str) -> bool: + try: + character_name = unicodedata.name(character) + except ValueError: + return False + + return "HANGUL" in character_name + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_thai(character: str) -> bool: + try: + character_name = unicodedata.name(character) + except ValueError: + return False + + return "THAI" in character_name + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_arabic(character: str) -> bool: + try: + character_name = unicodedata.name(character) + except ValueError: + return False + + return "ARABIC" in character_name + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_arabic_isolated_form(character: str) -> bool: + try: + character_name = unicodedata.name(character) + except ValueError: + return False + + return "ARABIC" in character_name and "ISOLATED FORM" in character_name + + +@lru_cache(maxsize=len(UNICODE_RANGES_COMBINED)) +def is_unicode_range_secondary(range_name: str) -> bool: + return any(keyword in range_name for keyword in UNICODE_SECONDARY_RANGE_KEYWORD) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_unprintable(character: str) -> bool: + return ( + character.isspace() is False # includes \n \t \r \v + and character.isprintable() is False + and character != "\x1A" # Why? Its the ASCII substitute character. + and character != "\ufeff" # bug discovered in Python, + # Zero Width No-Break Space located in Arabic Presentation Forms-B, Unicode 1.1 not acknowledged as space. + ) + + +def any_specified_encoding(sequence: bytes, search_zone: int = 8192) -> Optional[str]: + """ + Extract using ASCII-only decoder any specified encoding in the first n-bytes. + """ + if not isinstance(sequence, bytes): + raise TypeError + + seq_len: int = len(sequence) + + results: List[str] = findall( + RE_POSSIBLE_ENCODING_INDICATION, + sequence[: min(seq_len, search_zone)].decode("ascii", errors="ignore"), + ) + + if len(results) == 0: + return None + + for specified_encoding in results: + specified_encoding = specified_encoding.lower().replace("-", "_") + + encoding_alias: str + encoding_iana: str + + for encoding_alias, encoding_iana in aliases.items(): + if encoding_alias == specified_encoding: + return encoding_iana + if encoding_iana == specified_encoding: + return encoding_iana + + return None + + +@lru_cache(maxsize=128) +def is_multi_byte_encoding(name: str) -> bool: + """ + Verify is a specific encoding is a multi byte one based on it IANA name + """ + return name in { + "utf_8", + "utf_8_sig", + "utf_16", + "utf_16_be", + "utf_16_le", + "utf_32", + "utf_32_le", + "utf_32_be", + "utf_7", + } or issubclass( + importlib.import_module("encodings.{}".format(name)).IncrementalDecoder, + MultibyteIncrementalDecoder, + ) + + +def identify_sig_or_bom(sequence: bytes) -> Tuple[Optional[str], bytes]: + """ + Identify and extract SIG/BOM in given sequence. + """ + + for iana_encoding in ENCODING_MARKS: + marks: Union[bytes, List[bytes]] = ENCODING_MARKS[iana_encoding] + + if isinstance(marks, bytes): + marks = [marks] + + for mark in marks: + if sequence.startswith(mark): + return iana_encoding, mark + + return None, b"" + + +def should_strip_sig_or_bom(iana_encoding: str) -> bool: + return iana_encoding not in {"utf_16", "utf_32"} + + +def iana_name(cp_name: str, strict: bool = True) -> str: + cp_name = cp_name.lower().replace("-", "_") + + encoding_alias: str + encoding_iana: str + + for encoding_alias, encoding_iana in aliases.items(): + if cp_name in [encoding_alias, encoding_iana]: + return encoding_iana + + if strict: + raise ValueError("Unable to retrieve IANA for '{}'".format(cp_name)) + + return cp_name + + +def range_scan(decoded_sequence: str) -> List[str]: + ranges: Set[str] = set() + + for character in decoded_sequence: + character_range: Optional[str] = unicode_range(character) + + if character_range is None: + continue + + ranges.add(character_range) + + return list(ranges) + + +def cp_similarity(iana_name_a: str, iana_name_b: str) -> float: + if is_multi_byte_encoding(iana_name_a) or is_multi_byte_encoding(iana_name_b): + return 0.0 + + decoder_a = importlib.import_module( + "encodings.{}".format(iana_name_a) + ).IncrementalDecoder + decoder_b = importlib.import_module( + "encodings.{}".format(iana_name_b) + ).IncrementalDecoder + + id_a: IncrementalDecoder = decoder_a(errors="ignore") + id_b: IncrementalDecoder = decoder_b(errors="ignore") + + character_match_count: int = 0 + + for i in range(255): + to_be_decoded: bytes = bytes([i]) + if id_a.decode(to_be_decoded) == id_b.decode(to_be_decoded): + character_match_count += 1 + + return character_match_count / 254 + + +def is_cp_similar(iana_name_a: str, iana_name_b: str) -> bool: + """ + Determine if two code page are at least 80% similar. IANA_SUPPORTED_SIMILAR dict was generated using + the function cp_similarity. + """ + return ( + iana_name_a in IANA_SUPPORTED_SIMILAR + and iana_name_b in IANA_SUPPORTED_SIMILAR[iana_name_a] + ) + + +def set_logging_handler( + name: str = "charset_normalizer", + level: int = logging.INFO, + format_string: str = "%(asctime)s | %(levelname)s | %(message)s", +) -> None: + logger = logging.getLogger(name) + logger.setLevel(level) + + handler = logging.StreamHandler() + handler.setFormatter(logging.Formatter(format_string)) + logger.addHandler(handler) + + +def cut_sequence_chunks( + sequences: bytes, + encoding_iana: str, + offsets: range, + chunk_size: int, + bom_or_sig_available: bool, + strip_sig_or_bom: bool, + sig_payload: bytes, + is_multi_byte_decoder: bool, + decoded_payload: Optional[str] = None, +) -> Generator[str, None, None]: + if decoded_payload and is_multi_byte_decoder is False: + for i in offsets: + chunk = decoded_payload[i : i + chunk_size] + if not chunk: + break + yield chunk + else: + for i in offsets: + chunk_end = i + chunk_size + if chunk_end > len(sequences) + 8: + continue + + cut_sequence = sequences[i : i + chunk_size] + + if bom_or_sig_available and strip_sig_or_bom is False: + cut_sequence = sig_payload + cut_sequence + + chunk = cut_sequence.decode( + encoding_iana, + errors="ignore" if is_multi_byte_decoder else "strict", + ) + + # multi-byte bad cutting detector and adjustment + # not the cleanest way to perform that fix but clever enough for now. + if is_multi_byte_decoder and i > 0: + chunk_partial_size_chk: int = min(chunk_size, 16) + + if ( + decoded_payload + and chunk[:chunk_partial_size_chk] not in decoded_payload + ): + for j in range(i, i - 4, -1): + cut_sequence = sequences[j:chunk_end] + + if bom_or_sig_available and strip_sig_or_bom is False: + cut_sequence = sig_payload + cut_sequence + + chunk = cut_sequence.decode(encoding_iana, errors="ignore") + + if chunk[:chunk_partial_size_chk] in decoded_payload: + break + + yield chunk diff --git a/venv/Lib/site-packages/charset_normalizer/version.py b/venv/Lib/site-packages/charset_normalizer/version.py new file mode 100644 index 0000000..699990e --- /dev/null +++ b/venv/Lib/site-packages/charset_normalizer/version.py @@ -0,0 +1,6 @@ +""" +Expose version +""" + +__version__ = "3.4.0" +VERSION = __version__.split(".") diff --git a/venv/Lib/site-packages/click-8.1.7.dist-info/INSTALLER b/venv/Lib/site-packages/click-8.1.7.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/venv/Lib/site-packages/click-8.1.7.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/Lib/site-packages/click-8.1.7.dist-info/LICENSE.rst b/venv/Lib/site-packages/click-8.1.7.dist-info/LICENSE.rst new file mode 100644 index 0000000..d12a849 --- /dev/null +++ b/venv/Lib/site-packages/click-8.1.7.dist-info/LICENSE.rst @@ -0,0 +1,28 @@ +Copyright 2014 Pallets + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/venv/Lib/site-packages/click-8.1.7.dist-info/METADATA b/venv/Lib/site-packages/click-8.1.7.dist-info/METADATA new file mode 100644 index 0000000..7a6bbb2 --- /dev/null +++ b/venv/Lib/site-packages/click-8.1.7.dist-info/METADATA @@ -0,0 +1,103 @@ +Metadata-Version: 2.1 +Name: click +Version: 8.1.7 +Summary: Composable command line interface toolkit +Home-page: https://palletsprojects.com/p/click/ +Maintainer: Pallets +Maintainer-email: contact@palletsprojects.com +License: BSD-3-Clause +Project-URL: Donate, https://palletsprojects.com/donate +Project-URL: Documentation, https://click.palletsprojects.com/ +Project-URL: Changes, https://click.palletsprojects.com/changes/ +Project-URL: Source Code, https://github.com/pallets/click/ +Project-URL: Issue Tracker, https://github.com/pallets/click/issues/ +Project-URL: Chat, https://discord.gg/pallets +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Requires-Python: >=3.7 +Description-Content-Type: text/x-rst +License-File: LICENSE.rst +Requires-Dist: colorama ; platform_system == "Windows" +Requires-Dist: importlib-metadata ; python_version < "3.8" + +\$ click\_ +========== + +Click is a Python package for creating beautiful command line interfaces +in a composable way with as little code as necessary. It's the "Command +Line Interface Creation Kit". It's highly configurable but comes with +sensible defaults out of the box. + +It aims to make the process of writing command line tools quick and fun +while also preventing any frustration caused by the inability to +implement an intended CLI API. + +Click in three points: + +- Arbitrary nesting of commands +- Automatic help page generation +- Supports lazy loading of subcommands at runtime + + +Installing +---------- + +Install and update using `pip`_: + +.. code-block:: text + + $ pip install -U click + +.. _pip: https://pip.pypa.io/en/stable/getting-started/ + + +A Simple Example +---------------- + +.. code-block:: python + + import click + + @click.command() + @click.option("--count", default=1, help="Number of greetings.") + @click.option("--name", prompt="Your name", help="The person to greet.") + def hello(count, name): + """Simple program that greets NAME for a total of COUNT times.""" + for _ in range(count): + click.echo(f"Hello, {name}!") + + if __name__ == '__main__': + hello() + +.. code-block:: text + + $ python hello.py --count=3 + Your name: Click + Hello, Click! + Hello, Click! + Hello, Click! + + +Donate +------ + +The Pallets organization develops and supports Click and other popular +packages. In order to grow the community of contributors and users, and +allow the maintainers to devote more time to the projects, `please +donate today`_. + +.. _please donate today: https://palletsprojects.com/donate + + +Links +----- + +- Documentation: https://click.palletsprojects.com/ +- Changes: https://click.palletsprojects.com/changes/ +- PyPI Releases: https://pypi.org/project/click/ +- Source Code: https://github.com/pallets/click +- Issue Tracker: https://github.com/pallets/click/issues +- Chat: https://discord.gg/pallets diff --git a/venv/Lib/site-packages/click-8.1.7.dist-info/RECORD b/venv/Lib/site-packages/click-8.1.7.dist-info/RECORD new file mode 100644 index 0000000..7bc97df --- /dev/null +++ b/venv/Lib/site-packages/click-8.1.7.dist-info/RECORD @@ -0,0 +1,39 @@ +click-8.1.7.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +click-8.1.7.dist-info/LICENSE.rst,sha256=morRBqOU6FO_4h9C9OctWSgZoigF2ZG18ydQKSkrZY0,1475 +click-8.1.7.dist-info/METADATA,sha256=qIMevCxGA9yEmJOM_4WHuUJCwWpsIEVbCPOhs45YPN4,3014 +click-8.1.7.dist-info/RECORD,, +click-8.1.7.dist-info/WHEEL,sha256=5sUXSg9e4bi7lTLOHcm6QEYwO5TIF1TNbTSVFVjcJcc,92 +click-8.1.7.dist-info/top_level.txt,sha256=J1ZQogalYS4pphY_lPECoNMfw0HzTSrZglC4Yfwo4xA,6 +click/__init__.py,sha256=YDDbjm406dTOA0V8bTtdGnhN7zj5j-_dFRewZF_pLvw,3138 +click/__pycache__/__init__.cpython-310.pyc,, +click/__pycache__/_compat.cpython-310.pyc,, +click/__pycache__/_termui_impl.cpython-310.pyc,, +click/__pycache__/_textwrap.cpython-310.pyc,, +click/__pycache__/_winconsole.cpython-310.pyc,, +click/__pycache__/core.cpython-310.pyc,, +click/__pycache__/decorators.cpython-310.pyc,, +click/__pycache__/exceptions.cpython-310.pyc,, +click/__pycache__/formatting.cpython-310.pyc,, +click/__pycache__/globals.cpython-310.pyc,, +click/__pycache__/parser.cpython-310.pyc,, +click/__pycache__/shell_completion.cpython-310.pyc,, +click/__pycache__/termui.cpython-310.pyc,, +click/__pycache__/testing.cpython-310.pyc,, +click/__pycache__/types.cpython-310.pyc,, +click/__pycache__/utils.cpython-310.pyc,, +click/_compat.py,sha256=5318agQpbt4kroKsbqDOYpTSWzL_YCZVUQiTT04yXmc,18744 +click/_termui_impl.py,sha256=3dFYv4445Nw-rFvZOTBMBPYwB1bxnmNk9Du6Dm_oBSU,24069 +click/_textwrap.py,sha256=10fQ64OcBUMuK7mFvh8363_uoOxPlRItZBmKzRJDgoY,1353 +click/_winconsole.py,sha256=5ju3jQkcZD0W27WEMGqmEP4y_crUVzPCqsX_FYb7BO0,7860 +click/core.py,sha256=j6oEWtGgGna8JarD6WxhXmNnxLnfRjwXglbBc-8jr7U,114086 +click/decorators.py,sha256=-ZlbGYgV-oI8jr_oH4RpuL1PFS-5QmeuEAsLDAYgxtw,18719 +click/exceptions.py,sha256=fyROO-47HWFDjt2qupo7A3J32VlpM-ovJnfowu92K3s,9273 +click/formatting.py,sha256=Frf0-5W33-loyY_i9qrwXR8-STnW3m5gvyxLVUdyxyk,9706 +click/globals.py,sha256=TP-qM88STzc7f127h35TD_v920FgfOD2EwzqA0oE8XU,1961 +click/parser.py,sha256=LKyYQE9ZLj5KgIDXkrcTHQRXIggfoivX14_UVIn56YA,19067 +click/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +click/shell_completion.py,sha256=Ty3VM_ts0sQhj6u7eFTiLwHPoTgcXTGEAUg2OpLqYKw,18460 +click/termui.py,sha256=H7Q8FpmPelhJ2ovOhfCRhjMtCpNyjFXryAMLZODqsdc,28324 +click/testing.py,sha256=1Qd4kS5bucn1hsNIRryd0WtTMuCpkA93grkWxT8POsU,16084 +click/types.py,sha256=TZvz3hKvBztf-Hpa2enOmP4eznSPLzijjig5b_0XMxE,36391 +click/utils.py,sha256=1476UduUNY6UePGU4m18uzVHLt1sKM2PP3yWsQhbItM,20298 diff --git a/venv/Lib/site-packages/click-8.1.7.dist-info/WHEEL b/venv/Lib/site-packages/click-8.1.7.dist-info/WHEEL new file mode 100644 index 0000000..2c08da0 --- /dev/null +++ b/venv/Lib/site-packages/click-8.1.7.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.41.1) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/venv/Lib/site-packages/click-8.1.7.dist-info/top_level.txt b/venv/Lib/site-packages/click-8.1.7.dist-info/top_level.txt new file mode 100644 index 0000000..dca9a90 --- /dev/null +++ b/venv/Lib/site-packages/click-8.1.7.dist-info/top_level.txt @@ -0,0 +1 @@ +click diff --git a/venv/Lib/site-packages/click/__init__.py b/venv/Lib/site-packages/click/__init__.py new file mode 100644 index 0000000..9a1dab0 --- /dev/null +++ b/venv/Lib/site-packages/click/__init__.py @@ -0,0 +1,73 @@ +""" +Click is a simple Python module inspired by the stdlib optparse to make +writing command line scripts fun. Unlike other modules, it's based +around a simple API that does not come with too much magic and is +composable. +""" +from .core import Argument as Argument +from .core import BaseCommand as BaseCommand +from .core import Command as Command +from .core import CommandCollection as CommandCollection +from .core import Context as Context +from .core import Group as Group +from .core import MultiCommand as MultiCommand +from .core import Option as Option +from .core import Parameter as Parameter +from .decorators import argument as argument +from .decorators import command as command +from .decorators import confirmation_option as confirmation_option +from .decorators import group as group +from .decorators import help_option as help_option +from .decorators import make_pass_decorator as make_pass_decorator +from .decorators import option as option +from .decorators import pass_context as pass_context +from .decorators import pass_obj as pass_obj +from .decorators import password_option as password_option +from .decorators import version_option as version_option +from .exceptions import Abort as Abort +from .exceptions import BadArgumentUsage as BadArgumentUsage +from .exceptions import BadOptionUsage as BadOptionUsage +from .exceptions import BadParameter as BadParameter +from .exceptions import ClickException as ClickException +from .exceptions import FileError as FileError +from .exceptions import MissingParameter as MissingParameter +from .exceptions import NoSuchOption as NoSuchOption +from .exceptions import UsageError as UsageError +from .formatting import HelpFormatter as HelpFormatter +from .formatting import wrap_text as wrap_text +from .globals import get_current_context as get_current_context +from .parser import OptionParser as OptionParser +from .termui import clear as clear +from .termui import confirm as confirm +from .termui import echo_via_pager as echo_via_pager +from .termui import edit as edit +from .termui import getchar as getchar +from .termui import launch as launch +from .termui import pause as pause +from .termui import progressbar as progressbar +from .termui import prompt as prompt +from .termui import secho as secho +from .termui import style as style +from .termui import unstyle as unstyle +from .types import BOOL as BOOL +from .types import Choice as Choice +from .types import DateTime as DateTime +from .types import File as File +from .types import FLOAT as FLOAT +from .types import FloatRange as FloatRange +from .types import INT as INT +from .types import IntRange as IntRange +from .types import ParamType as ParamType +from .types import Path as Path +from .types import STRING as STRING +from .types import Tuple as Tuple +from .types import UNPROCESSED as UNPROCESSED +from .types import UUID as UUID +from .utils import echo as echo +from .utils import format_filename as format_filename +from .utils import get_app_dir as get_app_dir +from .utils import get_binary_stream as get_binary_stream +from .utils import get_text_stream as get_text_stream +from .utils import open_file as open_file + +__version__ = "8.1.7" diff --git a/venv/Lib/site-packages/click/__pycache__/__init__.cpython-310.pyc b/venv/Lib/site-packages/click/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6a7f81573b6a74640e08709f6fdfd2791e802f6b GIT binary patch literal 2596 zcmc)M*-{%v6b4`c+9meI?2N$}vx(L0`)X_ql!2<$DXOMMGmX??w(1^%@dM;t@=ChR zRW9-X$yLrdVsV}zxcu{VPcJh^Esul7#%v6K{{HK^5{ew6ojM9nit^JBh=wWxGd!d)zgYJVqb}zag`q_Qx0T^KSqX%J-J%Ap9A@(5J z0E0c`zV(J-m~Eg(V1)hFedmqBD0|p_?~TD2d&K?Vjl($m9eM&L*rVu4m}I|4Pr(#> z3_T6g><{Py6xieF8JJ;Dpl4y0J&B%!IrbEK9_HE8=ml6{7to8a$ewXOdP}gxo<%Ri zGJ6ia0xRr!^eU{f7tm|4#$H6P!#evTdIL7tOXyA5WG|z)V2izi-iB@VDtZTY*lXxr z*k!My_h65`f!>FG_NIH_9l{}d3w;Df>}~Wh9J6=OpWqXF7kvUJ>^<~n_>A6%FV4Yb zZ2a&?HM{Rh`_7QsunaA|&=tnTV^j`&!wZ}Wwxq8^sf1$`AC0Ii3>`VHEE+)=g_hF7 zhyug2?nL%M$w>Mo!wx*p@*TsKJ`T2(3?psaR{Vl-?Yr_$7y+)Lo>tdWhK$CvQM9yh zvX%-eIP>L3b}vqFODi&*Kxo4cB3fJ+4>Bs_wzzM_F5~7UX&bbo)LFb92HGmRqLBTw z4!{57b=CB)Dpfq;N9f!hZnR&!Lu{sA+4{u&z;%Tk$-u8&_apJ0W+smD=0ZgNYsHP^ z>%`=F_%u3mVJXWKkx)1+ZN2WAvR`&=w*&uHD$k-hCKj=_QKIy;daf+o@U_34N^6Fe z)}|xuKv_{hiziHqG$TMQIEV9TE6JXh*k zTP1;gP1sj^yyu=g_Wb;qO?-R~zuV&ZQ8Gu;6^BakjkbK1TH~qsc}o5)xWo_crEFPV z`*}v=CoI5GKozPLGV`FU(0qEl_L7K9yP_0+oaXCO=WC1ME}Dy}#Fg~OajFsiP8^+{?_MFYM{Zz6-z=ZY-f(h8 zo#_+*rK@(ft{y|4eqlv)kIBocZzpHRw9r)rzqyFq_1VR@^Zmoi%fka~#;>nW`1jMT zHs5k(&0E~x$FoW^sH9dHnvSH3wNkSveM>!>I#R;&u(O#u=_7dU$^@bCd7U4LmBL(M z`E2~Onleo%uuZcX$FnLFy@VCMe`6|6k)TLYq$tu9847xpL-yr>Yn7v3e67b+BSjNM zGerwUD@7YcJ4FXYCq^|Zp3k9HUDW%AqMM?JqL-qNqMu@bVh{tewX)E^UuuYY4GcUN zZcwybt=>{A8S?2;!`Of%o=vYJ)d)7!JBm??_Y`9kA1KBtCMYH;rYNQ<3K-QygrBBX zGt@ClF-I{^u|Tm%@sVPQVwqxvVwGZzVx3|GqnfBh67O`AI<_dbDRwA!DfTd`In#Xp z{+qwY)EBxy@z46f+RZPHxW6gNqAP<)+*vpG!oR;cmBkw^BQYIX_8oq0^o>ogiy70D izKl$>5I$DZ8?`qDzTEKtTfbq%WBFvh?*ILhuKyR#Nvo&; literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/click/__pycache__/_compat.cpython-310.pyc b/venv/Lib/site-packages/click/__pycache__/_compat.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..443351acaf99b0dba59e5349faa67bda4ff8aefe GIT binary patch literal 15664 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/click/__pycache__/_termui_impl.cpython-310.pyc b/venv/Lib/site-packages/click/__pycache__/_termui_impl.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b4c9a7ebff0243010363cdac2b18eba34f1786dc GIT binary patch literal 16294 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/click/__pycache__/_textwrap.cpython-310.pyc b/venv/Lib/site-packages/click/__pycache__/_textwrap.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..84005ce25f4709f118f00a78b609a95060d0811b GIT binary patch literal 1530 zcmZWpOK&4Z5boEs#}mh4qii0F;DT5*2NuKy2}NinRziy+A6Ud9%V;#7?l@zQXPoY_ z^UzoVCH#sNl5^xQ^_5c&`~a3ms2Y10!}h4lUDZ`x)n9$>VskSfFn<5-Xz-*O?WD*{ zeO`{^JRWG1pnZK{9gksJ1wxZ9RRl6n&4)sJ2axIYifaj3r1F$J4pc+=*P`3dzG`Yu zdEnJl@_-x*6{wACaYeg7D+P2)rH&D=X6Hg}ExGke++E}fk9l_yRbT~1BjNdU6fqX{d7>kF9mB}!6>ithtxS8VQ8WJt~X z6;cDN?WfiY-{xxS^C(KKdR4*w0AC?8o&EUGN)%yJ*E3^3E-V zgtvDvLgDy0K6h{RjgCiAR^)@|tT4(tiC4^(Al9@nj0ZX!{E>JK*y2@X2Sr@06bP`e{E)i&Br`-c0AS-cj1`*|gLj!Vx3r zvF#;Unv6b*ux$bm@O#4?1AWR7nuV4dPw&^ z+TIAOfnJLH5b0U~pov#!9)QK}f?z*LCTSZ!2DnKUPKw=j z0X2^Q2WMl6epKYy#Y2d(Z4iR)05(3%9Tu?5y>(31{KJ;>qbQHZI*MEnMdLzEft!(Q zMbYUr&Q?1V9>Yd8xk4KT<$=RYm+Vudje(Doh*r1P49e=))SWFGs2$>1g1en59ywJ)INW5e*}I9Xmy(tKb(fLIr-{z|j7Uzbq3ucfQA W*TnG;mpA$xJ7Mur_ynKWF8>GL417NT literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/click/__pycache__/_winconsole.cpython-310.pyc b/venv/Lib/site-packages/click/__pycache__/_winconsole.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1b166cefb2fc91dee39d9d41d3156ac86a54ab9c GIT binary patch literal 7648 zcmbtZOK=-UdY%^sgC{8pqV*Q+^{xclk}S#Vhb+qyDNv%90vJ9_d!o$*L^miv0}S0W zq)Y}%whSfC%c-QYo65ebsH5(iR3(R8b4XRHa>%7GIqXS?Jt>>2D7(vie-FT?G_ znt%T8`Mdk??*GjomrHB-{r4}XmVS0p(|%5koxcZ)zH zhI*T>g}31++O})!L}LO^x=Dpwz#Z37cmjCJO)1<4o_5m;PXf=l8HGE*vu;-5Dd0Ib zr|>lJyqi~e2KbOWr0}di+&KfNu zFR_t(MkqegzKC~p*gXvH4`TKs?h!Sz0Q{(X6x2DM?&LRG4fk@AHn-H-be91!!)sx-wA^cZdM~m|=)JzD_bv8q^p5ds{5l_FZ~w$}$1%$dUIv_? zS(kJ*t8qkY;NdsfJ6AOJF7;u(TUhNqb{R8F_WRz)myh^&j%e)47Djx1L?bYV!#-eF zK|jUxS*>*K328;8q|3zOn&1r}cHOJrtqEXGjCsrSx$ZSP5s*~f3&Z9*_o$Jqdn zS&E5QgCl&VL27qg1QD9AUZZ-^N za0}4n2|!E11h;|P3MP3HxWgU5l!9pmGcSnF*CLq+@79*NOoowYG9JowxUv{D8X=ED*TFS& z(W&{BQd&Bm*QvF+=gG9^wF9=|6Q1?F&sJ)F{6)|S39`1rCXgUt0c=akGUjPCxz9rH zu_oRi0s_yj-ne|{6UJBXEH)SYW)SgvwL7c4vwCN$xp*hUF3v93>i23(JiJr)oArC= zJzQ};=!AjK&n>TskprJ|dt)BO#8#3Z?ZaXg_55NSQ_fzj1P zGSWMGWIQkGm~@I$EM0M8@FdCZ%?B&GQCz+isC_H$JEWn$4ZO~NT4Q8 z0my7a1Z}UznBZY3PEgk{CQ<{u8Se91$V&+Uuct}pzGz0ZMW4rXiH2WW3f)XBH(s;` z1=_j}ah67;mw42dtM8&6<^gOys~2>`NaKCn5O1SvpTHA;^b21F*cNzZJk(tCORb?Z zlUWZP*ZNYkG&cbePC%&_pt8aJa6G=#ncDry>KNGHbyu`~demK!oOSiC=D`imYT_K4 zr22QE-99fF(h9lX5bvUU@5Ug?%}z7&ycRw_r3use`pYlk;M{<^P8vV>5l$m%v+86> zY&P^q%HzyxkB!P4cu0gRWSHz`Sc{^y$GUhApQOVqjV50+6Ee2qxdg6{xp;t5Gx9nH}Trl7uk zH%c45h9@L7+k2zxHZ=rBbd$C`w3lbt9WM5r9i1Ot<5Su!`5$owNPHR}ZefaHC5*~` zk@$u*h#128oP6$D=g8C%=`PtxVhHV1$04l&S$IUd!-a0L16>0dze zyE?ih~ zKGavUA{QbMmy4yL*pj3_uK6pxOr1)p1s#{n&S2fXMlOgPv8D8hj$dYBo2F`Eqz1{C z$}=<78Lv8Bp1D3ZS*>{2$Eq`P`uERG09O#y%JGy~C zYcp#(@D+v;w}I)_|D=;?!_tTKEFf&d*T@-7T!D?$dVui|klRz1YZ36@~?L(R2Wl0;~q5-z~@e~l7~8<_s<6;R0$sg0Nb z*molF0_O%kW}mu~#3;>s1xOdV2g$dU)@hLrJj)Ddf!S3Wf-P7TnTsWAc7A-kJUcrO zuu65#D_5%XH*a~j%eSjDpRVV3iFC1Kh z`!>ZH*c3`&U>j11GwiO-46-d`jqX`wW4hW#Cd&4-N3dkDDmG5etSHl=j7TY`v|DMk zG~3ONJaGH^C*IhnbLCkTd(4$9v8LzL)?T3MqKZw3+XOx#FbUAtS}_gWJ-AbENd_X` zQDKIAc!z?gSKJU`P>-gImf!M{|dbVcg#OvFG2N znxg{l_b4oxNtq3!TGXt!IbwMh@AVG)cSz5+4$tAk5Aeh?18xixK~Yjr|2{n?$8(K{ z{}NzZkGa{hkOP>l1Zi@^R$6SiHcuiapr}8|oQD?lJB9e)Y^BkgL6(7DQ%L=K42}q>R_v zG7}-M@{kg!23^XaVGE9&ty8I!Wg7el-%{{lG~%$VYalp-V;lr$2C{`66N}#hWyw^= zUwFX9?-JO3=_;W4d-SWI$R?#6-NoyRqq9MT5mHtH)zVrNWvDRGP-`O-LP8^+6Kx2( zz<;DwXGo}urUDA`bh5?B7?<^4YR910t4&N@(qi^ zL=-AgmKG(}P;#L^6e;xk#Hc->jhRi#bQ8HQM6*-p(!{NZMNBV9G9|+JmGG`il|QfZ z<)|5S;!`!^Q)NWA=Rj%LKj8`Kq9}|v@MNJe#%9)7Ke&6NN?T;YN46a9+AUoxJE`#(BWL1u3ajyB`Gt z2ZAMk45vY-fVcTm3e~O3dg02h*@`6BAFQY2FcRgJ51#2)aWr*IA{`Z5qVsu7QguM^ zWt`BzfmWT+=yNnRCMgy67+EVriReb}E{0_k1;R#0o9POxXSi{JK zj;0D$-b7$V-({|!C&xBX)X=x<&`IP5*~L?`F%jaL4S4wo=KGP(bcSPR)>qa8R1r4p zDA7VbKxVRMJc3X@PE?+yR-y)l@jjO}mTA@_gzqv>GTzU^armW_I6(Xu%|PbkM4z)6 z1h|N0=)z@ocJ9Vx#f$4`;xp>9>WI<>#hYp`j}5U-xH7rh2clf;kP2=3MjAo$zk~2; z9)OGlh0BI+|Ege%KSb9H_b+~rrtbpuxfS07zRm7}3PzQqlsT|louAvuujtY6Eq292 zYVP54co(0+O7tH@^hX5#1mOS3n)s3ilH*qVAnyGC@q@c~LNh9U{tOrlpUUaT3I(m~jWD=%V=M&xf&sa5&R+sNDm>4(Sy;3&Q# zT&?iD;!MVChF(1$`V5pxEvXt}7+HOU;=RqZSj1eE=1&^m1o9TnaIzH`V!^&&|9r%Qk4&VnmA2fjq-jv zKf?DuFsxVAb{}Bb7_Erk2Ohg-JI=2a`+tsJY2x_eZr_|v zOim%`bO+XIN0W?2+!PfWRH4tgW(Zf{ck!Qj@%m|9Q~utfEUg<2BzW2PlU;PnC?6ic)=%)KMvmbgC*stogAo zrF-8YQEyOFIRWQNT;9J*HY@xIK-!^Xi{$2O{){|IDD>Sic9!2qptMM*Hw&hN@4%2= zt7iu^kg{PMBy`xehY;l(BiZ59@Hg_s(c)-&G;L(a^PKs0A!+0&P(`w(p0ttw&HnImAxVtt6=Ax++^` zl~lP`<%e2^?l{oyg%Fw@m>uYzv74dU%nmTa&a%TSEU+v)1GCF>_ziPmhi!V6hTm^_ zW*F$ay#N1q&bbej%1+blk43g_9o>8Gd3@(P-}zqWJDstyLJFU+{n1mWzVy>p>MQ&a z|BT|tetdm5ol3bW*J`Dz>aSI`I*oL}9c^t~ z-ca2j>0)cs^5*JhNsl4DrMgAZC8W1jw@P{(>21|*lAb{Nrs_?So>aCLAi1g0tPDyWS-L`yt^>#^bM*0KQ4@i0o(z~j=B)zq@ zdwHfhBk65O&sJw8eG}4mRPT`V_ST)td#ZaReKXQ~t9vEA1L;b&BI#R@zN>ndq{~R( zUA#9}#kh|NRac3KkxOX7Ohw*(B={uQoYicp;?s50N>Qo=gSKMdayWG3o zd+_vL_fGe|#(wt>*IF#NA9U}3HB&v{K7e;0Z+r+fJlHrWr9B~~eaO8%EbSrpVU%{L zQOH~Fb5b)}vUJ$xTT;JkNv)5#AAU7+$*Ml-K8oibk>`(vDdv2F_t3um?g5l|Qnf2$UTf-hw(IELR(LEfj` z4sYaJC;9;&ErL$gRrBUbI zu@hc>p>Y!LpSZBn_(Kcz;cljjAO0Ii95~tWn6LPF-F>?5)t4JxDY$g7)m%7p==?%s zrQ7VZk=0>KkaOZ_)AyV0Q(5f7<+h!wM#Ai>>;pTD#G3{o2`jYqh~l$K-X?>MOwbE3Iaih2r4| z3R`S?%SdKdyw0-R%=q04ExtNkbJ44XZViu4p^LRPy2&DIjq@w@wp*)vr`Rl~v2ePB zznhoqXBv2CvA){s*8J0eQ0+9jghx4fPL^e2PA z{4U_@KZDDsQ{B`Rt84dDOX;ijMZ0fbar&vN))T3hwq8v4(^oQm>#F7L!u@PN)n^{3 z@3__~?>S2&{;qzy?=0HSrL5G;V}g!$?>C-m`rUH9)hc&SH_HC%Ni>d4@yngXa=m=Y z>#VNeQN3ICyLGQyKG*D?X4XO(pQtNk8MHE9EZ4n8dv~{dy6L)&cBLR0_pK1o$^gW^ z@{#u0&O)8gDr!KkhcpzId{EveoQ#8)xb-o^7+O`XH>H>j&0Bb#RIzM2$PT#^6XoqXIo9Ww^tfefT zk071W>734+|3c}K^@=rHnCrPmy5*){Zg;xnl@2Hix?Apc%5~Q*3uHOE3J2?cdEs=k z!oPfaLM44q28DY5;I*>t-eNA!Y6Q_Ak zwc1}@SpkUv_Vo&t@{|4-eDG%!@Th7z=5D}vff=d zUGtm0MuHNODiT?xf=x(tQ(e$OAR~~hZ(Xv#3xAKN-mvCooxtJ54${5mikD;Y4vU|) zy(jU*`v@vhA zL%0q~TZB}c?yR<4t}j@t{3cr1aAkesk_F~sp&^`+TKG7L6)F#uDkPPy|LkkUbZ-vA!&Jc~tkc1GNO6vLR=tHr{Y8waS$*p5@;=ND z-`_X?Esgf-a^(;%^LhzvyG<}wnD9g-UtSh2PB0}z^4-2-)--GOtluc_gA8zb-@Nc7 z6-`Sj+dSLE} zr;f}W3PumjJ$K}pV{=Cj&7BBFo;Y;)z_U-C2u5|HcJ#p0K~_~Bqoaa{L_v>O_3ilj zTX4yx94j{lI!US-ejQ74t--(B@Wy_=`UmL<|DFY5BnDP95MM`Jki|yMO+S*#JBfdp z#4pEPbhGY=o5MSK7fJy)&s3v;R6$bNrBS3u!@EU&x7gtGQ6>DlV{&&4IZI(`yisx| zvL!N2n!ecx42uOoS1Ys?--R|Cu)U>-pmp#(hD0ST;zmay!lG=n6OU=2rx;yd4=EfHHG!!c( zDSazp12w=0++Cu&*w(mdNUcz|yy`%)u^rDKb-AR(jGIMs@~ENU31O33bpYU?@odA7{`xLi2~IrkH8 zRmSRWoo8eq4||exUog4cXOVB#eGy}rEDLv8D#|1yl5=0;8`ZnrZ^o<|%*hgK?mV8~ zBT%e2?iHNNx+mQQ+`Uik5}Wgldu8lE$8i6Hu7h==?UDPb|0&k?6T&u#7D3oJ7)J@R}=K@Q00sRbdt( z`!_(p!G%EbhNy;j8m&sXe58w|q)nc()w+PnwB#y$J)S zAW@$dp(|VUuvGf13#VDM*QmQ}4i=btc@YXFDFCv2)9bX!=3>S0niNxf-O2-G38{&b zHi1J#J4L`Vw+%Cn{+>JCL^aSyG}wo8O{iPI%e179aPjTQ|Y1EC>@9#sB-eBEa6e%5vz`|f3ndAr^|6C zKP&y7G8vqyRtBI?OTt8IRN@ zf@6s{$WGLNYd|q@yp6>s)MRX>N^@@DJ!va*QifY7$53;friOzNVJ;>u`wwv8|NLC1 z4U9uYZG-+dDv1*#UUM`lSfJbVIYFS46K%7Jfu zKzJxL&($xeS)G8iQSmO z?t1cp{w_B`fotcQE;wu%R7n~n$==-%*cvqfCv*$S%%+SyNRw)l zszv~{+&p#qMy;Z**YAKH`}M^}_X6hr$_kfXE`K0=9*aoKB&^j<;1-Yw2v0_2pMoR+ zMAH$;Popi=hXu4_FuDPJSX={efj|jeY`slR2Hn7*H_tZFGGZnc7TVKpP*P%nd_vD; zkuwQ*Ecwu0bf8MQQ8A~$Q-ws79n%aDCrOi50p>P^5MI4z1p zB=oZz!RHLjlLk!;zr*z=PCSL1R7CRnKoSZ{gfm=*WY?5SfkdzY3?#5bnGJ_R<}k+A zfJR$AuV1rXoZ0OVh-4&5L_kTGo98tO+z4G%LD9ky>$_SY*6UtV@T|7lKGO!XX>7IV z9n1#a>OvRnByChuo@6ES4)hT=oNM>{=^(qq@@0I_G#V?y5-!V{*@6hN9@nSAqyEH{ zfbsDmZP(2f&J`3^wUB%u7I#srg6Beag!YN}qZYmL>CU+uG@oEIP-RUq?G|Q)m|WDN zeS>mL8F*=a{)OFp_p-3vFU`*qcZO(l1pQ(q6#hs z=LXdSf?=u1javNjj2_56Sl&8Kh+lhdTu7t4Pze`Fp+wrcM5HCgiuCh-niG;Ryh(Ye z?W0XtO&}PYY@Dv2ZFal_XcjuHj<-+P1ITh*hh>Qfmq<;`{PKah<42GUxnaEa$XTvC zK(Rp~m!q5ofZK)(0C-hd^lo?^5*C{ikRP%19)~ASwQ21=xo>N(4l~ zLsweUAkG(=umFu|Oaj{H#1Np^n<4EHOvOUBvYK2zVL&)%{2TU_kK>nAW2%)^Dj^J2 zjHD1&qVk{vY$H~LJ(QGm0m3e^-MS!(3H+&;)3At;UeC`TRN`zU-Y}?THUA`BDXKE< zBM4AlSda+xi;#jsx-E}}Yl80yUps*&&Cd^1i8ewo1Uhk2Mf_WQoYreDK!8~Q&4FR( zHM<9o1f`95pBm~LwCnmn4tuA7EfWPec%7;rtb`zm>&DlE%XLcnU`&f2FG^gS1uLD;54O<>*+2XSpsc^RCrQU1EuaK73-4^GF}QvdDQvzk$C{ zH|sk~qgRS>&9W|L`*6~#;XbZo{SkSys^7rhrP9Tb{s^9x`Z;-aT0g_zrSXfoKKyEG z<9+z(phmB6Elpf3^b5E*(Pv#LuaA3^7f1V}xHs7^%Dr#Ly{U`Eei8Sk`eSnMztQD> zFUs9;ajczo?NippvHlqHZ0MIH&zE!_{9T&9Sn8MXY`UMvbz?sxIetm!_(kN{ggch^ zi!dQ8h{-+eHDq7ed^Pn0sV}52X4+0a!(SIOQikRI7JhGm-JXtXxQEg=^~a_3-`Az% z@6y(bCm+H$tjDGML3`$@|srJyqK#;~t7>tn()tbA8 z@4d{|=%)z}3@^ykSe57VW*RqxDGG{bP(b8| zAOrU!xJrz`<+BA>Pp{7>7jdahfEGZFTr(1@A7ruWufVBoa*Zw5l2Fw(`%^i*TSUHCX{;TdDn+X|aZqW`DyE?eakmPlNAMNeayt^hbU0?x zt%5jD*9m+VEj8`vVI->I*b>mMAe=U z_>sxmy9i%Y8Z0^sB7%#@Ohpv0WeD*!xNF@WwFO{M4?Yz!uu8&%0YtCuTvo8QlAGOo z5`GqEV4+{R0F_8vnb`T9AMyUwz?p$~I7`zBy*k6CQ{|&;C=3W6=CcZP+p-K%**Y^D z6&Nk%&<3q>3Yg7Cb8v7{a2Cvt$n&5WFWwV;9l%KDh9}DF_%ncs-sf=dpAiY^{!|#F z+nV~9eXBQZkRV>c8bnCrML~pZNc6GhEWz^rV9Lf~14l~urCGQO-!yy9qrVs&(Y_OZ zJev8v@8M;@8!cahApnbTt@aCS7k!;dKxoJ6O`7(EIf5LVxN73WmuE_t@4)V!Ot^V+ znuo2t13yeFACguAMX{0NjO~GNUa_u!)5HrC+pm!?PVczm&F8?c6;n|E6;o3;z2AzR&ahJ?4D{3Hsmgizjfi zQzfe>aI#C+j{uM-XgVRMf;p^wP!i&=agH`TxH0@dONwP<84E`^Par#q?i8vgrMZTD zLmOmSyqwB2egkefq6L_zBaY6bH0kHN^Rr4s=4_+zVB{ntKr49!ZN-07qZS;I$TW0A zb%GX5!**$D-k5Ue$%7S6EVb|tl93T7pn0Y7QW7>aMe-yp#V9M3XbcR6V-l4zq9jnl zoTy|%WZe(U<7sY4=NU2)bDQe|lCV&D2y+sqOs`V8Rj8I!_JawdxiF`)FjrfNP&bZxx1) z^)-2+A|^yrg_V2_!$-@e)@}Jfrz7pKO$2xRqYMVk?y9VHqDhR#o>rf8@MRE$zm5_a zJ2c?C4O>3)a~BHLI|&0l^yU~NrPMOhAewFQ_AouyfC9i(B>~%wc~-C;vr>#LA?8NK z$YOwPKtfXCpeSVY2SC^Y+dDf*Kr@1Bze(!Jbpx*dH`Ap$3mUo|tc;VMvU1lZtlpSe zAte8rr3&xMQuQVm6_R~$C06}=u{IbaOc+E%g_RE*7`iBkkAB6cT%-dQg%|Z;uqe_o z9s@}q5_q=4e4va(TAvK35^UpXf;l0O{Vt3hVhRd}UHPVfO@eYzbbW9pgdPrrOqGh^ zf&PjvDbf^(qbu~yJ;`EWuZhfb(kAjWq=9Oh;|;tXGy9%vv|6#LPhtw6Qbo5!vq+~7 zyiN^gy9u9RFkIN<1nZU3Dx*nY{!C>LoGdQsD(sE=r%oYO@@(F*@pOo@15F_9sX!@V4X;B|@TQwQdrtbOdzC%_pl z?*63NcyO`Of?MeBh!}BVVe)Y0sqxV&=fog zUX_B^R?ZT`%7@gee7J{KES1oMcE(h+r@R{q{%4QxzAghylB`-PsN!1U7H`)-jIs`b{V>kMp^ve`t&f1? z0hTLu(|m}9WP}o0JXtWyM*ST2^bO=P_aEwX#Rh|!)NrCuyP$97ut=RE_T?01P?WmAQ=s;jdkcu zIVdp&sgP(IekpL$k5Ct296^Lz0FlJr!E?06lTzpg$B7X(g|5(DBpl#pDYF`fIK|bq znkOrV%#PTKl8tmx^Dt7-`>qA65NZfZG0lN{;{1FlEzQi%8^>``1nWH*(l)$-EqxVG z<3_}OBpZ#bYHX}nJwyUh{D&w`_Jj_8H);xXEwxxnVtvOfG28S2@TnhwAn^WTNuzdRa;22&~1*y7b2TLA(mS^4qYa#Au9R@ii~SNelY0hB(mo z73@gl{Yq32_EdA^LX-ej!Q+tdfGt^pnhe`TR%z>(IjvkgLwpE*e=Fr@G`Zpo1`nhS z$mOR+;RT{GFp6OjRQ+~fe$caBnPQFUJ3%Owe>DkYv~?>i#>{f|A4q3rXadCZ!cjsW z5F2)lc#8_v;s8~B16xS*vvD3KCS(uv1IR47EKkjSxy*C65? z#Mj@1i&}P!P6^6*=*FlD?S1};sK6nn!x5V5B%$K;v7*nW+N-R=6N1ew3-JajDj(whF!Ju%0tptj!rIh@}Zbtlu`f15pq8&yyxgza!GnZ^{uiSUIyVm<^do^Yg;j#g_lL`dWMJ2`@-jN|YiS1CpZff-si}pH5VL5@rBBTSZ?? zQcDR#s+E1rBHt()6v`xC2c8`vS_G-Nx2*E)s8aoQ0NS9adj*pRlxhcXOR19Y;==;@ zdNJ_AI08F4)JVYu@2PF9E6oNRVgiTpD}ro`Qr?PDbABH0S2rlrD%Km>qps?hV;xDV z>iu`P_dM}~dubhLJhRYv7O;7L3L9dlVWx;Q%<-}kXv5hQ&ZwRE(I=W%)G-51#+izK z`y+idyS5+3HciEzfRTm^G9B>s)Tqos6;3E=Du5^k5ReDj9^~N}?A8eACH8=tYX?CG z(1UA^9ciM&T*0W)y@@h9u{5OdD!+pGcO!uwKtn6--_(U!7Lo{daHB6sLHCLc(dM}i z(}_@v*{DAI14ku9hvmRD)wDb6SlzO>nB4TDS5qc;m-;Ne)vmDxFZ}z0A&* zkjb&dIt2Sr?j0xF+hCT#Sl;z}smAFF^vE#ts=lT;R+pet1`U*Z(yvcFMVE6;*J4G_ zml+lS@{Jn9CRhF_+kMb^Rbb@DkAKB=xHwsnP~3J0SW#G!i3;5 zS}1`OQGF0nU?_Z;jB2Wai-Z-G`2{Bjn;8rgA+wOkr$Y^J)p%4Ly<%@y7pX?y5$LS+UgWbk3}<7&oVHM+4u)H|02y z6qU@z$oolF8MemzS8H3~{ZF{}ov70LDI^koV|UoUgZN5F525{>#G9B> zvKgtlH;n)<=}VS3jVt=!Ps1o7(?Hn|wa{x6{-n|Ijkk(>R}!(#L%$9<8-@s@*$C3w zedRe^4Z#h)ULpiBye`;es*s&cu7{MAv!@ygkK%TkIGZMllK@Es>;b4rL>kU^$}!_OO4@ECt@rAUyzw zz~M_@A|TkSLN-!0@j+s-;@l1AFPWWg>QYL&JQeG*V#_NY;W~`33Nm#DsQOV;Wj4lF z$rCX~BDfEhtu;_*8)b@-FcIn!a>nZIr3OKPT=uA7n>-!ig&Q;rh%k{Xwc<_SZNnx1 zuWaYQn&B|-kDC_e>LkNW_-a)SxDZbr3ZtLGGa_glmz}i2N@GPp7lJt%i|VlPj32>1Vajd+4pHZsnk+ zn=e!Uh-Z+r9t-0IeJ4SfXO9})BhM-m0T>}aDq})yto+s@65%rykF*JV1i|p z#rl`fbhU(!^h&1b>e2hH+WVEY#e2Vod%uCQy#T#-rwn;&&&qW>kEvXztd_CyRXvl?}=|wtOng+Y)I?RSy5_3ra8=*A%F+2M` zc%5a6N-^9Y0~SMe8Yr$q+CYMb_ULVP(MB5F4<{a(519102QMs2ndC4ffyVSAFm3{D znN+L|(h(KCcX*Q&6D0d&G~v~v3B_RQz3JPbg{ZS51IjfE=YrvIL$HAe}och{|$YY=CA@>j3vD?79wNL4zwt zO}uchA$#Ba>I&jW!aJ_p*^A!B`RVt?vI3&>^NMJKU6sjzErxIcW%b(5q?8i#%3O|E z3EG$vHi`p4RX1N+48=x;!;ti7PZy;sP)@?K(S=1e%IiJJGJw6uFfX;pY%n$y53&0O zm@4JS^wQ`nvrds+w<2_Mwxq;tA)G%9(ir4VUi(`qCY0C;w1T7d8hAe1INJ4K4&UQ<_0y!SUrdfUkLs6|dk zCoJR@m4IuZ!jhJO+3RRLDS#j-H5drf|kLEZqg){Smk?Kgg+#7g7EA4)E2up zZkQdNkD<&M3oM~iz`K!{S;7zQae#5(dPHjsdS5%P)dku-E9$aHR@Um?MA$I8ACd-# z<1ZQon1y-<+Ml(uh5um|UT|g{?u(JfenibJxf#5(1abcN{vLmiJq~6sjC}4<=<~jx7XS&m!y}j| zb@(ZIUyz@Qo$X!_FD&mW?-}9rsB*^f=w|Qz5HJ5NFaLlS+Jn6Ro)=NM{{&J&j!sU9 zpXrLeF~~gI2I=*Fj+uU*mtWw8ni-F34aHA!sqy{;FAKcTF08I+Zl2|>-}^7#Mb*{xZ|dfvER;R?YE{!?62i=_Fv`l_FsZc`Y*Xr`!8}u z`#&Q};hUwB{pZu;_Mhb@>_5#-+J9nC75+H&t=sk%Hrkm|tSmcIc-tP`ZrLB$Zk2A@ zQo7^jLeb7oScRz_BU_42Ug8BK3@BQ5tzZ}5b29NeW!x!erlt$IX{Y3113?xWco1XQ ze$T<49tUkjyxF%0?>V?p+BJ^|cG{ZQ8g!PiQ7SpjC-G(Mc}q#gFz5SB$Zt%H5eFiTn94Dxful1%ew^x zu$w?gMMuIePDXhU{I2MZA>i8-o{S;9UCABCuMIly7@kkKlejY-yEEl(z@3fK0tQf2 zEnv{ZP0|(yO)Rq260mO^B|A9RL4{7-EagOb83t0`LOWFm#Vuhw$5Fcqrnpt^?LbIA z$?r1EU=|Yft!T$KlyFl%BmW!(DP-9U8M&QpK^u0;Z^DQtSE#n$jhcATx%ilsImpaCtB9wwzweCPfWyQEZ)%J zgz{h%ssYh7!1|*!WCa5u>yq(6L0DG!UF%5Z)X}hF!v=_KAQ8{S!;>6n3*@v7a(-56 zhp;lq-Vdb(VqYM@x`;l93bA*QL1Q%Ip_C2G-#~~6X~SVKGRFF;V=E6h3Y|naCTP&r zyVNBp`9%3GBf1hyuu>A_B`KMqBe16qerLLh#~TZE0w@l9st%-qLmh20*-`az&6G?F~ea(^d;nV07-KiMHC}~5hKYN88fAlYr|TT0aW5n|8%?3 z+@VG|0A7k>aYH{^^P&}mx`Rg9C$9!$rrYApeE7tiQhQ98+XfoK2(1z2C_WtIa{(jtc#Ny#0w1`T=2$$?N{)m6;H0*-i&2zDcz>DFmr zG{uJPiIpLT{|-m~4eih=s;`Lklkxr>o_9Ik9JfNTwIt9JpLP;{6k3dCPkAjdXxbtAg^inkRg{VCFDqcWebE6l%3s(7HF-x-D>n zinq>WSQiD~RHj`9tA}mbp6l)4>)|SAXdpxxWjjTb_ziQN?hz9>t>G#y<(sH{aGsFU z{x;JxIB0E*w~WG(SYy|1n)eRgXOnJTw@G5Qe3w-ZtDj8%Wz_FoLm~+m)-Erv@a0!{ z>EIG%BoJF-!!H5E@5k_!vne=TxwRMS$l{BLtpGa|Y*J83P9g>cqA)-i$(`yL<3-v& z)7Y_Y_Z`}m7=vO7)-5;vn)UiPw=(0%p%Hi&;#3QqbKw|^Q-4IPNDsuVNW3?jssBgx zM>G(IT~Nvf<+KH6A$0tcyfG~eh37G2Wywy$UcLy-MV$Li&p zr`0&$SiD{qq}OlFq!7?+WA?(&`uZVzS&EOIR+4FAIKmpXKtRNi6WlPd z4XJ@wtRa}%fuM4cHb%dXjG*v3e6OSd4KR2J6Ak@U{VbejsHj-;o=jte2$iE+)|%_U z1!_}ek^u>u&pt*URH+sy#!?IOM2pM&ajw$(x%JV~ROkH?2+d(EOWeOY2Q4^R5F8bP zeSyCBr${TkNkL$!PF~BY%?L?a=Fxq?`)0oIKl3tVWebYp-Jsj_9Uv|KPGp_Bi9tWG z6PCsu2=zE@2z#fXCJ=wsiT4~kxdg@wS(gvf)V%j==ExW`j-)$Lbis&XsULhA0dh(oDq78*_!mR))qQ$+1ETyyq_`U zc<-L%`lMwUiPI>N;X-^jQ=sB;%`$wZ42=AIps1Nh?{6t3*KOm9NI1QzI3!d*zrkY+_X&*9~ie-am-aMVgITc5@B zIF-7XzKop#ZW^AWcQN%@tIIoTf506~EoHqsup?mPGpWzu_#Qb2Dc8+ihMDn_{RBKn zxJ$s4;g8Y3bT(W6_ZT^)rv`)!jRTF;A!89_7h)(8Gdhq@83!umr{Hy~@u)%S3c_Q~67OU4X9uSd;EcW4=1^0%$j~qj zG%-t6K;ISk@`DdhTZ42q)~P#(&2VUPG*81ET+%Tgg%i>4tKwr2y&CUGocli#9%~iO zWCcKAqAotdxNue1<-*?Z-1|A|FvRwVt`8L&FtjOe7cO%N4?ZFo+5P+Q74tY^s-#|; z0)t2obqgqx0*h#07Dpqpk8bKUb#^4&o*2;voV7!ilwRbQP)IOECKX{J^x>HZD&;{q zuq$^fQI!=zY9YqQXgdX#ApZzAnx9|s9{qP{mRLkV%~No{x9oRG#d~|>69`couuI8+ zD>@k}EM+zyY+4WjFOikXb*Y}Lv$Er|QF1_@x1XsW;pIcPyrDze2(8X<$iuLJGf-h6l^ra^PWnoC z!8kUVw%vLQ-YPtxsNwxfw(@6jS>OPg52*&nntcDD1721wxI(li+4L!1aI$hrt-47< zj_7Ex{GC`_hT~Q);siLzDrtl=+SJc@n|SgY4>W6oHma0t zJ4tyv8QBjgp2E(lENtfKt5~;sKiqo=GEfe`K{erwk){0e`VL4yDeR{jfgfM4@Ax0- z=aSxa&qEG^m;MO%SE;lAj7-!n!msYRxJ1OfoI2*Olj@Fki;MOJxO-g8qYZ`b7a$JCS?3JH50K(E9oArYoDfo0hh8x1#oKSRw2#V(2CA;_ObjTfz~vIH-*E zw5?axt?L}Nx^!>4@E5wat$oM)GT$_9Z0DJJ9t)jmE1_c2gi);36>V9+nDq zD}`0cw^$+YpG*p)*-$Y&KYv_;Y|w{2wh2!TOJ;|l?uCY00_KM`Nn?~ooyAEwq)_+} z4n{leNZn+N*fyg{$I=^?RF5gLgyo9+zFkjflC8C2j3DT7l`flXAnH@yMK{BWz&u1B zkV3J9v-i+JSHLWvec_&c2%F9Bu&_1jXGlG@@TGTBh+bKA@ln7cdB0qKJY?jCH$s|2 zxUguRUo2&zesJeXyh5MA4MLZ1Ah_6UMZ+C+$E2hH@u-P)>+UcZII|fxLa`^Z0O;); zL(U??sDa0!uppta(bntq1cjfh`#6Ru1*?E1)bAsieH81;n>UPk{1wn4?(5GE5FbyOkjN~AEO zL#|lrt`AHUsM%E6KX@9>uiQzmr#46p^v}4;)VpCxh7!SOK@jVBZ!BxLXKL7+SOR!} zEy19G5<-c6BBdkAgDA|Os<}68i*ogWJRpq<;ljZW3mNcLinSt`id=vb}^JXRJ|xitB4k(kx>PEWVpjh*vWN< zJ{oS0kK$qzevrc&7>`?yqT}F;NR#mUanMBwqe62AcDp+ZL5vGeFDLu#8t$#LH^VvV zf{IyuHn2OslE7{S|LlE~mohHFChP)gwjr^_q$!F>4moyeFvR~T$Q?R%SZpT2ZqLy@m|kUas^KXT0bfGH5Z``#oA{8n6M3+oFoo7r4SK1!Q5Hjxy(zHDTHBV9#myyr?_ZSZ65P9K_dO!iDx07VE|o9OTLE+M5#LNx0htl(g;(6C-Mh`pFoRu!rmq zRgmFKAk(3hmK@+RLXNa9RLTcQ+qLgvsDNy?;jgatihx#!MUX=vM}>+NKRzVTNytSc zw<)VVv!aOuapeLaeTXK;P!4J?=6D=CTaH9pPIW{<;H2bm%&?K1@hm^aFp)#1;TO{c zJDt@TPh>$7?;z;ZCvn#AleM`6M-N>L*&`nL66PC55gw|XB+|)FtRS`R|9b6~ulGWQ8S4yly%YGTJE})$70|EfyRBzpwK!VoM zK4SRyZA$!@C01|qfmRdZ9_KOFMD|TQ(o@o<#&1czj!&v%XwZd@bYC| zevg;`#LHKB`EFkRfS1ql@)j@unip{`{e7l{@Tbv3Mg3)D{|FC)+;POGZL|?F|9sod7T(&qdwOJh*16eE!?uHe&f7_+Qu}QO4yyJ@@oU)8bKN`+^4LXH z3d(tFupC67f6IZRtCK7ImA&e`!{;bbLeJBA72Gv@wSaHpbCdq%KLyQ{@e}3o+j%?o zFO8$N#S_v!0N+q&2?uj;rEe%x*dN;9y`1q4)pzqafIGTd(02LgL6OB{RkTPdEfPJ`%kQGzIsxDfQ%lXHtD zYClaT3EmmvXT!rm0ay;SBre{EkN^+p0!(%tbUXRF*42o(CZ{?=*zv&wFPxTjOhg8g z2Q0lVizZ76ifqo))ytkcD7J&psPK0*m?~2QxVKqSP=`N|dMba{iG zz1D}J&xX}ah*F*r>61-0lZJ*;wm{=Bh7P_T=4qlyFwBYjmOig=U(ARM_L*mcYsIn| za7=V?d+K`B?-cX?^p`=ek zWzAy);lBbO;YfByZ`XsCv<IHnP3VZoZ74i_Q9qul@-wo;uwre>r* zatu$RDWc^F9e;eajZvep2g5@MMbI|53I=jtU_wu)Jz~DVwB{*4 zv0^~p&AXVsauhP{9IN7(!QRf#@7MDHtqPsiuiM=yUba%8aMsYp6a{d~Do95&mP^ic z%8Q+hmr%$IOcN9yn@$3!VS^Eu=HludPA`Bd^ixk3$KjuQEC0f=r%xO?Hh27`6Ni=Z z=Fh-pdOwUyMQu4g#@{30zY)ez=xtDlMl~2$v(1;or^JXnK!Sqtflhf3qQIaKp_y`1 zr%uOwn5OImzCPtYg9{@(F?N~q2!+-G=c@Icl`%Pg3pxn=cBqr6W#qiFtej{zA}5FC zNC6R-NVa$yxhyn2YI=l7k0pV0IAtA zr7aRa64|sgo=q1V9v2n;Q|H+zwkVI`;jm(RKWrnQ^vJlrKfG00R-u>0|_-eO$upPq?dB=$fdpq$JIb?TtJ`0 z4}=gIq~rK2jtCr#m$DKBG<7xgIs0Y2B>jRoOHmN+8wG-I4(XUIC(aFpN4UmeQm#Du zo9Mg9veT*F%t7s1A9p5?`C)`F;S{G&v)E|h1nSX9<-G@4H{0R;dtUzOb+c>9n_e0E za6@kE@E&3r(NM9pU*}MX9|p8{Q}~*H*|(e=LvN~qig#emI1$$m;``=KTo6MQ;1j=r z2;=Q5_En6Oi;==e*uCY$LMN4BLdEV9Q!(v8<+|aa$mlB52UbFx+1yC z=Nx8Fvhr;_kNE)xRsr$suA*^4F`heMh%7Oh1X%>-MhH`*vQU82#2oWWU={(6`hfq) zai)ecmq9QLId@8dYPbVDVMJUeoctMFs82Ca0#2u)-%PDq-W1RffiC*#&*=b|O7&q2 zegxyjzg;s(CQKjOE4razl*@~LI@oOD%vaG62~^53tBl?Wr_U)f$}C+dw(mU-R9Rqy z&4(Qb6|yqWsVf+4X}V3~#wm%(2&L;)xEk<;sM&PSf8K+G>+o^rQWk<(uQnXr6WX}X z&2;DXN@$ko6e-c2My{J7uw#Ckvg2ZI)(NH&gu2D>wAH}mjB@hXaLWUbN4EW->m6#+6*gb&vIQSk3RO*z~w&1QvHygl^gzP01 zt{BQ`McSyAez_zh%<7$fM&c-fS<;>us*zy5z(<^-*9ImK0UMiCv1t_YDo{s@qlWQe zB=%ziTEt!g9zyel&in|P?EUB0iwSmh)BSv9ES1*mLWofnjphQWevCp zGMOs`7sJLZ(Mw78*8oH%iRcVuTXF~<*aVnHY%qW-$FoThfwT#7^LVRlvcPJ~j!$%gnpLN#={0D2_YTJVr*H zvp#gC*f=nQRn~My&q_qwVQd{(QF=EUcny6c$R3lnuK^rkE`Xx}3s|M*DB|l%_-xBB ziZR4S{GBwNUJ;ZH@q@ADcEruS>cDj3!2JsfHMh`DcQfwjCCe?o#)BEhdbh-Z83Ui$ z-8ZKUOM(%?b%}d=10e!S| zhcBNv+`H*GN>aj)5nwpwX!C)dIv9b_xY(+n@;-267Dxsuk zz2Y2HGcY7nIj&k)fLb727^{~NPaTM2^&U`hAT`yet)+E=5{BZnDHAY&3aDj5VywV# zo;qS-ZGtiK;ov${=J*VglV(xC(CIZQzWlldGp;#UL1>(0fNDj8V!0B%Hn_&8Q9OG34?Y{voh3^k%Qam0mgnnK{)rht&b*imwkKuv0pO*u?42(I=61&k;?;svB zkY~h&u(Chg%knZUM9J!|=_`*z8M)Io`%9 zFJw65-P+AEpd%P<+4zRL_LbaKOjLx=pMR2Jxkb=Y8YMN_k%WoC=OB==qwYm=HcXiN zaG8QH@2R*}ELxwuH_-04Hq1N`iu<$WPf}dGNPlZ4V4@=vjrrI18Eg@TW*&@)P3wxy zz6}M47^F;nSp{-PR1(WxbI{Kb;-44-_8jirO$3`jF_gR_-msb&t3A&1)1FMkP8^er*QUR^xzPFOwoI{`InG z-A;&G;1E4BbHPMxvPnfjN#D_>24niSDq`p~Jb{w-8-i1WM??{3*off7sz@LJ7s7DG zCJ(~7CsF?=qnQZ739iI$8qV8k%s;Hs$mMuDus*}RcPR_eA^Vz$5Z-1pN;;3vw4F!7(46B@>IJW>{%cXlqjP|Y=-NX3_NZv`TwWTu#F-a` zs*-(R9iK9?QaxVZKMF@Z^WSq zkkP?lV*{LKu&pZ@fg8gxD``G0E4uxf^a}gWiyE&>TvAqM&xjF8oQHE&7HU$gY z;_a(x?1dV+Xuo_X82J+@dDQ3C;`K_gJ4QL93;Feubt#Q-MVTuT-O270x7mTFp%x{; z^{v_lyfuAgBLul=bq|y%JLerG2rb#m-`n*h72(_h1^k3f3`EJRhqjjT%qL-X@h{Hy zc3(FioPKmhQ5DQ?QhL$#L<#RWM>5UJNx)Q1oejzotoTzNh=x5+%Dv?0m}dl+AdPd1 zg{*nhFa&9wFrmCnIB?##@j_jm@dXkkjy!sXb#ZD{M@b2nYnYpc;Tjl?$GY0?a3k1PWCo?`b3ilOUuq zs070xFysN&9lOh|Ln2SUX1f`zMIyK@!Ql=>a2H0EnvU!uorkQYoN^y>8TKI8YutDX zE6gdd{9&*|gYit9kBN@D({65F6MHdxXsJ(dV1pcHs5@0TqE0;1p>_m3&7G6Ze`!%LMjZ0!n@Xzq> z!0czv*Exbz#UjQo$Lw0x&cgqvU~j@sZ3cE%G~oSji~W9-MKyVHTda5BGDdK#2-^Mu z%xkScf9cN8Vk9rya)j2Mm+hsj&+7=zf48pWkjh`Rx`m}tIAQL28ME|Cky~d!V=rPe znd`ioJC#D7u`gPKJBPK(@dI&07};qcgqG$qky(@Ad( z1xYnjiqu=})n#SJIKWCp=|PJ}kTY?)Rlr6uPc1M@lNV7&3g7Wj7AJNQalr$xiwN4h zyv&O;?{}7hYw>}dKSsq+lP7~QnxkK#qg_qAfANtOno;mqWt*-rf8K>9*3fPm1v)o zQ$($*)J4?uC|!vxP2!pOfAcj;r5;5QkDRYZ{>vj{p;j*;M}!DscB}X)3v_9(#fXuB zPat;}%DW84%lDATr2wTpksc{ZId2*-#c4pZqyu5*1_EK)2!sir!vAa|5T;!!{rS%F zRB=mwQ+`Ws%jlNe)W)fi>HMaNO_TUn+?k)=GBd{UPJAZyFaNjDfw=piYggd_Ud_O9 zkj{g0b@#e(9E7`I4(?{zMqYwTjx_T4#qf*jejfMXhDN8tCAjC|I;tHD8GLcn9dn(< z32``MNJ%;XPQba1!6{1(mLj>e1K^}PB@Tcl#{_HE&o;Qzcs40-Z-mPq%Tw5W**n}@Q1<4q z&7-nI;h}BkTB5UALIwepUqi*XI%@epZTq)d&}1uW?n;PJ3dw z1J2TqNS{cm8DVHTS9!LsOp)t08`yyfqP?z^-)vN0d8Gx<*hFK5rGnp9v=Q5Ef8=q6 z^NQsXjsIeF#zs`4Kcq2edjxy207Iri-*8BdOnYhvVt%`v7}Dt>MTyEo$M}?xor)Vo z0JF#`PlsWJ4g~=fhLmAA5JOaif^Y}0|9EYj`3DhIdG1Xz?57@iBIBn)*k5?%mk zCDABt8u~4Dg>BF@iYLb78M;9?MS>TotheozTkxCnjIV3tU8ohS1I?I^yNHoKXpBND zJUG)zP#4q97=+vg_XwXvUjb=D3N>G(jqN86>(HH>hEGKitAnX%;0@|}`>~h@;{y$? z;7mKVNjX$ef;OK#64U{W;_F|=h0Z`c5mjW$5lWQMbEYK<=w#n6QZ=WXtRSV_oVWGOQO4bf~tRH$t~7I$z;vDO~Yg%0Pn(*CA2pAskRY*UjS~tH=7erGo!hchpTY zoZ`#(gr-Pm4#vV`M~@zud*Yt*3kRNg^7uo5|lsf z9Mt6x#?^)>1wt|rZD|C4W>k78KeNLg&=HarEKZu?kimeSM}!q&@M-Mv9^mEQ^1_h$ z%CT!dQt(HJ^sFBup!>YYfKcp%ewGKjQ(nt=6nox2ET0rhqy;-H2yTXaB1SEu)AsXo#L#5>Ik(I)OzrM9pQ;0&{GWV@+m zr|kr7yfx9rVNN4!os`&65(;VXj#z_3i&|(!i@Ye)s>u|Vf^n^d4hQZ4`!LX2=G?~C zvZ@m8JU1oUn$%>=M!_|v*RYiYtBV*dE~3ehMVDw~RHzhbPz6hzss9AJ1IJi6{lFcL zipIohLZ(?jd2wqOuW?0#Q1&uImWQj8WYCL} zVXVT1s64N?S;qZ->CeUemuz=fOsL93Gc<=AmEwtu6SkbTR>MPZqBSHeV@CW3aCR3w zFUc9iUxS;E*I5=Pspw5qg?&Fe?#h?Y6@tCDcl$z(j%#PGG2A1Q22C-!A^sd*G z8TG;*j364deq|cthq<6XREZqqS==)~iDj@pItGoZ)Reu>24y&`U^BzMay(#x_a)43#m|6dgddV8 ztdOY<`1*%&xtv}~eHPkLE>C{`vh9^F<6bRw8Qv6{Bw&epHHY9`2;W5`B3*7Sr!Lu! zdk_mFMPjtk;Srv`)$$*$nDXEU zc7b%7FpXj*c+~kp^DblX3ZK(PiAH`0v&jPcY2GE*66C|;Kg7m~5l$UujWu+OgZ1dH zud|s@4(bL-RZ{7ztWN-P$|)D8oXEjK%*-uCO&lrZ>_56alZxQ|n zBaRbR75`&FeLwy32+mEly)F1lCsS}ji=vi)c?5_B7S}rs&L-p9TT*cG;aUU?p@;n? zYfI{47Iok~vdA#}IpnGsAr8D0Vkk&y*qeQ< zQM?vYvkIe3wfc*w?M)VLe`;H50L2Dak!U7_Ds>##q#4ZFQ7_^sW!r!-Uu=T+k5D{~ zkLQ(oxXF9p%JwX=ftuOBlQ+bqPgWCqWI}D3CvAU@cO4JXvU27auwQ*E9)FBTOq6%v z4yD*m*c@Sj%%!)3@rStptWs$C|4VEyNFw?`e}%jxu-(uzl289UF7MyG%~*!OQrUq+ z31KPc&46>aYI*qETQ!)nmkNkaNFR-~3to(o5|Ogq6jL_1#v07uCf{sYnWa@kh|wFE zkA>+M^YMPPSz>@n-x7WSuiz2jOP$96x5+n85wx3-MHzQXN{X_wj`QvgNLRhh35v0f zJ(t9yfUkgW7qFUaCj&$BI>>rnMxcBD5kxmld-q>Xy}lX2108@cbD5rj>AsC8S?{(} z2yaM&A;BIoNtCE0o<(=Zr}AY0zl)=NNCX(3m!-o}m|Dtz5%M^Hb0Bb)a{Vi)5f+}y z)|CPlCy*|9A|M<;h*=gZq~+H>n!?GUXiIH0Y8AvU9FD}0{g;U6B)Ng)YVFBNFK0^C^uGKL?fIVXjU*@Xmy;c|eyNer!o#>H6)h!V=-rjq6& zER|;OT3RjHVw3tb-UY#=YXg>NAw{xgMy$hlEy;VHt@1^P1&NF)_#7h+?_r5ii-Tqd#L^ADUxbKS+ zcVyJdzFioBi^yL%V>!GrEqa5jz3Z#J4MV`3AkiEWa$yJY_1Pb+kysbGMp7pivLguJ z6slu(g7|{a0&S3jPJv;YsKg=L63=%4`O^LY#iFoG?*ZgO&|2KjUZwiQ5-LNVWXu#E z#v!_ijCZJ?=KKV0V4!ay>5B~Lotcxxy0>+X=Aqd3a^nu796%JAFL<}3KT2owNv6bK zi2Q&j#GL~l!vnfACj8~(IR~~n*@2Hr6Pwg{D6?z;QDZ%@rhX13{3{MF34bw-cs}VV zN4AILxJ6`>wapq>K?kvpwIzm!q#vcK;o;Qnf{?;ve=w4~I%LF557{}RgUc%c61-K& zObzOW^>z>n+o6*jmDlD?b-ZW9aY=Oegoa44e*hR%mHj4w;r$d6y)6kmWaa%S~TJYzOdh0247-O<~Gv<*cZuc!Dv-br}DzI-G4u!?jJ#6ai1QsqKf|wefv!Cdd@XUiCnQ2(<3uMa9*6n z6$HxvpLpFM?0m>PBKl*@2PXvHGCB5PVeYj~;O~kr4(Ag|o~(dnBxDmYPY;4yoDK<( z-LUk-Q5%XO6lO^nEX9lGk(QYA3TK3-Ka6{S#A#2#E(=%C(zWch0ns4oml7>>(Kcj| zp3vJyBDE{O8CkaI0^&v9GP_VuAh4Fyf$KEC(L3;Zkv5^^ zX&%?g_YjIJ`3_sZ&U@k88|AQ9Rp**^x%8@`*A2_xgwi&wsbfv~cn5t#yAVW6y|?C_ zq3u%dg>P@=+X&6It+Cm?37$JS)SeaSXY~=WTjUwM>MZD=T>HAL9`~UB0ry;?>Svw0j+1BDOF2peTiX z3FjWIUW4!LLDZEd_&L!6BMwuz@aWT;4yu+^Sn)gorVmIXK-jW`S^w)Wlt=aG*un9| zetyrI{>kdN=A~G?MiUG3MoQ}wX!!iR2D(4bpqHn_`NMb+M6fbwl89wB$5T1Q=TSKZ z2BR{J>W4BsiV5;ONvH^dT>8w%C}u`+L-g4R`+Qp4=gH$E*d$CkvAfv54eR<2 z9m>O|ijkUZTI5CY9MES2=|$c=&T4kx0*7*LMxX$oDgluT zpdN#(K7^rHU@}0wTfoKzqxc%6P_TsD&}m~qp~^DTyY!5<0fLUe-yj|j?Vv&n9kO2R ze}WpyMT!%KlPJVtnA7O6U_8qt{;lLN(Z3A(A)}lx5WYDV22ud|Vkz=k1upmAW9S{= zDWLofq`kwu2$c0cO_7!5d9=RE0FQDXv99w@0-CFC!Qnw@699B?Qh_;^D=60FUady+ zLSf*$6X#a1;Sy}k&S~&G&3ye|QKZ@AO z#G}ip7a^Lv+0W8o<#=~rwy$JdsMT=J7FavpyKK87z$(OG0CSSZRTg!((9J6a<7e#8 zq_MD#x<%NxVQY{Rx}Jgs0_rH}UmalMSbZEb>44f2yujf6=2&LgGLBy@1S7_(LBT?~ zQpvB_`WNC9(NklqxKr^sX=U5>fwUo!1lA**42OH4p`oClvC~bO%diGE;dRxD%;l;a zwQyjUftn`9iVf_Rda<`TYz*y(Y^iqBilLmL@{}V_U@=-nn6c$%PkG{*l4V7aIRgQU zrwzp7M2CkE#z;7N0B@=$toJ6A7mFXhkVMhYqzUvqi=eK}{aCA8P1r=W&nvCtU=dE^ zs9qD=ZT<3-*3|>Fl!}G@hV5pN{FvCw_W^~q(&oWu5npk)hR)0#cbvh=kEi_E8G@N% zuV;62Vb_Ex8tRHn&LF+e^2IV(S!kOs3H_NzO2IfPHDLTwP7b)v<`Uvejd{jYt5JNiqPvf95uJuYVVhMd7T%T!XkLk9{9~93?$@JFpxmhDkq3TwDg1n zGFxEyF>_S8QYij3%N1+S_mMPQ=Fhu%`6@48;e}$+8yVGtS9pUBLPUIEy~lQ_X8mKP zq-|{UV`!Tk9a)^@)`a0oIoSx%FB z{Ubc?jVc((-2^H7dWqs2D6Pd}sWwWKlpu=#5>NkTh@ud*M-zncQ4+>(79{fFZuT+= zog$L$OoCvJAXr(x3vIthP}q-lwY2Dy|nzFuOf zDwZ>FB8K8`fK;k-hY-rLCNz>k9~~U_`tJ;xjJG~c+!cw8h$N9-6UqC9NXm;}FNyT7 zaH5iyDH7>@FMcPcP@GPBSD9NllrJ*%gSZ&-$M&pC{{9|k=MN!AZ^x7LgQ`elhmt+- zODsrAi|F0o=RKi!2hr3)qW8mmDs<+bFeQXd3Ls(Ig%^eswk;rR;KFS~+>}jfs5+e# zi8Tuc54M_i3%EZRGncJ+e`(d6ahErpnGqZ|C;DcUAEF(${vtf>O2|1i*)a4@V%|*S6Wk_YiDf z|GFLOI%oDqIkxX9r`2>orHM~o|MI^F38T|9LGIltH;oYI*qH_$nIkENw8u^{{LbKa z9t#}EH}JU;G^XU zR7ENw^i*d9Z>%>+Ky?Hz3~_KFFA57TWx~s$&TZOo`QUlo(Luw}UKOdRzQ8lX*b3w2 zY2va$c@%G#aPWR-)ng2I!?|nT4>txJfkcpyc+&72#iF;YT{YvUJ|#3aB5MpPnWPjh znQE(qgw}wRD{z>f7uAw1j8M#o3W$?)xzcX2nrkup$Jmi1Z3_w%sT5Ry5?%2s z$PsH^ZDm`MrAmh3`b*1?;Ef+*Gs`GRc0i9}*^pCNa17SF+&yk*N^egUwmapb$K2w< zl3Ey>vb1VRJ@U{4aFRAMu)2GCeE8u&hMa=2vzE-e=r|gBsc91PqKo_^*2CdE}m$DTp!gw7(qZHJBgQ=%@d5wKZ z4q7l;LlBOIGc`8o*9jG(Pyx2VobCN{<%SvPmWbAcg?lr(8qvcQSl zuC9c1l{6t~p-GcKOVfnVrX>M-NoaV4@+c<74LBlL{d|AFeO{xHZQ6gT(cSmlbN1QK z-~R32{yn)KJ|S_KG|E-OOuK_f27%TPqNyRwmXo?A zma!Iva<_yhUT(jYs@7l#ZX&rYiC`_{ACD@>iMA4L#h`o4#9-qXk*95Sq14<2PvDp# zYTChez7>H`sMT5|;hBV1CN|>R>PWtWk+vI$Z(o`WC0!luGNILu@cSBzG^28_8t9E) z5?#xUcg@`q~?9M*wza|?wYmdgHu{5obCigATEMs@A<-S!p1i^CmjcYla_ zv!_t*HhO9tR3ql@iteWTy=e}Iv1;@};^9>1X2N}mUhj#1lsh-sodXb%nl*z=M&ZTL zy*#@)k}}Al_&!$X;#-GB0H)?H+KCr)^q}14N+0IjYGNkuL0HbiRZHTh7-f@CNcR~n zwD1Ou)HjKu@&?)8yVu@TV{5T^il?1tDr|>)`?IUDTs@g#cysv#HX%5c zT!nk9CQP+2fk6`aAFQKLzZS)QZIaFqqv{&lw>by5tO>|4wQukj@Dq zESIu2zDcet7Gu)Yf<#jrhMSM;3aSg^alBNb-XvpV6U$6b-|KO4vcT5&%N5lTUdX&G zrmbb37pLzh(hR2tm1#}JHVeX+U5DPH!KiS*Or#wMMCeK1dufy2FRsD;X0*h}Jufw~ zbUq55NNiU3t85SKOkU$BrK5|@H!TB@3U3DEDIbCGV>;}($EV@E(`Y2+nFY4R1!rVf z6oI*%h3iO%fD0Ch%bgXf*}XKR)@>G7)eZ~C7dg3TOca_tgj30vqU(gozPO@A=Azsn z1y6+Ow8Voc-IIktX5k)Riy7QFvDH%l>DqFH@WRMz>t_lp!4g7H;4`G?v9r^MtbOV% z6UKU5SUA2Hoh)Kp3I_K1V9n$L?noAM2C+qAV5a$XI-^(?b8e@xaQ4ZDae3v~=`{<{ z#i{KKXTHLWtuO{*S>ZJ3DBWZ6r{f}g1;89T$($XMtA!Q~zHI@)KCN)I!?eTMK!*u8 z0%}dCSOr_eAW}sOg>WbIz$_ROIH3od6lM+7oO;E3J=nE-NMPJGzC46fQ%xZ#sJwV= zQj{8vfU9*rL2&lY43l!4(ygMqZlQPR4sfi+zHNg+W7b2PtYE(=?CK|eAwJ~^aD>?m z5$|I{_?Q#x&}p?+@nMkefI!U$fZAn_WffkkPz3JyR+|dJj=^TZE5w4kgWye%K$;G@ z2NHrUpws_mgAh8A90`MPO#o>j!vt<26ps)NEfWsF8(;=d*)W7F6KkJ?WcGzg99J|r zi(`SO?j<_MVAz+>zwZe^rN{e8!nCeXvFC!h;T~nK6c9e3R>37mM6x?u2FbG45=B$i zbX7nXn48*4-2^n~i7TW6qM<;(AHw!E+(ZqfJNGH4R=6%#;{|}Nx#e%S+f3Emr45sh#9`t zT4S?V!>w2V(6mE_QS!#P&palg1hUCyP^=8mGZq1HVWBWJ$>f^$$kMsALrqX5B;Ya0 zv=g5ui$^&QOBoI_5~@c2@5~1 z+;);@Tjc{z60>O~1v5Zs<;W*H8*mDh!es&Uye(lU(pr<(0h$F@{$H5g*cs+FE5^1r z8_vzk*bC+HH0vrKo$Ovf6aUAX;W;~TaGoFvG+~Ao89}i};FzE!!g?so+L9IHOS-T) zQXls0fX!vJ4h*#m%EY#&$MQL!5ezAk4V1xospsvHOWUB)k#M3ngNJ;av;#Es1nt&= zXtA{hF4r_{vdn2hLcNAfHxG^J3)xag_gD&qsB)+#ej~KTxz+f=eR2npKzlkpaP!%; z7V)}jzE#z6q2uZEt7{^fY3wofG^n&?ym|*hRPpZFL7U5o7o|D51!p00VmN&8NH@5? zwG)+#l70dl6I@hOpD-@f zcmI0Ld<~hC7_9f?Yp8C%h6XLfTf;)U4I$0%nIE=5ZzC1}Zq&lPZLx4~V*}zotISAm zs?-N7anu@*6qSKr3Vg4t_mv}B!LPnY`%LL?0$y~fd8$*D?bG^DXUMqKAIB*Bk@i4q zYinC)2qiCk2&@miwr8bL?P+a4|IQM<$JTQ^>esWkmd{~T8I`H=55oI@*sl4TvNBv5 zx3>`6>5r2CNi?uNOrPuP!>#eoaG{K9{E612>g?1g?~~;Ia5PBU8tWs}H`E!S?Zcr5 zFrVH^{aMhLD#yttP-J_j>aP~{H?U!Hi703o*TO5dp*uDH++fS0lUVGQ{ZL{s0 zuUMFu5qjpC2jRP(nZ}{?iPp((&A;3Atc3QM4}qP7d}p|8W(T^AtSM-7Uqz-Md5FHp z<~mjCy4^-Nna^vWY@Kx*(81bvSDRFdQ!X7wVl6)RYW$nJ(u(ti_90zqwZ*@stA9n( z-8S!J-h6R`j$f;6lHGT!IPq>7<2W|HvvikcMqL>48!AWZ(JQqIepx@Wnysoo)jg|O zmD(aljoG-=36l6d)g^C9r*Ig)fu(I?=)J6cvn8)ic;q|uLN5(h`q2k{-5BVP8Q;$mT z$F7|yHeY#(?{Ld2j@O}Mwc9BSZ^rh4Zu6rFxO(;U^ob>$dccUu5r^=G;#-K6tqro^ zUohwFMk*&k$I%Js1AaD}&HI@$t$U=v>2Zfmx`hj}bW1t#ibIlgtR2(tmMcBm84=@| z!2!JpnNPR$BW`ds{aB`SH071SFHRrvGnM^fyYLRI*vU7kTiHsW<)}7exTm zp?-e8+iM8nScT`wKV1vftdfs$;o3ak=L(}}lTv)AE%!6N0N6X}{Rq~z6 zBcRJVmDcx*s-@I^kJ}~sY2)M?bUSqBVq^j^qtQXL#^JN+6{V1{>4c(lWVWmKdO7x@ z$fMxw!?yxa%zR8{qD^wGBT=-ZlfVUrhVo+rB!R)J<|0hCw5y zq1UjR?F7r#jT!oNg;F$2U7pskibnEmRK}$4ovJ7_8u##8h^lrazLuxu=jjfTTDhpu z7J0FP-$85@3}LDcEITllO-LmJ_IGpJa4Uj#n`g^hoZ@c7VrGT+{+asfa%c<|FcZYN z2R^}3ZO?&o{skAb|7%tBVUjBY-ba)rRdg?y1>4)jR>hwt`-cSS((i0<&4yi_44c60 zv#l-u4}$MaYWPS}L!qR^>cwVGqGU5ZVP>RB`ku0M1xzu1gc;H=*AYPfGoD1<-F#Fs zPu0cW0t8;-3f<{ZOW-O9&B6JRczG#f&IAOTpw`o?s}HW7O?tdAeSDdKrh(6>a?E2= zQhE-XCd_2{zCYm7mxPs;t%D>Jr++-;o5oC1lt`l-SKQbOoDOEEUyOry9fxw-rM9Hp zx0{-ju+kG&Pp(xNj@QwFa}I8`!1A-tNp}a8b;P*Viym9Pa5jaI(JsgN$S5gb!6I*` zC)sCF)dr3Dd{xqiKfcJpA2t9C(q**bF_mMcOz?DuV-39872}T-+8e+zgk={u5dJDW zE0eug2ySDqijDcq4J?%W3TB^q5ZfEJ*KDY09`m||017`~f#~Rnfx#?MBGXPW86>7v zA4KI{i&Bxaew%OKI&Ci%jaN_xvBmql%CyP)`aPi&*&L5DP=psMBg)vU(Cf~$}t z-7$(gRDvkyYU5SSw#*|g@MvX7S#By? zygs`6W!)894M`uP zW($DO-D2FidHJTB59ixcdT3K1HAusX@q=6?`u?VmW8{oY!6r&Mvj1CYVlwFbx-V&{ zCMltT6On$jVU@~>NOGMYz`~oZ1ET>;{^>dy#O4?IA&(#o*C_h$Ogky~5>umLiKL|^ zM!X<~HR>g`D+#~NaEKFb)c5v=nIDy+{s+s=n|K?Ag!s+xs!{M>EQuqdkD3i0etsjI`H4&60T9 z!7pW&E;{#UdhrBO8^mQ=VosLiWI;h$T?aDRj7oWMf6Dul+y~}wxNB#`pjRlIc=&6V z_~&cPrrPuhwP=!mx@L0SWr3cyd!>^kZ$J<9aGEcj-xhcP*k>xz51t6Mp8?|H20&M| zr(R>OIa5AkP%;AD&tm;zuy&Y&S^rWD^79=U2Ejp&DHr{;9@rAy&x39~(=B>RkT=Fn zoYr!5D&z5lW0sCnf7iYxTeKP+d<^0}!&XD4FP@cT^iP4-Qr`uM<9v*Kk;9^nnfDM4 zO9~NXDI2Qs)(!BRR=w*(ZD?{IP_OwNMCI3%sc{2))3a%xzjj%>L`_(`c5>13$U3YO zd3^-Nn4bj3n1RB}hR}HDxqP13Me-K1qsE8-CGZp}F1sqhK^;@<#MOUhD3~j^ihbBU z3Z>H#H+Z^5{ZgaKZ{FE+@vdjzvur9-KXpV+>NVc8jU>4GKWX|6P>kNpYW@=*j8e0q z>7AuQM|os=i#AGc;71F`QW_ZyvVdD%5%fm9s@*Mx*<yqe@({erd|sXsv5wx0IBX8~;)aP>Pg%DQWcpkGpVzplhq@4r!X8kU4e zFu+S`5zv%@qqQo7N#UjV&q%&2groy}e|567yF50yt6Z;4mv{BnMyJ>g+dHn<*voXI zHNk3$PD-jJ-C$_1q{Ts6v=papY!h~qPm>eS^2`;br=32Mn)G9p;Ig)SIMzBq4_agG?3K@H!n6fAzp<;I z20tmxc83bm#pkM9q91W_W=Bz+m*EsK>sTRoVOoUY^s#9XQlYgveiI=}EN7vNQ#~z$ z6~2X9jH z2o3l^KC&q!X-v#g1I85=13`rYAx~gi5`|B5BK`La|rD~+|ZEElw3fI0(#$TY+%( zX2(By`3%Q@$i4g39}z1=W@lcR)2p)9JFw=d;J1?Vm?ks%ClzIi@b>>47f?C@EdRl+ z$ScwS%fXSY$G)y~dLP4^T$|lMc;B&4y^H!#Rz4|)5V4l0& z=i(iCPl}9AUwjZr4-pW#uDk#nflfuFzG#k;(HwXLd=-t1KcV6HoUV-W|8stJ2kw1X zrZBK=-S3=n;od?XP`<5y!(2wejZcvIG|e#539IKE78UEpf&5k9)u2d1zO8?xC% z?FepVW{R5z<8g(;vyu_OGT}Wxm)n~ei{@fw`qt^o_Gk5>sgHJc+n@1Tj32}jlD3{l z6QWS9FJCO}34%4FG&anZw&-&jM&yG%?VGbjsA06G%%4QBb2HMf;%xMfX|8^aX3PX$ zvfy=YKyS@UaJB(Hy2HhiV?nICGhCf0wI{FC0P~<%*tPUddic~aSyO2Nwr_D{7Iq_; zb@BCJdt7hraD0EgrucN_O!Zv=wmHPAM!k@T6-_yqzV||{B^O*6+R06&?E?J@lItZh zsC|p?rPt2V1~7s)2K==|eJIfe7A%CjsqPJYw#>)kCYmm(c2!D=PDg9z7lZf)u>R1( zfF~w+$)LoPuB8I!Zdvl@%#^7U7>hyoNyn__tPQu=ZL>vr9?T`Y2M8%;b!7zwnEn4P ztfpH=$2S5Cn=Y7f9#|Mw^W|4d2wL~wmjlzE7euQRzi0HKeD}Ru>tsI{c`~**ZnjOhRR z;IQqVW92cNIOJDPu~{<>x$)D7$WDjjzfcXICz;t7zgX9ik|ia_mHfWywN`yWKiN=2 zn;+NDL6Yu33OR0xwV)^eLy4$~_^*^$Z{Dk`uPQMq+eKZ?E0JU={)Vm$gM3^+&1hJh z|M)5;V(oSNUg^HX;$ymHJE#$qMoVf3bvi^;g>8Yh0ma%L;xFr-1}rzZHk>w+_mSn# zIY2f4k_+<6^JM)!Q68^As_m7wD=~Q$T5h_O`nL?QX7%?~Nme*^=D2OLxGWSZpgDIAK z?;9sd`2>bITdl?YQ3Li2>Cemh(o8s&q%W={;sVd!rdM z(b{48Zi?>oe4%ZLiIxo9rpzeLqm`QJ9B<#8yq(qX?B297*~i;Mb34*L;HxB=()6Y7m)G81`Fz~MtE@P8aM2+l71w* zosy=_p8Z<3*!>nZc=6L<8#g*~ZSA$@8d3{1=#65=3d9ZzikWE~R}e0u<%k`5Wl7vr z+q2wfqKtv0nL?n6B~z@E3>nEvW^53xN@GvCgHYujRO3v!Jd=@lD~ej~P4F(-ysE(rDvLq>4LFDVs_g z*X%Qb0=pSB&c99u4FnGCj~P6F;I+IexDMg)fz0m{H(W6=_Dc-FL-q=ZcN;riFd z7SArX64N{hGZMM;>I&j)S%j^wNUNMS?w`KjzM-m{c*0^Sx0YGBtT28kvsPMKVSrBa zM=okP-}Kq(156J62@R(}vy#ZcWLi!-UaF_yqb;1^HW_bpL|l8nIPd{_9QN|#npT!? zq>ryh{56SoZs^pZ=GmoVe&FN>mZSI0x-&a`H&%|)Y@+8>P zTb8T90V1pz3z?<%saM&m%`H@+MO2Ap<3Zf8LWAH`s`2{;RPy9ux;|miGUy-#S)+Lm zXJw$5X}w>;_(moKC@Zv3{{wsqm8m9YKKA0(7B}iwZd1E?|xngvgo8thIz;;VwLqR=OvnK`bXBOiJ%`(?Vsc1HrXs{NH zvXT{QYhShao|tTKhQ*JG*OW6YDKsr9)z%!1Vf8tuhNEWYxhcH;`zBAY)~*k{S7yCxnS%>asf zG8V?Rp#UWyT{dH5Giv5Qi8L1Px;q~B`aEHP;;#_~>9*Ug zXPaDnABX&IJ*&;_MtTiNbjL1V>CR;76Kmjksxpk@^+uR=xK!;zEkbPlSouO9ilE~w18^_<$a6bFiSZQz>8y`;#xX4+2o-73 z`~*Sce1lT^CB|93kE?nE-st>L2e}tzob1?>_zn06?pu+<=}>$$>f?H>B_ZVqJkY+C z2Dw#ZOV67vf5%FJXNrNxJ33>0dQOct-_aR}-xeYInBTHOEA?%;5o+^%3n9CCX74=O zX;=#$ZH-+Rhgsck1~wCBFtfGOxB4rXpY)uXXpNoP{x+H3Oq$8e4l|#b>eS`Bk1^$YQfF+59$7M&fUC4}%xK_uf)0^PIu(ZDXlx@-T9iXNun%*WG-N za(^`3-^%YPes9t5)a+&KaQq?Q5NYoLV95aYNc%<%O3o~qeM&-RLZ9QWVvnx^vlHAi z>w&3$mG=%hi;IGg!xIy5c_sd1ezb2i6$k9@gb?kFnEKridGAZGDU%g1*s4@M5W=#P zNE{z-$>WpR_H7RsX|BCHk6@nel{?e&y&Kuu-K551Z8zWwn7w{OJ})MrSoX}euYa0s zf%@DtJ9Aw;r$zsICC^i0{7I9>eM-asQzR%Yr3V&6Nby&d^J_}JZZ9h5l#&G{FVj7< zqR~Vee>DDxu53bunvCr`H}s>NPHlq|$K8x^)Kepj<8LV2|0J2~KeW<%wUlGyZ|a^Q zDZ`DA>*u$Wn9#M!)y#y;2#W}GV|%R$R)OBJTD)v)V2TCftb&Khhc}}o^Jp=jsTs@- z1}v=oc4It44dtJRHT@1QsuOhtjnbpw8-K!zH9JG?CH zB-65RV^0j%y0xG6-l^%s_J~*JxAzd0Q8m>fah~B@Ul>sQ8#dlLH7fuveQ&;3V-nu~ zB|?+FkIhT!yyz7&8oo7Dnja*F;|KXYVxu!^>6S;$-VyuIkbh?EaJzO`M(KOnBYRTn zy>$-4!_7KMw_Yqgzda&cAx@TK=;`(hr2mQ#Gv{qlaMNZ8W9V0iTvm*?9vA0o_860y z{?oO<`vE>CGLlNDhwU5WCMpWCvc&HoMJe)6`N|1PBq!*f6k6uodOEKnVro8b{ zy`jaIvpLglGdG;rm79rCvs;zj)?D3nXfTe5yS--W(XBZjY{RUW`0Ul1kRy~<1wrah zXiwoUYN&weTgqUd*6@u?NT!d-q=su4FQOYVX-{P0s66P1kd}!IR=rfOrN|_2=Vhw< zrr%jWCX&TV715B%uW$jX?1@o;Td%B0DW()RA`E3#kh^0pBd3}KZUlu?AC>tGXjTCq zi92ySN;IHauBDPeENW4~@97n?4fjQR={^fz_f1DDc^2Lw2aa{0=IKDxpFEuzIPCMO zotIh0o#N754I5cbi$_ph`*HeWGpG4!wz@SKRdAcSoGi$3FrOp7q^a&*-@=B*m<>HxLGZ*Qa5OBNI3dV0l zv1PU-`a@UFUEJgEP?{ADsg04F(+x^C6|Q>YJ)rrT-337kL36k7?9CCOfZ2R{`PCnv zB^_WRas&MP`Bjha2NDKtBhqi3CrW+~XzJ6Q3qz0fybl$a@LnlC%c-W;s-Wlh`c7?y zxxX-?vjZwVHCORri<8F3Xf#N8(JgFbjSyb6bZTt9AM^Fn{8+m|+2bg0g6=T@8+a|J z7u{c}`u90->N+;L>x1N*uvYz2YgpG-^ZTNqYR~%MdVNLZOz_RyA>S|SicM~?`RkoJ zCj_=ey>C~8@oz^XdV}7L(x=ACJ@m#*{Etg>@srk@E!LZX(3{4}t*z}BCbfmepP^S{ zoaY)VH&Dus_?x7?@i$vjd|wrRnY6m1ndyzj6(1&=*wI5?)wm;mQumurb_SYHGAoUh zDw>~c(d&&)!`kL!w$;Y05pDA^vp(-^U43fT+sfp+jWVv``+B~2o|=xvAJkp{buGPA zSYqYbd0{u(EshNIj%GurXoHFCxbuQAKieHrI=$Tcd(q?tHd@Zw!<{O>@9R_cYM$C>K^UosrwQa8nA8 z|A_u4bB(b|=~St?gS6b-0cbg16Xqq#v` z!p%3u{#|N*pgcFOpU&qK0d5Z*FQgP9u3OJx!oM^RE@}RzaDl1HLP<+WbWCcMH-~jC zr7JP&V4o0QB+9nxTnX_9)I!^%%lj_ZIkSaNjwdEb-U5<-BRb*IySz*%975uYAH@(d>@JbfO0OD_FgQ_6lPJx zO497OSE%_AcjB6^`jl+IscP4E(sm8(4U)$hCt-Mi&2=~w(SmSAE9?YsN5FRZ`P1#n z^z`d5mfm==^!oUVlsI#}odjH?=2mXF0+6Y6+S$=43Og3q>CSu}*x4^uYi)CQx32C{ z@@q;oN%0$0)I+*5l^HuDzDz&OQb6b2Zhg6#D00QN|LoLrJEk7cl}-V3qw|N218;{; zg{bor;$N%ycahAEAhLGt9Qre_|O^4vgb zP}v=dbJ<-qp+>--H>JNZJR^8*<1cV zCe&9nYMx?Nhxlt^zkUk4KhBdA zvYkF9B2K5oU0nCZyIM6x_m-;VsezzWUl(E5s>3`TMD4OHa|1uDXra$Eas<_LsVaVp z5?dz*+B(X|w<&pr0MQ65JA`YUB-E9`tr@Q#wzrit#jLiXZlt4jW@_{`h@?JND!*B= zk_uFjx+}b3-4-d%ZU8N?R%-UWtcSR2r33b)JOHfWyL+;0vsgI8LwjWQFBy^xT&8Z3JQ1ZicoYMx!LAm?j3DRy6s1Maw@Xy)&@NndjPOd)S$tRYJ(JFFToywLTMs;x(kDI|ql(T#aVgnOwyOT6~ozs^W zZST71kVC4>sPXcFU{fd7P;E~7=D^kBin8QCyUebMoYuwzzc6DLzTw)GY*-!fpc|hyZOSK z>31%nVPV6vS5uR7|B7$rRiwRWgE(ujowY|dHtKdYT&%|7TD?-MVm1jDayniIJ`8vN zw!J;9@{R8n09C|{J_e`@TsW`GOq3zdjbv@e?1i;ij%Qi16}va9wHmIt2YCh4{gk<- zF*3WNfPk1fCx$VziRp}33)-d<2AElkY__ZI)O6jX-75keH@9t^68i!PJUg0XhJ@#>q0w#gl1EbT!m`Bk3@5F13m~Oc5u{ zjjh7)?uw*hbCQlH6mAC^cdcimne7g8r1b4W8)rpyt)OLKVK@Z4pHz8Ys7`NsIjvwd;LcwD&$k zyHX8yNIly=KfzmGgK@i!^c+<+$5hRkwCZJDNz~A-aELK~1uh@?nhN+MCAPq=bw;$Q zub-v_|6x5fm3GsP z7wg8=)H8*5)19}$G(@R&9e+iMjjfG*OFy#{iw&WTo~WFkk>KTzsnImqUjX%LY@aKo z)o)3oUC~Y&j9eqcy)UEDPN?E1>p6|~G8*mMhRRR$50}4P9x4AXD4@SCZz+GPI#zzX zJU;x*T@RHT(l(doxoM~W$nHJW(|H~CXQS0V{M5wg&Z((!N~avQIW*h1J!SNp2B7dy z^p^ga%ZbZX*Q2SZih6NvsSjS1g4_2m4R9sJ={kJF%JF`~E@J-=%?%QAt8b|fddq@v z5gB7B{8nH_1>RDqc`s{ZX@F-^C0Ci0&i82kJE(_yXfC2MER9)y%Y!2Icr-zY3QVv2 zecag^ZR5@a3gBD)F0E5Idc_FYW~$KJq5iIl+f4AH4psLgzO3MCLr}?&AM8j}X;Wnr zNUdCq2dKCsCzs9#hi_<^8YKv!@Q_q_jxWKfE~rB%@&?z{5=m*w)A*K??U9sR+%JU( z3Xp=B+L4N=Gu7jq26e7!)@Wzj2M^(Dt!P8zr^+XsgwmO#W|NjmND$O<=lTQG+BoXpiYOsT->qdVE}dn3uEp3hq_6LUiTh70)*y5v>> z>?{Q#$@ZP|sA^(4JHK~k`ULbhqrQd{MN~gU#y_}p-gGLHj^|uZ&Kg!d;*$Qonajvc zMg55)fP97-q4g=X!tlD`Eu(bv?C0OmsAl79=q5WL>79QnjJ=JE{u&2dNDj##CUNO8 zfgGX#QhQ4RuA7TrDPN3jml|l}VgTXjGbxf8Z~znmb)oziS5D+t+}W8O^xjSW-1e3= zOx8pnR>LIStaI8Y7UIsdAwQ7Qw&WOld7BcaZB0A_<=wS433+cumBzt`Aj{j^!Ixe4N7&dK?$z;*#K6n|G8pHRn{ z4+ucpMU92Qb$e?%36A2?dx z6TexBu`O>;ItUiTTRbOOj>EDRLBg1#A*7CJ)Ruj=;LK|*bhoXD(;AJRQjr(ALc(KQ zu5^rSR-kL*6S=L}#$TKKA8Gsr%96-Ijxz^h9k3*r4>=TVRCBXXkgVOzTZI#wmWDny z0Rj`9P#)_!f!={F2e_=7^7siJZETCo-#$lM;(tz#_Ksv&X2k}+qH(k;69TmgN4d~Z zPgUyB_ozG3iNB;Ow+j3=tM|)1{k-b^FRFKYq2A1zcyk9}I(k^uqP`*CZTYjjI7i8c zj|=-`Q(tjWo7RH~=w>S2hU8Yv3FI{qV{GBrLPY)A1a zuDUgJI^ho)&$>Gp0*pXvG-E*t8d9#ldV2Y2ERcz{(RK%n*NoyqGuC9r!obd|mTT%set5_vNx;w07M9CH8QOVbp7-T$OR|`rGl63nIQIZ@j=4@%j9*Do7E999r~R!Du~K0k8~47=L2ttYp0j)CPR<$0s4ESTHt>|YK1>| z4bT1${VsA(!4G#cRuTMTn5vd1GBa1*vk&+8;m#&GPUxTkcjKw@m|uy5U;qBt#PC$l jo07lbJ-QlwsipfZeICDW+j+}y-Sdpz;om)PnrQqVhYBB| literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/click/__pycache__/decorators.cpython-310.pyc b/venv/Lib/site-packages/click/__pycache__/decorators.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8465a5d915eaf21d5e918736f23dace4bcd8718b GIT binary patch literal 17194 zcmds8%X1vZdEc3xed0k76e&JLX-JVGA%Ux>Z3%i<6eQ|th!H8pUQx9eY|jD!_s+dd!C9z!|c{S{C#BeLXX~3xYJG$d#%r zIla9--CuWq@9*nIcVeQP!RL4X_1^L$Z)Y<9!5_n)Y5aHav@A8+k#Pgkd{jGtZIr!UGX9;oj3_irCi6F02tgMN1VpqfPO zkks~|b{Kt+s40{WHS9x~>QU4Vs=X*5_K*5ywyEhK+to+ZdG(+=c-^VG>d(|+bp*9z zrH9l9iX)Euhtcn0|53FczmBL!mMwLFV;gzps$LhwRrcPbYS5Kk!pgQfBWxmt+HKS(yqkvd$IO=ir#C7MIRed~ePaw?V_i_I;V4Xqj zAv3>!blLJx%lt)E86H`()CDzzwfymMPhwmynGxeIVm0ZkfUt8u!BwNEo=V1*ER6b4 zMm?O2^p6TgIs0RHWaT4kf7mah{fO*L;u$B$Q{_a*SK$E9I+)c-UqhEX|%AD;m=UjlEw z4Bi~fSK2Y(5g%ObKN7F|74=>4Y-QJx6ZahXsyd62Ps(hsVPy%=4xs1Nym}q$dg`8i z-caYz=V_slg>_i!&0l2ITYzX}i@SL{{q;^-dpE7^KKrD4Pkrxtq58}{XJ1h7WABH?q!0 z)(4Swu@c$m<_T=6+v}*vYTTL$EAw8f{{=9&%sjP*bH zo~JJduIJXVge9+j+4TZ<-Rp$S&axYJUG3NX<`v%!S9~|#nj3Ge?Bdg1TJ`H82Q`{H zKqW?EMczgZeh0Vm=PUe<@|V};ckz71)bs(YPEVnz<4Hfs1|C66zzu9=!pybIvbCA{ zC+mYu6C3!Y^%D^IrnR8Q@&2Z*58+E6VcpUX@GEoc<=5vfeP8)kE-f{eTFq|gU-m9t z@jF*8z1Lj26f{Hs%o;ZAE&IWxdaGH#{G{^hUG0Tk9aPpfqGHEiuQhs|x(jdt*L2Y8 zKfLAzK|Rz6;j-XP^)VFD`0xbW zPe4*m=E_-p5|vx0hDg7ITf)lO&PKv3cjX98go5(_dZF2FwmeNL&vBb`i^Eed&bmvz z(Cv0w8!p?017d1-JNzXSj(Gw7Kw1^Jr{}yd)N_k5=TxZ;78PNM!&d*WpbfouVF&#vN08?F1PhnNfY`-k=woO% zgwBJ|r}67tG-i-f3pdvMDDQWIp7w7&dUx_)Oi9oAl1~