Compare commits
139 Commits
master
...
dev/refact
Author | SHA1 | Date | |
---|---|---|---|
|
c69694da7e | ||
|
d7c5b1b658 | ||
|
1b4dd32898 | ||
|
cd96140378 | ||
|
377e501d34 | ||
|
d1f4f5bed0 | ||
|
03a950c485 | ||
|
22b1513271 | ||
|
1f5b21a13a | ||
|
8c707c00ba | ||
|
ae4f42517c | ||
|
17432f7ac6 | ||
|
664dcfe7ba | ||
|
a9bcf9ef8f | ||
|
1caf93b38b | ||
|
f9a3dee20b | ||
|
1a1ff0c64d | ||
|
d7621d09b5 | ||
|
b89d29e880 | ||
|
f1cd7e6c85 | ||
|
d16ee7f9ad | ||
0c46d3ed18 | |||
|
acb767184e | ||
|
cb0145baa2 | ||
|
a4ad0259a9 | ||
|
82452c0751 | ||
|
79cc208875 | ||
|
4dd2d5d9c9 | ||
|
def4305c1c | ||
|
3edaa249fc | ||
|
57fcb47fe9 | ||
|
cfa7718475 | ||
|
2d23e355b2 | ||
|
fab4899715 | ||
|
b6e20eefa3 | ||
|
872fd72dcd | ||
|
98f28e96f8 | ||
|
ed7aba80ad | ||
|
e507dad5e0 | ||
|
04172beb5a | ||
|
15ef67e757 | ||
|
cd0ada785c | ||
|
42bd8d6983 | ||
|
0567ab7440 | ||
|
7d2eb6b5ec | ||
|
3a9c7e728b | ||
|
d002e419c3 | ||
|
19d93e0c1d | ||
|
5c05ee5c85 | ||
|
103af21915 | ||
|
af2fbf2da1 | ||
|
c496ea25c9 | ||
|
5f8c74fd1c | ||
|
dda2be2505 | ||
|
12891194bb | ||
|
f15908876d | ||
|
5f5ebda674 | ||
|
5b30cc00d5 | ||
|
3a7f8e83dc | ||
|
ba5b01c594 | ||
|
d0970c090b | ||
|
8e90bf7002 | ||
9698dfcdac | |||
|
1a6ab1cc0e | ||
|
f5aabbee8f | ||
|
6c00341ab0 | ||
|
755e0bd4b3 | ||
|
a52d077a40 | ||
|
3fc0f94b1c | ||
|
8a0412f926 | ||
|
855efeb0aa | ||
|
f2a65e03e5 | ||
|
759f47bfab | ||
|
999207b007 | ||
|
d92e4744a4 | ||
|
8dbf0f101c | ||
|
b8d8df06d6 | ||
|
825ebea299 | ||
|
869cd4477f | ||
|
fd777627d6 | ||
|
98f605f30e | ||
|
d51fed283c | ||
|
e991cd8b04 | ||
|
10f67e6bfd | ||
|
f291b0aa3f | ||
|
0eb5b5a88f | ||
|
2ec0a3d5f9 | ||
|
0327a3f36a | ||
|
3732e70ef7 | ||
|
b0cc6b4a46 | ||
|
8c24b9f9e2 | ||
|
dca6f6a08f | ||
|
8d7a20f575 | ||
|
3934dfd152 | ||
|
b656e8929e | ||
|
c9c69f479b | ||
|
72ebcfff1f | ||
|
dd72bb3238 | ||
|
c1dd74c57d | ||
|
1bf2de62c7 | ||
|
df808bc98a | ||
|
f46e190e98 | ||
|
7f4a34b2d7 | ||
|
ddebd26db2 | ||
|
01300e23b2 | ||
|
b8e2faa8c9 | ||
|
ea5b757180 | ||
|
89a71c175f | ||
|
9ffb332dea | ||
|
8167ab34c7 | ||
|
100df02a09 | ||
|
15b987a590 | ||
|
b1578f5709 | ||
|
d80dbb6c7c | ||
|
b679c1f895 | ||
|
e9d5f9747b | ||
|
fe3aad7ddd | ||
|
7ac9981ae5 | ||
|
652756a341 | ||
|
c7ef505f1b | ||
|
c55f6ac8e1 | ||
|
726a6aecac | ||
|
291b188238 | ||
|
289e3b7d02 | ||
|
9820765e9c | ||
|
c6522de8a2 | ||
|
80465e5e53 | ||
|
af1428b5e1 | ||
|
fca283527d | ||
|
0d37458ec5 | ||
|
198927e4a3 | ||
|
4192c98bba | ||
|
7cb8317659 | ||
|
f46cb51c60 | ||
|
261a396ae7 | ||
|
4b3af377ab | ||
|
f697415ef2 | ||
|
ac2806b0fb | ||
|
c62b8abfd0 |
504
poetry.lock
generated
504
poetry.lock
generated
@ -1,15 +1,4 @@
|
||||
# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.
|
||||
|
||||
[[package]]
|
||||
name = "absl-py"
|
||||
version = "2.1.0"
|
||||
description = "Abseil Python Common Libraries, see https://github.com/abseil/abseil-py."
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
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"},
|
||||
]
|
||||
# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand.
|
||||
|
||||
[[package]]
|
||||
name = "appnope"
|
||||
@ -144,30 +133,6 @@ traitlets = ">=4"
|
||||
[package.extras]
|
||||
test = ["pytest"]
|
||||
|
||||
[[package]]
|
||||
name = "cplex"
|
||||
version = "22.1.1.2"
|
||||
description = "A Python interface to the CPLEX Callable Library, Community Edition."
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
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"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "debugpy"
|
||||
version = "1.8.9"
|
||||
@ -214,19 +179,6 @@ files = [
|
||||
{file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "docplex"
|
||||
version = "2.28.240"
|
||||
description = "The IBM Decision Optimization CPLEX Modeling for Python"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
files = [
|
||||
{file = "docplex-2.28.240.tar.gz", hash = "sha256:c0de407e33f8709bb4cd91b6efeb96fd88bfecbdce2caec51afb79253bde6ff5"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
six = "*"
|
||||
|
||||
[[package]]
|
||||
name = "exceptiongroup"
|
||||
version = "1.2.2"
|
||||
@ -255,50 +207,6 @@ files = [
|
||||
[package.extras]
|
||||
tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"]
|
||||
|
||||
[[package]]
|
||||
name = "imageio"
|
||||
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"
|
||||
files = [
|
||||
{file = "imageio-2.36.1-py3-none-any.whl", hash = "sha256:20abd2cae58e55ca1af8a8dcf43293336a59adf0391f1917bf8518633cfc2cdf"},
|
||||
{file = "imageio-2.36.1.tar.gz", hash = "sha256:e4e1d231f47f9a9e16100b0f7ce1a86e8856fb4d1c0fa2c4365a316f1746be62"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
numpy = "*"
|
||||
pillow = ">=8.3.2"
|
||||
|
||||
[package.extras]
|
||||
all-plugins = ["astropy", "av", "imageio-ffmpeg", "numpy (>2)", "pillow-heif", "psutil", "rawpy", "tifffile"]
|
||||
all-plugins-pypy = ["av", "imageio-ffmpeg", "pillow-heif", "psutil", "tifffile"]
|
||||
build = ["wheel"]
|
||||
dev = ["black", "flake8", "fsspec[github]", "pytest", "pytest-cov"]
|
||||
docs = ["numpydoc", "pydata-sphinx-theme", "sphinx (<6)"]
|
||||
ffmpeg = ["imageio-ffmpeg", "psutil"]
|
||||
fits = ["astropy"]
|
||||
full = ["astropy", "av", "black", "flake8", "fsspec[github]", "gdal", "imageio-ffmpeg", "itk", "numpy (>2)", "numpydoc", "pillow-heif", "psutil", "pydata-sphinx-theme", "pytest", "pytest-cov", "rawpy", "sphinx (<6)", "tifffile", "wheel"]
|
||||
gdal = ["gdal"]
|
||||
itk = ["itk"]
|
||||
linting = ["black", "flake8"]
|
||||
pillow-heif = ["pillow-heif"]
|
||||
pyav = ["av"]
|
||||
rawpy = ["numpy (>2)", "rawpy"]
|
||||
test = ["fsspec[github]", "pytest", "pytest-cov"]
|
||||
tifffile = ["tifffile"]
|
||||
|
||||
[[package]]
|
||||
name = "immutabledict"
|
||||
version = "4.2.1"
|
||||
description = "Immutable wrapper around dictionaries (a fork of frozendict)"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "immutabledict-4.2.1-py3-none-any.whl", hash = "sha256:c56a26ced38c236f79e74af3ccce53772827cef5c3bce7cab33ff2060f756373"},
|
||||
{file = "immutabledict-4.2.1.tar.gz", hash = "sha256:d91017248981c72eb66c8ff9834e99c2f53562346f23e7f51e7a5ebcf66a3bcc"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ipykernel"
|
||||
version = "6.29.5"
|
||||
@ -522,133 +430,68 @@ files = [
|
||||
|
||||
[[package]]
|
||||
name = "numpy"
|
||||
version = "2.2.0"
|
||||
version = "2.1.3"
|
||||
description = "Fundamental package for array computing in Python"
|
||||
optional = false
|
||||
python-versions = ">=3.10"
|
||||
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"},
|
||||
{file = "numpy-2.2.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:b606b1aaf802e6468c2608c65ff7ece53eae1a6874b3765f69b8ceb20c5fa78e"},
|
||||
{file = "numpy-2.2.0-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:36b2b43146f646642b425dd2027730f99bac962618ec2052932157e213a040e9"},
|
||||
{file = "numpy-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fe8f3583e0607ad4e43a954e35c1748b553bfe9fdac8635c02058023277d1b3"},
|
||||
{file = "numpy-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:122fd2fcfafdefc889c64ad99c228d5a1f9692c3a83f56c292618a59aa60ae83"},
|
||||
{file = "numpy-2.2.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3f2f5cddeaa4424a0a118924b988746db6ffa8565e5829b1841a8a3bd73eb59a"},
|
||||
{file = "numpy-2.2.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7fe4bb0695fe986a9e4deec3b6857003b4cfe5c5e4aac0b95f6a658c14635e31"},
|
||||
{file = "numpy-2.2.0-cp310-cp310-win32.whl", hash = "sha256:b30042fe92dbd79f1ba7f6898fada10bdaad1847c44f2dff9a16147e00a93661"},
|
||||
{file = "numpy-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:54dc1d6d66f8d37843ed281773c7174f03bf7ad826523f73435deb88ba60d2d4"},
|
||||
{file = "numpy-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9874bc2ff574c40ab7a5cbb7464bf9b045d617e36754a7bc93f933d52bd9ffc6"},
|
||||
{file = "numpy-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0da8495970f6b101ddd0c38ace92edea30e7e12b9a926b57f5fabb1ecc25bb90"},
|
||||
{file = "numpy-2.2.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0557eebc699c1c34cccdd8c3778c9294e8196df27d713706895edc6f57d29608"},
|
||||
{file = "numpy-2.2.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:3579eaeb5e07f3ded59298ce22b65f877a86ba8e9fe701f5576c99bb17c283da"},
|
||||
{file = "numpy-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40deb10198bbaa531509aad0cd2f9fadb26c8b94070831e2208e7df543562b74"},
|
||||
{file = "numpy-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2aed8fcf8abc3020d6a9ccb31dbc9e7d7819c56a348cc88fd44be269b37427e"},
|
||||
{file = "numpy-2.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a222d764352c773aa5ebde02dd84dba3279c81c6db2e482d62a3fa54e5ece69b"},
|
||||
{file = "numpy-2.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4e58666988605e251d42c2818c7d3d8991555381be26399303053b58a5bbf30d"},
|
||||
{file = "numpy-2.2.0-cp311-cp311-win32.whl", hash = "sha256:4723a50e1523e1de4fccd1b9a6dcea750c2102461e9a02b2ac55ffeae09a4410"},
|
||||
{file = "numpy-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:16757cf28621e43e252c560d25b15f18a2f11da94fea344bf26c599b9cf54b73"},
|
||||
{file = "numpy-2.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cff210198bb4cae3f3c100444c5eaa573a823f05c253e7188e1362a5555235b3"},
|
||||
{file = "numpy-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58b92a5828bd4d9aa0952492b7de803135038de47343b2aa3cc23f3b71a3dc4e"},
|
||||
{file = "numpy-2.2.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:ebe5e59545401fbb1b24da76f006ab19734ae71e703cdb4a8b347e84a0cece67"},
|
||||
{file = "numpy-2.2.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:e2b8cd48a9942ed3f85b95ca4105c45758438c7ed28fff1e4ce3e57c3b589d8e"},
|
||||
{file = "numpy-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57fcc997ffc0bef234b8875a54d4058afa92b0b0c4223fc1f62f24b3b5e86038"},
|
||||
{file = "numpy-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85ad7d11b309bd132d74397fcf2920933c9d1dc865487128f5c03d580f2c3d03"},
|
||||
{file = "numpy-2.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cb24cca1968b21355cc6f3da1a20cd1cebd8a023e3c5b09b432444617949085a"},
|
||||
{file = "numpy-2.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0798b138c291d792f8ea40fe3768610f3c7dd2574389e37c3f26573757c8f7ef"},
|
||||
{file = "numpy-2.2.0-cp312-cp312-win32.whl", hash = "sha256:afe8fb968743d40435c3827632fd36c5fbde633b0423da7692e426529b1759b1"},
|
||||
{file = "numpy-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:3a4199f519e57d517ebd48cb76b36c82da0360781c6a0353e64c0cac30ecaad3"},
|
||||
{file = "numpy-2.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f8c8b141ef9699ae777c6278b52c706b653bf15d135d302754f6b2e90eb30367"},
|
||||
{file = "numpy-2.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0f0986e917aca18f7a567b812ef7ca9391288e2acb7a4308aa9d265bd724bdae"},
|
||||
{file = "numpy-2.2.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:1c92113619f7b272838b8d6702a7f8ebe5edea0df48166c47929611d0b4dea69"},
|
||||
{file = "numpy-2.2.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5a145e956b374e72ad1dff82779177d4a3c62bc8248f41b80cb5122e68f22d13"},
|
||||
{file = "numpy-2.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18142b497d70a34b01642b9feabb70156311b326fdddd875a9981f34a369b671"},
|
||||
{file = "numpy-2.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7d41d1612c1a82b64697e894b75db6758d4f21c3ec069d841e60ebe54b5b571"},
|
||||
{file = "numpy-2.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a98f6f20465e7618c83252c02041517bd2f7ea29be5378f09667a8f654a5918d"},
|
||||
{file = "numpy-2.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e09d40edfdb4e260cb1567d8ae770ccf3b8b7e9f0d9b5c2a9992696b30ce2742"},
|
||||
{file = "numpy-2.2.0-cp313-cp313-win32.whl", hash = "sha256:3905a5fffcc23e597ee4d9fb3fcd209bd658c352657548db7316e810ca80458e"},
|
||||
{file = "numpy-2.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:a184288538e6ad699cbe6b24859206e38ce5fba28f3bcfa51c90d0502c1582b2"},
|
||||
{file = "numpy-2.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7832f9e8eb00be32f15fdfb9a981d6955ea9adc8574c521d48710171b6c55e95"},
|
||||
{file = "numpy-2.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f0dd071b95bbca244f4cb7f70b77d2ff3aaaba7fa16dc41f58d14854a6204e6c"},
|
||||
{file = "numpy-2.2.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:b0b227dcff8cdc3efbce66d4e50891f04d0a387cce282fe1e66199146a6a8fca"},
|
||||
{file = "numpy-2.2.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6ab153263a7c5ccaf6dfe7e53447b74f77789f28ecb278c3b5d49db7ece10d6d"},
|
||||
{file = "numpy-2.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e500aba968a48e9019e42c0c199b7ec0696a97fa69037bea163b55398e390529"},
|
||||
{file = "numpy-2.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:440cfb3db4c5029775803794f8638fbdbf71ec702caf32735f53b008e1eaece3"},
|
||||
{file = "numpy-2.2.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a55dc7a7f0b6198b07ec0cd445fbb98b05234e8b00c5ac4874a63372ba98d4ab"},
|
||||
{file = "numpy-2.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4bddbaa30d78c86329b26bd6aaaea06b1e47444da99eddac7bf1e2fab717bd72"},
|
||||
{file = "numpy-2.2.0-cp313-cp313t-win32.whl", hash = "sha256:30bf971c12e4365153afb31fc73f441d4da157153f3400b82db32d04de1e4066"},
|
||||
{file = "numpy-2.2.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d35717333b39d1b6bb8433fa758a55f1081543de527171543a2b710551d40881"},
|
||||
{file = "numpy-2.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e12c6c1ce84628c52d6367863773f7c8c8241be554e8b79686e91a43f1733773"},
|
||||
{file = "numpy-2.2.0-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:b6207dc8fb3c8cb5668e885cef9ec7f70189bec4e276f0ff70d5aa078d32c88e"},
|
||||
{file = "numpy-2.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a50aeff71d0f97b6450d33940c7181b08be1441c6c193e678211bff11aa725e7"},
|
||||
{file = "numpy-2.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:df12a1f99b99f569a7c2ae59aa2d31724e8d835fc7f33e14f4792e3071d11221"},
|
||||
{file = "numpy-2.2.0.tar.gz", hash = "sha256:140dd80ff8981a583a60980be1a655068f8adebf7a45a06a6858c873fcdcd4a0"},
|
||||
{file = "numpy-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c894b4305373b9c5576d7a12b473702afdf48ce5369c074ba304cc5ad8730dff"},
|
||||
{file = "numpy-2.1.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b47fbb433d3260adcd51eb54f92a2ffbc90a4595f8970ee00e064c644ac788f5"},
|
||||
{file = "numpy-2.1.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:825656d0743699c529c5943554d223c021ff0494ff1442152ce887ef4f7561a1"},
|
||||
{file = "numpy-2.1.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:6a4825252fcc430a182ac4dee5a505053d262c807f8a924603d411f6718b88fd"},
|
||||
{file = "numpy-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e711e02f49e176a01d0349d82cb5f05ba4db7d5e7e0defd026328e5cfb3226d3"},
|
||||
{file = "numpy-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78574ac2d1a4a02421f25da9559850d59457bac82f2b8d7a44fe83a64f770098"},
|
||||
{file = "numpy-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c7662f0e3673fe4e832fe07b65c50342ea27d989f92c80355658c7f888fcc83c"},
|
||||
{file = "numpy-2.1.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fa2d1337dc61c8dc417fbccf20f6d1e139896a30721b7f1e832b2bb6ef4eb6c4"},
|
||||
{file = "numpy-2.1.3-cp310-cp310-win32.whl", hash = "sha256:72dcc4a35a8515d83e76b58fdf8113a5c969ccd505c8a946759b24e3182d1f23"},
|
||||
{file = "numpy-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:ecc76a9ba2911d8d37ac01de72834d8849e55473457558e12995f4cd53e778e0"},
|
||||
{file = "numpy-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4d1167c53b93f1f5d8a139a742b3c6f4d429b54e74e6b57d0eff40045187b15d"},
|
||||
{file = "numpy-2.1.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c80e4a09b3d95b4e1cac08643f1152fa71a0a821a2d4277334c88d54b2219a41"},
|
||||
{file = "numpy-2.1.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:576a1c1d25e9e02ed7fa5477f30a127fe56debd53b8d2c89d5578f9857d03ca9"},
|
||||
{file = "numpy-2.1.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:973faafebaae4c0aaa1a1ca1ce02434554d67e628b8d805e61f874b84e136b09"},
|
||||
{file = "numpy-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:762479be47a4863e261a840e8e01608d124ee1361e48b96916f38b119cfda04a"},
|
||||
{file = "numpy-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc6f24b3d1ecc1eebfbf5d6051faa49af40b03be1aaa781ebdadcbc090b4539b"},
|
||||
{file = "numpy-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:17ee83a1f4fef3c94d16dc1802b998668b5419362c8a4f4e8a491de1b41cc3ee"},
|
||||
{file = "numpy-2.1.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:15cb89f39fa6d0bdfb600ea24b250e5f1a3df23f901f51c8debaa6a5d122b2f0"},
|
||||
{file = "numpy-2.1.3-cp311-cp311-win32.whl", hash = "sha256:d9beb777a78c331580705326d2367488d5bc473b49a9bc3036c154832520aca9"},
|
||||
{file = "numpy-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:d89dd2b6da69c4fff5e39c28a382199ddedc3a5be5390115608345dec660b9e2"},
|
||||
{file = "numpy-2.1.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f55ba01150f52b1027829b50d70ef1dafd9821ea82905b63936668403c3b471e"},
|
||||
{file = "numpy-2.1.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:13138eadd4f4da03074851a698ffa7e405f41a0845a6b1ad135b81596e4e9958"},
|
||||
{file = "numpy-2.1.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a6b46587b14b888e95e4a24d7b13ae91fa22386c199ee7b418f449032b2fa3b8"},
|
||||
{file = "numpy-2.1.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:0fa14563cc46422e99daef53d725d0c326e99e468a9320a240affffe87852564"},
|
||||
{file = "numpy-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8637dcd2caa676e475503d1f8fdb327bc495554e10838019651b76d17b98e512"},
|
||||
{file = "numpy-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2312b2aa89e1f43ecea6da6ea9a810d06aae08321609d8dc0d0eda6d946a541b"},
|
||||
{file = "numpy-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a38c19106902bb19351b83802531fea19dee18e5b37b36454f27f11ff956f7fc"},
|
||||
{file = "numpy-2.1.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:02135ade8b8a84011cbb67dc44e07c58f28575cf9ecf8ab304e51c05528c19f0"},
|
||||
{file = "numpy-2.1.3-cp312-cp312-win32.whl", hash = "sha256:e6988e90fcf617da2b5c78902fe8e668361b43b4fe26dbf2d7b0f8034d4cafb9"},
|
||||
{file = "numpy-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:0d30c543f02e84e92c4b1f415b7c6b5326cbe45ee7882b6b77db7195fb971e3a"},
|
||||
{file = "numpy-2.1.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96fe52fcdb9345b7cd82ecd34547fca4321f7656d500eca497eb7ea5a926692f"},
|
||||
{file = "numpy-2.1.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f653490b33e9c3a4c1c01d41bc2aef08f9475af51146e4a7710c450cf9761598"},
|
||||
{file = "numpy-2.1.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:dc258a761a16daa791081d026f0ed4399b582712e6fc887a95af09df10c5ca57"},
|
||||
{file = "numpy-2.1.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:016d0f6f5e77b0f0d45d77387ffa4bb89816b57c835580c3ce8e099ef830befe"},
|
||||
{file = "numpy-2.1.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c181ba05ce8299c7aa3125c27b9c2167bca4a4445b7ce73d5febc411ca692e43"},
|
||||
{file = "numpy-2.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5641516794ca9e5f8a4d17bb45446998c6554704d888f86df9b200e66bdcce56"},
|
||||
{file = "numpy-2.1.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ea4dedd6e394a9c180b33c2c872b92f7ce0f8e7ad93e9585312b0c5a04777a4a"},
|
||||
{file = "numpy-2.1.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b0df3635b9c8ef48bd3be5f862cf71b0a4716fa0e702155c45067c6b711ddcef"},
|
||||
{file = "numpy-2.1.3-cp313-cp313-win32.whl", hash = "sha256:50ca6aba6e163363f132b5c101ba078b8cbd3fa92c7865fd7d4d62d9779ac29f"},
|
||||
{file = "numpy-2.1.3-cp313-cp313-win_amd64.whl", hash = "sha256:747641635d3d44bcb380d950679462fae44f54b131be347d5ec2bce47d3df9ed"},
|
||||
{file = "numpy-2.1.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:996bb9399059c5b82f76b53ff8bb686069c05acc94656bb259b1d63d04a9506f"},
|
||||
{file = "numpy-2.1.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:45966d859916ad02b779706bb43b954281db43e185015df6eb3323120188f9e4"},
|
||||
{file = "numpy-2.1.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:baed7e8d7481bfe0874b566850cb0b85243e982388b7b23348c6db2ee2b2ae8e"},
|
||||
{file = "numpy-2.1.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:a9f7f672a3388133335589cfca93ed468509cb7b93ba3105fce780d04a6576a0"},
|
||||
{file = "numpy-2.1.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7aac50327da5d208db2eec22eb11e491e3fe13d22653dce51b0f4109101b408"},
|
||||
{file = "numpy-2.1.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4394bc0dbd074b7f9b52024832d16e019decebf86caf909d94f6b3f77a8ee3b6"},
|
||||
{file = "numpy-2.1.3-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:50d18c4358a0a8a53f12a8ba9d772ab2d460321e6a93d6064fc22443d189853f"},
|
||||
{file = "numpy-2.1.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:14e253bd43fc6b37af4921b10f6add6925878a42a0c5fe83daee390bca80bc17"},
|
||||
{file = "numpy-2.1.3-cp313-cp313t-win32.whl", hash = "sha256:08788d27a5fd867a663f6fc753fd7c3ad7e92747efc73c53bca2f19f8bc06f48"},
|
||||
{file = "numpy-2.1.3-cp313-cp313t-win_amd64.whl", hash = "sha256:2564fbdf2b99b3f815f2107c1bbc93e2de8ee655a69c261363a1172a79a257d4"},
|
||||
{file = "numpy-2.1.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4f2015dfe437dfebbfce7c85c7b53d81ba49e71ba7eadbf1df40c915af75979f"},
|
||||
{file = "numpy-2.1.3-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:3522b0dfe983a575e6a9ab3a4a4dfe156c3e428468ff08ce582b9bb6bd1d71d4"},
|
||||
{file = "numpy-2.1.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c006b607a865b07cd981ccb218a04fc86b600411d83d6fc261357f1c0966755d"},
|
||||
{file = "numpy-2.1.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e14e26956e6f1696070788252dcdff11b4aca4c3e8bd166e0df1bb8f315a67cb"},
|
||||
{file = "numpy-2.1.3.tar.gz", hash = "sha256:aa08e04e08aaf974d4458def539dece0d28146d866a39da5639596f4921fd761"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "opencv-python"
|
||||
version = "4.10.0.84"
|
||||
description = "Wrapper package for OpenCV python bindings."
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
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"},
|
||||
{file = "opencv_python-4.10.0.84-cp37-abi3-macosx_12_0_x86_64.whl", hash = "sha256:71e575744f1d23f79741450254660442785f45a0797212852ee5199ef12eed98"},
|
||||
{file = "opencv_python-4.10.0.84-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09a332b50488e2dda866a6c5573ee192fe3583239fb26ff2f7f9ceb0bc119ea6"},
|
||||
{file = "opencv_python-4.10.0.84-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ace140fc6d647fbe1c692bcb2abce768973491222c067c131d80957c595b71f"},
|
||||
{file = "opencv_python-4.10.0.84-cp37-abi3-win32.whl", hash = "sha256:2db02bb7e50b703f0a2d50c50ced72e95c574e1e5a0bb35a8a86d0b35c98c236"},
|
||||
{file = "opencv_python-4.10.0.84-cp37-abi3-win_amd64.whl", hash = "sha256:32dbbd94c26f611dc5cc6979e6b7aa1f55a64d6b463cc1dcd3c95505a63e48fe"},
|
||||
]
|
||||
|
||||
[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\""},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ortools"
|
||||
version = "9.11.4210"
|
||||
description = "Google OR-Tools python libraries and modules"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
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"},
|
||||
{file = "ortools-9.11.4210-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c15cefc7bc71aa2f70bee157aaa7e51ed8cb74c3edd499d15b6f5cd79cdf5b"},
|
||||
{file = "ortools-9.11.4210-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c3693f0cb07ee0b5d36c4817bcfe05a745e3a613798a2ed62eb998d7fff979c"},
|
||||
{file = "ortools-9.11.4210-cp310-cp310-win_amd64.whl", hash = "sha256:6b9d4ae6c7e9efac7cbef8a6289e97e238c2f0a8ef587b3e56b71af14c2f04e6"},
|
||||
{file = "ortools-9.11.4210-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:0f902caa1576d737714f6a4fa165db62469bce82115e250409607197b3b6b434"},
|
||||
{file = "ortools-9.11.4210-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c6f3e2869396dc6d8ee2d11b65d6f88f6386bb3ad64212c0ad7a6d32ddcb48ca"},
|
||||
{file = "ortools-9.11.4210-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a56c5844ff927ce3c5428159cdd01b7fdbe243e8062bf1dfdb2e0eb305a55a30"},
|
||||
{file = "ortools-9.11.4210-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5a17a37aeaa7d149e2fe8c8dfd5f09630ae28ad734a109ad55536605f8059df"},
|
||||
{file = "ortools-9.11.4210-cp311-cp311-win_amd64.whl", hash = "sha256:d9b858f0273e19f81555428d54d407428d0a70a8cb5df2c320935bb735f2c6bb"},
|
||||
{file = "ortools-9.11.4210-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:079bea08c6341dcfe3fb9586eb6edec6ae80f4ed16ed366fd7a46ef4b5709009"},
|
||||
{file = "ortools-9.11.4210-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7f55124f9d1afa6434d0d6de07c6a4eb836f29b00b3413d27138634d5d79b606"},
|
||||
{file = "ortools-9.11.4210-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f48e3d4053a169440608d881c1abd2a706db885d9b0af85bf45b444a1fec244"},
|
||||
{file = "ortools-9.11.4210-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03ecd32e5d760d48e59832ef6bf724f8cac95e4e40db72a7fb912abf7adcf931"},
|
||||
{file = "ortools-9.11.4210-cp312-cp312-win_amd64.whl", hash = "sha256:bc1b6e4cc0a121ef888481a99194765e6df72d4d3da81f928543171a2bac8cbb"},
|
||||
{file = "ortools-9.11.4210-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:a503291dc12dc44da48567c5e1f79c77cd054fb86176f2c99d2860bc5a57e03d"},
|
||||
{file = "ortools-9.11.4210-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2fd0aa0b4edfb3088f086bc05d42a381cc3d03da4b8ad18ce18ba213ab2c719f"},
|
||||
{file = "ortools-9.11.4210-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c242738a49279c3a58b4611a64dd24634f1638f4dbb435163e3f9308e7c84c9"},
|
||||
{file = "ortools-9.11.4210-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db9186bbc7a30538f277e704e9e77ff52bc75aa2c17095a125b2dc212a75cf8e"},
|
||||
{file = "ortools-9.11.4210-cp38-cp38-win_amd64.whl", hash = "sha256:afcca4919e1095a79af0375276c5377a2d75794ebd592c4cc841d9979e0526e7"},
|
||||
{file = "ortools-9.11.4210-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:a2828e91960c4e4fcf27bc6e200e2cd61ce1c42d4a3b95481a842a58c8315345"},
|
||||
{file = "ortools-9.11.4210-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8d7d1a105f105502cf2f785816b09b796e5845fd47efac0dc0e3c0476b4c961a"},
|
||||
{file = "ortools-9.11.4210-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f250641d7b822be25237fb78aed0878b07e8afdefddb700bafcc52f32ad520a"},
|
||||
{file = "ortools-9.11.4210-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd2c0b319f4c0999360ab45a85d5764838c9dd0fd33437d12e32b2c07cbe04e4"},
|
||||
{file = "ortools-9.11.4210-cp39-cp39-win_amd64.whl", hash = "sha256:219ffa56e8e4f52561586cea3dd55eb0f5d174a84c83a819d71debad766338e3"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
absl-py = ">=2.0.0"
|
||||
immutabledict = ">=3.0.0"
|
||||
numpy = ">=1.13.3"
|
||||
pandas = ">=2.0.0"
|
||||
protobuf = ">=5.26.1,<5.27"
|
||||
|
||||
[[package]]
|
||||
name = "packaging"
|
||||
version = "24.2"
|
||||
@ -713,9 +556,9 @@ 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\""},
|
||||
{version = ">=1.23.2", markers = "python_version == \"3.11\""},
|
||||
{version = ">=1.26.0", markers = "python_version >= \"3.12\""},
|
||||
]
|
||||
python-dateutil = ">=2.8.2"
|
||||
pytz = ">=2020.1"
|
||||
@ -797,98 +640,6 @@ files = [
|
||||
[package.dependencies]
|
||||
ptyprocess = ">=0.5"
|
||||
|
||||
[[package]]
|
||||
name = "pillow"
|
||||
version = "11.0.0"
|
||||
description = "Python Imaging Library (Fork)"
|
||||
optional = false
|
||||
python-versions = ">=3.9"
|
||||
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"},
|
||||
{file = "pillow-11.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a65149d8ada1055029fcb665452b2814fe7d7082fcb0c5bed6db851cb69b2086"},
|
||||
{file = "pillow-11.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88a58d8ac0cc0e7f3a014509f0455248a76629ca9b604eca7dc5927cc593c5e9"},
|
||||
{file = "pillow-11.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:c26845094b1af3c91852745ae78e3ea47abf3dbcd1cf962f16b9a5fbe3ee8488"},
|
||||
{file = "pillow-11.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:1a61b54f87ab5786b8479f81c4b11f4d61702830354520837f8cc791ebba0f5f"},
|
||||
{file = "pillow-11.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:674629ff60030d144b7bca2b8330225a9b11c482ed408813924619c6f302fdbb"},
|
||||
{file = "pillow-11.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:598b4e238f13276e0008299bd2482003f48158e2b11826862b1eb2ad7c768b97"},
|
||||
{file = "pillow-11.0.0-cp310-cp310-win32.whl", hash = "sha256:9a0f748eaa434a41fccf8e1ee7a3eed68af1b690e75328fd7a60af123c193b50"},
|
||||
{file = "pillow-11.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:a5629742881bcbc1f42e840af185fd4d83a5edeb96475a575f4da50d6ede337c"},
|
||||
{file = "pillow-11.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:ee217c198f2e41f184f3869f3e485557296d505b5195c513b2bfe0062dc537f1"},
|
||||
{file = "pillow-11.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1c1d72714f429a521d8d2d018badc42414c3077eb187a59579f28e4270b4b0fc"},
|
||||
{file = "pillow-11.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:499c3a1b0d6fc8213519e193796eb1a86a1be4b1877d678b30f83fd979811d1a"},
|
||||
{file = "pillow-11.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8b2351c85d855293a299038e1f89db92a2f35e8d2f783489c6f0b2b5f3fe8a3"},
|
||||
{file = "pillow-11.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f4dba50cfa56f910241eb7f883c20f1e7b1d8f7d91c750cd0b318bad443f4d5"},
|
||||
{file = "pillow-11.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5ddbfd761ee00c12ee1be86c9c0683ecf5bb14c9772ddbd782085779a63dd55b"},
|
||||
{file = "pillow-11.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:45c566eb10b8967d71bf1ab8e4a525e5a93519e29ea071459ce517f6b903d7fa"},
|
||||
{file = "pillow-11.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b4fd7bd29610a83a8c9b564d457cf5bd92b4e11e79a4ee4716a63c959699b306"},
|
||||
{file = "pillow-11.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:cb929ca942d0ec4fac404cbf520ee6cac37bf35be479b970c4ffadf2b6a1cad9"},
|
||||
{file = "pillow-11.0.0-cp311-cp311-win32.whl", hash = "sha256:006bcdd307cc47ba43e924099a038cbf9591062e6c50e570819743f5607404f5"},
|
||||
{file = "pillow-11.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:52a2d8323a465f84faaba5236567d212c3668f2ab53e1c74c15583cf507a0291"},
|
||||
{file = "pillow-11.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:16095692a253047fe3ec028e951fa4221a1f3ed3d80c397e83541a3037ff67c9"},
|
||||
{file = "pillow-11.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2c0a187a92a1cb5ef2c8ed5412dd8d4334272617f532d4ad4de31e0495bd923"},
|
||||
{file = "pillow-11.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:084a07ef0821cfe4858fe86652fffac8e187b6ae677e9906e192aafcc1b69903"},
|
||||
{file = "pillow-11.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8069c5179902dcdce0be9bfc8235347fdbac249d23bd90514b7a47a72d9fecf4"},
|
||||
{file = "pillow-11.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f02541ef64077f22bf4924f225c0fd1248c168f86e4b7abdedd87d6ebaceab0f"},
|
||||
{file = "pillow-11.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:fcb4621042ac4b7865c179bb972ed0da0218a076dc1820ffc48b1d74c1e37fe9"},
|
||||
{file = "pillow-11.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:00177a63030d612148e659b55ba99527803288cea7c75fb05766ab7981a8c1b7"},
|
||||
{file = "pillow-11.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8853a3bf12afddfdf15f57c4b02d7ded92c7a75a5d7331d19f4f9572a89c17e6"},
|
||||
{file = "pillow-11.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3107c66e43bda25359d5ef446f59c497de2b5ed4c7fdba0894f8d6cf3822dafc"},
|
||||
{file = "pillow-11.0.0-cp312-cp312-win32.whl", hash = "sha256:86510e3f5eca0ab87429dd77fafc04693195eec7fd6a137c389c3eeb4cfb77c6"},
|
||||
{file = "pillow-11.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:8ec4a89295cd6cd4d1058a5e6aec6bf51e0eaaf9714774e1bfac7cfc9051db47"},
|
||||
{file = "pillow-11.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:27a7860107500d813fcd203b4ea19b04babe79448268403172782754870dac25"},
|
||||
{file = "pillow-11.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bcd1fb5bb7b07f64c15618c89efcc2cfa3e95f0e3bcdbaf4642509de1942a699"},
|
||||
{file = "pillow-11.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0e038b0745997c7dcaae350d35859c9715c71e92ffb7e0f4a8e8a16732150f38"},
|
||||
{file = "pillow-11.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ae08bd8ffc41aebf578c2af2f9d8749d91f448b3bfd41d7d9ff573d74f2a6b2"},
|
||||
{file = "pillow-11.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d69bfd8ec3219ae71bcde1f942b728903cad25fafe3100ba2258b973bd2bc1b2"},
|
||||
{file = "pillow-11.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:61b887f9ddba63ddf62fd02a3ba7add935d053b6dd7d58998c630e6dbade8527"},
|
||||
{file = "pillow-11.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:c6a660307ca9d4867caa8d9ca2c2658ab685de83792d1876274991adec7b93fa"},
|
||||
{file = "pillow-11.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:73e3a0200cdda995c7e43dd47436c1548f87a30bb27fb871f352a22ab8dcf45f"},
|
||||
{file = "pillow-11.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fba162b8872d30fea8c52b258a542c5dfd7b235fb5cb352240c8d63b414013eb"},
|
||||
{file = "pillow-11.0.0-cp313-cp313-win32.whl", hash = "sha256:f1b82c27e89fffc6da125d5eb0ca6e68017faf5efc078128cfaa42cf5cb38798"},
|
||||
{file = "pillow-11.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:8ba470552b48e5835f1d23ecb936bb7f71d206f9dfeee64245f30c3270b994de"},
|
||||
{file = "pillow-11.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:846e193e103b41e984ac921b335df59195356ce3f71dcfd155aa79c603873b84"},
|
||||
{file = "pillow-11.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4ad70c4214f67d7466bea6a08061eba35c01b1b89eaa098040a35272a8efb22b"},
|
||||
{file = "pillow-11.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:6ec0d5af64f2e3d64a165f490d96368bb5dea8b8f9ad04487f9ab60dc4bb6003"},
|
||||
{file = "pillow-11.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c809a70e43c7977c4a42aefd62f0131823ebf7dd73556fa5d5950f5b354087e2"},
|
||||
{file = "pillow-11.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:4b60c9520f7207aaf2e1d94de026682fc227806c6e1f55bba7606d1c94dd623a"},
|
||||
{file = "pillow-11.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1e2688958a840c822279fda0086fec1fdab2f95bf2b717b66871c4ad9859d7e8"},
|
||||
{file = "pillow-11.0.0-cp313-cp313t-win32.whl", hash = "sha256:607bbe123c74e272e381a8d1957083a9463401f7bd01287f50521ecb05a313f8"},
|
||||
{file = "pillow-11.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5c39ed17edea3bc69c743a8dd3e9853b7509625c2462532e62baa0732163a904"},
|
||||
{file = "pillow-11.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:75acbbeb05b86bc53cbe7b7e6fe00fbcf82ad7c684b3ad82e3d711da9ba287d3"},
|
||||
{file = "pillow-11.0.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2e46773dc9f35a1dd28bd6981332fd7f27bec001a918a72a79b4133cf5291dba"},
|
||||
{file = "pillow-11.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2679d2258b7f1192b378e2893a8a0a0ca472234d4c2c0e6bdd3380e8dfa21b6a"},
|
||||
{file = "pillow-11.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eda2616eb2313cbb3eebbe51f19362eb434b18e3bb599466a1ffa76a033fb916"},
|
||||
{file = "pillow-11.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ec184af98a121fb2da42642dea8a29ec80fc3efbaefb86d8fdd2606619045d"},
|
||||
{file = "pillow-11.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:8594f42df584e5b4bb9281799698403f7af489fba84c34d53d1c4bfb71b7c4e7"},
|
||||
{file = "pillow-11.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:c12b5ae868897c7338519c03049a806af85b9b8c237b7d675b8c5e089e4a618e"},
|
||||
{file = "pillow-11.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:70fbbdacd1d271b77b7721fe3cdd2d537bbbd75d29e6300c672ec6bb38d9672f"},
|
||||
{file = "pillow-11.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5178952973e588b3f1360868847334e9e3bf49d19e169bbbdfaf8398002419ae"},
|
||||
{file = "pillow-11.0.0-cp39-cp39-win32.whl", hash = "sha256:8c676b587da5673d3c75bd67dd2a8cdfeb282ca38a30f37950511766b26858c4"},
|
||||
{file = "pillow-11.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:94f3e1780abb45062287b4614a5bc0874519c86a777d4a7ad34978e86428b8dd"},
|
||||
{file = "pillow-11.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:290f2cc809f9da7d6d622550bbf4c1e57518212da51b6a30fe8e0a270a5b78bd"},
|
||||
{file = "pillow-11.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1187739620f2b365de756ce086fdb3604573337cc28a0d3ac4a01ab6b2d2a6d2"},
|
||||
{file = "pillow-11.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fbbcb7b57dc9c794843e3d1258c0fbf0f48656d46ffe9e09b63bbd6e8cd5d0a2"},
|
||||
{file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d203af30149ae339ad1b4f710d9844ed8796e97fda23ffbc4cc472968a47d0b"},
|
||||
{file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21a0d3b115009ebb8ac3d2ebec5c2982cc693da935f4ab7bb5c8ebe2f47d36f2"},
|
||||
{file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:73853108f56df97baf2bb8b522f3578221e56f646ba345a372c78326710d3830"},
|
||||
{file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e58876c91f97b0952eb766123bfef372792ab3f4e3e1f1a2267834c2ab131734"},
|
||||
{file = "pillow-11.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:224aaa38177597bb179f3ec87eeefcce8e4f85e608025e9cfac60de237ba6316"},
|
||||
{file = "pillow-11.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:5bd2d3bdb846d757055910f0a59792d33b555800813c3b39ada1829c372ccb06"},
|
||||
{file = "pillow-11.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:375b8dd15a1f5d2feafff536d47e22f69625c1aa92f12b339ec0b2ca40263273"},
|
||||
{file = "pillow-11.0.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:daffdf51ee5db69a82dd127eabecce20729e21f7a3680cf7cbb23f0829189790"},
|
||||
{file = "pillow-11.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7326a1787e3c7b0429659e0a944725e1b03eeaa10edd945a86dead1913383944"},
|
||||
{file = "pillow-11.0.0.tar.gz", hash = "sha256:72bacbaf24ac003fea9bff9837d1eedb6088758d41e100c1552930151f677739"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
docs = ["furo", "olefile", "sphinx (>=8.1)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"]
|
||||
fpx = ["olefile"]
|
||||
mic = ["olefile"]
|
||||
tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"]
|
||||
typing = ["typing-extensions"]
|
||||
xmp = ["defusedxml"]
|
||||
|
||||
[[package]]
|
||||
name = "platformdirs"
|
||||
version = "4.3.6"
|
||||
@ -938,26 +689,6 @@ files = [
|
||||
[package.dependencies]
|
||||
wcwidth = "*"
|
||||
|
||||
[[package]]
|
||||
name = "protobuf"
|
||||
version = "5.26.1"
|
||||
description = ""
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
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"},
|
||||
{file = "protobuf-5.26.1-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:38aa5f535721d5bb99861166c445c4105c4e285c765fbb2ac10f116e32dcd46d"},
|
||||
{file = "protobuf-5.26.1-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:fbfe61e7ee8c1860855696e3ac6cfd1b01af5498facc6834fcc345c9684fb2ca"},
|
||||
{file = "protobuf-5.26.1-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:f7417703f841167e5a27d48be13389d52ad705ec09eade63dfc3180a959215d7"},
|
||||
{file = "protobuf-5.26.1-cp38-cp38-win32.whl", hash = "sha256:d693d2504ca96750d92d9de8a103102dd648fda04540495535f0fec7577ed8fc"},
|
||||
{file = "protobuf-5.26.1-cp38-cp38-win_amd64.whl", hash = "sha256:9b557c317ebe6836835ec4ef74ec3e994ad0894ea424314ad3552bc6e8835b4e"},
|
||||
{file = "protobuf-5.26.1-cp39-cp39-win32.whl", hash = "sha256:b9ba3ca83c2e31219ffbeb9d76b63aad35a3eb1544170c55336993d7a18ae72c"},
|
||||
{file = "protobuf-5.26.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ee014c2c87582e101d6b54260af03b6596728505c79f17c8586e7523aaa8f8c"},
|
||||
{file = "protobuf-5.26.1-py3-none-any.whl", hash = "sha256:da612f2720c0183417194eeaa2523215c4fcc1a1949772dc65f05047e08d5932"},
|
||||
{file = "protobuf-5.26.1.tar.gz", hash = "sha256:8ca2a1d97c290ec7b16e4e5dff2e5ae150cc1582f55b5ab300d45cb0dfa90e51"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "psutil"
|
||||
version = "6.1.0"
|
||||
@ -1024,19 +755,6 @@ files = [
|
||||
{file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pygifsicle"
|
||||
version = "1.1.0"
|
||||
description = "Python package wrapping the gifsicle library for editing and optimizing gifs."
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
files = [
|
||||
{file = "pygifsicle-1.1.0.tar.gz", hash = "sha256:dcef433520ace4c1136dfc7060e77042142a3dbd6bdb6a19bd9149ef5cbe7441"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
test = ["pytest", "pytest-cov", "touch", "validate_version_code"]
|
||||
|
||||
[[package]]
|
||||
name = "pygments"
|
||||
version = "2.18.0"
|
||||
@ -1053,13 +771,13 @@ windows-terminal = ["colorama (>=0.4.6)"]
|
||||
|
||||
[[package]]
|
||||
name = "pyright"
|
||||
version = "1.1.390"
|
||||
version = "1.1.389"
|
||||
description = "Command line wrapper for pyright"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "pyright-1.1.390-py3-none-any.whl", hash = "sha256:ecebfba5b6b50af7c1a44c2ba144ba2ab542c227eb49bc1f16984ff714e0e110"},
|
||||
{file = "pyright-1.1.390.tar.gz", hash = "sha256:aad7f160c49e0fbf8209507a15e17b781f63a86a1facb69ca877c71ef2e9538d"},
|
||||
{file = "pyright-1.1.389-py3-none-any.whl", hash = "sha256:41e9620bba9254406dc1f621a88ceab5a88af4c826feb4f614d95691ed243a60"},
|
||||
{file = "pyright-1.1.389.tar.gz", hash = "sha256:716bf8cc174ab8b4dcf6828c3298cac05c5ed775dda9910106a5dcfe4c7fe220"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@ -1308,40 +1026,90 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""}
|
||||
|
||||
[[package]]
|
||||
name = "ruff"
|
||||
version = "0.8.3"
|
||||
version = "0.8.1"
|
||||
description = "An extremely fast Python linter and code formatter, written in Rust."
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
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"},
|
||||
{file = "ruff-0.8.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c356e770811858bd20832af696ff6c7e884701115094f427b64b25093d6d932d"},
|
||||
{file = "ruff-0.8.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c0a60a825e3e177116c84009d5ebaa90cf40dfab56e1358d1df4e29a9a14b13"},
|
||||
{file = "ruff-0.8.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:75fb782f4db39501210ac093c79c3de581d306624575eddd7e4e13747e61ba18"},
|
||||
{file = "ruff-0.8.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f26bc76a133ecb09a38b7868737eded6941b70a6d34ef53a4027e83913b6502"},
|
||||
{file = "ruff-0.8.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:01b14b2f72a37390c1b13477c1c02d53184f728be2f3ffc3ace5b44e9e87b90d"},
|
||||
{file = "ruff-0.8.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:53babd6e63e31f4e96ec95ea0d962298f9f0d9cc5990a1bbb023a6baf2503a82"},
|
||||
{file = "ruff-0.8.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ae441ce4cf925b7f363d33cd6570c51435972d697e3e58928973994e56e1452"},
|
||||
{file = "ruff-0.8.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7c65bc0cadce32255e93c57d57ecc2cca23149edd52714c0c5d6fa11ec328cd"},
|
||||
{file = "ruff-0.8.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:5be450bb18f23f0edc5a4e5585c17a56ba88920d598f04a06bd9fd76d324cb20"},
|
||||
{file = "ruff-0.8.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:8faeae3827eaa77f5721f09b9472a18c749139c891dbc17f45e72d8f2ca1f8fc"},
|
||||
{file = "ruff-0.8.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:db503486e1cf074b9808403991663e4277f5c664d3fe237ee0d994d1305bb060"},
|
||||
{file = "ruff-0.8.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:6567be9fb62fbd7a099209257fef4ad2c3153b60579818b31a23c886ed4147ea"},
|
||||
{file = "ruff-0.8.3-py3-none-win32.whl", hash = "sha256:19048f2f878f3ee4583fc6cb23fb636e48c2635e30fb2022b3a1cd293402f964"},
|
||||
{file = "ruff-0.8.3-py3-none-win_amd64.whl", hash = "sha256:f7df94f57d7418fa7c3ffb650757e0c2b96cf2501a0b192c18e4fb5571dfada9"},
|
||||
{file = "ruff-0.8.3-py3-none-win_arm64.whl", hash = "sha256:fe2756edf68ea79707c8d68b78ca9a58ed9af22e430430491ee03e718b5e4936"},
|
||||
{file = "ruff-0.8.3.tar.gz", hash = "sha256:5e7558304353b84279042fc584a4f4cb8a07ae79b2bf3da1a7551d960b5626d3"},
|
||||
{file = "ruff-0.8.1-py3-none-linux_armv6l.whl", hash = "sha256:fae0805bd514066f20309f6742f6ee7904a773eb9e6c17c45d6b1600ca65c9b5"},
|
||||
{file = "ruff-0.8.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b8a4f7385c2285c30f34b200ca5511fcc865f17578383db154e098150ce0a087"},
|
||||
{file = "ruff-0.8.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:cd054486da0c53e41e0086e1730eb77d1f698154f910e0cd9e0d64274979a209"},
|
||||
{file = "ruff-0.8.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2029b8c22da147c50ae577e621a5bfbc5d1fed75d86af53643d7a7aee1d23871"},
|
||||
{file = "ruff-0.8.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2666520828dee7dfc7e47ee4ea0d928f40de72056d929a7c5292d95071d881d1"},
|
||||
{file = "ruff-0.8.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:333c57013ef8c97a53892aa56042831c372e0bb1785ab7026187b7abd0135ad5"},
|
||||
{file = "ruff-0.8.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:288326162804f34088ac007139488dcb43de590a5ccfec3166396530b58fb89d"},
|
||||
{file = "ruff-0.8.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b12c39b9448632284561cbf4191aa1b005882acbc81900ffa9f9f471c8ff7e26"},
|
||||
{file = "ruff-0.8.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:364e6674450cbac8e998f7b30639040c99d81dfb5bbc6dfad69bc7a8f916b3d1"},
|
||||
{file = "ruff-0.8.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b22346f845fec132aa39cd29acb94451d030c10874408dbf776af3aaeb53284c"},
|
||||
{file = "ruff-0.8.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:b2f2f7a7e7648a2bfe6ead4e0a16745db956da0e3a231ad443d2a66a105c04fa"},
|
||||
{file = "ruff-0.8.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:adf314fc458374c25c5c4a4a9270c3e8a6a807b1bec018cfa2813d6546215540"},
|
||||
{file = "ruff-0.8.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a885d68342a231b5ba4d30b8c6e1b1ee3a65cf37e3d29b3c74069cdf1ee1e3c9"},
|
||||
{file = "ruff-0.8.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:d2c16e3508c8cc73e96aa5127d0df8913d2290098f776416a4b157657bee44c5"},
|
||||
{file = "ruff-0.8.1-py3-none-win32.whl", hash = "sha256:93335cd7c0eaedb44882d75a7acb7df4b77cd7cd0d2255c93b28791716e81790"},
|
||||
{file = "ruff-0.8.1-py3-none-win_amd64.whl", hash = "sha256:2954cdbe8dfd8ab359d4a30cd971b589d335a44d444b6ca2cb3d1da21b75e4b6"},
|
||||
{file = "ruff-0.8.1-py3-none-win_arm64.whl", hash = "sha256:55873cc1a473e5ac129d15eccb3c008c096b94809d693fc7053f588b67822737"},
|
||||
{file = "ruff-0.8.1.tar.gz", hash = "sha256:3583db9a6450364ed5ca3f3b4225958b24f78178908d5c4bc0f46251ccca898f"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "scipy"
|
||||
version = "1.14.1"
|
||||
description = "Fundamental algorithms for scientific computing in Python"
|
||||
optional = false
|
||||
python-versions = ">=3.10"
|
||||
files = [
|
||||
{file = "scipy-1.14.1-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:b28d2ca4add7ac16ae8bb6632a3c86e4b9e4d52d3e34267f6e1b0c1f8d87e389"},
|
||||
{file = "scipy-1.14.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:d0d2821003174de06b69e58cef2316a6622b60ee613121199cb2852a873f8cf3"},
|
||||
{file = "scipy-1.14.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:8bddf15838ba768bb5f5083c1ea012d64c9a444e16192762bd858f1e126196d0"},
|
||||
{file = "scipy-1.14.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:97c5dddd5932bd2a1a31c927ba5e1463a53b87ca96b5c9bdf5dfd6096e27efc3"},
|
||||
{file = "scipy-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ff0a7e01e422c15739ecd64432743cf7aae2b03f3084288f399affcefe5222d"},
|
||||
{file = "scipy-1.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e32dced201274bf96899e6491d9ba3e9a5f6b336708656466ad0522d8528f69"},
|
||||
{file = "scipy-1.14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8426251ad1e4ad903a4514712d2fa8fdd5382c978010d1c6f5f37ef286a713ad"},
|
||||
{file = "scipy-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:a49f6ed96f83966f576b33a44257d869756df6cf1ef4934f59dd58b25e0327e5"},
|
||||
{file = "scipy-1.14.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:2da0469a4ef0ecd3693761acbdc20f2fdeafb69e6819cc081308cc978153c675"},
|
||||
{file = "scipy-1.14.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:c0ee987efa6737242745f347835da2cc5bb9f1b42996a4d97d5c7ff7928cb6f2"},
|
||||
{file = "scipy-1.14.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3a1b111fac6baec1c1d92f27e76511c9e7218f1695d61b59e05e0fe04dc59617"},
|
||||
{file = "scipy-1.14.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:8475230e55549ab3f207bff11ebfc91c805dc3463ef62eda3ccf593254524ce8"},
|
||||
{file = "scipy-1.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:278266012eb69f4a720827bdd2dc54b2271c97d84255b2faaa8f161a158c3b37"},
|
||||
{file = "scipy-1.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fef8c87f8abfb884dac04e97824b61299880c43f4ce675dd2cbeadd3c9b466d2"},
|
||||
{file = "scipy-1.14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b05d43735bb2f07d689f56f7b474788a13ed8adc484a85aa65c0fd931cf9ccd2"},
|
||||
{file = "scipy-1.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:716e389b694c4bb564b4fc0c51bc84d381735e0d39d3f26ec1af2556ec6aad94"},
|
||||
{file = "scipy-1.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:631f07b3734d34aced009aaf6fedfd0eb3498a97e581c3b1e5f14a04164a456d"},
|
||||
{file = "scipy-1.14.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:af29a935803cc707ab2ed7791c44288a682f9c8107bc00f0eccc4f92c08d6e07"},
|
||||
{file = "scipy-1.14.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:2843f2d527d9eebec9a43e6b406fb7266f3af25a751aa91d62ff416f54170bc5"},
|
||||
{file = "scipy-1.14.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:eb58ca0abd96911932f688528977858681a59d61a7ce908ffd355957f7025cfc"},
|
||||
{file = "scipy-1.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30ac8812c1d2aab7131a79ba62933a2a76f582d5dbbc695192453dae67ad6310"},
|
||||
{file = "scipy-1.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f9ea80f2e65bdaa0b7627fb00cbeb2daf163caa015e59b7516395fe3bd1e066"},
|
||||
{file = "scipy-1.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:edaf02b82cd7639db00dbff629995ef185c8df4c3ffa71a5562a595765a06ce1"},
|
||||
{file = "scipy-1.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:2ff38e22128e6c03ff73b6bb0f85f897d2362f8c052e3b8ad00532198fbdae3f"},
|
||||
{file = "scipy-1.14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1729560c906963fc8389f6aac023739ff3983e727b1a4d87696b7bf108316a79"},
|
||||
{file = "scipy-1.14.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:4079b90df244709e675cdc8b93bfd8a395d59af40b72e339c2287c91860deb8e"},
|
||||
{file = "scipy-1.14.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e0cf28db0f24a38b2a0ca33a85a54852586e43cf6fd876365c86e0657cfe7d73"},
|
||||
{file = "scipy-1.14.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:0c2f95de3b04e26f5f3ad5bb05e74ba7f68b837133a4492414b3afd79dfe540e"},
|
||||
{file = "scipy-1.14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b99722ea48b7ea25e8e015e8341ae74624f72e5f21fc2abd45f3a93266de4c5d"},
|
||||
{file = "scipy-1.14.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5149e3fd2d686e42144a093b206aef01932a0059c2a33ddfa67f5f035bdfe13e"},
|
||||
{file = "scipy-1.14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e4f5a7c49323533f9103d4dacf4e4f07078f360743dec7f7596949149efeec06"},
|
||||
{file = "scipy-1.14.1-cp313-cp313-win_amd64.whl", hash = "sha256:baff393942b550823bfce952bb62270ee17504d02a1801d7fd0719534dfb9c84"},
|
||||
{file = "scipy-1.14.1.tar.gz", hash = "sha256:5a275584e726026a5699459aa72f828a610821006228e841b94275c4a7c08417"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
numpy = ">=1.23.5,<2.3"
|
||||
|
||||
[package.extras]
|
||||
dev = ["cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy (==1.10.0)", "pycodestyle", "pydevtool", "rich-click", "ruff (>=0.0.292)", "types-psutil", "typing_extensions"]
|
||||
doc = ["jupyterlite-pyodide-kernel", "jupyterlite-sphinx (>=0.13.1)", "jupytext", "matplotlib (>=3.5)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (>=0.15.2)", "sphinx (>=5.0.0,<=7.3.7)", "sphinx-design (>=0.4.0)"]
|
||||
test = ["Cython", "array-api-strict (>=2.0)", "asv", "gmpy2", "hypothesis (>=6.30)", "meson", "mpmath", "ninja", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"]
|
||||
|
||||
[[package]]
|
||||
name = "six"
|
||||
version = "1.17.0"
|
||||
version = "1.16.0"
|
||||
description = "Python 2 and 3 compatibility utilities"
|
||||
optional = false
|
||||
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
|
||||
files = [
|
||||
{file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"},
|
||||
{file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"},
|
||||
{file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
|
||||
{file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -1527,4 +1295,4 @@ files = [
|
||||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = "^3.10"
|
||||
content-hash = "5b57bccd8dc65a9acecbe187939bae625ef6a259f4188c6587907245bcfa604f"
|
||||
content-hash = "c91bc307ff4a5b3e8cd1976ebea211c9749fe09d563dd80861f70ce26826cda9"
|
||||
|
@ -12,12 +12,10 @@ python = "^3.10"
|
||||
numpy = "^2.1.3"
|
||||
tqdm = "^4.67.1"
|
||||
parse = "^1.20.2"
|
||||
scipy = "^1.14.1"
|
||||
sympy = "^1.13.3"
|
||||
networkx = "^3.4.2"
|
||||
pillow = "^11.0.0"
|
||||
imageio = "^2.36.1"
|
||||
pygifsicle = "^1.1.0"
|
||||
opencv-python = "^4.10.0.84"
|
||||
pandas = "^2.2.3"
|
||||
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
pyright = "^1.1.389"
|
||||
@ -27,13 +25,6 @@ ipykernel = "^6.29.5"
|
||||
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"
|
||||
|
||||
[tool.poetry.group.ortools.dependencies]
|
||||
ortools = "^9.11.4210"
|
||||
|
||||
[tool.poetry.scripts]
|
||||
holt59-aoc = "holt59.aoc.__main__:main"
|
||||
|
||||
|
@ -52,6 +52,7 @@ class Solver(BaseSolver):
|
||||
m2 += molecule[i]
|
||||
i += 1
|
||||
|
||||
# print(m2)
|
||||
molecule = m2
|
||||
|
||||
yield count
|
||||
|
@ -173,6 +173,7 @@ class Solver(BaseSolver):
|
||||
)
|
||||
)
|
||||
|
||||
# 1242 (not working)
|
||||
yield sum(
|
||||
c
|
||||
for _, c in play(
|
||||
|
@ -1,107 +0,0 @@
|
||||
import inspect
|
||||
from typing import Any, Callable, Final, Iterator, Mapping
|
||||
|
||||
from ..base import BaseSolver
|
||||
|
||||
|
||||
class Instruction:
|
||||
def __init__(self, fn: Callable[..., None]):
|
||||
self._fn = fn
|
||||
|
||||
args = inspect.getfullargspec(fn)
|
||||
|
||||
self._argtypes = [args.annotations[arg] for arg in args.args[1:]]
|
||||
|
||||
def __call__(self, args: tuple[str, ...]):
|
||||
self._fn(
|
||||
*(argtype(arg) for arg, argtype in zip(args, self._argtypes, strict=True))
|
||||
)
|
||||
|
||||
|
||||
class Machine:
|
||||
def __init__(
|
||||
self, instructions: list[str], registers: dict[str, int] = {"a": 0, "b": 1}
|
||||
):
|
||||
self.instructions: Final = [
|
||||
(part[0], tuple(arg.strip() for arg in " ".join(part[1:]).split(",")))
|
||||
for instruction in instructions
|
||||
if (part := instruction.split())
|
||||
]
|
||||
|
||||
self._fns = {
|
||||
name: Instruction(getattr(self, name))
|
||||
for name in ("hlf", "tpl", "inc", "jmp", "jie", "jio")
|
||||
}
|
||||
|
||||
self._registers = registers.copy()
|
||||
self._ip = 0
|
||||
|
||||
@property
|
||||
def registers(self) -> Mapping[str, int]:
|
||||
return self._registers
|
||||
|
||||
@property
|
||||
def ip(self) -> int:
|
||||
return self._ip
|
||||
|
||||
def reset(self, registers: dict[str, int] = {"a": 0, "b": 0}):
|
||||
self._registers = registers.copy()
|
||||
self._ip = 0
|
||||
|
||||
def hlf(self, register: str):
|
||||
self._registers[register] //= 2
|
||||
self._ip += 1
|
||||
|
||||
def tpl(self, register: str):
|
||||
self._registers[register] *= 3
|
||||
self._ip += 1
|
||||
|
||||
def inc(self, register: str):
|
||||
self._registers[register] += 1
|
||||
self._ip += 1
|
||||
|
||||
def jmp(self, offset: int):
|
||||
self._ip += offset
|
||||
assert 0 <= self._ip < len(self.instructions)
|
||||
|
||||
def jie(self, register: str, offset: int):
|
||||
if self._registers[register] % 2 == 0:
|
||||
self._ip += offset
|
||||
else:
|
||||
self._ip += 1
|
||||
|
||||
def jio(self, register: str, offset: int):
|
||||
if self._registers[register] == 1:
|
||||
self._ip += offset
|
||||
else:
|
||||
self._ip += 1
|
||||
|
||||
def _exec(self) -> bool:
|
||||
# execute next instruction
|
||||
if self._ip >= len(self.instructions):
|
||||
return False
|
||||
|
||||
ins, args = self.instructions[self._ip]
|
||||
|
||||
if ins not in self._fns:
|
||||
return False
|
||||
|
||||
self._fns[ins](args)
|
||||
return True
|
||||
|
||||
def run(self):
|
||||
while self._exec():
|
||||
...
|
||||
return self.registers
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
machine = Machine(input.splitlines())
|
||||
|
||||
registers = machine.run()
|
||||
yield registers["b"]
|
||||
|
||||
machine.reset({"a": 1, "b": 0})
|
||||
registers = machine.run()
|
||||
yield registers["b"]
|
@ -1,88 +0,0 @@
|
||||
from typing import Any, Iterator, TypeAlias
|
||||
|
||||
from ..base import BaseSolver
|
||||
|
||||
TupleOfInts: TypeAlias = tuple[int, ...]
|
||||
|
||||
|
||||
def check_n_groups(
|
||||
target: int, groups: tuple[TupleOfInts, ...], numbers: TupleOfInts
|
||||
) -> bool:
|
||||
n_groups = len(groups)
|
||||
groups_s = tuple(sum(group) for group in groups)
|
||||
|
||||
if all(target == group_s for group_s in groups_s):
|
||||
return not numbers
|
||||
|
||||
if not numbers:
|
||||
return False
|
||||
|
||||
head, *tail_l = numbers
|
||||
tail, tail_s = tuple(tail_l), sum(tail_l)
|
||||
|
||||
return any(
|
||||
groups_s[i] + head <= target
|
||||
and sum(groups_s[j] for j in range(len(groups)) if i != j) + tail_s
|
||||
>= (n_groups - 1) * target
|
||||
and check_n_groups(
|
||||
target, groups[:i] + ((groups[i] + (head,)),) + groups[i + 1 :], tail
|
||||
)
|
||||
for i in range(len(groups))
|
||||
)
|
||||
|
||||
|
||||
def enumerate_single_subset(
|
||||
target: int, numbers: TupleOfInts
|
||||
) -> Iterator[tuple[int, TupleOfInts, TupleOfInts]]:
|
||||
"""
|
||||
Enumerate subset of numbers whose sum equals target.
|
||||
|
||||
Subset are enumerated in increasing order of length, then product (quantum value).
|
||||
|
||||
Args:
|
||||
target: Target for the sum of the subset.
|
||||
numbers: Tuple of integers to find the subset from.
|
||||
|
||||
Returns:
|
||||
A generator (quantum, subset, remaining) where subset if the subset of numbers
|
||||
whose sum equals target, quantum the product of the subset, and remaining the
|
||||
remaining numbers.
|
||||
"""
|
||||
groups: list[tuple[int, TupleOfInts, TupleOfInts]] = [(1, (), numbers)]
|
||||
|
||||
for _ in range(len(numbers)):
|
||||
new_groups: list[tuple[int, TupleOfInts, TupleOfInts]] = []
|
||||
|
||||
for g_quantum, group, remaining in groups:
|
||||
sg = sum(group)
|
||||
for i in range(len(remaining)):
|
||||
if group and remaining[i] <= group[-1]:
|
||||
continue
|
||||
|
||||
uv = remaining[:i] + remaining[i + 1 :]
|
||||
kv = g_quantum * remaining[i], group + (remaining[i],), uv
|
||||
|
||||
if sg + remaining[i] == target:
|
||||
yield kv
|
||||
elif sg + remaining[i] < target:
|
||||
new_groups.append(kv)
|
||||
|
||||
groups = new_groups
|
||||
|
||||
|
||||
def find_min_quantum(numbers: tuple[int, ...], n_groups: int):
|
||||
return next(
|
||||
g_quantum
|
||||
for g_quantum, group_1v2, group_234v2 in enumerate_single_subset(
|
||||
sum(numbers) // n_groups, numbers
|
||||
)
|
||||
if check_n_groups(sum(group_1v2), ((),) * (n_groups - 1), group_234v2)
|
||||
)
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
numbers = tuple(map(int, input.split()))
|
||||
|
||||
yield find_min_quantum(numbers, 3)
|
||||
yield find_min_quantum(numbers, 4)
|
@ -1,16 +0,0 @@
|
||||
import re
|
||||
from typing import Any, Iterator
|
||||
|
||||
from ..base import BaseSolver
|
||||
from ..tools.math import pow_mod
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
m = re.search(r"row\s*([0-9]+)\s*,\s*column\s*([0-9]+)", input)
|
||||
assert m is not None
|
||||
|
||||
row, col = int(m.group(1)), int(m.group(2))
|
||||
n = (row * (row - 1)) // 2 + col * (col + 1) // 2 + (row - 1) * (col - 1)
|
||||
|
||||
yield (20151125 * pow_mod(252533, n - 1, 33554393)) % 33554393
|
@ -1,47 +1,7 @@
|
||||
from functools import reduce
|
||||
from typing import Any, Iterator
|
||||
|
||||
from ..base import BaseSolver
|
||||
|
||||
BRACKETS = {"{": "}", "[": "]", "<": ">", "(": ")"}
|
||||
|
||||
CORRUPT_SCORES = {")": 3, "]": 57, "}": 1197, ">": 25137}
|
||||
COMPLETE_SCORES = {")": 1, "]": 2, "}": 3, ">": 4}
|
||||
|
||||
|
||||
def corrupted_or_incomplete(line: str) -> tuple[bool, str]:
|
||||
opens: list[str] = []
|
||||
|
||||
for c in line:
|
||||
if c in BRACKETS:
|
||||
opens.append(c)
|
||||
elif BRACKETS[opens[-1]] != c:
|
||||
return True, c
|
||||
else:
|
||||
opens.pop()
|
||||
|
||||
return (False, "".join(opens))
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
lines = input.splitlines()
|
||||
|
||||
answer_1: int = 0
|
||||
incomplete_scores: list[int] = []
|
||||
|
||||
for line in lines:
|
||||
c, r = corrupted_or_incomplete(line)
|
||||
if c:
|
||||
answer_1 += CORRUPT_SCORES[r]
|
||||
else:
|
||||
incomplete_scores.append(
|
||||
reduce(
|
||||
lambda s, c: s * 5 + COMPLETE_SCORES[BRACKETS[c]],
|
||||
reversed(r),
|
||||
0,
|
||||
),
|
||||
)
|
||||
|
||||
yield answer_1
|
||||
yield sorted(incomplete_scores)[len(incomplete_scores) // 2]
|
||||
def solve(self, input: str) -> Iterator[Any]: ...
|
||||
|
@ -1,66 +1,7 @@
|
||||
import itertools as it
|
||||
from typing import Any, Iterator
|
||||
|
||||
from ..base import BaseSolver
|
||||
|
||||
|
||||
def do_step(values: list[list[int]]) -> tuple[list[list[int]], set[tuple[int, int]]]:
|
||||
values = [[c + 1 for c in r] for r in values]
|
||||
flashed: set[tuple[int, int]] = set()
|
||||
|
||||
while True:
|
||||
found = False
|
||||
|
||||
for i_row, row in enumerate(values):
|
||||
for i_col, col in enumerate(row):
|
||||
if col <= 9 or (i_row, i_col) in flashed:
|
||||
continue
|
||||
|
||||
found = True
|
||||
flashed.add((i_row, i_col))
|
||||
for dr, dc in it.product((-1, 0, 1), repeat=2):
|
||||
if 0 <= i_row + dr < len(values) and 0 <= i_col + dc < len(
|
||||
values[0]
|
||||
):
|
||||
values[i_row + dr][i_col + dc] += 1
|
||||
|
||||
if not found:
|
||||
break
|
||||
|
||||
for i, j in flashed:
|
||||
values[i][j] = 0
|
||||
|
||||
return values, flashed
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def print_grid(self, values: list[list[int]], flashed: set[tuple[int, int]]):
|
||||
for i_row, row in enumerate(values):
|
||||
s_row = ""
|
||||
for i_col, col in enumerate(row):
|
||||
if (i_row, i_col) in flashed:
|
||||
s_row += f"\033[0;31m{col}\033[0;00m"
|
||||
else:
|
||||
s_row += str(col)
|
||||
self.logger.info(s_row)
|
||||
self.logger.info("")
|
||||
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
values_0 = [[int(c) for c in r] for r in input.splitlines()]
|
||||
|
||||
values = values_0
|
||||
total_flashed: int = 0
|
||||
for _ in range(100):
|
||||
values, flashed = do_step(values)
|
||||
total_flashed += len(flashed)
|
||||
|
||||
yield total_flashed
|
||||
|
||||
n_cells = len(values) * len(values[0])
|
||||
flashed: set[tuple[int, int]] = set()
|
||||
values, step = values_0, 0
|
||||
while len(flashed) != n_cells:
|
||||
values, flashed = do_step(values)
|
||||
step += 1
|
||||
|
||||
yield step
|
||||
def solve(self, input: str) -> Iterator[Any]: ...
|
||||
|
@ -1,64 +1,7 @@
|
||||
import string
|
||||
from collections import defaultdict
|
||||
from functools import cache
|
||||
from typing import Any, Iterator, Mapping, Sequence
|
||||
from typing import Any, Iterator
|
||||
|
||||
from ..base import BaseSolver
|
||||
|
||||
|
||||
@cache
|
||||
def is_small(node: str):
|
||||
return all(c in string.ascii_lowercase for c in node)
|
||||
|
||||
|
||||
def enumerate_paths(
|
||||
neighbors: Mapping[str, Sequence[str]],
|
||||
duplicate_smalls: int = 0,
|
||||
start: str = "start",
|
||||
current: tuple[str, ...] = ("start",),
|
||||
) -> Iterator[tuple[str, ...]]:
|
||||
if start == "end":
|
||||
yield current
|
||||
|
||||
for neighbor in neighbors[start]:
|
||||
if not is_small(neighbor):
|
||||
yield from enumerate_paths(
|
||||
neighbors, duplicate_smalls, neighbor, current + (neighbor,)
|
||||
)
|
||||
elif neighbor not in current:
|
||||
yield from enumerate_paths(
|
||||
neighbors, duplicate_smalls, neighbor, current + (neighbor,)
|
||||
)
|
||||
elif duplicate_smalls > 0:
|
||||
yield from enumerate_paths(
|
||||
neighbors, duplicate_smalls - 1, neighbor, current + (neighbor,)
|
||||
)
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
neighbors: dict[str, list[str]] = defaultdict(list)
|
||||
|
||||
for row in input.splitlines():
|
||||
a, b = row.split("-")
|
||||
if a != "end" and b != "start":
|
||||
neighbors[a].append(b)
|
||||
if b != "end" and a != "start":
|
||||
neighbors[b].append(a)
|
||||
|
||||
if self.files:
|
||||
graph = "graph {\n"
|
||||
for node, neighbors_of in neighbors.items():
|
||||
graph += (
|
||||
" ".join(
|
||||
f"{node} -- {neighbor};"
|
||||
for neighbor in neighbors_of
|
||||
if node <= neighbor or node == "start" or neighbor == "end"
|
||||
)
|
||||
+ "\n"
|
||||
)
|
||||
graph += "}\n"
|
||||
self.files.create("graph.dot", graph.encode(), False)
|
||||
|
||||
yield len(list(enumerate_paths(neighbors)))
|
||||
yield len(list(enumerate_paths(neighbors, 1)))
|
||||
def solve(self, input: str) -> Iterator[Any]: ...
|
||||
|
@ -97,12 +97,7 @@ def neighbors(
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def print_path(
|
||||
self, name: str, path: list[tuple[int, int]], n_rows: int, n_cols: int
|
||||
) -> None:
|
||||
if not self.files:
|
||||
return
|
||||
|
||||
def print_path(self, path: list[tuple[int, int]], n_rows: int, n_cols: int) -> None:
|
||||
end = path[-1]
|
||||
|
||||
graph = [["." for _c in range(n_cols)] for _r in range(n_rows)]
|
||||
@ -123,11 +118,8 @@ class Solver(BaseSolver):
|
||||
else:
|
||||
assert False, "{} -> {} infeasible".format(path[i], path[i + 1])
|
||||
|
||||
self.files.create(
|
||||
f"graph_{name}.txt",
|
||||
"\n".join("".join(row) for row in graph).encode(),
|
||||
text=True,
|
||||
)
|
||||
for row in graph:
|
||||
self.logger.info("".join(row))
|
||||
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
lines = input.splitlines()
|
||||
@ -165,7 +157,7 @@ class Solver(BaseSolver):
|
||||
path_1 = make_path(parents_1, start, end)
|
||||
assert path_1 is not None
|
||||
|
||||
self.print_path("answer1", path_1, n_rows=len(grid), n_cols=len(grid[0]))
|
||||
self.print_path(path_1, n_rows=len(grid), n_cols=len(grid[0]))
|
||||
yield lengths_1[end] - 1
|
||||
|
||||
lengths_2, _ = dijkstra(
|
||||
|
@ -67,16 +67,13 @@ def flow(
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def print_blocks(self, name: str, blocks: dict[tuple[int, int], Cell]):
|
||||
def print_blocks(self, blocks: dict[tuple[int, int], Cell]):
|
||||
"""
|
||||
Print the given set of blocks on a grid.
|
||||
|
||||
Args:
|
||||
blocks: Set of blocks to print.
|
||||
"""
|
||||
if not self.files:
|
||||
return
|
||||
|
||||
x_min, y_min, x_max, y_max = (
|
||||
min(x for x, _ in blocks),
|
||||
0,
|
||||
@ -84,15 +81,11 @@ class Solver(BaseSolver):
|
||||
max(y for _, y in blocks),
|
||||
)
|
||||
|
||||
self.files.create(
|
||||
f"blocks_{name}.txt",
|
||||
"\n".join(
|
||||
for y in range(y_min, y_max + 1):
|
||||
self.logger.info(
|
||||
"".join(
|
||||
str(blocks.get((x, y), Cell.AIR)) for x in range(x_min, x_max + 1)
|
||||
)
|
||||
for y in range(y_min, y_max + 1)
|
||||
).encode(),
|
||||
True,
|
||||
)
|
||||
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
@ -122,7 +115,7 @@ class Solver(BaseSolver):
|
||||
for y in range(y_start, y_end):
|
||||
blocks[x, y] = Cell.ROCK
|
||||
|
||||
self.print_blocks("start", blocks)
|
||||
self.print_blocks(blocks)
|
||||
|
||||
y_max = max(y for _, y in blocks)
|
||||
|
||||
@ -131,7 +124,7 @@ class Solver(BaseSolver):
|
||||
blocks_1 = flow(
|
||||
blocks.copy(), stop_fn=lambda x, y: y > y_max, fill_fn=lambda x, y: Cell.AIR
|
||||
)
|
||||
self.print_blocks("part1", blocks_1)
|
||||
self.print_blocks(blocks_1)
|
||||
yield sum(v == Cell.SAND for v in blocks_1.values())
|
||||
|
||||
# === part 2 ===
|
||||
@ -142,5 +135,5 @@ class Solver(BaseSolver):
|
||||
fill_fn=lambda x, y: Cell.AIR if y < y_max + 2 else Cell.ROCK,
|
||||
)
|
||||
blocks_2[500, 0] = Cell.SAND
|
||||
self.print_blocks("part2", blocks_2)
|
||||
self.print_blocks(blocks_2)
|
||||
yield sum(v == Cell.SAND for v in blocks_2.values())
|
||||
|
@ -6,6 +6,8 @@ import re
|
||||
from collections import defaultdict
|
||||
from typing import Any, FrozenSet, Iterator, NamedTuple
|
||||
|
||||
from tqdm import tqdm
|
||||
|
||||
from ..base import BaseSolver
|
||||
|
||||
|
||||
@ -60,12 +62,7 @@ def update_with_better(
|
||||
node_at_times[flowing] = max(node_at_times[flowing], flow)
|
||||
|
||||
|
||||
# === MAIN ===
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def part_1(
|
||||
self,
|
||||
start_pipe: Pipe,
|
||||
max_time: int,
|
||||
distances: dict[tuple[Pipe, Pipe], int],
|
||||
@ -102,17 +99,15 @@ class Solver(BaseSolver):
|
||||
for flow in nodes_of_pipe.values()
|
||||
)
|
||||
|
||||
|
||||
def part_2(
|
||||
self,
|
||||
start_pipe: Pipe,
|
||||
max_time: int,
|
||||
distances: dict[tuple[Pipe, Pipe], int],
|
||||
relevant_pipes: FrozenSet[Pipe],
|
||||
):
|
||||
def compute(pipes_for_me: FrozenSet[Pipe]) -> int:
|
||||
return self.part_1(
|
||||
start_pipe, max_time, distances, pipes_for_me
|
||||
) + self.part_1(
|
||||
return part_1(start_pipe, max_time, distances, pipes_for_me) + part_1(
|
||||
start_pipe, max_time, distances, relevant_pipes - pipes_for_me
|
||||
)
|
||||
|
||||
@ -122,8 +117,13 @@ class Solver(BaseSolver):
|
||||
for relevant_pipes_1 in itertools.combinations(relevant_pipes, r)
|
||||
]
|
||||
|
||||
return max(compute(comb) for comb in self.progress.wrap(combs))
|
||||
return max(compute(comb) for comb in tqdm(combs))
|
||||
|
||||
|
||||
# === MAIN ===
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
lines = [line.strip() for line in input.splitlines()]
|
||||
|
||||
@ -153,7 +153,7 @@ class Solver(BaseSolver):
|
||||
relevant_pipes = frozenset(pipe for pipe in pipes.values() if pipe.flow > 0)
|
||||
|
||||
# 1651, 1653
|
||||
yield self.part_1(pipes["AA"], 30, distances, relevant_pipes)
|
||||
yield part_1(pipes["AA"], 30, distances, relevant_pipes)
|
||||
|
||||
# 1707, 2223
|
||||
yield self.part_2(pipes["AA"], 26, distances, relevant_pipes)
|
||||
yield part_2(pipes["AA"], 26, distances, relevant_pipes)
|
||||
|
@ -10,6 +10,17 @@ T = TypeVar("T")
|
||||
Tower: TypeAlias = NDArray[np.bool]
|
||||
|
||||
|
||||
def print_tower(tower: Tower, out: str = "#"):
|
||||
print("-" * (tower.shape[1] + 2))
|
||||
non_empty = False
|
||||
for row in reversed(range(1, tower.shape[0])):
|
||||
if not non_empty and not tower[row, :].any():
|
||||
continue
|
||||
non_empty = True
|
||||
print("|" + "".join(out if c else "." for c in tower[row, :]) + "|")
|
||||
print("+" + "-" * tower.shape[1] + "+")
|
||||
|
||||
|
||||
def tower_height(tower: Tower) -> int:
|
||||
return int(tower.shape[0] - tower[::-1, :].argmax(axis=0).min() - 1)
|
||||
|
||||
|
@ -24,6 +24,18 @@ def min_max_yx(positions: set[tuple[int, int]]) -> tuple[int, int, int, int]:
|
||||
return min(ys), min(xs), max(ys), max(xs)
|
||||
|
||||
|
||||
def print_positions(positions: set[tuple[int, int]]):
|
||||
min_y, min_x, max_y, max_x = min_max_yx(positions)
|
||||
print(
|
||||
"\n".join(
|
||||
"".join(
|
||||
"#" if (y, x) in positions else "." for x in range(min_x - 1, max_x + 2)
|
||||
)
|
||||
for y in range(min_y - 1, max_y + 2)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def round(
|
||||
positions: set[tuple[int, int]],
|
||||
directions: Directions,
|
||||
|
@ -83,17 +83,18 @@ class Solver(BaseSolver):
|
||||
if (i, j) in loop_s and lines[i][j] in "|LJ":
|
||||
cnt += 1
|
||||
|
||||
if self.files:
|
||||
rows = [["." for _j in range(len(lines[0]))] for _i in range(len(lines))]
|
||||
rows[si][sj] = "\033[91mS\033[0m"
|
||||
|
||||
for i, j in loop:
|
||||
rows[i][j] = lines[i][j]
|
||||
for i, j in inside:
|
||||
rows[i][j] = "\033[92mI\033[0m"
|
||||
|
||||
self.files.create(
|
||||
"output.txt", "\n".join("".join(row) for row in rows).encode(), True
|
||||
)
|
||||
if self.verbose:
|
||||
for i in range(len(lines)):
|
||||
s = ""
|
||||
for j in range(len(lines[0])):
|
||||
if (i, j) == (si, sj):
|
||||
s += "\033[91mS\033[0m"
|
||||
elif (i, j) in loop:
|
||||
s += lines[i][j]
|
||||
elif (i, j) in inside:
|
||||
s += "\033[92mI\033[0m"
|
||||
else:
|
||||
s += "."
|
||||
self.logger.info(s)
|
||||
|
||||
yield len(inside)
|
||||
|
@ -84,14 +84,9 @@ class Solver(BaseSolver):
|
||||
|
||||
beams = propagate(layout, (0, 0), "R")
|
||||
|
||||
if self.files:
|
||||
self.files.create(
|
||||
"beams.txt",
|
||||
"\n".join(
|
||||
"".join("#" if col else "." for col in row) for row in beams
|
||||
).encode(),
|
||||
True,
|
||||
)
|
||||
if self.verbose:
|
||||
for row in beams:
|
||||
self.logger.info("".join("#" if col else "." for col in row))
|
||||
|
||||
# part 1
|
||||
yield sum(sum(map(bool, row)) for row in beams)
|
||||
|
@ -33,14 +33,10 @@ MAPPINGS: dict[Direction, tuple[int, int, Direction]] = {
|
||||
class Solver(BaseSolver):
|
||||
def print_shortest_path(
|
||||
self,
|
||||
name: str,
|
||||
grid: list[list[int]],
|
||||
target: tuple[int, int],
|
||||
per_cell: dict[tuple[int, int], list[tuple[Label, int]]],
|
||||
):
|
||||
if not self.files:
|
||||
return
|
||||
|
||||
assert len(per_cell[target]) == 1
|
||||
label = per_cell[target][0][0]
|
||||
|
||||
@ -78,9 +74,8 @@ class Solver(BaseSolver):
|
||||
|
||||
p_grid[0][0] = f"\033[92m{grid[0][0]}\033[0m"
|
||||
|
||||
self.files.create(
|
||||
name, "\n".join("".join(row) for row in p_grid).encode(), True
|
||||
)
|
||||
for row in p_grid:
|
||||
self.logger.info("".join(row))
|
||||
|
||||
def shortest_many_paths(self, grid: list[list[int]]) -> dict[tuple[int, int], int]:
|
||||
n_rows, n_cols = len(grid), len(grid[0])
|
||||
@ -134,7 +129,6 @@ class Solver(BaseSolver):
|
||||
|
||||
def shortest_path(
|
||||
self,
|
||||
name: str,
|
||||
grid: list[list[int]],
|
||||
min_straight: int,
|
||||
max_straight: int,
|
||||
@ -223,7 +217,8 @@ class Solver(BaseSolver):
|
||||
),
|
||||
)
|
||||
|
||||
self.print_shortest_path(f"shortest-path_{name}.txt", grid, target, per_cell)
|
||||
if self.verbose:
|
||||
self.print_shortest_path(grid, target, per_cell)
|
||||
|
||||
return per_cell[target][0][1]
|
||||
|
||||
@ -232,7 +227,7 @@ class Solver(BaseSolver):
|
||||
estimates = self.shortest_many_paths(data)
|
||||
|
||||
# part 1
|
||||
yield self.shortest_path("answer_1", data, 1, 3, lower_bounds=estimates)
|
||||
yield self.shortest_path(data, 1, 3, lower_bounds=estimates)
|
||||
|
||||
# part 2
|
||||
yield self.shortest_path("answer_2", data, 4, 10, lower_bounds=estimates)
|
||||
yield self.shortest_path(data, 4, 10, lower_bounds=estimates)
|
||||
|
@ -1,3 +1,4 @@
|
||||
import sys
|
||||
from collections import defaultdict
|
||||
from math import lcm
|
||||
from typing import Any, Iterator, Literal, TypeAlias
|
||||
@ -66,7 +67,7 @@ class Solver(BaseSolver):
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
self._modules = {}
|
||||
|
||||
lines = input.splitlines()
|
||||
lines = sys.stdin.read().splitlines()
|
||||
|
||||
for line in lines:
|
||||
name, outputs_s = line.split(" -> ")
|
||||
@ -79,9 +80,10 @@ class Solver(BaseSolver):
|
||||
outputs,
|
||||
)
|
||||
|
||||
if self.files:
|
||||
contents = "digraph G {\n"
|
||||
contents += "rx [shape=circle, color=red, style=filled];\n"
|
||||
if self.outputs:
|
||||
with open("./day20.dot", "w") as fp:
|
||||
fp.write("digraph G {\n")
|
||||
fp.write("rx [shape=circle, color=red, style=filled];\n")
|
||||
for name, (type, outputs) in self._modules.items():
|
||||
if type == "conjunction":
|
||||
shape = "diamond"
|
||||
@ -89,13 +91,11 @@ class Solver(BaseSolver):
|
||||
shape = "box"
|
||||
else:
|
||||
shape = "circle"
|
||||
contents += f"{name} [shape={shape}];\n"
|
||||
fp.write(f"{name} [shape={shape}];\n")
|
||||
for name, (type, outputs) in self._modules.items():
|
||||
for output in outputs:
|
||||
contents += f"{name} -> {output};\n"
|
||||
contents += "}\n"
|
||||
|
||||
self.files.create("day20.dot", contents.encode(), False)
|
||||
fp.write(f"{name} -> {output};\n")
|
||||
fp.write("}\n")
|
||||
|
||||
# part 1
|
||||
flip_flop_states: dict[str, Literal["on", "off"]] = {
|
||||
|
@ -50,7 +50,7 @@ class Solver(BaseSolver):
|
||||
values.append(len(tiles := reachable(map, tiles, cycle)))
|
||||
values.append(len(tiles := reachable(map, tiles, cycle)))
|
||||
|
||||
if self.files:
|
||||
if self.verbose:
|
||||
n_rows, n_cols = len(map), len(map[0])
|
||||
|
||||
rows = [
|
||||
@ -66,9 +66,8 @@ class Solver(BaseSolver):
|
||||
if (i // cycle) % 2 == (j // cycle) % 2:
|
||||
rows[i][j] = f"\033[91m{rows[i][j]}\033[0m"
|
||||
|
||||
self.files.create(
|
||||
"cycle.txt", "\n".join("".join(row) for row in rows).encode(), True
|
||||
)
|
||||
for row in rows:
|
||||
self.logger.info("".join(row))
|
||||
|
||||
self.logger.info(f"values to fit: {values}")
|
||||
|
||||
@ -102,31 +101,32 @@ class Solver(BaseSolver):
|
||||
# depending on the number of cycles, either A or B will be in the center
|
||||
#
|
||||
|
||||
# counts = [
|
||||
# [
|
||||
# sum(
|
||||
# (i, j) in tiles
|
||||
# for i in range(ci * cycle, (ci + 1) * cycle)
|
||||
# for j in range(cj * cycle, (cj + 1) * cycle)
|
||||
# )
|
||||
# for cj in range(-2, 3)
|
||||
# ]
|
||||
# for ci in range(-2, 3)
|
||||
# ]
|
||||
counts = [
|
||||
[
|
||||
sum(
|
||||
(i, j) in tiles
|
||||
for i in range(ci * cycle, (ci + 1) * cycle)
|
||||
for j in range(cj * cycle, (cj + 1) * cycle)
|
||||
)
|
||||
for cj in range(-2, 3)
|
||||
]
|
||||
for ci in range(-2, 3)
|
||||
]
|
||||
|
||||
# radius = (26501365 - rhombus) // cycle - 1
|
||||
# A = counts[2][2] if radius % 2 == 0 else counts[2][1]
|
||||
# B = counts[2][2] if radius % 2 == 1 else counts[2][1]
|
||||
# answer_2 = (
|
||||
# (radius + 1) * A
|
||||
# + radius * B
|
||||
# + 2 * radius * (radius + 1) // 2 * A
|
||||
# + 2 * radius * (radius - 1) // 2 * B
|
||||
# + sum(counts[i][j] for i, j in ((0, 2), (-1, 2), (2, 0), (2, -1)))
|
||||
# + sum(counts[i][j] for i, j in ((0, 1), (0, 3), (-1, 1), (-1, 3)))
|
||||
# * (radius + 1)
|
||||
# + sum(counts[i][j] for i, j in ((1, 1), (1, 3), (-2, 1), (-2, 3))) * radius
|
||||
# )
|
||||
radius = (26501365 - rhombus) // cycle - 1
|
||||
A = counts[2][2] if radius % 2 == 0 else counts[2][1]
|
||||
B = counts[2][2] if radius % 2 == 1 else counts[2][1]
|
||||
answer_2 = (
|
||||
(radius + 1) * A
|
||||
+ radius * B
|
||||
+ 2 * radius * (radius + 1) // 2 * A
|
||||
+ 2 * radius * (radius - 1) // 2 * B
|
||||
+ sum(counts[i][j] for i, j in ((0, 2), (-1, 2), (2, 0), (2, -1)))
|
||||
+ sum(counts[i][j] for i, j in ((0, 1), (0, 3), (-1, 1), (-1, 3)))
|
||||
* (radius + 1)
|
||||
+ sum(counts[i][j] for i, j in ((1, 1), (1, 3), (-2, 1), (-2, 3))) * radius
|
||||
)
|
||||
print(f"answer 2 (v1) is {answer_2}")
|
||||
|
||||
# version 2: fitting a polynomial
|
||||
#
|
||||
|
@ -63,7 +63,6 @@ class Solver(BaseSolver):
|
||||
(x, y, z), (vx, vy, vz), positions[i1], velocities[i1]
|
||||
):
|
||||
equations.append(p + ti * d - pi - ti * di)
|
||||
print(equations)
|
||||
|
||||
r = solve(equations, [x, y, z, vx, vy, vz] + list(ts), dict=True)[0]
|
||||
yield r[x] + r[y] + r[z]
|
||||
|
@ -1,35 +1,7 @@
|
||||
import itertools as it
|
||||
from typing import Any, Iterator
|
||||
|
||||
from ..base import BaseSolver
|
||||
|
||||
|
||||
def process(
|
||||
grid: list[list[int]], current: tuple[int, int]
|
||||
) -> set[tuple[tuple[int, int], ...]]:
|
||||
row, col = current
|
||||
value = grid[row][col] + 1
|
||||
|
||||
if grid[row][col] == 9:
|
||||
return {((row, col),)}
|
||||
|
||||
return {
|
||||
((row, col),) + path
|
||||
for i, j in ((row - 1, col), (row, col + 1), (row + 1, col), (row, col - 1))
|
||||
if 0 <= i < len(grid) and 0 <= j < len(grid[i]) and grid[i][j] == value
|
||||
for path in process(grid, (i, j))
|
||||
}
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
grid = [[int(col) for col in row] for row in input.splitlines()]
|
||||
|
||||
paths = {
|
||||
(i, j): process(grid, (i, j))
|
||||
for i, j in it.product(range(len(grid)), range(len(grid[0])))
|
||||
if grid[i][j] == 0
|
||||
}
|
||||
|
||||
yield sum(len({path[-1] for path in paths[head]}) for head in paths)
|
||||
yield sum(len(paths_of) for paths_of in paths.values())
|
||||
def solve(self, input: str) -> Iterator[Any]: ...
|
||||
|
@ -1,36 +1,7 @@
|
||||
from functools import cache
|
||||
from typing import Any, Iterator
|
||||
|
||||
from ..base import BaseSolver
|
||||
|
||||
|
||||
def n_digits(n: int) -> int:
|
||||
c = int(n == 0)
|
||||
while n > 0:
|
||||
c, n = c + 1, n // 10
|
||||
return c
|
||||
|
||||
|
||||
@cache
|
||||
def blink_one_stone(stone: int, round: int) -> int:
|
||||
if round == 0:
|
||||
return 1
|
||||
|
||||
if stone == 0:
|
||||
return blink_one_stone(1, round - 1)
|
||||
|
||||
if (n := n_digits(stone)) % 2 == 0:
|
||||
p = 10 ** (n // 2)
|
||||
return blink_one_stone(stone // p, round - 1) + blink_one_stone(
|
||||
stone % p, round - 1
|
||||
)
|
||||
|
||||
return blink_one_stone(stone * 2024, round - 1)
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
stones = list(map(int, input.split()))
|
||||
|
||||
yield sum(blink_one_stone(stone, 25) for stone in stones)
|
||||
yield sum(blink_one_stone(stone, 75) for stone in stones)
|
||||
def solve(self, input: str) -> Iterator[Any]: ...
|
||||
|
@ -1,101 +1,7 @@
|
||||
import itertools as it
|
||||
from dataclasses import dataclass
|
||||
from typing import Any, Iterator, TypeAlias
|
||||
from typing import Any, Iterator
|
||||
|
||||
from ..base import BaseSolver
|
||||
|
||||
Node: TypeAlias = tuple[int, int]
|
||||
Edge: TypeAlias = tuple[Node, Node]
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class Region:
|
||||
value: str
|
||||
cells: set[tuple[int, int]]
|
||||
edges: set[Edge]
|
||||
sides: list[tuple[Edge, ...]]
|
||||
|
||||
|
||||
def extract_region(grid: list[str], cell: tuple[int, int]):
|
||||
n_rows, n_cols = len(grid), len(grid[0])
|
||||
row, col = cell
|
||||
|
||||
value = grid[row][col]
|
||||
|
||||
cells: set[tuple[int, int]] = set()
|
||||
edges: set[Edge] = set()
|
||||
sides: list[tuple[Edge, ...]] = []
|
||||
|
||||
queue: list[tuple[int, int]] = [(row, col)]
|
||||
while queue:
|
||||
row, col = queue.pop(0)
|
||||
|
||||
if (row, col) in cells:
|
||||
continue
|
||||
|
||||
cells.add((row, col))
|
||||
|
||||
for ur, uc in (
|
||||
(row - 1, col),
|
||||
(row, col + 1),
|
||||
(row + 1, col),
|
||||
(row, col - 1),
|
||||
):
|
||||
if 0 <= ur < n_rows and 0 <= uc < n_cols and grid[ur][uc] == value:
|
||||
queue.append((ur, uc))
|
||||
continue
|
||||
|
||||
if ((row, col), (ur, uc)) in edges:
|
||||
continue
|
||||
|
||||
if col == uc:
|
||||
mid, max = col, n_cols
|
||||
|
||||
def get(v: int):
|
||||
return (row, v, ur, v)
|
||||
else:
|
||||
mid, max = row, n_rows
|
||||
|
||||
def get(v: int):
|
||||
return (v, col, v, uc)
|
||||
|
||||
side: tuple[Edge, ...] = ((((row, col), (ur, uc))),)
|
||||
for rng in (range(mid - 1, -1, -1), range(mid, max)):
|
||||
for r2, c2, ur2, uc2 in map(get, rng):
|
||||
if grid[r2][c2] != value or (
|
||||
0 <= ur2 < n_rows
|
||||
and 0 <= uc2 < n_cols
|
||||
and grid[r2][c2] == grid[ur2][uc2]
|
||||
):
|
||||
break
|
||||
side += ((((r2, c2), (ur2, uc2))),)
|
||||
|
||||
sides.append(side)
|
||||
edges = edges.union(side)
|
||||
|
||||
return Region(value=value, cells=cells, edges=edges, sides=sides)
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
grid = input.splitlines()
|
||||
|
||||
regions: list[Region] = []
|
||||
to_visit: set[tuple[int, int]] = set(
|
||||
it.product(range(len(grid)), range(len(grid[0])))
|
||||
)
|
||||
|
||||
while to_visit:
|
||||
region = extract_region(grid, next(iter(to_visit)))
|
||||
|
||||
self.logger.info(
|
||||
f"region with {region.value}: "
|
||||
f"{len(region.cells)} * {len(region.edges)} = {len(region.cells) * len(region.edges)}, "
|
||||
f"{len(region.cells)} * {len(region.sides)} = {len(region.cells) * len(region.sides)}"
|
||||
)
|
||||
|
||||
to_visit.difference_update(region.cells)
|
||||
regions.append(region)
|
||||
|
||||
yield sum(len(region.cells) * len(region.edges) for region in regions)
|
||||
yield sum(len(region.cells) * len(region.sides) for region in regions)
|
||||
def solve(self, input: str) -> Iterator[Any]: ...
|
||||
|
@ -1,79 +1,7 @@
|
||||
import math
|
||||
from dataclasses import dataclass
|
||||
from typing import Any, Iterator
|
||||
|
||||
import parse # pyright: ignore[reportMissingTypeStubs]
|
||||
|
||||
from ..base import BaseSolver
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class Machine:
|
||||
prize: tuple[int, int]
|
||||
button_a: tuple[int, int]
|
||||
button_b: tuple[int, int]
|
||||
|
||||
|
||||
def read_machine(block: str) -> Machine:
|
||||
ba = parse.parse( # type: ignore
|
||||
"""Button A: X{bax:d}, Y{bay:d}
|
||||
Button B: X{bbx:d}, Y{bby:d}
|
||||
Prize: X={px:d}, Y={py:d}""",
|
||||
block,
|
||||
)
|
||||
return Machine(
|
||||
prize=(ba["px"], ba["py"]), # type: ignore
|
||||
button_a=(ba["bax"], ba["bay"]), # type: ignore
|
||||
button_b=(ba["bbx"], ba["bby"]), # type: ignore
|
||||
)
|
||||
|
||||
|
||||
def diophantine(a: int, b: int, c: int) -> tuple[int, int]:
|
||||
q, r = divmod(a, b)
|
||||
if r == 0:
|
||||
return (0, c // b)
|
||||
else:
|
||||
u, v = diophantine(b, r, c)
|
||||
return (v, u - q * v)
|
||||
|
||||
|
||||
def solve(machine: Machine) -> int:
|
||||
(ax, ay), (bx, by), (px, py) = machine.button_a, machine.button_b, machine.prize
|
||||
dx, dy = math.gcd(ax, bx), math.gcd(ay, by)
|
||||
|
||||
if px % dx != 0 or py % dy != 0:
|
||||
return 0
|
||||
|
||||
xa, xb = diophantine(ax, bx, px)
|
||||
ya, yb = diophantine(ay, by, py)
|
||||
|
||||
# expr (x): xa - kx * bx / dx, xb + kx * ax / dx
|
||||
# expr (y): ya - ky * by / dy, yb + ky * ay / dy
|
||||
|
||||
num = ay * (ya - xa) + by * (yb - xb)
|
||||
den = (ax * by - ay * bx) // dx
|
||||
|
||||
if num % den != 0:
|
||||
return 0
|
||||
|
||||
kx = num // den
|
||||
pa, pb = xa - kx * bx // dx, xb + kx * ax // dx
|
||||
return 3 * pa + pb
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
machines = [read_machine(block) for block in input.split("\n\n")]
|
||||
|
||||
yield sum(map(solve, machines))
|
||||
|
||||
shift = 10000000000000
|
||||
machines = [
|
||||
Machine(
|
||||
prize=(shift + m.prize[0], shift + m.prize[1]),
|
||||
button_a=m.button_a,
|
||||
button_b=m.button_b,
|
||||
)
|
||||
for m in machines
|
||||
]
|
||||
yield sum(map(solve, machines))
|
||||
def solve(self, input: str) -> Iterator[Any]: ...
|
||||
|
@ -1,74 +1,7 @@
|
||||
import itertools as it
|
||||
import operator as op
|
||||
from math import prod
|
||||
from typing import Any, Iterator
|
||||
|
||||
import numpy as np
|
||||
import parse # pyright: ignore[reportMissingTypeStubs]
|
||||
|
||||
from ..base import BaseSolver
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
positions: list[tuple[int, int]] = []
|
||||
velocities: list[tuple[int, int]] = []
|
||||
|
||||
for line in input.splitlines():
|
||||
r = parse.parse("p={x:d},{y:d} v={vx:d},{vy:d}", line) # type: ignore
|
||||
positions.append((r["y"], r["x"])) # type: ignore
|
||||
velocities.append((r["vy"], r["vx"])) # type: ignore
|
||||
|
||||
n_rows, n_cols = 103, 101
|
||||
if len(positions) < 20:
|
||||
n_rows, n_cols = 7, 11
|
||||
|
||||
n_rounds = 100
|
||||
new_positions = [
|
||||
((row + v_row * n_rounds) % n_rows, (col + v_col * n_rounds) % n_cols)
|
||||
for (row, col), (v_row, v_col) in zip(positions, velocities, strict=True)
|
||||
]
|
||||
|
||||
midrow = n_rows // 2
|
||||
midcol = n_cols // 2
|
||||
|
||||
yield prod(
|
||||
(
|
||||
sum(opr(row, midrow) and opc(col, midcol) for row, col in new_positions)
|
||||
for opr, opc in it.product((op.gt, op.lt), repeat=2)
|
||||
)
|
||||
)
|
||||
|
||||
new_positions = positions.copy()
|
||||
for rnd in self.progress.wrap(range(10000)):
|
||||
new_positions = [
|
||||
((row + v_row) % n_rows, (col + v_col) % n_cols)
|
||||
for (row, col), (v_row, v_col) in zip(
|
||||
new_positions, velocities, strict=True
|
||||
)
|
||||
]
|
||||
m = [[False for _ in range(n_cols)] for _ in range(n_rows)]
|
||||
for row, col in new_positions:
|
||||
m[row][col] = True
|
||||
|
||||
found = False
|
||||
for row in m:
|
||||
if sum(row) <= 10:
|
||||
continue
|
||||
if any(all(row[i : i + 10]) for i in range(n_cols - 10)):
|
||||
if self.files:
|
||||
self.files.create(
|
||||
f"result_{rnd+1}.txt",
|
||||
"\n".join(
|
||||
"".join("#" if m[i][j] else "." for j in range(n_cols))
|
||||
for i in range(n_rows)
|
||||
).encode(),
|
||||
True,
|
||||
)
|
||||
self.files.image(f"result_{rnd+1}.png", np.array(m))
|
||||
yield rnd + 1
|
||||
# found = True
|
||||
break
|
||||
|
||||
if found:
|
||||
break
|
||||
def solve(self, input: str) -> Iterator[Any]: ...
|
||||
|
@ -1,282 +1,7 @@
|
||||
from typing import Any, Callable, Final, Iterator, TypeAlias
|
||||
|
||||
import numpy as np
|
||||
from numpy.typing import NDArray
|
||||
from typing import Any, Iterator
|
||||
|
||||
from ..base import BaseSolver
|
||||
|
||||
ImageGrid: TypeAlias = NDArray[np.uint8]
|
||||
|
||||
|
||||
class Grid:
|
||||
FREE: Final = 0
|
||||
BLOCK: Final = 1
|
||||
ROBOT: Final = 2
|
||||
|
||||
robot: tuple[int, int]
|
||||
|
||||
def __init__(self, grid_s: list[str], large: bool):
|
||||
grid: list[list[int]] = []
|
||||
robot: tuple[int, int] | None = None
|
||||
box_counter = 4 if not large else 5
|
||||
for i_row, row in enumerate(grid_s):
|
||||
row_u: list[int] = []
|
||||
for i_col, col in enumerate(row):
|
||||
if col in ".@":
|
||||
row_u.extend((Grid.FREE, Grid.FREE) if large else (Grid.FREE,))
|
||||
if col == "@":
|
||||
robot = (i_row, i_col * 2 if large else i_col)
|
||||
elif col == "#":
|
||||
row_u.extend((Grid.BLOCK, Grid.BLOCK) if large else (Grid.BLOCK,))
|
||||
else:
|
||||
row_u.extend(
|
||||
(box_counter, -box_counter) if large else (box_counter,)
|
||||
)
|
||||
box_counter += 2
|
||||
grid.append(row_u)
|
||||
|
||||
self.grid = np.array(grid)
|
||||
|
||||
assert robot is not None
|
||||
self.robot = robot
|
||||
|
||||
@property
|
||||
def n_rows(self):
|
||||
return len(self.grid)
|
||||
|
||||
@property
|
||||
def n_columns(self):
|
||||
return len(self.grid[0])
|
||||
|
||||
def __len__(self):
|
||||
return self.n_rows
|
||||
|
||||
def __iter__(self):
|
||||
return iter(self.grid)
|
||||
|
||||
def __getitem__(self, index: tuple[int, int]):
|
||||
return self.grid[*index]
|
||||
|
||||
def __setitem__(self, index: tuple[int, int], value: int):
|
||||
self.grid[*index] = value
|
||||
|
||||
def is_free(self, row: int, col: int):
|
||||
return self[row, col] == Grid.FREE
|
||||
|
||||
def is_block(self, row: int, col: int):
|
||||
return self[row, col] == Grid.BLOCK
|
||||
|
||||
def is_box(self, row: int, col: int):
|
||||
return (c := self[row, col]) >= 4 and c % 2 == 0
|
||||
|
||||
def is_open_or_close_box(self, row: int, col: int):
|
||||
return abs(c := self[row, col]) >= 4 and c % 2 == 1
|
||||
|
||||
def is_open_box(self, row: int, col: int):
|
||||
return (c := self[row, col]) >= 4 and c % 2 == 1
|
||||
|
||||
def is_close_box(self, row: int, col: int):
|
||||
return self[row, col] < 0
|
||||
|
||||
def _to_char(self, row: int, col: int):
|
||||
if self.is_free(row, col):
|
||||
return "."
|
||||
elif self.is_block(row, col):
|
||||
return "#"
|
||||
elif self.is_box(row, col):
|
||||
return "O"
|
||||
elif self.is_open_box(row, col):
|
||||
return "["
|
||||
else:
|
||||
return "]"
|
||||
|
||||
def as_numpy(self):
|
||||
arr = self.grid.copy()
|
||||
arr[*self.robot] = Grid.ROBOT
|
||||
return arr
|
||||
|
||||
def as_printable(self):
|
||||
grid_s = [
|
||||
[self._to_char(row, col) for col in range(self.n_columns)]
|
||||
for row in range(self.n_rows)
|
||||
]
|
||||
grid_s[self.robot[0]][self.robot[1]] = "\033[31;1m@\033[00m"
|
||||
return "\n".join("".join(row) for row in grid_s)
|
||||
|
||||
def __str__(self):
|
||||
return self.as_printable()
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def save_grid(self, name: str, grid: Grid):
|
||||
if self.files:
|
||||
self.files.create(name, grid.as_printable().encode(), True)
|
||||
|
||||
def step_part1(self, grid: Grid, move: str):
|
||||
match move:
|
||||
case "^":
|
||||
d_row, d_col = -1, 0
|
||||
case ">":
|
||||
d_row, d_col = 0, 1
|
||||
case "v":
|
||||
d_row, d_col = 1, 0
|
||||
case "<":
|
||||
d_row, d_col = 0, -1
|
||||
case _:
|
||||
assert False
|
||||
|
||||
row, col = grid.robot
|
||||
if grid.is_free(row + d_row, col + d_col):
|
||||
grid.robot = (row + d_row, col + d_col)
|
||||
elif not grid.is_block(row + d_row, col + d_col):
|
||||
n = 1
|
||||
while grid.is_box(row + n * d_row, col + n * d_col):
|
||||
n += 1
|
||||
|
||||
if grid.is_free(row + n * d_row, col + n * d_col):
|
||||
grid.robot = (row + d_row, col + d_col)
|
||||
for k in range(2, n + 1):
|
||||
grid[row + k * d_row, col + k * d_col] = grid[
|
||||
row + (k - 1) * d_row, col + (k - 1) * d_col
|
||||
]
|
||||
grid[row + d_row, col + d_col] = Grid.FREE
|
||||
|
||||
return grid
|
||||
|
||||
def step_part2(self, grid: Grid, move: str):
|
||||
match move:
|
||||
case "^":
|
||||
d_row, d_col = -1, 0
|
||||
case ">":
|
||||
d_row, d_col = 0, 1
|
||||
case "v":
|
||||
d_row, d_col = 1, 0
|
||||
case "<":
|
||||
d_row, d_col = 0, -1
|
||||
case _:
|
||||
assert False
|
||||
|
||||
row, col = grid.robot
|
||||
if grid.is_free(row + d_row, col + d_col):
|
||||
grid.robot = (row + d_row, col + d_col)
|
||||
elif grid.is_block(row + d_row, col + d_col):
|
||||
...
|
||||
elif move in "<>":
|
||||
n = 1
|
||||
while grid.is_open_or_close_box(row, col + n * d_col):
|
||||
n += 1
|
||||
|
||||
if grid.is_free(row, col + n * d_col):
|
||||
grid.robot = (row, col + d_col)
|
||||
for k in range(n, 1, -1):
|
||||
grid[row, col + k * d_col] = grid[row, col + (k - 1) * d_col]
|
||||
grid[row + d_row, col + d_col] = Grid.FREE
|
||||
|
||||
elif move in "^v":
|
||||
n = 1
|
||||
boxes: list[set[int]] = [{col}]
|
||||
while True:
|
||||
to_move = boxes[-1]
|
||||
if any(grid.is_block(row + n * d_row, c) for c in to_move):
|
||||
break
|
||||
if all(grid.is_free(row + n * d_row, c) for c in to_move):
|
||||
break
|
||||
|
||||
as_move: set[int] = set()
|
||||
|
||||
for c in to_move:
|
||||
if grid.is_close_box(row + n * d_row, c):
|
||||
as_move.update({c - 1, c})
|
||||
elif grid.is_open_box(row + n * d_row, c):
|
||||
as_move.update({c, c + 1})
|
||||
|
||||
boxes.append(as_move)
|
||||
n += 1
|
||||
|
||||
if all(grid.is_free(row + n * d_row, c) for c in boxes[-1]):
|
||||
for k, to_move in zip(range(n, 1, -1), boxes[-1:0:-1], strict=True):
|
||||
for c in to_move:
|
||||
grid[row + k * d_row, c] = grid[row + (k - 1) * d_row, c]
|
||||
grid[row + (k - 1) * d_row, c] = Grid.FREE
|
||||
grid.robot = (row + d_row, col + d_col)
|
||||
|
||||
return grid
|
||||
|
||||
def run(
|
||||
self,
|
||||
name: str,
|
||||
grid: Grid,
|
||||
moves: str,
|
||||
fn: Callable[[Grid, str], Grid],
|
||||
generate: bool,
|
||||
) -> tuple[Grid, list[ImageGrid]]:
|
||||
# initialize
|
||||
images: list[ImageGrid] = []
|
||||
|
||||
if generate:
|
||||
images.append(grid.as_numpy())
|
||||
|
||||
self.save_grid(f"initial_grid_{name}.txt", grid)
|
||||
|
||||
for move in self.progress.wrap(moves):
|
||||
self.logger.debug(f"Move '{move}'...")
|
||||
grid = fn(grid, move)
|
||||
|
||||
if generate:
|
||||
images.append(grid.as_numpy())
|
||||
|
||||
self.save_grid(f"final_grid_{name}.txt", grid)
|
||||
|
||||
return grid, images
|
||||
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
grid_s, moves = input.split("\n\n")
|
||||
moves = "".join(moves.split())
|
||||
|
||||
n_boxes = grid_s.count("O")
|
||||
colors = np.concatenate(
|
||||
[
|
||||
np.array(
|
||||
[[255, 255, 255], [64, 64, 64], [255, 0, 0]],
|
||||
dtype=np.uint8,
|
||||
),
|
||||
np.random.randint(0, 256, size=(n_boxes, 3), dtype=np.uint8),
|
||||
],
|
||||
dtype=np.uint8,
|
||||
)
|
||||
|
||||
grid, images = self.run(
|
||||
"part1",
|
||||
Grid(grid_s.splitlines(), False),
|
||||
moves,
|
||||
self.step_part1,
|
||||
self.files is not None,
|
||||
)
|
||||
if self.files:
|
||||
images = np.stack(images, axis=0)
|
||||
images[images >= 2] = 1 + images[images >= 2] // 2
|
||||
self.files.video("anim_part1.webm", colors[images])
|
||||
yield sum(
|
||||
100 * row + col
|
||||
for row in range(grid.n_rows)
|
||||
for col in range(grid.n_columns)
|
||||
if grid.is_box(row, col)
|
||||
)
|
||||
|
||||
grid, images = self.run(
|
||||
"part2",
|
||||
Grid(grid_s.splitlines(), True),
|
||||
moves,
|
||||
self.step_part2,
|
||||
self.files is not None,
|
||||
)
|
||||
if self.files:
|
||||
images = np.abs(np.stack(images, axis=0))
|
||||
images[images >= 2] = 1 + images[images >= 2] // 2
|
||||
self.files.video("anim_part2.webm", colors[images])
|
||||
yield sum(
|
||||
100 * row + col
|
||||
for row in range(grid.n_rows)
|
||||
for col in range(grid.n_columns)
|
||||
if grid.is_open_box(row, col)
|
||||
)
|
||||
def solve(self, input: str) -> Iterator[Any]: ...
|
||||
|
@ -1,62 +1,7 @@
|
||||
import heapq
|
||||
from collections import defaultdict
|
||||
from typing import Any, Iterator, TypeAlias
|
||||
from typing import Any, Iterator
|
||||
|
||||
from ..base import BaseSolver
|
||||
|
||||
Position: TypeAlias = tuple[int, int]
|
||||
Direction: TypeAlias = tuple[int, int]
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
grid = [list(r) for r in input.splitlines()]
|
||||
n_rows, n_cols = len(grid), len(grid[0])
|
||||
rein = next(
|
||||
(i, j) for i in range(n_rows) for j in range(n_cols) if grid[i][j] == "S"
|
||||
)
|
||||
target = next(
|
||||
(i, j) for i in range(n_rows) for j in range(n_cols) if grid[i][j] == "E"
|
||||
)
|
||||
|
||||
queue: list[tuple[int, Position, Direction, tuple[Position, ...]]] = [
|
||||
(0, rein, (0, 1), (rein,))
|
||||
]
|
||||
|
||||
max_score = n_rows * n_cols * 1000
|
||||
target_score: int = max_score
|
||||
scores: dict[tuple[Position, Direction], int] = defaultdict(lambda: max_score)
|
||||
visited: set[Position] = set()
|
||||
|
||||
while queue:
|
||||
score, pos, dir, path = heapq.heappop(queue)
|
||||
|
||||
if target_score < score:
|
||||
break
|
||||
|
||||
if pos == target:
|
||||
target_score = score
|
||||
visited |= set(path)
|
||||
continue
|
||||
|
||||
scores[pos, dir] = score
|
||||
|
||||
row, col = pos
|
||||
d_row, d_col = dir
|
||||
|
||||
for cost, n_pos, n_dir in (
|
||||
(1, (row + d_row, col + d_col), dir),
|
||||
(1000, pos, (1, 0) if d_row == 0 else (0, 1)),
|
||||
(1000, pos, (-1, 0) if d_row == 0 else (0, -1)),
|
||||
):
|
||||
n_row, n_col = n_pos
|
||||
score_n = score + cost
|
||||
if grid[n_row][n_col] != "#" and score_n < scores[n_pos, n_dir]:
|
||||
heapq.heappush(
|
||||
queue,
|
||||
(score_n, n_pos, n_dir, path + (n_pos,)),
|
||||
)
|
||||
|
||||
assert target_score is not None
|
||||
yield target_score
|
||||
yield len(visited)
|
||||
def solve(self, input: str) -> Iterator[Any]: ...
|
||||
|
@ -3,128 +3,5 @@ from typing import Any, Iterator
|
||||
from ..base import BaseSolver
|
||||
|
||||
|
||||
def combo(registers: dict[str, int], operand: int):
|
||||
if operand < 4:
|
||||
return operand
|
||||
assert operand < 7
|
||||
return registers["ABC"[operand - 4]]
|
||||
|
||||
|
||||
def adv(registers: dict[str, int], operand: int) -> int | None:
|
||||
registers["A"] = registers["A"] >> combo(registers, operand)
|
||||
|
||||
|
||||
def bxl(registers: dict[str, int], operand: int) -> int | None:
|
||||
registers["B"] ^= operand
|
||||
|
||||
|
||||
def bst(registers: dict[str, int], operand: int) -> int | None:
|
||||
registers["B"] = combo(registers, operand) % 8
|
||||
|
||||
|
||||
def jnz(registers: dict[str, int], operand: int) -> int | None:
|
||||
if registers["A"] != 0:
|
||||
return operand
|
||||
|
||||
|
||||
def bxc(registers: dict[str, int], operand: int) -> int | None:
|
||||
registers["B"] = registers["B"] ^ registers["C"]
|
||||
|
||||
|
||||
def bdv(registers: dict[str, int], operand: int) -> int | None:
|
||||
registers["B"] = registers["A"] >> combo(registers, operand)
|
||||
|
||||
|
||||
def cdv(registers: dict[str, int], operand: int) -> int | None:
|
||||
registers["C"] = registers["A"] >> combo(registers, operand)
|
||||
|
||||
|
||||
def run(registers: dict[str, int], program: list[int]):
|
||||
outputs: list[int] = []
|
||||
|
||||
def out(registers: dict[str, int], operand: int) -> int | None:
|
||||
outputs.append(combo(registers, operand) % 8)
|
||||
|
||||
instructions = [adv, bxl, bst, jnz, bxc, out, bdv, cdv]
|
||||
|
||||
index = 0
|
||||
while index < len(program):
|
||||
instruction, operand = instructions[program[index]], program[index + 1]
|
||||
|
||||
ret = instruction(registers, operand)
|
||||
|
||||
if ret is None:
|
||||
index += 2
|
||||
else:
|
||||
index = ret
|
||||
|
||||
return outputs
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
register_s, program_s = input.split("\n\n")
|
||||
|
||||
registers = {
|
||||
p[0][-1]: int(p[1].strip())
|
||||
for line in register_s.splitlines()
|
||||
if (p := line.split(":"))
|
||||
}
|
||||
program = [int(c) for c in program_s.split(":")[1].strip().split(",")]
|
||||
|
||||
self.logger.info(f"program ({len(program)}): " + ",".join(map(str, program)))
|
||||
|
||||
instruction_s = [
|
||||
"A = A >> {}",
|
||||
"B = B ^ {}",
|
||||
"B = {} % 8",
|
||||
"JMP {}",
|
||||
"B = B ^ C",
|
||||
"OUT {} % 8",
|
||||
"B = A >> {}",
|
||||
"C = A >> {}",
|
||||
]
|
||||
|
||||
self.logger.info("PROGRAM:")
|
||||
for index in range(0, len(program), 2):
|
||||
self.logger.info(
|
||||
instruction_s[program[index]].format(
|
||||
""
|
||||
if program[index] == 4
|
||||
else (
|
||||
program[index + 1]
|
||||
if program[index] in (1, 3) or program[index + 1] < 4
|
||||
else "ABC"[program[index + 1] - 4]
|
||||
)
|
||||
),
|
||||
)
|
||||
|
||||
yield ",".join(map(str, run(registers.copy(), program)))
|
||||
|
||||
# last instruction is JNZ 0 (jump at the beginning), and it is the only jump
|
||||
# in the program
|
||||
jnz_indices = [i for i in range(0, len(program), 2) if program[i] == 3]
|
||||
assert jnz_indices == [len(program) - 2] and program[-1] == 0
|
||||
|
||||
# previous instruction is dividing A by 8, or A = A >> 3
|
||||
assert program[-4:-2] == [0, 3]
|
||||
|
||||
# previous instruction is a OUT B % 8, and it is the only OUT in the program
|
||||
out_indices = [i for i in range(0, len(program), 2) if program[i] == 5]
|
||||
assert out_indices == [len(program) - 6] and program[len(program) - 5] == 5
|
||||
|
||||
valid: list[int] = [0]
|
||||
for p in reversed(program):
|
||||
new_valid: list[int] = []
|
||||
for v in valid:
|
||||
a_high = v << 3
|
||||
for a_low in range(0, 2**3):
|
||||
registers["A"] = a_high | a_low
|
||||
run(registers, program[:-6])
|
||||
if registers["B"] % 8 == p:
|
||||
new_valid.append(a_high | a_low)
|
||||
valid = new_valid
|
||||
|
||||
assert run(registers | {"A": min(valid)}, program) == program
|
||||
|
||||
yield min(valid)
|
||||
def solve(self, input: str) -> Iterator[Any]: ...
|
||||
|
@ -1,58 +1,7 @@
|
||||
from typing import Any, Iterator
|
||||
|
||||
from ..base import BaseSolver
|
||||
from ..tools import graphs
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def print_grid(self, grid: list[tuple[int, int]], n_rows: int, n_cols: int):
|
||||
values = set(grid)
|
||||
if self.files:
|
||||
self.files.create(
|
||||
"graph.txt",
|
||||
"\n".join(
|
||||
"".join(
|
||||
"#" if (row, col) in values else "." for col in range(n_cols)
|
||||
)
|
||||
for row in range(n_rows)
|
||||
).encode(),
|
||||
text=True,
|
||||
)
|
||||
else:
|
||||
for row in range(n_rows):
|
||||
self.logger.info(
|
||||
"".join(
|
||||
"#" if (row, col) in values else "." for col in range(n_cols)
|
||||
)
|
||||
)
|
||||
|
||||
def dijkstra(self, corrupted: list[tuple[int, int]], n_rows: int, n_cols: int):
|
||||
return graphs.dijkstra(
|
||||
(0, 0),
|
||||
(n_rows - 1, n_cols - 1),
|
||||
graphs.make_neighbors_grid_fn(n_rows, n_cols, set(corrupted)),
|
||||
)
|
||||
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
values = [
|
||||
(int(p[0]), int(p[1])) for r in input.splitlines() if (p := r.split(","))
|
||||
]
|
||||
|
||||
_is_test = len(values) < 100
|
||||
|
||||
n_rows, n_cols, n_bytes_p1 = (7, 7, 12) if _is_test else (71, 71, 1024)
|
||||
|
||||
bytes_p1 = values[:n_bytes_p1]
|
||||
self.print_grid(bytes_p1, n_rows, n_cols)
|
||||
|
||||
path_p1, cost_p1 = self.dijkstra(bytes_p1, n_rows, n_cols) or ((), -1)
|
||||
yield cost_p1
|
||||
|
||||
path = path_p1
|
||||
for b in range(n_bytes_p1, len(values)):
|
||||
if values[b] not in path:
|
||||
continue
|
||||
path, _ = self.dijkstra(values[: b + 1], n_rows, n_cols) or (None, -1)
|
||||
if path is None:
|
||||
yield ",".join(map(str, values[b]))
|
||||
break
|
||||
def solve(self, input: str) -> Iterator[Any]: ...
|
||||
|
@ -1,42 +1,7 @@
|
||||
from functools import cache
|
||||
from typing import Any, Iterator
|
||||
|
||||
from ..base import BaseSolver
|
||||
|
||||
|
||||
@cache
|
||||
def is_valid(design: str, towels: tuple[str, ...]) -> bool:
|
||||
if not design:
|
||||
return True
|
||||
|
||||
return any(
|
||||
design.startswith(towel) and is_valid(design[len(towel) :], towels)
|
||||
for towel in towels
|
||||
)
|
||||
|
||||
|
||||
@cache
|
||||
def count_valid(design: str, towels: tuple[str, ...]) -> int:
|
||||
if not design:
|
||||
return 1
|
||||
|
||||
return sum(
|
||||
design.startswith(towel) and count_valid(design[len(towel) :], towels)
|
||||
for towel in towels
|
||||
)
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
towels_s, designs_s = input.split("\n\n")
|
||||
|
||||
towels = tuple(s.strip() for s in towels_s.split(","))
|
||||
|
||||
designs = [
|
||||
design
|
||||
for design in self.progress.wrap(designs_s.splitlines())
|
||||
if is_valid(design, towels)
|
||||
]
|
||||
|
||||
yield len(designs)
|
||||
yield sum(count_valid(design, towels) for design in self.progress.wrap(designs))
|
||||
def solve(self, input: str) -> Iterator[Any]: ...
|
||||
|
@ -1,95 +1,7 @@
|
||||
import itertools
|
||||
from collections import Counter
|
||||
from typing import Any, Callable, Iterable, Iterator, Sequence, TypeAlias
|
||||
from typing import Any, Iterator
|
||||
|
||||
from ..base import BaseSolver
|
||||
from ..tools.graphs import dijkstra, make_neighbors_grid_fn
|
||||
|
||||
Node: TypeAlias = tuple[int, int]
|
||||
|
||||
|
||||
def make_neighbors_fn(grid: list[str], cheat_length: int):
|
||||
n_rows, n_cols = len(grid), len(grid[0])
|
||||
|
||||
def _fn(node: Node):
|
||||
row, col = node
|
||||
return (
|
||||
((row_n, col_n), abs(row_n - row) + abs(col_n - col))
|
||||
for row_d in range(-cheat_length, cheat_length + 1)
|
||||
for col_d in range(
|
||||
-cheat_length + abs(row_d), cheat_length - abs(row_d) + 1
|
||||
)
|
||||
if 0 <= (row_n := row + row_d) < n_rows
|
||||
and 0 <= (col_n := col + col_d) < n_cols
|
||||
and grid[row_n][col_n] != "#"
|
||||
)
|
||||
|
||||
return _fn
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def find_cheats(
|
||||
self,
|
||||
path: Sequence[Node],
|
||||
cost: float,
|
||||
costs_to_target: dict[Node, float],
|
||||
neighbors_fn: Callable[[Node], Iterable[tuple[Node, float]]],
|
||||
):
|
||||
cheats: dict[tuple[tuple[int, int], tuple[int, int]], float] = {}
|
||||
|
||||
for i_node, node in enumerate(self.progress.wrap(path)):
|
||||
for reach_node, reach_cost in neighbors_fn(node):
|
||||
n_cost = (
|
||||
i_node + reach_cost + costs_to_target.get(reach_node, float("inf"))
|
||||
)
|
||||
if n_cost < cost:
|
||||
cheats[node, reach_node] = cost - n_cost
|
||||
|
||||
return cheats
|
||||
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
grid = input.splitlines()
|
||||
n_rows, n_cols = len(grid), len(grid[0])
|
||||
start = next(
|
||||
(i, j) for i in range(n_rows) for j in range(n_cols) if grid[i][j] == "S"
|
||||
)
|
||||
target = next(
|
||||
(i, j) for i in range(n_rows) for j in range(n_cols) if grid[i][j] == "E"
|
||||
)
|
||||
|
||||
reachable = dijkstra(
|
||||
target,
|
||||
None,
|
||||
make_neighbors_grid_fn(
|
||||
n_rows,
|
||||
n_cols,
|
||||
excluded=(
|
||||
(i, j)
|
||||
for i in range(n_rows)
|
||||
for j in range(n_cols)
|
||||
if grid[i][j] == "#"
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
# note: path is inverted here
|
||||
path, cost = reachable[start]
|
||||
costs_to_target = {k: c for k, (_, c) in reachable.items()}
|
||||
|
||||
self.logger.info(f"found past from start to target with cost {cost}")
|
||||
|
||||
for cheat_length in (2, 20):
|
||||
cheats = self.find_cheats(
|
||||
list(reversed(path)),
|
||||
cost,
|
||||
costs_to_target,
|
||||
make_neighbors_fn(grid, cheat_length),
|
||||
)
|
||||
|
||||
for saving, count in sorted(Counter(cheats.values()).items()):
|
||||
self.logger.debug(
|
||||
f"There are {count} cheats that save {saving} picoseconds."
|
||||
)
|
||||
|
||||
target_saving = 100 if len(grid) > 20 else 50
|
||||
yield sum(saving >= target_saving for saving in cheats.values())
|
||||
def solve(self, input: str) -> Iterator[Any]: ...
|
||||
|
@ -1,121 +1,7 @@
|
||||
import heapq
|
||||
from dataclasses import dataclass
|
||||
from typing import Any, Iterator, Literal, Sequence, TypeAlias, cast
|
||||
from typing import Any, Iterator
|
||||
|
||||
from ..base import BaseSolver
|
||||
|
||||
Action: TypeAlias = Literal[">", "<", "v", "^", "A"]
|
||||
|
||||
NUM_PAD = ((7, 8, 9), (4, 5, 6), (1, 2, 3), (None, 0, "A"))
|
||||
MOV_PAD: tuple[tuple[Action | None, ...], ...] = ((None, "^", "A"), ("<", "v", ">"))
|
||||
|
||||
|
||||
@dataclass(frozen=True, order=True)
|
||||
class Node:
|
||||
robot_1: tuple[int, int] = (0, 2)
|
||||
robot_2: tuple[int, int] = (0, 2)
|
||||
robot_3: tuple[int, int] = (3, 2)
|
||||
|
||||
code: str = ""
|
||||
|
||||
|
||||
def apply_action(
|
||||
robot: tuple[int, int],
|
||||
action: Action,
|
||||
pad: tuple[tuple[int | str | None, ...], ...],
|
||||
):
|
||||
d_row, d_col = {"^": (-1, 0), "v": (1, 0), ">": (0, 1), "<": (0, -1)}[action]
|
||||
row, col = robot[0] + d_row, robot[1] + d_col
|
||||
|
||||
if 0 <= row < len(pad) and 0 <= col < len(pad[row]) and pad[row][col] is not None:
|
||||
return (row, col)
|
||||
|
||||
return None
|
||||
|
||||
|
||||
def create_node(node: Node, action: Action) -> Node | None:
|
||||
# main pad moves -> move first robot
|
||||
if action != "A":
|
||||
robot = apply_action(node.robot_1, action, MOV_PAD)
|
||||
if robot is not None:
|
||||
return Node(
|
||||
robot_1=robot,
|
||||
robot_2=node.robot_2,
|
||||
robot_3=node.robot_3,
|
||||
code=node.code,
|
||||
)
|
||||
|
||||
return None
|
||||
|
||||
# activate pad 1 -> action on robot 1
|
||||
robot_1_action = MOV_PAD[node.robot_1[0]][node.robot_1[1]]
|
||||
assert robot_1_action is not None
|
||||
|
||||
if robot_1_action != "A":
|
||||
robot2 = apply_action(node.robot_2, robot_1_action, MOV_PAD)
|
||||
if robot2 is not None:
|
||||
return Node(
|
||||
robot_1=node.robot_1,
|
||||
robot_2=robot2,
|
||||
robot_3=node.robot_3,
|
||||
code=node.code,
|
||||
)
|
||||
return None
|
||||
|
||||
# activate pad 2 -> action on robot 2
|
||||
robot_2_action = MOV_PAD[node.robot_2[0]][node.robot_2[1]]
|
||||
assert robot_2_action is not None
|
||||
|
||||
if robot_2_action != "A":
|
||||
robot3 = apply_action(node.robot_3, robot_2_action, NUM_PAD)
|
||||
if robot3 is not None:
|
||||
return Node(
|
||||
robot_1=node.robot_1,
|
||||
robot_2=node.robot_2,
|
||||
robot_3=robot3,
|
||||
code=node.code,
|
||||
)
|
||||
return None
|
||||
|
||||
value = NUM_PAD[node.robot_3[0]][node.robot_3[1]]
|
||||
assert value is not None
|
||||
return Node(
|
||||
robot_1=node.robot_1,
|
||||
robot_2=node.robot_2,
|
||||
robot_3=node.robot_3,
|
||||
code=node.code + str(value),
|
||||
)
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def dijkstra_for_code(self, target: str):
|
||||
queue: list[tuple[float, Node, tuple[str, ...]]] = [(0, Node(), ())]
|
||||
preds: dict[Node, tuple[str, ...]] = {}
|
||||
|
||||
while queue:
|
||||
dis, node, path = heapq.heappop(queue)
|
||||
|
||||
if not target.startswith(node.code):
|
||||
continue
|
||||
|
||||
if node in preds:
|
||||
continue
|
||||
|
||||
preds[node] = path
|
||||
|
||||
if node.code == target:
|
||||
self.logger.info(f"found [{target}]: {''.join(path)} ({len(path)})")
|
||||
return path
|
||||
|
||||
for action in cast(Sequence[Action], "A^v<>"):
|
||||
node_2 = create_node(node, action)
|
||||
if node_2:
|
||||
heapq.heappush(queue, (dis + 1, node_2, path + (action,)))
|
||||
|
||||
return None
|
||||
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
yield sum(
|
||||
len(self.dijkstra_for_code(code) or ()) * int(code[:-1], 10)
|
||||
for code in input.splitlines()
|
||||
)
|
||||
def solve(self, input: str) -> Iterator[Any]: ...
|
||||
|
@ -3,57 +3,5 @@ from typing import Any, Iterator
|
||||
from ..base import BaseSolver
|
||||
|
||||
|
||||
def mix(secret: int, value: int) -> int:
|
||||
return secret ^ value
|
||||
|
||||
|
||||
def prune(secret: int) -> int:
|
||||
return secret % 16777216
|
||||
|
||||
|
||||
def next_number(secret: int) -> int:
|
||||
# Calculate the result of multiplying the secret number by 64. Then, mix this
|
||||
# result into the secret number. Finally, prune the secret number.
|
||||
secret = prune(mix(secret, secret * 64))
|
||||
|
||||
# Calculate the result of dividing the secret number by 32. Round the result down
|
||||
# to the nearest integer. Then, mix this result into the secret number. Finally,
|
||||
# prune the secret number.
|
||||
secret = prune(mix(secret, secret // 32))
|
||||
|
||||
# Calculate the result of multiplying the secret number by 2048. Then, mix this
|
||||
# result into the secret number. Finally, prune the secret number.
|
||||
secret = prune(mix(secret, secret * 2048))
|
||||
|
||||
return secret
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
starts = [int(r) for r in input.splitlines()]
|
||||
|
||||
ends: list[int] = []
|
||||
prices: list[int] = [0 for _ in range(2**16)]
|
||||
|
||||
for secret in self.progress.wrap(starts):
|
||||
checked: list[bool] = [False] * len(prices)
|
||||
hashed: int = 0
|
||||
|
||||
for i in range(2000):
|
||||
last = secret % 10
|
||||
secret = next_number(secret)
|
||||
next = secret % 10
|
||||
|
||||
hashed = ((hashed << 4) & 0xFFFF) | ((last - next) & 0xF)
|
||||
|
||||
if i >= 3 and not checked[hashed]:
|
||||
checked[hashed] = True
|
||||
prices[hashed] += next
|
||||
|
||||
ends.append(secret)
|
||||
|
||||
for start, end in zip(starts, ends, strict=True):
|
||||
self.logger.info(f"{start}: {end}")
|
||||
|
||||
yield sum(ends)
|
||||
yield max(prices)
|
||||
def solve(self, input: str) -> Iterator[Any]: ...
|
||||
|
@ -4,64 +4,4 @@ from ..base import BaseSolver
|
||||
|
||||
|
||||
class Solver(BaseSolver):
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
blocks: list[tuple[int, int]] = []
|
||||
frees: list[tuple[int, int]] = []
|
||||
|
||||
contents_0: list[int | None] = [None for _ in range(sum(map(int, input)))]
|
||||
|
||||
acc = 0
|
||||
for i, c in enumerate(input):
|
||||
if i % 2 == 0:
|
||||
for j in range(acc, acc + int(c)):
|
||||
contents_0[j] = i // 2
|
||||
blocks.append((acc, int(c)))
|
||||
else:
|
||||
frees.append((acc, int(c)))
|
||||
acc += int(c)
|
||||
|
||||
assert contents_0[-1] is not None
|
||||
|
||||
contents = contents_0.copy()
|
||||
|
||||
free_0 = next(i for i, c in enumerate(contents) if c is None)
|
||||
next_b = len(contents) - 1
|
||||
|
||||
while free_0 < next_b:
|
||||
contents[free_0], contents[next_b] = contents[next_b], contents[free_0]
|
||||
|
||||
free_0 += 1
|
||||
while free_0 < len(contents) and contents[free_0] is not None:
|
||||
free_0 += 1
|
||||
|
||||
next_b -= 1
|
||||
while next_b >= 0 and contents[next_b] is None:
|
||||
next_b -= 1
|
||||
|
||||
yield sum(i * c for i, c in enumerate(contents) if c is not None)
|
||||
|
||||
contents = contents_0.copy()
|
||||
|
||||
for block_start, block_length in self.progress.wrap(blocks[::-1]):
|
||||
try:
|
||||
i_free = next(
|
||||
i_free
|
||||
for i_free, (free_start, free_length) in enumerate(frees)
|
||||
if free_start < block_start and free_length >= block_length
|
||||
)
|
||||
except StopIteration:
|
||||
continue
|
||||
|
||||
free_start, free_length = frees[i_free]
|
||||
|
||||
contents[free_start : free_start + block_length] = contents[
|
||||
block_start : block_start + block_length
|
||||
]
|
||||
contents[block_start : block_start + block_length] = [None] * block_length
|
||||
|
||||
if free_length == block_length:
|
||||
del frees[i_free]
|
||||
else:
|
||||
frees[i_free] = (free_start + block_length, free_length - block_length)
|
||||
|
||||
yield sum(i * c for i, c in enumerate(contents) if c is not None)
|
||||
def solve(self, input: str) -> Iterator[Any]: ...
|
||||
|
@ -1,15 +1,107 @@
|
||||
import argparse
|
||||
import importlib
|
||||
import json
|
||||
import logging
|
||||
import logging.handlers
|
||||
import sys
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timedelta
|
||||
from pathlib import Path
|
||||
from typing import Any, Iterable, Iterator, Literal, Sequence, TextIO, TypeVar
|
||||
|
||||
from tqdm import tqdm
|
||||
|
||||
from .base import BaseSolver
|
||||
from .utils.api import FileHandlerAPI, LoggerAPIHandler, ProgressAPI, dump_answer
|
||||
from .utils.files import SimpleFileHandler
|
||||
from .utils.progress import ProgressNone, ProgressTQDM
|
||||
|
||||
_T = TypeVar("_T")
|
||||
|
||||
|
||||
def dump_api_message(
|
||||
type: Literal["log", "answer", "progress-start", "progress-step", "progress-end"],
|
||||
content: Any,
|
||||
file: TextIO = sys.stdout,
|
||||
):
|
||||
print(
|
||||
json.dumps(
|
||||
{"type": type, "time": datetime.now().isoformat(), "content": content}
|
||||
),
|
||||
flush=True,
|
||||
file=file,
|
||||
)
|
||||
|
||||
|
||||
class LoggerAPIHandler(logging.Handler):
|
||||
def __init__(self, output: TextIO = sys.stdout):
|
||||
super().__init__()
|
||||
self.output = output
|
||||
|
||||
def emit(self, record: logging.LogRecord):
|
||||
dump_api_message(
|
||||
"log", {"level": record.levelname, "message": record.getMessage()}
|
||||
)
|
||||
|
||||
|
||||
class ProgressAPI:
|
||||
def __init__(
|
||||
self,
|
||||
min_step: int = 1,
|
||||
min_time: timedelta = timedelta(milliseconds=100),
|
||||
output: TextIO = sys.stdout,
|
||||
):
|
||||
super().__init__()
|
||||
|
||||
self.counter = 0
|
||||
self.output = output
|
||||
self.min_step = min_step
|
||||
self.min_time = min_time
|
||||
|
||||
def wrap(
|
||||
self, values: Sequence[_T] | Iterable[_T], total: int | None = None
|
||||
) -> Iterator[_T]:
|
||||
total = total or len(values) # type: ignore
|
||||
|
||||
current = self.counter
|
||||
self.counter += 1
|
||||
|
||||
dump_api_message("progress-start", {"counter": current, "total": total})
|
||||
|
||||
try:
|
||||
percent = 0
|
||||
time = datetime.now()
|
||||
|
||||
for i_value, value in enumerate(values):
|
||||
yield value
|
||||
|
||||
if datetime.now() - time < self.min_time:
|
||||
continue
|
||||
|
||||
time = datetime.now()
|
||||
|
||||
c_percent = round(i_value / total * 100)
|
||||
|
||||
if c_percent >= percent + self.min_step:
|
||||
dump_api_message(
|
||||
"progress-step", {"counter": current, "percent": c_percent}
|
||||
)
|
||||
percent = c_percent
|
||||
finally:
|
||||
dump_api_message(
|
||||
"progress-end",
|
||||
{"counter": current},
|
||||
)
|
||||
|
||||
|
||||
class ProgressTQDM:
|
||||
def wrap(
|
||||
self, values: Sequence[_T] | Iterable[_T], total: int | None = None
|
||||
) -> Iterator[_T]:
|
||||
return iter(tqdm(values, total=total))
|
||||
|
||||
|
||||
class ProgressNone:
|
||||
def wrap(
|
||||
self, values: Sequence[_T] | Iterable[_T], total: int | None = None
|
||||
) -> Iterator[_T]:
|
||||
return iter(values)
|
||||
|
||||
|
||||
def main():
|
||||
@ -17,13 +109,6 @@ def main():
|
||||
parser.add_argument("-v", "--verbose", action="store_true", help="verbose mode")
|
||||
parser.add_argument("-t", "--test", action="store_true", help="test mode")
|
||||
parser.add_argument("-a", "--api", action="store_true", help="API mode")
|
||||
parser.add_argument(
|
||||
"-o",
|
||||
"--output",
|
||||
type=Path,
|
||||
default=Path("files"),
|
||||
help="output folder for created files",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-u", "--user", type=str, default="holt59", help="user input to use"
|
||||
)
|
||||
@ -50,14 +135,14 @@ def main():
|
||||
test: bool = args.test
|
||||
stdin: bool = args.stdin
|
||||
user: str = args.user
|
||||
files_output: Path = args.output
|
||||
input_path: Path | None = args.input
|
||||
|
||||
year: int = args.year
|
||||
day: int = args.day
|
||||
|
||||
# TODO: change this
|
||||
logging.basicConfig(
|
||||
level=logging.INFO if verbose else logging.WARNING,
|
||||
level=logging.INFO if verbose or api else logging.WARNING,
|
||||
handlers=[LoggerAPIHandler()] if api else None,
|
||||
)
|
||||
|
||||
@ -81,11 +166,7 @@ def main():
|
||||
else ProgressTQDM()
|
||||
if verbose
|
||||
else ProgressNone(), # type: ignore
|
||||
files=FileHandlerAPI(files_output)
|
||||
if api and verbose
|
||||
else SimpleFileHandler(logging.getLogger("AOC"), files_output)
|
||||
if verbose
|
||||
else None,
|
||||
outputs=not api,
|
||||
)
|
||||
|
||||
data: str
|
||||
@ -108,11 +189,14 @@ def main():
|
||||
current = datetime.now()
|
||||
|
||||
if api:
|
||||
dump_answer(
|
||||
part=i_answer + 1,
|
||||
answer=answer,
|
||||
answer_time=current - last,
|
||||
total_time=current - start,
|
||||
dump_api_message(
|
||||
"answer",
|
||||
{
|
||||
"answer": i_answer + 1,
|
||||
"value": str(answer),
|
||||
"answerTime_s": (current - last).total_seconds(),
|
||||
"totalTime_s": (current - start).total_seconds(),
|
||||
},
|
||||
)
|
||||
else:
|
||||
print(
|
||||
|
@ -1,18 +1,6 @@
|
||||
from abc import abstractmethod
|
||||
from logging import Logger
|
||||
from pathlib import Path
|
||||
from typing import (
|
||||
Any,
|
||||
Final,
|
||||
Iterable,
|
||||
Iterator,
|
||||
Protocol,
|
||||
Sequence,
|
||||
TypeVar,
|
||||
overload,
|
||||
)
|
||||
|
||||
from numpy.typing import NDArray
|
||||
from typing import Any, Final, Iterable, Iterator, Protocol, Sequence, TypeVar, overload
|
||||
|
||||
_T = TypeVar("_T")
|
||||
|
||||
@ -25,56 +13,6 @@ class ProgressHandler(Protocol):
|
||||
def wrap(self, values: Iterable[_T], total: int) -> Iterator[_T]: ...
|
||||
|
||||
|
||||
class FileHandler:
|
||||
@abstractmethod
|
||||
def make_path(self, filename: str) -> Path: ...
|
||||
|
||||
@abstractmethod
|
||||
def notify_created(self, path: Path): ...
|
||||
|
||||
@abstractmethod
|
||||
def _create(
|
||||
self, path: Path, content: bytes, text: bool = False
|
||||
) -> Path | None: ...
|
||||
|
||||
def create(self, filename: str, content: bytes, text: bool = False):
|
||||
path = self._create(self.make_path(filename), content, text)
|
||||
|
||||
if path is not None:
|
||||
self.notify_created(path)
|
||||
|
||||
def image(self, filename: str, image: NDArray[Any]):
|
||||
import imageio.v3 as iio
|
||||
from pygifsicle import optimize # type: ignore
|
||||
|
||||
path = self.make_path(filename)
|
||||
|
||||
iio.imwrite(path, image) # type: ignore
|
||||
optimize(path, options=["--no-warnings"])
|
||||
|
||||
self.notify_created(path)
|
||||
|
||||
def video(self, filename: str, video: NDArray[Any]):
|
||||
import cv2
|
||||
|
||||
path = self.make_path(filename)
|
||||
fps = 5
|
||||
out = cv2.VideoWriter(
|
||||
path.as_posix(),
|
||||
cv2.VideoWriter_fourcc(*"vp80"), # type: ignore
|
||||
fps,
|
||||
(video.shape[2], video.shape[1]),
|
||||
True,
|
||||
)
|
||||
|
||||
for picture in video:
|
||||
out.write(picture)
|
||||
|
||||
out.release()
|
||||
|
||||
self.notify_created(path)
|
||||
|
||||
|
||||
class BaseSolver:
|
||||
def __init__(
|
||||
self,
|
||||
@ -83,14 +21,14 @@ class BaseSolver:
|
||||
year: int,
|
||||
day: int,
|
||||
progress: ProgressHandler,
|
||||
files: FileHandler | None = None,
|
||||
outputs: bool = False,
|
||||
):
|
||||
self.logger: Final = logger
|
||||
self.verbose: Final = verbose
|
||||
self.year: Final = year
|
||||
self.day: Final = day
|
||||
self.progress: Final = progress
|
||||
self.files: Final = files
|
||||
self.outputs = outputs
|
||||
|
||||
@abstractmethod
|
||||
def solve(self, input: str) -> Iterator[Any] | None: ...
|
||||
|
@ -1,49 +0,0 @@
|
||||
jio a, +19
|
||||
inc a
|
||||
tpl a
|
||||
inc a
|
||||
tpl a
|
||||
inc a
|
||||
tpl a
|
||||
tpl a
|
||||
inc a
|
||||
inc a
|
||||
tpl a
|
||||
tpl a
|
||||
inc a
|
||||
inc a
|
||||
tpl a
|
||||
inc a
|
||||
inc a
|
||||
tpl a
|
||||
jmp +23
|
||||
tpl a
|
||||
tpl a
|
||||
inc a
|
||||
inc a
|
||||
tpl a
|
||||
inc a
|
||||
inc a
|
||||
tpl a
|
||||
inc a
|
||||
tpl a
|
||||
inc a
|
||||
tpl a
|
||||
inc a
|
||||
tpl a
|
||||
inc a
|
||||
inc a
|
||||
tpl a
|
||||
inc a
|
||||
inc a
|
||||
tpl a
|
||||
tpl a
|
||||
inc a
|
||||
jio a, +8
|
||||
inc b
|
||||
jie a, +4
|
||||
tpl a
|
||||
inc a
|
||||
jmp +2
|
||||
hlf a
|
||||
jmp -7
|
@ -1,28 +0,0 @@
|
||||
1
|
||||
3
|
||||
5
|
||||
11
|
||||
13
|
||||
17
|
||||
19
|
||||
23
|
||||
29
|
||||
31
|
||||
41
|
||||
43
|
||||
47
|
||||
53
|
||||
59
|
||||
61
|
||||
67
|
||||
71
|
||||
73
|
||||
79
|
||||
83
|
||||
89
|
||||
97
|
||||
101
|
||||
103
|
||||
107
|
||||
109
|
||||
113
|
@ -1 +0,0 @@
|
||||
To continue, please consult the code grid in the manual. Enter the code at row 3010, column 3019.
|
@ -1,94 +0,0 @@
|
||||
<[<<({{<{<[[([()][()()])<{[]<>}{<>}>><<<[]{}>>{<<><>>({}{})}>][<<<{}<>>([])>{<{}><()>}>]><(<{(()[]){[](
|
||||
<{([({{[(<[({({}{})[()<>]}{{<>{}}[(){}]})]>({(<<<><>>{{}()}>)<<<[]><{}<>>><[{}[]]<<>[]>>>}))[{(<{([]
|
||||
([<([({(<([<({()()}(<>[]))[<[]()>{<>{}}]>]<{{{{}{}}{()()})({[]}[<>{}])}>)>)}){<<{{(<<<()<>><<><>>>
|
||||
[{{[<<[{([[{{[<>{}]<()<>>}[(()<>)[{}<>]]}<<[{}[]]([]<>)>{{[]{}}{()()}}>]][[{<({}{})<[]{}>>
|
||||
<<{{<([(((([{<[]<>>{()<>}}(<<>[]>{(){}})]([{{}<>}<[]>](<[][]><{}()>)))))[({{{<[]{}>[()]}<<<><>>
|
||||
<(<[{(<[{{{<{[[]<>]{<>()}}><[[{}()][(){}]]>}}<[<[<()()>({}<>)]><[{[]()}([][])](<(){}>[<><>])>]{
|
||||
{[[<{{<<[[<<(({}<>){<><>})[[<>()][[]{})]>[[[{}[]]<<>>]{(<>[])}]>{{<<()[]>{<>{}}>[{[]<>}<[]{}>]
|
||||
({[((((([{[({[{}[]]<[]()>}[({}{})<<>[]>])<[(()[])<{}()>]{[[]<>]{[]()})>](([({}<>)(()[])][<[]{}>])
|
||||
{[[{[({(<<{<([{}<>])<({}<>)({}<>}>>[<[{}()]([]<>)>((<>())<[]{}>)]}<([(<>())[(){}]]{[{}<>]<[][]>}){<{<><
|
||||
(<{<<[<<([[([<<><>>]<<{}()><[]<>>>)]][{(({<>{}}(()())))(<[()()]<[]()>>)}[[<<<>()><<>{}>>([{}<>][{}[]])]{<{(
|
||||
<<[({{{{{[<([((){})([]())]<((){})({}[])>)[{[{}()]{[]<>}}]>([<{{}<>}><({}<>)({}[])>]<[{<>{}}
|
||||
(([[{{({{{[<<{[]()}({})>{{{}()}[[]<>]}>{<([])>[[[]{}]]}](([<[]{}>]<<[]<>><{}[]>>))}}}(([[[{[<><>
|
||||
<<[(<[{{<((<[<()>[<><>]][[<><>]([]())]>[({<>})<<()<>><{}[]>>])[[(<[]<>>([]())){{<>[]}(()())}]]){(<(<[]<>>
|
||||
({[<<[[{<[[{{[()()]{()[]}}}]<{([{}{}]{[]()})[[()[]]<<>>]}>]>}[({((<{<><>)>{{[]()}{{}[]}}){([{}[]]<{}{}>)<
|
||||
([{{<{[(<[<<[({}())({}())]>>[{[<<>[]>[<>()]]<(<>[]){()[]}>}(<<<>[]>[<>[]]>{<<>[]>{{}()}})]]{
|
||||
<[{{<[((<([[{<<><>>{()}}{<{}[]><[]()]}]])<{({<()>{()[]}}(<(){}><[]<>>)){[({}[]){<>[]}]}}<<([()()]<()(
|
||||
<{<{[(({(({({<[]>([])}<<()<>>{<>()}>){[[()[]]<{}()>]{({}[])[()<>]}}}<[<<{}()><[]{}>>({[][]}[()<>])}{<<[]
|
||||
<[{{[<({(<[<[[()<>]({}[])]([{}[]]([]))>]{[{{<>[]}[[]{}]}(({}<>)<()[]>)]<<[()[]]>({(){}}<{}()>)>}>)}<<[[[[<<>(
|
||||
{{<(<[((({(<[<[]{}>[(){}]](<{}<>>((){}))>){(({[]{}}<{}[]>){{<><>}[[]{}]}))}<([<(<>)>[<<>{}>[{}
|
||||
<([({[<[(({[(({}))(<{}()><<>{}>)]<[{{}[]}{{}<>}]{[{}()]{{}()}}>})([[<(<>())({}{})>[<[]<>>[
|
||||
{((<<<{<(<[[[<{}<>}]<(<><>)>]]<(([(){}]{[]()}))<({{}<>}<()<>>){<()<>>{(){}}}>>>{({({()[]}[<>
|
||||
([<[[((<(<[<([{}[]])>{<(()<>)((){})>{<<>>(()<>)}}][{[(<>[])(<>[])]}[[{{}[]}[()()]]<<[]<>>{(){}}>]]><({(
|
||||
[{<([[[{([{<<([]<>){<><>}>[<(){}>]><{[<>[]](()<>)}[{()()}]>}<({{{}{}}}{[{}{}]<<>()>})<(<[]<
|
||||
(<({[{{[[(<[<(<>[])[[][]]>]{((<>[])({}<>))({[]<>})}>({<[()[]]]<{()[]}>})){(<(<<>[]>[<>{}])>{[({}<
|
||||
(<{<(({[(({[[<<>{}>({}<>)]{({}{}){(){}}}]{(<(){}>[[][]])<{()<>}>}}[[[{[]{}}[()]]](([[]()][(){}]))])
|
||||
([({<{[{<[{<({{}()}{{}()})>}]>}<<[[{{((){})<<>{}>}(({}[]){<>[]})}]]><[{{<({}<>)(()())>[{<>()}{{}()}]}{<{
|
||||
<[{[({[<<[[<<{{}{}}<{}{}>>([<>][(){}])><<<{}{}>>>]]{([{[[]()][[][]]}<{[]<>}>]<<[<>[]][[]()]><<()[
|
||||
[{({{{<<{[{([[()]({}[])]{[()()]})(((<>{})[[][]])<{{}{}}>)}]}>>}[((({{<([[]()][[]])}}{{<({}[])[{}
|
||||
{[({<{<<{[(([<<>[]>({}{})>))]{(<{{{}<>}<<>{}>}>)}}><(<(({([]())(<>[])}{{[]()}{[][]}})<{(()[])[<>{}]}>){({
|
||||
[<((<[<<(<<{<(<>)<[]{}>>[<[]{}><[]()>]}<((()[])((){}))[({}[]){[]{}}]>>([<[{}()][[]{}]>{{()[]}}][{[{}<>]<[]<
|
||||
[<[({({[([{<(([]<>)({}[]))<{{}[]}[<>[]]>><[<{}[]>({}<>)]<(())>>]]([[[{[]<>}({}[])](<[]{}>{<>()
|
||||
{[<<{(<[{(<[({[]{}}{[]{}}}]({<()[]><<>[]>}{<[]()>[{}{}]})>)}{[{(((<><>))(<[]<>>(()[])))[[<[]()>[{}()]](((
|
||||
({[<<([[{(<<<{<>()}<{}<>>>[[[]{}){()}]><[[(){}]<[]<>>]({(){}}[[]{}])>>{[{[()<>][{}()]}][[[{}{}]<<>()
|
||||
([(<((<{[[[[[{{}()}{()[]}]]<([[]<>])<[()<>][[][]]>>]][{([{()[]}(()[])]({<>{}}{[]()}))}({([[]
|
||||
(({{[<<{(([{<{()()}[[]()]>{<()<>>[[]{}]}}{[<()()>[[]{}]]{([]())({}[])}}][(<{<>[]}[()()]><<()>(()())>)
|
||||
[<(<{{{<{(<{(<<>[]><<>()>){<{}()><()<>>}}(<[<>{}]{<>{}}><[{}{}][<>()]>)>)}{{{(<(<><>)(<>())><{[]}([][
|
||||
<<<{([[<[[[(([[]{}])<({}())(<>())>)({[<>{}]{[]()}}<<(){}>{(){}}>)]{([(()()>({}[])]((<><>)<
|
||||
{{({<<<[[<(<{{{}<>}({}[])}{<{}<>><<>()>}>{({{}<>}({}()}){[[]<>]([]{})}}){{[[[][]](()())]}([<<>{}
|
||||
<<[[<{{({<{[{<<>()><()()>}<[()<>]<()()>>]{(([]<>)[{}[]]){{{}<>}{[]<>})}}>{{<[<{}<>>({}())]
|
||||
({[<[[{<<{{[{(<>{})}]{<[{}{}][[]()]>[[[]{}][()()]]}}[(<<{}[]>{<>[]}>{{{}<>}[(){}]}){{[<>{}]<{}{}>}{
|
||||
(([<{<[[([[(((()<>))({{}[]}<()<>>))[[({}[])(())]<{(){})>]][{((()){[]()}){{()<>}{<><>}}}[{{()}{()[]}}]]]){{(({
|
||||
{<[{(<[{[{{[<([]<>)<{}<>>>]}}]}]><{{<[[([{<>()}[[]{}]]({{}()}{<>{}}))]{([<[]{}>(()<>)]<[[]<>]([])
|
||||
{[<<[<(<[{<<[{{}()}{<>{}}](<{}<>>({}<>))>><{<({}[])<()<>>>[[<>[]][<><>]]}[<(<><>){{}<>}>[<[]()>{[]}]]>}]{[<{<
|
||||
(<({{[{<(<<<{[{}<>]({}[])}{[[]{}]<()[]>}>(<[[]()][()()]><[()[]][<>()]>)>>[(<<<{}()>{<><>}>>){<<{<><>}(
|
||||
(<{[[{{<(<(<({{}<>}{{}()}){[()<>]<{}[]>}>[(<{}{}><[]()>)<({}<>){()()}>]){[[([]{}){{}[]}]<[{}{}]<[][]>>][{<()
|
||||
[(<([({[[[<[[[[][]][{}{}]]([{}()]{<>{}})]{<{()()}<()<>>><{{}<>}<(){}>>}>]{{[([[][]]<()()>)
|
||||
(<(<<({{(<[{{[()<>][<>{}]}[<[]<>>]}<<{[]{}}>[[{}()]{()()}]>]{[([()()]<<>>)({()<>}[<>[]])][{{[][]}(<>())}
|
||||
[[((({(({{{[{{<>[]}[<>{}]}[[{}<>]([]())]][{(<><>)}]}][(<{{[][]}(<><>)}<[[]()]>>([[{}()]<[]<>>][<[][]>[()()]])
|
||||
<{({(([((<[<{(()[])<[][]>}{<<><>><[]<>>}><<([]<>)([]<>)>>]{[<([]{}]{<>{}}>]}>[{[(([]{})[{}{}])[<<>{}
|
||||
{(([<{(({<({{{{}{}}}[[[]]{[]()}]}{<[[]]<<>()>>(<()>[()<>])})>{{[(([]<>){{}()}){[{}]{{}<>}}]}([[([]{})]<[[](
|
||||
<{[({<{[[[{{{[{}{}]}}([<[][]>[<>[]}][<<>()>{()}])}((<({}[])[<><>]>(((){})[{}()]))[[<{}[]>[(
|
||||
{<[([(<((<<<<[{}[]]({}{})>((()())[(){}])><([[]{}][()<>])<<<>[]>([]<>)>>><[[((){}){[][]}}{[[]]
|
||||
[{(<{<{<<({({(()<>){{}[]}}([[]()]{()<>}))(([[]<>](())))}<{({()[]}{[][]})}])>>}>(({[{[{{([]())(<><>)
|
||||
<[[<([<<({[[(<[]()><<><>>)({<>})]{{<<><>>[()[]]}([()<>](()[]))}]((<{<>{}}<(){}>>))}<<[(<(){}><<>{}>)[[()[
|
||||
<[{<<<{[{<{(<[<>{}][{}()]>((<>[])[<><>]))<[({}<>)<<>[]>]<(<><>)(<>{})>>}({<<[][]>([]<>)>([<>{}><<>[]>
|
||||
[<<(<{((<([<({{}{}](<>[]))[[()<>]([][])]>((([])<(){}>))]){<{{<()[]>(()<>)}(<[]<>>([][]))}><[([(
|
||||
{[[[{{<[[{<[<<<>[]>{<><>}>{<<>{}><[]<>>}]((<{}()>(<>[])))><<{<<>{}>{(){}}}([{}{}]<<>()>)><[{<>{}}]>>}]
|
||||
((((([[(([{<({()[]}<()<>>)><<<<>()>({}{})>{{(){}}(<>[])}>}<<<{<><>}>><(((){})<[]()>){{()()}({}<>)}>
|
||||
<<[<[{<[<[<{[[()[]]({}[])]{<{}<>>[{}{}]}}[([[][]])[([]())[[]<>]]]>[(<<{}()>(()<>)>{{[]{}}<{}{}>})({([
|
||||
[{<(<{(<[<[[[{()<>}[[][]]][(()<>){{}[]}]](<{<>{}}[()[]]>(<[]>[{}()]))]([([<>{}]<()[]>){{<>{}}{()
|
||||
<[<({<({[{({{(<>{}){[]()}}<{[]<>}[(){}]>}({[<>[]]{[]<>}}))<{([{}[]])(({}[]){(){}})}[{[[]<>]}[({}())[(){}]]]
|
||||
[[[{<[((<[<{([[]<>]{<><>})<<{}[]>[[][]]>}{[[<>{}]]<<{}>([]<>)>}>{<{{<>[]}}[(<><>)[[]<>]])<{[(){}]<()()>}>}]{{
|
||||
([(<({[[{<([{{<>{}}([]<>)}[[{}[]]{<>{}}]](<[{}<>]{[]()}><((){})[[][])>)){({{{}{}}{{}{}}}[<{}{}>({}<
|
||||
<[{(((({[[{{({{}[]]<<>>)<{[]()}<()<>>>}((<(){}>([]{})))}{({[()()]([]<>)}<([]<>)[()()]>)<[{{}[
|
||||
<[({[<<<<{[({{(){}}[{}<>}}(<<>[]>[[]()])){(<()[]><<>()>)}]}><({<[{()()}]({[]{}}<{}>)>[({[]
|
||||
<<([[<{{([{<{([]{})[(){}]}{([]{})<{}[]>}><<(<>{})[<>()]>({{}<>})>}<[(<<>()><{}()>)<{()<>}<<>>
|
||||
<[[[({[({<[{((<>[]]<{}<>>){<<>()>{[]()}}}<{<{}{}>[<>{}]}{{{}[]}{{}()}}>]{<{{()()}<[]<>>}((
|
||||
[[({(([[(([<[([]<>){{}()}]>(<{{}{}}(()<>)>[{<><>}{{}<>}])]{{<[[]<>]>[[{}()]]}([<{}()>][([]{})<{}
|
||||
<(([<{([[<[((([]<>)<<><>>){[[]()]({}{})})({{(){}}((){}]}({{}()}))]([<{<>()}<[]{}>><{[]{}}<(){}>>])>
|
||||
<<[[{<<{[(<<{{[][]}[[]<>]}<<[][]><<>[]>]>([{<>}[<>[]]]{{[]()}<{}()>})>{({({}<>){[]<>}}[{<>{}}[<>[]]
|
||||
((<<<<[[(({[[<()<>>[(){}]]{(<>()){<>{}}}]}{(([<>[]><<>()>)<<(){}><()()>>)[(<{}{}>((){}))[{[][]}(()<>)]]})){
|
||||
[({(<{{<<<{<[{[]()}<<><>>][[()[]][<>[]]]>}>([([<[]<>>]{<<>()><()<>>})({<{}[]><()()>}[[[]()]])]<{<(()
|
||||
([(<({[([{{{((()())[<>[]]){{[]<>}[{}{}]}}([{()<>}<{}()>])}}<{[({(){}}(<><>)}<(<>())>][<[(){}]{(){}}
|
||||
{[[{((((([[{{[[]{}]({}{})}{[[]<>](()[])}}[{[()()]}((<>{})<(){}>)]]{(<{<>()}<(){}>>){(<{}()>{{}<>})({<>(
|
||||
([[{<[<[[<<{<{()<>}[<>()]>[[[]{}]{{}{}}]}<[{{}[]}]>>{<{{<>{}}([]())}>[(<<>()>)(<{}()>[<>()])]}>{({<[()<>]
|
||||
{(([{[{{(({(<[()[]][<>[]]>)<[(()<>){{}{}}]>}[(<<{}{}><{}<>>>){<[()()]<()()>>({[][]}<<><>>)}
|
||||
<[{<(<<[{[({[({}<>)<<>[]>](<<>()>(<><>))})[([{<><>}<()()>])]]}]><<[<({{{<>}}<([]][<>{}]>}[<(())<<><>>>])
|
||||
(<(({<[[{{[<[{<>[]}[()<>])((()()){{}[]})>]}}]]((<<<((({}{})<{}>){{{}<>}{<>}})[({{}()}{<>()}){{{}()}}]
|
||||
{[<[{(([<[{{[([]{})<[][]>]{([][])[()<>]}}<<(()<>)>>}[[(({}{}){{}<>})]]]{{[(<{}{}>[{}()])({()()}
|
||||
[{{((<<[[((<<{[]<>}<{}>>(<{}<>>{[]()})>({<()>([][])><[{}{}]{{}()}>))(({([]<>)([]())}<{[][]}<()>>)
|
||||
({([{({[({[<({{}{}}([]()))(((){}){{}{}}>>({(()()){{}()}})]<[[{{}{}}<{}[]>]{<[][]><<>[]>}]({<<>[]>
|
||||
{[({[{{[<[{([<{}{}>[(){}]](<{}<>>{{}()}))([([]()){()[]}]([{}<>]{<>{}}))}]>[{{[[{[][]}]]<((()[])([]{}))<[()
|
||||
[[(({{{(([[[{[()()]([]())}((<>){{}{}])]]({<[<>]({}{})>([<>{}]{{}{}})})]))}[(<[[(([[][]]{<>{}}){{(){}}})
|
||||
<(<({<{<[<(<{<()><<><>>}<<{}[]>([]<>)>>)<{<{[]{}}[{}()]>}([(()[]){[]<>}]{{<>()}{{}<>}})>}{[[{(()[]){(
|
||||
[(<(<([{<[{<(<()>([]<>))[{()()}<{}<>>]><{([]())<<>()>}(<{}{}>[()[]])>}]<{<({[][]}<[]()>){{{}[
|
||||
[<({<{(<<[[[<{()[]}{{}[]}>{[<><>]}]{[<()<>>({}<>)]}]][[{<[<>[]>([]())><{()()}{[]{}}>}([({}{})[[](
|
||||
<<[[{{<<([[{[(()())[()]][[{}[]]{{}}]}[[({}<>){[]{}}]{{<><>}[()[]]}]]{<[(<>())]>{({{}()}(()<>))}}])
|
||||
{<[{({[({{<({[{}()]([][])}([{}<>]{[]()}))[<(<><>)([]{})><{()()}(<>[])>]>{{(<[]<>>[{}])}[<{(){}}(<>
|
||||
<{{(({([[<[{<(<>)([]{})>{<<>{}>{(){}}}}]{[<([]{})<{}{}>>[[<>{}]{()<>}]][{{<><>}([]())}({()<>}<()>)]}>]
|
||||
{<{[{[({[(({<[{}()]({}[]}>[<()>]}{(<<>>)}))]})]{<{<{[[{(<>())[()[]]}[[{}{}][[]]]][([[]()]<{}<>>)[<[]{}>([]<>
|
||||
((<{{<[[<{{([([]{})<<>()>]<(<>{})(()<>)))([{()()}(<><>)]<(<>)(<>{})>)}([<{(){}}<<>{}>>]<[([]<
|
||||
[<<<{(((<<{([<()[]>({})]({<>()}(()())))({([])<<>>}((()[])[()[]]))}{<[<{}()>]<[{}{}]({}<>)>>{<<
|
||||
[[[<<<<[{(<<[{{}[]}]<(<><>)(<>[])>><<<<><>][[][]]>(([]{}))>>([<[[]<>]<[]<>>><{()<>}([][])>]))}<(
|
||||
<<{[[[{{{{[[(([]{}))([<>[]]<()>)][{(<>()){[]()}})]{(({<><>}{<>[]})[<<>[]>[()()]])}}}<{(<((<><>)(<>{}))<{
|
@ -1,10 +0,0 @@
|
||||
4738615556
|
||||
6744423741
|
||||
2812868827
|
||||
8844365624
|
||||
4546674266
|
||||
4518674278
|
||||
7457237431
|
||||
4524873247
|
||||
3153341314
|
||||
3721414667
|
@ -1,26 +0,0 @@
|
||||
xq-XZ
|
||||
zo-yr
|
||||
CT-zo
|
||||
yr-xq
|
||||
yr-LD
|
||||
xq-ra
|
||||
np-zo
|
||||
end-LD
|
||||
np-LD
|
||||
xq-kq
|
||||
start-ra
|
||||
np-kq
|
||||
LO-end
|
||||
start-xq
|
||||
zo-ra
|
||||
LO-np
|
||||
XZ-start
|
||||
zo-kq
|
||||
LO-yr
|
||||
kq-XZ
|
||||
zo-LD
|
||||
kq-ra
|
||||
XZ-yr
|
||||
LD-ws
|
||||
np-end
|
||||
kq-yr
|
@ -1,50 +0,0 @@
|
||||
14567892107654348943218769016567650154541210421036
|
||||
03456783298993267654309458122168743243450344323145
|
||||
12567654456780154327812367433059804012769455410234
|
||||
03498012349876065016901056544965418765898766708943
|
||||
12345101212145076545411034545878329658981055899854
|
||||
09876876705034187632110123656789421047432765988765
|
||||
67878965896123298901001656743078431236598894012034
|
||||
50965014387654567650012349856127340012367653213125
|
||||
41234321298347656543243492347833458903458743404987
|
||||
30087430178298343650156781016942167812769252985676
|
||||
21196567069121243761056432679851043212890101679854
|
||||
33203498451080252852347841589765654301285234521763
|
||||
14512432347890161943210950432106567610106501430012
|
||||
01693501036543270856102167645656788943217432567897
|
||||
32789672321015389987343078938765497654998549879898
|
||||
45679987410234578101256560129812321067801456734787
|
||||
03478756500187665432107452121901054328982340125676
|
||||
12568767891098987013898943030810167017654321010210
|
||||
21079458910127698123965436945107878988901267124378
|
||||
30980349821034787654876327876716901210985458095469
|
||||
45671210136765693454761016329825432345671329186954
|
||||
12789800345876548763876125419434501654510413277843
|
||||
03543211238989439012985630308765898746701204567832
|
||||
14623400141232323101234521678906567239874343236901
|
||||
25710519850541014143219834567611452108965650145690
|
||||
76897678769650001054301712106320143210345789036781
|
||||
87678989678742112363212601235431234321276988325432
|
||||
90549876349233678478004592347842389123489676710876
|
||||
21632305256104569589123487656965476016512369856945
|
||||
52301014107012345670149874565456365017603450747832
|
||||
65490123458912396501234563432147454328214921632401
|
||||
86985432167905487654341012563038901039309834521321
|
||||
97876789001856778761232127678127612398712701100410
|
||||
89810678012760869890103238999210543125625632234509
|
||||
76701549013451987217876434785695610034534548765678
|
||||
05432432174012987301987325654780123435210159854789
|
||||
12980120985123673458986510783279234987346543123898
|
||||
43878921976034562567603412892168765679857012010187
|
||||
34565437852178901070412103601001410012768001921236
|
||||
45430566543065012181543014580432321003459122876545
|
||||
50121098767654327892678877698569457654219433468904
|
||||
23292145678954218983019988087658768894308596567812
|
||||
14587239010563007654128679112565489765107687656521
|
||||
05674678323472167659436543203474321087230156785430
|
||||
96983565401089898748540987654589321098543243896543
|
||||
87874328992396701037621296562105465407698012565432
|
||||
78765017687478632128760345673456978312789801478521
|
||||
29653078596569543019656921087567889213456700329650
|
||||
12532169430430156010567892193610367804765410418789
|
||||
03445678321321060123456543012323458912894321001678
|
@ -1 +0,0 @@
|
||||
2 77706 5847 9258441 0 741 883933 12
|
@ -1,140 +0,0 @@
|
||||
QQQQQQCCCCCCCCCCCCXXXXXXXXXXXXXXUUUUUUJEEJJJJJQQQQIIISSVVVVVVVVVMMMMMMMMMMMMMMMMMMVVVVVWWWWFFFFFFFFFFFFAFZZZZZZZZZZZMMMMMMMMMMMMMMMMMMVMMQQQ
|
||||
QQQQQCCCCCCCCCCCCCCCCXXXXXXXXXXUUUUUUUJJJJJJJJIIIQIIIIVVVVVVVVVVMMMMMMFMMMMMMMMMMMMVVVWWWWWFFFFFFFFFFFFFFZZZZZZZZLLZMMMMMMMMMMMMMMMMMMMMQQQQ
|
||||
QQQQQQCCCCCCCCCCCCCCCCCCCXXXXXXUUUUUUJJJJJJJJJIIIIIIIIIVVVVVVVVMMMFFFFFMMMMMMMMMMMWWWWWWWWFFFFFFFFFFFFFFFZZZZZZZZLLZMMMMMMMMMMMMMMMHMQQMQQQQ
|
||||
QQQQQCCCCCCCCCCCCCCCCCCCXXXXXXXUUUUUUUJJJJJJJJIIIIIIIIIIVVVVVVVVMMMMFFFMMMMMMMMMMMWWFFWWWWFFFFFFFFFFFFFFFZZZZZZZZMMMMMMMMMMMMMMMHHMHQQQQQQQQ
|
||||
QQQQQQCCCCCCCCCCCCCCCCCXXZXXXXXXUUUUUUJJJJJJJYIIIIIIIIIIVVVVVVVVVVVFFFBBBMMMMMMMMFFWFFWWWWFFFFFFFFFFFFZZZZZZZZZZZLLMMMMMMMMMHMMHHHHHQQQQQQQQ
|
||||
QQQQQQCCCCCCCCCCCCCCCZZZZZXXXXXXXUUUUUJJJOJJJYIIIIIIIIIVVVVVVVVVVVBFFFBBBBMMMMMMFFFFFFWZWWWWFFFFFFFFFFZZZZZZZZZZLLMMMMMMMMHHHHHRHHHHHHQQQQQQ
|
||||
QQQQQQCCCCCCCCCCCCCCCZZZZTTXXXUUUUUUUUUUUOJJJJIIIIIIIIIIVVVVVVVVVVBBFBBBBBMMMMMMFFFFZDZZZWWWFFFFFFFFFFZZZZZZZZZZLLMMMMMMMMMHHHHHHHHHHHQQQQQQ
|
||||
QQQQQQCCCCCCCCCCCCCCZZZZPTTTXXXXXUXXUUUUUOOJUUUUUIIIIIIIVVVVVVVVVBBBBBBBBBBBMMMFFFFFZZZZWWWAAAFFFFFFFFZZZZZZZZZZZLMMMMMMMMMMMHHHHHHHHHQQQQQQ
|
||||
QIIIIIICCIWCCCCCCCCZZTTTTTTTTXXXXXXXXUUUUOXJUXUUUIIIQQQQQQQVVVVVVBBBBBBBBBBBMFFFFFFFZZZZAAAAAFFFFFFFDZZZZZZZZLLLZLLLMMMMMMMMMHHHHHHJJQQQQQQQ
|
||||
IIIIIIICCIIMMQCCCCZZTTTTTTTTXXXXRRXXXUUUGXXXXXUUUIIIQQQQQQQVVVVVVBBBBBBBABMBMFFEFFFFFZZZZAAAAFFFFFFFDAZZZAAAALLLLLLMMMMMMMMMHHHHHHHJJQQQQQQQ
|
||||
IIIIIIIIIIIMMMCCCCTTTTTTTTTXXXXXRTRXXXRRRXXXKKUUUUIOQQQQQQQVVVVVBBBBBBBBBBMMMFFFFFFFZZZZZAAAAFFFFAAFFAZZAAAAALLLLLLLLLLMMMMMHRHHHHHHJJJQQQQE
|
||||
IMIIIIIIIIINNNNNNNNTTTTTTTTTTXRRRRRRRRRRRXXXXKKUUKOOQQQQQQQTVVVVBBBBBBBBBMMMFFFFFFFFZZZZZZZAAAAAAAABAAAAAAAAALLLLLLLLLMMMMMRRRRHHHPIJJJJBBBE
|
||||
GIIIIIIIIIINNNNNNNNTTTTTTTTTTXRRRRRRRRRRXXKXXKKUUKOOQQQQQQQTVVVBBBBBUUUUMMMMFFFFFFFFFZZZZFAAAAAAAAAAAAAAAAAAIILLLLLLLLFMMMMRRRRHHIIIJJJJBBBB
|
||||
GIIIIIIIIIINNNNNNNNTTTTTTTTTXXRRRRRRRRRXXXKKKKKUUKOOQQQQQQQQQBBBBBBBUUUUMMMMFFFFFFFFFZZZFFFAAAAAAAAAAAAAAAAAAATLLLLLLLFMMMMRRRRIIIIIJJBJBBBB
|
||||
GIIIIIIIIIINNNNNNNNTTTTTTTTYXYRRRRRRRRRRRRPKKKKKKKOOQQQQQQQQQBBBBUUBUUUVUMMMFFFFFFFFFZZHFAAAAAAAAAAAAAAAAAAAGTTTLLLLJLLJMRRRRRIIIIIIIBBBBBBB
|
||||
GGGIIIIIIIINNNNNNNNNNNNNTTCYYYRRRRRRRRRRRRPKKKKKKKKKQQQQQQQQQBBUUUUUUUUUUMMMMFFSFFFFFFFFFAAAAAAAAAAAAAAAAAAAATTTLLLLJJLJRRRRRRIIIIIIIBBBBBBB
|
||||
GGGIIBIIIIINNNNNNNNNNNNNTTCYYYYYRRRRRRRRRRKKKKKKKKKVQQQQQQQTUBBUVUUUUUUUUUUMMMFFFFFFFFFFFAAAAAAAAAAAAAAAAAAATTTTTTTJJJJJRRRRRRRPIIIIIBBBBBBB
|
||||
GGGGGGIIIKINNNNNNNNNNNNNTTCYYYYYRRRRRRRRRKKKKKKKKKKKQQQQQQQFFFFFFFFFFUUUUJUFFFFFFXXFFFFFFAAAAAAAAAAAAAVAEACATTTTTTTTTJJRRRRRRRRPIIZZIBBBBBBB
|
||||
GGGGGGIIKKKNNNNNNNNNNNNNTTTYYYYYRRRRRRRRHKKKKKKKKKKKQQQQQQQFFFFFFFFFFUQUUUGGPGFFFFXFFFAFAAAAAAAAAAAAAAAAERCTTTTTTTTTVVVNNNRRRRRPIIZLLPBWBBBB
|
||||
GGGGGGGKKKKKPPNNNNNNNNNNPPPPPPYYRRRRRRRHHHKKKKKKKKKKTTTTTTTFFFFFFFFFFUUUUHGGGGFXFXXFFFAAAAAAAAAAAAAAAAAARRRTTTSVTTTVVVVNNNNNRRRRNILLLLWWBBBB
|
||||
GGGGGGKKKKPPPPNNNNNNNNNNPFPPPPPPRRRRRRRRRRKKKKKKKKIIITTTTTTFFFFFFFFFFOUUHHGGGGFXXXXXFFFAAAAAAAAAAAAAAAARRRRTTAVVVVVVVBVVVNNNNVVLLLLLLLWBBBBB
|
||||
GGGGGIIIKKKKPPNNNNNNNNNNPPPPPPPPPJJJIRRIIIKKKKKKKIIIITTTTTTFFFFFFFFFFODUHHGGGGGXXXXXXRFAAAAAAAAAAAAAAARRRRROTTVVVVVVVVVHVNNVVVVVVLVVLBBBBBBB
|
||||
GGGGGGIIIKIKPPNNNNNNNNNNPPPPPPPPPJJIIIIIIIIIGIIIKIIIIITTTTFFFFFFFFFFFYDYHGGGGGXXXXXXXXCAAAAAAAAAAAAAAARRRRRRRRRRVVVVVVVHVVVVVVVVVLVVRRBBBBBB
|
||||
GGGGIIIIIIIKPPNNNNNNNNNNPPPPPPPPPPJIIIIIIIIIIJIIIIIIIIPTTTFFFFFFFFFFFYYYHGGGGGGGXGXXXXCAAAAAAAAAAAAAARRRRRRRRRRVVVVVVVVHYVVVVVVVVVVVRRBBBBBB
|
||||
GGGHIIIIIIIIPPNNNNNNNNNNPPPPPPPPPPIIIPPPPPPIIJIIIIIIIIIIGTFFFFFFFFFFFYYBBBBGGGGGGGGGCCCCCACAAAAAAAAAARRRRRRRRRRVRRVVVVVHYYVVVVVVVVVVVRRBBBGB
|
||||
GGGGFFIIIIIIZZNNNNNNNNZPPPPPPPPPPIIPIPPPPPPIIIIIIIIIIIIIITFFFFFFFFFFFYYBBBBGGBGGGGCCCCCCCCCAAAAAAAARRXRRRRRRRRRRRRVVVVVVWYVVVVVVVVVVRRRBBGGG
|
||||
TGGGIIIIIIIIZYNNNNNNNNZPPPPPPPPPPIIPPPPPPPPIIIIIIIIIIIIIDDFFFFFFFFFFFHHBBBBJGBGGGGCCCCCCCCAAACCCADDRRRRRRRRRRRRRRRRVLYYYYYYYVVVVVVVVRRGGHGGG
|
||||
GGGIIIIIIIIIIINNNNNNNNPPPPPPPPPPPIIPPPPPPPPIIIIIIIIIIIICCDFFFFFFDDHHHHHBBBBBBBGGGGGGCCCCCCCCCCICDDDRRRRRRRRRRRRRRRXVLLYYYYYYVVVVVVVVVGGGHGGG
|
||||
GGGIIIDIDIIIIYNNNNNNNNPPPPPPPPPPPPIIIIPPPPPIIIIIIIIIICCCCCFFFFFFDDHHHHBBBBBBBBBGGGGGCCCCCCCJJCCDDDDRRRRRRRRRRRUUUUYYYYYYYYYYYMMVVVVVZZGGGGGG
|
||||
DGGGDDDDDIIIYYYYYYPPPPPPPPPIPPPPPPPIIIPPXXPPPXIIIIIIIICCCCFFFFFFDDDHHBBBBBBBBBBGGGGGCCCCCJJJJCDDHHHJHNNRRQRRRSSUUUUSYYYYYYYYYYYAVVVVVZGGGGGG
|
||||
DDDDDDDDDDDYYYYYYYYYPPPPPPPIIPPPIIIIIIXXXXXPXXIIIIICCCCCCVFFFFFFDDDDHBBBBBBBBBBBAAGGCAADDDDDDDDDHHHJHNHHRRRMMSSUUUSSYYYYYYYYYYYQVVXXGGGEGGGG
|
||||
DDDDDDDDDDYYYYYYYYYPPPIPPIIIIIIIIIIIIIIIXXXPXXXBBXCCCCCCFTFFFFFFDDDDHDBBBBBBBBBAAAAAXAAAAAADDDHHHHHHHHHHHMMMSSSUSSSSYYYYYYYYYYYQQVQQQGGGGGGG
|
||||
DDDDDDDDYYYYYYYYYYYPPPIIIIIIIIIIIIIIIXXXXXXPXXXXXXCJCCCFFFFFFFDDDDDDDDDBBBBBBBBAAAAAAAAAAAADDDDHHHHHHHHHHMMHDSSSSSSSYYYYYYYYYUYYQQQGGGGGGGGG
|
||||
DDDDDEDDYYYSYYYYYYYYTYIIIIIIIIIIIIIIIXXXXXXXXXXXXCCJCCCCFFFFFFDDDDDDBBBBBBBBBBBAAAAAAAAAAAAAAHHHHHHHHHHHHHMHHSSSSSSSYYYYYYYYYYYLQQQGGGGGGGGG
|
||||
DDDDEEDDYYYYYYYYYYYYTYIYIYIIIIIIIIIIIIXXXXXXXXXXYJCJCCFFFFFFFFFDDDDDZZBBBBBBBBBAAAAAAAAAAAAAAHHHHHHHHHHHHHHHJJIBSSSSSYYYCYYQQQFQQQQNGGGGGGGG
|
||||
DDDEEEEEEEYWYYYYYYYYYYIYYYIIIIIIIIIIXXXXXXXXXXXXJJJJJJFFFFFFFFFDDDDDZZBBBBBBBBAAAAAAAAAAAAANHHHHHHHHHHIIHHHJJIIBSSQYYYYYYQYQXXQQQQAKKGKGGGGG
|
||||
EEEEEEEEEEEWWYYYYYYYYYYYYYYYIIIIXIXXXXXXXXXXXXXXXJJJJFFFFFFFFFFDDDDDDZZBBBBBBBAAAAAAAAAAAAAATHHHHHHHHHIIIIIIIIIIIQQQQYYYYQQQXXXQQQKAKKKKKKGK
|
||||
EEEEEEEEEEEWWYWYYYYYYYYYYYYYYYIIXXXXXXXXXXXXXXXXJJJJFFFFFFFFFFFDDDDZZZZZBBBBBBBBAAAAAAAAAAAAAAHHHHHHHIIIIIIIIIIIIIQQQQQYYQQQQXQQQQKKKKKKKKKK
|
||||
EEEEEEEEEEWWWWWYYDYYYYYYYYYYYYYIIXXXXXXXXXXXKKKJJJJJFFFFFFFFFFFFDDDDDZZZZZZZBBBBAAAAAAAAAAAAAEMHHHHHHIIIIIIIIIIIIIQQQQQQQQQQQQQQQQQQKKKKKKKK
|
||||
EEEEEEEWWWWWWWWWWYYYYYYYYYYYYYYYIXNNNNXXXXXXXXJJJJJJJFFFFFFFFFFFFDDTZZZZZZBBBBBBAAJAAAAAAAAMMLLLLLLLLIIIXIIIIIIIIIQQQQQQQQQQQQQQQQQQKKKKKKKK
|
||||
EEEEEEKKWWWWWWWWWYYYYYYYYYYYYYYVAZXXXXXXXXXXXXJJJJJJJFFFFFFFFFFFWDDDZZZZZZBBBBBBAPJJAAAAAAAAMLLLLLLLLIIIIIIIIIIIIIIQQQQQQQQQQQQQQQKKKKKKKKKK
|
||||
EEEEKKKKKKKKWWWWTJYTYYYYYYYAYYAAAAFFVVVXXXXXXXXXJJJJJJFFFFFJFFBFGGGGDDZZZBBBBBBNPPPAARRRRMAMLLLLLLLLLIIIIIIIIIIIIIQQQQQQQQQQQQQQQQMMMKMBKKKB
|
||||
EEEKKKKKKKKKWWWTTTTTTTYYYAYAAAAAAAAAVVVXXXXXXXJJJJJJJJJFFFFJJFBBGGGGGGGGGGZBBBBPPPPPARRRRMMMLLLLLLLLIIIIIKKKKKKKKKKKKQQQQQPQQQMQMQIMMKMBBBBB
|
||||
GKKKKKKKKKKWWTTTTTTTTTYAYAAABAAAAAAAVVVVVXXVVBBJJJCCCJJJFFJJJMBBGGGGGGGGGGZBBBBPPPPPPRRRRMMMLLLLLLLLIIWIVKKKKKKKKKKKKQQQQPPQQQMQMMMMMMMBBBBB
|
||||
GKKKKKKKKKKWWTTTTTTRTTYAAAAAAAAAAAAAVVVVVVVVVVJJJCCCCCJJJJJJJMMMGGGGGGGGGGBBBBBPPPPPJRRRRLRRRRRRRRLLMMIIIKKKKKKKKKKKKQQPQPNNNQMMMMMMMMMCBBBB
|
||||
KKKKKKKKKKKKKETTTTTTTTAAAAAAAAAAAAAAAVVVVVVVVNCLJCCCCCJJJJJJJMMMGGGGGGGGGGBBBPBPPPPPJRRRRMRRRRRRRRLLVMMMVKKKKKKKKKKICCCPPPNNNQMMMMMMWWMMMMBB
|
||||
KKKKKKKKKKKKKEETTTXXTAAAAAAAAAAAAAAAAVVVVVVVVLCCCCCCCJJJJJJJJJMGGGGGGGGGGGBBBPPPPPPPPRRRRRRRRRRRRRLLVVVVVKKKKKKKKKKCCCPPPPPNNNMMMMMMMMMMMMBB
|
||||
KKKKKKKKKKKKKEEEEMXXXAAAAAAAAAAAAAAMAVVVVVVVLLLLLCCCCJJJJJJJJJMGGGGGGGGGGBBBBPPPPPPPPRRRRRRRRRRRRRLLVVVVVKKKKKKKKKKCCCPPPPPPNUMMMMMMMMMBBBBB
|
||||
KKKKKKKKKKKKEEEEMMMMXXAAAAAAAAAAAAAAVVVVVVVVLLLCCCCCCJJJJJJJJJJGGGGGGGGGGBBBBPPPPPPPPRRRRRRRRRRRRRLVVVVVVKKKKKKKKKKCCPPPPPPPCMMMMMMMMMMMBBBB
|
||||
KKKKKKKKYKKKKKKKKMMMMXAAQAAAAAAAAAAAVVVVVVVVLLGGCCCCCJJJJJJJJJJGGGGGGGGGGBBBBBPPPPPPPRRRRJRRRRRRRRLVVVVVVKKKKKKKKKKCCPPPPPMMMMMMMMMMMMMMBBBB
|
||||
KKKKKKKKKKKKKKKKMMMMKMMQQQAAAAAAAAAAAVVVVVVVVVCCCCCCCJJJJJJJJJJGGGGGGGGGGUBBBPPPPPPPPRRRRJJJMLLLLLLVVVVVVKKKKKKKKKKPPPPPPPPPMMMMMMMMMMMMBBBB
|
||||
ZKKKTTKKMMKKMMMMMMMMMMMMQQQAQAAAAAAAVVVVVVVVVVCCCCCJJJJJJJJJJJJGGGGGGGGGGUBBBBPPPPPAPPJJJJJJJJVVVZVVVVVVVKKKKKKKKKKKKKKKPPPPPMMMMMMMMMMMMBBB
|
||||
ZZZTTTKKMMMMMMMMMMMMMMMMMQQQQAAAAAAVVVVVVVVVVCCCCCCJJJJJJJJJJJYGGGGGGGGGGUUBPPPPPPPPEJJJJJJJJJVZZZVVVVVVVVWWKKKKKKKKKKKKPPPPPAAMMMMMMMBMMBBB
|
||||
ZZZTTTTMMMMMMMMTTTTMMMMQQQQQQAAAAOAAVVVVVVVVVXCKCCCCJJJJJJJJJJYGGGGGGGGGGBBBPPPPPJJJJJJJJJJJJZZZZZZVVVVVVVWWKKKKKKKKKKKKPPPQPAAMMMCMMMBMBBBB
|
||||
ZZZTZTTMMMMMMMMTTTTMQQMQQRRQQQQAOOOOVVVVVVVVVXVVCCCCCJJJJJJJJJUUUUUUUUUUUBBBBBBBBBBJJJJJJJJJJZZZZZZVVZZZZWWWKKKKKKCCCCPMPPPAPPAAMMCMBMBBBBBB
|
||||
ZZZZZZTMMMMMMMMTTTTTQQQQQRRQQQQOOOOOOOVOVVVVVVVVGGCCJJJJJJJJJJUUUUUUUUUUUBBBBBBBBBJJJJJJJJJJZZZZZZZZVZZZZZWWKKKKKKBCCCCPPPLAAAAAAABBBBBBBBBB
|
||||
ZZZZZZZCCMMMMMMTTTTTQQQQQRRQROOOOOOOOOVOVVIIIVRVGGJJJJJJJJJUUVUUUUUUUUUUUUUBBBBBBBBBJDDJJJJJJZZZZZZZZZZZZZZWKKKKKKBBBCPPPPAAAAAAABBBBBBBBBBB
|
||||
ZZZZZZCCCMMMMMTTTTTTQQQQQRQQRRROOOOOOOOOVVIIIVIGGJJJJJJJJJUUUUUUUUUUUUUUUBBBBBBBBBBJJJJJJJKKJJZZZZZZZZZZZZZWKKKKKKBBBKPKNKAAAAAAABBBBBBBBBBB
|
||||
ZZZAZZCCCCMMMDTTTTTQQQQQQQRRRRROOOOOOOOOOIIIIIIGGGJJJJJJJJJUUUUUUUUUUUUUVVVVVVVVVBRJJJJJJJKIIIIIIIIIZZZZZWWWKKKKKKBBFKKKKKAAAAAAAABBAABBBBBB
|
||||
ZZZAZZCCCCCMMDDKTTTQQQQQRRRRRROOOOOOOOOOOOIIIIIGAAJJJJJJJJJUUUUUUUUUVVYVVVVVVVVVVBRRJJJJJUUIIIIIIIIIZZZZZZWWKKKKKKBBBKKKIIIAAAAAAAAAAAAABBBB
|
||||
ZAAAZZCCCMMMMDTTTTTQQQQQRRRRRRSOOOOOOOOOGOIIIIIAAAAJJJJJJJJMMMUUJUUXVVVVVVVVVVVVVBRRJJJZIIIIIIIIIIIIZZZZZZWWKKKKKKBBKKIIIIHHHZAAAAAAAAAABBBB
|
||||
AAAROZOMMMMDDDGGTTTTQQRRRRRKRMOOOOOOOOOOOOIIAAAPAAAAAAAJJJJMVVVVVUUUVVVVVVVVVVVVVVRRRPJZIIIIIIIIIIIIZZZZZZWWWWWWWBBBKKKIHHHHHZAAAAAAAAAAAABB
|
||||
AAOOOOOOMMDDDDDTTTTTQQRTRYRKROOOOOOOOOOOOOIIIAAAAAAAAAJJJJJVVVVVCCCCCVVVVVVVVVVVVVRRPPJZIIIIIIIIIIIIZZZZZWWWWWTWWWWBAAAHHHHHHHHHHAAAAAAAAABB
|
||||
AAOOOOOODDDDDDQQTTTQQQRYYYRRYYOOOOOOOOOOOIIIIIAAAAAAAAAJJJVVVVVCCCCCCVVVVVVVVVVVVVVVVVWUIIIIIIIIIIIIZZZZZWWWWWTTWWWBBAAHHHHHHHHHMARAAAAOAAOC
|
||||
AAAOOOOODDDDDDDQQTTQQQQYYYYYYYYOOOOOOOZOOIIIIAAAAAAAAAJJJJJVVVVCVCCCCVVVVVVVVVVVVVVVPUWUIIIIIIIIIIIIZZZZZWWWWZZZZZZZZHAHHHHHHHHHHAAOOOOOOOOC
|
||||
AAAAAOJJDJDDDDDQQQQQQQQQYYOYYYYYYOOOOZZOZIIIIAAAAAAAAAJJJJJVVVVVVCCCCVVVVVVVVVVVVVVVNUUUIIIIIIIIIUGGZZZZWWWWWZZZZZZZZHHHHHHHHHHHMCOOOOOOOOOO
|
||||
AAAAAAAJJJJDDDQQQQQQQQQQQYOYYYYYYYDOOZZOZIIIIAAAAAAAAAJJJJJJJVVVVVCCCCVVVVVVVVVVVVVVNNFUIIIIIIIIIUZZZZZZZTTWWZZZZZZZZHHHHHHHHHHHHCOOOOOOOOOO
|
||||
AAAAAAAAJJDDDDDQQQQQQQQQQOOOWOOOODDOZZZZZZIIAAAAAAAAAAJJJJJJJVJVVDDDCCCVVVVVVVVVVVVNNNNUIIIIIIIIIUUUZZZZZPTTWTTTTWWHHHHHHHHHHHHHCCCCOOOOOOOO
|
||||
AAAAAAAAAJJJDDQQQQQQQQQQOOOOOOODDDDZZZZZZZIIAAAAAAAAAAAJJJJJJJJJVDDDCCCCDKVVVVVVVVNNNNUUUUIIIIIIIUUUUZZZZTTTTITTTTWHHHHHHHHHHHHHCCCCCCCOOOOO
|
||||
AAAAAAAAAAJBBQQBBBQQQQQOOOOOOOODZDDDZZZZZZIIAAAAAAAAAAAAJJJJJJJJDDDDDDDDDDDDVVVVVNNNNNNUUUIIIIIIIUUUUUZZZTTTTTTTTTHHHHHHHHHHHHHHCCCCCCCCOOOO
|
||||
AAAAAAAAAAJBBBBBEBBBQQQOOOOOOOODZZZZZZZZZZZAAAAAAAAAAAAJJJJJJJJDDDDDDDDDDDDVVVVVNNNNNNNUUUIIIIIIIUUUUUUZTTTTTTTTTTTTHHRRHHHHHHHCCCCCCCOOOOOO
|
||||
AAAAAAAAAAJBBBBBBBBBBOOOOOOOOOOOOOZZZZOZAAAAAAAAAAAAAAAAAJJJJJDDDDDDDDDDDDDVVVVVNNNNNNNNNNIIIIIIIUUUPPPKKKKTTTTTTTTTTHRRRHCCCHCCCCCCCCOOOOOO
|
||||
AAAAAAAAAABBBBBBBBBBBOOOOOOOOOOOOOZZZZOZAOOAAAAAAAAGGGJJAJJJJJDDDDDDDDDDDDVVVVVVVVNNNNNNNNIIIIIIIUUPPPPKKKKTTTTTTTTTTTTRTTCCCFCCCCCCCCCOOOOO
|
||||
AAAAPAAAAABBBBBBBBBBBYYOOOOOOOOOPOOOZOOOOOOOAAAAAAGGGGJJJJJJJDDDDDDDDDDDDDVVVVVVVVNNNNNXXNNNNNNNPPPPPPPKKKKTTTTTTTTTTTTTTCCCCCCCCCCCCCCCOOOO
|
||||
AAAAPAAAAABBBABBBBBBBBYOOOOOOOOOOOOOOOOOOOAAAALALAGGGGGJJJJJDDDDDDDDDDDDDDDVVVVOOVVVXXXXXNNNNNNNPZZZZZZZZZZKTKTTKSTTNLLTTNCCCCCCCCCCCCCCCOOO
|
||||
AAAAPPPAABBBBABBBBBBBBBBOOOOOOLLOOGGGOOOAAAAAALLLLLGGJJJJJJJDDDDDDDDDDDDDDDDVVOOOVVVWXXXXNNNNNNNPZZZZZZZZZZKKKKYYYYYYYYYYNNCCCCCCCCCCCCCCOOO
|
||||
AAAAPPAAABBBBABBBBBBBBBBOOOOOOLOOOGGGOOOOAAAAAAALLLLJJJJJJJJJLLLDDDDDDDDDDDDDVOOOOVOWXXXXNNNNNPPPZZZZZZZZZZZZKKYYYYYYYYYYNNCCCCCCCCCBBCCOOOO
|
||||
AAAPPPAPAAAABABBBBBBBBBPOXOOOOLOOOGGGOOOOOOAAAAALLLLLLJJJJJJJLLLLDDDDDDDDDOOOOOOOOOOWXXXXNNNNNNNPZZZZZZZZZZZZKAYYYYYYYYYYYYCCCCCCCXCBBCYOOOO
|
||||
APPPPPPPPAAAAABBBBBBBBFZZXZZKKOOOOGGGOOOOOOAAAAALLLLZLJJJLJJJJLLLDDDDDDDDUUOOOOOOOOOOORRRRONOOPPPZZZZZZZZZZZZKAYYYYYYYYYYYYNCCUCCCCVBBCCPOHO
|
||||
PPPPPPPPPAAAAAABBBBBBBBZZZZMOOOOOGGGGGOOOOOAAALLLLLLLLJJLLLLLLLLLLDDDDDDOOOOOOOOOOSOOOORDDOOOOPPMMMPPPPZZZZZZAAYYYYYYYYYYYYJMCCCCVVVBVPPPVVV
|
||||
PPPPPPPPPAAAAAABBBBBBZBZZZZMMGGGGGGGGGGGGOOAZALLLLLLLLLLLLLLLLLLLLDDDDDOOOOOOOOOOOOOOOORDOOOOOPPMMMPPPPZZZZZZAAYYYYYYYYYYYYJMMMCCCVVVVVVVVVV
|
||||
PPPPPPPPPAAAAAABBBBBBZZZZZZMMGGGGGGGGGGGGAAAZALLLZLLLLLLLLLLLLLLLLLDDDOOOOOOOOOOOOOOOOOOOOOOOOOPMMMPPPPPZZZZZAAYYYYYYYYYYYYJMJMMVVVVVVVVVVVV
|
||||
XPPPPPPPAAAAAABBBTBBYZZZZZZZZYGGGGGGGGGGGGAAZZZLZZZLLLLBBBBLLLLLLLDDDDDOOOOOOOOOOOOOOOOOOOOOMMMMMMMPPPPPZZZZZAOYYYYYYYYYYYJJJJVVVVVVVVVVVVVV
|
||||
XPPPPPPPAAJJAABAACBBYYZZZZYZYYGGGGGGGGGGGGAAZZZZZZLLBBBBBBBLLLLLBBBBBOOOOOOOOOOOOOOOOOOOOOOMMMMMMMMJJJPLZZZZZAZYYYYYYYYYYYJJJJJJBJVVVVVVVVVV
|
||||
XPPPPPPPJJJJAAAACCYBYYZYYYYYYYYGGGGGGGGGGGAAZZZZZZZZBBBBBBBLLLLLBBBBBBBBOOOOOOOOOOOOOOOOOOOMMMMMMMMMJJZZZZZZZZZYYYYYYYYYYYJJJJJJJJBVVVVVVVVV
|
||||
XPPXPPPPJJJJAAACCCYYYYZYHYHYYYHGGGGGGGGGGGAAAZZZZZZZBBBBBBBBBLLBBBBBBBBBOOOOOOOXOOOOOOOOOOOMMMMMMMMMJJZZZZZZZZZZOOOOJJJYYYJJJJJJVJBVVVVVVVVV
|
||||
XXXPPPPJJJJJJAACCYYHYYYHHHHHHHHGGGGGGGGGGGEAEZZZZZZZBBUBBBBBBBBBIIIBBBBOOOOOOOOOOOOOOOOOOOOOMMMMMMMMJJZZZZZZZZZOOOOOOJJYYYJJJJJJJJVVVVVVVVVV
|
||||
XXXPPPPPPJJJJPACCCHHHYHHHHHHHHHGGGGGGGGGGEEEEZZZZZZZZUUUUBBBUUBBBIIIBIBBBOOOOOOOOOOOOOOOOOOOMMMMMZZZZZZZZKKZZZZZOOOOCCYYYYYYJJJJJJVVVVVVVVVV
|
||||
XXXXPPPPPJJJPPAAAAHHHHHHHHHHHHYYYGGGGGEEEEEEZZZZZZZZZZUUUUUUUBBBIIIIIIIBBBOOOOMMMOOOOOOOOOYOMMMMMZZZZZZZZKKZZZZZZZOCCCYYYYYYJJJJJJVVQQVQQVVV
|
||||
XXXPPPPJJQJJPPPAAHHOHHHHHHHHHHYYYYEEWEEEEEEEEZZZZZZZZUUUUUUUUUUIIIIIIIIIBOOOOOMMMMOMOOSOOOOOOMMMMZZZZZZZZKKZZZZZZZCCCCYYYYYYJJJJJJJJOQQQVVVV
|
||||
XXXXXPPJJJJPPPPRROOOHHHHHHHHYYYYYYYEEEEEEEEEEEEZZZZUUUUUUUUUUUIIIIIIIIIIMMOOOMMMMMOMNNNOOOONNNNJEZZZZZZZZKKZZZZZZZCCCCYYYYYYJJJJJJJXQQQQQQQQ
|
||||
XXJXXJJJJJJPPPRRRROOHHHHHHHHYYYYEEEEEEEEEEEEEEEZZZZZUUUUUUIIIIIIIIIIIIBBMMOOMMMMMMMMNNNCNNNNNNJJFZZZZZZZZKKKZZZCCCCCCCYYYYYYJJJJJJJQQQQUQQQQ
|
||||
XXJJJJJJJJJPPYPVRJJHHPHHHHHHYYYYEEEEEEEEEEEEEEZZZZZZUUUUUTTIIIIIIINIIBBIMMMMMMMMMMMMNNNNNNNNNNFFFKKKKKKKKKKKZZZCCCCCCCYYYYYYJJJJJJCQQQQQQQQQ
|
||||
XXJJJJJJJJPPJPPPPPJJJPPPHHHHHYYYEEEEEEEEEEEEXPZZZZZZZZUUUTTINNNNINNKIBIIMMMMMMMMMMMMMNNNNNNNNFFFFFKKKKKKKKKKZZZCCCCCCCYYYYYYJJJJJQQQQQQQQQQQ
|
||||
XJJJJJJJPPPPPPPPPPJJJHHHHHHDHDYYYYYEEEEEEEEXXXZGGZZZZZUUUNNNNNNNNNNIIIIIMMMMMMMMMMMMNNNNNNNNNFFFFKKKKKKKKKKKKKKCCCCCCCYYYYYYYYYZZQQQQQQQQQQQ
|
||||
JJJJJJJPPPPPPPPPPJJJJJJJJHHDDDDYYYYYEEEEEEEXXGGGGEEZZZUUDNANNNNNNNAIIIIIMMMMMQMMMMMMNNNNNNNNFFFFFKKKKKKKKKKKKKKCCCCCCCYYYYYYYYYZQQQQQQQQQQQQ
|
||||
JJJJJJJJPPPPPPPPPJJJJJJJJJDDDDDYYYYEEEEEEXXXXXGGGGEEEZEUDNNNNNNNNAAAIIIIMMMMQQQQMMNNNNNNNNNNFFFFFCKKKKKKKKKKKKKKWCCCCIYYYYYYYYYZZZXQXQQQQQQQ
|
||||
JJJJJJPPPPPPPPPPPJJJJJJJJJDDDDDDDYYEEEEEEXXXXGGSEEEEEEEENNNNNNNNNVVAAIIMMMMQQQQQMMNNNNNNNNNNOFFFFFKKKKKKKKKKKUUKKUCCCCCCCZYYYYYZZZXXXXQQQQQQ
|
||||
HJJJJJPPPPPPPPPPPPPJJJJJJJJDDDDDDYYYEEEEEXXXSSSSEEEEEEEENNNNNNNNNNVAAAVVMQQQQQQQMMNNNNNNNHNNNFFFFFKKKKKKKKKKKUUUUUCCUUUUCCYYYYYXXXXXXXQQQQQQ
|
||||
HJJJJNPPPPPPPPPPFPPJJJJJJJJDDDDYYYYXXNNEXXXSSSSSEEEEEEENNNNNNNNNNVVVVAVVQQQQQQQQMNNNHHNNNHNNNFFFFFKKKKKKKKKKKUUUUUUUUUUUUUUUHZZZXXXXXQQQQQQQ
|
||||
HHJVJRPPPPPPPPPPPPPPLJJJJJJDDDLLLLXXXXXEXXXXXXXSUUUUNNNNNNNNNNNNNVVVVVVVQQQQQQQQMMMNHHHNNHHHHHHHHFHHHKKKKKKKKUUUUUUUUUUUUUHHHHHXXXXXXXQQQQQQ
|
||||
HRRRRRRPRPUPPPPPPPPLLLLJJJDDDLLLLUUUXXXXXXXXXXXXXXUUUUNNNNNNNNNNNVVVVVVVQQQQQQQQMMMMHHHHHHHHHHHHHHHHHKHHHKKKKUUUUUUUUUUUUHHHHHHHHXXXXXXXQQQQ
|
||||
HHHHRRRRRRRRRRPPPPWLLLLLLLLLDLLLLUUUVVVXXXCCCXXXXXXXKNNNNNNNNNNNNVVFVVVTTQQQQQQTMMMHHHHHHHHHHHHHHHHHHHHHHHKKUUUUUUUUUUUUUUHHHHHXXXXXHQHXQQQQ
|
||||
HRRRRRRRRRRRRRRPPBGLLLLLJLLLLLLLLULUVVVXXCCCCCXXXXXXKKNNNNNNNNNNVVVVTTTTTTTTQQQTTTMLLHHHHHHHHHHHHHQQQHHHHUKUUUUUUUUUUUUQUUHHHXXXXXXXHHHHQHAH
|
||||
RRRRRRRRRRRRRRRRPPGLLLJJJLJLLLLLLLLUVVVXCCCCCCXXXXXKKKNNNNNNNNNNVVVVTTTTTTTTTTTTTMMLLHLHHHHHHHHHHHQQQQHHHUUUUUUUUUUUUUUQUQHSXXXXXXXXXXHHHHHH
|
||||
RRRRRRRRRRRRRRRRRGGGLJJJJJJLLLLLLLVVVVVECCCCMMMMMMKKKKKKNNNNNNNNNVVTTTTTTTTTTTTTULLLLLLHHHHHHHHHQQQQQHHHUUUUUUUUUUUUUQQQQQQSXXXXXXXXXXXHHHHH
|
||||
RRRRRRRRRRRRRRRRRGGGGJJJJJJLLLLLLJVVVVVVGCCCMMMMMMKKKKKNNSSNNNNNNVTTTTTTTTTTTTTULLLLLLHHHHGGGGGHHQQQHHHHHUUUUUUUUUUUUQQQQQQSSXXXXXXXXXHHHHHH
|
||||
VRRRRRRRRRRRRRRRRGGGJJJJJJJLLLLLLJVVVVVVGCCCMMMMMMKKKKNNGSGNNNNNYYTTTTTTTTTTTTLLLLLLLLLHHHGGGGQQQQQQHQHHHUUUUUUUUUUUUQQQQQQQSXXXAXXXXXHHHHHH
|
||||
VVVRTRRRRRRRRRRRJGGGGQJJJJJJJLLLGVVVVVVGGCCCMMMMMMKKGKGGGGGGGGYYYYDTDTTTTTTTTTLLLLLLLLLHHHGGGGQQQQQQQQHHOOOOUUOOUUUUUQQQQQQQQXUAAXXMHHHHHHHH
|
||||
VRRRTTTTRFFRRJRRGGGGQQJUJJJJJJGLLGGGGVGGGGGCMMMMMMKKGGGGGGGFFFYYDDDDDDDDTTTTTTTLLLLLLLLLHHGGGGQQQQQQQQQOOOOOUUOOUOUZUQQQQPQQUUUTTTTTHHHHHHHH
|
||||
VVRAAATTYTFRYDDFGDGGQQJJJJJJGGGGGGGGGGGGGTTTTTTTMMKZGGGGFGGFFFYYDDDDDDDCTTTTTTTLLLLLLLLHHGGGGGGQQQQQQQOOOOOOOUOOOOOUGUUQQQQQUUUTTWTTKKNNHHNN
|
||||
VVUUATTTTTDDDDDDMDGGQQJJJJJJGDGGGGGGGGGGGTTTTTTTKKZZGIIIFFFFFFYDDDDDDDDDDDTTTTTLLLLLLLLGGGGGGGGQQQQQQQOOOOOOOOOOOOWUUUUUUUUUUUUUUUKKKKKNHNNN
|
||||
UUUUTTTTTQDDDDDDMDDDQQQQJJJJGDGGGGGGGGGGGTTTTTTTKKZZZIIIIFFFFDDDDDDDDDDHHHHTTTHLLLLLLLLIIGGGGGGQQQQQQOOOOOOOOOOOOOWKWWUUUUUUUUUUUUNNNNNNNNNN
|
||||
UUUUTTTTTTDDDDDDDDDDDQQJJJCCDDGGGGGGGGTTTTTTTTTTCZZZIIIIIIFFFFDDDDDDDEDHHHHTHHHHLLLLLLLLLGGGGGGQQQQOQOOOOOOOOWOOOWWWWUUUUUUUUUUUUGNNNNNNNNNN
|
||||
UUUUUTBTTTDDDDDDDDDDDDQJJJCCDDDGGDGGDGTTTTTTTTTTZZTZZIFFIFFFFFFDDDDDDDHHHHHHHHHLLLLLLLLLLGGGGGGQQQQOOOOOOOOOOWWWWWWWWUUUUUUUUUUUUNNNNNNNNNNN
|
||||
UUUUUUUTTTTDDDDDDDDDDQQQQDDDDDDGDDDDDDTTTTTTTTTTNZZZZIIFFFFFFFFFDDDDDDDHHHHHHHHHHHLLLLLGGGGGGGGGGGOOOOOOOOOOOWWWWWWWWUUUUUUUUUUUUUNNNNNNNNNN
|
||||
UUUUUUUTUUUDDDDDDDDDQQQQQQDDDDDDDDDDDDTTTTTTTTTTZZZZZFFFFFFFFFFFDFDDDZZZHHHHHHHHHHHHGGGGGGGGGGGGGOOOOOOOOOOOOOWWWWWWWWWWUUUUUUUUUNMNNNNNNNNN
|
||||
UUUUUUUUUUDQDDDDDDDDQQQQQQDDDDDDDDDDDDTTTTTTTTTTZZZZZZZFFFFFFFFFFFDDDDZZHHHHHHHHHHGGGGGGGGGGGGGGGOOOOOOOOOOOOWWWWWWWWWWUUUUUUUUUUNNNNNNNNNNN
|
||||
UUUUUUUUUDDDDDDDDDQQQQQQQDDDDDDDDDDDAZTTTTTTTTTTNZZZZFFFFFFFFFFFDDDDJJZZZHHHHFFFFFGGGGGGGGGGGGGGGOOOOOOOOOOOOOWWWWWWWWWUUUUUUUUUUUNNNNNNNNNN
|
||||
UUUUUUUDDDDDDDDDDDQQQQQQQDDDDDDDDDDDDETTTTTTTTTTNPZZZFFFFFFFFFFFFIIZZZZZZZZFFFFFFFXGGGGGGGGLGGGGGGGOOOAAOOOOOOWWWWWWWWWUUUUUUUUUDUDNNNNNNNNN
|
||||
UUUUUUUDDDDDDDDDDQQQQQQQQQDDDDDDDDDDDEEEVVVVVVVNNPZZZFFFFFFFFFFFDIDZZZZZZZZIIIIIIFXXXXGGGGGLLGGGGGOOOOOAOOOOOOOWWWWWWWUUUUUUUUDDDDDNNNNNNNNN
|
||||
UUUUUUUDDDDDDDDQQQQQQQQQQVVVDDDDDDDDEEEEVVVVHHPNPPPZZZZFFFFFFFWWDDDZZZZZZZZZIIIIIIJXXJJGJJLLLLGGLGGOWWFAOAOOAOWWWWWWWWWWUUUUUUDDDDDDNNNNNNNN
|
||||
UUUUUUUUDIDDDDDQQQQQQQQQQQVDDDDDDDDDDDEEEEVVVHPPPPPZZZZFZZZZZZWWDDDDDZZZZZZZIIIIIIJJJJJJJJLLLLLGLGGOWWFFFAAAAAWWWWWWWWWWUUZZUUUDDDDDDNNCNNNH
|
||||
UUUUUUUUPDDDDDJJQQQQQQQVVVVDDDDDDDDDDEEEEEEVGPPPPPPZPZZFZZZZZWNWWWDDDDZZZZZZIIIIIIIJJIIILLLLLLLLLGLOWFFFFAAAAAWWWWWWWWWWWUZZUDDDDDDDDDNNNNNN
|
||||
UUUUUUUUUDDDDDJJJQQQQQQQQQQQDTDDDDDDDDEEEEEPPPPPPPPPPPZZZZZZZWWWWWDDDDDZZZZZZNIIIIIIIIICCLLLLLLLLLLBFFFFFFFAAEWWWWWWWWWZZZZZZDDDDDDDDDDNNNNN
|
||||
UUUUGGUUEEDDDDJJJJJJJQQQQQQQQDDDQDDDDEEEEEEEKPPPPPPPPPPZZZZWWWWPWDDDDDDZZZZZZNNIIIIIIILLLLLLLLLLLLLLFFFFFFFFFEWWWWWWWWWZZZZZDDDDDDDDDDDNNNNN
|
||||
UUGUGGGEEEDJJJJJJJJJJJQQQQQQQDDDQQDDEEEEEEEEPPPPPPPPPPPZZWWWWWWWWDWDDDDZZZZZNNNNNIIIIILLLLLLLLLLLLLLLGFFFFFFEEEEEEWWWWZZQZZZDDDDDDDNNDNNNNNN
|
||||
UGGGGGGGEEEJJJJJJJJJJJQQQQQQQQDQQQEEEEEEEEEEPPPPPPPPPPZZZWWWWWWWWWWWDDDZZZZINNNIIIIIIILLLLLLLLLLLLMGGGFEEEEEEEEEEWWWWWWZZZZZZDDDDNNNNNNNNNNN
|
||||
UGGGGGGGGEJJJJJJJJQJQQQQQQQQQQQQQEEEEEEEEPPPPPPPPPPPPZZZZWWWWWWWWWWWDDZZNNNINNIIIIIIIILLGHLLLLLLLLLGGEEEEEEEEEEEEWWWWWZZZZZZZDDDDNNNNNNNNNNN
|
||||
UGGGGGGGGGQJJJJJJJQQQQQQQQQQQQQQQQEEYEEYYYOPPPPPPPPPZZZWWWWWWWWWWWWWDDDNNNNNNNNIIINIIIIAGLLLLLLLLLLLGEEEEEEEEEEECPPPZZZZZZZZZDDNNNNNNNNNNNNN
|
||||
SGGGGGGGGGJJJJJJJJQGQQQQQQQQQQQQQQQYYYYYYYYPYPPPBPZZZZZZWWWWWWWWWWWWNNNNNNNNNNNNNINIIIIGGLGGLLLLLLGGGGEEEEEEEEEECCPPPPPPZZZOZDNNNNNNNNNNNNNN
|
||||
GGGGGGGGGGAJJJJJJJJQQQQQQQQQQQQQQQQYYYYYYYYYYPPPPZZZZZZZZZWWWWWWWWWRRRNNNNNNNNNNNNNIGIIIGGGLLLLGGGGGGEEEEEEEEEMMPCPPPPPPPPZZPPPPNNNNNNNNNNNN
|
||||
GGGGGGGGGGGGJLJJJJJJDQQQTTTQQQQQQQQYYYYYYYYYYPYPYZZZZZZZZZZZWWWWWWWRRRNNNNNNNNNVVGGGGGGGGGGGLLGGGGGGGRNEEEEEEEMMPPPQPPPPPPPPPPPUNNNNNNNNNNNN
|
||||
GGGGGGGGGGGGLLJJJJJTTDTQTTTQQQQQQEEEEEYYYYYYYYYYYYZZZZJZZWWWWWWWWWWRRRNNNNNNNNNNNRLLGGGGGGGGGGGGGGRRRRRREKKEEEMMPPPPPPPPPPPPPPPPZZZZZNNNNNNN
|
||||
GGGGGGGGGGGGLYPPJJTTTTTTTQQQQQQQQEEEEEYYYYYYYYYYYYZZJJJJJJMWWWWWWWWWRRRRRNNNNRRRRRLLLGLGGGGGGGGGGGGRRRREEKKKKKKKUUPBPPPPPPPPZZZZZZZZNNNNNNNN
|
||||
GGGGGGGGGGGGYYPPJJTTTTTTTTTTQQQQQEEEEEYPYYYYYYYYYZZZJJJJJJMMMWWWWWWWRRRRRRRRRRRRRLLLLLLGGGGGGGGGGGGRRRRRERKKKKKKKUPBBPPPPPPPZZZZZZZZZNNNNNNN
|
||||
GGGGGGGGGGGYYYYYJJTTTTTTTTTQQQQQEOEEEEEYYYYYYYYYYZZZQJJJJJJJMWWWWWWWRRRRRRRRRRRRRLPLLLLLGGGGGGGGGGGRRERRRRRKKKKKKPPPPPPPPPPPZZZZZPZPPPPPNNNN
|
||||
GGGGGGGGGGGYYYYYYJPTTTTTTTTTQQQQEEEEEEEYYYYYYYYYYYZJJJJJJJJJWWWWWRRWRRRRRRRRRRRRRLLLLLLLLGGGGGGGGGGGGRRRRRRRTKKKKPPPPPPPPPPPZZZZPPPPPPPPNNPP
|
||||
GGGGGGGGGGYYYYYYYTTTTTTTTTTQQQQQEQEEEEEYYYYYYYYYYYZJJJJJJJJJJJWWRRRRRRRRRRRRRRRRRRRRLLLLLGGGGGGGGGGRRRRRRRRTTTTKTTPRPPPPPPPPZZFZPPPPPPPPNPPP
|
||||
GGGGGGGGGGKKKKKKKKTTTTTTTTQQQQQQQQEYEEHHHHHHYYYYYYJJJJJJJJJJJJJRRRRRRRRRRRRRRRRRRRRRLLLLGGGGGGGGGGGGGRRRRRRRTTTTTTTPPPPPPPPRZZFZPPPPPPPPPPPP
|
File diff suppressed because it is too large
Load Diff
@ -1,500 +0,0 @@
|
||||
p=99,12 v=19,18
|
||||
p=90,98 v=47,-52
|
||||
p=86,3 v=82,-13
|
||||
p=13,8 v=-67,-47
|
||||
p=36,45 v=28,65
|
||||
p=71,35 v=-8,-62
|
||||
p=75,8 v=-30,-21
|
||||
p=3,46 v=-38,-96
|
||||
p=1,89 v=78,18
|
||||
p=47,59 v=-63,99
|
||||
p=92,78 v=68,48
|
||||
p=42,31 v=78,94
|
||||
p=75,29 v=9,83
|
||||
p=46,12 v=-29,48
|
||||
p=80,16 v=-70,33
|
||||
p=18,66 v=57,-97
|
||||
p=60,12 v=89,-90
|
||||
p=21,36 v=-41,-78
|
||||
p=75,53 v=52,-62
|
||||
p=18,79 v=45,51
|
||||
p=20,29 v=63,-97
|
||||
p=22,68 v=23,1
|
||||
p=6,67 v=-24,-44
|
||||
p=44,35 v=-54,29
|
||||
p=33,80 v=28,-56
|
||||
p=48,78 v=55,-22
|
||||
p=88,79 v=99,69
|
||||
p=12,96 v=-50,-59
|
||||
p=6,57 v=80,61
|
||||
p=98,31 v=-77,14
|
||||
p=91,65 v=-13,20
|
||||
p=52,53 v=-85,41
|
||||
p=94,94 v=-15,5
|
||||
p=69,75 v=-41,-11
|
||||
p=98,77 v=71,-54
|
||||
p=23,47 v=-61,-27
|
||||
p=32,74 v=-11,96
|
||||
p=22,87 v=-5,-75
|
||||
p=65,22 v=26,71
|
||||
p=1,67 v=13,69
|
||||
p=32,96 v=-90,-94
|
||||
p=17,17 v=-5,71
|
||||
p=57,85 v=-92,28
|
||||
p=52,32 v=-41,69
|
||||
p=13,85 v=-43,-83
|
||||
p=51,39 v=-38,32
|
||||
p=64,17 v=91,82
|
||||
p=97,86 v=-69,-70
|
||||
p=98,94 v=46,-21
|
||||
p=43,31 v=61,-24
|
||||
p=42,58 v=-51,-42
|
||||
p=5,46 v=-4,91
|
||||
p=65,52 v=10,50
|
||||
p=23,6 v=-42,29
|
||||
p=54,25 v=4,44
|
||||
p=5,19 v=-77,-74
|
||||
p=44,77 v=-23,-26
|
||||
p=10,70 v=6,-72
|
||||
p=38,101 v=-50,-36
|
||||
p=9,49 v=35,72
|
||||
p=64,14 v=77,-78
|
||||
p=21,2 v=-67,-6
|
||||
p=34,97 v=-73,-37
|
||||
p=77,13 v=-30,60
|
||||
p=50,40 v=83,-58
|
||||
p=99,85 v=-59,-87
|
||||
p=65,0 v=-76,-48
|
||||
p=44,94 v=-45,34
|
||||
p=5,59 v=92,35
|
||||
p=73,100 v=93,-71
|
||||
p=50,20 v=-74,-97
|
||||
p=9,33 v=-10,-89
|
||||
p=54,49 v=-46,99
|
||||
p=99,100 v=92,51
|
||||
p=84,94 v=-53,-45
|
||||
p=92,13 v=-61,69
|
||||
p=19,52 v=56,-12
|
||||
p=20,52 v=-38,-90
|
||||
p=98,12 v=99,-22
|
||||
p=46,23 v=95,-32
|
||||
p=84,100 v=-70,70
|
||||
p=19,69 v=58,-52
|
||||
p=77,67 v=-51,31
|
||||
p=11,6 v=18,-67
|
||||
p=11,22 v=-50,-82
|
||||
p=73,43 v=25,79
|
||||
p=60,16 v=-58,-36
|
||||
p=86,18 v=-88,71
|
||||
p=21,50 v=-50,-88
|
||||
p=17,20 v=-65,-54
|
||||
p=38,26 v=67,71
|
||||
p=22,60 v=-46,15
|
||||
p=81,46 v=-39,16
|
||||
p=25,98 v=22,-41
|
||||
p=9,72 v=-94,8
|
||||
p=82,59 v=-46,-34
|
||||
p=71,41 v=-23,45
|
||||
p=74,1 v=-70,32
|
||||
p=96,17 v=-37,95
|
||||
p=39,45 v=-6,-23
|
||||
p=46,4 v=61,55
|
||||
p=41,100 v=-35,-10
|
||||
p=65,75 v=-1,-26
|
||||
p=8,21 v=7,-32
|
||||
p=43,71 v=-12,73
|
||||
p=85,67 v=58,-41
|
||||
p=73,7 v=31,-89
|
||||
p=85,71 v=-93,-72
|
||||
p=54,83 v=-46,-75
|
||||
p=13,66 v=-24,-98
|
||||
p=67,13 v=21,-21
|
||||
p=1,33 v=24,-66
|
||||
p=71,27 v=54,-78
|
||||
p=69,86 v=42,35
|
||||
p=17,28 v=-83,94
|
||||
p=92,19 v=25,-68
|
||||
p=92,84 v=-31,16
|
||||
p=32,26 v=-6,54
|
||||
p=20,97 v=-16,36
|
||||
p=1,102 v=13,9
|
||||
p=59,26 v=-68,91
|
||||
p=92,44 v=-20,30
|
||||
p=16,45 v=-83,34
|
||||
p=30,69 v=-75,-46
|
||||
p=51,64 v=-73,68
|
||||
p=53,29 v=-57,-61
|
||||
p=14,100 v=-15,86
|
||||
p=80,41 v=-20,-81
|
||||
p=5,92 v=-60,1
|
||||
p=91,10 v=-49,98
|
||||
p=0,62 v=-79,9
|
||||
p=40,1 v=3,-70
|
||||
p=81,32 v=-53,41
|
||||
p=53,18 v=-46,94
|
||||
p=69,96 v=-95,-82
|
||||
p=32,92 v=-69,-30
|
||||
p=73,83 v=-59,-65
|
||||
p=74,67 v=-8,-99
|
||||
p=71,45 v=-58,60
|
||||
p=35,29 v=-51,-92
|
||||
p=68,15 v=-92,-55
|
||||
p=74,3 v=26,30
|
||||
p=67,25 v=-58,22
|
||||
p=31,46 v=-73,-92
|
||||
p=29,69 v=45,23
|
||||
p=48,78 v=-23,-29
|
||||
p=41,13 v=-45,-78
|
||||
p=57,8 v=-3,26
|
||||
p=45,53 v=45,4
|
||||
p=37,23 v=-62,41
|
||||
p=41,90 v=-35,55
|
||||
p=88,96 v=53,-71
|
||||
p=38,15 v=-90,71
|
||||
p=62,20 v=4,-88
|
||||
p=64,19 v=15,-85
|
||||
p=96,61 v=10,81
|
||||
p=19,81 v=57,-45
|
||||
p=53,11 v=67,44
|
||||
p=51,83 v=66,85
|
||||
p=29,76 v=-84,-26
|
||||
p=63,23 v=-13,14
|
||||
p=23,51 v=-18,-52
|
||||
p=23,41 v=73,-55
|
||||
p=99,75 v=-32,-14
|
||||
p=68,20 v=79,45
|
||||
p=27,74 v=45,42
|
||||
p=55,96 v=47,-73
|
||||
p=87,29 v=-93,22
|
||||
p=20,76 v=-49,88
|
||||
p=11,78 v=-67,-41
|
||||
p=31,78 v=-12,-99
|
||||
p=21,49 v=64,9
|
||||
p=56,45 v=10,-4
|
||||
p=67,97 v=-59,92
|
||||
p=96,58 v=-49,96
|
||||
p=36,51 v=-68,8
|
||||
p=18,10 v=-79,-60
|
||||
p=25,7 v=47,-55
|
||||
p=12,101 v=40,-52
|
||||
p=83,57 v=-42,-38
|
||||
p=62,89 v=77,20
|
||||
p=8,49 v=51,-54
|
||||
p=12,98 v=-20,53
|
||||
p=47,89 v=35,68
|
||||
p=46,16 v=89,6
|
||||
p=72,34 v=37,45
|
||||
p=61,31 v=49,76
|
||||
p=42,98 v=64,17
|
||||
p=27,41 v=71,27
|
||||
p=50,8 v=-1,-63
|
||||
p=97,5 v=-56,9
|
||||
p=41,58 v=5,-38
|
||||
p=66,101 v=-64,13
|
||||
p=67,95 v=-40,18
|
||||
p=94,41 v=-37,73
|
||||
p=89,102 v=-4,2
|
||||
p=44,51 v=-84,65
|
||||
p=9,89 v=29,89
|
||||
p=28,29 v=5,29
|
||||
p=76,4 v=-89,8
|
||||
p=75,93 v=-75,89
|
||||
p=38,6 v=-73,-2
|
||||
p=19,1 v=-95,-6
|
||||
p=61,76 v=-69,23
|
||||
p=6,27 v=64,-24
|
||||
p=97,76 v=47,28
|
||||
p=62,86 v=50,-61
|
||||
p=85,50 v=-93,-92
|
||||
p=10,76 v=-83,31
|
||||
p=58,42 v=52,-81
|
||||
p=47,42 v=16,38
|
||||
p=3,17 v=-66,52
|
||||
p=58,84 v=-59,-36
|
||||
p=91,76 v=20,-68
|
||||
p=9,62 v=-10,-23
|
||||
p=45,99 v=-85,-2
|
||||
p=0,8 v=-77,17
|
||||
p=53,70 v=-41,-23
|
||||
p=32,96 v=6,89
|
||||
p=67,33 v=26,37
|
||||
p=94,86 v=47,47
|
||||
p=26,74 v=-39,12
|
||||
p=19,15 v=-55,16
|
||||
p=60,76 v=93,-98
|
||||
p=44,71 v=-49,-38
|
||||
p=35,77 v=-1,-7
|
||||
p=68,98 v=32,89
|
||||
p=10,54 v=-23,-24
|
||||
p=63,10 v=-77,50
|
||||
p=75,61 v=71,80
|
||||
p=35,78 v=-5,-55
|
||||
p=74,23 v=15,-45
|
||||
p=10,68 v=52,-34
|
||||
p=45,43 v=8,-67
|
||||
p=12,76 v=24,-75
|
||||
p=62,73 v=-86,77
|
||||
p=9,82 v=-38,-64
|
||||
p=1,95 v=25,-64
|
||||
p=67,30 v=-69,-20
|
||||
p=92,25 v=-79,75
|
||||
p=42,19 v=-46,-78
|
||||
p=3,98 v=35,-83
|
||||
p=89,102 v=53,90
|
||||
p=25,10 v=-5,37
|
||||
p=46,0 v=-74,29
|
||||
p=12,40 v=-79,92
|
||||
p=13,21 v=-56,-44
|
||||
p=63,49 v=77,-27
|
||||
p=3,12 v=83,-67
|
||||
p=48,42 v=72,-62
|
||||
p=37,74 v=-46,16
|
||||
p=25,75 v=51,-26
|
||||
p=84,35 v=81,-43
|
||||
p=38,40 v=-63,19
|
||||
p=77,13 v=-64,-48
|
||||
p=95,13 v=-82,-44
|
||||
p=81,41 v=-19,-81
|
||||
p=33,81 v=-64,41
|
||||
p=69,75 v=65,35
|
||||
p=30,76 v=45,39
|
||||
p=48,72 v=-29,39
|
||||
p=74,10 v=78,-61
|
||||
p=70,17 v=9,52
|
||||
p=11,67 v=46,-87
|
||||
p=35,72 v=-11,-46
|
||||
p=86,37 v=-82,60
|
||||
p=99,24 v=-91,56
|
||||
p=92,46 v=-54,-23
|
||||
p=93,12 v=76,-9
|
||||
p=92,43 v=-97,-75
|
||||
p=3,72 v=10,-79
|
||||
p=13,83 v=13,8
|
||||
p=78,80 v=3,-60
|
||||
p=81,41 v=84,-73
|
||||
p=93,9 v=-25,36
|
||||
p=78,96 v=20,-37
|
||||
p=40,50 v=-78,59
|
||||
p=66,21 v=85,78
|
||||
p=37,67 v=56,53
|
||||
p=49,62 v=-91,-63
|
||||
p=59,54 v=60,-69
|
||||
p=57,81 v=77,39
|
||||
p=51,79 v=-19,-11
|
||||
p=65,27 v=74,95
|
||||
p=33,56 v=44,-27
|
||||
p=7,43 v=80,38
|
||||
p=11,19 v=36,-88
|
||||
p=27,15 v=-95,44
|
||||
p=2,76 v=-15,-53
|
||||
p=90,40 v=-14,56
|
||||
p=93,52 v=30,-92
|
||||
p=31,42 v=56,-16
|
||||
p=86,64 v=-25,-51
|
||||
p=97,81 v=-76,-76
|
||||
p=11,36 v=35,-77
|
||||
p=9,94 v=-10,-48
|
||||
p=35,3 v=68,-6
|
||||
p=10,84 v=69,58
|
||||
p=12,17 v=18,71
|
||||
p=61,62 v=77,-4
|
||||
p=6,93 v=29,-82
|
||||
p=91,71 v=-49,62
|
||||
p=84,5 v=26,-17
|
||||
p=100,1 v=-22,-38
|
||||
p=90,27 v=-34,-39
|
||||
p=84,21 v=-68,-62
|
||||
p=72,10 v=-70,63
|
||||
p=83,20 v=42,-74
|
||||
p=51,99 v=-57,51
|
||||
p=13,56 v=-78,76
|
||||
p=21,88 v=80,81
|
||||
p=40,97 v=76,85
|
||||
p=61,92 v=-97,-15
|
||||
p=29,58 v=56,-88
|
||||
p=90,0 v=-34,-2
|
||||
p=35,46 v=-23,-35
|
||||
p=88,49 v=82,-67
|
||||
p=83,23 v=98,-1
|
||||
p=19,80 v=-5,-98
|
||||
p=21,45 v=-90,45
|
||||
p=79,3 v=-14,-86
|
||||
p=49,37 v=27,-54
|
||||
p=95,0 v=-93,36
|
||||
p=55,46 v=-63,26
|
||||
p=38,78 v=-61,-97
|
||||
p=91,61 v=-60,-92
|
||||
p=44,15 v=-51,75
|
||||
p=82,86 v=20,-72
|
||||
p=93,69 v=8,-95
|
||||
p=93,59 v=-37,50
|
||||
p=73,50 v=-84,22
|
||||
p=8,7 v=-50,25
|
||||
p=97,46 v=-14,22
|
||||
p=43,2 v=-96,44
|
||||
p=29,32 v=-33,34
|
||||
p=30,64 v=-56,-95
|
||||
p=12,65 v=-38,54
|
||||
p=64,54 v=-12,-54
|
||||
p=32,29 v=66,-4
|
||||
p=80,84 v=-24,34
|
||||
p=2,93 v=53,-87
|
||||
p=77,14 v=59,-82
|
||||
p=12,25 v=-77,78
|
||||
p=65,74 v=76,-61
|
||||
p=93,89 v=-26,59
|
||||
p=1,35 v=25,-12
|
||||
p=100,26 v=1,48
|
||||
p=28,79 v=-96,16
|
||||
p=18,1 v=-16,2
|
||||
p=42,38 v=-39,-31
|
||||
p=35,76 v=-76,-93
|
||||
p=28,6 v=78,24
|
||||
p=36,33 v=-34,-5
|
||||
p=26,73 v=-95,-95
|
||||
p=96,22 v=-83,-25
|
||||
p=82,74 v=-30,-76
|
||||
p=9,98 v=46,-52
|
||||
p=80,3 v=13,-65
|
||||
p=65,11 v=68,-58
|
||||
p=68,57 v=-13,57
|
||||
p=91,2 v=27,-94
|
||||
p=2,96 v=-16,-29
|
||||
p=65,67 v=-6,-55
|
||||
p=79,63 v=88,-19
|
||||
p=17,12 v=-27,52
|
||||
p=10,6 v=52,-86
|
||||
p=3,74 v=-37,-61
|
||||
p=90,47 v=14,68
|
||||
p=77,87 v=-59,20
|
||||
p=80,63 v=-98,8
|
||||
p=20,27 v=-64,10
|
||||
p=93,60 v=-54,-38
|
||||
p=93,14 v=52,95
|
||||
p=53,79 v=-63,-87
|
||||
p=12,21 v=-10,-70
|
||||
p=71,62 v=76,-19
|
||||
p=77,13 v=-3,-48
|
||||
p=51,99 v=-46,-36
|
||||
p=58,50 v=77,-31
|
||||
p=59,62 v=54,43
|
||||
p=66,66 v=-86,12
|
||||
p=34,87 v=-93,-88
|
||||
p=93,64 v=-47,71
|
||||
p=11,5 v=1,-67
|
||||
p=54,11 v=-80,-13
|
||||
p=74,31 v=-30,-85
|
||||
p=25,60 v=6,-34
|
||||
p=94,77 v=81,73
|
||||
p=62,70 v=-41,54
|
||||
p=44,70 v=-68,80
|
||||
p=25,78 v=42,71
|
||||
p=46,0 v=-29,82
|
||||
p=6,4 v=9,76
|
||||
p=34,40 v=-52,3
|
||||
p=62,23 v=2,50
|
||||
p=85,72 v=31,27
|
||||
p=85,67 v=1,1
|
||||
p=3,37 v=-15,-96
|
||||
p=99,29 v=-65,15
|
||||
p=65,67 v=-22,-99
|
||||
p=72,65 v=55,6
|
||||
p=38,97 v=56,-52
|
||||
p=16,13 v=35,82
|
||||
p=0,7 v=-8,-86
|
||||
p=47,4 v=33,-14
|
||||
p=50,34 v=-26,59
|
||||
p=27,61 v=60,81
|
||||
p=100,11 v=13,-93
|
||||
p=94,33 v=-26,-35
|
||||
p=9,43 v=52,68
|
||||
p=23,73 v=-1,-50
|
||||
p=76,88 v=62,-78
|
||||
p=62,28 v=43,3
|
||||
p=95,22 v=-80,79
|
||||
p=43,81 v=-84,40
|
||||
p=19,10 v=85,2
|
||||
p=40,31 v=-45,-81
|
||||
p=33,59 v=11,-80
|
||||
p=53,66 v=27,12
|
||||
p=52,94 v=5,24
|
||||
p=3,96 v=-71,-33
|
||||
p=18,48 v=28,-27
|
||||
p=76,18 v=34,-7
|
||||
p=75,73 v=93,-53
|
||||
p=48,9 v=-12,48
|
||||
p=65,51 v=-69,-66
|
||||
p=78,10 v=-14,-40
|
||||
p=44,32 v=-52,7
|
||||
p=36,20 v=-68,48
|
||||
p=4,58 v=63,61
|
||||
p=12,62 v=-39,-53
|
||||
p=31,36 v=56,-85
|
||||
p=14,58 v=-51,-61
|
||||
p=86,11 v=-76,-17
|
||||
p=45,38 v=-79,-1
|
||||
p=60,41 v=29,18
|
||||
p=28,8 v=-22,-59
|
||||
p=66,47 v=-13,72
|
||||
p=91,15 v=-31,-55
|
||||
p=69,73 v=15,-87
|
||||
p=52,49 v=71,-76
|
||||
p=73,69 v=-47,-49
|
||||
p=87,7 v=-20,-94
|
||||
p=1,0 v=-76,40
|
||||
p=96,48 v=-14,88
|
||||
p=52,36 v=-46,26
|
||||
p=94,48 v=3,-39
|
||||
p=36,38 v=-71,-93
|
||||
p=64,8 v=55,-47
|
||||
p=75,63 v=59,-38
|
||||
p=64,97 v=15,-94
|
||||
p=63,102 v=4,-40
|
||||
p=41,78 v=16,-87
|
||||
p=63,82 v=58,50
|
||||
p=32,24 v=48,42
|
||||
p=57,69 v=-35,31
|
||||
p=73,26 v=-2,-28
|
||||
p=31,89 v=28,32
|
||||
p=82,93 v=-14,62
|
||||
p=61,87 v=-12,-26
|
||||
p=58,36 v=-72,-13
|
||||
p=80,49 v=-59,15
|
||||
p=34,10 v=72,40
|
||||
p=4,82 v=41,16
|
||||
p=46,12 v=5,82
|
||||
p=81,17 v=75,-36
|
||||
p=69,12 v=99,90
|
||||
p=98,16 v=-55,-24
|
||||
p=49,39 v=38,-89
|
||||
p=91,1 v=92,-32
|
||||
p=91,99 v=-48,-33
|
||||
p=16,44 v=-60,53
|
||||
p=26,60 v=-56,-31
|
||||
p=31,32 v=28,-16
|
||||
p=36,40 v=33,-47
|
||||
p=60,18 v=-97,-51
|
||||
p=5,2 v=36,-21
|
||||
p=83,8 v=20,-47
|
||||
p=32,40 v=-16,-39
|
||||
p=65,11 v=-84,11
|
||||
p=58,31 v=-80,-5
|
||||
p=96,38 v=-42,-65
|
||||
p=40,23 v=14,87
|
||||
p=36,81 v=67,77
|
||||
p=13,74 v=35,96
|
||||
p=6,58 v=-36,-64
|
||||
p=73,23 v=-53,-5
|
||||
p=22,18 v=45,-58
|
||||
p=67,29 v=-81,-52
|
||||
p=14,18 v=-33,-17
|
||||
p=51,28 v=43,-55
|
||||
p=98,11 v=-72,95
|
||||
p=80,17 v=-53,10
|
||||
p=76,54 v=65,-77
|
||||
p=76,98 v=-74,66
|
||||
p=12,50 v=97,64
|
||||
p=53,27 v=67,26
|
||||
p=22,89 v=57,-60
|
||||
p=23,34 v=40,-43
|
||||
p=35,85 v=17,-6
|
@ -1,71 +0,0 @@
|
||||
##################################################
|
||||
##.OO.O.O#........#..O.......O......O..O..O.O...O#
|
||||
#O.O#.O......#.#O......O....O.O.....#.#.......#..#
|
||||
#.##O.O..#OO...O..O.O..O#.#.O.............O..OO..#
|
||||
#.OO#......OOO.OO.OO.O...O.O.................O.O.#
|
||||
#.#....#O.......O.#OO.#..O#.O...O.O...O....O.O#O.#
|
||||
#O..O...#O.O..#OO#O....O...#....OOO...O.###.#.OO.#
|
||||
#.....O.....OO..O......O......O..........OOO..OO##
|
||||
#.O#..O...O.......O.....OO...O#...O..OO...O......#
|
||||
#O....O...#O......O..O.OO....O..O.OO....#......O##
|
||||
##.O..O..#.OO#....#..O.#......O....#.....O..O#..##
|
||||
#..#....OO.##.......O..O..#.#..O.O...OO#..O#....O#
|
||||
##O.O....O.O.O....OO...O.......O#..........O..O..#
|
||||
#.##.O.OO..................#.##O.O...#OO.......OO#
|
||||
#O....#O.....OOOO.O.#.OOO#O.....OO...OO..O....#..#
|
||||
#.#O.O.......OO..OO.O..O..#.O.O......O.O..#O.O...#
|
||||
##..OO.O...#.....O#O.O..O.OO#.O.OOO...O....#O.#.O#
|
||||
#....O.....O#O..O.O..O...............OO.O.O.O.OO.#
|
||||
#.OO.O...O..O..OO#O..#....OO...O...O.O#.O.#......#
|
||||
#..OO.....O...O..#O........O..O.O.O..#...O...#...#
|
||||
#O......OO.O.........O#OOO.O..O...OO..........#O.#
|
||||
#.O.....#.......#O......O........#.O.O...OO.O..OO#
|
||||
#.#OO...#.#.O...OO.O.....#OO.O...O.....O.O#.O.O..#
|
||||
#.O........#.O..O.O..#.#O#.OOO.....O..#.....#....#
|
||||
#..O.O..#O#....OO#OO.#O#@.O..O.O.#...#.O.........#
|
||||
#O....O.....O...O.#........O.OO.O..#...O....OO...#
|
||||
#..OO.....O#.........O#........OOO...OO...#O#O..O#
|
||||
#O....O...#O.O......O..OOO....OO#O..OO...........#
|
||||
#O#.O..O...OO..........O.O...O.......OOO.........#
|
||||
#...O.....O...O..#OOOO..O......#....#.O....O.....#
|
||||
#..O..O.OOOO.O.......O.....O...#....O...O..OO.O.O#
|
||||
#..OOO..O..OO.OO..O......O...#O...#.....O.....O..#
|
||||
#..OO.O..O..#O....OO.....OO..O#O..#..O.#..#....O.#
|
||||
#.O.#.#..##O.....O.....#OO...#......O.OO.O..OOOO.#
|
||||
#..OO.O..O#.....#....O#......#......#.O..#..O..O.#
|
||||
#O#...O.O..#....O.OO#.O.#....O.....#O......O..O.##
|
||||
#......##O.OO.O#.O...O..OO#.O..###........O.OOO..#
|
||||
#...O..#..O....O.#..#......O..O..#O...O...O......#
|
||||
#.OO.OOOO.OO..#...OO......O.O.....O...O....#..O#O#
|
||||
#O..#OOOO..#.O.O.......O...O.OO...O.........OO...#
|
||||
#.O.....OO..O.....O.O#..OO...O#......O.....O....O#
|
||||
#O.O..O.O...OO.O.....##...O..O....#O...OOO...O.#.#
|
||||
##.O..O.O.O..##O#......O.OOO.#.....O.....O..#....#
|
||||
#....#...O#...#..##.O.............O..#O..O..#.O..#
|
||||
#...O..O#O....O...O...#.....O#OO...O.....#.O.....#
|
||||
#.#O...O.O.O..O.#.O....O..O#..O.OOO..O....OO.....#
|
||||
#......O..........O..#.#.....O...O..OO..O.O.##..##
|
||||
#.O..O..OO.OOO..O...O.....O....O.......OOOOOO.O..#
|
||||
#...#.O.#O#....#.O....OO..O.##....O.O.#.....#..O.#
|
||||
##################################################
|
||||
|
||||
>vv^v>^^<>vv>v>^^<<^^>>^><^v<v<^>>v^><><<<<vv<^vv<^<>>><<v<^>>>>^^>>>v^v>^<v>>^^<>>^>^v><vv>v<^<^>><<v>^v^^v<^><<<<^><^v>^<>>^^vv<<<v^^><>vv<<<^<^v<>v<<<>>>v>v^>><v<>>^v^<v^v><<v<<^>^^<<^v>^v>vv^<><v^<v<^>v^<>^><<<^>>>^v^>>^^^^<<v<^>vv<^<><<>vvv<><vv><><v><^<v^^^v><<<<<vvv<>^<^>>vv^^^>v^>^v^^^v>^^><<<>^^v>^<^<>vv>>v^v<^^<<v><>>><^^v^<^<^v<^><^vv>vvvvv><>v<^^v<^v<<v>>>v<v<<>>^<v^>vv^>v<<^^<^<>v<><^v>vv>>^>><v<v<>^^<^><>v<v<>^^<v^vvv>>><v>><vvv><>v^v^<^<<v<v^^v<^^v^>^vv>^^<>v^^^^>vv<v^^^<^^v^^<>^><v><>v>^<v^vvv^<<^>>^^>^<>vv>v>v<^><v^v^<>^<^^><>^<v>vv<>v>^>>v^^^^>>v<v<^v<<v<>v<>^<>vv<>><<>v<vv^^<v<v^<^><v>^^^<^>vvv<^<<vv<v>^^^^<^>>><>>>v>>v><^<vv^<v^<^vv>><>v^<v<>>>><<v><v^>v^v^^<v<v<^v>^><<>>>v<v^<<>^^^^^v^^^<<v^<v>>>v<^vvv^>>^v^<^vv^v>^vvv>>^^^>v^>>^><^>^^<^<<^v><^<^<<>^^<<^<vv>>v^vvvvvv><v<^^v><^><><>^<<>v^><<>v<v>><<v^^vv^^v<>^>>>>>^>>^>><<v>v<v<>^>v<v^v^^<^<vv^^>>v>v<<<>^v^<<<^>^>^vv^^>v>>>^^>><v><>^<><^>><v>>v^<<<<^v^>v^>^v^v<>v^>v<^v><<>^^<>>v<>^<>vv^>v>^v<^><v>v><^><<<^>>v^<<>>^v
|
||||
<>>>^v<<>^<<v<>^<>>><^v<<<>^<^<<vvv>^<v><>^vv^<<>v^vvv<<^v><>^v>^v><v<>>>^vv^v<vvv>^<>^<v<^^<>vvv<<^>v^^^v^>>^vv>^vv>^^>>>^<v<^v<vv>^>v>v<v<>><vv<^v>^^^vvv^^vv<>^<v><^>^<^>>v>><>><^v>^>^>^^<<vv>v>v>>^<^><<^<v<<<^<v><<^v^><^><v^^<^^<<<><>>^v><^^<<>>v^^<^v><^<v>v><>><>v<>^v^<<>>v^<>><<^<<v>^<^>v<v<vv<<v><<^<<>>v>>^>v<v^><^>^><<<><v<<<^^>vv<v^^vv^>>><v^<>v>^v<<><^<^<<>>>^vv^>^^<<<<vv>v>^^<><><^>>v>v>v>v<><vvv^>>^<>v^<^v^>v^<<><vv^>^^vvv<<<<v>^<vv<<>>>v^v^v^<><<v^<^<>><^^vv^v><v^vv<<^^<v^<>v><^><v^<>^^>^<<>vv<^><>^vv>><v>v><><<vv<v>>^><<^^><^>^vv>^v^><>v>v<>^<<v<<>^>><>v^vv>vvv>v>v>v^v^>^<vv>^<<v>^>v<^vvvv<<^^v<^^<>v<>v^>>v^v^<^v>v>><<<^v>v><vvvv<v>^<^<<<><>v>v<<^>><^vvv><<>^<>>vv>^>^<v>>>vv^<v^>><><^vv>v>v<^^><<<<<<v>^v>v>^^<v>v><<v^^v^vv>>><^v<<<v^v<<>><>^v<>>^<^v^^vv>>>^>v>^vv<<vv>^><^<>>vv>>^^<^><^^>><v^vv^<v^>vv<v<vvv>>vv^v<<>v^>><<vv>><^<>v>vv>^<v>^^>>v><<><^<>><><>^^^^v><^>^^<v^<>v>^^<^<v<vv^^^<>>v^vv^>>^^^vv<<>^^>>^v>>>>^><^^<^<v<>>><v<^<^>vv^v>^^^v^>><>vv><v<>^>>^<<v^v^v^^vv^<v>^<
|
||||
><<vv<v^^^<>>>^>v>^<^^^<v<vv<^^<>><^<>><^>><<>v<^>v^><<^><>><<v^>^<<v><^>v>><vv<^v>><>v<<^^v>v><>>><^>v>>^v>>^v<>v>><v^<v<<>>>>^v><<v>^<>>v^^v><>^v<v>>v><^^<vv<<<v><^><><<><^><v^^>v^>>^<<>^v<<^^^v^<<<><^^<><vv<>>^>^>^^>>^><>>v>v><v^>><<v^v<>^v>^^^^<^>>>>vvv>v^v>v>^<>v>v<v>>>^vv<>^><v>^<^<v<<<<>vv^v<v<v^<>^>^^^><>v^^^>v^<>>^vvv^^<>>>^<<<vv>>^v<><^>vv>v^^^<v^>>v>^v>v^>vv>vv>>>vv^vv>>v<>v^vv<v<^><^v^><^vvv^vv<vv^>vvvv<vvv><><>><^<<<^>vv^>>>v<<>v><<^>v^<<<><v<<^^<><<<><<^><>v<><<>v<^v<^^v^^>>><<^vvv<<>>^>><<vv<v<^<<^<^<<<>><<v>^v<>^^^>>>^^<^^^v^^v<<^^v^>v^<<^<>^><>^v>>>^^vvvv>v^<v^<^<v<>><v^^>>v^v^^v^^><v^^^^^^v^v><^<><><<^<vvv^><vv^<<^<v<v<^^^^><>^vvv<v>>>v<v<<v^>v>vv<>^>><<v<v<v^^^>v<<>v<><v>v>><><<v><<^^^v>^vvv>^<^>^v<<>>^><>>v><><^v<v<<^v^<<v^v>v^^<^v>>^v^v>^^^<<<<>v^>>vv<vv<<><>>^^^v^v^^^><><v<><v<<v><<v>vvv>>^^<v>v^^>^><<v<v>>>vv<>^<>^>>v>>^>v>^v>^v>>vv<^<>v>>vv<<v><>^^>><>vv<<><<^>v>>^>><>><<>v><<v>><v^<>v<>>>>v<<v>>v^>^<^>>^<>^v<<vv^<<^v>>v<>v>^>v>>^<>^<vv><^v><>^<<v>^v^^^v>^>v>^^v
|
||||
<v^<^^vvv^v<<^<v^<^vv^v>><>><<><>^v^^v^^^<v>v<^v<v^><v<>vv^<vv<^>^>^^>v<>vv^v^^><^^>>><vv<>><v><^>vv>>><^>v>v<^<<><<<v>v<v<>^>>>>v<^><^v^<>^>^><v>^vv<<^>>^v>^^^>^>v^v<>>^<>vv^^v^^<^<vv>v>^v>>>vv^>><v>vv<>><^<><v><v>^v>>>>^<^^<<>v<^vv><<^^<<v<v<v<<v>v>^vv>>vv<<>><^<^<v<>v<>^<^<<>v^vv>v<>^vvv>^<vv><v>^^vvv^^^>^v<^v^v^<<>^vvv>^>^vv>v^>^><vv^^v>vv<<v^><v>v<>>>>>^^>vv>vvv<vv<<^v<^<^v>^<^><v>^><<^<^<v<vv<><<v>^v><<v>>v^vv<^<<v<^>^>v<vv<^v><v^>^<v<>>v<>>^v^v^><^<<^v<vv><v^^^v<>>><>v<vvv><>^vv<>^><v>^><<<^v>>v^^>^^<^v>><^^>v<^<<>^v>><<v<^>>v<><>vv>vv>^^<v<^^<^<<^^<^^><v^>v>><<^^>v<<<^<v^><<^vv><>>v<><>^>v<^<<^>^>v><>v>^vvv<<<^>^^vv^>v<<v>^^^v<<>v^>v>><>>^v<^^><>><>v<v<vv>v<<>^>>^v^^<vv<^>^^>vvv^>v^>><><^<<>^<^<>v^>>^^^<^^v<vv>^<<<<<^vvv<><>^>>><^v<>^^^^v<^>>v>^v<<>>v^v<^>vvv<v^vvv><^^<>^v>^v>>>>^^<^^<<v><<>>>>>^v><>^><^v<>v>v<^^v^vv^^^<^>v^>^^<<v>^>>>^>^^vv<v<^v^<>v<vv^^vv^<^>v>v<<>>>^><<<^v>v<<vv^<>><v<><<>v^<^vv<>v><<^<>^><vvvv>v><<><^^<>v>>^<>vvvvv<<^^^>><v^<v>><>v><><^>><>^>>^><^<^^^^v^^vv
|
||||
>v^v^^v^>v>^vv<>^<^^vvvv<>^vvv^<^<><v<vv^^>v^^^>^vv>>^^<^<^v^>v^v<^>>v^>^^v>v^<v<^>^>v>^^^<v^v^<v>><v^^^v^>vv^v<>^>>^^<v><^^<><<<v^v><v^v<><^>v^<^<<>>^v><>^^>^^<v^<<><>v<>v<><^<>v<>vv<<^><vv>v>^<>^v^v<v<^^>>^><<v>^<vv^v^^v<^^^v>v<v<vv>>v^>v<^>>^<v<^^>^vv<v^<><>vv><>v<><<>v><v>>>><<<vv>^<<><^>>^vv^>v<^<>v<^^v<v>vv^>v><<v<^^><>><v^<^v^^>>>>>>>v^<v>^>^^<^><^v>^^<<>^^>>^><v>^<vv<^^<<^v>v<^>>vv<^^>vvvv>^^>v>>>^^<<<^<^<^^<^<^v>>^>vv^<v<v^v^<v<><<>v^v^<><<vv>><^<^^v<<vvvv<<<<>>^v><>v^v^<^<^<v^<>vvv^v^>^vv^>^<^><><^v>^v<v>>^v<v^^^v^v^v><v<<v^><<>v<^>^<>v><><>><>v<>v^<v^><v^^<>^^<>v><v>^^>^^v^>v>v<^^<>^>^>v^vvv<>vvv<<^vv<v^^^vvvv^^<<vvvvvv>v<^>>^^vv<^^><<<>v<^^<v><v^>v<^^v><v^<><^<><><^^<<><><<vvv^<<^^><>>v^^<v^^v^>v>vv>^v<^><>vv^^>v<>^v<^^><>^^^><^<<v>v^<<<v<>vv>vv<><^<^<^<^<v>v<v>^v^vv<v<><>v<<^v^^>^>>v>^>v^>^v^<^^^<<<^<<<>^<^v<>v<<vvv<>><<<v^<<>^v<<><vv^<>^vv<^^<<>v<<<^^^<v<v<>v^<^^vvv<<^^^>><^<>v><v<><v<><v^<<vv^^v>>v<v<v><vv<^v><v>v>>v^v^^v><^v><>^v^v^^v^<^^v>><<<vv><^<v^^v>><>^^<v^>^>>><^
|
||||
^v^vv>><^><^>>>v>>>>v<>><<vv<vvv^<><>^^>v<<><><^^>>^><^><><^^^^v<^^<><>>>^^<<<^v>>>><<^^^<>v<v>><<v<v^^v^<^>v<^<v>><>v^>v>>^><vvv^^>^v<><><vv>^<<<^vv^<^vv<v>v>v>^<>>^<<v^^^v^>v^<<<v<^^^^v^v<v>>><<<>v>v^><>^vvv<v<v<<<><>><^v^>>^<><<v^v^>vvv^v>^^^><<^v>^>v>^<<^^v>v>>^<v^^<vvv>^>vv^^><<><v<^^<v><>>>^<>><v<<<^^v^v>v^>v<<<^<^<^<^v^>^^v<^<v<>><<>>v<vv^<^>v<^vvv<^>v><>>>^>vv^^>><^>^<v<><v<v^v<<>^^<^^><>^v>^^v^^vv^<>v><^v<>^v<v^v>><v^^<v^<vv<<<<^><^^^^vvv>^v^>^<><v<^>>v><<v><^^>v<^v<v>>><v><<^v^<v^><<<v<>vv>vv<^^vv^^^v<>vv^<v<vv>^v><v<vv>v<<>^^vv>v^<<^<^^v><>vv<>v<v>vv^<v<^><<<v><^v<><<<v^<>>vv>v<v>^v^>v<<<>v^v<^>^^^^^<v<<<v^<^^^<vv>^><>>>v>v<^<v^^>^><<<^^><><v<v<^v>vv^^^<^<>>>^>^v<>v^><>><v^^v>vv<>^<^vv^<<>><>>v^<>>v>>>>^^<v^v<^<v^v^^>v><>v<v^^v^>v^<^^>^^^vv^v<>vvv>^>^^<v^v<^^v>^^v^<>v<^<vvvvvv>>^v<^^v>^<^^<><<v<>>>vv^v<<^<vv>^^><<<<<>^<^v<<v^v<<<<<vvvv<v<>v><^^<>^<<>^v<>^v><>v<v>><^<>><v<><v^>>^<>vv^<v^v<^vv^<><<<v^<>><^>v>v^>v>v^>>^^^>>^>v<<^<>v<>^^v>>>>>v^>v<<^^^^<^^^v<>^>^^v^<<><>><>^<v>v
|
||||
v>v^^^^><v^v<vv>v>vv^v>v><>^>v<^><^>>v<>v<<<<v^v^^^^<<<<v^>^<v<v>><v>><^>v><<v><v>^vv^<vvv^^<<<>^<^<v^v>^^<^>v>>vv^vvv<v^><^^v><v<<^<^^<<^^><>>^vvv^<^<>v^>>^v><v<^^<v^<v>v^>^^<<v^<>^<<^<vv^^v<<^v<^vv><^^^v>^vv^v>v>^><^>^^^^<>^^^>v>>v<^v^v>>v>^<<>^<^^<>v^<><<^>^v^v^v^>v<<^vvvv^<<^^<^<^vv>^v>v<^<><v>^><^<><v<<<>>v^<<^<^^^^v>v^<^>v^>>^v^<>v>^v<>>>v>^>^^>>v>>>^^^^><^v<^>vv^>v<>>>v^v^vv^<>^><><^<>^<><vv<v^v>v<^v><>^<<v>>vv<><vvvv>vvvv<^v<<<>vv^<^<^v^<>v^v<v^<<>^v^<vv>>v>><vvv<^>>v^^v>vv^vv<v^<v^v>^^>vv^^>^<>^<^><><<>^>^^<<<>^v>v^<>v^>>><<>>^<>v<<v<^v<v>vvvvv><<<v<^<<>>v^>v^^<^v><^>vv^>vv^<><<>vv>vv^<>^^v^v<vv<>v>^<><^<<>^v<v<^^<>^<>>^<<>^^^<<v>^>><v<^^<><v><><v<v>^>v^<vv<<>>^v<>>^>v^v^>^vvv^><<v<<v<^<v<<><^^^^<<^^<<^<v>^>^>^<>>>^^>v<<^<>v<^<^<>><>v^>v>>>^^^v<^^><^><>v<v>>v^^vv>^v<v<^<^<^>^v>>^<^vv>^^<^^^<^>^<^<v^^<><v^><v^v<v<<^v^<>v>v^^v>^vvv^<^^v<^<>vv<v<v<^v<><^v<>v^><<^vv<v^<<<v<<v<vv<^v<>>^^<v<v>^v<<>v<^^<>v<^^^^<vv^^v<^><<v^>>^<<^<<<<><>>^v<<<>^><<^>vvv^v<^v<v^vv<vv^<>^^<^^^<<^<^<><<v
|
||||
>vv^>^vv^<>^>>>^<^<vv<v><>>v>^>>v^<><<<^vv^<v^^v^vvv><<^>>v<^v>><^><vvv^>^v^<><<v<^>>^<>^v><v>^<>><><<<^>^<v^<<v<>><^^v><>^<><<<<v<^>>>v>v>v^v<^<^v>^>^><vv<>>><><^v>^v>>v^^>^<v<><^>>>vv>^v>^<>>v><^>^>^v>v<>^>vvv<>>^>vv>^v<><<<<v>>>v<<v^v^<v^vvv>><>^^<vv<^>v>vv<<^^<>^^v^>vv^>>v><><v><^><><v><<^><<^v^>><><><><^^^vv>vvv>v<>>v<><>^<><vv^v<^^>v>><>^>^>^^^v^>v>><><v^vv^>^^<^vvvvv^^<vv^<<v^v<<^^^<<v^^><^v<^>>>^v>v<<<^^><<v<>^vvv^<>^^<^^^v^<^v<<>>^v<<^^^vvv<v><vv><<vvvvv^^vv>><<^><<vv^><<v^v^>^^<>>v^<<>vv>v^v>><^<^>^^<><<v>^^^v<^<<^v>>^>vv^<<>>^v<>v^><<v^vvvv^^<<vv^<><^^^<>v>>^><<^vv><^><<v><<<<v>v^v<^^<v^v^>>><^v<^><<v^vv^^>v>v><>v^<v^<^<<v^^<<^^<>><v^<>^><<>><<>v>><<>^>>^v<^<^>vv<<<^<v>^v<^<v^^>v>>v<v^<<<v^<^v>v^v<^><vv^v<<<<^v>^<>^<<^>v<vv<<^><v<>^>^>v^<<^^v<<^>^>>>v^^^>>v><vvv<^vvv<><^>^>^v^<<^<^v>v^^<><vv^^><^v<<vv^^^<v^vv<<>><<<^<>><v<v<v<<^<<v>>><^vv^v><v^v<<<>v^^><>^<v<vv^^<<^<>v>v<^<vv>^>^v><v>^<^<<^<^^v<v^^v<^><v<<vv>vv<vv<<<vvvv><>^^v>vv>^<<^vvv>vvv<^^<^<<>v^v<v<>^vv><<>^>v>>^<vvv^>
|
||||
vvvv^v^^>^>v^<>><<>>^>>>v<><>v<v>v>v><<<^^<>^^v^^^<>vv<v^^<<^v>>^vv^><^^>>>>^^^<<^<<>^>>vv^<>^^^>>vv<>>>^v>v^^<>>>>^^vv>^><^^vvv<^>^^>v>^<<^^><><>>v<>>^<v>>><^<<v>vv>v><^v^^v<<vv>^<v><<>vvv^>^>^<<^>>>^v^><>^^^v<<^v^>>v>v><>vv^v><vvv>vv^<<v<<^^<v<vv<<v>v<^^>>v>>v><>><>v><>v>vv<^^v><v<vv^v<>v<v<<v><<<<<>><>>v^>^^<^<<v<^^^>>^>>v>>>^v>v>^><<<^^>v>^<v^><v>v<>>^<<>^<>v<<^^<<<^<>><^<>v<>vvv<v<<><v^<v<>^><^^<^<^>>>v^>v^>v<v<v<^><>v<>v>^v>v<>><^<^<<><<^<<<>vvv>>>^^^<<vvv>^>^<v<>v^v<<^vvv><>>v>v><vv^vv^^<>^<>v>>^^<<>>><^>><v^<vvvv^>v<^v<<<><>vv^v^>^v>>>^v^<<v<>^>>^>>v>^vvv^v^^<<^^<>vvvvvv>>>v^>>>^vv>^v<<><><v<<^<>vv^^v^<^vv<<<><^v^vvv>v<>>vv>>vv<v<^^<vv<v^<<>vv^v^<<>><^v^^^>^v<<^><>^>><>v>^^<v^><v^>vvv^<>vv<<^^>><^<v<v<>vv>v<v^v<><vv^<<<>v><v>^>^>^<^v>^<^v<^>^^<v^<<<>^<^^v><>v<<^vv><<><vv<v<vv>v^v^v>>v>v>>^^><v<^v^<v>v<>vv^<<v><>><vv>>v<>^>^vv><>^^>v<<^v<v<v>>vv^>><<<v^<><<<^^><<^v^v^<^^<>v^>>>><>^<vv<v>^<v<<^>v^>vv<<<<v><v<v^>>^>v<vv^>vv<^^>^v>>^^^v>>^^v>>^>^<v<^<<<^<v><^>^^<v^>^>><>>>^v>>^<^<^
|
||||
>><>>>v^><^>>>^<^>v^<^^<><^<^>v<><^><^>v^<><<v>>>>>^>vvv<^><>^>vv>>^^<v<<v^^>>>>^<>><v^>>^v^^^^^>>><<<<>>v<^^v><>>vv^>>vv^v^v<^<^<>>v><>v^^>v><>v>^^<^v<^>>>>>vv<v^vv^<><^^^v^vv>v><<^<v<vv^v>vv^^<^vv<v<v<<<>v<>>vv<><<>v><^<<vv^^v^^<v^v<vv>><^<><^>v<^<><><<^<><^v^<^^v<^<vv^>^<^vv^v>^<^<^<>v^v^<v<v^><><>v>>v<><v<^v^^<<<^>^^^<v><>><><>>>v^>>^>vv>>^vvv^^><^<<<>^^v^v^>v>^v><>^^vvv<^<^^><v^>^>>>^vv^><v<<<<^><<>v>><v<>>v<>^^^>><<<<v^<>^>^v^^<<v^>^^<v<>^v^<>^^<>><<^v<<^>^v>>^><^^<^>^^<<^^<<v<v^<vv^v>^>v^><>>^^^vv><^>>>>>^^v>^<>^<<^^v^^>>v^<<><^v<^v^v>v>v<><^vv<vv>v^^^<v<^^<^<^<^<>^^^<vv^<>v<><<><<v<v<<>v^>>v<>^<^^^^^><<<^>v<v><><>><^<<^^>^>>vvv^><>>><^>>vvv^^>><>^>>vv>v><^>^<v<v<^v^>vv>>v^v>vvvv^^^>vv<<<v>><v<v<>^>v<v^v<><v<>vv^^<vv><^^^v>^v>>v>^v><v<^<<v>vv>vv><<>>>><^v<<^>v>>^<vv^<v<^<v>v>vv^v^v>>>v><<^v^v^v>vvv<>>>>v>v^<<<<^^>^^>v^vv><v^v<vv<^<^^>>v^v><<><v><vv<<vv<v>^<>v^>>v^v>>>>^<>><>v^<^>v^<^<>>^vv<><v<<^v><>^>^<^v>><v^<>v><^v^>^^>v^>^vvv^<<>v^^^>>^<<<v<^v^^><^v^>vv>^vv^v^<>^>vv>vv>>>^>v
|
||||
^^^^^>>><<^v><v>>v^>^<^>>>>v^>v>vv<>><^^^v^>^^^v<<><^v^^<^<<^<v<v<v>>v^><v^>^^^^><><<<^vv><<v^^>^v^<>v>^>^>>v>v^v^<>^v^>v^<v><>^<v>v><v^^>^><v^v<>^<v><>^>><vv>^v<>><v^v^v>vv^^<vv>^<^>><^v^^^vv>v>v<<^v>>>^^>v^>^<><^^>^<<v<v>^<<><v><>^^<<>vv>^>vv^vvv>><>>v<>>^vvv><>^^<vvv<<>>><^<v<v<<^>><<<>v^>^<v<>^^<^^<>vvv^v<^^vv<^^^>vv>>v<>v^v<<<>v>>^>v><vv>v^<vv><><>v>>vvvv^>v^v^vv>vv>^>^^<v^^>vv^^v>>^><>>>v<<<>^>^vvv^v^v><>v^^^>^>>v^><><v<^v>v>v>v>vv><<<><<^<>^vvv<<^<><v>vv>^^<<><^v>v>v>v>^vvv<>^v<v^<^^^>>vv^>v<^<<>^<>vv<v<^<vv><v^>^<^>^vv>^^>^>>>>>^vvv>^<<<v^v^v<<>v>^>>>^^<^>vvv>^v>^<v>v>>v><<^<>><^<^^^<>^<v^<><v^vv>^^><^^^<>><v<^>><v^^^v<<>><>><>><>>^^v<>>v><<v^<^^<vv^v^v<v^<v^v><<^v^>v>><v^><v<><^v>^<v^<<^>>^>vv>>v<><>v<v<<>><vvv><^>vv><v^v^^^<>v>v<^v^v<v>v<v>^^>v><><<v>>^>v<vv<>>^v>><^v^>><<>^>>v^v<>vv>^^^>^^vv^<^>v^^^>^<<vv<<^>^>^><>vv<^vv<^^<v<v<><<^v><^>>><^>^v>^v<<^^<<>^<v^v>^v<>>>^>v>v<vv^<v^vv<>>>^vv>><vv>^<vv^^>^^>>>vv>v>v^v>^vv<><>^<>>v<^^<>>v^>>>v>^>>^>v<<<>v^<^vvvv>v>^<v>^<^vv>>><vv^v
|
||||
<^><>v><><>^vv^^v^<^<>>^>>v<><<<^>>^<vvvv<>vvv><>v>^>^<^^v<>^<<v^v>vv<v>v<<^v^<>>v>v>^>v>^^v^v^^<^v>^v<<><^v<<<<><<^><^>^v^^vv><>^^vvv<vvv>^>v^v^<>vv>v>^^^v>v>^<<vv^v<>^<^<vvvv^<>v><v^<<<>>vvv^>^^>>v<<v>^^<^v<<v>>v<>><>>^><v<v>>^><^<v^vvv^^>>>>>^>>>vv<v>^>v>>^<<>>v^v^^vv^>v<<><^><v><>^^<>^vvv^v<<^<^v<<><><v>v>>^>v><v>^>v<v^<v>><vv><><><v^v^^>^v<v>>>vv<^><<<v<^v^><<v><<v<^^v>>>vvv^>vv^<v^^><v^<<>v<v>^<>vvv<<^><<>^<^><^><><>>v><>>^vv<^^^^vvv<^v>>v>^<>>>^vv<>^^v<^v<<^><v^^^v<vvvvv><<vvv>v<<v><v<<v<vvv<<^>v^^v^>>^v^<^<vv^v<vvv^<<<><>>^>v>^v<^<>vv>>^><v^>^<<><^>^>><^<><^>v>^^^><v^<><v<v>^<><>>^^>^vv<v^>><>^>>><><>^<<<<v^<<^<v^>^<v<v^^<v<<<v>v<><v^<<^>^^>^>^><^vv>v>>v><v^v<^^v>>v<<>v<^^>v>vv^<v^^<v><v^^<vv<^<v><<vv^v>>^><vv<<><^>^>>v^vv><><^^<<>^^^<>^>>>^v^<>v<<v><vvv<^>v>^<>v^^<^^<v<^^<^v^<><<^<^^<vv^<<<v^><v><<><>><<<v>>v^>><vv<vv^<^>v>v>vvv><^<^v^^<>^<<>>><<^>>vv>v<v<v>vv>>>v^v><<v<>vv^>v<>>v^^<v^v^><^^^<^<>^><<<v^>^>^<>v>vv<<>^v>^<<><^^vv<v>>vvv>>^<<^>^vv<^>>>vv^<^<vv>v<v<<^>vv^<^v>>v>v^
|
||||
^<^><v<<>v>v<<^<>^>>v^>>>vv<>v^^<vvv><<v^<<<v>>>vvvv><v<^<<^<>^vv<v^vv>>^^^v^<vv<<v^<>vv^<^vv<<>^^><v<vvvv<<>>v<^<<>^><<><<v<><<v>^><^v^v>v>v<>^vv^v<>>>^v^^>v^>v^v<vv^^>v^><^^^^>>v<vv<^>v>>^^><^<^>>v><v<><<<<v^<>^>><v>>>v^>>v>v^>v<vvv<^^>v<>^<^<^v^^v><^>>v<<v<<<<>v<^^vv>^vv>^^v<>^><>v<<v^<>v>><<^^<v>>^^<<<^v<v<<v^<<v<^v><>^<vv<<>><<v^^^<v>>^<v<^>^>v^>^>vv<v>^v<<>vv<^vv^<<<vv<<><v^^v>^^vvv^v>^<vv>><><<<<v^v^<v^v^>^vvv^v^<<>^>^<<<<^><><>>vv<>^v^<>>vv<>^^><>vv>v>vv><><^<<^<^vv>>v>>^<^^v<v>^^<v<^v<v<vvv>^><>v>v^v>>>vv^<^^^v^<^^>vv>^vvv^v^^v<vv^^<^^v><^v<<<^>v>vv^>^^<^<>vv>^<v^>vvv>^<>>>>vvvvv^^^<^v^>>>v<v>>>v^>^^<<><<v><v^>>^<^vv>^<<v^v^v>v>v<vv<<^<^^^<><^^><>v>^>v<^<^^^^^<^^^>^vv<>>>v><><>v<<<>v>vv><v><><^>^<<v^<^vv<>v^><^vv^^<<>v<<<>v><<>^<^>^^^><<v^>><<<vv^^v>^^<^^vv<<<vvvv^><v>>>v<<<<>^^<<<<>v^<<>^<v^v^>v><v<v><><<>>^^<>^v>^v>>vv^<<<v<><<^v>><v>><<>>^>vv>v>v>>v<>>^><><<><<<><>v<>>^^vv<>^<<<^^><>><v^<v<^>^<v<^^<<<>v>><^<<>v<v^>>^^>^^vv^<^>^^^v^^<v<<<^<vv^<<>>vv>vvv>^>v^vv<><^><>v^^<>vv<
|
||||
^v^v>v^><^<<vv^<>^vv^v>>^>v>v^vvv>^>^v<<<<>^<v>>>v^vv>v>>^vv^<><<^><>v>>>v>v>^>v^vvv>^>^^<<<<^<vv^<v<<><>^^v^>vvv>>>^<>>^v<>^^>>>^<<>^>v>>>v<<><v>><<v<<<vv^<><v<^v>>>^vv>>>^>^^<>v^vvv<>vv<v<^<^vv<^^>>>v>v^^^v><^>>vv>>v<<vv^>v>^><<v>^vv^v<><v>^v>vvv^<<<^^>>>>^^v^vv><<<<<<<><^^v^^<v^v^>^^v^^v<>><v^>>v>>v<^^vv>^<^<<v>^<v<<v<>>vv<^<vvv<^v^<v><^<><<<^>>>><>^^v>v<^v<^<vvvv^^<v<^<v<^<>vvv>><<<vv^<vv><vv^v<><<>^v^<^<<v>^>>><^>^^>^<^>^vv^^<>v<^>v^^^^^><<<vv><>v<^v^<>v^>^><>v<<^v>>>^v<^v<^<^vvv>vv<>^v^>>^v^v>vv<v>>v>v^v^>>v>><><v^v<^>vv<<vvv^^<<vv^^<^v^<>v>^<<^>^<<<>v><^<<v>><^vv>^>>vv^vv^<^^^<^v>vvv<v<^v^<>^>>>^v<<<>v^^<^v<>^^^<^v^<>>>v<^<<^vv<>v>^^<v^><<vv<^v<<^v<v<v^<v<<^<<v<^>>>v><>^<><<^^^<^>^>vv<^vvv^><v^v>^^<v^<>^<^<^<<<^v>^^<v<vv>vvvv^<<<>^<^>v^^>^>>vv>^v^><>>^<<^^v>>v<^v>v>^^^>v^^>^>>>>><^^>>v^>^v<>><<vv^^v<^>v^v^vv><<>v^><<>v^>^^^vvvvv^^^>^^>v<>>>^><^v^<^>v><>>>>>vv^^<^v<<<<<<v^^^<^>v<^><><<^v^^<v><<<v>>^^<<v<>v<<>>v>v<<>v^v>vv<>>^><^<>v<v<<^>v^<v<^^^v>^<<v>>vv>>v^<<><<<<<^<<>vv^><^^>>
|
||||
<><>^v^^^<vv><<^>^><^<><<v>^<v<>><v><<v>>vv^<^^^<v<^v>^^<^>v<v>v^v^<^><>>^>^^^v>^v^>>><v>^^^^vv<>v>>>^v<<<v<<v<^<v^v>>^>>>>vv><><^^<><vv<^v<vv<v<vv<vv>v<>v<^v>>^>v<><v>^^v^^>^^<<^><<v<<<<v<v><^^v^<^<<<>v>v^<^v<>>^>vv<^>^<>v>v^<^vv^<>>^^v>><vv^<>v>^<<<><^<>v<<v<<>^>><vv>^>v^><<v^>>vvv^v>>>^^<v<<v<v<^>^vv^v>>^^v^>vv>^>>v<>v<>v>><^<v^v>^<^^v<<>v<vv><vv^^>>v>v>v<><^v^v<<>^v>>>><v<>vv^><<>v<v^>>v^^v><<^<vvv^><<^><v<^^v^>^>v<>^<<^><^<>><>>v^<>^v^^<^<>>>><<<v>^^^vvv<<vv>v^<vv^^<^<v><v<vvvvvv>>vvvv^<v<^^>v<>><^<v^>^<^<^<>v<>^>v<>^^>v^^>vv>><v>^>^v^<>vv>>>^>vvv>^<>^<^<>^>v^v^<vv<>vv^<>^<v>><>^^>>vv^<><vv^^v><^>^^vv<>^<<<<vv<<vv^<v<v>^vv><^<<><v<vv^<<v<><>^>v<^^vvv^<^v>v^>>>^<v><^v<<v>^v<vvv>^^<^^vv>>v^^>v<<^>v>><^<v><v^>^>v^^<<v^vv^^vv>^^^<<<v><<<^<^v<v<^>v<^>>v^<<^<^>^v><<<>>>>>><>v^v^><>v^><^^^v>>v^v<<^v^<vv<>>^^<v^vv>v<^<v>>^<<<>><^<>^v>>><>>>^>>^v<<vvv^<<^<v>>^v>vvv<^^^^vv>v<>><>^<<><<vvv>^<^<^v>><>v<^>v^>v>v<<<>vv<>^v^^>>>>^<<>v><>>>^v^>^><<<>v<>><^>>^^<vv^^>^<^vv>>v<v>vv<<><^><<^v<>^v<<v<
|
||||
v>^><v^^vvv>>>^<<<>v<v^v>>v>^<^>v^<<^>>^^<^vv>>>><>^><^^^vv><v<^^<<^<<>v^><<v<<v><>v>v<>^>>v^<<^>^<<v>^><^^v<<^>>vv>^^^^^v<^>>>v^v<^v>>>^^>v^<><<vvvv<^<v^>^<><^v^vvvvv^^<<>><<>>v^vv<^v<>>^<<vv<vv>^<<v>^^>v>>^<>><v>>v^v>v>^><<<>>>><<<<<v>^v>>>>^vv<<<^>^>vv><v^v^^vv^v^<v^<^>v><><v>><^^<^>>v^^<^><^<<v<<v>^v>vv^<^><<>v^>><>>v<^>^><vvv<>vv<<vv>^v>v<<^>^<v><<<<>^<^^v<vv<>>><^vv^v<<<>^^v<<><v^v^v>^<v>v^<<v^><v<<^v^^>v^^^^<>^<<>v<>>^>vvv<^^v><^><<vv<<^<<vvv^<>^^<<>v^<^^<<<>^v^<^<><v>v<^v>v<^v>^^<<^^><<<v<^<v>^<<^^><^>><^^<v>v<^^<vv<<>>^v^>^<^<^>v>>^<^>v>vv^<v>vv>vv<<<<<<<<v^<^<v<^<^v<>^<v>^v>^>vv<<^^<v><v<^<v<^>vv>v>^^v^v<>>^^>>>v<^^>><>>vvv^v^<>>vv^<>v^v^v<^>>^>><^><^<v^^vv<<><<<v<^v^vv<<<>vvv>^v^<>><v<v<<<^^^^v^>^><>^v^v>vv^v><^>^<vv^>vv<^<^>>vv<^^^><v^v^>^>v>><<v^v>vvvv^<>v<^>^vv^^^v^<^^v>v>^v>v>>^<v^>v>>>v^^<^v><<<>v<v^v<v^v<vv<<>vv^^<>vvv<><>^<v^>^v<^<^>v>^vv><>vvv^<>><<^v<>^^^<<<vvv^^>^vv<<^>><^v><>vv>vv<^<vv<^v><^>vvv<<^>^^<<^<^>v<^><^^v^^<v<<v>^v<^v>^^<<^^<>v^v^v^<^v^>>><>v^v^v^<<^<><v
|
||||
<vv>^<v<<^<v>^^v><>vvvvvvvvv<vv<^v<>v<v><v>^><v<^^v^<^^v^v><v^^^<<<vvv<v^^^><><<<>><^><^vv<<><<^vv<>^v^<>>v>^vv^>v>v<^vvv^><<vv<vvv<v^^>v^v>v>v><v^><v^<^v<v^>>^<>v<>>^<^<^^><vv^^^>>v^^><<>^<^v^^vv^<<vv^<>><v^v^<^^v^v^>>^^<>v<^v>v>v<vvv>^^v<><>>vv>v<v>><^v>^>^>v<^<>^v<<vvv^v>^v>^^>>>vv<>v><vv>>>>^>>v^<<v^v<>v><><^^v>v<v^<vv^>>><<>>>vvv<>^<<v<<<<vv<>>>vv><^vv>><<v>><^v>^<<^v^vvv^v^>^>^v<v^<>v>><v<^v^>><>>>vv^>^>v<^><^^>>><^^v^<>v^^<^>>^<vv^>>v><^^>^^>^^v^>>v^<>^^<<<>><><>>^>^<>^><^><<^>><v>>vvvv^^^vv<><<>>^v<<<<>^^v><^v<<v>vv>>v<><>^^^>^<>v>>v^v<v<>^<<^>v^vv>^^v>v<>^>vvv^^v>^^v<^<>^v><<v^v^<>^^><^vv<<>>>^>v^>^>>><<<v^<<v<<<^v><^^>^v^^>v^^v<^v<>^>^<v<>><^>>>^>><<v^^<<<^><<<v><^>><^>>><v<>^><^vv<^>v>vvv^<^><^v<<<^v^^vv<^<v<>^vvv<>v>^<^><>>>^v^v^^>^^<<>>>^<>>^>^><><><^^<^^^<>>^<^>^><<vv>^<v><^>^^v><>>^>^>v^v<<<v<>v^<><^>v>v>v<>^^>vv^><v>>^v^<>^^>v<><><^<>><^><^v<<<<v^vv><^^v<<^v<v<<<v^<vv^<<<vv>v<<<>vvv<^^<<vv^>^<^vvv^^v^<>v>v^>><>^v>><v^^^><^^<<>^<>^<v>v^<<vv>><<^>><>^v>>>^v^vvv<v^vv^>^>v<
|
||||
^>v^^<>^>v^^<>^<<v<><v^>^><<^<>^vv^vvv>>v^vv<<^^>^v<v^<vv>>^^^^vvv>>^^<>^v><<^^>>^><^<^>^v>^v<>^v<<v<<v>^><<v<v^vvv>v<v<<^^>>>^vv^vvv>vv<>^>v<vvv<^^vv>^v^><v^>vv><>><^>^^>^v^^<<^vvvv<v^v>>^>><^>>^<<v^>v>^v><v<<<v>>v<^<>^^^^vv>v>><>><v><><vv<<v<<^<^<^<^v<v^^>>>^<^<v^>>^v<><^<>^<vv<^<v<v^>>vv^>>>v<v^<^v^v^^>v><>^^v<<^^><^^>v^>v^^>>v^^<vv<v^>>^v>><>v>>>^v<<>^vv<^^>>>><v<>^>vvv>^v^>v^>^^<^>>>>>v^^<<>v>v<<>>>><>v<<>>>v^v<><>><<>^vvv<^^^>^v<^<v<^<><<<><^^<<>>v^^<v>^vv<^^v^^^>v^<><<^^v^^v<<<>v>^^^<>v<v<^>>>v^^>^v^^v>^^^v<>^^^>>v^^>>^v^<v<<>>><>><^>^><^v<<<^<<vvv^>>vv<v<vv^><>>^>^^v>v<^v>^^><>>v>>v>v>^^<>^vv<^v^vv^>vv>v<^v>><^v>vv^^>^vv<v<^>v<^v<<<^>^^>^<>>^<v<^>^<^>>v<vv^^<^<>^v<^v^<>>^^v^vv^>v<v^<<vv^<><^v><><^^<v^v<v^><<<>><><<^<^^^vv^v<v<><vvvv<>v<>vv^v^v>v<^v><^>v<<v>><^v<v<<^v<><^^^^v>v^v>v<^^^v^>v<vv>v<<vvv^<^v^<^>><<v<^v<><v<<vv^<>v<v<<>>v>v>>v^^v<<^v>><^<<<><>^^v^^<v<><>^<vv<>v<^<><>>v>v<^<^>><v<<><<>>>^v>^<v>><^>^v^vv<<^>^^v<^v<^^<<>^^vvv<>v<v<>>><v^^v^^v^^>^^<^^>v>^^<<>^>^^^><v>v>v>
|
||||
v>v^vvvv^<<<>v<v>v><<<vv<>^>>v<><<<vvv>v>v^^<<<v<^v<<v<>v>v<^v>v^^><^<^^>><^^><^^^><^^v^v^<>>^<^v^^^>^<>^>v<<<vvv^<<^>><<>^<><<v^^<<<vvv><^v>vv<^>v>v>^vv>^<vvv<<v>v<<<>v<>vvv<v^^v<><v<v^v>>v^<<^v>^v^^>>v<>^<<>v>><^^^><^<<><v>><>^^>>^vv^<^^<v^^><<^v^^v<>v<>vv>v^>^>^>^<><><^^<^v>^><^^v^>v>>>^<^^^>vv^^>^>^^<vv><^><><^<<>^v<^<v^<^<v<v<^v<<<>vvv^>^^<><^^<<v>><^>v<^^^>v<v^><v>>>>^v<v>><^v<>v><^^vv^^<v<v<v<v>^<^v>vv><v>^<^<v^v>^<<><^<^v<>vv<<v>v>^<v<<^v<<^<<>^<<v<^>vvv^>^>v<>>^<v^^<^<>v>>v<>^v>>v<v^<>^>>^<^<v^vv>v>>v>>>v>^<<><^<>><><><vv>^<<<<v<<<v^^>^<^<vv>v<>^^>v^^<>v>><^>><vv<vv>>v<vv^v><<<<^>^<<<>><v>>^^^>^>^^v>>>^<<v^v><<^v><>v>^>>>>v^^^<^v>v^>>>^<>^<vv<>v^<><>>>^>^>^^^^<<<>>v><^^<<^><>vv>^<>^<><^vv<^>>vv^^>v^vv<v^<^^^^vv>vv>vv^vv^^^vvv^<>^v^<vv<><^^<<><>v^<^^^<v^<<>>^><<v<^v^><<^>v>>v^<v>^<>>>^v>^<<<v^^v<^>vv^^v<^v^vv>><>><^>^^>v>^^v^<^^v^^><>v<<<v>^>vv^><>v^v^><<>^^<v^<><v><v><>^v><>v><^^v^<v>^><<v>v<v>>>^v><<>^>^^>>v<v<v<vv<<<^>><^<vv<^v>^vvv>>v>>^<<>><v<^>vvv^v^^v><v<><<v<v>v^v^v<<v^
|
||||
>>^v<v^v><>^^>v<>>v<v^^<vv>^v^>v<v^>>^>><^v>^^>^<^v<>v>>^>v<v>v><vvv^><vv^^^<v>>>>^<><v<^<>v>^v<^v^vv<>^<v>^vvv^>^><v<^v^<<<^^^>>>^<<^v^vv^>>^v^v^^<^v><<v<>^v<v>vv<v^vvv^<<>vvvv<^^v<^<vv<><v<^<>v^^<<>v<<>v^^<<><<<<>v^>^v<^^^<^^<^<^^><>>^<v>^^<^vv<>v>>^^^<>><^<^^v<vv><v^<><<^v><><<^v^>^>^^^<^^><vvv>^>v^<^v>v^>v<v<v^>><<v^^><^v^<<vvv^<>vv>^v<><v>>><>^v<v>^<<<v<>v>v>^<<<^^v<>>v<>v<>v<>v>^<^v><^^v<<^^>v><<<<>^^<vvv>>^^><<v<>><<v><^v^^vv><vv^>^^><v<>^v>^>vv>^<^><>^<v>v>><<^><>>>v^v>>^>v^><^<v<<><<>^vvv<v<<^>vv>v^<><<v^^<v<^<<><v<<>>^><v><>^^^^<v^v<^><>^<^<^<v><<v>v<^v>v<>><>>vv<v^>>v<^<<^^>^<<^^^^<v<v>^v^<^^v^vvv><<v>>>v<<v^><<^>>v>>v<<^^>>v^v><<<^>^^<vv<^^^<<vv>>^vv>>^<vv><<v>vvvv<<<<>vv>^<>>v<^<v>^<v^>><^<^>^vv^<vv><<<<<<<<>v>>>^v<>>^>^<^^><v>vv^v>^<^^<<<v^>^>^^v><vv^^<><v>><<^<<>v<vv^v<vvv<<v<^<^^v>^v<^^<v^>vv<>vv>>^>v<<>^vv^<>>^>vvv<>^^^v^<v^><>>vv^vv^^>>v^v<^^<>>v<>v>>>^<vv>^<><<>v<><>vv^v^v>^<<v^<^>><vv^v>vv>v>>>>^^^vv<^>v>vv^<<><>^^><^<<^>vv^>^^<<>><<><>^>^^<>>v^v<v^v^vvv><^v^^v<>vvv
|
@ -1,141 +0,0 @@
|
||||
#############################################################################################################################################
|
||||
#.................#.................#.............#.......#...................#.......#.............................#...#.......#.........#E#
|
||||
#.#.###############.#####.#####.###.#.#########.###.#.###.#.#################.#.#####.#.#.#####.#################.#.###.#.###.#.#.#.#.###.#.#
|
||||
#.#.#.....#.........#...#.#...#.#.#.#.........#.....#.#...#.....#...#.........#.#.......#.#.....#.....#.#.........#...#.......#.#.#.#...#.#.#
|
||||
###.#.###.#.#########.#.###.#.#.#.#.###.#############.#.###.###.#.###.#########.#.#####.#.#######.###.#.#.#######.###.#######.#.#.#.#.#.#.#.#
|
||||
#...#...#...#...#...#.#.#...#...#.....#.#...#.........#...#...#.#.#...#.......#.#...#.....#.......#...#.#.#.#.......#.#...#...#.#.#.#.#...#.#
|
||||
#.#####.#####.###.#.#.#.#.###.#######.###.#.#.###########.#####.#.#.###.#####.#.###.#.#.###.#######.###.#.#.#.###.###.#.#.#.#.#.#.#.#####.#.#
|
||||
#.......#...#...#.#.#.#...#...#...#.................................#...#...#...#...#.#.#.....#.............#...#.....#.#...#.#...#.....#...#
|
||||
#.#######.#.#.#.#.#.#.#######.#.#.#.###.###.#.#.#.#####.###.#.###.#.#.#####.###.#.###.#.#.###.#.#.#.#.###.#####.#.#####.#####.###.#####.#.###
|
||||
#.#.....#.....#.#.#...#.....#.#.#.#.....#.#.#.#.....#.#...#...#...#.#.....#.....#...#...#.#.....#...#.....#...#.......#.#...#...#.....#.....#
|
||||
#.#.###.#####.#.#.#####.###.#.#.#.#######.#.#.#####.#.#.#######.#.#.#.###.#####.###.###.#.#.#.#############.#.###.###.#.###.#.#.#####.###.#.#
|
||||
#.#...#.....#.#.#.#.....#...#.#.#.....#.....#...#.#...#...#.............#.....#...#...#...#.#.#.....#.....#.#.....#...#...#...#...#...#.....#
|
||||
#.###.#####.###.#.#.#####.#####.#####.#.#####.#.#.#.#####.#.###########.#####.###.###.#####.#.#.###.#.###.#.#####.#.#####.#.#.###.###.#.#.###
|
||||
#.....#.....#...#.#.#.....#.....#.....#.....#.#.#...#.....#.#.........#.....#...#...#.....#.......#.....#...#...#.#.......#.....#...#.#.....#
|
||||
#######.#####.#.#.#.#.#####.#.###.#########.#.#.#.###.###.#.#####.###.#########.#######.#####.#########.#.###.#.#.#########.#.#.###.#######.#
|
||||
#.....#.#.....#.#...#.......#...#.......#.#.#.#.#.#.#.#...#.#...#.#.......#.....#...#...#.....#.......#.#.....#...#.....#.....#...#...#.....#
|
||||
#.###.#.#.###.#.###.#########.#.#####.#.#.#.###.#.#.#.#.###.#.#.#.#######.#.#####.#.#.###.###.#.#####.#.#.###########.#.#.###.#.#.###.#.###.#
|
||||
#.#...#.#.#...#.#.............#.#.......#.#.....#.#.#.#...#...#.#...#.....#.#.....#.#...#.#...#...#...#.#.#.....#.....#.#...#...#...#.......#
|
||||
#.#.###.###.###.###.#########.###.#######.#####.#.#.#.#########.#.#.#.#####.#.#####.#.#.#.#.#####.###.#.#.#.#.###.#.###.#####.#.#####.#.#.#.#
|
||||
#.#.#...#...#.#...#.#.......#...#.#.............#...#.........#.#.#.#.#...#.......#...#.#.#.....#...#.....#.#.#...#...#.......#.#.......#...#
|
||||
#.#.#.###.###.###.#.#####.#####.#.#.#.#############.#########.#.###.#.###.#.#######.#.#.#.#####.###.#########.#.#####.###########.#####.###.#
|
||||
#.#...............#...#...#.....#...#.......#.......#.......#.....#.#...#...#.....#.#...#.#...#...#.........#...#...#.........#.............#
|
||||
#.#.#.#.###.#.#######.#.#.#.###.###.#.#####.#.###########.#######.#.###.#####.###.#######.###.###.#.#######.#.#####.#########.#.###.#####.#.#
|
||||
#.#...#...#.#.#.....#...#.#.#.....#.#...#.#.......#.......#...#.#...#.#.....#.#...#.......#.....#.#.......#.#.....#.......#...#...#...#.#.#.#
|
||||
#.#######.#.#.#.###.#######.#.#####.###.#.#######.#.###.###.#.#.#####.#####.#.#.#.#.#######.#.###.#######.#.#####.#.###.#.#.#####.###.#.#.#.#
|
||||
#.#.......#.#.#...#.......#.#.#.#...#.....#...#.#...#...#...#.#...........#.#.#...#.#...#...#.#...#...#...#.#...#.#.#...#.......#.#.....#.#.#
|
||||
#.#####.###.#.###.#######.#.#.#.#.#########.#.#.#####.###.###.#.###.#.#.#.#.#.#.###.#.#.#.#.###.###.#.#.###.#.#.#.#.#.###.###.###.#.#####.###
|
||||
#.......#.........#.....#...#...#.....#.....#.........#.......#...#...#.#.....#...#.#.#...#.....#...#.#...#.#.#...#.#.#...#...#...#.#...#...#
|
||||
#########.#.#########.#.#.#####.#####.#.#####.#.###.###.###.#####.#####.#########.#.#.#.#.#########.#.#.###.#.#####.#.#.###.#.#.#####.#.###.#
|
||||
#.#.......#...#.......#...#...#.#...#...#...#.#.......#.#.#.....#.#...#...#.......#.#...............#.#.#...#...#.#.#.#.#...#.#.......#.....#
|
||||
#.#.#.#########.#.#########.#.#.#.#######.#.#.#####.###.#.#####.#.#.#####.#.#######.#.###############.#.#.#####.#.#.#.#.#.#.###.###########.#
|
||||
#...#.......#...#.....#.....#...#.......#.#.#.#.........#.#.....#...#.....#.........#...#...........#.#.#.#...#.#.#.#.....#...#.#.......#...#
|
||||
#.#########.#.#######.#.#############.#.#.#.#.#.#########.#.#####.###.#######.#########.#.#########.#.###.#.###.#.#.#.###.###.#.#.#####.###.#
|
||||
#...#.....#...#.#.....#...#...#.....#.#.#.#.#...#.........#.....#.#...#.......#...#.....#.#.#.......#.....#...#.#...#.#.#...#.#.#.#...#...#.#
|
||||
###.###.#######.#.###.###.#.#.#.#.#.#.#.#.#.#####.#######.#####.#.#.###.#####.#.#.#.#####.#.#.###.#########.#.#.#####.#.###.#.#.#.###.###.###
|
||||
#.#...#.#.......#.#.#.#...#.#...#.#.#.#...#.....#...#.#...#...#.#.#.....#.#.....#.#.#...#...#.#.#.#.............#.....#.....#...#...#...#...#
|
||||
#.###.#.#.#####.#.#.#.#.#########.#.###.#####.#####.#.#.#.#.#.#.#.#######.#.#####.#.#.#####.#.#.#.#.#.#####.#.###.###.#############.#.#####.#
|
||||
#.....#.....#...#.#...#...........#.........#...#.....#.#...#.#.#.........#.#.#...#.........#.#...#.#.....#.#.....#...#.............#.#.....#
|
||||
#.#########.#.###.#########################.###.#.#####.#####.#.#########.#.#.#.#####.#.#####.#.###.###.#.#.#######.###.#############.#.#####
|
||||
#.......#.#.#...#.............#.......#.......#.#.#...#.#.......#.....#...#...#...#...#.#.....#...#.....#.#...#...#.#...#...#.........#.....#
|
||||
#######.#.#.###.###########.#.#.#.###.#.#.###.#.#.#.#.#.#.#####.#.###.#######.###.#####.#.#####.#####.###.###.#.###.#.###.#.#.#.#####.#####.#
|
||||
#...#...#.#...#.#.......#...#.#.#.#...#.#.#...#...#.#.#.#...#...#.#.#.#.....#.#.#.....#.#.#.....#.......#...#.#.....#.....#.#.#.#.#...#...#.#
|
||||
#.#.#.###.###.#.#.#.###.#.#####.#.#####.#.#.###.###.#.#.###.#####.#.#.#.###.#.#.#####.#.#.#.#####.#.###.###.#.#.###########.###.#.#.#####.#.#
|
||||
#.#.#.#.#.....#...#...#.#.......#.......#...#...#...#.#...#.....#.#.#...#...#.#...#...#.#.#.#...#.#...#...#.#.#.#.#.......#.................#
|
||||
#.###.#.#.###########.#.#######################.#.###.#.#.#####.#.#.#####.#.#.#.###.###.#.#.#.#.#.###.###.#.#.#.#.#.###.#.#######.#####.#.#.#
|
||||
#...#.#...#...#.....#.#.#.............#.......#.#.#.....#.....#.#...........#...#...#...#.#...#.#...#.#...#.#.#.....#.#.#.#.....#.....#.#.#.#
|
||||
###.#.#####.#.#.#.#.#.#.#######.#####.#.#####.###.#########.#.#.#.###.#####.#.###.###.###.#.#.###.###.#####.#.#####.#.#.###.#.###.#.###.#.#.#
|
||||
#...#.......#.....#.#.#...#.....#...#.#.#...#...#...#.....#...#...#.........#.#...#.....#...#.#...#...#.....#.........#.#...#.....#...#...#.#
|
||||
#.#.#######.#####.#.#.###.#.#######.#.#.###.###.#.#.#.###.#.#######.###.#####.#.###.#######.###.###.###.#####.#########.#.#########.#.###.#.#
|
||||
#.#...#.#.........#...#.#.....#...#.#.#...#.#...#.#.....#.....#.....#...#.....#.#.....#...#.......#.........#.......#...#.#.................#
|
||||
#.###.#.#.#.#####.#####.#.#.#.#.#.#.#.#.#.#.#.#######.###.###.#.###.#####.#####.#.#####.#.###########.#####.#.#####.#.#.#.###.#.###.#######.#
|
||||
#.#.....#...#.#...#.....#.#.#.#.#...#.#.#.#.#.......#.#...#...#.....#.....#...#...#.....#...........#.#...#.#.#...#.#.#.#.................#.#
|
||||
#.###.#.###.#.#.#.#.#.#.#.###.#.###.#.###.#.#####.#.#.#.###.###.#.###.#.###.#######.#####.###.#####.###.#.###.#.#.#.#.#############.#.###.#.#
|
||||
#.....#...#...#.#.#.#.#.......#...#.#.....#.......#.#.#...#.#...#.#...#...........#.#.....#.......#.....#.....#.#.....#...........#.#.#...#.#
|
||||
#.###.###.#.#.#.###.#.#.#######.#.#########.#####.#.#####.#.#.#.###.###.#######.#.#.#######.#####.###.#.#####.#########.#.#####.###.#.#.###.#
|
||||
#.#...#...#.#.#.....#.#.#.......#.#...........#...#.....#.#.#...#...#.#...#...#.#.#.#.......#...#.#.#...#...#.#.........#.....#.#...#.#...#.#
|
||||
###.#.#.###.#.#######.###.#######.#.###.###.#.#.#######.#.###.#.#.###.#.###.#.#.#.#.#.#####.#.###.#.#####.#.#.#.#########.#.#.#.#.#.#####.#.#
|
||||
#...#.#.....#.#.....#.#...#.#.....#.#.#.....#.#.#...#...#...#.#.#.#.....#...#.#.#.#.#.#.........#.#.......#.#.....#.....#.#.#.#.#.#.......#.#
|
||||
#.###.#####.#.#.#####.#.###.#.#####.#.#######.###.#.#.#####.#.#.#.###.###.###.#.#.#.#.#########.#.#######.#.#.###.###.#.#.###.#.#.#.#.###.#.#
|
||||
#.#.........#.#...#...#.....#.....#.#.......#.....#.........#.#.#...#.#...#.#...#.#...#.........#.......#.#.#.#.#...#.#.#...#.#.#.....#...#.#
|
||||
#.#########.#.###.#.#######.#####.#.#######.#######.#########.#.###.#.#.###.#####.#.#.#.#######.#######.#.#.#.#.###.###.###.#.#.###.###.###.#
|
||||
#...#.........#...#.....#...#...#...#.....#...#.........#.....#.#...#.#.#...#.....#.#...#...#.#.......#.#.#...#...#.#...#...#.#.....#.....#.#
|
||||
#.#.#.#####.###.#.###.###.#####.#####.###.#.###.#######.#.#.#####.#####.#.#.#.#####.#####.#.#.#######.#.#####.###.#.#.###.###.###.#.#.#####.#
|
||||
#.#...#.........#.#.....#.#.......#...#...#.#...#.........#.#.....#.....#.#.......#...#...#...#...#...#.#...#.....#...#...#.......#...#.#...#
|
||||
#.#######.#.#####.#.###.#.#.#.###.#.#####.#.#.#####.#######.#.#####.#####.#######.###.#.#.###.#.#.#.###.#.#.#####.###.#.#######.###.###.#.#.#
|
||||
#.........#.....#.#...#...#.#.#.#.#.....#.#.#.#...#.#.......#.#.....#.......#...#...#...#.#...#.#.....#...#.#...#...#.#.......#.#.......#.#.#
|
||||
###########.###.#.#.#########.#.#.#####.#.#.#.#.#.###.#.###.#.###.###.#######.#.###.#####.#####.#####.#####.#.#.#####.#.#.###.###.#######.#.#
|
||||
#.....#.....#.#...#...........#.........#.#.#...#.....#.#...#...#.#.#.#.....#.#.#...#...#.#...#.#...........#.#.......#.#.#.#.....#.......#.#
|
||||
#.###.#.###.#.#######.###################.#.###########.#.#.#.#.#.#.#.#.###.#.#.#####.#.#.#.#.#.#.#.#######.#.#########.#.#.#.#####.###.###.#
|
||||
#.#...#.#.#...........#.....#...#...#.........#.......#...#...#.#.#.#.#...#...#.......#.#...#...#.#.#.......#...#...#...#.#.......#.......#.#
|
||||
###.###.#.#.#####.#####.###.#.#.#.#.#########.#####.#.#######.#.#.#.#.###.#############.#.#######.#.#.#.###.###.#.###.###.#.#####.#######.#.#
|
||||
#.................#...#.#.#.#...#.#.......#.#.#.....#.....#...#...#...#.#...#.........#.#.#.#.....#.#.#.......#.#...#.....#.....#.......#.#.#
|
||||
#.#.#.###.###.###.#.#.#.#.#.#.#.#.#######.#.#.#.###########.#.#.#.#####.###.###.#.#####.#.#.#.#######.#.#.###.#.###.###########.#########.#.#
|
||||
#.#.#...#...#...#.#.#...#.#...#...#.....#...#.#...#.........#.#.#.#...#...#...#.#.#.....#.#.#.........#...#.#...#.........#.....#...........#
|
||||
#.#.###.###.###.###.#####.#########.###.#.#.#.###.#.#.#.#######.#.#.#.###.#.#.#.###.#####.#.###############.#####.#######.#.#.#.#.#####.#.###
|
||||
#.#...#...#...#.#...#.......#.......#...#.#...#...#.#.#...#.....#...#...#.#.#.#.....#.............#...................#.....#.....#.....#...#
|
||||
#.#.#.###.#####.#.###.#.#####.#######.#.#.#.###.###.###.#.#.#########.#.#.#.#.#.#####.#########.#.#.###.###.#####.###.#######.###.#.###.###.#
|
||||
#...#...#...#...#...#.#.......#.#.....#.#.#...#.#...#...#...#...#.....#.#.#.#.#.....#.#.......#.#...#...#.#.....#.#...#.....#...#.#...#.#.#.#
|
||||
#.#.#######.#.#.###.#######.###.#.#######.###.#.#.###.#######.#.#.#####.#.###.#####.###.#####.#.#####.###.#####.#.#.#.#.###.###.#####.#.#.#.#
|
||||
#.#.......#.#.#...#.......#.#...#.......#...#...#.#...#.......#.#.#.....#.....#...#.....#...#.#.......#.....#...#.#.#.#.#.....#...#...#...#.#
|
||||
#.#.#####.#.#.###.#######.#.###.#######.###.#####.#.#######.###.#.#.###########.#.#########.#.#########.###.#.#####.#.#.#####.###.#.#######.#
|
||||
#.#.....#...#.#.........#.#...#.......#...#.......#.......#.#.....#...#.......#.#.#.........#...#.......#.....#.....#.......#...#...#.......#
|
||||
#.#.#.#######.###.#######.###.#.#####.###.#######.#######.#.#########.#####.#.#.#.#.#.#.#######.#.#######.###.#.###########.###.#####.#######
|
||||
#.#.#.#...................#.#...#.....#...#.....#.#...#...#...#.#.....#...#.#.#.#...#.#.#.......#.......#...#.#...#.....#...#.#.......#.....#
|
||||
#.#.#.#.#######.#.#######.#.#####.#####.#.#####.#.###.#.###.#.#.#.#####.#.#.###.#####.#.#.#################.#.#.#.#.#.###.#.#.#########.#.#.#
|
||||
#...#.#.#...#...#.#.#...........#.#.....#.......#...#.#.#...#.#...#.....#...#.....#...#.#.................#...#.#...#...#.#.#.....#.....#.#.#
|
||||
###.#.#.#.#.#.#.#.#.#.#######.###.#.#####.#########.#.#.#.###.#.###.###.###.#.###.#.###.#################.#.#######.###.#.#.#.#.#.#####.#.#.#
|
||||
#...#.....#.#.#.#.#.#.#.....#.....#.....#.#.......#...#.#...#.#...#...#...#.#.#...#...#.#...#...........#.#.#.......#...#.#.#.#.#.........#.#
|
||||
#.###########.###.#.#.#.###.###.#######.#.#.#####.###.#.#.#.#.###.#######.###.#.#.###.#.#.#.#.#######.#.#.#.#.#####.#.###.#.#.#.#####.#.#.#.#
|
||||
#.#...............#.#.#.#.#.........#.#...#.#...#.....#.#.#...#.#.......#.....#.#...#.#.#.#...#.#.....#.#.#...#.......#...#...#...#.#.....#.#
|
||||
#.#.#.#########.###.#.#.#.#####.#.#.#.###.#.#.#.#######.#.#####.#######.#.#######.#.#.#.#.#####.#.#######.###########.#.#####.###.#.#.#.###.#
|
||||
#.#.#.....#...#.#...#...#.....#...#...#.#...#.#.......#...#...........#.#.........#...#.......#.#.......#...........#.#.#...#...#.#...#...#.#
|
||||
#.#######.#.#.#.#.#######.###.#######.#.#####.###.#######.###.#########.#.#.###.###.###.#####.#.#######.#.#.#######.#.#.#.#.#.#.#.#####.#.###
|
||||
#...#.....#.#.#.#.........#...#.....#.....#.....#.............#.........#.......#...#.......#.....#.#...#.#...#...#.#.#...#...#.#.#.....#...#
|
||||
###.#.#####.#.#.###.#####.#####.###.#####.###############.###.#.#######.#####.#.#.###############.#.#.###.#.#.###.#.###########.#.#.###.###.#
|
||||
#.#...#...#.#.#.........#.........#.....#...#...#...#.....#...#.#...#...#.....#.#.............#...#.#.....#.#.#...#.#...........#...#.....#.#
|
||||
#.###.#.#.#.#.#########.#.#.#######.###.###.#.#.#.#.#.#######.#.#.#.#.###.#####.###########.#.#.###.###.###.#.#.###.#.#####.#.###.###.#.#.#.#
|
||||
#.....#.#...#.....#.....#.#.....#...#.....#...#.#.#...#.....#.#.#.#...#...#.....#...........#.#...#.......#.#.#...#.#.#...#.#.#.............#
|
||||
#######.###.#####.#.#####.#####.#.#############.#.#####.###.###.#.#####.#####.#.#.#####.#####.###.#.#####.###.#.#.#.#.#.###.#.#.###.###.#####
|
||||
#.....#.........#...#.........#.#.............#.#.#.....#.#.....#.....#.#.....#.#.#.#.......#.#...#.#...#.#...#.#...#.#...#.#.#...#.#...#...#
|
||||
#.###.#.###.###.#####.#####.#.#.#########.###.#.#.#.#.###.#####.###.#.#.#.#######.#.#.#.#####.#.###.###.#.#.###.#####.#.#.#.#.###.#.#.###.#.#
|
||||
#...............#...#.#...#.#.#.....#.#...#...#...#.........#.....#.#.....#.......#...#.......#.#...#...#...#.#.......#.#.#...#.....#.#...#.#
|
||||
#.#.#.#.#.#.#####.###.#.#.###.#####.#.#.#########.###.#####.#.###.#########.#######.###########.###.#.#.#####.#########.#.###.#######.#.###.#
|
||||
#.#.....#.#...#.......#.#...#.....#.#.#.......#...#.#.....#...#.#...........#.....#.#.........#.....#.#.#.....#...#.....#...........#...#...#
|
||||
#.#####.#.#.#.#.#######.###.#.###.#.#.###.#.#.#.###.#.###.#####.###############.#.#.#.#.#.#.#########.#.###.#.#.#.###########.#####.#.###.#.#
|
||||
#.............#.....#...#...#...#.#...#.#.........#.....#.....#.........#.......#.#.#.#.#.#...........#.....#...#...#.......#.#.....#...#...#
|
||||
#.#.#.#.#.#.#########.###.###.#.#.###.#.#########.###########.#.###.#####.###.#####.#.#.###.###.###################.#.#####.#.#.#####.###.#.#
|
||||
#.#.#.#.#...#.........#.#.#...#.#...#.....#.#...#.........#.......#.....#.#.#.......#.#.......#...#.....#.........#.#.#...#.#.#.#.......#.#.#
|
||||
#.#.#.#.###.#.#####.###.#.#.###.###.#####.#.#.#.#########.#.#.###.#####.#.#.###############.#####.###.#.###.#.#.#.#.#.#.#.#.#.#.#####.#.###.#
|
||||
#.#...#.....#.#.....#...#.#.#.#...#.#...#.#.#.#...#.....#.#.#...#.....#.........#.........#.#.....#...#...#.#.#...#...#.#.#...#.......#.....#
|
||||
#.#####.###.#.#.###.#.###.#.#.###.###.#.#.#.#.###.###.#.#.#.###.#####.#.#######.#####.###.#.#.#####.#####.###.#.#######.#.#####.#####.###.#.#
|
||||
#.#.....#.#.#.#.......#...#.....#.#...#.#...#.#.#...#.#.#.#...........#.#.....#.....#.#...#.#...#...#...#.....#.........#.#.........#...#...#
|
||||
#.###.#.#.#.#.###.#.###.#####.#.#.#.###.###.#.#.###.#.###.###.###.#####.#.#.#######.#.#.#######.###.#.#.#################.###.#.###.#.#.###.#
|
||||
#.....#.#.........#.#...#...#.#...#...#.....#...#...#...........#.#.....#.#.....#...#.#.........#...#.#.....#.....#.....#...#...#...#.#...#.#
|
||||
#######.#.#.#.#.###.#.###.#.#.#.###.#.###.#####.#.###.#########.###.###.#.###.###.###.###########.#####.#####.#.###.###.###.###.#.###.#.#.#.#
|
||||
#.....#.#.#.....#...#...#.#.#.#.....#...#...#.........#.....#.#.........#...#.......#...#...#.........#.......#.....#...#.........#...#.....#
|
||||
#.#.#.#.#.#############.#.#.#########.#.#####.###.###.#.###.#.#######.#.###.###.###.###.#.#.#.#######.#.###.#########.###.#####.###.###.#.###
|
||||
#...#.#...#...#.........#.#.........#.#.#.....#.#...#.#.#.#.#...........#...#.#.........#.#.#...#...#.#.........#...#.............#...#.....#
|
||||
###.###.#.###.#.#######.#.#####.###.#.#.#.#####.###.###.#.#.###########.#.###.#######.#####.###.#.#.#.#########.###.#######.#####.###.#.#.###
|
||||
#...#.........#.#.#.....#.......#...#.#...........#.....#.#...#.....#...#.........#...#...#.....#.#.#...#.....#...........#.#.....#...#.#...#
|
||||
#.###.#.#######.#.#.#####.#.#.###.###.#####.#.#########.#.###.#.###.#############.#.#.#.#.#.#####.#.###.###.#########.#####.#.#####.###.#.#.#
|
||||
#.....#.........#.......#.#.#...#...#...#...#.....#...........#...#.........#.....#.#...#.#.......#...#...#.....#.....#.....#.....#.........#
|
||||
#.#####.#########.###.###.#.###.###.###.#.#######.#.#.#.###.#.###.#.#####.###.#.#########.#####.#########.#.###.#.#####.#########.#.###.###.#
|
||||
#.....#...#.........#...#.#.#.#...#...#.#.......#.....#.#...#...#.....#...#...#...........#.#...#.............#.........#.......#.#...#...#.#
|
||||
#####.###.#.#######.#.#.#.#.#.#.#.#.#.#.#####.#########.#.###########.#.###.#####.#########.#.###.###########.#########.#.#.###.#.###.#.#.#.#
|
||||
#...#...#.#.#.....#.#.#...#...#.#.#.#.#...#...#.....#...#.......#.....#.....#.....#.......#.#...#.#.......#...#.#.......#.#.................#
|
||||
#.###.#.#.#.#.###.#.#.#########.###.#####.###.#.###.#.#########.#.###########.#.###.#####.#.###.#.#####.#.#.###.#.###########.###.###.#.###.#
|
||||
#.......#.#.#...........#.....#...#.....#...#.#.#...#.........#.#.#...#.....#.#...#.#...#.#.#...#.....#.#.#.....#.#.........#.#...#...#.....#
|
||||
#.#.#####.#.###.#.#####.#.###.#.#.#####.###.###.#.#######.#####.#.#.###.###.#.###.#.#.#.#.#.#.#####.#.#.#.#####.#.#####.###.#.#.#.#.###.#.###
|
||||
#...#.#.......#.#...#...#.#...#.#.....#...#.....#.....#...#...#...#.....#.#...#.#.#...#.#...#...#...#.#.......#.#.......#...#.#.#.#.....#.#.#
|
||||
#.#.#.#.#.#####.###.#.###.#.###.###.#.###.###########.#.###.#.#.#.#.#####.###.#.#.#####.#######.#.#.#.#.###.###.#########.###.#.#######.#.#.#
|
||||
#.......#.#.....#.#...#...#.#.#.#.#.#.#.#...#.....#.............................#.#...#.......#.#.#.#.#.#.#.#.....#.......#...#.........#...#
|
||||
#####.#.#.#.#####.#######.#.#.#.#.#.#.#.###.#.###.#.#########.#####.#.#########.#.#.#.#.###.###.###.#.#.#.#.#.#####.#######.#.#######.#.###.#
|
||||
#.....#...........................#.#.#...#.#.#.#.#.........#...#...#...#.....#.#...#.#.#...#...#...#.#...#...#.#...#.......#.....#...#...#.#
|
||||
#.#####.#.#.#####.#.#.###.#.#.###.#.#.#.###.#.#.#.#########.#.###.#.#.#.#####.#.#####.#.#.#.#.###.#.#.###.#####.#.#####.#.#######.#.###.#.#.#
|
||||
#.#.....#.#.#...#.#...#.....#.....#.#.#.#...#.#.#...................#.......#.#.#.....#.#.#.#...#.#...#.....#...#.....#.#.....#.#.#...#...#.#
|
||||
###.#####.#.#.#.#.#####.#.#######.#.#.#.#.###.#.###.###.###########.###.###.#.#.#.#.###.#.#####.#.#.#######.#.#######.#######.#.#.###.#.###.#
|
||||
#...#.....#...#.#...#...#.......#.#.#.#...........................#.........#...#.#.#...#.....#.#.#...#...#...#.....#...#.....#...#.#.#...#.#
|
||||
#.#############.###.#.###.###.#.###.#.#.#########.#.#.#####.#####.#.###.#########.#.#.#####.###.#.###.#.#.#####.#.#####.#.#####.###.#.#####.#
|
||||
#S..................#.........#.....#.............#.........#.....................#.......#.........#...#.......#.........#.........#.......#
|
||||
#############################################################################################################################################
|
@ -1,5 +0,0 @@
|
||||
Register A: 53437164
|
||||
Register B: 0
|
||||
Register C: 0
|
||||
|
||||
Program: 2,4,1,7,7,5,4,1,1,4,5,5,0,3,3,0
|
File diff suppressed because it is too large
Load Diff
@ -1,402 +0,0 @@
|
||||
ggrru, ugu, gwgg, bwrw, bww, brg, brwu, ruugb, grggr, wrgbuug, bbbrbr, rgrrbrbw, gbwg, wuruug, gbgwbg, rgw, buu, ggbgb, rwg, gr, ggurggr, wruuwgrr, wbgg, gggrb, rgwuu, uuwww, bgrw, uuguubw, bbbrwu, ugurb, uwbggg, rurg, ubb, wrr, rbbbbg, gguuug, gbur, wb, bubbu, gbwru, bgg, ugg, bbrrg, wubr, bgwgbwgg, rguurb, bugu, wuww, urugr, bwb, wug, brr, u, rru, wwgbw, gwu, bw, ugrwggr, rgubuw, bbg, bwru, uwgbwu, gbrugg, rgub, rgbbuwwg, wwr, grw, rwggwwrw, bbbu, wr, wbwu, wwrbuu, rbbgwru, gur, buurr, ggbrg, gwg, wrg, urw, uubub, gwrgb, bbw, rrw, ugrurw, rubrw, bgb, bwgbwbw, guw, ur, wgrbu, bgu, rrrrbrw, uww, uuu, wuugbw, wwbugw, rwbr, ruwbr, uwu, wgrb, b, rrwugru, gwb, burw, rurb, rbrrbgu, uwgw, brubr, bwu, rbw, ugbu, gww, wwrb, wbgbrww, brrwgrg, rugug, grgrrb, wuubbgu, brub, rrwwwb, ugr, wbw, ruwgguu, wgw, rrwrg, bwbbrwbg, rggg, gbgrguw, rwgw, rbbgwbr, gub, rgrrg, wbgggu, bbbgww, ugb, rbbgr, wru, rubbuu, bggrbu, gbg, bgrgbb, wwrwugbg, rrgu, wrrubwu, wrbuu, rgug, bbu, wrww, wbb, wgrwu, bbrurru, wgrugwu, uuw, uggwg, rrbuwu, gruw, ubr, urgug, www, wgrwrrw, rruw, rbg, bbwu, brww, rbwbw, grgr, bgr, wgwwu, wur, gubu, rrubgg, wbrurbb, ugub, wrrr, gbbr, wwubu, uwwbuw, wuu, rgb, bbr, rbrbuwg, urwb, gg, grug, br, wwguuwb, wu, ruu, guuwrw, wgb, gbr, wgggug, rw, brggww, wrgrw, guggub, gbbrug, gbbrb, bugrg, bwr, gwwg, wwbbrggw, urwu, rgwr, rwb, rrub, ggb, wbwrrbw, wrub, wwg, ww, ggg, brugwrr, wbur, ubbbrw, uwugrg, buw, grg, rrr, bgwu, rbggg, rgr, wuwub, rg, guuwu, rrwwwrbr, rrg, gurwg, wburrwug, rwr, wbg, grwbr, bgwbwug, bwg, bru, rbwuug, gggg, gurb, bbb, ubwu, gugbr, buru, gbbg, brb, wgr, guwg, gurgrbug, wgwugwwu, uw, wrbbr, wgwugurr, uwww, urr, bgubug, bbgu, bbuugb, rwug, gurbb, bguw, ubbbub, bbwb, gugbgwb, bb, wrrg, ggr, wrbub, uu, wwbw, ub, uggw, ugbggrw, bur, uuuguru, bgwuu, gwr, uurrrw, rb, buwugrr, brwrrrgb, guu, bgur, wggur, wub, gbb, rr, wubw, uuwgww, bwurwur, gubgg, ubwg, grbr, rwgr, wrubw, grgwb, uuguu, rwgwb, bwrrgg, ubu, bwbwggrw, uwg, bgguu, wwu, grwgw, bwrr, uur, rwuww, bwbb, gwrr, gwgrww, rbgw, grub, wugu, grrwuwg, bburbb, wbgb, ubbr, gggu, wbu, rrbugrbu, gbbubrwg, gwwurw, grbb, gbugu, wguwrw, ubggbb, rbgbu, rwub, gb, wbrgr, wubwwb, brwg, bwwbur, gugwg, gru, rbrwurr, wrb, gwubug, ggbguu, bubg, uruub, wuw, gubbr, gu, uwrubg, wggrbug, uub, ggrb, rwu, ug, ugrggw, wgg, rrb, bbug, wrw, uubbbur, uwgb, bwgr, uru, bu, guuuguw, gwwu, uwb, uwwwb, w, rur, wguuw, guru, gwrrwwb, wwrww, rww, bbur, ruuwr, rbb, bugubgrr, ru, rbubwr, grr, bbrbu, gwww, uwwgw, wwwu, uwr, uguw, rbwrr, bguwg, rguw, guwgbbg, rub, rrur, bwwbgw, rrrg, bgggru, ggu, wrrggu, rug, uuburg, rbu, wggrbgb, brguurw, r, guwrr, bwbgrb, urwgbb, rwgur, urg, gbwrw, grb, gwburg, wbr, bwww, brwr, ugw, uwgu, uggwr, brw, wgu, gug, gbu, gwrur, ggbrb, rbubr, rrggurbw, rwrru, uug, urb, grbu, gbgug, bugg, gbw, rgu, rgurrw, gwbw, ggw, bgub, wwgugug, ugubwg, wuggr, ruw, rbr, bbwuwwgb, wg, ubw, rwwg, wggbr, urubb, wwb, bubr
|
||||
|
||||
ggrbbwbbwbuguwbuguwbbuwrbbbrwgurgwggbbwbguurb
|
||||
gruurruwgbwwrbbggwuwrwugwrguuwwrurugbbgubrurubrgwubg
|
||||
wguwwgbbggbbrbwurguububrwgbubwbwwuwgrgbuwgubg
|
||||
gbgrwggwbgwuwbgwgwgubwguwwwuwbwugbwgwrgrubg
|
||||
uubwgrwrwrruwrwggggwwrbgbbwgwwbwguwbrrwrgugbrbwrurggb
|
||||
rgruubburgubugugbwuguwururrbbgwuurwwbugburgrbbgbbgugwgbgg
|
||||
urggwuuwgubugurguwwrrbwuggbwbruuwbwugwwrwrguubbbbw
|
||||
bgrwuggburgggbubbgrwwrbuuwgwrrwuuurbugwgurubrwwrrugru
|
||||
rrbbrwgurwgrrgburbwurgbbuwrgrwwgrrgwrbrbrubbrwrg
|
||||
uururbwwwurbruwwwbubgbrugubrwubgwuuubggburbbu
|
||||
wrwrrgbrgwgububrgwggbguurgugwbuwgwwbggurbrw
|
||||
uugbgwuwbgwggrbwrwruwgrrwugbguwguuuuwurugwwbbruwuubg
|
||||
gwgrrwrguwgwbwgbuwuurgugugguwbrrrbguwrwubgwrgubggbburbu
|
||||
bbugbburwuggwrugrbgbbubbrrurbwbwburwrgubgwurgubg
|
||||
wuwubwguwuwwbbwgwugwugurgrbugurwbuubbuurrrrwwbgrgwgwgwgubg
|
||||
wurgwbwrgguwbbuuurrgrrgrgurgbrubbrgrgwbrrbgrurguurw
|
||||
brrburwwuwugbwrrrwruuwgrrrgruwrwgrbbgwwrruwwwbrbguuuww
|
||||
wgurrugrwbbrgubwrgbuwuubrggubbrwwwbwrggwggbrbg
|
||||
gurgrrwgruwbruwrbbbrugrgrrwrbbubgrbgbbgrwurwuguubgw
|
||||
rwrrruwrwwruugbgbbururbubgrrugguggbwgwgwguwwurb
|
||||
wuguguruwrurbwbwggrwuuwwrbwrbguuwwwruuwrguubgwbg
|
||||
wggbrgubrwrwgwubbgbuwgwggwgubrwurrrrrbggubg
|
||||
urgbbgggurgrbugbbubwbugrburgrurbgwbwuuuugbbuuuuub
|
||||
gwbuubrgwrwrguwbwubbruurgrrwwuwrrrrrwbbwuguugguwbrurrbbugw
|
||||
rrwuubbwruwuwbbbrrgbguwbguwgbruruubggbrbrwbwgbrbrbggu
|
||||
gbrruuwuwruwgwuubrwwwuugubwubwuwbwwrrgbrgwrr
|
||||
rwwrrbbgurgwuwgugwrgbgbgurwruwwwruugrbggwubwr
|
||||
uwbrrugrbgwwgwrguwgrbgwbrbbruugggwgggwwbwrwgr
|
||||
wguubgwuuwbrbgrgggrgbbguugrwgwgbrgugbrugbbuuurrruruuggrbr
|
||||
uwggbgrugruguggrrgwbwbguwwgugbgrbuuwugrubbgbuubg
|
||||
wbuwggugwruuurbwwrrrrbbwruugurwurrbggwgubg
|
||||
buwrbburrubggwurgburuwrurrgwgbuugrruugbbbgrgurw
|
||||
ubugwbrbwwrugrbwwrgwugubrrbbrwbbwbubugbububwwwubrrubwur
|
||||
gwgwwuwurgruubbwgrguuggubrrubgrwwwbwbwbbrrburbbbu
|
||||
rrbrwrwwrwrwbwbrbrgwwbrwwwrgwubwrrgbuugrugurrbug
|
||||
wurgrrbuurrbwwgwbguuuwgruwuubuwwgrrrwubgrbgw
|
||||
bbrwbrbbwgubbbwgubbruwrrbrbrrrgwbbruggbgrr
|
||||
buurbwrurgwrbugruuwrbbubbbubgbuwurugrbwrubuwbwwgb
|
||||
uwbwwgugruugbururbgwgrbbwruwrbruggbrrgbburggbwg
|
||||
grurbwwuwruwwbrrguwbwwrgrruuguubrrubrrrwruwwrrggbuugwu
|
||||
ubgrrwbwrrbbgrrgwuugrggbwgrrwrrrwbbwubrrrugugwubg
|
||||
urwbugwwwbrbbggwgwggwuwwggbuurrbuguubbrgubrwgrwubbrgubr
|
||||
wbbrgrugrgwuuwbubgwrgwrwuubgwwubuguugwgbgwuubg
|
||||
gwwrwbruwwgwbgwbgrggwwububurbbgggruurwwbgbbrugubbwuwb
|
||||
grggruggrgggbrubguwggruwbbbgrgruurrrgwguwuubrwbrrurgrubg
|
||||
wugbrrurrwbgurwgggwwgrurrbwubbuwwwburrwuggubgwwggbwggubgu
|
||||
bbuwrruwgrwuuwgrwrwgggbwrgrrbugubgururrwuubg
|
||||
bgwgbwgguwbugrrbwwugwuwgwbuwbwuwrgwbuwubggurbruwruuubr
|
||||
bwwrrggbuwwgrrgugruuurgrgrubrbwuuwbwgrubg
|
||||
brbrwrurruwurrwwbuwbggbuwwrwbwwruuwguubbuubgrbbuwwgbrrr
|
||||
rbwrwwrrurrrgrbuubburbrrruuurruurwwgbbguwrwgggu
|
||||
wuurbgwrggbuggbgwbubgbubgrrwbrbwgwwrrbgububrbr
|
||||
rgbugbrgrgwurbguuwburggwubggwrubwwggbbrrbbugbbrggrgwbbuugr
|
||||
brbubwwubwbwwwrrubwggwgwwgwrbwgwwurwbugrrguurbb
|
||||
grugwurwrwubbbbgubgbwrugrwwbgwburwwbrgwubu
|
||||
gurrgwbbbubbggrwrrrwbburwruurgrguwggrbwbuuwguugubrwbwb
|
||||
rrbgrrubuurwubrrbrrwguugrwrgrrguwggrgbrbgubububbrb
|
||||
wgrwgwgrgbguwgbrwwgrwbuuubwrgbwguwbbbbuguugrwwwburrbruuuubg
|
||||
uwgrrgrrbrwbrrbubggggubggbbgbbwbrugwrwrbrrwwgbwr
|
||||
uburgubgbbbwgwubggwuugwbbgruwubbugbbuurwruggrggwrugrbwubg
|
||||
rbguwurwwrbggrrgruuwubwgbbrgwwrgbrugguguuwwbbrggwbwurbgubg
|
||||
wrurwburbugrrubggubgbwwrbwbwggrwrrrwwuguwgguwrbubbubwrb
|
||||
ugrburuubbrbwgrbugrggwgbwuurgrwuwbuwrrbgubg
|
||||
wgubrbggbwubgruwgrgrwrrgrugubugrwgrurguwrgrububbbg
|
||||
bwgbbgwgurwgwugrbbgburgwbburrurubwbbruwgwbububgrgbrwgbuwubg
|
||||
wuwbuwrbuuggwggbbugbwbbuurgbgrrubbbrgggwrbwugguwubg
|
||||
wwbgbgugbgggugwrrwwguwbwubggbwgurgwurwrgwubg
|
||||
bwwubrrwurbgwubbuguuubrgrwrrwuwrugguuwwurubgw
|
||||
rrbbuwwrwbbruwwububbrbrwburrrrbubugwugbbgrwrw
|
||||
grrrbwgwugurrwuwwrrbwggubwuugbuwwwgurwgbuurubggbgw
|
||||
rwgbbgbrgubgugubwwbbruwggbwwwgbuwrrguuwwbubbrwgbgrwg
|
||||
urgrwrgbrgbggrurubwwrwrwgrbgubbruurbugubww
|
||||
gbburgbuggrwwgrgguugwbugwwrgurbwbugurubwbrrug
|
||||
bbruuuruurrgggrwburgbrurwurgrrrbrgwbuwrwrugurwwwbb
|
||||
wggguggbwguwrrrbwrgugrgwuwrubburbgbruubwuggbubuurgww
|
||||
ggrubgrggwgburgwurubuubugrgrbrwwwgbbwrbuwwwruwwwwrugwb
|
||||
rrrbugggrwuubwrbbgbgrwggbggwwwrwbrugruurwgrruuuubg
|
||||
grurwggwgrubrbbbubgwrbrrwgwugurubgrwwwguwwbrbubwbuuuwgwwbw
|
||||
uwrrguggwbrgbgrwbgguubgrrbuwurrwbubrggrwbgu
|
||||
wbwgrbgwgwrwgguwrrugbwburrwugbuwwugwwurrguuuwbbwburubgrbgw
|
||||
bbbrbrgwbwwgugggwwbggruwwbwurgwggbbbrurrwwbugrrgubg
|
||||
gbuuguugwrburruuwbbwbbwubrwbrgwwwurrbgwbbugwwbuwuwgruubg
|
||||
bwbgbwubugwgrwbubbugbwuwbubrrrwwggwbrggubwrbrbubgggw
|
||||
bbbggrurgggubbbbbburugrwggwwrwggbwuwbbgbggbrbuurugbwugbg
|
||||
ubgbwbguuwbrbruggwguburwwgbrwuwguwguwurbrbrrurww
|
||||
bruwrrurrwwwrbrubgrrguwwrrgggbbwrwwgbggrubg
|
||||
bbwugggwrwgurbrbgrwrwuurwwwruuugbgrrbuwbwbwgbgrwwburuubugg
|
||||
rgbgugwwwrubgggwwbuwrugwbbwwbwuwwbbgugbwburgrr
|
||||
rwrgrwbggwugguggrgurbugwbuggrrrrguwbgwubg
|
||||
urwruuwgrrwggwgrwuwgrggwbuwwbrbwuwwwrubg
|
||||
urwrbrrbrubbruwbguuwwggubuguwwggwwrugbuwwrbbwwgrrrbggb
|
||||
uurguwwgbrbbuwrrbrrgrbggrrurbwbrwugrwugruurbgbbu
|
||||
ggguuubrgwgbwuburubruuggrwwururubgwwbbubbrwbgwbubbwrg
|
||||
grwbrgwbbgbwwwruubgbwbbbrbgwurrrururrgurubugbrrrugwwbuwbw
|
||||
rgrubwgbwwgrbwburgwuubwbwwwbgrbbbwbbwbrwgbbrggrwubg
|
||||
uuggwggrgwugrgruurgbwrugwbrrbbbgwrbbgbrubg
|
||||
wurrguubwrbwuubgguuwrgrrugbgrrrwrbrwrrrgbuwwrbwrbgrgrgbwbu
|
||||
gubgbwubgbbbubwgrbubbgwrrguburururbgbbruuuruu
|
||||
ubwgbrwbwbgguwwruububgrrggrurruuuwwuwubuubgubwwgrubwwurggubg
|
||||
grwwwubuwurruububbwugubgggwrbgrguwwwugruruubgwbbrwuruubg
|
||||
ugrgbwwgbrwrwugwubbwuubburrrgrbbgruubgwug
|
||||
bgrgggwurrbggwubbrgrwbgwwwwwwbgwwbwrwbbrugwrububwgubg
|
||||
uugwwurrwggwrrbgwbrrgrrurugbgurggurubgbwwubbwrru
|
||||
bwgggbrubwguurrgwrggggbgrwwwuggbrwbgrgbgbrrugbwwwgbbrbwu
|
||||
bwgubrubrgbuwgbbuwgbwuurguwuuwwbruwuwbrrbuubg
|
||||
gbuwugubrbbburrwbrwuubrwwrwburwbrwguggugbrbwburww
|
||||
brguguururwgwwwbrwuwbgrrrgwwrguwwbuwrwguwgwwgwugwwugubg
|
||||
brubrwbwwrgwgrgguwwgrrbggbrwgbbwugbrgwggbbgbgrbwgr
|
||||
wrwgguwbrggwbgururwbrurggurwwrbuurwrrrrwburugggugbwrgubg
|
||||
grwwwggubgrrrwuwggbwrwgbrrbugrrbuguggwuruwugr
|
||||
wrwwwwrwubwuugurrbgugrwrbgrurgbgbubgbguuwubbwubg
|
||||
rgguruwrugrrrbwwuwwrwrrrgguwbgbggwwbuguguguwwgggbr
|
||||
wwwgwbbgbgbgbuwugwgrrgwbrwguguwgrggbwwbwwggbuuububgwbggugg
|
||||
ubwruwgbbwwuuwuurburgwgugwuggrbbgrgwguggwrgrggru
|
||||
rwrwguruubbgubrgubuwgrbwgbgbruwgurgwbbbgbrw
|
||||
wuggwrbrwwurwuuuruwwrwubwrgwrwwbrugruwbgwbgguuggbubwrrwguu
|
||||
ubwwuuwbggrwgbuwburuwrubgrgrbubgwrubwbwburubbbgu
|
||||
bggrbbuuuubrwwrrbgrggrgurugbuwbbbgbwubrrgu
|
||||
bgrwuggwwbbgubbwrggubrwwwrwwwrwgbuwbbgggwuurbugrg
|
||||
ggbgubrggbwgrgwbbbbbgugurguwggbrbbgrwuguwwruwbwwruuguww
|
||||
gbwbrrgwwggguwgguubwubwgrrrwrwbrgbrwbrbwbwuwrr
|
||||
uwbbwrrugbgrrbwwrwgwbggbwwrwggbruwururbwgrggrrggggwbbu
|
||||
uubbwuwbgbwgbugbugwrgurrgubwuguwrrbwbbbrgg
|
||||
bbwrwrwurubrgrbugbgwrgruubuurwurbggbbrguubg
|
||||
bbgrgbgwbbugwggwbrwubwwugwbwgrbubbubbbgwrururwwgubuuwg
|
||||
rwbwgwrbgbugrbwgburburbuuggwuguggrgrwwurggwuubgw
|
||||
uuuurubugrrbgwwrbuwwwbwuuwrgwrgbbwubggbwggwrgrbb
|
||||
ruuwugbgbrrgrwgwwwgwrbuggbgwubwrrbbrwrrwwgwbgrwrwbg
|
||||
wbbbwubwgrgwrwgwgwubwrwbwrwuuwbrwggwwrwrrugubgubg
|
||||
ubwbubugggggrrbggrwwrguubgrwrrbgwuubgbbuwwubuuwubgbuguubg
|
||||
rrwugrgurguguwggbwurwguuruwgwwrbwugbwrbbggbrrwgww
|
||||
ruguwurwgwbrwwgburubwuugwbgbgwwrurggbrubbrubwrugugugrwrg
|
||||
ggburgrubrbbbwgwuuwuugwuubrbuuwgrbwbrurbwuruu
|
||||
grbbbbrwuurguruurwwgbwrbburrbwugggwrwuruurgbrwwrwgb
|
||||
ruurgwgggwgbwrgrwbruuurgrbwrbgwuwbbrbggrbrrbgubbw
|
||||
gurgbwbggrwbrwbbgbwuwwbugrurrbuburbwbgbgrugr
|
||||
urrbgwugbuwbuwbwgrbrbugrbruwbwbwwwbugrrgrgbubbuurrrugwbwuubg
|
||||
ruuwgbgbbgrgwrgurgbbggwwuwrrrugwwbgruwugbwrgrruurbrbguu
|
||||
grbuurbrubrgggbbubrwgbwwgbgrbwubrurbgbuwgubgbwuguwrubgubgw
|
||||
bwbbrwwruurgugggbuwugwbuuwwrruurguwbuurwgbguurbgbrwbgurgubg
|
||||
rwggrwbruwgwrbuuwrruguwbbrrwwwrrgruurbwuwggrwbwgurwuubg
|
||||
gguruuguurugwuwuwuwurwwbgbgbuwrrwwgwugrbuubbbwrrggrubbw
|
||||
gggrbwgbggurgwrwrwgrurrrgguuwggbwwbrbbbrgwbrubrg
|
||||
ububggbgrbwbbrwbggwugbwrbrgwbrgrbwugwurgwrubg
|
||||
ubgugruruururwrwgguggbbgruwwruwuururbgwurwbrubgwgrw
|
||||
gbgrruwurrbbwbgwbuwggggbwuwwuubrbwurrbrwrrrubg
|
||||
rgwgrubrwbrwgggruwwbrwrubwwwrwbggwuugrruuwugbrg
|
||||
ubgwrrgbrgbbrgwbbwubururwbwuwwwugwwwrgbbrbrwgrgrbbur
|
||||
wbgbwgubbrbuwgrubbbgrwgwrgguburrgbwgbbwrgbgbwwwrwbubr
|
||||
wurubbubrgwwgwrbwrurrbwgbuugugwbgwbgubbubwuwbwbugbgrwurrg
|
||||
wrgggrguwgrwbbrgbrbbwwuwggrggburugwwgwuguburbwugrrgbburw
|
||||
rrrruwugurugwrggbgggwrgwbuwuguwbubbwgrbwgr
|
||||
rbwbbwbbwgbwggggwrbruwbugrgugubbgwrrrugubg
|
||||
rbrrbrgurwbgurwbgrwuwgrwwgbbrgurgggrwbuguw
|
||||
gbbgubwbguururbgrwuwrwbbbgwuurbbuwgwwruwwgubgwwbg
|
||||
buwrgbgggrruugugbwuruwgwgwwurwugbbbbbrwuwwwbbugubrgrgu
|
||||
gwbwrubugbrrwurwgrwwwwbwbbrgwubbguurwguuwrrb
|
||||
rwugguuubbbrrgurrbbwrrwuurrggrruwururrrwwgububwgurubg
|
||||
bbgbbrbgrwrgwuuwrrwubbuwuwrwuwrburggwwburwbugubgrr
|
||||
uurwbwubwbgrruwwbbwgwgrrbrubrrbubwrwgubg
|
||||
rrrgwguwwrwugbggrbururbgrrgugrbgbwugbgrwubg
|
||||
gbuuwbrubgrrwrgwbwbgbrgbuuubrugwggwurrggbbwuwwgbwwbbuugubg
|
||||
bbwbgwbwrrwgguwbrwgrgbbubwubwgwgrwguwurrrwburbgugbburuwubg
|
||||
ggbuubrwrwurwgwbwburwwwgwwwrgguwgurrggbwurrgwgw
|
||||
grrwrubwgbbrwburgrguurgrurwbwbrbuugrwuwrbwurubgwgu
|
||||
brwwwrruggbbuwrbbgrugrbwgbwwwrbgbwgburrwrurgubg
|
||||
grbwugwrugrwrwrgrrbruguwugggbrgbrwbwruwgrgguugbgwbgrur
|
||||
urwgwwrgurrubugwwuwrbrrrbwwrrbwuuwuuwuwururuguruwbwurgr
|
||||
urgrwuwuwbbrbwrbuurbbwbbwggbruwruwburgrwgwuwrruuubg
|
||||
ruuwwrwwwgrrwwgwubwbuwgwubbggrgurruwgwrwugb
|
||||
urbbgggrrrrrrrrwwbrrbgggurgwwugburwbuuuwwwrurwrrbubwrrwrw
|
||||
rwbgrbbwubgbuwrrgbbguwbbrbrwbgrbuwwwwugbugwrwurwgwubg
|
||||
ruwbuggwgbuuburwburgwgurrwrggrrgurrwburgbwbgr
|
||||
bwwgwggrgrbbggbgrrwbggugwbgrgbbrbwbbrgrbbuubg
|
||||
gggbbwbwgbbuubwrbggburrbgwwruuguruuguubrwrwwuubgw
|
||||
bwwwbuwrwrwugubrwbgwrwrguubwrugurrgggubg
|
||||
grwbuwwburbwbwurguuggrruuuurwwurggbgrbuwwrgr
|
||||
wubbwuggrgwbrwgbwrgwwwwuubuguuwbgruuwgrwgbuuwrwwurubgwwgw
|
||||
bbrwbwuwgwwbwwrrruwwbwwuwrguuuuuwrwurbbbbuuugurgugw
|
||||
wggubgbuubbuurburruwurbgwbwubbgrgwgrwwbbburggbu
|
||||
buurrrwbgguuurbbbgwrgggggwuwruwwbgguggbwbrrrgrggwg
|
||||
gwbwrgbrburbguwbgrwuwgburgbrrubrubugbrugubg
|
||||
rwgrgwwubguggrwubggbrrurwbburbuwrrbuwbgrbgrruwgrrwwubg
|
||||
wbwwgwrgguguwrrgggbwwbrrgbububwwwugururrrbr
|
||||
rbgurbrbgwrbgrwuwruguubgwuwbgwguwuwrbruwbbuwubbu
|
||||
bgrgbwgbrwuruuugrrbugrburburgrbgubbrwbubwgubg
|
||||
ggruruwrrwwwrbrgbwgwbuubgugguwgbuuwggrwgbgburbgwbr
|
||||
wrgrrgrwgwbbbrgugguwbwuubbwbruuwwrbgggugwwgbbruugr
|
||||
ggwwbbwugrgbgwbbbuwwwwuggrgguuwggrrbbwbugwgug
|
||||
wrugrwwbwgbwruwuwwubugubggbuuwgbwgrurbgbuwguurrggrrbwwwguubg
|
||||
grwurrbbuuuwrubbrwrubrbbubgugbugbwrgwggurwubg
|
||||
gbggwurwgguwwurrubrgwbrbbwgbbrugburgbgrwrwguuw
|
||||
rrwbwuuuugwrbwuwgbbbwbwwwrgrwrurbgrrgwrbwugbrrbrwubgr
|
||||
uuwwbgguugrbrwgbwrrbbrwrgbubgwrggwwuurrgbwrbgwuugwruuwwbgr
|
||||
wgrurgbugwwrrwrrrgbbggrwuruuwbrrgrrgubrrubg
|
||||
uuwrruubrbbgururrrbbrwruubbwwgbwrgwrbuubgw
|
||||
urwrggbbgbgrwgwugurrrgbuuwbbwrgrwburrrbugwggbuwgbw
|
||||
urrggbwggggwrgrbgbrbbgrgbgubrggbgbrbwggwuurubg
|
||||
wwbrbwbrrgwuuugrgwbgrwwgwuwuuwggwbbwggugwrbggwgrugrbubgw
|
||||
bggggurbgugruwuggwuruububwugrbbubgrwurbbrubgw
|
||||
bbwwgguwwrggwrwbwbbuwwugugrrggurbwwrgggbwuwbuburubg
|
||||
rwgbgrubrrbuwwbbbbbggwruwubgbgguwuwwwgwggbubrr
|
||||
rurwgwbwuugwruguwbwuururgurguggbugwwuguuwrwu
|
||||
bwrbwruwubbgwguwgrwuubuwgwugwwgrbrrubgwbgbrbwugwbuwwwb
|
||||
rwgbgrugggbgubugwbbbwggbguugwggrbbbrubwbubgrbb
|
||||
rgwwrbrbrwrgrbgbwwuwwgwrbuwrgbrrurugwburrggrwuruub
|
||||
grwbbbubbuububbrrwubgugrgrwruuwrwubrruggbuguubg
|
||||
bbrrbrbrwbrgwgwuwguuuubbruwwbuuwuuwgwugbgur
|
||||
uuguwbururbggrgrugbrubgggrrwwuugwgbrubwgbgwwgurr
|
||||
rgwrgbbwbwwruggguwbrugwbrrwwbwrgwbwrgrrbuuuggbuubgw
|
||||
wbbbguwbuuugrurggwwbgbuugwwrguggurrrbbbrbgbrb
|
||||
wrbuuuwrbgwuugubguggrggbgbuguurbrrbrgbrurbrbbuugrw
|
||||
bgubwwgrbwwwwwbrrrwgbwwugbuwgwruugrgbbuwwgrr
|
||||
urrggurbwwrurbwbwrbwwwwuurugguwrggwwrrwgbwbrrruru
|
||||
rwbgwguwurrurbwuwrubbwwbubwwwwbrggugubgw
|
||||
burgrurbrugburgrbgruwggruuuwgrgwuwrgwurrrrurbwrwwwgbuwubbb
|
||||
rruwuwgrubrbubugrwbwuuugwuwubbgwrbgwwgubrurwbgwbwwgwgwbwuu
|
||||
wgrbggrrwbbgurwurwrwrggbwwrwugwrwuugwgwubrubgwbguuwbwwgbu
|
||||
guuwrrggbrrugbrguggrbubrggbwururwbrgrwrbwb
|
||||
gwgggggbgrgbbbbuurugwrruuuwrbwrggguwruggwgbbugu
|
||||
rguwrwrrubbruwruubwggbuwwgbgggguwugwwubwrgwwrubrg
|
||||
brggwbbbubbrrrwrbwrwbgubbugbbgwgwbrwbggurbbwuubbgrggrbbr
|
||||
wuuuurbbuwgubwbwrrwbbgbuugrgwgwuburubuuwbw
|
||||
ubgwrruruwbwgurwrrrrrbrrbrwuubwrwwbrwwrgww
|
||||
grgbguubrugrgbgggwgrwgrguwbubbwbugrburrugrwbwbgurubgw
|
||||
rgguwgruburwgbguggbwgrgggrubgwgrguubwubgw
|
||||
uurubgbbuubbguwrgrwwgguwgbrrwguggggwurbwubg
|
||||
uguguruuuugbgwgwbuwgbrbrwrwbubbuubugrwwbbgubg
|
||||
guuwwruugbggwubrrgrbuugbwuwggwrggwgwuurwbgbwbuwbguurbrbggu
|
||||
bbubwrgbggrwbbwguurrrwrugbugbruwruwwbugrwbugbbgrugwrwr
|
||||
guwuuwurrububbgrwugruuuguruwbrbubgrrubgggbu
|
||||
wrburuguguburrbuuwbgurbubwruubbuurgubrugrbgubub
|
||||
wurbrruurgrrruggbbrbruuugbbgggurbgbgwbwbrbugubg
|
||||
rwrwwrurrwgwgbrubrbwwrrgwurruwgwguuguubg
|
||||
uuwwwgbgwuuruwrubrbgrbruggrggbwruurgguguwgbrrbrbwwuubg
|
||||
uggugggbwrgugwrgwubwrwgrubggburgggwrbgbgbugruwugg
|
||||
uggbugwwbggrbbuggubrggwrwwurbbuwugwruuubgggbww
|
||||
rrrugrwrrrgwgbuguwgwugrbuguubwgrwgwbrgbbwguwuuubgwb
|
||||
uwwrubgrrbbugwgwbgbrgurgrbwbgrwbwrgwruuubgwrrbuu
|
||||
gwrrrwrrggwrrwgbwruwubuwwbgubgwgbwgggwuwugrgwruurwgwuubg
|
||||
grrwrbugrbubuwruububbrgbuwrubrgbugrruurgwgrrgubg
|
||||
gurbbbruuuuwwbbwgrgrwrrwuwubbbgburubwruwuuugwrgbgg
|
||||
urggrgbwbwbgrgrrbrbwguuwbuwwbggrgbbbgggwuubwbw
|
||||
ubugrubuugugwwrgwrrrbwwgbrrbruuggguugrugwrurrgrbbguwuwgrg
|
||||
bubrgbbrwguuwbbgwbbbwbrgrbbbwuwrbubgrwwgbwbrubg
|
||||
guwwurwgbwgbrurwuuruwbbbguuurbwuwubwbrrgrbwgwugrubrwrwbuu
|
||||
rrgruubrurwurwguuwbgubruwugbuwwurrbwwuwrwwrrugrubguwubgw
|
||||
ugurrrwbguggbgwggwurgggrgggrgbwuwgrgwrbugr
|
||||
uwbguwugrgbgwwbugbbugubgrrgwggrgwguwgugggbu
|
||||
rgbgwuwuwrrwbggrbuuwrwbrwurrrrrrwrgrgrburbu
|
||||
gbwurbbbuuwugbwwgubruugwubbbbwrbwrwrrwggwgwgwbuubg
|
||||
wbuggbrugrrbugbbwrbwgbbgbbgrgwwurburuurbuuuubrwgruwgrrbrubg
|
||||
wrwggwurggbuwrwbgruugguwbguuurgwuwwwbbruuu
|
||||
wwrurwrrwbrbwwbrgguugbugbuwwwwwwrurgbrgguguuuubg
|
||||
wwubbbrubgrbrrggburgwwgugbggggburwbguguwwburbwbbgwubbur
|
||||
gbubruwrwuwubbrgwuburwrgubbgbuwugruubbwrgrwubg
|
||||
ugrubrugwbgbbgurrbwuwurgwggrwuwbbbuuuwugbbuugrggbgb
|
||||
gwggwgwgrwubgubrbrrubrugwrbgrgbgwbuwrburrrurbgrrubgw
|
||||
wgrrggwwubgurwrrruuwbwrrgwwgwruugburbguuubruwuwbrggbrbb
|
||||
bbrwguwgwgwbgurbruruubrbbgrbrgburguwuwggwwurrrgu
|
||||
wrrbgrgguwugwwbgurgwgbuwbwguwbwrruwwrbugwrruuwbbwurbwrru
|
||||
uwuwurrwrbruwggrbbrrbwubugrbgrrurgrggwrwgrubbb
|
||||
ubugrbbubgwgggrurbburwbguuugwguwgwguwurrgwuwwbugrrburb
|
||||
ggrwwgrurwbrrbbbbgrbwggbwrbgurbbuurwwbbwggugww
|
||||
wbuurbbbrbgruuggburrguubgrrgurbubgwuuurubrr
|
||||
wgrwbwwwbrurgurrgbruggwwugwubgubububbbuuuuuubrgbwuwuurbw
|
||||
bbgbggrbbburgubbruuwgggwrubuuwurgrubrwgbrggubg
|
||||
rbgrbwubwurwbwwurbrruuurbrguwwwrrbugrbubrwugrwb
|
||||
wrugurgwuwurrbrwugruguggwbwwwuwwwrrrwwubg
|
||||
gbwuggbbwbbuububruburrrwggwbwbwgrbgwgwguwrubuururbwuubgwub
|
||||
gbubwwwrruwwubruugrbgbgwrwrrwruwwuggbrburbguggubuugubg
|
||||
wgbwgwrurwwurwbrububrwbrrgguwwwbwrrbruugrrru
|
||||
ubrrbrugbwuwubgbbguwrwugggbrgrruuwwuwubbgrwurubg
|
||||
uruuuuuuwggrbgggugugbwuuurwgruwgwugwrbgubbrrgwubg
|
||||
brruurbgbburbrugwuuuwbwrurbubbbubgrgrwwurgbugwgwgrugwuuwbb
|
||||
gurgwuubwrrrwbuguwuwgrbrrubrwgurrrugurbrrrrrbrwwrbugrg
|
||||
wbwubwwuugrrwrbggurrgbbuwwgrwuguggbubgrrgbrbrbbgwbrubg
|
||||
rrwubrwrrbgrruwrbbgrwrwuugggwgubgwuwbgwgbrwwgbgbgbgwbgrr
|
||||
bbwggbbwuwwgbwuwwuuguburgwbrgbrwwruurwbuwrrbuwgbrw
|
||||
rbgrbuwbuwbbrgrrurrbuwbrwrrrbruggguuuubbrbguru
|
||||
ugwwubwgwgwbbbbguwbbuggbuwuburuuwwwwbwwrggwgrruwwwwbbubu
|
||||
brrrrwugbuwwruwbwgbrgwwgwbbbrwrrrgbgwbbbgbubgwrurgrubg
|
||||
bwrwrrwwbwguwburrrrgwbbrgubrubbbwuwrbrwuwburrugwwrwwrbbruu
|
||||
gurrwuugurbuubrgbwubbgwubbbbuwruugrrbgurbggrrrguu
|
||||
gwrwuuruggwbgurwwgwrwuuwwbgggbrwbugbrrgwbgrwrruuuurwrg
|
||||
grggwgwgbrrbbwbrubgbrggubbbbgbrgbwwbwbrgubggbgbubgw
|
||||
ugbgubrbrbrggwguwwwrgbgruggurgwgrrugbbbuuubg
|
||||
gubwugguwrbuggwburrrwguwubbgrubbuwruubrgrgrugrwrrbrbbugwu
|
||||
rwgwwgubggurrbwrwrguwrrbrggrggwwgwwwruuwgburrrrbuugbg
|
||||
wwrwurwggggrrrbbbbruurgguwwrrurugurgubrbwgubgwgrbwbguubg
|
||||
rwguurwrrwwrrwbrbrugwbgrbggbbbuwbrrrgbuggwwwuubg
|
||||
wubwbgggubbbgguwurwggwbwuwbwwubwguurbwrruwwrubg
|
||||
bbuugrggbbwubgurwbwrwwuwbwbggurwguggwbwubg
|
||||
bgrugwuwbgwwrrwwuwubrwurwbuurwwgbrgwwggrwgwuwububwbbuubg
|
||||
bubrggwuugrgrwgbruugbgrwbgbbbwbwwurrrgwgwwbuggguu
|
||||
ubrbwbururbrgurgugrgurbwbbwwgrugrbubrugbbbbburbrurgrwgwgu
|
||||
wuwubuwbbugbgrrwrgbgbrbbugguwbbwwwgwugwwurwwuugbwgg
|
||||
bubwbgggwugrwgrrrrrrrrugguwwrrbwrrggbruwuurwguuwwgggwwwrgw
|
||||
wubbbuuwwbbwubgbrgurbggggurwrrbgbrwwuggwubgw
|
||||
wbubuwuuwwbuwwbwrbrggwwbbuwggbwuuwwrgrbwurguwgbrrwwubgw
|
||||
gwrwggrubwguubwuggugwrrwgbrwrrrwbubgwuwbbubww
|
||||
gguwuugugbuubrwbrrrbrrrubwburrgwgwgwbgurbgbrrwbrgr
|
||||
bbwbbgbbwwuwbrugbwruggbugwbwgurgwgggbrwgug
|
||||
ubruuuuwrggbrggbugbbwwguwguwuggbbwguuburugrugbrgruuwbbbwubg
|
||||
wuggrwgwbrgwwbbwbgwrbrwgurwwgbbwrwbgubwrugggbrgrbbrbgrrgubg
|
||||
rbwrubrgwrgrwugurwbguuugbrbbbwubbwbbguwbrrbbbwrrwg
|
||||
brubruurbwguwrrwuwrugbuwwwgbrrgubwwgrggwgbru
|
||||
rrbggwrbbwbbrwrrgrgbgubggbrwwrrbburwwbrwuwbrbbwbrgw
|
||||
wrggruwrwwwwwwugbrgwgggurubbrbbgguggrwbgugugrrruwu
|
||||
gggwurggwwgurugububrbbrurgwwrgrwwbwubwubrwgwrubg
|
||||
uwbbwgrrrbrwbrubuuwwguwguwgubbgruruguwbwubg
|
||||
bwrrgburgwguuurwggwrwgrubbbuwruwbrgwbuuwubug
|
||||
ugurrwbgbuwgbuugrbwgugwguwwbrugwbbuwurugugbuuugbu
|
||||
bgrbwbbuwbrrgggwugwgwrbbuwbugubgrruurubg
|
||||
ggbrrgubbgurwwrgrgbbuggwrgwruguggbbrrrrbbrbwurwr
|
||||
ggbgbubuubbgwgrrrbwwgbugrgrwbubburgbuuubgw
|
||||
ruugggwrbbgbbuuburrgwbwwgbwgurbrbbggbgubgw
|
||||
guwrbugwuubgubggwgwbruugrwbbwgwrwurrbggrrgwub
|
||||
bubwgbrguugrwwgbwrwbuuurwrwrgbbuguwwbgbwubg
|
||||
brubuuwgbgwgrggruruwrrubwbuuwwuubbrrrwbuurwuruuur
|
||||
grgurgggwggruwuwrgrbgguggrwrbgbugwbuuubg
|
||||
bwuuwgbrbwgwurrrwbrwwwbuwugbrrggbbgbuwgrubrugubg
|
||||
wbbbwuwububuuuwbwgwrrbuurbwbrbgwuuwuggwubrguuwggguwuubwggr
|
||||
uurgwgbgwrwwbguubuurwwrwurbuubwbwgwuurwwwwubgwrugrgru
|
||||
rgwgbbbgguuwuugugwbrurbwbbbubwurwubggwuurggrugwbgb
|
||||
gwgbwuwwgwuugruugrruwgbwwgwugbuwbrrbbgwwuwgwbgwugwbbrrguw
|
||||
grrbbuuggrugbgbbbgbrgubuwrrrwrbwwwguwwgbgwgggwug
|
||||
wwwrwgbgruubuwbrwuuuwggubwbrgrrguuuwbuwugbrgrbubrbrubg
|
||||
ruwbrwugbbrggwguurgbrugrgbruuuwugugwurruuwbrbwggubg
|
||||
uuuwuguwuwrubgbwbgurguubwwrbwrrgbrgrrbbgrrrgwgrur
|
||||
uwubuubwrggbwwrugrbwrwwruuwbrrbuubbgrruwbg
|
||||
buuwwwggwbuwwwwgwbwbguwgrwrrgbwuubwgurrguubwwwub
|
||||
gguurgrurbrgwwrwgugbgurbwguugrgwrrwbruugrrubggw
|
||||
rbuuwbwgwrrubbrbgrrrugggrrubgbbrbwgbuuurrubg
|
||||
rbburbbwbwurrrbbggwwgwbgwggbrbubwgrugurbbbrgubwwuwwu
|
||||
guwrbgbwwuwbbuwrwgurbgwrbwbwburwwggwruruburguw
|
||||
ugubbggbwbubbgrwuubruwggbbwrgwgbguubbwgwwggrrburuurwrgguuubg
|
||||
wggburwgrgrwuugrggburubrbwbbbwggrwbwuwguuwbr
|
||||
burrbuwuwwwbrrwguwggubbrbrgrrguwuwwuuuwwbgguuuwubg
|
||||
wrbbwubrrugrrbruruuubuuwbruruwburrwguwggbwwuurrgwugbruubgw
|
||||
gggwbubwwrwbugwuwwuuubgwguwbubgwrbuuwbwubbbrbrugbgbur
|
||||
wrgbruuguubgwbuwrrbubwwggrrrrbugugggbrrurrrgggbbgrguwrgwb
|
||||
gugbrwurgruwgrrwgbruuuuwburbgwwwwwubgbrgwwrrrbgubg
|
||||
wgwurwwbuwbggwgugrbwuruwuwuururbrrgwrbugugrrugubg
|
||||
wbgwgrwwuubrurwwwuwwuuwrwuwuburwuwwuubgggwuuuwubgubg
|
||||
rwgwguwuubwuwgwggrwgwrrbbggrwruuggrbubrrgbuugwuruubgrgr
|
||||
rbububguururbwrurbrubbubuuubguwbrbuugrrbgwwgww
|
||||
grubwubrgwurubbwbgwgubguguuwbgruwubwwrbuurwgurgbr
|
||||
uubwgwwuubgggbgbruwuguuwbwurguuguwbgguuwwrb
|
||||
bwwgbubrwwbugbrrwguwugruwwgbwbururbrbgrubg
|
||||
ugugggbggbgrwwugrggbwbuwggguugububuwbubbubuwgubgw
|
||||
ugrubgbbuuuwgbuurbgwbwubguggrurgwrwgbrrgrbruwrgw
|
||||
rrggurwrrwugguuwrwuruuguggrbwwbrrgwwbrgubgw
|
||||
rbrbgburgbuuruuugbrggbwgrubrugrbwruuwwwwrgrwwr
|
||||
rrggbrgrwrbgrbrrwrgwrwwwwuubrgwwggubbwgugrwrurbgrrruwrb
|
||||
rrbrwrrrruurgbwbggrrwwgubrwgggwwwugrwwubgwruguwugwbbbug
|
||||
rgbgrwgbbbguggwgwbwugbbbwgbgbrgguurgbbbugrubuwrrgwubw
|
||||
bggwwrbuurgwwwbrbggggbgbbgwwgwwrbwbbrwbgbbrrbgrgwwbbggbwuw
|
||||
rwururuuggwbugguwgwgrbubrgbrrbruguuwbbbuurg
|
||||
gbbbrbgbwrrrgwrrwgrrrbubrggrwrgrgburrrruwwurw
|
||||
guguugwbrgwugwwwbuwrrbugurbbbruubggwuuwguguwu
|
||||
uwbggwbururwuwbrggbuwrwubuurbrugrurruwurubuggbbwwgww
|
||||
rruuububwrruugrurubbbwwugrbruggbrugrrwwgwrguwbburubwwbwbrubg
|
||||
bbwrggbgrrbuwwggwgwbubwgbwugwgbrurgbwbbbbbuuuubw
|
||||
gbgbgwrrugggubgrrubwguwuuwwwwguubwggwuwgugwuuubu
|
||||
rguuubuwbrbrwwgwggbugbubwrrruggwrwuuguwwggugrrbgrbrwwuww
|
||||
rrgrggruggbgwgggbrgurggurburrurbuburbgrgbbubrwgru
|
||||
gburrbwbrbuwugwwbbrggwbwwgrbbrwwuwgubbuwbwr
|
||||
bgurwuggrwuwwwgrrgrwwgurbrbgbruggrbwbgurwbwwwg
|
||||
bgbbgrubbruggrgrguwrbbgbwguwwubwbrrwwubgw
|
||||
bgurguwrbbrrrbgrubrwrwgwggbbggbbubgrguggbwggbbugbgbwgrwuw
|
||||
urugbbrbbbwugruwrwrggbgwbwwrwgrugwugbguwubgb
|
||||
rgurrwbwwugggbgwubbwbwwwruguggwruuwrwrurbbrwwggbrrbgubbwubg
|
||||
ugrgwruuruuggwrrurwwwguwwuggrwwgbruburbggbrb
|
||||
uurgbgbgwgbwgrburrurrrruruurrubwbgurbwubguwgubwbwrbgrr
|
||||
grbrggbbbgwbbuwwrbuwuruwwrgbuguwgbgrgrgrwwbwgrbw
|
||||
wwruburuwggbrwbruwurrrgbbwwrwgguruwbrwubbr
|
||||
bbwburbbrbwubrbwuruugrrwwgbubgugggrwugrbgurgwwgubg
|
||||
ugbwwbrgubrrrurwgbgubrrbbrbggwburrwuuuuruwgurubgwgubg
|
||||
wbwubrbgbrbgugrrguggwrrgwbugrwubgwgrrgbgrurbwrbrububwwgwubg
|
||||
rrububggbrwbrubwubuuwwrbubrbuggwrbubgwwururrgwwurwr
|
||||
wbrbrgbrbgubguugwruwrrgrwgguurugbguwubbuubwggrrggubwbb
|
||||
rguuwbrururbwbubggugbwbwuwgggruubwbuubwrrrrug
|
||||
ruwwggggwruwrurwgrguwwgurbgwrgwuuwrbrrwbgbuubrwubgbg
|
||||
rugrgrwgbbrgwrggguggbwrugrrrbguwwbguwrbwwwrwugbgwwrwbr
|
||||
wwubggbwubgrubwrbrgbrbwgbrggbwggggwggggguggrbr
|
||||
bbuwgwgbbuwbuburgwgbgggugrgrrbrgurrguurugbbuurubggbg
|
||||
rruwbwwwgurbgugbubwwwuwwuwbururgwwrrwubg
|
||||
ubgbbuubwbwgrbbrbuwwuuwubrgugurbgruwurwwgu
|
||||
grbwbubbrrruuuuuwuwrwugwuwgbubwbbwrbwbbubbg
|
||||
urgrugbgbruwwburwrgrburbubrbbuwrrgwgbgrubg
|
||||
ggububgubgwgbgguwrbrubwwburugwubuuwrgubg
|
||||
brgwuugggbbuwbuuuwruwubrgguuugrggbwbwwrbugrwbguurugwgbu
|
||||
wwwggugwwbbbgwgururugbgrwubgbwrwrggrubgrgwbrbrr
|
||||
ggburgrrbrbwbrruwwwrwurgbwgrbrgguwrgubbubwwubg
|
||||
buubugggwrbwrbbbgrbbgwwwwgbrrbbugggggbgguwbruwurwbrwbrgw
|
||||
rbuurwgrwuuuwrggurbubbgbrgwrbwgrwbbuubgrrbwbwubruubg
|
||||
wgwwbrrrgwbuubwgwgubwwggurggrrwugbugurrbugwbwrubbrgurbbgw
|
||||
ugwguuugbrggggurubrbbgbrrwwbbwurrruwrugruwuwubwu
|
||||
urrbbgwwbburrbrwbwggwrbbwbgwwbruwubrbwbgubbgwrgu
|
@ -1,141 +0,0 @@
|
||||
#############################################################################################################################################
|
||||
#.......#.........#.....#.....#...#...###...###.....###...#...###.....#.....#.......#.......#.....#...#####.....#...#...#...#...............#
|
||||
#.#####.#.#######.#.###.#.###.#.#.#.#.###.#.###.###.###.#.#.#.###.###.#.###.#.#####.#.#####.#.###.#.#.#####.###.#.#.#.#.#.#.#.#############.#
|
||||
#...#...#.......#.#...#.#...#.#.#...#...#.#...#...#.....#.#.#...#...#.#...#.#.....#.#...#...#.#...#.#...#...#...#.#...#.#.#.#...#...........#
|
||||
###.#.#########.#.###.#.###.#.#.#######.#.###.###.#######.#.###.###.#.###.#.#####.#.###.#.###.#.###.###.#.###.###.#####.#.#.###.#.###########
|
||||
#...#.....#.....#.#...#.#...#.#.......#.#.#...###.#.......#.#...#...#.....#.......#...#.#...#.#...#.#...#...#.###.....#...#...#.#...........#
|
||||
#.#######.#.#####.#.###.#.###.#######.#.#.#.#####.#.#######.#.###.###################.#.###.#.###.#.#.#####.#.#######.#######.#.###########.#
|
||||
#...#.....#.....#.#.#...#...#...#...#.#...#...#...#.......#.#...#...........#.......#...#...#.#...#.#...#...#...#...#.#.......#.#.........#.#
|
||||
###.#.#########.#.#.#.#####.###.#.#.#.#######.#.#########.#.###.###########.#.#####.#####.###.#.###.###.#.#####.#.#.#.#.#######.#.#######.#.#
|
||||
###.#.###.....#.#.#.#.#...#.#...#.#.#...#.....#.....#.....#.#...#...###...#...#...#.#.....#...#...#.#...#...#...#.#.#.#.###...#.#.#.....#.#.#
|
||||
###.#.###.###.#.#.#.#.#.#.#.#.###.#.###.#.#########.#.#####.#.###.#.###.#.#####.#.#.#.#####.#####.#.#.#####.#.###.#.#.#.###.#.#.#.#.###.#.#.#
|
||||
#...#...#...#.#.#.#.#.#.#...#.#...#.....#...###.....#...#...#...#.#.#...#.###...#...#...###.....#.#.#.#.....#...#.#.#.#.....#...#...#...#...#
|
||||
#.#####.###.#.#.#.#.#.#.#####.#.###########.###.#######.#.#####.#.#.#.###.###.#########.#######.#.#.#.#.#######.#.#.#.###############.#######
|
||||
#.....#.....#...#.#.#.#.....#.#...........#...#.#.....#.#.....#.#.#.#.#...#...#.......#.#...###.#.#.#.#.....#...#.#...#.............#.......#
|
||||
#####.###########.#.#.#####.#.###########.###.#.#.###.#.#####.#.#.#.#.#.###.###.#####.#.#.#.###.#.#.#.#####.#.###.#####.###########.#######.#
|
||||
#...#.........#...#.#.#...#.#...#...#...#.#...#.#...#...#.....#.#.#...#.###...#.#.....#...#...#.#.#.#.....#.#.###.#...#...........#...#.....#
|
||||
#.#.#########.#.###.#.#.#.#.###.#.#.#.#.#.#.###.###.#####.#####.#.#####.#####.#.#.###########.#.#.#.#####.#.#.###.#.#.###########.###.#.#####
|
||||
#.#...........#...#.#.#.#.#...#...#.#.#.#.#.....#...#...#...#...#...#...#...#...#...#.....#...#.#...#.....#.#...#.#.#.......#...#...#.#.....#
|
||||
#.###############.#.#.#.#.###.#####.#.#.#.#######.###.#.###.#.#####.#.###.#.#######.#.###.#.###.#####.#####.###.#.#.#######.#.#.###.#.#####.#
|
||||
#...#.....#.....#...#...#...#.....#.#.#.#.#.......#...#.....#...#...#...#.#...#...#.#...#...###.....#.#...#...#.#.#.#...###.#.#.#...#.......#
|
||||
###.#.###.#.###.###########.#####.#.#.#.#.#.#######.###########.#.#####.#.###.#.#.#.###.###########.#.#.#.###.#.#.#.#.#.###.#.#.#.###########
|
||||
###...###...#...#...#...#...#...#.#.#.#.#.#...#...#.........#...#.....#.#.#...#.#...#...#...#...#...#...#.....#...#...#...#.#.#...#...#...###
|
||||
#############.###.#.#.#.#.###.#.#.#.#.#.#.###.#.#.#########.#.#######.#.#.#.###.#####.###.#.#.#.#.#######################.#.#.#####.#.#.#.###
|
||||
#.............#...#...#.#...#.#.#.#.#.#.#.#...#.#.#...###...#.#...#...#...#...#...#...#...#.#.#.#.....#.........#.........#.#.....#.#.#.#...#
|
||||
#.#############.#######.###.#.#.#.#.#.#.#.#.###.#.#.#.###.###.#.#.#.#########.###.#.###.###.#.#.#####.#.#######.#.#########.#####.#.#.#.###.#
|
||||
#.#.............###...#...#.#.#...#...#...#.....#.#.#.#...#...#.#.#...#.......#...#...#.#...#.#.#...#.#.......#.#.......###.......#.#.#.#...#
|
||||
#.#.###############.#.###.#.#.###################.#.#.#.###.###.#.###.#.#######.#####.#.#.###.#.#.#.#.#######.#.#######.###########.#.#.#.###
|
||||
#...#...#...........#.....#...#...#...#...#.......#.#.#...#...#.#.#...#.#.....#.....#.#.#...#.#.#.#...#.......#...#...#.......#.....#...#...#
|
||||
#####.#.#.#####################.#.#.#.#.#.#.#######.#.###.###.#.#.#.###.#.###.#####.#.#.###.#.#.#.#####.#########.#.#.#######.#.###########.#
|
||||
#...#.#.#.........#.......#.....#...#...#.#.#...###.#.#...#...#.#.#...#...#...#.....#.#...#.#.#.#.#...#...###...#...#.........#...#.....#...#
|
||||
#.#.#.#.#########.#.#####.#.#############.#.#.#.###.#.#.###.###.#.###.#####.###.#####.###.#.#.#.#.#.#.###.###.#.#################.#.###.#.###
|
||||
#.#...#.......#...#.#.....#...#...#...#...#...#.#...#.#...#...#.#...#.#...#...#.....#...#.#...#.#...#.#...#...#.......###...#...#.#...#.#...#
|
||||
#.###########.#.###.#.#######.#.#.#.#.#.#######.#.###.###.###.#.###.#.#.#.###.#####.###.#.#####.#####.#.###.#########.###.#.#.#.#.###.#.###.#
|
||||
#.........#...#.....#.........#.#...#.#.#.......#...#.###.#...#.#...#...#.#...#...#.#...#.#.....#...#.#.###.#.......#.#...#...#.#.#...#.....#
|
||||
#########.#.###################.#####.#.#.#########.#.###.#.###.#.#######.#.###.#.#.#.###.#.#####.#.#.#.###.#.#####.#.#.#######.#.#.#########
|
||||
###...###.#.#...#...#.........#.....#...#...#.....#.#.#...#.#...#...#...#.#.....#.#.#.#...#...#...#...#.....#.....#.#.#...#.....#.#.....#...#
|
||||
###.#.###.#.#.#.#.#.#.#######.#####.#######.#.###.#.#.#.###.#.#####.#.#.#.#######.#.#.#.#####.#.#################.#.#.###.#.#####.#####.#.#.#
|
||||
#...#.....#...#.#.#.#.....#...#...#.......#.#.#...#.#.#...#.#.....#.#.#.#.....###.#.#.#.#.....#.....###.........#.#...###.#.......#...#...#.#
|
||||
#.#############.#.#.#####.#.###.#.#######.#.#.#.###.#.###.#.#####.#.#.#.#####.###.#.#.#.#.#########.###.#######.#.#######.#########.#.#####.#
|
||||
#.#...........#...#.......#.#...#.#.......#.#.#...#.#.#...#.#.....#.#.#.#...#.#...#.#.#.#...#.....#...#.......#...#.......#.........#.....#.#
|
||||
#.#.#########.#############.#.###.#.#######.#.###.#.#.#.###.#.#####.#.#.#.#.#.#.###.#.#.###.#.###.###.#######.#####.#######.#############.#.#
|
||||
#...#.....###.............#.#...#...#.....#...###.#.#.#.#...#...#...#.#.#.#.#.#...#.#...#...#.###.#...#.....#...#...#...#...#...#...#...#...#
|
||||
#####.###.###############.#.###.#####.###.#######.#.#.#.#.#####.#.###.#.#.#.#.###.#.#####.###.###.#.###.###.###.#.###.#.#.###.#.#.#.#.#.#####
|
||||
#...#...#.....#...........#.....#...#.#...#.....#...#...#...#...#...#.#.#.#.#S###.#.....#...#...#...###...#...#...#...#.#.....#.#.#...#...###
|
||||
#.#.###.#####.#.#################.#.#.#.###.###.###########.#.#####.#.#.#.#.#####.#####.###.###.#########.###.#####.###.#######.#.#######.###
|
||||
#.#.###.....#...#...#.....#.......#...#...#.#...#...#.......#.#...#...#...#...###.#.....#...#...#...#...#...#.#...#...#.........#.......#...#
|
||||
#.#.#######.#####.#.#.###.#.#############.#.#.###.#.#.#######.#.#.###########.###.#.#####.###.###.#.#.#.###.#.#.#.###.#################.###.#
|
||||
#.#.#...#...#...#.#.#.###.#.###.........#...#.....#.#.#.....#...#.......#.....###.#...#...#...###.#...#.....#...#.....#.....#...#.......#...#
|
||||
#.#.#.#.#.###.#.#.#.#.###.#.###.#######.###########.#.#.###.###########.#.#######.###.#.###.#####.#####################.###.#.#.#.#######.###
|
||||
#.#.#.#.#...#.#...#...#...#.#...#.....#.#...#...#...#.#.#...#.....#...#.#.#...###.#...#...#.....#...#...........###...#...#.#.#.#.#.......###
|
||||
#.#.#.#.###.#.#########.###.#.###.###.#.#.#.#.#.#.###.#.#.###.###.#.#.#.#.#.#.###.#.#####.#####.###.#.#########.###.#.###.#.#.#.#.#.#########
|
||||
#.#...#...#...###...###...#.#.....#...#.#.#...#...###...#...#...#.#.#...#...#.###.#.#.....#...#.#...#.#.........#...#...#.#...#...#...#...###
|
||||
#.#######.#######.#.#####.#.#######.###.#.#################.###.#.#.#########.###.#.#.#####.#.#.#.###.#.#########.#####.#.###########.#.#.###
|
||||
#.......#.....#...#.#.....#.#.......###...#.........#.......#...#...###...#...###...#...#...#...#.....#...........#...#.#.#...........#.#...#
|
||||
#######.#####.#.###.#.#####.#.#############.#######.#.#######.#########.#.#.###########.#.#########################.#.#.#.#.###########.###.#
|
||||
#...###.#.....#...#...#...#.#...#...#.....#.#.......#.....#...###...#...#.#...#######...#.###.................#...#.#...#.#...#...#.....#...#
|
||||
#.#.###.#.#######.#####.#.#.###.#.#.#.###.#.#.###########.#.#####.#.#.###.###.#######.###.###.###############.#.#.#.#####.###.#.#.#.#####.###
|
||||
#.#.....#.....###...#...#...###...#...#...#.#.....###...#.#...#...#.#...#.....#######...#.#...#.......#.....#.#.#...#...#.#...#.#...#...#...#
|
||||
#.###########.#####.#.#################.###.#####.###.#.#.###.#.###.###.###############.#.#.###.#####.#.###.#.#.#####.#.#.#.###.#####.#.###.#
|
||||
#...#.......#.#...#...###...#...#.......###.#.....#...#.#.....#...#.#...#.....#######...#.#...#.#.....#.#...#...#.....#...#.....#.....#.....#
|
||||
###.#.#####.#.#.#.#######.#.#.#.#.#########.#.#####.###.#########.#.#.###.###.#######.###.###.#.#.#####.#.#######.###############.###########
|
||||
#...#.#...#.#.#.#.........#.#.#.#.......#...#.....#...#.#...#...#.#...#...#...#######...#.###...#.......#.........#.......#.....#...........#
|
||||
#.###.#.#.#.#.#.###########.#.#.#######.#.#######.###.#.#.#.#.#.#.#####.###.###########.#.#########################.#####.#.###.###########.#
|
||||
#.#...#.#...#...#.........#...#.........#.#.....#...#.#.#.#.#.#.#.#...#...#...#...###E#...#...###...........#.....#.....#.#...#.#.....#.....#
|
||||
#.#.###.#########.#######.###############.#.###.###.#.#.#.#.#.#.#.#.#.###.###.#.#.###.#####.#.###.#########.#.###.#####.#.###.#.#.###.#.#####
|
||||
#...###.....#...#.#...###.................#.###.....#.#...#.#.#.#...#.#...#...#.#.#...#.....#.#...#...#...#...###.......#.#...#.#...#.#.....#
|
||||
###########.#.#.#.#.#.#####################.#########.#####.#.#.#####.#.###.###.#.#.###.#####.#.###.#.#.#.###############.#.###.###.#.#####.#
|
||||
#...###...#...#...#.#.#...#...#...#...#...#...#.......#...#...#.....#...###...#.#...###.....#.#...#.#...#.......#.......#.#...#...#.#...#...#
|
||||
#.#.###.#.#########.#.#.#.#.#.#.#.#.#.#.#.###.#.#######.#.#########.#########.#.###########.#.###.#.###########.#.#####.#.###.###.#.###.#.###
|
||||
#.#.#...#...#...#...#...#...#...#...#...#...#...#.....#.#.........#.#.....###...#.....#...#.#.###...#...........#.#.....#.....#...#...#...###
|
||||
#.#.#.#####.#.#.#.#########################.#####.###.#.#########.#.#.###.#######.###.#.#.#.#.#######.###########.#.###########.#####.#######
|
||||
#.#.#.....#.#.#.#.......................###.#.....###.#.........#...#...#.......#...#.#.#...#.#...###.............#.....###...#...#...#...###
|
||||
#.#.#####.#.#.#.#######################.###.#.#######.#########.#######.#######.###.#.#.#####.#.#.#####################.###.#.###.#.###.#.###
|
||||
#.#.#...#.#...#.......................#...#...#.....#...........#...#...#.......#...#.#.....#.#.#.#...###.....#.......#.....#...#...#...#...#
|
||||
#.#.#.#.#.###########################.###.#####.###.#############.#.#.###.#######.###.#####.#.#.#.#.#.###.###.#.#####.#########.#####.#####.#
|
||||
#.#...#...#...#.......#.....#...#...#.....#...#.#...###...#...###.#.#...#.....###...#.###...#...#...#.....###.#.....#...#...#...#...#...#...#
|
||||
#.#########.#.#.#####.#.###.#.#.#.#.#######.#.#.#.#####.#.#.#.###.#.###.#####.#####.#.###.###################.#####.###.#.#.#.###.#.###.#.###
|
||||
#...#.....#.#.#.#.....#.#...#.#...#.....###.#.#.#.......#.#.#.#...#...#.#.....#...#.#.....#.....#...#.......#.#...#.###...#...#...#.....#...#
|
||||
###.#.###.#.#.#.#.#####.#.###.#########.###.#.#.#########.#.#.#.#####.#.#.#####.#.#.#######.###.#.#.#.#####.#.#.#.#.###########.###########.#
|
||||
#...#...#.#.#.#.#...#...#...#.#.........#...#...#...#.....#.#.#.....#.#.#.#...#.#.#.......#...#...#.#.#.....#...#.#.#...#...#...#...#.......#
|
||||
#.#####.#.#.#.#.###.#.#####.#.#.#########.#######.#.#.#####.#.#####.#.#.#.#.#.#.#.#######.###.#####.#.#.#########.#.#.#.#.#.#.###.#.#.#######
|
||||
#.......#...#...###...#####...#...........#...#...#...###...#...###.#.#.#.#.#...#...#.....#...#...#...#...#...###.#...#...#...#...#.#.......#
|
||||
###########################################.#.#.#########.#####.###.#.#.#.#.#######.#.#####.###.#.#######.#.#.###.#############.###.#######.#
|
||||
#.........#.....###.....#.......#.......#...#.#.#...#...#.....#.....#.#.#.#.#.......#.......###.#...#...#...#...#...............###.#.......#
|
||||
#.#######.#.###.###.###.#.#####.#.#####.#.###.#.#.#.#.#.#####.#######.#.#.#.#.#################.###.#.#.#######.###################.#.#######
|
||||
#.......#.#...#.....#...#.....#.#.....#.#...#...#.#.#.#.#...#.......#.#.#.#.#.....#.....#.....#...#.#.#.......#...................#...###...#
|
||||
#######.#.###.#######.#######.#.#####.#.###.#####.#.#.#.#.#.#######.#.#.#.#.#####.#.###.#.###.###.#.#.#######.###################.#######.#.#
|
||||
#.......#.###.......#.#...#...#.......#.....#...#.#.#.#.#.#...#.....#...#.#.#.....#...#.#...#.###.#.#.......#.#...............#...###...#.#.#
|
||||
#.#######.#########.#.#.#.#.#################.#.#.#.#.#.#.###.#.#########.#.#.#######.#.###.#.###.#.#######.#.#.#############.#.#####.#.#.#.#
|
||||
#.......#.#...#.....#...#...#.............###.#...#...#.#...#.#.........#.#.#.....#...#.#...#.....#.....#...#...#.......#...#...#...#.#...#.#
|
||||
#######.#.#.#.#.#############.###########.###.#########.###.#.#########.#.#.#####.#.###.#.#############.#.#######.#####.#.#.#####.#.#.#####.#
|
||||
#...#...#...#...#.............#...........#...#.......#.#...#.#...#...#.#.#.#.....#...#...#.....#.....#...###.....#.....#.#...#...#.#.#.....#
|
||||
#.#.#.###########.#############.###########.###.#####.#.#.###.#.#.#.#.#.#.#.#.#######.#####.###.#.###.#######.#####.#####.###.#.###.#.#.#####
|
||||
#.#...#.......#...###...........#...#...###...#.....#.#.#...#.#.#.#.#...#...#...#...#...#...###...#...#.......#.....#.....#...#.#...#.#.#...#
|
||||
#.#####.#####.#.#####.###########.#.#.#.#####.#####.#.#.###.#.#.#.#.###########.#.#.###.#.#########.###.#######.#####.#####.###.#.###.#.#.#.#
|
||||
#...#...#.....#.#...#...........#.#.#.#.....#.#.....#...###.#.#.#.#...#...#...#.#.#...#...#.......#.....#...#...#...#.#.....#...#.....#...#.#
|
||||
###.#.###.#####.#.#.###########.#.#.#.#####.#.#.###########.#.#.#.###.#.#.#.#.#.#.###.#####.#####.#######.#.#.###.#.#.#.#####.#############.#
|
||||
#...#.#...#...#.#.#.#.........#...#...#.....#.#...#...###...#.#.#...#...#.#.#...#.#...#...#.....#.........#...###.#...#.......#...#...#...#.#
|
||||
#.###.#.###.#.#.#.#.#.#######.#########.#####.###.#.#.###.###.#.###.#####.#.#####.#.###.#.#####.#################.#############.#.#.#.#.#.#.#
|
||||
#...#.#...#.#.#.#.#...#.....#...#.......#...#.#...#.#.#...#...#.#...#.....#...#...#...#.#.#...#...#.............#...#...........#.#.#.#.#.#.#
|
||||
###.#.###.#.#.#.#.#####.###.###.#.#######.#.#.#.###.#.#.###.###.#.###.#######.#.#####.#.#.#.#.###.#.###########.###.#.###########.#.#.#.#.#.#
|
||||
###...#...#.#.#.#.#...#...#...#.#.........#.#.#...#.#.#...#...#.#...#.......#.#.....#.#.#.#.#.###...###.........#...#...........#...#.#.#...#
|
||||
#######.###.#.#.#.#.#.###.###.#.###########.#.###.#.#.###.###.#.###.#######.#.#####.#.#.#.#.#.#########.#########.#############.#####.#.#####
|
||||
###...#.....#...#...#.....#...#.............#.#...#.#.###.#...#...#.###...#.#.#...#.#.#.#.#.#.#...#...#...........#.......#...#...###.#.....#
|
||||
###.#.#####################.#################.#.###.#.###.#.#####.#.###.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#############.#####.#.#.###.###.#####.#
|
||||
#...#.......###.......#...#.........#.......#.#.#...#...#.#...#...#...#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.....#.......#...#...#...#...#.......#
|
||||
#.#########.###.#####.#.#.#########.#.#####.#.#.#.#####.#.###.#.#####.#.#.#.#.#.#.#.#.#.#.#.#.#.#####.#.###.#.#######.#.#######.###.#########
|
||||
#.........#.....#...#...#.........#.#...###.#.#...#...#.#...#.#.#.....#.#...#.#.#...#.#.#...#.#.###...#.#...#.........#.......#...#.#.......#
|
||||
#########.#######.#.#############.#.###.###.#.#####.#.#.###.#.#.#.#####.#####.#.#####.#.#####.#.###.###.#.###################.###.#.#.#####.#
|
||||
###.....#.......#.#.............#...#...#...#.......#.#...#.#...#...#...#.....#.#.....#.#.....#...#...#.#...#...#...........#.#...#...#.....#
|
||||
###.###.#######.#.#############.#####.###.###########.###.#.#######.#.###.#####.#.#####.#.#######.###.#.###.#.#.#.#########.#.#.#######.#####
|
||||
#...#...#.....#...###...........#.....#...#.....#.....###.#.....###.#.###...#...#.#...#.#...#.....#...#...#.#.#.#.....#...#...#.......#.....#
|
||||
#.###.###.###.#######.###########.#####.###.###.#.#######.#####.###.#.#####.#.###.#.#.#.###.#.#####.#####.#.#.#.#####.#.#.###########.#####.#
|
||||
#...#...#...#.#.......#.....#...#.#.....#...###.#.......#...#...#...#.....#.#...#.#.#...###.#...###...#...#...#.#...#...#...........#...#...#
|
||||
###.###.###.#.#.#######.###.#.#.#.#.#####.#####.#######.###.#.###.#######.#.###.#.#.#######.###.#####.#.#######.#.#.###############.###.#.###
|
||||
#...#...#...#...#...#...#...#.#.#.#.....#.....#...#.....###...###.#.....#.#...#.#.#.......#...#...#...#.#...###...#...#.....#.......#...#...#
|
||||
#.###.###.#######.#.#.###.###.#.#.#####.#####.###.#.#############.#.###.#.###.#.#.#######.###.###.#.###.#.#.#########.#.###.#.#######.#####.#
|
||||
#...#.....#...#...#.#.###...#.#...#...#.#...#.#...#.......#.......#...#.#.#...#.#.#.....#...#.#...#...#...#.....#.....#...#.#.......#...#...#
|
||||
###.#######.#.#.###.#.#####.#.#####.#.#.#.#.#.#.#########.#.#########.#.#.#.###.#.#.###.###.#.#.#####.#########.#.#######.#.#######.###.#.###
|
||||
###...#...#.#.#.###...#.....#...#...#...#.#...#...#...#...#...#...#...#.#.#...#.#...###...#.#...#...#...#.......#.#.......#.#.......#...#...#
|
||||
#####.#.#.#.#.#.#######.#######.#.#######.#######.#.#.#.#####.#.#.#.###.#.###.#.#########.#.#####.#.###.#.#######.#.#######.#.#######.#####.#
|
||||
#.....#.#.#.#.#.#.....#.....#...#...#...#.....###...#.#.....#.#.#.#.###...#...#.....#.....#...#...#.....#.......#.#.....#...#.....###.......#
|
||||
#.#####.#.#.#.#.#.###.#####.#.#####.#.#.#####.#######.#####.#.#.#.#.#######.#######.#.#######.#.###############.#.#####.#.#######.###########
|
||||
#...#...#.#.#...#...#.#.....#.#####...#.#...#.....###.#.....#...#.#...#.....#.......#.......#.#.#...#...#.......#...#...#.........#.........#
|
||||
###.#.###.#.#######.#.#.#####.#########.#.#.#####.###.#.#########.###.#.#####.#############.#.#.#.#.#.#.#.#########.#.#############.#######.#
|
||||
###.#...#.#.#.......#...#...#...#.......#.#.#.....#...#...#.......#...#.....#.....#.........#.#.#.#.#.#.#.......#...#.........###...#...#...#
|
||||
###.###.#.#.#.###########.#.###.#.#######.#.#.#####.#####.#.#######.#######.#####.#.#########.#.#.#.#.#.#######.#.###########.###.###.#.#.###
|
||||
#...#...#...#.....#...#...#...#.#...#...#.#.#.....#.#...#.#.........#...###.#...#.#.#.......#.#...#.#.#.#.......#.....#.....#.....#...#.#...#
|
||||
#.###.###########.#.#.#.#####.#.###.#.#.#.#.#####.#.#.#.#.###########.#.###.#.#.#.#.#.#####.#.#####.#.#.#.###########.#.###.#######.###.###.#
|
||||
#...#.....#####...#.#.#.....#.#.#...#.#.#.#...#...#...#.#.....#.......#.....#.#.#.#...#.....#...#...#.#.#...........#.#...#.#...#...#...#...#
|
||||
###.#####.#####.###.#.#####.#.#.#.###.#.#.###.#.#######.#####.#.#############.#.#.#####.#######.#.###.#.###########.#.###.#.#.#.#.###.###.###
|
||||
#...#...#...#...#...#.....#.#...#...#.#.#.###.#.......#...#...#.....#...#...#.#.#.....#.#...#...#...#.#.#.....#...#.#.#...#...#...###.#...###
|
||||
#.###.#.###.#.###.#######.#.#######.#.#.#.###.#######.###.#.#######.#.#.#.#.#.#.#####.#.#.#.#.#####.#.#.#.###.#.#.#.#.#.#############.#.#####
|
||||
#.....#.....#...#.......#.#.#.......#.#...#...#...#...###.#...#.....#.#...#.#.#.#.....#...#.#.#...#...#.#...#.#.#.#.#.#.............#...#...#
|
||||
###############.#######.#.#.#.#######.#####.###.#.#.#####.###.#.#####.#####.#.#.#.#########.#.#.#.#####.###.#.#.#.#.#.#############.#####.#.#
|
||||
###...#.........#...#...#...#.....#...###...#...#...###...#...#.#...#...#...#.#.#...#.......#...#.###...#...#.#.#.#.#.#...#...#...#.....#.#.#
|
||||
###.#.#.#########.#.#.###########.#.#####.###.#########.###.###.#.#.###.#.###.#.###.#.###########.###.###.###.#.#.#.#.#.#.#.#.#.#.#####.#.#.#
|
||||
#...#...#.....#...#.#...#.........#.....#...#.........#...#...#.#.#...#.#...#.#...#.#.#.....#...#.#...#...#...#.#.#.#.#.#.#.#.#.#.#...#...#.#
|
||||
#.#######.###.#.###.###.#.#############.###.#########.###.###.#.#.###.#.###.#.###.#.#.#.###.#.#.#.#.###.###.###.#.#.#.#.#.#.#.#.#.#.#.#####.#
|
||||
#.........###...###.....#...............###...........###.....#...###...###...###...#...###...#...#.....###.....#...#...#...#...#...#.......#
|
||||
#############################################################################################################################################
|
@ -1,5 +0,0 @@
|
||||
129A
|
||||
540A
|
||||
789A
|
||||
596A
|
||||
582A
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -1,4 +0,0 @@
|
||||
inc a
|
||||
jio a, +2
|
||||
tpl a
|
||||
inc a
|
@ -1,10 +0,0 @@
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
11
|
@ -1 +0,0 @@
|
||||
To continue, please consult the code grid in the manual. Enter the code at row 6, column 5.
|
@ -1,10 +0,0 @@
|
||||
[({(<(())[]>[[{[]{<()<>>
|
||||
[(()[<>])]({[<{<<[]>>(
|
||||
{([(<{}[<>[]}>{[]{[(<()>
|
||||
(((({<>}<{<{<>}{[]{[]{}
|
||||
[[<[([]))<([[{}[[()]]]
|
||||
[{[{({}]{}}([{[{{{}}([]
|
||||
{<[[]]>}<{[{[{[]{()[[[]
|
||||
[<(<(<(<{}))><([]([]()
|
||||
<{([([[(<>()){}]>(<<{{
|
||||
<{([{{}}[<[[[<>{}]]]>[]]
|
@ -1,10 +0,0 @@
|
||||
5483143223
|
||||
2745854711
|
||||
5264556173
|
||||
6141336146
|
||||
6357385478
|
||||
4167524645
|
||||
2176841721
|
||||
6882881134
|
||||
4846848554
|
||||
5283751526
|
@ -1,18 +0,0 @@
|
||||
fs-end
|
||||
he-DX
|
||||
fs-he
|
||||
start-DX
|
||||
pj-DX
|
||||
end-zg
|
||||
zg-sl
|
||||
zg-pj
|
||||
pj-he
|
||||
RW-he
|
||||
fs-DX
|
||||
pj-RW
|
||||
zg-RW
|
||||
start-pj
|
||||
he-WI
|
||||
zg-he
|
||||
pj-fs
|
||||
start-RW
|
@ -1,8 +0,0 @@
|
||||
89010123
|
||||
78121874
|
||||
87430965
|
||||
96549874
|
||||
45678903
|
||||
32019012
|
||||
01329801
|
||||
10456732
|
@ -1 +0,0 @@
|
||||
125 17
|
@ -1,10 +0,0 @@
|
||||
RRRRIICCFF
|
||||
RRRRIICCCF
|
||||
VVRRRCCFFF
|
||||
VVRCCCJFFF
|
||||
VVVVCJJCFE
|
||||
VVIVCCJJEE
|
||||
VVIIICJJEE
|
||||
MIIIIIJJEE
|
||||
MIIISIJEEE
|
||||
MMMISSJEEE
|
@ -1,15 +0,0 @@
|
||||
Button A: X+94, Y+34
|
||||
Button B: X+22, Y+67
|
||||
Prize: X=8400, Y=5400
|
||||
|
||||
Button A: X+26, Y+66
|
||||
Button B: X+67, Y+21
|
||||
Prize: X=12748, Y=12176
|
||||
|
||||
Button A: X+17, Y+86
|
||||
Button B: X+84, Y+37
|
||||
Prize: X=7870, Y=6450
|
||||
|
||||
Button A: X+69, Y+23
|
||||
Button B: X+27, Y+71
|
||||
Prize: X=18641, Y=10279
|
@ -1,12 +0,0 @@
|
||||
p=0,4 v=3,-3
|
||||
p=6,3 v=-1,-3
|
||||
p=10,3 v=-1,2
|
||||
p=2,0 v=2,-1
|
||||
p=0,0 v=1,3
|
||||
p=3,0 v=-2,-2
|
||||
p=7,6 v=-1,-3
|
||||
p=3,0 v=-1,-2
|
||||
p=9,3 v=2,3
|
||||
p=7,3 v=-1,2
|
||||
p=2,4 v=2,-3
|
||||
p=9,5 v=-3,-3
|
@ -1,21 +0,0 @@
|
||||
##########
|
||||
#..O..O.O#
|
||||
#......O.#
|
||||
#.OO..O.O#
|
||||
#..O@..O.#
|
||||
#O#..O...#
|
||||
#O..O..O.#
|
||||
#.OO.O.OO#
|
||||
#....O...#
|
||||
##########
|
||||
|
||||
<vv>^<v^>v>^vv^v>v<>v^v<v<^vv<<<^><<><>>v<vvv<>^v^>^<<<><<v<<<v^vv^v>^
|
||||
vvv<<^>^v^^><<>>><>^<<><^vv^^<>vvv<>><^^v>^>vv<>v<<<<v<^v>^<^^>>>^<v<v
|
||||
><>vv>v^v^<>><>>>><^^>vv>v<^^^>>v^v^<^^>v^^>v^<^v>v<>>v^v^<v>v^^<^^vv<
|
||||
<<v<^>>^^^^>>>v^<>vvv^><v<<<>^^^vv^<vvv>^>v<^^^^v<>^>vvvv><>>v^<<^^^^^
|
||||
^><^><>>><>^^<<^^v>>><^<v>^<vv>>v>>>^v><>^v><<<<v>>v<v<v>vvv>^<><<>^><
|
||||
^>><>^v<><^vvv<^^<><v<<<<<><^v<<<><<<^^<v<^^^><^>>^<v^><<<^>>^v<v^v<v^
|
||||
>^>>^v>vv>^<<^v<>><<><<v<<v><>v<^vv<<<>^^v^>^^>>><<^v>>v^v><^^>>^<>vv^
|
||||
<><^^>^^^<><vvvvv^v<v<<>^v<v>v<<^><<><<><<<^^<<<^<<>><<><^^^>^^<>^>v<>
|
||||
^^>vv<^v^v<vv>^<><v<^v>^^^>>>^^vvv^>vvv<>>>^<^>>>>>^<<^v>^vvv<>^<><<v>
|
||||
v^^>>><<^^<>>^v^<v^vv<>v^<<>^<^v^v><^<<<><<^<v><v<>vv>>v><v^<vv<>v^<<^
|
@ -1,15 +0,0 @@
|
||||
###############
|
||||
#.......#....E#
|
||||
#.#.###.#.###.#
|
||||
#.....#.#...#.#
|
||||
#.###.#####.#.#
|
||||
#.#.#.......#.#
|
||||
#.#.#####.###.#
|
||||
#...........#.#
|
||||
###.#.#####.#.#
|
||||
#...#.....#.#.#
|
||||
#.#.#.###.#.#.#
|
||||
#.....#...#.#.#
|
||||
#.###.#.#.#.#.#
|
||||
#S..#.....#...#
|
||||
###############
|
@ -1,17 +0,0 @@
|
||||
#################
|
||||
#...#...#...#..E#
|
||||
#.#.#.#.#.#.#.#.#
|
||||
#.#.#.#...#...#.#
|
||||
#.#.#.#.###.#.#.#
|
||||
#...#.#.#.....#.#
|
||||
#.#.#.#.#.#####.#
|
||||
#.#...#.#.#.....#
|
||||
#.#.#####.#.###.#
|
||||
#.#.#.......#...#
|
||||
#.#.###.#####.###
|
||||
#.#.#...#.....#.#
|
||||
#.#.#.#####.###.#
|
||||
#.#.#.........#.#
|
||||
#.#.#.#########.#
|
||||
#S#.............#
|
||||
#################
|
@ -1,5 +0,0 @@
|
||||
Register A: 729
|
||||
Register B: 0
|
||||
Register C: 0
|
||||
|
||||
Program: 0,1,5,4,3,0
|
@ -1,5 +0,0 @@
|
||||
Register A: 2024
|
||||
Register B: 0
|
||||
Register C: 0
|
||||
|
||||
Program: 0,3,5,4,3,0
|
@ -1,25 +0,0 @@
|
||||
5,4
|
||||
4,2
|
||||
4,5
|
||||
3,0
|
||||
2,1
|
||||
6,3
|
||||
2,4
|
||||
1,5
|
||||
0,6
|
||||
3,3
|
||||
2,6
|
||||
5,1
|
||||
1,2
|
||||
5,5
|
||||
2,5
|
||||
6,5
|
||||
1,4
|
||||
0,4
|
||||
6,4
|
||||
1,1
|
||||
6,1
|
||||
1,0
|
||||
0,5
|
||||
1,6
|
||||
2,0
|
@ -1,10 +0,0 @@
|
||||
r, wr, b, g, bwu, rb, gb, br
|
||||
|
||||
brwrr
|
||||
bggr
|
||||
gbbr
|
||||
rrbgbr
|
||||
ubwu
|
||||
bwurrg
|
||||
brgr
|
||||
bbrgwb
|
@ -1,15 +0,0 @@
|
||||
###############
|
||||
#...#...#.....#
|
||||
#.#.#.#.#.###.#
|
||||
#S#...#.#.#...#
|
||||
#######.#.#.###
|
||||
#######.#.#...#
|
||||
#######.#.###.#
|
||||
###..E#...#...#
|
||||
###.#######.###
|
||||
#...###...#...#
|
||||
#.#####.#.###.#
|
||||
#.#...#.#.#...#
|
||||
#.#.#.#.#.#.###
|
||||
#...#...#...###
|
||||
###############
|
@ -1,5 +0,0 @@
|
||||
029A
|
||||
980A
|
||||
179A
|
||||
456A
|
||||
379A
|
@ -1,4 +0,0 @@
|
||||
1
|
||||
10
|
||||
100
|
||||
2024
|
@ -1,4 +0,0 @@
|
||||
1
|
||||
2
|
||||
3
|
||||
2024
|
@ -1 +0,0 @@
|
||||
2333133121414131402
|
@ -1,5 +0,0 @@
|
||||
Register A: 27575648
|
||||
Register B: 0
|
||||
Register C: 0
|
||||
|
||||
Program: 2,4,1,2,7,5,4,1,1,3,5,5,0,3,3,0
|
@ -1,118 +0,0 @@
|
||||
import heapq
|
||||
from typing import Callable, Iterable, TypeVar, overload
|
||||
|
||||
_Node = TypeVar("_Node")
|
||||
|
||||
|
||||
def make_neighbors_grid_fn(
|
||||
rows: int | Iterable[int],
|
||||
cols: int | Iterable[int],
|
||||
excluded: Iterable[tuple[int, int]] = set(),
|
||||
diagonals: bool = False,
|
||||
):
|
||||
"""
|
||||
Create a neighbors function suitable for graph function for a simple grid.
|
||||
|
||||
Args:
|
||||
rows: Rows of the grid. If an int is specified, the rows are assumed to be
|
||||
numbered from 0 to rows - 1, otherwise the iterable should contain the list
|
||||
of valid rows.
|
||||
cols: Columns of the grid. If an int is specified, the columns are assumed to be
|
||||
numbered from 0 to cols - 1, otherwise the iterable should contain the list
|
||||
of valid columns.
|
||||
excluded: Cells of the grid that cannot be used as valid nodes for the graph.
|
||||
diagonals: If True, neighbors will include diagonal cells, otherwise, only
|
||||
horizontal and vertical neighbors will be included.
|
||||
|
||||
"""
|
||||
ds = ((-1, 0), (0, 1), (1, 0), (0, -1))
|
||||
if diagonals:
|
||||
ds = ds + ((-1, -1), (-1, 1), (1, -1), (1, 1))
|
||||
|
||||
if isinstance(rows, int):
|
||||
rows = range(rows)
|
||||
elif not isinstance(rows, range):
|
||||
rows = set(rows)
|
||||
|
||||
if isinstance(cols, int):
|
||||
cols = range(cols)
|
||||
elif not isinstance(cols, range):
|
||||
cols = set(cols)
|
||||
|
||||
excluded = set(excluded)
|
||||
|
||||
def _fn(node: tuple[int, int]):
|
||||
return (
|
||||
((row_n, col_n), 1)
|
||||
for dr, dc in ds
|
||||
if (row_n := node[0] + dr) in rows
|
||||
and (col_n := node[1] + dc) in cols
|
||||
and (row_n, col_n) not in excluded
|
||||
)
|
||||
|
||||
return _fn
|
||||
|
||||
|
||||
@overload
|
||||
def dijkstra(
|
||||
start: _Node,
|
||||
target: None,
|
||||
neighbors: Callable[[_Node], Iterable[tuple[_Node, float]]],
|
||||
) -> dict[_Node, tuple[tuple[_Node, ...], float]]: ...
|
||||
|
||||
|
||||
@overload
|
||||
def dijkstra(
|
||||
start: _Node,
|
||||
target: _Node,
|
||||
neighbors: Callable[[_Node], Iterable[tuple[_Node, float]]],
|
||||
) -> tuple[tuple[_Node, ...], float] | None: ...
|
||||
|
||||
|
||||
def dijkstra(
|
||||
start: _Node,
|
||||
target: _Node | None,
|
||||
neighbors: Callable[[_Node], Iterable[tuple[_Node, float]]],
|
||||
) -> (
|
||||
dict[_Node, tuple[tuple[_Node, ...], float]]
|
||||
| tuple[tuple[_Node, ...], float]
|
||||
| None
|
||||
):
|
||||
"""
|
||||
Solve shortest-path problem using simple Dijkstra algorithm from start to target,
|
||||
using the given neighbors function.
|
||||
|
||||
Args:
|
||||
start: Starting node of the path.
|
||||
target: Target node for the path.
|
||||
neighbors: Function that should return, for a given node, the list of
|
||||
its neighbors with the cost to go from the node to the neighbor.
|
||||
|
||||
Returns:
|
||||
One of the shortest-path from start to target with its associated cost, if one
|
||||
is found, otherwise None.
|
||||
"""
|
||||
queue: list[tuple[float, _Node, tuple[_Node, ...]]] = [(0, start, (start,))]
|
||||
preds: dict[_Node, tuple[tuple[_Node, ...], float]] = {}
|
||||
|
||||
while queue:
|
||||
dis, node, path = heapq.heappop(queue)
|
||||
|
||||
if node in preds:
|
||||
continue
|
||||
|
||||
preds[node] = (path, dis)
|
||||
|
||||
if node == target:
|
||||
break
|
||||
|
||||
for neighbor, cost in neighbors(node):
|
||||
if neighbor in preds:
|
||||
continue
|
||||
|
||||
heapq.heappush(queue, (dis + cost, neighbor, path + (neighbor,)))
|
||||
|
||||
if target is None:
|
||||
return preds
|
||||
|
||||
return preds.get(target, None)
|
@ -1,21 +0,0 @@
|
||||
def pow_mod(b: int, e: int, m: int):
|
||||
"""
|
||||
Compute (b ** e) % m using right-to-left binary method.
|
||||
|
||||
See https://en.wikipedia.org/wiki/Modular_exponentiation.
|
||||
|
||||
Args:
|
||||
b: Base to exponentiate.
|
||||
e: Exponent.
|
||||
m: Modulus.
|
||||
|
||||
Returns:
|
||||
(b ** e) % m.
|
||||
"""
|
||||
r = 1
|
||||
while e > 0:
|
||||
if e % 2 == 1:
|
||||
r = (r * b) % m
|
||||
e >>= 1
|
||||
b = (b * b) % m
|
||||
return r
|
@ -1,13 +0,0 @@
|
||||
from .answer import dump_answer
|
||||
from .base import dump_api_message
|
||||
from .files import FileHandlerAPI
|
||||
from .logger import LoggerAPIHandler
|
||||
from .progress import ProgressAPI
|
||||
|
||||
__all__ = [
|
||||
"dump_answer",
|
||||
"dump_api_message",
|
||||
"FileHandlerAPI",
|
||||
"LoggerAPIHandler",
|
||||
"ProgressAPI",
|
||||
]
|
@ -1,16 +0,0 @@
|
||||
from datetime import timedelta
|
||||
from typing import Any
|
||||
|
||||
from .base import dump_api_message
|
||||
|
||||
|
||||
def dump_answer(part: int, answer: Any, answer_time: timedelta, total_time: timedelta):
|
||||
dump_api_message(
|
||||
"answer",
|
||||
{
|
||||
"answer": part,
|
||||
"value": str(answer),
|
||||
"answerTime_s": answer_time.total_seconds(),
|
||||
"totalTime_s": total_time.total_seconds(),
|
||||
},
|
||||
)
|
@ -1,28 +0,0 @@
|
||||
import json
|
||||
import sys
|
||||
from datetime import datetime
|
||||
from typing import Any, Literal, TextIO
|
||||
|
||||
|
||||
def _datetime_formatter(value: Any) -> Any:
|
||||
if isinstance(value, datetime):
|
||||
return value.isoformat()
|
||||
else:
|
||||
return value
|
||||
|
||||
|
||||
def dump_api_message(
|
||||
type: Literal[
|
||||
"log", "answer", "file", "progress-start", "progress-step", "progress-end"
|
||||
],
|
||||
content: Any,
|
||||
file: TextIO = sys.stdout,
|
||||
):
|
||||
print(
|
||||
json.dumps(
|
||||
{"type": type, "time": datetime.now(), "content": content},
|
||||
default=_datetime_formatter,
|
||||
),
|
||||
flush=True,
|
||||
file=file,
|
||||
)
|
@ -1,23 +0,0 @@
|
||||
import os
|
||||
from pathlib import Path
|
||||
from typing import Final
|
||||
|
||||
from ...base import FileHandler
|
||||
from .base import dump_api_message
|
||||
|
||||
|
||||
class FileHandlerAPI(FileHandler):
|
||||
def __init__(self, folder: Path):
|
||||
self.folder: Final = folder
|
||||
|
||||
def make_path(self, filename: str) -> Path:
|
||||
return self.folder.joinpath(filename)
|
||||
|
||||
def notify_created(self, path: Path):
|
||||
dump_api_message("file", {"filename": path.name, "size": os.stat(path).st_size})
|
||||
|
||||
def _create(self, path: Path, content: bytes, text: bool = False):
|
||||
self.folder.mkdir(exist_ok=True)
|
||||
with open(path, "wb") as fp:
|
||||
fp.write(content)
|
||||
return path
|
@ -1,16 +0,0 @@
|
||||
import logging.handlers
|
||||
import sys
|
||||
from typing import TextIO
|
||||
|
||||
from .base import dump_api_message
|
||||
|
||||
|
||||
class LoggerAPIHandler(logging.Handler):
|
||||
def __init__(self, output: TextIO = sys.stdout):
|
||||
super().__init__()
|
||||
self.output = output
|
||||
|
||||
def emit(self, record: logging.LogRecord):
|
||||
dump_api_message(
|
||||
"log", {"level": record.levelname, "message": record.getMessage()}
|
||||
)
|
@ -1,57 +0,0 @@
|
||||
import sys
|
||||
from datetime import datetime, timedelta
|
||||
from typing import Iterable, Iterator, Sequence, TextIO, TypeVar
|
||||
|
||||
from .base import dump_api_message
|
||||
|
||||
_T = TypeVar("_T")
|
||||
|
||||
|
||||
class ProgressAPI:
|
||||
def __init__(
|
||||
self,
|
||||
min_step: int = 1,
|
||||
min_time: timedelta = timedelta(milliseconds=100),
|
||||
output: TextIO = sys.stdout,
|
||||
):
|
||||
super().__init__()
|
||||
|
||||
self.counter = 0
|
||||
self.output = output
|
||||
self.min_step = min_step
|
||||
self.min_time = min_time
|
||||
|
||||
def wrap(
|
||||
self, values: Sequence[_T] | Iterable[_T], total: int | None = None
|
||||
) -> Iterator[_T]:
|
||||
total = total or len(values) # type: ignore
|
||||
|
||||
current = self.counter
|
||||
self.counter += 1
|
||||
|
||||
dump_api_message("progress-start", {"counter": current, "total": total})
|
||||
|
||||
try:
|
||||
percent = 0
|
||||
time = datetime.now()
|
||||
|
||||
for i_value, value in enumerate(values):
|
||||
yield value
|
||||
|
||||
if datetime.now() - time < self.min_time:
|
||||
continue
|
||||
|
||||
time = datetime.now()
|
||||
|
||||
c_percent = round(i_value / total * 100)
|
||||
|
||||
if c_percent >= percent + self.min_step:
|
||||
dump_api_message(
|
||||
"progress-step", {"counter": current, "percent": c_percent}
|
||||
)
|
||||
percent = c_percent
|
||||
finally:
|
||||
dump_api_message(
|
||||
"progress-end",
|
||||
{"counter": current},
|
||||
)
|
@ -1,26 +0,0 @@
|
||||
import logging
|
||||
from pathlib import Path
|
||||
from typing import Final
|
||||
|
||||
from ..base import FileHandler
|
||||
|
||||
|
||||
class SimpleFileHandler(FileHandler):
|
||||
def __init__(self, logger: logging.Logger, folder: Path):
|
||||
self.logger: Final = logger
|
||||
self.folder: Final = folder
|
||||
|
||||
def make_path(self, filename: str) -> Path:
|
||||
return self.folder.joinpath(filename)
|
||||
|
||||
def notify_created(self, path: Path): ...
|
||||
|
||||
def _create(self, path: Path, content: bytes, text: bool = False):
|
||||
if text:
|
||||
for line in content.decode("utf-8").splitlines():
|
||||
self.logger.info(line)
|
||||
else:
|
||||
self.folder.mkdir(exist_ok=True)
|
||||
with open(path, "wb") as fp:
|
||||
fp.write(content)
|
||||
return path
|
@ -1,19 +0,0 @@
|
||||
from typing import Iterable, Iterator, Sequence, TypeVar
|
||||
|
||||
_T = TypeVar("_T")
|
||||
|
||||
|
||||
class ProgressTQDM:
|
||||
def wrap(
|
||||
self, values: Sequence[_T] | Iterable[_T], total: int | None = None
|
||||
) -> Iterator[_T]:
|
||||
from tqdm import tqdm
|
||||
|
||||
return iter(tqdm(values, total=total))
|
||||
|
||||
|
||||
class ProgressNone:
|
||||
def wrap(
|
||||
self, values: Sequence[_T] | Iterable[_T], total: int | None = None
|
||||
) -> Iterator[_T]:
|
||||
return iter(values)
|
Loading…
Reference in New Issue
Block a user