diff --git a/poetry.lock b/poetry.lock index 3c91740..0feed0c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. [[package]] name = "absl-py" @@ -6,6 +6,7 @@ version = "2.1.0" description = "Abseil Python Common Libraries, see https://github.com/abseil/abseil-py." optional = false python-versions = ">=3.7" +groups = ["ortools"] files = [ {file = "absl-py-2.1.0.tar.gz", hash = "sha256:7820790efbb316739cde8b4e19357243fc3608a152024288513dd968d7d959ff"}, {file = "absl_py-2.1.0-py3-none-any.whl", hash = "sha256:526a04eadab8b4ee719ce68f204172ead1027549089702d99b9059f129ff1308"}, @@ -17,6 +18,8 @@ version = "0.1.4" description = "Disable App Nap on macOS >= 10.9" optional = false python-versions = ">=3.6" +groups = ["dev"] +markers = "platform_system == \"Darwin\"" files = [ {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, @@ -28,6 +31,7 @@ version = "3.0.0" description = "Annotate AST trees with source code positions" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2"}, {file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7"}, @@ -43,6 +47,8 @@ version = "1.17.1" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" +groups = ["dev"] +markers = "implementation_name == \"pypy\"" files = [ {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, @@ -122,10 +128,12 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main", "dev"] files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] +markers = {main = "platform_system == \"Windows\"", dev = "sys_platform == \"win32\""} [[package]] name = "comm" @@ -133,6 +141,7 @@ version = "0.2.2" description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, @@ -146,26 +155,28 @@ test = ["pytest"] [[package]] name = "cplex" -version = "22.1.1.2" +version = "22.1.2.0" description = "A Python interface to the CPLEX Callable Library, Community Edition." optional = false -python-versions = "*" +python-versions = ">=3.9" +groups = ["cplex"] files = [ - {file = "cplex-22.1.1.2-cp310-cp310-macosx_10_6_x86_64.whl", hash = "sha256:d74a91f6e9c6f4ad4c7c69f7ab937ea9e91178a556f6f105c87eef9e434ea42e"}, - {file = "cplex-22.1.1.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b066b5aa01fcf7cb471ad41920b3fecdd87dc95686e9a7031ff470873f0db10f"}, - {file = "cplex-22.1.1.2-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:a7230032928b1a657c384d3f49c04d8b80d0ab8134a2f4c0b26ff50e71ec767a"}, - {file = "cplex-22.1.1.2-cp310-cp310-manylinux2014_ppc64le.whl", hash = "sha256:dd81e8ee7a7f1fb5769bcbb1349b084b37c495cbd0db1a095d774f97d790ee3c"}, - {file = "cplex-22.1.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:68b33bb9ff84be3442a6f71000e7214781c6aa8674143a9aa79cb9a84e697dfd"}, - {file = "cplex-22.1.1.2-cp311-cp311-macosx_10_6_x86_64.whl", hash = "sha256:cda2f59af50d6c3d6476b2e38aba1e947f9bd72591d71961a9d53b5582062ba9"}, - {file = "cplex-22.1.1.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0f69a539ed50994e26e32c3d2b203eb5f112d1ba64400241614e1a91c0933974"}, - {file = "cplex-22.1.1.2-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:2a0f6984980779e6878a6cded52ee08806bae49af6bd209c7740549417e69e96"}, - {file = "cplex-22.1.1.2-cp311-cp311-manylinux2014_ppc64le.whl", hash = "sha256:0ac0005414a09facbeaa976a89b3153d4ed15f23a89bf5d283f65d4e951f63be"}, - {file = "cplex-22.1.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:46550cac476d74cc95dc3abf6f9bfe08c9fd61d889e20f2028f754b9fe503b88"}, - {file = "cplex-22.1.1.2-cp39-cp39-macosx_10_6_x86_64.whl", hash = "sha256:21f6fd1ad4876a7775e64fe8a1fb43f6bb7a010c5e099abdb8c01887a8cc1d84"}, - {file = "cplex-22.1.1.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d6acbf74c3fe32f2138a98730d1ebe3fa275c8c3fdcd8b1f68d312bfe9ef6899"}, - {file = "cplex-22.1.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:3211f9c84f44c6317ea1e83a6c2ff1cfdc08532f421987b7faa8c07a018dfae5"}, - {file = "cplex-22.1.1.2-cp39-cp39-manylinux2014_ppc64le.whl", hash = "sha256:648ad8c1c83ea30b0802c571a0dbf7fac23dcb9dc121ea0768c1794313aec2a7"}, - {file = "cplex-22.1.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:285b26008a77942c6c9c29bff91e1658c1beed2aa520e1a8b26137d81abf81dc"}, + {file = "cplex-22.1.2.0-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:05aa14e05a374eef925618b7b229fb6720932573247aae7f1766efb74385a534"}, + {file = "cplex-22.1.2.0-cp310-cp310-manylinux2014_ppc64le.whl", hash = "sha256:e7097f6cc23180e97a63d5dfdcb37ab9833fffdc38fa7ee34e7ec6e5d34a8d0f"}, + {file = "cplex-22.1.2.0-cp310-cp310-manylinux2014_x86_64.whl", hash = "sha256:c43e67eac01a89b71b2ede70257889bf74a0d2c221f0e31ffcdc101c5520f79c"}, + {file = "cplex-22.1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:c58101462cc8aee00ef041c003e9776a4877dd1563fc5d6a737a953ce51f9f83"}, + {file = "cplex-22.1.2.0-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:f976ce0166bd0e68740e4b514d1395b4f16e8103ef50d9a8f157c1cc916db216"}, + {file = "cplex-22.1.2.0-cp311-cp311-manylinux2014_ppc64le.whl", hash = "sha256:e875852bd46361b799950cc6854870a5e3d86f7238d4a8ba97648497521bb52b"}, + {file = "cplex-22.1.2.0-cp311-cp311-manylinux2014_x86_64.whl", hash = "sha256:bee12d488df86da5142ccb986fdf537df9ccff8837f33e5f0bc504b0e9b5d3f7"}, + {file = "cplex-22.1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:afbbad8aaede41255b703ab758452df9a899dbad48366bd0c9991fb219d57062"}, + {file = "cplex-22.1.2.0-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:feb5b9c6f437c3cacb0dc6b12fde6bdf6e266074cac9f535e641794363a26254"}, + {file = "cplex-22.1.2.0-cp312-cp312-manylinux2014_ppc64le.whl", hash = "sha256:3e8fd6127121a28ac6499cda16c5a96fa45e5ba92c20f44abc18ee734aef819e"}, + {file = "cplex-22.1.2.0-cp312-cp312-manylinux2014_x86_64.whl", hash = "sha256:0c28a0a3b1dde31d2640965feb5d7c513ade2ad4faabf58f7783c21093674b8b"}, + {file = "cplex-22.1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:aa3c0ecec114a0e706def5674f94f04a44b6c5500168909381c034951677fcca"}, + {file = "cplex-22.1.2.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:9332932334e3a9682a2a239a08c0169fe50e3f8d08fec84b9b120c7191c90737"}, + {file = "cplex-22.1.2.0-cp39-cp39-manylinux2014_ppc64le.whl", hash = "sha256:52ae74c59bac3d9a1319b7a6e4c0be94a9dc223fbcd028601dbf347ef8755ca4"}, + {file = "cplex-22.1.2.0-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:3c8dc025044718863493fa8912ef6de5a70e8440e9fb0b59748b0207064f1507"}, + {file = "cplex-22.1.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:bb43252083f7d8a8b67b18876b0387ea84304c8a200461b8a8426ef8a4b4bb78"}, ] [[package]] @@ -174,6 +185,7 @@ version = "1.8.9" description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "debugpy-1.8.9-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:cfe1e6c6ad7178265f74981edf1154ffce97b69005212fbc90ca22ddfe3d017e"}, {file = "debugpy-1.8.9-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ada7fb65102a4d2c9ab62e8908e9e9f12aed9d76ef44880367bc9308ebe49a0f"}, @@ -209,6 +221,7 @@ version = "5.1.1" description = "Decorators for Humans" optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, @@ -216,44 +229,32 @@ files = [ [[package]] name = "docplex" -version = "2.28.240" +version = "2.30.251" description = "The IBM Decision Optimization CPLEX Modeling for Python" optional = false python-versions = "*" +groups = ["cplex"] files = [ - {file = "docplex-2.28.240.tar.gz", hash = "sha256:c0de407e33f8709bb4cd91b6efeb96fd88bfecbdce2caec51afb79253bde6ff5"}, + {file = "docplex-2.30.251.tar.gz", hash = "sha256:6503219f5b51275a7e4e77ca4332903b0f80925d205030a48d3f6aa7ca0dbf2a"}, ] [package.dependencies] six = "*" -[[package]] -name = "exceptiongroup" -version = "1.2.2" -description = "Backport of PEP 654 (exception groups)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, - {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, -] - -[package.extras] -test = ["pytest (>=6)"] - [[package]] name = "executing" version = "2.1.0" description = "Get the currently executing AST node of a frame, and other information" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "executing-2.1.0-py2.py3-none-any.whl", hash = "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf"}, {file = "executing-2.1.0.tar.gz", hash = "sha256:8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab"}, ] [package.extras] -tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] +tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich ; python_version >= \"3.11\""] [[package]] name = "imageio" @@ -261,6 +262,7 @@ version = "2.36.1" description = "Library for reading and writing a wide range of image, video, scientific, and volumetric data formats." optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "imageio-2.36.1-py3-none-any.whl", hash = "sha256:20abd2cae58e55ca1af8a8dcf43293336a59adf0391f1917bf8518633cfc2cdf"}, {file = "imageio-2.36.1.tar.gz", hash = "sha256:e4e1d231f47f9a9e16100b0f7ce1a86e8856fb4d1c0fa2c4365a316f1746be62"}, @@ -294,6 +296,7 @@ version = "4.2.1" description = "Immutable wrapper around dictionaries (a fork of frozendict)" optional = false python-versions = ">=3.8" +groups = ["ortools"] files = [ {file = "immutabledict-4.2.1-py3-none-any.whl", hash = "sha256:c56a26ced38c236f79e74af3ccce53772827cef5c3bce7cab33ff2060f756373"}, {file = "immutabledict-4.2.1.tar.gz", hash = "sha256:d91017248981c72eb66c8ff9834e99c2f53562346f23e7f51e7a5ebcf66a3bcc"}, @@ -305,6 +308,7 @@ version = "6.29.5" description = "IPython Kernel for Jupyter" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, @@ -338,6 +342,7 @@ version = "8.30.0" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.10" +groups = ["dev"] files = [ {file = "ipython-8.30.0-py3-none-any.whl", hash = "sha256:85ec56a7e20f6c38fce7727dcca699ae4ffc85985aa7b23635a8008f918ae321"}, {file = "ipython-8.30.0.tar.gz", hash = "sha256:cb0a405a306d2995a5cbb9901894d240784a9f341394c6ba3f4fe8c6eb89ff6e"}, @@ -346,7 +351,6 @@ files = [ [package.dependencies] colorama = {version = "*", markers = "sys_platform == \"win32\""} decorator = "*" -exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} jedi = ">=0.16" matplotlib-inline = "*" pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} @@ -354,12 +358,11 @@ prompt_toolkit = ">=3.0.41,<3.1.0" pygments = ">=2.4.0" stack_data = "*" traitlets = ">=5.13.0" -typing_extensions = {version = ">=4.6", markers = "python_version < \"3.12\""} [package.extras] all = ["ipython[black,doc,kernel,matplotlib,nbconvert,nbformat,notebook,parallel,qtconsole]", "ipython[test,test-extra]"] black = ["black"] -doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli", "typing_extensions"] +doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli ; python_version < \"3.11\"", "typing_extensions"] kernel = ["ipykernel"] matplotlib = ["matplotlib"] nbconvert = ["nbconvert"] @@ -376,6 +379,7 @@ version = "0.19.2" description = "An autocompletion tool for Python that can be used for text editors." optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9"}, {file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0"}, @@ -395,6 +399,7 @@ version = "8.6.3" description = "Jupyter protocol implementation and client libraries" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, @@ -409,7 +414,7 @@ traitlets = ">=5.3" [package.extras] docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] +test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko ; sys_platform == \"win32\"", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] [[package]] name = "jupyter-core" @@ -417,6 +422,7 @@ version = "5.7.2" description = "Jupyter core package. A base package on which Jupyter projects rely." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, @@ -437,6 +443,7 @@ version = "0.1.7" description = "Inline Matplotlib backend for Jupyter" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, @@ -451,6 +458,7 @@ version = "1.3.0" description = "Python library for arbitrary-precision floating-point arithmetic" optional = false python-versions = "*" +groups = ["main"] files = [ {file = "mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c"}, {file = "mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f"}, @@ -459,7 +467,7 @@ files = [ [package.extras] develop = ["codecov", "pycodestyle", "pytest (>=4.6)", "pytest-cov", "wheel"] docs = ["sphinx"] -gmpy = ["gmpy2 (>=2.1.0a4)"] +gmpy = ["gmpy2 (>=2.1.0a4) ; platform_python_implementation != \"PyPy\""] tests = ["pytest (>=4.6)"] [[package]] @@ -468,6 +476,7 @@ version = "1.6.0" description = "Patch asyncio to allow nested event loops" optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, @@ -479,6 +488,7 @@ version = "3.4.2" description = "Python package for creating and manipulating graphs and networks" optional = false python-versions = ">=3.10" +groups = ["main", "dev"] files = [ {file = "networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f"}, {file = "networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1"}, @@ -498,6 +508,7 @@ version = "0.0.1" description = "Typing stubs for NetworkX" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "networkx-stubs-0.0.1.tar.gz", hash = "sha256:1751cbc87898328f89d79476ec6363174c05f9e48592f0953cc1077188717a21"}, {file = "networkx_stubs-0.0.1-py3-none-any.whl", hash = "sha256:ce58dff9b9dcbfdf895d0fce20fa8a73f2e82e581004596b7552086b5bb91366"}, @@ -515,6 +526,7 @@ version = "1.9.1" description = "Node.js virtual environment builder" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev"] files = [ {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, @@ -526,6 +538,7 @@ version = "2.2.0" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.10" +groups = ["main", "dev", "ortools"] files = [ {file = "numpy-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1e25507d85da11ff5066269d0bd25d06e0a0f2e908415534f3e603d2a78e4ffa"}, {file = "numpy-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a62eb442011776e4036af5c8b1a00b706c5bc02dc15eb5344b0c750428c94219"}, @@ -590,6 +603,7 @@ version = "4.10.0.84" description = "Wrapper package for OpenCV python bindings." optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "opencv-python-4.10.0.84.tar.gz", hash = "sha256:72d234e4582e9658ffea8e9cae5b63d488ad06994ef12d81dc303b17472f3526"}, {file = "opencv_python-4.10.0.84-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:fc182f8f4cda51b45f01c64e4cbedfc2f00aff799debebc305d8d0210c43f251"}, @@ -601,12 +615,7 @@ files = [ ] [package.dependencies] -numpy = [ - {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, - {version = ">=1.23.5", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, - {version = ">=1.21.4", markers = "python_version >= \"3.10\" and platform_system == \"Darwin\" and python_version < \"3.11\""}, - {version = ">=1.21.2", markers = "platform_system != \"Darwin\" and python_version >= \"3.10\" and python_version < \"3.11\""}, -] +numpy = {version = ">=1.26.0", markers = "python_version >= \"3.12\""} [[package]] name = "ortools" @@ -614,6 +623,7 @@ version = "9.11.4210" description = "Google OR-Tools python libraries and modules" optional = false python-versions = ">=3.8" +groups = ["ortools"] files = [ {file = "ortools-9.11.4210-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:127f20f03ce04c28f979eac635d1cacdc01597c9e035a1981070506294d7db9c"}, {file = "ortools-9.11.4210-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:250c62ba9e5fcaf18ada449bc0128c71bb0dbea83ddec5559cc506cff920235c"}, @@ -655,6 +665,7 @@ version = "24.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, @@ -666,6 +677,7 @@ version = "2.2.3" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" +groups = ["ortools"] files = [ {file = "pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5"}, {file = "pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348"}, @@ -712,11 +724,7 @@ files = [ ] [package.dependencies] -numpy = [ - {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, - {version = ">=1.23.2", markers = "python_version == \"3.11\""}, - {version = ">=1.22.4", markers = "python_version < \"3.11\""}, -] +numpy = {version = ">=1.26.0", markers = "python_version >= \"3.12\""} python-dateutil = ">=2.8.2" pytz = ">=2020.1" tzdata = ">=2022.7" @@ -752,6 +760,7 @@ version = "1.20.2" description = "parse() is the opposite of format()" optional = false python-versions = "*" +groups = ["main"] files = [ {file = "parse-1.20.2-py2.py3-none-any.whl", hash = "sha256:967095588cb802add9177d0c0b6133b5ba33b1ea9007ca800e526f42a85af558"}, {file = "parse-1.20.2.tar.gz", hash = "sha256:b41d604d16503c79d81af5165155c0b20f6c8d6c559efa66b4b695c3e5a0a0ce"}, @@ -763,6 +772,7 @@ version = "0.8.4" description = "A Python Parser" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, @@ -778,6 +788,7 @@ version = "0.2.1" description = "Bring colors to your terminal." optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["dev"] files = [ {file = "pastel-0.2.1-py2.py3-none-any.whl", hash = "sha256:4349225fcdf6c2bb34d483e523475de5bb04a5c10ef711263452cb37d7dd4364"}, {file = "pastel-0.2.1.tar.gz", hash = "sha256:e6581ac04e973cac858828c6202c1e1e81fee1dc7de7683f3e1ffe0bfd8a573d"}, @@ -789,6 +800,8 @@ version = "4.9.0" description = "Pexpect allows easy control of interactive console applications." optional = false python-versions = "*" +groups = ["dev"] +markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\"" files = [ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, @@ -803,6 +816,7 @@ version = "11.0.0" description = "Python Imaging Library (Fork)" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "pillow-11.0.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:6619654954dc4936fcff82db8eb6401d3159ec6be81e33c6000dfd76ae189947"}, {file = "pillow-11.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b3c5ac4bed7519088103d9450a1107f76308ecf91d6dabc8a33a2fcfb18d0fba"}, @@ -886,7 +900,7 @@ docs = ["furo", "olefile", "sphinx (>=8.1)", "sphinx-copybutton", "sphinx-inline fpx = ["olefile"] mic = ["olefile"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] -typing = ["typing-extensions"] +typing = ["typing-extensions ; python_version < \"3.10\""] xmp = ["defusedxml"] [[package]] @@ -895,6 +909,7 @@ version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, @@ -911,6 +926,7 @@ version = "0.31.1" description = "A task runner that works well with poetry." optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ {file = "poethepoet-0.31.1-py3-none-any.whl", hash = "sha256:7fdfa0ac6074be9936723e7231b5bfaad2923e96c674a9857e81d326cf8ccdc2"}, {file = "poethepoet-0.31.1.tar.gz", hash = "sha256:d6b66074edf85daf115bb916eae0afd6387d19e1562e1c9ef7d61d5c585696aa"}, @@ -919,7 +935,6 @@ files = [ [package.dependencies] pastel = ">=0.2.1,<0.3.0" pyyaml = ">=6.0.2,<7.0.0" -tomli = {version = ">=1.2.2", markers = "python_version < \"3.11\""} [package.extras] poetry-plugin = ["poetry (>=1.0,<2.0)"] @@ -930,6 +945,7 @@ version = "3.0.48" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.7.0" +groups = ["dev"] files = [ {file = "prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e"}, {file = "prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90"}, @@ -944,6 +960,7 @@ version = "5.26.1" description = "" optional = false python-versions = ">=3.8" +groups = ["ortools"] files = [ {file = "protobuf-5.26.1-cp310-abi3-win32.whl", hash = "sha256:3c388ea6ddfe735f8cf69e3f7dc7611e73107b60bdfcf5d0f024c3ccd3794e23"}, {file = "protobuf-5.26.1-cp310-abi3-win_amd64.whl", hash = "sha256:e6039957449cb918f331d32ffafa8eb9255769c96aa0560d9a5bf0b4e00a2a33"}, @@ -964,6 +981,7 @@ version = "6.1.0" description = "Cross-platform lib for process and system monitoring in Python." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +groups = ["dev"] files = [ {file = "psutil-6.1.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ff34df86226c0227c52f38b919213157588a678d049688eded74c76c8ba4a5d0"}, {file = "psutil-6.1.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:c0e0c00aa18ca2d3b2b991643b799a15fc8f0563d2ebb6040f64ce8dc027b942"}, @@ -994,6 +1012,8 @@ version = "0.7.0" description = "Run a subprocess in a pseudo terminal" optional = false python-versions = "*" +groups = ["dev"] +markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\"" files = [ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, @@ -1005,6 +1025,7 @@ version = "0.2.3" description = "Safely evaluate AST nodes without side effects" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, @@ -1019,6 +1040,8 @@ version = "2.22" description = "C parser in Python" optional = false python-versions = ">=3.8" +groups = ["dev"] +markers = "implementation_name == \"pypy\"" files = [ {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, @@ -1030,6 +1053,7 @@ version = "1.1.0" description = "Python package wrapping the gifsicle library for editing and optimizing gifs." optional = false python-versions = "*" +groups = ["main"] files = [ {file = "pygifsicle-1.1.0.tar.gz", hash = "sha256:dcef433520ace4c1136dfc7060e77042142a3dbd6bdb6a19bd9149ef5cbe7441"}, ] @@ -1043,6 +1067,7 @@ version = "2.18.0" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, @@ -1057,6 +1082,7 @@ version = "1.1.390" description = "Command line wrapper for pyright" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "pyright-1.1.390-py3-none-any.whl", hash = "sha256:ecebfba5b6b50af7c1a44c2ba144ba2ab542c227eb49bc1f16984ff714e0e110"}, {file = "pyright-1.1.390.tar.gz", hash = "sha256:aad7f160c49e0fbf8209507a15e17b781f63a86a1facb69ca877c71ef2e9538d"}, @@ -1077,6 +1103,7 @@ version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["dev", "ortools"] files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -1091,6 +1118,7 @@ version = "2024.2" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" +groups = ["ortools"] files = [ {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, @@ -1102,6 +1130,8 @@ version = "308" description = "Python for Window Extensions" optional = false python-versions = "*" +groups = ["dev"] +markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\"" files = [ {file = "pywin32-308-cp310-cp310-win32.whl", hash = "sha256:796ff4426437896550d2981b9c2ac0ffd75238ad9ea2d3bfa67a1abd546d262e"}, {file = "pywin32-308-cp310-cp310-win_amd64.whl", hash = "sha256:4fc888c59b3c0bef905ce7eb7e2106a07712015ea1c8234b703a088d46110e8e"}, @@ -1129,6 +1159,7 @@ version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, @@ -1191,6 +1222,7 @@ version = "26.2.0" description = "Python bindings for 0MQ" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:ddf33d97d2f52d89f6e6e7ae66ee35a4d9ca6f36eda89c24591b0c40205a3629"}, {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dacd995031a01d16eec825bf30802fceb2c3791ef24bcce48fa98ce40918c27b"}, @@ -1312,6 +1344,7 @@ version = "0.8.3" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "ruff-0.8.3-py3-none-linux_armv6l.whl", hash = "sha256:8d5d273ffffff0acd3db5bf626d4b131aa5a5ada1276126231c4174543ce20d6"}, {file = "ruff-0.8.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:e4d66a21de39f15c9757d00c50c8cdd20ac84f55684ca56def7891a025d7e939"}, @@ -1339,6 +1372,7 @@ version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["cplex", "dev", "ortools"] files = [ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, @@ -1350,6 +1384,7 @@ version = "0.6.3" description = "Extract data from python stack frames and tracebacks for informative displays" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, @@ -1369,6 +1404,7 @@ version = "1.13.3" description = "Computer algebra system (CAS) in Python" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "sympy-1.13.3-py3-none-any.whl", hash = "sha256:54612cf55a62755ee71824ce692986f23c88ffa77207b30c1368eda4a7060f73"}, {file = "sympy-1.13.3.tar.gz", hash = "sha256:b27fd2c6530e0ab39e275fc9b683895367e51d5da91baa8d3d64db2565fec4d9"}, @@ -1380,53 +1416,13 @@ mpmath = ">=1.1.0,<1.4" [package.extras] dev = ["hypothesis (>=6.70.0)", "pytest (>=7.1.0)"] -[[package]] -name = "tomli" -version = "2.2.1" -description = "A lil' TOML parser" -optional = false -python-versions = ">=3.8" -files = [ - {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, - {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, - {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, - {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, - {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, - {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, - {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, - {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, - {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, - {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, - {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, - {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, - {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, - {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, -] - [[package]] name = "tornado" version = "6.4.2" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1"}, {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803"}, @@ -1447,6 +1443,7 @@ version = "4.67.1" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"}, {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"}, @@ -1468,6 +1465,7 @@ version = "5.14.3" description = "Traitlets Python configuration system" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, @@ -1483,6 +1481,7 @@ version = "3.4.2.20241115" description = "Typing stubs for networkx" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "types-networkx-3.4.2.20241115.tar.gz", hash = "sha256:d669b650cf6c6c9ec879a825449eb04a5c10742f3109177e1683f57ee49e0f59"}, {file = "types_networkx-3.4.2.20241115-py3-none-any.whl", hash = "sha256:f0c382924d6614e06bf0b1ca0b837b8f33faa58982bc086ea762efaf39aa98dd"}, @@ -1497,6 +1496,7 @@ version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, @@ -1508,6 +1508,7 @@ version = "2024.2" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" +groups = ["ortools"] files = [ {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, @@ -1519,12 +1520,13 @@ version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, ] [metadata] -lock-version = "2.0" -python-versions = "^3.10" -content-hash = "5b57bccd8dc65a9acecbe187939bae625ef6a259f4188c6587907245bcfa604f" +lock-version = "2.1" +python-versions = "^3.12" +content-hash = "21f526e57dc6bcd08905948b736be43745f42dc8dacdba70c5873f9bd0313909" diff --git a/pyproject.toml b/pyproject.toml index a507296..737913c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ readme = "README.md" packages = [{ include = "holt59", from = "src" }] [tool.poetry.dependencies] -python = "^3.10" +python = "^3.12" numpy = "^2.1.3" tqdm = "^4.67.1" parse = "^1.20.2" @@ -28,8 +28,8 @@ networkx-stubs = "^0.0.1" types-networkx = "^3.4.2.20241115" [tool.poetry.group.cplex.dependencies] -docplex = "^2.28.240" -cplex = "^22.1.1.2" +docplex = "^2.30.251" +cplex = "^22.1.2.0" [tool.poetry.group.ortools.dependencies] ortools = "^9.11.4210" diff --git a/src/holt59/aoc/2025/__init__.py b/src/holt59/aoc/2025/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/holt59/aoc/2025/day1.py b/src/holt59/aoc/2025/day1.py new file mode 100644 index 0000000..8aaad4e --- /dev/null +++ b/src/holt59/aoc/2025/day1.py @@ -0,0 +1,42 @@ +from collections import Counter +from typing import Any, Iterator, Literal, cast + +from ..base import BaseSolver + + +class Solver(BaseSolver): + def solve(self, input: str) -> Iterator[Any]: + data = [ + (cast(Literal["R", "L"], row[0]), int(row[1:])) + for row in input.splitlines() + ] + + count, dial = 0, 50 + for sense, value in data: + dial = (dial + (-1 if sense == "L" else 1) * value) % 100 + if dial == 0: + count += 1 + + yield count + + count, dial = 0, 50 + for sense, value in data: + if dial == 0 and sense == "L": + dial = dial - value + 100 + else: + dial = dial + (-1 if sense == "L" else 1) * value + + while dial < 0: + count, dial = count + 1, dial + 100 + + if dial == 0: + count += 1 + + while dial >= 100: + count, dial = count + 1, dial - 100 + + self.logger.info( + f"after {sense}{value:<3d} dial is at {dial:>2d}, count is {count}" + ) + + yield count diff --git a/src/holt59/aoc/2025/day2.py b/src/holt59/aoc/2025/day2.py new file mode 100644 index 0000000..36e83bb --- /dev/null +++ b/src/holt59/aoc/2025/day2.py @@ -0,0 +1,9 @@ +from typing import Any, Iterator + +from ..base import BaseSolver + + +class Solver(BaseSolver): + def solve(self, input: str) -> Iterator[Any]: + yield 0 + yield 0 diff --git a/src/holt59/aoc/__main__.py b/src/holt59/aoc/__main__.py index dd347e3..d81a7fd 100644 --- a/src/holt59/aoc/__main__.py +++ b/src/holt59/aoc/__main__.py @@ -1,7 +1,6 @@ import argparse import importlib import logging -import logging.handlers import sys from datetime import datetime from pathlib import Path @@ -59,7 +58,7 @@ def main(): default=None, help="input to use (override user and test)", ) - parser.add_argument("-y", "--year", type=int, help="year to run", default=2024) + parser.add_argument("-y", "--year", type=int, help="year to run", default=2025) parser.add_argument("day", type=int, help="day to run") args = parser.parse_args() diff --git a/src/holt59/aoc/inputs/holt59/2025/day1.txt b/src/holt59/aoc/inputs/holt59/2025/day1.txt new file mode 100644 index 0000000..5abe67a --- /dev/null +++ b/src/holt59/aoc/inputs/holt59/2025/day1.txt @@ -0,0 +1,4387 @@ +L23 +R14 +L50 +R27 +L33 +R36 +L11 +L32 +R46 +R36 +R2 +L32 +L42 +L11 +L10 +R31 +L36 +R33 +L11 +R38 +L22 +L1 +R33 +L4 +L12 +L29 +L14 +R4 +L13 +R50 +L30 +R20 +R11 +L37 +R49 +R10 +R7 +R20 +L36 +L15 +R24 +L48 +R36 +L49 +L21 +R18 +L13 +R27 +R26 +L43 +R30 +R29 +L94 +R30 +L55 +R90 +R54 +R60 +R86 +R81 +L53 +R23 +L2 +R78 +L27 +L61 +L74 +L96 +R98 +R33 +L88 +L12 +R45 +L45 +L19 +R46 +R38 +R96 +R39 +R41 +L41 +L48 +R60 +R88 +L8 +R90 +R79 +L61 +R21 +R17 +L37 +R99 +R67 +R23 +L73 +R83 +L59 +R42 +R84 +R33 +L84 +R206 +R61 +R133 +L13 +R36 +R61 +L92 +R84 +R961 +L53 +L91 +R28 +L78 +L59 +L97 +R97 +L42 +L47 +R7 +R12 +R24 +R93 +L2 +L48 +L34 +R72 +R38 +L56 +L19 +R283 +R525 +L28 +L597 +L18 +R151 +L4 +L37 +R727 +L89 +L96 +L15 +R83 +R10 +L15 +R122 +L80 +R36 +R71 +L12 +R85 +R41 +L20 +R805 +L26 +R22 +R45 +R25 +R94 +R47 +L333 +R72 +L72 +L78 +R2 +R76 +R76 +L762 +L15 +L99 +R436 +R17 +R24 +R669 +L246 +L70 +L45 +R58 +R57 +R55 +L34 +L62 +R41 +L13 +R58 +L68 +R23 +R31 +R69 +L69 +R797 +L9 +L71 +L21 +R4 +L86 +R385 +R70 +L94 +L47 +L398 +L6 +L61 +L694 +R434 +L34 +L882 +R82 +R64 +R2 +R43 +R91 +R32 +R68 +L291 +R91 +R786 +L327 +R75 +L858 +L41 +R27 +L44 +R89 +R388 +R68 +L63 +R65 +R923 +R47 +R63 +R27 +R27 +R48 +L41 +L59 +L82 +L32 +L8 +L90 +R21 +L9 +L47 +R5 +R42 +R55 +L55 +R827 +L89 +R20 +L80 +R922 +R11 +R42 +R660 +L49 +R36 +L21 +L67 +L28 +R316 +R88 +R14 +L809 +R715 +L375 +R367 +R77 +L77 +L71 +L6 +L823 +L22 +L17 +R87 +R62 +L60 +R50 +R80 +L74 +R94 +R55 +L43 +L12 +L97 +R61 +L25 +R861 +L306 +L94 +L96 +R796 +L5 +L67 +L10 +R36 +R46 +L559 +R52 +R42 +R723 +L58 +R60 +L45 +L14 +L1 +R57 +L54 +R97 +R147 +L18 +L29 +R67 +L667 +L88 +L23 +L89 +L29 +R4 +L75 +R4 +L96 +L8 +L78 +L22 +R406 +R3 +L184 +R75 +R81 +L37 +R52 +R4 +R84 +R306 +R66 +L56 +L53 +L47 +L387 +R87 +R34 +R466 +L606 +L70 +L24 +R72 +R67 +R91 +L49 +L81 +L2 +L29 +R131 +R25 +R134 +R91 +L750 +L90 +R490 +R37 +R63 +L89 +L11 +R353 +L53 +L7 +L723 +L98 +L65 +R70 +L77 +R1 +L58 +R57 +L416 +R15 +R39 +R62 +R68 +L21 +R53 +L80 +R18 +R632 +L70 +R36 +R32 +R532 +L68 +R68 +R151 +L96 +R345 +R18 +R78 +R759 +L84 +R529 +L65 +L735 +L69 +L73 +R80 +L55 +L85 +R2 +R30 +L89 +L180 +R338 +L40 +R15 +L74 +R51 +R649 +L129 +R29 +R21 +L44 +L436 +L86 +L155 +R929 +R32 +L47 +R71 +R95 +L80 +L52 +R86 +R97 +L21 +L10 +L12 +R54 +L93 +L625 +R32 +L86 +L38 +L32 +R455 +L94 +L61 +R404 +R96 +L68 +R846 +R46 +R76 +L121 +L37 +R40 +R18 +R193 +R23 +L95 +R4 +L48 +R402 +R89 +L68 +L823 +R9 +R7 +L7 +L9 +L1 +R72 +R55 +L3 +R748 +R127 +L75 +L70 +L30 +L56 +R73 +L17 +L49 +R59 +L610 +L437 +R37 +L361 +L297 +R98 +R71 +L13 +L98 +L59 +L29 +L97 +R64 +L73 +L5 +L89 +L12 +L80 +R80 +L630 +L48 +R14 +R99 +L119 +L316 +L18 +R18 +R94 +L94 +L77 +L23 +L661 +R911 +R50 +R12 +R12 +R776 +L175 +R1 +R74 +R27 +L52 +L90 +L55 +L30 +R10 +R4 +L7 +R625 +L32 +R37 +L82 +L59 +R84 +R55 +R29 +L13 +L51 +L150 +L58 +R38 +R81 +L11 +L78 +R1 +R14 +R63 +L51 +L6 +R57 +L12 +L65 +L57 +R9 +R621 +R98 +R6 +L27 +R52 +L56 +L18 +L94 +L16 +R559 +L67 +R67 +R1 +L12 +R30 +R424 +L315 +L39 +L89 +L35 +L33 +R49 +R44 +L25 +L76 +L24 +L30 +L70 +R82 +L421 +L22 +R89 +L28 +R88 +R62 +L68 +R18 +L69 +L76 +L76 +L279 +R76 +R24 +R77 +L77 +L933 +L67 +L59 +L398 +L55 +L488 +R52 +R30 +L17 +R35 +R42 +L442 +L29 +L71 +R68 +R841 +R11 +L815 +L5 +L18 +L49 +R58 +R74 +L506 +R31 +R10 +L36 +L89 +L53 +R56 +R325 +R76 +R90 +L90 +L25 +L71 +R17 +R89 +R879 +L14 +R46 +L7 +L611 +R18 +L53 +L78 +R40 +L63 +R954 +R905 +L542 +L95 +R32 +L41 +L90 +R96 +R35 +L10 +L9 +L81 +L15 +L785 +L35 +L66 +L99 +L81 +L970 +R82 +L64 +R278 +R55 +R131 +R75 +R71 +R1 +R22 +R1 +R99 +L11 +R23 +L754 +R97 +R83 +R31 +R868 +R63 +L62 +L37 +L24 +R81 +R15 +L73 +L59 +R59 +L52 +R4 +L87 +R39 +R50 +L11 +R57 +L318 +R887 +L54 +L62 +L85 +L60 +R34 +L20 +R596 +R82 +L673 +L51 +L76 +R476 +R48 +L63 +R39 +L349 +L151 +L762 +R76 +L80 +R866 +L67 +R67 +L784 +L10 +R89 +L91 +R846 +R450 +L94 +L984 +R766 +R92 +L96 +L84 +L88 +L12 +L91 +L44 +R70 +L6 +R27 +L56 +R55 +L40 +L15 +R92 +R36 +L828 +L89 +L611 +R26 +R42 +L68 +R41 +R50 +R9 +R813 +R16 +R8 +L137 +L26 +R26 +R85 +R24 +R16 +L88 +L637 +R87 +R581 +R17 +L70 +L15 +L92 +L808 +R80 +L60 +R86 +L35 +L98 +R64 +L1 +R64 +L4 +L96 +L51 +L82 +L67 +R92 +L45 +L5 +R58 +R547 +R61 +R58 +L458 +L708 +R1 +R78 +L84 +R87 +L82 +R32 +L81 +R82 +R67 +L51 +R21 +L47 +L23 +L76 +R14 +R58 +R83 +R167 +L27 +R81 +R61 +R39 +R59 +R69 +L20 +R69 +L819 +R89 +R53 +R886 +L24 +L50 +L279 +R85 +L36 +R50 +L632 +L1 +R1 +R57 +R46 +L75 +L867 +L17 +L7 +R63 +R908 +R92 +L274 +R90 +L77 +R61 +L68 +R75 +R580 +R370 +R28 +L85 +R55 +L55 +R68 +R47 +R85 +L61 +R61 +L64 +L44 +R28 +R71 +L44 +R937 +L74 +L57 +R2 +R879 +L80 +L54 +R50 +L41 +L78 +L31 +L39 +R70 +L70 +R39 +L270 +L13 +R16 +L33 +L27 +R27 +R32 +R68 +L32 +R1 +R15 +L17 +L333 +R66 +L573 +R169 +R4 +L62 +L95 +L16 +R17 +R95 +R18 +L57 +R47 +L819 +R72 +L13 +R76 +R37 +R90 +L90 +R2 +L33 +R31 +L24 +R43 +R45 +L22 +R22 +R26 +L74 +R64 +R55 +R757 +L948 +R37 +R563 +R49 +R79 +L24 +R73 +L54 +L94 +R27 +R50 +L59 +R54 +R67 +R31 +R57 +L5 +R67 +L62 +L13 +L87 +L854 +L46 +L40 +L24 +L31 +R22 +R80 +R38 +R58 +R85 +L922 +L18 +L74 +L74 +R64 +R72 +R64 +R349 +R563 +L4 +L8 +R24 +L783 +R50 +R9 +L772 +R278 +R85 +R125 +R2 +L83 +L51 +L584 +R321 +R85 +L19 +R81 +L96 +R30 +L61 +L71 +R30 +R796 +L936 +R47 +R58 +R22 +L87 +R68 +R2 +R30 +L92 +R2 +R522 +R468 +R17 +R49 +L55 +R46 +R99 +R65 +R72 +L2 +R9 +L82 +R12 +L74 +R751 +R74 +L2 +L920 +L95 +R30 +R6 +L40 +R13 +R427 +L48 +L40 +L6 +R43 +L49 +L56 +L14 +R70 +L96 +R71 +L53 +R91 +L736 +R502 +R89 +L68 +L61 +L589 +L50 +R8 +L42 +R9 +L40 +R274 +R94 +R898 +L47 +R232 +R93 +R321 +R76 +R24 +R945 +R807 +R6 +L769 +L15 +R43 +L51 +L66 +L66 +R26 +R83 +R513 +R561 +R36 +R59 +R21 +L86 +L47 +R31 +R68 +R48 +R87 +L46 +R77 +R21 +L86 +L89 +R61 +L90 +R85 +R392 +L57 +L282 +R23 +L43 +L97 +L88 +R88 +L45 +R74 +L32 +L85 +L930 +R8 +R56 +R2 +L57 +L45 +L49 +L70 +R709 +R61 +R99 +R801 +L77 +L23 +R730 +L630 +R9 +L9 +L38 +R36 +L71 +R55 +L282 +R60 +R40 +L76 +L92 +L2 +R11 +R51 +L89 +R22 +R18 +L543 +L40 +R498 +L158 +R13 +R70 +L683 +R80 +R87 +L43 +R258 +L6 +L76 +R462 +R67 +L29 +R60 +R840 +L99 +L74 +R6 +R67 +L875 +R84 +R71 +R48 +L31 +R3 +R98 +R35 +R67 +L46 +R447 +L1 +L90 +R28 +R47 +L29 +L869 +R282 +L58 +L67 +L49 +R82 +L267 +L940 +R17 +R48 +L79 +R78 +L48 +L89 +L45 +R29 +L45 +L57 +L92 +R26 +R83 +L596 +R74 +R10 +R580 +R36 +R70 +R94 +R89 +L53 +L31 +L71 +R28 +R87 +L413 +R11 +L11 +L35 +R21 +R14 +L217 +L15 +L68 +R96 +R20 +L16 +R81 +R64 +L45 +L454 +R354 +R504 +L404 +L90 +R90 +L347 +R8 +R39 +L51 +L419 +R92 +R78 +R30 +L34 +R623 +L34 +R15 +L23 +L77 +L22 +L96 +R52 +L2 +L32 +L54 +R99 +L45 +R60 +L901 +R252 +L11 +L3 +R3 +L50 +L50 +R322 +L20 +R98 +L71 +R95 +L157 +L67 +L21 +L96 +L14 +L40 +R8 +L88 +L85 +R36 +R60 +L60 +R2 +R41 +R176 +R81 +L74 +R138 +R384 +L91 +L970 +L87 +L610 +R72 +L472 +R10 +L774 +R33 +L959 +R73 +L79 +R2 +L3 +L93 +R77 +R90 +R133 +R96 +R4 +L51 +R727 +L24 +L4 +R52 +R12 +L503 +R33 +R95 +L76 +R39 +L335 +L990 +L57 +L85 +R823 +L93 +R56 +R89 +R69 +R223 +R33 +R67 +L514 +L5 +L81 +R2 +L1 +R52 +R65 +L18 +L86 +R286 +L63 +L41 +R57 +L67 +L581 +R187 +R53 +R55 +L427 +L816 +L90 +L17 +R967 +R16 +R90 +L49 +R926 +L58 +R92 +L44 +L66 +L556 +R32 +L89 +L21 +R10 +L42 +L894 +L926 +R62 +L72 +L28 +R78 +R622 +R71 +L73 +R41 +R856 +R46 +L46 +L95 +R67 +R33 +R26 +R65 +R9 +L790 +R840 +R50 +R23 +R993 +L16 +L61 +R91 +R92 +R78 +L42 +R42 +R917 +R22 +R25 +R236 +R688 +L82 +R179 +L52 +R286 +L441 +R722 +L32 +L80 +R4 +R186 +R622 +R38 +L438 +R81 +L17 +R36 +L9 +L284 +L44 +R26 +L85 +R96 +L781 +L9 +R590 +L543 +L97 +L60 +R45 +L45 +R21 +L21 +R17 +L17 +R14 +R86 +L32 +R11 +R821 +L64 +R149 +L91 +R6 +L15 +L85 +R72 +R79 +R49 +R61 +L40 +L21 +R93 +L42 +R11 +R62 +L224 +L5 +R28 +R83 +L106 +R57 +L257 +L58 +L42 +L28 +L11 +L61 +R964 +R636 +L41 +R22 +R6 +R72 +L56 +R97 +L52 +R252 +L59 +R59 +R40 +R60 +R93 +R607 +L89 +L16 +R68 +R59 +R74 +L514 +R18 +L32 +L94 +L74 +L167 +L33 +L18 +R72 +R111 +R335 +R71 +L71 +R586 +R314 +R44 +R635 +R21 +L16 +R42 +L93 +R73 +R2 +R49 +L57 +R82 +R95 +R47 +R34 +L372 +L33 +R88 +L41 +L40 +R37 +R1 +L193 +R6 +R872 +L68 +R70 +R61 +R3 +R51 +R87 +R13 +L829 +L71 +R3 +R44 +L7 +R764 +R78 +L82 +L37 +R9 +R66 +L60 +L28 +L40 +L446 +R36 +R135 +L92 +R61 +R23 +R94 +L41 +L99 +R19 +L61 +R91 +L875 +R65 +L20 +R72 +L49 +L23 +R92 +L242 +L75 +L75 +R25 +R75 +R75 +R31 +R83 +R935 +R9 +R67 +L828 +R95 +R11 +L78 +R96 +R15 +R7 +R341 +L21 +R62 +L1 +L646 +R66 +L19 +L85 +R85 +L32 +R18 +L86 +L33 +L767 +R58 +R42 +L18 +L79 +L57 +R62 +R94 +R41 +R457 +R4 +R67 +R293 +L30 +R66 +L6 +R61 +R67 +R95 +R83 +R18 +L18 +R31 +R9 +R619 +L92 +R733 +R57 +R50 +R8 +R12 +R73 +L86 +R86 +L67 +R17 +R50 +R6 +R23 +L29 +R71 +R89 +R59 +L3 +R84 +R39 +R49 +R59 +L111 +R64 +R74 +L74 +R481 +L55 +R74 +R85 +L16 +L369 +R23 +R16 +R82 +R68 +L1 +L88 +L90 +R19 +L66 +L63 +R13 +L17 +R51 +L47 +L29 +L49 +L22 +R25 +L25 +R82 +L82 +R14 +L497 +R94 +L91 +R60 +R439 +L995 +R876 +L54 +L46 +L14 +R98 +L92 +R167 +R49 +L8 +R38 +R93 +L31 +R520 +R46 +R93 +L81 +L75 +L52 +L94 +L3 +L298 +R44 +L53 +L72 +L898 +R95 +R821 +R49 +L999 +L67 +R95 +L810 +R77 +R5 +R11 +R49 +L29 +L31 +R37 +L80 +R14 +R86 +L89 +L23 +L64 +L20 +L28 +L50 +R74 +R26 +R5 +R69 +R72 +L21 +L51 +R99 +R379 +R22 +L616 +L26 +L19 +R63 +R14 +R15 +R69 +R35 +L24 +L11 +L66 +R31 +R73 +L38 +R25 +R27 +L52 +R526 +L84 +L42 +R34 +L34 +R2 +L980 +L704 +R82 +L20 +L780 +L16 +R16 +L84 +L71 +R89 +R19 +L147 +L65 +R59 +R13 +L13 +L61 +R16 +L755 +L98 +L24 +L78 +R14 +L18 +R53 +R851 +R12 +R928 +L751 +L53 +R879 +L102 +L53 +L56 +L47 +L50 +L507 +R46 +R54 +R84 +L884 +L98 +R6 +L60 +L48 +R40 +L58 +L97 +L85 +R85 +L85 +L40 +L70 +R78 +L914 +L54 +R19 +L212 +L49 +L44 +R456 +L83 +R13 +R8 +L66 +L779 +L333 +L43 +R271 +L33 +R12 +L294 +R78 +L680 +R942 +R99 +L82 +L67 +L33 +R97 +R62 +L59 +L74 +L97 +R140 +L90 +L459 +R20 +L40 +R280 +R39 +L116 +L734 +R23 +L21 +L4 +L567 +R52 +L52 +R36 +R57 +L50 +R468 +L40 +L19 +L32 +R80 +R7 +R232 +L685 +R27 +R77 +R34 +R8 +L52 +R97 +L87 +R42 +R20 +L95 +L61 +L30 +R68 +R42 +R80 +L87 +L318 +L61 +L18 +L45 +R25 +L71 +L5 +R47 +R75 +R89 +R74 +L29 +L701 +L19 +R20 +L16 +L17 +R19 +L86 +R44 +L77 +R130 +L78 +L40 +R66 +L45 +L18 +R42 +L24 +L5 +L27 +R631 +L99 +L8 +R72 +L99 +L99 +R34 +L49 +L21 +L30 +R48 +R524 +R28 +R309 +R62 +L71 +R850 +R50 +R376 +L17 +L49 +L10 +L1 +R6 +R77 +L82 +L30 +R183 +R44 +R3 +L403 +L97 +L29 +R29 +L17 +R6 +L61 +R74 +L2 +L388 +R639 +L85 +L66 +R104 +R74 +R22 +L64 +L83 +R332 +L176 +R66 +R30 +L685 +R80 +R47 +L55 +R80 +L358 +L9 +L74 +L772 +R45 +R5 +L77 +L74 +L58 +L30 +L70 +L347 +L66 +R168 +L55 +L59 +L41 +R58 +L58 +R54 +R46 +L13 +R99 +L42 +R602 +R8 +R646 +L15 +R15 +R64 +L79 +R57 +R151 +R7 +R40 +L40 +R829 +L51 +L32 +L59 +L51 +L355 +R19 +R38 +R77 +L15 +L6 +R313 +R93 +L44 +L56 +L55 +L45 +L59 +R13 +R46 +R19 +L89 +L71 +R770 +R23 +L513 +R61 +L4 +L489 +L7 +L74 +R9 +R65 +R905 +L12 +L588 +L5 +R7 +L7 +L12 +L295 +L86 +R93 +L12 +L88 +L14 +L809 +L15 +R88 +R17 +R88 +L40 +L15 +L478 +R78 +L86 +L14 +R52 +R73 +L69 +L630 +R89 +L801 +L814 +R969 +R69 +L83 +R82 +L53 +L49 +R329 +R41 +L81 +L20 +R96 +R16 +L16 +L482 +R21 +R14 +L53 +L885 +R96 +L670 +L53 +R417 +R95 +R23 +L28 +R5 +R72 +R52 +R76 +L389 +L911 +L78 +L322 +R16 +R93 +R594 +L36 +R433 +R76 +R5 +R377 +L80 +R95 +R29 +L78 +L124 +R69 +L22 +R553 +R15 +R85 +R70 +L70 +L779 +L21 +L46 +L536 +L918 +R67 +L33 +L681 +R60 +R57 +L70 +R9 +R91 +L72 +R96 +R11 +L906 +R71 +L51 +R95 +L44 +R473 +R927 +R47 +L27 +L20 +R18 +L18 +R371 +L838 +R41 +L74 +R78 +L73 +R95 +R20 +L14 +L30 +L76 +R36 +R669 +R326 +L52 +L36 +R15 +R26 +R916 +R49 +R43 +L646 +R954 +L85 +L15 +L763 +R58 +L97 +R65 +L53 +R88 +L98 +R89 +R711 +L16 +L474 +R90 +L56 +L82 +R38 +R321 +R79 +R439 +R75 +L12 +L2 +R17 +R83 +L90 +L10 +L44 +R108 +L51 +L9 +R96 +L88 +L46 +L66 +R15 +L75 +L940 +R483 +R96 +R49 +R72 +L28 +R27 +R82 +R19 +L135 +L83 +L82 +L63 +R187 +L79 +R57 +L902 +L81 +L19 +L74 +R74 +R678 +R22 +L4 +L656 +L40 +R6 +L6 +L24 +L76 +L76 +R76 +R73 +L73 +L938 +R38 +L53 +L46 +R99 +L471 +L29 +L47 +L53 +R90 +R10 +L66 +R459 +R54 +R31 +R420 +R7 +L4 +R699 +R703 +R97 +L30 +L7 +R537 +L112 +R12 +L516 +L753 +L6 +L61 +R206 +R47 +L73 +L44 +L50 +R414 +L20 +R71 +L447 +R542 +R28 +L38 +L41 +R91 +R11 +L59 +R49 +R73 +R25 +L58 +L81 +R790 +R55 +R80 +L666 +R618 +R46 +L35 +L24 +R86 +L460 +R38 +L38 +L69 +L66 +R35 +L576 +R759 +L89 +L40 +L28 +R21 +L20 +L44 +R17 +R97 +L54 +R57 +R97 +R249 +R73 +R81 +R83 +R17 +R81 +L81 +R12 +L632 +L59 +R51 +R85 +R40 +R387 +R816 +L48 +R548 +L93 +R88 +L75 +L78 +L42 +R88 +R12 +L532 +L68 +R99 +L38 +R6 +R76 +L43 +L23 +R284 +R77 +L38 +R94 +R6 +L265 +R24 +R36 +L33 +L1 +R199 +R68 +L28 +R55 +R45 +L10 +L94 +R9 +L609 +L13 +L43 +L140 +R57 +R43 +L29 +L171 +L34 +L19 +R78 +L42 +L9 +L74 +L37 +R117 +R46 +L26 +R262 +R61 +R77 +L35 +L65 +L92 +L8 +R88 +L77 +L11 +L65 +L35 +L39 +R39 +L4 +R33 +L83 +L39 +R19 +L32 +L655 +R748 +L196 +R9 +R82 +L131 +R49 +R12 +R88 +R15 +L2 +R41 +L54 +R48 +L18 +R34 +R525 +L89 +R93 +R50 +L43 +L30 +L47 +R677 +R91 +R9 +L5 +L895 +R29 +L29 +R81 +R31 +R88 +L11 +R60 +R51 +L17 +R82 +L65 +R34 +R26 +L9 +L51 +R20 +R37 +L22 +R965 +L14 +L29 +R2 +L3 +L156 +R15 +L15 +R85 +L99 +R36 +R22 +L5 +R14 +L682 +R729 +R12 +R3 +R85 +R125 +L31 +R73 +R78 +R53 +L50 +L48 +R3 +R23 +L51 +R13 +L388 +R33 +R73 +R94 +L95 +R99 +R73 +R862 +L5 +R240 +L70 +R496 +R84 +R66 +R21 +R29 +R39 +L39 +R693 +L35 +R42 +R46 +L47 +R83 +R492 +L91 +R52 +L86 +R87 +L936 +R97 +L49 +R52 +R53 +R55 +L56 +L3 +L49 +R23 +L23 +R64 +L29 +R88 +R20 +R5 +R352 +L69 +L31 +L94 +R78 +L97 +R13 +R91 +R5 +L84 +L851 +R50 +R37 +R621 +R31 +L62 +L92 +R54 +L488 +L570 +R58 +L52 +R27 +R88 +L62 +R52 +L53 +L31 +L55 +R27 +R59 +R927 +L127 +R93 +L36 +R43 +R438 +R62 +R95 +R72 +L63 +R44 +R69 +R672 +R11 +R12 +L31 +L93 +R12 +R91 +L50 +L50 +R209 +R49 +R981 +L30 +R59 +R58 +L3 +L514 +R4 +L804 +R39 +R61 +L72 +R95 +L19 +L57 +L447 +R35 +L35 +R26 +L51 +R64 +L39 +R106 +R44 +L139 +R59 +R88 +R56 +L14 +L32 +L49 +L69 +R50 +R66 +L28 +R43 +R18 +L899 +R379 +L79 +R19 +L19 +R984 +L84 +R508 +R92 +R93 +R85 +L95 +L55 +R33 +R39 +R73 +R37 +R5 +L59 +R586 +R469 +R89 +L79 +L68 +R95 +R22 +L470 +R45 +R86 +L2 +L56 +L73 +L17 +L83 +L30 +L70 +R56 +R344 +L67 +L11 +R95 +L54 +R796 +L59 +L14 +L86 +R14 +R486 +R22 +R34 +R48 +R735 +L39 +L91 +L9 +L24 +L28 +L96 +L918 +L34 +L60 +R33 +R27 +R40 +L40 +L34 +R391 +R26 +L99 +L95 +R11 +L64 +L21 +R10 +L25 +L113 +L87 +L75 +R946 +L95 +L76 +L32 +R6 +R61 +R6 +L91 +L50 +R971 +L71 +R8 +L27 +L60 +R79 +R75 +L675 +L59 +R58 +R62 +R68 +R71 +L758 +L342 +R637 +L37 +L69 +R397 +R32 +R40 +L77 +R48 +R62 +R34 +L67 +R569 +L406 +L34 +L58 +R29 +L39 +L355 +L91 +R27 +R99 +L56 +L58 +L47 +R63 +R57 +R93 +R37 +L61 +L69 +R92 +R8 +R26 +R55 +L33 +R10 +R642 +L13 +R11 +L398 +L86 +R86 +R98 +L62 +R164 +L49 +L358 +R7 +L8 +L392 +R222 +R39 +R39 +L94 +L96 +L11 +L46 +L89 +R71 +R51 +R14 +L79 +R94 +R17 +R68 +L29 +L13 +R17 +L27 +R67 +L75 +R48 +R1 +L12 +L4 +R38 +R201 +L38 +R96 +R30 +L98 +L594 +R92 +L81 +R790 +R90 +R879 +L9 +L58 +R95 +R494 +L85 +L15 +R14 +R86 +R53 +R47 +L17 +R13 +L72 +L24 +L30 +L469 +L1 +L71 +R54 +R17 +L435 +L725 +L40 +R69 +L69 +L84 +R72 +R96 +L60 +L12 +L12 +L37 +L14 +L69 +L388 +L92 +L457 +R551 +R906 +R13 +L69 +L95 +L362 +R13 +R339 +L23 +L316 +L38 +L362 +R46 +R165 +L33 +L78 +L73 +L88 +R932 +R72 +L3 +R92 +R29 +L85 +R25 +L1 +L81 +R81 +R10 +R90 +L69 +L30 +L301 +R48 +R49 +L228 +L59 +L30 +R20 +L47 +R41 +R6 +R45 +L345 +R23 +R75 +R2 +R679 +R21 +L59 +R8 +R19 +R33 +R96 +R3 +L10 +R10 +L5 +R20 +R64 +R41 +R9 +L29 +L49 +R49 +L58 +L6 +L36 +R14 +L245 +L69 +R46 +L46 +R16 +L16 +R58 +L17 +L838 +R97 +L7 +L88 +R95 +R76 +L76 +L5 +L35 +L60 +R765 +L84 +R182 +L82 +R28 +R76 +L3 +L9 +L73 +L94 +L84 +L42 +L78 +R98 +L831 +L69 +L17 +R878 +R77 +L38 +R476 +R49 +L29 +R4 +L13 +R73 +L91 +L269 +L663 +R91 +L30 +L89 +R58 +L71 +L596 +R211 +R76 +R13 +R93 +R913 +L158 +L7 +R59 +R54 +R30 +R7 +L22 +L210 +L5 +R36 +L90 +L412 +L55 +L69 +R36 +L75 +L67 +R483 +L72 +R31 +R56 +R44 +R88 +L78 +R28 +R62 +R395 +R66 +L983 +L22 +R44 +L46 +R73 +L63 +R55 +L19 +L15 +L99 +R64 +R56 +R94 +L5 +R5 +L32 +L968 +L786 +L14 +R38 +R762 +R98 +R84 +L38 +R79 +R74 +R2 +L84 +R35 +R278 +L41 +L781 +L99 +L84 +R67 +L90 +L86 +L914 +L361 +R61 +L77 +L72 +L99 +L52 +R186 +R45 +L10 +R486 +L307 +R79 +R821 +L23 +R23 +R660 +L60 +R77 +R623 +L71 +L53 +L65 +L11 +L11 +L89 +R84 +L383 +R718 +L94 +R41 +L46 +R11 +R84 +R85 +L88 +R88 +R35 +R65 +L14 +L86 +L34 +L303 +L63 +L27 +R78 +L46 +R63 +R24 +L99 +R96 +L89 +R10 +L83 +R15 +R23 +R35 +R51 +R65 +R451 +R26 +L549 +R70 +L766 +L48 +L58 +R58 +R284 +L984 +L83 +L22 +R81 +L476 +L14 +L86 +R27 +R473 +L242 +L850 +R23 +L49 +R45 +R9 +L336 +R88 +R71 +L259 +L96 +L42 +R71 +R67 +R28 +L428 +L526 +L74 +R11 +L111 +L52 +R55 +L78 +R275 +L39 +L61 +R94 +R46 +R110 +R375 +L25 +R88 +R12 +L89 +L35 +R70 +R54 +R33 +R53 +L93 +L93 +R35 +L35 +R36 +R64 +R31 +R78 +R72 +L81 +R14 +R28 +L382 +R931 +R77 +R970 +R6 +R29 +R18 +R9 +L21 +R21 +L5 +L59 +R164 +L15 +L23 +L10 +R20 +R28 +R22 +R973 +L13 +L82 +L91 +L68 +R3 +L840 +R719 +R19 +R58 +R26 +L59 +R97 +L88 +R77 +L287 +R34 +R24 +L34 +L42 +L87 +L1 +L57 +L93 +R65 +L75 +L4 +L596 +L2 +L16 +R18 +R52 +R78 +L30 +L47 +L453 +R10 +L510 +L56 +R77 +L15 +L89 +L17 +R818 +R36 +L40 +R66 +L36 +R456 +L63 +R63 +L21 +R87 +R75 +R59 +L38 +R609 +L437 +L41 +L95 +R963 +L756 +L5 +L142 +L58 +R18 +R82 +R510 +R33 +R45 +L88 +R92 +L692 +L62 +L438 +R25 +L25 +L12 +R12 +L31 +R25 +R806 +L676 +R76 +L4 +L696 +R575 +R72 +R11 +L58 +L82 +R7 +R75 +L2 +R2 +R95 +R5 +L70 +L5 +R44 +L58 +R489 +L57 +L941 +R98 +L138 +R138 +R122 +L40 +L82 +L37 +L33 +R76 +L6 +L36 +R836 +R62 +R938 +L62 +R62 +L58 +L142 +R263 +L63 +R25 +R75 +L18 +R18 +R1 +L1 +L4 +L33 +R37 +R730 +L324 +R356 +R38 +R532 +L29 +L62 +R59 +L657 +L16 +L79 +R51 +L99 +R23 +L423 +R4 +R75 +R54 +L78 +R45 +R762 +L62 +R363 +R237 +R12 +L12 +R25 +R51 +L29 +L16 +L39 +R84 +R29 +R88 +R7 +R802 +L53 +R77 +L74 +R34 +R14 +R78 +R86 +R74 +R6 +L44 +L663 +L7 +L51 +L73 +R78 +L71 +R280 +R34 +L40 +L87 +L36 +L643 +R31 +R25 +R147 +R176 +R12 +R88 +L9 +R96 +R313 +R87 +R13 +R41 +L41 +R26 +R59 +L37 +L837 +R89 +L77 +L73 +L59 +R209 +L437 +R19 +L682 +R12 +L97 +L15 +R67 +L67 +L586 +R86 +L76 +R73 +L197 +R286 +R414 +R264 +L578 +R69 +R45 +L37 +R56 +R975 +L31 +R337 +R61 +R39 +L46 +L50 +L504 +R62 +L96 +L10 +L88 +L316 +L52 +L80 +L59 +L8 +R69 +R78 +L24 +R24 +L56 +R56 +L44 +R99 +R50 +R67 +L222 +R27 +L195 +L69 +R887 +L66 +L706 +R72 +R355 +R17 +R27 +R1 +L37 +L763 +L44 +R94 +L547 +R497 +R83 +L19 +R36 +R335 +R80 +L72 +R3 +L632 +L39 +R86 +R63 +R37 +L61 +L7 +L93 +R76 +R70 +L68 +R23 +R24 +R121 +R54 +R94 +L94 +R959 +R41 +L388 +R25 +L19 +R863 +R159 +R40 +L80 +L821 +R10 +L89 +L474 +L87 +R82 +R75 +L53 +L43 +L19 +L89 +L95 +L97 +R946 +R49 +R5 +L75 +R374 +R1 +R30 +L30 +R15 +L15 +R11 +L811 +L84 +L74 +R41 +L83 +L20 +L80 +R668 +R63 +L28 +R97 +L73 +R73 +R43 +L56 +R51 +R57 +R12 +R6 +R51 +R36 +R63 +L37 +L94 +L32 +R22 +L22 +R46 +L63 +R78 +R79 +R60 +R96 +R633 +L342 +R20 +L48 +R5 +R752 +R84 +L10 +L90 +R87 +R357 +R67 +R47 +L358 +L17 +R9 +L92 +R19 +R59 +L40 +R462 +L88 +L97 +L41 +L972 +R198 +L89 +R73 +R16 +L36 +R36 +R796 +R29 +L425 +R1 +R599 +R23 +R92 +R85 +L68 +R68 +R560 +L34 +L39 +L89 +L29 +R89 +L58 +L31 +L34 +R46 +R63 +R56 +L5 +R77 +L11 +R26 +R73 +L58 +R90 +L995 +L636 +L585 +R39 +L15 +R31 +L53 +R22 +R65 +R246 +R76 +R60 +L41 +R94 +R397 +L97 +R36 +L86 +R35 +R11 +L30 +R52 +L46 +L72 +R80 +L5 +L620 +R53 +R692 +R16 +L82 +L66 +R39 +R955 +R70 +R5 +L5 +L49 +R1 +L12 +R269 +R7 +L948 +L527 +R78 +R49 +L434 +L66 +L58 +L61 +R38 +R81 +R817 +R42 +L15 +R40 +L153 +L157 +R24 +R33 +R18 +R14 +R35 +R66 +R41 +L5 +R20 +L756 +R268 +L91 +L214 +L29 +R792 +L12 +R80 +R29 +R48 +L59 +R547 +R77 +L28 +R831 +L97 +L6 +R10 +R90 +R69 +L69 +R26 +L26 +R78 +R241 +L19 +R65 +R57 +R96 +R90 +R9 +R227 +R36 +L73 +L7 +L76 +L6 +L78 +R60 +L399 +R599 +R631 +L31 +R75 +L125 +L25 +L25 +R26 +L961 +R36 +R99 +R287 +R43 +R70 +R63 +L663 +L59 +L975 +R18 +R16 +L78 +R78 +R14 +L472 +R458 +R86 +L74 +L77 +R265 +L77 +R82 +L5 +R79 +R21 +R31 +R17 +R38 +R579 +L90 +R25 +L346 +L94 +L60 +L72 +L787 +R24 +L596 +R871 +L34 +R730 +R764 +R80 +L732 +L548 +L59 +R17 +R42 +R3 +L87 +R584 +L71 +R71 +L29 +R29 +L71 +R20 +R51 +L1 +R43 +R38 +L396 +L53 +R13 +R907 +L28 +L23 +R17 +R95 +R50 +L50 +R88 +R95 +L33 +R62 +R34 +L58 +L40 +R470 +L930 +L3 +L97 +L20 +L28 +L45 +L87 +R34 +L210 +L244 +R86 +L430 +R44 +L9 +R70 +L61 +R615 +R68 +R21 +R296 +R85 +R78 +L63 +R25 +R61 +R11 +L97 +L79 +L70 +L51 +L34 +L35 +R89 +L20 +R83 +R83 +R34 +L27 +R90 +R52 +R74 +L30 +R611 +L470 +L474 +L26 +R81 +L5 +L76 +R57 +R43 +L51 +R51 +L315 +R91 +L11 +R35 +L12 +R57 +L59 +R210 +L296 +R970 +L87 +R73 +L56 +L37 +R27 +L90 +L24 +R724 +R94 +R903 +L81 +L9 +L83 +R76 +L289 +L44 +L35 +L84 +R48 +R304 +L853 +R68 +R85 +R67 +R62 +R59 +L45 +L24 +L99 +R80 +L50 +L333 +L17 +L20 +L880 +R23 +R53 +L91 +R46 +R150 +L93 +L40 +L126 +L982 +R60 +R87 +L87 +R73 +L73 +L42 +L58 +R23 +R77 +L35 +L276 +R14 +R70 +L73 +L80 +R68 +R205 +L47 +R112 +L58 +L20 +R93 +R67 +L436 +L707 +L28 +R80 +L146 +L66 +L57 +L52 +L84 +R10 +R546 +R76 +L276 +R14 +L49 +R7 +L68 +R96 +R51 +L29 +R78 +R83 +L40 +R17 +L29 +R30 +L2 +R91 +R78 +R22 +L429 +L61 +L64 +R295 +R886 +R81 +R8 +R57 +R77 +L50 +L50 +L143 +R43 +R75 +R92 +R33 +R691 +L498 +L93 +L77 +R77 +L26 +L10 +R1 +R435 +L39 +R39 +L55 +L842 +R75 +R15 +L45 +R3 +R696 +L847 +L96 +L6 +R2 +R85 +L926 +R26 +R15 +L641 +L59 +R97 +R71 +R71 +R69 +L8 +L141 +L559 +R64 +R409 +L96 +R85 +L62 +L644 +L99 +L57 +L567 +R67 +L38 +L95 +L77 +L22 +R32 +L50 +L71 +R895 +L89 +L85 +L28 +R28 +R3 +R73 +R7 +L83 +L50 +L450 +L14 +R35 +R64 +R46 +L656 +R4 +L37 +L41 +R447 +R69 +L17 +L50 +L43 +L86 +R787 +L77 +L31 +R758 +R161 +R863 +R31 +L96 +L17 +L6 +R6 +L50 +R35 +R28 +L9 +R39 +R63 +L99 +R97 +L77 +L927 +L10 +R26 +R84 +L83 +L794 +L38 +L85 +L86 +L14 +R319 +L77 +L9 +L89 +L944 +L49 +R62 +R389 +L16 +L80 +L93 +R87 +R454 +R81 +L78 +L257 +L23 +L77 +R9 +R79 +R28 +L16 +L79 +L53 +R32 +L55 +L488 +L57 +L25 +L30 +R12 +L22 +L35 +R90 +L90 +L145 +R27 +R594 +L76 +R85 +R15 +L85 +L48 +R33 +L94 +L39 +L67 +R52 +R48 +L31 +L41 +L28 +L32 +L722 +L48 +R802 +R77 +R43 +R614 +R70 +L78 +L87 +R61 +R78 +L78 +R52 +L41 +R940 +L635 +L16 +R787 +R24 +R66 +R811 +L428 +L54 +R94 +R37 +L95 +L62 +R86 +L66 +R407 +L2 +L4 +R42 +L243 +R790 +L90 +L9 +R9 +L58 +R77 +R67 +R52 +R62 +L85 +L86 +L78 +L914 +R36 +L80 +R53 +L946 +L26 +R26 +R59 +L90 +L47 +R35 +L29 +R72 +L599 +R99 +L52 +L48 +L726 +L32 +L386 +L79 +L77 +R61 +L49 +L68 +L64 +L56 +R38 +R58 +R79 +R92 +L49 +L42 +R23 +R91 +L814 +R24 +L25 +R19 +L65 +R44 +R67 +R36 +R846 +L146 +R81 +L97 +R16 +L18 +L82 +R10 +L10 +L55 +L18 +R22 +L380 +L627 +R58 +L923 +L77 +R94 +L94 +L7 +R97 +R98 +R12 +R70 +L90 +L80 +R42 +L37 +L5 +R450 +L57 +R562 +L55 +R66 +R73 +R22 +R84 +R55 +L43 +R43 +R80 +L1 +R94 +R37 +R90 +R42 +L42 +R61 +R71 +L50 +R18 +R48 +R77 +L62 +R37 +R49 +R50 +R51 +L42 +R92 +R73 +R27 +L57 +L89 +R57 +R89 +L83 +R93 +R90 +L3 +L97 +L32 +R32 +L3 +L40 +R36 +L89 +R91 +L8 +R13 +L45 +L48 +L11 +L15 +L46 +L17 +L47 +R40 +R89 +R49 +L88 +L12 +R20 +L31 +L50 +R2 +L10 +R13 +R36 +L49 +R39 +L20 +L9 +R41 +R31 +R36 +R48 +R46 +R4 +R45 +L22 +R13 +R34 +R11 +R11 +R39 +L5 +L17 +R41 +R41 +R38 +L42 +R11 +L32 +L31 +R9 +L7 +R43 +L23 +R5 +L15 +R30 +R11 +R31 +R29 +R25 +L33 +R31 +R30 +R30 +L21 +L11 diff --git a/src/holt59/aoc/inputs/holt59/2025/day2.txt b/src/holt59/aoc/inputs/holt59/2025/day2.txt new file mode 100644 index 0000000..853bfba --- /dev/null +++ b/src/holt59/aoc/inputs/holt59/2025/day2.txt @@ -0,0 +1 @@ +92916254-92945956,5454498003-5454580069,28-45,4615-7998,4747396917-4747534264,272993-389376,36290651-36423050,177-310,3246326-3418616,48-93,894714-949755,952007-1003147,3-16,632-1029,420-581,585519115-585673174,1041-1698,27443-39304,71589003-71823870,97-142,2790995-2837912,579556301-579617006,653443-674678,1515120817-1515176202,13504-20701,1896-3566,8359-13220,51924-98061,505196-638209,67070129-67263432,694648-751703,8892865662-8892912125 diff --git a/src/holt59/aoc/inputs/tests/2025/day1.txt b/src/holt59/aoc/inputs/tests/2025/day1.txt new file mode 100644 index 0000000..53287c7 --- /dev/null +++ b/src/holt59/aoc/inputs/tests/2025/day1.txt @@ -0,0 +1,10 @@ +L68 +L30 +R48 +L5 +R60 +L55 +L1 +L99 +R14 +L82 diff --git a/src/holt59/aoc/inputs/tests/2025/day2.txt b/src/holt59/aoc/inputs/tests/2025/day2.txt new file mode 100644 index 0000000..b5e6998 --- /dev/null +++ b/src/holt59/aoc/inputs/tests/2025/day2.txt @@ -0,0 +1,3 @@ +11-22,95-115,998-1012,1188511880-1188511890,222220-222224, +1698522-1698528,446443-446449,38593856-38593862,565653-565659, +824824821-824824827,2121212118-2121212124