From c07ccd22a7bed4495c879c220229d1cb051fd54b Mon Sep 17 00:00:00 2001 From: d33bs Date: Wed, 8 May 2024 15:45:12 -0600 Subject: [PATCH 01/11] add automated book deployment --- .github/workflows/deploy-book.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/workflows/deploy-book.yml diff --git a/.github/workflows/deploy-book.yml b/.github/workflows/deploy-book.yml new file mode 100644 index 00000000..aab1209c --- /dev/null +++ b/.github/workflows/deploy-book.yml @@ -0,0 +1,27 @@ +--- +name: deploy book + +on: + push: + branches: + - main + - automated-deployments + +jobs: + deploy-book: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Install python env + uses: ./.github/actions/install-python-env + - name: Build the jupyter book content + run: | + poetry run poe build-book + - name: Deploy book to GH Pages + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: gh-pages + folder: src/almanac/_build/html From 277bdc41ff25980386b5301cb23c1abf80129191 Mon Sep 17 00:00:00 2001 From: d33bs Date: Wed, 8 May 2024 16:01:51 -0600 Subject: [PATCH 02/11] adjust for blank content --- src/almanac/_toc.yml | 2 -- src/almanac/preface.md | 3 --- 2 files changed, 5 deletions(-) delete mode 100644 src/almanac/preface.md diff --git a/src/almanac/_toc.yml b/src/almanac/_toc.yml index 71e71034..3b8c94c1 100644 --- a/src/almanac/_toc.yml +++ b/src/almanac/_toc.yml @@ -3,8 +3,6 @@ format: jb-book root: introduction.md parts: - chapters: - - title: Preface - file: preface.md - title: Garden Circle file: garden-circle/garden-circle.md sections: diff --git a/src/almanac/preface.md b/src/almanac/preface.md deleted file mode 100644 index f33ba206..00000000 --- a/src/almanac/preface.md +++ /dev/null @@ -1,3 +0,0 @@ -# Preface - -This is a placeholder for preface content. From 66407da940cd88d54433951a05c01ffd3786a567 Mon Sep 17 00:00:00 2001 From: d33bs Date: Wed, 8 May 2024 16:02:02 -0600 Subject: [PATCH 03/11] add pyppeteer --- poetry.lock | 163 ++++++++++++++++++++++++++++++++++++++++++++++--- pyproject.toml | 1 + 2 files changed, 155 insertions(+), 9 deletions(-) diff --git a/poetry.lock b/poetry.lock index 562334a1..cb1c7f3b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -25,6 +25,17 @@ files = [ {file = "alabaster-0.7.16.tar.gz", hash = "sha256:75a8b99c28a5dad50dd7f8ccdd447a121ddb3892da9e53d1ca5cca3106d58d65"}, ] +[[package]] +name = "appdirs" +version = "1.4.4" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +optional = false +python-versions = "*" +files = [ + {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, + {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, +] + [[package]] name = "appnope" version = "0.1.4" @@ -1342,6 +1353,23 @@ dev = ["nox", "pre-commit", "pydata-sphinx-theme[doc,test]", "pyyaml"] doc = ["ablog (>=0.11.0rc2)", "colorama", "ipykernel", "ipyleaflet", "jupyter_sphinx", "jupyterlite-sphinx", "linkify-it-py", "matplotlib", "myst-parser", "nbsphinx", "numpy", "numpydoc", "pandas", "plotly", "rich", "sphinx-autoapi (>=3.0.0)", "sphinx-copybutton", "sphinx-design", "sphinx-favicon (>=1.0.1)", "sphinx-sitemap", "sphinx-togglebutton", "sphinxcontrib-youtube (<1.4)", "sphinxext-rediraffe", "xarray"] test = ["pytest", "pytest-cov", "pytest-regressions"] +[[package]] +name = "pyee" +version = "11.1.0" +description = "A rough port of Node.js's EventEmitter to Python with a few tricks of its own" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyee-11.1.0-py3-none-any.whl", hash = "sha256:5d346a7d0f861a4b2e6c47960295bd895f816725b27d656181947346be98d7c1"}, + {file = "pyee-11.1.0.tar.gz", hash = "sha256:b53af98f6990c810edd9b56b87791021a8f54fd13db4edd1142438d44ba2263f"}, +] + +[package.dependencies] +typing-extensions = "*" + +[package.extras] +dev = ["black", "build", "flake8", "flake8-black", "isort", "jupyter-console", "mkdocs", "mkdocs-include-markdown-plugin", "mkdocstrings[python]", "pytest", "pytest-asyncio", "pytest-trio", "sphinx", "toml", "tox", "trio", "trio", "trio-typing", "twine", "twisted", "validate-pyproject[all]"] + [[package]] name = "pygments" version = "2.17.2" @@ -1373,6 +1401,26 @@ docopt = ">=0.6.2" python-dateutil = ">=2.8.0" "ruamel.yaml" = ">=0.16.0" +[[package]] +name = "pyppeteer" +version = "2.0.0" +description = "Headless chrome/chromium automation library (unofficial port of puppeteer)" +optional = false +python-versions = ">=3.8,<4.0" +files = [ + {file = "pyppeteer-2.0.0-py3-none-any.whl", hash = "sha256:96f4c574fb36f1d15e02746303ab742b98941f0da58337187e7c1d2ef982adea"}, + {file = "pyppeteer-2.0.0.tar.gz", hash = "sha256:4af63473ff36a746a53347b2336a49efda669bcd781e400bc1799b81838358d9"}, +] + +[package.dependencies] +appdirs = ">=1.4.3,<2.0.0" +certifi = ">=2023" +importlib-metadata = ">=1.4" +pyee = ">=11.0.0,<12.0.0" +tqdm = ">=4.42.1,<5.0.0" +urllib3 = ">=1.25.8,<2.0.0" +websockets = ">=10.0,<11.0" + [[package]] name = "pyrsistent" version = "0.20.0" @@ -2259,6 +2307,26 @@ files = [ {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"}, ] +[[package]] +name = "tqdm" +version = "4.66.4" +description = "Fast, Extensible Progress Meter" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tqdm-4.66.4-py3-none-any.whl", hash = "sha256:b75ca56b413b030bc3f00af51fd2c1a1a5eac6a0c1cca83cbb37a5c52abce644"}, + {file = "tqdm-4.66.4.tar.gz", hash = "sha256:e4d936c9de8727928f3be6079590e97d9abfe8d39a590be678eb5919ffc186bb"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"] +notebook = ["ipywidgets (>=6)"] +slack = ["slack-sdk"] +telegram = ["requests"] + [[package]] name = "traitlets" version = "5.14.1" @@ -2301,20 +2369,19 @@ test = ["coverage", "pytest", "pytest-cov"] [[package]] name = "urllib3" -version = "2.2.1" +version = "1.26.18" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=3.8" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, - {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, + {file = "urllib3-1.26.18-py2.py3-none-any.whl", hash = "sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07"}, + {file = "urllib3-1.26.18.tar.gz", hash = "sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] +brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "vale" @@ -2338,6 +2405,84 @@ files = [ {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, ] +[[package]] +name = "websockets" +version = "10.4" +description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "websockets-10.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d58804e996d7d2307173d56c297cf7bc132c52df27a3efaac5e8d43e36c21c48"}, + {file = "websockets-10.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc0b82d728fe21a0d03e65f81980abbbcb13b5387f733a1a870672c5be26edab"}, + {file = "websockets-10.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ba089c499e1f4155d2a3c2a05d2878a3428cf321c848f2b5a45ce55f0d7d310c"}, + {file = "websockets-10.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33d69ca7612f0ddff3316b0c7b33ca180d464ecac2d115805c044bf0a3b0d032"}, + {file = "websockets-10.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62e627f6b6d4aed919a2052efc408da7a545c606268d5ab5bfab4432734b82b4"}, + {file = "websockets-10.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ea7b82bfcae927eeffc55d2ffa31665dc7fec7b8dc654506b8e5a518eb4d50"}, + {file = "websockets-10.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e0cb5cc6ece6ffa75baccfd5c02cffe776f3f5c8bf486811f9d3ea3453676ce8"}, + {file = "websockets-10.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ae5e95cfb53ab1da62185e23b3130e11d64431179debac6dc3c6acf08760e9b1"}, + {file = "websockets-10.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7c584f366f46ba667cfa66020344886cf47088e79c9b9d39c84ce9ea98aaa331"}, + {file = "websockets-10.4-cp310-cp310-win32.whl", hash = "sha256:b029fb2032ae4724d8ae8d4f6b363f2cc39e4c7b12454df8df7f0f563ed3e61a"}, + {file = "websockets-10.4-cp310-cp310-win_amd64.whl", hash = "sha256:8dc96f64ae43dde92530775e9cb169979f414dcf5cff670455d81a6823b42089"}, + {file = "websockets-10.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:47a2964021f2110116cc1125b3e6d87ab5ad16dea161949e7244ec583b905bb4"}, + {file = "websockets-10.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e789376b52c295c4946403bd0efecf27ab98f05319df4583d3c48e43c7342c2f"}, + {file = "websockets-10.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7d3f0b61c45c3fa9a349cf484962c559a8a1d80dae6977276df8fd1fa5e3cb8c"}, + {file = "websockets-10.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f55b5905705725af31ccef50e55391621532cd64fbf0bc6f4bac935f0fccec46"}, + {file = "websockets-10.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00c870522cdb69cd625b93f002961ffb0c095394f06ba8c48f17eef7c1541f96"}, + {file = "websockets-10.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f38706e0b15d3c20ef6259fd4bc1700cd133b06c3c1bb108ffe3f8947be15fa"}, + {file = "websockets-10.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f2c38d588887a609191d30e902df2a32711f708abfd85d318ca9b367258cfd0c"}, + {file = "websockets-10.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:fe10ddc59b304cb19a1bdf5bd0a7719cbbc9fbdd57ac80ed436b709fcf889106"}, + {file = "websockets-10.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:90fcf8929836d4a0e964d799a58823547df5a5e9afa83081761630553be731f9"}, + {file = "websockets-10.4-cp311-cp311-win32.whl", hash = "sha256:b9968694c5f467bf67ef97ae7ad4d56d14be2751000c1207d31bf3bb8860bae8"}, + {file = "websockets-10.4-cp311-cp311-win_amd64.whl", hash = "sha256:a7a240d7a74bf8d5cb3bfe6be7f21697a28ec4b1a437607bae08ac7acf5b4882"}, + {file = "websockets-10.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:74de2b894b47f1d21cbd0b37a5e2b2392ad95d17ae983e64727e18eb281fe7cb"}, + {file = "websockets-10.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3a686ecb4aa0d64ae60c9c9f1a7d5d46cab9bfb5d91a2d303d00e2cd4c4c5cc"}, + {file = "websockets-10.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0d15c968ea7a65211e084f523151dbf8ae44634de03c801b8bd070b74e85033"}, + {file = "websockets-10.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00213676a2e46b6ebf6045bc11d0f529d9120baa6f58d122b4021ad92adabd41"}, + {file = "websockets-10.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e23173580d740bf8822fd0379e4bf30aa1d5a92a4f252d34e893070c081050df"}, + {file = "websockets-10.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:dd500e0a5e11969cdd3320935ca2ff1e936f2358f9c2e61f100a1660933320ea"}, + {file = "websockets-10.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:4239b6027e3d66a89446908ff3027d2737afc1a375f8fd3eea630a4842ec9a0c"}, + {file = "websockets-10.4-cp37-cp37m-win32.whl", hash = "sha256:8a5cc00546e0a701da4639aa0bbcb0ae2bb678c87f46da01ac2d789e1f2d2038"}, + {file = "websockets-10.4-cp37-cp37m-win_amd64.whl", hash = "sha256:a9f9a735deaf9a0cadc2d8c50d1a5bcdbae8b6e539c6e08237bc4082d7c13f28"}, + {file = "websockets-10.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5c1289596042fad2cdceb05e1ebf7aadf9995c928e0da2b7a4e99494953b1b94"}, + {file = "websockets-10.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0cff816f51fb33c26d6e2b16b5c7d48eaa31dae5488ace6aae468b361f422b63"}, + {file = "websockets-10.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:dd9becd5fe29773d140d68d607d66a38f60e31b86df75332703757ee645b6faf"}, + {file = "websockets-10.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45ec8e75b7dbc9539cbfafa570742fe4f676eb8b0d3694b67dabe2f2ceed8aa6"}, + {file = "websockets-10.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f72e5cd0f18f262f5da20efa9e241699e0cf3a766317a17392550c9ad7b37d8"}, + {file = "websockets-10.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:185929b4808b36a79c65b7865783b87b6841e852ef5407a2fb0c03381092fa3b"}, + {file = "websockets-10.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7d27a7e34c313b3a7f91adcd05134315002aaf8540d7b4f90336beafaea6217c"}, + {file = "websockets-10.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:884be66c76a444c59f801ac13f40c76f176f1bfa815ef5b8ed44321e74f1600b"}, + {file = "websockets-10.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:931c039af54fc195fe6ad536fde4b0de04da9d5916e78e55405436348cfb0e56"}, + {file = "websockets-10.4-cp38-cp38-win32.whl", hash = "sha256:db3c336f9eda2532ec0fd8ea49fef7a8df8f6c804cdf4f39e5c5c0d4a4ad9a7a"}, + {file = "websockets-10.4-cp38-cp38-win_amd64.whl", hash = "sha256:48c08473563323f9c9debac781ecf66f94ad5a3680a38fe84dee5388cf5acaf6"}, + {file = "websockets-10.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:40e826de3085721dabc7cf9bfd41682dadc02286d8cf149b3ad05bff89311e4f"}, + {file = "websockets-10.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:56029457f219ade1f2fc12a6504ea61e14ee227a815531f9738e41203a429112"}, + {file = "websockets-10.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f5fc088b7a32f244c519a048c170f14cf2251b849ef0e20cbbb0fdf0fdaf556f"}, + {file = "websockets-10.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fc8709c00704194213d45e455adc106ff9e87658297f72d544220e32029cd3d"}, + {file = "websockets-10.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0154f7691e4fe6c2b2bc275b5701e8b158dae92a1ab229e2b940efe11905dff4"}, + {file = "websockets-10.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c6d2264f485f0b53adf22697ac11e261ce84805c232ed5dbe6b1bcb84b00ff0"}, + {file = "websockets-10.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9bc42e8402dc5e9905fb8b9649f57efcb2056693b7e88faa8fb029256ba9c68c"}, + {file = "websockets-10.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:edc344de4dac1d89300a053ac973299e82d3db56330f3494905643bb68801269"}, + {file = "websockets-10.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:84bc2a7d075f32f6ed98652db3a680a17a4edb21ca7f80fe42e38753a58ee02b"}, + {file = "websockets-10.4-cp39-cp39-win32.whl", hash = "sha256:c94ae4faf2d09f7c81847c63843f84fe47bf6253c9d60b20f25edfd30fb12588"}, + {file = "websockets-10.4-cp39-cp39-win_amd64.whl", hash = "sha256:bbccd847aa0c3a69b5f691a84d2341a4f8a629c6922558f2a70611305f902d74"}, + {file = "websockets-10.4-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:82ff5e1cae4e855147fd57a2863376ed7454134c2bf49ec604dfe71e446e2193"}, + {file = "websockets-10.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d210abe51b5da0ffdbf7b43eed0cfdff8a55a1ab17abbec4301c9ff077dd0342"}, + {file = "websockets-10.4-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:942de28af58f352a6f588bc72490ae0f4ccd6dfc2bd3de5945b882a078e4e179"}, + {file = "websockets-10.4-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9b27d6c1c6cd53dc93614967e9ce00ae7f864a2d9f99fe5ed86706e1ecbf485"}, + {file = "websockets-10.4-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:3d3cac3e32b2c8414f4f87c1b2ab686fa6284a980ba283617404377cd448f631"}, + {file = "websockets-10.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:da39dd03d130162deb63da51f6e66ed73032ae62e74aaccc4236e30edccddbb0"}, + {file = "websockets-10.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:389f8dbb5c489e305fb113ca1b6bdcdaa130923f77485db5b189de343a179393"}, + {file = "websockets-10.4-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09a1814bb15eff7069e51fed0826df0bc0702652b5cb8f87697d469d79c23576"}, + {file = "websockets-10.4-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff64a1d38d156d429404aaa84b27305e957fd10c30e5880d1765c9480bea490f"}, + {file = "websockets-10.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:b343f521b047493dc4022dd338fc6db9d9282658862756b4f6fd0e996c1380e1"}, + {file = "websockets-10.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:932af322458da7e4e35df32f050389e13d3d96b09d274b22a7aa1808f292fee4"}, + {file = "websockets-10.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6a4162139374a49eb18ef5b2f4da1dd95c994588f5033d64e0bbfda4b6b6fcf"}, + {file = "websockets-10.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c57e4c1349fbe0e446c9fa7b19ed2f8a4417233b6984277cce392819123142d3"}, + {file = "websockets-10.4-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b627c266f295de9dea86bd1112ed3d5fafb69a348af30a2422e16590a8ecba13"}, + {file = "websockets-10.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:05a7233089f8bd355e8cbe127c2e8ca0b4ea55467861906b80d2ebc7db4d6b72"}, + {file = "websockets-10.4.tar.gz", hash = "sha256:eef610b23933c54d5d921c92578ae5f89813438fded840c2e9809d378dc765d3"}, +] + [[package]] name = "wheel" version = "0.42.0" @@ -2370,4 +2515,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.11" -content-hash = "0253db256f1a675e7d3f248b05ad1a80dcda035e2d4a38102afb7fecf03b6f9a" +content-hash = "7272cb343b007494ec44cb08ecbd7419be78c3af57d677bf6dc198cddb54087c" diff --git a/pyproject.toml b/pyproject.toml index 21fe075e..532767e2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,6 +16,7 @@ pytest = "^8.1.1" cffconvert = "^2.0.0" linkchecker = "^10.4.0" vale = "^3.3.1.0" +pyppeteer = "^2.0.0" [tool.isort] profile = "black" From 6de6579baa4f810eeef7ac27aa3a82c3fdc779ea Mon Sep 17 00:00:00 2001 From: d33bs Date: Thu, 9 May 2024 07:53:33 -0600 Subject: [PATCH 04/11] Update deploy-book.yml --- .github/workflows/deploy-book.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/deploy-book.yml b/.github/workflows/deploy-book.yml index aab1209c..c49ece1a 100644 --- a/.github/workflows/deploy-book.yml +++ b/.github/workflows/deploy-book.yml @@ -1,3 +1,5 @@ +# deploys the software gardening almanac content through +# GH Pages using Jupyter Book publishing tools. --- name: deploy book @@ -20,6 +22,13 @@ jobs: - name: Build the jupyter book content run: | poetry run poe build-book + - name: Build a PDF from the HTML content + run: | + poetry run jupyter-book build src/almanac --builder pdfhtml + - name: Copy and rename the PDF to the HTML dir + run: | + cp src/almanac/_build/pdf/book.pdf \ + src/almanac/_build/html/software-gardening-almanac.pdf - name: Deploy book to GH Pages uses: JamesIves/github-pages-deploy-action@v4 with: From 4e170d82e8cbd3aaf07c654d33175023ed503bc3 Mon Sep 17 00:00:00 2001 From: d33bs Date: Thu, 9 May 2024 07:55:58 -0600 Subject: [PATCH 05/11] poetry checks --- .pre-commit-config.yaml | 4 ++++ poetry.lock | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 171a2e33..3bb5f862 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -12,6 +12,10 @@ repos: - id: check-added-large-files - id: check-toml - id: detect-private-key + - repo: https://github.com/python-poetry/poetry + rev: "1.5.1" + hooks: + - id: poetry-check - repo: https://github.com/codespell-project/codespell rev: v2.2.6 hooks: diff --git a/poetry.lock b/poetry.lock index cb1c7f3b..92a1d4db 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2515,4 +2515,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.11" -content-hash = "7272cb343b007494ec44cb08ecbd7419be78c3af57d677bf6dc198cddb54087c" +content-hash = "278eb0dbc3429e171713e2db29ade34f7dc328cf02479f22178f89a4824b9cbd" From 6db13bd666b6b8b676a66ff394d47ec4c8f85235 Mon Sep 17 00:00:00 2001 From: d33bs Date: Thu, 9 May 2024 08:10:07 -0600 Subject: [PATCH 06/11] update workflow --- .github/workflows/deploy-book.yml | 2 +- README.md | 5 +++++ pyproject.toml | 3 +++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/deploy-book.yml b/.github/workflows/deploy-book.yml index c49ece1a..16078553 100644 --- a/.github/workflows/deploy-book.yml +++ b/.github/workflows/deploy-book.yml @@ -24,7 +24,7 @@ jobs: poetry run poe build-book - name: Build a PDF from the HTML content run: | - poetry run jupyter-book build src/almanac --builder pdfhtml + poetry run poe build-book-pdf - name: Copy and rename the PDF to the HTML dir run: | cp src/almanac/_build/pdf/book.pdf \ diff --git a/README.md b/README.md index cd5f5a2d..857e7b00 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,11 @@ An open-source handbook of applied guidance and tools for sustainable software development and maintenance. +Please see the following links to access published content: + +- __Online (HTML)__: https://software-gardening.github.io/almanac/ +- __Offline (PDF)__: [software-gardening-almanac.pdf](https://software-gardening.github.io/almanac/software-gardening-almanac.pdf) + ## CONTRIBUTING Please see our [`CONTRIBUTING.md`](CONTRIBUTING.md) document for more information on how to contribute to this project. diff --git a/pyproject.toml b/pyproject.toml index 532767e2..2155f2d9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,6 +30,9 @@ exclude_dirs = ["tests"] build-book.shell = """ jupyter-book build src/almanac """ +build-book-pdf.shell = """ + jupyter-book build src/almanac --builder pdfhtml +""" # builds the jupyter book related to this project and opens a new browser window build-book-dev.shell = """ jupyter-book build src/almanac && \ From f68713584498f148ebb08b0a879f7a41db2d5791 Mon Sep 17 00:00:00 2001 From: d33bs Date: Thu, 9 May 2024 08:11:56 -0600 Subject: [PATCH 07/11] remove non-main branch --- .github/workflows/deploy-book.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/deploy-book.yml b/.github/workflows/deploy-book.yml index 16078553..a019ce0b 100644 --- a/.github/workflows/deploy-book.yml +++ b/.github/workflows/deploy-book.yml @@ -5,9 +5,7 @@ name: deploy book on: push: - branches: - - main - - automated-deployments + branches: [main] jobs: deploy-book: From 653a6efe957096619bbd9039fe46b41c4ff75a52 Mon Sep 17 00:00:00 2001 From: d33bs Date: Thu, 9 May 2024 08:18:25 -0600 Subject: [PATCH 08/11] comment about the task --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 2155f2d9..30a52af3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,6 +30,7 @@ exclude_dirs = ["tests"] build-book.shell = """ jupyter-book build src/almanac """ +# build a PDF from the HTML content build-book-pdf.shell = """ jupyter-book build src/almanac --builder pdfhtml """ From d3d131f30741a5aea62f286f20e8cc1855c8db56 Mon Sep 17 00:00:00 2001 From: d33bs Date: Thu, 9 May 2024 09:05:36 -0600 Subject: [PATCH 09/11] update for local logo reference --- src/almanac/_config.yml | 3 +-- src/almanac/assets/software-gardening-logo.png | Bin 0 -> 50084 bytes 2 files changed, 1 insertion(+), 2 deletions(-) create mode 100644 src/almanac/assets/software-gardening-logo.png diff --git a/src/almanac/_config.yml b/src/almanac/_config.yml index 719dab73..b6e79d3c 100644 --- a/src/almanac/_config.yml +++ b/src/almanac/_config.yml @@ -3,8 +3,7 @@ # Book settings title: The Software Gardening Almanac author: The Software Gardening Community -logo: | - "https://raw.githubusercontent.com/software-gardening/brand/main/logo/logo.png" +logo: assets/software-gardening-logo.png ####################################################################################### # Execution settings diff --git a/src/almanac/assets/software-gardening-logo.png b/src/almanac/assets/software-gardening-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c8da0474a366e522eabeb33e6e7dce0a9ecbfee7 GIT binary patch literal 50084 zcmeEu`9G9jA2-ve5oJqCVeCps*0GN46fKsrriDcIEMpyIiR@X5m{4R*_FW+)X0jKd zEMwnh&{&^yslNApf1iKg`QiBiua`O3IiK@c-kv^#oTw@LUWtv1M8(<-$lbzoF8$T`1~md1Kn45nUuPNJwEy+505mlmfuUA;3;*9ez<;Yw{`aQP88|8! zyfy%N4fa2~f*s-JhyQ)nB`WGb3pC>y>VFYO9VmL>f2akY3k6WAh#?UP|E7&fC2`+> z(+_=q1Ra25V}$Geo3;R4`@c_uA4H-FbcjIyf76C0O#Clnz{WI;$SE55d**-BhMaQw zFV^lIfrTL$$*{m1wEw1!(GB(QEBt@<{??WM&)z*H{C`n<(e^N|-7Wn{&f(3`GiwST zH6eY!rWb${v&jpKPB^{08PV-QG!Ftu`5t;TR2({F3U(ZS?V zT)`b*qZWLfhMHgBX9hcEKc!MBlypjn_-k?}d6ty7#nMu@a(CB9l;s>X2@K0CL|{v3 z2N+z@1O7Sc?@BeK)Ah~}D|ve^<(l<}afqwOp$*YUM(RLLM5fhWQ^j6En8lNv&Ed6A zr>-3U6gx=(l#&1E<6y*G9LZH>3;oLlGw!qIowe`HS0D{41u#{r_DSv!$EmPZ$3F7TCy#tn*vQ>o zO3rAEC%N8MDiU}AZjY4%I3@S%Y};*07Vds!0XVHp7i3%s!5f z|3e$P1rBX!MY>y%l15kMi1SF1D~qIpu`(g2SZUg?{1vq_teSVe(OuSrhsZ1L=(H&2 zICl(e#s@Zgl5EKP`=aOraCbwJbFS`03eF>1s0`ex16-ivQJ2Oa>EKvlY`K$m6F$d$ zZsy0=yk!8wNdv-B{^&-9pGTl^q0xpv}Q9=F9I){_K+dsNsls z)F~poHdd|Z0{G`B3>W~%KL*eMcku4q`e{&fnplmhL5e!vI1~b?R1-iGc=t&w{9zJV z^+rxol-kX9ifjm5(`uZzdl(h$J`mUarZ1v@_CoSvQ8!a{fUSIdbXE#H_%@nK#S)<> z^M?}jje?}Cr>>4piD?j>zJN|&@#33*K5e~l<8e|}Jop%&!t)x!nWI3f!rx9m`optY zrlbv{wd9IS&&jQyLrO(`rorFDV2Bdn^UE34z5n=p>|JX@si-W&~q#?JziF==mFhQ;pWL-kTAdEtdtvh4$Et zJ|oVR7-!mvr}1^&S{gpEoUiuB z-9dKPDr4xW3HgKkt(1zRVxhT$V);iPOw$4Z(*ZamLT~gru3o`m+KW7zeF&Hw3nG(| z9D@r9T`p9!g4TG4GQ$hPbzGKXO)}W-qwLa!Wex7k}9?_$YjDNbA{gjV5JZfQF zU?Kttb&3H&8v|rq4HpBI^vG+;>)Q)(K?gLP@fdB5C(GtpdI+r8%NoOX6`TFFL2z{qJ|xt_V`m1J6L3n#dE1(`JhqxesPRNsnfN)Mc-2O!kal#6dU`h)Viq${ zOj=|z3_FbQAh2AWr!X#puM6ilj=At*j4z8 zOqmp_vS9QL7{5Wgn8TafD32ONrw!Lfd0FCe;APJ^)+$agCjp8g9XyBs?Xy&|WL4w}T`c z!p2&xNz-6NT$JdOi@CmUj(UDdErDDEqfi_O%q2vPg3!J21Vk0_OYY&yX5O=p(bJj( z>-W<+QR`cjOuin-Z3zK16;nVbgrM)k>%7*!ezC4_l_Q33Iz&ZQ^&h=It3G-b%MK)x z`+VHTteA*rAZ8qeAYvLYd79~+68tpp*}C_>67*3Ch>h?Q7c{>MhgVGSIK4o3T(QVa ziJD#8s?22q2W12IP^cX29)P|K?>o3r@vMBLX0iNDcD4yUEQGcMIU&_v32mRfxBVgb z5WJs}-%bt31LKB&CjlQebfsG0Qu~PkBK%F+t@-L&$_^z($SxdM(o@|4T;hon!m2nO z*q96<#LByb9J<+@+~G0o<8*}|9^QpQif?As$E;<+#J zW0wytjD6@o2=1VV&oF+r@91{{Yy!}&@Jk&oN((I{;(ZGbcc25?Kpfl6Ly=6OI>=0% z{0yg*!G6tAB)0FB&jFk}N^t7H)$99!z;Wy#%6NY1x)5xFWkAuNGbeB-Jxs}-OMb?} zZ!Z5W2dq}hOV?$=(_6kj?FD46d&wC3EKD4}9h3?7J)^Pz{HOq|_A#aPWzZ+e0@pdN z;Z3ZEdqoZK<=FkeBK8N~r9(VDk4yk$Sm->;&ya#C>UinKlfGLh_z!=Jw^atQ9?-jC zSModuwgK*rPm5{{_S7C~oCKXucM;-GA%fAZ4g6I>@UggQet+21j+|#g zPRO*B82%@CwU8cU0&qqU1GjdZn?H%g!9|t)IZFd~TzXSA8Q7H`8eRxU8sV&QpBP$R z3llTdh1{6~2!HrN1PbSlHX(34U|^PhXrOcB>B^5zr;_8+QK!G3kG)fVhRBO<8H~$} z(S|@K6X^eyApup~MVN6^c~&+q%Jmo7B$;yCScc`2NLngKemg+oR5}v~zNCQ8NU67* zFbO?Hi>ml@Pvgs57Hd{V^Dapy1fdyWO+K6-Imd?v2Z*!qn$x0%ncKf5RnD%K|MlyLtPvRA3sch0YUd&lUt;C~8VZ zFp^d)zr>|Pl^`}YQpBNx!==-JmV3AJ=&(A7IpA@0(*$Whif?B8_HvE0_Zr#L0* z5m+OD{~Y+={yv_iV&2o+U1j|~`BQQ3&V)adQgpoaGT7Do^i5^aWnq5)&O}Bpr1Ro{ z-eU$4k3m50AU|voh|5j)h<-%l5R=qGr?cpy6w5!gywctZQFaQj?NrR$!vK(-2A9`( z;NR)SPPb=QCC;Kq70bLtq7R2-RI-f*r0+VQz@i%(D22Rq9IM(gsLMoVW6dHCj(H4Y zMuT+XC$5RK^G`1Gs(0d#=ccycr6eF)_<`roQ<`%atT7Z(njD6TUu zJI{+|ytaHK02UxGfgsl6{E<9r>?g!YxnYYdG(h#m#!QvOBwLfMCe3!l4b9;H}X1AbKvNw9$3|8c;8 zbQ2oin)klMjst@6Kgx#ABV;>MMH$Dp3~K>{BFTv*IEQHKO0b7`_&1S7tHWO#;dNQvfSw9{J$NlA$Lkw1nzUU* zi}|J?dE$S_VA_iV+>VuLUQO77ocgQlE7CbrZ863&FLS&$qGL$O&*Xf#AqBK zjcb>T3@n~02~$%$036}l4yU!X6YI5yD&Gz1mYNxo3^Fb8s-2G31(<)H0yyic*|3E$ zIDeyac`cphd+}8KZL@E8a-L^R)FwxyjC8)h5!-Z&A+SM#csYgK5dkhSX@J*db2B7| zF^j#wV%Wig9+sd%DS!UHyw>=n1d7T{c+mvY@a%0QBer2^#%npSAdHh+cjm;EUIoj~ ztrV-Z9Ae0ETPz^F1O%St#|*vCBhO-w0*NX*#TrNt(V^;#QTg^?FP=$E(We`8A22zMz1`hb@)tG?ZoKi%eqcWC zgBd^RnAWMI3ju)?%;CcC>m;FPp}WXh9pvbYS*yWv6G^{vQ}JW3Ab2D&1MhG}a-If@ zfG3=EEPMkr?!l&y_g1GVgTm}_ZhxI)UErb1$p3kW9Xw>BHh%yc08cQ&+pz%Upi7br zIy9l>Jsc2CqHG!Bi4xuWfJWba3^L(U&({J$)Tx_G?4_+bjT!yirktXmJrPBXO5@ts zOQL)x|E~Z-8=lX2ML ze_XYcYOl~# z&XgTbYP}c=&$Z8`PGLXX7bUL<#TNeRfv`D5~xO)KF;(-GDbH%Pi&k|xSR{H>cE9eHPslB8qV=qa7tk~c7`J7 zhk>#_5#SI-)VnPh5on~^YRx1t19yD-0WGln*Ao*S!nnfeyS=1r&qGjFZlE53GiDVH zS4S#g8GA|JAno%@4NAhMgy1S1=;KKbwk)h6mOKh(&pMQnn49?ig9gGka)c5&g*RW_1kZnsf z73HjggwvoDHg4F;-RhB{t`4We1qId7+bpgL#O;qw~`` zgvJ#~c1Xhy0%g_Vo8O0Jg`YRZx4e?%o>HnT-V05%i z*{L%8K$Yku?0jWLP?mV7dBnJn$otuCLwuvep6mRN&C$Sb8sJS?04&iwE`3LbvZOtW z_Hf~(`kBgYfFE;`0)?Xgq93d_#3%2q{#sfCR(FaT=(})+jZZlLXZ1h!{0xrRpuds) zV{Tq%feSzNavBC3_n|InFmLs`fny84suS0o zIo5lPI8J_6NbUwmo|qpAJV4i&liFfqzaKj4A3X!*1Rzt9sm8OO*M}adB@>!X3<{#d1|FqoKJvB#wkes? z0R=VxAp8v;?2%qlAIfrV7CL|R6-<5-aKUjYih<|YeCxd zYMu&o<0Gn^)njk^vZkFR2^IT5r8fYlOAD9dj(&$3eh7dEU+>gP@v-LijwVG*I&$f* zDsb3IKrSgC08hSpj~`j96`9Dkq=gD*i_cvRZO!*%~0HoUYf>|2x^X8j`H@AAU7L5GoNR@*VVfl z1RMZ_A`K$&E5>+lCbyQMEOYm9ANH(c`K?~`IWkexcfC!9_g0&Lkihgwjv}`c79Ba` zB?FNZS0JT1C}?$XI5g#eCdLUZ7AzmC1!a{~*nObGcSHr}3`6CB!r^k}^P<|l(&oTn zO^K?z>;Y6L1}f)C#vGyq)^@L^`8E-de+(gc0cpHiBdFr>d3%zs^~;)qvM2y@50})` z%Ht5=8-cLFh}X^%LEi{!VVUm-9f#LVF*H&r{Wx!98*ZXkh5WbFkm~Eu+M~1;Z|uc$ z)*hj)QHwc&3n+4Je=@PNdzU_jME=}z+z?N4k`abf5Cs3j_ioSUdc#n;#9G>_TMLO| zGQA|SvNAZ_)g?8ga&N;vaCjfDy}vngs|fKs?Z#R9$jUU!d*ce*`iD{acpsUJjCsmH zGE~~X8xMFZ^=_?K3Pg=cTZ6yDR;L8N$#>RnC5rbITD?q$*=$@(6uG=5_IwQ}1&e6* z4_EO=&jNVHf;yY!db9stF10;YC++K14kEw|{m$+c0V2h7?~p0r!52?`Tl+?XWzHe; zPA$M|Nw*fp73T4DDE;=$75lw{3vSl`NxSyQ5CovJ08nO`%IX&oPcJDh8WOyfCKv8{ zSEaGLq(-jRJyY;VO|1V4@$R3iG6}uH4Cmt3H>5p!Np8v#;|d(Jz7k#w3S$1n5Z#IZ zS`^j3a#nL+(pjxBRasn0+GMNuaVe=RM$J$1v{zhqNoA^Ad_fFybcbx07r;cujlp|^ zaGjjg^)pko9Im@7#`^jp^G-c$z487Y;|l)tC+`DCFAPN<7?1;ahrUyESHWe@c;N$w zyTv^;2fMdQqJeEYCO3as+Y)~Z%9>~#8`wBeYtW_}u9KU}LRL~LpKNwo_BU$v^7$BI zjU5Sdlldl14*Dy$PYK{i3-JQ9VyvUfteSQvnR?`M1KBNrm(uWH*u z)%43t58M9E0w5WmgWkf$9#81Fd(d%?zff)f_Ss}nQ7!JBt%Fv3MO+)#jk{3c3CJDf zo{C4b$B@xU=(b+hKqYz+rH}#)=OT|Fae1Kg_*Yk=>s{Nuwg0&a@{-GH3J6C$Ge*9- zPUR4tMeSWULuQ9Aw^7V)euHF>Xadr?bxBG97DM~gLJ`!J34d1J`@dF#GV-k$DNz^` zu%S?=eTTO}kdsV_FjQnnIwlsvL;Uef^u(7FgNeVRNHlUk*4lydR)e?zjGsAMrPGjr zm&l4I5`d@PWsW8-T}X`3>ilQ%QP8pr&vRx9RSUpr!cJHX7{Sd~73^K2NpBSrqcl1b zi@RAMh9m#85Jv{_U)eTDg*YCg)f*jxi_1qU{LQ|E6^a;wN6D>T*HYUxLE!bZd7iS2 z-yIifqF0J%3rrUW+Z+H!{jdtfbWIDFFhi+O4D{n1|CXj|tZ3<3v@osF*;r&I-xam6 zZN9E-$K5&Qf4wTLo^h$eiO68VP;`iAqFl_@b$W1Z@CPNW&cUDfgn&n6zXoOP_<(v` z`cElYm=$f$6~NEJF^ghcF2FOtHZR!(JI!y0lW(0XOZd6EQ^>zX`C>=W;~svw?jpKU zNVC%!zH8d~XwqH*I2wQpi6=lBhI>7OQmMbhhWYLG6Hm)XWu8Pau<^TaMoxT-X{DG1 zHWDI3#jJ`@)j|uIzO<^ojObC&0QC!vR@THZ!lVrGv~nt9}^D%k^TFe8s>!UPr zqz1Gxy=JFlu!rb)warIbN|>blK>S-SwM=SI+yj2;6$}={l3fHInLX;}=wP{?f$r>I zru&+lV)uDrg4UK?B!-v31F-(4!Tg(3FexKE?Z(8Byy=Szk>!P(6eMx> zSJ3RdJW)O&PL2l@@L?Kd$+qVQlV(B;Zh5eWqA6-HVqF7DjkkvF?%W2~-l zo{Rf*JUlOvg-%!n$qKY8ti+4)8XDI(Hh+4``1Dlc+OoW(lF&}Kd=8OLw9D#PE9IQS zOYcNCJ6nm3L6 z94{x-Vq#t6R|sFP&U)Ui?Q6X*0}BBWzUreb6zmzI#|$VOT(SF3oSTVD>XG$`xK$)E zv*wAJ@B`M!_lfMsXV2d_P90eHB-sL?#(&8hV1uQ8RP4z3KjB@5z=K;4<4EUV-!^P| zLcNZA8Fim-#a#UI&IrB+yxX~bSQu>&1QY#nIpb{2s9~i=&43jA7;Dz5XN`v^)OWIR z{)m@3eG1=FSNhCb*1XH)^V|U})bu%kIHG|I0<168C4jJWBZ>-@)_K~ZU0OLq~uiOi`gAT?-6BT2{v{c7&AGzFXBBr^B*p+L~ZVn|QO56`U zmV}9bGO~z9Z)%PJ;lr{!D_N11d|tWqHAZQk7?`3zcBI%)7ew`>q-QthPQeX&vo3Y* z$0`7^axPe_-w?wZL9xwY=!7*@HIT}N_2<0coo`aGNI2$&qBdNem?Ntp_XBKtm?I8h zMLeK?B#w&4kIsB`Ybi*llR+ZvYdWhla#FmwY2YOyJ12z4_9VOyM1QltrXxU=T?E)4 zh7!2YeJ@1J+{G{H^5>%>CvA6s5qC##OW1QZkKeY3-(6uMA@Nu?4aAkNLW znR%H-w&mnpj9w?*udmhb9$|7Pn`&z8-=$Z;@9l(?RNQ_N37TN)LuZ1&hFxaNPDI-Q zFQiAXt6?|nB&p^1CHvk?6}0?pau{n;_}v9zLJQjj2=WYzwuXrSE5&?;C|dm$O**Ok z=z&qkW3Navaho=HD5mX8Q5ie9HG772$3;NZ#UN5&hkcqOaKE$fuXl3D59@WhPL4P% zm^e<=#@9ZYD+<0s+k-Jr{M22w0s1PN5w$Pa&f}UPd)tf)$FaG5F~1i4$!jL5$3$wq zvZUwP%{mON=S#ENqT-cvz*^4zyutc{`EDryn|4;WmO;yw;FPTGANfU9ld|65PKukF z0;)`xOOoAyp2+oCpC4t%8s!2#xd0^bB85mfUQl>X?=$Ik*!4mFOJmA}(i4Z|g_@PTAf2?* z$S-Z(rmq^CZ$x)?n;DjVf0Ub))kas0e9L=j(D6|#cQlwv(bpa{Lzp26E0D6UoSup- zk0VJcH%J+E)KZCFbV#DX&cZ{h^3bDlApa3&Y(?W%fy#>M6TAykb5mM&Uglo@ygPnZ z!e0MYoVXGUaZ&)?!ywU>&IODu?b@KN3b?b%d##G6W|~9b5fH>^TMR~&j?Fof-cKR& zxGxPZwmq+%32(Rv(t{y1av!!Ysyr8$XsEJyozUi0!&SlVn5n!|IX1U^?n5i$5$~n3 zMcs<;C*F8~1J>!^?vBGT*#Owy!E5`+=EoKK@Pm6*cG*ZN%oAtBj=fl9nf6x##^aZ`gSg4xz9sBQI8=nF;J&l=;!6Rfm+~Ro(ktCv@g2{`aQ%ck8swL z`W_Y|+a#@`Q-^_Z2=X<(7my0C%%Qwrx)*>R1KK-A4RV6tQMv_8k;4&k3lqH>o&8+` zlXkQ-U@m5Y5jiu_^g$;9SX_I>bWnpmz#HjzlXCVf#su$QHS8!$zh^1+_S2nT8@;*s z*JO8dR#Iyqxs7ct(AqPpxT_PTa16t@lmX(*(Bha;GZ_d>|zM}-=Swp;K#&z3`WjAB;$zdtLG0>Ml`C_#n;VA2K@Cg^cJwyOmu z24Rs7g6vu2OWz?@xATCXNvGuV)4-kH?)&NH{Gf=r*f^B>bkY6Iz0~n{=V)Pwq4N!{ zGhMuYIvCX;YOh9+eq0n_Cig)Qko%_hT~h9It{v_#V7%!Hi_?~(lrxD5%$uUsV6~jU zCDf-Hj9D)2Rm5*r)gG(jR}myu+uIs{0yekHbBqhzjtM*kQjC*;8w^Zf;w}%IV%%Vt zXLnk~abkXc+^2@>8ym?vQ7Nr&AnL_DlAwTHE~ik^l)&)a)b7-`2Qhx0H` zfo@`GkHl0WOE^xyp0JTXQp)uC9317Z#A!Q{s)wf+fpXM$2-zJABL$P|hxW=Cmrr6H zQ+?e_jxV@*le7tihz-&_h@KQ>!=Gh~oOE2g+PN9CV!q?eWcJw-b_+~P-Gf=2PJHe; zNMa(FjoEn|rzQK;nA2=ye%`0uc%NIOj9R?>xfZc78iWIJroqL4JY$YJo}>DNaKuA( zsL`TgT-^Iq&mS*koE+n3#M5W2j$a#qG-* zNCFI-nx+h~^F4ffGPlYXwP^gwvYnzV`;|UfQ)H`b5UPlsO$%Ua@384}WZ3HtEAU{4 z)073LjAMo0%Mk2*cWTU0%84uDEFj=U&Qu@Z*?F4Jxv{10)Rg1(Kn*dXZU~|?tnC^C&t}h9%=yDAyV2m&JLkmdF&3g z$Zax{<;JXggFq;9dMfesRE%=b+TXGvUHuu0GldQ)!HM#TBw~kM1*nfv!|(CEl|QII zVE1HrONxaIH7Z7pV3Fl%W0dB8rQ$N(rvr{og%cE#+(gP#eM*~0rtd-i`%un(7Oqgu z8GP$a1|#_j?=ACQ5Cg)u@2z}1N@h=0F4XM=6BwNgZ+YkcWWJWSjQmG7#1^jrxNm;^DQj`sN`a7 z{!YnUZ5}MS74lK{XD4k7P|+T?rg%YOrUF@NcN?#y^i6s4h3@X|yfx_nalTBZgrWA_ z*j`I4ljrT%!%@m!yS$oH`(T1o)K=^Vsqty`oghWgAn5w+)SN`Ezbj|zFXXYa=d(%6rUUkn;%JD4C7pJ|*fxS3jM&o-dy&hTcmWU^PLY;D? zWUXzcZU1Us*6td1c{&dUmu8S}QJdsiF3$d?1l!*MGssDXO;b)dq93$F8t%4zgpJB zTXY(>%m31TQL6qyi7xRY;63nq$@8RJn%``0nf73DVjo_!!1_Vh8t5k_42k&>7(R=0 zy|UopA&2eP{29WdtRm|xxHoE1Nh{lxDhG-(0B5Ci!O4gXei#QBo{UIgAzAxNvfQ70 z@Zd$B;CTmjz@$e3yz^c#Z2~A)+C79Lk)m>Cp~vwjnE$Y&`=WHAlQf45Qd#fRmLyvUw`XTU^3i*w}>-c`izOQ zDm?{fltl-mB*yW;Yg4XW)1H8?HNpf=qsZ#d$W(;Hx!$y(=$jk2d%){*od(aqUNAdl z)|ND|kh^$pDjG5`JuaQKnx)8371jIisQ&~*croCKiKt}tdY(~4&21pwK1BBO#N(F( zEv(J*a?ZhqN1^-Nou-ghUGzQ+Z=#Ba_JO4C6#}F&=myho?GZdGVlvW3MoiGnEt#~I zw!CuKn(|{v%SpS9-paCXrp}caz^z#>8Ky;C0Mm`FdN*9xroELFI_v1^DxfU&Bxqcs z3A7uL=vX42r3UHn28feNStvL=G9U-@fV=nxyozsB%bUYWaOy!*+i5z%Q5HM+c05jV zX9wJSj;%=qy2Y=krxX0VxSUk_(#MSG8|SFS0+XNQ1O)HB9&>*CA69wUtE34Nn`(AO z#NAe5obPLBlA3 z?S1J9`@mrb`}s3KkLtMG0Q$^$dWW(#edi-a77K2?KYIwY$QW0jHArgWykI$#`5{TT za!#wwa4>hyLZ1H}w1oQA*yrOG6I~5SQ_9Q&Xe1SNIww^+H)Hm5D)B-&9|;hL*few< z!Ga-ZITiioEsB;`$BCi!w#uB!5lJ|xSM@;kD&DsV0b_G^w0*s4xPDf#ToEu(y=Y3f z%He3qJJmm7)?3q%#;kk(#!>3@Jy0{yLHE{lHRPK}|90eHXxKw^>TzUwJtLVW?OOF| zV$P&rDI+K=UxwKHumR|`SAFI0Jo*5L7B-KP4O#{h5gT_<#!?J!Z723)d1zC@HzpZ^ zt-KA!VIrXLEx5G>Q|;Yn9+6A#l?D?a6^d zuyUp)kp~nkIv;-0rclb|W&cHjDvOkb2MC1g15-g?ns{g-al&V>Z-B1M&EH@1#MRk5Qb4RgHLC&c2ZSr0el{m=jY(3PVA$8L| zM-}y=&v;~1uk#j*3@8^of%~LidH{nxCbY7h0MB$RWK_gZa(zaJKuufGK;$4Ma)zQu*qu?{nw-LeH)A+9pO{D~ z(;W>%cY|AW|0u0|2oI&GsIi{`!%S=$-Aveipl6$bsks=X*zL64s9k5>&h4Kd@Oli^ zg8{(Tp72mFg))ud-z70Bc%AQBaW@FWX^!PQ<2K2~5s#3g{C5O3PZK-L*rfx}aR9Q0 zZ(qAV!%BTq^mrF|Z2DUA8!M1?ZXd)HjLjdilr97OKg9fN$A*jRP~(e?d27#}(KY)w z^020w>S(sNR(r2Lz69K>y|045u2{G`^A>bnr{V*~7Hc)?c6_~sy|=~lybi!?C#SA^ zi$k#>rOo=1NX4<}gvg5AR5sT)*MZkF&>A)Ck?|kB{Py6({@&P@dz3YO5b|Zj6_njC zZU%%k2Q>xW1NHU6e9(mG_f$8L08`9bAeH3TXnr32UfliqCD2d-DOld?E3grT&AGc0 zL#TW=%H@RbIy5hEn%WExfk=q(lm3ee)L{ck;$l4XN1cE7sUb&sBL5Gf`kzFq(?j!H z$hRQ@IaMWE`TnmM zxEom<17#lHIuU#A>xtbTm^{Qn+Mk~n0B>gK(Prm(u>TSo6qp3%GD*q*uw_U zE9BXT0LPayd{cjhYwb%W?94?m^0Av&8tA z#6+r~*eTJzSTNX+2OZ}Q@X!M~z!KNQ%tKIKae$U_?O`ZP`k3(epfX1=(dLl?(nwVb zOiszL>Ls^b1VqfTf==d;aTEm-G$^>PMLQ$Mxoz2V8GyP+$qwG(fhZ^hx*%Ak1?8Ry z1C1Mkb7SwyPdJ9wEBYv5jjm%%9k9S^u_{HG7{D?)8uQhfVY|*x(3WO!i+axj8Czw4 z2cIqcdaLW5G%r(N>!y(fwRgBjFD?)V>@eZgGhPY0&6$uGUE!iegDoAs=FTIv4f9*i zmYtPTPdJL+xu1;&6gA+kUHJ~L5h@S`id49XDaHUMa#EIP@+AW6zgT}kN z72X(gYAzzm-*)iVNaZ7zZr303% zGpfG~>h?-1PgTJi1fW%9`zU}&m}LTt(h!v!+qG+dGEI0y>Wo*>%c8Tt7XY5w0dCGN4f&0iAo z!0q}8-E3IX->>9!oK=`%z48Xw<*=Q`H<`bLUIKMi3%@6MZ?Ej_lMePV#)w~+{`)xr z44n^aec=f5)=7*l)U^`|da!4sd+gK#r60jZ z_j7js`Fwa})u!bSqXNJiD$g0o{rC-s&W}{~A@gae2Yyn*cQ?H~M*NqRw?jbLNfBHy z77&)z=|h6dq8s6}TO1WtmMovu=;X&x{?(!`WD{8Z!jIQ4dqBX%&P{lPiz-SIIGhv4hr`p=q0fMfxJq!zq{~sY2<0uZNL+UsuifmS zrosx)O7c#1^KZYF&8d@l_JhVg3`aZ^IOAopV+{>lzh+Dlm@Xe_d{d{-oqq^my&mqA z3YXO`a4=~pTWq`2i~D!h$jzUsbG)au&A)BDez72QzjwC(DunihQLmT)2eC)sJJtRx zV{yA{9>JsQPHfHQy^8959RS_!5R!sZ%Y43E)<5e6D43bSF=C$%qnpccx1n_*P(c`0 zHnwh;GqR#QT6`@4?G1l^gj^EqCv{58+dHvsgJae6GdKo+f)`RrMP@C*>HftZTHaB| zZSaVv>bUDFc;V@C&nL;Nh{<#1L+@Y-y+B`&^?TN5y}7~J z={o<)CU%wk5*v1s#+SY&ZM)syXTx%L!Qb7$@2-2x7_B#@=z0Bz;mArGR`Tz$=_n#_ zhLD0`V-Z_2yT1gp{GB{Zn-zyB%bsce!l(T6Xt3+Rdu`g(qh3Bl z-}$~r%THQw=am)QGa*Mzb@a4t#RR+ zf>oj1lcP~+H<H2e`LGUQ8~xFOU#^fcrigPS32@drjh9&Y68>X3^jOrCWU63>cM# z!;a~3V3lvf&<|t%mN^|1nDzUN?}Tjss31Saj0E<{UqdMTvmo4fW!*HQ@6->2kiCz7v&qFmA_(Eg`VBM1P|jU zyuw9&nY!F%Y4Z|aIZ?yo{U$vN0=Jaw_d)RrjpW82=HLFQn1Zk5|15QtI~t2F58OH5 zRgZCb2VTg*j5AfjLFsNZiqH&Twjl^yxTvRi}jYBOuYi^dyJTO9HROsLScIv3|B{C63OOf zd+UC_>j`8`x`^{u8R2-q)fPhzr;J4`6&Jof&Vl*!v<+Vxm@^4L3&SlqA8?hcc8QHN zdhz-QYddf$GEZ3$T5yYzRdM9)!~otUXFqn6!t^X=a9>%9EhsFYaR*^yQP9UGrJ<6L0NTs@6B4NQ(9F-`-*%pAU@m27$KdPU6b+D~(3Q-^^= zPE@J)?0J!?U(MWkXPfeMeWA`@IzPn7n6_l=UBwZg8w=0(;P#m4$p?bd-77!L`qI*T zS9Vm_ow}oKgV5)I*M!Z4Ykt?>s5wb?sr0IG&o@UY{N^$xmk?Pou#6DRcrA%ow`&oeLcPmLD&QLA8!4Z!HT&ut#E6a^fcr z>;8MJicr+b)hR3j$xM{i3y1`4yu70 zb{`So5GoiQV(%HYvo&4K%j>K35djSb;3oU8Y(j^>v3=kzpYHcUKfGn=*1@X8#-Pfh z5zxe|r1lN`Wsg`+fi5*gdd&=^6PSzeqkG|N=oZVl5a_bCE!BQBs{{is!c+r#n||GNV+LJ<4W?f*H7`59 z3F9;Yv>KaTsDfG#wagVif}BrJJF^64w@lcP%YaTkUarj#D~MHM`uV}S_Ay4-kW2u? z)h)rgpciAOUNndpy2X<#+EjX=`g$_BPg4bFPI?^qG16FaR=vmcO?t=?U@EL^kp+-; zEW!^Pe9^{i!MSIak0-z609VmC!(jMDdxJhn`1u-g2D}_mv(ewqOlH+CfQC>5(AQuG za;Eqc&nzTs@XpxECcgqN`uJ*Wy$1Vi(Bp)Y%g)SzBx~z7c#GAD=hHVu@LuO|s?<}E z0pjgkutLKaD*g{s^*Pq>BlXkq`WmlLU0!f_B;$+ocncqyn zsokbuRGRF*F8NrstJ_Ih7u1tB0+W1!(6w8lv^QWCbk!w7AV2z|N(*AX58>zcUd9J= z0;xNnAFxDT1-(UKQ|_9--Ymr#ECJwJoVUofA90y8r4JTm0_3Yro7$^B`~g zjx#s#95uK{B}X7Ip@FgFPK_C9V?G5qc1jP9DC~fc=i*S~D?XcoH9&um_zM$t!D%|` z!l}M1Qni!%1wo8^3_hQ0-jY1~qx0+1sH%)}{zuu-x}E8?UC{pW^dpDV@3sh1he#RB z!v&0h05;IMuc1^DdZ#W({Ml7#NAAM8zQF8$Gj&U0ph?1F0Y|GX^L*~hwD8q7BSQwe zg^0;k-g1$$JE_rRC;MD3TMgD1nZ(D^m+_6?^X`C3jquO2kf|64SbQm^(Jm|v(<2!3 z6%_Q-&Q-q@m_9eLAI3J})Bh+_H&GXE4XHuu5cjlKMY5DKC<*fHcg>yR^QD=KH@7>w zYLYu;M+07Uiq{^wvObt&&R6?N>%iA`C6wT_3ZYD@_48>tZ9JP_dTLbdGZJ)kB|aZ$ zU3`PFTOp8WUV0%I+a5IL!`PW;4XMSE`_k(?mCM^u+LljBzeh@dlN2paN0WW#I#N=> zmnpRQXoI^HKB{}?9g%Kvi`6#*;8Wp+6{9Ns7?N?{#51zdhdMW|tK%t|Vy_18)}!jh z*%&>mz3Y6CGhnnC#R0PCfYn$)6a$rCGozFa=Ds2M6=W$qMW!=V;~%f{*S?}pDosSW z=yln=ykEZ@czOd7lu6V*6boIU8(e`})}NA_l?8ph$GNAAnPM-G=HMsisy%l5oU^~& zjJj&d`U2O|85-PT$wMs6)8()I@p+)Slpk#9-5zVYwn+xhzBPAa(Cl)Z{4zP$z3z9d zL(xp{%47kU_+VfxhQ1}`uB#2{=T%YN9o}i(?4a4JSEaU-ZPL>0gMVDE_}+5D_6@Kd zPB8()Cp8+K+89>u!upD%5xldnN{W0B+)P>jIfuI0T+ zkJ3d>V_`*3NzeJV2W`?E*&HNn%lV-ot&1^U<~jn1ZlYPLE9`tLN;~RE%C}(i%j#U^ zI$fmwDVf9x$F(J}5%RSiB$`V|qr+DpX7^uFx8#9Tk)>jCfqNn)vpp*MoWFELI#(UVP2ofWHsTZ-g!Hu&<^o9>J`zwE1gC`#V7D`kEZY{Mu34{R7Y!6$E6eLYmnSkasM{O}h{PBHULUw$>x{Iwg)g zdG6HSpRPN@!7vDa6vm58;>g!-M)Ppa6ZvYNxm_=dp#n~)j^205f=^NM^4Kd-P}%(Y)ZrPDAkB|T2OB0$5Vh8iAN|+cC-dy{o^tBF*l`VBOSiHTby9FC8|HO z54`##Ibd2=``wp$Wh$bqk+g?6XExL%1cfTYlynKdXTemQeQbhNNpIjTtrX$el^5hU zR;OQ?9|od&rKa2{m%76@pqNr#Z4)|@dP-)H*pgPWOHkA}{^M;JEdWHgmTU6fSL$@U zrCrOv7po)#bN-g-IbJ({dgCOR>r&L~Jc_!f2X<3`-E=?v(+)f|i(qsn4b-2b(DLKr>)%(jFptn8$KI)Fifj|iN zy7-6A@8fhG5edr-p~F9q(b{0gY`g~i}txr9BHM zl@`+mdn{i!hy{E6?B?Hs@orhfke94X&hcnlp1+vZ1N4vYr+CiP*cEL|Wl3CQ)-nSHwX&keK3&=uFGS>1G;k9>E_j~RcL=2| z#=m31X$*-202`;c#7#(}n!t`#XS8=gQ|P^gy~GI`6$Wfxhqz7xgfGp`ulOw6fR5<4 z#j4GQk_XkhSeh3{CHc0IJcr%^*Uj{$1@fw)D#?m&s91|{m)B20V|F%zX676`-$ymD zxL8h_*%TGKXxCUJ!Swj@2m^JlH__xPE)O#knQ3P$K-o^SGc-EQth&mehs1>k9tpp8I@aDbCK=Siei6$#wB5U+q(^ zYb~HGq39yrBsW=SDy_Rl8@yPf0rkE+g(zLLa?{POc z1>al;vU?}lCUd#z)a>_*) zL#z4Skpdq|uJZjLzLgV(~|M2wP@l?O>|2Z9Hm6arW7gs0wN-$Pd0bC<8}Em*g+f0+~l zXIlNb=)qi(R(Hdc+xl3|E2|pVf`bLF+RyK_UyX;%}L^{^rQLL@KYfZurK zbO*iNzeXU>o#@UDS8=K{vjl4KahfMjte}{Ha+&~n>7jcc?p*9p|IPWM7@=$KJ7EuG zh!L&x>!g957VozHV6D!3PDD(uD$m>a61*#lL9eQs+l|XZO@iq?BN!E{emC=)?wB@p~3v zK43n`dUE$U$sdVYELsVto+SMEiu}|h-W%wAE#yVwSVoD~Pw%Dc*lk>z>j(0sotPKp zL@`pYVC3w5A)pdLwMkl*$*b4p~~$`1MRhR>E*&(6I& zDj|G?h6DPln&UU4y@Yl}c2$kUNO$irf&rbDsENb4KJu;xbE!(FFsS3jN&Ttd@aLfR zSq0Kss{;}xV~$1NfHbo2C8cwZ^NeZU=>bztE#JGJt2@}&a|*8u$W&EBWbR>|SAr)`z=O;dR@9u4Ftsk*?(qVe`sN6-{wit$|z(hgoP$3a!<*m$~vx|oj4&r z5I%Bp^;@i^Sq8ZA$Bmr_<9PI30E8E2FuNC5 zyK^U<)l#F7IF)Dz?U#nu)QSZf$lNS=Pgu-NJ`xq52+vC|zyN`O8#YUDV;Hzd#Yw@m=%ydbUq|d}+6Dl8fDpXCJGy>GoHgJAXOfVyAYP)_AJ9P)&#`0yB_^Ye_gUllqpBmHBFML%%e zNry$NAyH3zBzZoOiHQTGQ1EKAKkxJ_?f_BJ3)bKB6ba?jLp@v@Uv*OPSi=*Tk7WD@ z0mTnDR!*2IGNw=#sOEh%eu}>q`;)!rEh-eLWpF%jQyF#aQ9h$Oj$Sur5HeP<^xNki z4yW_%mhKt-qZHBnp3dLF?bcVjvx@yp?CEH#-MEYNN()AV?4P7Hzz&+qLr0SZpoH50 zmI+CBK-^|f1h6q7!}*x3r<(GWv3cxVc^l8Qu~)v_FLu4J=C>FZZEQX$`bApr3c#-U zFxHC!Pe~A2sBd6fW1Pa(UzC8V*c1Q%W_-up<^w&98gEdY!t}yAd2R97oU+2;&hf8H zJKs#VE>N=fPE#R`Uod15Hk47STlM`0IQqx8dd(@!Y3$we`p;}qn^)nJoD<}EZ2gPg zF!c`?qA$+1V$P*e;^N-AUVL!$KAjRlnk@}i-IDv)*MSsgG#DVFm#;JFNYl*zY2F~O zFMvJjcoW^3FzW|Cj;{VZT%=v9`5n~5x7wxC+nL4Pbccn0+(FQlgrg|HVeNe~nA)@| zT~f}XeF$1R9ReI>HOnHLYwy-mm4 zr1J>;BzJ?O2i011I1?rArK3J@t^~atV3pOB#u!43vi@Xaz}}|OSXe$OG1$=btW!%B zE077(W#LSu4Ituz#RJMY_tH=$i*rDrlJ6*a>=6}I8-OH0csciHDLI_6>O7K za%yekR1++w-_I#aS%(iEsg-bgz{#08mQu zLS;A=`;WCvU2I7s+dtApwe{KzeJwaFZVp$-q}0(al!EkQIjlC0KFP+bdm@Aei5k1} z)o(ZwOD1;wT^M!s>F_&JkjPAN6(n$PH(?7p&zce*#69p z_W;}n`czuL#4LBcLoezAAbcGQ(kBv z7ehLprwAW#1vzR|WvRm3aJr-58lt$w__eY*#a(Ce=+9F0!QXs&-n`V zMJ*1}LRo`!OT2BQFc2apsM3VwvvfRYuV9wj3|$=$;|gO+WjEn+L@MF4?j1 zUww}GyqdKNUz_76$ny!4J_LM^>5{$~@y%XX#p^`4lby{}{WrkFl$+nXLHITH3F6?y zj8}gVE9H?Q0_5|1`MCK<@x2ymYb%y=(qa4e5!N1)?YdUa>|_i(*Q>EqV5Xk+W`dRT zNfE~NuQrNC9u*n z`!R-{=M~_cpbH+EntyMnoVbV95hcdX8e)$h_X=0=Z=v;b`U`JcbE_8uUNGw2JP5iPYb&4$$EUQ&bbS1*xCUOjCk{(K z2+p81HZ4E!^V=Db1zC^EHWJ(c_(BV0YHlFDZO{At((cP*Rtmz;`_GA07B+vL3rGh> zP3&=gVNxt2Sk*uiNNAc6$uD4cXj}DbFe7`2t9F4Vg5_IbW| zzznEv8(@zk{kWSe7TC& z>2G@27|5DDHElR4?k`68knu0?UX>3Co*5K5ae@$aK#;WVZ^fpg`K9vP?h#_D&Af4e(}!BAI!2KuzUCf)yv1!+{=6zL?$-`}6E6l{PRz^l5#~R=jLUpVHc%HJz37ye zULGotjbtoI=TX%$ALzPLb@zIlgMRUOVC3nKBN_9bmJdvYXWMp??TmhK%uySp^-Ntx0U92t2hKm6?D zn`?cen?d;qGyUKX24ytpJckiOF_gbbMdI{RahaR-`&YLs3VkP3?EK4LCOC8469Ui< zcNveTku{182I)^36!v-SgdEZNXHt9>OP}zh+?5byrq~E<`scTC1z3V9WqCl$QW6KcW`#Y>n;UbPIUgMi+VH%nyJ5iE(1ZtHNV3;IGhdf z8y6!jWtg)?s&su8gg`P-e{`|p$=8qo!TE94WN+VZNmF6cQh))}!bTgyB3>-V94(Sa zZ@5#$><@q6&7gcHIt1U;0w5eF(f;i;wl(=ZVe@ICq|B4jA2z_aXU;|lMS6Lcy{r+o z(vOD3p}MlR+j&I^E);1$SpKqRR=%Ynck@>dY6XGieB8d&o`%pK(@p@Y3#?aj9yo~W zu6aHMZ+ou0Z0(u~?B(w6{mIi^(5ce)odaEM1>H_V=p7FL6~uD(ofwUFraIM{e;Trn zn~HV+do;i8yJT`!1*R@_O}Rm;x}l-T@l|1ZyK-1Z__qD%p?|~>>b)KRx<;eBqI40P zVgXgf>(_?*y9=SAYctk{GZ#Fn@*xMYRJ#TYi9cflkMn>ajqkurQ>32?5Wh5jQXh*I zTO>z=bsJUnMauuZ1+Zz`5g^nK-qLgSSAAgm*()cL^8J_ZQP=Df!Hf`+#F602^>-;P z#_*t5FT{2)d&_MK0JuNTew*+bDA?Y8CuE`J_{Gb##=@tkcc*x*-~Bq4fGcmT!ry-q z&+bR6I@DZYxFZyKqLSXwd?3rO;uX7kjj*YFr5W1+7Xz}OpajmSZ%?0{ZWwqYEq*Wh&}57j5KeQ6>26 z_=Nc4etkD{N?5B%z4vmDfMUU!Eyd)X9WI+w@4bu$RTA69^lkT)oT(YoRTWWNS|O{A)3LPZ*5eNTlp#f1$aV zZJdKyows#G*5@?JtFp=`?awCAQ4*7Z02t}9A8;#-DRnDUxw~zA#0p?g@{6Sm_{=E} zrs-CJA7;c2&zHS)6n&MhDiI#x?{&TeS!L7ID?rHjs8YhLSfE)^^!~dp03oS(XTf%G zUNw{A&M}|iIi&DooAhfB`zui6IGp94i`09DqXKsO;;{~jg zF@e`l+7)gK9RvrK6BEsrf^_0|j@{-2sf<^DX9u#wRW7awi2l2)VKrlmZ{BZHtz*nAF@GT8{a!S+GZ;`O(XDWvi2~5BfY@y6eZxDz%P-1D|zfDDrl)tFv?2 zdv$-B3eEMqS&_SyH^KRhue&mf8}ie>!~H(e^Ftn5od?Cnw@CnO2Y~-R0wF=Mus#JW z;;`;+kWo2t$lukcV#K?0BG6dxgug0nhBiBGoe*KRT{)WPYKN_2GTU=HWI-ojBCMDW zyi1~stGn|UbSq1vR8-y^C~@saKd+j!N~72g#pcyC+wA_C$jJj&BdV#kd)-rO_Z^an zFDOgfz7A*EWoB4T8RA%Du`B2baaA5_8c?qc-nDowWwHMc|5#e)*KKdPT+U z%>=iyi7~Y;?c;I`prM^qVq*5a#}7q_j}e4yZMI0Bp!CC>Eaw%nKf!eAEWonnLw1~T z@o)cqo>cFd=&$-^aD7XGV{#EM?B|w7p||4>NCmt51Yshr6CwL6(0>zAl9EG8Q-5Ec zc$IA%vnWXlW{9=4=Z*~C%Eh@(jINA{j=C`4L`Fw4g4L-UzE~}zE+r}C#6FkdNe)Y= z1h|wF$pHk@REt#6U`f(k#C*_z^R~tOL@i;xw&~Zz(MyLNTzz_y!ABCW?E`np+_G6Vfr#?XeCyC259Q^1)e`n$`^E@c?_Lg*

%$@USjzVC%1&$V9iwq9vn{6YD?v$ei9U6he|zno-*t)Mkm zqz^g(xsN%PgZ?~PNr`&90N={)6FgB_Ry~!W@%{_|)(Sg=$^v*zSp;kax(dAIkpGDk z&d)p9cpAm|@^0DUT(gwOU0c;;HV*&Q^p))JIe4OivU(~_LvdlGzgL*-?sKTKEA|0e zNQLGLS3Jn99~Ljj$g||>gk|A3@ce0h+Y%(s?g>GHW#tSl>e9Oh$rVr9CHYkJfni$m z*AZ4>>R{-4N@l=$7NqBm@_e{FTJxk`O!D9F6{e!Lu5sv7k-Lx02S#O9%?G&y9JA!J zPz`p}?tgxYD>7zpw=rm8!ygBtBj4|D>%d;N=>fX5>Ea*HfP{}>(*)q-d0(gsPs(g> zz6fx-|J>)@`LsZP9@*Kwb4hvI%!Ira(89387#Z>{GU)f6b5ITeIzZ2yvPlVl76|@? z6{YiJI~C9LgbBToVARLjrg&S2d+zXtvZk$=44MzH3R`x%)1VO9atyDY@QCOgAOZei z_BRtGBUWZQW=@&!n*+eBYrEc@6j}cA+C2t>?|CED)Cq7LKwMO$^ij>lH(l|%=I15GhmM4b==vHi#1r}^gu_zrK zL+ZQO6LxLn`?u@ZT-v*9$w^J?KryCgjkw>;N8|Fp^7*!m2t&A@AFrQJ0a!n_LvJAP zKieUcrWn#J11AKD1GteZYwV6HickvfW@Tea=6i84M$tY*IuC=KBICn%1+hJ0YHuCh46R0Q ztq+JEEi@Q822TE`=@RE$BD0>816A@r3)VsXq>P^2=cYwz{1i3@VkLU5N)L!tUc@gY zaFB2+7YeoU$0YQPSDyF?{t86m68?+O?%A4YrN*_JBQ3R3(z7^ndxRooy#3qH*>`}$sE)S^AFRIyZ7eiBCcNMwmHk4Nyh9%+T*&5R>r%3Ih-Hez%#20 z%16K15(1Bq`{U|VXizp&TKx-PH`g_k0||q?<5tSl#wn|5PFsI8zuNzFzIX{QPMoFl zS4mx|^)#8q|7$8|Z@~!OLkQmUJZ4U5T)(Felx@}p7%|iKxrmERDSK(;l=zN&OY(Fm zY|#o7mcEmwUjFeMjQ*ryN@qMXr4!-FYXs0U;kN0N)v3r)AKm?DO{$uG@=oI7U|n@I zEL24mYm{Tco`WpbsECc;jwTYl!V9zx;2xSm0=ZkV8ac-!iTZLW7jf&kpJ#Ix`a z&Ir1j(%jvRe+cnG&CL5nY;i}NCbrh)c78^~rOV>RFNZmBbrq@?h_n8H6H^=bQ|?_6 zv-iCIQ7Im(2UJW2Gs5h_=^8D99vVcBoe8qz#TCW=ym&byW2|SAjfp2(h}a|qK%|A5 z2IIh&&_d=e#u_+R!KIRTF;tG#s3Z`slHLqkSNA3xe+-K*mcFNB>^TDKnP`=^bTAuz zm@#C0bX(zCYokGbQN#ZBM<-&h%`ntUR6o<2m6>AQxa(2*1T8rg1etK~O6BjCG zh!~g#`*U4*TWid-Mgg74A?;U2P=BxIT-jAKobNiwj!}el{7%i`SkcSSlXl+##_!S0 z>d}C8C;ure>^y+D#UK5dEm~f{k}3guzTBNq9>D9)fsV+=YtV#>k(Zq=vr%ZD%5t0l zr2pue=)A~lJ6?o zVWVWx1N?f^J6}28Uj^DaKZi}My?R%o+e1%ex-@*3I4le;eg9M1D_8jd35`6tCIdj? z(IdD8{chv?JvD=HMgVmEDe0$LpgkmB8}O#PAM4ak3olRDoMi@Q)XeYA^F7jmku@(& z8Ev|a1gLL=FMp-=hSe5I+;vumtMrkHKsvF7IYPj;1_e(j^Qwa@=O2}yOtvY7Ot8+PrV%G6q+N1(2PEmWX;(TQVIw8XC$X09;;erbh1!I*)y$p2|xjyB7{E!l?Wu zxmj2r2@q#_z+!XtMhs<2k_y_l)504gNb9#OKtt$Oh|xKc5lU>6m)hWzXEvo#_jphVD(13KkYwAB51 zC`#IScYEO*weB^=0*))+xjnOv|DyThz{Ku=yTTphvvWr8{iPRI{hELv?A6hH@zlc2 zzFqdX(_ciO4=IDBqdhNMB|sabQ* zSyMEvXLF?(bT`Lw#e+bx8Fhc`9>cx=sP87q+*mN*QF;S%;o#Db;9I z$%{R%Bh||iT_)S?>4&V_zArW^|Mf5fcYx0^gn9h%A8?k*iQRxglU9zmx3=!58)4Z$ zm26ASwQe)?v>(aFsd`_DFAnEX@r=q8g;w2w27s?e#Rq_Y`P|UY0HWNw^Turp4t3Oe zy=pYqy84&>-Cm;9qeM&f=%!!b7RI(6OV?XC{@f%7cou^G`8aTUQhNm=;HD2SJuB>fTt~3m;kcx8Y83sFPDRz{Vaill6d8g!lJ4X@62{b zW6arBj6XDMJNNWM#|8i8;Z`JVC=b}}wq;}r06)JI;IvK$n<`Ete>NdD2r911Z&9!8 zFOmsJG2*O{qLDRd9Dd?C)HKXA7DJes`dlfb5}n=m6mVq!#hcsIR6_ZAHPd)cOaCd) zxx~rsAB6r4+Fg1io{N!DRau`dp;+{Do6oz;kcR3AFj2UMm2!skXE#o^z>(XAl>M+b z9@OFx4FSBXtN)bi1U-Heq5(1|8=6x&@9o%JQpN}OiK`DrvZ_SBW1>*LwdAH16Bxt( zd5h@Nl@1?ZK)5Q(w&f9h8c%0S{i8X~-0j{2m+|66@C-mmMNjoRw`>DY2UYpoOXI8* z@Tgfj_879@*hT-0R*0>0Yp*$?9s(_q<#+cu>pyi6j2d(LF3gEw{gB-Z<6{GELp8Kk2-oO-7Qx+VT2`*;T7>*09#q9r7h05IM6C{8}y; z{XID*0&`ds@kfHJ>s+u`k?^TK)rA-&m#FhVS`j^Wy!uvu@_9wZo`$T#o-nDj>fi!- zZl8V;q9V9-$`v8~3Q$aiOu^+fxQeh>K%2n75>UQ#!cR4UnI(Tw{`-gBd$=dew|SXS z7dxKncUJV#vg^z;rHIt6P+!BZwl4Zmvvo})900KHx(*WpKzlvk2cb2YlXl^5cLCzZVOsL< z4~xk6X9+0{Stjby;CQcLAY`U==bBN5DbfWg2#CCmN8+4WuO8lmwP&buTCbhHCOTdM@NH5)UsKR7DFA!4Mqh>OLb_x%&Fx}3ca|n3*-~S-h=w$Pp&N4j` z1q`GAXmU4;1(0CR(-YQ1xo?>H{`GJidp5hQWr6F~$_yNiwCe}?NDQ3YzKS)EL!m9Z zcr{$*to7^(Fr)b2cCuENfP6ciNfA@Zg!mG7MhxN$H7%>lW3vjvXF3!uUc2Kw9mt$e zv`k`w_AZw2`R9NJfV0u&LktQc@)hqeAo2fqC9q&BTk{M-3;d9{9-0NnjpZ}xrL1f9 zD2HkcyA`-YcPz-J(tgBG%3WRqAOULrjO=`>>Zw;(b3mW zeM$_C0DsvQO#b~5`L-ea|GkNs&IQ61@H){B2VU$;N)YOmR1rG5D_GRNF1kvp1wS|*ae-DQ2deTNP8vWDS&~{5Mr(3zYmCA{~#8UBm9G04sUzSB})1w`HTsYSCI%f zl(BP0x3lEu2K;Ut)cLWUVr@0>Ob$j|8C7?Zi${eddt(oZ{(F2Fp6)vDBJrS;3vl$+ zb&1()3m_QnKUezhwF9UY(@cj-29H#~3#s%`*J=;SkI$@&u13%Ccx%o5vn?Y4ceEsR z^gPf*W8NAT*E|8Bho5@x+6Z#&9yS`7}A)tQyAJHT-AQn9}Iac(ty~lNOs65F+F|v99M&}bO3MFttE@0X6?#1 z{}n6Y*8Tc|x5`D)=3m zYwEklm#Q$S;`qE%+u-`*YjtTFTfmsa~_0yM98F-(-Z6BLhUF&?O# zPHZNSe_1~ndXSEUI}TMb*`Tg*ulTPEmzP5}S&7?%Jf?Xh0u*}*=r}H z%qDzhfKs1o;ToWP0;uKUh}In}a_k}t9qa(9Q43_0mk|R{wimtwu-4((FHz0KKG^o~ zZJ+ve)7(bg8f1X}T;%P{At$u4m^%=%Q znVL~k&oJ8-S{>Od*Hwt0qpg6@mmCu%nq6>@?}WpygG-&qhNqFu{ndu>GANlgrjw}% zHT4`50y3u-O`^E}{l@*p2nSGFVX?h%Z6q(J52zQ?n=d<|KmD{gdV8fMs$=f-zpm;q znR3E+T2#L|#r{O{4+^`y-^$EshnpwQbEQ*^@q0Zg6A}y`taD>`1>YnbGhxg)+o0cE zwBmGu6T$&-%R*ExhJ}ODK!=NBe2eN)Ox{`G-q$DI02g13QDGeXk#})*fF0`1WM}7J@6m0p1Snko8n0M zGeagGkD27~V*Kfp(YDI>-Ww z$#O*(qy%?>Qi-bhn17|C_CP|(lXIZ@M?B&0-W`WMVQ>&tag26%?%5zy>|cONCHrL$ zItXr^`La0 z6aV)XKvn~D6F}kcrhJP+9vzLfWN|CL+gI&muB*SSjr-He*)K>rF5CQ7gh~z8blc~| z3FJC;D?hE&{;_-SRenFTbDt`ty?I)8%B`ykeop#Qr}+1e=?v%A+_JTA%JeqhG1tD1 z-rGS5x?S6_Yd?B??=aNp`nAODU3`7!bfTPU;6XjL9HBv+(GQPu8Ck9 z{--w)Rvo>ODu9dVK;&Z5F)ElAZSk0jk18hI+U{?VL?vFjjR&;v;CmO(bGS7m5Gw>D z^jD?F!YzMw zSRy?@u*6QKb~>I09}>0pzs3(fBm=t`(!WOoD(GYd`h`Tn4>ycZt2&d^l;RLHmZq5X z?}o@T=Djfax*tYQ9cepG)UqWIcGxnK{3;0sar#W0GK0| ztAzkVjp|od_R8;S|Fzd$T@MSSYOA#U=0~wN$^hJd86Cog1NXJ> zqvGW!ey*Tu`0WvlQLb)J5wjJ$dQFLfw9mLrxqNRBS#Roj?NG6 zg}LX&I4pC!PQy27B540)ws9W{6dy&9UDfs)O2XzSdeCS1sr^^bA?&!e?<#YH-$zHX zIvqyGXQVWC--JaUxwA(k@N$KStof$m(-hcS# zM}PFzs>AcES7*WU9*YfwHHGxIjH?%j?5~wgNc)71g#VCyQ*gvz-Ky4Q$bW!8B5nO> zIoY3ccqNasYRa~!hxVr6jj^|({B1d}oH0OKev0#9T&>OltO$e@rtf3Q=WV7zY6@(m zjh~5VGX2#k{2}4j0}792z9K6hE)GFE)7r-!=o8>GvjyTwaiwKafvb;7F+I`gc^N3z z1@K3&)zOovp1h`o!NKY?;aKAxSFkeMNq--NsjG`djWa41Sh2FJX&R5Z<+O#9iXNF{C!0 zcof~M#?F6WY#e=9doowJAV30W2Td^>6K)8F|MPu(BES;!_^@AdkJ4X~c%)?1J=cH4 z)bO|87j#N3S>;joS?KqLp;#*>glL!=C4Iw25APwpZH}g0Ye?80(P)mDqAXrjgu%CHC*JQJ)*Q|k{1-FS^a zwh%II6hPMG@@h(oc2M8SUdLg^GE!WL1Via8{kjQE4p=`bSUugdy6~wG1it+|PyKebtJ_@yB8VH2cONJBb(C{G= zzV?{m$pEU!0OE=T>@6Hlv3fTq{NKQ6n5-mjY^*fJtZd^frS9vT>JufmQ~lQQc_Scwv5vO^#kjmp*k|L^rMxj$%nVnM~yHf~fhpg_>KA|}S$ z@Bdgwb4HL4!*2GZ>o_xxk+UhTQ-g{sl0UnTcJ9pIilg-`(b~NZdAqi)p*KzYzkH&1 zh+mJ?TI|_@-2>XE3#-3RcHdo%UQHc9Yo-PYy1nSmETW|$4!Frp6m?2I zNN; zEI)=C^GCQlNv$?UpT8PBo&{@0gGG*{8Lk83;b@ZqL-ER&T8pqU;WA8?N`qs`h<2ry zl23UpvG#84KT`uJ?%*4;0yoCNl1C|Gd>l`uq7~&vd)nO2?@+@j`*PB88o>SDf57~c z_4d*eKzp8c_&r41K@*^AO>y77E=Ny8l(X#r8Bb>ryWdwk8{88=Ch2W(%h6!rI2eDa zIpzxxHhVh}BovC1zu)(w3UmMhBGq|i!Jru3lw1;c;s55~kc zM79UL#b?W`5Qv(_(1-0thzpJci?1d3H%-NyAYD*!z>EOW2R6%X7gqk}s?)<&!C0Pa zu){RMitYxVX&?BQbCwF$2DC5vrVYZU_~~ntxR@9R4Ynly#+U*Gy^)PpJfUT2iosE< ziXk0L4u3@1y`waxRAK&c72{YwF_JssY2W?D9u0aq7$y;EsFdb)rscK?!Sw7q?q zbD9cfNITpbuF9r?=xF6?>uoE`9lG<5j)rKx6U3u|xWHKW)0eX#^#lFVsnMUqfE}io zk*u!eH`Kr%e&y`PBm&({luDzT65-3X<a%8c;W7>w;|h?JJoc5o34sO233c?4%Fl1juTuNeI6eZML8&>f@J`UzHWWZB~IjJDPFIyyj9FlU{r$um4#rt?e#(!LR%MQ>Iq+rDlQuG!pPRTlhvB1UJF`t;@A`0_VL)!FI*2^5y^-REY| zjvfCPRviOXNq|Hw_kcy_?H?dJTP(v@j(uoF+iLBhkuu{ zjtGohi5)xL(W*F?-2yAmozNEUKqcY_@7t%C8-cyHWeKOohJ0U5b`7Or>XG6rCDg<+ zGhHyb6{TQ&bYgo1_)TCDKCQx?Jv0#rpQ4lxE;9<@(t4+uX(Xpb$KoDh40UF*E;>2+EtFoTpK-caJYSVF0v>EfTF#r`_5k*T%)0g`!Zu2K-O}?vb202ftKj=zRD7bz?(TywQb(@iJ}EQ z4&L)B#A&pZLdU@ydjP~MQyn7}OVZr~;qCK>^hW&iU9(Slq6j0a{6J3_UTegGCnq7HF*7I=8D&-J921d{1LAJT#_P;3;Q*HhA(}&U1uQWI^2n$XXBO zE~E;TEzF|T@n&K=6BX7SCv2*L+w%6ZNd8v61N2Y;R~3UdU42gxafs<;$F0$x zxx`n>ZpWorp*MX)xU<)4>9Y;k$%vgb_) zxO`%-7MzCbB3~&lEpc{|?i=lbOjlTW%+&14&K+@#V@Ex-jq7!9kZ*m=N+Sf;FwWpt z68nc&!z1ieFeP9XZRvsFOl;=u%v;=E&RgBpU5`_siacy~+tZ_JTi(sF7X$VnGY}K? zC+B3`FavN?z{{yU=}+K1o6Y%6H16k2#G>G5FihpCDDNdYeP@_( zeU*KgCcorrFuD(QF#+JjO3CpUw{f()v@r+Ptn~v_<0u%nJwX{?u9z99&Ek&c&b}7Q z2TUc?m(b+DJ9VM&Z2&TON{s!cLbZ*A{w+gkV@~W)>xYB&1m6CKPUG|atz+sP!NzpN zyOBr^!+OxO@D-Wt{^0DFH#AJy61OZPuV&JVGiUEvY>mIp`2B+17g_T6alJ!O_mQu%Vbw*PFF@1rmWl?8+$JZs+IX-MLpUiFfN4{};f4?cFT?&&5 zxtH8;4HYZ2H>E&ae^Wy$PQ3KoLyZ{38PLzfO71+8@49q98@B)W+<~jfQQjz-3|uri zcV%X%bV*{+tJ)g&nYJ;F?&4#6vId>gIpCZ@T(DH|@Owi?#GP*87tJXPH23Ki6uZKn zuz%WwzAK68-;wk?6)Ok))A{<&0%q*-c#o80v5TMrN=@~h@25iP=DXHNceuW=7m8%< zf=SM9?T3|$O--d_eX_Uq%bl6Y82Y=2;={Ga#Gv1PNvU)FG%5#9nCKK>j(4nccy9Jg zZuH$y?Ann{`AOBbP3RYO1_r=qw{KwX9dJM|h;6S_SX;emnM!qTaa|o>-fF-f{!YXH zs4DUJktAy&U2x1l0T|dr5@j-;Fu=o00<}@74#uihL`TYZR<7WnD4IdezgXpXvm_wm z(0OI)N0#&+{Px3*$vHh50%1mG1BhPqA+%GgjV|Os)Pj}#J$SgX8WnK$UP8vF$;A}l zwhcig2mDRNB4ZIPX{oz}hy)HbOvf*6DZ3eNh2K$S2wSzc7JvQaTAu)udi^u_9&?>H z*pV1dlTAW>?yuHRLcS}QUy$-5?B78F2Us3aHTE1+(3*(&q!)Vjj&+o7|K- zQ3QZ~g~5YiuZxr?rnwnpQ!Fd&4dBS($qD1VXerKStELCm7eU zpZT=FO8?#Oz`;Z?fU?0T4GES?7bvFIm^O6_kyVAe?Oychq!TNv8qWT8a#(_i?#9zMQuKJEb!MzKV6mn!B=jN7sJ<`8u;) zQcm|GOs=aZ=zb*cjj|bKL&SDmV*mla=St<>G$z!(D0WJ>Li7P7V7T_w-H^-ljGfgF-4aMA+^trH`BwU6H@sA9sEZ zzq!w9c5A!gz;f?zAOMS+^<7oc`Fz_#eH?6rdIY5pxF*OxhnjU+LGv%na~$;P=Uc3^ zxUeNMUrrMpn6`rs#?_DR%~1Qfx1ZS@Oa^}8R+*H>!6=hdC%cspP}7)BDyo@?9hQr7 z&qi6WQn1~Up%6y2PWUBFAVNM9zhJu?Qc4AUz6qe~uZ_@y^-;&*+h3d_On$AM$^xRq zO_P+nEZvGa{9g0&LGg2@j)xoW7Nn^2US&=sB|^(isQSd<*XoX`(*Pr5w1%fZ$hQS} zw$8=I)>+9q`5QOPz@gIZSU)lWzrR@bn^uSe0Puw8UYW7^xFemEyS-hYZ6A#WMkZ<= zy&l)7=*VBq|3(*qaQtN6|G6bUIJOO)!*P)c7DTTw7}Xf{iq{D*ACLMNwhwfV7f2&J zjxl-^92Up`m6t(fMvR;e7k+RVU?_{R`4%5kfBbRoYY4gQVxF;c%F+JLQpR%VYULoO z+}}6ce!LGqkO?0~Gfx1`<*tskzqP&5bUM-JE1U*?7Sv1Ob^Bh}I^wIEth7ZYI533- z)kAxM=_8C=N@o+;rtmWi`Gq=7YJl^H&dXFfV>PIHrmvo-382ggv}Y5Cq17C>cu!ff zW&@Yme}8fQa)0%&n-vODH~vcy3bJkv+jC_7h8qvPy2ao>r6Dv zlGcci3o;nqX4k1tr-M-{eq-@vh&r2*2u|azFx!I565LMs1_Ln8p@`dR(W;v>r&fYN zg{)9@yRM_pSL*YCJuy1a+iRy;noZP8@c9X((CQLyDQ#;+bH|&1mlrlrgX^ z9>BBkdFl%Ow|D&PL8UWoIkdw^1^Yom2`O&Nx-n&{01A5?>=o>P8r!UqpgQ=~=h6Q4 z)H8$@_=whLv9QvQsNNqkS7GoG8cJ|+Tf;5Ys>f%8u_a+NM9-DAS+$`M#PHK*SpDq0r)Uwcm;4(0lGrkNTh*-w(i^B0%rect=I_w{|w z@f!Skj+4?(-uV>BZ;k_-h8vvWA0UEgr@lU>Rs=VldALHA#DG>|>ys{+xZUhVl8^T0 z%*-^c8~p=uv%!7n6FMHU5Qh0S)=%JAr(Ks^Ca)2Cp)KKiy_>s?o`Hfav2tyWKft5r^lpVd9^k<{ zkDR)3E?BQ%yD3VGY8CgqbFD`5R5Hpf|~Tf(quBvNs@KL!78LbVo0R6UFbxL;Q_* z-u|~L`U`((+Y4<$%~y>S;~RYwO+!%3&}5o>dcIp4+^B_oCceCltN&3zAuObV@QtTF zK9h4sxH%|gIwsB&d{D}J3zhHmhb%AMzca#S1jiS5kJ3i1$8EpD8&fB7#-p~7VzG_y zzOR6I>5I`{#4|Z0ey;u1+QA1_)P$p>OzrW`&VYW%u=F4w+WS_NH~^9IY&lAWPp0SVHmO_ z!#Qd1+Eh$Bz5QQk&jd@+)h_!WxuT-nv4H@fa@;H?V=;Gu2v%N3J znJIWSie!t1Ty4fWtpi?$Rv9&Efi=qMG^#=i-X>{~9daUQx|VPJ&;wZPfX}VqihZQ2 ziMFGiOr+*yH((`(3XTziFEiQ{C5M4pXk9>kfC@7VMN*PB-NIc?>kt>Qb|fD2E3_T9pcUe)ZP7k;?WU?nnSzJ@bVz^h zTT2U&VX#v(1Rd~wep!%o{awU}i0*;~7m{2oXs;bS+O((7E~8H-;|7P?K6Me2Ll$+9 z@VdU2T_tY=^sdZ~rYsY0raUR#(W`3G>oefrzW2DW*{TXvGdF*(hh676)2u+{-GieDh zDT}wJS&3>0fc2A!cLCiJmQ5IuX1TXI?x{|@gjoSu30~#hOQ+ZxZmI}l_PLv+p*=tp zWH3}TT=SE#;23@d=8Gr-n2Ib@kQcfM5OrO5=38I8`e|_RO4F2*aD!0HJXU_vDj!7E zH)u(YK7>3f76pwvjMTzqqbbQ9VQ`6*il<9skw+A#c49rkJN)4mGjb6n?8if240SJP zh&3+VP!1zzT1yp(G*4Mf)c4?-AruRDQ8z-7mu_zGFB#^|6 z$MvDq?Da`R$EAh)l-?jiyssnlOckpvotIT<_I8|!=@1#Xnjd4o+R$nlJ;6nE50uhS zQ!`TSUvZR!z6#HTJ)t$KNx3K`8v6u@saOl8=gQC%F2)yA!Xy~> zX{YNbJ)K^UQjE~RpYz)2A0#W7%3FVx1x0hyiJB%nae^)!e3<(lF*bS+7*`>fTYE_3r z&yi2SagaFW<+8jif@x7pVW((+*`=T!?b!}#dRq%EKh2^{H?~f`=X6`clLlk+s`Ky_ z*koMOlix+WVsY`-?8q`qhuAg>dodAyW`RgcTf{;qBC0ox;jZ_6oBRJs7&9tN$2Jg`1_3 zvy;}Tqc;*g?uwECak@~Pw811P!s*)s^L5REQyrVCayF#ISQ!j=O3>RnjnbYtPKK<^ zNV9TZ_xrKy@Yr9~NeU*9Bl7IroCmIEjha-Ne&6cm(`Hyc9LecBDgM+u?n(z zKawqQ=rzEl65bj{G#Mesis*w^SamHKeZxAdY^$=i)CA4=DW%BUpSSXF4A?rpVKP@E zcRNU9nBYnl=08AYMO51z?0;zc-MDI1G(|RD;BF+iY_($8lq6;v1CLfM;>tIcM{sxF zdxJP1Z?9xY|9+Tpu6kK?G_#4<`EfeL{Ocu=&oPlvoISf;XDYl1uS*KMIj*f?ZrR@v z%i-u@mo0t)Fl+F#WgArngPyo%&gNVhcE?0<3eGy}DWt@3mN9CN4Y)iiMb__#zo;v$ z3=)LD$%6>04dZX{iT$j%V0)$R9$nl1zowq?_mk`gq=(&@+9{{6Fhi0mG)uy57q%d} zmg(W3BJulWshFIR{9b-e+9{cUU4l>T-j0GFWn_|GkNRF*O%V1~?iuW$qmEC$g*m8> zRHuuBH>)9k6)K%9CPB>G_i;_W@$A=B*R*p`d!OLURz7U8Nt1YK`WKG1>6X~!>J<6y zR%i9InIW16o@cABWhw$i?a#)R#*;08+m)*5!s5lsP>&Ct>aBCce+;mEfc=ht!58F; z(tByT(>_n7bf^1Vf;%+$wRKe=9%#IV>M|*vF#Zm2_x*GohW_K zz52Ia5RoGD$7c~Agyg81NH2mF z_ilxZKe%_f?)NUO9YF=BBp=KA&3#DaydE9Nakkr>BSUw}w99X=8Q~qO^BI)ZKChZm zS9Yi14=@uEh?#&$h^TH4^#tfpiy3<*FfQJbAA!8Uos#`EHC%L1FSUh-lViHs2$q&c z5OO|Pt+@tXr16DpC8XZ_L5-NgvR_dX)U`4{pQ3vpbharuq0@VCO0D^l*r44~{N%&d zolwX|1+P2WfK;`swIOg%HGP{E$w@3_Yg59G{T=&BMDG)@@`zEk-)~k%N`PgUhiPwQ zW7sP)LQpk9A^cVloa4ytIozeC-JBnqg#_$gNl@u8+~VQH=%qNpw=uQCnB24a%0f)- z_^)mL))e^s%F)rP7`xNJN`%?htqZ9a0GPctMp6hcY*f#O)Bry$%T-|At&_$L4u>8E zM64Pbvhk?v5IF76OG26rsGS(?fL|+nbgHm}xyFTk6&~`3H*Ep_GWPKqjw0^`{#ujs z5K=efj}L*U0p@cXi?Os`A$Rf2FFgO>7CuH6>SI|$0&CrluwzeIEJiG1YMZ)02Cw-K ze__RcC<3Z&MQeg~&f57mDjXKl=`P**;bu4I{9aX}$$2o!dv0I84u}xN20BqH*NCt- zvFjT6d}CwNiNxo*2n246!8fCKl6%qTKvC`5p|KBP6+ZfFD$5#Q6J*8r=FcVZlJhGD z*x79Wi3mW#=|Kl8hy&5ZES8Jdk>|&_13$o=Dk@xP2Y6ww}MWJRq$H zBX_3pIVzIF9jPc^K2mx*x2`J|5uT>rufhKi9xPY&TWwttQo|kUUOg^|;xvD%Wefw) zmcqA<^bu<~*eG)Y#WE z{BEMYLxcO?bH4hc%R?nv$WJ7MxF+X{ji30=Y`19Lhyofz(^) z=JBAFi1;+3oAdHxtvV2_A&QecPythnE9dqbg8irv&w?)nI2zO^lZ@?Mnc5Y+90P;S z+>S~Ax3=WQfYG5l$ac920S(?Lq+~qrX}igyvv`wd-|EyOau^iLFh?tbVNg;{O$Q)| zMb*P`p2n{oDe)9J9j;mmEBl$3Zf{kBE%!4p2~VIucn~EG5J=-286YdytUvyYrEXB< zvL|7EZr(k1y&I#pv+L$!Abq_|dX}&mv=mudk!m*pDm;V?I-AS@zkMN=YW|H0ZL}Dt zkpl|>mi}0V0`}ia)uLnV0V$PZ>4Zoyh5Xr2vAV9Ci(ubjnY+dknZVb%c`ng^0K0Yp ziu)|dq&Uxz%*9N>HAeSr<+v^P1Ol};?p=nk8I(rnD$sL4Ftx+LF#LEO6D&>_6J9kl znLT<}0TEp>we6PTE|Bl@%uIZ^8#Z2sx>{IgE<^8|qPvIAQN_2XAg9!j)}QcdJt7a? zaB(hly_6}H2m=NkDuBtx{e5&dr8FMC6n;gsFlMU0&63oEpqUPeI41(5 zZQNBo5>&2;WsRLq$k+DJ`?HerE#&#P!f7+s?gh>5 zAFhVv5edXse*0M@wO)$PqYxlwV=;}|3I?yRhr8lKAHM={Q9woK*!mXqO2CJ#QsxjS zQ(`{ggK^iNUK^Wp<}k@#sfg>NLh!*e5^_*&QbctFGCA$u=anE%zRC`h+Na0ZDKXm2k8Tua6Y2_B-Yd)AZv(R@z6UUO)SRjPgf-O~2?!t7Ywu7E zzBQLF!3^9)uap1~Hr%FJgjNJqq@+e;B61cD7JQ#MNvv=AU1_Fvg;n|3z^=O}!m8s%3G%%NN4ADo7mVJ;4KmvzWrW3-FB0lj z1bw!Ess_>)XT79`=N-n>We3n}kG*z(G?DNMgG2lV&+D#t$Wfpuqx83)0Ls3U%%fD= zS&-~K@e?;|f{r!@X1C1Tbl-)7jNh0{V*I}pgbUz)SU(C#x>|3CM~o$OzED;?GdlB1 zIx`5bvmbE<0;sNk{%e16*#D3@$(|)MWm*&D@@^Zur93vw7x6$(UWevq(6YhKn5{Ml zEdPCNKD(tfHY|iZ+2rPGnbd=AUQML69agxv4p3(Xp6iZWugWgv*9wuG<&RxEpZMXY ziz9SBqGOB?H60wjvVgi0#Chf86PE#f7dC#I>g&Ae{UKHV>)n!vQJgIYznp4*ley=@ z;pXDlFf%eFiC#W?w}`p{P(I%PC7!4T0$thS`@pO6trESZ?_}4^7?L5;^zLYLbEB>d zco!!EI86w?I21>QGGegCgDob=IV7M}iI-Eu3&{$!oLW&3SQuoTa|R#kha5T}edtdz z6BaWuTeOkI%kn6?_LdM>OAjAxOs>13a<99?|D7eGp`DdU_lPE$;DWd~E{O$~ViRbM zMpGF&YsahdH=KdZe)X>W`G~qU_Ut}i{(cL@!_~Oex?K1KwA4QTKAZwi@sOvUupmCHo-Eu_QyKY59RNB9%2W3hZK3P>ZP+uNgR{GhN ztB*KZo`!89!cV~F&etZ;UzT~5PoM0LDKfVL>Ve`5uXst8XgzBzFXXh^cF9x3q(6DV3WowMa=xasIXf@^22c0J*40=yy$p z4yUEL1FT zPkmj|Yj?0iAJ5?1#+*Dvd7uSlPN(<%+C-M zu5pUqd5S?2NZ!&sZ3APzv9cj`0rfQo8bDN2V(gmF1-Tq%M@jv~t0}f#2r8B-@?eV6~Yjtax17Y`J z*&y^;Ilo?6$iX!}U%)*`TMav=A5RhisaC~tB>{I%Z50kkW-Vd$wW-Xq2)ljVSI&{$ zL3g=JYsdq(Lu3Y-fn{EmVI{^@PP$9dwu3>KeDXDTUz+lMB775M8Y!@0RD}1eHhBO_ z%(;C@5)dW;$IYXtrsS649y-h*jfTUzY*X|bnf)cPm6|}G@~@cVzGy`#6e(@Iu^L3y z;SqUQ$d+VZx<<~)UU6V*C+5h=-CislFxThZat&$?@O_QQaT21tRx`c>$A$bYBJnoC zrKC`lYNmEsiqUyg?c^>RL{W!(qR0eQP=1%2!qUZp2+4!Pu*Va!At0+) z#WcOVUAFb*4eU!8v04weJKEf^`VtB84k}p8e7gY(T`J+y4=2-AIrgGFS+;HOJ>1J5 zLmEOl!R@|enjzq-{#o)iAyl?VzBq%wl(jo3Yw}@GKOQ@+J(Umv-^u62x}(u6AyFW! z`0x>oI~0*|b)Ebru&_5Er#(Xw8;VRgneUhu9|XNVn$>gCFoIl*Dp<^&sVQ;j`Nno} zixP>{{-R35Tb-y~V*+(@yC5OaG++@eYEoR$q!c~sY=AO^59#ntdl)?uPbj-TrN96M z-eb1IC>q!q<0d-Dj`2w^XYt>6)k|Uh;Eigzh5Po>FaUp)V$wn(5RYbZ)gR0+W&~2@}x31(~9u)Iu216W(2&sei_F3?F>Zk~qFcY*?VAp1*;sk4}HK;dWt!4_Y-(wvL?SW6^ zYftg3Z#5Wgk7LlCY&h3Z*@nAG3h!hw_10pGtab2IN(&p-8CywbFP8;n~7OKxNbQhMN(llc=3x5nU zAR+gVhRakWJwMsi6ysCYU*etN_pg zzzJ#T_%I3UDlafzp|Nj4;7{!?LCE+(`18_1R}d+?j?%3JRE3C5IKh@Y>bE{olUfXi zva!!b!kSCJ(g!jR##UT;Ey~)>yDV88xq!L^m9S@u&ul zEkpd0yCt}4KQ#7)6vVEov{OpdtHRqa2HS|&{vh^qSamTzFSOfh7|19l!Uq+gYC?sLfYEx;M=)Hc z8XotPX5*=e!YvI*8xyP{SwO+Zg257oEsheQg|jspwir7O7uU~i@eeITKp(FndKdwO zl%qid`{%Mh*q6YXPB?c&nNcyv7jYjjZPdkVY~X79xdYgO6+q^Vpl{EJI3U}VfE=Lk zwp01f1Be20Ma{SDgLj3z<~%!0=*#ARATWq5k&$-%!b#mA&0nPPzGHoSeVtrj#h@iXqz(kP$CJCg;4Z|Cy8 zbDinG5>yWHoe2@`I zILH@3AyPUAn|8f=v!_=tp3Y7R$PfJE_Wb^t&_$Db_m4%0zHmG$%kYeb=Ub(IqJRcj zG%%1S%bs}oo`l+wrr zvdnE`4*tIRt-p!j*x5RGkY`uYSGkUcHYDoJ!)THQY-rzbIdK7XDP{o8wIx9(R4wK> zG?gJ6kfneLq@1_GNTwB@#FcWd2^v6#ez*K zvur&9Ckv#wLODbP$yUvSs}3UxY1Gfi4BzKvAMoHlrAWWioc|xvP8>m~GtUChu^YUm zMMr9a)U8B+Ve1kYzF5VW7XbRlht>TNswvj1f3gwPAHq0)clVRX1X>>dq6V}4`ne<| zv_ua2Q3ky9_XskWC{yxmhF-`{UT64^@Qkp1+24+@ApBZ}g+vNgTOP4PBGg$yTU8IF z>FCR#AC)s!US$NoG3@=HF%xJ4%VKJ#S%b+RvTvM+`%|6B-00A|m6c1t%<|Fy&K zy6-=CAme}maOMyT{^M29==;9}tnb>;ZwnSIlsT|>ml@#T{|?~)5A6T*@4R^akMXP^ Z+*`*;!siELYytcn&_A>{XSc(-{{la_^+^B# literal 0 HcmV?d00001 From 99d9a808068bbcc6897f6cd0a57c4c10781bc9b4 Mon Sep 17 00:00:00 2001 From: d33bs Date: Thu, 9 May 2024 11:59:27 -0600 Subject: [PATCH 10/11] remove skip content from pdf --- src/almanac/_static/custom.css | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/almanac/_static/custom.css b/src/almanac/_static/custom.css index 345e1eb0..48685828 100644 --- a/src/almanac/_static/custom.css +++ b/src/almanac/_static/custom.css @@ -1,3 +1,13 @@ .navbar-brand img { max-width:60%; } + +@media print +{ + /* Removes "skip to main content" from pdf output. + Reference: https://github.com/executablebooks/jupyter-book/issues/2045 + and https://github.com/pydata/pydata-sphinx-theme/issues/1745 */ + .skip-link { + display: none; + } +} From 5840261d0bca25c6b860739a5a4e37871ca7114e Mon Sep 17 00:00:00 2001 From: d33bs Date: Thu, 9 May 2024 12:04:22 -0600 Subject: [PATCH 11/11] linting --- src/almanac/_static/custom.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/almanac/_static/custom.css b/src/almanac/_static/custom.css index 48685828..14a180cf 100644 --- a/src/almanac/_static/custom.css +++ b/src/almanac/_static/custom.css @@ -3,9 +3,9 @@ } @media print -{ +{ /* Removes "skip to main content" from pdf output. - Reference: https://github.com/executablebooks/jupyter-book/issues/2045 + Reference: https://github.com/executablebooks/jupyter-book/issues/2045 and https://github.com/pydata/pydata-sphinx-theme/issues/1745 */ .skip-link { display: none;