From d2165afbfd4b17798c33ac79140c3156f3b620a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20F=C3=B6rster?= Date: Wed, 17 Jul 2024 18:30:26 +0200 Subject: [PATCH] graph and subgraph generation --- pdm.lock | 276 +-- pyproject.toml | 5 +- scripts/analyse_dataset.py | 39 +- scripts/lang_main_config.toml | 7 +- src/lang_main/__init__.py | 26 +- src/lang_main/analysis/graphs.py | 95 +- src/lang_main/analysis/tokens.py | 1 + src/lang_main/constants.py | 31 +- src/lang_main/cytoscape_config/lang_main.xml | 128 + .../cytoscape_config/template_test.cys | Bin 69296 -> 75931 bytes src/lang_main/lang_main_config.toml | 1 + src/lang_main/pipelines/base.py | 23 +- src/lang_main/pipelines/predefined.py | 33 +- src/lang_main/render/__init__.py | 0 src/lang_main/render/cytoscape.py | 159 ++ src/lang_main/types.py | 44 +- test-notebooks/image.png | Bin 34833 -> 54002 bytes test-notebooks/lang_main.xml | 128 + test-notebooks/lang_main_config.toml | 1 + test-notebooks/misc.ipynb | 2173 ++++++++++++++++- test-notebooks/styles_template.xml | 123 + 21 files changed, 2974 insertions(+), 319 deletions(-) create mode 100644 src/lang_main/cytoscape_config/lang_main.xml create mode 100644 src/lang_main/render/__init__.py create mode 100644 src/lang_main/render/cytoscape.py create mode 100644 test-notebooks/lang_main.xml create mode 100644 test-notebooks/styles_template.xml diff --git a/pdm.lock b/pdm.lock index 7607253..20f19b6 100644 --- a/pdm.lock +++ b/pdm.lock @@ -5,59 +5,7 @@ groups = ["default", "notebooks", "trials", "trails", "dev"] strategy = ["cross_platform", "inherit_metadata"] lock_version = "4.4.2" -content_hash = "sha256:5c4c7b58272b6a8845865dde1fc6c953611f3e9424823eea35682da5cb6e112c" - -[[package]] -name = "alph" -version = "0.4.10" -requires_python = "<4.0,>=3.9" -summary = "alph" -groups = ["trials"] -dependencies = [ - "altair>=5.0.1", - "networkx>=2.6.3", - "pandas>=1.3.5", - "scikit-network>=0.27.1", -] -files = [ - {file = "alph-0.4.10-py3-none-any.whl", hash = "sha256:47649ef9d12ac7bddaa9cfc7510ab333e7fe1c76d4da4d1b09629bbd174fbe63"}, - {file = "alph-0.4.10.tar.gz", hash = "sha256:a2cfe932c7a6a973c718f8c5bc1b1dbc7a1d18a122cb5e438db5ea3a61d6b5c3"}, -] - -[[package]] -name = "alph" -version = "0.4.10" -extras = ["graphviz"] -requires_python = "<4.0,>=3.9" -summary = "alph" -groups = ["trials"] -dependencies = [ - "alph==0.4.10", - "pygraphviz>=1.10", -] -files = [ - {file = "alph-0.4.10-py3-none-any.whl", hash = "sha256:47649ef9d12ac7bddaa9cfc7510ab333e7fe1c76d4da4d1b09629bbd174fbe63"}, - {file = "alph-0.4.10.tar.gz", hash = "sha256:a2cfe932c7a6a973c718f8c5bc1b1dbc7a1d18a122cb5e438db5ea3a61d6b5c3"}, -] - -[[package]] -name = "altair" -version = "5.3.0" -requires_python = ">=3.8" -summary = "Vega-Altair: A declarative statistical visualization library for Python." -groups = ["trials"] -dependencies = [ - "jinja2", - "jsonschema>=3.0", - "numpy", - "packaging", - "pandas>=0.25", - "toolz", -] -files = [ - {file = "altair-5.3.0-py3-none-any.whl", hash = "sha256:7084a1dab4d83c5e7e5246b92dc1b4451a6c68fd057f3716ee9d315c8980e59a"}, - {file = "altair-5.3.0.tar.gz", hash = "sha256:5a268b1a0983b23d8f9129f819f956174aa7aea2719ed55a52eba9979b9f6675"}, -] +content_hash = "sha256:a9f1cc71f6ee89d2f0572ef7254c9f0be702dbd1a4957b2f0d00d3b83ccc20d4" [[package]] name = "annotated-types" @@ -188,7 +136,7 @@ name = "attrs" version = "23.2.0" requires_python = ">=3.7" summary = "Classes Without Boilerplate" -groups = ["notebooks", "trials"] +groups = ["notebooks"] files = [ {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, @@ -210,7 +158,7 @@ name = "backoff" version = "2.2.1" requires_python = ">=3.7,<4.0" summary = "Function decoration for backoff and retry" -groups = ["trials"] +groups = ["default"] files = [ {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, @@ -294,7 +242,7 @@ name = "certifi" version = "2024.2.2" requires_python = ">=3.6" summary = "Python package for providing Mozilla's CA Bundle." -groups = ["default", "notebooks", "trials"] +groups = ["default", "notebooks"] files = [ {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, @@ -339,7 +287,7 @@ name = "chardet" version = "5.2.0" requires_python = ">=3.7" summary = "Universal encoding detector for Python 3" -groups = ["trials"] +groups = ["default"] files = [ {file = "chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970"}, {file = "chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7"}, @@ -350,7 +298,7 @@ name = "charset-normalizer" version = "3.3.2" requires_python = ">=3.7.0" summary = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -groups = ["default", "notebooks", "trials"] +groups = ["default", "notebooks"] files = [ {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, @@ -427,7 +375,7 @@ files = [ name = "colorbrewer" version = "0.2.0" summary = "constants from Cynthia Brewer's ColorBrewer" -groups = ["trials"] +groups = ["default"] dependencies = [ "six", ] @@ -440,7 +388,7 @@ files = [ name = "colour" version = "0.1.5" summary = "converts and manipulates various color representation (HSL, RVB, web, X11, ...)" -groups = ["trials"] +groups = ["default"] files = [ {file = "colour-0.1.5-py2.py3-none-any.whl", hash = "sha256:33f6db9d564fadc16e59921a56999b79571160ce09916303d35346dddc17978c"}, {file = "colour-0.1.5.tar.gz", hash = "sha256:af20120fefd2afede8b001fbef2ea9da70ad7d49fafdb6489025dae8745c3aee"}, @@ -523,7 +471,7 @@ files = [ [[package]] name = "dash" -version = "2.17.0" +version = "2.17.1" requires_python = ">=3.8" summary = "A Python framework for building reactive web-apps. Developed by Plotly." groups = ["default"] @@ -542,8 +490,8 @@ dependencies = [ "typing-extensions>=4.1.1", ] files = [ - {file = "dash-2.17.0-py3-none-any.whl", hash = "sha256:2421569023b2cd46ea2d4b2c14fe72c71b7436527a3102219b2265fa361e7c67"}, - {file = "dash-2.17.0.tar.gz", hash = "sha256:d065cd88771e45d0485993be0d27565e08918cb7edd18e31ee1c5b41252fc2fa"}, + {file = "dash-2.17.1-py3-none-any.whl", hash = "sha256:3eefc9ac67003f93a06bc3e500cae0a6787c48e6c81f6f61514239ae2da414e4"}, + {file = "dash-2.17.1.tar.gz", hash = "sha256:ee2d9c319de5dcc1314085710b72cd5fa63ff994d913bf72979b7130daeea28e"}, ] [[package]] @@ -558,7 +506,7 @@ files = [ [[package]] name = "dash-cytoscape" -version = "1.0.1" +version = "1.0.2" requires_python = ">=3.8" summary = "A Component Library for Dash aimed at facilitating network visualization in Python, wrapped around Cytoscape.js" groups = ["default"] @@ -566,7 +514,7 @@ dependencies = [ "dash", ] files = [ - {file = "dash_cytoscape-1.0.1.tar.gz", hash = "sha256:1bcd1587b2d8b432945585e2295e76393d3eb829f606c198693cd2b45bea6adc"}, + {file = "dash_cytoscape-1.0.2.tar.gz", hash = "sha256:a61019d2184d63a2b3b5c06d056d3b867a04223a674cc3c7cf900a561a9a59aa"}, ] [[package]] @@ -613,7 +561,7 @@ name = "decorator" version = "5.1.1" requires_python = ">=3.5" summary = "Decorators for Humans" -groups = ["notebooks", "trials"] +groups = ["default", "notebooks"] files = [ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, @@ -771,7 +719,7 @@ name = "idna" version = "3.7" requires_python = ">=3.5" summary = "Internationalized Domain Names in Applications (IDNA)" -groups = ["default", "notebooks", "trials"] +groups = ["default", "notebooks"] files = [ {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, @@ -782,7 +730,7 @@ name = "igraph" version = "0.11.5" requires_python = ">=3.8" summary = "High performance graph data structures and algorithms" -groups = ["trials"] +groups = ["default"] dependencies = [ "texttable>=1.6.2", ] @@ -848,7 +796,7 @@ files = [ [[package]] name = "ipykernel" -version = "6.29.4" +version = "6.29.5" requires_python = ">=3.8" summary = "IPython Kernel for Jupyter" groups = ["notebooks"] @@ -868,13 +816,13 @@ dependencies = [ "traitlets>=5.4.0", ] files = [ - {file = "ipykernel-6.29.4-py3-none-any.whl", hash = "sha256:1181e653d95c6808039c509ef8e67c4126b3b3af7781496c7cbfb5ed938a27da"}, - {file = "ipykernel-6.29.4.tar.gz", hash = "sha256:3d44070060f9475ac2092b760123fadf105d2e2493c24848b6691a7c4f42af5c"}, + {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, + {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, ] [[package]] name = "ipython" -version = "8.24.0" +version = "8.26.0" requires_python = ">=3.10" summary = "IPython: Productive Interactive Computing" groups = ["notebooks"] @@ -891,26 +839,26 @@ dependencies = [ "typing-extensions>=4.6; python_version < \"3.12\"", ] files = [ - {file = "ipython-8.24.0-py3-none-any.whl", hash = "sha256:d7bf2f6c4314984e3e02393213bab8703cf163ede39672ce5918c51fe253a2a3"}, - {file = "ipython-8.24.0.tar.gz", hash = "sha256:010db3f8a728a578bb641fdd06c063b9fb8e96a9464c63aec6310fbcb5e80501"}, + {file = "ipython-8.26.0-py3-none-any.whl", hash = "sha256:e6b347c27bdf9c32ee9d31ae85defc525755a1869f14057e900675b9e8d6e6ff"}, + {file = "ipython-8.26.0.tar.gz", hash = "sha256:1cec0fbba8404af13facebe83d04436a7434c7400e59f47acf467c64abd0956c"}, ] [[package]] name = "ipywidgets" -version = "8.1.2" +version = "8.1.3" requires_python = ">=3.7" summary = "Jupyter interactive widgets" groups = ["notebooks"] dependencies = [ "comm>=0.1.3", "ipython>=6.1.0", - "jupyterlab-widgets~=3.0.10", + "jupyterlab-widgets~=3.0.11", "traitlets>=4.3.1", - "widgetsnbextension~=4.0.10", + "widgetsnbextension~=4.0.11", ] files = [ - {file = "ipywidgets-8.1.2-py3-none-any.whl", hash = "sha256:bbe43850d79fb5e906b14801d6c01402857996864d1e5b6fa62dd2ee35559f60"}, - {file = "ipywidgets-8.1.2.tar.gz", hash = "sha256:d0b9b41e49bae926a866e613a39b0f0097745d2b9f1f3dd406641b4a57ec42c9"}, + {file = "ipywidgets-8.1.3-py3-none-any.whl", hash = "sha256:efafd18f7a142248f7cb0ba890a68b96abd4d6e88ddbda483c9130d12667eaf2"}, + {file = "ipywidgets-8.1.3.tar.gz", hash = "sha256:f5f9eeaae082b1823ce9eac2575272952f40d748893972956dc09700a6392d9c"}, ] [[package]] @@ -957,7 +905,7 @@ name = "jinja2" version = "3.1.4" requires_python = ">=3.7" summary = "A very fast and expressive template engine." -groups = ["default", "notebooks", "trials"] +groups = ["default", "notebooks"] dependencies = [ "MarkupSafe>=2.0", ] @@ -1004,7 +952,7 @@ name = "jsonschema" version = "4.22.0" requires_python = ">=3.8" summary = "An implementation of JSON Schema validation for Python" -groups = ["notebooks", "trials"] +groups = ["notebooks"] dependencies = [ "attrs>=22.2.0", "jsonschema-specifications>=2023.03.6", @@ -1021,7 +969,7 @@ name = "jsonschema-specifications" version = "2023.12.1" requires_python = ">=3.8" summary = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" -groups = ["notebooks", "trials"] +groups = ["notebooks"] dependencies = [ "referencing>=0.31.0", ] @@ -1055,7 +1003,7 @@ files = [ [[package]] name = "jupyter-client" -version = "8.6.1" +version = "8.6.2" requires_python = ">=3.8" summary = "Jupyter protocol implementation and client libraries" groups = ["notebooks"] @@ -1067,8 +1015,8 @@ dependencies = [ "traitlets>=5.3", ] files = [ - {file = "jupyter_client-8.6.1-py3-none-any.whl", hash = "sha256:3b7bd22f058434e3b9a7ea4b1500ed47de2713872288c0d511d19926f99b459f"}, - {file = "jupyter_client-8.6.1.tar.gz", hash = "sha256:e842515e2bab8e19186d89fdfea7abd15e39dd581f94e399f00e2af5a1652d3f"}, + {file = "jupyter_client-8.6.2-py3-none-any.whl", hash = "sha256:50cbc5c66fd1b8f65ecb66bc490ab73217993632809b6e505687de18e9dea39f"}, + {file = "jupyter_client-8.6.2.tar.gz", hash = "sha256:2bda14d55ee5ba58552a8c53ae43d215ad9868853489213f37da060ced54d8df"}, ] [[package]] @@ -1123,7 +1071,7 @@ files = [ [[package]] name = "jupyter-server" -version = "2.14.0" +version = "2.14.2" requires_python = ">=3.8" summary = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." groups = ["notebooks"] @@ -1149,8 +1097,8 @@ dependencies = [ "websocket-client>=1.7", ] files = [ - {file = "jupyter_server-2.14.0-py3-none-any.whl", hash = "sha256:fb6be52c713e80e004fac34b35a0990d6d36ba06fd0a2b2ed82b899143a64210"}, - {file = "jupyter_server-2.14.0.tar.gz", hash = "sha256:659154cea512083434fd7c93b7fe0897af7a2fd0b9dd4749282b42eaac4ae677"}, + {file = "jupyter_server-2.14.2-py3-none-any.whl", hash = "sha256:47ff506127c2f7851a17bf4713434208fc490955d0e8632e95014a9a9afbeefd"}, + {file = "jupyter_server-2.14.2.tar.gz", hash = "sha256:66095021aa9638ced276c248b1d81862e4c50f292d575920bbe960de1c56b12b"}, ] [[package]] @@ -1170,7 +1118,7 @@ files = [ [[package]] name = "jupyterlab" -version = "4.2.0" +version = "4.2.3" requires_python = ">=3.8" summary = "JupyterLab computational environment" groups = ["notebooks"] @@ -1185,12 +1133,13 @@ dependencies = [ "jupyterlab-server<3,>=2.27.1", "notebook-shim>=0.2", "packaging", + "setuptools>=40.1.0", "tornado>=6.2.0", "traitlets", ] files = [ - {file = "jupyterlab-4.2.0-py3-none-any.whl", hash = "sha256:0dfe9278e25a145362289c555d9beb505697d269c10e99909766af7c440ad3cc"}, - {file = "jupyterlab-4.2.0.tar.gz", hash = "sha256:356e9205a6a2ab689c47c8fe4919dba6c076e376d03f26baadc05748c2435dd5"}, + {file = "jupyterlab-4.2.3-py3-none-any.whl", hash = "sha256:0b59d11808e84bb84105c73364edfa867dd475492429ab34ea388a52f2e2e596"}, + {file = "jupyterlab-4.2.3.tar.gz", hash = "sha256:df6e46969ea51d66815167f23d92f105423b7f1f06fa604d4f44aeb018c82c7b"}, ] [[package]] @@ -1206,7 +1155,7 @@ files = [ [[package]] name = "jupyterlab-server" -version = "2.27.1" +version = "2.27.3" requires_python = ">=3.8" summary = "A set of server components for JupyterLab and JupyterLab like applications." groups = ["notebooks"] @@ -1220,19 +1169,19 @@ dependencies = [ "requests>=2.31", ] files = [ - {file = "jupyterlab_server-2.27.1-py3-none-any.whl", hash = "sha256:f5e26156e5258b24d532c84e7c74cc212e203bff93eb856f81c24c16daeecc75"}, - {file = "jupyterlab_server-2.27.1.tar.gz", hash = "sha256:097b5ac709b676c7284ac9c5e373f11930a561f52cd5a86e4fc7e5a9c8a8631d"}, + {file = "jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4"}, + {file = "jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4"}, ] [[package]] name = "jupyterlab-widgets" -version = "3.0.10" +version = "3.0.11" requires_python = ">=3.7" summary = "Jupyter interactive widgets for JupyterLab" groups = ["notebooks"] files = [ - {file = "jupyterlab_widgets-3.0.10-py3-none-any.whl", hash = "sha256:dd61f3ae7a5a7f80299e14585ce6cf3d6925a96c9103c978eda293197730cb64"}, - {file = "jupyterlab_widgets-3.0.10.tar.gz", hash = "sha256:04f2ac04976727e4f9d0fa91cdc2f1ab860f965e504c29dbd6a65c882c9d04c0"}, + {file = "jupyterlab_widgets-3.0.11-py3-none-any.whl", hash = "sha256:78287fd86d20744ace330a61625024cf5521e1c012a352ddc0a3cdc2348becd0"}, + {file = "jupyterlab_widgets-3.0.11.tar.gz", hash = "sha256:dd5ac679593c969af29c9bed054c24f26842baa51352114736756bc035deee27"}, ] [[package]] @@ -1325,7 +1274,7 @@ name = "markupsafe" version = "2.1.5" requires_python = ">=3.7" summary = "Safely add untrusted strings to HTML/XML markup." -groups = ["default", "notebooks", "trials"] +groups = ["default", "notebooks"] files = [ {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, @@ -1501,7 +1450,7 @@ name = "networkx" version = "3.3" requires_python = ">=3.10" summary = "Python package for creating and manipulating graphs and networks" -groups = ["default", "trials"] +groups = ["default"] files = [ {file = "networkx-3.3-py3-none-any.whl", hash = "sha256:28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2"}, {file = "networkx-3.3.tar.gz", hash = "sha256:0c127d8b2f4865f59ae9cb8aafcd60b5c70f3241ebd66f7defad7c4ab90126c9"}, @@ -1526,7 +1475,7 @@ name = "numpy" version = "1.26.4" requires_python = ">=3.9" summary = "Fundamental package for array computing in Python" -groups = ["default", "trials"] +groups = ["default"] files = [ {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, @@ -1720,7 +1669,7 @@ name = "packaging" version = "24.0" requires_python = ">=3.7" summary = "Core utilities for Python packages" -groups = ["default", "notebooks", "trials"] +groups = ["default", "notebooks"] files = [ {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, @@ -1731,7 +1680,7 @@ name = "pandas" version = "2.2.2" requires_python = ">=3.9" summary = "Powerful data structures for data analysis, time series, and statistics" -groups = ["default", "trials"] +groups = ["default"] dependencies = [ "numpy>=1.23.2; python_version == \"3.11\"", "numpy>=1.26.0; python_version >= \"3.12\"", @@ -1967,7 +1916,7 @@ name = "py4cytoscape" version = "1.9.0" requires_python = ">=3.8" summary = "Cytoscape Automation API" -groups = ["trials"] +groups = ["default"] dependencies = [ "backoff", "chardet", @@ -2077,22 +2026,12 @@ files = [ {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, ] -[[package]] -name = "pygraphviz" -version = "1.13" -requires_python = ">=3.10" -summary = "Python interface to Graphviz" -groups = ["trials"] -files = [ - {file = "pygraphviz-1.13.tar.gz", hash = "sha256:6ad8aa2f26768830a5a1cfc8a14f022d13df170a8f6fdfd68fd1aa1267000964"}, -] - [[package]] name = "python-dateutil" version = "2.9.0.post0" requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" summary = "Extensions to the standard Python datetime module" -groups = ["default", "notebooks", "trials"] +groups = ["default", "notebooks"] dependencies = [ "six>=1.5", ] @@ -2116,7 +2055,7 @@ files = [ name = "pytz" version = "2024.1" summary = "World timezone definitions, modern and historical" -groups = ["default", "trials"] +groups = ["default"] files = [ {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, @@ -2238,7 +2177,7 @@ name = "referencing" version = "0.35.1" requires_python = ">=3.8" summary = "JSON Referencing + Python" -groups = ["notebooks", "trials"] +groups = ["notebooks"] dependencies = [ "attrs>=22.2.0", "rpds-py>=0.7.0", @@ -2293,7 +2232,7 @@ name = "requests" version = "2.31.0" requires_python = ">=3.7" summary = "Python HTTP for Humans." -groups = ["default", "notebooks", "trials"] +groups = ["default", "notebooks"] dependencies = [ "certifi>=2017.4.17", "charset-normalizer<4,>=2", @@ -2348,7 +2287,7 @@ name = "rpds-py" version = "0.18.1" requires_python = ">=3.8" summary = "Python bindings to Rust's persistent data structures (rpds)" -groups = ["notebooks", "trials"] +groups = ["notebooks"] files = [ {file = "rpds_py-0.18.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6b5ff7e1d63a8281654b5e2896d7f08799378e594f09cf3674e832ecaf396ce8"}, {file = "rpds_py-0.18.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8927638a4d4137a289e41d0fd631551e89fa346d6dbcfc31ad627557d03ceb6d"}, @@ -2499,29 +2438,12 @@ files = [ {file = "scikit_learn-1.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:d762070980c17ba3e9a4a1e043ba0518ce4c55152032f1af0ca6f39b376b5928"}, ] -[[package]] -name = "scikit-network" -version = "0.32.1" -requires_python = ">=3.8" -summary = "Graph algorithms" -groups = ["trials"] -dependencies = [ - "numpy>=1.22.4", - "scipy>=1.7.3", -] -files = [ - {file = "scikit_network-0.32.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6228326cc5a813f4a7c031b64f1276d9cc1d5ccff082e62fb176f1e53ae2cc46"}, - {file = "scikit_network-0.32.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d634aab1e379702134c877c8c4a6803b7d7ba4efc103198474b7e896ec37e242"}, - {file = "scikit_network-0.32.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e32e247728815750b12b950279cae6b12041a0c4bf95d1accdd273b0c1a6ea1"}, - {file = "scikit_network-0.32.1-cp311-cp311-win_amd64.whl", hash = "sha256:c7016dce37120aa527fcff4254985360f164306ed060c496a6cf296a6d0fd2c3"}, -] - [[package]] name = "scipy" version = "1.13.0" requires_python = ">=3.9" summary = "Fundamental algorithms for scientific computing in Python" -groups = ["default", "trials"] +groups = ["default"] dependencies = [ "numpy<2.3,>=1.22.4", ] @@ -2578,7 +2500,7 @@ name = "setuptools" version = "69.5.1" requires_python = ">=3.8" summary = "Easily download, build, install, upgrade, and uninstall Python packages" -groups = ["default"] +groups = ["default", "notebooks"] files = [ {file = "setuptools-69.5.1-py3-none-any.whl", hash = "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"}, {file = "setuptools-69.5.1.tar.gz", hash = "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"}, @@ -2589,7 +2511,7 @@ name = "six" version = "1.16.0" requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" summary = "Python 2 and 3 compatibility utilities" -groups = ["default", "notebooks", "trials"] +groups = ["default", "notebooks"] files = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, @@ -2630,7 +2552,7 @@ files = [ [[package]] name = "spacy" -version = "3.7.4" +version = "3.7.5" requires_python = ">=3.7" summary = "Industrial-strength Natural Language Processing (NLP) in Python" groups = ["default"] @@ -2646,28 +2568,27 @@ dependencies = [ "pydantic!=1.8,!=1.8.1,<3.0.0,>=1.7.4", "requests<3.0.0,>=2.13.0", "setuptools", - "smart-open<7.0.0,>=5.2.1", "spacy-legacy<3.1.0,>=3.0.11", "spacy-loggers<2.0.0,>=1.0.0", "srsly<3.0.0,>=2.4.3", "thinc<8.3.0,>=8.2.2", "tqdm<5.0.0,>=4.38.0", - "typer<0.10.0,>=0.3.0", + "typer<1.0.0,>=0.3.0", "wasabi<1.2.0,>=0.9.1", - "weasel<0.4.0,>=0.1.0", + "weasel<0.5.0,>=0.1.0", ] files = [ - {file = "spacy-3.7.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e82b9da21853d4aee46811804dc7e136895f087fda25c7585172d95eb9b70833"}, - {file = "spacy-3.7.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:07ffedf51899441070fb70432f8f873696f39e0e31c9ce7403101c459f8a1281"}, - {file = "spacy-3.7.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba57bcc111eca7b086ee33a9636df775cfd4b14302f7d0ffbc11e95ac0fb3f0e"}, - {file = "spacy-3.7.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7580d1565f4d1ccbee9a18531f993a5b9b37ced96f145153dd4e98ceec607a55"}, - {file = "spacy-3.7.4-cp311-cp311-win_amd64.whl", hash = "sha256:df99c6f0085b1ec8e88beb5fd96d4371cef6fc19c202c41fc4fadc2afd55a157"}, - {file = "spacy-3.7.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b982ebab417189346acb4722637c573830d62e157ba336c3eb6c417249344be1"}, - {file = "spacy-3.7.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e7c29e152d8ea060af60da9410fa8ef038f3c9068a206905ee5c704de78f6e87"}, - {file = "spacy-3.7.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:023c9a008328f55c4717c56c4f8a28073b9961547f7d38a9405c967a52e66d59"}, - {file = "spacy-3.7.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1969d3d0fd0c811b7485438460f0ae8cfe16d46b54bcb8d1c26e70914e67e3d"}, - {file = "spacy-3.7.4-cp312-cp312-win_amd64.whl", hash = "sha256:040f7df5096c817450820eaaa426d54ed266254d16974e9a707a32f5b0f139ae"}, - {file = "spacy-3.7.4.tar.gz", hash = "sha256:525f2ced2e40761562c8cace93ef6a1e6e8c483f27bd564bc1b15f608efbe85b"}, + {file = "spacy-3.7.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cd93c34bf2a02bbed7df73d42aed8df5e3eb9688c4ea84ec576f740ba939cce5"}, + {file = "spacy-3.7.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:190ba0032a5efdb138487c587c0ebb7a98f86adb917f464b252ee8766b8eec4a"}, + {file = "spacy-3.7.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38de1c9bbb73b8cdfea2dd6e57450f093c1a1af47515870c1c8640b85b35ab16"}, + {file = "spacy-3.7.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3dad4853950a2fe6c7a0bdfd791a762d1f8cedd2915c4ae41b2e0ca3a850eefc"}, + {file = "spacy-3.7.5-cp311-cp311-win_amd64.whl", hash = "sha256:4e00d076871af784c2e43185a71ee676b58893853a05c5b81717b8af2b666c07"}, + {file = "spacy-3.7.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:bf54c3c2425428b328b53a65913d47eb4cb27a1429aa4e8ed979ffc97d4663e0"}, + {file = "spacy-3.7.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4145cea7f9814fa7d86b2028c2dd83e02f13f80d5ac604a400b2f7d7b26a0e8c"}, + {file = "spacy-3.7.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:262f8ebb71f7ed5ffe8e4f384b2594b7a296be50241ce9fbd9277b5da2f46f38"}, + {file = "spacy-3.7.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:faa1e2b6234ae33c0b1f8dfa5a8dcb66fb891f19231725dfcff4b2666125c250"}, + {file = "spacy-3.7.5-cp312-cp312-win_amd64.whl", hash = "sha256:07677e270a6d729453cc04b5e2247a96a86320b8845e6428d9f90f217eff0f56"}, + {file = "spacy-3.7.5.tar.gz", hash = "sha256:a648c6cbf2acc7a55a69ee9e7fa4f22bdf69aa828a587a1bc5cfff08cf3c2dd3"}, ] [[package]] @@ -2755,7 +2676,7 @@ files = [ [[package]] name = "spacy" -version = "3.7.4" +version = "3.7.5" extras = ["lookups", "transformers"] requires_python = ">=3.7" summary = "Industrial-strength Natural Language Processing (NLP) in Python" @@ -2763,20 +2684,20 @@ groups = ["default"] dependencies = [ "spacy-lookups-data<1.1.0,>=1.0.3", "spacy-transformers<1.4.0,>=1.1.2", - "spacy==3.7.4", + "spacy==3.7.5", ] files = [ - {file = "spacy-3.7.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e82b9da21853d4aee46811804dc7e136895f087fda25c7585172d95eb9b70833"}, - {file = "spacy-3.7.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:07ffedf51899441070fb70432f8f873696f39e0e31c9ce7403101c459f8a1281"}, - {file = "spacy-3.7.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba57bcc111eca7b086ee33a9636df775cfd4b14302f7d0ffbc11e95ac0fb3f0e"}, - {file = "spacy-3.7.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7580d1565f4d1ccbee9a18531f993a5b9b37ced96f145153dd4e98ceec607a55"}, - {file = "spacy-3.7.4-cp311-cp311-win_amd64.whl", hash = "sha256:df99c6f0085b1ec8e88beb5fd96d4371cef6fc19c202c41fc4fadc2afd55a157"}, - {file = "spacy-3.7.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b982ebab417189346acb4722637c573830d62e157ba336c3eb6c417249344be1"}, - {file = "spacy-3.7.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e7c29e152d8ea060af60da9410fa8ef038f3c9068a206905ee5c704de78f6e87"}, - {file = "spacy-3.7.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:023c9a008328f55c4717c56c4f8a28073b9961547f7d38a9405c967a52e66d59"}, - {file = "spacy-3.7.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1969d3d0fd0c811b7485438460f0ae8cfe16d46b54bcb8d1c26e70914e67e3d"}, - {file = "spacy-3.7.4-cp312-cp312-win_amd64.whl", hash = "sha256:040f7df5096c817450820eaaa426d54ed266254d16974e9a707a32f5b0f139ae"}, - {file = "spacy-3.7.4.tar.gz", hash = "sha256:525f2ced2e40761562c8cace93ef6a1e6e8c483f27bd564bc1b15f608efbe85b"}, + {file = "spacy-3.7.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cd93c34bf2a02bbed7df73d42aed8df5e3eb9688c4ea84ec576f740ba939cce5"}, + {file = "spacy-3.7.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:190ba0032a5efdb138487c587c0ebb7a98f86adb917f464b252ee8766b8eec4a"}, + {file = "spacy-3.7.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38de1c9bbb73b8cdfea2dd6e57450f093c1a1af47515870c1c8640b85b35ab16"}, + {file = "spacy-3.7.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3dad4853950a2fe6c7a0bdfd791a762d1f8cedd2915c4ae41b2e0ca3a850eefc"}, + {file = "spacy-3.7.5-cp311-cp311-win_amd64.whl", hash = "sha256:4e00d076871af784c2e43185a71ee676b58893853a05c5b81717b8af2b666c07"}, + {file = "spacy-3.7.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:bf54c3c2425428b328b53a65913d47eb4cb27a1429aa4e8ed979ffc97d4663e0"}, + {file = "spacy-3.7.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4145cea7f9814fa7d86b2028c2dd83e02f13f80d5ac604a400b2f7d7b26a0e8c"}, + {file = "spacy-3.7.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:262f8ebb71f7ed5ffe8e4f384b2594b7a296be50241ce9fbd9277b5da2f46f38"}, + {file = "spacy-3.7.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:faa1e2b6234ae33c0b1f8dfa5a8dcb66fb891f19231725dfcff4b2666125c250"}, + {file = "spacy-3.7.5-cp312-cp312-win_amd64.whl", hash = "sha256:07677e270a6d729453cc04b5e2247a96a86320b8845e6428d9f90f217eff0f56"}, + {file = "spacy-3.7.5.tar.gz", hash = "sha256:a648c6cbf2acc7a55a69ee9e7fa4f22bdf69aa828a587a1bc5cfff08cf3c2dd3"}, ] [[package]] @@ -2875,7 +2796,7 @@ files = [ name = "texttable" version = "1.7.0" summary = "module to create simple ASCII tables" -groups = ["trials"] +groups = ["default"] files = [ {file = "texttable-1.7.0-py2.py3-none-any.whl", hash = "sha256:72227d592c82b3d7f672731ae73e4d1f88cd8e2ef5b075a7a7f01a23a3743917"}, {file = "texttable-1.7.0.tar.gz", hash = "sha256:2d2068fb55115807d3ac77a4ca68fa48803e84ebb0ee2340f858107a36522638"}, @@ -3014,17 +2935,6 @@ files = [ {file = "tokenizers-0.15.2.tar.gz", hash = "sha256:e6e9c6e019dd5484be5beafc775ae6c925f4c69a3487040ed09b45e13df2cb91"}, ] -[[package]] -name = "toolz" -version = "0.12.1" -requires_python = ">=3.7" -summary = "List processing tools and functional utilities" -groups = ["trials"] -files = [ - {file = "toolz-0.12.1-py3-none-any.whl", hash = "sha256:d22731364c07d72eea0a0ad45bafb2c2937ab6fd38a3507bf55eae8744aa7d85"}, - {file = "toolz-0.12.1.tar.gz", hash = "sha256:ecca342664893f177a13dac0e6b41cbd8ac25a358e5f215316d43e2100224f4d"}, -] - [[package]] name = "torch" version = "2.3.0" @@ -3187,7 +3097,7 @@ name = "tzdata" version = "2024.1" requires_python = ">=2" summary = "Provider of IANA time zone data" -groups = ["default", "trials"] +groups = ["default"] files = [ {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, @@ -3209,7 +3119,7 @@ name = "urllib3" version = "2.2.1" requires_python = ">=3.8" summary = "HTTP library with thread-safe connection pooling, file post, and more." -groups = ["default", "notebooks", "trials"] +groups = ["default", "notebooks"] files = [ {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, @@ -3309,13 +3219,13 @@ files = [ [[package]] name = "widgetsnbextension" -version = "4.0.10" +version = "4.0.11" requires_python = ">=3.7" summary = "Jupyter interactive widgets for Jupyter Notebook" groups = ["notebooks"] files = [ - {file = "widgetsnbextension-4.0.10-py3-none-any.whl", hash = "sha256:d37c3724ec32d8c48400a435ecfa7d3e259995201fbefa37163124a9fcb393cc"}, - {file = "widgetsnbextension-4.0.10.tar.gz", hash = "sha256:64196c5ff3b9a9183a8e699a4227fb0b7002f252c814098e66c4d1cd0644688f"}, + {file = "widgetsnbextension-4.0.11-py3-none-any.whl", hash = "sha256:55d4d6949d100e0d08b94948a42efc3ed6dfdc0e9468b2c4b128c9a2ce3a7a36"}, + {file = "widgetsnbextension-4.0.11.tar.gz", hash = "sha256:8b22a8f1910bfd188e596fe7fc05dcbd87e810c8a4ba010bdb3da86637398474"}, ] [[package]] diff --git a/pyproject.toml b/pyproject.toml index be30fa2..27cd55f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,12 +10,13 @@ dependencies = [ "networkx>=3.3", "spacy[lookups,transformers]>=3.7.4", "sentence-transformers>=2.7.0", - "numpy>=1.26.4", + "numpy<=1.26.4", "pip>=24.0", "typing-extensions>=4.12.2", "plotly>=5.22.0", "dash>=2.17.0", "dash-cytoscape>=1.0.1", + "py4cytoscape>=1.9.0", ] requires-python = ">=3.11" readme = "README.md" @@ -40,8 +41,6 @@ notebooks = [ # files. This information is provided by extra options. # --config-setting="--global-option=build_ext" --config-setting="--global-option=-IC:\Program Files\Graphviz\include" --config-setting="--global-option=-LC:\Program Files\Graphviz\lib" trials = [ - "alph[graphviz]>=0.4.10", - "py4cytoscape>=1.9.0", ] dev = [ "cython>=3.0.10", diff --git a/scripts/analyse_dataset.py b/scripts/analyse_dataset.py index 2a9738d..45824ad 100644 --- a/scripts/analyse_dataset.py +++ b/scripts/analyse_dataset.py @@ -3,12 +3,17 @@ from typing import cast from pandas import DataFrame -from lang_main.analysis.graphs import Graph, TokenGraph, save_to_GraphML +from lang_main.analysis.graphs import ( + Graph, + TokenGraph, + save_to_GraphML, +) from lang_main.constants import ( PATH_TO_DATASET, SAVE_PATH_FOLDER, SKIP_GRAPH_POSTPROCESSING, SKIP_GRAPH_RESCALING, + SKIP_GRAPH_STATIC_RENDERING, SKIP_PREPROCESSING, SKIP_TIME_ANALYSIS, SKIP_TOKEN_ANALYSIS, @@ -21,7 +26,8 @@ from lang_main.pipelines.predefined import ( build_timeline_pipe, build_tk_graph_pipe, build_tk_graph_post_pipe, - build_tk_graph_rescaling, + build_tk_graph_rendering_pipe, + build_tk_graph_rescaling_pipe, ) from lang_main.types import ( EntryPoints, @@ -36,7 +42,8 @@ pipe_target_feat = build_base_target_feature_pipe() pipe_merge = build_merge_duplicates_pipe() pipe_token_analysis = build_tk_graph_pipe() pipe_graph_postprocessing = build_tk_graph_post_pipe() -pipe_graph_rescaling = build_tk_graph_rescaling() +pipe_graph_rescaling = build_tk_graph_rescaling_pipe() +pipe_static_graph_rendering = build_tk_graph_rendering_pipe() pipe_timeline = build_timeline_pipe() @@ -61,7 +68,7 @@ def run_token_analysis() -> None: loaded_results = cast(tuple[DataFrame], load_pickle(entry_point_path)) preprocessed_data = loaded_results[0] # build token graph - (tk_graph, docs_mapping) = typing.cast( + (tk_graph, _) = typing.cast( tuple[TokenGraph, dict[PandasIndex, SpacyDoc] | None], pipe_token_analysis.run(starting_values=(preprocessed_data,)), ) @@ -94,14 +101,33 @@ def run_graph_edge_rescaling() -> None: ret = cast( tuple[TokenGraph, Graph], pipe_graph_rescaling.run(starting_values=(tk_graph,)) ) - undirected_rescaled_graph = ret[1] + tk_graph_rescaled = ret[0] + tk_graph_rescaled_undirected = ret[1] + tk_graph_rescaled.to_GraphML( + SAVE_PATH_FOLDER, filename='TokenGraph-directed-rescaled', directed=False + ) save_to_GraphML( - undirected_rescaled_graph, + tk_graph_rescaled_undirected, saving_path=SAVE_PATH_FOLDER, filename='TokenGraph-undirected-rescaled', ) +def run_static_graph_rendering() -> None: + entry_point_path = get_entry_point( + SAVE_PATH_FOLDER, + EntryPoints.TK_GRAPH_ANALYSIS_RESCALED, + ) + loaded_results = cast( + tuple[TokenGraph, Graph], + load_pickle(entry_point_path), + ) + tk_graph_rescaled = loaded_results[0] + tk_graph_rescaled_undirected = loaded_results[1] + + _ = pipe_static_graph_rendering.run(starting_values=(tk_graph_rescaled_undirected,)) + + # ** time analysis def run_time_analysis() -> None: # load entry point @@ -123,6 +149,7 @@ def build_pipeline_container() -> PipelineContainer: container.add(run_token_analysis, skip=SKIP_TOKEN_ANALYSIS) container.add(run_graph_postprocessing, skip=SKIP_GRAPH_POSTPROCESSING) container.add(run_graph_edge_rescaling, skip=SKIP_GRAPH_RESCALING) + container.add(run_static_graph_rendering, skip=SKIP_GRAPH_STATIC_RENDERING) container.add(run_time_analysis, skip=SKIP_TIME_ANALYSIS) return container diff --git a/scripts/lang_main_config.toml b/scripts/lang_main_config.toml index fbd99b0..14699c6 100644 --- a/scripts/lang_main_config.toml +++ b/scripts/lang_main_config.toml @@ -13,9 +13,10 @@ dataset = '../data/02_202307/Export4.csv' # be fully executed [control] preprocessing_skip = true -token_analysis_skip = false -graph_postprocessing_skip = false -graph_rescaling_skip = false +token_analysis_skip = true +graph_postprocessing_skip = true +graph_rescaling_skip = true +graph_static_rendering_skip = false time_analysis_skip = true #[export_filenames] diff --git a/src/lang_main/__init__.py b/src/lang_main/__init__.py index c9b2122..6d1d346 100644 --- a/src/lang_main/__init__.py +++ b/src/lang_main/__init__.py @@ -6,8 +6,17 @@ from pathlib import Path from time import gmtime from typing import Any, Final +import py4cytoscape as p4c + from lang_main.io import load_toml_config +# ** py4cytoscape config +p4c.set_summary_logger(False) +p4c.py4cytoscape_logger.detail_logger.setLevel('ERROR') +p4c.py4cytoscape_logger.detail_logger.removeHandler(p4c.py4cytoscape_logger.detail_handler) +p4c.py4cytoscape_logger.detail_logger.addHandler(logging.NullHandler()) + +# ** lang-main config logging.Formatter.converter = gmtime LOG_FMT: Final[str] = '%(asctime)s | %(module)s:%(levelname)s | %(message)s' LOG_DATE_FMT: Final[str] = '%Y-%m-%d %H:%M:%S +0000' @@ -18,13 +27,13 @@ logging.basicConfig( ) CONFIG_FILENAME: Final[str] = 'lang_main_config.toml' +CYTO_STYLESHEET_FILENAME: Final[str] = r'cytoscape_config/lang_main.xml' USE_INTERNAL_CONFIG: Final[bool] = False pkg_dir = Path(__file__).parent cfg_path_internal = (pkg_dir / CONFIG_FILENAME).resolve() -# caller_file = Path(inspect.stack()[-1].filename) -# CALLER_PATH: Final[Path] = caller_file.parent.resolve() +cyto_stylesheet_path = (pkg_dir / CYTO_STYLESHEET_FILENAME).resolve() -# load config data: internal/external +# ** load config data: internal/external if USE_INTERNAL_CONFIG: loaded_cfg = load_toml_config(path_to_toml=cfg_path_internal) else: @@ -43,6 +52,17 @@ else: CONFIG: Final[dict[str, Any]] = loaded_cfg.copy() +# ** Cytoscape configuration +# stylesheet +if not cyto_stylesheet_path.exists(): + raise FileNotFoundError( + f'Visual stylesheet for Cytoscape not found under: >>{cyto_stylesheet_path}<<' + ) + +CYTO_PATH_STYLESHEET: Final[Path] = cyto_stylesheet_path + + +# TODO check removal # append Graphviz binary folder to system path if not already contained if sys.platform == 'win32': path = Path(r'C:\Program Files\Graphviz\bin') diff --git a/src/lang_main/analysis/graphs.py b/src/lang_main/analysis/graphs.py index bcf1578..cbc6097 100644 --- a/src/lang_main/analysis/graphs.py +++ b/src/lang_main/analysis/graphs.py @@ -13,7 +13,10 @@ import numpy.typing as npt from networkx import DiGraph, Graph from pandas import DataFrame -from lang_main.constants import EDGE_WEIGHT_DECIMALS +from lang_main.constants import ( + EDGE_WEIGHT_DECIMALS, + PROPERTY_NAME_DEGREE_WEIGHTED, +) from lang_main.errors import EdgePropertyNotContainedError from lang_main.io import load_pickle, save_pickle from lang_main.loggers import logger_graphs as logger @@ -233,9 +236,7 @@ def filter_graph_by_edge_weight( if bound_upper is not None and weight > bound_upper: filtered_graph.remove_edge(edge[0], edge[1]) - if filtered_graph._undirected is not None: - filtered_graph.to_undirected(inplace=True, logging=False) - + filtered_graph.to_undirected(inplace=True, logging=False) filtered_graph.update_metadata(logging=False) return filtered_graph @@ -275,15 +276,77 @@ def filter_graph_by_node_degree( if bound_upper is not None and degree > bound_upper: filtered_graph.remove_node(node) - if filtered_graph._undirected is not None: - filtered_graph.to_undirected(inplace=True, logging=False) - + filtered_graph.to_undirected(inplace=True, logging=False) filtered_graph.update_metadata(logging=False) return filtered_graph -def apply_rescaling_to_graph( +def add_weighted_degree( + graph: DiGraph | Graph, + edge_weight_property: str = 'weight', + property_name: str = PROPERTY_NAME_DEGREE_WEIGHTED, +) -> None: + """adds the weighted degree as property to each node of the given graph + Operation is performed inplace. + + Parameters + ---------- + graph : DiGraph | Graph + Graph with weighted degree as node property added inplace + edge_weight_property : str, optional + property of the edges which contains the weight information, by default 'weight' + property_name : str, optional + target name for the property containing the weighted degree in nodes, + by default 'degree_weighted' + """ + node_degree_mapping = cast( + dict[str, float], + dict(graph.degree(weight=edge_weight_property)), # type: ignore + ) + nx.set_node_attributes( + graph, + node_degree_mapping, + name=property_name, + ) + + +def static_graph_analysis( + graph: TokenGraph, +) -> tuple[TokenGraph]: + """helper function to allow the calculation of static metrics in pipelines + + Parameters + ---------- + tk_graph_directed : TokenGraph + token graph (directed) and with rescaled edge weights + tk_graph_undirected : Graph + token graph (undirected) and with rescaled edge weights + + Returns + ------- + tuple[TokenGraph, Graph] + token graph (directed) and undirected version with added weighted degree + """ + graph = graph.copy() + graph.perform_static_analysis() + + return (graph,) + + +def pipe_add_graph_metrics( + *graphs: DiGraph | Graph, +) -> tuple[DiGraph | Graph, ...]: + collection: list[DiGraph | Graph] = [] + for graph in graphs: + graph_copy = copy.deepcopy(graph) + add_weighted_degree(graph_copy) + collection.append(graph_copy) + + return tuple(collection) + + +def pipe_rescale_graph_edge_weights( graph: TokenGraph, ) -> tuple[TokenGraph, Graph]: """helper function to allow calls in pipelines @@ -298,6 +361,8 @@ def apply_rescaling_to_graph( tuple[TokenGraph, Graph] token graph (directed) and undirected version with rescaled edge weights """ + graph = graph.copy() + return graph.rescale_edge_weights() @@ -542,7 +607,7 @@ class TokenGraph(DiGraph): the underlying `to_undirected` method of the directed and rescaled TokenGraph instance is called the weights are not rescaled again. Thus, the maximum edge weight can exceed the theoretical maximum value of 1. To - ensure consistent behaviour across different application of the conversion to + ensure consistent behaviour across different applications of the conversion to undirected graphs new instances are returned, especially for the undirected graph. In contrast, the new directed TokenGraph contains an undirected version without @@ -554,14 +619,24 @@ class TokenGraph(DiGraph): tuple[TokenGraph, Graph] directed and undirected instances """ + self.to_undirected(inplace=True, logging=False) token_graph = rescale_edge_weights(self.directed) token_graph.rescaled_weights = True - token_graph.to_undirected(inplace=True, logging=False) token_graph.update_metadata(logging=False) undirected = rescale_edge_weights(self.undirected) return token_graph, undirected + def perform_static_analysis(self): + """calculate different metrics directly on the data of the underlying graphs + (directed and undirected) + + Current operations: + - adding weighted degree + """ + add_weighted_degree(self) + add_weighted_degree(self.undirected) + def _save_prepare( self, path: Path, diff --git a/src/lang_main/analysis/tokens.py b/src/lang_main/analysis/tokens.py index eef07dc..aaf0534 100644 --- a/src/lang_main/analysis/tokens.py +++ b/src/lang_main/analysis/tokens.py @@ -226,6 +226,7 @@ def build_token_graph( graph.update_metadata() # convert to undirected graph.to_undirected(logging=False) + graph.perform_static_analysis() return graph, docs_mapping diff --git a/src/lang_main/constants.py b/src/lang_main/constants.py index f15dd4f..2fda715 100644 --- a/src/lang_main/constants.py +++ b/src/lang_main/constants.py @@ -5,8 +5,13 @@ import spacy from sentence_transformers import SentenceTransformer from spacy.language import Language as GermanSpacyModel -from lang_main import CONFIG -from lang_main.types import STFRDeviceTypes +from lang_main import CONFIG, CYTO_PATH_STYLESHEET +from lang_main.types import CytoLayoutProperties, CytoLayouts, STFRDeviceTypes + +__all__ = [ + 'CONFIG', + 'CYTO_PATH_STYLESHEET', +] # ** paths input_path_conf = Path.cwd() / Path(CONFIG['paths']['inputs']) @@ -28,8 +33,10 @@ SKIP_PREPROCESSING: Final[bool] = CONFIG['control']['preprocessing_skip'] SKIP_TOKEN_ANALYSIS: Final[bool] = CONFIG['control']['token_analysis_skip'] SKIP_GRAPH_POSTPROCESSING: Final[bool] = CONFIG['control']['graph_postprocessing_skip'] SKIP_GRAPH_RESCALING: Final[bool] = CONFIG['control']['graph_rescaling_skip'] +SKIP_GRAPH_STATIC_RENDERING: Final[bool] = CONFIG['control']['graph_static_rendering_skip'] SKIP_TIME_ANALYSIS: Final[bool] = CONFIG['control']['time_analysis_skip'] + # ** models # ** sentence_transformers STFR_DEVICE: Final[STFRDeviceTypes] = STFRDeviceTypes.CPU @@ -55,6 +62,26 @@ THRESHOLD_SIMILARITY: Final[float] = CONFIG['preprocess']['threshold_similarity' # ** graph postprocessing EDGE_WEIGHT_DECIMALS: Final[int] = 4 THRESHOLD_EDGE_WEIGHT: Final[int] = CONFIG['graph_postprocessing']['threshold_edge_weight'] +PROPERTY_NAME_DEGREE_WEIGHTED: Final[str] = 'degree_weighted' + +# ** graph exports (Cytoscape) +CYTO_COLLECTION_NAME: Final[str] = 'lang_main' +CYTO_BASE_NETWORK_NAME: Final[str] = 'token_graph' +CYTO_LAYOUT_NAME: Final[CytoLayouts] = 'force-directed' +CYTO_LAYOUT_PROPERTIES: Final[CytoLayoutProperties] = { + 'numIterations': 1000, + 'defaultSpringCoefficient': 1e-4, + 'defaultSpringLength': 45, + 'defaultNodeMass': 11, + 'isDeterministic': True, + 'singlePartition': False, +} +CYTO_STYLESHEET_NAME: Final[str] = 'lang_main' +# name for property, on which selection is done +CYTO_SELECTION_PROPERTY: Final[str] = 'node_selection' +CYTO_NUMBER_SUBGRAPHS: Final[int] = 5 +CYTO_ITER_NEIGHBOUR_DEPTH: Final[int] = 2 + # ** time analysis.uniqueness THRESHOLD_UNIQUE_TEXTS: Final[int] = CONFIG['time_analysis']['uniqueness'][ 'threshold_unique_texts' diff --git a/src/lang_main/cytoscape_config/lang_main.xml b/src/lang_main/cytoscape_config/lang_main.xml new file mode 100644 index 0000000..93adff8 --- /dev/null +++ b/src/lang_main/cytoscape_config/lang_main.xml @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/lang_main/cytoscape_config/template_test.cys b/src/lang_main/cytoscape_config/template_test.cys index e5e3b15eeb0b45df2dd88c546226a16c21c9a646..ee1eb0056d13777f609621392af2f6d610e76987 100644 GIT binary patch literal 75931 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 z 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 literal 69296 zcmb4~Q*bUo)1YHJIk9cq#))m)ww)87*tTu!jcwbuv*+7?FZO2f&)iH`&-7GHb$3lY z)1x2_3Wf#*1qB796?U!x^uINRe`66(7kg)8LkCl3Q)g#OdpkO2MrKxhMh<-@Mmi>T zeKtl07J9~i-ObeLKWb1Q1!+jA|JVTeUxpO^kLCsc&G>(tw=;Edw|BC3W?7l1qxUekwY4eE-bmPBM+v)mKvPbvsNRB|x+TO%+mKrOgQvchD9fd1e$zq- zJ?{`+P$EffJhQ+ciFX?;C_;CwiUPT~A_^*-cUSmzUs{`af6k!EG2G(iink56qTZlo zlPcEi=lWGUb3^|2q`DAkMKx|qrmyRtIQ1ki;P>LB8wL2NG%C*-Gm~=jRgG+?)z?ie z(E2eai9CO|y1NSRg?W2C=RW=EPPr(sG^I-g2x!`2bjDPzGf4Ps?j;MUJ`6hDoxk_k z68N`u`))2BO||Il&||bVByFKi*?ORE<8S!UMV;?0ex9A39aCKsK$$nL+5Y&)$zB{q z+F**dDzYllkx#W&{L-gTefYX-ALclyA8vKqpdBi_%;9fh!eQljGIk_M?cDJH@p6B; zdk5Uq)aXUFTz!{+Po4H?`knWvu~#o??>&7}J?S*-j(-_@qJWhGsO#J8(O;5jQyMyY zT-kD`n-cw!<;9wd)@9|d_(xl^qqf4VuyVA%+jTdk3p8u=Z){N%ViJ@Kd;d%wMBVh# zFJO=@adNYLH_=IJ@==N$9llAS(=4G5DX+<7(y01Nu`#M3{*e8SOe}tfR&4FG+RE}J z<>zZa*0(QHTX*%Rz2*qb0J?H(Rub`+eKM-pdg<^&e@Ox^ciZ{6HZMNU&9JJ(D-#a5 zXXWxhxfkpxA#8WmU%-cgUjhzf7O`5Y2az5?u6RfLzW zyY|{=W{%k>K`UR?aTvAMxW~njYIt8gb$M2S^Bo&s(P`GU9A#Xtd2r*tR)8Ki_|YHo zeZ{-!khzN%LLKWWy7s=1j+>9~OY&SLu6k-)l`b`u!Mtw?UzMv}sst2hTePd1Td@3CaKJ@wr-o4Z!Bd#ov)ov%t5HnhH!Yb>Ljukv^_ z`J@Y^4|I6W8mlUH8n-kQ4i2;TNgQ_NF4l^(2Mgn#Mdj&6C3rZXGzHB zV?W!pnMA@M zHB~BymLF{ju+7dy_!0R4wT%uO%tan?ma7(hYoWDxYxAvNSH6lh5j`JMEh+~mfw+i@2;a(?q7^F*xZ=JvQS>S7#qXNbZW34?b1Z~~GTyhwKi+Z8IqNj@ z4~i9E9u&*_>F<(ak058MV(MCf0rK>miaEwEX!GafJfIl7HvHuq>#b$wUAuZ6|ZB=2J_70doNVCa1<0& zK{XdH(*Gq6Usq3zDv>^2Unyo-T#n4R2d4iGo}3i{a@D2#AZqhn0QBsl0$?ha%Z5c&X<7#MFAlB*7VOz#OGX7(G?yG?rxzJ88?t|>o@ zGNIxQnWvjK2@w*?#qlNW<}#EmOmh7GrkF_H4d+0LfG*h=L82#AE63{{ZpirIbeRbD z_(4S=#TQtqifXqiEyk%6U4|{#nbE+ishMqigLs30CvOj{sj2JL5`7{UbHyY&Wty|@ zrc&0e)cE1IMf1F~lKS*a>lt{>$vs?w&KL7(MUcr;n~UbWXT3nY{Y*6mxhwl(of^cM zX%LO~%bA;+@9mS{Lj|@qIY|#cj;8padTblI-SNJ{9okhb1$q-LA2Z*lbvyxdR_zuq z64792VFP=Nx5Sq&xaewztj`XSQV;K~$9In&E_jsdHoS$RpdF^nn6q>>o)D|nkqc6V zvaPWUb0Kzg@Z>Jmjw#T8kP)U>q&7mn9Txf^$k~sLo{~6ogw~q||4`g_{M&upm95Ip z5!S1b;n=$K1euFCPyv&vz(Edhu^X0uM7Imig#t%oGu>b2y`o*Dd4P9aB6H=<1a} z5+-wCojrGs1dG9#WSZ}*?O?Qs3nJV8v;sh=gJk(-92?Z!&)94;HROsgrqPQPd!?{0 z)24-eg#S>&!a^=Ko`=hT$BP@_4)&r49neL{;<;%GV`I9*l?sip=z_B{BFH_GR!wzAZwN+i~FHwN6k_F#Vx&x;brFJ6y`k@eWR zcEJdkDEk~3pH+vS(EV1J-;LqGs9P^S&Zqm7cIwVf1p8%6a8qKgX?zOuFpPH=(yBTW zp6~Pst^ms$WE))_IR;cugb8pUPSV~Ft~2}fwz{bSRsiTep4nTb7qwDhKpkpgdSMgd zkjl4UVzd=xAV0=J%3h2;v2WABBbIWh$AP~>j2lK&IacaAuaYY;MM6>it2)i(A>|@Y4+^-eiine z2X|#B?~N?N?I!HN3qx$sE~%4Y(9xGG3A^*Y-R`U*Zu+z71RtEGFsji<2cr|L&pW$Ah(isxyDVE`CD59I z+uh?MPfJ3_Dhure+Z`Wadey6#3o+H?z#*k>>+k2f^p!8`aSAo0C$HEB?6WVU-79zu zANWFpKS4YWkzk&H%Ff2=!jvkhJfwupCe+^C7teAuzKQ=>K)9%^ZZ|SUuJDUG481_; z^uwNNNF&9p2+9MP*57$&QovcG*nu2E+b^NnM?5QnI39srGw}Y-2Z#5GI$8w1@jP)D zSLNlwnRdMp8hkK<+Ku-J9r*!WC$HE-PehRz7vEk?bdk%-N0NlsB z@uav>U7Z2&{Ojc;V_A1<*ub_~-j__~5B6XjaXZ{*9JmL?&VINW%J#rzIa5iaUM-KX z!_DlF12+mRohYXTPM!p!EG`S?HUqJ~YTZ$!;muGJ2dOCR+~AESe5(;1GgF6+3E5(! zX`s;`QB|=V_qm7;<9VQyS394!HOj zhVw^4;3+mes9qNj*0=GDjOj6A7lJgiAXffaj8*-<>+x zDsxI;^ZH@0T^nT9@#5n))wke-=gF9V&ZBd6(9I{Aj`XDx7lQWimWA`MULct8A`As2 zR@tX}1$wy-19*MoJ^zHx=7vV+@Gm=QMvVOYJ5KyEhL?UE8C^Qq7ZVA`+$j00vX#d;yufU&xZ3mJg2f&^hogJ<5E+|q!F zyz^xvkU(2g#}d}EyZi*T+olC?=M>{vq`sePYlJDI)biM(#4=Wrp7b7zxYKo=ezc0MsItF zZ&$BMO#0O%mwfLdd3_7fNA*EHInr1~AlapfDhTmCES;lj z^tpV7|Cp&zQve?^fC)$!H(B$G!y`PuLkU_{*QMsKk(ao`R&0d zOj^Lk6iX)071dHcJ^?4lGj@3&c(} z4D9hTTq$D{OxGZV#(?4!1*thvl7_>4u1#M%zA2Hlu&N1h{7QAUHBmvmT{#2KL7Ig$ z&$iS$XZ=|4$+gKSp28%>S4C|VoSjPzNz;A;uI5Du+W!yM<5{ICw7X=0%r}bkrPd?9 zaauEVGSl3TIUJLTtn;e~d)@sBt#fR%zb|<_PHk%I*ADdh7hq!Jn*oOJYwYKLk|RTF zJ(fviAfRGbpnvlJ2~6qz_s9_^2c3$&wW*zilc9qJ8MCOXor$HBsj-Wx$v?r#^dH`` zF*Tt#|Bu$z=D)a7w(gDdKd$t(-8*nFy}9WdPxqaYQG{12n~}cSEtesELqjISJcD*d zRL*&)?@uTRjd)nobYEIR_lWNv2#&rAdHBSz)ABZ~uDYbD+1377Q<92Np^;Kqwc6GG zIdk%oxOODARWwXJH6h&H{#kQAq3`#-_f+zm;D(`LDRV;8$@6b1Y;te=rw)JF{>$@^ zjN34ERr3!+rBnMxMZsIc zPhH*@<5#)Z*MimC@qLdazJEuL-=^xDs-|s?`h<0IQ>k+6$=|=Xv$Om2Ej%h}#d4wPXVJeQ_UUs?nm20uk)B5-Mmved)L_uWD}ZkP z$hW(TL8V1$_=s(evt{SD(`!8P*A_K@(|cKl+289Hm(JVS>l-J}+EelG{JBnx-yHSi zpCnuSJ@0oL)PBi{vLx1hrOY#`cX}8~`U_cmK#lVi zYritzhY+j&Y&>rK+8SAZUAgzmJX5e3f6_v{hreo_)$&s2Eq!5iwXpq|6{fyQjI^_? zo<|M2RyK4&$yX`CNMB>(cAd;y=8aE%7(HdM_;C z!`2A?roE^fBY@*tO}u7by1x6H-?Y3*dk&yJ5@!W#s8}}bG2}f13>sF)=#`ywDZgyW zSILI1&&d+zG!zVb{eCb%madk{oyXgmZbVn5reU5Yp3zz?;^A9zxT?aM>Fnar3#~op zE|f?xkExLE2xU78julytEpI*u&WV5AOrJMoX%6c;DT$$qX5gdan3T+3m+zJ3sMrrO zwSsS>vF26^YG>PxwL=o2EdS^--7NFI*w>ZyGh=LB_MxKrl5aNbVNKJHx>mWXlEi>; zww^IpwPkT41!J*R(5k9T!qV)A<1SL#SQ_Lv+E-s9IjBl!J2O*fxNm9^(5h|Mq)F3! z_?~an7O-xpu1>doFDSj%eVAmEGbotIFz)?QLc*II1W z%TklEwmwQ7qqxAtLv!)AHt&_3$NOa*zHA$93R@yi6yu?O)dDs$!jv zAlBXaaPlS@KOY_z!FQR0x*Xvu`WcrL?MLrZo{zD*%8~pmpATkisMB6H`CP8JI?%?b zdO@}%nDB4gTJ=U%01H>2-n^zveMM_V=lJO#{s7+nYOUg>3_Eb;FRdApm_LuyOCQh; z?TGwZsj56cm=lEMvv2%U2ya8W%bVtJ8P8;gs5k3mTBVMbbG*r_i5H6ZeNQ}xXg4jE z;{Vn~W{MRyxbasx!;ejN$7^ohiXhxaY6m}QtU2g9`@(6C=ypiurWb=JM9-`#-GH8| zE!T;SRP6ziV(3qt^P56alVaLGICbXj5q46#V$4DN0lf`(y1{4oSa|#0E8f6hmWou| zh1wZhy(;fo63oXSo-KgNUWiQJ@mID`Z9$li3fufsrKU*RpB^lZ*YN6}{-F3VzcXrR*p!@S9XFp~6f#=Tqv? zk33zjlb31^c2&oK%{HU9!xhT7qf*vhXB=gWb;mA3-);NoT2nRgyAVma)6QHr#j%@u zCK^0-!}FrrCWxulpA!i5qumhFafYr!ga+_?7b-guD8***G~IsPd17r0#+&=lv$&~W zeH1RH*g!yw*R19Qh3t>uYSF56ZWU|@Qy*lif3g$fw9?zLF zi_Yff8x`&#$_tNmOL#shCkT^EQ}0lg&b} zx-AB~m@?;U4?*RqkyjULYq7XeH)=HHw9Bs{gFsKzN~qB>^h@1q*pC#ZSxcjs;n`Qx zJgN^Bg6=GFDsbHh&EJn@^*6w8JyagQ)(threGz;5H!1DzNl9wjDtV26^WvQq&+0n1 zKR&{RpYY^*v9R+K(=Z|RD1cKs#Q*CG3GqIY6E#MF&B#uY8XLA0b z>#m>#wwp$hbDp=4w7gBh#pt*uZ^fI zQR}uf37m3mN8M=~5uAzkG?!Wo-lJZ1fBr<+{GzxE#fky{rohLbxx*st>_P4G%=h^k zZ$Vx)W2gwm(+QkhWHsk7<6|Ux0N^y)w%42`T2FmWI1#K7BYp@VCFnYc{HMT^J$S2r zZo@@)4u4BS=Y&zlqAzLS2;7A=6L|-EH6g?Z2RarLWsPbWF1AhEQh@+LO%CjovkD}A z5Je-?TX7By&SQncZN zsWII2Y0UFQ+Qz`c7CJcC=d9EoY!)k-1669sNhhfcl#QG`Kyj=DIi3Yh%(bZW^MUV| z7l4Yg^zDQPUKE)$rqBQT?HjfLwMu+?)NxeJT|sMhyvok^k~KC3X67^+Q%Ue>WA+9t zN*D17MWSyc|9DIXTsTH9ZPegkFAI|=ug-gl43h4Ff0P%f1J%lDw4r=Vn$o25`f%1% z7n=HS{_OlM?lm}Yj59hNEYA#&+(T$T$8SYoeoE=+h6fkEkqDugD!^n3vd}@25ky^s zBeXCYEKkJ%T%OngbNURlg|}}sD268=*12V;f~nwCG9k2upc|RHSOf{GCqJ-hG})lF z7;e|(hXW)Q?xL>Pe!OW7q1Hoh-+*C3>OsMgE5G0B zv61Sn7(5(S8*<lIo&Wd&g%S{>j9Uu)uu2Y#nB@D$1kVzC#U+d(_tHsC`V zt_r^GJo$R>;bLYP+bjA5@?b7*eqkN%@qrTdn@Ev=MBf$UAzS6{-|F`n9%QyJxJ0^m z@l!zoV*g&-+c=sO#QzbJa*M7?9dOnuaKsC4nbdpYZaxfYY)s9R01vHw}y29Q75qM#J%>A1 z5LYamZ^8rtoB_+%hWxwnl^IwZ?w-Z#SwEV>KUIRgMKFdv?LC}BfeSx(uaq&7i2)JibEKm624*v1gignh2nV9D>PAE2vHGET*3KBIAcg_fJs91d5)@0$qoG?K?l)^#bld)<;&=&C zd?{XM<>n0S^_KZWG#Qt^T0)di$MTNe^$5YX7X$?E9(0sU;8Krvg9gIN3Wx-h<8JW1lT=W0KU$`F{Ozg4%>+`rd-cb~Y?wJSumx|&or(4v6q*eIo;&4CK1TgI)DUK>OSZXSnj-I zp1<+q5h!|kxG;Sa+r*|?XUz#mqQUn?oskpyA81WNCBjt%V=Wq>LeA43vUz}BCNs>GAS`QFcq4-=pJ>Z+3^oA--ygU`pJ zECjPbE3dDMvmc%A>$io(w}Lc;s5=|2Z?E^ltlaO5)?B~#nyAjqM5~D2zdAWN(NTU} z+n>y@cMq)oHg-M`~@5!s~%xLF}%Z zBm2kr!9AFO$A8%m>+|WIrIR47@x8|A$iegZMqs@_3>n7hGB+*p{Ix6-}7m2;cTqcsB0)QOX|9)alpGjG;y_d_`_}VmV6D*I<7aPacx4776@#I6+s~u78&IH^GShqd_VGecGkq2WNzX?;^3dye zHL^SLu){$A^Rd$7`}6Jfws-Uv8>j|R5<0tVW!H={(+e1` z6!`wYc{#eOtmN3RhQ^enxNTSWcD<{2X8U%he>&d3BCxM%S((@S%C4+_Iq`paIkCrT z@457UX4pWLW9g?`(ef;_G~#b7FFAUI2R^cCwQ*$OoNS(r zA;O^DQqg2P>3C20&f-L!Hq^6q#0Y*7cX-E_cfN$&r|fk}A?q;0Fs^O(h9?5D9H}LX zW#g5KuNkhMzx5-%>a+A_ZbpV(07z7><4F0tmD`jx(T4?Z116AJ0a6!t4eaZgliW}} z%?CB#=1lG0cX2m`{ZWco=|(p5Xf|Mt<4)yS^ZlbsDUVsplMuDI=)4|hwgYHV&$Y6i z-StB~gpg}n1ZTeE=*GC$ENK-xLX zgdX9(cm3F$&_HBWa0=v%mE9|=K6XhCRG>B&IT%Y#H4q$!#GPtsO_{_gELS1y0~QBd zJ+J3!eGHf<+n#Lq-9EpI&(5n3g z$d|k>3p79^iPe{g&ni%MGCXf_54za&MwhNJ&omvDcLlL7WY_sbFUn6A!uQR(tOMlU z%@HfD(qKUp0uLbNpCs&~neD9m&7ER5)?5^4fQpb~OLR#&`yCXTl0aJF{jSQRYjhN%@3t(*lA2V2F7Y06ie0ka6BwC=V-<@IyLF6=ccS=-0MgfDn|(0*t3JFL7P zdHO4=8N=8Z16hRZ{U+x_{hkRS!(lBItmN<`!n{Sz2OA+ACr2!|#d~n#(t^7<+I_xd z>YpwJ?QxMwGuTUk5u!~q&rA7t*si*AVXfIv?idWQ^4zxaBz>H5WKGkQViG4<5M#@> z7bx3K-H?S?Xe{XF5)j7qta-xLXctsOSTeI}AiBm1^VY9LJw!B#*9p(mBIG6lvG$`R5hAe&qF{ThO`oO%xgG_4mVj3lS6bN2>gzRBI6JQ8!T?nCMYQq#!Fr zQG(G8d3CrMJbQFmuHZF5Jh#qMG5ub9J{0}UWJamOt}3ajafxe%wKho)7&V?m~=3wv2Zwj{pr`e026!W3!5Ci+ z+luiYr|Bv2O5hM;0V4f)L$vw?>fjC0JGj&GA_55%V&&`=-8Caj7f3{BgppmyI`N!% zS=+U1WiL68xYL?-)P=aoHYDr0jbpl8*%(opVA|AYBntOD?~b6D^C0Y@B(Z5?a0c7U z(W&6+b3FR7*OmRYSyq27{{Z1fILHaFV<~~HNalBqD+nmNuKr)1~}J+7O@rBXe@B-D+Q^K=tV)M ziw+yOj}PcWv0 zlvL&rc_>c8=;|T*lrKzSk9ozU#Ed`}XrGI|R%i_CeuQ?=3Q$d9xr2#m$MSlF_@vBY ztnP?ewkbe>VMJ3NKR%IZR1H+P49I9eUEnP#d<`95XH|)*;?6(Uzk3A|n0oy!*j1k~ z&K4`eYBLH{m#rDc5x^kW3fFcoH&jU>7E;rm20PlICA=Ku74eG$jLhs7Cf>OYR6c

d`{~T8z6nIdNyanm%m}<*6}50FdnjyEIT* zG*yBQ3;ySy&_?px&11oTBUe&@NaaCQaaQSH8ub_N@Y2g9o1Or-~&qgs1N!dX^mPHFLWFc1B4iOi~|k0IIdLC z_>p~N?I(r{F8MZ7m&!0VMbk3ew1CkAlNA(Th8l9zZLB~yC$`^`BIH8K(z8H)LKI7& zSvP(UwhEDRqEr5uNU~a{9_M8%9X4V9q@^Mkm23@BhEc*SKBIG|2oz%eR^72RIm6Am zGt!jsR80Qke0*~QZST2~dQ{YQt-I9Nf8~Ox$|B`M5633kM>w@dg`)!A!9ouv`FG?v zwxF(aseOF03}eQUOtu!Po4#$PqK#cyYYJpzD|n7MzX zUoQklC)G1*3Vk6VUTWTrf*b@kjEQw7gm7Db>@7u>e)0P4i#ZphcQ3;&i&@p#WlsS% z6OgR4c{ajKxg_;mShvLZDK+XvUVeJxZyMNADB(<5awt8RQ;&J8TLdwhlVKCZOGw`I zWTXh2FeNyAnKeG?rT3J|uV4KZVQJ-qS7eK9kg|xPz!_nWOpevwez-BPR{aAhi{MWj zHwKm?e7};3@Uk_*d?UXy&2U0di#``5ttmXU<0cH1Q?qZ>NmR9j`ow;*j0o0fRR!4n z{fdx1OTyR|yG=j4os~t`<~(PsHv`8CP^y3p)(4&nl9vvbGu-PE=&dYYF~ew`e+NFD zyw#-we;z9>Ay!hMwx?b^gkyUSD|D#n5fDT zH_c-;74VZFR-6b%fsU@QQ=F%h{~Ye(w$oQlivn)Q>IzJ;2fxH&(ox~m6c}n}Mc+lW z$(H1p|MbDK6BJF%&CAVYWk`D4Q*y0+IJ099f3aI$0dbZ#g62deo+qidEX0O*^p~IU zTgM(`gJYw+(ta;IMvXrOp5`_X@@s2C2aWRLuJe(77v2R$^L-~9Pzjkd&c5Fm_j z5XWvd!(sO@qf{Po(A(Y`7R;EQ zHe7Mka3lbst6346@`~umWb3~$BckaIG3aU74Ybn^v zj^?4>5^vCB7?^eOcI{INJ{2kmQ1<-6Eh$~scrM<{*ctE8$C#jO75Z~jq{2ga7I%kgPsM2p{8ZwJA_@>0(}e1fA+VfiPkHc02R1{&cg)2@>TsF&6fGlmdLz#8gzqD1kwh3WEz5*>)W>9SYWSi-RDR-k6~&{snJUB{s6! zu_zE57^htZ16|kh{i~07YqTH=KSB|=vLqC)D2`5?NFGiNdm?pwq@dzmky6+t8VdjP zan%cd&}9=uo|*T47YdIddrX9$VxNUc;5dr@c5-QySZ{v>@=4)gBj}@Q#Z%YQpZ-CVvUWj7Rhkw1}i#Pz%Zcky>?dqjfLr&H?iM)wQO8 zo06UYLge`4aT$7`QBXrN#Qv~@nJRnB<(q@GB7#AS3`5QHphTo@6) zmbL1Jjp*_$ls$_MFQhWd5D?7CJi(LPzdWZ&h}$cQ3uYN#(lIwXdB6h^ ztH0f$ScZIH@n1v6jZ5`zB|P=T0KzBdV4_@HMe?h%-NN}yzsl;U_cC-!cs8~WBBt>z zcaiz0nh>mC4_?hn+4ZI?6+Ju4%og5?g7l+Fc4cN5&VqfPC0wH;*?X$Z;1S`1&Rtr2 zQ{(a5P>L+H8{?_`^$$)#zxrC)w=6tY*wM=tYJpa3>1>(DayJoe}^8AfNfg8-M|Kcze4(pcw+_?eXQ-+I-4W~qS_`u0&`Uy4xPASuuS z1s8bDhvcJ$>p0&UIY|GdOSwKfjohW~|Fai{56M!M2|jRbWD?NiI!&bpn&J3cHeHd5 zrVt+AGAECgi)H&k7KLc6jeD?t(Mm7%;jJo%0cM~9N|8mbpqLa*8TT=qr(OyusI5_u zea^>>yt9bgxcy{G!H%GS3VrTuPRGg!cxqpP4Th&aTgxekTP!&+XgQt8X$fnJ?p-Xn zlnFyF?gU#4mY|FZ^_s9{UNIO}WFA<6RMwFqlUPK$&#Use_Ru6mMjBisk)Byf1ifGG{oA?OBZ8481_Mbd zI-|vN_x86T_Zq$+4dn)^I1>-nCx;kZ2Dj`CRUn97pf5sfSTIMxQJy*SQB%o7hA&w7 z#q2?N0|@+vbgY?VhX5~vS5m^I%!u7_7`m+i*P;vEyzFgcNd+r1o=ton^-M+XuN%~u z60~@$a|tTaE77C|FAp?+mMzwnbj~CNWgWN3x<_89C=R@3i4B*Bu=B}@niYx+!kNQa zN6d8Br0@cZ-|}YM>;$FU3k{HW%*vNMmz8Kbf$Dksi;78u6Dc2`a)?#wXbY6lMbI74 zgj&nz7R=~EF_w&oO3dW{K5*=CpLgzectnJMF(XdZ6S20FBR)ljLTxZ9ST(k6b5}Py zGq<=-Ab$PO*pqBd^RY>IlGi~r815PHSg(S`D}uJEs`yVgSGe83R&q6rIo;L$pcOVL zXAB0%Nl2Y9Q=BwH@hs@zqQFzaFHs&LxCL4C6_m1pxF|iTc+jQPdrc`gW?^L{iob@C zXi&w8;T~U;pngOY;4szv?DA`r8{CH_1*u5w+ zFX-CaG{WhDGg6`Eu#j#iR2XUsTuxCJkMWaoJwj3z&zkfdOR23xlQ#(?JrHA5BFz@0 zR~K2RTb|!gu^{+acDEFeX=XS}p5<9APD9Ns#BC{f9~N-lvUac@s6*l722f?zcr|+d zHZYF3H;G)Sq|h&RaDH(#z9?nC1~n(Ac^`F-iWQz-RwPI{hz-kCNB)>N1@d$7%dvW9 zg~B@h8>%^H)4_c@8%*me4ohf;S0!5-cm0l)+57eQ^B+vk7(Zf|h7JT2t@(e$WL4MJ%bXS!Rz zte&;uL<@06a$r~Ae+A!qG1zR=mWHBS&}5?U>Uzt%wwd7TqPJ(pTw-V3OO+0z7Y}wM zE^d6-gR2}pwHNQ_#@#wGQJD#Ub*Hq+C+^Jj=$HMQOK6z!dMAyZCQLpz?v}iKA0`^jIWoOQ zZX?VS?;4%d=H;t$pviNZZ@%~|(N{WKceb}1w3j{upon;_dp3HSb7Tm7NK$8taQE;E zm*R#yUir1EzSq7tUjgz0=>AxrkI#Gpy@tc*nUTqfQ;q&Vci&%YcQ-$r+#UM2R$T=c z9-37v5>ZC6$sZ10-$w_f?)n0~yj(nA@9&34Zvc6K#7^WI#Ll4%v|STNKa^!C^4_b( z*8#+iX7z;|-A(W9zbEw>{LcVH0{v{iFCQZFr8)>+RiV2tMcS zsU?&4SByCaL~eE$C*Q}6z{ls++uGT+VYtA_(OLMzg1r9E*VE;}L}D%+uBUC?iqUzz=+YhwikQsc+n?hdStsp0;mSbFJ_6+?Ly2&yO2zwVDjXMbeTQ*IsN~ zKq^Tg*I;W^y&gDTl7($PWTM~?^+|jhtJ%d(u0$QDYwQ#+4-@48o zPSgJMBw6l=Y}wq(yQO8r_ZCV)-Enj*&a6QmlHz(H?~PUBtOps(ne4ql^ck|4IY0AB zf+O4Jw98Ig2dP#z4J4b;0e(Y{%VpcWep<@u_FaS@i|kEO3{U0ybh!hFerJpiITDq5 z%b>bRa8S^${XpwRHcHHrHZ&p2iI`T)mC)`^JmUG*8&cjP8-)SNlCF?yK{|#O9F~R+ z!DF)6qy?;*Ury$OV`kiyY8SwWd*oL{u{7u*3F45Sro-Lg7JHhz2{f@R5GPXJP;~`t zhciZMH7g${m?w;;q0m{D`OV7n&P2)FySUak$m|^eG0h#-Bh?uRAZ#oTmK;xcQ3XpF z+70-G00R=RSjO;7&D`xgr2gkE5l(9-PMUhCI*eSnLuhUJdQN4n)!n_Jk=y9T^@zq= zAc~9gdu+*npJ7~3tR-O5h?-a-Bsl3Kh;;^$Tjs&74T@y73W!&GsO)OJi4@LR+bRsw zndlvAL-His_&7$GuCfOJ&Hy|F@o^~pIoF1AfI1#$dxdvRfeN-U_;ZLN63FsCT)Hi( zPr*wDR0Bm+=f2hQ0fc3|>oSv=^?+$#=MmB0S&8^=%4c^7nj8|a1R=gLLC*R2aQE1L zs;p+t6^8}Z@l2=+0q{Nkp-$2+BP>kLd_fZ!7zGBch?58|L6+d%%k0rQ)V08s_X2-| zB59GzlfXS?q$xIw^d~xzpjM0Uyi3*rnJ~y(gn?Rmv*8NeUmrf)x^R8n(jZq*_2dEB zn2=S?#2THZU^%-87Klwm=;aG$XA#y>Mn28h`gG$~^BZJ?iL2ynY1U905-}pivN#b! zhiRbl_v@Ok%p|Np`YnQ;C*~q5+(k*gjkn_xI;dC= z_fryc9~X`0pon_1v{V5<95+9i5P?qgMBO$$k83>iQ1ByaK$sI13cv3dEPP0Mt2!9u zV7q*^&EQgFF0EM_a58>Oy@5Sj?l&v~!qc&t5yM3_?zLhA)aGgWy6rps$&Kb@+~x=Z ze=G1wK*gM0U<9*G7sE~K?ur8*)p*jzMaokk@~Q@Gf$#YriwLKGWX$MterU(H3+Ok~QWS*pJp^+6w?^ILddy#%%}4B_acgTGf;*fVpZByfpsp9)KOp^&)k5{M!+ zv#iu8>fT{<#IUAz^|@M!9E>-jGH5FrI-D0g(7>cY&Fr}Tn0K#Z;9RLuY;?Y-V*@Rf z;^{ItTnUww8hEK1|M{Utc3j&hE>ecVyIwO#2Byrj6XTl2|2^kZu@j$qe(xmnE zMbP-KqSK?TS2At`?~V>I7hSCYqs*Mw>2k~VXWax<-bg^BCUWAYc&f@)N(pLVr%&*z z^$nF(_Z6vc)n}yUB2Ni$uDb$lyDdU}mbfbg{0?o6hDBBaqmAufldr)A)q~7Z@}gQZ zPJVm6y#||RAsqx^gf0EKpKBX_bv950|2y$Z4J0-Jw-7?1PTIbShXU>B=jQYYRi4Ut zVW03q0R&NHKrORs7-T(0@6W>Xe83~;BDi_la3DG_$FZZBjUW27u%MB7iec&T`jfM; zr4IF9y2?F|r_9`m%~?!LD+)2H(+sf8>|Il)2d@bL9790xF1yvGPYUV0lE->Gm!PHi z3jq&K@O>``<0nQ5kdrJ%O}mZ!;TQ5f$C1z>_)h}?>X2onj^?=W3zxGR&o7x1wk<}< zMUOlIZ2-5d*@UQ2y8u1_rnW~{hqJ5Fz$uxhznDf{zCeg(D)5u$l_(4mYKlGGjAb;gda;3>cP_*#@cLm9R>$ z_V20z(3j;oD~Q`@9!}>3E0Ou;j>Did*}$|dc{Rlk!?u->=Za!OilH;Jo&u*Pl0F?u zCAPq}PX3>^Uv75%5>W%srUkZ9@hF4a`f-at6J__*hJLgV@25x)GqtDq3JA~%4Q|3A z6FirOkGF5=+?cVUx_jcQ1-!=8E`h1o2PD!Ss2snOKbUzKKL{ysuBCwnbzH19Re8Ap zKosaHnMWa{1-iThn=EDhfx9Bp-yK>DAyI|&PPCkd?!;rkX~Q`Rw7fJRKOhXUN@N=R z$iDreqkB3l7&Sx>XPA(>KNfZkSG8;rK~vXSd=xqAwI!ZWD3sW^bUq;S1M%A6QO)7v zG@7Q8Hd4l`KiS#%gZri5z6)IgS)%@xJX46m9(gX}fN`$eBCbnWf}QS67G z;r9$oPbx1iEmhO8dU(H&DE+lvyJ03w7fG=cIy%k}f+bOtgr8r>OFN`6I%Q5Nchqb-E4F+eBWwTCGZ3u?4Y?Rg1-_=|cN4~Wc?f#rm?R*u zW-9NU(|)s--qgb`*F=P#RDk!^FKU_4ngZJl1--9U6dx$g?uNZ2r4jJm4jpE@cp1EW6w0S;S`Q_XUIZbMW(GAUY^nQ33i{ zwc_R5m}G~j`}8znCL3l*n+W_$=MrRZQ#3cO)mubqv6h3_#Jg*UNhz9byLD__TjKK~YmF)$0=% zZ`qo@yT!c>z%)CO4q@y^b0YP!+2dEvoEZSlSQ*Le;X9pe(}4pC zHHJhEgGkN7Sj;vk!p^0qDukmhNU8vR#VU^!Map8bZ_r&rS-4zWeE}w(Hr|U4OT0T@ zFA$Ndx}B+yf!)8wmpfJMv}APhS^hpW@yMI86?a|`Q}U3gzU5Z;2(ThEGX_|m_5iPA zF2}wt<1_QRrOKHSLyoPizgS~_1dJ6#+AUkJcAk5O z4I{03n9x-j>2U2~uFAfv4C&m#W~z(Kx`j{bs7+~v0=p(?b&!1|>JdJ|2H=Vz=X zA|c~=3clz{WYRQOsT)6}N?de-_h`zJFykj&!%zpdW@e zw=%p47O@BVkpLiqFZC=@rUZz9;g^;MY~y(38j=uHnkd*0oe7#m^Dw|DdIp#;KL7DV zClq_QXZWM1`9n~ZG+V)t88~|tA-dYC5J-P89&NPTed3xbIXl zO6n6!3Vcrq^+p4LV+`F^aaoS4h_~0eg{nFXv-~i0LNX%kaj|lMXM%NBnS(rbW;V$t zA0X^k30xZ7Z~=V4jGGsGv;8?!8qOG`6T>FV!{(Wc(hp49)O}Q>6%5kch2EuS@^HHk z9P%Zaw^`3jBIZW^EsYfD{)W@VUs}zysTa*H2%(8^0o9+HE5h<|uWbw*O!66{T>Cb7&bO@~0_QtHjGjSL`_vq-9^ z8U(g*3?WI_Dp7?PJjB)s?|m-RUQ+RBC=5uJ$fGWH+Vhl;;BJt_OK5XJe(p-+6-NuO zI5Z^JcpH2XC=2pZ827FA?5F0zWJ(+bnU?qX$AA|@ZZ=;ddsPEPsk7uY^y#yYrwg-4##7#0bCj^a@x?$kgdnA z5a4SD4}XbSc|3<#^H?BOrX8yypJVMlQ#?8kLAYIls`dvogOt5m-wQAq!~z-yv6g}> zSO0PSu=&(SFfnc(iLA|HQCez_v+CE&9^k@ms9ZZ?TrFc(Yso?{LBg1%9NzbR?$vic zL6{qIUJa;lRr=HzLI|YYMM(#GT`5QzCri*xyVtxW0?vk&=1ap*GhIi*qe&$^lCZRiF<@0}`? z;H-hMSLcYRNkD+ZvzO{=Cm;yxeJu5T@g*`dq!OI9LL1hE?1SOS+Sx&vQ33jrESCuf z%($GCZFW8D;M9uADnywbX@SKamJ&6ww7DdqV})sj3|O;t7)D(QH)Ryym;$5Cmz>pr zckBQb!&}FIffP786bHR_WC?A=%JA-sb0je&@rVnc@#dku(XCzD8f5K7ukR}}P+$mn zblyS5&5N9{Vdy-uxRoZNf9MYWmNdj=Q32exP~67|c@+Rw)!6=3*5y^iLoKi$HoEfI zSx2X;U}%mkvJRqJ4^y0mbuKC~^C_!wdh12UlM@W852olPFMqyfb)o#bO58vnR+DpS z(_{&0>}zry@JAws9Exa~Zgc=q&Vc3>hgR=R_yT zG%aKMh`f9vH``<-3ro8I1flSGdSC%EdU0!F97ZxihtXVd`LjwGc8s&Vj+_glAxUR0 zM1}fXH_|CluzH!o-fQF3hH{6T@JJux3etky1z57grcG$L5ZDztTq#0*MK(oWW7~n` zXfHknuqqsMq@uCKw=LgU(|tpg>NK9jtcmMB?25FD3)cD!${lWlFm52zBxtborYs9) zjvA}72g4RE`JIlT7DA=qu~)XtUb1L-0?@4%bVtA*EaIOCHIs^95IjGn+=?_D9Wc(e zxJk5GQvf1LU_d$PcUqd6ev{EyCn*=CRXYaJ5fc2yk88_;vx8KGPmvjMa0+9AV2g(j zCgGjpb&c7maz1e;iX4{@;+Ww>MAXwmM;q0tOV-qUl!?6X=3w4%Cm(w0h$&MpB{|JT zMyjM6p93r;Y2Tx<39}xaI?1?FPDZBtOs!9T%wcN7xj|MuDpNukp>3? zeodDuSUm0~9t@M3o}0k|p1`H4W8IDhh;4itKx%0hRI=HjMMlRwQwbnm(Jvfid$Jg+ z!yodyy0q#wP;|#J3^P@(X#%ltJ~#1t+d_o{xi<=CLalGn(S>uCTN_(&B_wcc<~b|_ zp}ZPf3c1exERqoCICTi+b_~;NeNgAaaCpcKsgC)^`lm=N>1?nR1UOEfcg<{~d zr!$h?n)!hw;)$1qG8g#Y&@IyoxbRJEQEOHy8?g<6B$S~9nV@`1%|CWAVeqdg9394f zNC97#bs8>QI}qlaLlTU^1fbgvk1@xMwurz0Vto8;@3nK+Kfn2Q`J1*rwn}XJ{astv z)%umTp7MvZb!P)ZYZE8BKh-aQPFhY#Kw3{gSy@qu#?H}<*642?Gihz?j7_X*g*;^6 z|I@IuQ5l<<8n{?HQ`x@1{`s+=XH#;lb%uqVgOQ@4oE)E0npI#_-q}}#guQhJY`jKv zQVLLZu#~lQl(2*pC#7njR-hwepwpQm7hd}0^ba7s)KTz@dGEL>a`q}5OlC}bRcaiA1-8G`9t^< z4?HB4UFw{f?54qY#V3>tN|8$7o^!@+Itd)1sVRqL=?k0vQRSj_Bw_7C)_`t3&dSjq zK@wsntdQJqZ!^0Kd|xA8>iOQ?B82iCG~UtBVp+MRh(qY?C*PrG97TuO4(RMus7D-r?E%<%QJqrvUtO@$z5qE58NJKOTYqYaV_dTw^jOY}eQk zzg$3_a)I!k0Z|q4%|EfXB9UnwTJ}V(tsZ+nY-2RBW@3fm_qm)$rUgf7lQ}^RXTh+SX+pEBj33n0D6}5E~ zSx3q@rP=6nDo^<}yFISx3#i=Tr~$Z6$@(_G4vNTV#M+_6Pxo)bZyuDf$$p4? z$($^F^fMbX2+eCr(YUopE+kVMIOfvF)t+K-AI?&0KPCEcTy2^WR%Vi!EWDJfI~G@a z-oqW_UG$(35+w8+C8jjbfm~;TE1oM2QONCcsxXh0^FQf7Mm>e&qVJb}%~9J-QVb=i zBp*9=eWfk_(dA4<_-N*l7!~8ZZKx|oI7?YUpmpEqi{NMBAUH)hdyg|k-8@Yqb1BUl zl>*xN+Ksr!U&;C9wA9SaI#2aWpju&klQl_PvO_BRSck@;xBnQ8cUcL9E^Wj^5_`DzKOf4r81d4MIBY)q&C=)fY8J9F(e)wEBB*a+};v9(G{#^oA?BR z1Q5>XIxk6Jm5MD(Y*53kzezN!pATKIe3pbA(yf<)^&r0(5?LtARRFB1tZ~jZP11C* z=oRuV;+SM`SQW#Mgcw$(j~GTI6+}pLmnW90Q6D@B4U?TW1jFpdB<{pk>}1;+EbeB{ zS*1^=S?W4!Z<-EUzqwHow)5Rns2K_?G_9w?*4c|Uv?_K_ z$l-jP{am5Az4)4g8uPfag21S_o*N!3U@5un0nALUzveRdV9nbU&a51R_Cfo}-HR!~ z)0%;_YD2l0Z|*qrKX=Lo{16PgY4p8NcNv<;RGk>sVKR6PVGB4;t}&9De1gIma2-^Y zPw1do57#<=C0VTyoaw$2+!6_1tTk^hqcn9oOEtRhKa)% zcrN5USm}GJOIeIq-ARvGB@vt7g0~Ot)({2|M@{Yp-ES4cDU-s2Jp>=HHkEmX*>D&3 z3CFe4m&pVSqoV`+-L=CnxdJX?44Yy`ljPU&zByatJ0}4G<$)J1l0RZmaiLJw2R%K@ z!a)yBkwiFQUUM4Sm`(39cyMGEJrNxTTs1Y^_YGi_N6_|zZ<_MEp~$QF)O0nti<>@{eR9FIitFPoKp zOCtjt8pUs#1UpR*z>)#%N)E^<&je(rKyu2?g;1w*8l9Q%)z46pkwG0t9rDA zp3mQED0lcKv0PMhQJFI=em=uU#z=tPcLWJL7NWlx0n=;UF2B}V;n3&5Vzbt{YT{BI znWB&zgrAM{*;?7O*AxRRTi8Xq)9TO#ix2lB4Vv*YC-l=aNh(e z_)Sf*iL||RW_%2D#`f7(GP)0 z?Pr|NC7O1F?r^j6?H{7w+8n~vfD|cITwVKvZq+!`is-7DnZJQfz=^F`=h&+u2aXi- z?%w2OZaq|vkrSC*GsU(ybPCpML&Sxgx_6B5v~=Tv%|vD6K2c$4SP-OBhrfu|8=wbv z2i8x8KpF&&DL}wNnMP!cZB^peQq%8!&3DQfc~WKU;?~cBKmZ*gv# zi$d)p&epGugtYBQ40oxfW9|#Cb}UN0y1R<@c9PnG5^gU=IMJ+qr5i^;Rfxj27wOq?e3vfQbwGJl z5$uEH`%qU?xQ+`(wN8*@N}`wW&-&rql>NfPWG!(>~8Fm-i<{2oU}%A^i_# zDu0k){Vs3+J#YF|-p+I_sThTrB!$oD5z$`3U&+ow#?nsA0$NP_-)8W{)O*Q!c}bb+ z;EYh@up<1iA?<>amYRkZvJrxolAe^p$iF49^cxs8w(oqi`j?EhJOB~^2S3o{(kbkOf z0oB@#1x5#!h0WYq;_9vznp@f8#KwQc@a+b*aap)Fz1JqTeb$4u-EW=RAC~E8-HaYp z06Zkrd|;{Y^0S{2Qgx@pt$9o|*IxX>J-gE>m;U$MX2QJe=4V)SZ{W|SrAm8o!wPx_R>Y)Q^0 zo#A{(VHEZ>lP==a4O`Un{veA&c~kSfBuPgi@Rrh9(Or@g!bg29--JO5Ro*pLkOjSNv_Y#ILg_R?8MBIfJ6V8S{@8K$(uJ_W+TVFeTA>Ms_qZ zej7LJ3S)I}Ve;6t%{vTDZennnS+?YwBmiFOlWYg({iZv2Gs|gI*`X@Il%!XK)$Tc3 z|LU%PL9u%$kZJxI)P|sawlsLpM=kX-xY_rhUIoyC3=pl<$^hD)1T51-#1cZ5L&)+2&cU)R#if zLiL(~?d3XZ3HzSYwDFb8IfNOpZK;IC)H7;^@#dcmkis6l?90@9F-E_Pw{9G$zt3A^ za}i)P2e{1)zOvd(dp4W{CC&yFBeL|WS7}YN(*S@gQC)a4L6lq`HlFn*OL8s@8tlBc zfU19*3Z2(4l%OG)tQut&p20dF9G<6?ZRnO;`&MA+uq@fNS|$!AD1LeQiK@iYOU=pqH*0JGrKs1ZcFi)dQ8 zGoXvvF0cM0H$lY3f!Azcjt(SRgNlcE3#Yo}6p^X4OoTvvA@v8H0pILj_z*ObF)bn( z0KnXPJDvYopwId<+xwrZVYwymkuipMNe>=$OXoXZ z@;IqHTBjO(fmZYL47P=}XM&XS%e^kYL&ult@@B1C88E14frg=IR-dT9x@x{ z;ukXYuv#U*{wCYKnah3hdB-U4mn7-W>Yl%U?ik%4!RfDj>0Rsp8&1C~`M9W$IqtF} zcF7IC3PMXB}_<)-)ODv;FDKSFCk)y5wu7KHDb`CH2rB z^qb=*w%)Ff4L2CuI$H&>=icGxMfNlEq$4yM*y(H32W+2O) z!fjfmomE#&f#0T9Q53|P3`-jlLE-aVY$%`9Trb)kX<20*u)YvSW}$-ceY|bmNa=w! zp|#_MAa`LU*o$)6Fo}VfUcnzHcYn|`9B^XqDwRBb#^0d-?q-YVNpr$_73-rHam@he zHWRfDvti*Y($`j$G9_bbg!G-o4|+ljQGBpw#OhIP0Ag4wbdgzQV@3ZtRNR!U~lDOt_t4%rV#JC;^j)5}OY z&ZRj#rK_go8My;YeW`JI-p~p1S486`x)5yI`25HS;Xmq>llFj(nF34YDBS)z>CRUW5Oku4x zCY${Clc;t#W|DIP>E~>|X@EB|xG3G=l#CCl(=Mu&(hl?jN3`q{1*qn^G{PIf5i6vr zT{yVK^2Do8bq<`c)@8}xSd)xvNO(GK{!J z_GRwcNc!5LO=b=ckbie0i6eVcS-{6VD+4UPz3Z{!K6 z3{GdPQTqbfipIa%p{@SO%90`FJ`&~q)ZYk&ORMxm0je*x1|AtSS&pK#E^d~&V~${? zX3_`Q43>YCLizJVrX*$Y@}P4kBl%cDMnv_5+Bc58;eZ5lVl^H&ZA>DcKHA)C zPpeb&VY?YP6Gyy zL7%M!$0D%h)!PQgHX>fSnc( zc>LxM7xyc0)>AAf<9Lt;X{yyR${kyNE-cTaw2=8UdgKn%n)2k8*_$ZH9GJlDd)a$$ z9Kd=`J&G?j>lps2jVUIk7v9Dc?o2$ma|(CaGPzlg4%f%f{ME~q>ra(kJa2M>l6v8} zAr6lYAib5{ZW*`E;#hj0k_#q}$a^ckGl8%*)!r-HUs(^9_DgAe=_@|-r>8ph)(qWk zMfJjO=*XK}8#e9Sn8iAs6z10*9opg5I%^@uCgktk5Olq*eeC z{yzN2c>*1Ma^?)-FRf?q*Y=*#k>1lJz@X+2vd19GtVwxu&REM2bEO0L0LLlPnQ_Or z?_!l~F=-9kK;*qNe4Dt<0xqvSscTAUPWElfm_oiVEcxtIO5`zw|9eN5cQ2--eU-i5rbv_#>H4zS+#OsEsJt`NEc1we{Y^bdnF;B$su`8QQ>|9f zNFfoxVg==GApA*_oug#Ms0j}i$YLq0Oo-^6IVE+DQhc76Jbf<+^+Jz@u5?dZ!w2_* zteK4!8>ypq$t2#eKz!S&Ww%Q{O|mRHP+%|+Iko7UtLE!)0hfaz0QRRoKGqp z5foa`odOe>EN<+;_JK?Qjc<8Irgd1@!cN(vQt5XNUk(6AJh}6|si1(YvDZZUF31W) z`L?LFiQ1m?J_&IjCs<=t8EQVH-*(3MadqOn7_%nDn(yD6X1Rq5&VJxI)YV&1c0y5& zs-8o))hB_vJ}}|J_r}4|a(wV93g*EYfElx$I=c)bD3SVf6T&9(X}5&s>nHWJ<4jJh zA)D&A?F(!*5E3nuw}UFM5+P4Y79VGj{7)tGED^ecr230@ZqGZ#3;qPt+MYOabV5)Q z*Kxr=2H$Se{=%lPPQGF3g988@q5NNBQ~z3B`du;nzl4W@Bf%JmjvlUd% z(=`xcqp~xMrOHKv(x&X;t`rwJnBTXDj!)sNswL-~eji?=W?qv9ZB#ebYXll;bX0s9 z&3R#M3oz8bn?vM|(62WY`NuS^sNj|+vaZ;y>l{0_e(5ZIs+shznmGFxgva1*J$ryr@)owAiXAf_YH!p#uj>CLxBAaHD1OsketQb+f4K*K$EtoI z$o+S9^WQlr{!xXxmLwVf*DBQiib4KbYx^t5{>Op-dEEm)o0)7c@Dv?<(e)F&{pKM zp(5)u*6I0a-kM zOKP-^Rs$Q~XMhawSHaBXPtDOERet}z8hH#ROUF8)TbSCX21fM!A@1-JqzQejc@xdPJm zQDme7k~Tx6Vua*l3- zKluMC1pmn%_s1{vzr?=(VORVWRR5l1(%ja<@^_|5O~qWjYT(#P9+wEp9jcKITY|bmZtRp z%k!R#a`6L@l%;ER6*z6{T)qI7t?kiU=aa?l^H^U^;**_}^?f_r`*Fdyxox*e4t~O> z>cYQKcPx>EX>u}`wXyio*M1GWY$gP+AnOOsMvp}2GmG%SigoO#9&$7=t>^kT4CnPg z*v8i0mMN@qYlly5-l@f=e7) z%jQ4(N!eqy`BjLrZJ)g{R0@MkpP)a`6!?0hT+x`pBCc(Z7mj#JeIb zzCu#9VQRmm`;#L5=uRK)n5loeoaYilDUL?f&_2EA8&t5TT^|a#=UJ=+!a<~yAnOJ% z3x%{A;4ZH?j^7KkuM@cNz06aBy;!Ta)N4D>-jX5-$wqQ6t7i&ylXYjAmj}WXEs4I| zA&bA~WWmo;w66CYW%OsQ*a^hi zmmK6tR)bIMmmqKp&Xge`*ekylQywwJzUOY1kZ5Aq_`D}75T zypy2~wX9OBk&uG+N10iqMtsqfnlkERHwVMTfbOKd2mAx3)`Sw(%AkJ#l{qmp## z&*f^J%rN6O_s?dE;wzuA#fs+criDm92E{mv@qRN}g*BYWn5b1UYz!>7p;B-ny+0_@ zb}GFudMOr{k~DCvkpWGL^HC{@L2h$%SMpy*ewe+<5%-xK6y>n4*GW{LOr~`q)||BV z?IjArzsojjSLMR_q!%sdv^J3~L5)PsI%S0EXeVkhnlUyeYe7UxKxsQ?-HfjopmZuQuASuo^RZZL~i-%(6y%ts9<(yn&=g z>7hk65xogBY{NV+nZnFc&GQuZnnNO%_>1x)D)47Hh^@LSs!F2OCZd+><7s-*?~1Ft zRg`F`a4PC=7q}xC(`XT&c3~^NfY~H&>^lzJ7fFbp^wnU_Uy`~+KYFifksQ%Sq)qzM zPsJr>GDW16lm^o7+M0exn|JThD-08Jb!_vq-3y$|_?YG|hfdCO>x}d2{pH+mmSzE9 zP}6h33Joh1*K&@y)MW8cneqp)MDG0qLhKsgh)xum5fK zL==XBi1hrn>cFmVue+XWK|IdvQb!{C8Ze|SsJsRAx=m@5xMk%sC}d&lgPdsUH}J}r zMnQ8o=9ktIr@YhF{3_?YaYJwMs6Oz3qxwF5pW|KaTu%ahn;dsk?@zWZYl)yu3x@jK zK2mm$$Gv_(88CZ{%5XI(06-D+ulQTspV@u?T>0pi1o$_;@^{z&ALJ_k@4Wr*mjB;w z?l=a7{0sMRMc!r4bcE{ZN@)m096 z->~zr->&h#%)PzddL4s+c17=J`1NDXs_2lpql-C31We=VI@sr3=fzOsb?rSMef+aje*31?`QEE5V7R zMJ`rXss}Zdm#jotVGWvCssSl!`u;99bipL|Qz`}GjABU`G=d{rPaQ^i)1^SK z&%S`wR6e&xVv1Cqi&>vQc-5vP(YL~C$226ON#%*u{mSVQigF_FHMNRn&4*d`uXgf4WTFHJvT)y1yovEf5VGD7OFw(3<;ID{hjOt09Gb@CR?ryG6Z1a_I;QE{6W4DTGqERE#PHVxe}RGjgXCi!>sw<#Ru9< z06cInkLsAw4ZyJc4R%_M#HmeyLD>g#AX0tjZ3+cY$WN1Rx*m9g%R+@xZGzIsNky^pl(1m1Gd_uw zt58Qe$+MlF{O$nMTbr~GUzO)>HBzUVI`r!bZGnpDV!_sDKO~scMj73I34gH-e?+ zTQpM@8uJ6Wl|-yi!)nXidsSwxsu^O9s+CbLDF{PqyIeP|eM5#P)5!NX4nKTRKjD@c z8x`SC@FJ5A!$Ao#!tTy9eKk;G;0`$U;{+0XhS|Ma{E+N}7JPSxC67`5Ks)*TWR}$I ziPGQh{yJTn(1}9^k&9mkC+9%9@uefR3B`Xqy9*BNz{MSs#1DNJ8q!DYu@C;evh0^x z>9~uSU%e`X%i8lGK*DV{&y8QLOc71B%`xx#?1-ltSvgUp4K{xp^|~34qvIYMhibvc zDF#k>JJrd>mIh6ipN%mjvu!fI4VwJjJZs?EOa$LroB#DLkv5BWGQ`!3!(Z|I^R_%P zzr=lix;rwz2b&IKd66Kwm3H49R!nV5{~cwDP$v z;As;XDiYzx7L!8o5_w$kjWu!W;oXepm zqVA4%U=HGvEK#=6BhxEAC@MoK%_N=)=6hodr}g(>__&6Fc_l*cG&x+wLS)5Thb_V- zi&LE7-U=@VzVv75*?N#G^mH*>B+zuVhtYf)s~%36^3qEu*%##nwM;1@9_4zBtp7BO z(4*i=xjr1qBLeF{glbr{7OGF=@Z8Y{O+M3OYyretjKB)NZsI+CjBW5P6j%*Q;uy#^ zKqr|SU$>J_<4Mg3h>M37T^6jaXe+ z*4ZOJGixJU*4TspMEq$~<%lr95buP$o^V<8G{3h)|KPi%#l}oe?X2U50~E0-^x!K2 zmQ$QW8s)W}$meC@)6jKf|ABDNx32-n<=^fkoOKA3RtLDCtUJ-UBA}%Xzc~geN3b!~ zhq2dspSBSHkdCwRON}#e;wCIDWR+j?Hn`=eKmr6$7n{}Yn!HNS>bdGf)CXI zEx~NLACzC>+FvGR#?x+Lj3D;QGW}YNfE`accQS)kZVedkQ@#K;C+#J=Rv`2M77}Hg zT;{zU7DNDN%jfU4y|`PvjkjDMlSzdFu7X$ldHRXLdR%ELTZUN=VRL7(NYc*abdY%Cj*Fo0)~Is1z?|_aP#xM-@aenbn&W&otW6Poy~fCiOYg}d%kD;{?u?f+L`m? z`g~hH?~e5TBaPPUL!~9>dMaGbGXyE?zHXLVn9{SpuCqz!3{IE(?1JfP#>K1HV|!QC zn5onK`Ls2@mG}df_r7RbQ8S#5mQ19N(`?p&g^HCC2=RrSj>X37+0ZLnSKg;UxneGYHuvGH=A|7e9c*o zB_p%(?8aqo9|Y&d1@-N1A2U;zin?kTQk2+duCiTCziGQo%H$`)Q>3*%kEY zi`;aX(Oq4U1#sEUOKr{!4rpkOBivxt1@7W~K7cW>1< z#ia?Pu$HBhhMv;p{%gQBw(cztgJY_uW2S`! z(=)XvVcd{yk#&hjGT+u{<#VDIbKdDOh`k{bgdC0NX!rIk z#+h{H(mx9Wn1(b5mC8$_Mtb3nY6*<40$uDr(xIbv#IR7OzzMbK_p53ZXP32q7fLHA zW>B1+eA7I-Q}X)JK`O)X)O@L+;8zc)udpi}vGiQrA{DO1Vk&d?S=< z7ZZ@k_H*=JEJ=ong2G-R(}I)2M|28pw2yo^cX`fE)SbYfcnAG3;=;C}S_$7mBpE+X zgTxXJNg#CU2VOqowzkwxzL83!AJC@zdk#tPbn5qGF%3U|FtY4tN0S~t(+1nsG4>dm zUCZ(p{322Ce)!eajc_?Vd#!{%B-8Uc+96{kH{$1^XNp>f&Gij77mM{_d96TWqS}lc zs)8jG`aMNsNMtsF$W@?gVE3jf)JzAh#agAXLl0VKkG^7@OKz#Az-LXUc@BZ&wLs8P zp|&S??p|%}omqnBfKhNNe&d>ZLZx)ms|`qHK7q>3Koq>OB8MeetB*_adQ3WL^AqZn z;Ho7bm>84&RiJMGY7)sq6Oji%t9<7doaU1?O7~YK#EGTR1#Y~P1tdndfZk-hJeSWz z*^JzI#-z_7O>nT{g+9>Ao*(c>IFd_nXm15&u?KV@ql4pLnI_6*P$GWZ6jv`=3~&Iz^V2LM6@9I!?IilWQuHpWSjqM%j~m7=TkE%c4a1^iVfg>5O3;p z?5Ru=^>@17fTr)#fo4gM2&MAt^HK|EEupR4Z@1#@a&z2=5+B?sjVwo?PDi*MI1g&+ z3i4v*+>ppgKWjj1(5W=HnW{KE8>!UYp2>yXdXiQd1E$OUKg69=kS*_%uG_Y4yLa2R zZQHhO+qUiAt=+b5+uYrK`uCqXF*6r4F*hg9O;yFWGFH{9i_Bba=J%xHF&1|KT9|~0 zyATQ1y`lnFvk6nzoR1++I%kjLN*aKl#tNzOR698Tn#}0KCMYr#b3k%6Jp4wZ&18G_ zhP@XT6@Z;J)N43D<35c+=k#tKIV4HKK8T*O+WX&|nXpzCUhp%DbV2Y77{ot}PyW-1 z^-Lhrh$7R-_PDc=laOg$)72PKHqzu~f!#Ez+!F~BmCL;#;9VI_te!<`SgJD@jkR$; z0`80x5i$_m2jXO)G@@Um1Hh(%4a%t0??lrXm`BS4FcK;L7`Lx zpitc{E*{h{pn@^&9vd_-a_-3EJ}NJqdEWgoWt1V)f0)Y$YB zQl*<&Db`K%rVczThKX(dVyM*OsL;PnZTV{&%4E!aJaH!ETQMlL+V5D%zg){LVP!az z1JneF+IjhZDgF9O%HjT&8{A8>H7yy*|7B`R?X)#gT&-IR+BgJuRZ}+^foPiZU`z zT?13Xs^!i2BtS=E@%K#5LGDGdo#TH}Q_8s#7jsCr+XWYJuOxJkyE@bu2;HyQPz&%0 zv$jj|Sx4w>EMs2gOtmy0Yq8SG#S*u>^akLQE-`qDvtYM^y8w$CVPUTTRQl)o>;i$p=^RCL)FN1)7yuCRxghbVjEU;JIVR^DCa+Vg$%GCxQ>mWB5+Z(vN}aB*5m8{9by(~0Ii%H?}?PfEt@bL=CEt z--Sxt1N7}W326Rb-T-|Hj_BlUt+qQL3r6Z?AZmkxCo=q0w9~sy<=j@XSWF==sphF>@r+*td9#KeSCl^OO z>XYRh)Mc1*P@$5ijBoayZsF-o_Ezz{gXPRP>bf%`luHFJl42ojv;BR)t1+%`XQ4=O zq|~^kCYE;xq2y+^Y8MlSvcsDA#T8df1g^d}Qp`VvSbRL2y=zKf?(CIr-vBl1O2jCp zDK1!oSUf*V;@(z=MZX1sO&$o>XE;u!Rmjec<@*DiV9zHx3I*HtGW%5jfORZJ;+RF= z!fap5KGA+mP@iQ)l(9sJ@$I6o^4xuEGZj)^$4g{Dww|SK6YfYT-W0}I5@pLHtT@Ys zvr$un-`FZ28G`Q1M;H(dDB-3zW_5>vQV~n26vDp8`?8xR0e6f?s%aDqQ79gmEyiDW zeXqG}I2a7}^s!IpYKOZFtF%95A zOGV&H$%eoz+9$2gfs3sg=g}t0 zMj_~`lay{hT9{THzv+60Y#?BZAiPL~(}=U*zBpdBzpl^@a2NhmcfO(4jzRg19(uqsxDPTLcn=o9=A)&b*G@FJ#Hu<#PCwP&x)# zLFBakPH(@UOQ81bQR)-W=np9_HJ;h2t4}$bsw=Q^JXXv_0tPzWS^MqElYtzM`|aDT ztwG6IDS#H3Zg2!NKMDdT2sfCv$~8e}*jq3t0u(sz11|8VD$nKRf;~@#TtpE=tJZwO z7USZFqY|%L5gAS*nmz@VGfG>NE9CMDdGOIdq#YDBFfw)48(zfSdSdKKZ?k64OV?Qw z}MMl0=E{neQyaj!DLGRa^gA=t>Pjl_tZ9$*|DB83y$GO_}&LhR}7^#m9g zHRM3y94E0QP$eqvhR+&^wkg7^FCdbT5kOlpaQoGj&lu0$r@@)%Y!z)p!Db@dQLH)= zbDfx8Lu1mv-39`BW8Ue#G=_meUuzz4198|L_e5b~NyoZBq<=jTZaH={=}0tYdqjar zZ225%u!9tL+NVXJ_o!$X=HfD)kRrg@`ei9p+E#8c_YIav+P6XWNgDjR++#a6p zQ8a{bClc;0Hffjz(qBzYfhc{E)##a&LiI|MAk>|jb7+IdRGb&R6)5eZou06V>LP15 zLYRpDT$uvqM%CHf4MvV9aP>j&(YtV<+)hNyX9ULG>Hx>9*bCcf4|Uj?nzPhvT{oD^ zNi)kt@OyTv*+cB@u63BfP9)4jkJU)0AW0^D_JnqqV_(7r`@9|iPvsG-SdgT`=o)$- zF`6?tIKqKo*q55~nG3A>CM$lqj3!^c@HGDh=wvdbGN zO=OE9TWfA_6S}YW7vXIrmf>t`VNmOis?6VvIJYvF7j~arqF0b^;;8g;m^L}cCG~Tk*jjp`~AT1gw4pX-wDDZBF~p3?T5|=P zab?d2UA%rNTp~~fW6PI<)B)_N|NnV6u&Q+b|-LhXb-E2zK#F*lEWZRp% z*>O>$;I3Q^dOnn1r1Os3Jipty{4Dr7^n@X$20tWP*FM_hd?;$6j6&3?V4hW->)YO3 z;Qs2MdL|t^YcCz${Wa;a4c&Rb;59h;ut+GU#ek?i<-cvzXgdl$-~7EcSdGVqD@!`B_BU3)78*WFU~ZaiWu`%}5Bf_8?z(s(-_N z^Koy$6>0#*Oj7-N`3TG-U0-M?jzZ4a%O(4Mryp!?)YA`uP9~OtaaeOoa06<3c03=i z_I}1PET~Wz)NxRKU;xv2bAXae%&EyG>%qHJ@6Dl_#YiI^%V2x>I)=M&-b`?B0_af;;V$`hoB577N4a zI+}$E9>UTgeIQQka^SAstI|rZ?UJUA!lG-2!xu1;3kyN^x;F=KX2>gW>O^;|uS`m3 zh*d`q;KSYi8U=8aM8pfqfYErGXH6w1XYwh{^PFbWzfDa_jxE|JEc4wFuA2 z>KSk#gF5T z&1ECQJhZZc(OJSd{7tB@Rovx^9^3LV;^!lLH{~(x2QNrJnrFS(0U>aqkFrARVYBoD z2p+en(q53KiY#9nRI)!df)0g3#eOUwtW(qNbZs+ootjD8eQ$X##g{Rk9i1Y)=cu?u zpUB?Wn_Bx4%lMBRC@eED@THLfy!=EU`@>QqqXY4froqd)KjK4cp zq6-$P*|C?RV)I;E^~hdaNZK=Wn8|lJio5G)*#F}HBcV;D*m`9l0RW7v|4$Oy|KBFM ze+g{=(M0#3)wLMSi66Kc+7>*+H-bA0ur#KplID6u5{$K3AUkrMhKe$3*CWGYc-MuH zCkwybJ*Y8~Y+kwzmh`d3Mk4*0h+I#82|cD-(^P++=ztRexj1Kfi)z?U zT}IsJss=F?#yrkdn$Y}O<@QMe(!e6qJWf2EWl)n;mM2Ih<-f(*AKT@y&6 z0dhHZX*aBd5~V>6FG1l}r*3qF+L|w7&)W&16|%15qf* zux{N#dReqX;66cgcRyqwSvKa$z|9f*2Ye5Md2@ZknT)6UJp~Z{fT#~olzrD|JS=AG zIu3GwYRtAA-q*xZA-#`lIPB6kUKd*d(#8G)aBqkBT{A(h+R|L*vg=6#B-=QeP-4_X zkHPoJvS%EX?KUrf5Yh*UN(_UBsTL+wm+u>IS%3Fjb9CBPRaKeKRZ2|kPYk6*{wk21 z=0aS(x&Sm2F|<1{>gITe$x>}&l>n@~BHW*dr&c{W=2=`bdBuy4jeL{DApp*0v?Jv& zlYJQ%jemjyF}~`gxXto;tRI#!YFW<+mxH1JwYyjdB1<5f&AxY?7-e&sxR;^AME(wK zM%t7hu`BGWPfOc1hd0O^*e$-<+iNKHo%Y!1sd86s2Biei zfVMmAp8ZM2vH>?fcU!I&>9l=D&b%ufJ^cGf1P3R6qdwu}8h?~e>p`AL3}O!x!gI&N zb|b0k%t$ku%V2C_+@i-Bx`TDRtoxY);)3D1Tpv#c9`dZsmtP5;!yr z?vsCPJ}*hb9g*r=2vzP-1+oV@neaN!dkzMI2;qtcc=C{&;{1nBIL`8Zop*T>OM6{Bb(+Bl~yC4Hk7=<@WXt={OgUiM9HnS=t zaRxSp=s(CH}hj8ZcQH)|(;Fv57B48Kr= zkZcbzQ=D#qXd*q}7_Fx$v(Z&(6%#~SMdFc^&j2?ucG&dWaP<8-8AA-<6%5LaGHk2B zwi%r{DeeQwmQq9KW;K?rO3fiQ-{w-RmqkJE?(=XDiz>6Vg_$z)E%!uW{NTK4|Cg4t zPyumeIf8(@H7Kka7EdGRP>pN=ZcgCesaez(CM{-2@k}UU>PfR)LiT@HA!FD|`dg0@ zdcorvG7PPq4hZJ^tf6qQF~I?G>`9 zILk)-kUo@NWh6Q<`4m@WaHjaZN2nMNXMe_vWz`}~0dt87LkMd~mo|Gjs3bBq^my;f zIN)Pt>P3rjINanJx~Hs6of7SZVR1anEp_@>9u}9|>!uDYBOeey?in%{$QldfI0ze( zyPh)yWBZ-GOrsBX3p|;_vV~`?YJV@P(NVkGoOj+iO(F{#4VUNLJ6H>?ca*pTHZSEYNSpuf5>A@>poD6W!$) znK|SCSGz5(N^S}Sea1d7a{`jgb`R|W7OYE zJJNF6MIlYI6G^SPhhhksgo>T`Ff(foS78t5N#zk|d9B_UuB(j8^Drq5E36NTNn4x% zOEK95C*{==!%2Fvw0u$;dZm~fHu#ZdPr71&RKD7Q&LE{G06FJC9}@d^IL{KgZrya; zC=zO_&uMuM#U%qUTooqY7%Wp&@u#woY>al9yCO;gx}}Z@#nd$V z!xIi~(@a$>u<%!r??R$U|L*)O9MCv_xEYA1#8bi@izNV96tT>X_4C`Ai5(r+i;D;s zcJz4kyNs0ceO6cmKJFam_^&wYCOeG+k>sVc1-S-Z8meQvJ|y(#Ocz+Q3)SH>*8zSX zFy+|Bn^<=(bM+3M@Q6!DaB>?iD3<%Egs<|DoEp0oP#ZbEhwcGxA);-ts%}Ij#MKv- zm~eRnqoC$%KhwJzXZhm+gyasG5G?5TTua1xxxM*>0%4;)-sSlWE~Q+AY|j40U{)Z7 ztOkD@9sv=$#RhueAC`hG5UcLuhD&WY)+9!AJwYYiz5MhQR!S-$`wn9zP5USk5=&|; zuNht?H5njTr4m#@WM(9&SM?MqI1^Y&GJUgO=^q8Z%-yAgrXEjwKu=2?AYRA4sgDB? zl3o~-WiO`V1uzy-jhu{Cq>G&g)yL0}A);|WJgT33= zwDu-l_JoZb96wjmOZB|%GTparU4xh4+l@ImTmf8%Ki|4#@rDso`4gz8BGyS?Du2)c zZjNN5cH%KcRpXHI_;S_(vhYpF&oXpFI@p^~rOY_7K;{_Pf5jUO4k8ObVYUVBV#bt&0k6Xt?;4_M{u8~&eklLUE= zxB91i-|{~)>Hgn!S^leb{a?B)|8tGrCwv>h3p*(j}L8wY_8sCnPnB z`o}>_LF||lmnFV4GzY&njI3xIAZJ*nbO+Wy+4eF;ybDc@`a94%sCUp8=>;fHRygV_ zspIi;0~BjQV>yY#)AHTKh<_EnF1t=VH87h7|58Iz5JkZb=}6$3gwTZ~J@f|+&RvfP z=K$=U1>QXYnX90K=NY=)4m)n8kQk3Ft(-!qaB6D!v!Q-MlWn!WP-6h}N36duQLhEp4z_Bq zY)WTyhEZeP15N{sh_=t6l)N#YL)Gfh26rONWTHE)xa_2M_t z5VWSTPR4yiO8?`zCGnB{(Q1=yUkq}rXtUDKt2l7)kS-?4eI4Q;$S{2-UL>W1&d_NY zMWpU3sH_H4X0_sO^W8GUPy2!ce2SN*|Ol+ zqVd;A9k(K6?NDqc9%fPb+JBg7&D+# z6i_%h#BN$`qEc}EM}Zcx3gZ;xCRfFe(sW?bQf&`vfysC%(WazcmK}EB!*!I7vqGuO zSD`gZ*Hl|v4?(8KMD7p_Tazg~)wd3CF7>APJFsgMe0uX2dD?a_Vgwvm8Mc@)0(m+Z zGc`bBGN+6B@3~*I8d4L3`_HeuOjx69$MSd5^VnDwtHqD2SCG@&;i88xWC%R^D0Jdj{{E_#Cov zUS4fwyZ@P)lB;9jkSW1ly?E1JBn5BK1=f@#L}`!^JJXGmm$wHX-RL_j@JFZ<1SdIX zaTYS_$;#qVidueAf_}lGWA{Q4?Hqr}pFl>VT#urnRtfDijdn?qvP)q6{I4RYgsetV zm#QY@aBWqCV0NmP5#+VX$pE;_`2EJc5bI+@tMZoW5?2ST>h3C#D^?{TUzI&@4)eo8 zIv(j`|1P#hU=Zy(=O!$){UtiK6g<3ezm;B*`Wvw zPm$-KD-F8woDc8&EK3YcVzSE%Wqz@S>K?6xhQorFluJLPhLs-PTaoa%qL+bdWn#;~ zuaDN7qUoYybAnkoO6V(5pHwlEjL-Ee4@GXnrLp|CnPFF&(3BV07Sg6tErxX)0d#}4 zCXgLJSl(&SKe&&xlZhV%uuQx+dB3-b$3)*Dmbg|eD;&wIt6*)RZUPH_cjFxI^8FLh zc0!!<8Gfi@S3e@kf8T?|^3$R8zuuJj?}JO6=-h3rue7)9))^4|ZuAgE))$gd%*Vn& zYB1_!Vq6p@xUL{O?gWa!$|R+^zCJ+1fFv}s^qB;$bS14v++Mom^aQa_{K$Im0Spd7 ziz`&0A}awLfG-mqlzJR_tx_w6Q4pj5`tvL02o&e$;j(OI1lf9rPsb*|F1X(ca*FtJ z-IgIYVtDfwATUR~gxe}Wr0Wc2fiKL482cWe6fG#zDmevm5$Fjz`+XEFXCPgM>?-!% zi9jSodH21$^K#wAf$M3dZB5r7v8MskLX32B6$x}7<2_3F_pfX;MZMOUX5b?y;!AjQ z=&_VN3%_gaCfqPsRR&e*im6aQjqtbamwh*Fou3$j4?@WJWbTm@=Io7RNtZJ3nFjxb zSUk`H&||sktauBL4nsan(4GbIff?Y6+3Eyg$D|2#@cwOMfkKoC-UmAOc8?mVQRoGt z*beG;=e`w4*h>>^JB4I55S{mzi!LSERJ%NsTaZwgE~aRM52eK*WO3ztWrf)NKr3@e z!BhF%#Lm}wH9^+7*4I!Bte&kd6gXBY48o0L0QO{#-(67uuXO@~q*EwDU4cl0-5m~n zF#evZbWhYn7y@ayTPmp9#;a6BbIXpATcoq^B=Wc&h-~VOqBIGuJ8U0mmvMkpoa8PmKp3LPJMN@&T8t^;-;w6v#G7dH0IpT(>~9Gm;xx}_ z0w?>90vf+(T5MzRc()0#H38Gj#sGJKj#lgV&$j3O?uqnkTofB`G&`JX^Xo>7vppKe zDn!WDf(`8eH{s*MdHV2fdaDg&<(LB*`f!%jc`JCll^qN%II8BwnH3=d3_%F5_KMOo z?xD#G>y)o%ahc$b@GIg@FmwKP=7`iWDJ#wG5mE4mjtm!s|NvIv(-ql{dh_1d*oYO0$OiN0{6XO$YejV02 zFWEa)u#b@p8p|`PI7AsLya|>>!uyL+ItNL6!r_{IX140$v9@I=&AKfwX)mh@6A+Dc zm1AXDN{F2rC}%i^%IsUkU)s@WY#7cTTdfOMG;aBO%w?+BBNM`phK@)cy781IQiF+< zBBdx9ijn1|IFu%Hg|uptlyt*|HsgB~ta&J*5R{Fu(z))FlyPsY=cv?m7#>kEzkXAb zMy1i#RHOWv$Ytt@w>+vbdEcuS5$B)dUJ~O*Q$2__>bR)a!O6V;td$eZqqPwd#mDs7 z)_9~mnPJ*?15qO4eCWTU@Nzxe?u)R|hgGRB$XRAswzVuR!F(P&gTR)@*Z8w3JZ8V1WCj5M=>9>E{P%8&`G4h>oJ^dYEbMIcTrE6p z4DA2qm2!OS_QhMnzIWsTkj~C^DM?s;0dKA{P#H_HVFPI5A1A9-M*+zjLiLB)d6GKT zZ+vZpIA3FuCyw;9@RuK*lV00(WpVQ=Jtrj%D><99k$XSdynvRd} z_rj90B-*w)D{63kI9AY?=U?{@|ETBvJsA1z^KSa}R9t6y{5LE~>!FU?N5#$_)?u8b zj9cyGsNxVRQ>*EO+~{nxHxhmNEeZcy)rs%=^TN!B(N!1ihY`xxkvQ_cU}*rcp?B+N zVZrXF{%mKrbGhkhqeVUFs%zhdN8kG*Ym^wDOEC4GzC`~Dild5Bxkd$((K*-UG%C$rf_!&@4ouf{YH zsh?iFo7GO{r|D$H`mN1sOe=AwIt=}=_!%5{(pmcp_15jfVL98u*zNg4xzA@wS*(wS zQb4yn*Z$((Qj6W4cgM<=Y#H0DG|gBe{k*dO*Ges znvF5H#!mG5ggb|lvY6(eOOWK$GXIdSDDTW@_9>)S$>Jj{^sHW%4QC}qcu7xAL&Hi&KV zzXWNl7;uKx(sDEwUZp-VyRALW!8~pf(hctCgo$Fhtz+ujm1T``ucW?OC!0_XT`4Nt z$osiIyVTx2uejHj9|jLndNng9!ZNSfTRmPbF@mP72R)AL+li{MZ3XR%*7(z zW0kl&Ng7+JJdNW<_b0R3LJYgzG@yG==pvc%XZoeXTtR0=rJ2KLsdU3%i=!OJ= z7Toe=m8et8bqp6FcNdF!TS_bB?49$AGG|Nkcrh*eJ z`KF4eeC3#lzlyOIc5SIfx13r1I-dNjze;v!qc{5MzS=mx4a`^u**KKmtREHwK4#ZT zUt6qJ%$zOnzlUf7tnJ>-F~VzYr-nLNk}gDh;kNXJC?rUtWJaPW5Lx6xFiI9oC%S+P ze_fvy=TObYuo5~nLyi^2Xx9bknh4byy24P-QWwsp2lgQSoe5Z@=JYv1e#((sc5^I& zQj0)?IAG^!FA?FGKnDmuQV;_$D4y>RVr12?5e8nCWYs_P(SQ+;ISmov9f}w#p}?hJ zk+)nbSq#*I8xg6PTQeq|BcmQ;&G7bxa<1h*#mNC;K|(E0sOCRJZuR!yEo`Iq?+pa< zafYHMrK(P@u0OnnOps*MjWO2l6bcG;{-h#%u1epmJ2c9I{KU{$0QeLqf`24dkpc`h z1{c(2?SUpB;U9Ib<=`J}CLqB-j}r=tFQc9A0z%@$Dna46fg07fbgk?+8Gh!`QSo>0 z)yqpH$hCT)H?q8#*r^n8w@ljx9Y78yhnR65;CBzarJ>lX0JsI&?NHkQbO*Ynf!M9+ z#0SWQdFmnYC$9?kOUMP^9V?6l;Qr@RZq>ddyWpWWrm)?qUjK|1=gFg{r*2sS`A$?PJj zAR7Cb9!)*OiS!^ zItCs6&a+^^1<+D0d1*EeT>NZ0b{+f9UFWEwGe>Pi4xP1c|Aj5P5vG97YN7_9#i^25 z02g3r4m03?zA+ALQDnfLAveT?JAnZw_yj!84I!6+Tj1xVgX}>LFqx=Oi@9IFa|3Yi zFkYnqb89ii$^Gs)e83a|;tqoDee^FQ@sYArr*-aOWZ9d~r>|#2!+Zp^V!pbxc>2^ZZBz7>CeHN9_ukFce zlDqou*wbizQgz0CtOdBF>C1Gnn4gC-a)E?@RQ$wG$Goq?!GJ3O89^XGLCn< ztsr=-#$R~jgKus3*?to*<(RUWDX+zt8%#RZan31w!stnZN(nOSv}CI7Y^1Ih4N_4$ znw7nSbhNG(O?wLLNFUczBlaYz&p4OhWSkN=Z3x-X;DQ699$cVW9J%ci$4J)rMIs&ZNvDx) z9D)v{iGWqu59DBsjI^7#yTFg_i;y4z00IYrgTOfkiIwL760>9l6@eV35JN)R&qQ4}7OA#yp7SVEvn&PUsSC%Y~Su&oCV&5@DBu{!q9 zF(9i(!Z6U547vnWt)NI_%$d_@8KV4`5PCLStf>T4kt&2M@Pq8HLns~QtmVrAv?9f- zS8W8O7NzjHS48Nk9}QzqV85S-G$?{Hh8xvZi0|-Wu#t3@ec~I5n4ZHlBb{TX9vjZ^ zE`-Xh`@L8I9QdM&R9K;mydfI}w%v zo(sqU2_FS{~Q1=Kv$qk zV-h%hasibJOEir+fK>@1czyD|Y2cuoeqy7443J)r0JxOMYe3g9X$39DWGjytR*aae zeU8(Y?*~=?^d(*I7=X!T#*+6i*IYc$*aCL>OD-5X{Tv>RBMKA=3PgkiHHJQogY|wz znnKS06BNRosvU`T6#)XaY6~eMBK(a^p`Dy~nqWu7)2XzdLvyo^yhb6FLds{^``70i z^tMShZ6^yXd1}yx^T_Lt@01mkmt6el3?)4g6Gx3h6-DkF5Ia9+;|UeAq_R z+>9FUEgc;&|6~#8M^of ztF>0mjn*SR{GTm%>bz$jHj@{zDtc?ne?3eObs>l0)%o~p{yy*UPS#9rN%7)dv&rN6 z)NsA;o7i~9F_;c-5@4XbNuNc6}FrO`cZ0x_rVfczAEf?XgQZUL?l>@?1GW zrD?o-kuBb!rz|NM!VX$EEj+zthA!BuAvE&-VKwwx+o>8Oakof^k8?}KwS0HY(f}X% zz1L&buJ&~!t{1oeg2r^N@JQ>iZkjJIaWl4H%k+`Y%0v3J@*voG*q?gYN&F0Z{2W~A z+QduzhIxB#VY2pBtW|?7I=07Vm!dow>! z>t~~BvQv-Y|7Mp_$yiWklX}Q9=)lc1Qq_38*Q z5AV+VcV005%U*?Y)MMy04y~Y>@tqH4+!%xQH{ThZqFV$r@Nio~A?^ys2@13e z*_Tv|@=wBjyk2Jlz)c*51;8zF2>6qvd+7Huu{QzyV=>7BevpxRhY~sL-pYOhbnsSt z2*sEizW3(qBRSv}>q2jASET7*=33FhjQ8`Da$x@Cx06u&8PVdSqS?uh3xfP%8d_z7 zlLn@S2==~iL8T?IB!Q0#GxS>zviz)c?A%JuwVzZlxN&mmyw_;s^=TuP++cIRtw z(1O^FptA$mfbE{CV7u42koILcaA57gnxiP!QPBy4VOLV<1wjKVhd@xZR3m6BmBADv zAW={tyI?57h4J$9-Gl={#zR1$-n|I|_<;gI#=}4?gSif8Ddg!Q=BxU*0n#gA7@B-6 zuWSoue5=q{gC^VhOw$dR!lOhBCYHeMIJ16lzVnG{H^Yy5XSGX5_L)OOi$YW8+-DAi zJi8)bz+S4b02ft!o%G$J=Jeug9B+{M*Z=$q0-E|vC)U@0*}F0a%n@zU^RxI{q5>_k z%PPdbv&JZh>NgLj0R_y#i98W9Xl69`KJOJ%ZYH62BZ)uhQ|B7)W?j8iW%(9cGUQ1B zMz21}tt1p)7Z9K7EBaNCi6{{Uod^bm2twoqglI5-PeIJ2OmC{@_3z2I)_UB#XXoQ* z?b))YC~Nx-jg`Ua1je2N{A_CM=RMiJYns81=Gcm)_7KVo5lQS=EvMBlMrUJkX|mK} zbavTPm8SzwLhSH0h%H=wJSQ6mR%7t}8^AUiWZMiPSR0PZEp=$%VtmuLSU@JwIgeFV zPE|6e&+?7oZZPH~fGL`=0^h+{-bwxuk4HeX7984_JvtxEIW76xqXKQfWFQLAt_FCQ66h$2z?jL9m}tP{KGDD!@09{zybQFsL+DU3B1IB{fpekYti?+1c7c6T1p6Qq z9t}fV1V$oCXG}&SMB+r3=+XAdfLV}&jEGroo7Qe>0x(7*z+6*Mxh$O)Cyxw}++Vmc zl;YC;-z16Y%?EIdL>WR+;fNVhxPY{Zf>Fv+LZ~J$r!W|T!gx3o)&#=F{r1B4;UG9f zN1;L}6Ggf6$^J@3OydxU9MqX2a zfH8HiO3VmQzk$J!V2q)D;{X`10g4ZWP4*f6l>a;6vJ5VmMw(OcTPaju%aa*t-=;Mb z15Kl$VvuqCLY-SYp%Zu0K8TW<-`p%d3(Qv64@UEM9-Z;X6$SQ6Jq!*-_jEI)9whXX zqXw4fdZ1D0D759<&w>L6Ktr_Tf8>V>%pb^4yB!kX9?$?SM6lMR@Rh&4M3u8S1l#}a2RcmW9wSkZh*r+YK}0`QdXvs(SPQV z5(v0oGzvB$A-CeUFnxOia8Z5`G(h>;S}Gvvek;hI`yL(+wcO=pUt zEq1wO6tD!c(}AXqCXZW81djGwWqA{)tk7VBgn+KJ|M4UYD_h4|wQSws5U6B(NY4Zs z{0@J1XIA&ktk0NwLEm8>H3ZI>zz7Mrywy4v_pMc))|m8lkNUgsNh>jcRSH*Cny0_e zS^TL~`BAl;BWOF6!R#yUEh61^WcY)}BOn}3rbMNXN=hjrBS{=$nmFC)+Jr?c?vd)k zX%!MT!^R3pq`C=46IT&P=`beYj1jpSDcqIOj1fnP;zi!#MFjgt3oo_f7pDz`mndNsmnv1Dx{8Te( zBk;ZXmBeKyzOm!&@gaGPDr@cg{lNE42^!f=W`2yAKJAOeJRK;s)6U z@0OeM$cweWW-4>s^Xi1y0p1Klybk&sjnb*@qhH?iHc|6!bZ9oo$489a4E2WD#3mQA zOLb@l!jvinQ66|~rkpHa5ufL8k-dKp)oq64w_h#8St};_=Xur#b>lS9;5(V zq)I3%v)6OMj>+;9^)I8t=tTtjI5v5|yyfd7sEQUKgQM1uzp)cW0SclKbRE{O4nh(!DAGh` z>Pb4ya=OEBWe&}b|7gnyNVy)A#I=jvf1j9d-D%| z%+-egxGj-?D1)S5N&i*qSp$Ymc{CKb)EN1FyUWa7?rE3veMVGm{_zyYbjTIZ)m681 zmZ*rX<))}(0qOSi5jxsZyu6k3Gx3-E(~AE)-*56s?$})@;Z;K?(PQNc^5LVCD{B9| zkwz+#5WA*yaq~0};4|oJ?qcWiD(hJ_M*F0pHKh9UhOPFf^^v@#K7ad|^wO{Aj(G{) zj`Xg$HKC`&=O3@XN&jkvIhNNWgN*xeD%u<88cnWdfBq@hzi|TRhgqd;ub`5VJ5JHe_tjo#H zn6?w!2n$ebgFMv|lJ{rUD?anR8d@&Z^Y-J$^E&X6I~(2MVrRd-0ZnVm$w<|?aXK;2 z+TAf2g<0ZmasM>;vbtzbloZuw_@$VceW;2FMM@t_I|dQ^-lpsZ&&C8}g@Q5q691C3`s z>k)wH_nzRWcJheQ*{3-bG}$Qmp52cN?q+3$!E`T9{(~g^8&RzJslV7c!xdWtfe@+R zj1(AhD60VRE8smsr5FW^0f~bnwqPHc6_yEwv85k@?#@+q)--;T1P^m~6G04uk(5{# z(%xc}0yz-l%YRvCA9+sfS1d=289c!Dh}LQ3kb7~mvxm0^C*1EimbO%hvZi~kwTDjB zqufE?Q#l#0fYu1?FpqIgvCoMRT1K4GT%ED4Or@|Ph+G=`_5;Vl-;b_OgKQf5=`5$7 zE01JUA~on>L4s%sMFVbFP_|*9Z8ss6-@h1IAqySJPivTEPAMHh#4Bjjr8SD18(}OK zBN99U_Ra;-K4jvP1il})7(7c-Oti0ykH}q7FJ<_lyJz11gyQuu>8>d$Xb*9ZRev+Z zVD_kFe0GQn|M?E~c#M!_r)6ok^DUW>gWZvM_0&Dx^Ur5&F~;K1$xh8yvz{!??ca`* zHF}|RO$e5-(&id(ei%>RNH2cUra1$;n1f@*6Y8azU>kC&F#inLt0B6&gMd=EHO~OU&EX-OVt3yud7?2%~y5Bfi^w(vV;PkTja5 z8lx;6q%d^bwAZhbkh~s%n=H=UAD`Mpoe?fT=izSfE?6-y?Wfw}7^qgvl1FQ0rYyqw zKeb&4IF;=iKPbD%9z|wlp3Ll3vN?A4-j3{9lu@>95*3m%B9uZ=_8w7I*`JJjB!v9m zBXW+b?>OiC`oFH{@}5hb`*+{(ec#XhywCWt=XUk!yWb3Zxtwcvk2iH}O_M#dE1BRV z9_dM~pz?(25F5I~kBj|S7tO)5%1V7Ec1eGQx5O~>@{y+4-W*~ceca{SDPbJf@4c?i zRFuQ;>0ZsX{09H)fk7b+Zx^Ksnd+4r^wABaU$cp9Q@kVbDIQcf z%%4Ec7%BXBs>^+yi4tQ0qqshAzPSXPljV#w>^|>^Gl`hEbXXSst*89+8%K`^e3KjR znZ#Elu6`O6G^iHL@B8f$-ZyrtBX1IT?MyodX7XqZ9Eps0#u+du=({ba`4oGo zTnW3!&r?X)ES+!~?;N|OaQJgg>;|nbE`iI zra;?GhX`Kgi|Gu$I2pIcf4Hf9t2?oP+2(Pl!#b`3oI+)(_Y|C|MC0P#W#5IhSwAW` zA7puMVEMJ+d@r^TaUKR)t0Ose2Bu5z&{lRQbYbpRSmgSr!&#i%(PqzDnxSD@7>R*Y zr#|(PM^)D;3y+ww`i{}*;ujnKn3^$(v*%(m8UJeG@9FtW{#zkyv0&RKNx&SB#LW*> z7LepKjhAo6LK#*^eR4V%t-*1X&Yx$Fm9>acrY+hTC}`D`GzkfvAoQTgU&SHqynU*Q z&g5kak$XC(N{QC>r^g}_K&SY6vj&*w-l#7e!JmhwtqBLrb^Q<|;?uDSB~cRm##L#u z{w1{Ii2CLs72gY@WQx>~zdL)vaSl_Jrwtb;=rlhLTaW$vK%b9r?aqd?UzOu8{@dSM>1Ed-l<=iN`6Q1RfT!j)q?@6Fv4;VMZ$D zA}ycu3oM@0Mk zx8SF0A<=XhtI28V55-@_EX54*Y~CUitKq;Hxka@8%B^v2FlsXz%5}N!u#xG#8;t&X zp9DM=B2-j7$*;Oj#-F-C_iTQ(uxw3LM@jtInlRScB9Di4P+rj(yBzTWDFW~?iQJH^ z*E9aA)AC7o+3gLDQ4Qjt%Dn`H$8Dl@(<~3lB$Th;zzR{ z>RxXnYA&Tu@xAY(@5hS8jkbz%?%>p5$tRSUt+g*w0%#>;?-PW11W&6nn$)Z?hL|7i za^cQo{i>V1wl&C>i~oqe7LxlV0i-_S;hRi@JHgu>7g~6>337$k>YB0qaK_cY=Sd-y z*xC0Pc*7NRIA)ch9EwV>n+K<&9x7e=d|RLEkXE?`so~P2N$PW7b8>{D%eD@~mi#b8 z5aP|@fIuX|$d>#_qFY>8yEwUD*06MQvxQo_a>1$&*ST0RCxC=B#4~FHN0IPOKjtP? z4C8qXJqUv)9=;-F-0|v~RrPg)rdNe{8F(F)v0|cuR|>DJR24*(p2VzWeasrJ9mG0G zZ9x64;4GFhX3GmqH_uy*chyhG)C}iYEYm!e5TLhfy&*#3jxE#skbgd~DJQ>tVjAvR z`$&zQpqbe!i<$UF3)?g(oG@QOm!1@tO;njbEA7yujpxx#bFAPAZFQYvS$BPF)YjD~ z%U($>^(0)vx&l5VPj3_I1FboeGdzB**c zI>%FnZd90T=|O;Pi@GDRh70ys)O~}N>H^PiJ$FgShl1l>Ap+JqI8K`_r1Q8uGe}bOFyPprEmCh%Y5ntrz?MlcH>;2Z(fE_kK%g|lRVinr3W>C9bKxZ z40ROiekCEQE#6(&Fu%1H5ui#*?_b*To%Dqets@~+cVSjwmRp}mJQbUv;N;ii%C_?D z>*oYy>ONg`Vzdp3@ausrM1eTyADKOZnrM&?di&tnhJV;HIZr8UC$Xr&DCXvM(bErF z9`%x|;8j(fhaOvx>jNLlp(7M2jgo0<#L?Y0=|qleA}7BK9$(^lV5FV$lwN$@d4MZA z?J7TG;Bs&31vldC@hjg<*fMn2Zx=9(GOy~#D}{{d-#gFapGu9Vc_TY$V;cM=(^&nc zPh$T0`I7@I1B^C?vS2}?(uEnvoYX)~IU_3d>SLGeryMX==H_p|OkMbUplyr8=qV!u zFaHzUcjwlxuNc}W1Z|a!zL$B&b1x|QX=EBWO+W!8@)8` zj^iO&lo%;e(ljIrT@ib5%Re_w^ejyr&KG;@j0|dk<>MrF?@(^>O!^HW7h3fQTmrJU z82le|2Nc>*{9p^$&`Po(tTEwi?$_v!IL|U>?Bd#*d2Af4ouQ`aM^ySQvO9-|j8Qwa z?>vLW{m>I5eJW}aHe$@L%+89;U;>ne+!^hs-A^pGMW51&pqX&^{!+tx-gwfIAzk}| zki<|+LAI2v*jaI~A(nkktwYd_jp~VuSxTAJS43G}JnOq5eukxVuykn5R)B!vNp0ow zu}^9#3oknZ85AjB`EB%n>QyN`<1^A{F%*@5ja9YRPC_@M^J8QN8@s5!$40+-0LxV) zy+_0pz0$e083t^u6zyE3ZrU;Sb4%6z7o=4+dDO`7Eg2rIWczlmehyc+^*rAc?SS7| zhuL$n7TI$w#-ky=4}NG-IGfj>i|r(d=c4JTA6&Q1Pc-Q7Vp{uMhma&7?Vnx$=``?E4w}6Sebth&TmsY<)NC#c+Y*~2W`D^{5YtF6( zQo}TdX~Sed%R|XOK5Kly5TIw)IAlpvcfoHd;)nfuoN7sKwcfMwqR4Q=gr!hr|xk=^BUr?2BC|OTCUe;GM zvuGaoWz%jJVZcVnm7IHQoKiV_r0=0LOF9vNLgv=jpen3ad*oRu)som;(a}} zrbz30#*8T4vZ}$}97cZr<}+CO@#I>$c{0sro)_z1ekks~C~2l(;MFOy^`1}r`#`-< z1C!=!%eyr`93f-(Hv$UXgDV`{wZjE6=kHyXk7|z-AM0qVJZoqW)PY&5-Zvcx#D!FT*IO*T_QBMt}do%Z>7 z9wjE#DV_M-V2I3>!(UR>2D0*$k7{zA2xUp7bc!k%*h=`IaA=OSK0TsPhM>bpv-=Tg z+!WDpWxJf>2UnKqSP_jjwe08qZGNHiZc=vKo9QHkoyoUuaxL>gr;~*!$$dmDr&I)} zUbIx&&l-|iGM;!|&pI$8m^NT>s$X#Vr1!n2j!LiXjvq;$Sl@b*>tm_gi6K7KwLF&y zI^;`I)|BY6X$&hm|ni@%I)N0%>`_kaB?*_y==+l z>Iu{-oWLI(Y|TyGfMv_S-j2AsnYvlRRxj78Hv_Dn#1$*-HN&Oa+;m-D3)gA`uSfgZ zP@H)i$p@MJIG{a?1vz$pr7SLGh`QL%O~}Thu7@>58ux{miChr`Z%*bt)anicc!v2* z?h#X5YCS5vX#J94i@7YB2TFdzC(8}RPJu>>D!kH!T;qfKhXVu}NXTo>ebK()NvTy4 zt1(X;H{n&iiMSo4BFF3tkwr3E!o(OW1CoyYg$A!wySDsehdpBnjhIs| z#!VB&x{0sGW5>`N+yZ+tcJZ^Z z;>Mpenco^YxQfQqL72%mrLFKgjx*gY+qfU!!>G@K#RBjFw{UVEvm=zUbNC7&JPddX z4sM|C9o;o1);C)Cx{niN}69LuOYxMR z#0PYMDNMr?{1L{6_Zn#b94^X#L}3{lQ(NdkTDQryv}kl;C?Y6Lc7grvqRTtBw?Elp zB44(|1EUa-7*fz0{}!~Fi<2j?V4PbEY6|R3u!dS%XquWiSniBYV6RqjaDndz0a3Ai z{j=RvfxrJNN7;q2!!f)q|L5T7PK+{sjU=J$O1jz6m@t1z;zQ2)1&V)VmAR#!k;g9N z{w#Yr4?H7Ex0Ze@b*aY;e=>QN&N6^JtuP0xgesmQk*W7C*~7Dou07Z#G7Mj+E@H-g z4IHSUH^FhQw2lhtz1S=09g6igy5}L=s{Is2aGP+MB5+>&b(E5&@`r5^0W5`p<>{jsSym_rJ1TRMvB;SII;Iq1zYIFE ziCaWy)nEP!A}AYQo9Dl@xPD?%s>4~E$eE-gL?vk~U0C}~leM#Quj}=o2Brp$AMQOd zQk}x%g-^3tOfCjiJY8~=5oNAg(Td{9O44J|ZN|T3oYDA@fIA+v?72mfmBOu6<9Bp< z+XL1%qSRoNr3Jt!>7PB|KPwJ9od{0x{9C}|2NMUcq~FJ(3fInmLHV}SCxF3wvzjl# z;<}eF#YkG3FUWFRw54+z)6am33727Wv& zU0~aZ_J6sly%BE;7?Nt}NVr+I+cY5{;_qz?j#BfxPIK?BY<|M6KNK0X0X*ntbbmnA0G;Aa8I zxCu1aA!B=2vpOoW+_v*RH(C#Y`(XCh?PDT<6UTnXZ?NB!OkSUEmIiRk1MSuxe&B8q z=->|aq#YH|1(RL?8K}g$6?Od;}@}olYM{>}q3cVPOen-$_2OaR|&K_ZvC)K8eKdedLoi z8Y=urAK7+sI3IyO2W3C}SiZj%Qvk;p2O5k`WA7RP#uli%_#P!X3L&^dGmLmx3nI<% zewxN;}Bn7CcOy4+S*K0~%sf z1e&3tD|%6ZqN;G26PXIVBM}C>f$fCwxJt~?Pyy)gcWD-pM=gwtdHWy#ids0@n*F{+ zNNT}F0=%N=28skkUrMk*2i%|brR}&yy^H_lOUUAT%SQDTjG8_JXt06x-W6w$hOX%O z5(>;ZaCvr@KpS}ipq-hdH36o;rpfmwst*omD6+4D-r z&=3ti0`$QsCo1#|esJ)@+51=JgWTXt3M?(VA&gi(@Oz-4$bN&P6vunj12R)y`=dx`r_Hr3A72ppIM2tAfA~aNhO9ux>+_uLeL>w|_fImNsA0gXL zKSKkd`Oo)Z+Zz)0kFeo4L+~Mp2mmG^4i4(wRcm|4lI@oOzaml^K?22lR3sd<#bUoa z_%(Tw2=ZJ%p(*b-t1kCTgI`D?h#<{$6cuT^_Cr|pw_gbS3WM$WpI?G#rcn{{n>ltA zR%q-;0YB@n^9up&#_IDQL$Omv|61Fy9|ZhNJTN&Acj?ajOAxr;HtKYkR{9Dnx)8@aQx!(@}e(G9vPdadSZSG&{z6)UIRR`R} z?SA3#)5l5(!o%kOt8k!NKq47_3Kmgv;Ftd>8P-Q3NInd_;sk-fz|Y7D5U6|s_UV7m Cr?-Xx diff --git a/src/lang_main/lang_main_config.toml b/src/lang_main/lang_main_config.toml index fbd99b0..3c00289 100644 --- a/src/lang_main/lang_main_config.toml +++ b/src/lang_main/lang_main_config.toml @@ -16,6 +16,7 @@ preprocessing_skip = true token_analysis_skip = false graph_postprocessing_skip = false graph_rescaling_skip = false +graph_static_rendering_skip = false time_analysis_skip = true #[export_filenames] diff --git a/src/lang_main/pipelines/base.py b/src/lang_main/pipelines/base.py index 1dfd427..fb17250 100644 --- a/src/lang_main/pipelines/base.py +++ b/src/lang_main/pipelines/base.py @@ -185,13 +185,16 @@ class Pipeline(BasePipeline): def add( self, action: Callable, - action_kwargs: dict[str, Any] = {}, + action_kwargs: dict[str, Any] | None = None, save_result: bool = False, load_result: bool = False, filename: str | None = None, ) -> None: # check explicitly for function type # if isinstance(action, FunctionType): + if action_kwargs is None: + action_kwargs = {} + if isinstance(action, Callable): self.actions.append(action) self.action_names.append(action.__name__) @@ -272,7 +275,7 @@ class Pipeline(BasePipeline): @override def logic( self, - starting_values: tuple[Any, ...], + starting_values: tuple[Any, ...] | None = None, ) -> tuple[Any, ...]: for idx, (action, action_kwargs) in enumerate(zip(self.actions, self.actions_kwargs)): # loading @@ -287,11 +290,21 @@ class Pipeline(BasePipeline): continue # calculation if idx == 0: - ret = action(*starting_values, **action_kwargs) + args = starting_values + # ret = action(*starting_values, **action_kwargs) else: - ret = action(*ret, **action_kwargs) + args = ret - if not isinstance(ret, tuple): + if args is not None and action_kwargs: + ret = action(*args, **action_kwargs) + elif args is not None: + ret = action(*args) + elif args is None and action_kwargs: + ret = action(**action_kwargs) + else: + ret = action() + + if ret is not None and not isinstance(ret, tuple): ret = (ret,) ret = cast(tuple[Any, ...], ret) # save intermediate result diff --git a/src/lang_main/pipelines/predefined.py b/src/lang_main/pipelines/predefined.py index 86ec4e8..f2f2cbf 100644 --- a/src/lang_main/pipelines/predefined.py +++ b/src/lang_main/pipelines/predefined.py @@ -19,6 +19,7 @@ from lang_main.analysis.tokens import build_token_graph from lang_main.constants import ( ACTIVITY_FEATURE, ACTIVITY_TYPES, + CYTO_BASE_NETWORK_NAME, DATE_COLS, FEATURE_NAME_OBJ_ID, MODEL_INPUT_FEATURES, @@ -34,6 +35,7 @@ from lang_main.constants import ( UNIQUE_CRITERION_FEATURE, ) from lang_main.pipelines.base import Pipeline +from lang_main.render import cytoscape as cyto from lang_main.types import EntryPoints @@ -156,6 +158,9 @@ def build_tk_graph_post_pipe() -> Pipeline: 'bound_lower': 1, 'bound_upper': None, }, + ) + pipe_graph_postprocessing.add( + graphs.static_graph_analysis, save_result=True, filename=EntryPoints.TK_GRAPH_ANALYSIS, ) @@ -163,10 +168,13 @@ def build_tk_graph_post_pipe() -> Pipeline: return pipe_graph_postprocessing -def build_tk_graph_rescaling() -> Pipeline: +def build_tk_graph_rescaling_pipe() -> Pipeline: pipe_graph_rescaling = Pipeline(name='Graph_Rescaling', working_dir=SAVE_PATH_FOLDER) pipe_graph_rescaling.add( - graphs.apply_rescaling_to_graph, + graphs.pipe_rescale_graph_edge_weights, + ) + pipe_graph_rescaling.add( + graphs.pipe_add_graph_metrics, save_result=True, filename=EntryPoints.TK_GRAPH_ANALYSIS_RESCALED, ) @@ -174,6 +182,27 @@ def build_tk_graph_rescaling() -> Pipeline: return pipe_graph_rescaling +def build_tk_graph_rendering_pipe() -> Pipeline: + pipe_graph_rendering = Pipeline( + name='Graph_Static-Rendering', + working_dir=SAVE_PATH_FOLDER, + ) + pipe_graph_rendering.add(cyto.import_to_cytoscape) + pipe_graph_rendering.add(cyto.layout_network) + pipe_graph_rendering.add(cyto.apply_style_to_network) + pipe_graph_rendering.add( + cyto.export_network_to_image, + {'filename': CYTO_BASE_NETWORK_NAME}, + ) + pipe_graph_rendering.add(cyto.get_subgraph_node_selection) + pipe_graph_rendering.add( + cyto.build_subnetworks, + {'export_image': True}, + ) + + return pipe_graph_rendering + + # ** timeline analysis def build_timeline_pipe() -> Pipeline: pipe_timeline = Pipeline(name='Timeline_Analysis', working_dir=SAVE_PATH_FOLDER) diff --git a/src/lang_main/render/__init__.py b/src/lang_main/render/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/lang_main/render/cytoscape.py b/src/lang_main/render/cytoscape.py new file mode 100644 index 0000000..7560ce6 --- /dev/null +++ b/src/lang_main/render/cytoscape.py @@ -0,0 +1,159 @@ +import time +from collections.abc import Iterable +from pathlib import Path +from typing import cast + +import py4cytoscape as p4c +from networkx import DiGraph, Graph + +from lang_main.constants import ( + CYTO_BASE_NETWORK_NAME, + CYTO_COLLECTION_NAME, + CYTO_ITER_NEIGHBOUR_DEPTH, + CYTO_LAYOUT_NAME, + CYTO_LAYOUT_PROPERTIES, + CYTO_NUMBER_SUBGRAPHS, + CYTO_PATH_STYLESHEET, + CYTO_SELECTION_PROPERTY, + CYTO_STYLESHEET_NAME, + PROPERTY_NAME_DEGREE_WEIGHTED, + SAVE_PATH_FOLDER, +) +from lang_main.types import ( + CytoExportFileTypes, + CytoExportPageSizes, + CytoLayoutProperties, + CytoLayouts, + CytoNodeID, +) + + +# ** Cytoscape API related, using py4cytoscape +def import_to_cytoscape( + graph: DiGraph | Graph, +) -> None: + p4c.delete_all_networks() + p4c.create_network_from_networkx( + graph, + title=CYTO_BASE_NETWORK_NAME, + collection=CYTO_COLLECTION_NAME, + ) + p4c.analyze_network(directed=False) + + +def reset_current_network_to_base() -> None: + p4c.set_current_network(CYTO_BASE_NETWORK_NAME) + + +def export_network_to_image( + filename: str, + filetype: CytoExportFileTypes = 'SVG', + network_name: str = CYTO_BASE_NETWORK_NAME, + pdf_export_page_size: CytoExportPageSizes = 'A4', +) -> None: + # target_folder = Path.cwd() / 'results' + target_folder = SAVE_PATH_FOLDER + if not target_folder.exists(): + target_folder.mkdir(parents=True) + file_pth = target_folder / filename + + text_as_font = True + if filetype == 'SVG': + text_as_font = False + + p4c.export_image( + filename=str(file_pth), + type=filetype, + network=network_name, + overwrite_file=True, + all_graphics_details=True, + export_text_as_font=text_as_font, + page_size=pdf_export_page_size, + ) + + +def layout_network( + layout_name: CytoLayouts = CYTO_LAYOUT_NAME, + layout_properties: CytoLayoutProperties = CYTO_LAYOUT_PROPERTIES, + network_name: str = CYTO_BASE_NETWORK_NAME, +) -> None: + p4c.set_layout_properties(layout_name, layout_properties) + p4c.layout_network(layout_name=layout_name, network=network_name) + p4c.fit_content(selected_only=False, network=network_name) + + +def apply_style_to_network( + pth_to_stylesheet: Path = CYTO_PATH_STYLESHEET, + network_name: str = CYTO_BASE_NETWORK_NAME, +) -> None: + styles_avail = cast(list[str], p4c.get_visual_style_names()) + if CYTO_STYLESHEET_NAME not in styles_avail: + if not pth_to_stylesheet.exists(): + # existence for standard path verified at import, but not for other + # provided paths + raise FileNotFoundError( + f'Visual stylesheet for Cytoscape not found under: >>{pth_to_stylesheet}<<' + ) + p4c.import_visual_styles(str(pth_to_stylesheet)) + + p4c.set_visual_style(CYTO_STYLESHEET_NAME, network=network_name) + time.sleep(1) # if not waited image export could be without applied style + p4c.fit_content(selected_only=False, network=network_name) + + +def get_subgraph_node_selection( + network_name: str = CYTO_BASE_NETWORK_NAME, + property_degree_weighted: str = PROPERTY_NAME_DEGREE_WEIGHTED, +) -> list[CytoNodeID]: + node_table = p4c.get_table_columns(network=network_name) + node_table['stress_norm'] = node_table['Stress'] / node_table['Stress'].max() + node_table[CYTO_SELECTION_PROPERTY] = ( + node_table[property_degree_weighted] + * node_table['BetweennessCentrality'] + * node_table['stress_norm'] + ) + node_table = node_table.sort_values(by=CYTO_SELECTION_PROPERTY, ascending=False) + node_table_choice = node_table.iloc[:CYTO_NUMBER_SUBGRAPHS, :] + + return node_table_choice['SUID'].to_list() + + +def select_neighbours_of_node( + node: CytoNodeID, + network_name: str = CYTO_BASE_NETWORK_NAME, +) -> None: + p4c.clear_selection(network=network_name) + p4c.select_nodes(node, network=network_name) + + for _ in range(CYTO_ITER_NEIGHBOUR_DEPTH): + _ = p4c.select_first_neighbors(network=network_name) + + _ = p4c.select_edges_connecting_selected_nodes() + + +def make_subnetwork( + index: int, + network_name: str = CYTO_BASE_NETWORK_NAME, + export_image: bool = True, +) -> None: + subnetwork_name = network_name + f'_sub_{index+1}' + p4c.create_subnetwork( + nodes='selected', + edges='selected', + subnetwork_name=subnetwork_name, + network=network_name, + ) + p4c.set_current_network(subnetwork_name) + p4c.fit_content(selected_only=False, network=subnetwork_name) + if export_image: + export_network_to_image(filename=subnetwork_name, network_name=subnetwork_name) + + +def build_subnetworks( + nodes_to_analyse: Iterable[CytoNodeID], + network_name: str = CYTO_BASE_NETWORK_NAME, + export_image: bool = True, +) -> None: + for idx, node in enumerate(nodes_to_analyse): + select_neighbours_of_node(node=node, network_name=network_name) + make_subnetwork(index=idx, network_name=network_name, export_image=export_image) diff --git a/src/lang_main/types.py b/src/lang_main/types.py index 69130b0..dfcd371 100644 --- a/src/lang_main/types.py +++ b/src/lang_main/types.py @@ -1,5 +1,10 @@ import enum -from typing import Required, TypeAlias, TypedDict +from typing import ( + Literal, + Required, + TypeAlias, + TypedDict, +) import numpy as np from spacy.tokens.doc import Doc as SpacyDoc @@ -42,6 +47,43 @@ Embedding: TypeAlias = SpacyDoc | Tensor # ** graphs NodeTitle: TypeAlias = str EdgeWeight: TypeAlias = int +CytoExportFileTypes: TypeAlias = Literal[ + 'JPEG', + 'PDF', + 'PNG', + 'PS', + 'SVG', +] +CytoExportPageSizes: TypeAlias = Literal[ + 'A0', + 'A1', + 'A2', + 'A3', + 'A4', + 'A5', + 'Auto', + 'Legal', + 'Letter', + 'Tabloid', +] +CytoLayouts: TypeAlias = Literal[ + 'attribute-circle', + 'attribute-grid', + 'attributes-layout', + 'circular', + 'cose', + 'degree-circle', + 'force-directed', + 'force-directed-cl', + 'fruchterman-rheingold', + 'grid', + 'hierarchical', + 'isom', + 'kamada-kawai', + 'stacked-node-layout', +] +CytoLayoutProperties: TypeAlias = dict[str, float | bool] +CytoNodeID: TypeAlias = int class NodeData(TypedDict): diff --git a/test-notebooks/image.png b/test-notebooks/image.png index 9bb2abf450642147fa95c74069f213ff953b8244..c8863fd55b3f372065974acc2dea1c3606a58222 100644 GIT binary patch literal 54002 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 diff --git a/test-notebooks/lang_main.xml b/test-notebooks/lang_main.xml new file mode 100644 index 0000000..93adff8 --- /dev/null +++ b/test-notebooks/lang_main.xml @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test-notebooks/lang_main_config.toml b/test-notebooks/lang_main_config.toml index fbd99b0..3c00289 100644 --- a/test-notebooks/lang_main_config.toml +++ b/test-notebooks/lang_main_config.toml @@ -16,6 +16,7 @@ preprocessing_skip = true token_analysis_skip = false graph_postprocessing_skip = false graph_rescaling_skip = false +graph_static_rendering_skip = false time_analysis_skip = true #[export_filenames] diff --git a/test-notebooks/misc.ipynb b/test-notebooks/misc.ipynb index 5713d08..a1a04ad 100644 --- a/test-notebooks/misc.ipynb +++ b/test-notebooks/misc.ipynb @@ -3,6 +3,17 @@ { "cell_type": "code", "execution_count": 1, + "id": "c930ce7b-e060-4021-b97c-192045f17122", + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "code", + "execution_count": 5, "id": "af118d77-d87a-4687-be5b-e810a24c403e", "metadata": {}, "outputs": [ @@ -10,7 +21,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "2024-07-10 11:42:23 +0000 | io:INFO | Loaded TOML config file successfully.\n" + "2024-07-17 16:02:39 +0000 | io:INFO | Loaded TOML config file successfully.\n" ] }, { @@ -41,20 +52,21 @@ "from logging import NullHandler\n", "\n", "import numpy as np\n", + "import networkx as nx\n", "\n", "import py4cytoscape as p4c\n", - "import py4cytoscape.py4cytoscape_logger_settings as p4c_logging\n", - "p4c.set_summary_logger(False)\n", + "#import py4cytoscape.py4cytoscape_logger_settings as p4c_logging\n", + "#p4c.set_summary_logger(False)\n", "#p4c_logging._SUMMARY_LOG_LEVEL = 'ERROR'\n", "# p4c_logging._DETAIL_LOG_LEVEL = 'ERROR'\n", - "p4c.py4cytoscape_logger.detail_logger.setLevel('ERROR')\n", - "p4c.py4cytoscape_logger.detail_logger.removeHandler(p4c.py4cytoscape_logger.detail_handler)\n", - "p4c.py4cytoscape_logger.detail_logger.addHandler(NullHandler())" + "#p4c.py4cytoscape_logger.detail_logger.setLevel('ERROR')\n", + "#p4c.py4cytoscape_logger.detail_logger.removeHandler(p4c.py4cytoscape_logger.detail_handler)\n", + "#p4c.py4cytoscape_logger.detail_logger.addHandler(NullHandler())" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 6, "id": "4256081a-6364-4e8f-8cfd-799912ca6b94", "metadata": {}, "outputs": [], @@ -65,7 +77,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 7, "id": "e9a92ad6-5e63-49c4-b9e7-9f81da8549fe", "metadata": {}, "outputs": [], @@ -78,7 +90,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 8, "id": "c2421d89-ed8c-41dd-b363-ad5b5b716704", "metadata": {}, "outputs": [ @@ -86,7 +98,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "2024-07-10 11:01:10 +0000 | io:INFO | Loaded file successfully.\n" + "2024-07-17 16:02:46 +0000 | io:INFO | Loaded file successfully.\n" ] } ], @@ -127,17 +139,28 @@ }, { "cell_type": "code", - "execution_count": 19, - "id": "0d65a960-c17a-4710-9dc0-5ca0b6c16680", + "execution_count": 8, + "id": "66901689-8b95-400a-b2fb-11d3ea215512", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "tkg.rescaled_weights = False" + "tkg.rescaled_weights" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 9, "id": "842e01fa-29cd-4028-9461-c7af24e01c33", "metadata": {}, "outputs": [ @@ -147,7 +170,7 @@ "{}" ] }, - "execution_count": 20, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -166,7 +189,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 10, "id": "1e61aca3-efea-4e38-8174-5ca4b2585256", "metadata": {}, "outputs": [], @@ -179,7 +202,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 11, "id": "5d83c04c-03ab-4086-a4e9-ae430e4c6090", "metadata": {}, "outputs": [ @@ -187,7 +210,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "2024-07-10 08:16:41 +0000 | io:INFO | Loaded file successfully.\n" + "2024-07-17 06:04:17 +0000 | io:INFO | Loaded file successfully.\n" ] } ], @@ -197,7 +220,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 12, "id": "4718b54e-0891-4f70-8c67-90c439bc8bfd", "metadata": {}, "outputs": [], @@ -207,17 +230,17 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 13, "id": "ddcb4ff0-eac4-45ba-9c6e-83ada4b0276c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "TokenGraph(name: TokenGraph, number of nodes: 6028, number of edges: 17950)" + "TokenGraph(name: TokenGraph, number of nodes: 6859, number of edges: 25499)" ] }, - "execution_count": 24, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -327,14 +350,6 @@ "get_graph_metadata(undirected)" ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "5c2934c5-2e19-4a33-b7bf-262993e3fabc", - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "code", "execution_count": 12, @@ -771,7 +786,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 93, "id": "2a3be1eb-b289-46ab-8d70-53110ad2806c", "metadata": {}, "outputs": [], @@ -784,7 +799,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 94, "id": "64d8ba18-b1e2-470d-8bf5-9dd7cfec31de", "metadata": {}, "outputs": [ @@ -792,7 +807,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "2024-07-10 11:42:39 +0000 | io:INFO | Loaded file successfully.\n" + "2024-07-17 07:15:34 +0000 | io:INFO | Loaded file successfully.\n" ] } ], @@ -802,7 +817,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 95, "id": "d80522a0-c13a-42d3-af9d-8e10914c7831", "metadata": {}, "outputs": [], @@ -812,7 +827,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 96, "id": "4a19d096-27f8-4626-97ee-31c0f84a294f", "metadata": {}, "outputs": [ @@ -828,7 +843,7 @@ " 'total_memory': 20492}" ] }, - "execution_count": 6, + "execution_count": 96, "metadata": {}, "output_type": "execute_result" } @@ -837,17 +852,271 @@ "get_graph_metadata(tk_resc)" ] }, + { + "cell_type": "code", + "execution_count": 97, + "id": "86fe9b96-2e96-4a6c-a511-6a9c16b8fd63", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wartungstätigkeit 3.1190000474452972\n", + "Vorgabe 4.145399987697601\n", + "Maschinenhersteller 2.0\n", + "Sichtkontrolle 0.8227999806404114\n", + "Reinigung 1.7093999981880188\n", + "Überprüfung 2.0071999728679657\n", + "Ölabscheider 0.7318999767303467\n", + "Kontrolle 6.2471999898552895\n", + "C-Anlage 0.6929000020027161\n", + "Stabbreithalter 0.5758000016212463\n" + ] + } + ], + "source": [ + "break_early = True\n", + "n = 10\n", + "\n", + "for idx, (node, weighted_degree) in enumerate(tk_resc.degree(weight='weight')):\n", + " if break_early and idx == n:\n", + " break\n", + " print(node, weighted_degree)" + ] + }, + { + "cell_type": "code", + "execution_count": 312, + "id": "420fd2db-98d0-48df-8a01-b4355778a6e9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Wartungstätigkeit': 3.1190000474452972,\n", + " 'Vorgabe': 4.145399987697601,\n", + " 'Maschinenhersteller': 2.0,\n", + " 'Sichtkontrolle': 0.8227999806404114,\n", + " 'Reinigung': 1.7093999981880188,\n", + " 'Überprüfung': 2.0071999728679657,\n", + " 'Ölabscheider': 0.7318999767303467,\n", + " 'Kontrolle': 6.2471999898552895,\n", + " 'C-Anlage': 0.6929000020027161,\n", + " 'Stabbreithalter': 0.5758000016212463,\n", + " 'Scharniere': 0.7002999782562256,\n", + " '--': 0.7002999782562256,\n", + " 'Schließvorrichtung': 0.7059999704360962,\n", + " 'Schloß': 0.7059999704360962,\n", + " 'Kompressorstation': 0.5514000058174133,\n", + " 'Wasseraufbereitungsanlage': 0.5105999708175659,\n", + " 'Heizungsanlage': 0.5101000070571899,\n", + " 'Druckkontrolle': 1.140199989080429,\n", + " 'bar': 1.2935999631881714,\n", + " 'machen': 1.4854000210762024,\n", + " 'gegebenenfalls': 0.4934000074863434,\n", + " 'Filter': 0.4934000074863434,\n", + " 'sauber': 0.4986000061035156,\n", + " 'Leiter': 0.6482000052928925,\n", + " 'Analyse': 0.42980000376701355,\n", + " 'Kesselwasser': 0.42980000376701355,\n", + " 'überprüfen': 0.42980000376701355,\n", + " 'Wasserverbrauch': 0.42980000376701355,\n", + " 'auffüllen': 0.7113999724388123,\n", + " 'Desifektionsmittel': 0.35569998621940613,\n", + " 'Aschenbecher': 0.7113999724388123,\n", + " 'leeren': 0.35569998621940613,\n", + " 'Wartung': 0.46550001204013824,\n", + " 'Toilette': 0.2621000111103058,\n", + " 'Wartungsplan': 2.1448000073432922,\n", + " 'sehen': 3.650799944996834,\n", + " 'Extradatum': 3.2020999789237976,\n", + " 'Kompensator': 0.20739999413490295,\n", + " 'Verschleiß': 0.6553999930620193,\n", + " 'Dichtigkeit': 0.4373999983072281,\n", + " 'Kühlturm': 0.20340000092983246,\n", + " 'schmieren': 1.4377999901771545,\n", + " 'Rieme': 0.4068000018596649,\n", + " 'Maschinenbediener': 0.5580000281333923,\n", + " 'Laserabteilung': 0.5580000281333923,\n", + " 'Arbeitsplan': 0.7273000031709671,\n", + " 'abarbeiten': 0.7170000076293945,\n", + " 'Küsters-Anlage': 0.6922999918460846,\n", + " 'Anlage': 0.6487999856472015,\n", + " 'Leckage': 0.7812000215053558,\n", + " 'prüfen': 1.5511000156402588,\n", + " 'abschmieren': 0.4147999882698059,\n", + " 'Lager': 0.4318999946117401,\n", + " 'Campen-Aufwickler': 0.20739999413490295,\n", + " 'Linearkugellager': 0.4399999976158142,\n", + " 'Campen-Abwickler': 0.20739999413490295,\n", + " 'Wumag-Trockner': 0.20739999413490295,\n", + " 'Gesamtanlage': 0.3847000002861023,\n", + " 'Beschädigung': 0.8136000037193298,\n", + " 'usw.': 0.8136000037193298,\n", + " 'Stand': 0.9007999897003174,\n", + " 'Stöppel': 0.6636999845504761,\n", + " '-Leiterprüfung': 0.8335999846458435,\n", + " 'Herr': 5.480200096964836,\n", + " 'Buschmann': 1.108900010585785,\n", + " 'derzeit': 1.4514999985694885,\n", + " 'Förster': 1.411899983882904,\n", + " 'terminieren': 0.44359999895095825,\n", + " 'reparieren': 0.1459999978542328,\n", + " 'Akku': 0.1282999962568283,\n", + " 'Firma': 3.6372000351548195,\n", + " 'Hawker': 0.1282999962568283,\n", + " 'Prüfung': 0.23270000517368317,\n", + " 'V': 0.1177000030875206,\n", + " 'Erste-Hilfe-Koffer': 0.11500000208616257,\n", + " 'orange': 0.11500000208616257,\n", + " 'Blombe': 0.46000000834465027,\n", + " 'vorhanden': 0.11500000208616257,\n", + " 'bitte': 0.11500000208616257,\n", + " 'Ticket': 0.48810001462697983,\n", + " 'Magazin': 0.48810001462697983,\n", + " 'Leiterprüfung': 0.19040000438690186,\n", + " 'Arbeit': 0.09520000219345093,\n", + " 'Abteilungsleiter': 0.48180001229047775,\n", + " 'Email': 1.6289000436663628,\n", + " 'Eigenverantwortlichkeit': 1.9827000498771667,\n", + " 'Mithilfe': 1.7449000477790833,\n", + " 'Graf': 1.884600043296814,\n", + " 'informieren': 0.5197000131011009,\n", + " 'Pflasterschrank': 0.11500000208616257,\n", + " 'Bedarf': 0.8617000207304955,\n", + " 'Verbandsmaterial': 0.3450000062584877,\n", + " 'Auflistung': 0.23000000417232513,\n", + " 'finden': 0.5750000104308128,\n", + " 'Extradate': 0.3450000062584877,\n", + " 'intern': 0.23000000417232513,\n", + " 'Objekt': 0.23000000417232513,\n", + " 'Wartungsarbeit': 0.4415999948978424,\n", + " 'Einrichtung': 0.2759999930858612,\n", + " 'Luftdruckkontrolle': 0.2759999930858612,\n", + " 'Abschmierung': 0.49140000343322754,\n", + " 'Ventilator': 0.49140000343322754,\n", + " 'Motor': 0.9828000068664551,\n", + " 'durchführen': 0.24570000171661377,\n", + " 'Monat': 0.4219000041484833,\n", + " 'Erledigungsdatum': 0.24570000171661377,\n", + " 'anschreiben': 0.24570000171661377,\n", + " 'Wechseln': 0.504800021648407,\n", + " 'V-Röhre': 0.2524000108242035,\n", + " 'Betriebsstunde': 0.2524000108242035,\n", + " 'Wäscherkontrolle': 0.49140000343322754,\n", + " 'Sitz': 0.15800000727176666,\n", + " 'Verschmutzung': 0.1256999969482422,\n", + " 'Sicherstellung': 0.1256999969482422,\n", + " 'Ausblasöffnung': 0.1256999969482422,\n", + " 'Fremdkörper': 0.1256999969482422,\n", + " 'anfragen': 0.45570001006126404,\n", + " 'Termin': 0.45570001006126404,\n", + " 'Menzel': 0.5950000286102295,\n", + " 'Vorbelegung': 1.5947999954223633,\n", + " 'Stehlagergehäuse': 0.4966000020503998,\n", + " 'M': 0.1177000030875206,\n", + " 'Moser': 0.2371000051498413,\n", + " 'Lagerung': 1.2455999702215195,\n", + " 'Palette': 0.6974999904632568,\n", + " 'Fach': 0.5480999797582626,\n", + " 'Hochregal': 0.5480999797582626,\n", + " 'Halle': 0.5480999797582626,\n", + " 'so': 0.5480999797582626,\n", + " 'zulässig': 0.5480999797582626,\n", + " 'tauschen': 0.22450000047683716,\n", + " 'reinigen': 0.530799999833107,\n", + " 'Rauwalze': 1.255899965763092,\n", + " 'Einziehwalze': 1.2551999688148499,\n", + " 'neu': 2.048299953341484,\n", + " 'überziehen': 0.573199987411499,\n", + " 'erfolgen': 0.11500000208616257,\n", + " 'Absprache': 0.09809999912977219,\n", + " 'Baugruppe': 0.704800009727478,\n", + " 'Pos.-Nr': 0.352400004863739,\n", + " 'Nr.': 0.5286000072956085,\n", + " 'Stückliste': 0.5286000072956085,\n", + " 'E-Nummer': 0.1762000024318695,\n", + " 'Bezeichnung': 0.1762000024318695,\n", + " 'verbauen': 0.352400004863739,\n", + " 'Hersteller': 0.1762000024318695,\n", + " 'Anzahl': 0.1762000024318695,\n", + " 'Schmierstoffmenge': 0.1762000024318695,\n", + " 'max.': 0.1762000024318695,\n", + " 'Wartungsintervall': 0.1762000024318695,\n", + " 'Wechselintervall': 0.1762000024318695,\n", + " 'Rollenkette-zweifach': 0.1762000024318695,\n", + " 'Öl': 0.1762000024318695,\n", + " 'E50': 0.1762000024318695,\n", + " 'Woche': 0.1762000024318695,\n", + " 'Kettbaum': 0.6245999932289124,\n", + " 'Gewind': 0.6347000002861023,\n", + " 'nachschneiden': 0.6347000002861023}" + ] + }, + "execution_count": 312, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dict(tk_resc.degree(weight='weight'))" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "id": "cafbd812-3292-4610-8fb4-0e230a3e63f4", + "metadata": {}, + "outputs": [], + "source": [ + "nx.set_node_attributes(tk_resc, dict(tk_resc.degree(weight='weight')), name='weight_degree')" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "id": "fac462a9-4fe0-408b-9fea-9bf3b05ac7a2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'weight_degree': 3.1190000474452972}\n", + "{'weight_degree': 4.145399987697601}\n", + "{'weight_degree': 2.0}\n", + "{'weight_degree': 0.8227999806404114}\n", + "{'weight_degree': 1.7093999981880188}\n", + "{'weight_degree': 2.0071999728679657}\n", + "{'weight_degree': 0.7318999767303467}\n", + "{'weight_degree': 6.2471999898552895}\n", + "{'weight_degree': 0.6929000020027161}\n", + "{'weight_degree': 0.5758000016212463}\n" + ] + } + ], + "source": [ + "break_early = True\n", + "n = 10\n", + "\n", + "for idx, node in enumerate(tk_resc.nodes):\n", + " if break_early and idx == n:\n", + " break\n", + " print(tk_resc.nodes[node])" + ] + }, { "cell_type": "code", "execution_count": null, - "id": "2272d230-6fe0-4ade-9a09-9f4277d9b58c", + "id": "86699c31-5679-4baa-a52a-d7e97dd77761", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 103, "id": "781d2906-f2cb-447a-b8b9-c82d9ae7e29f", "metadata": {}, "outputs": [ @@ -864,7 +1133,7 @@ "'You are connected to Cytoscape!'" ] }, - "execution_count": 7, + "execution_count": 103, "metadata": {}, "output_type": "execute_result" } @@ -876,7 +1145,99 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 164, + "id": "2262166f-8fc6-468d-a808-1ff79ac0a70a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['lang_main']" + ] + }, + "execution_count": 164, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p4c.get_collection_list()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "635ef0b3-0e22-4565-92ba-c1e50ff1c6ac", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "''" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p4c.networks.delete_all_networks()" + ] + }, + { + "cell_type": "code", + "execution_count": 182, + "id": "2db0ecc6-15aa-49a7-baca-bee8a3faa27e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "''" + ] + }, + "execution_count": 182, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p4c.networks.delete_network('test3')" + ] + }, + { + "cell_type": "code", + "execution_count": 207, + "id": "986a01f1-1b98-4d6b-bf4b-83d0ef306425", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 208, + "id": "fcc82b82-1bb5-484f-9d49-75de18ebddd4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "''" + ] + }, + "execution_count": 208, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p4c.networks.delete_all_networks()" + ] + }, + { + "cell_type": "code", + "execution_count": 209, "id": "28b25e27-ed77-4c23-84d5-e3dec004e4fe", "metadata": {}, "outputs": [ @@ -891,55 +1252,1586 @@ { "data": { "text/plain": [ - "17998" + "20743" ] }, - "execution_count": 16, + "execution_count": 209, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "p4c.create_network_from_networkx(tk_resc, title='test', collection='lang_main')" + "\n", + "p4c.create_network_from_networkx(tk_resc, title=BASE_NAME, collection='lang_main')" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 210, + "id": "a4871473-83b3-44ed-a6b0-45453975cdd6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'networkTitle': 'test (undirected)',\n", + " 'nodeCount': '158',\n", + " 'edgeCount': '189',\n", + " 'avNeighbors': '2.3684210526315788',\n", + " 'diameter': '10',\n", + " 'radius': '5',\n", + " 'avSpl': '3.7965860597439547',\n", + " 'cc': '0.3375',\n", + " 'density': '0.06401137980085347',\n", + " 'heterogeneity': '1.0891156226526975',\n", + " 'centralization': '0.38888888888888895',\n", + " 'ncc': '27',\n", + " 'time': '0.003'}" + ] + }, + "execution_count": 210, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p4c.tools.analyze_network(directed=False)" + ] + }, + { + "cell_type": "markdown", + "id": "9c0dc5a0-0686-459b-9e98-50ab8238ecb2", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "code", + "execution_count": 282, + "id": "70104956-06d4-461b-ab4d-312d868f6e98", + "metadata": {}, + "outputs": [], + "source": [ + "BASE_NETWORK_NAME = 'test'\n", + "\n", + "def import_to_cytoscape(graph):\n", + " p4c.networks.delete_all_networks()\n", + " p4c.create_network_from_networkx(graph, title=BASE_NETWORK_NAME, collection='lang_main')\n", + " p4c.tools.analyze_network(directed=False)\n", + "\n", + "\n", + "def reset_current_network_to_base():\n", + " p4c.set_current_network(BASE_NETWORK_NAME)\n", + "\n", + "\n", + "def export_network_to_image(filename, filetype='SVG', network_name=BASE_NETWORK_NAME):\n", + " target_folder = Path.cwd() / 'results'\n", + " if not target_folder.exists():\n", + " target_folder.mkdir(parents=True)\n", + " file_pth = target_folder / filename\n", + "\n", + " text_as_font = True\n", + " if filetype == 'SVG':\n", + " text_as_font = False\n", + "\n", + " p4c.export_image(filename=str(file_pth), type=filetype, network=network_name, overwrite_file=True, all_graphics_details=True, export_text_as_font=text_as_font, page_size='A4')" + ] + }, + { + "cell_type": "code", + "execution_count": 283, + "id": "2c240f53-0f6c-4de3-adcb-7be4f051ca2a", + "metadata": {}, + "outputs": [], + "source": [ + "LAYOUT_NAME = 'force-directed'\n", + "LAYOUT_PROPERTIES = {\n", + " 'numIterations': 1000,\n", + " 'defaultSpringCoefficient': 1e-4,\n", + " 'defaultSpringLength': 45,\n", + " 'defaultNodeMass': 11,\n", + " 'isDeterministic': True,\n", + " 'singlePartition': False,\n", + "}\n", + "PATH_STYLESHEET = Path('lang_main.xml')\n", + "STYLESHEET_NAME = 'lang_main'\n", + "\n", + "def layout_network(layout_name=LAYOUT_NAME, layout_properties=LAYOUT_PROPERTIES, network_name=BASE_NETWORK_NAME):\n", + " p4c.set_layout_properties(layout_name, layout_properties)\n", + " p4c.layout_network(layout_name=layout_name, network=network_name)\n", + " p4c.fit_content(selected_only=False, network=network_name)\n", + "\n", + "\n", + "def apply_style_to_network(pth_to_stylesheet=PATH_STYLESHEET, network_name=BASE_NETWORK_NAME):\n", + " styles_avail = p4c.get_visual_style_names()\n", + " if STYLESHEET_NAME not in styles_avail:\n", + " p4c.import_visual_styles(pth_to_stylesheet)\n", + "\n", + " p4c.set_visual_style(STYLESHEET_NAME, network=network_name)\n", + " p4c.fit_content(selected_only=False, network=network_name)" + ] + }, + { + "cell_type": "code", + "execution_count": 304, + "id": "9759f36d-761f-45fc-a9d2-157aef08c1bf", + "metadata": {}, + "outputs": [], + "source": [ + "SELECTION_PROPERTY = 'node_selection'\n", + "SELECTION_NUMBER = 5\n", + "ITER_NEIGHBOUR_DEPTH = 2\n", + "\n", + "def get_sub_node_selection(network_name=BASE_NETWORK_NAME):\n", + " node_table = p4c.get_table_columns(network=network_name)\n", + " node_table['stress_norm'] = node_table['Stress'] / node_table['Stress'].max()\n", + " node_table[SELECTION_PROPERTY] = node_table['weight_degree'] * node_table['BetweennessCentrality'] * node_table['stress_norm']\n", + " node_table = node_table.sort_values(by=SELECTION_PROPERTY, ascending=False)\n", + " node_table_choice = node_table.iloc[:SELECTION_NUMBER,:]\n", + "\n", + " return node_table_choice['SUID'].to_list()\n", + "\n", + "\n", + "def select_neighbours_of_node(node, network_name=BASE_NETWORK_NAME):\n", + " p4c.clear_selection(network=network_name)\n", + " p4c.select_nodes(node, network=network_name)\n", + "\n", + " for _ in range(ITER_NEIGHBOUR_DEPTH):\n", + " _ = p4c.select_first_neighbors(network=network_name)\n", + "\n", + " _ = p4c.select_edges_connecting_selected_nodes()\n", + "\n", + "\n", + "def make_subnetwork(index, network_name=BASE_NETWORK_NAME, export_image=True):\n", + " subnetwork_name = network_name + f'_sub_{index+1}'\n", + " p4c.create_subnetwork(nodes='selected', edges='selected', subnetwork_name=subnetwork_name, network=network_name)\n", + " p4c.set_current_network(subnetwork_name)\n", + " p4c.fit_content(selected_only=False, network=network_name)\n", + " if export_image:\n", + " export_network_to_image(filename=subnetwork_name, network_name=subnetwork_name)\n", + "\n", + "\n", + "def build_subnetworks(nodes_to_analyse, network_name=BASE_NETWORK_NAME, export_image=True):\n", + " for idx, node in enumerate(nodes_to_analyse):\n", + " select_neighbours_of_node(node=node, network_name=network_name)\n", + " make_subnetwork(index=idx, network_name=network_name, export_image=export_image)" + ] + }, + { + "cell_type": "markdown", + "id": "facae316-6acb-4094-9eef-19bead44a813", + "metadata": {}, + "source": [ + "---\n", + "\n", + "1. import network\n", + "2. layouting\n", + "3. apply styles\n", + "4. export image\n", + "5. build subgraphs\n", + " 1. get candidates\n", + " 2. build subnetwork\n", + " 3. export subnetwork" + ] + }, + { + "cell_type": "code", + "execution_count": 305, + "id": "583d304d-571f-43f5-b8eb-905a01ddaec4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Applying default style...\n", + "Applying preferred layout\n" + ] + } + ], + "source": [ + "import_to_cytoscape(tk_resc)" + ] + }, + { + "cell_type": "code", + "execution_count": 306, + "id": "b13f2eb2-fa1e-495c-8e77-e992f78a69b6", + "metadata": {}, + "outputs": [], + "source": [ + "layout_network()" + ] + }, + { + "cell_type": "code", + "execution_count": 307, + "id": "60c1ca0f-ac73-4545-bffa-7eb656ade8fa", + "metadata": {}, + "outputs": [], + "source": [ + "apply_style_to_network()" + ] + }, + { + "cell_type": "code", + "execution_count": 308, + "id": "8cc5f1c0-0bb4-4e77-ba70-83ef449f37c8", + "metadata": {}, + "outputs": [], + "source": [ + "export_network_to_image(filename=BASE_NETWORK_NAME)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "040c4439-3c46-4d48-92ed-af9614f90cb0", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 309, + "id": "da0f7a3f-c7e5-4c50-85d9-16a90ff69011", + "metadata": {}, + "outputs": [], + "source": [ + "nodes_to_analyse = get_sub_node_selection()" + ] + }, + { + "cell_type": "code", + "execution_count": 310, + "id": "27a9cbc3-d852-4f5d-a6ee-92f97cf10db1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No nodes selected.\n", + "No nodes selected.\n", + "No nodes selected.\n", + "No nodes selected.\n" + ] + } + ], + "source": [ + "build_subnetworks(nodes_to_analyse=nodes_to_analyse, export_image=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "74749a78-1afb-4158-8ab4-05b18b59e39e", + "metadata": {}, + "outputs": [], + "source": [ + "test = dict()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "9ec4f934-8ea5-401f-9f2f-86de478cec01", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "jo\n" + ] + } + ], + "source": [ + "if not test:\n", + " print('jo')" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "97905d05-483c-4e9a-b88d-00353ada870b", + "metadata": {}, + "outputs": [], + "source": [ + "from lang_main.render.cytoscape import layout_network" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "900868b3-7e3a-44c7-bef4-53c5a3e63e63", + "metadata": {}, + "outputs": [], + "source": [ + "layout_network()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d3369d18-0e29-4dc3-a7ba-bab8b356282f", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 296, + "id": "1dbbf2a3-6de3-4557-8966-40f12c55d755", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "41497" + ] + }, + "execution_count": 296, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "IDX = 0\n", + "nodes_to_select[IDX]" + ] + }, + { + "cell_type": "code", + "execution_count": 297, + "id": "3b3eebe1-90e8-429d-8099-96f6e59f7e18", + "metadata": {}, + "outputs": [], + "source": [ + "select_neighbours_of_node(nodes_to_select[IDX])" + ] + }, + { + "cell_type": "code", + "execution_count": 300, + "id": "c1b46f42-5837-4a77-9d7c-5780bd5057be", + "metadata": {}, + "outputs": [], + "source": [ + "build_subnetwork(IDX)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0558b387-e1c4-43b8-aa3c-4d3a182856f4", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3f215f7a-2cec-4ea8-8fc7-6b217fb3df7f", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "de481ea5-db5d-46ba-9eed-e7da476d895f", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "261bf119-4757-4840-a0b9-0d3d4fb77dd9", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8b5dfc7f-44fd-4f7b-a8a8-0cd3c73449b4", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 190, + "id": "2ce067f3-9647-489d-934e-fcdf1a2561f1", + "metadata": {}, + "outputs": [], + "source": [ + "node_table = p4c.get_table_columns(network=BASE_NAME)" + ] + }, + { + "cell_type": "code", + "execution_count": 191, + "id": "f4490242-0aac-46af-a913-08a627815587", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.frame.DataFrame" + ] + }, + "execution_count": 191, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(node_table)" + ] + }, + { + "cell_type": "code", + "execution_count": 192, + "id": "9bf840a7-e533-42e2-936a-2678f6bfc4ca", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SUIDshared namenameselectedidweight_degreeAverageShortestPathLengthClusteringCoefficientClosenessCentralityIsSingleNode...SelfLoopsEccentricityStressDegreeBetweennessCentralityNeighborhoodConnectivityNumberOfDirectedEdgesNumberOfUndirectedEdgesRadialityTopologicalCoefficient
1861018610KontrolleKontrolleFalseKontrolle6.24722.2702700.0250000.440476False...051062160.7972971.8125000160.9206080.091346
1877818778HerrHerrFalseHerr5.48023.1142860.2948720.321101False...16962150.4028574.6923080140.8373630.329670
1879918799FirmaFirmaFalseFirma3.63723.5714290.1272730.280000False...071328110.4016812.8181820110.8021980.223140
1869418694sehensehenFalsesehen3.65083.1142860.3333330.321101False...06103470.2817934.571429070.8373630.268908
1871218712schmierenschmierenFalseschmieren1.43782.6216220.0666670.381443False...0662660.4699704.333333060.8986490.183333
..................................................................
1904819048E50E50FalseE500.17624.2432430.0000000.235669False...08010.0000004.000000010.7972970.000000
1904519045ÖlÖlFalseÖl0.17621.0000000.0000001.000000False...01010.0000001.000000011.0000000.000000
1904219042Rollenkette-zweifachRollenkette-zweifachFalseRollenkette-zweifach0.17621.0000000.0000001.000000False...01010.0000001.000000011.0000000.000000
1903919039WechselintervallWechselintervallFalseWechselintervall0.17621.0000000.0000001.000000False...01010.0000001.000000011.0000000.000000
1894318943MenzelMenzelFalseMenzel0.59504.5428570.0000000.220126False...08010.00000011.000000010.7274730.000000
\n", + "

158 rows × 21 columns

\n", + "
" + ], + "text/plain": [ + " SUID shared name name selected \\\n", + "18610 18610 Kontrolle Kontrolle False \n", + "18778 18778 Herr Herr False \n", + "18799 18799 Firma Firma False \n", + "18694 18694 sehen sehen False \n", + "18712 18712 schmieren schmieren False \n", + "... ... ... ... ... \n", + "19048 19048 E50 E50 False \n", + "19045 19045 Öl Öl False \n", + "19042 19042 Rollenkette-zweifach Rollenkette-zweifach False \n", + "19039 19039 Wechselintervall Wechselintervall False \n", + "18943 18943 Menzel Menzel False \n", + "\n", + " id weight_degree AverageShortestPathLength \\\n", + "18610 Kontrolle 6.2472 2.270270 \n", + "18778 Herr 5.4802 3.114286 \n", + "18799 Firma 3.6372 3.571429 \n", + "18694 sehen 3.6508 3.114286 \n", + "18712 schmieren 1.4378 2.621622 \n", + "... ... ... ... \n", + "19048 E50 0.1762 4.243243 \n", + "19045 Öl 0.1762 1.000000 \n", + "19042 Rollenkette-zweifach 0.1762 1.000000 \n", + "19039 Wechselintervall 0.1762 1.000000 \n", + "18943 Menzel 0.5950 4.542857 \n", + "\n", + " ClusteringCoefficient ClosenessCentrality IsSingleNode ... \\\n", + "18610 0.025000 0.440476 False ... \n", + "18778 0.294872 0.321101 False ... \n", + "18799 0.127273 0.280000 False ... \n", + "18694 0.333333 0.321101 False ... \n", + "18712 0.066667 0.381443 False ... \n", + "... ... ... ... ... \n", + "19048 0.000000 0.235669 False ... \n", + "19045 0.000000 1.000000 False ... \n", + "19042 0.000000 1.000000 False ... \n", + "19039 0.000000 1.000000 False ... \n", + "18943 0.000000 0.220126 False ... \n", + "\n", + " SelfLoops Eccentricity Stress Degree BetweennessCentrality \\\n", + "18610 0 5 1062 16 0.797297 \n", + "18778 1 6 962 15 0.402857 \n", + "18799 0 7 1328 11 0.401681 \n", + "18694 0 6 1034 7 0.281793 \n", + "18712 0 6 626 6 0.469970 \n", + "... ... ... ... ... ... \n", + "19048 0 8 0 1 0.000000 \n", + "19045 0 1 0 1 0.000000 \n", + "19042 0 1 0 1 0.000000 \n", + "19039 0 1 0 1 0.000000 \n", + "18943 0 8 0 1 0.000000 \n", + "\n", + " NeighborhoodConnectivity NumberOfDirectedEdges \\\n", + "18610 1.812500 0 \n", + "18778 4.692308 0 \n", + "18799 2.818182 0 \n", + "18694 4.571429 0 \n", + "18712 4.333333 0 \n", + "... ... ... \n", + "19048 4.000000 0 \n", + "19045 1.000000 0 \n", + "19042 1.000000 0 \n", + "19039 1.000000 0 \n", + "18943 11.000000 0 \n", + "\n", + " NumberOfUndirectedEdges Radiality TopologicalCoefficient \n", + "18610 16 0.920608 0.091346 \n", + "18778 14 0.837363 0.329670 \n", + "18799 11 0.802198 0.223140 \n", + "18694 7 0.837363 0.268908 \n", + "18712 6 0.898649 0.183333 \n", + "... ... ... ... \n", + "19048 1 0.797297 0.000000 \n", + "19045 1 1.000000 0.000000 \n", + "19042 1 1.000000 0.000000 \n", + "19039 1 1.000000 0.000000 \n", + "18943 1 0.727473 0.000000 \n", + "\n", + "[158 rows x 21 columns]" + ] + }, + "execution_count": 192, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "node_table.sort_values(by='Degree', ascending=False)" + ] + }, + { + "cell_type": "markdown", + "id": "b4ebe14c-2b23-4da2-8be6-2223add935af", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "code", + "execution_count": 193, + "id": "7386bd66-1924-4199-84d2-a6d1a66def40", + "metadata": {}, + "outputs": [], + "source": [ + "node_table['stress_norm'] = node_table['Stress'] / node_table['Stress'].max()" + ] + }, + { + "cell_type": "code", + "execution_count": 194, + "id": "9422c085-e30e-4418-8c74-26d89edf0ad4", + "metadata": {}, + "outputs": [], + "source": [ + "node_table['w_deg with betweenness'] = node_table['weight_degree'] * node_table['BetweennessCentrality'] * node_table['stress_norm']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e9795c94-cb76-452e-9eda-2285d050fd1b", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 195, + "id": "a2fb09ff-bf2e-48d1-9ceb-777efe0b0b40", + "metadata": {}, + "outputs": [], + "source": [ + "node_table_sorted = node_table.sort_values(by='w_deg with betweenness', ascending=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 196, + "id": "6ae4b7b9-75db-4b80-bd46-53ea25b06829", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SUIDshared namenameselectedidweight_degreeAverageShortestPathLengthClusteringCoefficientClosenessCentralityIsSingleNode...StressDegreeBetweennessCentralityNeighborhoodConnectivityNumberOfDirectedEdgesNumberOfUndirectedEdgesRadialityTopologicalCoefficientstress_normw_deg with betweenness
1861018610KontrolleKontrolleFalseKontrolle6.24722.2702700.0250000.440476False...1062160.7972971.8125000160.9206080.0913460.6040963.008925
1858518585WartungstätigkeitWartungstätigkeitFalseWartungstätigkeit3.11902.7142860.1333330.368421False...175860.5714293.000000060.8681320.2424241.0000001.782286
1877818778HerrHerrFalseHerr5.48023.1142860.2948720.321101False...962150.4028574.6923080140.8373630.3296700.5472131.208102
1879918799FirmaFirmaFalseFirma3.63723.5714290.1272730.280000False...1328110.4016812.8181820110.8021980.2231400.7554041.103640
1859218592VorgabeVorgabeFalseVorgabe4.14542.8857140.4000000.346535False...110650.3154064.600000050.8549450.3833330.6291240.822570
\n", + "

5 rows × 23 columns

\n", + "
" + ], + "text/plain": [ + " SUID shared name name selected \\\n", + "18610 18610 Kontrolle Kontrolle False \n", + "18585 18585 Wartungstätigkeit Wartungstätigkeit False \n", + "18778 18778 Herr Herr False \n", + "18799 18799 Firma Firma False \n", + "18592 18592 Vorgabe Vorgabe False \n", + "\n", + " id weight_degree AverageShortestPathLength \\\n", + "18610 Kontrolle 6.2472 2.270270 \n", + "18585 Wartungstätigkeit 3.1190 2.714286 \n", + "18778 Herr 5.4802 3.114286 \n", + "18799 Firma 3.6372 3.571429 \n", + "18592 Vorgabe 4.1454 2.885714 \n", + "\n", + " ClusteringCoefficient ClosenessCentrality IsSingleNode ... Stress \\\n", + "18610 0.025000 0.440476 False ... 1062 \n", + "18585 0.133333 0.368421 False ... 1758 \n", + "18778 0.294872 0.321101 False ... 962 \n", + "18799 0.127273 0.280000 False ... 1328 \n", + "18592 0.400000 0.346535 False ... 1106 \n", + "\n", + " Degree BetweennessCentrality NeighborhoodConnectivity \\\n", + "18610 16 0.797297 1.812500 \n", + "18585 6 0.571429 3.000000 \n", + "18778 15 0.402857 4.692308 \n", + "18799 11 0.401681 2.818182 \n", + "18592 5 0.315406 4.600000 \n", + "\n", + " NumberOfDirectedEdges NumberOfUndirectedEdges Radiality \\\n", + "18610 0 16 0.920608 \n", + "18585 0 6 0.868132 \n", + "18778 0 14 0.837363 \n", + "18799 0 11 0.802198 \n", + "18592 0 5 0.854945 \n", + "\n", + " TopologicalCoefficient stress_norm w_deg with betweenness \n", + "18610 0.091346 0.604096 3.008925 \n", + "18585 0.242424 1.000000 1.782286 \n", + "18778 0.329670 0.547213 1.208102 \n", + "18799 0.223140 0.755404 1.103640 \n", + "18592 0.383333 0.629124 0.822570 \n", + "\n", + "[5 rows x 23 columns]" + ] + }, + "execution_count": 196, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "node_table_sorted.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 197, + "id": "a5f22fd0-e002-43ec-8dc3-99eb52f8bcd2", + "metadata": {}, + "outputs": [], + "source": [ + "node_table_choice = node_table_sorted.iloc[:5,:]" + ] + }, + { + "cell_type": "code", + "execution_count": 198, + "id": "c123cdd7-f000-4a60-9dc2-73b8a4410e31", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SUIDshared namenameselectedidweight_degreeAverageShortestPathLengthClusteringCoefficientClosenessCentralityIsSingleNode...StressDegreeBetweennessCentralityNeighborhoodConnectivityNumberOfDirectedEdgesNumberOfUndirectedEdgesRadialityTopologicalCoefficientstress_normw_deg with betweenness
1861018610KontrolleKontrolleFalseKontrolle6.24722.2702700.0250000.440476False...1062160.7972971.8125000160.9206080.0913460.6040963.008925
1858518585WartungstätigkeitWartungstätigkeitFalseWartungstätigkeit3.11902.7142860.1333330.368421False...175860.5714293.000000060.8681320.2424241.0000001.782286
1877818778HerrHerrFalseHerr5.48023.1142860.2948720.321101False...962150.4028574.6923080140.8373630.3296700.5472131.208102
1879918799FirmaFirmaFalseFirma3.63723.5714290.1272730.280000False...1328110.4016812.8181820110.8021980.2231400.7554041.103640
1859218592VorgabeVorgabeFalseVorgabe4.14542.8857140.4000000.346535False...110650.3154064.600000050.8549450.3833330.6291240.822570
\n", + "

5 rows × 23 columns

\n", + "
" + ], + "text/plain": [ + " SUID shared name name selected \\\n", + "18610 18610 Kontrolle Kontrolle False \n", + "18585 18585 Wartungstätigkeit Wartungstätigkeit False \n", + "18778 18778 Herr Herr False \n", + "18799 18799 Firma Firma False \n", + "18592 18592 Vorgabe Vorgabe False \n", + "\n", + " id weight_degree AverageShortestPathLength \\\n", + "18610 Kontrolle 6.2472 2.270270 \n", + "18585 Wartungstätigkeit 3.1190 2.714286 \n", + "18778 Herr 5.4802 3.114286 \n", + "18799 Firma 3.6372 3.571429 \n", + "18592 Vorgabe 4.1454 2.885714 \n", + "\n", + " ClusteringCoefficient ClosenessCentrality IsSingleNode ... Stress \\\n", + "18610 0.025000 0.440476 False ... 1062 \n", + "18585 0.133333 0.368421 False ... 1758 \n", + "18778 0.294872 0.321101 False ... 962 \n", + "18799 0.127273 0.280000 False ... 1328 \n", + "18592 0.400000 0.346535 False ... 1106 \n", + "\n", + " Degree BetweennessCentrality NeighborhoodConnectivity \\\n", + "18610 16 0.797297 1.812500 \n", + "18585 6 0.571429 3.000000 \n", + "18778 15 0.402857 4.692308 \n", + "18799 11 0.401681 2.818182 \n", + "18592 5 0.315406 4.600000 \n", + "\n", + " NumberOfDirectedEdges NumberOfUndirectedEdges Radiality \\\n", + "18610 0 16 0.920608 \n", + "18585 0 6 0.868132 \n", + "18778 0 14 0.837363 \n", + "18799 0 11 0.802198 \n", + "18592 0 5 0.854945 \n", + "\n", + " TopologicalCoefficient stress_norm w_deg with betweenness \n", + "18610 0.091346 0.604096 3.008925 \n", + "18585 0.242424 1.000000 1.782286 \n", + "18778 0.329670 0.547213 1.208102 \n", + "18799 0.223140 0.755404 1.103640 \n", + "18592 0.383333 0.629124 0.822570 \n", + "\n", + "[5 rows x 23 columns]" + ] + }, + "execution_count": 198, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "node_table_choice" + ] + }, + { + "cell_type": "code", + "execution_count": 199, + "id": "6f68b890-6c80-4750-a35c-ee29b594462d", + "metadata": {}, + "outputs": [], + "source": [ + "nodes_to_select = node_table_choice['SUID'].to_list()" + ] + }, + { + "cell_type": "code", + "execution_count": 200, + "id": "6d94b18f-2590-4d1b-b165-300466bfd1b1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "''" + ] + }, + "execution_count": 200, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p4c.clear_selection()" + ] + }, + { + "cell_type": "code", + "execution_count": 239, + "id": "62cf521b-e709-4086-9f3d-3e3f8dd9faaa", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{}" + ] + }, + "execution_count": 239, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p4c.select_nodes(nodes_to_select[0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fdeeccd4-3e7c-4c76-a024-f45540142c4a", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 202, + "id": "a371ce7a-d9b9-4158-a0cb-797834a16f97", + "metadata": {}, + "outputs": [], + "source": [ + "iter_depth = 2\n", + "\n", + "for _ in range(iter_depth):\n", + " _ = p4c.select_first_neighbors()" + ] + }, + { + "cell_type": "code", + "execution_count": 203, + "id": "cce979e2-65f1-4896-8758-659ff21c315b", + "metadata": {}, + "outputs": [], + "source": [ + "_ = p4c.select_edges_connecting_selected_nodes()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "23157e10-02c6-4adb-8a36-4bdbfe5f9f4b", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 206, + "id": "2038fd62-b75f-4ba1-b258-53789b4665b7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "20402" + ] + }, + "execution_count": 206, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p4c.create_subnetwork(nodes='selected', edges='selected', subnetwork_name='test_sub_1')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "12828271-fea9-4e4a-98c3-87860992a6db", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f367b253-2172-4dce-9379-a3ed95f3368e", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "49ad6a55-2a12-44c4-a193-2fbb3da84bcf", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 205, + "id": "7de95550-c077-467f-a962-5e84ddf430c7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{}" + ] + }, + "execution_count": 205, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p4c.fit_content(selected_only=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b73934d1-f16a-4ef9-8969-b1be8e7310f5", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "783cb7d6-c6b1-4a9b-8019-02ce2628dde9", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 314, "id": "697647da-3b8b-4029-bec9-af2e2bb6984a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'Attribute Grid Layout': 'attribute-grid',\n", - " 'Degree Sorted Circle Layout': 'degree-circle',\n", - " 'Group Attributes Layout': 'attributes-layout',\n", - " 'Edge-weighted Spring Embedded Layout': 'kamada-kawai',\n", - " 'Prefuse Force Directed Layout': 'force-directed',\n", - " 'Compound Spring Embedder (CoSE)': 'cose',\n", - " 'Hierarchical Layout': 'hierarchical',\n", - " 'Attribute Circle Layout': 'attribute-circle',\n", - " 'Stacked Node Layout': 'stacked-node-layout',\n", - " 'Circular Layout': 'circular',\n", - " 'Grid Layout': 'grid',\n", - " 'Edge-weighted Force directed (BioLayout)': 'fruchterman-rheingold',\n", - " 'Inverted Self-Organizing Map Layout': 'isom',\n", - " 'Prefuse Force Directed OpenCL Layout': 'force-directed-cl'}" + "['attribute-circle',\n", + " 'attribute-grid',\n", + " 'attributes-layout',\n", + " 'circular',\n", + " 'cose',\n", + " 'degree-circle',\n", + " 'force-directed',\n", + " 'force-directed-cl',\n", + " 'fruchterman-rheingold',\n", + " 'grid',\n", + " 'hierarchical',\n", + " 'isom',\n", + " 'kamada-kawai',\n", + " 'stacked-node-layout']" ] }, - "execution_count": 17, + "execution_count": 314, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "p4c.get_layout_name_mapping()" + "sorted(list(p4c.get_layout_name_mapping().values()))" ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 186, "id": "fa15c057-d453-4c7e-8af2-18220ea90651", "metadata": {}, "outputs": [ @@ -954,7 +2846,7 @@ " 'singlePartition']" ] }, - "execution_count": 18, + "execution_count": 186, "metadata": {}, "output_type": "execute_result" } @@ -965,24 +2857,25 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 259, "id": "6f48d9cc-f527-4b33-9477-60636a480371", "metadata": {}, "outputs": [], "source": [ - "layout_props = {\n", + "LAYOUT_NAME = 'force-directed'\n", + "LAYOUT_PROPERTIES = {\n", " 'numIterations': 1000,\n", - " 'defaultSpringCoefficient': 1e-4,\n", - " 'defaultSpringLength': 45,\n", - " 'defaultNodeMass': 12,\n", - " 'isDeterministic': True,\n", - " 'singlePartition': False,\n", + " 'defaultSpringCoefficient': 1e-4,\n", + " 'defaultSpringLength': 45,\n", + " 'defaultNodeMass': 11,\n", + " 'isDeterministic': True,\n", + " 'singlePartition': False,\n", "}" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 188, "id": "d542b2ea-11d5-4802-b1b9-65e5e12f6d38", "metadata": {}, "outputs": [ @@ -992,39 +2885,27 @@ "''" ] }, - "execution_count": 20, + "execution_count": 188, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "p4c.set_layout_properties('force-directed', layout_props)" + "p4c.set_layout_properties('force-directed', layout_props)\n", + "#p4c.get_layout_property_type('kamada-kawai', 'randomize')" ] }, { "cell_type": "code", - "execution_count": 31, - "id": "514e3f07-061e-4488-a770-02ef13b56dcd", + "execution_count": null, + "id": "8eb62660-27a6-43a0-be19-4c4479eac8d7", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'boolean'" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "p4c.get_layout_property_type('kamada-kawai', 'randomize')" - ] + "outputs": [], + "source": [] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 189, "id": "c1069996-b638-4bfa-8ad4-f750a33022d6", "metadata": {}, "outputs": [ @@ -1034,29 +2915,117 @@ "{}" ] }, - "execution_count": 21, + "execution_count": 189, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "p4c.layout_network('force-directed', 'test')" + "p4c.layout_network(layout_name='force-directed', network='test3')" ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, + "id": "c7f5c1e6-8e32-4e90-b531-38611fef85ce", + "metadata": {}, + "outputs": [], + "source": [ + "p4c.fit_content(selected_only=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "8802c969-c3f4-433a-8cab-c6704fa03039", + "metadata": {}, + "outputs": [], + "source": [ + "# visual style gets always imported with increasing index,\n", + "# later check if style in Cytoscape is already available\n", + "styles_avail = p4c.get_visual_style_names()" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "1b6023ef-b4a2-4cf3-92ef-01419fc5258a", + "metadata": {}, + "outputs": [], + "source": [ + "if 'lang_main' not in styles_avail:\n", + " p4c.import_visual_styles('lang_main.xml')" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "3e27695b-5b26-4176-9bc9-adb91d848025", + "metadata": {}, + "outputs": [], + "source": [ + "assert 'lang_main' in p4c.get_visual_style_names()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4083b72d-f321-4489-be19-6167f13ab226", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "59234fed-cc38-4ee3-9ef8-9180e7785ea5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'message': 'Visual Style applied.'}" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p4c.set_visual_style('lang_main')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2653d1af-b3a5-4da7-9066-0940cb913dab", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fd5fd222-75fd-4523-8401-a4a37c6010fd", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 79, "id": "d972ff5a-e695-43b6-b8c5-ab295fd5de3d", "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABZcAAAHjCAYAAABfDCFYAACAAElEQVR4Xuzd+ZMc5Z3v+/MHnV9u3LhxJ2I2j2fOictFeNgmiDk+2MYHz4zOXMAsAgSWxIhFAsYyGIEwMGMwttg3GSGWlmTQAlpbrVbv+77v+/rc/qTIourJzKrMri2r6v2KeKKrsrqrsquytk9+8/v8FwMAAAAAAAAAQET/xV4AAAAAAAAAAEAmhMsAAAAAAAAAgMgIlwEAAAAAAAAAkREuAwAAAAAAAAAiI1wGAAAAAAAAAERGuAwAAAAAAAAAiIxwGQAAAAAAAAAQGeEyAAAAAAAAACAywmUAAAAAAAAAQGSEywAAAAAAAACAyAiXAQAAAAAAAACRES4DAAAAAAAAACIjXAYAAAAAAAAAREa4DAAAAAAAAACIjHAZAAAAAAAAABAZ4TIAAAAAAAAAIDLCZQAAAAAAAABAZITLAAAAAAAAAIDICJcBAAAAAAAAAJERLgMAAAAAAAAAIiNcBgAAAAAAAABERrgMAAAAAAAAAIiMcBkAAAAAAAAAEBnhMgAAAAAAAAAgMsJlAAAAAAAAAEBkhMsAAAAAAAAAgMgIlwEAAAAAAAAAkREuAwAAAAAAAAAiI1wGAAAAAAAAAERGuAwAAAAAAAAAiIxwGQAAAAAAAAAQGeEyAAAAAAAAACAywmUAAAAAAAAAQGSEywAAAAAAAACAyAiXAQAAAAAAAACRES4DAAAAAAAAACIjXAYAAAAAAAAAREa4DAAAAAAAAACIjHAZAAAAAAAAABAZ4TIAAAAAAAAAIDLCZQAAAAAAAABAZITLAAAAAAAAAIDICJcBAAAAAAAAAJERLgNACRqYWzOHu5dCj76N3weQf6MLa+YTn+dg0OicWbWvAjFzeWzF87gFjc96lszC6rp9FWVjYD7ae0/vbGm+9+h5af8vQUPP95GFwv+fSxvbmbY3e32CxqXRFfsq8q51Ktr9OLFUvs+dQjjev+y5X4PGiYFl+8/z5uuh8OtV1btk1mOwGZwcDL/Ox/ryf1+eHQ7/PvTFxn2Y77chvZ7Ytxs09Dq1mOcVqp8I/1rz6cb6zCznd32ivvaNL+Z3fbpno713D1vvaTpv/0660T2T/Xvi6GK0z9Md09l/ntZ7UJTb1OOcramN2zzic91Bo2ky+9vU9q/ngX3dQUPPrzAIlwGgBH258QXiyUtzoUchPvgCMObMcLTnpj7EIt5+27TgedzSjXLeYfDVQLTt+2hfaW7fel7a/0u6cWao8O+xPbNrnvVIN15pXLCvwvGnCJ8nfnV53vRH2Fn9Qcei5zrSjWIE4OVCO7Xs+zPTyG+c9Z1fXfbedroxGYOdDPY6ZRpzK/ld5+euzHtuM93Qju58+o/GaO+LuQgb0znYGm19chHQpfNhxNe+6jy/9n3eE+097fRg6nuaztu/k25oh0K2zg2veK433fi4K/vb1HuQfb3pht7jsnVlPNptvtOW/W1q+7evN93Q8ysMwmUAKEEKlx850Z/ywq/zO452mEe+6vNcRrgMFIZfuLz90ybPc9IdhMvxlxwu7/qyN+U11348NSopXP7522fMY9+MOPfF7lNDzki+vBTD5StXrphD7bPO/6Tx+Jkxz2Oc/Pjrf45DuHzXW1+b3acHPevmXh4ULr/VFi0ECVPB1NraaqanpwPD5Yc+a3Z+6jOLfrr38Ym2ETMxMWFfHTK4dOmSGZ/57v7dfqTR+antYOfxbs/9r/v74S/anHC5EPe3HS7f/e458+g3w2b7t9uBPeIULj9wuM48fnbceS65263fKGS47Lce7uuVe77Q4bL7XA56Xyx0uPzgkQbns5e9Hu7Id7j8q8NnzJ4LU852476+Jd83ya/NWl7IcFnb9C+Otju3G/QcdMPl2tpa57X886bhxPonv7/Y7/ka+n/frO5x/n6zry/Nzc3m0ys9ieu0b8e9T5OXK1zW7W3mNi9fvmyWlq4e4eP+f8nv/e7t3LPx2pW8HrkMl+9577x54vxk2u8MGvkKl93nsN8gXAaAMqZw+dq7nzA37XzebH21yty67w1z447nzB0HTzjLdPovb73DeUO4aed+wmWgQPzC5X/c81tz15unzc9eOuy5jHA5/pLD5dv2v2+u377Pec29edcL5po7d5st9+11lrm/U0nh8m3PvWf+29aHzfdvv995L3Lfd9xRiuHyyy+/bJ44eMT5n/Q+qyBMj7HeW/V+6p7WZXr8v3fbPU64/MILL5iLFy/aV5c3fuGy1tXdNrVN6jFxL3+pfs7U1NSYlpYWZ+i0vsAfbP7uOvwCGTtcDxMuHzt2zOzYscP886O/dl77tty7x1kf3X87jnU6r4lb7t3rfGb5wf1PO9uR1nvXMy+Zhx56yJw8edK+SqTxxz/+0VTX1n17Hz9v/seTv3NOazu45bFXzM2PHHDue112w0PPmP/59O/NDQ8/a57bv98Jj/LNDpd/uv8DZ1vVutnbqUacwmXdb9fes8dZxz//H1ud57zuR12m+1Lbt04XMlzW8+fajeeUTv/Xv/1756c+9+s+dX+nkOGyu61pO/vrn9ydWKb7zv2dQofL2r7/5qf3Oo+V3zaW73D5tof2mmvuetS5XXc7v27bk9++jzzvvG9oPZzta+O95MEnf21fRU4lh8u6zb9/cJ+zzWjd3O+SyduzGy6//fbbZu/eveb3f6p23hP1t8nvL3rP12u6lum1/O/+ebuzHf7gJ1vN+++/b37zm99YaxLOxx9/bPa9/oHzfNPt6P5Kfv/Vbei8bl+X//iZt8yPH3jMeT3bzGvawYMHzcjIiNn32jvO/eK+Tur/1G3rNrR93/LYy4n7SZf97z0vmH379pn9G6+lm+WGy/q/Hvyk3nl+/+0/PZi4neTb03rkOly++pq233k//rN/uD3xmTb5+Uu4DABljLYYQDz5hcvpBuFy/GVqi7HtUE3K+UoKlzONUgyXxW6LkfwY24+3RhwqlzONMJXLCmT+7Ob/5Xy51BdOBQbul3j3d8KEyy63cjldFVbyoC3G5tEWI7fsdco0ChkuhxmFDJeTh9/ro0ahw+VMI9/hMm0xsn/v92uLEbR9aWTTFmP920bvm2mLoZ202YhbWwy/+5hwGQDKmCaYesrnDcFv6Pf4wgYURtPEinm6xvs8DBrfFCGUQjQfdYb/kqgQZSzPE/MUk74EPRVh+/6qY9zU19ebgYEBZ2JZTZIVZmjyqpX8ZhFp6Xlp/y9BQ8/3fAcVfjTxkHog2+sTNN4POHzXry2G35dLd0QJl6PsjPj3jfsxFxMyVSrNl/b8Fe/9GjRebpi3ryJvXmsOH/wpRF1aK/5rqCr97XULGs/XzZs8Z8vmYEv4+/DZ2nkzn+cVCmp54zf0OpXvyToVZtq3GzR+ufE+rYnR8ylur33nR8IHmHqPt1/nGzbOR/lsq2A4Wy1T0W5TE4dmS4+DHg/7uoOGHudsaUfxLyPcZi522mtyZj0P7OsOGmF3FhAuA0CZ6e3t3VS/KaAcLW1849YHTju8ChqdWXzAb2trc/q1qm9bsrq6OtPQ0JCyDKWrp6fHTE1NJc739/ebvr6+pN+oDIODgyn/t/rsLi76B5hjY2Pmd42zni8s6UZbDmZhzyWF5KViYWHBeT0Ko258xbzRupgYr288Tsnnk8e77YvOzPa5oNdF5IY+9+lQ8MnJSfui2GpsbLQXFZ2qF9UyRu/j8/Pe8D0u7+Nzc3PO621c6DNPXO4bWVtbcx7DOFFP3zhRW6Rc03vO0NCQvTivOjs7nZ3XhdTd3V3wz3x6jddnz0LSZ9uuri57cVqEywBQhuL2oQooltap4EO//MYfWr479EuVF3b4HDSON/Sa2dnZpFu+SqGaPvjG6YsXsuMXiimQKKVgJ1sKke37QV/o023nr/tU3j1wuD5x2u7tq6qlOCmlcFnsxyeszfSr3Ax9aZ2ZmbEXIwIFHHq8xsfH7YtiL91rRaHptaupqcl5zgTtIJO4rHPcgkptg7oP40Kv1cvL2VeU5oo+H/jtrCgWvfbm6/OKAubh4WF7cV51dHQUPGDWfVjogFnhctwDZsJlAChD+pAcpw9WQLEooHLDqp+/fcY89s1ISoBlz8r8+2/DZR3CaQdh6cavr/h/cXADnrh8KUV2FDzoi6Ifd7bxShA0cV26QDM5XFYvX01e8xc//NfEBEfuxHnu78QpXFaluiqHSonWN2qAoFBAFemFoCrRUgvs40Jf+BXoaedlqcrne+Lwwpo53L0Uenzd3BPqM3M+1zkshWiFrg5NRzs2Ch14paOd/FR1B1tdXc17AZLufwLm/ChGwKz/MWzATLgMAGVIHx7i9GEGKJbkcPm2594zj54ecmZ8Vpi1/dNGZ1bmf/i3FxO/87umOedw3YuN7c75u9762uy5MOUJk+2hHod+3PCE52NuaKKnt9u8h+sHjVz3m9fjqNdXPwrLFLq6E8OUKz0/dFi2HwUNCr78+FUu2yO512+cwmX9z6X4uKYL+/0UqmrZFXX9ytWFkRVP4Bk0/tg6ZYZHSzdUduXzPVGtsOzXlnTj05D9RPO5zmHFrWo5H+0VshG39dFrapzeO/SZdGUlt5+L/FDBnD9xDpgJlwGgTPGlDUgNl8MMt3J5fPFq5fK19+wxf/uzB5zTCqRVWfm92+4xW+7d4wwtv377Pt9wOblyMA5fSstBY5oZrv2GAuZcyvS6qiqluH35zyVVtWaq4PW7j/Q3B5ui9VzunonXYdalSOsd9nD1QlYtu3R7o6Oj9uKKownh7O0/3VBlbqnL53ticricfGRS8mm14XHPl0q43NzcHKv2Cup3mzz/QLFpx2ahA810dGRBpvfLQlIborC9+HOhkiqYg3aq54vC5UJvW2ECZsJlAChT+hChD35AJeubXfN8MU833mu/Gka64bI93MpKfSlN/qLqFy4nh2zF/lJaLvzC5bvfOWt2nxrcGEOey3IZLutQ5JGREXuxh3YoKATIF9VAqYI7zJhbyV3FlF+fZT9qG6KQXYcnK9zU3+g+WV5LXe8L9S2e9XXH9HLu1jsXSjVcjjKxX6Grll1htqly5xcu3/PuOfPIV33mwSONnssIl9N78JcHzDV37ja37nvD3LjjOWfH8Hen9zs7hNWG59q7n3BO3/XkC/ZV+MrnOmei1984TYJYiPYKUcVtx27cqqiLsT7FCpgLvaNU37cJmAmXAaCsxe2DH1AMsyve8ModZ2sbzcTiWuL86reZlkK5p2tSv9CnGy81pIbL9uRmxfxSWk78wmW1NvmX335hvvfTez2X5TJcjhKC6UtGvg6V1KHx9v+ZbnTO5Ka9RHV1dcbDe7XdK1z+4osv0u7cVNic7gtKnKj6rNBfVHMpzHZbjKplV6kG97nkhssKRPVTYegtj73s/PzRvjedAFShqPucJlxOrxzbYlRqe4WwNNeMdqbFhQLOOFV16/NImJ3j+UDAnD9xC5gJlwGgjOkNoBRnEQcKJV010LxPKD02v2JqW7tSlp253GD6hlI/tLe3t6ccvlrML6XlxC9c3lsd3G4hV+GyqrSCtpNkqs7tmll1xtdN3aZ1fCFx3h69s2tmbRNZgXpOJ/+PqsDbc3HaOZ1cTe+OuvHsAwD976pEDqLWBgoxtZ3rC36mQDNuFWbplPpzN8zEfsWqWpZSnCwx1/wql9ONUg+XFUrmc9K1po33iSg7h88Nh3uNLNZrgV5f4/QcmZ6edj7jxEW6z3HFoM8Lmd4DC0k7JYrxntuz8RnnzW/nyPhdw4xnTozk8dbG7+kzUbb659ac6wpzm1o3fRbL1uD8WmIukIy3uTHap7O/zdGF8LepkYs5LHRE5zsZbpNwGQDKHNXLQHpR+xj6fcHUjhw919z+pvYXC7+/QXRDGx/iVSX+Yn36caBuzvn5Zf+yfRWb4rZ6yOSL3mhVxdWbmHDQDpd/uv+DlEPA7dvINlwO6rOs+0Nf6LWt2xVCCkPsZS5dVujqnmyUQ2Wt/XqUTBVlhe5RaUu3fpXgD83hw+Vf1c47R+OUsomJiaJvc6KJSXVEhtrIhVGs9/FitDNIJ27ro+A0TlXdej0Lmvi3GFTVrQC+0I71RTuCIBef104MRLvNqt7Mn+sy+SbikRJHurO/TU0Ca19vuvHHruxvs2Ys820SLgNAmVNwFiYUASpZlKqOoC+Yy8vLzvUoaFYYmSzobzZD1dInB5dDD1VVVBpVVik0yNVrX9jw6z9PNZlfHG13PmTbPaAf+qzZ+ZlcXXxmOPqXKTtczjROtY8490cQVdHY20zyONw0kjh9ceMLjQ7D1P2hbTzdF+ig+yzKcy0OyiFcTjexXzGrll3aSRG0fuVMR5bp/o9D0FpI2lkVNtAtBL2WZepNru1TIV2hqUI43et3oemxi9MknGr1kK8WVJuhIzHUkiEudCRRMbZbCQqX7zh4wmz/tMmzPNtwWd93P6rpTlyfPZmnJvG0P5cpXE7XwiuMYoXLd731tdlzYSpxvfr/9NPvCLZ8hMu6/SfOT6bcPuEyAJQ5u/crAC99udeEbWGkez61Ta2aVy/0mo/a55zeuO54v2U65bzG5z1Lm5pwLeoH2bD9JMuNKpkUcGYb3KilgF/lrp87975g/v5B9Ud93mx9tcrplfq92+4xO451Or2hr713j9PGQpXGW+7ba7btfda+ioyihsu1o0tOpbACRm277k/dLwqHX4h4SH7PeHB7jGT6oqcdLsl0m4XuvZgNrWucgpTNUsDg14YgDlXLEmXiwXKgyl2FymFfV8qNwq44VZqKQkHtkAw6ikltgbq7u+3FeaX2IUE76YqhWO0V0olbFXXc1qeYVd1B4fLPfnPY3PrLg57l2YbLH3/8sdn72gfO567kyTzdCTz/7l8eTnwu088fP/OWuX37Y+aDDz6wryoS+zP5DQ89Y+5687TzOe8fdv/GPHZmNOXyXIXL196zx1xz16Pm5l0vJP7H5IlL9b/rpz5r5itcdu9L/c//8+nfEy4DQCWI04dTIK7CfmlKFy6rh5v9gTndaJgIrvwMkjxZ0a4ve53hnverWKjUcNnlBqub/YIV5fXzkwiT7W07VLOpymX1CEyuLP60dTxx+rO2iZTLTm0M9Q73o4BLAfD+K99tS/Y6+o2w/V4VjNh9MMM+x+KiHKqWXX7bcRyqll1+61dutKNK97mq/yuZ/boQJ1o3v8pT7WTKx4Ro6vds73h2xwetM+bjrsXvdkj3LiUmHc4XBUj2erjjw7ZZc6hjPnH+s43PFgt5XiF9RrLXwx1al+Qd+QrtZpbzuz4qILDXwx16rPSYuef1eWBsMb/ro77G9nokD7uwoZBHsgWFy0Ej23BZaIvhHfqsmY9w2W8QLgNABVDFhd+HZQDfUf9Fu52Fn3Th8h+arn7Auvuds2bXlz3mka/6nPMKfX9xtMM5nXxYXrbh8m37309USPzg/qfN/3PHI4lKAvd3Kj1cFvUbVFVa1MOLFUhHCRh1X9sfttONsBNJBdH6JffV30yI7k4mpm3Jrah2t6Hkyhd3ncOGy5IcGCpQU6BdSqI89nGnKtnk+19BWRyqll2qrC5GX9BCUFWsQuVCV77GVbr30GLTvrjzfdPmT82DpnZsJTG+7powFwfnU5ZpjER4PfQTt8kc/7NxwXOb6UYuJkRLRxOg2beZbmzmM1UUH3VGWx+FgPkUdZ4H7XQuFD0/wk6sqd+7kuX8EKLH/98j3KYC02xpsrywt/lUTW62iY7pVfPLy97r9xtPbQwF4NnSjox9GW6TcBkAKgQT+wGZ6Utvpj696b4Y/0fN1Z5naoGgsE7hnA5T02FrP9r3pnP+L2+9I/FBbDNfhJLD5TCDcPk7qtSN0l9PO+W0cy6Mrq4uc7ml0xM+aHzVOuxZppFt1ZcOL0/eXtXHVOsRhR1uqMrF3oaSl51v6nDux7GxMfuqnC+6yTOHv94463taQ1VU2f33+aWQPt1zvRQlh/3Frlo+1LkYOBGnPV5vXjDL+c3UItH+m1cawodwL9fPxXpbL7Q4P69ap1Y9j1+6ofAzG/brr4bfEUjuKGS4/PO3z5jHvhlxdpLv+HbnuD0KHS67O+7d8/Z9tZnPVFG44bLeE39RdXV+BXs9kk/nIkhMJzlcTl4nu7ewOwoZLqPyEC4DQJlaWl13PvS5o7pr2DQMTacsc0f/XH4/rAKlQoFSptAl3RdjN1zeWz3r+VDvNzbzRejSSLRKla8G+DKRTKGo+iKmm4zOFeZQffWK1Taj6sQg6baZzVLbCb/K2jDrLPr/VS36cr033Eg3ppbWnefJ4OCg83+5fZwVdNu/m2kEteyIA7VTKbVK62TTy+vmrbbvwnyN3zfN+Z7WOF3g0OFXtdG2u4ml+GwrSxsfmez1yzRivKkn1I2veCb0DBphQrP6gJYG9qH6Gjo8fWmt+HdS8+R34fIDh+tSgkK/CbMOtizYVxGJGy6r/6t7xMh12550jiJx+8Xq6BH39goZLt/23HvmZy/+0VmP7//sAc9RLBqFDpfdHfdX75/95tq7n0i5fDOfqaJww2XdNz959p3A/r7uYxbmeZKN5HDZXSfdNzc8/KzvkUeEy8gnwmUAKFMfdEQ7dEvVGgAyz4YeFBTqMPP3mr+buTnT0OFxOswsLE2OphBPQ30FJ5cyDwWB8NJEp+r/m+5xVpuU9vZ2e7FD4apaqOiIkDCVzerjGbVdRSbaDhQw27Re6arv1QpBAbS2Y7UhWFz9bns5W9vo2YaSx2yGhMzexjONOIfLfsF9KdFhs/b9nW681pRdSBaVGy77Vfy5IV7yiFu4/NBnzZ71Tnc6xpt6QqZDnu2Rqb/tb5vCV3dr5DuoDCM5XP7p/g+cSlkFhmo7pfDODjRzFS6HHYUMl/2GfWRLvh8zO1zOtOO+UOFy2FHIcDloJD9mhMvIJ8JlAChTqlhK/nDx4JEGs/3T7yrL7EOmVGEC4Kp0M34Hhct2xagqZHMxcZOCQgVdCijDVNsiPPVAVcWtH7/+xQql9TjosV5YCB8qqFWFwupcUSgctN7aRuwJsxSA6//Revu1sxBVYGdbqWt/qdVQ9dTNjxzwLNcodrisYF0Vu3ZVpoY9OaJG23TpPP+Sw2XN6r7nwlRg8KlRjHBZFXaq0nTbB6n6z511XoGeWgi5FYBxC5dVQbnl3r2J9XYrTPX/JFczutWoRd7UQ7F7eNrbiIbbHuHBI41OdXw6QUGl3/Vq5DuoDCM5XM4UZGpkGy7b4Wm68ezGc2YuzxtSlPD0V5fnzXieJ6wLE566Q9tvvo/E1PuAfbtBQ3142/P8nhFlYjcVNOjoBCBfCJcBoEzZ4bIOkfqbn97rfPnRF7rkCb80CJcRVzpU1m7lkm4oMMqWJn4LqloNCpeTKx0VSqYLqMNQeKkwUCGiQk3knr74Heue9Q0S7WUn+hZMTX2jU0EelSqkVdmeK6qYtoPvZNpu3LYXOq0+0+l+f3h4OCeTjdlfZjONKOFy39ya5zEKGqc2RqaqSonaX/X3WQZJhZQcLl97zx6z83iX+e//e4cT3moSUDcEdX+nGOGyff+mG3ELl+31yzQibOpF8/fbrk7m6U7q6W4j+tzo/rzj4AnnM6TmEPjFvz3qvB/q9cVvvFL/3f+v7e7P/3FrSuiu5cktH+IQLket+H+nLbuey8nCTipcKO7RUnGhz0GZ2pYVmo6AipNsP3cC2SBcBoAyZYfLmQbhMuJKQZG9vaYbueoxHNR2QIGdHTCqQjm5564CvXStCdKZn593wkN9yUwXCCJ7qjqzt590Q1Vtm6HHNOpEe0FUhawq4yBqe3Hy5Elz4cIFp8I5E3cnRi78YeP+tCdjCxqvNi2YKPuBPoxQUadRPep97trscDn5CB/76B6N10s0XA4zCh0uf9aTOvljUG9ojXfbF2MVzur5/EHThGe9g8bnvZt7Lyi07R9fPXzebn0QNDZbuRw04hAui3Zk2Tutg0YuK4njFlTqc0icdmzrM5n92auY9Bktl0ckZUufMbI9+gjIBuEyAJQpVVPYH9zTjUbCZcSQvmwdqh90tlEdSht0OK2W7/qy1zl9rC83X+RV+akvV7a+vj7P5G3J4ZyqQNW3OSp9SVFVjsJrFIbCUM+29FVf4tBve2w2XBa7VUU6IwvB4cbXTd0p59WD06/tRZjAWDsvLl68aC+OpQ+/nUdAz/Pk14Gdx7ud83YY/E3fbKKCUve9Krp0Wq8pqrbU8+xEY0/K3+gIn62//cJp4/E3/+s+Z1nyUT6lFC6r37rCPQX5B+rmPOG+vfzL/viENmG23WLQjhi9J5Tra/QLEfr/6pD/TEcJaaeA/XdBQ9c3mud+wnGmCVI14kIhZS6OZskVvcfF6Xmn4oGgo9iKQTsB/D6vAoVEuAwAZUqBQ+3Yiu842zvtDPf8lfEVs1y5n+kRYwcPHjTX//ifnS+fOpT2L374r4lDdhX6uKd1mTu7+r1PHzD79++3r2pTVAkyOTmZsmx8fNwMDQ0lzif3uHUniotiZmbGCZXTVaMiP+xwecu9e8z3brvHOfTbPQw8+fJswuWwX0TX1o0TtNjhS9B4euN3O7q6PVXuYQ5n1na32Qr7QnPD5R8/85bTP9h9fG557BXndUGvBwqF3TBY4bKeu+n+P7tyOdMopXBZFIZq50HQfaDKdl1ubzvFFmbbLSTdT5VwNIlaUNmTeAaNhQzBchhqPxX2dbHcRf3ckG9xa68Qt/XReydV3UAqwmUAqFBx+yAL+NEXeVXUJQc8yYfs+h2+m6vKZZf9pcZucaBqGrf9gL5w+LXS8KPqZ/1+R0eHfREKxA6Xgyrj3VGIcFlHWdu3q2pdt2LXbx3VA9am4CZd5Zm2u6DJ/eLIDZfDjjBtMTT501M+fxs03m6e2dRRCcWgPt9hKtkUSKiFSpyCEr025mIy1GzpdV1V1M3NzWUdKheTttM4VaQWQxzbK9g71YtJrZ6Sd+gXmwoM4vD65IpbVTcqF+EyAFQoHX4Xpw9rQJCoPZePtE46gYC+AOSCfXioQgZNsudyD+HWFyCNTHR9CpVz1YMXm/dRhD6+CiHPt/RmnBwvSDbh8m3733cmw7r73XPm+7ff77ncL1yWoPYCCpVLbaeG+tba/3e60RRyR4AmFVQlZtfwhKlr7/FUaCYPPewKXRTaqlJMlcFxpG00yuOrHWIKmHUURlwEbbvZOrTxnLfbgwSNl+rmzPRSfO6TcqX3zUp9P4xbe4WgdmDFFLdiGLvgoNjitj6oXITLAFDB4vaBDfCjw2/VusVu7+I39Hvu4br6wqoASKO/v9+61mjsiW3cL4MKl9TOQuFMplnMFejpd+JU8VLpnLDw2+Cwb3zG1LZ2eQJFdyiElOT+xlF20IUNEPzC5UwjKFxWxaV9qKzCjEzbahzp3rcfE3d0DI6Ztv6RxPmZDBON2TZzn+j1QNVi2g7iVM2s9RkZGbEXZ6T/RwGzvb0Ui1oN5SPsPlAfvq+wxsB8wJMLOaUduNm+T5cive5sZmdlvgRNZFwseg/T0WJxoR139pwbxaTnjOb5AOKAcBkAKpg+IOWjWkSfk3tngyeksocb2gD5omphN2jWl4Ooh4ArcEnuA+oGhW4Aoh01QUGIgh59gdREgIivS5cu2Ysy0mOrME/bhnpnpxM2XFbPZfVRtkOuoPHUxu+OTfp/2VVIkFxlL3HssZsLUcPhZNneJ3ovdauZFYRoB5cdgAcN9bnNBb1G6f/IppraneDRbfNTTFqHfPShTw6X/VrM2INwuXD0eKtNRqXQDuc47ZjSe1g+nnObpdeAKBPh5ps+4+XriIrN0Os1RUKIE8JlAKhw+aia0OHI9he0dOODjuJ/kUXlUOWpvrDoS4J6HYat1NOXLjdAdINCt2rRr3JEVa16foVplYHi0nag7SIb2lGn7aGpucV80btkDnenjg9aZzzLNL4e8m5/2ulmV+UHjc6N31U1vG67rrPfHLGu/73mqcTpD9tmzaGO+cR57QQsFwr6N/NcUyicTSCbTDutmts6Ik3I+Hxd9lV52nmmkCFX7+Xa0RKHasF8BDnJ4bLazGhiSHeCWL9JPAmXC0vvzXGqDM2nuLUziNv65OP7STb0ehSnqm7tOM7VexeQC4TLAFDh9MFEh53lkloTJH8506Rrv6hqT5y3q4XebiNcRnEoWNb2r4pDfanNFKi4X74ULusLsPqa2gGIAi59KYrSMgHFo1BZ4XKujM6nvv5lGs/Upt/mojgzFK0/+SfduZ38stiiVi/r+ZvrSkm15LDvZ43k970dSe+HCqKzoR0L+ZjMSa912e5wyVbyZKm5QluM+NPzOE4T3OWDXnviFKLryKrNtNPJF70ux6mqWxPktre324uLRq+L9lFJQLERLgMAct5jzQ6Xb3vuPWcyKp2+dd8b5sYdzzkVQu7lhMuIA1UdqmWG2+ZAE3fp8HZVlp4cvDo+b580f+qdN5+1TZhPW8fNkZYxc2JgKXH5udZ4fUFDZptph5HOxFJquPjQZ83OT3unmjvyES7v+rLXGe5t+N22lpVbuKxAImzfVv2unu+55obL19y526mCvWnn84n3vb+89Q7nsr/+yT2JKtlswmXt5NLkvPmiqu5iBmA6DD3Xh8Vrgtg3WhdDDR1Vlau2JYimurra6YVejmivkFncqqjjtj65PFIFyBXCZQBAzj/o2uFypkG4jDhS1czJ1iHP9ppuvMW2XFLU6kQVSblkh8v/uOe35tp79ziH4Ctw3HLf3pSda/kIl2/b/765683T5uZHDqQEm7ptrYN+R+tTbuGyhKle1hE7Ck7zIahyOWj4hcvt05nbonzVOmzO98+a5kn/Xu+5oh1tartRLLn8bILS4fb/DprLIO7ODa94WiC5Qy2SPu5aTJz/vGfJrOS5QL5mLHh97HZJn26sT77nQmmYWPWshzu0Llon97xaPU1HnKQ1qrbp4PXRY5Xc1krvm2OL+X3AembXPOuRPN5vmU45zxEWiAPCZQCAQ4ef5uowRH1otL9ApxvvtRPIIZ7sbVmB3KPfDHu2YXe8SbhcMvR6l+uWQGKHy/ZQm6Dk8/kIl4OGfdvlGC5nmiTLDa3yJWq4/MvL3vfdKBM6aiyu5jd4UfXw+Pi4vbgg1PajmNXTKB4Fy/l8rubTC3XR2q8M5TkcfLVpwXOb6UbndH5Dfe2It28z3aifyO/6/LFryXOb6cb5kdwd7emnqjfa+nw14J27ASg0wmUAQEKuDotb3viMXDe+YmpGlkxVfa+n4soe+a4AADbLDpd/uv8DJ2D+qx/d5VSGulWg7iBcLh25bofhUtD33JXwwcLrLbmbkMfeXjMNtQgoR+mql/U+l+/D7S+MrCRa5WQaOtLHZj9OyW1N/Fqc5KvK8KPO8AGQKrDzVT2n6mlUjjPD6XeS2UOfI+PGDZftFkW7T109GurBI40p/0OxwmWtm99rSiHD5bvfObuxHj0p95NG8noVMlx27xN91tt+pMn3/ilkuHzXW1+bJ85POqfVr1/bkLsduYNwGXFAuAwASFC1l6q+ckETpZXyIY2ARA3rft806wQh6oWqaj93aHI/PScQD5pMST21UZ7UxkEVrza1QSlWBW4Uei358TNvOW1NdPqvf3J3oofztXc/kejX7L7u5Ctcfr3ZP5AKGq1T+Xm/pzVGZfkiYtWmdtLEjRsuq0XR9356r9n6apXTf10/9fz90b43nZ86r98rVris15k9F6Y8ywsZLqt1lO4nvd5tuXePM3TfKNx1f6eQ4bLuk4e/aDU/fPp1c81djzptpdzHzf2dQofL7nvB/33jT511sdeHcBlxQLgMAEiRi+plzWKsYJnJJlDq9AUr+QtXpqFKP5ueB9ppo9YzCp41koNnTciVrpJSPVV/Uz9vXgwx9HuNee7BWurUbzfXk4Qhfuzq5eHhYdPd3Z2yLK7s15VMo1DhslvB9+Dhes86aOQrXNYkqXr8UBnShct+VaRxDpfDjmKFy0GjkOHy3urZxGk9vn6PcSHD5TCjkOFymEG4jDggXAYApBgdHTV9fX324tBmZ2fzdrg5UAzqoTq5tG7q2nvM8W8umAv1Lc55d5yuvmLGF1ad02ubyHhUSRkUPA8MDJhjPdG+FB7r40tGOrw+lSd9uU7e0XKgbi7w/EsN83lr4ZALv7ocPphSf+alPP0rdrh83bYnnZ9/+7MHU6rm3JGrcLllyju5lj2BlTs0+Vi+J/tCYdnh8n/92793fqryV9tgcsWvRhzD5Sg9hZ+tnTezedpB5IoSnur1J9/t6qKEp+pL3zeX3/U5PRi+FYtaALXl6LUuSPXoinnK57b9xlMb6+PXXgkoNMJlAIDHZquXNenOlStX7MVAydNOl6qqKrO2tubp/7mysmKqq6tTluWKDu//rH3a82VC48EjDWb7p02e5YTLwbq6ukqiLQKiixLmaOS7Ei4bU0vrpmtmNdQYX8xfKKV+4Pb9lm7kKlx+J+JjSbBSXuxwOdOIY7gMAJWGcBkA4KHqY/WmjEKH/avPLFBu5ubmzPHjx50evTo8W/2TbfqdfO1Y+bLfv6LmhoefNVt/+4VnOeGyP7XrsXcMoHy8cKotcOK7x8+MeZ4ncQ6X46Jp0ltBHDQ+710yC6u5CbrtcNme6MsehMvlpX9uzXzis435jSMbY2Qhv1WtAIDMCJcBAL4UlKlKMwyFbS0tLfZioOSpKvnUqVPOBHCSLpxUlXE+ngdB4XLQIFz2V1NTQx/4MnbHr141//1fdzqHzt+67w1nEqYbHnrG3PXmaWdiKB1K/73b7nEmwtty317C5Rizw2VN9qUJDfW42S0RNAiXAQAoLsJlAICv5eXlUJXI/f39ieANKDfnz59P6dGbLlwWTc6X60nDOqZXzRuti6FHvnsBlqKenh6ntQnKV5S2GNsO1RAux5gdLic/bvYyDcJlAACKi3AZABBIE4rpUPIgCtFyHaQBcVFbW+uEy6urV0Mo9erVzpRM1NfXr3UGikM7yurq6uzFKDM1YyueHS1B4+22RTOxRBV7XEXpuavJtbpnwh1lBQAA8oNwGQAQSIeQB/WRbW9vDxW0AaVI7S207SdP/papajlZc3Oz06MZxacJSmmHAZQHdhQBABA/hMsAgBSaj6dndi0xE/3Z1j7TOr6QMjv9xc4hU9Mz6pxeomAIZaa3t9cJl1tbW1OWRwmXRZXP8/Pz9mIUkB7L4eFhezGAEqXJhhcWFuzFAACgiAiXAQApLo6seA47TTd0+CpQLsbGxpxQObnPskxNTTlBZVTV1dXOpIAoPN3vQUdeAChNmmhYLbsAAEB8EC4DAFKcGVr2BMiPnxlzhr1c45NuwmWUB1UZK4xUxbH69CaLWrXsUhBy8eJF2jIUgdph6P4HUF5ojQEAQLwQLgMAUiSHy1tfrTLXb99n/u5fHjZ3v3vObLlvr3P+pp37CZdRVjRpn6qMNUHlyMiIffGmw2VZWloyNTU19mLkkfrBDw4O2osBlAEdRaKjSQAAQDwQLgMAUvhVLrtj26EazzLCZZQDVRdrAr6mpib7IjMzM+OEztmYnp42DQ0N9mLkgXYUqPocQPnKZocfAADILcJlAECKc8PRei5/1kO4jNKmVhhzc3NO5bIfhcK5aGsxOjpqOjo67MXIMQXLCpgBlC9aYwAAEB+EywCAFAur6+bK+IqpHUsdX7UOe5ZpTC1lH7oBxaLJ+8bHx52gYnFx0b7YkW2F3EsN856dMkFj/5V5s8JTatPUCkMtMQCUN+2sGxoashcDAIAiIFwGAITS1tbmmeQMiLOlNWO6ZlYDx5X+CXOxc8gZV3q8fZZFFc3ZVhvbAXKmMUe6vCmavE+T+AGoDFQvAwAQD4TLAIBQVA2onrRAqfi4a8kT3KYbDRPeVgqNjY1OaJmN5Nt48EiD2f5pk+e2HznRnzhNuOxP98o3Q8vm5KD/+Lx90nzVv5g4ryMwAJQvHVWSi5ZFAAAgO4TLAIBQFCxzuDlKyfsdi2bXl72J4Nb+aY/LY94wMtuWGJJ8Gzc8/KzZ+tsvzPXb95mbdu43N+96wTl997vnCJczGFtc9zxm6cavr8zbVwGgjGiy1a6uLnsxAAAoMMJlAEAoaomh1hhAqVC4/ONn3nJC3K2vVpnrtj3pBLnfv/1+s+W+vU4AedPO553Ldd4OlxcWFnKyzduhZ6ZBuOxvbHHNuX+Sdxi4Q+fdZXe/c9b5SbgMlD9aYwAAUHyEywCA0BoaGuxFQGwpXLaDW3dsO1TjOW+Hy01NTWZ11dsqI6rTg8vmcPdSqPGnfvqaB3HDZe0w2HNhytlR8L3b7jG37nvD3LjjOaf6W8v+29ZfmMfPjhMuAxVAr9MrK96jTgAAQOEQLgMAQiNcRin5IE247DfsHr25aImB3HHD5bCDcBkoPx9uvK6/WD+fGAfq5pyRvMwdb7QumjUOBAEAIO8IlwEAoREuo5SMLqyZ2rGVxPiyZcj5+fHFVnOibSTlMgXLS6vfpRBLS0umtbU16dpQbGoX8ssab4gcNP6zccG+CgAl7qkIrwEas7QZAgAg7wiXAQChES6jVGnSp/HxcecQ6tnZ2YxVyc3NzRxqHUOLq+tmcunq+PpSnekemTQtvUOJZcmDTAkoP264vPvUkCdItnuxEy4DAFAYhMsAgNAIl1GKFBJr0qeRkRHT09PjLMsULme6HMXV0tJipqenndek9XXCI6BSuOGyJmm95s7d307K+nyi97r6rmuSVsJlAAAKh3AZABAa4TJKUW1trVlcXHR+ujo7O83c3FzSb31HYbQqlxFPqkDv6OhwTrMTAKgstMUAACB+CJcBAKERLqPUqFq5r6/PXLp0KaXCdXV1NTBAVq9l9VxG/KytrZmamprEecJloLJoolZ74r6gwYR+AAAUBuEyACA0wmWUGgWRCounpqbsiwKDyaDlKD5Vn7u9sIeHh83o6Kj1GwAAAAAKiXAZABAa4TJKiSbv6+/vd1pg+PELkVXRrL9D/PT29jqBssvv8QMAAABQWITLAIDQ1OdUvWuBuJudnXXaXly+fNm+KEHB88TERMqy9vZ2s7CwkLKskrRPrzqHkocZb26Mntk1+yryYn5+3rNzi3AZAAAAKD7CZQBAaIODg85kWkDcqceyWmKoEjmIejATWKb6onfJMyFWunFyYNm+iryorq5OOa/ey42NjSnLAAAAABQe4TIAILTp6Wnn0HQgzrq6upyKZbsq2U9ymKzA0g6bK43C5TsOnjDbP21ywuNHTvQngmT39I6q9oKGy2pTMjc3l7JMr0N+fbQBAAAAFBbhMgAgNFWBtrS02IuB2NBkb+fOnTNtbW32Rb6Sw2T1ZrZDzEqjcPlnvzlsbv3lQXPNnbvNddueNDftfN7cuu8Nc+OO58z12/eZv/rRXc7Pra9W5T1c1oR93d3d9uKKrzAHAAAA4oJwGQAQSaVXdiLeVLFst1BIR21e1O5FCCzj1RZDO7OCembzWAEAAADxQLgMAIiEcBlxNTw8bL788kunejkKBZV+/ZcrUe3Yinmxfj7tOFA3lzjdPBnc0zpbCpb9embr8dVkjQAAAACKj3AZABAJARzi6tixY04bhXTealv0VN8GjV9dnjfTy+v2VVQ89UDO98Se6pt9pG3aE2z7BdwaLzcsmNGFNftqAAAAAOQZ4TIAIBLCZcSRWmFcuXLFXuyhINIOkdON/jkCSz+NjY2hJkzcjNnZWSfAfr1lwfN4pBstU94qZwAAAAD5RbgMAIgkarg8srBmumZWQ43RRYK8UqYq38mlzGNmE9XAvbNrTnWqXcHqjudrZ1LO14z5t8bQZfe8d948cX7S7D41lAgmHznR7/xMXqZBuBxMrwWTk5P24qy5PbPdcPnnb3+z8fj0JR6nnce7Ux6znce7CJcBAACAIiFcBgBEEiVcXl4z5ukab4Vh0Pjl5TkTPXZEHJwaXPY8nulGUPgb5PzIiuc60o0/di05/XrHxsZMe3u7s91qqJ3CTTufN49+PWz+5vb7zdZXq8w1d+421979hPPze7fdY2546Blz15unneshXE5P/aqnpqbsxZum61tYWHBOu+HyT379rvnxs2+bW/e9YW7c8Zy55bFXzJb79pqbd71grt++zzmv3yNcBgAAAAqPcBkAEEmUcHlxdT1RJfr4mTEnAHJ/ulWH9uk10uWS9J9f1ZlfVLU7j6Fd/Zs83Mf6k/p++yrSCgqXk7ed5PFey4xpaWlxJvlbWlpKXA9tMXJP7Uimp6ftxZENDQ2Z3t7exPl0bTG2HarxLCNcBgAAAAqPcBkAEEnUcNmtEv27f3nYqTS8+91zTrWhKhB/cP/T5q9+dJez7P/4f29xAiLC5dL06Ksfmp88+45T/XvDw886j/tNO/c7FaY6reWqEr5u25PO47/tqRec8Lezs9NcvnzZ1NTUJM7rtEZra2vifFXLSEqQqOt0tyP91G0lX67KZT8XR1fM4e6lxHivecp80DqTsswdn/cumRWy5VBqa2vNzMyMvTi05eVl5zqSnRteMQdbFszvGmbMG62LacfbbYtMvggAAAAUAeEyACASTeS1vh4uxFG4bFcXZhqEy6Xps54lz2Op4VdhqnF6cNm+irSCKpeDRlC4nGx8fNz09PRE2mGCYNpJoMn4NuPSpUtmbS01ydeEgdqxsLISrYUKAAAAgMIhXAYARNLV1WXm5+ftxb6W1ox5yif4Cxrqzxwyt0bMfB4QLgeNqOGy2lO4VaqvN84mTv++ac75qQrXPzTPJ5bXhujprDBUCJdzR2Hw3NycvTitjo4OJ0hOpqp1LQcAAAAQb4TLAIBI1MN2dHTUXhyofXrVCfqq6nvNpeGroZ87/tQ8mHK+c4aeqaVqcH7NnBxc9ozP2iY8yzTGF6PvRVDFvCpck9svJAfD1dXVziR+YahiWZXLQricW3qMwu6A0mSACpJd6o+tv8/lJIEAAAAA8odwGQAQiQ57VzAXhcK7sbExe7Gpq6uzF6HM5Cq4VWuEixcvpkzOJ8nXr2BZv5OJQmq3v+/k5KQZGBiwfgPZUkC8sLBgL06hx0E7BFyDg4PO5IBh2+4AAAAAKD7CZQAoA6vrxrzevGBerJ8PNTT51WapL2pzc7O9OJACZAV4fhRUc+h7ectFuKyQUqGx3ZNX7OtXxWymnRZNTU2J4FNVs/T0zQ8Fx4uLwa81epzcnQX19fWmr6/P+g0AAAAAcUe4DABlYHYl2sR5T9VE64lqswO9IOq/mtzCwI8qFVG+wm4rQdQewe2N7Mfv+lUl397ebi92KMzUpJQuv79HbqgC2a/aXPr7+52Kce1gUgidqcoZAAAAQDwRLgNAGXDD5Ue+6jOPnOhPCZIfPzPmWZbvcNntjRum76oCpig9nFFaMm0r6YyMjKQEwX6Crr+3t9e33YXaYSS3XQj6e2SnY3rV6a19YmDJfNI86um5faRlzPn5x4YhZ3LHBR1+AQAAAKDkEC4DQBlww+Wbdj5vrtv2pLl++z6z9dUqc/OuF8z3b7/f3LjjOedyLb9p5/68hstqXRBUrRiE6uXylW5bSUfhcJiWKemuX+1bkluy6HRXV1fSb6T/e2zeG62LniMm0o3myXATMQIAAACIF8JlACgDcWmL4U6oFrWHrfreclh8+dH2EKU/t0stLcL23w3aFl1qqeH2/bXba6iCOVNlNDbnYOuCeeDjK+aBw/We1x8dYbHjaEfKsibCZQAAAKAkES4DQBlYWzfmw45Fp1owzPika9GZQEtDvU+j8gv0lpeXAyddy0R/o3VBeVGoG6b6OJm2rShtUvy2xWRu39+enh7P9ao389DQUMoy5IbC5dt/87H53k/vTRxJseXePc5PHWHx/Z894BxFoWB5y317CZcBAACAEkW4DAAVbmJiwtTV1TljfHzcvtiXHeip6liTciX3so1Kt5/N3yN+NJmjQt2wNAHk9PS0vTgte1v0ox0fhw8fthc7VdWqrkZuqVf2602zZm/1bGrFstX73R3bDtUQLgMAAAAlinAZAJCgCdDcimYFg7K4um4ml1JHdWNb4vTwzKL5+lKdc3opQtHy9PK6qR1bSYwLA3PmdOd4yjJ3XBlfcdYDpUU7LgYHB+3FHm47Fbd9RRRhwmWFyMPDw54WGGH+Fplpp5T7uqGhcPmjzmg9l3tnI7x4AAAAAIgNwmUAgC9NfHa5vtHsu+wNgoLG83Xz9tUE+rRnyfP36caFkWh9nFF8ChntVhQ2BcoKljdbQZwpIFbVsvs7aoHR3d2duCzT35YrtdFRmNs1sxpqzK2k7tjRxIi679ww2W8Hgg5CsHdKna9rTjl/trbR9E/Meq4fAAAAQOkgXAYABIo6UeDTESYKPNx9NVy++91zZvepIc912YfQnx0mXC416uc9NTVlL05QCwy1wshGpoD48pV689umBfNi/bwzDtTN+Z52x5ut0aunS41aUNjPt3TjvdY5p+rbDZM12WLUFjaqYvfr715bWxu5FQoAAACA+CBcBgAE8guXNQmXJujSpFz2ZQqXOzs7E0OBlMJDeyig+rDtaj/WHz79unng4yvmmjt3O9f5g/ufNn/1o7uc0PnmXS84t6XfI1wuPaoSnpvz3+GgiuZcTOKYLlxWsN3Q3u3ZTtONf4+wg6RUqc3MA4frzONnxz3/f/Jwd/q81Tq/qYk6k6V7rHWZqqEBAAAAlB7CZQBAIL9wOd3YTOVy2EG4XHra29vN0tKSvdipfG1ra7MXb0q6cPny5ctmZnndmTDuF1XtznbkVyWv4VbKV0q4fHUn0a/MDQ89Y+5687TZcu+eb3ca7Xd28mhnz9ZXq8zNjxwwj75z3L6KyNKFy6IdUWNjY/ZiAAAAADFHuAwACKReqHYIl25ECeY+j9hzuXqUcLnUNDU1edondHR0mN7e3pRl2QgKl9WCQT2fFS7f9tx75ifPvuMEpjc8/KwTnipE3XLfXue0glVVyuvyf9hYXu4ULtvPL7sNTfJ4pz27ViHqe93S0mIv9tDEi3rMAAAAAJQOwmUAQFqaSO/k4HLK+KxtwrNMo3YsfAC8sLrumTgsaHTPrpnVaC1eEQN28Kvq1OHh4ZRl2bJvw6WqZVG4bIel7lBFsx2sRtlBUqrqJ6L1XH6/I7twubW11beC3Y8q2v0mCAQAAAAQT4TLAIDIggI9VCYFuJ/1LDmtTpLH+y3TidMftc85fbZ1umVq1b6KTfPbFlUl6/Z6VuH0x11L5o3WRfO7hhnnZ7pxtC9cCFrKlteuBszaGRRmjC9mt2cnU0sMm6rb1ToFAAAAQPwRLgMAIvML9FC56nzaLKQbb7VlVwmbzN4WV1ZWPGGmqmYvXrxoFhdzd7sIz348wtBkkD09PfZiAAAAADFDuAwAiMwO9FDZ3HD5oc+anZ9um4mdx7sSgXJy64l8hstXrlwxa2trifMTExNOiwy79zMKY2BgwIyPj9uLQ1H1cmdnp70YAAAAQIwQLgMAIrMDPVQ2N1z+xz2/NT/59bvmum1Pmuu37zO3PPZKYsK8v/jhvzqT6OUzXJ6ennZaKrg0caD6/aJ4NlO1nEzhdHt7u70YAAAAQEwQLgMAIiNcRrJMbTGSq5bzGS67k/iJJg9UMIniyjZclqGhIaePNgAAAID4IVwGAESm4A5wdc+smadrvKFy0NDkf7nihssKkoeHh52WGNXV1WZmZsb6TRTa7Oys6erqshdHsrK+sX3NrpnavnFzrq3fdM2sBo7ejd+j+wkAAABQWITLAIBI5ufn6YOKUHJZ4b62bpzw0A4Uz7T0Oj9PNXQ6P4/XNJuOqWUzq1QSRaWdUMn9rzfjWN+SZ+dEunFhZMW+CgAAAAB5RLgMAIhkdHTUjIyM2IsBj1yGy82Tq54gMd14vyN3rTewObloifFpT2q4nDxppN1uReProWX7KgAAAADkEeEyACASHeY+NzdnLwY8chkuJ/d13vVlrydYtM+/ncO+zohOFcu5aJ9jh8uaNHLHsU5z864XzP953Q8JlwEAAIAiI1wGAESSi8AIlSFf4fKPn3nL3LRzv9n6apXZct9ec82du811254012/fR7gcE9oJpZ7L2bLD5UyDcBkAAAAoLMJlAEAkuQwMUd5yua0kh8vJY9uhGs8yDcLl4spFSwz5PGK4fGaYcBkAAAAoJMJlAEAkuQwMUb6Wl5dNa2urvXjTGiP2XH6vnXC5mHIVLk8srZvasZXQY46JHAEAAICCIlwGAERCuIwwpqenTW9vr71405QZ1k+sOgHi8aYBc2l40XzZMmQujy57AkaN8UVCxmIZHx83AwMD9mIAAAAAZYhwGQAQCeEywhgaGjJjY2P24qx1d3eb/v5+53SuqmORWzwuAAAAQOUgXAYAREK4jDA0odvc3Jy9OCt9fX2mp6cncZ4QM554XAAAAIDKQbgMAIiEcBlhNDU1mfX13LWmUCV0R0dH4vzU1FRO224gN5aWlnLaaxsAAABAvBEuAwAiIVxGGLncTkZHRz2Bpa4/l+E1cqOlpcWZzBEAAABAZSBcBgCEtrKy4oRHQCa5CpcnJydNY2OjvZjWCzHF4wIAAABUFsJlAEBoakXgTqYGpJOLcHlmZsbU1dXZi52K5VxcP3KPcBkAAACoLITLAIDQFCwrYAYyyTb8nZ+fN5cvX7YXO7QdqqIZ8aLHZWJiwl4MAAAAoIwRLgMAQlNLDLXGADLJJlzWpHDV1dX24gSqY4tndd2Y15oWzIv1855xoG7Os+xg64J9FQAAAADKCOEyACC0bAJDVJbNbivaeXHx4sW0k/URLhfP3Mq6efLSXKQBAAAAoHwRLgMAQttsYIjKs5ltZW1tzVy4cMH5GURVza2trfZiFIhfuLzry17n587jXZ7LCJcBAACA8ka4DAAIbTOBISpT1G1FlcqqWM7UdqWtrc0JmFEcfuHybfvfN9dv32dueewV5+fWV6sIlwEAAIAKQbgMAAgtamCIyhV1W1GP5TChMS0xissvXM40AAAAAJQvwmUAQGhRA0NUrsbGRntRoMuXL5v5+Xl7sS/C5eJSJ+yPu5bMG62LifGH5nlzsGUhZZk7Pu/NvMMAAAAAQOkiXAYAhEa4jDAWFxdNR0eHvdhXXV2dmZmZsRf7mpqaMn19ffZiFJkC/3QTMAIAAAAoX4TLAIDQCJcRxuTkpBkYGLAXe6i6eWJiwl4cSNsfIWb8aAcBAAAAgMpEuAwACC1KqwNULgXLCpjTaW1tNaOjo/Zix8zyuplc8o4L9S2eZSguVZP39PTYiwEAAABUCMJlAEAoc3Nzpqury14MeKglhlpjBOns7DSDg4P2YkfjxKpnQrh04wt6+hYVPbABAACAyka4DAAIZWRkJLDSFEiWrsJdVa5+fZMVOHd3d5uLIyuJ4PiRE/3m8TNjKeeTg+Xdp4bMR52Lzt+iOGiJAQAAAFQ2wmUAQCgK8Obn5+3FgEdQb+7+/n4nQPZz4MABc+LECXPHLx43N+183ty67w1z447nzN/9y8Pm+u37Npbtd87r9NZXq5zf0c9/3v2M+ad/+ifnOk6ePGldK/JJrU96e3vtxQAAAAAqCOEyACCUdNWoQDK/cHl4eNi0t7fbiz2SK5fDDFUuozhoiQEAAACAcBkAEIpfYAj4sbeVsbEx09zcnLLMjyphj7WOeALkdOMQ4XLREC4DAAAAIFwGAIRiB4ZAkORtZWpqKu22Mz4+7vTtVVCpFgszy+vm1OCyORly9M+t2VeJApiYmHDanAAAAACobITLAABffbNr5uWGefNi/dXxXM1U4rTfuDCyYl8FYmRuZd1MLoUbi6vr9p/70q/Zf6tR3djm/ByaXjBnaxud07Mr312nJoZ0A+WBgYGka0SpoGoZAAAAgBAuAwB8VY9G6337Ie0JYkvB8lM+j1nQOFAfbuLG9zsWPX+bbpxr7XNCZfVfRmkjXAYAAAAghMsAAI/W1lZzsnPcEw5qPPRZs/PzkRP9zs/Hz4w5P/9wedA5VB7x0dnZabq7u8344nri8dPj5j5mycuSL3umNnO4rB7Kz5/udP5u96khz3aiZbu+7DU7j3cnrrt5cpVguQyohzYV5wAAAACEcBkA4HHs2DHzT/c9bG546Blz15unzZZ795jrt+8zN+3cb254+Fmz41inuW7bk+YH9z9tbnvuPXPrvjfM//fki+ahhx4yJ0+etK8ORXLgwAFz4sQJs/PRJzYeu+edx+nGHc+Zu9895zyW7mOqx1Knr737CfP92+83t+x63tTU1Jjt27eb1157zTltj/3795u7D7xtrrlzt7NN6Pp1XVvu2+uc3vpqlXPZLY+94iy7edcLZtfTvza/+93v7NVEiaFqGQAAAICLcBkA4Cu5LYZb2Zpu0BYjvpIrl8OMMJXL8oeWBc/fbjtUE7hMlcsofWptAgAAAABCuAwA8DU4v2bebF00b2yMgy0L5j9rJ5yff2ied5bZo3aMCf3iShPq2YFvuvFsyHBZ24P9t+lGyxThcqkbGRkxQ0ND9mIAAAAAFYpwGQCQ0eTkpNNjVf17Z2Zm7ItRAi6OrpiTg8u+4/P2SfOn3vnE+bAVxp0zq4m/OdIyZj5pHvVctzu+Hlo2i6vr9lUghuZX1s1bbd4dSBq/b5rzLPtT/7J9FQAAAAAqBOEyACCjvr4+MzU1ZRoaGuyLUCbUR3mztG1ogr/a2lr7IpSgvrk1T9V5uvFSQ7hKdwAAAADlh3AZAJCRgsPV1VXC5TI2NjbmVKZHtbKy4gTTHR0dZnp62r4YJShduPz4mTHPMsJlAAAAoHIRLgMAMnJDZcLl8lZfX2+WlpbsxWldvHjRrK2tUbVcRtxweeurVeb67fvMlnv3mGvu3O2c//7t9yeW37RzP+EyAAAAUOEIlwGghAzMr5nD3UuhxicbY2jj93NBofLy8rJpbW21L0IZWV9fj9QeQ2H03Nyc6ezspGq5jNiVy4+c6PdUK1O5DAAAAEAIlwGghBzrW/IEO+nGlzmaaEvhcm9vLwFiBRgZGXEe60zUQmN4eNg5TdVyeZlbWTevNS2YF+vnQ42q3mjV7gAAAADKB+EyAJQI9cT9tH3KEyDbVYUPHmnMS7hMS4zKUVdX5/RSDqJtsb293Tnd1dXlTOgHAAAAAKg8hMsAUCIOHz5s/uPoRafPqfqduj1Qb971wsay582W+/Y6y3+0703nMp3/+ePPmpMnT9pXFRnhcmVRD+XLly/bix2Li4splcpULQMAAABA5SJcBoASkq4txrZDNZ7zVC5jswYHB01/f3/KMvVk1gR++ilULQMAAABAZSNcBoAScmFkxRMqpxunuibtq9iUK1eumJaWFnsxyszg/JozEaQ7KeR7zVMpk0R+0DpjDnXMO6ePbIyvLzfaVwEAAAAAqCCEywBQxlRVqrYFCobV6mAzVKV6+vRpKlQrgCZms3dQpBtVnUzwCAAAAACVjHAZACqA+uTW19c7Q6ejmJ2dNSdOnLAXZ+Xy2Ip5o3Ux9BiY21wwjmjevzLgCZA1NGnk7lNDzukdVe2J5ScHctN2BQAAAABQmgiXAaCCqHpZVcyqZg5biTw8PGzOnj1rL87KR52LngAz3bg4smJfBfLg8d995EwGqQkiNTmkJozU+eu2PemcdieM1OWaWPKOf3vavgoAAAAAQAUhXAaACtXd3e30Uh4YGLAvStHR0WFqamrsxZvW3NxsXj3X5QmQNe5662vzxPnJxHlVzBIuF84XEdtivHmq3r4KAAAAAEAFIVwGgAo3MjLihMwdnV2md3bNdM2spoyvm7rNN809Kct6Nn5vdd2+pszUYuO1114zD/7mbaf69YaHnjF//o9bzZb79jph5c9e+sSpkL35kQPm1n1vmJt3veBUyD6499fm5MmT9tUhx74ZWvYEyOlGzRihPwAAAABUMsJlAIDjm4ForSq+7Pf221XbjdHRUdPa2pro8dzQ0OCMxsZG09PTY2ZmZjxtMbYdqvFcf/Kgcjk+1FIFAAAAAAAhXAYAOE4Nplatui0pNB4/M+YJfP/YOuUExhpugNzU1OT0aF5e9gbPyS6NrpgX6+dDjVcaFkwfE/rFQm9vrxkfH7cXAwAAAAAqFOEyAMDhhstqV6GWFDfueM5pW3HXm6fN92+/PzGhm9pU6PfUnxeVhaplAAAAAEAywmUAgMOuXM40CJcrC1XLAAAAAAAb4TIAwPF1xMncqgiXKwpVywAAAAAAG+EyAMAxu7JuasdWUsaZnilzrLHfs1xjcmndvgqUqb6+PjM2NmYvBgAAAABUOMJlAECg8+fPOxP0obJRtQwAAAAA8EO4DAAIdPToUbO+ToVyJevv7zejo6P2YgAAAAAACJcBAMGqqqrsRagwVC0DAAAAAIIQLgMAAhEuVzaqlgEAAAAA6RAuAwB8qR2G2mKgclG1DAAAAABIh3AZAOBrYmLCfP311/ZiVIiBgQEzMjJiLwYAAAAAIIFwGQDgq66uzrS1tdmLUSGoWgYAAAAAZEK4DADwderUKTM9PW0vRgUYHBw0w8PD9mIAAAAAAFIQLgMAfDGZX+WiahkAAAAAEAbhMgDAF+FyZRoaGnIGAAAAAACZEC4DADzW1tbM0aNH7cWoAFQtAwAAAADCIlwGAHiMjo6aM2fO2ItR5qhaBgAAAABEQbgMAPBoamoy9fX19mKUOaqWAQAAAABREC4DADyqq6tNT0+PvRhlbHh42AwODtqLAQAAAAAIRLgMAPA4ceKEmZubsxejjFG1DAAAAACIinAZAOBRVVVlL0IZGxkZMQMDA/ZiAAAAAADSIlwGAKRYXV01x44dsxejjFG1DAAAAADYDMJlAECKoaEhc+7cOXsxytTo6Kjp7++3FwMAAAAAkBHhMgAgRWNjo6mvr7cXo0xRtQwAAAAA2CzCZQCoUMtrxkwurXvGhfoWc7GhNWXZwuq6/ecoA1QtAwAAAACyQbgMABXqN/Xz5slLc6HGv9fMmfkVAuZyQ9UyAAAAACAbhMsAUKGeqf0uXL773XNm96kh8/iZMU+w7I6JJcLlcjI2Nmb6+vrsxQAAAAAAhEa4DAAVKjlc/uHTr5sHPr5ivn/7/eaGh54xd7152ly/fR/hchmjahkAAAAAkC3CZQCoUMnhcphBuFw+xsfHTW9vr70YAAAAAIBICJcBoEI9GzFc1sR+KA9ULQMAAAAAcoFwGQAqVN34ijk5uJwyPmubMB9e6fcsPze8Yv85ShRVywAAAACAXCFcBgAk1NfXm+bmZnsxyghVywAAAACAXCFcBgAknD171gwPD9uLUSYmJiZMT0+PvRgAAAAAgE0hXAYAJBw/ftysrNACo1xRtQwAAAAAyCXCZQBAwtGjR+1FKBOTk5NULQMAAAAAcopwGQDgmJ6eNqdOnbIXo0xQtQwAAAAAyDXCZQCAo7u721y6dMlejBKxum5Mz+ya6ZpZ9YyWsXlzvn0gZdnymn0NAAAAAABEQ7gMAHA0NDQ4A6Xp3PCKefLSXOhxrG/ZvgoAAAAAACIhXAYAOK5cuWJaW1vtxSgRpweXE8HxIyf6Pad3Hu9KCZc/61myrwIAAAAAgEgIlwEAjm+++caMj4/bi1Ei3HD5mjt3m+u2Pen83PpqlXP6+u37zC2PveL8vGnnfsJlAAAAAEBOEC4DABxHjx41a2s04i1VyZXLYQbhMgAAAAAgW4TLAABHVVWVvQgl5JuhaOHyF72EywAAAACA7BAuAwDM8vKyOX78uL0YJWR+Zd3Ujq0446vWYXOub8acaBtxzn/ZMpS4zB3Ty+v2VQAAAAAAEAnhMgAU2ejCmnm5Yd68WB9uHOvLfcXp8PCwOXv2rL0YJWhkZMR0dHSYhoYGs7Ky4iyrr6+3fgsAAAAAgOwRLgNAkbVMrXpaFqQbr7cs2FeRtZaWFlNXV2cvRomZnp52QuX19fWUx5NwGQAAAACQD4TLAFBkcQiXL1++7FS7onQtLi6ampoa53RbW5uZn59PXNbV1WXm5uYS5wEAAAAAyAXCZQAoMr9w+aadzzvjB/c/be5+92zew+VTp06ZqakpezFKxNramrl48aJTsSxXrlxJuVw9tVWdDgAAAABALhEuA0CR+YXL6UY+wuWjR4/ai1BCFCy7/ZV7e3vN+Pi49Ru0xgAAAAAA5B7hMgAU2fTyunmnbdG80eodrzfOpvzUOD9yNUTMpaqqKnsRSkRtbW1KCwy7atlFuAwAAAAAyDXCZQCIMTcQ1M/Z2Vnr0mjUMWFyad13fHL8pGfZ2tUOC4ix5uZmMzk5mTg/NjZm+vr6kn7jO/rd1dVVezEAAAAAAJtGuAwAMZYcCFZXVydaH2zGmeFlT4uNdOPEwLJ9FR6tU6vmxfr50ONCHqquK5Um6RscHExZFlS1LNPT007LDAAAAAAAcoVwGQBibGZmxnR3dzun3UnbMlEgPTAwYC92wmI3ON5xtMM8cqI/JUzeebwr5XxV71LibycmJpKu6TvfDEULrI90f3ed2DyFygqXk83NzZn29vaUZTZaYwAAAAAAcolwGQBiLjkQVG/ddNWp8vHHH5tDhw6ZPXv2mJdfftkZ+/fvNy8c+pO55s7d5qadz5s7Dp4w12170ly/fZ/5y1vvcILf/+v6Hzs/b9q532y5b6+55+kDznW89NJL5uc//7nZt2+fcz0uBZknemY8AbLf2H1qyBkftUwlrSk2Q20wtAPBVldXZy/yIFwGAAAAAOQS4TIAxJwdCKqvbqYKVT/JlcuZxrZDNSmVy2IHmgqdt+39tbnhoWcSAbV+KrzWuPmRA2brq1XO6T/7h9ud07feu8v5O2yOdi5oAj+b2qU0Njbaiz0aGhrsRQAAAAAAbBrhMgDEnALBdc3Gl6Snp8e39UU6JwfDh8sax/oyt7Bw22LYLTaCBm0xNk8BclBbFG0jYfpxq53G+Pi4vRgAAAAAgE0hXAaAmFMY6BckNzU1mamp8G0mZpbXzenBZSdkdseJgSXzH1/WpizT0O9NLqUG2n4G59fMW22L5mDLgnm9cda80bqYdrRNX52cMM7mVtbNlfEVUzuWedRPrJrlNfsack87FxQsq++2TZeFaYkh+t0wFc4AAAAAgP+/vXv/jrs+70X/Z52es9vV7J62a7Mga5FAm522dLfZaVdoTsgxlySQYFhOgqFpnCYYCIXTkIYCCSQQCiEEG+IYQ7jYkizZkiXLuliSLVuyZN3vn+PnS0YZfUeXGWlkj6TXa61nzcxnRp/vXPzT2896PpRDuAywBeRHYxQ0NDSk6en1dwOPjIykl156Kb9ckampqSz4nJur/eC4HNFdne+4Xq3qBtbuGN6o+J3je15Oe3t7Ni6jXCv9WwIAAIBKCZcBakx0GHeNzi2p37aeLVmL6h2by4Ld/NiMcnV2dqbXX389v1y26Jw+fvx4fnlLe+q3Z7IxH3EAYYTH9x44UxIox/PffG8we80HFzY3XI6RF/GfACtZ64DHPOEyAAAA1SJcBqgx/9k2WRJmrlZnhqbWHfC+//776cMPP8wvl6W/vz8bzVFrYkzFr3qm06vd5VV9rvP4zu/9MP3553dnBxDeePe+9Lf7nvvdIYX70w13Ppjd/5PPfinteuGD7ADDJ185tOTvq6mjoyN19w+kH7ZOpu+fnFi2HjsxvuTxWrOyY8/Jycn8MgAAAFRMuAxQY/a89F7ae/Tyki7Z+w71LOmYLQ6XO0bmsg7i1tbW/FZr+uUvf5kdDlip7u7u1NXVlV+uCb1j8yUB/Gr1RPNEGhoayoLyqJ+2jpS8plB3vdxQsrZZnct9fX2pp6cn9VT8eVYPjmOMSozSAAAAgI0SLgPUmP/55QfTdV/8etYhe8u+Z9Mn7304XXfbniw4vH7XA+mP/27Xkk7aCJdDHPoXYWQlfvazn604y3clEWKfP38+v3xNxWiIwuiI1cLYwqiLwv2vHexI/3ZyPAuVL168mP39jxt6S/5utdqMmcuDg4Pp9OnT2f3854mO6Xvf6lryOYqfXytcDkZjAAAAUA3CZYAa89Sp1cdiFHfPxv1CuByiIzWCyXL95Cc/yS+tqrGxMQ0PD+eXr7knnngiG/Gxb9++9I19D2fB+//61x9nYy3+4C8+m31XsfaHf/357Du7+f7H0ie++t1s5MU/Pfxcevzxx9OTTz6Z9u/fn5586oepcXAmvd7YdeV2Nn3QO5reOHE2HT03nj1uuDidDjb3Zvebh+bS7Hz+3WzM2NhYOnHixOLjfLj8mf0vZu8/xnbEfzLEaI64L1wGAADgahMuA9SYH7WuHi7nKw72KxZdvBMTE0vWVlJuuDw399HBgZsxq3d4uvQAw5Xq3PjqSW50VefD2LUqxmIUi+8uPuvMzEz2OILelpaWJa+JedMxu7ja4pp1dXVL1ir/PGv/RtGpPT+/+ncJAAAAaxEuA9SYC5PzWVfsWnW4/WL6bedgml/I75CycLSc8LCccDkC5dgvAubN8GRzZWH64NTqnyvC6n3HS/9upXqmZXRxNEiMxijuGo7P3NzcnFVeNg+5aAxJhNLxt21tbYt/s7CwzI+zgnjt0aNHS/5mbHYhO9Dv0aaxZQ/yyx/o93rnR53Pq41Iie7z3t7e/DIAAABURLgMsIXFnOUYVZEPfmdnZ0s6YPPGx8fTiy++mF9eIkLI48eP55erJkZ4fOudj2Yc5w8qLK44yLBw//zE6uHyciLwjY7uECMhIljt7OzMHkcIH8+/+eabJeMiosM3uomXC5dD7BHzp+Pwvdij2HJdyKuJ1xa6pYvFb1BfX5/9XgURQBe6qeP3X078XYTMTSeb0xs90+nV7qX14unRkrWo9y6UvgcAAABYjnAZYIuLYDkCxnwnaszuzYelxQqB6kpi9EOEq5vp1VdfTXe/8G42G/nPbv3akoMK434cZBiP4xC7uB/re7/zcH6bNcX3UAiI4/uK0DW+r+7u7mwtgucIus+ePZt9lxEWF9bDSuFyOHTo0IojMuI3iDnYa4n3E68tFgFyXLcQghe7dOnS4qGKEToXDv9bzsBkZWM1vtdU3kgVAAAAEC4DbBMRBkeXcXH364ULF5YNJ8Mbb7yxYija1dWV1WaKUDRmJD/SVBpwFh9amF9fT+dycbgcIvAdHR3NPv/BgwcXx2IURHh7+PDh1NDQsBjyLife/9DQULb/yMhI/ulM8ZiN5UQwnD+EcWBgILt2/n0VxHWLu9UjBM+P0yjIh8vFXeCF2v1W1+J94TIAAADlEi4DbCMx4iHCzOjALYiQOELmvBdeeCEbn5EX3cqFrthqiSA3AtHCLOIIY+M9Tk9Pp8dPTpSEnavVxcnKwuXoUI4REfmA+N133826lKN7ebn5xIWDEWMO8ttvv52912Kxb4wlKYhgf7mDFGPvy5cv55cz8VyhSzos9/stJ/9ZIoReqcs8Hy5fv+uBrFP81qcOpJvvezS7/6lvPClcBgAAoGLCZYAN+G3/TMnM2pXqUN/Vm2Wb73yNMDIC3mLLHeYXAWkEsRsRQWoEyREgx1zgwuFyy80TDn3j5R1gGHVquPJDBQujQYoD2QiUjx2rS+92DGT7/rr1fKrrn1y8Tv2FqezAxMJzH/aNpfdaOrMwOjqUIwQujMwottzc5Ogwzs9jDnF4YHHneAT6+c7zleTD5RCfs9DNHIcwRnd2fP8fnDxdEtCvVsJlAAAAyiVcBtiAf14mnFutJmaXH12wGWJMQgSOhfEWcShccadycbgcoeSxY8eyULISEUTng+ToxF2uI/payYfL8R6jkztC7fzvs1r9fy0ffTfxfcYojcK85mLxncf3mD9gMR8GR0BdPAO6eM5zOYr3i47qeC8Rdseok/gdIrQu/MdC/JuLwDj/eVaqZ9oq+zcAAADAziVcBlinCPMe+HA4C+T2HOnPbu871JO++kZ7uvPnH80M/vKrJ9I337+U3b/9hQ/S+FUMlwuazw2ng8296fjATHZb6M599lDd4v1fNXWnhovTqXds5ZETMYc4guQIZyPAjNA2xkLkg9RaEt3axYf2RfBbGF3RM7Y0XP7Ka83prpePp3teb03ffG9w8Tcs1BPNv+/ojXA3usNjz/yBfYWgvngGcnEYHKFvdJWHGK0RwXK532G8LrrAI9wujBiJ3yTmV4d4nO98LoTXxSM8luu6DtF1Hu8t5kgDAADAWoTLAOv0xBNPpH94/JV00+5H0h/d8oV075ud6e/3/yz9zbeeTn/10H9ks2yvv2NvFjzffP9j6VPfeCJ96Z6vpeeffz4L8CKUjJAvZuXGoXuF2cArzeddj8iyv9VQ2p26Uv3LldfOL3w0ViMfJMfYhhgHUYsOn1t+PMmLp0fTK11T2f2njvZk9+O1IR8uf+Kr381+oz/+u11p1wsfLP6Gy4XL8Z0URLAb31MEu4WO7egmjk7xgkK4HN9fBM8RMMcIjOVmYReLQxrjbwtd4fGbxL+blcLfCJILndphufA6wumV/r6g0AldSx3oAAAA1B7hMsAG5MPZtWqlzuXopo1gOcLGCJrPnDmTBdBxGyFkYfREBI0RRkdgGCFjvCZGIMTt6dOns7+NDtXYK7p2p+cXFq9d3EUdVei2/sprLUve44nmlixILu68rWUz85X/Dqfa2tP7rWdL1lerfzs5vhj0vvnmm2lwcHDJ+4gAN+Y0f//kRFaPnRhf9n7x45NDvw99Y7/4beN3jor7EfLn5Uds5MXfxdiNlcLrlbqW8yIIj/eR78wGAACAAuEywAZEQJgPIVeqmHs7u8mNvxEoR7Ac4XAEzafazyxe/6bd+9ONd39n8X506kZH9d/ue25Jh+7c1siUFy0XLkeQfv/hvuz+vQc7Sp4fn5xOFyYrm7n81KnfzyKO/wyIgDlC/sK86Qh9X2kbKvm71eoXV15f3BleTqC/VrgcM6F/9atfLbtXdCxH53Il4t9U/OfFckE3AAAAO5twGWAbK+5cLre2Q7j8mf0vpl3Pv5/+4C8+m77wzOGS5+saGrNguK69J71/ujcdae5M//7S6+mthtasfvHbhmz9wLHm9Oq79dna+w0nUltbWxbaR8XYizhA7/XXX08HDhxIhw4dSj9vGSi5VszhjsqvRx3qWzofuRwrhctxGGOEwNEBHV3shTnMxcrtWl5OhNLxncXIDwAAAAjCZYBtLDqlK5m5HK9tbjlV9gFztWC5cPnBurGSteLKd5DH+IgIXvv6+rLHhQA3wuRK5g6/2Ttdcq2Yw/2xz9yRbn3qQFbFz73ROVZyAN9alguXYzRKfj2C4GIRPsfn2Yjoho5O643uAwAAwPYgXAbYhiIEjO7VCEzbBsZT4+Bseu/s5fSL+jOprn8yfdA7mn55vDNbP3CyJ7uN6h6ZzUY0REfuu+++m41YqHVxAOGjJ8ofT/JI03gqnhgRs4VjPnEo3BaC2nxgu5blwuXV6r9aBtJbb72V6urqFmdqx3ztixcv5rfOREAcQXLx4+igXu4QyHhdzF4uiP2rdSBjdEVHl3QcOAgAAMDOJVwG2EaiC7ZwIFzMBS6IubkRQsZ6iNDxyJEj2f2YpRtjHvIiODx69OjibOHo7u0dn18MoteqOKwugt9rqfB5QyEovnTpUvZ5Cl3Kcb/QnRyhaXTlxqGIMZ+43HA5vr8Yj/Hrhrb0XPtUevb07+tHLWPZ7X+2TmRVWP/xldf1jM1n/xEQIycKv1v8p8CvT18sCaJXq/cvfNT93DEyt+Q3eOvUucX7v249v+S5s2MbD5rje4pAPkJuAAAAdh7hMsA2EGFxhKSnTpWOtCjM4o1wuSDm5saM4IIzZ85koety4rURskYn8+NNoyXB5mrVN77xAHMjovO6MHs4HxRHd/Dhw4dL5hBHwBvfWXQQ5/+mWAT5v/nNb7JQOb7flRQC7giR89daTnzfb3SMpC/++N209+jlJd9n4ZDCfP2qezJNzVU2X/vbx0tnMq9X/LuLWu4QQQAAALYv4TJADfpJ+1T6/smJsurZ1vEVx1dEABojFyI8Hh4eXlyP8QjRkVwsAtK15gt/v7GycLka3bEbEZ8/OoEj9Izws1h81gjk+y8OpFfaR9Kr3dNZvdI1lX7WNrJYhfVC/frMpSxQPnjw4LLjKPKKu6fjvRR3lK/k8LmZdP3te9Put7rSTbsfyeqWfc+mT977cPrEPf+a/tunb72ytj/7juP2+cbzqfHU6exx4fDA+Nvi3+L+3/Smew92LD7+5/rqhcshAvnoYi50hAMAALD9CZcBasxyB9StVfE3edHBHGMtYiRGdOHmRThaLALnCKJX82Tz5OI1b77/seyAuutu25MFnDfc+WC68e59S97XtQ6XQ4S70Q0cAXuxCELjO7owOV/yfa5W3zs+umSf1RTC7WLldC9HuJy/7mr1avtIau08m+59szM7QDB+h09948ns9v/6n5/LfqcIqL/wzOHfhdX708ev/F6bIcanxH9UFDrGAQAA2L6EywA1JoLiXc+/n+47dDYLDmMUQmEcwjffG0z3vN66GCre/bv7+XA5OnWPHTuWhacrBcYHDhzIL2VBdL7Dt1hxuJyvu15uKFmrlXB5bGwsdXd3L67FjOMIQUM+XL79px+mBz4cXnwc33nxOIpHTqzdeVwQs5jzncrt7e3Z+1lNpeHywd7pND67/FiMlUZpfOnllUd5VEPMrl5trAgAAABbn3AZoMZEUPzpvT/IOlCjK/jjdz2U1R/d8oW064UP0h//3a5sPQLCQnfqr3/z9pI9IlCOrtnoWF4pyFwuXA69vb3ZQW3L+WHryuHyctU/ce3D5Qg4YyRIYVxDfC8nTpxYfD4fLkdn79ffvbA4fiK+86jC85WEy8UjMYrFOI7VDFx5T6/lxnH8tPVyyYiOqF9cqfNXvueYufzPDaW/wUr1nSrOXF5O79h8+nYF7+eNnun8FgAAANQ44TJAjYlw+cG6sZLwbbUq7lyOkQQx/zYC1fwoiGIrhcshAtnlxhqMzS6krtG5Vavj8kx6p6UrvdPYmvr7+/NbXHXxHmI0RRzgF+L7KT54Lh8ur1XVCJc7OjqyLvFKrLRXsQjz87/HShUB9mY6OTRX8t2tVj9un8pvAQAAQI0TLgPUoOfPlH+gX7y2IDpyI7SM8LS+vr5ox1KrhcshxmoUh7DrEaMnYsZwdFDHiI6r4dz40oC1c2Q2vdXQmpr7R9LxnsHU1Df0+4B1Yja9eeS36dsN5Yf5z7RN5i+5rJhhvdqIkbW6l4vF77DVRkxEuFw4XDBGi+w50r/ke8wfMChcBgAA2HqEywDbRASZQ0ND2f3ocp2aWj2sWytcjkPwKglAVxOjKCIcjaA5Oqo3y6Wp5ecOr1TfPzG2+J1VW8x1vnz5cn55UVdX16rPF4tRJZv5vW2GCJcLhwvGWJEY6xIHC95wx97FAwb/5B++vHgYpHAZAABg6xEuA2wDcUhcYezDwMBAOnv2bO4VpdYKl0PsFYfSVVOErhEyx8iOjXZG58VYiAiNo1M2bos7YwtrxVXJiItKlTPGotzwvpy9as1KYzGWO2AwDoMULgMAAGw9wmWALS46YAsH8MUohpgpXI5ywuUQIfClS5fyyxsWM50jNI368MJMevt8eXVqeOXxGoVw+U8/99Xs9v/+x69kXbJxON/ffOvprIs2OmjjueiYvdbhcnd3d1kdyeXsVWtGZhZKDiVcqX7SfCm1DK38uwIAAFCbhMsAW1iMS4hO4ILoCJ6dnS16xcrKDZfD8ePHy963UkPTlY2yeLhp5UC4EC6XW5sZLpc7I3mt7uUYTxIHEm5nMZokZoQvd4gkAAAAtUu4DLBFnT9/fsnIiuheLnQwl6OScDk6ouvq6vLLVTE4tZC+/OqJZcclFA6BK37uu40rB8IDk5WFy3Eg4maIgwxjpEg54j8HVusMj2A5AuadIA5+bGtryy8DAABQo4TLAFvQ4ODgkhAuuoqja7kSlYTLYXR0NDs0sNoiXP7M/hfTn/zvu7JD3q67bU82xuKLz72T/uAvPpuNr4gD4WI9Dn67+Z7v5LdYonV4LjUOzpZVfePz+T+vinK7lgtW617eiiMxNmJsbCzrYi5nXAgAAADXlnAZYIu5fPlySXgZYyuiu7gSlYbLIcZwVNIdXY4Ilx+sGyvpKl6u4uC31TqXa0WlgXBfX9+Knc6V7rVdRFd+fPZqH/oIAABA9QiXAbaQ6OrMdyifPXs2Xbx4cclaOdYTLocI/Ko5G3dsdiH98zJB8kr1+CaNsqim9QTCy3UvR/duBPo7VYwDif84iTEjAAAA1B7hMsAWMTU1lY0LyK+tJ8gM6w2Xw7Fjx6raUToxu5CGp8ur6fnqXXczxOF00YlcqegIz4eo0aFeze95q4qAPcL3zTpUEgAAgPURLgNsARGqRaCbF2HzWuFj99h8eqJ5Mju8rri+Vz9cshZdwU2X1g7woqN0uU5bUmppaVnzN1lJ/jtd738cbEcx9iW69ndyJzcAAECtES4D1LgI1Y4ePVoSWHZ0dGRdsmt5r3+mZLTEavWL7un8FsuKGcExF5elNhII9/f3p/Pnz2f34/fOz9beyeKff/wHSP7f60oVr11nxg8AAECZhMsANSwCxuhYzo8DiNnLra2tS9ZW8vSbH6ZvvDewGLrdf7gvq+Igbs+R/uz2K6+1lB0uhzNnzqRLly7ll3e0SsPlkZmF1DU6t1hHmjuz24azA6m5f2TJcwOTlR3auJ3MXPno+QB5rYq/AQAAYPMIlwGuoQ8vzqZXu6dXrBdPj6b/6pzM7h/snU6FccN1dXVLN1rFt59+Md3x4rH0sb+/Pd2y79l0832PflT3P5Zu2r0/C+E+8dXvZo//dt9z6Z++/t38FquKA9fy4fdOFaF/V1dXfnlVj54ovxs3Kg5A3Iny4fI9r7dmt8X/UbL7ra4lrxEuAwAAbC7hMsA19L2myoLFwamF1NbWlkZHR/NbrWizxmIUxNiOSsLu7Sy6ySsN2v+1cWKxc7xQ33xvcMltcV2aEi5HfXrvD9K9b3am//ZXt6Yb796XrX3qG08ueY1wGQAAYHMJlwGuoUK4/KX/aswCxuW6MYura+ByNoqiEisd6Pdww+X02ImPZtNWeqBfXoTdp06dyi/vOJWOxAgRLt/61IEsII3bT9zzr+lvvvV01lX+J5/90uJzhS5z4XL5JVwGAADYXMJlgGuoEC7/4xOvpTtfqs+6Ma+/Y2/a9cIH6brb9qQb7nxwsSsz6kj9ifwW63bkyJE0MjKSX1633t7edO7cufzyjrLecDkfiq5WOzVcDof6ZkpGx6xU8VoAAAA2l3AZ4BpaayzGXS83LHncd3kiv8W6vfvuu1U/jC/C1fHx8fzyjjA9PZ3a29vzy2ta699Avoand264DAAAQG0RLgNcQ//ROlkSHq5U324YSxNVPMzt2LFj6fz58/nlikXY+cuzv+8Y/Wnr5ZIu0uLqGJnLb7EtxLiSqamp/PKaukbnUuPgbFnVMrw9vzsAAAC2JuEyQI2LA/MaGhryyxsWXcYdHR355YrVD8yWBOGr1YsdlQewW8F6RmIAAADAViZcBqhxTU1NaWam+vNjo9O2GoHoTw4dS1/5xcnFQwjjYMLiMDl/OOHTDRvvlq5F1fguAQAAYCsRLgPUsBhb0dfXl1+uiv7+/mw0xkY9/OzP0+f+/fX0h3/9+XTT7kfSrU8dyA4h/Njf355u2fds+uS9D2drcUDhTbv3p88/+P38Flve3Nxcam1tzS8DAADAtiZcBqhRs7OzqbGxMb9cNZcvX07vvPNOfrlixmKkdPbs2TQ6OppfBgAAgG1NuAxQo44fP551xG6W6enpdOjQofxyxdpH5tK3GkpD5JXqrd7qj/i41ozEAAAAYCcSLgPUoJ6ennThwoX8ctUdPHgwv8Q6CJcBAADYiYTLADUmOoqrHVYOTy+kxsHZknrl2OmStROXZtPMfH4HOkcr69D+Vc90fgsAAADYVoTLADWmvr4+LSws5Jc35OXOqZLwc7WKkJmlmi5VNlv6hTPbb7Y0AAAAFBMuA9SQzs7OdOnSpfzyhsUhevnw8/7DfSVrhYpD+liqEC7f83rrit9d8bpwGQAAgO1OuAxQI8bHx9OpU6fyy1WxXLj88bseStfdtifd+tSBkueEy6UK4fKn9/4g/fnnd6ebdj+Sbrhjb/b9xfd4y75n0yfvfTjdePc+4TIAAAA7gnAZoEbU1dXll6pmuXB5tRIul1puLMZKHcxRwmUAAAC2O+EyQA04ffp0GhkZyS9XzStd0yXh52oVQSpLjc4spNfPTqdXu8ur9pG5/BYAAACwrQiXAa6xy5cvp/b29vxyVU3MLqSu0bmy6uzYfJqr7nmCAAAAwDYkXAa4xurr6/NLAAAAADVPuAxwDbW0tKSJiYn8MgAAAEDNEy4DXCODg4Opq6srvwwAAACwJQiXAa6BhYWF1NDQkF8GAAAA2DKEywDXwIkTJ9L09HR+GQAAAGDLEC4DXGX9/f2pt7c3vwwAAACwpQiXAa6iubm51NjYmF8GAAAA2HKEywBXUQTLETADAAAAbHXCZYCrJEZhxEgMAAAAgO1AuAxwFcThfXGIHwAAAMB2IVwGuAoaGhrSwsJCfhkAAABgyxIuA2yyrq6uNDg4mF8GAAAA2NKEywCbaGJiIrW0tOSXAQAAALY84TLAJqqvr88vAQAAAGwLwmWATXL69Ok0MjKSXwYAAADYFoTLAJsgQuW2trb8MgAAAMC2IVwGWIex2YXUODi7Yr3Z0rd4v+nSbJqaW8hvAQAAALClCZcB1uGNnun0UP142fXehZn8FgAAAABbmnAZYB1eP/tRuLzrhQ/SniP92f1vvjeYVT5Yjnq3X7gMAAAAbC/CZYB1KITLf/2tH6U/+9xXs/t/euX2j/9uV3b/pt2PXKn96YY7HxQuAwAAANuScBlgHQrhcr7uerlh2cfCZQAAAGC7ES4DrMPB3uXD5ZXqgwuz+S0AAAAAtjThMsA6TM0tpLdPdqQT54bTb5raU9fo3JKK54ofz87ndwAAAADY2oTLABW6fPlyqq+vTxMTE9nt1NRU/iVpdHQ0tbW15ZcBAAAAtg3hMkAFTp06lc6cOZPdb2xsTOPj47lX/F57e3sWRAMAAABsR8JlgDIUupULYfLJkyfLCo7jbwAAAAC2I+EywBpaW1uzLuTix5cuXSp6xcpidEZ0OwMAAABsN8JlgBWMjIxkncdjY2OLazES48KFC0WvWltHR0caGhrKLwMAAABsacJlgGXEYXynT59estbV1ZXOnTu3ZK1cxmMAAAAA241wGaBIdClHEDw6OrpkvaenJ6v1mpqaSs3NzfllAAAAgC1LuAxse7PzKX14cTa9fX5m1TrUO5l+fuJc6hufX/L358+fT52dnUvW1qO7uzsNDg7mlwEAAAC2JOEysO21j8ylh+rHy67/bJtc/NuBgYGS8Rgb0dDQkBYWFvLLAAAAAFuOcBnY1lpbW9O7rT3pvkM9i+Hx/Yf7lr2/50h/dvv40fPZAXxRp06dym+5IdPT0+nkyZP5ZQAAAIAtR7gMbGuvvPJK+rfnXkrX3bYn3bT7kXTLvmfTJ+99ON14975061MH0s33PZpuvv+xK8/tT5/46nez+3tf/TDdeeedmxYCx+zmixcv5pcBAAAAthThMrDtnb5c2ViMH54aT8ePH89vU1Wx//z80tnOAAAAAFuJcBnY9rpH50sC5NXqyfrN7yqenZ1NTU1N+WUAAACALUO4DOwI5yfmU9foXFZNfUOp4ezA4uNCnRmeTgeONafJ2c3pKB6eXkg/aZ9Kz57+qH7UMrZ4f7n68OJsfgsAAACAmiFcBnac5UZexIiKo0ePbuqoitbhysZzPNM2md8CAAAAoGYIl4Ed5fz586m/v3/J2sLCQjp27Fg2qmIzRbi86/n3054j57Pw+P7Dfeme11sXw+Q9R/oX73/ltRbhMgAAAFDThMvAjrJc13JdXV2anp7OL1ddhMuf3vuD9LkfvJFu2fds+uS9D6ePfeaOdPP9j6Wbdu9Ptz51IP33/31nFi7/H5/8jHAZAAAAqGnCZWDH6O7uTkNDQ0vWImyemJhYsrZZIlx+sG6sZPzFSiVcBgAAAGqZcBnYMRobG5c8PnHiRBodHV2ytpkuTs6nJ5on0/dPTpRVh/pm8lsAAAAA1AzhMrAjtLe3p7GxscXHLS0taXh4uOgVAAAAAFRCuAxse/Pz86mpqWnx8enTp9PAwEDRKwAAAAColHAZ2PaiS7lwYF9HR0c6f/587hUAAAAAVEq4DGxrs7Ozqbm5Obt/9uzZ1Nvbm3sFAAAAAOshXAa2tTi0b25uLvX19aXu7u780wAAAACsk3AZ2LYmJiZSW1tbunDhQjpz5kz+aQAAAAA2QLgMbFuNjY3ZwX2tra35pwAAAADYIOEysGWNziykt8/PrFi/PH0pvdY2uPi4Z2w+vwUAAAAA6yRcBrasuoHZ9FD9eNn1886p/BYAAAAArJNwGdiy8uHyF3/8btp79HK6/3Df4tq9BzsW778kXAYAAACoGuEysGXlw+Xrb9+brvvi19P1ux5I1922J9361IH0hWcOC5cBAAAANoFwGdiy8uHyWiVcBgAAAKge4TKwZbUOz5UEyKvVgZ7p/BYAAAAArJNwGdjSLo6MpyPHGtPgxGwanl5YrA9PtC55HAUAAABA9QiXgS3r3Llz6eTJk/nlTEdHR5qYmMgvAwAAAFAlwmVgSzp16lTq6enJLy+am5vLXgMAAADA5hAuA1vKzMxMqqurS6Ojo/mnSqzU1QwAAADAxgmXgS3j0qVL6fjx42l+fj7/1LJaWlrKfi0AAAAAlREuA1tCZ2dnOnPmTH55VWNjY6mrqyu/DAAAAEAVCJeBmrawsJAaGxvTwMBA/qmyGI0BAAAAsDmEy0DNGh8fz+YrT09P558qm3AZAAAAYHMIl4Ga1NfXl5qbm/PLFTt37lw2qxkAAACA6hIuAzUnDuLr7e3NL6+b7mUAAACA6hMuAzVjZmYmG4MRB/FVk3AZAAAAoPqEy0BNGBwcTMePH88O8Ku29vb2NDU1lV8GAAAAYAOEy8A119HRkdVmmZ2dTa2trfllAAAAADZAuAxcM9Gl3NjYmHUtbzajMQAAAACqS7gMXBMxVznmK8ec5auhubl5U0ZuAAAAAOxUwmXgquvr60stLS355aqZX0jpYO90erX79/XzM+Pp5Y6JJWuFOnZxNr8FAAAAAGsQLgNXVYTKES5vpouT8+mh+vGy65ETE/ktAAAAAFiDcBm4KmL8RYzBiHEYm+3CMuHy7T/9MN35Ut2Vqi95bn+TcBkAAACgUsJlYNPFgX1xcN/Vmnm8XLh80+5H0l/s+X76y68/UfKccBkAAACgcsJlYFN1dHRkdTUtFy6vVsJlAAAAgMoJl4F1uTy9kIbXqPpTZ1LXhaE0M5//6801NruQvnO8NEReqX7UNpnfAgAAAIA1CJeBirUOz5UEtKvVzzun8lsAAAAAsMUJl4GKxPzkdzsuZqHx/Yf7FgPk4vuF2nOkP7t95uRw9rdDQ0O53QAAAADYqoTLQEVeeumldPeD30m3PnUgffyuh9J1t+1JN+3en67f9UB2aN4n7vnX9MXn3snW4zU33r0v/T/f/ve0d+/e7FA/AAAAALYH4TJQsaZLsyVdyqvV8+3GYgAAAABsN8Jl2EEm50oP3Vuppq+8dsnfTk6m1tbWdPLkyfSbtvMlAfJq9dMzwmUAAACA7Ua4DDvEzHxK3z5eGvyuVN9tnEhdXV1ZmNzc3JzOnDmTZmdns72m5xfSe/0z6dc9E+kXrQPp7fMzq1b/xHzu3QAAAACw1QmXYYcYn11YDI7veb01u733YEf62pUqHLyXr7Gxsfw2iy5fvpyOHz+eXwYAAABghxAuww5RHC5/eu8P0g13PJi+8Mzh9H/+5T9mB+/FYXxxMN8Ndz64+LqVXLhwIbW0tOSXAQAAANhBhMuwQxSHy6vVXS83rBou9/T0pI6OjvwyAAAAADuMcBl2iIkyw+VC/fMy4XJ7e3vq6+vLLwMAAACwAwmXYQepG5hdctDea22DJYfvFarp0keH9xXEwX6Dg4NL1gAAAADYuYTLsIM1NTXll0osLCyk+vr6VQ/3AwAAAGDnES7DDhWzk4eHh/PLS8zOzqZjx46lmZmZ/FMAAAAA7HDCZdih1upaHh8fT3V1dWl+fj7/FAAAAAAIl2EnGh0dTZ2dnfnlRUNDQ2uGzwAAAADsbMJl2IFOnDiRX1p0/vz51NbWll8GAAAAgCWEy7DDxJiLkydP5pczXV1dqbu7O78MAAAAACWEy7DDnD59Ok1NTeWXU2tra9a1DAAAAADlEC7DDrPcLOXGxsZszjIAAAAAlEu4DDvIhQsXUn9//+LjGJFRV1eXJiYmil4FAAAAAGsTLsMOUty1PD09nY4dO5ZmZ2eLXgEAAAAA5REuww4Rc5bb2tqy+6Ojo6m+vj4tLCzkXgUAAAAA5REuww5x8uTJbAzGwMBAdh8AAAAANkK4DFdR6/BcerV7uqx67Updnq6ss/jI+Zn0/ZMTy9ZjJ8az20ebxrLbJ1sm08DUfH4LAAAAACiLcBmuohfOTKWH6sfLrqZLlc1DfvZ0ZfufGp7LbwEAAAAAZREuw1WUD5e//EpTuvuXp9I33xvMHt9/uC/tOdK/+HxxuDw5OZmGh4dXrWfaJpfsf/drLYv75oNl4TIAAAAAGyFchqsoHy7/w+Ovpj/+X7vSrhc+SDfevS/dfN+j6danDiw+/07nYOrs7Cyrenp6SsLlv3roh+mm3fvT9bseyPaP+8JlAAAAAKpBuAxXUT5cjnrw2Gi671BPyXqUsRgAAAAA1CrhMlxFB3unSwLelepfGsZT12hl4e8HF2azgDnqRy1ji/efPjW+eL9Qz7VPpUtTlR0YCAAAAAAFwmWoEaOjo6mjoyO/vC5nzpxJFy5cWHzc3Nxc9CwAAAAAbJxwGWpIU1NTWljYWDdxzF8+d+7ckjXhMgAAAADVJlyGGjI1NZVOnTqVXy5bd3d36u3tzS8LlwEAAACoOuEy1JiTJ0+m2dnKDvILPT096ezZs/nljHAZAAAAgGoTLkONmZubywLmSvT19aWurq788iLhMgAAAADVJlyGGtTW1pYmJyfzy8s6f/78mgcBCpcBAAAAqDbhMtSgONSvsbExv1zi4sWL6fTp0/nlEsJlAAAAAKpNuAw1qrOzM12+fDm/vGhwcDC1trbml5clXAYAAACg2oTLUMOOHz+eX8oMDQ2llpaW/PKKhMsAAAAAVJtwGWrYuXPn0oULF5asRTdzpQf+CZcBAAAAqDbhMtSQ6fmF9JP2qfTs6d/X06fGV3z8Rs90fotlxfiMubm5/DIAAAAArJtwGWrIxcn59FD9eNm1v2kiv8WyYn7z5ORkfhkAAAAA1k24DDWkOFy+/acfpgc+HE57jvRnj+8/3JfdFh5XEi739PSkkZGR/DIAAAAArJtwGWpIcbh80+5H0ie/9r1061MH0h/8xWfT9bseSNfdtid7fOPd+yoKl2Nu8+DgYH4ZAAAAANZNuAw1ZLPGYgwNDWWHAwIAAABAtQiXoYZMzy2k/2idTN8/OVFWvdQ2ki5evJjfpsTY2Fjq7u7OLwMAAADAugmXYYuLjuSmpqZ09uzZ/FOLZmZmUnt7e34ZAAAAANZNuAzbxPDwcGpsbEynzvanxsHZkjrUVrrePDSX5hfyOwEAAADA2oTLsM38uH2qZDbzanX68lx+CwAAAABYk3AZtplnTk8uCY+/+d5g2nOkvyRULtSpYeEyAAAAAJUTLsM2kw+X//RzX023PnUg3Xj3vuz2pt37hcsAAAAAbJhwGbaZfLi8VgmXAQAAAFgP4TJsMz+pcOZy+4hwGQAAAIDKCZdhmxmdWUhdo3NlVc/YfFTxgtwAAAfMSURBVJpfyO8AAAAAAGsTLgMAAAAAUDHhMgAAAAAAFRMuAwAAAABQMeEyAAAAAAAVEy4DAAAAAFAx4TIAAAAAABUTLgMAAAAAUDHhMgAAAAAAFRMuAwAAAABQMeEyXEWTcwupa3SurOodm08LC/kdKjdVwTV7rlxzvgrXnJ4v/5pnq3TNmflUsvdKFdecq8I1Z6/s0T06X7L/ctV95Zrx+o2K9x3vP7//chXvbXY+vwMAAABAdQiX4Sr6eedUeqh+vOw6NTyX36Jir3ZPl+y7WjVdms1vUbFf9VR2zbqBjV/zrb6Zkn1Xq/cvbPyab5+r7JrvnJ/Jb1Gx3/ZXds1DfRu/JgAAAMByhMtwFe177cP0wAdD6ZvvDab7D/ctCQH3HOnP1orXqxH0vvS7QPv2n36Y9rxzPrtfuH5cMx9GViPoLQTa9/+mt+Rzxtq9BzuWrL1/YeMBaHGgfc/rrb+/Xu76hTqygaD3+PHjaXp6Or3VO5Pt/7XffZ67fl6/5BrxPRfeQ3zX1Qh6D/8u0N71/PvZv6X85ytcs1AHrnwvAAAAAJtBuAxX0f/73R+m3b/uTh+/61vpk/c+nG68e1+69akD6abdj6Q/uuULadcLH6Q/u/WrVx7vTzfc+WBVw+W4xn//7F3Z9QrXL1y7cL14XTXD5dj743c9tPg5b7hjb/rY39+evvDM4Wwtrhuvq3a4/Om9P0jXX7nWdbftyb7Tv/3Oc9l7iWsWXrORcPmZZ55JFy9eTHuefD77Hv9233PZ3jff92j6m289nW6+/7Hs837qG0+mW/Y9m70mPvdd33os7du3L79dRQrhcnzGv/z6v2V7x+f86Lfcn/7ks1/K7hc+q3AZAAAA2CzCZbiKnm+fXNJVulrd9XJDVcPltSquF7fVDJfzle+yLVS1w+V83ftmZ8naRsLlhd8Nw47O5fy+q1V0Lre2tuZ2q0whXH6wbqxk/+VKuAwAAABsFuEyXEU/6ygv6C3UiSqEy//VtXLoulw1DG78mq+tEC6vVB9e3Pg1I0TN77tavdu//nC5IMLi/L6rVQTDGxVzm/P7rlZv9m78mgAAAADLES7DVTQwNZ8aB2dXrTdOnM1uI1iens/vULlLUwsl18hX4ZrRKT0191FX7kYMT1d2zckqXHNkZu1rHjjZs3h/Ynbj1xwt85rHB2ay+2NVuOb4bGXXjPcIAAAAsBmEy1BjLl++nE6cOJFf3lSjo6OpsbExv7ypxsfHU0NDQ355U01OTqb6+vr88qaKg/+OHTu2OErjapidnU1Hjx69qtcEAAAAdh7hMtSgCJhPnjyZX95UAubNEwFzXV3dVQ17Z2ZmrnqoDQAAAOwswmWoUQLmzXOtAuarHfYKmAEAAIDNJFyGGiZg3jzXKmDWwQwAAABsF8JlqHHXKmBuamrKL2+qnRQwX+2wV8AMAAAAbAbhMmwB1ypg1sG8OXQwAwAAANuBcBlq3MjMQuoanUvN/SPpg/a+7P5K1TM2n6qRHY7+7potF0bTe209JdcprrNXrjlfhWuOzX50zdaB8fTb1rMl18lfc64K15z43TXbBifSOy1dJdcpru4qXXNy7qNrtg9NpSPNnSXXWXLN0fk0W4VrThVd8+2THSXXydfMfH4HAAAAgFLCZahxz52eSg/Vj5ddnSNz+S0q9tMzlV2zdXjj13y5s7Jrnhza+DV/0T1dsu9q1TA4m9+iYm/0VHbNoxc3fs1f982U7Lta/bZ/Jr8FAAAAQAnhMtS47x0+vRj63X+4L6u4f9+hnuz29hc+WBIMtl3eWOg6ODiYnmufSl/+r6bFay13/ag9R/qz2wPH2/PbVKS1tTX9+/tdS66Vr/x7OT44m4aGhvJbVeSJwy3pm+9fWvNahapG0PtaUaC96/n30wMfDC1eM+qun9cvuWY1gt5KA+23z238mgAAAMD2J1yGGvdP+55KN9zxYLpp9yPp43c9lP7wrz+f3b/5/seyIPBT33jiyuP92Vrc3vPAv+S3qMirr76a/vGBx67s/2i6ftcD6danDmR737Lv2XTzfY9+VFeuHdf6xFe/m93/3tM/Tfv3789vVbZXXnkl3f3kT9N1t+353ed4JN149770P648jtt4D/HZ47bwmu/8x/Pp8ccfz29Vkc/vfTQLyOMaxdf92GfuSHe93FDyfv791UP5LSpWHC5/eu8P0u5fd2ff7SfvfTj9+T/dm32/xYH3ZobLt//saMmacBkAAAAol3AZatzTbZMl4d9q9cax5vwWFYvO5fy+q1U1RlT8rKOya0bn8kZVOoqj2p3LD9aNlVwjX5sZLq9UwmUAAACgHMJlqHHPVjhz+UwVZi6/UOHM5VNVmLn8UoVBb9OljQe9r1Y4c7l+YOPX/NXZyq75wYWNX/PN3spmLr9bhUAbAAAA2P6Ey1DjBqfmU+PgbFnVPDSX5hfyO1RuaHqhZO+VKq45V4VrXq7gmtEpPTuf36FyIzPlX/PEpdk0XYVrjs1WeM0qfLnjV64ZYXx+/+UqXjdZhWsCAAAA259wGQAAAACAigmXAQAAAAComHAZAAAAAICKCZcBAAAAAKiYcBkAAAAAgIoJlwEAAAAAqJhwGQAAAACAigmXAQAAAAComHAZAAAAAICKCZcBAAAAAKiYcBkAAAAAgIoJlwEAAAAAqNj/D0HbS0BkMXLPAAAAAElFTkSuQmCC", + "image/png": "iVBORw0KGgoAAAANSUhEUgAABBcAAAHoCAYAAAASQAdaAACAAElEQVR4Xuzd+VNjWZYn+P53ammrmenpsun5oarHqqfNembMuju7y9q6pm2mrdbMya7MrM6tsjIyKjIyY/GI8Ihwj/A93ME3cMBxnH1fxSqxCARIQiuSEAIh9sVZz+h7CeHiPQECSSDE94ePAfc9iU3Lu+eee84/2RARIiIiIiIiIqKz+ifaASIiIiIiIiKi02BwgYiIiIiIiIhSwuACEREREREREaWEwQUiIiIiIiIiSgmDC0RERERERESUEgYXiIiIiIiIiCglDC4QERERERERUUoYXCAiIiIiIiKilDC4QEREREREREQpYXCBiIiIiIiIiFLC4AIRERERERERpYTBBSIiIiIiIiJKCYMLRERERERERJQSBheIiIiIiIiIKCUMLhARERERERFRShhcICIiIiIiIqKUMLhARERERERERClhcIGIiIiIiIiIUsLgAhERERERERGlhMEFIiIiIiIiIkoJgwtERERERERElBIGF4iIiIiIiIgoJQwuEBEREREREVFKGFwgIiIiIiIiopQwuEBEREREREREKWFwgYiIiIiIiIhSwuACEREREREREaWEwYWo5b0NmduJyLrs6Y4RERERXQaLuyuysLuoGyeiw1b23nx77b+rO0aXD1738PqnHc91a3tb6nG8uretO3ZRrnxwYWlvTbyOWxJu+654Voy640RERETZbnZnRgKD/yih3p9IcNunO05E+xBYcHseylzLX4l7yaA7TpcLXu/wuofXP7wOao/nqjXZEWfwpcw1/4U4ZyuzZpH8ygcXZrdDsljzn2Xv3u+I25unO05ERESU7SY3J2Tryf8iuw9+X1yr/brjRLQPK72YkOHa32u/qTtOl8Pa7p4MTARkZKZTve7h9Q+vg9rzctXS7pqEen+qHsdTA+/Kyt6m7pyLcOWDC0gjsc7UqReX4LZfd5yIiIgo23nnQzLhKxT3ZL5EdhZ0x+ky2lMT4cXd1QTH6KzGfCEZDTWL1/qFBDZduuOU3cJrG/K81iQPXnWKYdgtM5sRcXry1evfVdoaMTY5I+ZQp3jHr4tv3aI7flGufHAB7pXup0St7+7K0sbGkZY3syMiRERERBTv3kuDzL/ZUp+vbm/rrmFi1veyI3WWDlvc3BbHdEStxA45pxTXyqjM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dNy7Li03PpP6d14Tb2eDjDY+sLyXiIiIiIiIyIkYXCiw+dVVmV9elvmVFSm/ck2ik2H1eunFC8t7iYiIiIiIiJyIwYUietrjlS5PxLKciIiIiIiIyMkYXCii5Y1NOXO7ybKciIiIiIiIyMkYXCiyzyoYXCAiIiIiIqKDhcGFIrte3SXRpVXLciIiIiIiIiKnYnChyJ50emQkErMsJyIiIiIiInIqBheKrHkwKD3ecctyIiIiIiIiIqdicKHIOt1haXOFLMuJiIiIiIiInIrBhSLjsAgiIiIiIiI6aBhcKLKyJz1M6EhEREREREQHCoMLRYapKFe3rMuJiIiIiIiInIrBhSJa2dySM7ebLMuJiIiIiIiInIzBhSLCLBF1PV7LciIiIiIiIiInY3ChiE7erJfF9Q3LciIiIiIiIiInY3ChSFzhmFQ2DlqWExERERERETkdgwsFFtuIid9/WtyRMpldX7KsJyIiIiIiInI6BhcKzDdXK1unviLPrv22RNb8lvVERERERERETsfgQoGFX3hlqvF1CfW/LTMbcct6IiIiIiIiIqdjcKEI4huzsrC5IqtbW7KysbEvvE//DiIiIiIiIiK7YnChiKKzszIZje4L79M/S0RERERERGRXDC4Ukafhvox21Il/oF1CXpd4mh7JaEuN9N46LeGgV3zdzTLS8EAmwgHLZ4mIiIiIiIjsisGFIhp5ele6rnwkrcd/ZLyulM4Lh6X7xnEZqLosI3X3pPP8Yem5fkxGmx9ZPktERERERERkVwwuFBHyKSy9eCFLa2vbkl8nwfv0zxIRERERERHZFYMLRERERERERJQTBheIiIiIiIiIKCcMLhARERERERFRThhcICIiIiIiIqKcMLhARERERERERDlhcIGIiIiIiIiIcsLgAhERERERERHlhMEFIiIiIiIiIsoJgwtERERERERElBMGF4iIiIiIiIgoJwwuEBEREREREVFOGFwgIiIiIiIiopwwuEBEREREREREOWFwgYiIiIiIiIhywuACEREREREREeWEwQUiIiIiIiIiygmDC0RERERERESUEwYXiIiIiIiIiCgnDC4QERERERERUU4YXCAiIiIiIiKinDC4QEREREREREQ5YXCBiIiIiIiIiHLC4AIRERERERER5YTBBSIiIiIiIiLKyf8HvdS365Byg7wAAAAASUVORK5CYII=", "text/plain": [ "" ] }, - "execution_count": 22, + "execution_count": 79, "metadata": {}, "output_type": "execute_result" } @@ -1066,12 +3035,14 @@ ] }, { - "cell_type": "code", - "execution_count": null, - "id": "b2209508-dd98-4d10-8efc-099e2cd0ab50", + "cell_type": "markdown", + "id": "a45fce84-bbb9-476a-8be3-5eb7b082afed", "metadata": {}, - "outputs": [], - "source": [] + "source": [ + "- graph properties in Cytoscape or pre-calculated?\n", + "- node sizes depending on graph properties\n", + "- edge width depending on graph properties" + ] }, { "cell_type": "code", diff --git a/test-notebooks/styles_template.xml b/test-notebooks/styles_template.xml new file mode 100644 index 0000000..a2090a9 --- /dev/null +++ b/test-notebooks/styles_template.xml @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +