From 909b29dfb5bfd40933a108279e737cc07937f2f3 Mon Sep 17 00:00:00 2001 From: Bhavnoor Singh Saroya Date: Mon, 25 Aug 2025 14:22:08 -0700 Subject: [PATCH] remove venv --- battlesnake-service/.venv/bin/Activate.ps1 | 247 - battlesnake-service/.venv/bin/activate | 70 - battlesnake-service/.venv/bin/activate.csh | 27 - battlesnake-service/.venv/bin/activate.fish | 69 - battlesnake-service/.venv/bin/flask | 8 - battlesnake-service/.venv/bin/normalizer | 8 - battlesnake-service/.venv/bin/pip | 8 - battlesnake-service/.venv/bin/pip3 | 8 - battlesnake-service/.venv/bin/pip3.12 | 8 - battlesnake-service/.venv/bin/python | 1 - battlesnake-service/.venv/bin/python3 | 1 - battlesnake-service/.venv/bin/python3.12 | 1 - .../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 | 6 - .../MarkupSafe-3.0.2.dist-info/top_level.txt | 1 - .../lib/python3.12/site-packages/README.rst | 1 - .../typing_extensions.cpython-312.pyc | Bin 139510 -> 0 bytes .../beautifulsoup4-4.13.3.dist-info/INSTALLER | 1 - .../beautifulsoup4-4.13.3.dist-info/METADATA | 123 - .../beautifulsoup4-4.13.3.dist-info/RECORD | 89 - .../beautifulsoup4-4.13.3.dist-info/WHEEL | 4 - .../licenses/AUTHORS | 49 - .../licenses/LICENSE | 31 - .../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 - .../site-packages/blinker/__init__.py | 17 - .../__pycache__/__init__.cpython-312.pyc | Bin 516 -> 0 bytes .../__pycache__/_utilities.cpython-312.pyc | Bin 2743 -> 0 bytes .../blinker/__pycache__/base.cpython-312.pyc | Bin 22020 -> 0 bytes .../site-packages/blinker/_utilities.py | 64 - .../python3.12/site-packages/blinker/base.py | 512 - .../python3.12/site-packages/blinker/py.typed | 0 .../bs4-0.0.2.dist-info/INSTALLER | 1 - .../bs4-0.0.2.dist-info/METADATA | 10 - .../site-packages/bs4-0.0.2.dist-info/RECORD | 6 - .../bs4-0.0.2.dist-info/REQUESTED | 0 .../site-packages/bs4-0.0.2.dist-info/WHEEL | 5 - .../python3.12/site-packages/bs4/__init__.py | 1170 --- .../bs4/__pycache__/__init__.cpython-312.pyc | Bin 39652 -> 0 bytes .../__pycache__/_deprecation.cpython-312.pyc | Bin 3768 -> 0 bytes .../bs4/__pycache__/_typing.cpython-312.pyc | Bin 3570 -> 0 bytes .../bs4/__pycache__/_warnings.cpython-312.pyc | Bin 5621 -> 0 bytes .../bs4/__pycache__/css.cpython-312.pyc | Bin 14447 -> 0 bytes .../bs4/__pycache__/dammit.cpython-312.pyc | Bin 46502 -> 0 bytes .../bs4/__pycache__/diagnose.cpython-312.pyc | Bin 12676 -> 0 bytes .../bs4/__pycache__/element.cpython-312.pyc | Bin 107402 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 1784 -> 0 bytes .../bs4/__pycache__/filter.cpython-312.pyc | Bin 28639 -> 0 bytes .../bs4/__pycache__/formatter.cpython-312.pyc | Bin 10552 -> 0 bytes .../site-packages/bs4/_deprecation.py | 80 - .../python3.12/site-packages/bs4/_typing.py | 196 - .../python3.12/site-packages/bs4/_warnings.py | 98 - .../site-packages/bs4/builder/__init__.py | 848 -- .../__pycache__/__init__.cpython-312.pyc | Bin 27486 -> 0 bytes .../__pycache__/_html5lib.cpython-312.pyc | Bin 23161 -> 0 bytes .../__pycache__/_htmlparser.cpython-312.pyc | Bin 14657 -> 0 bytes .../builder/__pycache__/_lxml.cpython-312.pyc | Bin 18461 -> 0 bytes .../site-packages/bs4/builder/_html5lib.py | 594 -- .../site-packages/bs4/builder/_htmlparser.py | 474 - .../site-packages/bs4/builder/_lxml.py | 490 - .../lib/python3.12/site-packages/bs4/css.py | 338 - .../python3.12/site-packages/bs4/dammit.py | 1408 --- .../python3.12/site-packages/bs4/diagnose.py | 268 - .../python3.12/site-packages/bs4/element.py | 2886 ------ .../site-packages/bs4/exceptions.py | 28 - .../python3.12/site-packages/bs4/filter.py | 755 -- .../python3.12/site-packages/bs4/formatter.py | 276 - .../lib/python3.12/site-packages/bs4/py.typed | 0 .../site-packages/bs4/tests/__init__.py | 1305 --- .../__pycache__/__init__.cpython-312.pyc | Bin 67438 -> 0 bytes .../__pycache__/test_builder.cpython-312.pyc | Bin 1598 -> 0 bytes .../test_builder_registry.cpython-312.pyc | Bin 7622 -> 0 bytes .../__pycache__/test_css.cpython-312.pyc | Bin 28933 -> 0 bytes .../__pycache__/test_dammit.cpython-312.pyc | Bin 19810 -> 0 bytes .../__pycache__/test_element.cpython-312.pyc | Bin 6055 -> 0 bytes .../__pycache__/test_filter.cpython-312.pyc | Bin 31931 -> 0 bytes .../test_formatter.cpython-312.pyc | Bin 7824 -> 0 bytes .../__pycache__/test_fuzz.cpython-312.pyc | Bin 7063 -> 0 bytes .../__pycache__/test_html5lib.cpython-312.pyc | Bin 11986 -> 0 bytes .../test_htmlparser.cpython-312.pyc | Bin 7309 -> 0 bytes .../__pycache__/test_lxml.cpython-312.pyc | Bin 8121 -> 0 bytes .../test_navigablestring.cpython-312.pyc | Bin 7787 -> 0 bytes .../test_pageelement.cpython-312.pyc | Bin 22932 -> 0 bytes .../__pycache__/test_soup.cpython-312.pyc | Bin 31523 -> 0 bytes .../__pycache__/test_tag.cpython-312.pyc | Bin 14143 -> 0 bytes .../__pycache__/test_tree.cpython-312.pyc | Bin 93206 -> 0 bytes ...mized-bs4_fuzzer-4670634698080256.testcase | 1 - ...mized-bs4_fuzzer-4818336571064320.testcase | 1 - ...mized-bs4_fuzzer-4999465949331456.testcase | 1 - ...mized-bs4_fuzzer-5000587759190016.testcase | Bin 15347 -> 0 bytes ...mized-bs4_fuzzer-5167584867909632.testcase | Bin 19469 -> 0 bytes ...mized-bs4_fuzzer-5270998950477824.testcase | Bin 12 -> 0 bytes ...mized-bs4_fuzzer-5375146639360000.testcase | 1 - ...mized-bs4_fuzzer-5492400320282624.testcase | Bin 11502 -> 0 bytes ...mized-bs4_fuzzer-5703933063462912.testcase | 2 - ...mized-bs4_fuzzer-5843991618256896.testcase | 1 - ...mized-bs4_fuzzer-5984173902397440.testcase | Bin 51495 -> 0 bytes ...mized-bs4_fuzzer-6124268085182464.testcase | 1 - ...mized-bs4_fuzzer-6241471367348224.testcase | 1 - ...mized-bs4_fuzzer-6306874195312640.testcase | 1 - ...mized-bs4_fuzzer-6450958476902400.testcase | Bin 3546 -> 0 bytes ...mized-bs4_fuzzer-6600557255327744.testcase | Bin 124 -> 0 bytes ...0c8ed8bcd0785b67000fcd5dea1d33f08.testcase | Bin 2607 -> 0 bytes ...a2b26f13537b68d3794b0478a4090ee4a.testcase | Bin 103 -> 0 bytes .../site-packages/bs4/tests/test_builder.py | 28 - .../bs4/tests/test_builder_registry.py | 139 - .../site-packages/bs4/tests/test_css.py | 536 - .../site-packages/bs4/tests/test_dammit.py | 433 - .../site-packages/bs4/tests/test_element.py | 138 - .../site-packages/bs4/tests/test_filter.py | 674 -- .../site-packages/bs4/tests/test_formatter.py | 170 - .../site-packages/bs4/tests/test_fuzz.py | 181 - .../site-packages/bs4/tests/test_html5lib.py | 264 - .../bs4/tests/test_htmlparser.py | 161 - .../site-packages/bs4/tests/test_lxml.py | 196 - .../bs4/tests/test_navigablestring.py | 144 - .../bs4/tests/test_pageelement.py | 437 - .../site-packages/bs4/tests/test_soup.py | 602 -- .../site-packages/bs4/tests/test_tag.py | 241 - .../site-packages/bs4/tests/test_tree.py | 1452 --- .../certifi-2025.1.31.dist-info/INSTALLER | 1 - .../certifi-2025.1.31.dist-info/LICENSE | 20 - .../certifi-2025.1.31.dist-info/METADATA | 77 - .../certifi-2025.1.31.dist-info/RECORD | 14 - .../certifi-2025.1.31.dist-info/WHEEL | 5 - .../certifi-2025.1.31.dist-info/top_level.txt | 1 - .../site-packages/certifi/__init__.py | 4 - .../site-packages/certifi/__main__.py | 12 - .../__pycache__/__init__.cpython-312.pyc | Bin 331 -> 0 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 646 -> 0 bytes .../certifi/__pycache__/core.cpython-312.pyc | Bin 3216 -> 0 bytes .../site-packages/certifi/cacert.pem | 4897 ---------- .../python3.12/site-packages/certifi/core.py | 114 - .../python3.12/site-packages/certifi/py.typed | 0 .../INSTALLER | 1 - .../LICENSE | 21 - .../METADATA | 721 -- .../charset_normalizer-3.4.1.dist-info/RECORD | 35 - .../charset_normalizer-3.4.1.dist-info/WHEEL | 6 - .../entry_points.txt | 2 - .../top_level.txt | 1 - .../charset_normalizer/__init__.py | 48 - .../charset_normalizer/__main__.py | 6 - .../__pycache__/__init__.cpython-312.pyc | Bin 1797 -> 0 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 372 -> 0 bytes .../__pycache__/api.cpython-312.pyc | Bin 18186 -> 0 bytes .../__pycache__/cd.cpython-312.pyc | Bin 13313 -> 0 bytes .../__pycache__/constant.cpython-312.pyc | Bin 38696 -> 0 bytes .../__pycache__/legacy.cpython-312.pyc | Bin 2837 -> 0 bytes .../__pycache__/md.cpython-312.pyc | Bin 24425 -> 0 bytes .../__pycache__/models.cpython-312.pyc | Bin 17144 -> 0 bytes .../__pycache__/utils.cpython-312.pyc | Bin 13551 -> 0 bytes .../__pycache__/version.cpython-312.pyc | Bin 399 -> 0 bytes .../site-packages/charset_normalizer/api.py | 668 -- .../site-packages/charset_normalizer/cd.py | 395 - .../charset_normalizer/cli/__init__.py | 8 - .../charset_normalizer/cli/__main__.py | 321 - .../cli/__pycache__/__init__.cpython-312.pyc | Bin 360 -> 0 bytes .../cli/__pycache__/__main__.cpython-312.pyc | Bin 10995 -> 0 bytes .../charset_normalizer/constant.py | 1998 ---- .../charset_normalizer/legacy.py | 66 - .../md.cpython-312-x86_64-linux-gnu.so | Bin 16064 -> 0 bytes .../site-packages/charset_normalizer/md.py | 630 -- .../md__mypyc.cpython-312-x86_64-linux-gnu.so | Bin 280904 -> 0 bytes .../charset_normalizer/models.py | 360 - .../site-packages/charset_normalizer/py.typed | 0 .../site-packages/charset_normalizer/utils.py | 408 - .../charset_normalizer/version.py | 8 - .../click-8.1.8.dist-info/INSTALLER | 1 - .../click-8.1.8.dist-info/LICENSE.txt | 28 - .../click-8.1.8.dist-info/METADATA | 74 - .../click-8.1.8.dist-info/RECORD | 38 - .../site-packages/click-8.1.8.dist-info/WHEEL | 4 - .../site-packages/click/__init__.py | 75 - .../__pycache__/__init__.cpython-312.pyc | Bin 2755 -> 0 bytes .../click/__pycache__/_compat.cpython-312.pyc | Bin 27469 -> 0 bytes .../__pycache__/_termui_impl.cpython-312.pyc | Bin 30658 -> 0 bytes .../__pycache__/_textwrap.cpython-312.pyc | Bin 2467 -> 0 bytes .../__pycache__/_winconsole.cpython-312.pyc | Bin 12006 -> 0 bytes .../click/__pycache__/core.cpython-312.pyc | Bin 135984 -> 0 bytes .../__pycache__/decorators.cpython-312.pyc | Bin 24752 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 14901 -> 0 bytes .../__pycache__/formatting.cpython-312.pyc | Bin 14150 -> 0 bytes .../click/__pycache__/globals.cpython-312.pyc | Bin 3134 -> 0 bytes .../click/__pycache__/parser.cpython-312.pyc | Bin 21529 -> 0 bytes .../shell_completion.cpython-312.pyc | Bin 22926 -> 0 bytes .../click/__pycache__/termui.cpython-312.pyc | Bin 32810 -> 0 bytes .../click/__pycache__/testing.cpython-312.pyc | Bin 24793 -> 0 bytes .../click/__pycache__/types.cpython-312.pyc | Bin 49485 -> 0 bytes .../click/__pycache__/utils.cpython-312.pyc | Bin 26392 -> 0 bytes .../python3.12/site-packages/click/_compat.py | 623 -- .../site-packages/click/_termui_impl.py | 788 -- .../site-packages/click/_textwrap.py | 49 - .../site-packages/click/_winconsole.py | 279 - .../python3.12/site-packages/click/core.py | 3047 ------ .../site-packages/click/decorators.py | 562 -- .../site-packages/click/exceptions.py | 296 - .../site-packages/click/formatting.py | 301 - .../python3.12/site-packages/click/globals.py | 67 - .../python3.12/site-packages/click/parser.py | 531 - .../python3.12/site-packages/click/py.typed | 0 .../site-packages/click/shell_completion.py | 603 -- .../python3.12/site-packages/click/termui.py | 784 -- .../python3.12/site-packages/click/testing.py | 483 - .../python3.12/site-packages/click/types.py | 1093 --- .../python3.12/site-packages/click/utils.py | 624 -- .../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 - .../site-packages/flask/__init__.py | 60 - .../site-packages/flask/__main__.py | 3 - .../__pycache__/__init__.cpython-312.pyc | Bin 2495 -> 0 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 256 -> 0 bytes .../flask/__pycache__/app.cpython-312.pyc | Bin 62503 -> 0 bytes .../__pycache__/blueprints.cpython-312.pyc | Bin 5015 -> 0 bytes .../flask/__pycache__/cli.cpython-312.pyc | Bin 43418 -> 0 bytes .../flask/__pycache__/config.cpython-312.pyc | Bin 16267 -> 0 bytes .../flask/__pycache__/ctx.cpython-312.pyc | Bin 19853 -> 0 bytes .../__pycache__/debughelpers.cpython-312.pyc | Bin 9165 -> 0 bytes .../flask/__pycache__/globals.cpython-312.pyc | Bin 1880 -> 0 bytes .../flask/__pycache__/helpers.cpython-312.pyc | Bin 25460 -> 0 bytes .../flask/__pycache__/logging.cpython-312.pyc | Bin 3282 -> 0 bytes .../__pycache__/sessions.cpython-312.pyc | Bin 17148 -> 0 bytes .../flask/__pycache__/signals.cpython-312.pyc | Bin 1237 -> 0 bytes .../__pycache__/templating.cpython-312.pyc | Bin 9947 -> 0 bytes .../flask/__pycache__/testing.cpython-312.pyc | Bin 13617 -> 0 bytes .../flask/__pycache__/typing.cpython-312.pyc | Bin 4003 -> 0 bytes .../flask/__pycache__/views.cpython-312.pyc | Bin 7036 -> 0 bytes .../__pycache__/wrappers.cpython-312.pyc | Bin 10068 -> 0 bytes .../lib/python3.12/site-packages/flask/app.py | 1536 --- .../site-packages/flask/blueprints.py | 128 - .../lib/python3.12/site-packages/flask/cli.py | 1133 --- .../python3.12/site-packages/flask/config.py | 367 - .../lib/python3.12/site-packages/flask/ctx.py | 449 - .../site-packages/flask/debughelpers.py | 178 - .../python3.12/site-packages/flask/globals.py | 51 - .../python3.12/site-packages/flask/helpers.py | 634 -- .../site-packages/flask/json/__init__.py | 170 - .../json/__pycache__/__init__.cpython-312.pyc | Bin 6708 -> 0 bytes .../json/__pycache__/provider.cpython-312.pyc | Bin 9275 -> 0 bytes .../json/__pycache__/tag.cpython-312.pyc | Bin 13970 -> 0 bytes .../site-packages/flask/json/provider.py | 215 - .../site-packages/flask/json/tag.py | 327 - .../python3.12/site-packages/flask/logging.py | 79 - .../python3.12/site-packages/flask/py.typed | 0 .../site-packages/flask/sansio/README.md | 6 - .../sansio/__pycache__/app.cpython-312.pyc | Bin 33728 -> 0 bytes .../__pycache__/blueprints.cpython-312.pyc | Bin 31228 -> 0 bytes .../__pycache__/scaffold.cpython-312.pyc | Bin 30241 -> 0 bytes .../site-packages/flask/sansio/app.py | 964 -- .../site-packages/flask/sansio/blueprints.py | 632 -- .../site-packages/flask/sansio/scaffold.py | 792 -- .../site-packages/flask/sessions.py | 398 - .../python3.12/site-packages/flask/signals.py | 17 - .../site-packages/flask/templating.py | 219 - .../python3.12/site-packages/flask/testing.py | 297 - .../python3.12/site-packages/flask/typing.py | 90 - .../python3.12/site-packages/flask/views.py | 191 - .../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 - .../python3.12/site-packages/idna/__init__.py | 45 - .../idna/__pycache__/__init__.cpython-312.pyc | Bin 899 -> 0 bytes .../idna/__pycache__/codec.cpython-312.pyc | Bin 4999 -> 0 bytes .../idna/__pycache__/compat.cpython-312.pyc | Bin 903 -> 0 bytes .../idna/__pycache__/core.cpython-312.pyc | Bin 16189 -> 0 bytes .../idna/__pycache__/idnadata.cpython-312.pyc | Bin 99489 -> 0 bytes .../__pycache__/intranges.cpython-312.pyc | Bin 2651 -> 0 bytes .../__pycache__/package_data.cpython-312.pyc | Bin 230 -> 0 bytes .../__pycache__/uts46data.cpython-312.pyc | Bin 158859 -> 0 bytes .../python3.12/site-packages/idna/codec.py | 122 - .../python3.12/site-packages/idna/compat.py | 15 - .../lib/python3.12/site-packages/idna/core.py | 437 - .../python3.12/site-packages/idna/idnadata.py | 4243 -------- .../site-packages/idna/intranges.py | 57 - .../site-packages/idna/package_data.py | 1 - .../python3.12/site-packages/idna/py.typed | 0 .../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-312.pyc | Bin 1647 -> 0 bytes .../__pycache__/_json.cpython-312.pyc | Bin 1201 -> 0 bytes .../__pycache__/encoding.cpython-312.pyc | Bin 2701 -> 0 bytes .../__pycache__/exc.cpython-312.pyc | Bin 3961 -> 0 bytes .../__pycache__/serializer.cpython-312.pyc | Bin 15442 -> 0 bytes .../__pycache__/signer.cpython-312.pyc | Bin 11307 -> 0 bytes .../__pycache__/timed.cpython-312.pyc | Bin 8755 -> 0 bytes .../__pycache__/url_safe.cpython-312.pyc | Bin 3551 -> 0 bytes .../site-packages/itsdangerous/_json.py | 18 - .../site-packages/itsdangerous/encoding.py | 54 - .../site-packages/itsdangerous/exc.py | 106 - .../site-packages/itsdangerous/py.typed | 0 .../site-packages/itsdangerous/serializer.py | 406 - .../site-packages/itsdangerous/signer.py | 266 - .../site-packages/itsdangerous/timed.py | 228 - .../site-packages/itsdangerous/url_safe.py | 83 - .../jinja2-3.1.5.dist-info/INSTALLER | 1 - .../jinja2-3.1.5.dist-info/LICENSE.txt | 28 - .../jinja2-3.1.5.dist-info/METADATA | 75 - .../jinja2-3.1.5.dist-info/RECORD | 57 - .../jinja2-3.1.5.dist-info/WHEEL | 4 - .../jinja2-3.1.5.dist-info/entry_points.txt | 3 - .../site-packages/jinja2/__init__.py | 38 - .../__pycache__/__init__.cpython-312.pyc | Bin 1672 -> 0 bytes .../__pycache__/_identifier.cpython-312.pyc | Bin 2153 -> 0 bytes .../__pycache__/async_utils.cpython-312.pyc | Bin 4993 -> 0 bytes .../__pycache__/bccache.cpython-312.pyc | Bin 19364 -> 0 bytes .../__pycache__/compiler.cpython-312.pyc | Bin 104079 -> 0 bytes .../__pycache__/constants.cpython-312.pyc | Bin 1575 -> 0 bytes .../jinja2/__pycache__/debug.cpython-312.pyc | Bin 6600 -> 0 bytes .../__pycache__/defaults.cpython-312.pyc | Bin 1625 -> 0 bytes .../__pycache__/environment.cpython-312.pyc | Bin 76701 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 7739 -> 0 bytes .../jinja2/__pycache__/ext.cpython-312.pyc | Bin 41932 -> 0 bytes .../__pycache__/filters.cpython-312.pyc | Bin 72577 -> 0 bytes .../__pycache__/idtracking.cpython-312.pyc | Bin 19214 -> 0 bytes .../jinja2/__pycache__/lexer.cpython-312.pyc | Bin 32095 -> 0 bytes .../__pycache__/loaders.cpython-312.pyc | Bin 32374 -> 0 bytes .../jinja2/__pycache__/meta.cpython-312.pyc | Bin 5509 -> 0 bytes .../__pycache__/nativetypes.cpython-312.pyc | Bin 7030 -> 0 bytes .../jinja2/__pycache__/nodes.cpython-312.pyc | Bin 58292 -> 0 bytes .../__pycache__/optimizer.cpython-312.pyc | Bin 2708 -> 0 bytes .../jinja2/__pycache__/parser.cpython-312.pyc | Bin 61222 -> 0 bytes .../__pycache__/runtime.cpython-312.pyc | Bin 48910 -> 0 bytes .../__pycache__/sandbox.cpython-312.pyc | Bin 18126 -> 0 bytes .../jinja2/__pycache__/tests.cpython-312.pyc | Bin 9069 -> 0 bytes .../jinja2/__pycache__/utils.cpython-312.pyc | Bin 34882 -> 0 bytes .../__pycache__/visitor.cpython-312.pyc | Bin 5384 -> 0 bytes .../site-packages/jinja2/_identifier.py | 6 - .../site-packages/jinja2/async_utils.py | 99 - .../site-packages/jinja2/bccache.py | 408 - .../site-packages/jinja2/compiler.py | 1998 ---- .../site-packages/jinja2/constants.py | 20 - .../python3.12/site-packages/jinja2/debug.py | 191 - .../site-packages/jinja2/defaults.py | 48 - .../site-packages/jinja2/environment.py | 1672 ---- .../site-packages/jinja2/exceptions.py | 166 - .../python3.12/site-packages/jinja2/ext.py | 870 -- .../site-packages/jinja2/filters.py | 1878 ---- .../site-packages/jinja2/idtracking.py | 318 - .../python3.12/site-packages/jinja2/lexer.py | 868 -- .../site-packages/jinja2/loaders.py | 693 -- .../python3.12/site-packages/jinja2/meta.py | 112 - .../site-packages/jinja2/nativetypes.py | 130 - .../python3.12/site-packages/jinja2/nodes.py | 1206 --- .../site-packages/jinja2/optimizer.py | 48 - .../python3.12/site-packages/jinja2/parser.py | 1049 -- .../python3.12/site-packages/jinja2/py.typed | 0 .../site-packages/jinja2/runtime.py | 1062 -- .../site-packages/jinja2/sandbox.py | 436 - .../python3.12/site-packages/jinja2/tests.py | 256 - .../python3.12/site-packages/jinja2/utils.py | 766 -- .../site-packages/jinja2/visitor.py | 92 - .../site-packages/markupsafe/__init__.py | 395 - .../__pycache__/__init__.cpython-312.pyc | Bin 20947 -> 0 bytes .../__pycache__/_native.cpython-312.pyc | Bin 634 -> 0 bytes .../site-packages/markupsafe/_native.py | 8 - .../site-packages/markupsafe/_speedups.c | 204 - .../_speedups.cpython-312-x86_64-linux-gnu.so | Bin 43432 -> 0 bytes .../site-packages/markupsafe/_speedups.pyi | 1 - .../site-packages/markupsafe/py.typed | 0 .../pip-24.0.dist-info/AUTHORS.txt | 760 -- .../pip-24.0.dist-info/INSTALLER | 1 - .../pip-24.0.dist-info/LICENSE.txt | 20 - .../site-packages/pip-24.0.dist-info/METADATA | 88 - .../site-packages/pip-24.0.dist-info/RECORD | 1005 -- .../pip-24.0.dist-info/REQUESTED | 0 .../site-packages/pip-24.0.dist-info/WHEEL | 5 - .../pip-24.0.dist-info/entry_points.txt | 4 - .../pip-24.0.dist-info/top_level.txt | 1 - .../python3.12/site-packages/pip/__init__.py | 13 - .../python3.12/site-packages/pip/__main__.py | 24 - .../site-packages/pip/__pip-runner__.py | 50 - .../pip/__pycache__/__init__.cpython-312.pyc | Bin 709 -> 0 bytes .../pip/__pycache__/__main__.cpython-312.pyc | Bin 865 -> 0 bytes .../__pip-runner__.cpython-312.pyc | Bin 2228 -> 0 bytes .../site-packages/pip/_internal/__init__.py | 18 - .../__pycache__/__init__.cpython-312.pyc | Bin 811 -> 0 bytes .../__pycache__/build_env.cpython-312.pyc | Bin 14318 -> 0 bytes .../__pycache__/cache.cpython-312.pyc | Bin 12689 -> 0 bytes .../__pycache__/configuration.cpython-312.pyc | Bin 17690 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 33308 -> 0 bytes .../__pycache__/main.cpython-312.pyc | Bin 694 -> 0 bytes .../__pycache__/pyproject.cpython-312.pyc | Bin 4995 -> 0 bytes .../self_outdated_check.cpython-312.pyc | Bin 10576 -> 0 bytes .../__pycache__/wheel_builder.cpython-312.pyc | Bin 13673 -> 0 bytes .../site-packages/pip/_internal/build_env.py | 311 - .../site-packages/pip/_internal/cache.py | 290 - .../pip/_internal/cli/__init__.py | 4 - .../cli/__pycache__/__init__.cpython-312.pyc | Bin 302 -> 0 bytes .../autocompletion.cpython-312.pyc | Bin 8489 -> 0 bytes .../__pycache__/base_command.cpython-312.pyc | Bin 10479 -> 0 bytes .../__pycache__/cmdoptions.cpython-312.pyc | Bin 30398 -> 0 bytes .../command_context.cpython-312.pyc | Bin 1805 -> 0 bytes .../cli/__pycache__/main.cpython-312.pyc | Bin 2322 -> 0 bytes .../__pycache__/main_parser.cpython-312.pyc | Bin 4929 -> 0 bytes .../cli/__pycache__/parser.cpython-312.pyc | Bin 15046 -> 0 bytes .../__pycache__/progress_bars.cpython-312.pyc | Bin 2644 -> 0 bytes .../__pycache__/req_command.cpython-312.pyc | Bin 18876 -> 0 bytes .../cli/__pycache__/spinners.cpython-312.pyc | Bin 7864 -> 0 bytes .../__pycache__/status_codes.cpython-312.pyc | Bin 399 -> 0 bytes .../pip/_internal/cli/autocompletion.py | 172 - .../pip/_internal/cli/base_command.py | 236 - .../pip/_internal/cli/cmdoptions.py | 1074 -- .../pip/_internal/cli/command_context.py | 27 - .../site-packages/pip/_internal/cli/main.py | 79 - .../pip/_internal/cli/main_parser.py | 134 - .../site-packages/pip/_internal/cli/parser.py | 294 - .../pip/_internal/cli/progress_bars.py | 68 - .../pip/_internal/cli/req_command.py | 505 - .../pip/_internal/cli/spinners.py | 159 - .../pip/_internal/cli/status_codes.py | 6 - .../pip/_internal/commands/__init__.py | 132 - .../__pycache__/__init__.cpython-312.pyc | Bin 4026 -> 0 bytes .../__pycache__/cache.cpython-312.pyc | Bin 9735 -> 0 bytes .../__pycache__/check.cpython-312.pyc | Bin 2114 -> 0 bytes .../__pycache__/completion.cpython-312.pyc | Bin 5216 -> 0 bytes .../__pycache__/configuration.cpython-312.pyc | Bin 13236 -> 0 bytes .../__pycache__/debug.cpython-312.pyc | Bin 10185 -> 0 bytes .../__pycache__/download.cpython-312.pyc | Bin 7613 -> 0 bytes .../__pycache__/freeze.cpython-312.pyc | Bin 4440 -> 0 bytes .../commands/__pycache__/hash.cpython-312.pyc | Bin 3007 -> 0 bytes .../commands/__pycache__/help.cpython-312.pyc | Bin 1697 -> 0 bytes .../__pycache__/index.cpython-312.pyc | Bin 6744 -> 0 bytes .../__pycache__/inspect.cpython-312.pyc | Bin 3999 -> 0 bytes .../__pycache__/install.cpython-312.pyc | Bin 28937 -> 0 bytes .../commands/__pycache__/list.cpython-312.pyc | Bin 15680 -> 0 bytes .../__pycache__/search.cpython-312.pyc | Bin 7645 -> 0 bytes .../commands/__pycache__/show.cpython-312.pyc | Bin 9752 -> 0 bytes .../__pycache__/uninstall.cpython-312.pyc | Bin 4750 -> 0 bytes .../__pycache__/wheel.cpython-312.pyc | Bin 8980 -> 0 bytes .../pip/_internal/commands/cache.py | 225 - .../pip/_internal/commands/check.py | 54 - .../pip/_internal/commands/completion.py | 130 - .../pip/_internal/commands/configuration.py | 280 - .../pip/_internal/commands/debug.py | 201 - .../pip/_internal/commands/download.py | 147 - .../pip/_internal/commands/freeze.py | 109 - .../pip/_internal/commands/hash.py | 59 - .../pip/_internal/commands/help.py | 41 - .../pip/_internal/commands/index.py | 139 - .../pip/_internal/commands/inspect.py | 92 - .../pip/_internal/commands/install.py | 774 -- .../pip/_internal/commands/list.py | 370 - .../pip/_internal/commands/search.py | 174 - .../pip/_internal/commands/show.py | 189 - .../pip/_internal/commands/uninstall.py | 113 - .../pip/_internal/commands/wheel.py | 183 - .../pip/_internal/configuration.py | 383 - .../pip/_internal/distributions/__init__.py | 21 - .../__pycache__/__init__.cpython-312.pyc | Bin 965 -> 0 bytes .../__pycache__/base.cpython-312.pyc | Bin 2886 -> 0 bytes .../__pycache__/installed.cpython-312.pyc | Bin 1724 -> 0 bytes .../__pycache__/sdist.cpython-312.pyc | Bin 8512 -> 0 bytes .../__pycache__/wheel.cpython-312.pyc | Bin 2272 -> 0 bytes .../pip/_internal/distributions/base.py | 51 - .../pip/_internal/distributions/installed.py | 29 - .../pip/_internal/distributions/sdist.py | 156 - .../pip/_internal/distributions/wheel.py | 40 - .../site-packages/pip/_internal/exceptions.py | 728 -- .../pip/_internal/index/__init__.py | 2 - .../__pycache__/__init__.cpython-312.pyc | Bin 256 -> 0 bytes .../__pycache__/collector.cpython-312.pyc | Bin 21910 -> 0 bytes .../package_finder.cpython-312.pyc | Bin 40759 -> 0 bytes .../index/__pycache__/sources.cpython-312.pyc | Bin 12628 -> 0 bytes .../pip/_internal/index/collector.py | 507 - .../pip/_internal/index/package_finder.py | 1027 -- .../pip/_internal/index/sources.py | 285 - .../pip/_internal/locations/__init__.py | 467 - .../__pycache__/__init__.cpython-312.pyc | Bin 16800 -> 0 bytes .../__pycache__/_distutils.cpython-312.pyc | Bin 6880 -> 0 bytes .../__pycache__/_sysconfig.cpython-312.pyc | Bin 8035 -> 0 bytes .../__pycache__/base.cpython-312.pyc | Bin 3805 -> 0 bytes .../pip/_internal/locations/_distutils.py | 172 - .../pip/_internal/locations/_sysconfig.py | 213 - .../pip/_internal/locations/base.py | 81 - .../site-packages/pip/_internal/main.py | 12 - .../pip/_internal/metadata/__init__.py | 128 - .../__pycache__/__init__.cpython-312.pyc | Bin 5906 -> 0 bytes .../__pycache__/_json.cpython-312.pyc | Bin 2899 -> 0 bytes .../metadata/__pycache__/base.cpython-312.pyc | Bin 35736 -> 0 bytes .../__pycache__/pkg_resources.cpython-312.pyc | Bin 15814 -> 0 bytes .../pip/_internal/metadata/_json.py | 84 - .../pip/_internal/metadata/base.py | 702 -- .../_internal/metadata/importlib/__init__.py | 6 - .../__pycache__/__init__.cpython-312.pyc | Bin 382 -> 0 bytes .../__pycache__/_compat.cpython-312.pyc | Bin 3357 -> 0 bytes .../__pycache__/_dists.cpython-312.pyc | Bin 13449 -> 0 bytes .../__pycache__/_envs.cpython-312.pyc | Bin 11204 -> 0 bytes .../_internal/metadata/importlib/_compat.py | 55 - .../_internal/metadata/importlib/_dists.py | 227 - .../pip/_internal/metadata/importlib/_envs.py | 189 - .../pip/_internal/metadata/pkg_resources.py | 278 - .../pip/_internal/models/__init__.py | 2 - .../__pycache__/__init__.cpython-312.pyc | Bin 290 -> 0 bytes .../__pycache__/candidate.cpython-312.pyc | Bin 1929 -> 0 bytes .../__pycache__/direct_url.cpython-312.pyc | Bin 11223 -> 0 bytes .../format_control.cpython-312.pyc | Bin 4251 -> 0 bytes .../models/__pycache__/index.cpython-312.pyc | Bin 1718 -> 0 bytes .../installation_report.cpython-312.pyc | Bin 2296 -> 0 bytes .../models/__pycache__/link.cpython-312.pyc | Bin 26026 -> 0 bytes .../models/__pycache__/scheme.cpython-312.pyc | Bin 1193 -> 0 bytes .../__pycache__/search_scope.cpython-312.pyc | Bin 5112 -> 0 bytes .../selection_prefs.cpython-312.pyc | Bin 1875 -> 0 bytes .../__pycache__/target_python.cpython-312.pyc | Bin 4978 -> 0 bytes .../models/__pycache__/wheel.cpython-312.pyc | Bin 5804 -> 0 bytes .../pip/_internal/models/candidate.py | 30 - .../pip/_internal/models/direct_url.py | 235 - .../pip/_internal/models/format_control.py | 78 - .../pip/_internal/models/index.py | 28 - .../_internal/models/installation_report.py | 56 - .../pip/_internal/models/link.py | 579 -- .../pip/_internal/models/scheme.py | 31 - .../pip/_internal/models/search_scope.py | 132 - .../pip/_internal/models/selection_prefs.py | 51 - .../pip/_internal/models/target_python.py | 122 - .../pip/_internal/models/wheel.py | 92 - .../pip/_internal/network/__init__.py | 2 - .../__pycache__/__init__.cpython-312.pyc | Bin 278 -> 0 bytes .../network/__pycache__/auth.cpython-312.pyc | Bin 22020 -> 0 bytes .../network/__pycache__/cache.cpython-312.pyc | Bin 6542 -> 0 bytes .../__pycache__/download.cpython-312.pyc | Bin 8577 -> 0 bytes .../__pycache__/lazy_wheel.cpython-312.pyc | Bin 11687 -> 0 bytes .../__pycache__/session.cpython-312.pyc | Bin 18798 -> 0 bytes .../network/__pycache__/utils.cpython-312.pyc | Bin 2277 -> 0 bytes .../__pycache__/xmlrpc.cpython-312.pyc | Bin 2973 -> 0 bytes .../pip/_internal/network/auth.py | 561 -- .../pip/_internal/network/cache.py | 106 - .../pip/_internal/network/download.py | 186 - .../pip/_internal/network/lazy_wheel.py | 210 - .../pip/_internal/network/session.py | 520 - .../pip/_internal/network/utils.py | 96 - .../pip/_internal/network/xmlrpc.py | 62 - .../pip/_internal/operations/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 221 -> 0 bytes .../__pycache__/check.cpython-312.pyc | Bin 7603 -> 0 bytes .../__pycache__/freeze.cpython-312.pyc | Bin 10141 -> 0 bytes .../__pycache__/prepare.cpython-312.pyc | Bin 25771 -> 0 bytes .../_internal/operations/build/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 227 -> 0 bytes .../__pycache__/build_tracker.cpython-312.pyc | Bin 7847 -> 0 bytes .../__pycache__/metadata.cpython-312.pyc | Bin 1904 -> 0 bytes .../metadata_editable.cpython-312.pyc | Bin 1938 -> 0 bytes .../metadata_legacy.cpython-312.pyc | Bin 3089 -> 0 bytes .../build/__pycache__/wheel.cpython-312.pyc | Bin 1708 -> 0 bytes .../wheel_editable.cpython-312.pyc | Bin 2049 -> 0 bytes .../__pycache__/wheel_legacy.cpython-312.pyc | Bin 3953 -> 0 bytes .../operations/build/build_tracker.py | 139 - .../_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 | 187 - .../pip/_internal/operations/freeze.py | 255 - .../_internal/operations/install/__init__.py | 2 - .../__pycache__/__init__.cpython-312.pyc | Bin 290 -> 0 bytes .../editable_legacy.cpython-312.pyc | Bin 1841 -> 0 bytes .../install/__pycache__/wheel.cpython-312.pyc | Bin 33883 -> 0 bytes .../operations/install/editable_legacy.py | 46 - .../pip/_internal/operations/install/wheel.py | 734 -- .../pip/_internal/operations/prepare.py | 730 -- .../site-packages/pip/_internal/pyproject.py | 179 - .../pip/_internal/req/__init__.py | 92 - .../req/__pycache__/__init__.cpython-312.pyc | Bin 3767 -> 0 bytes .../__pycache__/constructors.cpython-312.pyc | Bin 21606 -> 0 bytes .../req/__pycache__/req_file.cpython-312.pyc | Bin 21485 -> 0 bytes .../__pycache__/req_install.cpython-312.pyc | Bin 38438 -> 0 bytes .../req/__pycache__/req_set.cpython-312.pyc | Bin 7242 -> 0 bytes .../__pycache__/req_uninstall.cpython-312.pyc | Bin 33001 -> 0 bytes .../pip/_internal/req/constructors.py | 576 -- .../pip/_internal/req/req_file.py | 554 -- .../pip/_internal/req/req_install.py | 923 -- .../pip/_internal/req/req_set.py | 119 - .../pip/_internal/req/req_uninstall.py | 649 -- .../pip/_internal/resolution/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 221 -> 0 bytes .../__pycache__/base.cpython-312.pyc | Bin 1209 -> 0 bytes .../pip/_internal/resolution/base.py | 20 - .../_internal/resolution/legacy/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 228 -> 0 bytes .../__pycache__/resolver.cpython-312.pyc | Bin 22463 -> 0 bytes .../_internal/resolution/legacy/resolver.py | 598 -- .../resolution/resolvelib/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 232 -> 0 bytes .../__pycache__/base.cpython-312.pyc | Bin 8361 -> 0 bytes .../__pycache__/candidates.cpython-312.pyc | Bin 30422 -> 0 bytes .../__pycache__/factory.cpython-312.pyc | Bin 32138 -> 0 bytes .../found_candidates.cpython-312.pyc | Bin 6232 -> 0 bytes .../__pycache__/provider.cpython-312.pyc | Bin 10402 -> 0 bytes .../__pycache__/reporter.cpython-312.pyc | Bin 4959 -> 0 bytes .../__pycache__/requirements.cpython-312.pyc | Bin 11453 -> 0 bytes .../__pycache__/resolver.cpython-312.pyc | Bin 12375 -> 0 bytes .../_internal/resolution/resolvelib/base.py | 141 - .../resolution/resolvelib/candidates.py | 597 -- .../resolution/resolvelib/factory.py | 812 -- .../resolution/resolvelib/found_candidates.py | 155 - .../resolution/resolvelib/provider.py | 255 - .../resolution/resolvelib/reporter.py | 80 - .../resolution/resolvelib/requirements.py | 166 - .../resolution/resolvelib/resolver.py | 317 - .../pip/_internal/self_outdated_check.py | 248 - .../pip/_internal/utils/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 216 -> 0 bytes .../__pycache__/_jaraco_text.cpython-312.pyc | Bin 4557 -> 0 bytes .../utils/__pycache__/_log.cpython-312.pyc | Bin 1887 -> 0 bytes .../utils/__pycache__/appdirs.cpython-312.pyc | Bin 2431 -> 0 bytes .../utils/__pycache__/compat.cpython-312.pyc | Bin 2234 -> 0 bytes .../compatibility_tags.cpython-312.pyc | Bin 5582 -> 0 bytes .../__pycache__/datetime.cpython-312.pyc | Bin 705 -> 0 bytes .../__pycache__/deprecation.cpython-312.pyc | Bin 4207 -> 0 bytes .../direct_url_helpers.cpython-312.pyc | Bin 3584 -> 0 bytes .../__pycache__/egg_link.cpython-312.pyc | Bin 3247 -> 0 bytes .../__pycache__/encoding.cpython-312.pyc | Bin 2179 -> 0 bytes .../__pycache__/entrypoints.cpython-312.pyc | Bin 4014 -> 0 bytes .../__pycache__/filesystem.cpython-312.pyc | Bin 7479 -> 0 bytes .../__pycache__/filetypes.cpython-312.pyc | Bin 1185 -> 0 bytes .../utils/__pycache__/glibc.cpython-312.pyc | Bin 2363 -> 0 bytes .../utils/__pycache__/hashes.cpython-312.pyc | Bin 7575 -> 0 bytes .../utils/__pycache__/logging.cpython-312.pyc | Bin 13578 -> 0 bytes .../utils/__pycache__/misc.cpython-312.pyc | Bin 34142 -> 0 bytes .../utils/__pycache__/models.cpython-312.pyc | Bin 2733 -> 0 bytes .../__pycache__/packaging.cpython-312.pyc | Bin 2604 -> 0 bytes .../setuptools_build.cpython-312.pyc | Bin 4571 -> 0 bytes .../__pycache__/subprocess.cpython-312.pyc | Bin 8739 -> 0 bytes .../__pycache__/temp_dir.cpython-312.pyc | Bin 12083 -> 0 bytes .../__pycache__/unpacking.cpython-312.pyc | Bin 11129 -> 0 bytes .../utils/__pycache__/urls.cpython-312.pyc | Bin 2426 -> 0 bytes .../__pycache__/virtualenv.cpython-312.pyc | Bin 4501 -> 0 bytes .../utils/__pycache__/wheel.cpython-312.pyc | Bin 5947 -> 0 bytes .../pip/_internal/utils/_jaraco_text.py | 109 - .../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/egg_link.py | 80 - .../pip/_internal/utils/encoding.py | 36 - .../pip/_internal/utils/entrypoints.py | 84 - .../pip/_internal/utils/filesystem.py | 153 - .../pip/_internal/utils/filetypes.py | 27 - .../pip/_internal/utils/glibc.py | 88 - .../pip/_internal/utils/hashes.py | 151 - .../pip/_internal/utils/logging.py | 348 - .../site-packages/pip/_internal/utils/misc.py | 783 -- .../pip/_internal/utils/models.py | 39 - .../pip/_internal/utils/packaging.py | 57 - .../pip/_internal/utils/setuptools_build.py | 146 - .../pip/_internal/utils/subprocess.py | 260 - .../pip/_internal/utils/temp_dir.py | 296 - .../pip/_internal/utils/unpacking.py | 257 - .../site-packages/pip/_internal/utils/urls.py | 62 - .../pip/_internal/utils/virtualenv.py | 104 - .../pip/_internal/utils/wheel.py | 134 - .../pip/_internal/vcs/__init__.py | 15 - .../vcs/__pycache__/__init__.cpython-312.pyc | Bin 555 -> 0 bytes .../vcs/__pycache__/bazaar.cpython-312.pyc | Bin 5047 -> 0 bytes .../vcs/__pycache__/git.cpython-312.pyc | Bin 19016 -> 0 bytes .../vcs/__pycache__/mercurial.cpython-312.pyc | Bin 7636 -> 0 bytes .../__pycache__/subversion.cpython-312.pyc | Bin 12508 -> 0 bytes .../versioncontrol.cpython-312.pyc | Bin 29034 -> 0 bytes .../site-packages/pip/_internal/vcs/bazaar.py | 112 - .../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 | 354 - .../site-packages/pip/_vendor/__init__.py | 121 - .../__pycache__/__init__.cpython-312.pyc | Bin 4717 -> 0 bytes .../_vendor/__pycache__/six.cpython-312.pyc | Bin 41294 -> 0 bytes .../typing_extensions.cpython-312.pyc | Bin 122074 -> 0 bytes .../pip/_vendor/cachecontrol/__init__.py | 28 - .../__pycache__/__init__.cpython-312.pyc | Bin 927 -> 0 bytes .../__pycache__/_cmd.cpython-312.pyc | Bin 2671 -> 0 bytes .../__pycache__/adapter.cpython-312.pyc | Bin 6489 -> 0 bytes .../__pycache__/cache.cpython-312.pyc | Bin 3834 -> 0 bytes .../__pycache__/controller.cpython-312.pyc | Bin 16192 -> 0 bytes .../__pycache__/filewrapper.cpython-312.pyc | Bin 4372 -> 0 bytes .../__pycache__/heuristics.cpython-312.pyc | Bin 6719 -> 0 bytes .../__pycache__/serialize.cpython-312.pyc | Bin 6430 -> 0 bytes .../__pycache__/wrapper.cpython-312.pyc | Bin 1699 -> 0 bytes .../pip/_vendor/cachecontrol/_cmd.py | 70 - .../pip/_vendor/cachecontrol/adapter.py | 161 - .../pip/_vendor/cachecontrol/cache.py | 74 - .../_vendor/cachecontrol/caches/__init__.py | 8 - .../__pycache__/__init__.cpython-312.pyc | Bin 460 -> 0 bytes .../__pycache__/file_cache.cpython-312.pyc | Bin 7735 -> 0 bytes .../__pycache__/redis_cache.cpython-312.pyc | Bin 2763 -> 0 bytes .../_vendor/cachecontrol/caches/file_cache.py | 181 - .../cachecontrol/caches/redis_cache.py | 48 - .../pip/_vendor/cachecontrol/controller.py | 494 - .../pip/_vendor/cachecontrol/filewrapper.py | 119 - .../pip/_vendor/cachecontrol/heuristics.py | 154 - .../pip/_vendor/cachecontrol/serialize.py | 206 - .../pip/_vendor/cachecontrol/wrapper.py | 43 - .../pip/_vendor/certifi/__init__.py | 4 - .../pip/_vendor/certifi/__main__.py | 12 - .../__pycache__/__init__.cpython-312.pyc | Bin 343 -> 0 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 670 -> 0 bytes .../certifi/__pycache__/core.cpython-312.pyc | Bin 3352 -> 0 bytes .../pip/_vendor/certifi/cacert.pem | 4635 --------- .../site-packages/pip/_vendor/certifi/core.py | 119 - .../pip/_vendor/chardet/__init__.py | 115 - .../__pycache__/__init__.cpython-312.pyc | Bin 4593 -> 0 bytes .../__pycache__/big5freq.cpython-312.pyc | Bin 27224 -> 0 bytes .../__pycache__/big5prober.cpython-312.pyc | Bin 1412 -> 0 bytes .../chardistribution.cpython-312.pyc | Bin 9663 -> 0 bytes .../charsetgroupprober.cpython-312.pyc | Bin 4147 -> 0 bytes .../__pycache__/charsetprober.cpython-312.pyc | Bin 5043 -> 0 bytes .../codingstatemachine.cpython-312.pyc | Bin 3903 -> 0 bytes .../codingstatemachinedict.cpython-312.pyc | Bin 814 -> 0 bytes .../__pycache__/cp949prober.cpython-312.pyc | Bin 1421 -> 0 bytes .../chardet/__pycache__/enums.cpython-312.pyc | Bin 3021 -> 0 bytes .../__pycache__/escprober.cpython-312.pyc | Bin 4591 -> 0 bytes .../chardet/__pycache__/escsm.cpython-312.pyc | Bin 15335 -> 0 bytes .../__pycache__/eucjpprober.cpython-312.pyc | Bin 4408 -> 0 bytes .../__pycache__/euckrfreq.cpython-312.pyc | Bin 12107 -> 0 bytes .../__pycache__/euckrprober.cpython-312.pyc | Bin 1415 -> 0 bytes .../__pycache__/euctwfreq.cpython-312.pyc | Bin 27229 -> 0 bytes .../__pycache__/euctwprober.cpython-312.pyc | Bin 1415 -> 0 bytes .../__pycache__/gb2312freq.cpython-312.pyc | Bin 19151 -> 0 bytes .../__pycache__/gb2312prober.cpython-312.pyc | Bin 1428 -> 0 bytes .../__pycache__/hebrewprober.cpython-312.pyc | Bin 5847 -> 0 bytes .../__pycache__/jisfreq.cpython-312.pyc | Bin 22180 -> 0 bytes .../__pycache__/johabfreq.cpython-312.pyc | Bin 83028 -> 0 bytes .../__pycache__/johabprober.cpython-312.pyc | Bin 1419 -> 0 bytes .../__pycache__/jpcntx.cpython-312.pyc | Bin 39574 -> 0 bytes .../langbulgarianmodel.cpython-312.pyc | Bin 83147 -> 0 bytes .../langgreekmodel.cpython-312.pyc | Bin 77013 -> 0 bytes .../langhebrewmodel.cpython-312.pyc | Bin 77524 -> 0 bytes .../langhungarianmodel.cpython-312.pyc | Bin 83101 -> 0 bytes .../langrussianmodel.cpython-312.pyc | Bin 105276 -> 0 bytes .../__pycache__/langthaimodel.cpython-312.pyc | Bin 77702 -> 0 bytes .../langturkishmodel.cpython-312.pyc | Bin 77541 -> 0 bytes .../__pycache__/latin1prober.cpython-312.pyc | Bin 7027 -> 0 bytes .../macromanprober.cpython-312.pyc | Bin 7207 -> 0 bytes .../mbcharsetprober.cpython-312.pyc | Bin 3928 -> 0 bytes .../mbcsgroupprober.cpython-312.pyc | Bin 1613 -> 0 bytes .../__pycache__/mbcssm.cpython-312.pyc | Bin 38670 -> 0 bytes .../__pycache__/resultdict.cpython-312.pyc | Bin 657 -> 0 bytes .../sbcharsetprober.cpython-312.pyc | Bin 6412 -> 0 bytes .../sbcsgroupprober.cpython-312.pyc | Bin 2382 -> 0 bytes .../__pycache__/sjisprober.cpython-312.pyc | Bin 4520 -> 0 bytes .../universaldetector.cpython-312.pyc | Bin 12294 -> 0 bytes .../__pycache__/utf1632prober.cpython-312.pyc | Bin 10004 -> 0 bytes .../__pycache__/utf8prober.cpython-312.pyc | Bin 3200 -> 0 bytes .../__pycache__/version.cpython-312.pyc | Bin 513 -> 0 bytes .../pip/_vendor/chardet/big5freq.py | 386 - .../pip/_vendor/chardet/big5prober.py | 47 - .../pip/_vendor/chardet/chardistribution.py | 261 - .../pip/_vendor/chardet/charsetgroupprober.py | 106 - .../pip/_vendor/chardet/charsetprober.py | 147 - .../pip/_vendor/chardet/cli/__init__.py | 0 .../cli/__pycache__/__init__.cpython-312.pyc | Bin 220 -> 0 bytes .../__pycache__/chardetect.cpython-312.pyc | Bin 4037 -> 0 bytes .../pip/_vendor/chardet/cli/chardetect.py | 112 - .../pip/_vendor/chardet/codingstatemachine.py | 90 - .../_vendor/chardet/codingstatemachinedict.py | 19 - .../pip/_vendor/chardet/cp949prober.py | 49 - .../pip/_vendor/chardet/enums.py | 85 - .../pip/_vendor/chardet/escprober.py | 102 - .../pip/_vendor/chardet/escsm.py | 261 - .../pip/_vendor/chardet/eucjpprober.py | 102 - .../pip/_vendor/chardet/euckrfreq.py | 196 - .../pip/_vendor/chardet/euckrprober.py | 47 - .../pip/_vendor/chardet/euctwfreq.py | 388 - .../pip/_vendor/chardet/euctwprober.py | 47 - .../pip/_vendor/chardet/gb2312freq.py | 284 - .../pip/_vendor/chardet/gb2312prober.py | 47 - .../pip/_vendor/chardet/hebrewprober.py | 316 - .../pip/_vendor/chardet/jisfreq.py | 325 - .../pip/_vendor/chardet/johabfreq.py | 2382 ----- .../pip/_vendor/chardet/johabprober.py | 47 - .../pip/_vendor/chardet/jpcntx.py | 238 - .../pip/_vendor/chardet/langbulgarianmodel.py | 4649 --------- .../pip/_vendor/chardet/langgreekmodel.py | 4397 --------- .../pip/_vendor/chardet/langhebrewmodel.py | 4380 --------- .../pip/_vendor/chardet/langhungarianmodel.py | 4649 --------- .../pip/_vendor/chardet/langrussianmodel.py | 5725 ----------- .../pip/_vendor/chardet/langthaimodel.py | 4380 --------- .../pip/_vendor/chardet/langturkishmodel.py | 4380 --------- .../pip/_vendor/chardet/latin1prober.py | 147 - .../pip/_vendor/chardet/macromanprober.py | 162 - .../pip/_vendor/chardet/mbcharsetprober.py | 95 - .../pip/_vendor/chardet/mbcsgroupprober.py | 57 - .../pip/_vendor/chardet/mbcssm.py | 661 -- .../pip/_vendor/chardet/metadata/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 225 -> 0 bytes .../__pycache__/languages.cpython-312.pyc | Bin 9780 -> 0 bytes .../pip/_vendor/chardet/metadata/languages.py | 352 - .../pip/_vendor/chardet/resultdict.py | 16 - .../pip/_vendor/chardet/sbcharsetprober.py | 162 - .../pip/_vendor/chardet/sbcsgroupprober.py | 88 - .../pip/_vendor/chardet/sjisprober.py | 105 - .../pip/_vendor/chardet/universaldetector.py | 362 - .../pip/_vendor/chardet/utf1632prober.py | 225 - .../pip/_vendor/chardet/utf8prober.py | 82 - .../pip/_vendor/chardet/version.py | 9 - .../pip/_vendor/colorama/__init__.py | 7 - .../__pycache__/__init__.cpython-312.pyc | Bin 517 -> 0 bytes .../colorama/__pycache__/ansi.cpython-312.pyc | Bin 3975 -> 0 bytes .../__pycache__/ansitowin32.cpython-312.pyc | Bin 16446 -> 0 bytes .../__pycache__/initialise.cpython-312.pyc | Bin 3575 -> 0 bytes .../__pycache__/win32.cpython-312.pyc | Bin 8151 -> 0 bytes .../__pycache__/winterm.cpython-312.pyc | Bin 9113 -> 0 bytes .../pip/_vendor/colorama/ansi.py | 102 - .../pip/_vendor/colorama/ansitowin32.py | 277 - .../pip/_vendor/colorama/initialise.py | 121 - .../pip/_vendor/colorama/tests/__init__.py | 1 - .../__pycache__/__init__.cpython-312.pyc | Bin 223 -> 0 bytes .../__pycache__/ansi_test.cpython-312.pyc | Bin 5492 -> 0 bytes .../ansitowin32_test.cpython-312.pyc | Bin 18128 -> 0 bytes .../initialise_test.cpython-312.pyc | Bin 11773 -> 0 bytes .../__pycache__/isatty_test.cpython-312.pyc | Bin 4929 -> 0 bytes .../tests/__pycache__/utils.cpython-312.pyc | Bin 2513 -> 0 bytes .../__pycache__/winterm_test.cpython-312.pyc | Bin 6637 -> 0 bytes .../pip/_vendor/colorama/tests/ansi_test.py | 76 - .../colorama/tests/ansitowin32_test.py | 294 - .../_vendor/colorama/tests/initialise_test.py | 189 - .../pip/_vendor/colorama/tests/isatty_test.py | 57 - .../pip/_vendor/colorama/tests/utils.py | 49 - .../_vendor/colorama/tests/winterm_test.py | 131 - .../pip/_vendor/colorama/win32.py | 180 - .../pip/_vendor/colorama/winterm.py | 195 - .../pip/_vendor/distlib/__init__.py | 33 - .../__pycache__/__init__.cpython-312.pyc | Bin 1294 -> 0 bytes .../__pycache__/compat.cpython-312.pyc | Bin 45630 -> 0 bytes .../__pycache__/database.cpython-312.pyc | Bin 66052 -> 0 bytes .../distlib/__pycache__/index.cpython-312.pyc | Bin 24391 -> 0 bytes .../__pycache__/locators.cpython-312.pyc | Bin 60183 -> 0 bytes .../__pycache__/manifest.cpython-312.pyc | Bin 15150 -> 0 bytes .../__pycache__/markers.cpython-312.pyc | Bin 7707 -> 0 bytes .../__pycache__/metadata.cpython-312.pyc | Bin 41824 -> 0 bytes .../__pycache__/resources.cpython-312.pyc | Bin 17350 -> 0 bytes .../__pycache__/scripts.cpython-312.pyc | Bin 19605 -> 0 bytes .../distlib/__pycache__/util.cpython-312.pyc | Bin 88281 -> 0 bytes .../__pycache__/version.cpython-312.pyc | Bin 30391 -> 0 bytes .../distlib/__pycache__/wheel.cpython-312.pyc | Bin 51886 -> 0 bytes .../pip/_vendor/distlib/compat.py | 1138 --- .../pip/_vendor/distlib/database.py | 1359 --- .../pip/_vendor/distlib/index.py | 508 - .../pip/_vendor/distlib/locators.py | 1303 --- .../pip/_vendor/distlib/manifest.py | 384 - .../pip/_vendor/distlib/markers.py | 167 - .../pip/_vendor/distlib/metadata.py | 1068 -- .../pip/_vendor/distlib/resources.py | 358 - .../pip/_vendor/distlib/scripts.py | 452 - .../site-packages/pip/_vendor/distlib/util.py | 2025 ---- .../pip/_vendor/distlib/version.py | 751 -- .../pip/_vendor/distlib/wheel.py | 1099 --- .../pip/_vendor/distro/__init__.py | 54 - .../pip/_vendor/distro/__main__.py | 4 - .../__pycache__/__init__.cpython-312.pyc | Bin 985 -> 0 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 317 -> 0 bytes .../distro/__pycache__/distro.cpython-312.pyc | Bin 53779 -> 0 bytes .../pip/_vendor/distro/distro.py | 1399 --- .../pip/_vendor/idna/__init__.py | 44 - .../idna/__pycache__/__init__.cpython-312.pyc | Bin 906 -> 0 bytes .../idna/__pycache__/codec.cpython-312.pyc | Bin 4658 -> 0 bytes .../idna/__pycache__/compat.cpython-312.pyc | Bin 912 -> 0 bytes .../idna/__pycache__/core.cpython-312.pyc | Bin 16307 -> 0 bytes .../idna/__pycache__/idnadata.cpython-312.pyc | Bin 38407 -> 0 bytes .../__pycache__/intranges.cpython-312.pyc | Bin 2663 -> 0 bytes .../__pycache__/package_data.cpython-312.pyc | Bin 241 -> 0 bytes .../__pycache__/uts46data.cpython-312.pyc | Bin 158895 -> 0 bytes .../site-packages/pip/_vendor/idna/codec.py | 112 - .../site-packages/pip/_vendor/idna/compat.py | 13 - .../site-packages/pip/_vendor/idna/core.py | 400 - .../pip/_vendor/idna/idnadata.py | 2151 ---- .../pip/_vendor/idna/intranges.py | 54 - .../pip/_vendor/idna/package_data.py | 2 - .../pip/_vendor/idna/uts46data.py | 8600 ---------------- .../pip/_vendor/msgpack/__init__.py | 57 - .../__pycache__/__init__.cpython-312.pyc | Bin 1856 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 2050 -> 0 bytes .../msgpack/__pycache__/ext.cpython-312.pyc | Bin 8693 -> 0 bytes .../__pycache__/fallback.cpython-312.pyc | Bin 43601 -> 0 bytes .../pip/_vendor/msgpack/exceptions.py | 48 - .../site-packages/pip/_vendor/msgpack/ext.py | 193 - .../pip/_vendor/msgpack/fallback.py | 1010 -- .../pip/_vendor/packaging/__about__.py | 26 - .../pip/_vendor/packaging/__init__.py | 25 - .../__pycache__/__about__.cpython-312.pyc | Bin 655 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 491 -> 0 bytes .../__pycache__/_manylinux.cpython-312.pyc | Bin 12101 -> 0 bytes .../__pycache__/_musllinux.cpython-312.pyc | Bin 6935 -> 0 bytes .../__pycache__/_structures.cpython-312.pyc | Bin 3266 -> 0 bytes .../__pycache__/markers.cpython-312.pyc | Bin 14083 -> 0 bytes .../__pycache__/requirements.cpython-312.pyc | Bin 6971 -> 0 bytes .../__pycache__/specifiers.cpython-312.pyc | Bin 31272 -> 0 bytes .../__pycache__/tags.cpython-312.pyc | Bin 18981 -> 0 bytes .../__pycache__/utils.cpython-312.pyc | Bin 5893 -> 0 bytes .../__pycache__/version.cpython-312.pyc | Bin 19964 -> 0 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/pkg_resources/__init__.py | 3361 ------- .../__pycache__/__init__.cpython-312.pyc | Bin 146499 -> 0 bytes .../pip/_vendor/platformdirs/__init__.py | 566 -- .../pip/_vendor/platformdirs/__main__.py | 53 - .../__pycache__/__init__.cpython-312.pyc | Bin 18054 -> 0 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 1971 -> 0 bytes .../__pycache__/android.cpython-312.pyc | Bin 9469 -> 0 bytes .../__pycache__/api.cpython-312.pyc | Bin 9697 -> 0 bytes .../__pycache__/macos.cpython-312.pyc | Bin 5662 -> 0 bytes .../__pycache__/unix.cpython-312.pyc | Bin 12466 -> 0 bytes .../__pycache__/version.cpython-312.pyc | Bin 336 -> 0 bytes .../__pycache__/windows.cpython-312.pyc | Bin 13024 -> 0 bytes .../pip/_vendor/platformdirs/android.py | 210 - .../pip/_vendor/platformdirs/api.py | 223 - .../pip/_vendor/platformdirs/macos.py | 91 - .../pip/_vendor/platformdirs/unix.py | 223 - .../pip/_vendor/platformdirs/version.py | 4 - .../pip/_vendor/platformdirs/windows.py | 255 - .../pip/_vendor/pygments/__init__.py | 82 - .../pip/_vendor/pygments/__main__.py | 17 - .../__pycache__/__init__.cpython-312.pyc | Bin 3514 -> 0 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 760 -> 0 bytes .../__pycache__/cmdline.cpython-312.pyc | Bin 26631 -> 0 bytes .../__pycache__/console.cpython-312.pyc | Bin 2652 -> 0 bytes .../__pycache__/filter.cpython-312.pyc | Bin 3258 -> 0 bytes .../__pycache__/formatter.cpython-312.pyc | Bin 4595 -> 0 bytes .../__pycache__/lexer.cpython-312.pyc | Bin 38355 -> 0 bytes .../__pycache__/modeline.cpython-312.pyc | Bin 1594 -> 0 bytes .../__pycache__/plugin.cpython-312.pyc | Bin 3422 -> 0 bytes .../__pycache__/regexopt.cpython-312.pyc | Bin 4107 -> 0 bytes .../__pycache__/scanner.cpython-312.pyc | Bin 4782 -> 0 bytes .../__pycache__/sphinxext.cpython-312.pyc | Bin 11072 -> 0 bytes .../__pycache__/style.cpython-312.pyc | Bin 6700 -> 0 bytes .../__pycache__/token.cpython-312.pyc | Bin 8168 -> 0 bytes .../__pycache__/unistring.cpython-312.pyc | Bin 33014 -> 0 bytes .../pygments/__pycache__/util.cpython-312.pyc | Bin 14007 -> 0 bytes .../pip/_vendor/pygments/cmdline.py | 668 -- .../pip/_vendor/pygments/console.py | 70 - .../pip/_vendor/pygments/filter.py | 71 - .../pip/_vendor/pygments/filters/__init__.py | 940 -- .../__pycache__/__init__.cpython-312.pyc | Bin 37962 -> 0 bytes .../pip/_vendor/pygments/formatter.py | 124 - .../_vendor/pygments/formatters/__init__.py | 158 - .../__pycache__/__init__.cpython-312.pyc | Bin 6952 -> 0 bytes .../__pycache__/_mapping.cpython-312.pyc | Bin 4241 -> 0 bytes .../__pycache__/bbcode.cpython-312.pyc | Bin 4220 -> 0 bytes .../__pycache__/groff.cpython-312.pyc | Bin 7290 -> 0 bytes .../__pycache__/html.cpython-312.pyc | Bin 40598 -> 0 bytes .../__pycache__/img.cpython-312.pyc | Bin 27069 -> 0 bytes .../__pycache__/irc.cpython-312.pyc | Bin 6091 -> 0 bytes .../__pycache__/latex.cpython-312.pyc | Bin 19980 -> 0 bytes .../__pycache__/other.cpython-312.pyc | Bin 6910 -> 0 bytes .../__pycache__/pangomarkup.cpython-312.pyc | Bin 2956 -> 0 bytes .../__pycache__/rtf.cpython-312.pyc | Bin 6152 -> 0 bytes .../__pycache__/svg.cpython-312.pyc | Bin 9092 -> 0 bytes .../__pycache__/terminal.cpython-312.pyc | Bin 5855 -> 0 bytes .../__pycache__/terminal256.cpython-312.pyc | Bin 15183 -> 0 bytes .../_vendor/pygments/formatters/_mapping.py | 23 - .../pip/_vendor/pygments/formatters/bbcode.py | 108 - .../pip/_vendor/pygments/formatters/groff.py | 170 - .../pip/_vendor/pygments/formatters/html.py | 989 -- .../pip/_vendor/pygments/formatters/img.py | 645 -- .../pip/_vendor/pygments/formatters/irc.py | 154 - .../pip/_vendor/pygments/formatters/latex.py | 521 - .../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 | 943 -- .../pip/_vendor/pygments/lexers/__init__.py | 362 - .../__pycache__/__init__.cpython-312.pyc | Bin 14678 -> 0 bytes .../__pycache__/_mapping.cpython-312.pyc | Bin 64430 -> 0 bytes .../lexers/__pycache__/python.cpython-312.pyc | Bin 42665 -> 0 bytes .../pip/_vendor/pygments/lexers/_mapping.py | 559 -- .../pip/_vendor/pygments/lexers/python.py | 1198 --- .../pip/_vendor/pygments/modeline.py | 43 - .../pip/_vendor/pygments/plugin.py | 88 - .../pip/_vendor/pygments/regexopt.py | 91 - .../pip/_vendor/pygments/scanner.py | 104 - .../pip/_vendor/pygments/sphinxext.py | 217 - .../pip/_vendor/pygments/style.py | 197 - .../pip/_vendor/pygments/styles/__init__.py | 103 - .../__pycache__/__init__.cpython-312.pyc | Bin 4474 -> 0 bytes .../pip/_vendor/pygments/token.py | 213 - .../pip/_vendor/pygments/unistring.py | 153 - .../pip/_vendor/pygments/util.py | 330 - .../pip/_vendor/pyparsing/__init__.py | 322 - .../__pycache__/__init__.cpython-312.pyc | Bin 7937 -> 0 bytes .../__pycache__/actions.cpython-312.pyc | Bin 8421 -> 0 bytes .../__pycache__/common.cpython-312.pyc | Bin 13440 -> 0 bytes .../__pycache__/core.cpython-312.pyc | Bin 267734 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 13020 -> 0 bytes .../__pycache__/helpers.cpython-312.pyc | Bin 48527 -> 0 bytes .../__pycache__/results.cpython-312.pyc | Bin 34136 -> 0 bytes .../__pycache__/testing.cpython-312.pyc | Bin 17214 -> 0 bytes .../__pycache__/unicode.cpython-312.pyc | Bin 13210 -> 0 bytes .../__pycache__/util.cpython-312.pyc | Bin 14930 -> 0 bytes .../pip/_vendor/pyparsing/actions.py | 217 - .../pip/_vendor/pyparsing/common.py | 432 - .../pip/_vendor/pyparsing/core.py | 6115 ------------ .../pip/_vendor/pyparsing/diagram/__init__.py | 656 -- .../__pycache__/__init__.cpython-312.pyc | Bin 26839 -> 0 bytes .../pip/_vendor/pyparsing/exceptions.py | 299 - .../pip/_vendor/pyparsing/helpers.py | 1100 --- .../pip/_vendor/pyparsing/results.py | 796 -- .../pip/_vendor/pyparsing/testing.py | 331 - .../pip/_vendor/pyparsing/unicode.py | 361 - .../pip/_vendor/pyparsing/util.py | 284 - .../pip/_vendor/pyproject_hooks/__init__.py | 23 - .../__pycache__/__init__.cpython-312.pyc | Bin 639 -> 0 bytes .../__pycache__/_compat.cpython-312.pyc | Bin 400 -> 0 bytes .../__pycache__/_impl.cpython-312.pyc | Bin 14751 -> 0 bytes .../pip/_vendor/pyproject_hooks/_compat.py | 8 - .../pip/_vendor/pyproject_hooks/_impl.py | 330 - .../pyproject_hooks/_in_process/__init__.py | 18 - .../__pycache__/__init__.cpython-312.pyc | Bin 1106 -> 0 bytes .../__pycache__/_in_process.cpython-312.pyc | Bin 14423 -> 0 bytes .../_in_process/_in_process.py | 353 - .../pip/_vendor/requests/__init__.py | 182 - .../__pycache__/__init__.cpython-312.pyc | Bin 5479 -> 0 bytes .../__pycache__/__version__.cpython-312.pyc | Bin 610 -> 0 bytes .../_internal_utils.cpython-312.pyc | Bin 2050 -> 0 bytes .../__pycache__/adapters.cpython-312.pyc | Bin 21306 -> 0 bytes .../requests/__pycache__/api.cpython-312.pyc | Bin 7230 -> 0 bytes .../requests/__pycache__/auth.cpython-312.pyc | Bin 13949 -> 0 bytes .../__pycache__/certs.cpython-312.pyc | Bin 948 -> 0 bytes .../__pycache__/compat.cpython-312.pyc | Bin 1533 -> 0 bytes .../__pycache__/cookies.cpython-312.pyc | Bin 25272 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 7073 -> 0 bytes .../requests/__pycache__/help.cpython-312.pyc | Bin 4338 -> 0 bytes .../__pycache__/hooks.cpython-312.pyc | Bin 1078 -> 0 bytes .../__pycache__/models.cpython-312.pyc | Bin 35474 -> 0 bytes .../__pycache__/packages.cpython-312.pyc | Bin 798 -> 0 bytes .../__pycache__/sessions.cpython-312.pyc | Bin 27783 -> 0 bytes .../__pycache__/status_codes.cpython-312.pyc | Bin 5985 -> 0 bytes .../__pycache__/structures.cpython-312.pyc | Bin 5643 -> 0 bytes .../__pycache__/utils.cpython-312.pyc | Bin 36295 -> 0 bytes .../pip/_vendor/requests/__version__.py | 14 - .../pip/_vendor/requests/_internal_utils.py | 50 - .../pip/_vendor/requests/adapters.py | 538 - .../site-packages/pip/_vendor/requests/api.py | 157 - .../pip/_vendor/requests/auth.py | 315 - .../pip/_vendor/requests/certs.py | 24 - .../pip/_vendor/requests/compat.py | 67 - .../pip/_vendor/requests/cookies.py | 561 -- .../pip/_vendor/requests/exceptions.py | 141 - .../pip/_vendor/requests/help.py | 131 - .../pip/_vendor/requests/hooks.py | 33 - .../pip/_vendor/requests/models.py | 1034 -- .../pip/_vendor/requests/packages.py | 16 - .../pip/_vendor/requests/sessions.py | 833 -- .../pip/_vendor/requests/status_codes.py | 128 - .../pip/_vendor/requests/structures.py | 99 - .../pip/_vendor/requests/utils.py | 1094 --- .../pip/_vendor/resolvelib/__init__.py | 26 - .../__pycache__/__init__.cpython-312.pyc | Bin 660 -> 0 bytes .../__pycache__/providers.cpython-312.pyc | Bin 6877 -> 0 bytes .../__pycache__/reporters.cpython-312.pyc | Bin 2680 -> 0 bytes .../__pycache__/resolvers.cpython-312.pyc | Bin 25923 -> 0 bytes .../__pycache__/structs.cpython-312.pyc | Bin 10532 -> 0 bytes .../pip/_vendor/resolvelib/compat/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 226 -> 0 bytes .../collections_abc.cpython-312.pyc | Bin 446 -> 0 bytes .../resolvelib/compat/collections_abc.py | 6 - .../pip/_vendor/resolvelib/providers.py | 133 - .../pip/_vendor/resolvelib/reporters.py | 43 - .../pip/_vendor/resolvelib/resolvers.py | 547 -- .../pip/_vendor/resolvelib/structs.py | 170 - .../pip/_vendor/rich/__init__.py | 177 - .../pip/_vendor/rich/__main__.py | 274 - .../rich/__pycache__/__init__.cpython-312.pyc | Bin 7041 -> 0 bytes .../rich/__pycache__/__main__.cpython-312.pyc | Bin 10330 -> 0 bytes .../__pycache__/_cell_widths.cpython-312.pyc | Bin 7847 -> 0 bytes .../__pycache__/_emoji_codes.cpython-312.pyc | Bin 206002 -> 0 bytes .../_emoji_replace.cpython-312.pyc | Bin 1755 -> 0 bytes .../_export_format.cpython-312.pyc | Bin 2347 -> 0 bytes .../__pycache__/_extension.cpython-312.pyc | Bin 563 -> 0 bytes .../rich/__pycache__/_fileno.cpython-312.pyc | Bin 881 -> 0 bytes .../rich/__pycache__/_inspect.cpython-312.pyc | Bin 12103 -> 0 bytes .../__pycache__/_log_render.cpython-312.pyc | Bin 4173 -> 0 bytes .../rich/__pycache__/_loop.cpython-312.pyc | Bin 1911 -> 0 bytes .../__pycache__/_null_file.cpython-312.pyc | Bin 3646 -> 0 bytes .../__pycache__/_palettes.cpython-312.pyc | Bin 5186 -> 0 bytes .../rich/__pycache__/_pick.cpython-312.pyc | Bin 752 -> 0 bytes .../rich/__pycache__/_ratio.cpython-312.pyc | Bin 6605 -> 0 bytes .../__pycache__/_spinners.cpython-312.pyc | Bin 13205 -> 0 bytes .../rich/__pycache__/_stack.cpython-312.pyc | Bin 991 -> 0 bytes .../rich/__pycache__/_timer.cpython-312.pyc | Bin 891 -> 0 bytes .../_win32_console.cpython-312.pyc | Bin 29002 -> 0 bytes .../rich/__pycache__/_windows.cpython-312.pyc | Bin 2516 -> 0 bytes .../_windows_renderer.cpython-312.pyc | Bin 3599 -> 0 bytes .../rich/__pycache__/_wrap.cpython-312.pyc | Bin 2386 -> 0 bytes .../rich/__pycache__/abc.cpython-312.pyc | Bin 1634 -> 0 bytes .../rich/__pycache__/align.cpython-312.pyc | Bin 12348 -> 0 bytes .../rich/__pycache__/ansi.cpython-312.pyc | Bin 9132 -> 0 bytes .../rich/__pycache__/bar.cpython-312.pyc | Bin 4298 -> 0 bytes .../rich/__pycache__/box.cpython-312.pyc | Bin 11884 -> 0 bytes .../rich/__pycache__/cells.cpython-312.pyc | Bin 5644 -> 0 bytes .../rich/__pycache__/color.cpython-312.pyc | Bin 26596 -> 0 bytes .../__pycache__/color_triplet.cpython-312.pyc | Bin 1727 -> 0 bytes .../rich/__pycache__/columns.cpython-312.pyc | Bin 8613 -> 0 bytes .../rich/__pycache__/console.cpython-312.pyc | Bin 113819 -> 0 bytes .../__pycache__/constrain.cpython-312.pyc | Bin 2284 -> 0 bytes .../__pycache__/containers.cpython-312.pyc | Bin 9252 -> 0 bytes .../rich/__pycache__/control.cpython-312.pyc | Bin 10955 -> 0 bytes .../default_styles.cpython-312.pyc | Bin 10399 -> 0 bytes .../rich/__pycache__/diagnose.cpython-312.pyc | Bin 1513 -> 0 bytes .../rich/__pycache__/emoji.cpython-312.pyc | Bin 4235 -> 0 bytes .../rich/__pycache__/errors.cpython-312.pyc | Bin 1871 -> 0 bytes .../__pycache__/file_proxy.cpython-312.pyc | Bin 3603 -> 0 bytes .../rich/__pycache__/filesize.cpython-312.pyc | Bin 3108 -> 0 bytes .../__pycache__/highlighter.cpython-312.pyc | Bin 9924 -> 0 bytes .../rich/__pycache__/json.cpython-312.pyc | Bin 6061 -> 0 bytes .../rich/__pycache__/jupyter.cpython-312.pyc | Bin 5235 -> 0 bytes .../rich/__pycache__/layout.cpython-312.pyc | Bin 20246 -> 0 bytes .../rich/__pycache__/live.cpython-312.pyc | Bin 19169 -> 0 bytes .../__pycache__/live_render.cpython-312.pyc | Bin 4920 -> 0 bytes .../rich/__pycache__/logging.cpython-312.pyc | Bin 13580 -> 0 bytes .../rich/__pycache__/markup.cpython-312.pyc | Bin 9324 -> 0 bytes .../rich/__pycache__/measure.cpython-312.pyc | Bin 6402 -> 0 bytes .../rich/__pycache__/padding.cpython-312.pyc | Bin 7160 -> 0 bytes .../rich/__pycache__/pager.cpython-312.pyc | Bin 1846 -> 0 bytes .../rich/__pycache__/palette.cpython-312.pyc | Bin 5340 -> 0 bytes .../rich/__pycache__/panel.cpython-312.pyc | Bin 12123 -> 0 bytes .../rich/__pycache__/pretty.cpython-312.pyc | Bin 40082 -> 0 bytes .../rich/__pycache__/progress.cpython-312.pyc | Bin 75104 -> 0 bytes .../__pycache__/progress_bar.cpython-312.pyc | Bin 10415 -> 0 bytes .../rich/__pycache__/prompt.cpython-312.pyc | Bin 14807 -> 0 bytes .../rich/__pycache__/protocol.cpython-312.pyc | Bin 1818 -> 0 bytes .../rich/__pycache__/region.cpython-312.pyc | Bin 593 -> 0 bytes .../rich/__pycache__/repr.cpython-312.pyc | Bin 6652 -> 0 bytes .../rich/__pycache__/rule.cpython-312.pyc | Bin 6594 -> 0 bytes .../rich/__pycache__/scope.cpython-312.pyc | Bin 3856 -> 0 bytes .../rich/__pycache__/screen.cpython-312.pyc | Bin 2510 -> 0 bytes .../rich/__pycache__/segment.cpython-312.pyc | Bin 28187 -> 0 bytes .../rich/__pycache__/spinner.cpython-312.pyc | Bin 6090 -> 0 bytes .../rich/__pycache__/status.cpython-312.pyc | Bin 6094 -> 0 bytes .../rich/__pycache__/style.cpython-312.pyc | Bin 33540 -> 0 bytes .../rich/__pycache__/styled.cpython-312.pyc | Bin 2165 -> 0 bytes .../rich/__pycache__/syntax.cpython-312.pyc | Bin 39638 -> 0 bytes .../rich/__pycache__/table.cpython-312.pyc | Bin 43610 -> 0 bytes .../terminal_theme.cpython-312.pyc | Bin 3374 -> 0 bytes .../rich/__pycache__/text.cpython-312.pyc | Bin 58989 -> 0 bytes .../rich/__pycache__/theme.cpython-312.pyc | Bin 6366 -> 0 bytes .../rich/__pycache__/themes.cpython-312.pyc | Bin 340 -> 0 bytes .../__pycache__/traceback.cpython-312.pyc | Bin 31574 -> 0 bytes .../rich/__pycache__/tree.cpython-312.pyc | Bin 11465 -> 0 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/_export_format.py | 76 - .../pip/_vendor/rich/_extension.py | 10 - .../site-packages/pip/_vendor/rich/_fileno.py | 24 - .../pip/_vendor/rich/_inspect.py | 270 - .../pip/_vendor/rich/_log_render.py | 94 - .../site-packages/pip/_vendor/rich/_loop.py | 43 - .../pip/_vendor/rich/_null_file.py | 69 - .../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 | 482 - .../site-packages/pip/_vendor/rich/_stack.py | 16 - .../site-packages/pip/_vendor/rich/_timer.py | 19 - .../pip/_vendor/rich/_win32_console.py | 662 -- .../pip/_vendor/rich/_windows.py | 72 - .../pip/_vendor/rich/_windows_renderer.py | 56 - .../site-packages/pip/_vendor/rich/_wrap.py | 56 - .../site-packages/pip/_vendor/rich/abc.py | 33 - .../site-packages/pip/_vendor/rich/align.py | 311 - .../site-packages/pip/_vendor/rich/ansi.py | 240 - .../site-packages/pip/_vendor/rich/bar.py | 94 - .../site-packages/pip/_vendor/rich/box.py | 517 - .../site-packages/pip/_vendor/rich/cells.py | 154 - .../site-packages/pip/_vendor/rich/color.py | 622 -- .../pip/_vendor/rich/color_triplet.py | 38 - .../site-packages/pip/_vendor/rich/columns.py | 187 - .../site-packages/pip/_vendor/rich/console.py | 2633 ----- .../pip/_vendor/rich/constrain.py | 37 - .../pip/_vendor/rich/containers.py | 167 - .../site-packages/pip/_vendor/rich/control.py | 225 - .../pip/_vendor/rich/default_styles.py | 190 - .../pip/_vendor/rich/diagnose.py | 37 - .../site-packages/pip/_vendor/rich/emoji.py | 96 - .../site-packages/pip/_vendor/rich/errors.py | 34 - .../pip/_vendor/rich/file_proxy.py | 57 - .../pip/_vendor/rich/filesize.py | 89 - .../pip/_vendor/rich/highlighter.py | 232 - .../site-packages/pip/_vendor/rich/json.py | 140 - .../site-packages/pip/_vendor/rich/jupyter.py | 101 - .../site-packages/pip/_vendor/rich/layout.py | 443 - .../site-packages/pip/_vendor/rich/live.py | 375 - .../pip/_vendor/rich/live_render.py | 113 - .../site-packages/pip/_vendor/rich/logging.py | 289 - .../site-packages/pip/_vendor/rich/markup.py | 246 - .../site-packages/pip/_vendor/rich/measure.py | 151 - .../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 | 308 - .../site-packages/pip/_vendor/rich/pretty.py | 994 -- .../pip/_vendor/rich/progress.py | 1702 ---- .../pip/_vendor/rich/progress_bar.py | 224 - .../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 | 149 - .../site-packages/pip/_vendor/rich/rule.py | 130 - .../site-packages/pip/_vendor/rich/scope.py | 86 - .../site-packages/pip/_vendor/rich/screen.py | 54 - .../site-packages/pip/_vendor/rich/segment.py | 739 -- .../site-packages/pip/_vendor/rich/spinner.py | 137 - .../site-packages/pip/_vendor/rich/status.py | 132 - .../site-packages/pip/_vendor/rich/style.py | 796 -- .../site-packages/pip/_vendor/rich/styled.py | 42 - .../site-packages/pip/_vendor/rich/syntax.py | 948 -- .../site-packages/pip/_vendor/rich/table.py | 1002 -- .../pip/_vendor/rich/terminal_theme.py | 153 - .../site-packages/pip/_vendor/rich/text.py | 1307 --- .../site-packages/pip/_vendor/rich/theme.py | 115 - .../site-packages/pip/_vendor/rich/themes.py | 5 - .../pip/_vendor/rich/traceback.py | 756 -- .../site-packages/pip/_vendor/rich/tree.py | 251 - .../site-packages/pip/_vendor/six.py | 998 -- .../pip/_vendor/tenacity/__init__.py | 608 -- .../__pycache__/__init__.cpython-312.pyc | Bin 27112 -> 0 bytes .../__pycache__/_asyncio.cpython-312.pyc | Bin 4832 -> 0 bytes .../__pycache__/_utils.cpython-312.pyc | Bin 2341 -> 0 bytes .../__pycache__/after.cpython-312.pyc | Bin 1650 -> 0 bytes .../__pycache__/before.cpython-312.pyc | Bin 1490 -> 0 bytes .../__pycache__/before_sleep.cpython-312.pyc | Bin 2328 -> 0 bytes .../tenacity/__pycache__/nap.cpython-312.pyc | Bin 1438 -> 0 bytes .../__pycache__/retry.cpython-312.pyc | Bin 14307 -> 0 bytes .../tenacity/__pycache__/stop.cpython-312.pyc | Bin 5594 -> 0 bytes .../__pycache__/tornadoweb.cpython-312.pyc | Bin 2612 -> 0 bytes .../tenacity/__pycache__/wait.cpython-312.pyc | Bin 12439 -> 0 bytes .../pip/_vendor/tenacity/_asyncio.py | 94 - .../pip/_vendor/tenacity/_utils.py | 76 - .../pip/_vendor/tenacity/after.py | 51 - .../pip/_vendor/tenacity/before.py | 46 - .../pip/_vendor/tenacity/before_sleep.py | 71 - .../site-packages/pip/_vendor/tenacity/nap.py | 43 - .../pip/_vendor/tenacity/retry.py | 272 - .../pip/_vendor/tenacity/stop.py | 103 - .../pip/_vendor/tenacity/tornadoweb.py | 59 - .../pip/_vendor/tenacity/wait.py | 228 - .../pip/_vendor/tomli/__init__.py | 11 - .../__pycache__/__init__.cpython-312.pyc | Bin 410 -> 0 bytes .../tomli/__pycache__/_parser.cpython-312.pyc | Bin 26953 -> 0 bytes .../tomli/__pycache__/_re.cpython-312.pyc | Bin 3934 -> 0 bytes .../tomli/__pycache__/_types.cpython-312.pyc | Bin 392 -> 0 bytes .../pip/_vendor/tomli/_parser.py | 691 -- .../site-packages/pip/_vendor/tomli/_re.py | 107 - .../site-packages/pip/_vendor/tomli/_types.py | 10 - .../pip/_vendor/truststore/__init__.py | 13 - .../__pycache__/__init__.cpython-312.pyc | Bin 644 -> 0 bytes .../__pycache__/_api.cpython-312.pyc | Bin 15823 -> 0 bytes .../__pycache__/_macos.cpython-312.pyc | Bin 16688 -> 0 bytes .../__pycache__/_openssl.cpython-312.pyc | Bin 2241 -> 0 bytes .../_ssl_constants.cpython-312.pyc | Bin 1125 -> 0 bytes .../__pycache__/_windows.cpython-312.pyc | Bin 15532 -> 0 bytes .../pip/_vendor/truststore/_api.py | 302 - .../pip/_vendor/truststore/_macos.py | 501 - .../pip/_vendor/truststore/_openssl.py | 66 - .../pip/_vendor/truststore/_ssl_constants.py | 31 - .../pip/_vendor/truststore/_windows.py | 554 -- .../pip/_vendor/typing_extensions.py | 3072 ------ .../pip/_vendor/urllib3/__init__.py | 102 - .../__pycache__/__init__.cpython-312.pyc | Bin 3431 -> 0 bytes .../__pycache__/_collections.cpython-312.pyc | Bin 15957 -> 0 bytes .../__pycache__/_version.cpython-312.pyc | Bin 244 -> 0 bytes .../__pycache__/connection.cpython-312.pyc | Bin 20433 -> 0 bytes .../connectionpool.cpython-312.pyc | Bin 36305 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 13519 -> 0 bytes .../__pycache__/fields.cpython-312.pyc | Bin 10439 -> 0 bytes .../__pycache__/filepost.cpython-312.pyc | Bin 4044 -> 0 bytes .../__pycache__/poolmanager.cpython-312.pyc | Bin 20328 -> 0 bytes .../__pycache__/request.cpython-312.pyc | Bin 7320 -> 0 bytes .../__pycache__/response.cpython-312.pyc | Bin 33994 -> 0 bytes .../pip/_vendor/urllib3/_collections.py | 337 - .../pip/_vendor/urllib3/_version.py | 2 - .../pip/_vendor/urllib3/connection.py | 572 -- .../pip/_vendor/urllib3/connectionpool.py | 1132 --- .../pip/_vendor/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 224 -> 0 bytes .../_appengine_environ.cpython-312.pyc | Bin 1874 -> 0 bytes .../__pycache__/appengine.cpython-312.pyc | Bin 11590 -> 0 bytes .../__pycache__/ntlmpool.cpython-312.pyc | Bin 5745 -> 0 bytes .../__pycache__/pyopenssl.cpython-312.pyc | Bin 24476 -> 0 bytes .../securetransport.cpython-312.pyc | Bin 35582 -> 0 bytes .../contrib/__pycache__/socks.cpython-312.pyc | Bin 7537 -> 0 bytes .../urllib3/contrib/_appengine_environ.py | 36 - .../contrib/_securetransport/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 241 -> 0 bytes .../__pycache__/bindings.cpython-312.pyc | Bin 17453 -> 0 bytes .../__pycache__/low_level.cpython-312.pyc | Bin 14827 -> 0 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 | 518 - .../urllib3/contrib/securetransport.py | 921 -- .../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-312.pyc | Bin 225 -> 0 bytes .../packages/__pycache__/six.cpython-312.pyc | Bin 41345 -> 0 bytes .../urllib3/packages/backports/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 235 -> 0 bytes .../__pycache__/makefile.cpython-312.pyc | Bin 1851 -> 0 bytes .../weakref_finalize.cpython-312.pyc | Bin 7357 -> 0 bytes .../urllib3/packages/backports/makefile.py | 51 - .../packages/backports/weakref_finalize.py | 155 - .../pip/_vendor/urllib3/packages/six.py | 1076 -- .../pip/_vendor/urllib3/poolmanager.py | 537 - .../pip/_vendor/urllib3/request.py | 191 - .../pip/_vendor/urllib3/response.py | 879 -- .../pip/_vendor/urllib3/util/__init__.py | 49 - .../util/__pycache__/__init__.cpython-312.pyc | Bin 1172 -> 0 bytes .../__pycache__/connection.cpython-312.pyc | Bin 4782 -> 0 bytes .../util/__pycache__/proxy.cpython-312.pyc | Bin 1578 -> 0 bytes .../util/__pycache__/queue.cpython-312.pyc | Bin 1378 -> 0 bytes .../util/__pycache__/request.cpython-312.pyc | Bin 4209 -> 0 bytes .../util/__pycache__/response.cpython-312.pyc | Bin 3015 -> 0 bytes .../util/__pycache__/retry.cpython-312.pyc | Bin 21744 -> 0 bytes .../util/__pycache__/ssl_.cpython-312.pyc | Bin 15129 -> 0 bytes .../ssl_match_hostname.cpython-312.pyc | Bin 5097 -> 0 bytes .../__pycache__/ssltransport.cpython-312.pyc | Bin 10798 -> 0 bytes .../util/__pycache__/timeout.cpython-312.pyc | Bin 11165 -> 0 bytes .../util/__pycache__/url.cpython-312.pyc | Bin 15821 -> 0 bytes .../util/__pycache__/wait.cpython-312.pyc | Bin 4429 -> 0 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 | 137 - .../pip/_vendor/urllib3/util/response.py | 107 - .../pip/_vendor/urllib3/util/retry.py | 622 -- .../pip/_vendor/urllib3/util/ssl_.py | 495 - .../urllib3/util/ssl_match_hostname.py | 159 - .../pip/_vendor/urllib3/util/ssltransport.py | 221 - .../pip/_vendor/urllib3/util/timeout.py | 271 - .../pip/_vendor/urllib3/util/url.py | 435 - .../pip/_vendor/urllib3/util/wait.py | 152 - .../site-packages/pip/_vendor/vendor.txt | 24 - .../pip/_vendor/webencodings/__init__.py | 342 - .../__pycache__/__init__.cpython-312.pyc | Bin 12027 -> 0 bytes .../__pycache__/labels.cpython-312.pyc | Bin 7158 -> 0 bytes .../__pycache__/mklabels.cpython-312.pyc | Bin 2725 -> 0 bytes .../__pycache__/tests.cpython-312.pyc | Bin 9277 -> 0 bytes .../x_user_defined.cpython-312.pyc | Bin 3321 -> 0 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 - .../lib/python3.12/site-packages/pip/py.typed | 4 - .../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 - .../site-packages/requests/__init__.py | 184 - .../__pycache__/__init__.cpython-312.pyc | Bin 5434 -> 0 bytes .../__pycache__/__version__.cpython-312.pyc | Bin 598 -> 0 bytes .../_internal_utils.cpython-312.pyc | Bin 2038 -> 0 bytes .../__pycache__/adapters.cpython-312.pyc | Bin 28378 -> 0 bytes .../requests/__pycache__/api.cpython-312.pyc | Bin 7218 -> 0 bytes .../requests/__pycache__/auth.cpython-312.pyc | Bin 13937 -> 0 bytes .../__pycache__/certs.cpython-312.pyc | Bin 680 -> 0 bytes .../__pycache__/compat.cpython-312.pyc | Bin 2099 -> 0 bytes .../__pycache__/cookies.cpython-312.pyc | Bin 25290 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 7599 -> 0 bytes .../requests/__pycache__/help.cpython-312.pyc | Bin 4341 -> 0 bytes .../__pycache__/hooks.cpython-312.pyc | Bin 1066 -> 0 bytes .../__pycache__/models.cpython-312.pyc | Bin 35420 -> 0 bytes .../__pycache__/packages.cpython-312.pyc | Bin 1153 -> 0 bytes .../__pycache__/sessions.cpython-312.pyc | Bin 27896 -> 0 bytes .../__pycache__/status_codes.cpython-312.pyc | Bin 6045 -> 0 bytes .../__pycache__/structures.cpython-312.pyc | Bin 5631 -> 0 bytes .../__pycache__/utils.cpython-312.pyc | Bin 36444 -> 0 bytes .../site-packages/requests/__version__.py | 14 - .../site-packages/requests/_internal_utils.py | 50 - .../site-packages/requests/adapters.py | 719 -- .../python3.12/site-packages/requests/api.py | 157 - .../python3.12/site-packages/requests/auth.py | 314 - .../site-packages/requests/certs.py | 17 - .../site-packages/requests/compat.py | 94 - .../site-packages/requests/cookies.py | 561 -- .../site-packages/requests/exceptions.py | 151 - .../python3.12/site-packages/requests/help.py | 134 - .../site-packages/requests/hooks.py | 33 - .../site-packages/requests/models.py | 1037 -- .../site-packages/requests/packages.py | 23 - .../site-packages/requests/sessions.py | 831 -- .../site-packages/requests/status_codes.py | 128 - .../site-packages/requests/structures.py | 99 - .../site-packages/requests/utils.py | 1096 --- .../soupsieve-2.6.dist-info/INSTALLER | 1 - .../soupsieve-2.6.dist-info/METADATA | 114 - .../soupsieve-2.6.dist-info/RECORD | 20 - .../soupsieve-2.6.dist-info/WHEEL | 4 - .../licenses/LICENSE.md | 21 - .../site-packages/soupsieve/__init__.py | 168 - .../site-packages/soupsieve/__meta__.py | 197 - .../__pycache__/__init__.cpython-312.pyc | Bin 6120 -> 0 bytes .../__pycache__/__meta__.cpython-312.pyc | Bin 8133 -> 0 bytes .../__pycache__/css_match.cpython-312.pyc | Bin 61907 -> 0 bytes .../__pycache__/css_parser.cpython-312.pyc | Bin 49590 -> 0 bytes .../__pycache__/css_types.cpython-312.pyc | Bin 17354 -> 0 bytes .../__pycache__/pretty.cpython-312.pyc | Bin 5073 -> 0 bytes .../__pycache__/util.cpython-312.pyc | Bin 4743 -> 0 bytes .../site-packages/soupsieve/css_match.py | 1582 --- .../site-packages/soupsieve/css_parser.py | 1289 --- .../site-packages/soupsieve/css_types.py | 407 - .../site-packages/soupsieve/pretty.py | 139 - .../site-packages/soupsieve/py.typed | 0 .../site-packages/soupsieve/util.py | 117 - .../INSTALLER | 1 - .../LICENSE | 279 - .../METADATA | 67 - .../typing_extensions-4.12.2.dist-info/RECORD | 7 - .../typing_extensions-4.12.2.dist-info/WHEEL | 4 - .../site-packages/typing_extensions.py | 3641 ------- .../urllib3-2.3.0.dist-info/INSTALLER | 1 - .../urllib3-2.3.0.dist-info/METADATA | 154 - .../urllib3-2.3.0.dist-info/RECORD | 79 - .../urllib3-2.3.0.dist-info/WHEEL | 4 - .../licenses/LICENSE.txt | 21 - .../site-packages/urllib3/__init__.py | 211 - .../__pycache__/__init__.cpython-312.pyc | Bin 7329 -> 0 bytes .../_base_connection.cpython-312.pyc | Bin 6867 -> 0 bytes .../__pycache__/_collections.cpython-312.pyc | Bin 22588 -> 0 bytes .../_request_methods.cpython-312.pyc | Bin 10621 -> 0 bytes .../__pycache__/_version.cpython-312.pyc | Bin 606 -> 0 bytes .../__pycache__/connection.cpython-312.pyc | Bin 36180 -> 0 bytes .../connectionpool.cpython-312.pyc | Bin 39754 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 16122 -> 0 bytes .../__pycache__/fields.cpython-312.pyc | Bin 12041 -> 0 bytes .../__pycache__/filepost.cpython-312.pyc | Bin 3508 -> 0 bytes .../__pycache__/poolmanager.cpython-312.pyc | Bin 24093 -> 0 bytes .../__pycache__/response.cpython-312.pyc | Bin 51088 -> 0 bytes .../site-packages/urllib3/_base_connection.py | 165 - .../site-packages/urllib3/_collections.py | 479 - .../site-packages/urllib3/_request_methods.py | 278 - .../site-packages/urllib3/_version.py | 16 - .../site-packages/urllib3/connection.py | 1044 -- .../site-packages/urllib3/connectionpool.py | 1178 --- .../site-packages/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 212 -> 0 bytes .../__pycache__/pyopenssl.cpython-312.pyc | Bin 27575 -> 0 bytes .../contrib/__pycache__/socks.cpython-312.pyc | Bin 8190 -> 0 bytes .../urllib3/contrib/emscripten/__init__.py | 16 - .../__pycache__/__init__.cpython-312.pyc | Bin 920 -> 0 bytes .../__pycache__/connection.cpython-312.pyc | Bin 10261 -> 0 bytes .../__pycache__/fetch.cpython-312.pyc | Bin 28132 -> 0 bytes .../__pycache__/request.cpython-312.pyc | Bin 1440 -> 0 bytes .../__pycache__/response.cpython-312.pyc | Bin 12701 -> 0 bytes .../urllib3/contrib/emscripten/connection.py | 255 - .../emscripten/emscripten_fetch_worker.js | 110 - .../urllib3/contrib/emscripten/fetch.py | 708 -- .../urllib3/contrib/emscripten/request.py | 22 - .../urllib3/contrib/emscripten/response.py | 285 - .../urllib3/contrib/pyopenssl.py | 554 -- .../site-packages/urllib3/contrib/socks.py | 228 - .../site-packages/urllib3/exceptions.py | 327 - .../site-packages/urllib3/fields.py | 341 - .../site-packages/urllib3/filepost.py | 89 - .../site-packages/urllib3/http2/__init__.py | 53 - .../__pycache__/__init__.cpython-312.pyc | Bin 1765 -> 0 bytes .../__pycache__/connection.cpython-312.pyc | Bin 17072 -> 0 bytes .../http2/__pycache__/probe.cpython-312.pyc | Bin 3716 -> 0 bytes .../site-packages/urllib3/http2/connection.py | 356 - .../site-packages/urllib3/http2/probe.py | 87 - .../site-packages/urllib3/poolmanager.py | 637 -- .../python3.12/site-packages/urllib3/py.typed | 2 - .../site-packages/urllib3/response.py | 1278 --- .../site-packages/urllib3/util/__init__.py | 42 - .../util/__pycache__/__init__.cpython-312.pyc | Bin 1025 -> 0 bytes .../__pycache__/connection.cpython-312.pyc | Bin 4715 -> 0 bytes .../util/__pycache__/proxy.cpython-312.pyc | Bin 1237 -> 0 bytes .../util/__pycache__/request.cpython-312.pyc | Bin 8192 -> 0 bytes .../util/__pycache__/response.cpython-312.pyc | Bin 2893 -> 0 bytes .../util/__pycache__/retry.cpython-312.pyc | Bin 20306 -> 0 bytes .../util/__pycache__/ssl_.cpython-312.pyc | Bin 16595 -> 0 bytes .../ssl_match_hostname.cpython-312.pyc | Bin 5577 -> 0 bytes .../__pycache__/ssltransport.cpython-312.pyc | Bin 13344 -> 0 bytes .../util/__pycache__/timeout.cpython-312.pyc | Bin 11709 -> 0 bytes .../util/__pycache__/url.cpython-312.pyc | Bin 16246 -> 0 bytes .../util/__pycache__/util.cpython-312.pyc | Bin 2014 -> 0 bytes .../util/__pycache__/wait.cpython-312.pyc | Bin 3460 -> 0 bytes .../site-packages/urllib3/util/connection.py | 137 - .../site-packages/urllib3/util/proxy.py | 43 - .../site-packages/urllib3/util/request.py | 258 - .../site-packages/urllib3/util/response.py | 101 - .../site-packages/urllib3/util/retry.py | 533 - .../site-packages/urllib3/util/ssl_.py | 504 - .../urllib3/util/ssl_match_hostname.py | 159 - .../urllib3/util/ssltransport.py | 271 - .../site-packages/urllib3/util/timeout.py | 275 - .../site-packages/urllib3/util/url.py | 469 - .../site-packages/urllib3/util/util.py | 42 - .../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 - .../site-packages/werkzeug/__init__.py | 4 - .../__pycache__/__init__.cpython-312.pyc | Bin 359 -> 0 bytes .../__pycache__/_internal.cpython-312.pyc | Bin 9779 -> 0 bytes .../__pycache__/_reloader.cpython-312.pyc | Bin 20630 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 33345 -> 0 bytes .../__pycache__/formparser.cpython-312.pyc | Bin 17045 -> 0 bytes .../werkzeug/__pycache__/http.cpython-312.pyc | Bin 50270 -> 0 bytes .../__pycache__/local.cpython-312.pyc | Bin 28500 -> 0 bytes .../__pycache__/security.cpython-312.pyc | Bin 7153 -> 0 bytes .../__pycache__/serving.cpython-312.pyc | Bin 46147 -> 0 bytes .../werkzeug/__pycache__/test.cpython-312.pyc | Bin 59889 -> 0 bytes .../__pycache__/testapp.cpython-312.pyc | Bin 8910 -> 0 bytes .../werkzeug/__pycache__/urls.cpython-312.pyc | Bin 8289 -> 0 bytes .../__pycache__/user_agent.cpython-312.pyc | Bin 2172 -> 0 bytes .../__pycache__/utils.cpython-312.pyc | Bin 28163 -> 0 bytes .../werkzeug/__pycache__/wsgi.cpython-312.pyc | Bin 25235 -> 0 bytes .../site-packages/werkzeug/_internal.py | 211 - .../site-packages/werkzeug/_reloader.py | 471 - .../werkzeug/datastructures/__init__.py | 64 - .../__pycache__/__init__.cpython-312.pyc | Bin 2436 -> 0 bytes .../__pycache__/accept.cpython-312.pyc | Bin 15963 -> 0 bytes .../__pycache__/auth.cpython-312.pyc | Bin 14478 -> 0 bytes .../__pycache__/cache_control.cpython-312.pyc | Bin 12245 -> 0 bytes .../__pycache__/csp.cpython-312.pyc | Bin 6206 -> 0 bytes .../__pycache__/etag.cpython-312.pyc | Bin 5421 -> 0 bytes .../__pycache__/file_storage.cpython-312.pyc | Bin 8843 -> 0 bytes .../__pycache__/headers.cpython-312.pyc | Bin 30539 -> 0 bytes .../__pycache__/mixins.cpython-312.pyc | Bin 16419 -> 0 bytes .../__pycache__/range.cpython-312.pyc | Bin 10074 -> 0 bytes .../__pycache__/structures.cpython-312.pyc | Bin 59110 -> 0 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-312.pyc | Bin 23495 -> 0 bytes .../debug/__pycache__/console.cpython-312.pyc | Bin 11656 -> 0 bytes .../debug/__pycache__/repr.cpython-312.pyc | Bin 13829 -> 0 bytes .../debug/__pycache__/tbtools.cpython-312.pyc | Bin 17028 -> 0 bytes .../site-packages/werkzeug/debug/console.py | 219 - .../site-packages/werkzeug/debug/repr.py | 282 - .../werkzeug/debug/shared/ICON_LICENSE.md | 6 - .../werkzeug/debug/shared/console.png | Bin 507 -> 0 bytes .../werkzeug/debug/shared/debugger.js | 344 - .../werkzeug/debug/shared/less.png | Bin 191 -> 0 bytes .../werkzeug/debug/shared/more.png | Bin 200 -> 0 bytes .../werkzeug/debug/shared/style.css | 150 - .../site-packages/werkzeug/debug/tbtools.py | 450 - .../site-packages/werkzeug/exceptions.py | 894 -- .../site-packages/werkzeug/formparser.py | 430 - .../python3.12/site-packages/werkzeug/http.py | 1405 --- .../site-packages/werkzeug/local.py | 653 -- .../werkzeug/middleware/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 216 -> 0 bytes .../__pycache__/dispatcher.cpython-312.pyc | Bin 3334 -> 0 bytes .../__pycache__/http_proxy.cpython-312.pyc | Bin 9426 -> 0 bytes .../__pycache__/lint.cpython-312.pyc | Bin 17796 -> 0 bytes .../__pycache__/profiler.cpython-312.pyc | Bin 7220 -> 0 bytes .../__pycache__/proxy_fix.cpython-312.pyc | Bin 7217 -> 0 bytes .../__pycache__/shared_data.cpython-312.pyc | Bin 12772 -> 0 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 - .../site-packages/werkzeug/py.typed | 0 .../werkzeug/routing/__init__.py | 134 - .../__pycache__/__init__.cpython-312.pyc | Bin 4689 -> 0 bytes .../__pycache__/converters.cpython-312.pyc | Bin 10929 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 7932 -> 0 bytes .../routing/__pycache__/map.cpython-312.pyc | Bin 39857 -> 0 bytes .../__pycache__/matcher.cpython-312.pyc | Bin 8300 -> 0 bytes .../routing/__pycache__/rules.cpython-312.pyc | Bin 39191 -> 0 bytes .../werkzeug/routing/converters.py | 261 - .../werkzeug/routing/exceptions.py | 152 - .../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-312.pyc | Bin 212 -> 0 bytes .../sansio/__pycache__/http.cpython-312.pyc | Bin 5663 -> 0 bytes .../__pycache__/multipart.cpython-312.pyc | Bin 14071 -> 0 bytes .../__pycache__/request.cpython-312.pyc | Bin 21905 -> 0 bytes .../__pycache__/response.cpython-312.pyc | Bin 31760 -> 0 bytes .../sansio/__pycache__/utils.cpython-312.pyc | Bin 6202 -> 0 bytes .../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 - .../site-packages/werkzeug/security.py | 166 - .../site-packages/werkzeug/serving.py | 1125 --- .../python3.12/site-packages/werkzeug/test.py | 1464 --- .../site-packages/werkzeug/testapp.py | 194 - .../python3.12/site-packages/werkzeug/urls.py | 203 - .../site-packages/werkzeug/user_agent.py | 47 - .../site-packages/werkzeug/utils.py | 691 -- .../werkzeug/wrappers/__init__.py | 3 - .../__pycache__/__init__.cpython-312.pyc | Bin 336 -> 0 bytes .../__pycache__/request.cpython-312.pyc | Bin 26166 -> 0 bytes .../__pycache__/response.cpython-312.pyc | Bin 34591 -> 0 bytes .../werkzeug/wrappers/request.py | 650 -- .../werkzeug/wrappers/response.py | 831 -- .../python3.12/site-packages/werkzeug/wsgi.py | 595 -- battlesnake-service/.venv/lib64 | 1 - battlesnake-service/.venv/pyvenv.cfg | 5 - 1646 files changed, 317240 deletions(-) delete mode 100644 battlesnake-service/.venv/bin/Activate.ps1 delete mode 100644 battlesnake-service/.venv/bin/activate delete mode 100644 battlesnake-service/.venv/bin/activate.csh delete mode 100644 battlesnake-service/.venv/bin/activate.fish delete mode 100755 battlesnake-service/.venv/bin/flask delete mode 100755 battlesnake-service/.venv/bin/normalizer delete mode 100755 battlesnake-service/.venv/bin/pip delete mode 100755 battlesnake-service/.venv/bin/pip3 delete mode 100755 battlesnake-service/.venv/bin/pip3.12 delete mode 120000 battlesnake-service/.venv/bin/python delete mode 120000 battlesnake-service/.venv/bin/python3 delete mode 120000 battlesnake-service/.venv/bin/python3.12 delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/INSTALLER delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/LICENSE.txt delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/METADATA delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/RECORD delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/WHEEL delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/top_level.txt delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/README.rst delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/__pycache__/typing_extensions.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/INSTALLER delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/METADATA delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/RECORD delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/WHEEL delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/licenses/AUTHORS delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/licenses/LICENSE delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/blinker-1.9.0.dist-info/INSTALLER delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/blinker-1.9.0.dist-info/LICENSE.txt delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/blinker-1.9.0.dist-info/METADATA delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/blinker-1.9.0.dist-info/RECORD delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/blinker-1.9.0.dist-info/WHEEL delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/blinker/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/blinker/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/blinker/__pycache__/_utilities.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/blinker/__pycache__/base.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/blinker/_utilities.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/blinker/base.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/blinker/py.typed delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4-0.0.2.dist-info/INSTALLER delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4-0.0.2.dist-info/METADATA delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4-0.0.2.dist-info/RECORD delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4-0.0.2.dist-info/REQUESTED delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4-0.0.2.dist-info/WHEEL delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__pycache__/_deprecation.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__pycache__/_typing.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__pycache__/_warnings.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__pycache__/css.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__pycache__/dammit.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__pycache__/diagnose.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__pycache__/element.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__pycache__/exceptions.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__pycache__/filter.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__pycache__/formatter.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/_deprecation.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/_typing.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/_warnings.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/builder/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/builder/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/builder/__pycache__/_html5lib.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/builder/__pycache__/_htmlparser.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/builder/__pycache__/_lxml.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/builder/_html5lib.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/builder/_htmlparser.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/builder/_lxml.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/css.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/dammit.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/diagnose.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/element.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/exceptions.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/filter.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/formatter.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/py.typed delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_builder.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_builder_registry.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_css.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_dammit.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_element.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_filter.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_formatter.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_fuzz.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_html5lib.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_htmlparser.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_lxml.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_navigablestring.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_pageelement.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_soup.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_tag.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_tree.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4670634698080256.testcase delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4818336571064320.testcase delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4999465949331456.testcase delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5000587759190016.testcase delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5167584867909632.testcase delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5270998950477824.testcase delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5375146639360000.testcase delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5492400320282624.testcase delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5843991618256896.testcase delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5984173902397440.testcase delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6124268085182464.testcase delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6241471367348224.testcase delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6306874195312640.testcase delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6450958476902400.testcase delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6600557255327744.testcase delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/crash-0d306a50c8ed8bcd0785b67000fcd5dea1d33f08.testcase delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/crash-ffbdfa8a2b26f13537b68d3794b0478a4090ee4a.testcase delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_builder.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_builder_registry.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_css.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_dammit.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_element.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_filter.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_formatter.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_fuzz.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_html5lib.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_htmlparser.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_lxml.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_navigablestring.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_pageelement.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_soup.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_tag.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_tree.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/certifi-2025.1.31.dist-info/INSTALLER delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/certifi-2025.1.31.dist-info/LICENSE delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/certifi-2025.1.31.dist-info/METADATA delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/certifi-2025.1.31.dist-info/RECORD delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/certifi-2025.1.31.dist-info/WHEEL delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/certifi-2025.1.31.dist-info/top_level.txt delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/certifi/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/certifi/__main__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/certifi/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/certifi/__pycache__/__main__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/certifi/__pycache__/core.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/certifi/cacert.pem delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/certifi/core.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/certifi/py.typed delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer-3.4.1.dist-info/INSTALLER delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer-3.4.1.dist-info/LICENSE delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer-3.4.1.dist-info/METADATA delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer-3.4.1.dist-info/RECORD delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer-3.4.1.dist-info/WHEEL delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer-3.4.1.dist-info/entry_points.txt delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer-3.4.1.dist-info/top_level.txt delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/__main__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/__main__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/api.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/cd.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/constant.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/legacy.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/md.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/models.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/utils.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/version.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/api.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/cd.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/cli/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/cli/__main__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__main__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/constant.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/legacy.py delete mode 100755 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/md.cpython-312-x86_64-linux-gnu.so delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/md.py delete mode 100755 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-x86_64-linux-gnu.so delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/models.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/py.typed delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/utils.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/charset_normalizer/version.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click-8.1.8.dist-info/INSTALLER delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click-8.1.8.dist-info/LICENSE.txt delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click-8.1.8.dist-info/METADATA delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click-8.1.8.dist-info/RECORD delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click-8.1.8.dist-info/WHEEL delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/__pycache__/_compat.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/__pycache__/_termui_impl.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/__pycache__/_textwrap.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/__pycache__/_winconsole.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/__pycache__/core.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/__pycache__/decorators.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/__pycache__/exceptions.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/__pycache__/formatting.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/__pycache__/globals.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/__pycache__/parser.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/__pycache__/shell_completion.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/__pycache__/termui.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/__pycache__/testing.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/__pycache__/types.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/__pycache__/utils.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/_compat.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/_termui_impl.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/_textwrap.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/_winconsole.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/core.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/decorators.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/exceptions.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/formatting.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/globals.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/parser.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/py.typed delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/shell_completion.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/termui.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/testing.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/types.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/click/utils.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask-3.1.0.dist-info/INSTALLER delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask-3.1.0.dist-info/LICENSE.txt delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask-3.1.0.dist-info/METADATA delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask-3.1.0.dist-info/RECORD delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask-3.1.0.dist-info/REQUESTED delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask-3.1.0.dist-info/WHEEL delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask-3.1.0.dist-info/entry_points.txt delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/__main__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/__pycache__/__main__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/__pycache__/app.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/__pycache__/blueprints.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/__pycache__/cli.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/__pycache__/config.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/__pycache__/ctx.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/__pycache__/debughelpers.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/__pycache__/globals.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/__pycache__/helpers.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/__pycache__/logging.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/__pycache__/sessions.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/__pycache__/signals.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/__pycache__/templating.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/__pycache__/testing.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/__pycache__/typing.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/__pycache__/views.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/__pycache__/wrappers.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/app.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/blueprints.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/cli.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/config.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/ctx.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/debughelpers.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/globals.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/helpers.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/json/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/json/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/json/__pycache__/provider.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/json/__pycache__/tag.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/json/provider.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/json/tag.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/logging.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/py.typed delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/sansio/README.md delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/sansio/__pycache__/app.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/sansio/__pycache__/blueprints.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/sansio/__pycache__/scaffold.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/sansio/app.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/sansio/blueprints.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/sansio/scaffold.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/sessions.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/signals.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/templating.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/testing.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/typing.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/views.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/flask/wrappers.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/idna-3.10.dist-info/INSTALLER delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/idna-3.10.dist-info/LICENSE.md delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/idna-3.10.dist-info/METADATA delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/idna-3.10.dist-info/RECORD delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/idna-3.10.dist-info/WHEEL delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/idna/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/idna/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/idna/__pycache__/codec.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/idna/__pycache__/compat.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/idna/__pycache__/core.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/idna/__pycache__/idnadata.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/idna/__pycache__/intranges.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/idna/__pycache__/package_data.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/idna/__pycache__/uts46data.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/idna/codec.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/idna/compat.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/idna/core.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/idna/idnadata.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/idna/intranges.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/idna/package_data.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/idna/py.typed delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/idna/uts46data.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/INSTALLER delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/LICENSE.txt delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/METADATA delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/RECORD delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/WHEEL delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/itsdangerous/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/itsdangerous/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/itsdangerous/__pycache__/_json.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/itsdangerous/__pycache__/encoding.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/itsdangerous/__pycache__/exc.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/itsdangerous/__pycache__/serializer.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/itsdangerous/__pycache__/signer.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/itsdangerous/__pycache__/timed.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/itsdangerous/__pycache__/url_safe.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/itsdangerous/_json.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/itsdangerous/encoding.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/itsdangerous/exc.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/itsdangerous/py.typed delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/itsdangerous/serializer.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/itsdangerous/signer.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/itsdangerous/timed.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/itsdangerous/url_safe.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2-3.1.5.dist-info/INSTALLER delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2-3.1.5.dist-info/LICENSE.txt delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2-3.1.5.dist-info/METADATA delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2-3.1.5.dist-info/RECORD delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2-3.1.5.dist-info/WHEEL delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2-3.1.5.dist-info/entry_points.txt delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/_identifier.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/async_utils.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/bccache.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/compiler.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/constants.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/debug.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/defaults.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/environment.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/exceptions.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/ext.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/filters.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/idtracking.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/lexer.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/loaders.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/meta.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/nativetypes.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/nodes.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/optimizer.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/parser.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/runtime.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/sandbox.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/tests.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/utils.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/__pycache__/visitor.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/_identifier.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/async_utils.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/bccache.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/compiler.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/constants.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/debug.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/defaults.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/environment.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/exceptions.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/ext.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/filters.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/idtracking.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/lexer.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/loaders.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/meta.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/nativetypes.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/nodes.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/optimizer.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/parser.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/py.typed delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/runtime.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/sandbox.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/tests.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/utils.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/jinja2/visitor.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/markupsafe/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/markupsafe/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/markupsafe/__pycache__/_native.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/markupsafe/_native.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/markupsafe/_speedups.c delete mode 100755 battlesnake-service/.venv/lib/python3.12/site-packages/markupsafe/_speedups.cpython-312-x86_64-linux-gnu.so delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/markupsafe/_speedups.pyi delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/markupsafe/py.typed delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip-24.0.dist-info/AUTHORS.txt delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip-24.0.dist-info/INSTALLER delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip-24.0.dist-info/LICENSE.txt delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip-24.0.dist-info/METADATA delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip-24.0.dist-info/RECORD delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip-24.0.dist-info/REQUESTED delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip-24.0.dist-info/WHEEL delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip-24.0.dist-info/entry_points.txt delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip-24.0.dist-info/top_level.txt delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/__main__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/__pip-runner__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/__pycache__/__main__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/__pycache__/__pip-runner__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/__pycache__/build_env.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/__pycache__/cache.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/__pycache__/configuration.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/__pycache__/exceptions.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/__pycache__/main.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/__pycache__/pyproject.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/build_env.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cache.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/main.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/parser.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/autocompletion.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/base_command.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/cmdoptions.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/command_context.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/main.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/main_parser.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/parser.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/progress_bars.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/req_command.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/spinners.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/cli/status_codes.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/cache.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/check.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/completion.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/debug.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/download.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/hash.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/help.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/index.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/inspect.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/install.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/list.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/search.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/show.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/cache.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/check.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/completion.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/configuration.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/debug.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/download.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/freeze.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/hash.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/help.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/index.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/inspect.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/install.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/list.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/search.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/show.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/uninstall.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/commands/wheel.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/configuration.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/distributions/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/base.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/distributions/base.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/distributions/installed.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/distributions/sdist.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/distributions/wheel.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/exceptions.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/index/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/collector.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/sources.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/index/collector.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/index/package_finder.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/index/sources.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/locations/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/_distutils.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/base.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/locations/_distutils.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/locations/_sysconfig.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/locations/base.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/main.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/metadata/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/_json.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/base.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/metadata/_json.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/metadata/base.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/_compat.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/_dists.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/_envs.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_compat.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_dists.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_envs.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/metadata/pkg_resources.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/candidate.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/format_control.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/index.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/installation_report.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/link.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/scheme.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/target_python.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/wheel.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/candidate.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/direct_url.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/format_control.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/index.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/installation_report.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/link.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/scheme.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/search_scope.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/selection_prefs.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/target_python.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/models/wheel.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/network/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/auth.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/cache.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/download.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/session.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/utils.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/network/auth.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/network/cache.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/network/download.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/network/lazy_wheel.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/network/session.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/network/utils.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/network/xmlrpc.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/check.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/build/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/build_tracker.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/build/build_tracker.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/build/metadata.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/build/metadata_editable.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/build/metadata_legacy.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/build/wheel.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/build/wheel_editable.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/build/wheel_legacy.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/check.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/freeze.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/install/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/install/editable_legacy.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/install/wheel.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/operations/prepare.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/pyproject.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/req/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/constructors.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_file.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_install.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_set.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/req/constructors.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/req/req_file.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/req/req_install.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/req/req_set.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/req/req_uninstall.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/__pycache__/base.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/base.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/resolver.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/base.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/factory.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/provider.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/reporter.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/requirements.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/resolver.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/self_outdated_check.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/_jaraco_text.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/_log.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/compat.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/logging.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/misc.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/models.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/urls.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/_jaraco_text.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/_log.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/appdirs.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/compat.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/compatibility_tags.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/datetime.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/deprecation.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/direct_url_helpers.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/egg_link.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/encoding.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/entrypoints.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/filesystem.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/filetypes.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/glibc.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/hashes.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/logging.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/misc.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/models.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/packaging.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/setuptools_build.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/subprocess.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/temp_dir.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/unpacking.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/urls.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/virtualenv.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/utils/wheel.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/vcs/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/git.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/vcs/bazaar.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/vcs/git.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/vcs/mercurial.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/vcs/subversion.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/vcs/versioncontrol.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_internal/wheel_builder.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/__pycache__/six.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/__pycache__/typing_extensions.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/_cmd.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/adapter.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/cache.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/controller.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/filewrapper.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/heuristics.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/serialize.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/wrapper.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/certifi/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/certifi/__main__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/certifi/cacert.pem delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/certifi/core.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachinedict.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/johabfreq.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/johabprober.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/macromanprober.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/resultdict.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/utf1632prober.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/big5freq.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/big5prober.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/chardistribution.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/charsetgroupprober.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/charsetprober.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/cli/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/cli/chardetect.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/codingstatemachine.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/codingstatemachinedict.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/cp949prober.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/enums.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/escprober.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/escsm.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/eucjpprober.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/euckrfreq.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/euckrprober.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/euctwfreq.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/euctwprober.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/gb2312freq.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/gb2312prober.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/hebrewprober.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/jisfreq.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/johabfreq.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/johabprober.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/jpcntx.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/langbulgarianmodel.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/langgreekmodel.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/langhebrewmodel.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/langhungarianmodel.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/langrussianmodel.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/langthaimodel.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/langturkishmodel.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/latin1prober.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/macromanprober.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/mbcharsetprober.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/mbcsgroupprober.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/mbcssm.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/metadata/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/metadata/__pycache__/languages.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/metadata/languages.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/resultdict.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/sbcharsetprober.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/sbcsgroupprober.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/sjisprober.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/universaldetector.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/utf1632prober.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/utf8prober.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/chardet/version.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/ansi.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/ansitowin32.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/initialise.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/ansi_test.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/ansitowin32_test.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/initialise_test.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/isatty_test.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/utils.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/winterm_test.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/ansi_test.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/ansitowin32_test.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/initialise_test.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/isatty_test.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/utils.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/winterm_test.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/win32.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/colorama/winterm.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/compat.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/database.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/index.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/locators.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/manifest.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/markers.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/metadata.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/resources.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/scripts.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/util.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/version.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/wheel.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distro/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distro/__main__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distro/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distro/__pycache__/__main__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distro/__pycache__/distro.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/distro/distro.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/idna/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/core.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/idna/codec.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/idna/compat.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/idna/core.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/idna/idnadata.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/idna/intranges.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/idna/package_data.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/idna/uts46data.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/msgpack/exceptions.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/msgpack/ext.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/msgpack/fallback.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__about__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/_manylinux.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/_musllinux.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/_structures.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/markers.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/requirements.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/specifiers.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/tags.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/utils.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/version.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pkg_resources/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__main__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/__main__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/android.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/unix.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/android.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/api.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/macos.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/unix.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/version.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/windows.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__main__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/__main__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/cmdline.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/console.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/filter.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/plugin.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/regexopt.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/scanner.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/style.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/unistring.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/cmdline.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/console.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/filter.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/filters/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatter.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/groff.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/html.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/irc.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/latex.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/svg.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/_mapping.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/bbcode.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/groff.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/html.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/img.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/irc.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/latex.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/other.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/rtf.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/svg.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/terminal.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/terminal256.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexer.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/python.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/_mapping.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/python.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/modeline.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/plugin.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/regexopt.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/scanner.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/sphinxext.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/style.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/styles/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/token.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/unistring.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/util.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/actions.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/common.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/core.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/exceptions.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/helpers.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/results.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/testing.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/unicode.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/util.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/actions.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/common.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/core.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/diagram/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/exceptions.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/helpers.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/results.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/testing.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/unicode.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/util.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_compat.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_impl.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/api.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/help.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/models.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/__version__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/_internal_utils.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/adapters.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/api.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/auth.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/certs.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/compat.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/cookies.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/exceptions.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/help.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/hooks.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/models.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/packages.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/sessions.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/status_codes.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/structures.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/requests/utils.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/providers.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/reporters.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/structs.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__main__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/__main__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_cell_widths.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_emoji_replace.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_export_format.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_fileno.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_inspect.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_loop.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_null_file.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_stack.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_timer.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_win32_console.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_windows_renderer.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_wrap.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/abc.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/align.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/bar.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/box.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/color.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/color_triplet.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/columns.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/console.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/constrain.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/control.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/default_styles.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/diagnose.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/emoji.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/filesize.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/json.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/jupyter.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/live.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/live_render.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/logging.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/measure.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/pager.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/palette.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/panel.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/pretty.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/progress_bar.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/protocol.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/region.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/scope.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/screen.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/spinner.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/status.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/style.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/styled.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/syntax.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/table.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/text.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/theme.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/themes.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/traceback.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/tree.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_cell_widths.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_emoji_codes.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_emoji_replace.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_export_format.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_extension.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_fileno.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_inspect.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_log_render.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_loop.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_null_file.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_palettes.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_pick.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_ratio.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_spinners.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_stack.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_timer.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_win32_console.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_windows.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_windows_renderer.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_wrap.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/abc.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/align.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/ansi.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/bar.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/box.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/cells.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/color.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/color_triplet.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/columns.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/console.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/constrain.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/containers.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/control.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/default_styles.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/diagnose.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/emoji.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/errors.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/file_proxy.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/filesize.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/highlighter.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/json.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/jupyter.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/layout.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/live.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/live_render.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/logging.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/markup.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/measure.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/padding.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/pager.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/palette.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/panel.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/pretty.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/progress.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/progress_bar.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/prompt.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/protocol.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/region.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/repr.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/rule.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/scope.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/screen.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/segment.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/spinner.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/status.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/style.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/styled.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/syntax.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/table.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/terminal_theme.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/text.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/theme.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/themes.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/traceback.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/rich/tree.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/six.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/_asyncio.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/_utils.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/after.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/before.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/before_sleep.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/nap.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/retry.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/stop.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/wait.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tenacity/_asyncio.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tenacity/_utils.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tenacity/after.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tenacity/before.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tenacity/before_sleep.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tenacity/nap.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tenacity/retry.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tenacity/stop.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tenacity/tornadoweb.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tenacity/wait.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tomli/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/_types.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tomli/_parser.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tomli/_re.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/tomli/_types.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/truststore/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_api.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_macos.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_openssl.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_windows.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/truststore/_api.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/truststore/_macos.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/truststore/_openssl.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/truststore/_ssl_constants.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/truststore/_windows.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/typing_extensions.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/_collections.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/_version.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/connection.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/connectionpool.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/appengine.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/securetransport.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/socks.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/exceptions.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/fields.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/filepost.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/six.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/poolmanager.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/request.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/response.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/connection.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/proxy.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/queue.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/request.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/response.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/retry.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssl_.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssltransport.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/timeout.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/url.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/wait.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/vendor.txt delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/webencodings/labels.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/webencodings/mklabels.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/webencodings/tests.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/_vendor/webencodings/x_user_defined.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/pip/py.typed delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/INSTALLER delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/LICENSE delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/METADATA delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/RECORD delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/REQUESTED delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/WHEEL delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/top_level.txt delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/__pycache__/__version__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/__pycache__/_internal_utils.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/__pycache__/adapters.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/__pycache__/api.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/__pycache__/auth.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/__pycache__/certs.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/__pycache__/compat.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/__pycache__/cookies.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/__pycache__/exceptions.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/__pycache__/help.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/__pycache__/hooks.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/__pycache__/models.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/__pycache__/packages.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/__pycache__/sessions.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/__pycache__/status_codes.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/__pycache__/structures.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/__pycache__/utils.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/__version__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/_internal_utils.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/adapters.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/api.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/auth.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/certs.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/compat.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/cookies.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/exceptions.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/help.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/hooks.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/models.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/packages.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/sessions.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/status_codes.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/structures.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/requests/utils.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/soupsieve-2.6.dist-info/INSTALLER delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/soupsieve-2.6.dist-info/METADATA delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/soupsieve-2.6.dist-info/RECORD delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/soupsieve-2.6.dist-info/WHEEL delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/soupsieve-2.6.dist-info/licenses/LICENSE.md delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/soupsieve/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/soupsieve/__meta__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/soupsieve/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/soupsieve/__pycache__/__meta__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/soupsieve/__pycache__/css_match.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/soupsieve/__pycache__/css_parser.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/soupsieve/__pycache__/css_types.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/soupsieve/__pycache__/pretty.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/soupsieve/__pycache__/util.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/soupsieve/css_match.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/soupsieve/css_parser.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/soupsieve/css_types.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/soupsieve/pretty.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/soupsieve/py.typed delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/soupsieve/util.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/typing_extensions-4.12.2.dist-info/INSTALLER delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/typing_extensions-4.12.2.dist-info/LICENSE delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/typing_extensions-4.12.2.dist-info/METADATA delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/typing_extensions-4.12.2.dist-info/RECORD delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/typing_extensions-4.12.2.dist-info/WHEEL delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/typing_extensions.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3-2.3.0.dist-info/INSTALLER delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3-2.3.0.dist-info/METADATA delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3-2.3.0.dist-info/RECORD delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3-2.3.0.dist-info/WHEEL delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3-2.3.0.dist-info/licenses/LICENSE.txt delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/__pycache__/_base_connection.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/__pycache__/_collections.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/__pycache__/_request_methods.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/__pycache__/_version.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/__pycache__/connection.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/__pycache__/connectionpool.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/__pycache__/exceptions.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/__pycache__/fields.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/__pycache__/filepost.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/__pycache__/poolmanager.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/__pycache__/response.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/_base_connection.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/_collections.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/_request_methods.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/_version.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/connection.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/connectionpool.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/contrib/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/socks.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/connection.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/fetch.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/request.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/response.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/connection.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/emscripten_fetch_worker.js delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/fetch.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/request.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/response.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/contrib/pyopenssl.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/contrib/socks.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/exceptions.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/fields.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/filepost.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/http2/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/http2/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/http2/__pycache__/connection.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/http2/__pycache__/probe.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/http2/connection.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/http2/probe.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/poolmanager.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/py.typed delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/response.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/connection.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/proxy.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/request.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/response.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/retry.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssl_.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssltransport.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/timeout.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/url.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/util.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/__pycache__/wait.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/connection.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/proxy.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/request.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/response.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/retry.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/ssl_.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/ssl_match_hostname.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/ssltransport.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/timeout.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/url.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/util.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/urllib3/util/wait.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug-3.1.3.dist-info/INSTALLER delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug-3.1.3.dist-info/LICENSE.txt delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug-3.1.3.dist-info/METADATA delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug-3.1.3.dist-info/RECORD delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug-3.1.3.dist-info/WHEEL delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/__pycache__/_internal.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/__pycache__/_reloader.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/__pycache__/exceptions.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/__pycache__/formparser.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/__pycache__/http.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/__pycache__/local.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/__pycache__/security.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/__pycache__/serving.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/__pycache__/test.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/__pycache__/testapp.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/__pycache__/urls.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/__pycache__/user_agent.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/__pycache__/utils.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/__pycache__/wsgi.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/_internal.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/_reloader.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/datastructures/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/accept.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/auth.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/cache_control.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/csp.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/etag.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/file_storage.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/headers.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/mixins.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/range.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/structures.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/datastructures/accept.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/datastructures/auth.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/datastructures/cache_control.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/datastructures/csp.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/datastructures/etag.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/datastructures/file_storage.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/datastructures/headers.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/datastructures/mixins.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/datastructures/range.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/datastructures/structures.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/debug/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/debug/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/debug/__pycache__/console.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/debug/__pycache__/repr.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/debug/__pycache__/tbtools.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/debug/console.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/debug/repr.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/debug/shared/ICON_LICENSE.md delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/debug/shared/console.png delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/debug/shared/debugger.js delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/debug/shared/less.png delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/debug/shared/more.png delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/debug/shared/style.css delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/debug/tbtools.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/exceptions.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/formparser.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/http.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/local.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/middleware/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/middleware/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/middleware/__pycache__/dispatcher.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/middleware/__pycache__/http_proxy.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/middleware/__pycache__/lint.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/middleware/__pycache__/profiler.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/middleware/__pycache__/proxy_fix.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/middleware/__pycache__/shared_data.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/middleware/dispatcher.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/middleware/http_proxy.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/middleware/lint.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/middleware/profiler.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/middleware/proxy_fix.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/middleware/shared_data.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/py.typed delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/routing/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/routing/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/routing/__pycache__/converters.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/routing/__pycache__/exceptions.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/routing/__pycache__/map.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/routing/__pycache__/matcher.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/routing/__pycache__/rules.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/routing/converters.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/routing/exceptions.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/routing/map.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/routing/matcher.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/routing/rules.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/sansio/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/sansio/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/sansio/__pycache__/http.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/sansio/__pycache__/multipart.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/sansio/__pycache__/request.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/sansio/__pycache__/response.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/sansio/__pycache__/utils.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/sansio/http.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/sansio/multipart.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/sansio/request.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/sansio/response.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/sansio/utils.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/security.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/serving.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/test.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/testapp.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/urls.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/user_agent.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/utils.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/wrappers/__init__.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/wrappers/__pycache__/__init__.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/wrappers/__pycache__/request.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/wrappers/__pycache__/response.cpython-312.pyc delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/wrappers/request.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/wrappers/response.py delete mode 100644 battlesnake-service/.venv/lib/python3.12/site-packages/werkzeug/wsgi.py delete mode 120000 battlesnake-service/.venv/lib64 delete mode 100644 battlesnake-service/.venv/pyvenv.cfg diff --git a/battlesnake-service/.venv/bin/Activate.ps1 b/battlesnake-service/.venv/bin/Activate.ps1 deleted file mode 100644 index b49d77b..0000000 --- a/battlesnake-service/.venv/bin/Activate.ps1 +++ /dev/null @@ -1,247 +0,0 @@ -<# -.Synopsis -Activate a Python virtual environment for the current PowerShell session. - -.Description -Pushes the python executable for a virtual environment to the front of the -$Env:PATH environment variable and sets the prompt to signify that you are -in a Python virtual environment. Makes use of the command line switches as -well as the `pyvenv.cfg` file values present in the virtual environment. - -.Parameter VenvDir -Path to the directory that contains the virtual environment to activate. The -default value for this is the parent of the directory that the Activate.ps1 -script is located within. - -.Parameter Prompt -The prompt prefix to display when this virtual environment is activated. By -default, this prompt is the name of the virtual environment folder (VenvDir) -surrounded by parentheses and followed by a single space (ie. '(.venv) '). - -.Example -Activate.ps1 -Activates the Python virtual environment that contains the Activate.ps1 script. - -.Example -Activate.ps1 -Verbose -Activates the Python virtual environment that contains the Activate.ps1 script, -and shows extra information about the activation as it executes. - -.Example -Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv -Activates the Python virtual environment located in the specified location. - -.Example -Activate.ps1 -Prompt "MyPython" -Activates the Python virtual environment that contains the Activate.ps1 script, -and prefixes the current prompt with the specified string (surrounded in -parentheses) while the virtual environment is active. - -.Notes -On Windows, it may be required to enable this Activate.ps1 script by setting the -execution policy for the user. You can do this by issuing the following PowerShell -command: - -PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser - -For more information on Execution Policies: -https://go.microsoft.com/fwlink/?LinkID=135170 - -#> -Param( - [Parameter(Mandatory = $false)] - [String] - $VenvDir, - [Parameter(Mandatory = $false)] - [String] - $Prompt -) - -<# Function declarations --------------------------------------------------- #> - -<# -.Synopsis -Remove all shell session elements added by the Activate script, including the -addition of the virtual environment's Python executable from the beginning of -the PATH variable. - -.Parameter NonDestructive -If present, do not remove this function from the global namespace for the -session. - -#> -function global:deactivate ([switch]$NonDestructive) { - # Revert to original values - - # The prior prompt: - if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) { - Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt - Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT - } - - # The prior PYTHONHOME: - if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) { - Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME - Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME - } - - # The prior PATH: - if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) { - Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH - Remove-Item -Path Env:_OLD_VIRTUAL_PATH - } - - # Just remove the VIRTUAL_ENV altogether: - if (Test-Path -Path Env:VIRTUAL_ENV) { - Remove-Item -Path env:VIRTUAL_ENV - } - - # Just remove VIRTUAL_ENV_PROMPT altogether. - if (Test-Path -Path Env:VIRTUAL_ENV_PROMPT) { - Remove-Item -Path env:VIRTUAL_ENV_PROMPT - } - - # Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether: - if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) { - Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force - } - - # Leave deactivate function in the global namespace if requested: - if (-not $NonDestructive) { - Remove-Item -Path function:deactivate - } -} - -<# -.Description -Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the -given folder, and returns them in a map. - -For each line in the pyvenv.cfg file, if that line can be parsed into exactly -two strings separated by `=` (with any amount of whitespace surrounding the =) -then it is considered a `key = value` line. The left hand string is the key, -the right hand is the value. - -If the value starts with a `'` or a `"` then the first and last character is -stripped from the value before being captured. - -.Parameter ConfigDir -Path to the directory that contains the `pyvenv.cfg` file. -#> -function Get-PyVenvConfig( - [String] - $ConfigDir -) { - Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg" - - # Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue). - $pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue - - # An empty map will be returned if no config file is found. - $pyvenvConfig = @{ } - - if ($pyvenvConfigPath) { - - Write-Verbose "File exists, parse `key = value` lines" - $pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath - - $pyvenvConfigContent | ForEach-Object { - $keyval = $PSItem -split "\s*=\s*", 2 - if ($keyval[0] -and $keyval[1]) { - $val = $keyval[1] - - # Remove extraneous quotations around a string value. - if ("'""".Contains($val.Substring(0, 1))) { - $val = $val.Substring(1, $val.Length - 2) - } - - $pyvenvConfig[$keyval[0]] = $val - Write-Verbose "Adding Key: '$($keyval[0])'='$val'" - } - } - } - return $pyvenvConfig -} - - -<# Begin Activate script --------------------------------------------------- #> - -# Determine the containing directory of this script -$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition -$VenvExecDir = Get-Item -Path $VenvExecPath - -Write-Verbose "Activation script is located in path: '$VenvExecPath'" -Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)" -Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)" - -# Set values required in priority: CmdLine, ConfigFile, Default -# First, get the location of the virtual environment, it might not be -# VenvExecDir if specified on the command line. -if ($VenvDir) { - Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values" -} -else { - Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir." - $VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/") - Write-Verbose "VenvDir=$VenvDir" -} - -# Next, read the `pyvenv.cfg` file to determine any required value such -# as `prompt`. -$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir - -# Next, set the prompt from the command line, or the config file, or -# just use the name of the virtual environment folder. -if ($Prompt) { - Write-Verbose "Prompt specified as argument, using '$Prompt'" -} -else { - Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value" - if ($pyvenvCfg -and $pyvenvCfg['prompt']) { - Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'" - $Prompt = $pyvenvCfg['prompt']; - } - else { - Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virtual environment)" - Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'" - $Prompt = Split-Path -Path $venvDir -Leaf - } -} - -Write-Verbose "Prompt = '$Prompt'" -Write-Verbose "VenvDir='$VenvDir'" - -# Deactivate any currently active virtual environment, but leave the -# deactivate function in place. -deactivate -nondestructive - -# Now set the environment variable VIRTUAL_ENV, used by many tools to determine -# that there is an activated venv. -$env:VIRTUAL_ENV = $VenvDir - -if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) { - - Write-Verbose "Setting prompt to '$Prompt'" - - # Set the prompt to include the env name - # Make sure _OLD_VIRTUAL_PROMPT is global - function global:_OLD_VIRTUAL_PROMPT { "" } - Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT - New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt - - function global:prompt { - Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) " - _OLD_VIRTUAL_PROMPT - } - $env:VIRTUAL_ENV_PROMPT = $Prompt -} - -# Clear PYTHONHOME -if (Test-Path -Path Env:PYTHONHOME) { - Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME - Remove-Item -Path Env:PYTHONHOME -} - -# Add the venv to the PATH -Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH -$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH" diff --git a/battlesnake-service/.venv/bin/activate b/battlesnake-service/.venv/bin/activate deleted file mode 100644 index b89a44a..0000000 --- a/battlesnake-service/.venv/bin/activate +++ /dev/null @@ -1,70 +0,0 @@ -# This file must be used with "source bin/activate" *from bash* -# You cannot run it directly - -deactivate () { - # reset old environment variables - if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then - PATH="${_OLD_VIRTUAL_PATH:-}" - export PATH - unset _OLD_VIRTUAL_PATH - fi - if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then - PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}" - export PYTHONHOME - unset _OLD_VIRTUAL_PYTHONHOME - fi - - # Call hash to forget past commands. Without forgetting - # past commands the $PATH changes we made may not be respected - hash -r 2> /dev/null - - if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then - PS1="${_OLD_VIRTUAL_PS1:-}" - export PS1 - unset _OLD_VIRTUAL_PS1 - fi - - unset VIRTUAL_ENV - unset VIRTUAL_ENV_PROMPT - if [ ! "${1:-}" = "nondestructive" ] ; then - # Self destruct! - unset -f deactivate - fi -} - -# unset irrelevant variables -deactivate nondestructive - -# on Windows, a path can contain colons and backslashes and has to be converted: -if [ "${OSTYPE:-}" = "cygwin" ] || [ "${OSTYPE:-}" = "msys" ] ; then - # transform D:\path\to\venv to /d/path/to/venv on MSYS - # and to /cygdrive/d/path/to/venv on Cygwin - export VIRTUAL_ENV=$(cygpath /home/singh/development/bytecamp/battlesnake-service/.venv) -else - # use the path as-is - export VIRTUAL_ENV=/home/singh/development/bytecamp/battlesnake-service/.venv -fi - -_OLD_VIRTUAL_PATH="$PATH" -PATH="$VIRTUAL_ENV/"bin":$PATH" -export PATH - -# unset PYTHONHOME if set -# this will fail if PYTHONHOME is set to the empty string (which is bad anyway) -# could use `if (set -u; : $PYTHONHOME) ;` in bash -if [ -n "${PYTHONHOME:-}" ] ; then - _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}" - unset PYTHONHOME -fi - -if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then - _OLD_VIRTUAL_PS1="${PS1:-}" - PS1='(.venv) '"${PS1:-}" - export PS1 - VIRTUAL_ENV_PROMPT='(.venv) ' - export VIRTUAL_ENV_PROMPT -fi - -# Call hash to forget past commands. Without forgetting -# past commands the $PATH changes we made may not be respected -hash -r 2> /dev/null diff --git a/battlesnake-service/.venv/bin/activate.csh b/battlesnake-service/.venv/bin/activate.csh deleted file mode 100644 index 58cc208..0000000 --- a/battlesnake-service/.venv/bin/activate.csh +++ /dev/null @@ -1,27 +0,0 @@ -# This file must be used with "source bin/activate.csh" *from csh*. -# You cannot run it directly. - -# Created by Davide Di Blasi . -# Ported to Python 3.3 venv by Andrew Svetlov - -alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; unsetenv VIRTUAL_ENV_PROMPT; test "\!:*" != "nondestructive" && unalias deactivate' - -# Unset irrelevant variables. -deactivate nondestructive - -setenv VIRTUAL_ENV /home/singh/development/bytecamp/battlesnake-service/.venv - -set _OLD_VIRTUAL_PATH="$PATH" -setenv PATH "$VIRTUAL_ENV/"bin":$PATH" - - -set _OLD_VIRTUAL_PROMPT="$prompt" - -if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then - set prompt = '(.venv) '"$prompt" - setenv VIRTUAL_ENV_PROMPT '(.venv) ' -endif - -alias pydoc python -m pydoc - -rehash diff --git a/battlesnake-service/.venv/bin/activate.fish b/battlesnake-service/.venv/bin/activate.fish deleted file mode 100644 index 9e93ead..0000000 --- a/battlesnake-service/.venv/bin/activate.fish +++ /dev/null @@ -1,69 +0,0 @@ -# This file must be used with "source /bin/activate.fish" *from fish* -# (https://fishshell.com/). You cannot run it directly. - -function deactivate -d "Exit virtual environment and return to normal shell environment" - # reset old environment variables - if test -n "$_OLD_VIRTUAL_PATH" - set -gx PATH $_OLD_VIRTUAL_PATH - set -e _OLD_VIRTUAL_PATH - end - if test -n "$_OLD_VIRTUAL_PYTHONHOME" - set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME - set -e _OLD_VIRTUAL_PYTHONHOME - end - - if test -n "$_OLD_FISH_PROMPT_OVERRIDE" - set -e _OLD_FISH_PROMPT_OVERRIDE - # prevents error when using nested fish instances (Issue #93858) - if functions -q _old_fish_prompt - functions -e fish_prompt - functions -c _old_fish_prompt fish_prompt - functions -e _old_fish_prompt - end - end - - set -e VIRTUAL_ENV - set -e VIRTUAL_ENV_PROMPT - if test "$argv[1]" != "nondestructive" - # Self-destruct! - functions -e deactivate - end -end - -# Unset irrelevant variables. -deactivate nondestructive - -set -gx VIRTUAL_ENV /home/singh/development/bytecamp/battlesnake-service/.venv - -set -gx _OLD_VIRTUAL_PATH $PATH -set -gx PATH "$VIRTUAL_ENV/"bin $PATH - -# Unset PYTHONHOME if set. -if set -q PYTHONHOME - set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME - set -e PYTHONHOME -end - -if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" - # fish uses a function instead of an env var to generate the prompt. - - # Save the current fish_prompt function as the function _old_fish_prompt. - functions -c fish_prompt _old_fish_prompt - - # With the original prompt function renamed, we can override with our own. - function fish_prompt - # Save the return status of the last command. - set -l old_status $status - - # Output the venv prompt; color taken from the blue of the Python logo. - printf "%s%s%s" (set_color 4B8BBE) '(.venv) ' (set_color normal) - - # Restore the return status of the previous command. - echo "exit $old_status" | . - # Output the original/"old" prompt. - _old_fish_prompt - end - - set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" - set -gx VIRTUAL_ENV_PROMPT '(.venv) ' -end diff --git a/battlesnake-service/.venv/bin/flask b/battlesnake-service/.venv/bin/flask deleted file mode 100755 index c997a3a..0000000 --- a/battlesnake-service/.venv/bin/flask +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/singh/development/bytecamp/battlesnake-service/.venv/bin/python3 -# -*- coding: utf-8 -*- -import re -import sys -from flask.cli import main -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/battlesnake-service/.venv/bin/normalizer b/battlesnake-service/.venv/bin/normalizer deleted file mode 100755 index 664f449..0000000 --- a/battlesnake-service/.venv/bin/normalizer +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/singh/development/bytecamp/battlesnake-service/.venv/bin/python3 -# -*- coding: utf-8 -*- -import re -import sys -from charset_normalizer import cli -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(cli.cli_detect()) diff --git a/battlesnake-service/.venv/bin/pip b/battlesnake-service/.venv/bin/pip deleted file mode 100755 index 61bf44e..0000000 --- a/battlesnake-service/.venv/bin/pip +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/singh/development/bytecamp/battlesnake-service/.venv/bin/python3 -# -*- coding: utf-8 -*- -import re -import sys -from pip._internal.cli.main import main -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/battlesnake-service/.venv/bin/pip3 b/battlesnake-service/.venv/bin/pip3 deleted file mode 100755 index 61bf44e..0000000 --- a/battlesnake-service/.venv/bin/pip3 +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/singh/development/bytecamp/battlesnake-service/.venv/bin/python3 -# -*- coding: utf-8 -*- -import re -import sys -from pip._internal.cli.main import main -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/battlesnake-service/.venv/bin/pip3.12 b/battlesnake-service/.venv/bin/pip3.12 deleted file mode 100755 index 61bf44e..0000000 --- a/battlesnake-service/.venv/bin/pip3.12 +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/singh/development/bytecamp/battlesnake-service/.venv/bin/python3 -# -*- coding: utf-8 -*- -import re -import sys -from pip._internal.cli.main import main -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/battlesnake-service/.venv/bin/python b/battlesnake-service/.venv/bin/python deleted file mode 120000 index b8a0adb..0000000 --- a/battlesnake-service/.venv/bin/python +++ /dev/null @@ -1 +0,0 @@ -python3 \ No newline at end of file diff --git a/battlesnake-service/.venv/bin/python3 b/battlesnake-service/.venv/bin/python3 deleted file mode 120000 index ae65fda..0000000 --- a/battlesnake-service/.venv/bin/python3 +++ /dev/null @@ -1 +0,0 @@ -/usr/bin/python3 \ No newline at end of file diff --git a/battlesnake-service/.venv/bin/python3.12 b/battlesnake-service/.venv/bin/python3.12 deleted file mode 120000 index b8a0adb..0000000 --- a/battlesnake-service/.venv/bin/python3.12 +++ /dev/null @@ -1 +0,0 @@ -python3 \ No newline at end of file diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/INSTALLER b/battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/LICENSE.txt b/battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/LICENSE.txt deleted file mode 100644 index 9d227a0..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/LICENSE.txt +++ /dev/null @@ -1,28 +0,0 @@ -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/battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/METADATA b/battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/METADATA deleted file mode 100644 index 82261f2..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/METADATA +++ /dev/null @@ -1,92 +0,0 @@ -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/battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/RECORD b/battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/RECORD deleted file mode 100644 index b7ba0b7..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/RECORD +++ /dev/null @@ -1,14 +0,0 @@ -MarkupSafe-3.0.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -MarkupSafe-3.0.2.dist-info/LICENSE.txt,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475 -MarkupSafe-3.0.2.dist-info/METADATA,sha256=aAwbZhSmXdfFuMM-rEHpeiHRkBOGESyVLJIuwzHP-nw,3975 -MarkupSafe-3.0.2.dist-info/RECORD,, -MarkupSafe-3.0.2.dist-info/WHEEL,sha256=OVgtqZzfzIXXtylXP90gxCZ6CKBCwKYyHM8PpMEjN1M,151 -MarkupSafe-3.0.2.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11 -markupsafe/__init__.py,sha256=sr-U6_27DfaSrj5jnHYxWN-pvhM27sjlDplMDPZKm7k,13214 -markupsafe/__pycache__/__init__.cpython-312.pyc,, -markupsafe/__pycache__/_native.cpython-312.pyc,, -markupsafe/_native.py,sha256=hSLs8Jmz5aqayuengJJ3kdT5PwNpBWpKrmQSdipndC8,210 -markupsafe/_speedups.c,sha256=O7XulmTo-epI6n2FtMVOrJXl8EAaIwD2iNYmBI5SEoQ,4149 -markupsafe/_speedups.cpython-312-x86_64-linux-gnu.so,sha256=t1DBZlpsjFA30BOOvXfXfT1wvO_4cS16VbHz1-49q5U,43432 -markupsafe/_speedups.pyi,sha256=ENd1bYe7gbBUf2ywyYWOGUpnXOHNJ-cgTNqetlW8h5k,41 -markupsafe/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/WHEEL b/battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/WHEEL deleted file mode 100644 index 057fef6..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: setuptools (75.2.0) -Root-Is-Purelib: false -Tag: cp312-cp312-manylinux_2_17_x86_64 -Tag: cp312-cp312-manylinux2014_x86_64 - diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/top_level.txt b/battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/top_level.txt deleted file mode 100644 index 75bf729..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/MarkupSafe-3.0.2.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -markupsafe diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/README.rst b/battlesnake-service/.venv/lib/python3.12/site-packages/README.rst deleted file mode 100644 index 741f2ad..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/README.rst +++ /dev/null @@ -1 +0,0 @@ -This is a dummy package designed to prevent namesquatting on PyPI. You should install `beautifulsoup4 `_ instead. diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/__pycache__/typing_extensions.cpython-312.pyc b/battlesnake-service/.venv/lib/python3.12/site-packages/__pycache__/typing_extensions.cpython-312.pyc deleted file mode 100644 index e92265c834390ca9b5a18db1856d80a0f5b6b829..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139510 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≺;+O|6_$qg? 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 azYFoZ3BMcho8PVS_HEtxUX9<~mj4Swsa_QT diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/INSTALLER b/battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/METADATA b/battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/METADATA deleted file mode 100644 index 69be300..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/METADATA +++ /dev/null @@ -1,123 +0,0 @@ -Metadata-Version: 2.4 -Name: beautifulsoup4 -Version: 4.13.3 -Summary: Screen-scraping library -Project-URL: Download, https://www.crummy.com/software/BeautifulSoup/bs4/download/ -Project-URL: Homepage, https://www.crummy.com/software/BeautifulSoup/bs4/ -Author-email: Leonard Richardson -License: MIT License -License-File: AUTHORS -License-File: LICENSE -Keywords: HTML,XML,parse,soup -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Classifier: Topic :: Text Processing :: Markup :: HTML -Classifier: Topic :: Text Processing :: Markup :: SGML -Classifier: Topic :: Text Processing :: Markup :: XML -Requires-Python: >=3.7.0 -Requires-Dist: soupsieve>1.2 -Requires-Dist: typing-extensions>=4.0.0 -Provides-Extra: cchardet -Requires-Dist: cchardet; extra == 'cchardet' -Provides-Extra: chardet -Requires-Dist: chardet; extra == 'chardet' -Provides-Extra: charset-normalizer -Requires-Dist: charset-normalizer; extra == 'charset-normalizer' -Provides-Extra: html5lib -Requires-Dist: html5lib; extra == 'html5lib' -Provides-Extra: lxml -Requires-Dist: lxml; extra == 'lxml' -Description-Content-Type: text/markdown - -Beautiful Soup is a library that makes it easy to scrape information -from web pages. It sits atop an HTML or XML parser, providing Pythonic -idioms for iterating, searching, and modifying the parse tree. - -# Quick start - -``` ->>> from bs4 import BeautifulSoup ->>> soup = BeautifulSoup("

SomebadHTML") ->>> print(soup.prettify()) - - -

- Some - - bad - - HTML - - -

- - ->>> soup.find(string="bad") -'bad' ->>> soup.i -HTML -# ->>> soup = BeautifulSoup("SomebadXML", "xml") -# ->>> print(soup.prettify()) - - - Some - - bad - - XML - - -``` - -To go beyond the basics, [comprehensive documentation is available](https://www.crummy.com/software/BeautifulSoup/bs4/doc/). - -# Links - -* [Homepage](https://www.crummy.com/software/BeautifulSoup/bs4/) -* [Documentation](https://www.crummy.com/software/BeautifulSoup/bs4/doc/) -* [Discussion group](https://groups.google.com/group/beautifulsoup/) -* [Development](https://code.launchpad.net/beautifulsoup/) -* [Bug tracker](https://bugs.launchpad.net/beautifulsoup/) -* [Complete changelog](https://git.launchpad.net/beautifulsoup/tree/CHANGELOG) - -# Note on Python 2 sunsetting - -Beautiful Soup's support for Python 2 was discontinued on December 31, -2020: one year after the sunset date for Python 2 itself. From this -point onward, new Beautiful Soup development will exclusively target -Python 3. The final release of Beautiful Soup 4 to support Python 2 -was 4.9.3. - -# Supporting the project - -If you use Beautiful Soup as part of your professional work, please consider a -[Tidelift subscription](https://tidelift.com/subscription/pkg/pypi-beautifulsoup4?utm_source=pypi-beautifulsoup4&utm_medium=referral&utm_campaign=readme). -This will support many of the free software projects your organization -depends on, not just Beautiful Soup. - -If you use Beautiful Soup for personal projects, the best way to say -thank you is to read -[Tool Safety](https://www.crummy.com/software/BeautifulSoup/zine/), a zine I -wrote about what Beautiful Soup has taught me about software -development. - -# Building the documentation - -The bs4/doc/ directory contains full documentation in Sphinx -format. Run `make html` in that directory to create HTML -documentation. - -# Running the unit tests - -Beautiful Soup supports unit test discovery using Pytest: - -``` -$ pytest -``` - diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/RECORD b/battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/RECORD deleted file mode 100644 index a3efc0d..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/RECORD +++ /dev/null @@ -1,89 +0,0 @@ -beautifulsoup4-4.13.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -beautifulsoup4-4.13.3.dist-info/METADATA,sha256=o692i819qmuScSS6UxoBFAi2xPSl8bk2V6TuQ3zBofs,3809 -beautifulsoup4-4.13.3.dist-info/RECORD,, -beautifulsoup4-4.13.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87 -beautifulsoup4-4.13.3.dist-info/licenses/AUTHORS,sha256=6-a5uw17L-xMAg7-R3iVPGKH_OwwacpjRkuOVPjAeyw,2198 -beautifulsoup4-4.13.3.dist-info/licenses/LICENSE,sha256=VbTY1LHlvIbRDvrJG3TIe8t3UmsPW57a-LnNKtxzl7I,1441 -bs4/__init__.py,sha256=-jvrE9GBtzsOF3wIrIOALQTqu99mf9_gEhNFJMCQLeg,44212 -bs4/__pycache__/__init__.cpython-312.pyc,, -bs4/__pycache__/_deprecation.cpython-312.pyc,, -bs4/__pycache__/_typing.cpython-312.pyc,, -bs4/__pycache__/_warnings.cpython-312.pyc,, -bs4/__pycache__/css.cpython-312.pyc,, -bs4/__pycache__/dammit.cpython-312.pyc,, -bs4/__pycache__/diagnose.cpython-312.pyc,, -bs4/__pycache__/element.cpython-312.pyc,, -bs4/__pycache__/exceptions.cpython-312.pyc,, -bs4/__pycache__/filter.cpython-312.pyc,, -bs4/__pycache__/formatter.cpython-312.pyc,, -bs4/_deprecation.py,sha256=ucZjfBAUF1B0f5ldNIIhlkHsYjHtvwELWlE3_pAR6Vs,2394 -bs4/_typing.py,sha256=3FgPPPrdsTa-kvn1R36o1k_2SfilcUWm4M9i7G4qFl8,7118 -bs4/_warnings.py,sha256=ZuOETgcnEbZgw2N0nnNXn6wvtrn2ut7AF0d98bvkMFc,4711 -bs4/builder/__init__.py,sha256=TYAKmGFuVfTsI53reHijcZKETnPuvse57KZ6LsZsJRo,31130 -bs4/builder/__pycache__/__init__.cpython-312.pyc,, -bs4/builder/__pycache__/_html5lib.cpython-312.pyc,, -bs4/builder/__pycache__/_htmlparser.cpython-312.pyc,, -bs4/builder/__pycache__/_lxml.cpython-312.pyc,, -bs4/builder/_html5lib.py,sha256=3MXq29SYg9XoS9gu2hgTDU02IQkv8kIBx3rW1QWY3fg,22846 -bs4/builder/_htmlparser.py,sha256=cu9PFkxkqVIIe9nU3fVy-JJhINEhY8cGbsuCwZCnQCA,17872 -bs4/builder/_lxml.py,sha256=XRzCA4WzvIUjJk9_U4kWzMBvGokr_UaIvoGUmtLtTYI,18538 -bs4/css.py,sha256=XGQq7HQUDyYEbDorFMGIGek7QGPiFuZYnvNEQ59GyxM,12685 -bs4/dammit.py,sha256=oHd1elJ44kMobBGSQRuG7Wln6M-BLz1unOuUscaL9h0,51472 -bs4/diagnose.py,sha256=zy7_GPQHsTtNf8s10WWIRcC5xH5_8LKs295Aa7iFUyI,7832 -bs4/element.py,sha256=8CXiRqz2DZJyga2igCVGaXdP7urNEDvDnsRid3SNNw4,109331 -bs4/exceptions.py,sha256=Q9FOadNe8QRvzDMaKSXe2Wtl8JK_oAZW7mbFZBVP_GE,951 -bs4/filter.py,sha256=2_ydSe978oLVmVyNLBi09Cc1VJEXYVjuO6K4ALq6XFk,28819 -bs4/formatter.py,sha256=5O4gBxTTi5TLU6TdqsgYI9Io0Gc_6-oCAWpfHI3Thn0,10464 -bs4/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -bs4/tests/__init__.py,sha256=Heh-lB8w8mzpaWcgs7MRwkBnDcf1YxAvqvePmsej1Pc,52268 -bs4/tests/__pycache__/__init__.cpython-312.pyc,, -bs4/tests/__pycache__/test_builder.cpython-312.pyc,, -bs4/tests/__pycache__/test_builder_registry.cpython-312.pyc,, -bs4/tests/__pycache__/test_css.cpython-312.pyc,, -bs4/tests/__pycache__/test_dammit.cpython-312.pyc,, -bs4/tests/__pycache__/test_element.cpython-312.pyc,, -bs4/tests/__pycache__/test_filter.cpython-312.pyc,, -bs4/tests/__pycache__/test_formatter.cpython-312.pyc,, -bs4/tests/__pycache__/test_fuzz.cpython-312.pyc,, -bs4/tests/__pycache__/test_html5lib.cpython-312.pyc,, -bs4/tests/__pycache__/test_htmlparser.cpython-312.pyc,, -bs4/tests/__pycache__/test_lxml.cpython-312.pyc,, -bs4/tests/__pycache__/test_navigablestring.cpython-312.pyc,, -bs4/tests/__pycache__/test_pageelement.cpython-312.pyc,, -bs4/tests/__pycache__/test_soup.cpython-312.pyc,, -bs4/tests/__pycache__/test_tag.cpython-312.pyc,, -bs4/tests/__pycache__/test_tree.cpython-312.pyc,, -bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4670634698080256.testcase,sha256=yUdXkbpNK7LVOQ0LBHMoqZ1rWaBfSXWytoO_xdSm7Ho,15 -bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4818336571064320.testcase,sha256=Uv_dx4a43TSfoNkjU-jHW2nSXkqHFg4XdAw7SWVObUk,23 -bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4999465949331456.testcase,sha256=OEyVA0Ej4FxswOElrUNt0In4s4YhrmtaxE_NHGZvGtg,30 -bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5000587759190016.testcase,sha256=G4vpNBOz-RwMpi6ewEgNEa13zX0sXhmL7VHOyIcdKVQ,15347 -bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5167584867909632.testcase,sha256=3d8z65o4p7Rur-RmCHoOjzqaYQ8EAtjmiBYTHNyAdl4,19469 -bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5270998950477824.testcase,sha256=NfGIlit1k40Ip3mlnBkYOkIDJX6gHtjlErwl7gsBjAQ,12 -bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5375146639360000.testcase,sha256=xy4i1U0nhFHcnyc5pRKS6JRMvuoCNUur-Scor6UxIGw,4317 -bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5492400320282624.testcase,sha256=Q-UTYpQBUsWoMgIUspUlzveSI-41s4ABC3jajRb-K0o,11502 -bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase,sha256=2bq3S8KxZgk8EajLReHD8m4_0Lj_nrkyJAxB_z_U0D0,5 -bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5843991618256896.testcase,sha256=MZDu31LPLfgu6jP9IZkrlwNes3f_sL8WFP5BChkUKdY,35 -bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5984173902397440.testcase,sha256=w58r-s6besG5JwPXpnz37W2YTj9-_qxFbk6hiEnKeIQ,51495 -bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6124268085182464.testcase,sha256=q8rkdMECEXKcqVhOf5zWHkSBTQeOPt0JiLg2TZiPCuk,10380 -bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6241471367348224.testcase,sha256=QfzoOxKwNuqG-4xIrea6MOQLXhfAAOQJ0r9u-J6kSNs,19 -bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6306874195312640.testcase,sha256=MJ2pHFuuCQUiQz1Kor2sof7LWeRERQ6QK43YNqQHg9o,47 -bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6450958476902400.testcase,sha256=EItOpSdeD4ewK-qgJ9vtxennwn_huguzXgctrUT7fqE,3546 -bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6600557255327744.testcase,sha256=a2aJTG4FceGSJXsjtxoS8S4jk_8rZsS3aznLkeO2_dY,124 -bs4/tests/fuzz/crash-0d306a50c8ed8bcd0785b67000fcd5dea1d33f08.testcase,sha256=jRFRtCKlP3-3EDLc_iVRTcE6JNymv0rYcVM6qRaPrxI,2607 -bs4/tests/fuzz/crash-ffbdfa8a2b26f13537b68d3794b0478a4090ee4a.testcase,sha256=7NsdCiXWAhNkmoW1pvF7rbZExyLAQIWtDtSHXIsH6YU,103 -bs4/tests/test_builder.py,sha256=BBMBirb4mb-fVdJj4dxQCxrdcjQeulKSKBFrPFVpVOk,1095 -bs4/tests/test_builder_registry.py,sha256=tpJ5Niva_cF49SdzIb1gMo0W4Tiodr8BYSOE3O6P_g8,5064 -bs4/tests/test_css.py,sha256=T_HCMzpe6hTr8d2YFXm0DScr8gT8d6h0MYlhZfo6A4U,18625 -bs4/tests/test_dammit.py,sha256=TQCVe6kKVYSuYjwTtIvIaOYYmWYPMnR_3PK45kimLg4,17840 -bs4/tests/test_element.py,sha256=u7FbTtKE6pYJetD1PgS3fCU1-QQXfB7GaLwfI3s4ROY,4373 -bs4/tests/test_filter.py,sha256=Sie2l-vepWTAqlXJJpG0Qp4HD8HHSi2TC1XymCxws70,27032 -bs4/tests/test_formatter.py,sha256=a6TaeNOVeg_ZYseiP7atmFyYJkQJqlk-jlVxMlyJC2o,6943 -bs4/tests/test_fuzz.py,sha256=zyaoWgCt8hnRkXecBYM9x91fI_Ao9eQUcsBi76ooJ08,7123 -bs4/tests/test_html5lib.py,sha256=ljMOAds__k9zhfT4jVnxxhZkLEggaT7wqDexzDNwus4,9206 -bs4/tests/test_htmlparser.py,sha256=iDHEI69GcisNP48BeHdLAWlqPGhrBwxftnUM8_3nsR4,6662 -bs4/tests/test_lxml.py,sha256=4fZIsNVbm2zdRQFNNwD-lqwf_QtUtiU4QbtLXISQZBw,7453 -bs4/tests/test_navigablestring.py,sha256=ntfnbp8-sRAOoCCVbm4cCXatS7kmCOaIRFDj-v5-l0s,5096 -bs4/tests/test_pageelement.py,sha256=lAw-sVP3zJX0VdHXXN1Ia3tci5dgK10Gac5o9G46IIk,16195 -bs4/tests/test_soup.py,sha256=I-mhNheo2-PTvfJToDI43EO4RmGlpKJsYOS19YoQ7-8,22669 -bs4/tests/test_tag.py,sha256=ue32hxQs_a1cMuzyu7MNjK42t0IOGMA6POPLIArMOts,9690 -bs4/tests/test_tree.py,sha256=vgUa6x8AJFEvHQ7RQu0973wrsLCRdRpdtq4oZAa_ANA,54839 diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/WHEEL b/battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/WHEEL deleted file mode 100644 index 12228d4..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/WHEEL +++ /dev/null @@ -1,4 +0,0 @@ -Wheel-Version: 1.0 -Generator: hatchling 1.27.0 -Root-Is-Purelib: true -Tag: py3-none-any diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/licenses/AUTHORS b/battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/licenses/AUTHORS deleted file mode 100644 index 587a979..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/licenses/AUTHORS +++ /dev/null @@ -1,49 +0,0 @@ -Behold, mortal, the origins of Beautiful Soup... -================================================ - -Leonard Richardson is the primary maintainer. - -Aaron DeVore, Isaac Muse and Chris Papademetrious have made -significant contributions to the code base. - -Mark Pilgrim provided the encoding detection code that forms the base -of UnicodeDammit. - -Thomas Kluyver and Ezio Melotti finished the work of getting Beautiful -Soup 4 working under Python 3. - -Simon Willison wrote soupselect, which was used to make Beautiful Soup -support CSS selectors. Isaac Muse wrote SoupSieve, which made it -possible to _remove_ the CSS selector code from Beautiful Soup. - -Sam Ruby helped with a lot of edge cases. - -Jonathan Ellis was awarded the prestigious Beau Potage D'Or for his -work in solving the nestable tags conundrum. - -An incomplete list of people have contributed patches to Beautiful -Soup: - - Istvan Albert, Andrew Lin, Anthony Baxter, Oliver Beattie, Andrew -Boyko, Tony Chang, Francisco Canas, "Delong", Zephyr Fang, Fuzzy, -Roman Gaufman, Yoni Gilad, Richie Hindle, Toshihiro Kamiya, Peteris -Krumins, Kent Johnson, Marek Kapolka, Andreas Kostyrka, Roel Kramer, -Ben Last, Robert Leftwich, Stefaan Lippens, "liquider", Staffan -Malmgren, Ksenia Marasanova, JP Moins, Adam Monsen, John Nagle, "Jon", -Ed Oskiewicz, Martijn Peters, Greg Phillips, Giles Radford, Stefano -Revera, Arthur Rudolph, Marko Samastur, James Salter, Jouni Seppänen, -Alexander Schmolck, Tim Shirley, Geoffrey Sneddon, Ville Skyttä, -"Vikas", Jens Svalgaard, Andy Theyers, Eric Weiser, Glyn Webster, John -Wiseman, Paul Wright, Danny Yoo - -An incomplete list of people who made suggestions or found bugs or -found ways to break Beautiful Soup: - - Hanno Böck, Matteo Bertini, Chris Curvey, Simon Cusack, Bruce Eckel, - Matt Ernst, Michael Foord, Tom Harris, Bill de hOra, Donald Howes, - Matt Patterson, Scott Roberts, Steve Strassmann, Mike Williams, - warchild at redho dot com, Sami Kuisma, Carlos Rocha, Bob Hutchison, - Joren Mc, Michal Migurski, John Kleven, Tim Heaney, Tripp Lilley, Ed - Summers, Dennis Sutch, Chris Smith, Aaron Swartz, Stuart - Turner, Greg Edwards, Kevin J Kalupson, Nikos Kouremenos, Artur de - Sousa Rocha, Yichun Wei, Per Vognsen diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/licenses/LICENSE b/battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/licenses/LICENSE deleted file mode 100644 index 08e3a9c..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.3.dist-info/licenses/LICENSE +++ /dev/null @@ -1,31 +0,0 @@ -Beautiful Soup is made available under the MIT license: - - Copyright (c) Leonard Richardson - - 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. - -Beautiful Soup incorporates code from the html5lib library, which is -also made available under the MIT license. Copyright (c) James Graham -and other contributors - -Beautiful Soup has an optional dependency on the soupsieve library, -which is also made available under the MIT license. Copyright (c) -Isaac Muse diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/blinker-1.9.0.dist-info/INSTALLER b/battlesnake-service/.venv/lib/python3.12/site-packages/blinker-1.9.0.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/blinker-1.9.0.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/blinker-1.9.0.dist-info/LICENSE.txt b/battlesnake-service/.venv/lib/python3.12/site-packages/blinker-1.9.0.dist-info/LICENSE.txt deleted file mode 100644 index 79c9825..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/blinker-1.9.0.dist-info/LICENSE.txt +++ /dev/null @@ -1,20 +0,0 @@ -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/battlesnake-service/.venv/lib/python3.12/site-packages/blinker-1.9.0.dist-info/METADATA b/battlesnake-service/.venv/lib/python3.12/site-packages/blinker-1.9.0.dist-info/METADATA deleted file mode 100644 index 6d343f5..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/blinker-1.9.0.dist-info/METADATA +++ /dev/null @@ -1,60 +0,0 @@ -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/battlesnake-service/.venv/lib/python3.12/site-packages/blinker-1.9.0.dist-info/RECORD b/battlesnake-service/.venv/lib/python3.12/site-packages/blinker-1.9.0.dist-info/RECORD deleted file mode 100644 index 7cfb714..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/blinker-1.9.0.dist-info/RECORD +++ /dev/null @@ -1,12 +0,0 @@ -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-312.pyc,, -blinker/__pycache__/_utilities.cpython-312.pyc,, -blinker/__pycache__/base.cpython-312.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/battlesnake-service/.venv/lib/python3.12/site-packages/blinker-1.9.0.dist-info/WHEEL b/battlesnake-service/.venv/lib/python3.12/site-packages/blinker-1.9.0.dist-info/WHEEL deleted file mode 100644 index e3c6fee..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/blinker-1.9.0.dist-info/WHEEL +++ /dev/null @@ -1,4 +0,0 @@ -Wheel-Version: 1.0 -Generator: flit 3.10.1 -Root-Is-Purelib: true -Tag: py3-none-any diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/blinker/__init__.py b/battlesnake-service/.venv/lib/python3.12/site-packages/blinker/__init__.py deleted file mode 100644 index 1772fa4..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/blinker/__init__.py +++ /dev/null @@ -1,17 +0,0 @@ -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/battlesnake-service/.venv/lib/python3.12/site-packages/blinker/__pycache__/__init__.cpython-312.pyc b/battlesnake-service/.venv/lib/python3.12/site-packages/blinker/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index dde1ee5de2326074d341166c2a6af88475f80ff2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 516 zcmaKoy-ve05Xa9=nxw4|Vn9Md48YWZTEGfOyg(NwvKXg6(x{FTC2pmTtSpS|Y&-}P zZ%`={VqinCF>wxpk(2fJ@6PvO`+04x4`g?@Pw6QGcyZ3Jb$)<-UJ=}b0>w1sEM^Q; zM|rxFd$HHDPwdBj%U$Ab+-*4^4&tEYkT{IPmLuXQju@n%dJin_E&Id4n;SP|tARA8 zu+nCQso&^MF6Nz&FKOFQcrEAJ3L|r@OF2Q8KPE?AWT}yw+@5oP&w{^jQ2!(ZRhL>; zfs@clLD{J(A$3L&)?;t@Wn1iof`TI9&<%%oGU zaDlogb2OGGON$ekmpqZyYOIZ%;Q_T@WE1401)2rdS;EVuofhVJba+HPEFREfXEMc_ zCpt4Tthf-F$*d5ga`_dVo!O7>mKG?L7KV>Vmy}s54<^!72_|5IO|(^$t<7|H=59N5c6PmU zx3HVl)L6q-f|Li-KJcK4i6Qtm^u?DpC6Nq}n1~O)K?;HJUtgGMrGJQFQ(4YLUx#SSR8{Y!5jBI3M7nN`xV~$7MNJ+}eEj*f!3R*0$ zz%IFJDV~oDo(y;*pTH=Bh;n}Srt;^z9leReQ$7_zXOJCRK(=x-(xP?P30qx|^JzP2 zr|kGbG@q$OvK@bOb`}Ro)AP#AWKP-hN8v0{QiLt>2{C8iCv2u{2YB2Hb%jt0H@tBU zkW27k1m&@f@{y0=1M`xD^0FNvQCk`YzO6P<5!>=YDj&1sb`%Uzz@QlHDj1}|9&e(H zIG-3p*;Ei4tCb36xBl}f%>sj%=`qb0q(RMdEJ8IlV|v=uRJm}TSZp9WHKl7Gk_s^y zu{FzdU0AFT#U2z5wJqyo?&SfzAuo zb})x%=H;9Q?gh~?#J2P4xq``Yo2Fq7Ou0WkeCTn?ZSgwi}T)jA_CkwM;q<8C2i3<&1Xn>-<(aG^lgua{OAn z*;rNg3X`(3aBd($i3PE+)Ts)xEe7oeobCe<$fISCWFz7r$Su6SgHG<<6{{H898?tg6v(&Pu&D(KJjb<4Vaa+0@12IOa{{j8Qz)`(6F>wQsZ)t#}yK$3u0Cc z6c`f~7%PG5_@!|6MI4)_MzQKa+&RYUn-B)%j9l9=EA6u&5QVu=<;qGPv?xfO9>++lPqhYzW$Co!}iO-i$0r?+UkZO-W z18+tLBBOvJu^KR|p3_AGgz7s2JUYMu4F@Q*-Ldp%+4XH9>G zr%GsEOc+9WQq$uA>IW?SG#JGtCMLj!iSfzFL5+8eNv$FFP!qHm&dYZ4wot6Xp9Qo9 z3XVlV#wxomWDEau(#?VuNE~2Gcp`|gS_S4|fLWkifPX3eo!lqFJApD@s}T5I2rc3@ zBoah;;sy!}n-7j>>TuYLMksd>FJ=EN01qUL@jZ0#FSPd#O5Z_U_fXG0wC@kOWB$~o g_r83uX?-<1kDtW$;=YFnz{YR}cRxNX<9$N+KQozU_5c6? diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/blinker/__pycache__/base.cpython-312.pyc b/battlesnake-service/.venv/lib/python3.12/site-packages/blinker/__pycache__/base.cpython-312.pyc deleted file mode 100644 index b213876683b10d285e4fa394374659d58ba157e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22020 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 Z;gzNXnWh6X9+2OXaA4ix6kQA*{x2T25Ay&3 diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/blinker/_utilities.py b/battlesnake-service/.venv/lib/python3.12/site-packages/blinker/_utilities.py deleted file mode 100644 index 000c902..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/blinker/_utilities.py +++ /dev/null @@ -1,64 +0,0 @@ -from __future__ import annotations - -import collections.abc as c -import inspect -import typing as t -from weakref import ref -from weakref import WeakMethod - -T = t.TypeVar("T") - - -class Symbol: - """A constant symbol, nicer than ``object()``. Repeated calls return the - same instance. - - >>> 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/battlesnake-service/.venv/lib/python3.12/site-packages/blinker/base.py b/battlesnake-service/.venv/lib/python3.12/site-packages/blinker/base.py deleted file mode 100644 index d051b94..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/blinker/base.py +++ /dev/null @@ -1,512 +0,0 @@ -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/battlesnake-service/.venv/lib/python3.12/site-packages/blinker/py.typed b/battlesnake-service/.venv/lib/python3.12/site-packages/blinker/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4-0.0.2.dist-info/INSTALLER b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4-0.0.2.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4-0.0.2.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4-0.0.2.dist-info/METADATA b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4-0.0.2.dist-info/METADATA deleted file mode 100644 index 0eaeb1d..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4-0.0.2.dist-info/METADATA +++ /dev/null @@ -1,10 +0,0 @@ -Metadata-Version: 2.1 -Name: bs4 -Version: 0.0.2 -Summary: Dummy package for Beautiful Soup (beautifulsoup4) -Author-email: Leonard Richardson -License: MIT License -Requires-Dist: beautifulsoup4 -Description-Content-Type: text/x-rst - -This is a dummy package designed to prevent namesquatting on PyPI. You should install `beautifulsoup4 `_ instead. diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4-0.0.2.dist-info/RECORD b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4-0.0.2.dist-info/RECORD deleted file mode 100644 index 3655e41..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4-0.0.2.dist-info/RECORD +++ /dev/null @@ -1,6 +0,0 @@ -README.rst,sha256=KMs4D-t40JC-oge8vGS3O5gueksurGqAIFxPtHZAMXQ,159 -bs4-0.0.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -bs4-0.0.2.dist-info/METADATA,sha256=GEwOSFCOYLu11XQR3O2dMO7ZTpKFZpGoIUG0gkFVgA8,411 -bs4-0.0.2.dist-info/RECORD,, -bs4-0.0.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -bs4-0.0.2.dist-info/WHEEL,sha256=VYAwk8D_V6zmIA2XKK-k7Fem_KAtVk3hugaRru3yjGc,105 diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4-0.0.2.dist-info/REQUESTED b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4-0.0.2.dist-info/REQUESTED deleted file mode 100644 index e69de29..0000000 diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4-0.0.2.dist-info/WHEEL b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4-0.0.2.dist-info/WHEEL deleted file mode 100644 index a5543ba..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4-0.0.2.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: hatchling 1.21.0 -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__init__.py b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__init__.py deleted file mode 100644 index 68a992a..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__init__.py +++ /dev/null @@ -1,1170 +0,0 @@ -"""Beautiful Soup Elixir and Tonic - "The Screen-Scraper's Friend". - -http://www.crummy.com/software/BeautifulSoup/ - -Beautiful Soup uses a pluggable XML or HTML parser to parse a -(possibly invalid) document into a tree representation. Beautiful Soup -provides methods and Pythonic idioms that make it easy to navigate, -search, and modify the parse tree. - -Beautiful Soup works with Python 3.7 and up. It works better if lxml -and/or html5lib is installed, but they are not required. - -For more than you ever wanted to know about Beautiful Soup, see the -documentation: http://www.crummy.com/software/BeautifulSoup/bs4/doc/ -""" - -__author__ = "Leonard Richardson (leonardr@segfault.org)" -__version__ = "4.13.3" -__copyright__ = "Copyright (c) 2004-2025 Leonard Richardson" -# Use of this source code is governed by the MIT license. -__license__ = "MIT" - -__all__ = [ - "AttributeResemblesVariableWarning", - "BeautifulSoup", - "Comment", - "Declaration", - "ProcessingInstruction", - "ResultSet", - "CSS", - "Script", - "Stylesheet", - "Tag", - "TemplateString", - "ElementFilter", - "UnicodeDammit", - "CData", - "Doctype", - - # Exceptions - "FeatureNotFound", - "ParserRejectedMarkup", - "StopParsing", - - # Warnings - "AttributeResemblesVariableWarning", - "GuessedAtParserWarning", - "MarkupResemblesLocatorWarning", - "UnusualUsageWarning", - "XMLParsedAsHTMLWarning", -] - -from collections import Counter -import sys -import warnings - -# The very first thing we do is give a useful error if someone is -# running this code under Python 2. -if sys.version_info.major < 3: - raise ImportError( - "You are trying to use a Python 3-specific version of Beautiful Soup under Python 2. This will not work. The final version of Beautiful Soup to support Python 2 was 4.9.3." - ) - -from .builder import ( - builder_registry, - TreeBuilder, -) -from .builder._htmlparser import HTMLParserTreeBuilder -from .dammit import UnicodeDammit -from .css import CSS -from ._deprecation import ( - _deprecated, -) -from .element import ( - CData, - Comment, - DEFAULT_OUTPUT_ENCODING, - Declaration, - Doctype, - NavigableString, - PageElement, - ProcessingInstruction, - PYTHON_SPECIFIC_ENCODINGS, - ResultSet, - Script, - Stylesheet, - Tag, - TemplateString, -) -from .formatter import Formatter -from .filter import ( - ElementFilter, - SoupStrainer, -) -from typing import ( - Any, - cast, - Counter as CounterType, - Dict, - Iterator, - List, - Sequence, - Optional, - Type, - Union, -) - -from bs4._typing import ( - _Encoding, - _Encodings, - _IncomingMarkup, - _InsertableElement, - _RawAttributeValue, - _RawAttributeValues, - _RawMarkup, -) - -# Import all warnings and exceptions into the main package. -from bs4.exceptions import ( - FeatureNotFound, - ParserRejectedMarkup, - StopParsing, -) -from bs4._warnings import ( - AttributeResemblesVariableWarning, - GuessedAtParserWarning, - MarkupResemblesLocatorWarning, - UnusualUsageWarning, - XMLParsedAsHTMLWarning, -) - - -class BeautifulSoup(Tag): - """A data structure representing a parsed HTML or XML document. - - Most of the methods you'll call on a BeautifulSoup object are inherited from - PageElement or Tag. - - Internally, this class defines the basic interface called by the - tree builders when converting an HTML/XML document into a data - structure. The interface abstracts away the differences between - parsers. To write a new tree builder, you'll need to understand - these methods as a whole. - - These methods will be called by the BeautifulSoup constructor: - * reset() - * feed(markup) - - The tree builder may call these methods from its feed() implementation: - * handle_starttag(name, attrs) # See note about return value - * handle_endtag(name) - * handle_data(data) # Appends to the current data node - * endData(containerClass) # Ends the current data node - - No matter how complicated the underlying parser is, you should be - able to build a tree using 'start tag' events, 'end tag' events, - 'data' events, and "done with data" events. - - If you encounter an empty-element tag (aka a self-closing tag, - like HTML's
tag), call handle_starttag and then - handle_endtag. - """ - - #: Since `BeautifulSoup` subclasses `Tag`, it's possible to treat it as - #: a `Tag` with a `Tag.name`. Hoever, this name makes it clear the - #: `BeautifulSoup` object isn't a real markup tag. - ROOT_TAG_NAME: str = "[document]" - - #: If the end-user gives no indication which tree builder they - #: want, look for one with these features. - DEFAULT_BUILDER_FEATURES: Sequence[str] = ["html", "fast"] - - #: A string containing all ASCII whitespace characters, used in - #: during parsing to detect data chunks that seem 'empty'. - ASCII_SPACES: str = "\x20\x0a\x09\x0c\x0d" - - # FUTURE PYTHON: - element_classes: Dict[Type[PageElement], Type[PageElement]] #: :meta private: - builder: TreeBuilder #: :meta private: - is_xml: bool - known_xml: Optional[bool] - parse_only: Optional[SoupStrainer] #: :meta private: - - # These members are only used while parsing markup. - markup: Optional[_RawMarkup] #: :meta private: - current_data: List[str] #: :meta private: - currentTag: Optional[Tag] #: :meta private: - tagStack: List[Tag] #: :meta private: - open_tag_counter: CounterType[str] #: :meta private: - preserve_whitespace_tag_stack: List[Tag] #: :meta private: - string_container_stack: List[Tag] #: :meta private: - _most_recent_element: Optional[PageElement] #: :meta private: - - #: Beautiful Soup's best guess as to the character encoding of the - #: original document. - original_encoding: Optional[_Encoding] - - #: The character encoding, if any, that was explicitly defined - #: in the original document. This may or may not match - #: `BeautifulSoup.original_encoding`. - declared_html_encoding: Optional[_Encoding] - - #: This is True if the markup that was parsed contains - #: U+FFFD REPLACEMENT_CHARACTER characters which were not present - #: in the original markup. These mark character sequences that - #: could not be represented in Unicode. - contains_replacement_characters: bool - - def __init__( - self, - markup: _IncomingMarkup = "", - features: Optional[Union[str, Sequence[str]]] = None, - builder: Optional[Union[TreeBuilder, Type[TreeBuilder]]] = None, - parse_only: Optional[SoupStrainer] = None, - from_encoding: Optional[_Encoding] = None, - exclude_encodings: Optional[_Encodings] = None, - element_classes: Optional[Dict[Type[PageElement], Type[PageElement]]] = None, - **kwargs: Any, - ): - """Constructor. - - :param markup: A string or a file-like object representing - markup to be parsed. - - :param features: Desirable features of the parser to be - used. This may be the name of a specific parser ("lxml", - "lxml-xml", "html.parser", or "html5lib") or it may be the - type of markup to be used ("html", "html5", "xml"). It's - recommended that you name a specific parser, so that - Beautiful Soup gives you the same results across platforms - and virtual environments. - - :param builder: A TreeBuilder subclass to instantiate (or - instance to use) instead of looking one up based on - `features`. You only need to use this if you've implemented a - custom TreeBuilder. - - :param parse_only: A SoupStrainer. Only parts of the document - matching the SoupStrainer will be considered. This is useful - when parsing part of a document that would otherwise be too - large to fit into memory. - - :param from_encoding: A string indicating the encoding of the - document to be parsed. Pass this in if Beautiful Soup is - guessing wrongly about the document's encoding. - - :param exclude_encodings: A list of strings indicating - encodings known to be wrong. Pass this in if you don't know - the document's encoding but you know Beautiful Soup's guess is - wrong. - - :param element_classes: A dictionary mapping BeautifulSoup - classes like Tag and NavigableString, to other classes you'd - like to be instantiated instead as the parse tree is - built. This is useful for subclassing Tag or NavigableString - to modify default behavior. - - :param kwargs: For backwards compatibility purposes, the - constructor accepts certain keyword arguments used in - Beautiful Soup 3. None of these arguments do anything in - Beautiful Soup 4; they will result in a warning and then be - ignored. - - Apart from this, any keyword arguments passed into the - BeautifulSoup constructor are propagated to the TreeBuilder - constructor. This makes it possible to configure a - TreeBuilder by passing in arguments, not just by saying which - one to use. - """ - if "convertEntities" in kwargs: - del kwargs["convertEntities"] - warnings.warn( - "BS4 does not respect the convertEntities argument to the " - "BeautifulSoup constructor. Entities are always converted " - "to Unicode characters." - ) - - if "markupMassage" in kwargs: - del kwargs["markupMassage"] - warnings.warn( - "BS4 does not respect the markupMassage argument to the " - "BeautifulSoup constructor. The tree builder is responsible " - "for any necessary markup massage." - ) - - if "smartQuotesTo" in kwargs: - del kwargs["smartQuotesTo"] - warnings.warn( - "BS4 does not respect the smartQuotesTo argument to the " - "BeautifulSoup constructor. Smart quotes are always converted " - "to Unicode characters." - ) - - if "selfClosingTags" in kwargs: - del kwargs["selfClosingTags"] - warnings.warn( - "Beautiful Soup 4 does not respect the selfClosingTags argument to the " - "BeautifulSoup constructor. The tree builder is responsible " - "for understanding self-closing tags." - ) - - if "isHTML" in kwargs: - del kwargs["isHTML"] - warnings.warn( - "Beautiful Soup 4 does not respect the isHTML argument to the " - "BeautifulSoup constructor. Suggest you use " - "features='lxml' for HTML and features='lxml-xml' for " - "XML." - ) - - def deprecated_argument(old_name: str, new_name: str) -> Optional[Any]: - if old_name in kwargs: - warnings.warn( - 'The "%s" argument to the BeautifulSoup constructor ' - 'was renamed to "%s" in Beautiful Soup 4.0.0' - % (old_name, new_name), - DeprecationWarning, - stacklevel=3, - ) - return kwargs.pop(old_name) - return None - - parse_only = parse_only or deprecated_argument("parseOnlyThese", "parse_only") - if parse_only is not None: - # Issue a warning if we can tell in advance that - # parse_only will exclude the entire tree. - if parse_only.excludes_everything: - warnings.warn( - f"The given value for parse_only will exclude everything: {parse_only}", - UserWarning, - stacklevel=3, - ) - - from_encoding = from_encoding or deprecated_argument( - "fromEncoding", "from_encoding" - ) - - if from_encoding and isinstance(markup, str): - warnings.warn( - "You provided Unicode markup but also provided a value for from_encoding. Your from_encoding will be ignored." - ) - from_encoding = None - - self.element_classes = element_classes or dict() - - # We need this information to track whether or not the builder - # was specified well enough that we can omit the 'you need to - # specify a parser' warning. - original_builder = builder - original_features = features - - builder_class: Type[TreeBuilder] - if isinstance(builder, type): - # A builder class was passed in; it needs to be instantiated. - builder_class = builder - builder = None - elif builder is None: - if isinstance(features, str): - features = [features] - if features is None or len(features) == 0: - features = self.DEFAULT_BUILDER_FEATURES - possible_builder_class = builder_registry.lookup(*features) - if possible_builder_class is None: - raise FeatureNotFound( - "Couldn't find a tree builder with the features you " - "requested: %s. Do you need to install a parser library?" - % ",".join(features) - ) - builder_class = possible_builder_class - - # At this point either we have a TreeBuilder instance in - # builder, or we have a builder_class that we can instantiate - # with the remaining **kwargs. - if builder is None: - builder = builder_class(**kwargs) - if ( - not original_builder - and not ( - original_features == builder.NAME - or ( - isinstance(original_features, str) - and original_features in builder.ALTERNATE_NAMES - ) - ) - and markup - ): - # The user did not tell us which TreeBuilder to use, - # and we had to guess. Issue a warning. - if builder.is_xml: - markup_type = "XML" - else: - markup_type = "HTML" - - # This code adapted from warnings.py so that we get the same line - # of code as our warnings.warn() call gets, even if the answer is wrong - # (as it may be in a multithreading situation). - caller = None - try: - caller = sys._getframe(1) - except ValueError: - pass - if caller: - globals = caller.f_globals - line_number = caller.f_lineno - else: - globals = sys.__dict__ - line_number = 1 - filename = globals.get("__file__") - if filename: - fnl = filename.lower() - if fnl.endswith((".pyc", ".pyo")): - filename = filename[:-1] - if filename: - # If there is no filename at all, the user is most likely in a REPL, - # and the warning is not necessary. - values = dict( - filename=filename, - line_number=line_number, - parser=builder.NAME, - markup_type=markup_type, - ) - warnings.warn( - GuessedAtParserWarning.MESSAGE % values, - GuessedAtParserWarning, - stacklevel=2, - ) - else: - if kwargs: - warnings.warn( - "Keyword arguments to the BeautifulSoup constructor will be ignored. These would normally be passed into the TreeBuilder constructor, but a TreeBuilder instance was passed in as `builder`." - ) - - self.builder = builder - self.is_xml = builder.is_xml - self.known_xml = self.is_xml - self._namespaces = dict() - self.parse_only = parse_only - - if hasattr(markup, "read"): # It's a file-type object. - markup = markup.read() - elif not isinstance(markup, (bytes, str)) and not hasattr(markup, "__len__"): - raise TypeError( - f"Incoming markup is of an invalid type: {markup!r}. Markup must be a string, a bytestring, or an open filehandle." - ) - elif len(markup) <= 256 and ( - (isinstance(markup, bytes) and b"<" not in markup and b"\n" not in markup) - or (isinstance(markup, str) and "<" not in markup and "\n" not in markup) - ): - # Issue warnings for a couple beginner problems - # involving passing non-markup to Beautiful Soup. - # Beautiful Soup will still parse the input as markup, - # since that is sometimes the intended behavior. - if not self._markup_is_url(markup): - self._markup_resembles_filename(markup) - - # At this point we know markup is a string or bytestring. If - # it was a file-type object, we've read from it. - markup = cast(_RawMarkup, markup) - - rejections = [] - success = False - for ( - self.markup, - self.original_encoding, - self.declared_html_encoding, - self.contains_replacement_characters, - ) in self.builder.prepare_markup( - markup, from_encoding, exclude_encodings=exclude_encodings - ): - self.reset() - self.builder.initialize_soup(self) - try: - self._feed() - success = True - break - except ParserRejectedMarkup as e: - rejections.append(e) - pass - - if not success: - other_exceptions = [str(e) for e in rejections] - raise ParserRejectedMarkup( - "The markup you provided was rejected by the parser. Trying a different parser or a different encoding may help.\n\nOriginal exception(s) from parser:\n " - + "\n ".join(other_exceptions) - ) - - # Clear out the markup and remove the builder's circular - # reference to this object. - self.markup = None - self.builder.soup = None - - def copy_self(self) -> "BeautifulSoup": - """Create a new BeautifulSoup object with the same TreeBuilder, - but not associated with any markup. - - This is the first step of the deepcopy process. - """ - clone = type(self)("", None, self.builder) - - # Keep track of the encoding of the original document, - # since we won't be parsing it again. - clone.original_encoding = self.original_encoding - return clone - - def __getstate__(self) -> Dict[str, Any]: - # Frequently a tree builder can't be pickled. - d = dict(self.__dict__) - if "builder" in d and d["builder"] is not None and not self.builder.picklable: - d["builder"] = type(self.builder) - # Store the contents as a Unicode string. - d["contents"] = [] - d["markup"] = self.decode() - - # If _most_recent_element is present, it's a Tag object left - # over from initial parse. It might not be picklable and we - # don't need it. - if "_most_recent_element" in d: - del d["_most_recent_element"] - return d - - def __setstate__(self, state: Dict[str, Any]) -> None: - # If necessary, restore the TreeBuilder by looking it up. - self.__dict__ = state - if isinstance(self.builder, type): - self.builder = self.builder() - elif not self.builder: - # We don't know which builder was used to build this - # parse tree, so use a default we know is always available. - self.builder = HTMLParserTreeBuilder() - self.builder.soup = self - self.reset() - self._feed() - - @classmethod - @_deprecated( - replaced_by="nothing (private method, will be removed)", version="4.13.0" - ) - def _decode_markup(cls, markup: _RawMarkup) -> str: - """Ensure `markup` is Unicode so it's safe to send into warnings.warn. - - warnings.warn had this problem back in 2010 but fortunately - not anymore. This has not been used for a long time; I just - noticed that fact while working on 4.13.0. - """ - if isinstance(markup, bytes): - decoded = markup.decode("utf-8", "replace") - else: - decoded = markup - return decoded - - @classmethod - def _markup_is_url(cls, markup: _RawMarkup) -> bool: - """Error-handling method to raise a warning if incoming markup looks - like a URL. - - :param markup: A string of markup. - :return: Whether or not the markup resembled a URL - closely enough to justify issuing a warning. - """ - problem: bool = False - if isinstance(markup, bytes): - problem = ( - any(markup.startswith(prefix) for prefix in (b"http:", b"https:")) - and b" " not in markup - ) - elif isinstance(markup, str): - problem = ( - any(markup.startswith(prefix) for prefix in ("http:", "https:")) - and " " not in markup - ) - else: - return False - - if not problem: - return False - warnings.warn( - MarkupResemblesLocatorWarning.URL_MESSAGE % dict(what="URL"), - MarkupResemblesLocatorWarning, - stacklevel=3, - ) - return True - - @classmethod - def _markup_resembles_filename(cls, markup: _RawMarkup) -> bool: - """Error-handling method to issue a warning if incoming markup - resembles a filename. - - :param markup: A string of markup. - :return: Whether or not the markup resembled a filename - closely enough to justify issuing a warning. - """ - markup_b: bytes - - # We're only checking ASCII characters, so rather than write - # the same tests twice, convert Unicode to a bytestring and - # operate on the bytestring. - if isinstance(markup, str): - markup_b = markup.encode("utf8") - else: - markup_b = markup - - # Step 1: does it end with a common textual file extension? - filelike = False - lower = markup_b.lower() - extensions = [b".html", b".htm", b".xml", b".xhtml", b".txt"] - if any(lower.endswith(ext) for ext in extensions): - filelike = True - if not filelike: - return False - - # Step 2: it _might_ be a file, but there are a few things - # we can look for that aren't very common in filenames. - - # Characters that have special meaning to Unix shells. (< was - # excluded before this method was called.) - # - # Many of these are also reserved characters that cannot - # appear in Windows filenames. - for byte in markup_b: - if byte in b"?*#&;>$|": - return False - - # Two consecutive forward slashes (as seen in a URL) or two - # consecutive spaces (as seen in fixed-width data). - # - # (Paths to Windows network shares contain consecutive - # backslashes, so checking that doesn't seem as helpful.) - if b"//" in markup_b: - return False - if b" " in markup_b: - return False - - # A colon in any position other than position 1 (e.g. after a - # Windows drive letter). - if markup_b.startswith(b":"): - return False - colon_i = markup_b.rfind(b":") - if colon_i not in (-1, 1): - return False - - # Step 3: If it survived all of those checks, it's similar - # enough to a file to justify issuing a warning. - warnings.warn( - MarkupResemblesLocatorWarning.FILENAME_MESSAGE % dict(what="filename"), - MarkupResemblesLocatorWarning, - stacklevel=3, - ) - return True - - def _feed(self) -> None: - """Internal method that parses previously set markup, creating a large - number of Tag and NavigableString objects. - """ - # Convert the document to Unicode. - self.builder.reset() - - if self.markup is not None: - self.builder.feed(self.markup) - # Close out any unfinished strings and close all the open tags. - self.endData() - while ( - self.currentTag is not None and self.currentTag.name != self.ROOT_TAG_NAME - ): - self.popTag() - - def reset(self) -> None: - """Reset this object to a state as though it had never parsed any - markup. - """ - Tag.__init__(self, self, self.builder, self.ROOT_TAG_NAME) - self.hidden = True - self.builder.reset() - self.current_data = [] - self.currentTag = None - self.tagStack = [] - self.open_tag_counter = Counter() - self.preserve_whitespace_tag_stack = [] - self.string_container_stack = [] - self._most_recent_element = None - self.pushTag(self) - - def new_tag( - self, - name: str, - namespace: Optional[str] = None, - nsprefix: Optional[str] = None, - attrs: Optional[_RawAttributeValues] = None, - sourceline: Optional[int] = None, - sourcepos: Optional[int] = None, - string: Optional[str] = None, - **kwattrs: _RawAttributeValue, - ) -> Tag: - """Create a new Tag associated with this BeautifulSoup object. - - :param name: The name of the new Tag. - :param namespace: The URI of the new Tag's XML namespace, if any. - :param prefix: The prefix for the new Tag's XML namespace, if any. - :param attrs: A dictionary of this Tag's attribute values; can - be used instead of ``kwattrs`` for attributes like 'class' - that are reserved words in Python. - :param sourceline: The line number where this tag was - (purportedly) found in its source document. - :param sourcepos: The character position within ``sourceline`` where this - tag was (purportedly) found. - :param string: String content for the new Tag, if any. - :param kwattrs: Keyword arguments for the new Tag's attribute values. - - """ - attr_container = self.builder.attribute_dict_class(**kwattrs) - if attrs is not None: - attr_container.update(attrs) - tag_class = self.element_classes.get(Tag, Tag) - - # Assume that this is either Tag or a subclass of Tag. If not, - # the user brought type-unsafety upon themselves. - tag_class = cast(Type[Tag], tag_class) - tag = tag_class( - None, - self.builder, - name, - namespace, - nsprefix, - attr_container, - sourceline=sourceline, - sourcepos=sourcepos, - ) - - if string is not None: - tag.string = string - return tag - - def string_container( - self, base_class: Optional[Type[NavigableString]] = None - ) -> Type[NavigableString]: - """Find the class that should be instantiated to hold a given kind of - string. - - This may be a built-in Beautiful Soup class or a custom class passed - in to the BeautifulSoup constructor. - """ - container = base_class or NavigableString - - # The user may want us to use some other class (hopefully a - # custom subclass) instead of the one we'd use normally. - container = cast( - Type[NavigableString], self.element_classes.get(container, container) - ) - - # On top of that, we may be inside a tag that needs a special - # container class. - if self.string_container_stack and container is NavigableString: - container = self.builder.string_containers.get( - self.string_container_stack[-1].name, container - ) - return container - - def new_string( - self, s: str, subclass: Optional[Type[NavigableString]] = None - ) -> NavigableString: - """Create a new `NavigableString` associated with this `BeautifulSoup` - object. - - :param s: The string content of the `NavigableString` - :param subclass: The subclass of `NavigableString`, if any, to - use. If a document is being processed, an appropriate - subclass for the current location in the document will - be determined automatically. - """ - container = self.string_container(subclass) - return container(s) - - def insert_before(self, *args: _InsertableElement) -> List[PageElement]: - """This method is part of the PageElement API, but `BeautifulSoup` doesn't implement - it because there is nothing before or after it in the parse tree. - """ - raise NotImplementedError( - "BeautifulSoup objects don't support insert_before()." - ) - - def insert_after(self, *args: _InsertableElement) -> List[PageElement]: - """This method is part of the PageElement API, but `BeautifulSoup` doesn't implement - it because there is nothing before or after it in the parse tree. - """ - raise NotImplementedError("BeautifulSoup objects don't support insert_after().") - - def popTag(self) -> Optional[Tag]: - """Internal method called by _popToTag when a tag is closed. - - :meta private: - """ - if not self.tagStack: - # Nothing to pop. This shouldn't happen. - return None - tag = self.tagStack.pop() - if tag.name in self.open_tag_counter: - self.open_tag_counter[tag.name] -= 1 - if ( - self.preserve_whitespace_tag_stack - and tag == self.preserve_whitespace_tag_stack[-1] - ): - self.preserve_whitespace_tag_stack.pop() - if self.string_container_stack and tag == self.string_container_stack[-1]: - self.string_container_stack.pop() - # print("Pop", tag.name) - if self.tagStack: - self.currentTag = self.tagStack[-1] - return self.currentTag - - def pushTag(self, tag: Tag) -> None: - """Internal method called by handle_starttag when a tag is opened. - - :meta private: - """ - # print("Push", tag.name) - if self.currentTag is not None: - self.currentTag.contents.append(tag) - self.tagStack.append(tag) - self.currentTag = self.tagStack[-1] - if tag.name != self.ROOT_TAG_NAME: - self.open_tag_counter[tag.name] += 1 - if tag.name in self.builder.preserve_whitespace_tags: - self.preserve_whitespace_tag_stack.append(tag) - if tag.name in self.builder.string_containers: - self.string_container_stack.append(tag) - - def endData(self, containerClass: Optional[Type[NavigableString]] = None) -> None: - """Method called by the TreeBuilder when the end of a data segment - occurs. - - :param containerClass: The class to use when incorporating the - data segment into the parse tree. - - :meta private: - """ - if self.current_data: - current_data = "".join(self.current_data) - # If whitespace is not preserved, and this string contains - # nothing but ASCII spaces, replace it with a single space - # or newline. - if not self.preserve_whitespace_tag_stack: - strippable = True - for i in current_data: - if i not in self.ASCII_SPACES: - strippable = False - break - if strippable: - if "\n" in current_data: - current_data = "\n" - else: - current_data = " " - - # Reset the data collector. - self.current_data = [] - - # Should we add this string to the tree at all? - if ( - self.parse_only - and len(self.tagStack) <= 1 - and (not self.parse_only.allow_string_creation(current_data)) - ): - return - - containerClass = self.string_container(containerClass) - o = containerClass(current_data) - self.object_was_parsed(o) - - def object_was_parsed( - self, - o: PageElement, - parent: Optional[Tag] = None, - most_recent_element: Optional[PageElement] = None, - ) -> None: - """Method called by the TreeBuilder to integrate an object into the - parse tree. - - :meta private: - """ - if parent is None: - parent = self.currentTag - assert parent is not None - previous_element: Optional[PageElement] - if most_recent_element is not None: - previous_element = most_recent_element - else: - previous_element = self._most_recent_element - - next_element = previous_sibling = next_sibling = None - if isinstance(o, Tag): - next_element = o.next_element - next_sibling = o.next_sibling - previous_sibling = o.previous_sibling - if previous_element is None: - previous_element = o.previous_element - - fix = parent.next_element is not None - - o.setup(parent, previous_element, next_element, previous_sibling, next_sibling) - - self._most_recent_element = o - parent.contents.append(o) - - # Check if we are inserting into an already parsed node. - if fix: - self._linkage_fixer(parent) - - def _linkage_fixer(self, el: Tag) -> None: - """Make sure linkage of this fragment is sound.""" - - first = el.contents[0] - child = el.contents[-1] - descendant: PageElement = child - - if child is first and el.parent is not None: - # Parent should be linked to first child - el.next_element = child - # We are no longer linked to whatever this element is - prev_el = child.previous_element - if prev_el is not None and prev_el is not el: - prev_el.next_element = None - # First child should be linked to the parent, and no previous siblings. - child.previous_element = el - child.previous_sibling = None - - # We have no sibling as we've been appended as the last. - child.next_sibling = None - - # This index is a tag, dig deeper for a "last descendant" - if isinstance(child, Tag) and child.contents: - # _last_decendant is typed as returning Optional[PageElement], - # but the value can't be None here, because el is a Tag - # which we know has contents. - descendant = cast(PageElement, child._last_descendant(False)) - - # As the final step, link last descendant. It should be linked - # to the parent's next sibling (if found), else walk up the chain - # and find a parent with a sibling. It should have no next sibling. - descendant.next_element = None - descendant.next_sibling = None - - target: Optional[Tag] = el - while True: - if target is None: - break - elif target.next_sibling is not None: - descendant.next_element = target.next_sibling - target.next_sibling.previous_element = child - break - target = target.parent - - def _popToTag( - self, name: str, nsprefix: Optional[str] = None, inclusivePop: bool = True - ) -> Optional[Tag]: - """Pops the tag stack up to and including the most recent - instance of the given tag. - - If there are no open tags with the given name, nothing will be - popped. - - :param name: Pop up to the most recent tag with this name. - :param nsprefix: The namespace prefix that goes with `name`. - :param inclusivePop: It this is false, pops the tag stack up - to but *not* including the most recent instqance of the - given tag. - - :meta private: - """ - # print("Popping to %s" % name) - if name == self.ROOT_TAG_NAME: - # The BeautifulSoup object itself can never be popped. - return None - - most_recently_popped = None - - stack_size = len(self.tagStack) - for i in range(stack_size - 1, 0, -1): - if not self.open_tag_counter.get(name): - break - t = self.tagStack[i] - if name == t.name and nsprefix == t.prefix: - if inclusivePop: - most_recently_popped = self.popTag() - break - most_recently_popped = self.popTag() - - return most_recently_popped - - def handle_starttag( - self, - name: str, - namespace: Optional[str], - nsprefix: Optional[str], - attrs: _RawAttributeValues, - sourceline: Optional[int] = None, - sourcepos: Optional[int] = None, - namespaces: Optional[Dict[str, str]] = None, - ) -> Optional[Tag]: - """Called by the tree builder when a new tag is encountered. - - :param name: Name of the tag. - :param nsprefix: Namespace prefix for the tag. - :param attrs: A dictionary of attribute values. Note that - attribute values are expected to be simple strings; processing - of multi-valued attributes such as "class" comes later. - :param sourceline: The line number where this tag was found in its - source document. - :param sourcepos: The character position within `sourceline` where this - tag was found. - :param namespaces: A dictionary of all namespace prefix mappings - currently in scope in the document. - - If this method returns None, the tag was rejected by an active - `ElementFilter`. You should proceed as if the tag had not occurred - in the document. For instance, if this was a self-closing tag, - don't call handle_endtag. - - :meta private: - """ - # print("Start tag %s: %s" % (name, attrs)) - self.endData() - - if ( - self.parse_only - and len(self.tagStack) <= 1 - and not self.parse_only.allow_tag_creation(nsprefix, name, attrs) - ): - return None - - tag_class = self.element_classes.get(Tag, Tag) - # Assume that this is either Tag or a subclass of Tag. If not, - # the user brought type-unsafety upon themselves. - tag_class = cast(Type[Tag], tag_class) - tag = tag_class( - self, - self.builder, - name, - namespace, - nsprefix, - attrs, - self.currentTag, - self._most_recent_element, - sourceline=sourceline, - sourcepos=sourcepos, - namespaces=namespaces, - ) - if tag is None: - return tag - if self._most_recent_element is not None: - self._most_recent_element.next_element = tag - self._most_recent_element = tag - self.pushTag(tag) - return tag - - def handle_endtag(self, name: str, nsprefix: Optional[str] = None) -> None: - """Called by the tree builder when an ending tag is encountered. - - :param name: Name of the tag. - :param nsprefix: Namespace prefix for the tag. - - :meta private: - """ - # print("End tag: " + name) - self.endData() - self._popToTag(name, nsprefix) - - def handle_data(self, data: str) -> None: - """Called by the tree builder when a chunk of textual data is - encountered. - - :meta private: - """ - self.current_data.append(data) - - def decode( - self, - indent_level: Optional[int] = None, - eventual_encoding: _Encoding = DEFAULT_OUTPUT_ENCODING, - formatter: Union[Formatter, str] = "minimal", - iterator: Optional[Iterator[PageElement]] = None, - **kwargs: Any, - ) -> str: - """Returns a string representation of the parse tree - as a full HTML or XML document. - - :param indent_level: Each line of the rendering will be - indented this many levels. (The ``formatter`` decides what a - 'level' means, in terms of spaces or other characters - output.) This is used internally in recursive calls while - pretty-printing. - :param eventual_encoding: The encoding of the final document. - If this is None, the document will be a Unicode string. - :param formatter: Either a `Formatter` object, or a string naming one of - the standard formatters. - :param iterator: The iterator to use when navigating over the - parse tree. This is only used by `Tag.decode_contents` and - you probably won't need to use it. - """ - if self.is_xml: - # Print the XML declaration - encoding_part = "" - declared_encoding: Optional[str] = eventual_encoding - if eventual_encoding in PYTHON_SPECIFIC_ENCODINGS: - # This is a special Python encoding; it can't actually - # go into an XML document because it means nothing - # outside of Python. - declared_encoding = None - if declared_encoding is not None: - encoding_part = ' encoding="%s"' % declared_encoding - prefix = '\n' % encoding_part - else: - prefix = "" - - # Prior to 4.13.0, the first argument to this method was a - # bool called pretty_print, which gave the method a different - # signature from its superclass implementation, Tag.decode. - # - # The signatures of the two methods now match, but just in - # case someone is still passing a boolean in as the first - # argument to this method (or a keyword argument with the old - # name), we can handle it and put out a DeprecationWarning. - warning: Optional[str] = None - if isinstance(indent_level, bool): - if indent_level is True: - indent_level = 0 - elif indent_level is False: - indent_level = None - warning = f"As of 4.13.0, the first argument to BeautifulSoup.decode has been changed from bool to int, to match Tag.decode. Pass in a value of {indent_level} instead." - else: - pretty_print = kwargs.pop("pretty_print", None) - assert not kwargs - if pretty_print is not None: - if pretty_print is True: - indent_level = 0 - elif pretty_print is False: - indent_level = None - warning = f"As of 4.13.0, the pretty_print argument to BeautifulSoup.decode has been removed, to match Tag.decode. Pass in a value of indent_level={indent_level} instead." - - if warning: - warnings.warn(warning, DeprecationWarning, stacklevel=2) - elif indent_level is False or pretty_print is False: - indent_level = None - return prefix + super(BeautifulSoup, self).decode( - indent_level, eventual_encoding, formatter, iterator - ) - - -# Aliases to make it easier to get started quickly, e.g. 'from bs4 import _soup' -_s = BeautifulSoup -_soup = BeautifulSoup - - -class BeautifulStoneSoup(BeautifulSoup): - """Deprecated interface to an XML parser.""" - - def __init__(self, *args: Any, **kwargs: Any): - kwargs["features"] = "xml" - warnings.warn( - "The BeautifulStoneSoup class was deprecated in version 4.0.0. Instead of using " - 'it, pass features="xml" into the BeautifulSoup constructor.', - DeprecationWarning, - stacklevel=2, - ) - super(BeautifulStoneSoup, self).__init__(*args, **kwargs) - - -# If this file is run as a script, act as an HTML pretty-printer. -if __name__ == "__main__": - import sys - - soup = BeautifulSoup(sys.stdin) - print((soup.prettify())) diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__pycache__/__init__.cpython-312.pyc b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index e50dcb1aed63e606db8df39f19b803fb185daefb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39652 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≫=?BP1C$Em9uZt|Utj)pBqTiVgK+O_HE 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 Cu~(=7 diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__pycache__/_deprecation.cpython-312.pyc b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__pycache__/_deprecation.cpython-312.pyc deleted file mode 100644 index dc272d093dc2629406b456864a56e04734999784..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3768 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

CB}mSVPB<4U1mOZfG-E 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 diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__pycache__/css.cpython-312.pyc b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__pycache__/css.cpython-312.pyc deleted file mode 100644 index 8b003199813e64349071647ecf3ab937069bfb4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14447 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≺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%0DMgTq;{uI$&Z7c;AeV5eiHbn<);9j=4bkh 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 diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__pycache__/diagnose.cpython-312.pyc b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__pycache__/diagnose.cpython-312.pyc deleted file mode 100644 index 947188204ebf43de7a59e76d6dc4d1c410556b61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12676 zcmb_CYj7LKd3(U&4G;hciV`JJCrT6rNd#@{VON%=P<-1G^&n+iNE`&h9Z67lW$!?W zFgT_&N+hsFV|ZLHoBv&S7l2Ya^0 zoN-ss6|V|b#oa-7+!OS~y+LohI#|sSshXOhzb#f1_XT}#E?CFP zwZXNlTo+u&%KBivxLI_a=Y#9TM$s-h#42fn=$2ffQ#1}*MbCLtaHD~A6VZE~h}Dw$ zZKF2VV1sCvHnCQ`SOfh9(HGn-ZIT+r+5^x;Toc^F-s;%f7ICe#Rdh<526=HEz-$t? zmekZk%{H+~TwiFj0cx7XZCVXr!iyWBX1mzTY8vt*o5f8~>z8(j!rASF(9H%St(WRY zp4B&|SdN@7KI>0!=O5mNUBkqYapSnrzdiF*M>IT?NXkkyA`GSz5ha>T$h(AiIGTu! z3xi22q-9AM8U}D8jto4+(LkTeonO<9#38o`pep zF|35C8&FftR8rD35y{UT(It3}aewdr4dj=JQuroviUAv7%9sf$u2@MMgTiYq2pNGk zm8rbn5D|^v=O(x;*Fj$BB4om#SoIzwjMDTst%O$9(8`!KWQ`-v@^APyN@VT=P{W00 zo@BWZoMJ`F8dk-c&l<`xyU@cE(Uj#z2|WssycJ;JRWuhN*@$Qntub5NJ^{2{vKltg zK2rB!UuB(Mr_}3DS$<@L{#-2I&ab#WRymfUlVP}#jqi$iCQKz`S7l8jh5af*EQg?M z(Z6Jg=+Q@`o-7$@(!Uf-omM7bbzv`n!Y0fmBYLyua_D09gvCabW*tJ7WXCcWogG@NF$^CA6xnwWHYj zG`aAjF>=m$nv8Lu*vDPg=SoQ*;6;UTn##thePE6|^|m9s^rvE}&yXX4)vP{(e{JT6 zB^*jlM-_>2rKp^Yg%xB-K=tutLP*i%nV1xp19rOrX@4qA!*KzbziAzu)b z;jkhkBuSJ7B`KVd1nFEV2HZ{(16oIoS?m}3k_qWaK`gLGSqM`JhKVK=NyNUg5>AL= zDhkQ8l1eLD_e^sMx-^|gAc}xqfdc|EfJKv>@g5&nhT%(|6+)HYc;7Ls#A5-#9T=x- z#h1OY=oyudor}jZPxcClBrs|m9%s=c3sD)XglGbgiN#(8|}{=Z~2Uqf30d_ z=ZIQhwN#@#E~}ROF`y_KRBK)&$`m;#3b1%`R8r01R7y&SY%eKtT$LXIp{yF?;S_*T zsOmiO{Lv$!XFE^!_a5t09ldN{Iw?(3wlk__I4p-1g;M0r6h)V6>pT~cn0Qrf3Jpi3 zGvUZt)y5DEN#`P}H3cLA(tF%*qaN(xIun+ok&t#uWtC5a}c=R!Vp-3$$z&<=A$*pJPJ*|1_l>(`8)vCYH-G~7E z<@Z49Pm+61VzSRW_Wbz8oa68!-*JPt%{v<2togzE@2$@{b}jOO-}oM%Ji6@Jc!yX` zRa5+py5{S3kL2nexkD_rs;TZ}cg@V$^}6OH#Y$ZD*PTMnDa`p6 zo!f3Wz02Od`4gvd-c!Fb8eCN?E`YY;Bi5>!jX6uhvbFZQbwkd&VK%sE-M(Tl**drn zosBo0-uapxSNebS{9DieIP#M%*V5MyoyZ+Jv9RytLQ8+Hrhn0S3Wl;)&%BVcG-9_N z?gQs~)-7;#?e#}HbMUL_Ty%EdgJ$k2W#-vM%Lc&t;`sFVt1nLRA60L%*>S)gW)S~s!a&_I51pzkRsDUY5H80jYKGm_jrhcmXwv{+*U_$dXPh8uVt7%(w zw!_=Zp36^Ndg`@9i_Wb#t*)taOV)L_*8|``+}lVz>+cW_W`v!p5C6*9zGB4JKi>1? zKlNyzx_;&C#!o%)X)W=ryF&~xK902e>R_(sz@qcu4QK6j=cb%<)32PHS4{BvzPt~1 z^QXQiJGYac`8ISJ$a{_Mt__CwxBEH|8Q(w1LH=`tuWOz0=W994H|*@ToBq?rL9X)1 zk5u#7u`nHyBc-YYQlbO?cb|Y`av6*q(GVkXZoM3e*Vno46tD;Nv=vkl zo8KP(F)ZJ46q_h0L2^l&oB>i#C?JH9^(G?`VC7;OS`9Jg4rN}D4-A8xh)K{A*u5Z2 zk}#Yc(;zVR0%92~lSmqQhGwTEl0|9DL^_kWk)#N6N*3}mIUt+{aFK9=**6Lf0&+!^ z6p4Zn!7LuYl(PQNh{;VkB}JlxU?}Bv4Fngh6zw2Qn8-xAD(GySfdQEbtu=Y7$WmhZD1X^Xcehz_WHS{Z!8Z=idinm!I$#;{As7!K~~ z^E*rAk};J`srD#vb<~m~65Wbm%o5mWVCkXJL(zg#ZNRdrCMM7>P>o7>NaYpjoZ`1K zVWSPS7dxQ9V?&}m3m$I zb~C^2PoIgz!m=zR2ifV>>NN%t)>=!lc3cIGdF*1!8gdopo5&L@CKj7runhw6m?9z%OZpsB$tzQ@gKB+8Ch*|94U2D|JX@xwnCVVgjcP@pIs5p-3y> zSK*P1P;e;_83mVq=nbJ%rlxXz1EJIyHpBxqN#ImYh5y=0+u@CZ5Fn}v)k0bI4TDh= zlR{EFrHqI2gcU(r)e|a>3{fPo%LK$&9zDGQmRas~5SUp5A#WKEMPf-{gb|#mo)8;0akO3^ zHgT9VSMDBwJu~!W%wUOh_I1!c=<7F@%=S1`$OyJDPnW(02@z-6@UU5eB>>;Qg8ji? z1an-rI@t`ZvwJSNm#l)eyQm73owUDb9u}BKN83Ofo5))RZ6Y{C*$H&yr-0^nX2ZiK zfM34~UGJjiQAFQ1+mZ7KOV-T{|IZF}JD}d)({}P?XIB~ac>K$-ugYT|84gn_4Q4hy zYy$ZPQxDF;IjiJ6Tb8U_KjS$#*)baE9XPGef-;d-O8%b0`B9?EI8I>m!zKViQ)}`n zu0i=WRL%Kvo~9-1w$FG9Y#WXpJ=)nfz_x)7JaqlRvjZ4@!uo3sz5xJe5VLm3KDz_M z&U$D2k%ypJIOI|!_6dg^zFtDyz>oM@Bj|?HaH{W_zGKhzwRAijQD-`FHjx}lgha%2 z;{%7G^z%0XOBwb40zJ-qHqQY;ZeOzcKjZZ^0s6;#AF{f({3%XFGxZN(T=;ew(JkkG zmf5YBs+O#q7_x711O6J-8VaG0A{0{Xp-?<2ra{1kRA(sk<#aff|6&P+K){DWOjBh- ziK2N%U6`TqrSfNz$rwF`?mG5Zo`XD|~XdrRAJCcbDV)?$`~zx;oY zohP>qCX;ogiZgj<+E+kn^v-tN#bTw3Y};|$W;Xdhs`9Rwpjh6 z%-8SA`C4-Bz={PwTFIs@E7*L+PV7~89q@G9!HO?8a zs__bsRgGBHG`Ab8ny&1@swS*zp6kb|<}0jY^Fvy#0&B-y4R+jd#fPwVU`Js#f>pwt zcn=GJ@XGyzRs$7X9G z0|%FfR5dKPHcfUd^Y*Vl^YSw@{1RWwb^z2qDVj{Hme6Q&3^Zo7_Dn<^92y=u8;d7W zU#7A$I(BY610lNz#04P&2UeD9j!B6jWw>nPOfVALxbyIU&XNhP7}F?j4!9fu{|RtF zh%6Q*8d)^cQjEDx7!&4VbPb|lT+t0Of(Bki${Ka;G6SSK!CiP1qhkG_Qf3ZxO9_dF zAz}~~D5$l`xGbHag~dzoKm5^nkbGZaP3t+or#UVLHth1o|JTpM%NjnmwU z1DbvT=_Xso$Z6EEoL9WWB^$ZC4JXgE)l0y&lLlTL8@>cWZ|GoO2KMP-oCVAe~Y zZdK_~K&I^ApqFen{O_Uwe+FzE)U03Ff?HWUKt&WscxYCUM3|iJ71PoE7I&EgA5;_g zpbS4Wj&XkDE$n#<&7VF{z;PewImp1b0UHV4DX^yufk$Wt>PpG$zU{ye9HVn7dN8vA z!ZO-y0|#PBF!JPsfx_2+$BqJIza@W|B)_cbzS{Q9&NsGwH}LJi74Ma{h5EpCUu&+W z`+wQN_=0WSj&-2|HRXY>uxNf}3Wy_88XLR}wjC7emY?{N^^bkg+3#X^_9K7)NuocEX zu>o-ZLf?Q19$btDM%6n?df{oTNJYbT!UPUg#H=ETeAZNMOkL;!=q3ieb@e`qLkCha z`f7*91hH+Ta7g;0(MvcuSs2HH<3OzaDT_l~PBNAQ_cHKAYK$!bKE=^+4B}SI;aBiciZ;(xrJ9gqd%uV(#yS4m!1sh(x0@8YrPW3ydz&*wI@EI9+qu9}%Izw-Hf{Tsb+ z4*nqVy~NcM*SLjk`xiDmx#T>+n!Nh?)d6+S4d*rlmYl6Cb%4dnTH^H0h?k?6qI1@T zHU6B#f2B9)*gMbfeUN`6V`P;28#tw~0F&HT#s~@LBU}_g0E4^Qj?~-bis}O<9Iz#k#_M zvzQZaf{d)!cd1ww*3SB=akq}3FsMj>A@1(gaUZXO+aZMj6x=8&zv*GCyjN5VOsy7( z(&x%TsOOQ&avp+RZ_`<)^`d)>&LG>`3vqBZU1GO-`|(3>05FhNA`Sz z`&~VRgl>Wt)i!N=71Z)&-uCsUUw(Q@S>$~;iq-6bz@s1py#H`2=Xi3Ff9hkt<|9|_ zb(fHH2@9^q$*z*tXmcHT`N)iKkzZ3%&4BE^=Dl{}pKEiDLrZ+yAMQ0*1ia7cq4fs> z-stl9597X0VtAkI>4b^q*=l+=sDULhZCzOc zc3)uY3NU9aW%(@k4yRwCg)4gnMQ5Z+Z&NHq127&Fm~weV4Hz#*NLU)dxmKj2(KlfR zCXUCtB7s5*GsXnb`c>Jy2#RD;G>x16mdxX);I6B7Eej&35ak_=f+mEVB%C)OOLQ-> z5Oxmujj9o@n-uNy%qDmZ6kGrpfZmSY?p+!+Q@?75h;&MMviMpgL#UVdC#fl6ogB_ zW;gY-!Y;!-t&mpb(60Ef7f{+5;Uhh(b{tf5vB703ct#hQ#uNBaU=yl|^^x%~raXAU1(L2P;{-H+B|l z+cCqldf$3L^Qj)BXrm(8$&W)0*LXNiCGFt4bo(Y99~1Y7WX*@9@dIN2AF|^^vi?;8lzy$ya6u3$hNl^l^P~5-;pk#rj3kAFfu*h2AR|S$N zfet0hF=#6h87Co>IAgk7nNX3FFz)`+a(B}4Wa(BXnFJ-kLAk=|VbY$Nc6vGu3G#Hz zZ>BT*M;kc>%$Gh4dHde>%xu0jp3%@rttdV^H5Yx2+vq*KPb!u7OJ(~hyk2gW%E^~Qp5%}U3b9$_15)MJsxUD8 z3_k@Q`-N-b%lwwA^*G&94RWrf^wN-2|FUEFpwuwjBh|rootkUzJR0>pdO43KHFn>G zMOyz)ta@m_6{uHNtQ?-7&lIrcpY-(x1QinYOo|`7R}Hx2B5%kw`QihzFyQSlWL4@X){; z*0jB6aIoE;F7iwAq#}<6;GDv>cPeqaiu=Y(NPH;CL>eM1qlt_Oi6SJ2IVi^#np8 z@=rT@gJbb@{vkOcE5Wg}>oCgU0O5*9m9*nnFor0{1Cx`;BJDacN%aea()lO3T9LGU zP>!dIhn_##=kIx@ujlCDfkSEM(9|U5KQuilr}OEJx}=?FB1oHdj0Ixxc3avpD2K+= z1r*v%U4cF;J}3vK;=%E$&|q|Gl6rPXk>!I^!H^^?6y6t-!*V3v9}J%3GL2D~3dLjTCjaTc#Yw@d8ef9<@B79FHohH}!n1 z-KK0qsIrNoc>Mjrh;&?zpN~q^VTtF5&dc5xB5+>y2DD!CUJk^(22^{45$`2giJ|Mg zyL^xPw)wn=$Gy|hDQ`rUC2ug^;SC2a%H*SXqn9JzvFPNq4})8L`Ft=g$0h?~vR{!C z_D{yPK5(mGbv71P&ZX7g8BY1d^z7-DG$xzc&#Ol;ESy(-1Rh^n+B zoj(zZjs`-pbcqg-eTo7C;qv<_H@_c%^d#z-&PUdJExz$GjeC+jmScE*W&h``ID!<m$mYrgLALgA5l$B`8jVR_)3ijQ~hN!RrD^>?2+Hsn8X zX6WRZA%EXM&xu};L_qi8)^uqk8p!}-P$WlCiUiV*@aP!kj;I_?=S>De;V6b@aw;+n zsw1b%mB3~HR3u0remOQ4097rRib(Q!FoId7Br_;M(K}VYP7yt!#nHZtfj$@!^)s!0 zs+lKBK-16aG!J-q^7)}>P7L@5Pxkd3?myh4H*0W=8m~PnLRnX+`)^rf%dl0l4BNnt zTfutUWQSyDW{+GB-Q^@#0scuYdK>?w0xADx=dg1+ue~r`F+ea&w89{viLZ5g8I;-E z1n+IKZ^Gw|gLbuE35WKE0+ESUB2)U;lPz+jrM11#iw6TTcHXOCVhN9ejBzqOS1;!7 z@!%D28zpUR_XZ-89s!=5v&bfXJ`nd_mKE7M1v2lAN4;Z;j9DK9(8uLGDAp!VLEQ30 z)&gq^^b!Zg%+$zLD6NuX2>qjN+AO$N?-qHS3>3gxCaL*DUY4 zEv1#qd6vrB+1|hORNO1Cy0!J@*156Uk1dpMx!&{bvYPMcUb_~`+phN*-;dqt`Re|= z8pdx;4rLZ--~ zp-kc?14`T*9cL=YeKsBpi3VOq%g_%}aC{tOFcLTV{PKA@;zedt@i+}nz#9i!?**3< zz?jiIBq*ey0VPo-I01$@1g*y3#?hIAgsMYtjJkd_o2)0+X|m4Tw)%4oFn1kr8U&$cTXb43wqW9%E}=d78)dgSiTw zldyr4u$eiDL9BoV+U){LN0FTp#_J8cLV(0>MS?3vpak?YF$B$Pf{Ml#yiEz4@d9>W zvMYb};`NJj8|FTc)ADL9iKDrp6!<9)-kI*^ zDyyAA{X=jpxVa(f3xjnGh`>kIO<>_+S>u9G8PMthNit( z&;`e*sV9JRz!!AOB)kb27!ruWQ$Jt~n7dSGdGcmHosm2&2O=@*Kk&HBR3n!#W@$*6 zIt5Ry^>bXn7bO<~vAvwNUcnfcmT7^tErG~1s1@x4gw)uK@Or&??0hZy_ki*Ox&sTh z!XPAkgy3V4`;SJWp|m|1iKm_8p=cm37<*@o5R3$M;D}I0*zX78D@dQVUzDfQPR<;{ zc0o%JjYbL8z9we!pTbvST{dK50@t(q8^nn9 zENY<@Z`r-#nmOm|_SetM%`6soyzd5cI_Lb-k=efQxQegmCtVG5J-4gAFRE?2SZ&Lg915YeR^=vqV+2r7i#GivoC>|ZO9AD0 z{Vh#RHmB>qx@w(m?^^H@cukRhV7x9P+{!@gz)zz#KL*^^XhbY9EyzQwUM&r91CXT! zyy4&#NJRwiD_;>a)|j@eXE=m}j@Fx4EVOu%MkL#tHoJqoWI;Rwc;1 zG6gXU1+jaP4R(}obZX+fpjMEK)4T@}1hMK0BXY4C&~2%dVP^z%!s~1F2Z5ur}4@~i5geol9?1$0G}()%G$Y#8;4Wwa)UO#Uuh|=pWCpwe#fF`XR5a0E3VgEH=Xxu8*VzY zC{~_MvF_!dSPIRJ%Foj4=c(={ax+Js^eUk0>Es5S@PDmrByxk7AU6~#gWRYf105TL z7@V*W?qf&YaY3IQ5kY-O=zqbjeHp(R*bQSnFT2#u0GH&%D!%|?|3WDbtNg<0{PrTO z^4Ahx1%3^U_~@&AOBP^%%K@8z)`Ku;< z=qGgCj?~zzbQQf?a=m29)tGcO&P5hoo%c%0K8!R%@2j_v-{-+1U(b|BY)0?t3^Jmq z&jn(wvmOa^Os-i$L*GHD)y-PP`T?6#kDTue#mzC>82Pq462JAaOG{LIQXvm=au(ob z%DjXGP)9j|V`4HV4w|x{4H#7vmqUWW4DlGzTi0U5eOlO*<#RNlZfH#R+vF03HcNgmgwQ$LV}UzN~<$P8?X1Ugi=C`}T*T;FDqp zd}{h3g2Wo+j(ICpQG09O&3$v9{?dW@jk}W-yXW1zd3I=bDE|~u62*$_J5KfC9Zi$q z*db&{j4O6X0a(HV$sIBKLZI_HHGq1?JE98eRQb}HsFFjzbc`x{0-4YxYZfro+acCY2~Xwas4NjJS|C2%k9VS^e%Ng zmF#$G!SnRI>uGM}fHFh1y-Kgo;MHD~i_cHn6sS1S5)RuSY3p&O4?;vfN-1-RqkfSB z=(UULPwF?CoV>~6-7=?qCGlEfeoOz`wm) zXv$&?fBK`Muyth!$dx@uLk|`k@Ul~#ZJluC?MG56A1)WW3g9Z#T}8Uft-FfZRWh6> zQF;%3nKtat8*Z~p3QDDz&-0}VQW<7=eVbppD3#NUFBeK7sp4gawuv)b1b)ITRZ4ED zO4F+uE@r=Kso3OKB88=hRD--dQdFu%UZsdtrsq=*T~eo1FX~KMnMSRoNvQ$pDp2;P zrFEvVE2T!M1aa*~TyjZ@)P(p|a@BA($|#f#UDp~ZCap)=weYW#yi&8NhV@chYC%|o zG$mbW~tSb$9gFtwIPKUzwP*KmTW<2HD}k5 zYx#n-1-Z0vO}0uMrd&3NRFX~V9CsS!X1k;r$%h;^at>Y6Hd79p9$M~pq}t4>c1Sx- zsahYo++E0_jdR#7J!ZTajI_Vped*Ak6f1??B@8-NQX^%Jf_y7bKH>)3F2G&jC2HPALq13rDLYFd)V(d{EYIS06zVMG+@G~ zz3g+s+ob*Yw@)?ALq;sYa z=$*?)q)(xTRrU;R^P9qta`;F_c)%16EpwzF%?KYeg+t#Q;ZjDpYzl|wIl{*?!Y54O zC$Qu3lj)+9(7sbOU&THvK}G6R9!vZW&jt(d#0=ipf0&a zvb0vQRXPI6GJfRvn9s}7AZ&+fdkWZZRd=&SOf?$udHZ?O1u`F~U&SC1#ZE*kr6Y|4 zNY`0;0ZJZFaTQV+Uc?F28*fHd`mPBjkB~Bf$OP>jqh0&V*qn{nm(}Wk?Hi~XQ%jA_ z7f7Qb7m0h!C<;PWPETSg>a-SY>`~iE#{2v`0}o1cl`;}Bol6&7j6lQI4_!4D zZ?N_`@g`BIq?z>3ko7szGbAkyr44g<+8x2l)UOUvx)kGgDHxrK={_Qy$GY7fz=0PFgmE!1DFFdtgOMOM??ON;C>LNK zD2DCj_+=TJ)GT4u&>K67LM(#Sl29~ILo{s#T1M>!>;=Mv8GyjO*w$cr0Jm6I0eRI# zro9g>O%`a1)LQAtk+d&^;jk>xP9yeJMrG_Y36%>fnjWq&ME9$6H>1JFo3oBmD$0o5 znLyxp2%3(n(ti9DL`4dkpteZwORBf3g%P6#DC>Z0%TR8%u2r>m^Kw^$8m*N_8&ab} zGeE7$4^{)JHa!F1{X0C^xc?0Rqw<^dx=XLG)9at%m3FCut{5WmIx#CIMdIi&!avSb ztQ^x$2$H5I6J@4(z{g%!Xnpl3h>hjp4ogkrtmBoU``&G{jzw2vs>ricf(fP*LUBdi zgPfwt-{cKcL_9$FYShEFWOs%-APupK^m;OiBg!KECNbT1h*?rC5z-kd(omNY>R$mx zBE3yfI7pFzAFmgpj9K)WLc;5GxgNt07awfEi3?rf4{@o7(^i}a(qpFcqEm5bHfmc0 zDohrO2!2tkM4cHnGlG7VVDtd81&q2a?yC8sb*YNV*=O!~>gL*Ce}2)^m8xC0RNIxT z?YdjAP`h{baH_0+scciSY}4()LRs5vUdmH7TP&c0W?b#jq2iC=bIS}3)*Kt;ka!N# zTuZ649;L?EB*!MWKKtdGU#{9C)yAHXdCNR^Y~wHtq^~MBpcL4!tv_Qmj@qDR_8BW3 z$|Ipz;ExgUSTuT(W+qZ15PJ3j6JVf+O+W_?U+|*P`BjXqpy0Tn7rGi2_0iqy?ZLhs z2qL(!ehqxUma+bww~duT0JHnT_b#f70tjDGk6l1XMnyJbqj<0^O``AROMJn zOV!J#n&2GO_;_$E2r$%Cw!AUy??Y1$xKH2(jtmRHX|Dp7H3aCTRP?0t1Yq_9_P&M= zX8s1p<-}1m<@ewPwGWy$cpp}kb(43Z!VGmPd@m5F9YQE(11PYRzIx#Lf%&3M0J6&3 zTL*3)Ab^9QyY$t4*Z0jAH9?WPvSDu5?b>TySJx26|cT<{RJV`o_DqIw2&?$ z4sTE_-X1u2;fUt8v`6CwRsRf*f*^-EifTB_bB88ceaXuEVM-L?P{8GB(SZ|G(R2a0 z*(sa`y(DMsgwg30NtP$+@TcFOsLg1*Dday>2M|_Yv)n6bHtDEm;0AF&T)&N6Ki~k8 zWj{g7o2oDKD6`$zhn<`zmO0=x70<8`jqpkVAyi3@2tdI3M8Kv#)*Oi#i&d$|#-@;S zKvmimrzLoE$zaS4kb#En0_v*#F4^mEDE&I@igMm-o zRKgm7ic34G-LY)QL!DJdES3d%rjWm-{w2i~Q2CO~^AW3HZv#m+o<`iG7OSAmIpELO z(Cf9F1J`sFdf-2Ay=AppUU4~~vGZ&8%cL;)2S&d__Xul0oMZ<p)8FA)eJvV-|vg zBvHBO1*iz(WIy0U?chYI9e8>zuR6wT6P7XCIpj|=mz%a%@*McSsvq1Q#Fv$QE)%yp zhopx{ClrV?b{?h-^q~d%@a$>ogbo@6G8PeGHEDhMqz{O?x{^Uy0#L^`4Ys;eifKW6 zy@Nu7P16?1oi%1iJxPw-2&?wef&L+7N)~_@nSh$QIGLgXA`nJgD)lqrkok+M`b9x2N}17tQWQ|Aecsz}!^acRrG87KXEeppZ5@iO!-do3Cl^rlMnp)jsf4#}zczGTf^v#ZECmwfnwu5_-I zNj1@OyJ|-&VvMpLP^UaC4s@Ih%}Xmn@(sFm4oV%codcS6)d{(dCo3C#LVoPj;$x1g zbD(r^POil7pVkk60qFIg*i)K7RVRG|| zfgB{`G?NPrhM9TD%$;mqgrboNtP4ODGqN(6uEeLXkSEHZ9cHCEYf@uwL;#_*w%`>9 zRY40C5>YiBhzc3kPr+gJXsGxr>8NfILuZ3F*qy&_f>RDz}=|Da$$oq4=6sT@dbHO(qe?qQzP zPYpFxe)PzX5sKC$qrc^;_MH;n?e5u6-{`${^ybk;&-!GEPfV_#t!=O-Hf42Wz>Do9 zKD|K42x$mFseCy5S_H-X(6}EKW#lWQ!i3WSN*t%)sS)YIXX$XSupwd($*?1YqX%gx zM^5L1n9#ZHbb%bf!CTC9GS*pacSjWtryT)hB9<=185F-LG3^RZi?VR?K)RB4o7>DH z;}M#U)CJi0QHM-c&>S6F2$mShoBvh_<+SD2z4CR-Hf!0_))l+GqGZ`(FD}6f%lY5pNw>GZHgTu&wdj2q0yuiFs07Cc?^G_9_!f(NNIc)zyHMUY@9s-g)!jOK z^Xx1c3?LP&rHYNoijB927Am&Px>7FptM2RW+qJXqMc0;l&0Fs5x_f1@`Dx;KwnG3t z+jC=G%3ZzWCTTRR73}|(d)qQNpzZfP6|+U^icf9Ma~N=i8k?a`Nic&y>&g*0ShSFX zeKiDfQ0=qkW{nKO!$%ygi9dZ#3D9=YDmsDD7Zd1O;}8mEh9YFQkCRk+Y}jd6*YSu zlo_~L>b!IwYsBIla;BfL`}H=GI&8+5&B&d@^va?xrTT~NcyVWLfB0fP$bL{K z8pRwTxpVRBy`4K1m;T7Psio&=Mef}F`j)a}y+Zw@f5UC684K`X)zZ?7S)VypScHOD zEjXDaO2n>;nJF++3|jkyy{6ek?4^<>D^mz4lG1vdmdyM}V~_ zd=T&8q#iRTAY(|3l^Yqxpfz;Biz95jjK+B*Gtr4+sSpk(xB}+7YJAITlGyP`e9J(4 zq1ZBg7x1C{3%p>T4u^~5keS7>Z7ktPt+L5GPYEsm{dEJ+j1}#;}2Sm0L9VV+#=~PfMz)sV;oeWS?O z?o5_$ynS}QbUWmh)%8nNTar~<7OFaC3vuqQy8g>sZzmS2c3>i`X851qrp3}7siKTTIPTe#?2f4{n(cYxicVy}1J-HB?7{O$}bbsk9Kf9Zky+jlQ* zKbYKp(7Y#1X=uKkN4AuvIa%6#r*f(NKobAeH2ul#{gg)CB~IHMAZtSd(|r8MAnS;#Uq%OF)rB;PuG-d*7Go8jg^Ceq*jAm zYwH0ee*#hy6S+hA1}U7ek!nn#<-H~4gq@32|z(8-nYFvpyfA+eJ#&SJ+>TFy{W7P4@iP;dX4K2{W3itbLT3v{N!P}xSBHL}p9;c)MNe<;U!Rd+goFnmUvbm+#lR34 za>9D11|))}gXyp;oB!l93aDoo%GMYg-6Z1EwRJH>_Qa&9z8Q2LEfl0hY0HnpnGqdTkcbv?5@!?pm zicr+VqMa5;$~$^Mwbz$u}a zw;xAjAQc3qS_{uc`1mi0>PWdQoQ0ANVrRo}&>b4~7wk*}{ zOV;hXe&l{#yQqgFR zv#_J@FFo~hi918d_1lr_?2(kGZr)WVR^b&~C4D07VbGw8XD|S?zQCV##fOl!1)8*8 z`e31^YR=<>#gz6pQ5rojStmfkNUV8oh{S`2$aBVF*tpe+S?P=;ml)E-px7?xLP${p zy-k8lCkR(A@uTfRnGs)e%{XTqTG?8SA)I{H0hJ)EB^-fg(Tw9T9V>{MYBfn%cWaBa zGydz^pqKz<%tF{81lDP*1fabM>AJB?L)1}SJE%JyY|@6jS@qJ4Nj@Qc0*V;aiO~(& zLM2F049%F6sFs>12`I2Bx3;FLmW`=)8lFP-wby%sEP|<0R};<4(6beUlND@v69kPm zM@3U1Kw+z;AfR9kh|&`x)05cICn~IwHqlgU0!6*8V!x+V3sM!=eHnmF^DhfOH^X5P zeqw1z{Ni<+F6b=G5OfNQH~$wBsf@)nVJzdX;gjev)!!#7?H85FA=vy~kbo81GuH&0 zt#hYHu=&b#vZVF#PwSGTpmpMntj-Y5`jvA;n&Wtm<~ z%XsC*OcX8B(s@`jVPU2ar=jVxevcxv;1dTmg=O#}6EG^2Fk48OF3xCPrVe37&~Fl@ zyNN7FURiA^ufElAvjK{MMP;)GSnPOeq5Sl``!owATW@b%ENNXVYUPl=h4TJ+cYkVA zEBLO4_3v5o3J%O3eIMr|>*uz<{sLJdC~a6O-HxtK%#gh<#OBqkD8n}dX%Tqr*^?>?1-gsFQf_shyb@|cd* zHNI!bFQ}b8Ea+JK>t`1|+f$`=LTs~Gy5Zq;tn7`tyU!-u_r3M}Lc^g&_cO54awBm4 z==J_(4|0Y4%b;vDgJ=&)nz2D^T{#HHE!e8fy^w@2+M4~4C9xU%xFZOBe%<=hWH8bi zAZ0jOurWu%%01@UTTI^2n8b?8%>9g!9RO(C68E7`=CpxN&iNcV`!z~T$qm3lq2B88-u zL?aSZC2@8hCtj{#lM;F_q{Cn;TjhDk>H?`Sz}zs=2$UJewj=o(9E-*t!9F3KCXgiF zF~V9^B*LN;>ln>=p=xGoRcfJBVk%0=eY5m8#1@ifIoM0;52l2#=w%3d@lI++O!@Z!qja7qEn6+4fKyY-Ofih^{htWsh&2Po zZM2j&&BjSJgH}n~l1BL$tWEgj1I|W96X#xydXYy2pum`T9%Kd~8=#-2_u%?nvctDCXgcJ;Z zs=nIVDDi<9VdnN>;8us^f5eGwna0C$LhRavuuFmye}nPpB%ePZL6De!2(a{BmoOP3 zR5@i6UWq)QKB!%Sve$b?D360Cz+^Z?&5%k!u~dPK828lh#YZ4n;zklvMjsVHNvT0E zoF_>GWl?;(m?fgx;_(f2?qmaFUcwhfSSNRag1g=xS$|iLJyxc8xx-N%B$dg)?%(`VAZchlNP*1R_Ia3ubycmqX>MvOR4*a6HKhW+Yb$CUL5 z$ez5)R>ey+nxMhADtH4>BKKsrJK41RZv3q?-|SC%&b&R2*SzbDn9Mws4MDtm20|eT z+>dZN(**KDsa~AVV1v*s`pKAhOz@v$Uem#m1Wp3_bI)rZ3-JGg;psjk@c)CD!Nj!l zRZJeh$<2h5V$Rahv5nA?*tm=tiHw?Oos(OI$@_qV$`(Wv*j1W^T``3+Ntcbop2v9; z*2Nw;chZrhAM%XzJ__ekqoZIRz#3p1EPENG?kQvD$;3UvDryX2o{nl_J(d~KU_NuM z$o>)g#Nth?s6Hh2{h(8im{N#^(oVkRoO#5eON)|&3Dbf`*PL;7C7X8LmEP+6=3`0E z(A&@AHSZb{IN>HRI;onlP#yOArr+U?L%VQv65E{Q)rd2c5I3X}ZwotA{U{s&d9nG_P7V>1e02 zd|#o7%qOG?h8z&mge7-t(%pKe^3K%V@ptXE(!$i!{rtOZv1xLH3iE`fEu%8aP(e6P_GKlz zl1KFv^lC=v4R zHeBEXJ>l{VH#RPnZ%CGJz(jRp(_9%Qri#K;Tl+HqcJAcw+5C55o~Ht;!E@G|g|po$ zPwA|k96`;-bh|hxN8iOdjgPesT3yX!1j6K#{m^DEcChR-dDzLq1;`Ss zasZW_>Q0s;@Bl?J;?RVpj**TrYcX@o0cOrr|AS)6-}7yx0kae?ov)5Ri{mtX3j=@J z0V>93QQAej`(*oJwUCZfsxnn92*@?e{BMLsPXSheMVrZ<(EgkIaoW_=C^mit9#zgw z-99gvz5R#YZvMsz;1d|X6KAp+KStb>j6X4j3I-VS$L}e#ACB{bAdnDj71Xsy5;`QK!`gf;7%O)6jzE+l0pOJ(YT6 z=-`xQ8z_Um>HB%RctCKaJkc_BPhPT)J76Z>uF0ne^Ua@_KlL1(v-#gHD$haq$B4FTk51?Bfr|p)4v+bWiht=dr?pF(p{I#1m8n9gGhVt%MoxU>u4aRy{69vzD+ z$R{q;5;r2rPzGHlwvCm{55l3_*8tdEwZ>IcrHkfPn>^*A)eLfBA~0Fnz|I&ecGDph zxc?*7Ghb8cAbw9HRjiTTX69N2sRC1%Lmd;!y28wcu(DD2-0g|qzVLR<;^{NrI`Hh5 zTa$IqeLqIz@TIEt*17!kRwaNBp=45-wok%@W)FGv(u-Dc3Z1h^=O6DI9PB>Smv+$6 zy>ua44P}{?LO>;s@VN(Zeb69`YCsoHNf(@E9rQscaqguooNRU)7CI(z_oq0T!|cbW zDE>;uZiW+@&({DPzF^=QEH{#c4=HhcRe_8k3-MYoP=WgWPtMT5hxwCnpW;;$u z-z#gF>wSI0V%cVx54pAX=H9unFFkcT@J>Z54E}BL{YL#8^>=&TDqCpZm#o};qyM!d z_ZypU^rxCP-8hn}Yq*h@THgk}*Rrk~hwe3Ox;^o=*kS|j5%i{Nnr_Y9oVgu;r)F!a zcKuh}uet9OF4XQwHEx*u)Sb(}@tHS1^Udmou0!{0o4!)~TJi0PZ`Jys=~~wHeyOFl z*{EL1Q@sRZFrM|d3t(>2vwhyRodpva=t$VHfs|lzmPkj(3vg#Yd}5gBcXj~2=>)Sd zfuo-+uA-C0Y%$N4*xrpblL_fmYQ@J`RNhdil<6GRfN~ljq8X~R29+L!0$~wzXL^I*TfRKkEuze#d+*ZY(OTuxtH5k~ZZOj%hSxK}jBYD_R4`L$z4Jo>udNRO zFICK>)gN%A5H(h)ogV~2TB3(RkQV1>(J{(p%JeuoHlvw83X*d^H=vkc0q1YQKJoEq z7QmSVGkd4Waw=(*$8bF;-Be7H9y0+mfsS&98o3&9_QE@J6I5IG=``v!0v=k?2^!^Q z;Gs(m3>vjmyCqq>B^QHPB7)yEb*GL?>h_BcSkw=z0IOanJF7Y+vDwto zxE2By$w1+ZJvFTczl_e)NEDgZ)kqX6b1Zmv&%4Cchd*-2`&@3w`_Lpx>qkR@{X>Bz zDB3^EP0@PR222fk-^>KelK)Ns^VmZGGmEZ0I($-hJPLejee*%^sl|JX2;gTZ^B)TV ze3`&d!xhmR1cG3<$S$caxi;h42SFOF9gwY3q4h6JFnSNlSn>tOr$V$|QLUkxiR1s7 z8wQUP3})CTv-LsvXzTS{ zi+~so2dRqyvP}TN7Fj?r8PL|21L5OQm=9<3>#*&^qH(e&!jrCkpd_=u4SPWPJj2l; zRaWhg2wR}~g4P6spoIS%RoBemcsQnCkEtl=*36{^F+^F*SFIo4q5f+_c4ErriRXnc zypSrd{=$(|nU_pHR$|+#yyA<8$jEi2YUH|ceda=fgdn_-*a(N&UjIzS9S>KmF<8=& zaGN#kj&JKBt3zb&6dR2s4>I8{AM4MuH{@gMKmBO_AEA&{fK#ZO_mL9SrmRc`i2i~a zOTs=_SckN|=0<$(+?~D!&yIII`|ir~u6+zGy!gnNX3>3*vVHJ|HBqt`GH2LmQ-YVk zk?%!abFO4qu*V*MBD$D4XT5|R8ts+g0=dIXWzyD8C-Q8OmIdf@x0 z5KG3iwe!sNnR!&~^8JU1oY-|Hf)l%EvtxF6{e67d(V%vJ7Gm{J zMc78UnoS|nzkv(1so?A6w)Ve~rz9!Yl3oZi&%)q)2U&eTr@W)Z5wX`(Y&9jh(S~p9 zG1BDvb9zzE4~m80JF1+81p1to>K8Gv*s1y}ipDL^OrJ2W(iqBll}1KK@ZtDh)k;*j zMh@lwBM&xo#4Tjk75KsA5gB7NUC4=R7St{=H;f0zHZ+9B6%jyE7b$Mt#hKDjB0sJ` z2ZeK!%Z}larL!iWItMe7EV6x!;&>?!5@zvv#0L$=a0?MJS$TpBljk|HUAJA!nQse) z40x@)l-raw?^yp5x%iCZ7btZzeH!_Yz9G6lS3X%WxrOeWF(0)Y6;RZihN&iGjw5HD zEY9Xuca8?9U#0Ry0}=)#gLgiMVgE^L3dIo6 z$Z=2Rx~5*-O%$X?6Z4|HMX%qb*T2Lo?b0j*@`Xi;ivs?HUVloj1$uo8FI=xe*EA?g z*b-qvjWKmLiK(D`}*L&9vDiJLyFSCzL((BBg9)KfRu$*VFXsrWfhODZTXSqZg_8C`ai< zx(W(eOHoeJYmi>g(u?+;Sp`Ed4VUPXXXpgEctX5NE}nH>Bo`C+m&wI4uUT@@ma_6i za{V;DZqVyX^!hn^U7%1}zzLxeE!SI`H(fhC`|s=ab82scBm-AXg#z6_LwLeiR?)gbPbnJaDZ@)*@&1a(%tCE!A{-*^b}) z1?4MF{4VdY|55)vfbwPt5N-{`TdC z>gTSVc;8`lZd}Q8I5)lPwrtz|=H+XL=8HQP98|N$mbVWr+w+|pVIp1pZaK`q_Y105 zobZSF4Jy#(tWyhw3%UUH>r&MXsqK4~3u>IFt@kUcm!0H5j-{2$`RoL9-6ew2+QQR*K2_ zZkwfa%bhKEFQTtKN3T62hMseULCsXdy5-^~XCY^eUo~fPiHylrXaQgpkqZ`i>o`7! z9%XsRuhddlvr-1vyTC2(loM}1w@`lO+EG(cRKsVr20Uvt08Xs|aB2;JQ)|Gp)PS1p zDOcTmgYRxWx~V4b+6e?}UGqa|1a`h$_4Dht-EBp2wHTF3C<)f>Ot~878^uu7!L!O# z32NRMt$AmR=E12o4^FLlaB9svL(Qx7-HE&v1?*QmckLJw{1BVAswdGhwYgn)YqaKO zw5(Ev4*aUnK`zlOa*0-vOEe0ucRMT%yBV?{dy9sQA={Mc4`IyKJ(hAc&3pH}MPs%O z!&8fvH9nqlt)Fjx;w?h2MtIg~l~~TNca|~G<5z7Kxm*O+1>^z+XjmzN3us#2ap%}u zop0AHl%2YEL?0l5Jw?@O|KL~6h+Lp0jmrh(f>rCfWr~Hek$Ew>KsakwJaE0cEt8IX z8weD6EAsZlLdCP!j@@?_zh|>Kn^i&v7xE?IW^-=R{WdMTOHp69r3|P^E?949TK13& zCe}7BmyxTSs6++1Dyb4xG9w~jn|4-pvQv? z?V)&f%tm6OfeW2aeua8GxG)#26)#tQPG^UjAGu2Mot5eYV{`7;E583-j7!;#^|xCW zoLgvkS}17iGPyn|XufRY?TH1akCJVsWL=bOGbejk*p0fmLkrH0lx!U(+w?BE1n)o` z!x;Yb2eKb}tShwixn+^TPe_(w+ZjlIhV7DV7#hg3Q*!J_D8BOe%gJA5Qr^ps;e4rF zs*qeSJBM9TrBnc)0=ZDCk_umTyh$1387`8lr5b2>IfvZ{tCifQuwuFR!a5Pp{FdsZ zVsk7hU-snEr5d*tShRmqy;OoS%1}mw7%}6H~#+{;tsj zbPq`oTBo?~tk8=`ziW8);boybg^goTr4}`p79l$1JL!bBP2S1Vef@_&kZGWsb;~y;){POyX@Gn5oEQaO@&1g~1w7c3hH?V{BDZ z&~T|nj%mw)2ZaWP#!&5foa*oG>+e2uY{-A&%+Sd*L;k*jo)f)?2M+mQ2o*ZS*nx$_ z7)3>7nT%o6jrV#+leqi=Vqh{2!1j%C0Ud0nvvL~jIQyadaM|xCyQ^HH9_GCqB@3c- zgM^;dd0Z-kOki70g4N_mG}75U*mL+WOhn@Xi!o>nnC>C($0C0g9V%oIqvSe4FMYKJ zdGi=~+`ubsor=-;pxt5}LGcqc*?p{5wg^BKBYiQ5U2&&u^$i);(~Fw#l~&Nz^m9G8 zs}@RIuXlgP_+D&#YN7OL$ek-{XRWW`LZX6K^RMT>QeYgP=+8J?M9_iySXVZ}K}Nq! zns@r`GBdi1bXEcf03qElAE({OnpJt0Kyw#E>O_|a!lWwpnaC0YkA>dJ&ftu%8H%fG=|T}fPEa}qitU1ny8`!t9sm&7rZ}zy zgg%{NWDhyT2xtIfSi zEUPQ?==Dr^pcQ*!-NWk8KtNH2Xpky`kEnkoexvt`iMfpnp7ryt^*qgFh&>71c!=xa z$RJGmu#UrMAzxGm$@X5vS|yn+@nf4L4g@0Oc(??(X>|q7;hU(6q!Ng$fJ-ZG^nR&e zRu_C`)D4g%>V`cc)NO`tt+OV6t0x+{Bu8+k^BDFi)te8XmC8d#&>)P&jgZlGK{?FU z-SkTn1t4h21EI?STw|fyqi4ulJrmG`VKN7e5mhNx)O@)`=2nG1{z63X$7l)Z^H@{_ zC#h7TI=jC_wcDtlNY;X(EXQ(JyJSS48xZ8c9}gcXUaqZaW}Yu{>z&Q8Q9guGj#*Cv z-`w?ob9zb`m{ch;?jVa!O$dX0WSR{Ze8HfKCRy&lNL(ax9E=;iAP1yrzHtZl2u$KC z0ded@OzshJn>c7NF8|g|Z<(eP6`l1GNcCn!mt zjcuA*KzU#@#;CQ4c0;d_MQOi+0aNbarS1)~FkSiA=#>oYOuI#!{Foo5>D6dz4&6y( zOR`doZ3)CcOJy69WgBky-f3Sb+XZu{;=1oS*cjPxTl$rYU%i-ILobttiUEMe?UrTQ zib>jostyJTJyy-RMDU1w28jMJ3q&`N;Ccg}u(+xBQ6_pIl}_6*#2PWgbc_2Yf-o4$ zGr1I%V>DTgDS?0%4tSD^t$MI+W9n7 zPV=p#?Y6|}lQ0WI=Vo&iBd)ulZENr<1g9{#Y6ke+tx2?ZXXi$@ozuYLT6=MjFd%HG zzF}3KLH!_UR`A2(?HIK}<1p6lfy2}TrHBgl!fo+1&Nn`@P;z+Qby#!-HD7xO_BIfo z@Yistd;d1j5-r^Hi>pgYP5dgQ%zALY9Q8Xt25*6z3~Vpfn=Ui5nRr@tSa6sLv2ep# z-ZUN3v|X|)P%g$rF0cuXo8%sPzrj^!1T}`u@M67e{lZttcCiszwg>(O zML+*>-k%PViIW_dY2-jm5XvmDp&3rcMeSUM4(E)F+6}#J?L=O|DQVLs)N**CLx2{b zfEc!u0GfJoIt0>5!hW!^*w*uQpFE5ULX>C>99oucwi!ynd*R|XBDm%|r749V!XM^d zX;oiib@s#(k?Gw>yHfhFxPx178PSmJo(wXzQV&&Q*@=avcG)!Dcn=mXBe|~Rsa;vc zm%I492k9OxzC)VRnDWR-&fU$ou=6$4*_9yr_P_!6zu>oLFwc5s@NH;ZWRGhKJQ`|yCj=fuEJ-@uT6aOgCa zWd5P&PxcKeU!$p$*FU@s`(J=uSP(HOVh@sQ;1tQUpBY|W1JMCgoF2JE_sC`+E9cFr z)iWy{VA1ZLKSgBgC1fi!Z`v&GGF*6z%MFr6UTCLO)h<rZ-vTt?n-^8IT_wm&#sH1dU5a!GIgZkTWY8>)^%Rcc#DU=^4C2Wgp*oX{g%$W+H4OHpb8{aXZ|HVJG|g&nRm7D z)Hi?)T7uLEWkN#&>99JT#tA&rUcWL&kpCK9+9q$|5bd#M=qk`^3ah<*aHzp>AcTB> zhpJ4c{=~*FFSq_D%ETddrrATLa8e?8W0iKqZapdKK`39Qq!l?gj+v?Djbq|$l~GE_ z8^XU%pZ}Czyk-7%auJu1&I4}(=n@xF8e7HxiXzZd&z&RW79`DMk=_GL@G+8g(Eg_b z`=3C%D(q(VEI2A@3qo_RI7*yl?|WTN?@FcBxej7%685^VFDHb;aJ^sYf^=F)l?(I$ zxJZIr`1!Lho_){ebRNMS&XDOYvlA=e#+GkxT{?IsdGO4#eVen1cOU6@%TxT#yN~!@ zmaJT2fx6%Mt_?21=%DiY1FWS-JJ|Cf)*C-&9u3cln3SXzpILpTE zkptFdkdlEBR{=@y@7aOq&-_0 zs_1K`febk)@q0}A2;M;YtS^>>PXq*IKQks7CtZ%2%bfg-C4poQU$X{&ADPoVQs$`* z>-?-`D6~TZxK@DpA{Z#wxPVUW9sr$;5gP#wv+>{+T4cti#^Ev(FTn|EL#zC77N`(n z=|WMB7tzI=LL8P+Vbc;>h|ze?pomIvVuEx;sm*kaw>&-$NCTHe;wvEx$;gQ(Ws}g% z+;kCLT-hriszcbE&e@|{F9M{@C5RrSvA{Bu#46O`^eDfHanx2ZL?ts;F+`*i>sKR{ z&%EaT1tRRE9RJp?) z)$w8){qrc%pwZBHI*g2!ae7VA>pZ=(Xe^V`EK2!%ln=dbQ0<5z&?qIg9X0BhDz8*& z=J!A+w~5+NqA|qRADuXnT;T&Yi=66aQ66m;P3O0}(oSYR6Q@9hdU^@PV}Jyj*7u)} z$0uWZySgO#lJD|PUsRdsIv)>*c6SkWbRO&JicN!iyy7Fz4Pz4ML8qEFc3{NsOBC#H zKFe9272-qcm4yA=xdSXy8GteUN9en(Zu>*(HhR5D-ByQ2e9rQ1$JzVkjiRF(Q{^?} zT6ENi-lDi4V{cWRRH9?JegG8XFm9+++3rMBw|DRmWLFS|si9`B-1oq?|0$yn9$3{L zQ2q_ICaZ;SlOMglZf;@Q{qkzj!s=8xgU6zyO0>8{g#J)Kv=p{@-8j?T#-frj$$sFBRm5Kug@J@v32`4fsvuWy)pWYF9r z+&7DkYSAMU_hamle03sBe33ffnIZH5*k+m~jV3=Dj)+u*9W;w@U#`mOA)Tkj71-t2 z-`v@0^kKr@+4-#vO|OG4^9ouMCa^=Q%)K z68#!5;h2HuX>{j9Isw2JicWM&aVZBRDgP@qlNj59oXC}=V0!&qGbo*08Ge?Xf$zh6t%i^$mZ-{lQCl)zzZT3`|aqhJs_>!@bOr#-<^}3ggSn zjR;1JgxZ25A(tlf*9yaSpAv=4R6j!``zCzeR+`7mX7xl?DAOOrVPE3C`UMMqQmuvr z5)d3G8@p6lUZHD6@OX6S6(>$c6w=w%_1w;$uCCspUhgNEmTdQJ@9OFsXw@UDyB(r= zdf94g!L5DxLTM()M4pLNSE#+)sUls%*@;yHB!h&WfshXfW>g6b*aAi|U8_o4{Ae)S z`QWp+K`DlHDxrzGU=)3ZyX1I;(1gspeqnSuD|w=}SHPk#J0wYn+JvkjjjpFNMzN)u zoynS=cYEL3{LS`-nqv!|)U~ z)h6nvAoT&)*KXjw2N(M*M^|o zO2~XnO!W)slZ4xQ^31_whkLv&n_?{qr}%Mu2cI7t>O0O~%$wk@XO`QMEI|2lK!LJE zFOr00-SVP*3jqnOoxZhT)a~(PRY%g@ zfg4FZwey~hsnV*sn%hq#>pGI99XFh$>sB@EUUphaYUYbuM3P{#sw?U4q9m2GZU%=$ z;r`~{6Fnr5^fF7HupKBAlY@3rfmsl4(>ZD#H;i2}eG$b@+v&I2Cw})m!@u_n-0wNzuO@B0p2KPV2@)H@qA7S8toUwWx`IL*jDT3!1tL+9x71h2WnQ=xcp zGB6=`i4FuT8sMyDl-=_>pt8&z3^s{-H0I*`ueSN~g`cmR)sl)w8Psu667xhpSAF=Vn(4{EFFC3YUjmHjA7m zH9|$aNn68V8G1pwD0xv+mlTqkRVDJU)M8q$79pKm+JICx>QA&JENwJ}7ennkB5gAH zl*lC)h@a1Tq^PtxBUY(gcHTBzF15-P7uvES<1<6Wd{SydEvrzMLb>Wqj5R&O)zYV> zcGS8?Qlu^Ttwk%g;eWL)>-Jl+=aaM(L7tS=xqDnxrez zcKEE9rllSD^%hv9gfZ^Y3(`)+YR>YVk#@niMY<~OMw$)MXQapQyHWZH>2dsSlCDX6 z@VgoQPvEyzdQsYo-!}B-KK!;zFG>6HyG8n}^dx?_O17XyS`VYXHtE24o>6)(m-Mpq z6w2<9J|{hmw4KsVO5OPN;rAeZyQI%cJ^0-wZ@Xe0-afoT-icg$rM~f1!VI)&R_aGy zyC9O-i8!{Lajr{;5NEf|a>yb*^Rh)cEI+2h)Z^&)$F(i);XN5&Ph@=U&G_19^r!R% z=?L=QpR29pCw);miuOF29WK2h9fSV?>8GThmX0Hbr#SYjMm*_;GywmnMeD}xMhM5e zDV;!Q_Zp!;Bb`L(LDbqUoigAG{nRR*UX|CEq`{Y+dO!4N9qCR7$@RJ-aWrWM7 z@KYQ2<1DQc`X3?-Xq5!Xj&BGS9Y`OAwdhF`5$gGLKeICJor+-1 zCpu+1ItBhl+iRtD9y((haW88pb+GfXcof$NN5{D)>aq|#)6^JQIo50z zLq`o+lcGsP)k7u;jAr;}WXKSSjHvkpNaLT%qSa==#LaTJDu3g;h@IRFD^{AiF@`g1 z&B`hGj1r(GC>l;Ii|96E$Cd#}Fn4NMqe5gOq>LFg20uxaWRViOh$Au!E{;M`_G%uv zWu7#i=2lUx*koW#6_1`deOU1HfN(@bx6lTU9!WFSpOJ;w2N!h}ZbSb0sCn>p_q0n+ zHjYW)2yh`GSsV*3K$GkhYG9e=GLx$H5osc!LujN`Q5(7+fTcHwd)?T znrPG^qY)rN{!!V_s)(9d%^8G2_ratcxGe#GiJ;G zwCM;CV2jco*xyC(%*xT0w?72&kY9&eR#aUBrlAeXx~2lO)jI2)fOR9&50)HLrWqkg1_pwJH(ur4x8ltb(WsJoMah*3hICs7Z-wCki#>(}O6D zwh2M^*tETtMXL!iSs zwy_3a*t6j@j7>S}Z=9DSA_^Ktn&6j=_Ub8B z1s-${s4u1ua5=ycRW39cMZeHspgVQ4r>YAO=125~Xk*HVZvr1W(g~0T;scw-v_}Fs zY_CQ2wA97S1dzBEdnO^UA-FzA6~YV%jY$^c`>_sW+w{Uj5;5HALW3MBWYY-SR7@&C zx6+ll2u`|+m0Pkg{XwH{W{GWEp-LTInBZqk&vWO}WVeh_B^wPNlM$KxLrB zgN+%nhX9#pv&84;&Yc@8qb0BUK%`-@lW^l2)b42O>zYe~x*T$Yk-vCmVAj!eoVZkMv*CUbi(gMYX|UHyHTf|jdrHprkU=3 z&b0FlAW%yfRr9gCZl{^-P9T%nG~VuZf4_6?3m{}CX=Zo6Z+k^uoO|xM=Y9U?fBsLs z?$ZTVO5kayOgqZq9W7CbYvK!FH1;8%pc-NNQCbk+YKl;UV6N-^WW1d&(8w!U`48W( zXvt&Acaw1+nG%{S>X{Wj5g$-J+?C(h@1-^i-M?Mo;UgDAiMQ6l&Z4&$Z}?9 zPPTZ=P7|^ZO|=i5mk2#Y$8>E`ary&Zf;aAVvC+QD%{w@}GGV%x40y zv|Gp>2&5(=-Hwz;0R6`Ro+rjeB!U}J{tB~G`H#H)8b6Qmc7>n&byRJHXqxJ*rq+lR z*qMa&f^#c(jvsKNXoH3)*fzkX@@)vJ=1STL?B!fUx@mC`kyF0M(%<9l+q}^fgtPVCx3UaT11;vC*Z=BwjE=JWaTJi74Mj>QJR%%cl!ukEILM zGo;Z~rj74gEb>VfB@8OLuF!%$3PZ?d6p#_?5}9cpNK>)?%p zZyf%}VlV5M9h@1MdEst#^IY>g!wc2jsrm-KowvR*6tkw<+M&>NVD>=lg@1B5Q;6jE zO6d!;q3x|-x$!HaWeu%p=TK@*FZ!Y+^YR^IV7@Pf@<@ntCwOAFV=5N;Lp1eDIR!m zas7eB`UCIx|Az;^_h4fE6Y+IV&N%M)dY9JqFRmL(tQ!(fQk=uUw}{w2n{|pmc1+1| z7H{Q5=RPCX+gpqii|(qn=+bVvVD_AaVG!ltBYOCRj?CammwTJQx1Xk@MeS7OYt!~q zlq$+E7nfJFUfTe$6~Cr##m>tG(@sOT^^A`Epib%q9okRPW`$$15H^2ZmsR@`K-n6$ zzGu_6b+`b8tP?@{8690Qr7hIzhb_!pCw(h2(!y1o_1X#O*yhQ{aK&b{Yr0UYgHgt{ zUj>R_hpeDu>I5>tl(@hM0Z1h~(9UhCE z0ND`)(uklUr_1&Z4UX(RwD&MoBKJOtyK;h)P^eh_E%HlO9337wf_GVIh(1BoNC;Xb zSTxIrA1{!X$I?ZUqo+{f=!xgkPEow@u9fx~g<~5-Lg8#oYrj;;VzE;`G&IX#$@d9^ ze+RDsgJCVK@_OlPY0?*rI{(7$$Kr19p4$u?`Yj!cE&Yj>{+q*#8}}wQ?oGDr`^ZvK zvd=nOI^&#q3C3jJ+_PA}K7qfA_4ur^@%rJ}!@u$9QfJ>{=e9)Wwp)Ym?~QkEOLiWK z``ecM4YA|1hZp@_34d2S^x%Sj>r!?7JNCuk=0tGw?dr|Qp{8Xq(3J>uz2|@LM0~@Z zWN7eCU~i_5WkQ6BLSItO4;`vsoRe6;*5wOgz2>)76UOYv`pkRe$!GZ@KMI7{JgXA1 z#d>Y@0AfA*gC0Pvjy~#2LKYdicgL!;156y_<}}s(4mJ) zb&%zP{h%{6n1?D6NeUY1ox$@j3F}b0F)$5K2x}RFjtPAt0X|40F;hra1CJpr<4;Gj zl)pu{L8?~ZU(}Nfd8N*@j_8`Ox9{S;38T$}vnltGUAhqXBk?t1&|kAz;=-g)I~X0| zHiyPb$Y4kOR0$!24&DBSVBu{f0$A`_%Id!Am>K>`F?6Nm-|PFY?nmhLp{qmuf!huK z9JqQQ1@Ct7J)EkpyZ-9zt8kuoePVV3ZtNDDw^lfCbpVN+W4|5z8DnXal zBvcr=E7&#q{Ah5LM5&X#0Lp^Hgcl*hQV9$h;A_D?pbZvn1_=u-g1nnAW0khWxtsGn zY`ExIoCB`|j4}SGHbHXpDrOG6PzO-MC$ZbYt{v4uCCx6I_oQ*1)P;c+m-D@p22)QS z!o(N2X^Ogl<7l1OZm$XJV|O z;VP{)?`WvBM2y$P2xK!+1YyRB(TLFu$W{xPQk}=4Q4!fkU>5KLbMw&KpVmG>OEw6d zgkv0V74#W{g=*!FjvN&Yz^Ros`b(|6;I@%9q_Ig&ri+A;hGDGzA7LI#%vXSmKfz;! z>qV~qv=3~jEUwCwe;6|&H`WhqShzER^nHs3M!Wj2@0i_@gp%ar32(=3@1gnr#WjP8 zHG}Uv;%g4YU5BJ3s}D;hYjv_@u{ufa5J)wCbFZWD7ck}98q7AN1ze2Ttz%l5eFqMV54xR$0rEtWKJ=+9ybn|IqO(2c8NPM93 zh0t`}KH%9)dXc7<5wx-xa70Y1Jb)O4+vlWnKrCUsI{7Q|+;c-n@toNhorElCvp#SL zUxXJJi2ed@0#M1$A-17?E>=D87*kDz$OW>HqU)MY2+}~ekYk&tp6JvGDdkN72f!+X zle2U~-o~_6jlC3@z(^F)!nA|*fbo4is%qIdrm&Z?6tnqys+en1j%W`7$st4nkThC6 z-st4(m#)m^`Y2S;<{TUtwa~06t+}&3!}A$#D|0 z8G|B7r95A1cppa~T}11qf{dAs{N)bMActoQz5wP|U@0mg;pm!&qj2)g^9%02RG?9w z%&zYLFwlv!A!tkPt8NgsPA2{BcU&D}D6)-+ax7YTFnby`{Z!*%?fF6K6;SN+9ndfa zpzP-Z!eTt~j2aF)VH|YqCR1YeNgc#$V@@aHCR1QKrT((R^qp-|KiX;E!AKa?%3y-b zb*&#Au6dgcoS?Cz=b(syT)Ga!iLYM_%d{P$cbrkv}2W4vG`g z%>;MeZv*J5pVqPF`ZOIcBK z^uXPUhS-_+)-F_RP5Aj(c~v2IPGZcVbTcgA(MqH5;luk4r`xLwhnLi(!4uaquT1wmE2*NW0qn_#=U zc6VE|4CA0hBsp7`0i3X7odSfKwgFaQ?SrIj&u=0pFGtoo?a-jnyBHK+IMaggB@|q( z*Sb|At8Mgm@p}IRWD{^W11iN6Basr+yyIst1{HEU2lt9T*{ z69rKSMh7)1Gbw!rw%?dCenO8`kx5M|EO`FJiHjG;O=4Y`YvNFe+GFXVtG|m9lygJtCWG>N*vr7SeMl0sSVE;M{Ef)*wqOZ(~S- zb5RQ|T?pnH`%cx)g~umV>@MvQd%jwiv`foW#RUYW#;sYbHc1Lv!J|ahWa4Qqvt5V; zHc)Hn3`Je3n)Z(@wxU|>{2u@7k6wK=Hu%<|8;9ltHy=#a?^y8cM0Cu0_3+h4GEO7| z4&e(#y%ImeK})~5%<*hp{&x<6pV=T|qRv$dd>d%<_VXY?PFuk4Fu%1KZ%ufc&A`O8 z*{{@Pz1ML8?R~^;GBm2^3d8vJu;Z-bob$3h3p2EVU$5erN(ZpI{DfWWDeI)p0s&t= z4?$O}|JSU)UGR@VQ!>~iz&>fZTU^Nh6Ta1If=A$UF6^m^PSOyeA4@2;-UP#BI*Jhj*Kki<;=izkoQbtU;Rz4}2u+IE4 z*8q71jTUL4*B~X7|IJ8+mIm+JwXpFUE)2WgE7C^oa=~OsdpFswg$$`5um*qT8S?yR zF&+b=H;tBBE*GM=UDK{BEz^as1*Z$ov}mOmzj$AmZ|;Cu=z7gM;l$T=d~LlJ#53}m zE-+d-u^T0tpSRv`#Kc$?LDI)&8VOsz`l!8|r>3TPQe-X_tj`XkJz5C)6y$$n%&`2m z&Cf_R7$TU_V%~>}ho&0$NJGpLga&!$2S6tyLs0dmg4ypSu~Q@fKY<9OAl)g=sI_$d zNoc=s81UW=2r1k|hN`46j5zfPPIo`jr0vHe{R(?YAs|`MxWp(R&o!itjVy{?IZa)pVQdVR~vV3P88)vUx+YqCe`o>n@*pFm`&u-8sL1v1fatXM4Qo z5$=XHi{7S$w`s0F;q8RH%h!wFE}nld8QeHilBx*KZMj{s239dE8|JLDhi4y2RkqBX zzFkQx~6CmMP6zeqNOSLxqIP@J5r(E=zhv^@b?a6 zR~nk%I(FmO{Fa-e-`JjL*b*H|g}~BficPzs`xiYO5O7)WY(VT{=#fO|k@qW;p+{u` zw|~*yo^ZFv-RrXxFSV>$Y!Qr{y5M{mrfyqzEL&`?#qciyKP0W4@4OQ4KbUL*8MtZ5 zUGddOtpBYYH+CeeL$}=_uzZ+%%TilcbYH5qGwund$~)raeK$A7H|$My_AYjAO>}OJ z``S`9O>Z^aXqYKTRdmKHHZ1w!jSEhyMAF2Dy>Oi6Ym0l=rZyjp`#SIV`Y}{nw#(pB zO#?rjdpS|FE_xuGTRrSVE$I&Btf2-W9kKijzx-<32%j>2i*Ax?y5%GT8;Y> zQ^t2vp{$4Q2&hg6VQ&BkRgp*2h|{3K(A2OBNL5)p9Fn!;!s;T0%(*-as7DIHX2UUD zD*|ENA;hRpcsO4# z-toXn45A@}r8*N)`cTs>77d;yYTkmtr;$$K7^WN_fH%W@R`F&k)UkOAQ(%vJ5}B$d z=+5)vr|b=)dV==o^S}Pe)mOfBIqs6a(XtN9`qDb`33W6U6(&B88M&9Xj11o>VJndm zOlaHGKQGoM+5qShWQ>vnC~a0}PjBq(f}5y`7~SuLtR4_2M^91R&9p*RF9*|65b78x zJ^LtVItilFN$3^({f`h9GgBkS+fh~)F`i^$Isas~|2KQQ6_Mz1_zDs|{^o|*4$N%+R{v`at3y$Pt7#XQUB(yYqN=*mY;*M;;pY{v* z+y?k8#OX$_qdM9|Hj{cZ72f+yVto+^Hj;Uw0@#80!U-nS@J4kOfA-?g@&|ASe@aMv zXOlazbZBl~5Ho2IP)>GH9ejiQO@euFNB~@#`d7ipamb15wc}C+KXO##j)>Y4!0Tm- z{YR2^bpA>{5~?QX0DKfR!NS&eC7m>+eQ)j!m4!JB5TS`Wm=?Io(tL?rRjr9e<)`)! zX!WKixnYP1P;gx6Lz#^_<3*pWR$uT5sHpK-=0jDLXMu6cTJg9!Z*|dj{hm zAT76x1H&Gs9KCRs z%s4>loq18q>-0iNC$b6D#|FPL6@6r>y%R1TD(bi+_D1(WhMA&Ez)H8>*ftkQ)~&hY z>EX86O9Z_-TDlt45oqAQb(x#}{ZKiHNMZ5fm=Dy99%pR%2($(n!I)l0dFW`X^S<0WgwN3v$E0?LOs#M=f`RkbYxKZB~tVahf`FbNM-0 zrDzp4mdp^gJRWQn_KG;bYRpa%aU8MPY)r;4~@PMjSZReCussgNV~y+Hl-%d?l? zemq{?`H{s@)DnI818*SZt6uaqCw$F!e635q>g(QF?;T(By&}9{jp-8y7t`Yk)`Xzl zTTSpkFLzRd(wHvus^GT`JV|{rOxyDajQGF@(6M=SuHeU*E)dvsYwg~T!c>HJ3*;&WYtZl-Dx`-_@!f}6pq!LQKWd$l)^r#3&3i5fXDgk zrWB66DPlO8==3bDt!5e}_PuX9vS_MWo6*-3T$%=r)u`qDdVp=$>WA^ssk5K{rO|i# z_n@Ah$+LGG<7eP9(5-Z^@3p#vs%byN%H&)IpBU}F0AK+ti&KAh^c>9Eo(@u2Rp6#7 z>YWEzfW3MC>^KzI0Wt&wk%sro`o84MO`OV+h9lbsf<_RUI~T;(k7E?DUWy(`vnD8% z+(-CgJt;-)c(gM1eHB8<-BkjH;OI%{_QHQ85bYB<$k7WHc5nC_xzq~_!4QdnHvr)< zuvo*(&z?X3yvnblPfb{=)n5q)$xx_7Sw?S3ND*a-yCJ-oh|ZA`E&YuCE};nbJEaFJ zMv}Zf;^R+oQ#qOG0y+}L(NAF>*3q=}c-lI#id_lQMVh#aC}kTVjSZgw(gZB!{%FBn zh`)<-TGHS1k;Ploe04B75PgBn#%8#0^)@g0%C5U+U0*GRQ`WEUi8)$+o$Jck)-xz!0owaxT58Ms3%&lMO*m5WE zpeYDPMpD4$jxU&LLIqa3EakPaj$~Q$M;2#MV|3uI&;QjCcpW_V_Bmkx9h;KA%{h^` ztiQ82(Xln@+Xi2`0`#`A_t3psLIdSvyHiKQ* zOQn(JNm#Za$6jazYGx}r4F{p+P6=M@j;6%H(HGCd(lPMQ2pm{R%EPECh(!{J^t1Jn zN%&n`o~kS`woAF{f@3d0Ton$PR`1a&6=Q4g5SIa^S4B0<8|QPt3uUat!cCa8u~eoS zxGRdT*s7CH*jRoGab>${4Urt85;dPw<%Q}_$My%4r_qGd28Y|Tau*@#$6A}*@I11zZ?jO zO_%uW{cy5;_!ljdYakhCed}l&X2lU9geXt>Vw@$c91C_nKX$1ThYo;2VUI?3HK%|E7UQDf9#c8OeGY^3?_OLm9?Ms`Lf5 z$gSdxAm)Uum9)}fY6vDR$5|LBFnIvvyw>cAsHZ+g@d8~TNa$yWXsL#9y^hWok|Eg$ z*F%JZg`8SQdx7K6y$e9Fie!eVt5dIk?&{}aC+0RMy=&sGHJ>oLlu)}L70Nu4galXU zOUOJ&@GUQGgM}c4BTM2oACd)Oi#+Mj1bJyQC*m_uErUd1u!vEgymg_DpuVY#`d|ib zMYr$@17MSYP6tOa7H+xLlvB(${)1 zkLs$jHa86BtV+d~V*p0<^(GFzQ&sA0&WXRw$^9}u7dt#u=&*OkDq^R&3Br~+bc4a4 zS*+QT03@r~8a)7SzrNbIt7fIdQW}6T>*PWSSRIXc!2>Q|6k4!@kG*qrp(1oQQ2*x9 zx%OnBYsRT(bF2MUb+Tpvj19m?SIz2u6@4KgBO8ykLyb3ta<3Oj>9kI58idzgb@xCM zDJ+Z)2soJDeo0OzfRmt&IvKm*SC+uw8>(Mf_N|%Ln0A5FD7s2&eQQr&Wp@#OzhYVP zmd}K*pP4-q_Xgvxplk=S)Gw}N0pW?IW#b3h3i_ngt~o8Y31wiap`#L~M@Dj~)XIJW zD^)jLCW*0@#P#8!9JTEK(xpXjGh9L?y{&PV>K2Z@tX+DK2N83>y=YpaE?cKw!0z!Z z0Q)gjzWe9ccQ8Z-CQZ3O`rw9k47nddrV6$Krhu=p7j;zj;g&T@ZsEC| z^d_k1dpW~R5pS>;NDRW%24zIR?O5y8SK}@fnaev^J)#SK*7L8Jg6sBY+j)}ecBmCy zAb>4I@5ofo(-}x1TiU_b61V>olo(-M)YVIa19)jNI3S+pjH&mb7jEaNq-yf&n8gIq zr`|8nnyrN7XU8T^@dQTf65UE-Bo~ko&Gu-tLQ}g;g7&%1DjXTX=V+DWeanY;%#FfK zRn>ChuI9fNTu=znu*6AaQP~N~57^C|=^B*ujA*tfBB+(BT&!WZBO~)h)o_%N{T=r< z>s2$)9^@*Qx&r~}#eAxFfJm0)(@pdWISML0tGE;vD*1$Z*9}YS`njEkxp4ga`Lo7c zkWcTjZUp)SL#qA&$6UMg@ozy47Bpr1wRfi9Y3p`8kw7c{5;QOHU* zPiwCp@q279*((@FY3Abf(yOI2k=WoJbp;5T_z69iOw zTqFUcFSr+am>B%7&e6`0zAYGh6?P+gOe_jRcT38llf|wb_BesCa-YZY(hLa*U1ILm z(wYHLY9++ScHWwCTWv9b`z32`tQ`4ti#<-Lh)n^0cp9Vv4-|lB+G90y`{wuF+;-1y z^A)FdKO%lJIO7$shDAEb^hK1OwYTfoF;sE~QN71O@G~z>6wS*Jlu#a`@L_c32IB7iOUC5DCb~Zsl)1EMsairh`-(g~QWjxRgF3o`U&eDT4+8`kVEZ9UPD4-wweL|% z-h2^{+7YxFT(Ptb*dMpFkFA|kb)BlbiO`P2R$}10ogf|l2+7hea{jrvls(J{)6t@g zvBCTJ*1`UO8No@~Z5F8>VS-uSh_~;iWwHfDltcJR19Uit zuv#M{-{Z3T2Ht>%0!u~S=!;+47AyPWuGoujy?W!-`HKrp8<(mZVkctC%q!7H?m{>l z9JGwhQZ{0{TV54=WTCwMp50p3@u9DU9JL}ReklV>-WN6vPkk`va;jqzP~IFrZ#W;_UC^0bKiY2?i+$FBg&@Oz?~z0 z_|-?=JUV-LZd20R9d~uFUh@uAA1m3qtXb3{jozwXSVGKo9lx zj(A<|L3tu8-Vlo3kJUu6g`5lPH&5*Io6+U#@CCX)_re!>V#OEL23^1~0cVQSS2|Nu zhuB2)x8xIH(4YwDo>;AViQ4{O68f?!t!9gsTx}=l1U|kqUl&W3GRZ3in zdy81}oR(67Re}JG@)gNFcBtt!3@q4X(xQb~Qiy>Gv*yqB4eyh-$ixmLFiMw+JKYYP z#Ppu)&Y(GJ3&$z4lEilxWUZuhC?^!o>?+z{Ffuas0=6rmZ7Rb{Ts3bal{mp*kJ@;3 z2XsuOW>3X}w;gJvAHr0aGxp+wuj6h-ZEWLQ=R!rd40SJ5^wJ?PtyS%P>%ffzx4j*F z2Kg%X#9Pnac=oopOFbUGxo6J#2H!7L1n$e$A&cHY=I z-<+uHNqT!esIDiWvq7A#R<9PKYGSpJPe$}iir9PPseSnVqp1@1B<&i|lH@{lC`>~L zv+eL=Jpo7x#6k8}pLFx4p6E}a0$J!j`WJ@v^!{b|$LwEunnx@Af!M~`9rruU>+NY# z+mlbF>0P|zCD5#`SdaC%l;H- zf3|>`@;?9+r^{f2nCh1!rzG<&Q>m>B(GDjkPDv0&c%FzROb+&eRfL zH~0`(Nuyw7=s8QFOd1h^rEKhv!Z)}86!eIs5y&;;6UN*^KAPWjv60jAg&K=D3(aaNTqX zCvfBw=?iuZ1K>UP9Po;B*kQ+%=bpoYIDth&jtymuidhHs>J(pfN`*?;!Uu0;OgTq2 zRJ0U!AQ4hjCl0#(a|1_5CX#pA7m{6y*^Hs!%0o8ru_;u(fc8L^J_6pWKyg@&@w0}3 z5@cfLhoZp-0aWcNy)Eb_bS&o4Xwc;PT^FwvsFccK0<>q}37N2Lom#OWz~e(0Oj)8| zvYSjMM$}S4g@Mgw$TWfg#UOT*i7+Kl$ixELcM4j&bS5^M)gi&oRST_CHPfQL(n=HS%^ipl$&sAg7PdX=#-gqI5gI)btH z*rmzS=O+aF3{!*_AHo;2N58Kc z_zlyh8VIUq0V>l4vPByE8JMVC)oG7;K`4I!2!pg@43uvYnItA7Gm}bvFCaHnCW~2& z!848}(uqXa6E|5(%4okS=9xQvvnc7=8nuE{^ZLtIUyixvI+ET{+!c~LlNksS^ASKW zin|bZahk||_DMo|acOv3qzqV;IS2JUfTRjODR3SpHV98fv_=L+C(9Z0pV*@p4GI~%8P3x2cD`xq%iw;Y;@JzGz*7!Aqe}F)^Mhkup z1mcN_aRLKX&|ozZVFoh)u+EO3DqDvm=}o+J`gD2uzV5GK(or&&OokQ+Iul;&J`Vi+5v zmI2T_@!hB(!WdW^WwPLg0pts5kXjxa#6+&L4V_Q408#5TN^)*u~TS5s7V$NHi5cnEt{dNV-&LhXRS0b6m>W{ROMykxHdJ zXDSg^h4_pz#QX|irvaFC8dlwj-h&CxkvJ=gE@pa)`KFyBRk}olSJL5;I)rH>q%mUO5X+C6aBCr-{QebOz|B|~p z)}L@UftVIO1m&5=7U%#jHMT4^u1hqoyBSC}Ze6zQgmm9fbnnb&NH@J%u~@SX`iQ^R zy7<8U!~^@|fddKefxEShZ${=GPS*C!6s7`Ai-9$Xz?yi^j$4=FN1lua)+7T@%{pOo z1rEvF|D=$Zda zGO&5Zc@HuwELz_^!tj{f|R^t+|8gTA3~s_q8C#S0DFweozs7 z`w)$tcfPl4p?X^?*#33*+wR{gi8(u`Hb(#N z{u-Jd-jJx@aJyoI*4&vxDNi}+pRxA;*%QoMwqhJIpR-zg<*&bV^`)5?zhrQ*F*EcF zL(l7ezRN!rdTS%Y5M>=!AR?heM$hgAKXP*F6&!uEqg+s0AtJd!cVkZ0JQIp@BY-5d zQZTWN;}B1>GDpH~)%l%-7lyUaY-5NzV94uoIbD&bn#yaK@L%F2Ctgi|*p4D;Mp^kh z-mKEEYh_p1@J5>Kf@%`T8gS|YJHNn(L|0|ssQd&PB_Im0d7E+&0?YV1_o7g_Mxj(5 z{AB$H7~9h6viaz((~griX$TADRs0O)S+6~4qQvHt{(2a>vLCN?Q_AepF0g4ortDS@8B(=^RWiQRVa(Zl+*C9Wc9 zGO8S_2>~4@u@9_c(ny#GxIu6ONaO;B%_#>iv%CmpDnSB5YBdu*cZpjFN|)TP1f^>n zL>=HGDxyVI6ddazA%Bq)W(M^|&qb9?C%?%o{x0f=LRB+IT-0c%ux5ltvz|u>o(>K? zwqMHc3EPY)bR3S}#|-yl0$!X1=}0vri*~V3bTEQWB+dp4NQ4}yHku1@`je35F$rr5 z$LuUl3IaiFOF0D#NaBM?>HA zoQ@R%_KltuWGswQUi8R-ZF<*=ZW0KQ9wlt-4~5)xescEY2&yz4i$E>X{-eW3_76RrjlpPAfJ82oBBuSH@O`>;;yf)QLfa`UeB<#b zCy)h+B@i`|Hf6I6{>KPM$*PbB$l5HymT1vZMcwU+EwRbPrY(u4Em7A}Si;sGqZb-SxI>e*ewm-#C0b_+YBJ`|AyFH~d!9OzGXKn#HO$iK;d8zY?$7cH6h@ zo--$XGWejxMx>5Fs=~im(GCk^cWWCKYu6`g*WX+pukBCz`#;Qzxb5#x`5PAfZ3%zd z+~W)WPFN)SkcIUns`_qP<5laEzV(@A)bU=M1xim19kdql#z=JNZh7Tmd1s=$bG|WN zzWKIi^NJG*ei|Xf`usrKo?X^I>fBw4pMSfb;KAJ9^LUNpM?V~p_asy$KO-T`!#|V>0LW%ov zDXhgx5~!cP+E>qDP%OE;ByuTEU065jS}`(RbqL8m7c&QQZ3LNkn@TB<1nHjf9B7~V zB*(-u@(!M&;H6q?!VOuM`xPk@3de{@405v~#rtqxM4uShnhX1xGZ($}^X1(oTyc;T z4`v^=cf_L3ZG$**d~7WyuSWKiCY18~7*<6f{sQO!99QJ4xTQVPQKhVV+AW_XCQr(v zSe&@Y^*P1$SBJOq(T88})qP4&3-`s;*7i>YG2CsM{Jnv{V&{x<7DN zr)nFc2ba8cFgpw5ENc?p-ngq*Qa(Xc(JulAJMp4hDE59LQ{-r4CPR)qLTV=HXJ7&4 z)o8(b$QvKFbIxCOij`wmewcq(H@M4}3xS=10y=0phQ1UW;-bsNaG__PE&>JbYbG;i z#Rg?lqk%z^U8l587aMXg+Iyuu?8qy#Qv9xpsa!6e*p-!sjv;AzL_7vna@zb|Yu0x< zzNCEztj-FvO~rXJC7qLww%X3eIfALSCX zKeZ2_e)osK!CZV$MVL((-ciDoxZui9d z0&y?lJ*+`e*O0m@*D9lk|JWM**t+9m>vrYep)DbwbV>Frc#|&HWn!csGpS1c4w5N< zf%nqO(piQknOryt6KXP2tUg`!!o~BzKujX@f-fTp0JP?wuA#1!W)({A!z3V_9DiBJ z1cXXe0s+eqaNU5B)M@Gc&8OE@BQwk*sr1_RI%{V~+37-g*bgh8MI+L+ zt4b%OL1Ze}#2T!TzY^lSj9gXm9D^9LL~s*Dma3q^>)XD#jmOg}NcGp$MN2;LR;B8j zqK6SjB|vyIV+sn_JUjdB+=fJDM|2`I(_5xT;z>& zH|%#CI_K^09bITxf431S-#C54{vk92H!O4=UI+}O>U-n$4=yz}FE(yWG;WM%Vz4S@+<~p!(^2#f=GCz?}(s2(?0xDCj9rG363Vb7Qv;EzsMC+C~6b@aMj;^??1s$;H4&HVLQ=tbILx&Qf zL$^am;*TAHUo|8t@uf=ZAg)wWzf|hK=d_hnqHiF0F@AOYUZK4tfF#}~=wg>Np?kd{ zs27%mK!)&^-zzC7DbLtl`6Lc8Y!Y^V76HI+@|$p;RXXo?p7mI;-U8w+zsQ)(^0YxO z-^JR@)CjJTkmmauBw_=Fplt0Axmj%vSZt5W8>GLo8dK13hxThD!6-suh(lT?7#o&%a5TYPEGETcT7}z-VOW#O` z5yio{Qh^RdMRPB>YqA;c%3xVCzfu(jQ&_!H%fKKwMtNFz%+%@VU>w_4iIEVIG6_8x zzn_s$#ywB2#@={F5!l;92;5hA2NMZgy}WqYd)9YVY>=ybbOSOoM3f-5k!u2q zD_@Wt{=ek5sT2_4=h*sw7Wo#!7@+gNka)`zzYMV!ea>kskR%W&LXT*3Rvz8hyO_GP zG9u*IKz%u$#ds0PLH__zg@hTT)iUT~Ux2Hob6fuZ$X?6sW__X%T>O&chIGhgk{b$H z1%n45gDeR0meGjq*=-nh}W)}|IBy% zivy1*1|El5M_(N*R{Dxf$_eVi#+N23zXN#qWI&+{ebBaty8DPc)SF>D86d+tN@3Se z1Q{kvJ)bV=mracL2hlibDg-F}CvCU?Z;Hlcp$-PBpouC9NSg(h^figq@z1zAD7~do zF2(B5_fMh7kYj)=?UgW3hih_;0@V_07euCU(l_bZUW z$H z8N}q}M-b&TtG)|*g=zCr3({qE^O#6u9{`^a;>fy@B)x6KqxG-RC8G*tV>Lz=HZ+Qv zs`g;|f{&8YOME*^xEeKt#4raqJdUiuc+(8XXoeKYcmt|OM>l%GYR%<2Ag7a%m5@P^ zFCluODSfQ^{4AV%Ol}PxojiX**dP%cYeD^Gv-upJavH8#3D)^2yQU2`vFT~5AjSoMAV6>3L8YqxhXNzI- z$m@%`#ClH`F~dD#SXhYCj|yZdq3S?j0tE^b1HZW!Xu9^u{oGr@pDTcd85XOb3!p)@ zRTqGUb-EyIBlQoUqfk{~wU7P?b^1g=k!?qa{6RK|y1e>)%1)vg`ZU0Wn4tdvEMO&7 zU+(t-7OEofF9I-3kovzg;Q0Hkd}&!yIxiPoGGU-7O9cXlG%(3wB^F95(i|!Fkw|3p z)YvZrgh*ZIx3LmHiJNm%^BZW)s@+E0wXz^V->Skl5Z4K!aMkypp#3#I zSY>iT`A>+QY9hqe2Cr}X+4B(5i0tg!ergP!BQ7XAzsp`HD@ictZ+k;CqhGZqyrG{8 zMDO#SQmb-=K>1IQ#AG)_nMb4?KP~e=WKLvx1J8qoYq#`duwc@QF!wZ%e*zcYg1~)` zjd>|c@2dImkT~^ZR?nNMmH@#*7fjplf#(_Gv&SJR6P`TXtNKD$g>;M^9Qg4?6eAtC z<+l9`Y`Y)<=M%s9WA+14P0VAMDe?>JUE#&Xz64Cod)LNYYbBa%?hR7gS~>I|As~m| zB#Zxvy#S40lkZ$Z1`7KfmtD>!%zCROYkWgauY6h{!es(iM9vj<2t=CJ1nIo7aoYY` z9b^^I?A(idT~+4Hfpd;bk2tu)skwxD^PiBJa!x&wHI7_C+Pu;cK1q%KxrT9Q7>64O z;mN}o^n--PEY)faXDx;U7tJl0S9o7BBx>k#@BD=!(7@7#stXsT7MbQ8D8*!v+%DtW z$e(aJ{2EFW3yhYTRfo_pUkTAmNUGE|z4^-g;9}1}qG#a!aJ*+A*>f~mI~?`GmEK~- zTKLk#DYHF9mnk>bC)zi{K67bh?CC^l`+R4-dxsE(rHCrPV|mRN52vb{q7P>ZE#4|M z&F$_T@zQpr#Qmp2!1wb5>jpMk|7e2)_Y+)++C^4_IBxAk;Qr=5^2#dW_;u0-(;s%t z^vCG?=%dGU%cpye9;JtO;NZ0Tp&LLI2M?aVE<%qKOn}uwZW=N!zNK*aK+wpGR{eA| z%XG4ls)kG(9v3A-tqhh@FI*tn%|nhzKt>bTr(=eA7q%!Nlc$~v%>_~L#rX1xBm1El zx%(21TPH_>x@Vm_azw)fwt{R0nx_>B=p<;Y7pd4t$uj^d<5-7!P!wJs5)55|)s5AT z2?xh6!KEP3PF<=^(0Db)Ktb0Pa%xA%agH~;cZLQkZv#@{=+=S6jB$pic$}(K0m{c<#7@) zPU7$&4$(d6OXJABy4Qc+CG(4}80B{{tzbi0tQd_j`L7Ts7mC1?oAc}=-$oLtZ6QDX zk!h*)S$s`$sYt5heC^FA65hSHPU04K?Olyp=!jN8EEO|ak%dV09FeZ&A%HIgYlXb6 z;029kO+!lS_9yBCzd0HFdtaLr5*Hm%zG(?IDOppA4QGkHB$&pl=}p_XWE&KC#)9w4NJTny09akKI}-o(DJdK&bW7 zOQTt4pzk{+*eRMV#IO&T`(LcXD#3#Q3FMxRbqKYBru zO`p~A0`3jRl>d`&EA_Wjm)U(013so4lU81iVK|f#-b9FUW-=7ymtFdoBS%JGdQ^E# z>dK6T2Q-r8lcQ&0R{NNc2%l=zlY_;6ej>XvJwZ&ZW5<*yk+H(luktsIp0EEiLqrKa4(KHh0vUT2I~_r^a_m^hI;`AavVY3k zb=+|98q-<{1Vhj!w=zP+eubewWU>OKkz@BoMl>oHm2AEA<~zM87nzsmmT5X|_hA6{W` z4pVWWCakVD2CUWU6d}YaUz5%F0mBqvm30vxn_Do$SK68B)|7COw)t3`oFQ}UPO+bgX)0*nqEETKD(jg}RG<$bw1{v}cCm>4Z)Gfv z_~bN3`2)5S-aPqg4YLtkGf~JN@R6KBg+?5V?9xubyu?>V+6a@0?~SjhTk&y|K2Gxd zdtQ0gM5e@g6cywGK(&Q7#vijV#!ju*KN-FVeVJ$T=&|(#vvPw9sgNWW3rf^Zbdso3 zF{>y9%SE?Rx?B+V;AtD=Q7_tos^Ff%j?AECYy$eS6 zsyyIhQhZf(uK4cvISeSCMTySO*P&Sz)l(WnXLP+t`EQYg91*4zL-RF;M3a9@|Jq3D zkq~(kyNS?Ox$iv8nR5iD>hxBAhOd9tS?p2-CMgC(oV&imN{h0M1u14W`Wvq}jq`mW z$}`rA{_Rxh5rIv^RO_?c8Z@9lQdQ`vvY-8MlDAX5o#u_oEXp`TF5awsOfqC==(pHu zlw(%N&rvEE65#zid?9qB|3`+t&D%Gbgz!)KGv59U<5n1=LtEiLFG4p@H$LHC$Z!q*t-UNP2+N4A(dFWPnln}=d<=-&$ z2fY0uZ)cbbsqK;+U%;$*YsUCSK93RlN0xiGKBp@awp!M#g^S!&V+&l+Lc=(KD#s<}PY*2T!R8&bRWz}R7G|6znPtuI-fk6P&y)+s_1oY|%Tx{_- zXWTLj{prR`i44Q+`<9GXhJBW@{!Ez+ms={@G8HoHx0E$yDrLCJQrVKJmf-;NtdZeb zOH*&APKN6(!5x_f8E&++Zp<{vaM05Fur<>xA6hJxz00!t8O3g?SeJCHO%<2?Di{y- zNk@IkQ)wZAvDZEL zL|*Ga7_VrXJA8BJcQz->4_-OA;s`h^m-}m-m6r4+53^r=4|K7z6?VU?B*AhPQUsALg2*~cz*rZYsWsa6*@Z^Uy)%bmYs;dcf@M(R?kc)OWUqIyzD4* z29`UXusZ9OCv096)?#UBjXP@o!s(j{#5O0Lt*l`KOKoEf8Mc8WTQhdIvj@WY^0#@b_+2V$S#}~GNd~NYk*3mFE7I_{d53sj zDymy{;(58x=4@VeS)Fam1$JlCa=9(VUT5)AX?MnnUvvya@(US)``AFHh@oOjSx?5z5DrxhnG%LdEmbw*OBge# z=**NcuG~^wy;_~TOo2m+B-1W}x zrSiIr6ThfHbz7#8Ayl9(Q^XJ|;1{V-fnx7+3F98JS~}OHI(IUU{w*2z^HyimQdMil z$pCVxM>9lFW+Q^dmWl^tN@i5DT*BCuXY5X=Cw6khf}eXnOI=^Gc5U2I{Q=D>^u`^P zAJq1$F?dzCF75~*`)!ye-Oeqkz-IBgRJ3*3iRaAI)>>!ZlDjnH#4j6Dn<-?7&UiCL z3>CxCV8+dm$5LIFDPgFTwed2vWxKOD)!de`^LIU_1Aq7K7r#qIo@FPVSEj8+=z5mWun_e911P2TP_l@U3zb^7R92c@T+zdL$aS3DrRj^!{W?# ze$}{Vg@| zkesm$c{n>u7(yS{Eqf8Vx7AX%W_}yQGYXTwN3QJ0cc#p>MbXGbfg5uavJE<_eR}F1`}A5Ajt{zS6#O0cfFN9rtVq$?ch&a=K*1 zgvW!Yg)_$aixc4!*uV8lrH@;e_aW-nK@}gfJYx-8p0PavKK3*Aux-o{wr|I~B1^cS z2zU7}To|>SggxLdlsw}MyTZ;dIG!npLYwEALQs5)l+!4F>e~ZB9T_Ce#jv!V#m?4L z;Cq6w@Iy};;6_MNxFpO9;tvT#l#mky?g?R;P?!PP`kZ>4-Y4YIAXjyY&cEou)@&1K z_h@9CRtDf^Os|E=SCtNvC8VQ3w{ z@-ocyO7FqtObC}bP$&rz5?D7`8zhe2Yv_9qAaC6VijTwvO!HYKBOJ26YxQ^E(7!P_b z@oJoG#R&f?iV?#+Rc(-u%nMmP-je{Ld>4sv9L;yG5=Sa=xDrQ@-(d3p1~(y(@sOM~ zT&H5T^|H>?K>HhF@OEJE#g>w`q@xw^?TB?4aMIyyNL9hNJ%2Y3iQlE7k{>(q{1cDE zDIE}qywILg$QRRg2g?*^O>rXTDKT^+T|6>!@*(C8!wZR5U$YLvQo}l1#f=dsQN68%~vx-u82Z;2Bnrat}msYw+7xC zaZ8uU%twTq<_PK=QD}!y3G&v;G3FFWyIJewl6}NjpOwypfzCQ;n$AC22sC z$GRC>!&?t;BugrNyshPJ9dCk)C5R3i__&cbF*5{FVT@(%X580#;{;H|Y!PSC$MBf8 zL#9}HhA+fGewLxLyuHZV72dwU+pqB!3q_ zU=n-%SKR-rrRdKr-oLa||HS67+U{9!`$@4D`f;(vy8S1Pa>QA(Za)@}9d>+CY;lzR zxuf~d9i4yf==uqkNx@HCCAe9%+cHC7Ot*zn4p+RWHsPp?Jv|qWui2jH*pX=18F%c2 zkXf58ZmFEP1pOGR4fsl9$J|)F=kY|xkwnAME8dx!q~$2gnN-%K%FnIXZIwt(L~YH+ z`Ic{Wf1~^6lgaMwaZ62Xd(yIfxuC#$&uYJ3AeqXYA zL)_w<=}B5P+-tP-uKUP_3NG8dy~wmCwsYCywc1wNnyeME))fnWRtBw=*0%XQD;E5$ ztgEp$$Af!UEcjj7Qebt({IL@^YE~==u9Q2hu9-nNVmlhEo;|#R-gK>$Hdwo6F0WYd zv+|I&%i0wyS+U?}o)C)?b3W+08kmwEmfFdDrNktLG;)XbIYsn(2o|v(BQ(Agq4)ez2_ukBW z^UeEVe7wR?=05&z>6-#$ztP7~N&{nm5shu;u?F+FX9T=sGz`uRHpjfeCi99=*u}FX zjbi34p?3sI2i}p)TSl+>uf65&XsyyaHoNXZtoG&!S>4=Xcz)a!?9!TN0FzAa)B%#v`KK0B9y$e%P9)4n`c#yJUa#{o9CaJ+wJ+-)BB!)WTpeY&hEWC~g1qMI zw!r-rfg<5t0!m{uT6q{Hd?i{GsGe<@msEuuBb5~}PS&BJA||Ucs!jH%VU)~#5B0ldNAMD&6Sn`Dpe!xC79o&9}e_pu2b@rmrUrkNQWP^SBG{e}#ot)83_Ik7Hap3r& zSZjB)YO}f}G9gFyKL{KXfQ$i|;YFOu2;>M2>l)`x0Nocl^qL6dniEE}8{LB^CP$DC z_KY{ge9cTNK8~T%PUu29deFXf)VAHgQOdR@F)A$}f76mmVvzC(IdJa%(ATz&d??b} zBp)R=2RVVOA|x@&MVV2QxYT>*mzn^xRM8yBXWcGQ9?dWilRx%Djgpb>Ov4;F+5M78v1sgJ5`&NOz*0C9@U*qcAMtwmRT;H z=3kz@I{oeF)#KMEXZ~j7xSi>I_~xk=V@da5Kq&}q7x)AD`h0}S5Frx>ewu|H7tzXHWD;I6uQL)%uLqzFFYrrR6@urC+V`)BN)5 Ke=%CK#Qp&%CdN7d diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__pycache__/filter.cpython-312.pyc b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/__pycache__/filter.cpython-312.pyc deleted file mode 100644 index 6f7ae2b28b593acca0f01c460092cf36c2681e5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28639 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 IHFG)qA8pvSSO5S3 diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/_deprecation.py b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/_deprecation.py deleted file mode 100644 index a0d7fdc..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/_deprecation.py +++ /dev/null @@ -1,80 +0,0 @@ -"""Helper functions for deprecation. - -This interface is itself unstable and may change without warning. Do -not use these functions yourself, even as a joke. The underscores are -there for a reason. No support will be given. - -In particular, most of this will go away without warning once -Beautiful Soup drops support for Python 3.11, since Python 3.12 -defines a `@typing.deprecated() -decorator. `_ -""" - -import functools -import warnings - -from typing import ( - Any, - Callable, -) - - -def _deprecated_alias(old_name: str, new_name: str, version: str): - """Alias one attribute name to another for backward compatibility - - :meta private: - """ - - @property - def alias(self) -> Any: - ":meta private:" - warnings.warn( - f"Access to deprecated property {old_name}. (Replaced by {new_name}) -- Deprecated since version {version}.", - DeprecationWarning, - stacklevel=2, - ) - return getattr(self, new_name) - - @alias.setter - def alias(self, value: str) -> None: - ":meta private:" - warnings.warn( - f"Write to deprecated property {old_name}. (Replaced by {new_name}) -- Deprecated since version {version}.", - DeprecationWarning, - stacklevel=2, - ) - return setattr(self, new_name, value) - - return alias - - -def _deprecated_function_alias( - old_name: str, new_name: str, version: str -) -> Callable[[Any], Any]: - def alias(self, *args: Any, **kwargs: Any) -> Any: - ":meta private:" - warnings.warn( - f"Call to deprecated method {old_name}. (Replaced by {new_name}) -- Deprecated since version {version}.", - DeprecationWarning, - stacklevel=2, - ) - return getattr(self, new_name)(*args, **kwargs) - - return alias - - -def _deprecated(replaced_by: str, version: str) -> Callable: - def deprecate(func: Callable) -> Callable: - @functools.wraps(func) - def with_warning(*args: Any, **kwargs: Any) -> Any: - ":meta private:" - warnings.warn( - f"Call to deprecated method {func.__name__}. (Replaced by {replaced_by}) -- Deprecated since version {version}.", - DeprecationWarning, - stacklevel=2, - ) - return func(*args, **kwargs) - - return with_warning - - return deprecate diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/_typing.py b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/_typing.py deleted file mode 100644 index ac4ec34..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/_typing.py +++ /dev/null @@ -1,196 +0,0 @@ -# Custom type aliases used throughout Beautiful Soup to improve readability. - -# Notes on improvements to the type system in newer versions of Python -# that can be used once Beautiful Soup drops support for older -# versions: -# -# * ClassVar can be put on class variables now. -# * In 3.10, x|y is an accepted shorthand for Union[x,y]. -# * In 3.10, TypeAlias gains capabilities that can be used to -# improve the tree matching types (I don't remember what, exactly). -# * In 3.9 it's possible to specialize the re.Match type, -# e.g. re.Match[str]. In 3.8 there's a typing.re namespace for this, -# but it's removed in 3.12, so to support the widest possible set of -# versions I'm not using it. - -from typing_extensions import ( - runtime_checkable, - Protocol, - TypeAlias, -) -from typing import ( - Any, - Callable, - Dict, - IO, - Iterable, - Mapping, - Optional, - Pattern, - TYPE_CHECKING, - Union, -) - -if TYPE_CHECKING: - from bs4.element import ( - AttributeValueList, - NamespacedAttribute, - NavigableString, - PageElement, - ResultSet, - Tag, - ) - - -@runtime_checkable -class _RegularExpressionProtocol(Protocol): - """A protocol object which can accept either Python's built-in - `re.Pattern` objects, or the similar ``Regex`` objects defined by the - third-party ``regex`` package. - """ - - def search( - self, string: str, pos: int = ..., endpos: int = ... - ) -> Optional[Any]: ... - - @property - def pattern(self) -> str: ... - - -# Aliases for markup in various stages of processing. -# -#: The rawest form of markup: either a string, bytestring, or an open filehandle. -_IncomingMarkup: TypeAlias = Union[str, bytes, IO[str], IO[bytes]] - -#: Markup that is in memory but has (potentially) yet to be converted -#: to Unicode. -_RawMarkup: TypeAlias = Union[str, bytes] - -# Aliases for character encodings -# - -#: A data encoding. -_Encoding: TypeAlias = str - -#: One or more data encodings. -_Encodings: TypeAlias = Iterable[_Encoding] - -# Aliases for XML namespaces -# - -#: The prefix for an XML namespace. -_NamespacePrefix: TypeAlias = str - -#: The URL of an XML namespace -_NamespaceURL: TypeAlias = str - -#: A mapping of prefixes to namespace URLs. -_NamespaceMapping: TypeAlias = Dict[_NamespacePrefix, _NamespaceURL] - -#: A mapping of namespace URLs to prefixes -_InvertedNamespaceMapping: TypeAlias = Dict[_NamespaceURL, _NamespacePrefix] - -# Aliases for the attribute values associated with HTML/XML tags. -# - -#: The value associated with an HTML or XML attribute. This is the -#: relatively unprocessed value Beautiful Soup expects to come from a -#: `TreeBuilder`. -_RawAttributeValue: TypeAlias = str - -#: A dictionary of names to `_RawAttributeValue` objects. This is how -#: Beautiful Soup expects a `TreeBuilder` to represent a tag's -#: attribute values. -_RawAttributeValues: TypeAlias = ( - "Mapping[Union[str, NamespacedAttribute], _RawAttributeValue]" -) - -#: An attribute value in its final form, as stored in the -# `Tag` class, after it has been processed and (in some cases) -# split into a list of strings. -_AttributeValue: TypeAlias = Union[str, "AttributeValueList"] - -#: A dictionary of names to :py:data:`_AttributeValue` objects. This is what -#: a tag's attributes look like after processing. -_AttributeValues: TypeAlias = Dict[str, _AttributeValue] - -#: The methods that deal with turning :py:data:`_RawAttributeValue` into -#: :py:data:`_AttributeValue` may be called several times, even after the values -#: are already processed (e.g. when cloning a tag), so they need to -#: be able to acommodate both possibilities. -_RawOrProcessedAttributeValues: TypeAlias = Union[_RawAttributeValues, _AttributeValues] - -#: A number of tree manipulation methods can take either a `PageElement` or a -#: normal Python string (which will be converted to a `NavigableString`). -_InsertableElement: TypeAlias = Union["PageElement", str] - -# Aliases to represent the many possibilities for matching bits of a -# parse tree. -# -# This is very complicated because we're applying a formal type system -# to some very DWIM code. The types we end up with will be the types -# of the arguments to the SoupStrainer constructor and (more -# familiarly to Beautiful Soup users) the find* methods. - -#: A function that takes a PageElement and returns a yes-or-no answer. -_PageElementMatchFunction: TypeAlias = Callable[["PageElement"], bool] - -#: A function that takes the raw parsed ingredients of a markup tag -#: and returns a yes-or-no answer. -# Not necessary at the moment. -# _AllowTagCreationFunction:TypeAlias = Callable[[Optional[str], str, Optional[_RawAttributeValues]], bool] - -#: A function that takes the raw parsed ingredients of a markup string node -#: and returns a yes-or-no answer. -# Not necessary at the moment. -# _AllowStringCreationFunction:TypeAlias = Callable[[Optional[str]], bool] - -#: A function that takes a `Tag` and returns a yes-or-no answer. -#: A `TagNameMatchRule` expects this kind of function, if you're -#: going to pass it a function. -_TagMatchFunction: TypeAlias = Callable[["Tag"], bool] - -#: A function that takes a single string and returns a yes-or-no -#: answer. An `AttributeValueMatchRule` expects this kind of function, if -#: you're going to pass it a function. So does a `StringMatchRule`. -_StringMatchFunction: TypeAlias = Callable[[str], bool] - -#: Either a tag name, an attribute value or a string can be matched -#: against a string, bytestring, regular expression, or a boolean. -_BaseStrainable: TypeAlias = Union[str, bytes, Pattern[str], bool] - -#: A tag can be matched either with the `_BaseStrainable` options, or -#: using a function that takes the `Tag` as its sole argument. -_BaseStrainableElement: TypeAlias = Union[_BaseStrainable, _TagMatchFunction] - -#: A tag's attribute vgalue can be matched either with the -#: `_BaseStrainable` options, or using a function that takes that -#: value as its sole argument. -_BaseStrainableAttribute: TypeAlias = Union[_BaseStrainable, _StringMatchFunction] - -#: A tag can be matched using either a single criterion or a list of -#: criteria. -_StrainableElement: TypeAlias = Union[ - _BaseStrainableElement, Iterable[_BaseStrainableElement] -] - -#: An attribute value can be matched using either a single criterion -#: or a list of criteria. -_StrainableAttribute: TypeAlias = Union[ - _BaseStrainableAttribute, Iterable[_BaseStrainableAttribute] -] - -#: An string can be matched using the same techniques as -#: an attribute value. -_StrainableString: TypeAlias = _StrainableAttribute - -#: A dictionary may be used to match against multiple attribute vlaues at once. -_StrainableAttributes: TypeAlias = Dict[str, _StrainableAttribute] - -#: Many Beautiful soup methods return a PageElement or an ResultSet of -#: PageElements. A PageElement is either a Tag or a NavigableString. -#: These convenience aliases make it easier for IDE users to see which methods -#: are available on the objects they're dealing with. -_OneElement: TypeAlias = Union["PageElement", "Tag", "NavigableString"] -_AtMostOneElement: TypeAlias = Optional[_OneElement] -_QueryResults: TypeAlias = "ResultSet[_OneElement]" diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/_warnings.py b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/_warnings.py deleted file mode 100644 index 4309473..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/_warnings.py +++ /dev/null @@ -1,98 +0,0 @@ -"""Define some custom warnings.""" - - -class GuessedAtParserWarning(UserWarning): - """The warning issued when BeautifulSoup has to guess what parser to - use -- probably because no parser was specified in the constructor. - """ - - MESSAGE: str = """No parser was explicitly specified, so I'm using the best available %(markup_type)s parser for this system ("%(parser)s"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently. - -The code that caused this warning is on line %(line_number)s of the file %(filename)s. To get rid of this warning, pass the additional argument 'features="%(parser)s"' to the BeautifulSoup constructor. -""" - - -class UnusualUsageWarning(UserWarning): - """A superclass for warnings issued when Beautiful Soup sees - something that is typically the result of a mistake in the calling - code, but might be intentional on the part of the user. If it is - in fact intentional, you can filter the individual warning class - to get rid of the warning. If you don't like Beautiful Soup - second-guessing what you are doing, you can filter the - UnusualUsageWarningclass itself and get rid of these entirely. - """ - - -class MarkupResemblesLocatorWarning(UnusualUsageWarning): - """The warning issued when BeautifulSoup is given 'markup' that - actually looks like a resource locator -- a URL or a path to a file - on disk. - """ - - #: :meta private: - GENERIC_MESSAGE: str = """ - -However, if you want to parse some data that happens to look like a %(what)s, then nothing has gone wrong: you are using Beautiful Soup correctly, and this warning is spurious and can be filtered. To make this warning go away, run this code before calling the BeautifulSoup constructor: - - from bs4 import MarkupResemblesLocatorWarning - import warnings - - warnings.filterwarnings("ignore", category=MarkupResemblesLocatorWarning) - """ - - URL_MESSAGE: str = ( - """The input passed in on this line looks more like a URL than HTML or XML. - -If you meant to use Beautiful Soup to parse the web page found at a certain URL, then something has gone wrong. You should use an Python package like 'requests' to fetch the content behind the URL. Once you have the content as a string, you can feed that string into Beautiful Soup.""" - + GENERIC_MESSAGE - ) - - FILENAME_MESSAGE: str = ( - """The input passed in on this line looks more like a filename than HTML or XML. - -If you meant to use Beautiful Soup to parse the contents of a file on disk, then something has gone wrong. You should open the file first, using code like this: - - filehandle = open(your filename) - -You can then feed the open filehandle into Beautiful Soup instead of using the filename.""" - + GENERIC_MESSAGE - ) - - -class AttributeResemblesVariableWarning(UnusualUsageWarning, SyntaxWarning): - """The warning issued when Beautiful Soup suspects a provided - attribute name may actually be the misspelled name of a Beautiful - Soup variable. Generally speaking, this is only used in cases like - "_class" where it's very unlikely the user would be referencing an - XML attribute with that name. - """ - - MESSAGE: str = """%(original)r is an unusual attribute name and is a common misspelling for %(autocorrect)r. - -If you meant %(autocorrect)r, change your code to use it, and this warning will go away. - -If you really did mean to check the %(original)r attribute, this warning is spurious and can be filtered. To make it go away, run this code before creating your BeautifulSoup object: - - from bs4 import AttributeResemblesVariableWarning - import warnings - - warnings.filterwarnings("ignore", category=AttributeResemblesVariableWarning) -""" - - -class XMLParsedAsHTMLWarning(UnusualUsageWarning): - """The warning issued when an HTML parser is used to parse - XML that is not (as far as we can tell) XHTML. - """ - - MESSAGE: str = """It looks like you're using an HTML parser to parse an XML document. - -Assuming this really is an XML document, what you're doing might work, but you should know that using an XML parser will be more reliable. To parse this document as XML, make sure you have the Python package 'lxml' installed, and pass the keyword argument `features="xml"` into the BeautifulSoup constructor. - -If you want or need to use an HTML parser on this document, you can make this warning go away by filtering it. To do that, run this code before calling the BeautifulSoup constructor: - - from bs4 import XMLParsedAsHTMLWarning - import warnings - - warnings.filterwarnings("ignore", category=XMLParsedAsHTMLWarning) -""" diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/builder/__init__.py b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/builder/__init__.py deleted file mode 100644 index 5f2b38d..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/builder/__init__.py +++ /dev/null @@ -1,848 +0,0 @@ -from __future__ import annotations - -# Use of this source code is governed by the MIT license. -__license__ = "MIT" - -from collections import defaultdict -import re -from types import ModuleType -from typing import ( - Any, - cast, - Dict, - Iterable, - List, - Optional, - Pattern, - Set, - Tuple, - Type, - TYPE_CHECKING, -) -import warnings -import sys -from bs4.element import ( - AttributeDict, - AttributeValueList, - CharsetMetaAttributeValue, - ContentMetaAttributeValue, - RubyParenthesisString, - RubyTextString, - Stylesheet, - Script, - TemplateString, - nonwhitespace_re, -) - -# Exceptions were moved to their own module in 4.13. Import here for -# backwards compatibility. -from bs4.exceptions import ParserRejectedMarkup - -from bs4._typing import ( - _AttributeValues, - _RawAttributeValue, -) - -from bs4._warnings import XMLParsedAsHTMLWarning - -if TYPE_CHECKING: - from bs4 import BeautifulSoup - from bs4.element import ( - NavigableString, - Tag, - ) - from bs4._typing import ( - _AttributeValue, - _Encoding, - _Encodings, - _RawOrProcessedAttributeValues, - _RawMarkup, - ) - -__all__ = [ - "HTMLTreeBuilder", - "SAXTreeBuilder", - "TreeBuilder", - "TreeBuilderRegistry", -] - -# Some useful features for a TreeBuilder to have. -FAST = "fast" -PERMISSIVE = "permissive" -STRICT = "strict" -XML = "xml" -HTML = "html" -HTML_5 = "html5" - -__all__ = [ - "TreeBuilderRegistry", - "TreeBuilder", - "HTMLTreeBuilder", - "DetectsXMLParsedAsHTML", - - "ParserRejectedMarkup", # backwards compatibility only as of 4.13.0 -] - -class TreeBuilderRegistry(object): - """A way of looking up TreeBuilder subclasses by their name or by desired - features. - """ - - builders_for_feature: Dict[str, List[Type[TreeBuilder]]] - builders: List[Type[TreeBuilder]] - - def __init__(self) -> None: - self.builders_for_feature = defaultdict(list) - self.builders = [] - - def register(self, treebuilder_class: type[TreeBuilder]) -> None: - """Register a treebuilder based on its advertised features. - - :param treebuilder_class: A subclass of `TreeBuilder`. its - `TreeBuilder.features` attribute should list its features. - """ - for feature in treebuilder_class.features: - self.builders_for_feature[feature].insert(0, treebuilder_class) - self.builders.insert(0, treebuilder_class) - - def lookup(self, *features: str) -> Optional[Type[TreeBuilder]]: - """Look up a TreeBuilder subclass with the desired features. - - :param features: A list of features to look for. If none are - provided, the most recently registered TreeBuilder subclass - will be used. - :return: A TreeBuilder subclass, or None if there's no - registered subclass with all the requested features. - """ - if len(self.builders) == 0: - # There are no builders at all. - return None - - if len(features) == 0: - # They didn't ask for any features. Give them the most - # recently registered builder. - return self.builders[0] - - # Go down the list of features in order, and eliminate any builders - # that don't match every feature. - feature_list = list(features) - feature_list.reverse() - candidates = None - candidate_set = None - while len(feature_list) > 0: - feature = feature_list.pop() - we_have_the_feature = self.builders_for_feature.get(feature, []) - if len(we_have_the_feature) > 0: - if candidates is None: - candidates = we_have_the_feature - candidate_set = set(candidates) - else: - # Eliminate any candidates that don't have this feature. - candidate_set = candidate_set.intersection(set(we_have_the_feature)) - - # The only valid candidates are the ones in candidate_set. - # Go through the original list of candidates and pick the first one - # that's in candidate_set. - if candidate_set is None or candidates is None: - return None - for candidate in candidates: - if candidate in candidate_set: - return candidate - return None - - -#: The `BeautifulSoup` constructor will take a list of features -#: and use it to look up `TreeBuilder` classes in this registry. -builder_registry: TreeBuilderRegistry = TreeBuilderRegistry() - - -class TreeBuilder(object): - """Turn a textual document into a Beautiful Soup object tree. - - This is an abstract superclass which smooths out the behavior of - different parser libraries into a single, unified interface. - - :param multi_valued_attributes: If this is set to None, the - TreeBuilder will not turn any values for attributes like - 'class' into lists. Setting this to a dictionary will - customize this behavior; look at :py:attr:`bs4.builder.HTMLTreeBuilder.DEFAULT_CDATA_LIST_ATTRIBUTES` - for an example. - - Internally, these are called "CDATA list attributes", but that - probably doesn't make sense to an end-user, so the argument name - is ``multi_valued_attributes``. - - :param preserve_whitespace_tags: A set of tags to treat - the way

 tags are treated in HTML. Tags in this set
-     are immune from pretty-printing; their contents will always be
-     output as-is.
-
-    :param string_containers: A dictionary mapping tag names to
-     the classes that should be instantiated to contain the textual
-     contents of those tags. The default is to use NavigableString
-     for every tag, no matter what the name. You can override the
-     default by changing :py:attr:`DEFAULT_STRING_CONTAINERS`.
-
-    :param store_line_numbers: If the parser keeps track of the line
-     numbers and positions of the original markup, that information
-     will, by default, be stored in each corresponding
-     :py:class:`bs4.element.Tag` object. You can turn this off by
-     passing store_line_numbers=False; then Tag.sourcepos and
-     Tag.sourceline will always be None. If the parser you're using
-     doesn't keep track of this information, then store_line_numbers
-     is irrelevant.
-
-    :param attribute_dict_class: The value of a multi-valued attribute
-      (such as HTML's 'class') willl be stored in an instance of this
-      class.  The default is Beautiful Soup's built-in
-      `AttributeValueList`, which is a normal Python list, and you
-      will probably never need to change it.
-    """
-
-    USE_DEFAULT: Any = object()  #: :meta private:
-
-    def __init__(
-        self,
-        multi_valued_attributes: Dict[str, Set[str]] = USE_DEFAULT,
-        preserve_whitespace_tags: Set[str] = USE_DEFAULT,
-        store_line_numbers: bool = USE_DEFAULT,
-        string_containers: Dict[str, Type[NavigableString]] = USE_DEFAULT,
-        empty_element_tags: Set[str] = USE_DEFAULT,
-        attribute_dict_class: Type[AttributeDict] = AttributeDict,
-        attribute_value_list_class: Type[AttributeValueList] = AttributeValueList,
-    ):
-        self.soup = None
-        if multi_valued_attributes is self.USE_DEFAULT:
-            multi_valued_attributes = self.DEFAULT_CDATA_LIST_ATTRIBUTES
-        self.cdata_list_attributes = multi_valued_attributes
-        if preserve_whitespace_tags is self.USE_DEFAULT:
-            preserve_whitespace_tags = self.DEFAULT_PRESERVE_WHITESPACE_TAGS
-        self.preserve_whitespace_tags = preserve_whitespace_tags
-        if empty_element_tags is self.USE_DEFAULT:
-            self.empty_element_tags = self.DEFAULT_EMPTY_ELEMENT_TAGS
-        else:
-            self.empty_element_tags = empty_element_tags
-        # TODO: store_line_numbers is probably irrelevant now that
-        # the behavior of sourceline and sourcepos has been made consistent
-        # everywhere.
-        if store_line_numbers == self.USE_DEFAULT:
-            store_line_numbers = self.TRACKS_LINE_NUMBERS
-        self.store_line_numbers = store_line_numbers
-        if string_containers == self.USE_DEFAULT:
-            string_containers = self.DEFAULT_STRING_CONTAINERS
-        self.string_containers = string_containers
-        self.attribute_dict_class = attribute_dict_class
-        self.attribute_value_list_class = attribute_value_list_class
-
-    NAME: str = "[Unknown tree builder]"
-    ALTERNATE_NAMES: Iterable[str] = []
-    features: Iterable[str] = []
-
-    is_xml: bool = False
-    picklable: bool = False
-
-    soup: Optional[BeautifulSoup]  #: :meta private:
-
-    #: A tag will be considered an empty-element
-    #: tag when and only when it has no contents.
-    empty_element_tags: Optional[Set[str]] = None  #: :meta private:
-    cdata_list_attributes: Dict[str, Set[str]]  #: :meta private:
-    preserve_whitespace_tags: Set[str]  #: :meta private:
-    string_containers: Dict[str, Type[NavigableString]]  #: :meta private:
-    tracks_line_numbers: bool  #: :meta private:
-
-    #: A value for these tag/attribute combinations is a space- or
-    #: comma-separated list of CDATA, rather than a single CDATA.
-    DEFAULT_CDATA_LIST_ATTRIBUTES: Dict[str, Set[str]] = defaultdict(set)
-
-    #: Whitespace should be preserved inside these tags.
-    DEFAULT_PRESERVE_WHITESPACE_TAGS: Set[str] = set()
-
-    #: The textual contents of tags with these names should be
-    #: instantiated with some class other than `bs4.element.NavigableString`.
-    DEFAULT_STRING_CONTAINERS: Dict[str, Type[bs4.element.NavigableString]] = {}
-
-    #: By default, tags are treated as empty-element tags if they have
-    #: no contents--that is, using XML rules. HTMLTreeBuilder
-    #: defines a different set of DEFAULT_EMPTY_ELEMENT_TAGS based on the
-    #: HTML 4 and HTML5 standards.
-    DEFAULT_EMPTY_ELEMENT_TAGS: Optional[Set[str]] = None
-
-    #: Most parsers don't keep track of line numbers.
-    TRACKS_LINE_NUMBERS: bool = False
-
-    def initialize_soup(self, soup: BeautifulSoup) -> None:
-        """The BeautifulSoup object has been initialized and is now
-        being associated with the TreeBuilder.
-
-        :param soup: A BeautifulSoup object.
-        """
-        self.soup = soup
-
-    def reset(self) -> None:
-        """Do any work necessary to reset the underlying parser
-        for a new document.
-
-        By default, this does nothing.
-        """
-        pass
-
-    def can_be_empty_element(self, tag_name: str) -> bool:
-        """Might a tag with this name be an empty-element tag?
-
-        The final markup may or may not actually present this tag as
-        self-closing.
-
-        For instance: an HTMLBuilder does not consider a 

tag to be - an empty-element tag (it's not in - HTMLBuilder.empty_element_tags). This means an empty

tag - will be presented as "

", not "

" or "

". - - The default implementation has no opinion about which tags are - empty-element tags, so a tag will be presented as an - empty-element tag if and only if it has no children. - "" will become "", and "bar" will - be left alone. - - :param tag_name: The name of a markup tag. - """ - if self.empty_element_tags is None: - return True - return tag_name in self.empty_element_tags - - def feed(self, markup: _RawMarkup) -> None: - """Run incoming markup through some parsing process.""" - raise NotImplementedError() - - def prepare_markup( - self, - markup: _RawMarkup, - user_specified_encoding: Optional[_Encoding] = None, - document_declared_encoding: Optional[_Encoding] = None, - exclude_encodings: Optional[_Encodings] = None, - ) -> Iterable[Tuple[_RawMarkup, Optional[_Encoding], Optional[_Encoding], bool]]: - """Run any preliminary steps necessary to make incoming markup - acceptable to the parser. - - :param markup: The markup that's about to be parsed. - :param user_specified_encoding: The user asked to try this encoding - to convert the markup into a Unicode string. - :param document_declared_encoding: The markup itself claims to be - in this encoding. NOTE: This argument is not used by the - calling code and can probably be removed. - :param exclude_encodings: The user asked *not* to try any of - these encodings. - - :yield: A series of 4-tuples: (markup, encoding, declared encoding, - has undergone character replacement) - - Each 4-tuple represents a strategy that the parser can try - to convert the document to Unicode and parse it. Each - strategy will be tried in turn. - - By default, the only strategy is to parse the markup - as-is. See `LXMLTreeBuilderForXML` and - `HTMLParserTreeBuilder` for implementations that take into - account the quirks of particular parsers. - - :meta private: - - """ - yield markup, None, None, False - - def test_fragment_to_document(self, fragment: str) -> str: - """Wrap an HTML fragment to make it look like a document. - - Different parsers do this differently. For instance, lxml - introduces an empty tag, and html5lib - doesn't. Abstracting this away lets us write simple tests - which run HTML fragments through the parser and compare the - results against other HTML fragments. - - This method should not be used outside of unit tests. - - :param fragment: A fragment of HTML. - :return: A full HTML document. - :meta private: - """ - return fragment - - def set_up_substitutions(self, tag: Tag) -> bool: - """Set up any substitutions that will need to be performed on - a `Tag` when it's output as a string. - - By default, this does nothing. See `HTMLTreeBuilder` for a - case where this is used. - - :return: Whether or not a substitution was performed. - :meta private: - """ - return False - - def _replace_cdata_list_attribute_values( - self, tag_name: str, attrs: _RawOrProcessedAttributeValues - ) -> _AttributeValues: - """When an attribute value is associated with a tag that can - have multiple values for that attribute, convert the string - value to a list of strings. - - Basically, replaces class="foo bar" with class=["foo", "bar"] - - NOTE: This method modifies its input in place. - - :param tag_name: The name of a tag. - :param attrs: A dictionary containing the tag's attributes. - Any appropriate attribute values will be modified in place. - :return: The modified dictionary that was originally passed in. - """ - - # First, cast the attrs dict to _AttributeValues. This might - # not be accurate yet, but it will be by the time this method - # returns. - modified_attrs = cast(_AttributeValues, attrs) - if not modified_attrs or not self.cdata_list_attributes: - # Nothing to do. - return modified_attrs - - # There is at least a possibility that we need to modify one of - # the attribute values. - universal: Set[str] = self.cdata_list_attributes.get("*", set()) - tag_specific = self.cdata_list_attributes.get(tag_name.lower(), None) - for attr in list(modified_attrs.keys()): - modified_value: _AttributeValue - if attr in universal or (tag_specific and attr in tag_specific): - # We have a "class"-type attribute whose string - # value is a whitespace-separated list of - # values. Split it into a list. - original_value: _AttributeValue = modified_attrs[attr] - if isinstance(original_value, _RawAttributeValue): - # This is a _RawAttributeValue (a string) that - # needs to be split and converted to a - # AttributeValueList so it can be an - # _AttributeValue. - modified_value = self.attribute_value_list_class( - nonwhitespace_re.findall(original_value) - ) - else: - # html5lib calls setAttributes twice for the - # same tag when rearranging the parse tree. On - # the second call the attribute value here is - # already a list. This can also happen when a - # Tag object is cloned. If this happens, leave - # the value alone rather than trying to split - # it again. - modified_value = original_value - modified_attrs[attr] = modified_value - return modified_attrs - - -class SAXTreeBuilder(TreeBuilder): - """A Beautiful Soup treebuilder that listens for SAX events. - - This is not currently used for anything, and it will be removed - soon. It was a good idea, but it wasn't properly integrated into the - rest of Beautiful Soup, so there have been long stretches where it - hasn't worked properly. - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - warnings.warn( - "The SAXTreeBuilder class was deprecated in 4.13.0 and will be removed soon thereafter. It is completely untested and probably doesn't work; do not use it.", - DeprecationWarning, - stacklevel=2, - ) - super(SAXTreeBuilder, self).__init__(*args, **kwargs) - - def feed(self, markup: _RawMarkup) -> None: - raise NotImplementedError() - - def close(self) -> None: - pass - - def startElement(self, name: str, attrs: Dict[str, str]) -> None: - attrs = AttributeDict((key[1], value) for key, value in list(attrs.items())) - # print("Start %s, %r" % (name, attrs)) - assert self.soup is not None - self.soup.handle_starttag(name, None, None, attrs) - - def endElement(self, name: str) -> None: - # print("End %s" % name) - assert self.soup is not None - self.soup.handle_endtag(name) - - def startElementNS( - self, nsTuple: Tuple[str, str], nodeName: str, attrs: Dict[str, str] - ) -> None: - # Throw away (ns, nodeName) for now. - self.startElement(nodeName, attrs) - - def endElementNS(self, nsTuple: Tuple[str, str], nodeName: str) -> None: - # Throw away (ns, nodeName) for now. - self.endElement(nodeName) - # handler.endElementNS((ns, node.nodeName), node.nodeName) - - def startPrefixMapping(self, prefix: str, nodeValue: str) -> None: - # Ignore the prefix for now. - pass - - def endPrefixMapping(self, prefix: str) -> None: - # Ignore the prefix for now. - # handler.endPrefixMapping(prefix) - pass - - def characters(self, content: str) -> None: - assert self.soup is not None - self.soup.handle_data(content) - - def startDocument(self) -> None: - pass - - def endDocument(self) -> None: - pass - - -class HTMLTreeBuilder(TreeBuilder): - """This TreeBuilder knows facts about HTML, such as which tags are treated - specially by the HTML standard. - """ - - #: Some HTML tags are defined as having no contents. Beautiful Soup - #: treats these specially. - DEFAULT_EMPTY_ELEMENT_TAGS: Set[str] = set( - [ - # These are from HTML5. - "area", - "base", - "br", - "col", - "embed", - "hr", - "img", - "input", - "keygen", - "link", - "menuitem", - "meta", - "param", - "source", - "track", - "wbr", - # These are from earlier versions of HTML and are removed in HTML5. - "basefont", - "bgsound", - "command", - "frame", - "image", - "isindex", - "nextid", - "spacer", - ] - ) - - #: The HTML standard defines these tags as block-level elements. Beautiful - #: Soup does not treat these elements differently from other elements, - #: but it may do so eventually, and this information is available if - #: you need to use it. - DEFAULT_BLOCK_ELEMENTS: Set[str] = set( - [ - "address", - "article", - "aside", - "blockquote", - "canvas", - "dd", - "div", - "dl", - "dt", - "fieldset", - "figcaption", - "figure", - "footer", - "form", - "h1", - "h2", - "h3", - "h4", - "h5", - "h6", - "header", - "hr", - "li", - "main", - "nav", - "noscript", - "ol", - "output", - "p", - "pre", - "section", - "table", - "tfoot", - "ul", - "video", - ] - ) - - #: These HTML tags need special treatment so they can be - #: represented by a string class other than `bs4.element.NavigableString`. - #: - #: For some of these tags, it's because the HTML standard defines - #: an unusual content model for them. I made this list by going - #: through the HTML spec - #: (https://html.spec.whatwg.org/#metadata-content) and looking for - #: "metadata content" elements that can contain strings. - #: - #: The Ruby tags ( and ) are here despite being normal - #: "phrasing content" tags, because the content they contain is - #: qualitatively different from other text in the document, and it - #: can be useful to be able to distinguish it. - #: - #: TODO: Arguably

foo

" - soup = self.soup(markup) - return doctype.encode("utf8"), soup - - def test_normal_doctypes(self): - """Make sure normal, everyday HTML doctypes are handled correctly.""" - self.assertDoctypeHandled("html") - self.assertDoctypeHandled( - 'html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"' - ) - - def test_empty_doctype(self): - soup = self.soup("") - doctype = soup.contents[0] - assert "" == doctype.strip() - - def test_mixed_case_doctype(self): - # A lowercase or mixed-case doctype becomes a Doctype. - for doctype_fragment in ("doctype", "DocType"): - doctype_str, soup = self._document_with_doctype("html", doctype_fragment) - - # Make sure a Doctype object was created and that the DOCTYPE - # is uppercase. - doctype = soup.contents[0] - assert doctype.__class__ == Doctype - assert doctype == "html" - assert soup.encode("utf8")[: len(doctype_str)] == b"" - - # Make sure that the doctype was correctly associated with the - # parse tree and that the rest of the document parsed. - assert soup.p.contents[0] == "foo" - - def test_public_doctype_with_url(self): - doctype = 'html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"' - self.assertDoctypeHandled(doctype) - - def test_system_doctype(self): - self.assertDoctypeHandled('foo SYSTEM "http://www.example.com/"') - - def test_namespaced_system_doctype(self): - # We can handle a namespaced doctype with a system ID. - self.assertDoctypeHandled('xsl:stylesheet SYSTEM "htmlent.dtd"') - - def test_namespaced_public_doctype(self): - # Test a namespaced doctype with a public id. - self.assertDoctypeHandled('xsl:stylesheet PUBLIC "htmlent.dtd"') - - def test_real_xhtml_document(self): - """A real XHTML document should come out more or less the same as it went in.""" - markup = b""" - - -Hello. -Goodbye. -""" - with warnings.catch_warnings(record=True) as w: - soup = self.soup(markup) - assert soup.encode("utf-8").replace(b"\n", b"") == markup.replace(b"\n", b"") - - # No warning was issued about parsing an XML document as HTML, - # because XHTML is both. - assert w == [] - - def test_namespaced_html(self): - # When a namespaced XML document is parsed as HTML it should - # be treated as HTML with weird tag names. - markup = b"""content""" - with warnings.catch_warnings(record=True) as w: - soup = self.soup(markup) - - assert 2 == len(soup.find_all("ns1:foo")) - - # n.b. no "you're parsing XML as HTML" warning was given - # because there was no XML declaration. - assert [] == w - - def test_detect_xml_parsed_as_html(self): - # A warning is issued when parsing an XML document as HTML, - # but basic stuff should still work. - markup = b"""string""" - with warnings.catch_warnings(record=True) as w: - soup = self.soup(markup) - assert soup.tag.string == "string" - [warning] = w - assert isinstance(warning.message, XMLParsedAsHTMLWarning) - assert str(warning.message) == XMLParsedAsHTMLWarning.MESSAGE - - # NOTE: the warning is not issued if the document appears to - # be XHTML (tested with test_real_xhtml_document in the - # superclass) or if there is no XML declaration (tested with - # test_namespaced_html in the superclass). - - def test_processing_instruction(self): - # We test both Unicode and bytestring to verify that - # process_markup correctly sets processing_instruction_class - # even when the markup is already Unicode and there is no - # need to process anything. - markup = """""" - soup = self.soup(markup) - assert markup == soup.decode() - - markup = b"""""" - soup = self.soup(markup) - assert markup == soup.encode("utf8") - - def test_deepcopy(self): - """Make sure you can copy the tree builder. - - This is important because the builder is part of a - BeautifulSoup object, and we want to be able to copy that. - """ - copy.deepcopy(self.default_builder) - - def test_p_tag_is_never_empty_element(self): - """A

tag is never designated as an empty-element tag. - - Even if the markup shows it as an empty-element tag, it - shouldn't be presented that way. - """ - soup = self.soup("

") - assert not soup.p.is_empty_element - assert str(soup.p) == "

" - - def test_unclosed_tags_get_closed(self): - """A tag that's not closed by the end of the document should be closed. - - This applies to all tags except empty-element tags. - """ - self.assert_soup("

", "

") - self.assert_soup("", "") - - self.assert_soup("
", "
") - - def test_br_is_always_empty_element_tag(self): - """A
tag is designated as an empty-element tag. - - Some parsers treat

as one
tag, some parsers as - two tags, but it should always be an empty-element tag. - """ - soup = self.soup("

") - assert soup.br.is_empty_element - assert str(soup.br) == "
" - - def test_nested_formatting_elements(self): - self.assert_soup("") - - def test_double_head(self): - html = """ - - -Ordinary HEAD element test - - - -Hello, world! - - -""" - soup = self.soup(html) - assert "text/javascript" == soup.find("script")["type"] - - def test_comment(self): - # Comments are represented as Comment objects. - markup = "

foobaz

" - self.assert_soup(markup) - - soup = self.soup(markup) - comment = soup.find(string="foobar") - assert comment.__class__ == Comment - - # The comment is properly integrated into the tree. - foo = soup.find(string="foo") - assert comment == foo.next_element - baz = soup.find(string="baz") - assert comment == baz.previous_element - - def test_preserved_whitespace_in_pre_and_textarea(self): - """Whitespace must be preserved in
 and \n"
-        self.assert_soup(pre_markup)
-        self.assert_soup(textarea_markup)
-
-        soup = self.soup(pre_markup)
-        assert soup.pre.prettify() == pre_markup
-
-        soup = self.soup(textarea_markup)
-        assert soup.textarea.prettify() == textarea_markup
-
-        soup = self.soup("")
-        assert soup.textarea.prettify() == "\n"
-
-    def test_nested_inline_elements(self):
-        """Inline elements can be nested indefinitely."""
-        b_tag = "Inside a B tag"
-        self.assert_soup(b_tag)
-
-        nested_b_tag = "

A nested tag

" - self.assert_soup(nested_b_tag) - - double_nested_b_tag = "

A doubly nested tag

" - self.assert_soup(double_nested_b_tag) - - def test_nested_block_level_elements(self): - """Block elements can be nested.""" - soup = self.soup("

Foo

") - blockquote = soup.blockquote - assert blockquote.p.b.string == "Foo" - assert blockquote.b.string == "Foo" - - def test_correctly_nested_tables(self): - """One table can go inside another one.""" - markup = ( - '' - "" - "" - ) - - self.assert_soup( - markup, - '
Here's another table:" - '' - "" - "
foo
Here\'s another table:' - '
foo
' - "
", - ) - - self.assert_soup( - "" - "" - "
Foo
Bar
Baz
" - ) - - def test_multivalued_attribute_with_whitespace(self): - # Whitespace separating the values of a multi-valued attribute - # should be ignored. - - markup = '
' - soup = self.soup(markup) - assert ["foo", "bar"] == soup.div["class"] - - # If you search by the literal name of the class it's like the whitespace - # wasn't there. - assert soup.div == soup.find("div", class_="foo bar") - - def test_deeply_nested_multivalued_attribute(self): - # html5lib can set the attributes of the same tag many times - # as it rearranges the tree. This has caused problems with - # multivalued attributes. - markup = '
' - soup = self.soup(markup) - assert ["css"] == soup.div.div["class"] - - def test_multivalued_attribute_on_html(self): - # html5lib uses a different API to set the attributes ot the - # tag. This has caused problems with multivalued - # attributes. - markup = '' - soup = self.soup(markup) - assert ["a", "b"] == soup.html["class"] - - def test_angle_brackets_in_attribute_values_are_escaped(self): - self.assert_soup('', '') - - def test_strings_resembling_character_entity_references(self): - # "&T" and "&p" look like incomplete character entities, but they are - # not. - self.assert_soup( - "

• AT&T is in the s&p 500

", - "

\u2022 AT&T is in the s&p 500

", - ) - - def test_apos_entity(self): - self.assert_soup( - "

Bob's Bar

", - "

Bob's Bar

", - ) - - def test_entities_in_foreign_document_encoding(self): - # “ and ” are invalid numeric entities referencing - # Windows-1252 characters. - references a character common - # to Windows-1252 and Unicode, and ☃ references a - # character only found in Unicode. - # - # All of these entities should be converted to Unicode - # characters. - markup = "

“Hello” -☃

" - soup = self.soup(markup) - assert "“Hello†-☃" == soup.p.string - - def test_entities_in_attributes_converted_to_unicode(self): - expect = '

' - self.assert_soup('

', expect) - self.assert_soup('

', expect) - self.assert_soup('

', expect) - self.assert_soup('

', expect) - - def test_entities_in_text_converted_to_unicode(self): - expect = "

pi\N{LATIN SMALL LETTER N WITH TILDE}ata

" - self.assert_soup("

piñata

", expect) - self.assert_soup("

piñata

", expect) - self.assert_soup("

piñata

", expect) - self.assert_soup("

piñata

", expect) - - def test_quot_entity_converted_to_quotation_mark(self): - self.assert_soup( - "

I said "good day!"

", '

I said "good day!"

' - ) - - def test_out_of_range_entity(self): - expect = "\N{REPLACEMENT CHARACTER}" - self.assert_soup("�", expect) - self.assert_soup("�", expect) - self.assert_soup("�", expect) - - def test_multipart_strings(self): - "Mostly to prevent a recurrence of a bug in the html5lib treebuilder." - soup = self.soup("

\nfoo

") - assert "p" == soup.h2.string.next_element.name - assert "p" == soup.p.name - self.assertConnectedness(soup) - - def test_invalid_html_entity(self): - # The html.parser treebuilder can't distinguish between an - # invalid HTML entity with a semicolon and an invalid HTML - # entity with no semicolon (see its subclass for the tested - # behavior). But the other treebuilders can. - markup = "

a &nosuchentity b

" - soup = self.soup(markup) - assert "

a &nosuchentity b

" == soup.p.decode() - - markup = "

a &nosuchentity; b

" - soup = self.soup(markup) - assert "

a &nosuchentity; b

" == soup.p.decode() - - def test_head_tag_between_head_and_body(self): - "Prevent recurrence of a bug in the html5lib treebuilder." - content = """ - - foo - -""" - soup = self.soup(content) - assert soup.html.body is not None - self.assertConnectedness(soup) - - def test_multiple_copies_of_a_tag(self): - "Prevent recurrence of a bug in the html5lib treebuilder." - content = """ - - - - - -""" - soup = self.soup(content) - self.assertConnectedness(soup.article) - - def test_basic_namespaces(self): - """Parsers don't need to *understand* namespaces, but at the - very least they should not choke on namespaces or lose - data.""" - - markup = b'4' - soup = self.soup(markup) - assert markup == soup.encode() - assert "http://www.w3.org/1999/xhtml" == soup.html["xmlns"] - assert "http://www.w3.org/1998/Math/MathML" == soup.html["xmlns:mathml"] - assert "http://www.w3.org/2000/svg" == soup.html["xmlns:svg"] - - def test_multivalued_attribute_value_becomes_list(self): - markup = b'' - soup = self.soup(markup) - assert ["foo", "bar"] == soup.a["class"] - - # - # Generally speaking, tests below this point are more tests of - # Beautiful Soup than tests of the tree builders. But parsers are - # weird, so we run these tests separately for every tree builder - # to detect any differences between them. - # - - def test_can_parse_unicode_document(self): - # A seemingly innocuous document... but it's in Unicode! And - # it contains characters that can't be represented in the - # encoding found in the declaration! The horror! - markup = 'Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!' - soup = self.soup(markup) - assert "Sacr\xe9 bleu!" == soup.body.string - - def test_soupstrainer(self): - """Parsers should be able to work with SoupStrainers.""" - strainer = SoupStrainer("b") - soup = self.soup("A bold statement", parse_only=strainer) - assert soup.decode() == "bold" - - def test_single_quote_attribute_values_become_double_quotes(self): - self.assert_soup("", '') - - def test_attribute_values_with_nested_quotes_are_left_alone(self): - text = """a""" - self.assert_soup(text) - - def test_attribute_values_with_double_nested_quotes_get_quoted(self): - text = """a""" - soup = self.soup(text) - soup.foo["attr"] = 'Brawls happen at "Bob\'s Bar"' - self.assert_soup( - soup.foo.decode(), - """a""", - ) - - def test_ampersand_in_attribute_value_gets_escaped(self): - self.assert_soup( - '', - '', - ) - - self.assert_soup( - 'foo', - 'foo', - ) - - def test_escaped_ampersand_in_attribute_value_is_left_alone(self): - self.assert_soup('') - - def test_entities_in_strings_converted_during_parsing(self): - # Both XML and HTML entities are converted to Unicode characters - # during parsing. - text = "

<<sacré bleu!>>

" - expected = ( - "

<<sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!>>

" - ) - self.assert_soup(text, expected) - - def test_smart_quotes_converted_on_the_way_in(self): - # Microsoft smart quotes are converted to Unicode characters during - # parsing. - quote = b"

\x91Foo\x92

" - soup = self.soup(quote, from_encoding="windows-1252") - assert ( - soup.p.string - == "\N{LEFT SINGLE QUOTATION MARK}Foo\N{RIGHT SINGLE QUOTATION MARK}" - ) - - def test_non_breaking_spaces_converted_on_the_way_in(self): - soup = self.soup("  ") - assert soup.a.string == "\N{NO-BREAK SPACE}" * 2 - - def test_entities_converted_on_the_way_out(self): - text = "

<<sacré bleu!>>

" - expected = "

<<sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!>>

".encode( - "utf-8" - ) - soup = self.soup(text) - assert soup.p.encode("utf-8") == expected - - def test_real_iso_8859_document(self): - # Smoke test of interrelated functionality, using an - # easy-to-understand document. - - # Here it is in Unicode. Note that it claims to be in ISO-8859-1. - unicode_html = '

Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!

' - - # That's because we're going to encode it into ISO-8859-1, - # and use that to test. - iso_latin_html = unicode_html.encode("iso-8859-1") - - # Parse the ISO-8859-1 HTML. - soup = self.soup(iso_latin_html) - - # Encode it to UTF-8. - result = soup.encode("utf-8") - - # What do we expect the result to look like? Well, it would - # look like unicode_html, except that the META tag would say - # UTF-8 instead of ISO-8859-1. - expected = unicode_html.replace("ISO-8859-1", "utf-8") - - # And, of course, it would be in UTF-8, not Unicode. - expected = expected.encode("utf-8") - - # Ta-da! - assert result == expected - - def test_real_shift_jis_document(self): - # Smoke test to make sure the parser can handle a document in - # Shift-JIS encoding, without choking. - shift_jis_html = ( - b"
"
-            b"\x82\xb1\x82\xea\x82\xcdShift-JIS\x82\xc5\x83R\x81[\x83f"
-            b"\x83B\x83\x93\x83O\x82\xb3\x82\xea\x82\xbd\x93\xfa\x96{\x8c"
-            b"\xea\x82\xcc\x83t\x83@\x83C\x83\x8b\x82\xc5\x82\xb7\x81B"
-            b"
" - ) - unicode_html = shift_jis_html.decode("shift-jis") - soup = self.soup(unicode_html) - - # Make sure the parse tree is correctly encoded to various - # encodings. - assert soup.encode("utf-8") == unicode_html.encode("utf-8") - assert soup.encode("euc_jp") == unicode_html.encode("euc_jp") - - def test_real_hebrew_document(self): - # A real-world test to make sure we can convert ISO-8859-9 (a - # Hebrew encoding) to UTF-8. - hebrew_document = b"Hebrew (ISO 8859-8) in Visual Directionality

Hebrew (ISO 8859-8) in Visual Directionality

\xed\xe5\xec\xf9" - soup = self.soup(hebrew_document, from_encoding="iso8859-8") - # Some tree builders call it iso8859-8, others call it iso-8859-9. - # That's not a difference we really care about. - assert soup.original_encoding in ("iso8859-8", "iso-8859-8") - assert soup.encode("utf-8") == ( - hebrew_document.decode("iso8859-8").encode("utf-8") - ) - - def test_meta_tag_reflects_current_encoding(self): - # Here's the tag saying that a document is - # encoded in Shift-JIS. - meta_tag = ( - '' - ) - - # Here's a document incorporating that meta tag. - shift_jis_html = ( - "\n%s\n" - '' - "Shift-JIS markup goes here." - ) % meta_tag - soup = self.soup(shift_jis_html) - - # Parse the document, and the charset is seemingly unaffected. - parsed_meta = soup.find("meta", {"http-equiv": "Content-type"}) - content = parsed_meta["content"] - assert "text/html; charset=x-sjis" == content - - # But that value is actually a ContentMetaAttributeValue object. - assert isinstance(content, ContentMetaAttributeValue) - - # And it will take on a value that reflects its current - # encoding. - assert "text/html; charset=utf8" == content.substitute_encoding("utf8") - - # No matter how the tag is encoded, its charset attribute - # will always be accurate. - assert b"charset=utf8" in parsed_meta.encode("utf8") - assert b"charset=shift-jis" in parsed_meta.encode("shift-jis") - - # For the rest of the story, see TestSubstitutions in - # test_tree.py. - - def test_html5_style_meta_tag_reflects_current_encoding(self): - # Here's the tag saying that a document is - # encoded in Shift-JIS. - meta_tag = '' - - # Here's a document incorporating that meta tag. - shift_jis_html = ( - "\n%s\n" - '' - "Shift-JIS markup goes here." - ) % meta_tag - soup = self.soup(shift_jis_html) - - # Parse the document, and the charset is seemingly unaffected. - parsed_meta = soup.find("meta", id="encoding") - charset = parsed_meta["charset"] - assert "x-sjis" == charset - - # But that value is actually a CharsetMetaAttributeValue object. - assert isinstance(charset, CharsetMetaAttributeValue) - - # And it will take on a value that reflects its current - # encoding. - assert "utf8" == charset.substitute_encoding("utf8") - - # No matter how the tag is encoded, its charset attribute - # will always be accurate. - assert b'charset="utf8"' in parsed_meta.encode("utf8") - assert b'charset="shift-jis"' in parsed_meta.encode("shift-jis") - - def test_python_specific_encodings_not_used_in_charset(self): - # You can encode an HTML document using a Python-specific - # encoding, but that encoding won't be mentioned _inside_ the - # resulting document. Instead, the document will appear to - # have no encoding. - for markup in [ - b'' b'' - ]: - soup = self.soup(markup) - for encoding in PYTHON_SPECIFIC_ENCODINGS: - if encoding in ( - "idna", - "mbcs", - "oem", - "undefined", - "string_escape", - "string-escape", - ): - # For one reason or another, these will raise an - # exception if we actually try to use them, so don't - # bother. - continue - encoded = soup.encode(encoding) - assert b'meta charset=""' in encoded - assert encoding.encode("ascii") not in encoded - - def test_tag_with_no_attributes_can_have_attributes_added(self): - data = self.soup("text") - data.a["foo"] = "bar" - assert 'text' == data.a.decode() - - def test_closing_tag_with_no_opening_tag(self): - # Without BeautifulSoup.open_tag_counter, the tag will - # cause _popToTag to be called over and over again as we look - # for a tag that wasn't there. The result is that 'text2' - # will show up outside the body of the document. - soup = self.soup("

text1

text2
") - assert "

text1

text2
" == soup.body.decode() - - def test_worst_case(self): - """Test the worst case (currently) for linking issues.""" - - soup = self.soup(BAD_DOCUMENT) - self.linkage_validator(soup) - - -class XMLTreeBuilderSmokeTest(TreeBuilderSmokeTest): - def test_pickle_and_unpickle_identity(self): - # Pickling a tree, then unpickling it, yields a tree identical - # to the original. - tree = self.soup("foo") - dumped = pickle.dumps(tree, 2) - loaded = pickle.loads(dumped) - assert loaded.__class__ == BeautifulSoup - assert loaded.decode() == tree.decode() - - def test_docstring_generated(self): - soup = self.soup("") - assert soup.encode() == b'\n' - - def test_xml_declaration(self): - markup = b"""\n""" - soup = self.soup(markup) - assert markup == soup.encode("utf8") - - def test_python_specific_encodings_not_used_in_xml_declaration(self): - # You can encode an XML document using a Python-specific - # encoding, but that encoding won't be mentioned _inside_ the - # resulting document. - markup = b"""\n""" - soup = self.soup(markup) - for encoding in PYTHON_SPECIFIC_ENCODINGS: - if encoding in ( - "idna", - "mbcs", - "oem", - "undefined", - "string_escape", - "string-escape", - ): - # For one reason or another, these will raise an - # exception if we actually try to use them, so don't - # bother. - continue - encoded = soup.encode(encoding) - assert b'' in encoded - assert encoding.encode("ascii") not in encoded - - def test_processing_instruction(self): - markup = b"""\n""" - soup = self.soup(markup) - assert markup == soup.encode("utf8") - - def test_real_xhtml_document(self): - """A real XHTML document should come out *exactly* the same as it went in.""" - markup = b""" - - -Hello. -Goodbye. -""" - soup = self.soup(markup) - assert soup.encode("utf-8") == markup - - def test_nested_namespaces(self): - doc = b""" - - - - - -""" - soup = self.soup(doc) - assert doc == soup.encode() - - def test_formatter_processes_script_tag_for_xml_documents(self): - doc = """ - -""" - soup = BeautifulSoup(doc, "lxml-xml") - # lxml would have stripped this while parsing, but we can add - # it later. - soup.script.string = 'console.log("< < hey > > ");' - encoded = soup.encode() - assert b"< < hey > >" in encoded - - def test_can_parse_unicode_document(self): - markup = 'Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!' - soup = self.soup(markup) - assert "Sacr\xe9 bleu!" == soup.root.string - - def test_can_parse_unicode_document_begining_with_bom(self): - markup = '\N{BYTE ORDER MARK}Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!' - soup = self.soup(markup) - assert "Sacr\xe9 bleu!" == soup.root.string - - def test_popping_namespaced_tag(self): - markup = 'b2012-07-02T20:33:42Zcd' - soup = self.soup(markup) - assert str(soup.rss) == markup - - def test_docstring_includes_correct_encoding(self): - soup = self.soup("") - assert ( - soup.encode("latin1") == b'\n' - ) - - def test_large_xml_document(self): - """A large XML document should come out the same as it went in.""" - markup = ( - b'\n' - + b"0" * (2**12) - + b"" - ) - soup = self.soup(markup) - assert soup.encode("utf-8") == markup - - def test_tags_are_empty_element_if_and_only_if_they_are_empty(self): - self.assert_soup("

", "

") - self.assert_soup("

foo

") - - def test_namespaces_are_preserved(self): - markup = 'This tag is in the a namespaceThis tag is in the b namespace' - soup = self.soup(markup) - root = soup.root - assert "http://example.com/" == root["xmlns:a"] - assert "http://example.net/" == root["xmlns:b"] - - def test_closing_namespaced_tag(self): - markup = '

20010504

' - soup = self.soup(markup) - assert str(soup.p) == markup - - def test_namespaced_attributes(self): - markup = '' - soup = self.soup(markup) - assert str(soup.foo) == markup - - def test_namespaced_attributes_xml_namespace(self): - markup = 'bar' - soup = self.soup(markup) - assert str(soup.foo) == markup - - def test_find_by_prefixed_name(self): - doc = """ - - foo - bar - baz - -""" - soup = self.soup(doc) - - # There are three tags. - assert 3 == len(soup.find_all("tag")) - - # But two of them are ns1:tag and one of them is ns2:tag. - assert 2 == len(soup.find_all("ns1:tag")) - assert 1 == len(soup.find_all("ns2:tag")) - - assert 1, len(soup.find_all("ns2:tag", key="value")) - assert 3, len(soup.find_all(["ns1:tag", "ns2:tag"])) - - def test_copy_tag_preserves_namespace(self): - xml = """ -""" - - soup = self.soup(xml) - tag = soup.document - duplicate = copy.copy(tag) - - # The two tags have the same namespace prefix. - assert tag.prefix == duplicate.prefix - - def test_worst_case(self): - """Test the worst case (currently) for linking issues.""" - - soup = self.soup(BAD_DOCUMENT) - self.linkage_validator(soup) - - -class HTML5TreeBuilderSmokeTest(HTMLTreeBuilderSmokeTest): - """Smoke test for a tree builder that supports HTML5.""" - - def test_real_xhtml_document(self): - # Since XHTML is not HTML5, HTML5 parsers are not tested to handle - # XHTML documents in any particular way. - pass - - def test_html_tags_have_namespace(self): - markup = "" - soup = self.soup(markup) - assert "http://www.w3.org/1999/xhtml" == soup.a.namespace - - def test_svg_tags_have_namespace(self): - markup = "" - soup = self.soup(markup) - namespace = "http://www.w3.org/2000/svg" - assert namespace == soup.svg.namespace - assert namespace == soup.circle.namespace - - def test_mathml_tags_have_namespace(self): - markup = "5" - soup = self.soup(markup) - namespace = "http://www.w3.org/1998/Math/MathML" - assert namespace == soup.math.namespace - assert namespace == soup.msqrt.namespace - - def test_xml_declaration_becomes_comment(self): - markup = '' - soup = self.soup(markup) - assert isinstance(soup.contents[0], Comment) - assert soup.contents[0] == '?xml version="1.0" encoding="utf-8"?' - assert "html" == soup.contents[0].next_element.name diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/__init__.cpython-312.pyc b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 289993a9466cae27e31ad993dc7527b2b31f31bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67438 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 AqW}N^ diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_builder_registry.cpython-312.pyc b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_builder_registry.cpython-312.pyc deleted file mode 100644 index 87dbac2cda41f45c193e558f414cf7a4098ad658..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7622 zcmb_hTWs6r75*veLd%lrSn;h*Qn$IZN-8;WV>fnlS+qKC+|=`$v{;3;oGj9|97=M2 zQck2fNH+w918m6povbNl@-zu!yX8u{d(Q(p%N`3@hf%T;P@E<&t%%+?%Cxc^7*_Cp~+(z3ads1AiDdmlMQ_Znvqt7k-QvR49+8&XUTT*&d`)-4l!{65g?Meg0%Va$ z1k^@QWieKCTq7~3$O3hVPM~hl1=N#s2R-mvAU6C)^-S9Oto$#q)0U$eN~Uc=_FPJ; z)5ee}O~$jbYKdAYO_8W1h7;Cya7#}3p$0cQpm&j|_SlRAhpR8Zf#Xi8U&WQibpgIg zag35bGOF9^qbIiE1Rrj5;;dB_oSwW7r|7a*8&-oHDpva}j8a^nQJRzF%xp?ZtGyFBRZ7HD zv%M2>Rh1V_5&WXC83BtkoY1UVDKUD(l$qyd^utUm{%CZ6doXzI@ykTI=6n8*pKI0d^9RB-wE z@Rks3IR6l`o(J+Vsf1K9aPV^g)N##sTnikxFwD60v#m?|*Uv#B2styxI(SrQ<0{6u<}4IL+k`YzeEXc>}Nw zfG!(53;}O3v^~kq@m#POtE%HSTnQKV6R= z)VqNmuZfjy_Z-lrS70x=Pt!*8bYX|w!%8Mt#v@JK2 zf3Zrmjiw*~l~X`K#4T<2d>uCff9v{d*R5BJ-Ms~0?-vJ_yYI%n-lZLTf0K3a-UW7@ zBTfDr{_FlVZcl;Rb5mL6_TJ;$7QFS*0XJx%<}+w40!C(Rj6g@}vJiBIf$;_f+>B)_ z)&jVf6J9gzeEOBv+vb^arUK=XV@zi!Gnv~gjRJcUv}ky@9fr_#Pf2tNZqO3>9u=z& zvuKj2fQ77(&Xk3Js7m-xp8OH;RYrk)OzyRHthF5~v>ht8g%&&@?$(_*u3W#e#_uig zdv6UF`GXqYr*VBiYX*z_{-w?p{;}kl@ckOsukrm`55kmsZQ0gy0$yfl3+}a7BR^Ja z9VL8E#Pa~>auHPPl#dvKEY&WP@uaK>m!_pOLfUd1$<(YYVNtJGD9@j&7v?jvNW(WN z7cIjUf}zlAfHcQ?bc|va0ULiq5ml(?^)2^*pE=OU<0QR{?J?NTuF3&Rha!{ zrKqPQ5N9f5xRM0O);cdV4l-;NSm92Yl@iIxB*1ulOUeICju&CW${RpH5u9(0d$GX1 zcx(SE_sYFM=UU*^Lg3Y<_lkkn7Pu-kq0{MF;UgLsDe#ecHKE5eoX#<5JPV915t}YP zM<|v&^jAn~q1#s}&uZwZaO7&?SFxQni0|Z<;(Iyd5;~Ln4JTyL}aiIbqs+R@^ zGea65fxG*EfObn*Ly{x1cFKamwL$PjXD>SKS(w-~nq@oZt>0EmQ3V+Kv_9>D9&8Gz(nnr1^ zHm(lGF%y+{rti6D6$h|a=s0YzO= zEO^Z9_$_RmMKX>Ai!}Nkk{FWTBI!edXN_jfd<0uaaDjp;9M;T7H=K+syzX|p0?T{X z3Eb}PyZigX(A%5X#!@=6(ZRX~HoT1MwGB7x>cdue!|jJkdvgzKRoBQk*llk5AhhW# zKy)`$RA7Y0<{^Jnj+iGX&Cm*$Y?Y!nHZvmQ>#$nXJ1ZuH1w7|7kNM0KyaTwxIMr*$ z$?bKM@qa1Czen^PRb$2}V)ny`C-;#ab z5&ypl|A2Jgc*9|WZ}_EoI4*l2mZtIj~uMa{jfE}4Bb5NkihNX R@0d53p}!3LMBrwq=zqDz$^HNU diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_css.cpython-312.pyc b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_css.cpython-312.pyc deleted file mode 100644 index afd14926941339f4ff819f3eb9ab438977369811..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28933 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 LgHISB^aK74>3RJ_ diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_filter.cpython-312.pyc b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_filter.cpython-312.pyc deleted file mode 100644 index bda961f42fada8768f371d9a0493aa35b79d312f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31931 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 g!%6c7Q`_90ha7$$_LO~`MtVi!jN*%|@l7Ey@8 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 diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_fuzz.cpython-312.pyc b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_fuzz.cpython-312.pyc deleted file mode 100644 index 8bf2ca7d05701edb88b1216572adb4afd96524f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7063 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 diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_htmlparser.cpython-312.pyc b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_htmlparser.cpython-312.pyc deleted file mode 100644 index 56b0db41cb0dc3f0d82e98e339ab27cad4283c71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7309 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 diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_navigablestring.cpython-312.pyc b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_navigablestring.cpython-312.pyc deleted file mode 100644 index 4a5e7aa28434056991ab89ffe129f8f84bed8f04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7787 zcmbt3TWlNGmGj_`BkD1fWXh5(SyXIUqG6GiEICa>(^jM;j+H8Dth5LVm!UW#i85cA z8QLZzHAWG1sU!=_@NPw+24oijVk0iLAH|{{`6;mb)BX%eqavpM2(Z|q{c|L@*#=mk z=ge?86ip>6dIg=ibLX6M?>+at?&0s6o9zU&mw)o#3x8@Si2uPCqcP>qjtrf3f+u(~ zN(AspMadWypkj1@j#&bh7!zP()_^r;3)o_8fQ>Z-8e;Z(3QwSXf7&Tl*LGVL3O^7noGYP5`knzbL1pg0v_Ivf45$#FEjFTxRuW5?10SRrX>cm7EnMIjpZZZvh#a@>x5kS#*?3x`zxeemK*^m zQ5mIVV20FxlN$_*R8ssn3gN9$1YTtFXxh zQf@T(0cDfXH=lK=EHzXuCbrS5LsdIhtAT4ijUCsark1IF$_O#PUPiY1y!Mb0wQIN3 zK4oO9q1vB}YUldLWW+Ah`;*ZEQFZF{{&rMDv#N$*@pmcfO_LzjhNNf56@!h+XxMTlSVMk90HWLjQK#7}ufMuCSc3@1b3%b^89 z^3F+PUKxC&q`_d^@Z$|SBXvBh=W9t&sL~(7 zsa_|ZutalD?xkYWku3Sh;ar=))tqG>wRPo=-STE_pL5P!>t^>x_s@C?+}-KM zuCT`y?s&=J%wD~HH22O{-$=f1q}V-L;6@d8RN+QVl9szIMc2vVp^*YNqOc4l3MWiEI70+1%i!cf(tB9yd3x4{vpk=DSCW&Qk^Ml)|1;xKm~Pt!_`g+f(d5 zS#+A)erzQi&YW$lb12_AbWi^5S*3HR*g09?CKYy4;U-Z62e-Q1`7Zab4u0lUPF_&D z+{Lcx0ynL&(|K-s2acQA6>F_9pvBt%g3dazOe|HRE#m6UjJr!^Z(w}E=L&>*h-_#d zH7!++s&Xav){7gmmVF_q;VH%m$e5^QGFX`n@-6r?d=W{ci6g`aA(2-pl6VWSapW5P z7IBqy(=*~Tzzf|*!fge6hFnGL!4XS56cbb{*dJJtY868fNs!c*2^n0)TuK&R6vc$- zro?_g)+i*L-{leqka|!vB;6K+iy8=F(H@~6G=go)0yY@w8C#D9*3Ev z*8p56K5uodcirsDow{{+tMypE^;p(g;@a1)tiOBn-8}bdB<-UcA|s+O$Rg4XPa>|DjU>S9#rkYU@XC> zU@JkjDHwbw6^d$m3W~>oPV@q}Pl$uqM_Gst13np`?VI}_p8pxBY zL=gIV%M$Y>+*8;U7+u0W*R-lDMfF9)VjSZNs71Z>kY|=@Q(br~VAWBGW%7Z|;AE-; z&%j!0)`71kMw)duWG>@H&IN}W;RRR7rCk(ViMb^q45N}Oi3Y;McRAsLOQ35$A;us_ z5k!yO4hO5X7gDnJO%&vm7MN_$T8_J7xjQj_Dx zg%2*|`d453*9)cgBf4`#%gb1Oe*DwcFSWr)#s2gUV1lrX24f}>ysmf_&`e7dzXh+V zRfvZZyx_LzmN!vBIRZT`^L!i5NZ+)c18P=PXD@Z5kLe?;OtKE~d7SNS0I=)FO+?4R ztmPy76ARUF6w{j;qg}kk)f#PyJ9^LZAC31Le;v8kSR6WE;La=Td4)S);v8#J>lbcb z_~1Q-J-qtf*O=x9F#TS4e(>U`YBjC;{tu>A-(Qoa0oFHC<7Qm#xxvRWGrD`#94)G; z!~yX2PrWud`_}6(f+Z#Vb~rc8qx4h70~IF$l>Mk`}< zK|QZVBXJ?~?S1I<9<%|NUpfN-@_H-L-klq`<;mL09#nU{roX-VknO`y@2Z7;DFAyN6Q*wU4$2U5mG1%}=>pE!d}l$HXZ?_W;R&iuiIkj7$w5&F z@#%6>rjq=wl+2-v&#Z!FJo^!ui9ZK3Nto_kCmuB&%rV8L!&$P#b>=2EXEtVvJtqp> z357k8=T1B=ic02ef#~|pnKNV<7=^V~byG$zT3ev^%o8e=tSRCK6{Z%zfnI`~YX$2t zc7xu0-lRTqSO90GI;*Ik*PEe>lu^00hG`e9rB3}}sZM=?C(OFn6k!~(5y&{?D-_Es9GK=zxX7quo`1pe^z`JX3O|}a=GB@zX&x3 zm&PdRe)%iXNIc&+M$ zmM1m>P+82Mv5cfP1cTaT1g=puzO%+zi7rHJ0@1)`BXi*17sMH4fTGl+1yhxEWBQ@m z%BQMYVeE-Y=%)?yL{{yH>*p;p~irhs^+50~3c+jnI zW2OFqPkQh6{*u4bTkL=SuQc_Xz0}j2owzam;q*4XZ4;Ek{+OT|5J0b`oJN$IUfrQ# zAZvl}-@a;3~}IJdF`#M!l0KLpg}Rr%>*H!q0R)Dk8&HI1hqR2-%0@Zc`9 z2e#}m7|4~G%=ORH5GKk2(B!6FVpDGdp-+Tgqx^sT?B_0@nDh_%ya0Wo?7tj}Ltln| z((l$rUH|)w^%|t5NDU6WBD)ld6nFx~tccls3ik;EL%`MzqeDv(w}?MiK`Hq-JT#kB zDN!#Ni70(|lSRC)iH8v2(Hj@!w{QT-b|-bMnqA@ojIwgZyAM;WCin?5T>}8OkJiOn z#YJ^Lx;eNpxaryOJUkA1e@PBC&XIOTpI4)CJH!(}rZz&g+#^J_+n@OhfR;Pz$++gE@dWkLtGH|3F9`$urJEoRKCupxuH4WQ V0v=Ch$%`auzjOXC1U|L>{~Zn_$4dYJ diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_pageelement.cpython-312.pyc b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_pageelement.cpython-312.pyc deleted file mode 100644 index 4d015df3ce4dc0b0d4f7475272aca63579ff132a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22932 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 diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_tag.cpython-312.pyc b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_tag.cpython-312.pyc deleted file mode 100644 index 018b25cda7b985753a05c302eb965111435dc24a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14143 zcmcIrTWlLwdLCXik|iCBD2qiS!vW$J1)7IGq(BQ4C<+Wo7xJ=s2vDFv-n??Q0sPee zKSK^laY)OlJA!@=&uz~9|9Ae|IsCV#rUnMCOMme%leun&`7iuZxE%SLr(e~d+qlib2sXhUw@*999TvvQTw(;rM~vVU9S>}J|8XZRt%Fjwq_l3{ z;;sJ=7>1i>cS)hg2l4GwYXHsLLtVH!ub&8dE zJ-rEJl@Xb7i@=Oq1)w?@ahjSU@C)IcHhMVQ3SaL?@rbT5cDac%M zf`dwKZYma?;&@3+coa@fa?#{;DjtjSiYRc(lsMnO!Icp8Z!w8W&Ly~LoR?)$_S3p( z;SKRE?eLFGeR=>&SDD+)&C*(I0heHTkT1QN7l2-_Q^8uOT>wtqwuG&PTETYParQ|1{jJCb8^ z4nC~#lVcLTVy;&V$*8{djt_ z`AE9?$oi#hbMK<@HaVkt&S0yq zTCG~z*KC{nPNespc<9RRJC!D|Jans#l^&=GKE@+r+O(Sb1_Bc5;M~g5wy+(7oCd51yECdwLPdLQ=z_K zB-9@aL_!0>0DhAxOhALX0hrHy%wk$;% zbWmH$a0exwP%kHe0L)0+^8C`g)^Q?B`WEfqvrJ3dy}{MtmEkPuT)&nfJsR7ik)ChJ z?t6nD&#%4q%R3r-aPdx|;n2#^#|!J04C&O^PK|WZcB@dj+18bA>&lYujn)h~rm@G; z_($lsLu9_i(clyZ}lJ^$A__7nBw(XQ2o_i;A}>XY>AM5`W&9rcbmLuvPX% zwq#QI+Yc#{DO&npi$+Bm^%EfFD%Cb%((PiOU$gw)(tB%zpPu>T z%=-0Tg*Ny5)BF7!a(4efhH4m%4CEUwBIuUxRN@C$H^t8rxY-GQin_yWMGMw13<;iO z7Qh&qA!ES?{uul{$Rp7LM*XIVjPI7{1;MWDf+^DLu2pb!z}?Npd_l=aC4T0aBTOG7 zTjs15=I4wB{{Cv{J=@QjIg8ghA{~alW8kYfB{7}ppVv4Ff9i`tiwQn|crJK4o&Od7Ed%{@i z4?Mi~c=w)F?}~Tv+z&SRj!F`N-1f@_jXkiq@NMHA)N_6JuB{BN23LYv!fn|sO`T6{ zw)%$OS>f)7dgw;SdM2aXH=17Swf$4C`XOY!^HaI+KqR?%NIwV!S^U!bS4 z2Be~v`t1}ihrv;jj(WjziP2l2kN_g!+;P+$OGHI#>k=F`ibZA=(cjR3QpD?OT;u_R ziKL>Fvs}q=2-eud1fVaWa1&B;+UOPrl@t#9OB?5(jn4&edgS8c;5H#}dKY7aisoQ- zg*aMWqlwxQL^X@k9`;0d$rH-i@e4S!K>J6$w!HC$RynpX?@Eo@L~&ZESKG^QStx!L z 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 diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_tree.cpython-312.pyc b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_tree.cpython-312.pyc deleted file mode 100644 index 6e9cc420169fcdcd42a71a7f2bbc9a9827de3418..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93206 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 diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4670634698080256.testcase b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4670634698080256.testcase deleted file mode 100644 index 4828f8a..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4670634698080256.testcase +++ /dev/null @@ -1 +0,0 @@ - ÿÿ ÿ

\ No newline at end of file diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5000587759190016.testcase b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5000587759190016.testcase deleted file mode 100644 index 8a585ce9270e58b125922297f2d099298adac822..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15347 zcmeHOKW`H;6u+P#aRU+(18Xxd6l%E*Nl7L5s!A+KhygMnL5ETmLXBVgZv$er@K!|sD^YeJSDOAWa&ttPlG6X?Atl{} z^qDpjS}5Y|WIWoTq(csczd4*??66BhVoGhy6y1ZDBgWIhQ~nf$4?LB=5tQo zxX3XIMJ!OhCjE@@G@nnHL!!ULItAw?J4Na|Tz{fnYNoHpCUhroxQ^Xm|6~3AZ`jNU z_1CN>Z8L2Ov5UvVto$ukPyf~8Z|ZG_z+Cw)}rtPVgJ$Y!^aQq_qB2x+d@%#VL&Ee zscL#D6CO7NUrf^%e&SnKww(HyG#lR3!%5nHqKHLiq!Uq%XT(ATAI~R!c+#u~ktD)W z#Z-lH42O%htTt3XpZZq_8E}9wb>zG-$Bf4}bwbGBM0e%#VflQ3>E%3$>n4SKSi0u< zER%m$TsEp5ifAh3ZBVWkB$KNF37662`3#lv#vffpN$8m zN~NsW&nsp9m$XI|Y?vkxR-@e#J2vfv={I9yD{8L>?bJ5jl{m^X>DgR>Pz4nzY55>9 zaJF$P4nM{r0N0v8sLEMw1+^QiLKN+(xQwxB!0bXrBv?Z{w${rqtoY4tO&Vk2ajs38ITfhY1|%rRV$pMf6PhuP>A~gb(by@6 zIYN?5j_g2E=LC?WXmn7m$gyJwVL_x)6E>WMna*0~7+ng6=am8TKe^U~eF_~XCRZkW z#PW{M(|AZY!jT)*wowa!XyA7C+-+hS%aO@_kcpK7$) zCWCD<@Kz>oC}@WX+hj0SGTJ5s9fT9I*)juIwVk>gO$LI&wIfvqDdYl5f{7)#xCTIF z2SI2-qp#%56T}6sGt3_+us`Vd;ONzB-y@~Ll>LlA@XZVW@(&R0YF diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5167584867909632.testcase b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5167584867909632.testcase deleted file mode 100644 index 0fe66dd23fe94a8e451dfb1a84da38ed0984c1f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19469 zcmeHP%}&BV5UwW1c<}1c&|0d-m{hN9YYZMVF=z-E6E3Azz?Aa07`*ugp1gb37w}np z1J6Ey_J;^Y+hVrDb~+?vcLObSXLo15`M%w!71Cc4g4b8Y>@_=7*S$g~EsGkt2Bn={ zt2=1kXi~B5P|KmamD`Rb<;p=_zIm%4C&qy-Vu088oOsuGz>Kq!-D0_0%~Ls_F?gfesF!B~xlP=*UCbCH?n*-O%0 z!Q*F>?46hl=N3}p9^s$pfQ;#K?C}VRg&?#Cu4Gl`M+NhN`Lsc{A^94o$;0t3y>S870B{5&zz9DFt<}-BMx(8V;~9 zu^`3{e->4K<9oQkG(Mym>pheEPdQ^GK5fr%nc+{ydd)pa{!emW8I*DurdQ@~y8Kk4 zgV7-WU60=nl>ER&`8c&A8JzU^4}@gt+g^h^gT@rwKLtV<2l@NX63OYId;^?(0~P60 z?9W6QN1A0E6WR+_CBVe3&|S@XJ2R{CP{xr=dJz@rVH;L3n4Q9zrUy|Y_Y}rG!O4js mqyYzMPzM!p)C@wIG(#Cwq{BE*384&|DuI`yvfSgo2>k@d3|T1v diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5270998950477824.testcase b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5270998950477824.testcase deleted file mode 100644 index fd411427d765e9b17e1e6a015485a70632bb9554..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12 TcmY$eDbjbbRX@cb^ZOhC75W5K diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5375146639360000.testcase b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5375146639360000.testcase deleted file mode 100644 index 6248b2c..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5375146639360000.testcase +++ /dev/null @@ -1 +0,0 @@ -ÿ >tet>< \ No newline at end of file diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5492400320282624.testcase b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5492400320282624.testcase deleted file mode 100644 index 107da539fc15bd1664e35287ace9feda21cb5820..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11502 zcmeHNy>HV%6gOf+VqhSEDxuawNKi#?;xtXg#SCTdK!q3y#cd3AnkG&P3ldWY7XAYy zCT0f2N_Q3{#Kh8pfq{iTAiQ_)?sEPrNt;$FI=4Ds&hO(s-o1P8XBP^E%c~a(bbUIR z>pt6&8VYYetR1|1@3DT}-suHUu57m=zZDhNUbKCCoqp6en~h@8f`8Us?*#40@z@;v zvWixx>qm8ug?`kSZAMZ199wmM)@|Fljl~QWU$J;93#i=Gnw~*BlHQ#|0?zbH*5 zb%|;A>ykT1x$T5V0o|~j6!-jKFyP&Q0fx?{e_SD_qO!^BSE=P1b3*t-8C14p{iSNc z2V3ItzI+T%ukbpRx(HH0EkaF-OQ}&>bS_;QQIeM5QcmbNA;V7VgCSi+Ka`)}b4~+u zIOf`Y|F-|bcGS`*xVc><+HeK=DuR7kbb;M|VG*n$UVC7lv5TH2TY-e=Ct3={xQ+R4 zwyZppvo(W_ZxdtZ*>Zz`2*oa8?n9GW;CglXx z<}63=pqMsNj5^H-eT8Y@E zP=-sP&U&-KBcEQhQFN;n4^K@xO-DQbCK=e7a4zp`HQ}5I=Oz-?nQ%^KGA3<_C5= zlRW%*ktfj|g`Fl))G`RHqfkU^=K$nAEVm4Oss1xm@?`cmF%gp;&h|LjDKbyFFvm(o zWHM`)cSw5|y>6c;zMKmSoRv`l zPeWS%fLuIZqeLOxJve;>FPgW-2pF5U#T0&+x5X53 zjQLv8ye*brDwwY#Fm>Y}L;QzdMc~-Z@auB}FN(+qLgC{?R>|o0jGKi4oeBP!uvKWO zmx{C@5I3Jxz--`-k(ePz3Jtudax^kV11};Vc?{4p4le@a3||N1H!?MkT}(oo#aihv D9d3o5 diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase deleted file mode 100644 index 367106c..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase +++ /dev/null @@ -1,2 +0,0 @@ - -t \ No newline at end of file diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6450958476902400.testcase b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6450958476902400.testcase deleted file mode 100644 index a823d557b4bebed8a9cdb880d281c9de69a1aa0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3546 zcmdP2$xSTDup1>uLtr!nMnhmU1V%$(Gz3ONU^E0qLtw~uwSNNv*}xU^oQ!vv$DtbH{XnB<{4q&MBMIvxRFa&-_pUv zaZ?A@)wk1eCmnC=bU*Q=8+sfD%u9F-wunGF9Af5kU{XeIH<5gU7$((-f1t0?R%dI;Jq*Qch%_#M(x|K>?1-n+*fFB zm6{d^8#<{hj+7bdpv`Q#2CcfFkUioNUyXr5z+=fRP%u7K(G*r#6$M^Z_&u?|;XuBN z@N6(okxftZk53XI6>lL`P*y0e{H4&t=5>jM|{*N|q#^8%sAhqM+Y3%AITJ zj+ie=x^@H_p!D;o#ZMNvPoPiY!4dto?gr%>8ZfxWSt4CK@!+{gLI_zD^Y~@@!h9AT zhwtJ(69K8%&(5%E2fpgGkYsM!X=s?z8oHP}&TI@w9WRoXm;n8Ha{-ib=yrZ_~b; zLif2&eN24}r`0u!2Q^n!;Z(g+b!QW%0&VHg*@TwX)&r$x>#WdFWGZjuEVhzaKfVQc zE1wv%%}(9W_#3HHZI>9f_+=c57M9cCNo@`2bnw)yoeHG+-$q-W|1arjzM|GxoYGoC z;*bTH!DdtxtcOJ%%uC0=se>6mD|1!l76U4^eq4Nq!{I_ly+tmKJqqfTb*ceU6z362 ztyNgQGww04iSboml65FWdBXI!jzWnWgo#v19R>P(S{7XznX3V~Twq+Re44__&~>h> q43wHvMb7{ew`wA?1}AsyPlT5DF{Md(5}xqoqavh!LXgNIAN~adfn_KF diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/crash-ffbdfa8a2b26f13537b68d3794b0478a4090ee4a.testcase b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/crash-ffbdfa8a2b26f13537b68d3794b0478a4090ee4a.testcase deleted file mode 100644 index 885711554056588a381fd9a251d48ce76a916a59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103 zcma!IT*$!C&%p3|?)u|48N3V(Hi{|v$wno$1*wb-3(;hvkz^S9^*|aEj@#ts@G|Jx OROIF`00A~ppfmtd#~j4~ diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_builder.py b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_builder.py deleted file mode 100644 index 87d6758..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_builder.py +++ /dev/null @@ -1,28 +0,0 @@ -import pytest -from unittest.mock import patch -from bs4.builder import DetectsXMLParsedAsHTML - - -class TestDetectsXMLParsedAsHTML: - @pytest.mark.parametrize( - "markup,looks_like_xml", - [ - ("No xml declaration", False), - ("obviously HTMLActually XHTML", False), - (" < html>Tricky XHTML", False), - ("", True), - ], - ) - def test_warn_if_markup_looks_like_xml(self, markup, looks_like_xml): - # Test of our ability to guess at whether markup looks XML-ish - # _and_ not HTML-ish. - with patch("bs4.builder.DetectsXMLParsedAsHTML._warn") as mock: - for data in markup, markup.encode("utf8"): - result = DetectsXMLParsedAsHTML.warn_if_markup_looks_like_xml(data) - assert result == looks_like_xml - if looks_like_xml: - assert mock.called - else: - assert not mock.called - mock.reset_mock() diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_builder_registry.py b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_builder_registry.py deleted file mode 100644 index ad4b5a9..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_builder_registry.py +++ /dev/null @@ -1,139 +0,0 @@ -"""Tests of the builder registry.""" - -import pytest -import warnings -from typing import Type - -from bs4 import BeautifulSoup -from bs4.builder import ( - builder_registry as registry, - TreeBuilder, - TreeBuilderRegistry, -) -from bs4.builder._htmlparser import HTMLParserTreeBuilder - -from . import ( - HTML5LIB_PRESENT, - LXML_PRESENT, -) - -if HTML5LIB_PRESENT: - from bs4.builder._html5lib import HTML5TreeBuilder - -if LXML_PRESENT: - from bs4.builder._lxml import ( - LXMLTreeBuilderForXML, - LXMLTreeBuilder, - ) - - -# TODO: Split out the lxml and html5lib tests into their own classes -# and gate with pytest.mark.skipIf. -class TestBuiltInRegistry(object): - """Test the built-in registry with the default builders registered.""" - - def test_combination(self): - assert registry.lookup("strict", "html") == HTMLParserTreeBuilder - if LXML_PRESENT: - assert registry.lookup("fast", "html") == LXMLTreeBuilder - assert registry.lookup("permissive", "xml") == LXMLTreeBuilderForXML - if HTML5LIB_PRESENT: - assert registry.lookup("html5lib", "html") == HTML5TreeBuilder - - def test_lookup_by_markup_type(self): - if LXML_PRESENT: - assert registry.lookup("html") == LXMLTreeBuilder - assert registry.lookup("xml") == LXMLTreeBuilderForXML - else: - assert registry.lookup("xml") is None - if HTML5LIB_PRESENT: - assert registry.lookup("html") == HTML5TreeBuilder - else: - assert registry.lookup("html") == HTMLParserTreeBuilder - - def test_named_library(self): - if LXML_PRESENT: - assert registry.lookup("lxml", "xml") == LXMLTreeBuilderForXML - assert registry.lookup("lxml", "html") == LXMLTreeBuilder - if HTML5LIB_PRESENT: - assert registry.lookup("html5lib") == HTML5TreeBuilder - - assert registry.lookup("html.parser") == HTMLParserTreeBuilder - - def test_beautifulsoup_constructor_does_lookup(self): - with warnings.catch_warnings(record=True): - # This will create a warning about not explicitly - # specifying a parser, but we'll ignore it. - - # You can pass in a string. - BeautifulSoup("", features="html") - # Or a list of strings. - BeautifulSoup("", features=["html", "fast"]) - pass - - # You'll get an exception if BS can't find an appropriate - # builder. - with pytest.raises(ValueError): - BeautifulSoup("", features="no-such-feature") - - -class TestRegistry(object): - """Test the TreeBuilderRegistry class in general.""" - - def setup_method(self): - self.registry = TreeBuilderRegistry() - - def builder_for_features(self, *feature_list: str) -> Type[TreeBuilder]: - cls = type( - "Builder_" + "_".join(feature_list), (object,), {"features": feature_list} - ) - - self.registry.register(cls) - return cls - - def test_register_with_no_features(self): - builder = self.builder_for_features() - - # Since the builder advertises no features, you can't find it - # by looking up features. - assert self.registry.lookup("foo") is None - - # But you can find it by doing a lookup with no features, if - # this happens to be the only registered builder. - assert self.registry.lookup() == builder - - def test_register_with_features_makes_lookup_succeed(self): - builder = self.builder_for_features("foo", "bar") - assert self.registry.lookup("foo") is builder - assert self.registry.lookup("bar") is builder - - def test_lookup_fails_when_no_builder_implements_feature(self): - assert self.registry.lookup("baz") is None - - def test_lookup_gets_most_recent_registration_when_no_feature_specified(self): - self.builder_for_features("foo") - builder2 = self.builder_for_features("bar") - assert self.registry.lookup() == builder2 - - def test_lookup_fails_when_no_tree_builders_registered(self): - assert self.registry.lookup() is None - - def test_lookup_gets_most_recent_builder_supporting_all_features(self): - self.builder_for_features("foo") - self.builder_for_features("bar") - has_both_early = self.builder_for_features("foo", "bar", "baz") - has_both_late = self.builder_for_features("foo", "bar", "quux") - self.builder_for_features("bar") - self.builder_for_features("foo") - - # There are two builders featuring 'foo' and 'bar', but - # the one that also features 'quux' was registered later. - assert self.registry.lookup("foo", "bar") == has_both_late - - # There is only one builder featuring 'foo', 'bar', and 'baz'. - assert self.registry.lookup("foo", "bar", "baz") == has_both_early - - def test_lookup_fails_when_cannot_reconcile_requested_features(self): - self.builder_for_features("foo", "bar") - self.builder_for_features("foo", "baz") - assert self.registry.lookup("bar", "baz") is None diff --git a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_css.py b/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_css.py deleted file mode 100644 index b1c4237..0000000 --- a/battlesnake-service/.venv/lib/python3.12/site-packages/bs4/tests/test_css.py +++ /dev/null @@ -1,536 +0,0 @@ -import pytest -import types - -from bs4 import ( - BeautifulSoup, - ResultSet, -) - -from typing import ( - Any, - List, - Tuple, - Type, -) - -from packaging.version import Version - -from . import ( - SoupTest, - SOUP_SIEVE_PRESENT, -) - -SOUPSIEVE_EXCEPTION_ON_UNSUPPORTED_PSEUDOCLASS: Type[Exception] -if SOUP_SIEVE_PRESENT: - from soupsieve import __version__, SelectorSyntaxError - - # Some behavior changes in soupsieve 2.6 that affects one of our - # tests. For the test to run under all versions of Python - # supported by Beautiful Soup (which includes versions of Python - # not supported by soupsieve 2.6) we need to check both behaviors. - SOUPSIEVE_EXCEPTION_ON_UNSUPPORTED_PSEUDOCLASS = SelectorSyntaxError - if Version(__version__) < Version("2.6"): - SOUPSIEVE_EXCEPTION_ON_UNSUPPORTED_PSEUDOCLASS = NotImplementedError - - -@pytest.mark.skipif(not SOUP_SIEVE_PRESENT, reason="Soup Sieve not installed") -class TestCSSSelectors(SoupTest): - """Test basic CSS selector functionality. - - This functionality is implemented in soupsieve, which has a much - more comprehensive test suite, so this is basically an extra check - that soupsieve works as expected. - """ - - HTML = """ - - - -The title - - - -Hello there. -
-
-

An H1

-

Some text

-

Some more text

-

An H2

-

Another

-Bob -

Another H2

-me - -span1a1 -span1a2 test - -span2a1 - - - -
- -
- - - - - - - - -

English

-

English UK

-

English US

-

French

-
- - -""" - - def setup_method(self): - self._soup = BeautifulSoup(self.HTML, "html.parser") - - def assert_css_selects( - self, selector: str, expected_ids: List[str], **kwargs: Any - ) -> None: - results = self._soup.select(selector, **kwargs) - assert isinstance(results, ResultSet) - el_ids = [el["id"] for el in results] - el_ids.sort() - expected_ids.sort() - assert expected_ids == el_ids, "Selector %s, expected [%s], got [%s]" % ( - selector, - ", ".join(expected_ids), - ", ".join(el_ids), - ) - - assertSelect = assert_css_selects - - def assert_css_select_multiple(self, *tests: Tuple[str, List[str]]): - for selector, expected_ids in tests: - self.assert_css_selects(selector, expected_ids) - - def test_precompiled(self): - sel = self._soup.css.compile("div") - - els = self._soup.select(sel) - assert len(els) == 4 - for div in els: - assert div.name == "div" - - el = self._soup.select_one(sel) - assert "main" == el["id"] - - def test_one_tag_one(self): - els = self._soup.select("title") - assert len(els) == 1 - assert els[0].name == "title" - assert els[0].contents == ["The title"] - - def test_one_tag_many(self): - els = self._soup.select("div") - assert len(els) == 4 - for div in els: - assert div.name == "div" - - el = self._soup.select_one("div") - assert "main" == el["id"] - - def test_select_one_returns_none_if_no_match(self): - match = self._soup.select_one("nonexistenttag") - assert None is match - - def test_tag_in_tag_one(self): - self.assert_css_selects("div div", ["inner", "data1"]) - - def test_tag_in_tag_many(self): - for selector in ("html div", "html body div", "body div"): - self.assert_css_selects(selector, ["data1", "main", "inner", "footer"]) - - def test_limit(self): - self.assert_css_selects("html div", ["main"], limit=1) - self.assert_css_selects("html body div", ["inner", "main"], limit=2) - self.assert_css_selects( - "body div", ["data1", "main", "inner", "footer"], limit=10 - ) - - def test_tag_no_match(self): - assert len(self._soup.select("del")) == 0 - - def test_invalid_tag(self): - with pytest.raises(SelectorSyntaxError): - self._soup.select("tag%t") - - def test_select_dashed_tag_ids(self): - self.assert_css_selects("custom-dashed-tag", ["dash1", "dash2"]) - - def test_select_dashed_by_id(self): - dashed = self._soup.select('custom-dashed-tag[id="dash2"]') - assert dashed[0].name == "custom-dashed-tag" - assert dashed[0]["id"] == "dash2" - - def test_dashed_tag_text(self): - assert self._soup.select("body > custom-dashed-tag")[0].text == "Hello there." - - def test_select_dashed_matches_find_all(self): - assert self._soup.select("custom-dashed-tag") == self._soup.find_all( - "custom-dashed-tag" - ) - - def test_header_tags(self): - self.assert_css_select_multiple( - ("h1", ["header1"]), - ("h2", ["header2", "header3"]), - ) - - def test_class_one(self): - for selector in (".onep", "p.onep", "html p.onep"): - els = self._soup.select(selector) - assert len(els) == 1 - assert els[0].name == "p" - assert els[0]["class"] == ["onep"] - - def test_class_mismatched_tag(self): - els = self._soup.select("div.onep") - assert len(els) == 0 - - def test_one_id(self): - for selector in ("div#inner", "#inner", "div div#inner"): - self.assert_css_selects(selector, ["inner"]) - - def test_bad_id(self): - els = self._soup.select("#doesnotexist") - assert len(els) == 0 - - def test_items_in_id(self): - els = self._soup.select("div#inner p") - assert len(els) == 3 - for el in els: - assert el.name == "p" - assert els[1]["class"] == ["onep"] - assert not els[0].has_attr("class") - - def test_a_bunch_of_emptys(self): - for selector in ("div#main del", "div#main div.oops", "div div#main"): - assert len(self._soup.select(selector)) == 0 - - def test_multi_class_support(self): - for selector in ( - ".class1", - "p.class1", - ".class2", - "p.class2", - ".class3", - "p.class3", - "html p.class2", - "div#inner .class2", - ): - self.assert_css_selects(selector, ["pmulti"]) - - def test_multi_class_selection(self): - for selector in (".class1.class3", ".class3.class2", ".class1.class2.class3"): - self.assert_css_selects(selector, ["pmulti"]) - - def test_child_selector(self): - self.assert_css_selects(".s1 > a", ["s1a1", "s1a2"]) - self.assert_css_selects(".s1 > a span", ["s1a2s1"]) - - def test_child_selector_id(self): - self.assert_css_selects(".s1 > a#s1a2 span", ["s1a2s1"]) - - def test_attribute_equals(self): - self.assert_css_select_multiple( - ('p[class="onep"]', ["p1"]), - ('p[id="p1"]', ["p1"]), - ('[class="onep"]', ["p1"]), - ('[id="p1"]', ["p1"]), - ('link[rel="stylesheet"]', ["l1"]), - ('link[type="text/css"]', ["l1"]), - ('link[href="blah.css"]', ["l1"]), - ('link[href="no-blah.css"]', []), - ('[rel="stylesheet"]', ["l1"]), - ('[type="text/css"]', ["l1"]), - ('[href="blah.css"]', ["l1"]), - ('[href="no-blah.css"]', []), - ('p[href="no-blah.css"]', []), - ('[href="no-blah.css"]', []), - ) - - def test_attribute_tilde(self): - self.assert_css_select_multiple( - ('p[class~="class1"]', ["pmulti"]), - ('p[class~="class2"]', ["pmulti"]), - ('p[class~="class3"]', ["pmulti"]), - ('[class~="class1"]', ["pmulti"]), - ('[class~="class2"]', ["pmulti"]), - ('[class~="class3"]', ["pmulti"]), - ('a[rel~="friend"]', ["bob"]), - ('a[rel~="met"]', ["bob"]), - ('[rel~="friend"]', ["bob"]), - ('[rel~="met"]', ["bob"]), - ) - - def test_attribute_startswith(self): - self.assert_css_select_multiple( - ('[rel^="style"]', ["l1"]), - ('link[rel^="style"]', ["l1"]), - ('notlink[rel^="notstyle"]', []), - ('[rel^="notstyle"]', []), - ('link[rel^="notstyle"]', []), - ('link[href^="bla"]', ["l1"]), - ('a[href^="http://"]', ["bob", "me"]), - ('[href^="http://"]', ["bob", "me"]), - ('[id^="p"]', ["pmulti", "p1"]), - ('[id^="m"]', ["me", "main"]), - ('div[id^="m"]', ["main"]), - ('a[id^="m"]', ["me"]), - ('div[data-tag^="dashed"]', ["data1"]), - ) - - def test_attribute_endswith(self): - self.assert_css_select_multiple( - ('[href$=".css"]', ["l1"]), - ('link[href$=".css"]', ["l1"]), - ('link[id$="1"]', ["l1"]), - ( - '[id$="1"]', - ["data1", "l1", "p1", "header1", "s1a1", "s2a1", "s1a2s1", "dash1"], - ), - ('div[id$="1"]', ["data1"]), - ('[id$="noending"]', []), - ) - - def test_attribute_contains(self): - self.assert_css_select_multiple( - # From test_attribute_startswith - ('[rel*="style"]', ["l1"]), - ('link[rel*="style"]', ["l1"]), - ('notlink[rel*="notstyle"]', []), - ('[rel*="notstyle"]', []), - ('link[rel*="notstyle"]', []), - ('link[href*="bla"]', ["l1"]), - ('[href*="http://"]', ["bob", "me"]), - ('[id*="p"]', ["pmulti", "p1"]), - ('div[id*="m"]', ["main"]), - ('a[id*="m"]', ["me"]), - # From test_attribute_endswith - ('[href*=".css"]', ["l1"]), - ('link[href*=".css"]', ["l1"]), - ('link[id*="1"]', ["l1"]), - ( - '[id*="1"]', - [ - "data1", - "l1", - "p1", - "header1", - "s1a1", - "s1a2", - "s2a1", - "s1a2s1", - "dash1", - ], - ), - ('div[id*="1"]', ["data1"]), - ('[id*="noending"]', []), - # New for this test - ('[href*="."]', ["bob", "me", "l1"]), - ('a[href*="."]', ["bob", "me"]), - ('link[href*="."]', ["l1"]), - ('div[id*="n"]', ["main", "inner"]), - ('div[id*="nn"]', ["inner"]), - ('div[data-tag*="edval"]', ["data1"]), - ) - - def test_attribute_exact_or_hypen(self): - self.assert_css_select_multiple( - ('p[lang|="en"]', ["lang-en", "lang-en-gb", "lang-en-us"]), - ('[lang|="en"]', ["lang-en", "lang-en-gb", "lang-en-us"]), - ('p[lang|="fr"]', ["lang-fr"]), - ('p[lang|="gb"]', []), - ) - - def test_attribute_exists(self): - self.assert_css_select_multiple( - ("[rel]", ["l1", "bob", "me"]), - ("link[rel]", ["l1"]), - ("a[rel]", ["bob", "me"]), - ("[lang]", ["lang-en", "lang-en-gb", "lang-en-us", "lang-fr"]), - ("p[class]", ["p1", "pmulti"]), - ("[blah]", []), - ("p[blah]", []), - ("div[data-tag]", ["data1"]), - ) - - def test_quoted_space_in_selector_name(self): - html = """
nope
-
yes
- """ - soup = BeautifulSoup(html, "html.parser") - [chosen] = soup.select('div[style="display: right"]') - assert "yes" == chosen.string - - def test_unsupported_pseudoclass(self): - with pytest.raises(SOUPSIEVE_EXCEPTION_ON_UNSUPPORTED_PSEUDOCLASS): - self._soup.select("a:no-such-pseudoclass") - - with pytest.raises(SelectorSyntaxError): - self._soup.select("a:nth-of-type(a)") - - def test_nth_of_type(self): - # Try to select first paragraph - els = self._soup.select("div#inner p:nth-of-type(1)") - assert len(els) == 1 - assert els[0].string == "Some text" - - # Try to select third paragraph - els = self._soup.select("div#inner p:nth-of-type(3)") - assert len(els) == 1 - assert els[0].string == "Another" - - # Try to select (non-existent!) fourth paragraph - els = self._soup.select("div#inner p:nth-of-type(4)") - assert len(els) == 0 - - # Zero will select no tags. - els = self._soup.select("div p:nth-of-type(0)") - assert len(els) == 0 - - def test_nth_of_type_direct_descendant(self): - els = self._soup.select("div#inner > p:nth-of-type(1)") - assert len(els) == 1 - assert els[0].string == "Some text" - - def test_id_child_selector_nth_of_type(self): - self.assert_css_selects("#inner > p:nth-of-type(2)", ["p1"]) - - def test_select_on_element(self): - # Other tests operate on the tree; this operates on an element - # within the tree. - inner = self._soup.find("div", id="main") - selected = inner.select("div") - # The
tag was selected. The